// there are random upload errors... static int uploadToImageServerIfNotThere_tries = 3; static S uploadToImageServerIfNotThere(BufferedImage img, S name) { ret uploadToImageServerIfNotThere(null, img, name); } static S uploadToImageServerIfNotThere(File f, BufferedImage img, S name) { S md5 = md5OfRGBImage(new RGBImage(img)); Throwable lastException = null; for tries to uploadToImageServerIfNotThere_tries: try { long id = imageServerCheckMD5(md5); if (id == 0) ret uploadToImageServer_new(f, img, name); else ret snippetImgLink(fsI(id)); } catch e { lastException = printException(e); } fail(lastException); } sS uploadToImageServerIfNotThere(File f) { ret uploadToImageServerIfNotThere(f, loadImage2(f), fileName(f)); }