Created
October 21, 2012 15:18
-
-
Save dommmel/3927250 to your computer and use it in GitHub Desktop.
Turns a folder of images into an html gallery (optimized for mobile safari). Useful for previewing designs of mobile websites. Just put the generated gallery into dropbox and mail the link to the index.html file to the client.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env ruby | |
require 'fileutils' | |
require 'erb' | |
require 'RMagick' | |
include Magick | |
template = ERB.new <<-EOF | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Gallery</title> | |
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" /> | |
<meta name="apple-mobile-web-app-capable" content="yes" /> | |
<style> | |
#images_container, .image, .image img { | |
width: 100%; | |
cursor: pointer; | |
} | |
body { | |
font-family: "Helvetica Neue",sans-serif; | |
margin: 0px; | |
padding: 0px; | |
} | |
#main { | |
margin: 8px; | |
} | |
ul { | |
list-style: none; | |
} | |
#images_container { | |
background: url(data:image/gif;base64,R0lGODlhgACAAKUAAAQCBISChMTCxExKTCQiJOTi5KSipGxqbBQSFNTS1DQyNPTy9LSytFRWVJyanAwKDMzKzCwqLOzq7KyqrBwaHNza3Dw6PPz6/Ly6vIyKjFRSVHR2dFxeXAQGBMTGxExOTCQmJOTm5KSmpBQWFNTW1DQ2NPT29LS2tFxaXJyenAwODMzOzCwuLOzu7KyurBweHNze3Dw+PPz+/Ly+vIyOjHx+fP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCQA2ACwAAAAAgACAAAAG/kCbcEgsGo/IZHIhqZAElaPhg6plMDCldsvter/bVsXDSDnOZsGxBmi7VQoOLQGu2+93E2xmQDvMZn9qRmxuhm4IHw4SeI2OeCYrDGd+lJWDRYWHm20sG1mPoaJFMjAYlICof5YpmESanLElDhejtpAQfZWqqoGuQ7CxsSobjLfHWyYegat+zMyoM2vC1G4dHAXI2kULAqy8vKm+09XlHSjG27cXK4HQz82WqtKE5fYADzW16qIVIu/xoK0Sh4Zepnv3KBjg58jECXjy4AnsZZBIAIQIB7RgaAeGrmYEdw0cecbFiiMOXqjAaG+EC45eLswAJ2/XRBEzSIQw0aXd/oEYCFjGarAAppYWImyOBDhwBgwZj0hsiCD0EAESRpF4jFjTGSoPG4/BqKGgahsVDLIWWdGr7cQTTxmGyADCbAC1QgqIjNf2RAi8J0oIbYBXSAKvXpm5+FtYyArB9wg3tnGYJioRjCcPcfGinGTN7dz+AaWZUAdhn0uHrjkDammtLDilfh0aUArSr5PUOO1mdhGexyBkPsK2JPDcWmaMaOObSAsDUWxV+DPcSLvWyLuEUNB8yPM/6R5JcFe9SPnseL6fMXC8kYmk5NHzUx/IhetGJ8Kdlx9KQh93Z3jgCAkBobEff3j4J1AgB26xAICVpNAggl/419YqIuwDhgxl/oDjTjYUNvJcKjRV5AWBBTojYIh4cHjhSLhxccFHEJV0H4t2PLggK/Z9MVONtrWHox0FhMQXVl204CErEw7JhQdcLaWhFqdAOJKJTtohgwsp+rGiFhKEI48IQmZpRwspkBhQCmUa8ZCYgDRpJhckQAQNBEcpZckJc4ayJV9SKiGAleKE1acjIQAI0ElImMDUV4eKMtM37hhwIxEJqEkim5GGoqSaIMW4mWVmfNmpI2/qyacRYUqEiqGnNpLoN6qUuYxIgWAZ6x35uXoGkkTAt6Scu24Bw16rvOQcrcyIUKyfaSK2SnsE2vkHo886AmWUfwBrwyldOgBrtnfMumlB/kNcAOQfzpLriAzRRnhGuzaEEG4Kprp7xwygWhJWZb4Sq28Sx4qWApL87pXmpQOD4SigaKzI5YUprNowHkklVpINF5BUSb4Xg5FqTWnaoOSLt4WMB1sEMaMHxIGMq7IXMEw0UAgAe5wCwzNzYYLGlMAAgc1m0NvzF/CSvAoJkxqp7NFg/OPxtfl1ZYauUGvhAkC5tiBBCyG0AHYIYe+UNRhil0322mKf7fbbcMct99x0192pAC7krffe2NpNBN57Bw4BuF05YLHfQ2RcuAcJt+zABIgTIcNSI61QnNUpRD7EAoVTUsF0jp9RlObmUi6hvYWbIWrdlXW+wMNGpoCn/uaNmy6E4uAc7vcEnaegbK8Flhw57JQ7QA8EtPob+XSpO4BkkSBVHnntmob1M7K+R457OPdtDbQDbcJ9ckhXEzG01X/QYfetUR5MhL1Gbly3DBlregas9HOVisxv68WtA08bApT6FaC6velcZuibEMJkME7J7WTJ+0ObvJe62cWNerzQ3RAOE7o/8OxonFPaKlZng4cpLU0KzNqgdIaGD9oAgxEJn8oYmLwEKgGCQPvF0bZmPzTIUAgHFCH/QlaBRwECa0SgIfkAOCWVvYckAhliEar2vxRebFJwMl6SiheP8FysYASUoBcSxix2NVFfSDnhKqyYBEf1EA0aJNef/qZGCRG4EAmX85UD2FisKlFqICRUwhwBBQiQPQt1dDxDHLkwnhc5wJDZWo3GHGgHllEKiZEkYMpa5D1oYJJcqxHHJ7mQxqZkTZLz+qEXEPlIJagyUrX5gxTr0I4UYBIpFsySDDzQoOJschQzgKQQSnmCM1JoAVySkBLawccW3TBaRfMigopkmwYFUhsj4gUE7qiZC6zwGQKbjy4g4gJpvqYA24tPab5DKEoI4JUwkUDVeqjMyagneuFYgTGNIk9Q2SmctljAOPXXCwNAAJ63aIEfEfPPwshEjwrDlzmREQLCEVJPzeQHiv4oLUq4IAEIrcMCVsA7pVgLDdfkSKL8/klQaJhkohsKAQQmJq8a+kEEszTKAqgIUY46wAAngAAMRpekMZzgIwrrUiBOEFKOhLKlfDnXGSbggtWFAG/1+x9LbZLSxrRgYmHsqJ10aION7mhqUl0FU0Mkg1pOkqB7IWu1HOlICLlvSCYgoxq5lQq5kgqthPQAN+XTAuCx9I2COEKd6NrRgZwgpyEKARYT2SVdLZZrF2XGY4vVAr1yMXq2PALzEtkvWzYVryugoE+jodgdHdYFJDjtnELgAam5Fl1GuCzMBrICyJKrBamFJq0si1lAnKC3cjNBCFZwgn88g7h8wckKQjBYt5mgBSTwAOOsCAMGCMADJCCBb9USAQQAIfkECQkAMwAsAAAAAIAAgACFBAIEhIaExMbEREZE5ObkpKakJCIkZGZk1NbUtLa09Pb0NDY0FBIUnJqcVFZUDAoMzM7M7O7srK6sLCos3N7cvL68jI6MVFJUfH58/P78PD48pKKkZGJkBAYEzMrMTEpM7OrsrKqsJCYkbG5s3NrcvLq8/Pr8PDo8HB4cnJ6cXFpcDA4M1NLU9PL0tLK0LC4s5OLkxMLElJKU////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7AmXBILBqPyGSyBSIhYqQjLCZAkEAKpXbL7Xq/2whJ4Eo1zubYEWE2nwsJD6kFrtvvdwWlskE32mhqRghnf4WHBTEUJniNjngKEC6HbpRngkVshYCcZy4sWY+io0UZFCWbhn6Vf5hEhKyHqW4JMBmkuJAefX6Ws5drq4aAlmYFLIy5ylsKApXPqtGbFWuxssSyfx6hy91DLTG+0qqdDa5DsMPqv50pAsneuSYQbqzQ1qnUg/jC2akNGxDcijeKRAF70WK1Q6OvCAlh2NSVUxUCBkFHChJAu/ZLhhmPDTyaafiKX0R/GyvAu/iFAi9y66KJTEGz5hkJEI5QkFBgmP5IkD9pivTVpgABll5MVPjnL6HNNxUQEOCmJQIFCBUOtqH5Z2tIrk3fIa3aM6FESiAbFKhAYWCjCAgk1PMzE+IwCXTG6nzZ61DQrQIiLFOAIMGfmW6AWkux4aheIhB+rarLNUHbi4Q1FkLMFRtNBI+FwOjbq66hBIIfE9D4FOUhAaGFsOjXFWwKGQkcx54RQfNhocANwd49Y/a/tB4l6CYuhICE2l2jNxjOnN4m2wUoMEeiCeYZ6tutnxlawe12IxnRgHR3HvJWmtrbK2HDVQZ4I8tJechfRLwEqvIhEUFP7CUhwAoB5PJQCvxB1kB5AXKR0X1FHAgAAAmQAkI9Df4O0WGEdVSwwoUArBDFIwoQiMaHIIoSw4gkAmAAgHYY1guDLS7zYowkOuBIOjeymGMdMTzAY4wh4NHCXEEO6WIHR8bIAAh2ZFAGU/VY5CQeEBgZZYwD2EGIWatQuGVSE3zJYwpgmPDSRjeZdyYYCHipJgAorLTFUnBuReOcXzRwJ4kYeBEBlpQICegWFwwKwAOKCoEKk+qQtKgdCqDgqI9bgPBPLAX8eekXEEB5ZwdaKuEbOUNFOqoWATiqQlV9edVAhq86koGmp+aFRAyUrpdCark2IoGjIyShAEI22VesKBoMuoKeQ7Dg2Xg0ifrsFwI4KgMSz9Vak5nb1rHAoP4LHOEpNGk1QGy5eCTgaKpDOHNjPZbCe8cLgxZahIo3euSqvkpYMOgERRzKlEgFEIyinV8uByQaNuXksCMfDGoBEajEVMi7F9c4aJhCmICPSBKEjBHERzLg4Vk2kauyFxnfabFxaLkx8MxHGHznxjNU0M5WcvL8BQyDchquX23gavQdMH75wgwmSPSUzE9vEa2aD/DWlEjxZV3HAYNSQIFEdYEsdhcbDJoAzhTXU/TaW7AwaAMecLKeWnTXoYCpX2Kw1HXYptw3GAzcyYFh9tSU7+FaiHDnABGAQEAEEVyu+VSQk1pCCQlUAPrnoVvc+emop6766qy37rqTMUgg+/7stJv++hCx0667Bx035fTtQpQVltAwN5Ak8EJkULwZEETWFE3IC9FCU4WQsOBZZ/h6OwELtUEAAdSbEfbtcPvTwrLYaxM98d0Hn00lv78eQviGM24W9MCjv9CDQnggzsfAe8jzGgCaGcCAGJ2wXevYF5NhCUEBTNmE4V4nPKK4RS52OYO2OqewcoyECHnbzEe4woLX2esaIClgc4ZRk3pMcHUZKAsC2/CuGJKmEmo73Wg4ApIXCkEATPuKGbDWN83M8A8KnMGGatOaFGxwbQrLxlD+tLRiNCCJkOOT1cwQv2qJ8DbPmBvdpve+tIyPCMuySWe6gkW6hWNoXRFj0P6k+Iwn8myJdPwD1g7VBsoAo3OT2GIbnmhEsAzFXZAjwcnc8LgieIoStmmABKhltBRBZI05NIL90sKKNs5scLJADhGH0ME+YoNKYjvbFmtjxyEQj2LYMgYlL7Yka7TLk0dIYywj2cWLZeA5QyuKHJEQmdbABJfl6l3OvnJGLvxyFu2aDs/A58Gt9JIL69qlcJ7mvFRwspXEjBu2Rgkv69QDEM38wi+fQRNy6qubXzlDI79Qy3EezpxcCZUoqNlOJYBzVOL5QybtYJw9bsADr8qAAFhUzAaksxEV2GNlZtmiFgCToVdUxjAjsAFAhGBnu4FBR7vCood6g6Mc8cAwmf5jAiBeA6Qn7cO1JIDKCMFAhhKBqTJQ+r9L/JMgILCRSXRKCp4icB0pgABFWRLUa7WDqI9oAV9II4yD/nQUEZhUT18aG6VM5CTDEEBNCUIAZTr1LMiMx5gi6MFCSAAU3WgBBOZH1XFQwqRI4d493hdBnIwVDxkggAeqOJezFmWgemmB/diBqEpsIA4U0F4YxpCAqfKjrre6KkHMqRghstU7xpNAOgkQO5z+rx3rCQpeiRMBYLbQkIUVRz3OIYS1KoQ2uwRjZTQ7lgwE9Dpgkcw4aDuDiYHVJ09Rowq3pAD2dVa3HBEGcW3LEWKYhpMCWCmIesNEcR7yhtPd6/uSa4ET1DyLAKAEozjvJ89qSENvI8SWPBG7qAiwz5SxfO7jBBgTzrzHHbx1UiTC1ZkCJ/dx3ZlFcAuHgAADKgLOSMxiPDLdBiKHJgWAgINzFQEIsOY3uk1Bhb2pxgpAgL5ZUwABsOLaQiB4hhIwMQG02zkFwAUCAjCxTlxABQQgAMWhCQIAIfkECQkANgAsAAAAAIAAgACFBAIEhIKExMLEREJE5OLkpKKkJCIkZGJkFBIU1NLU9PL0tLK0lJaUdHZ0VFJUNDY0DAoMzMrM7OrsrKqsbGpsHBoc3Nrc/Pr8vLq8jI6MTEpMLCosnJ6cBAYEhIaExMbE5ObkpKakJCYkZGZkFBYU1NbU9Pb0tLa0nJqcfH58XF5cPDo8DA4MzM7M7O7srK6sbG5sHB4c3N7c/P78vL68TE5M////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv5Am3BILBqPyGRSIbGUBJYjQfApWSQmpXbL7Xq/W5fls+CgzmbBsWQ2n0OniEUBrtvvd5OMVkCj2gxpa2d/hIYhAjIXeIyNeCYtC4ZuhG4cakZslYUcgYUoCwlZjqSlRTMyGJuUgG4MH4N/np6snycEM6a6jxF9fpMotGiXsZa1wGYhCYu7zVsmH8eyZoGsnphFmp/B1Byd3ZMRo87kQwoCk7Ntf9aU2EQlhLRtluxnwhzi5c4XLfWf3jahqebn3RBNAbkJdJXwU4ESufaVshCC0rR04NqhMCgk3qqL6v4ZQjGBgMRGJk5otISP4T+ONhB64kbP3sVv387QYHYSjP4MXwArERy57uKLFlJeFKhnceTMoes4hADR08sFGptm5myXE0UIGiUk0OGiQEYLGiFuVjOW1eIHnlWRuEhbaOjQgQm/yojISEGCEzSB4Q1qZsHYuEZ+ymvIWFiBDy6cmSiharCwwYSmIi7S4iPmyyf2njRh4QXbwSzblNgshADmrcMInYi8GUTlm0IbwmJtIwHAu11fUOUtRIFKTgpr7Sae4DJu4cSNgHhxLyHBV9GHJKg3NISM7EjYMEWzHLy/wH92gk+SkuGZ8ut9G/u+Xot4N/CLjNMVYTiSzma8sF99Scz1nhIuFBCFLhb84d8RndHAF4FaXHBCfkQk+IcEpv5IYMmDRnBIYSkamlHAgHmk9eGIEkkA1BkvTHgHYL9wACKLHS51EQoYfhHPMTbiuIuL1RV1oxcKcBfVkULa4WJNm4QAlxczlFFJUxyY1GRfL4JkBg12eNTKTT1u2UWVOBHUkJZWATWTTTGa2VdATXESpxdYQdnViXI24pofOc20WhcuLFbdQEz2+UU0ydmEAp9cqBIVcjwq6sgF1BU1WJlESKDOocFIaakjGtLSEopGHJfQqkGO6ogFAd1FSARaFIpRdRi4SsoMEziK0x9TFiHAOm8GdJiujICAUT0JsMdKapUiS0qed3kSgozaEfsPB6hKW0ehFmlKnxHU1UgLp/7eflFZoOuccIQEnziHwrHp4gHCr9aZgWIEgOYGZr2k0GiImoMSkZZWwiQK8BcycCLrAkWA6xIhEyy8ax9QfbKfR5S2gZTFjgxLSUgLCiEpwtR0C/IXyvab0L82XFBUVxy8sLIjM2DcVCAhDNHyNBbRenMjNKy61hm0bYfeNAoPzUXDRU6yYJ5cFYCt01+YQOkvu5WLlxvuYs0IXV6CEnNuQYvNCAbdQFmADeACF8i4atcBIJaB6PEL0CjQVncdrpkalQRKf43G1X9vkeSVh8rAr7xeJW7HDGPaVELRExcmuR0qvhaBwPmiAPPmXpgGKiE0uCCBBC6AoLoLqotFOv4YsLMee+uw+z377rz37vvvwAcvvK4CvGD88ch/PHwRGhjg/PPQq3DbSGeEvTwRJACg/fbcO1A0cutUfP0QF3BvvvYjdEb9MOMfdL75HjQ4KSX0Dv/C+9wLd+indC/fAP7bK4EJogIl5V1vAAAEQAeEQLb1We96FUigCIQAmDSt423jA0ECAaABIfBrVQrp2/gysMEAtGYhljCg8BCYwN0MMDlvgtj1WJDADvCkDOC4iMp2R4MNDoAIEcAHoJo1PBVsMAVEuNfALGIz4V2AhgksmA1m0DmjmUF3vuPABidYhA8YaijoktwDNtiAENUEhBwI1uw+sEEA9E8IXqOeGf5UuDsWAvABSJCP4AhRADVKrgVtZAASXti2i9BxczXYIAtU9j3G0GOHYhNAG1WAIKK8aSO820Ab31iEk83ME1j8Gwk32EEtKJErMPKj00CAgDYSUQs0co4bDok1OwKwlFuAV76aIqK6MaCNHSjZFtBBKVNNQJUWawEE2kiBrHlDiAR54NAUEIM2kgCSRjhPRupBy4XZEoAcqAOvYiOQaA3tfm3Eo5NG9kxqhDFdFFAkJ7vwODqR528wSKAg8YAmYLxzYfF83w8boYA+5OSfFgso90jQy2R9glPI9JZCFYjQLciHUwkS2qhm8AGFKRQFu6ABRn1xgohSSAGZ8igAmv65C8QJQUOFmEDT6kMAHXlDYeFEDEzfFAGXgucCXiTKTKsCUxCi4AUNJRAB6IKvVmWnqPtzgwCwWRUJ0OhXkxhqOWBKEz39oQUm3YdVZ/aRmxKnoP1ySj0KoI/NuEBSuYkqGrS6i6vkUIg048AHkloO29yKLSDs5kl+hJyniARGoiCHAlrQKz/IrU4cmGdcQFAArZymUX44Cl8nB4IIxBE2uElOCELJG+N8ZlJ7o0QB4iCD+iFoDCfoUlcM1y8G0ICqcdEmOfeolaCcYQIv4CQIisdUoqCnkK+R7FPLtZVtVa6sMOEY3jR1tNecALe8ucB2dsbduKojutt4blppy6gBKW7JBOjASWqseEZBZKIthDHscT/gUxy5QGCYjdr6MJmJib0mMA05gWsVNdbGeIMrtAAvWVG2DdSRVlcuyNPS+FYXYrw3rmT92gewqygTJMB0aFuFe7Mh3hDm5AQlCKu3JPCBgxnYEOAFH/h41oIBY80FfzHUoaJrkU9xAAMlsHHiLgCCs/QqKjH+1QsE0AIQ1Jd3RC5BCwRAg0PKYAFUKIEMNgueIAAAIfkECQkANwAsAAAAAIAAgACFBAIEhIKExMLEREZE5OLkJCIkpKKkZGZk1NLU9PL0tLK0FBIUVFZUNDI0lJaUDAoMzMrMTE5M7OrsLCosrKqsdHZ03Nrc/Pr8vLq8jIqMHB4cXF5cPDo8nJ6cBAYExMbETEpM5ObkJCYkpKakbGps1NbU9Pb0tLa0FBYUXFpcNDY0nJqcDA4MzM7MVFJU7O7sLC4srK6sfH583N7c/P78vL68jI6M////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7Am3BILBqPyGQyIbGUBJYjQfApWSQmpXbL7Xq/25flo+iszmbBsWQ2n0cniCUBrtvvd9OsZkCv2g5pa2d/hIYjAjMXeIyNeCYtCoZuhG4dakZslYUdgYUrCghZjqSlRTQzGJuUgG4OH4N/np6snycENKa6jxB9fpMrtGiXsZa1wGYjCIu7zVsmH8eyZoGsnphFmp/B1B2d3ZMQo87kQwkCk7Ntf9aU2EQlhLRtluxnwh3i5c4XLfWf3jahqebn3RBNAbkJdJXwk4ESufaVsjCC0rR04NqtMCgk3qqL6v4ZWkGBgMRGJk5otISP4T+ONxB64kbP3sVv387UYHYSzP4MXwArERy57mKMFlJiGKhnceTMoes6jAjR08uFGptm5myXc8WIGiUk0OGSYEaLGiNuVjOW1eIHnlWRvEhbaOjQgQm/zojIKAGCEzSB4Q1qRsHYuEZ+ymvIWJiBDy+cmSiharCwwYSmIi7S4iPmyyf2njRhIQbbwSzblNgshADmrcMInYi8OUTlm0IbwmJ9AwHAu11jUOUtJIFKTgpr7SaO4DJu4cSNhIhxLyHBV9GHIKg3dMSM7EjYMEWzHLy/wH92gk+SkuGZ8ut9G/u+Xot4N/CLjNMFYTiSzmbEsF99Scz1nhIvGBCFLhb84d8RndXAF4FaXHBCfkQk+IcEpv5IYMmDRnBIYSkammHAgHmk9eGIEkkA1BkxTHgHYL90ACKLHS510QoYfhHPMTbiuIuL1RV1oxcJcBfVkULa4WJNm4wAlxc0lFFJUx2Y1GRfL4JkRg12eNTKTT1u2UWVOBHUkJZWATWTTTGa2VdATXESpxdYQdnViXI24pofOc20WhcvLFbdQEz2+UU0ydm0Ap9cqBIVcjwq6sgF1BU1WJlESKDOocFIaakjGtLSEopGHJfQqkGO6ogFAd1FCARaFIpRdRi4SgoNFDiK0x9TFiHAOm8GdJiujISAUT0IsMdKapUiS0qed3kygozaEftPB6hKW0ehFmlKnxHU1UgLp/7eflFZoOuccIQEnzi3wrHp4hHCr9aZgSIEgOYGZr2k0GiImoMSkZZWwiQK8BczcCKrAkWA6xIhFCy8ax9QfbKfR5S2gZTFjgxLSUgLCiEpwtR0C/IXyvab0L83XFBUVx3EsLIjNGDcVCAjDNHyNBbRenMjNay61hm0bYfeNAoPzUXDRU6yYJ5cGYCt01+YQOkvu5WLlxvuYs0IXV6CEnNuQYvNCAbdQGnADeACF8i4atcBIJaB6PEL0CvQVncdrpkalQRKf43G1X9vkeSVh87Ar7xeJW4HDWPaVELRExcmuR0qvgaBwPmuAPPmXpgGKiE1vCCBBC+EoPoLqotFOv4YsLMee+uw+z377rz37vvvwAcvvK4CxGD88ch/PLywyDcfAwS3jXRG2MsbLL0hHxSN3DoVVz8EDdsj10Jn17PjvTnlE2JBg5NSQu/w94bfRggtf+oJ3cv7Vn4gCZgQFZTKq572WkEPIZDtetSrXq8axQ2I3QAwaVrH27yntUkRBBP8WpVC+ua9Bm2wIYP6E0AsEUDhDRBUZqCN/5LzJgcuj2xFCYTVhlAGcFxEZbuzFc0KMToI4ANQzRoeo+JFiYLdIH6GIoTNhEeDA0aFf0RoIiegpTvf/YldaHDhED5gqKGgS3LHmaIfgtipmmiwA8Gana22ccMjeE16Zijh7v7yxEKwIUE+giOEAdIouQSsAir4G8IK23YROW5uWIIpxAyRMMBnsQOHYtOhVhTCqTVi5gww+Zsk1IQPSJ5sZp6o4t9gtY1wjQ4J8eMKjPjoNBPAEGXz4gKNnOMGQ2INK3wLzCmTAK98NUVEdYNaKQECSSKgg1KmogArLWYgJfnBlkjwH2wImcCh0cBr0+QZ4pJwnozUA5oAk9QGD5WlOvAqNgKJ1tB+ZrSEVNMLHlpMoL6YrvPIEw2QssPj6ESev5FvZmcI5BfQBAx6Luw8T+nALuuQgD7kxKAW84cxKFBMLigLP0pYprf+6QADiBIP8qmkAYQ2KhO4YIn/KYRAGf5RA5FOT6MUKoEIAOABlEJoBeC8wzbh5gszUKBp9TEACwBA1JoqgU1V0dA4IbDT7LzABUSNKk1t6tSe/iMGwKSQARYgVakaFTxKdc9MBFDRnmCgAV1N61eJo1Sa6OkPLYDpPjCggrTadarEaWi/nFKPkZZVFwKo613vulbEXMWGP6RZBz6Q1X0ogAODjSwASBCdHyEnoXuDkSjIgYADoECyg/WAA8ATAgNo5TQMLMRRGnuHC4xgAwUAbWRRkMnNGOczk9obJQwQhxm8TwkfsEEKYOAB2UqWA0BFTDfRmcdJioQCMRBoDAZQgM8aV7YesIGQXlCurWyrch8hhhFkcLDd6zagZDi6wHZ2xt7cKCQQMCFveSXrgQAoygTowElq2mlGQYx3vpFlwEe39AKBpXZp0osvgO2qgpxuSQIqaYw3uEILBS84qgOo7aheQEdZ/aou4i2CfAHsAQagd2EmQIDp0LYK/4oYwCIIAGtXJoEPHEzChrCwbBdwAAev7AV/SaJCdExYFVTAx2K7QAjO0quoEDmqGhhABZR5PiWXoAUCqIEhHTCBCDBABhl453qCAAAh+QQJCQAzACwAAAAAgACAAIUEAgSEgoTEwsREQkTk4uQkJiSkoqRkYmQUEhTU0tT08vS0srR0dnQ8OjwMCgycmpzMysxMTkzs6uysqqxsamwcGhzc2tz8+vy8urwsLiwEBgSMjozExsRMSkzk5uSkpqRkZmQUFhTU1tT09vS0trR8enw8PjwMDgycnpzMzsxUUlTs7uysrqxsbmwcHhzc3tz8/vy8vrw0MjT///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/sCZcEgsGo/IZFIhsYgEliNBwBFZJCOldsvter/blYWzQD3OZsFRZDafPySIRQGu2+/30StmQD/aaGpGImd/hYcfAi8XeI2OeCMpC4dulGeCRWyFgJxnCwlZj6KjRTAvGJuGfpV/mESErIepbiQEMKS4kBB9fpazl2urhoCWZh8JjLnKWyMclc+q0Zsxa7GyxLJ/EKHL3UMKAr7Sqp0PrkOww+q/nSgcyd65FylurNDWqdSD+MLZqQ8GRNyKN8rCB3vRYrVDo6+IBWHY1JVTNYEAQUcjSEC79stfm4av+EX0+C8GvItfXvAit07awjMsUhx5weKDxGI3/7X54AGl/pcLMf75S5jtQwwRHrhpWfEiRQyb/Dr6e+dzqU2iE1miiPFiYKMVIligeImTEws6VWeu7JUNm7sVy0aIIMFx5DUDPdMSSSE16xkSXS/KFdv2Zj0UIvQKIcC2sTASedN60GhXHAfFQhL0y/mARWTMKzRCHHcZc2ZxlHiaNuKBxVBApVfPoMfuzwvZSNhkjY2bdrYYXnEbyVgMpHDabVDcFq5FdyHjRZSSgvDZCF+Y0pkjWQEVOpERKKLgeoiiehF6wLV3ycjbCPex5vFIqBd/SH31dlaMPWMgu50RUKFxH36jrGAAKywEdwddvZRHYDcS8EJMe3Wk0+CAD9oRoUJn/mCohAL16ORhhl1EuJkxJ3kBQxlC1WMRiV8dyNEh3m1BCFGrUAjjFyu21MlyP620EUwK7ggGiCG2leAXQQ2ZnH9GfsFYbYUk1sUKLVIyYpRacDCORCkmgUqS6tTIJY+uteSHjkZIoJMsH0B55hf63bMJCnIOIVqDw2w5Z3MRsQLBUmzFQsKfosCQJjGchEmEAGRyAheij3iAUCoyIQEean+wSWkdTXaEggFFZuYWOXl+6gWW49QDZBFptvqAp6qCsedIh7aJ1SaT1uqIpYW5kZ0zjblhpq+2qmmIlUQEWOgDfiKrxAs4ocFCEazy+Ya0iY516RlKWahVptw64uWz/mYwOwMqOJ7Ra7l4AOvYVkNc4OQfH8D7CAz7jZavEB6026m+j8RQ2QOTarYrtAQ7Qu1o6Qph8LwolNqwF5u+Vlqs66CQ68V4BFjOtReo6QatIG8RFEkozJCtj6+mDAZfE5mhx5duvCtzShwKqHDNFu+8VDmVvAABPsYIbQe/vrQhwsoTXat0HQd9+UAKDBZ27NRIEDZaDCtIsIIHK4ztAdlJcQ1G2Wif7XbZasct99x012333XirKgALfPftN7l5P+r34CxAwO5QHwc+xFVDcTDxQhMoTgQMhhmSwnUetSy5EAoMVYgF5HGGluTALlRewK89EHPeCnuuwKY1D7r5/uOGCcG4UIkHPoHnKEhN16ljbQ57TvpAwCnCkj+UupUEMKoO4HjT7takIwi1idSB366TV15PlCrXrBL9AEhHs5xA4MTOiBgRAfuFvd0wXHUq8kPEX5chOs89JWrvC+FlZShTmmicZwbozcBNtRnL92T2smL5x2sekR3dpPeP3A1BM2SpGN06VxhDrE4IGasLCgw4NUj5CA1Bo+A1FkgwBIqjgEpoYDnOoTSxzO8PqRpgB/MnMwt86yNbcKH4WOCoiwGoY7LgoRGyhhoSXmxlbzLD1oaApZoVQgJCe1hl8OSFiTUNX0UsF3eCZbkvgOeGf7AgvBS1GUQEDQmYs9MZ/pworTGVxTZ1YOO8BtYw1CnrL3eYj1RmlTLfQIyFR6BZcXaGnLZ8UEWEYcUUueUbTkzSKqu4JCVjESdR+JGQSVCirxqJAlHWgR70SgIHTnAARF2AAwO6jnJyEQNarRIAAJABFrmkABvGcoTKeOMtcQmAEGAgSi9gnIOS8EhvCOAExIzmARCplwuYcBjLFM4zo8lNFxyTQASQ3zWi1Y1tcvOcHWimXiSgQ4hkEzPmPOc5NUABU16EnT0bp2kgAE15+hMADjgAOUWxAjuekBPvrMoIOvDPhmpABd+8iAcOJ6uh0PEiDGioRl3AgBcpQwEpqNrCDDNL2XzAARrVaAFA9xDRRsDAAxDgGJkcU4gP2NMnCchASlPqgAwc4Gp0GgMJhCQrO7WBBNS8SAt2ylRchqAAGziCB/bmLN65xCPqXI0AXNBUpkYgGCwZTbU6gVQYjYABGuiqRr9qBOWF9X6cWl+UPMBQtfqTrZkoql5X4Y43PigGOrUrN/H6ikG2URokuCmJMNAAwRKTsEMIHZVOND7FGkkAdbUrZIVwI6sF6g8xSKqRCMAArnZ1szOwkF8AwQIRiHZOGIhAP1OKWreSEQ0psCy3OECBwP4TtemoGQlyWzfutMAEFTgncP1hlBR4wK9yK2gAQBABE1BgJiSggghEoNuqBAEAIfkECQkAMwAsAAAAAIAAgACFBAIEjIqMxMbEREZEJCIk5ObkrKqsZGZkFBIU1NbUNDI09Pb0vLq8VFZUnJqcDAoMzM7MTE5MLCos7O7stLK0HBoc3N7cpKKkdHZ0PDo8/P78xMLEBAYEzMrMTEpMJCYk7OrsrK6sbG5sFBYU3NrcNDY0/Pr8vL68XF5cnJ6cDA4M1NLUVFJULC4s9PL0tLa0HB4c5OLkpKak////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7AmXBILBqPyGTSBSIlNqRjbCNIkEALpXbL7Xq/2wlJQEk5zubNMWE2n2WvDskFrtvv94XldEE72mhqRglnf4WHMhsWJniNjngLEBSHbpRngkVshYCcZxQrWY+io0UaFgybhn6Vf5hEhKyHqW4vMRqkuJAdfX6Ws5drq4aAlmYyK4y5ylsLApXPqtGbJ2uxssSyfx2hy91DLhu+0qqdDq5DsMPqv50pAsneuSYQbqzQ1qnUg/jC2akOFxLcijeKhAx70WK1Q6OvCAlh2NSVU2UgBkFHC15Au/bLX5uGr/hF9PjvBLyLXyzwIrdO2sIzISAcsRBChsRiN/+1kVEApf4XEyf++UuYTcaJBAW4aZlgAcIJm/w6+nvnc6lNohNZpjhhYWCjCQlCpHiJk1MIOlVnruyVDZu7CcsWJHjBceS1Cz3TEoEgNeuZF10vyhXb9ma9FAn0ConBtrGwF3nTFtBoV5wAxUJW9MvpIERkzBM0Qhx3GXNmcZR4mjZSIMRQQKVXz6DH7o8F2UjYZI2Nm3a2E15xG8lYDKRw2m1S3BauRXch40WUkurw2QhfmNKZI5kAFTqRBSmi4HqYonoResC1d8nI2wj3sebxgKgXf0h99XYmjD1zIbudBVChcR9+o0xwASshBHcHXb2UR2A3IPBCTHt1pNPggA/aEaFCZ/5gqIQL9ejkYYZdRLiZMSd5oUEZQtVjEYlfHcjRId5tQQhRq1AI4xcrttTJcj+ttBFMCu4IBoghtpXgF0ENmZx/Rn7BWG2FJNbFBC1SMmKUWggwjkQpJoFKkurUyCWPrrXkh45GgKCTLDJAeeYX+t2zSQpyDiFag8NsOWdzEbHSwVJsxfLCn6JokCYxnIRJxAZkcgIXoo8UgFAqMiEBHmp/sElpHU12lMIFRWbmFjl5fuoFluPUA2QRabbqgKeqgrHnSIe2idUmk9bqiKWFuZGdM425YaavtqppiJVEBFioA34iq4QFOKERQhGs8vmGtImOdekZSlmoVabcOuLls/5mMDsDKjie0Wu5eADr2FZDmODkHzLA+4gG+42WrxAFtNupvo+cUJkDk2q2K7QEO0LtaOkKYfC8KZTasBebvlZarOukkOvFeARYzrUmqOkGrSBvERRJKcyQrY+vpgwGXxOZoceXbrwrc0ocCqhwzRbvvFQ5lVjQAT7GCG0Hv760kcDKE12rdB0HfekABAwWduzUSBA22gkTgDBBAROMXQDZSXENRtlon+122WrHLffcdNdt9914q+oBAXz37fcBeR+xQQiEF254BxkAoPjijLcQuBFXDSWAB4xXDkAFjxPB9EIpQHCA5YxzkPk3QxVCQgCgM65u4MBy3lrqizsw+v4MCpfuQgGwKw746KG20/IMKuSuwOyR+yN1C7k/MPqmnOvzee7n3P1Q6Q5YeUHuAIiQee83TYp77hJkvlZbXn2A/Yt4z2fYHyChgD0GgZ9buroUYE9A3hqI3D0RJgSf+9ZKm1LppEaEBmCPBXgTDefINQQGYI8D6JvbyzziHxhgb3d0414nPlYEDGBPBTrjmguoZxskxAB72aNbODj3h6AN4IHiUZubqOcOJQgAhRGQG4tegictlACFANTX9F7jAAC+AIUwSBW8TKA/t4TwCMi74NTYRZIiduEEKAQAA4RGLbKMRYlDiAAKRwACmSGpildLCQdQWIKUmWBRPnKADP6ChgQRZBGDBFtZYdAQMy4swILYa8DFAsYZWtzBgbkTJMiuI44v4uF5oFNkypCjkz5+wQTms5wkZXYdaARRCyt4QOU2ubNOFiJOojAA40hZBEchyzdjeeIdPAgAVhLBQIP6kwYEMCBGWrIRA7DlEAz0F1c+yAWucVAS6MHAURjTZX1ogwGiZZoYyAg+09ILMbPRATrKxgSQugY1vUHMhYSgjASKQeQ4oUzZbJN6GwAjSkCQNaSNExfbZGEbIPDMi9DzVO24pyhcML7SueEC21DMBMYklNcI1BFA0SdW3IHOixSAirtaSDPTciMS4iMEoOiGCyBggCx59JdVsRQLqfQEEwhUtBEaKEAHOBap9aVABrLUiwuyVheWFeICcbAAWq40hheMr2fUe4E8fUKPrPiFUYUwQAgsWYDBXQWpHbMpSt1Ztc1I5VmtCMa8vBoVBygVRhpoalmq5ZjozUBclQHoMBDDpQVMzBqB2pVbO8qhkeBVAN4k0AQI41dZbWKvdgoWO16QUyMVQI+FTax3NIGQwh6CsdKawMS8ijPvDNEuAD3BUusKAZpm9AyT7atLYJKA0SJKs121mhlSqyyJQKCxBJsA1kbDkGqs1WO3rdsCCoC1rn7Et6wwCgQKENi4LQAsAhDACTY6AwtQgAoJSABuMRMEACH5BAkJADIALAAAAACAAIAAhQQCBISGhMTGxERCROTm5KSmpCQmJGRmZNTW1LS2tBQSFFRSVPT29JSWlDQyNAwKDMzOzExKTOzu7KyurNze3Ly+vJyenHR2dBweHFxeXPz+/Dw6PAQGBMzKzERGROzq7KyqrCwuLNza3Ly6vBQWFFRWVPz6/JyanDQ2NAwODNTS1ExOTPTy9LSytOTi5MTCxKSipHx+fP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+QJlwSCwaj8hkkvURIV6io+slQIg+DKV2y+16v1uJSNCynM7m1xFhNp8LiY6IBa7b73cGpQJDn9oNaWtnf4SGBS8UJniMjXgMEC2GboRuFmpGbJWFFoGFJy0qWY6kpUUaFCOblIBuDQKDf56erJ8JLhqmuo8dfX6TJ7Rol7GWtcBmBSqLu81bDALHsmaBrJ6YRZqfwdQWnd2THaPO5EMsL5OzbX/WlNhECIS0bZbsZ8IW4uXOJhD1n942oanm590QTQG5CXSV8BMMBLn2lRJRgNK0dODanTAoJN6qi+r+GToBwoXERgwSaLSEj+E/jjIQeuJGz97Fb9/OVGB2Egz+BV8AKxEcue7iBAhSJsCoZ3HkzKHrLBQg0NOLiQqbZuZsl/NEgQoIPtDhwoIChAoFblYzltWiAJ5VkUhIW2jo0IEJv1KIyIiFigQ0geENaqbF2LhGfspryFgYDAESnDFAoGqwsMGEpiIuAuEj5ssJ9p5kIGIC28Es2yDYLMQF5q3DCCWIvJlA5ZtCG8JiLUMFwLtdJ1DlLYSFSk4Ka+0mruIybuHEjRCYcC8hwVfRh6ioN7QAhexI2DBFsxy8v8B/doJPkpLhmfLrfRv7vl6LeDfwi4zTlWGCks5mTLBffUnM9Z4SEsAQhS4BAMABCP+dUAFfBGphQgL5EZHgHx/+mDICBwA4CGESHVZYyoZmwDDgHS6kEGKID5oo0YaGTEDhHQ68+GKMMjqTIC2eZPhFDDrqyEEBPe5CY2BmDGeHCiAWuSOSSZJCY1GZwWVVCFIWyQEMVTbCgi9aIVeBHUR2WeQCYTKiQQt3qXOGSV8Q8ICaOhqwYptfsEAXcglZYOMXEeD54gML8okHBeBgdMJqXbxg6ItUKspINKlto2IXKEwKwAqWOmICdegRZIGQRYzgqQK0hdqXN+PRpOURnU46oquNiLCYH250oIUAnqKAKykaUGcdKxbMSsQKniI1rCMEuDSYCkkQECWeJTxbiioNzeTVjUNcMCkHTmrLiAT+yGxDnxEYTJqtuaSMkJNWgYxwhKqTQgpvI9HGht6KGUzqwb6lSOKZGfoOocCkCRBMCgUgsdJCEZIaSoLDpJjQR00X7ZcmngdgTMoLFnVlQaIy1IpnwiLfQQBulJxZ3LVdYtCyIxpsXJ0flU4waQY3O1LBaTPRJq6h/gXNCMQ3WbLgAIZyoKzSXjAgkkK7tYtnCFQ38idObkzMws9dMyIvemiAiS+eDZSNRwc2KRQIAw1M6qzbdbj2UUAfHI3n1HhrIUErv5xAQcB4Xhx4HRpwBw4CUG+9uB10meoGBFziOcDkdZi2TSUVCDDCCAlUQPropbPM+RZMfPCBBARI8Hr+7IetbvvtuOeu++689z7sCxMEL/zwd/tOBPDDJ9/BbSOd0bDxRfzZ/AkCDA1oIbdCL4MG168DQWfTs6O9OeETIoKuUW1Tu/H9pt8GAS/LDc660PsWfiAsWM0Jx8Ubb30r9BCC9Jr3PO2BYGcMmZgMAIMTx4yPAdcjCCbgFiiFnKBVvtOVBRsCKb0BxBL9493/dlYI2ugPSJRQoPG+9olAwIAvZWhUTvaEO3RdxExE6AA+eEUt30XjF95KWL92RYik8U4D0osK/oiAxP0NBoO509u8LKHCIQhgV0NBFeeO48RC9JAIH6hJBZO1Oxt+boZHINX0zBDC1WElIzMpYBH+5INCQsAAcHhjwSqgQj8i6K8bhGvj4kgmmEK8MAn/QxY7aOg2G5oMawgiirc2cjtJmAofjBQCty6TEyjiTQRYKpnMlNC+3LhhAni8GQO+Ri8zrA8JgEmOQASpNKxMQ1qj1MIHbHKXM5TIbUzbRlEskEmK8QqBDQBBKglmIMf5gZZHsBpsAHkCOQatWLnhRCAKAC4tnCcj9YDmvrhlQQTS6QsaOGDctqFFeMXPJjhx3h3CuJh5tXNf56ln2oqpBLiZijx4A98wz9BHMLypZNRb3HmeYoFc3mFMF7lny/xhDBDwkwsvw48SlvksgTYABp7Eg3y0mCBf4UoDAiiXEQD+ZLhdhA5BvkgAR+vDAmOpdI4nEKcdujmEK5Hkpj1ywVLYAdQhnLMqNPJWB3i6HhNckShFZc2V/jGBX1bIBXSJpzeiGhefyu8ML7hoTz4Qy3hOgqsnWdJa4PkHCMyUHGQd6DG3ShyIIscp9YCBPjYjAXJ+RoZoJcdVGrVDk53KqvuwjaPYUkGdliMe6WNo4c4wAVGQgwUQUGddGtOUPxS0NjDQymlk6YejIPYOGiBAB9SIm9bSogAhZY1x/npXYdoxDhR4JYLGkACgYAYvtaBGBcRalW/6q45lEgkIJvBZAgAvq0RBDzVf89n1SIBUW/lHQLqyN5h45HOtpYlG/pC6AOKyxgTbacokyzlFbnjXttw9pinRoLokMQAdYANuasQoiEy0hTCShYoAmJokCcQSgYbo5Ui8K63XMIkSCdCtpeLK2QrT4r0DbSV4JRRbXEngjWi7pR8C8d5syvWWAjCvohigAs/Nl1f9zQbhEpypBCDgrc/6gADSApxJlth92pQKBCRMNQn8hYgKYTCNkzMCBBA5cCYgwFkOGJUfE2QCL4AAAQiMuygjAAIvqEAbKdACKiCAAqddTxAAACH5BAkJADsALAAAAACAAIAAhQQCBISGhMTGxERCRKSmpOTm5BweHGRmZJSWlNTW1FRSVLS2tBQSFPT29CwuLHR2dAwKDIyOjMzOzExKTKyurOzu7CQmJJyenNze3FxaXLy+vGxubBwaHPz+/DQ2NHx+fAQGBIyKjMzKzERGRKyqrOzq7CQiJGxqbJyanNza3FRWVLy6vBQWFPz6/DQyNHx6fAwODJSSlNTS1ExOTLSytPTy9CwqLKSipOTi5FxeXMTCxP///wAAAAAAAAAAAAAAAAb+wJ1wSCwaj8hkUrIKfGaRI04nSKRKDaV2y+16v1tBSOWAAM7n2TFxQbVRKMJClKqB7/h8HhcbwNCAaGpGKXBwb4ZxOhgteo6PehgbJoGVgmuHhm0XCJtwNDJZkKOkRQ0IHpaqaZhwnSiviJ4oCzgdpbh6ODlmq6uDRYWeF7KJbscEMo25zFspCiC+0sBECa6yr52ciJoios3gQwkT0uUA1OLDsW5vm9rabt7hzTUHvea+6EKFmseJb/D8vbmR4NY8UhEY4DOnb4c1N69gEctGLJO/RCRwHHyUwsVCfA0fymrH7hBFidvgaFi2EUyMaB/LGdgghQIBkyQ1RaxY8dj+JgIFWnopMSCmKhYjHixI0aVCASY3YwU0likiHAEshSLRodAoGggjUFSA1EDGgqnbUq7ziYKGHa1HEMA0CkGFhmYNEqyQyHYYX0MIgMItcsIrAA8ovoVrgIEG1Ws+tW1KMFjIBa8e7g4uoOEdMURTr1YW8uCjhQWjh9RY0BMltzYCUpM2Z4CA7CIFKBx6/Sr27R0bfDFA8HsN6Fm+iwe3NGJs8SMNWPvrlPz58q/Enyth47O6EcWlRARNUviMCQzat5S4icJ7kQo3mOISNh5J4RHg0yOJ7p4IfDcllFJCO/UdgZp+o/wHxw354dHATQQiOI+Cb1BgkCML9ONGgRL+CnjDMRH194U1xWzYIS4l3NDOLBx+UQNJ61zQ4ol4pEhVLARk5UUHNIxkzAUa0ahHDSpCtAk3moEhkpFMXiCikFzwiBJkKQXpRQsfQrYbHBZCOWSRbJV0QZdeaOBTOxEx6KUjGADkZiKUNQXYmxDNuOYXApSk5zZqcrGXX8jd+UgHuv0V45NElHCSoTkK+gh8PbV2SINFSBfpinY6+kUKEUm1iQhaVPBjpxesoCkkhG6ppxs6FqGDJ1ZV9NapjhQwnZttyJBEAz4yiSitZaraGgEXFiEDrDldQCmwX4hqqDsXoHdEoQLF8iuzXaxAUk6mGlHCrRehMCu2etjaBqn+huQnQibYXJAkuRjuSVKcRESFpieZwusFBnNqScN7ek5Fgr6o3hBQpIlV08+2EhAMyas4QSafEH/ulM2yDndhrkU9JdnCLCm5QUHGg35o8U9D2IoTN6CS7IgGPVkFh3PHTolTvi5vwa+w2shnZmtp3VBszmA0EG5AvlFr5BsHEp0He5Il8m8LOknastN4/MnbBTfsIGpaVUuL9R0S/AV2Yju324ZzY4OBQ8xAl1DzyocM3TYXNVxTDAIYrLuWIbbdDUYHn1XtRgIw43rMv4KDwR6ThkiQoaqvvNs4FxScizAKGlRQQglOeV6B5yWMe/kWo4P+eQkFiM726bDHLvv+7LTXbvvtJ+pAwe68994w7q72LjwFIuz1GBxNAy/E448JAHNfxwysvBAdQO+JBGUfT8z0QuR9PBwpCAM9HKbfXgCgPhWg8kmviA28DN93UgOvZ+r5u/LPQ3vk8t/Twj0JVLoG4zKUlnV0TXlG8ws8dCCEdSEsIq+zHT92gog44UBDkbrf7fKnpbUJgX6eMgTjcPe4WXRCaEPokeYihrHLOStknniXCGLELl3dTgA5sQq9dnC+RMhsZLbrAPPUcYFxCbF+TIpg7C7IpJ2McAh5ggzSbCcdJObKW0faE6to56xwpaRBSvsRCjQIu5/xJWTJIwL8UhIyFNygVYLzXmT+IuU+ItBPc9Aao+wgpqFjoBAJ+fMRMVqYsxfuhC+I6mLEDMHA0zkGHmx0QwsrBrJXKBFrKZiFFy13hB6qjUtwzNmDDMek8hkogBYho9PMtDS9ca4L34IbN1AQoLHt7CIgI+QQdMAuKiGABKEkWAUgVBWSqFIJvIokHv1HtFRFDFrEAoMEkKXFY+rrT3+hkpV2BMBVXeRatFLZngKSxqEcRy3gBNY0fRipPuHBbzw5RDqZlT2QwaGOg+vRP9pzt3WSipN3IJKvGjfNFZFAl1vYGD+TEEx6muQGl8zDGhN5g6vdqQMCyFfZ2oDPR2iAoshrqH5qoBsZKQF+1nSE3fz+k6U2kABnz8FBkYiRr222REFWEcFKn9OCKP4DpkKhUE4oUEv94IA9YKNpcSgkxTfoAKEbKcHkzqYJoIZDQa7R4gUkINKDSNWevVTqaAQaJnZmoqJQLUUFsLnIRZm0Mi14HrqIuBsBFPUgBTDeM7eEsJRuhERsQVe4UECBUICjBhLoJoiAJrNDdBQuBTDYilR1xn5QQAJ31UMHCiACpUWySVQiQEQHs5q2+sUiF7nBHDBgyiRUIAUCWECWSEm3XiJAA2ndyDone0a3CsQQJKBARwugO6SK8WA2g1y0OlSBQrExWXnc5yYaWYSHDPazWV3kBRaQW7i04FizbGys2He0AeoqrBht7GXV2rFDGjWAl2m5V6QgmUXziqMfa4kuRdohgJ2eqAKTQ6Urj2dfIXAnuTCcUmsW0FovfZWxhVtZLArskDCtELTG6By8KmDG0JxNcxS2LmhzsjQBdFdIZcncP9BSkhBHt19MWkACusqsEgjAXu1KRIjD2pdOEEACDXZZBcwCY7642KyxWEECgjy2FjxFAwAcxo5bSQEdSKAA/pWdkxMgAR1o4JiNoUICMJDZ5wQBADs=) no-repeat center; | |
text-align: center; | |
min-height:300px; | |
} | |
</style> | |
</head> | |
<body> | |
<div id="images_container" style="display:none"> | |
<% image_array.each_with_index do |image, index| %> | |
<div class="image" id="image_container_<%= index %>"></div> | |
<% end %> | |
</div> | |
<div id="main"> | |
<div class="page-content"> | |
<h1>Gallery</h1> | |
</div> | |
<ul id="Gallery" class="gallery"> | |
<% image_array.each_with_index do |image, index| %> | |
<li><a id="a_<%= index %>" href="<%= image[:full] %>"><img src="<%= image[:thumb] %>" /></a></li> | |
<% end %> | |
</ul> | |
</div> | |
<script type="text/javascript"> | |
image_count = <%= image_array.length %>; | |
var all = document.getElementsByTagName("a"); | |
for (var i=0;i<all.length;i++) { | |
all[i].onclick = clickHandler; | |
} | |
setTimeout(function(){window.scrollTo(0, 1);}, 1); | |
function setImage(src, image_id) { | |
var src, img, image_number, image_id, image_container | |
image_container = document.getElementById("image_container_"+image_id); | |
// if picture has been loaded before | |
if (document.getElementById("image_"+image_id)) { | |
// console.log("do nothing"); | |
} else { | |
// load picture | |
image_container.innerHTML ='<img id="' + "image_" + image_id +'" src="' + src + '" />'; | |
// replace image with next image on click. | |
image_container.onclick = function(){ | |
var new_id; | |
if(image_id<(image_count-1)) { | |
src = document.getElementById("a_"+(image_id+1)).href; | |
new_id = (image_id+1) | |
} else { | |
// replace with first image if this is the last image | |
src = document.getElementById("a_0").href; | |
new_id = 0; | |
} | |
setImage(src, new_id); | |
} | |
} | |
// hide all pictures | |
var all_images = document.getElementsByClassName("image"); | |
for (var i=0;i<all_images.length;i++) { | |
all_images[i].style.display = "none"; | |
} | |
// show that picture | |
image_container.style.display = ""; | |
} | |
function clickHandler(e) { | |
var src = this.href, image_id = parseInt(this.id.replace("a_","")); | |
window.scrollTo(0, 1) | |
setImage(src, image_id); | |
document.getElementById("images_container").style.display=""; | |
return false; | |
} | |
</script> | |
</body> | |
</html> | |
EOF | |
FileUtils.mkdir_p(["gallery/thumbs", "gallery/full"]) | |
image_array = [] | |
Dir['*.{[Jj][Pp]*[Gg],[Pp][Nn][Gg]}'].each do |pic| | |
thumb = Image.read(pic)[0] | |
thumb.change_geometry!('150x150') do |cols, rows, img| | |
thumb.resize!(cols, rows) | |
end | |
if File.exists?("gallery/thumbs/thumb_#{pic}") | |
puts "Could not write file. Thumbnail already exists." | |
else | |
thumb.write "gallery/thumbs/thumb_#{pic}" | |
end | |
full = Image.read(pic)[0] | |
if File.exists?("gallery/full/full_#{pic}") | |
puts "Could not write file. Full image already exists." | |
else | |
full.write("gallery/full/full_#{pic}") | |
end | |
image_array << {thumb: "thumbs/thumb_#{pic}", full: "full/full_#{pic}"} | |
end | |
File.open("gallery/index.html", 'w+b') { |f| | |
f.write template.result(binding) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment