├── README.md ├── images └── penny-awww.jpg ├── index.html ├── scripts ├── simplethumbnails.js └── tools.js └── styles-and-fonts ├── LICENSE.txt ├── README.md ├── handlee.woff ├── octicons-local.ttf ├── octicons.eot ├── octicons.svg ├── octicons.ttf ├── octicons.woff ├── sprockets-octicons.scss └── styles.css /README.md: -------------------------------------------------------------------------------- 1 | # Simple Thumbnails 2 | 3 | Creates a set of thumbnails from a set of dropped images, downloadable as a zip. 4 | 5 | ## Demo 6 | 7 | You can see the live version here: http://makethumbnails.com/#dropzone 8 | 9 | And there is a video demo on the YouTube: https://www.youtube.com/watch?v=MrN1ujTHTHI 10 | 11 | ## Requirements and support 12 | 13 | Uses Stuart Knightley's JSZip: http://stuk.github.io/jszip/ 14 | and Eli Grey's FileSaver: https://github.com/eligrey/FileSaver.js/ 15 | 16 | It was tested in Chrome, Firefox, Opera and Safari on OSX. I also showed it to a cat and it approved. 17 | 18 | ## Things that aren't issues 19 | 20 | Yes, this doesn't work on a mobile. I dare you to drag and drop images into a browser on a mobile though and download thumbnails as a zip - it's a use case thing. 21 | This is live and such - all gulping and grunting was done by me, not by any script. 22 | 23 | ## How to use 24 | 25 | http://makethumbnails.com/#help 26 | -------------------------------------------------------------------------------- /images/penny-awww.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codepo8/simplethumbnails/ae9378c268fc540f64945143c997ecebf407fff8/images/penny-awww.jpg -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Let's make thumbnails - just drop some images here. 6 | 7 | 8 | 9 | 10 | 11 |

Let's make thumbnails

12 |
13 |
14 |

Checking your browser…

15 |
16 | 27 |
28 |
29 | 30 |
31 | Thumbnail options 32 | 33 | × 34 | 35 | 36 | 37 | 38 |
39 |
40 | File format 41 | 42 | 43 | 44 |
45 | 46 |
47 | 48 |
49 |
50 |
51 |

Hello there, I am here to create thumbnails for you!

52 |

All you need to do is drag and drop some images onto me and you get a zip file containing the thumbnails.

53 |

You can alter the look and quality of the thumbnails.

54 |

All this happens on your own computer, none of the images get uploaded to the cloud - you can even go offline if you want to.

55 |

If you resize me (or click the pin icon) I turn into a simple drop-things-here app.

56 |

If you have some issues with me, please get in contact.

57 |

Still confused? Check out this video!

58 |

Now go and create some thumbnails.

59 |
60 |
61 |

All the work here is done by Chris Heilmann, so send him a tweet if you're stuck.

62 |

The source code of this is on GitHub, and you can also file issues there.

63 |

Thanks must go to:

64 |

Stuart Knightley for JSZip , Eli Grey for FileSaver, Joe Prince for the Handlee font and GitHub for Octicons. 65 |

66 |

Demo thumbnail photo model: Penelope Pickles.

67 |

Now go and create some thumbnails.

68 |
69 |
70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /scripts/simplethumbnails.js: -------------------------------------------------------------------------------- 1 | /* 2 | simplethumbnails by Christian Heilmann 3 | Version: 1.0 4 | Homepage: http://makethumbnails.com 5 | Copyright (c) 2012, Christian Heilmann 6 | Code licensed under the BSD License: 7 | http://wait-till-i.com/license.txt 8 | */ 9 | (function(){ 10 | var s = document.querySelector('#dropzone'); 11 | var o = document.querySelector('output'); 12 | var t = document.querySelector('#thumbslist'); 13 | var tt = document.querySelector('#thumbstrigger'); 14 | var log = document.querySelector('#log ul'); 15 | var f = document.querySelector('#options form'); 16 | var c = document.querySelector('#options canvas'); 17 | var di = document.querySelector('#options img.demo'); 18 | var pi = document.querySelector('#options .preview'); 19 | var ps = document.querySelector('#previewsize'); 20 | var pin = document.querySelector('#pin'); 21 | var cx = c.getContext('2d'); 22 | var thumbwidth = 100; 23 | var thumbheight = 100; 24 | var crop = false; 25 | var background = '#ffffff'; 26 | var jpeg = false; 27 | var quality = 0.8; 28 | var zip; 29 | var file; 30 | var thumbsshown = false; 31 | var fileslength; 32 | var current = 0; 33 | 34 | function init() { 35 | if (typeof FileReader !== 'undefined') { 36 | document.body.classList.add('dragdrop'); 37 | s.querySelector('p').innerHTML = 'Drag and drop some images here!'; 38 | s.addEventListener('dragover', function ( ev ) { 39 | ev.preventDefault(); 40 | }, false ); 41 | s.addEventListener('drop', getfiles, false ); 42 | f.addEventListener('change', previewoptions,false); 43 | di.addEventListener('load',previewoptions, false); 44 | tt.addEventListener('click',togglethumbs, false); 45 | pin.addEventListener('click', function(ev){ 46 | window.open('index.html#dropzone', 'pinned', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=300,height=300'); 47 | ev.preventDefault(); 48 | }, false); 49 | iwanttoretrieve(); 50 | previewoptions(); 51 | } 52 | } 53 | function togglethumbs(ev) { 54 | this.classList.toggle('active'); 55 | t.classList.toggle('show'); 56 | thumbsshown = !thumbsshown; 57 | ev.preventDefault(); 58 | } 59 | 60 | function previewoptions() { 61 | grabformvalues(); 62 | pi.innerHTML = ''; 63 | imagetocanvas(di, thumbwidth, thumbheight, crop, background, name, true); 64 | var thumb = new Image(); 65 | thumb.className = 'preview'; 66 | var url = jpeg ? c.toDataURL('image/jpeg', quality) : c.toDataURL(); 67 | thumb.src = url; 68 | pi.appendChild(thumb); 69 | ps.innerHTML = '('+Math.round(url.length / 1000 * 100) / 100+'KB)'; 70 | } 71 | 72 | function grabformvalues() { 73 | thumbwidth = document.querySelector('#width').value; 74 | thumbheight = document.querySelector('#height').value; 75 | crop = !document.querySelector('#crop').checked; 76 | background = document.querySelector('#bg').value; 77 | jpeg = document.querySelector('#jpeg').value; 78 | quality = document.querySelector('#quality').value / 100; 79 | localStorage.setItem('simplethumbnails',JSON.stringify({ 80 | thumbwidth: thumbwidth, 81 | thumbheight: thumbheight, 82 | crop: crop, 83 | jpeg: jpeg, 84 | background: background, 85 | quality: quality 86 | })); 87 | } 88 | 89 | function iwanttoretrieve() { 90 | var settings = localStorage.getItem('simplethumbnails'); 91 | if (settings) { 92 | settings = JSON.parse(settings); 93 | thumbwidth = settings.thumbwidth; 94 | document.querySelector('#width').value = settings.thumbwidth; 95 | thumbheight = settings.thumbheight; 96 | document.querySelector('#height').value = settings.thumbheight; 97 | crop = !settings.crop; 98 | document.querySelector('#crop').checked = !settings.crop; 99 | background = settings.background; 100 | document.querySelector('#bg').value = settings.background; 101 | jpeg = settings.jpeg; 102 | document.querySelector('#jpeg').value = jpeg; 103 | quality = settings.quality; 104 | document.querySelector('#quality').value = quality * 100; 105 | } 106 | } 107 | 108 | function getfiles(ev) { 109 | s.querySelector('p').innerHTML = 'Getting images, creating thumbnails…'; 110 | t.innerHTML = '
  • Click any of the thumbnails to download them or
  • '; 111 | var files = ev.dataTransfer.files, 112 | url = window.URL || window.webkitURL, 113 | objURL = url.createObjectURL || false; 114 | if ( files.length > 0 ) { 115 | var i = files.length; 116 | fileslength = i; 117 | while ( i-- ) { 118 | var file = files[ i ]; 119 | if ( file.type.indexOf('image') === -1 ) { continue; } 120 | if(objURL) { 121 | loadImage(url.createObjectURL(file),file.name); 122 | } else { 123 | var reader = new FileReader(); 124 | reader.readAsDataURL( file ); 125 | reader.onload = function ( ev ) { 126 | loadImage(ev.target.result,file.name); 127 | } 128 | } 129 | } 130 | } 131 | t.querySelector('button').addEventListener('click', zipit, false); 132 | ev.preventDefault(); 133 | } 134 | 135 | function loadImage(file, name) { 136 | var img = new Image(); 137 | img.src = file; 138 | img.onload = function() { 139 | grabformvalues(); 140 | imagetocanvas(this, thumbwidth, thumbheight, crop, background, name); 141 | }; 142 | } 143 | function imagetocanvas(img, w, h, crop, b, name, preview) { 144 | c.width = w; 145 | c.height = h; 146 | var dimensions = resize( img.width, img.height, w, h ); 147 | if (crop) { 148 | c.width = dimensions.w; 149 | c.height = dimensions.h; 150 | dimensions.x = 0; 151 | dimensions.y = 0; 152 | } 153 | if (b !== 'transparent') { 154 | cx.fillStyle = b; 155 | cx.fillRect (0, 0, thumbwidth, thumbheight); 156 | } 157 | cx.drawImage( 158 | img, dimensions.x, dimensions.y, dimensions.w, dimensions.h 159 | ); 160 | if (!preview) { 161 | addtothumbslist(jpeg, quality, name); 162 | } 163 | } 164 | 165 | function addtothumbslist(jpeg, quality, name) { 166 | var thumb = new Image(), 167 | url = jpeg ? c.toDataURL('image/jpeg', quality) : c.toDataURL(); 168 | thumb.src = url; 169 | var thumbname = name.split('.'); 170 | thumbname = thumbname[0] + '_tn.' + (jpeg ? 'jpg' : thumbname[1]); 171 | thumb.title = thumbname +' ' + Math.round(url.length / 1000 * 100) / 100 + ' KB'; 172 | thumb.setAttribute('data-filename', thumbname); 173 | // log.innerHTML += '
  • Thumbnail: '+thumbname+' '+'('+Math.round(url.length / 1000 * 100) / 100+'KB)
  • '; 174 | var item = document.createElement('li'); 175 | var link = document.createElement('a'); 176 | link.href = url; 177 | link.download = thumbname; 178 | var textlabel = document.createElement('span'); 179 | textlabel.innerHTML = thumb.title; 180 | link.appendChild(thumb); 181 | item.appendChild(link); 182 | item.appendChild(textlabel); 183 | t.appendChild(item); 184 | current++; 185 | if (current === fileslength) { 186 | if (!thumbsshown) { 187 | zipit(); 188 | } else { 189 | s.querySelector('p').innerHTML = 'Check out your thumbnails below!'; 190 | } 191 | } 192 | } 193 | function zipit() { 194 | current = 0; 195 | var zip = new JSZip(); 196 | var imgs = o.querySelectorAll('img'); 197 | var allimgs = imgs.length; 198 | while (allimgs--) { 199 | zip.file( 200 | imgs[allimgs].getAttribute('data-filename'), 201 | imgs[allimgs].src.substr(imgs[allimgs].src.indexOf(',') + 1), 202 | { base64: true } 203 | ); 204 | } 205 | saveAs( 206 | zip.generate({type: 'blob'}), 207 | 'thumbnails.zip' 208 | ); 209 | s.querySelector('p').innerHTML = 'Drag and drop some images here!'; 210 | } 211 | 212 | function resize(imagewidth, imageheight, thumbwidth, thumbheight) { 213 | var w = 0, h = 0, x = 0, y = 0, 214 | widthratio = imagewidth / thumbwidth, 215 | heightratio = imageheight / thumbheight, 216 | maxratio = Math.max( widthratio, heightratio ); 217 | if ( maxratio > 1 ) { 218 | w = imagewidth / maxratio; 219 | h = imageheight / maxratio; 220 | } else { 221 | w = imagewidth; 222 | h = imageheight; 223 | } 224 | x = ( thumbwidth - w ) / 2; 225 | y = ( thumbheight - h ) / 2; 226 | return { w:w, h:h, x:x, y:y }; 227 | } 228 | init(); 229 | })(); 230 | 231 | if (window.location.hash === '') { 232 | window.location.hash = 'dropzone'; 233 | } 234 | 235 | -------------------------------------------------------------------------------- /scripts/tools.js: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | JSZip - A Javascript class for generating and reading zip files 4 | 5 | 6 | (c) 2009-2014 Stuart Knightley 7 | Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. 8 | 9 | JSZip uses the library pako released under the MIT license : 10 | https://github.com/nodeca/pako/blob/master/LICENSE 11 | */ 12 | !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.lengtha)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;gc;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a0?a.substring(0,b):""},x=function(a,b){return"/"!=a.slice(-1)&&(a+="/"),b="undefined"!=typeof b?b:!1,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent="",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=""),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),n=b.comment||"",o=d.transformTo("string",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t="",u="",v="";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+="up"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+="uc"+s(v.length,2)+v);var w="";w+="\n\x00",w+=p||q?"\x00\b":"\x00\x00",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+"\x00"+w+s(o.length,2)+"\x00\x00\x00\x00"+(j===!0?"\x00\x00\x00":"\x00\x00\x00\x00")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;cg&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;cb?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header) 13 | };s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead=hb&&(a.ins_h=(a.ins_h<=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=hb&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<q&&(p+=B[f++]<>>=w,q-=w),15>q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<q&&(p+=B[f++]<q&&(p+=B[f++]<k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Ab=c.lencode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a; 14 | if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++jj){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}); 15 | 16 | 17 | /*! FileSaver.js 18 | * A saveAs() FileSaver implementation. 19 | * 2014-01-24 20 | * 21 | * By Eli Grey, http://eligrey.com 22 | * License: X11/MIT 23 | * See LICENSE.md 24 | */ 25 | 26 | /*global self */ 27 | /*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */ 28 | 29 | /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ 30 | 31 | var saveAs = saveAs 32 | // IE 10+ (native saveAs) 33 | || (typeof navigator !== "undefined" && 34 | navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator)) 35 | // Everyone else 36 | || (function(view) { 37 | "use strict"; 38 | // IE <10 is explicitly unsupported 39 | if (typeof navigator !== "undefined" && 40 | /MSIE [1-9]\./.test(navigator.userAgent)) { 41 | return; 42 | } 43 | var 44 | doc = view.document 45 | // only get URL when necessary in case BlobBuilder.js hasn't overridden it yet 46 | , get_URL = function() { 47 | return view.URL || view.webkitURL || view; 48 | } 49 | , URL = view.URL || view.webkitURL || view 50 | , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a") 51 | , can_use_save_link = !view.externalHost && "download" in save_link 52 | , click = function(node) { 53 | var event = doc.createEvent("MouseEvents"); 54 | event.initMouseEvent( 55 | "click", true, false, view, 0, 0, 0, 0, 0 56 | , false, false, false, false, 0, null 57 | ); 58 | node.dispatchEvent(event); 59 | } 60 | , webkit_req_fs = view.webkitRequestFileSystem 61 | , req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem 62 | , throw_outside = function(ex) { 63 | (view.setImmediate || view.setTimeout)(function() { 64 | throw ex; 65 | }, 0); 66 | } 67 | , force_saveable_type = "application/octet-stream" 68 | , fs_min_size = 0 69 | , deletion_queue = [] 70 | , process_deletion_queue = function() { 71 | var i = deletion_queue.length; 72 | while (i--) { 73 | var file = deletion_queue[i]; 74 | if (typeof file === "string") { // file is an object URL 75 | URL.revokeObjectURL(file); 76 | } else { // file is a File 77 | file.remove(); 78 | } 79 | } 80 | deletion_queue.length = 0; // clear queue 81 | } 82 | , dispatch = function(filesaver, event_types, event) { 83 | event_types = [].concat(event_types); 84 | var i = event_types.length; 85 | while (i--) { 86 | var listener = filesaver["on" + event_types[i]]; 87 | if (typeof listener === "function") { 88 | try { 89 | listener.call(filesaver, event || filesaver); 90 | } catch (ex) { 91 | throw_outside(ex); 92 | } 93 | } 94 | } 95 | } 96 | , FileSaver = function(blob, name) { 97 | // First try a.download, then web filesystem, then object URLs 98 | var 99 | filesaver = this 100 | , type = blob.type 101 | , blob_changed = false 102 | , object_url 103 | , target_view 104 | , get_object_url = function() { 105 | var object_url = get_URL().createObjectURL(blob); 106 | deletion_queue.push(object_url); 107 | return object_url; 108 | } 109 | , dispatch_all = function() { 110 | dispatch(filesaver, "writestart progress write writeend".split(" ")); 111 | } 112 | // on any filesys errors revert to saving with object URLs 113 | , fs_error = function() { 114 | // don't create more object URLs than needed 115 | if (blob_changed || !object_url) { 116 | object_url = get_object_url(blob); 117 | } 118 | if (target_view) { 119 | target_view.location.href = object_url; 120 | } else { 121 | window.open(object_url, "_blank"); 122 | } 123 | filesaver.readyState = filesaver.DONE; 124 | dispatch_all(); 125 | } 126 | , abortable = function(func) { 127 | return function() { 128 | if (filesaver.readyState !== filesaver.DONE) { 129 | return func.apply(this, arguments); 130 | } 131 | }; 132 | } 133 | , create_if_not_found = {create: true, exclusive: false} 134 | , slice 135 | ; 136 | filesaver.readyState = filesaver.INIT; 137 | if (!name) { 138 | name = "download"; 139 | } 140 | if (can_use_save_link) { 141 | object_url = get_object_url(blob); 142 | // FF for Android has a nasty garbage collection mechanism 143 | // that turns all objects that are not pure javascript into 'deadObject' 144 | // this means `doc` and `save_link` are unusable and need to be recreated 145 | // `view` is usable though: 146 | doc = view.document; 147 | save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a"); 148 | save_link.href = object_url; 149 | save_link.download = name; 150 | var event = doc.createEvent("MouseEvents"); 151 | event.initMouseEvent( 152 | "click", true, false, view, 0, 0, 0, 0, 0 153 | , false, false, false, false, 0, null 154 | ); 155 | save_link.dispatchEvent(event); 156 | filesaver.readyState = filesaver.DONE; 157 | dispatch_all(); 158 | return; 159 | } 160 | // Object and web filesystem URLs have a problem saving in Google Chrome when 161 | // viewed in a tab, so I force save with application/octet-stream 162 | // http://code.google.com/p/chromium/issues/detail?id=91158 163 | if (view.chrome && type && type !== force_saveable_type) { 164 | slice = blob.slice || blob.webkitSlice; 165 | blob = slice.call(blob, 0, blob.size, force_saveable_type); 166 | blob_changed = true; 167 | } 168 | // Since I can't be sure that the guessed media type will trigger a download 169 | // in WebKit, I append .download to the filename. 170 | // https://bugs.webkit.org/show_bug.cgi?id=65440 171 | if (webkit_req_fs && name !== "download") { 172 | name += ".download"; 173 | } 174 | if (type === force_saveable_type || webkit_req_fs) { 175 | target_view = view; 176 | } 177 | if (!req_fs) { 178 | fs_error(); 179 | return; 180 | } 181 | fs_min_size += blob.size; 182 | req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) { 183 | fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) { 184 | var save = function() { 185 | dir.getFile(name, create_if_not_found, abortable(function(file) { 186 | file.createWriter(abortable(function(writer) { 187 | writer.onwriteend = function(event) { 188 | target_view.location.href = file.toURL(); 189 | deletion_queue.push(file); 190 | filesaver.readyState = filesaver.DONE; 191 | dispatch(filesaver, "writeend", event); 192 | }; 193 | writer.onerror = function() { 194 | var error = writer.error; 195 | if (error.code !== error.ABORT_ERR) { 196 | fs_error(); 197 | } 198 | }; 199 | "writestart progress write abort".split(" ").forEach(function(event) { 200 | writer["on" + event] = filesaver["on" + event]; 201 | }); 202 | writer.write(blob); 203 | filesaver.abort = function() { 204 | writer.abort(); 205 | filesaver.readyState = filesaver.DONE; 206 | }; 207 | filesaver.readyState = filesaver.WRITING; 208 | }), fs_error); 209 | }), fs_error); 210 | }; 211 | dir.getFile(name, {create: false}, abortable(function(file) { 212 | // delete file if it already exists 213 | file.remove(); 214 | save(); 215 | }), abortable(function(ex) { 216 | if (ex.code === ex.NOT_FOUND_ERR) { 217 | save(); 218 | } else { 219 | fs_error(); 220 | } 221 | })); 222 | }), fs_error); 223 | }), fs_error); 224 | } 225 | , FS_proto = FileSaver.prototype 226 | , saveAs = function(blob, name) { 227 | return new FileSaver(blob, name); 228 | } 229 | ; 230 | FS_proto.abort = function() { 231 | var filesaver = this; 232 | filesaver.readyState = filesaver.DONE; 233 | dispatch(filesaver, "abort"); 234 | }; 235 | FS_proto.readyState = FS_proto.INIT = 0; 236 | FS_proto.WRITING = 1; 237 | FS_proto.DONE = 2; 238 | 239 | FS_proto.error = 240 | FS_proto.onwritestart = 241 | FS_proto.onprogress = 242 | FS_proto.onwrite = 243 | FS_proto.onabort = 244 | FS_proto.onerror = 245 | FS_proto.onwriteend = 246 | null; 247 | 248 | view.addEventListener("unload", process_deletion_queue, false); 249 | saveAs.unload = function() { 250 | process_deletion_queue(); 251 | view.removeEventListener("unload", process_deletion_queue, false); 252 | }; 253 | return saveAs; 254 | }( 255 | typeof self !== "undefined" && self 256 | || typeof window !== "undefined" && window 257 | || this.content 258 | )); 259 | // `self` is undefined in Firefox for Android content script context 260 | // while `this` is nsIContentFrameMessageManager 261 | // with an attribute `content` that corresponds to the window 262 | 263 | if (typeof module !== "undefined") module.exports = saveAs; 264 | -------------------------------------------------------------------------------- /styles-and-fonts/LICENSE.txt: -------------------------------------------------------------------------------- 1 | (c) 2012-2014 GitHub 2 | 3 | When using the GitHub logos, be sure to follow the GitHub logo guidelines (https://github.com/logos) 4 | 5 | Font License: SIL OFL 1.1 (http://scripts.sil.org/OFL) 6 | Applies to all font files 7 | 8 | Code License: MIT (http://choosealicense.com/licenses/mit/) 9 | Applies to all other files 10 | -------------------------------------------------------------------------------- /styles-and-fonts/README.md: -------------------------------------------------------------------------------- 1 | If you intend to install Octicons locally, install `octicons-local.ttf`. It should appear as “github-octicons” in your font list. It is specially designed not to conflict with GitHub's web fonts. 2 | -------------------------------------------------------------------------------- /styles-and-fonts/handlee.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codepo8/simplethumbnails/ae9378c268fc540f64945143c997ecebf407fff8/styles-and-fonts/handlee.woff -------------------------------------------------------------------------------- /styles-and-fonts/octicons-local.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codepo8/simplethumbnails/ae9378c268fc540f64945143c997ecebf407fff8/styles-and-fonts/octicons-local.ttf -------------------------------------------------------------------------------- /styles-and-fonts/octicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codepo8/simplethumbnails/ae9378c268fc540f64945143c997ecebf407fff8/styles-and-fonts/octicons.eot -------------------------------------------------------------------------------- /styles-and-fonts/octicons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | (c) 2012-2014 GitHub 6 | 7 | When using the GitHub logos, be sure to follow the GitHub logo guidelines (https://github.com/logos) 8 | 9 | Font License: SIL OFL 1.1 (http://scripts.sil.org/OFL) 10 | Applies to all font files 11 | 12 | Code License: MIT (http://choosealicense.com/licenses/mit/) 13 | Applies to all other files 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | -------------------------------------------------------------------------------- /styles-and-fonts/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codepo8/simplethumbnails/ae9378c268fc540f64945143c997ecebf407fff8/styles-and-fonts/octicons.ttf -------------------------------------------------------------------------------- /styles-and-fonts/octicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codepo8/simplethumbnails/ae9378c268fc540f64945143c997ecebf407fff8/styles-and-fonts/octicons.woff -------------------------------------------------------------------------------- /styles-and-fonts/sprockets-octicons.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'octicons'; 3 | src: font-url('octicons.eot?#iefix') format('embedded-opentype'), 4 | font-url('octicons.woff') format('woff'), 5 | font-url('octicons.ttf') format('truetype'), 6 | font-url('octicons.svg#octicons') format('svg'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | // .octicon is optimized for 16px. 12 | // .mega-octicon is optimized for 32px but can be used larger. 13 | .octicon { 14 | font: normal normal 16px octicons; 15 | line-height: 1; 16 | display: inline-block; 17 | text-decoration: none; 18 | -webkit-font-smoothing: antialiased; 19 | -moz-osx-font-smoothing: grayscale; 20 | -webkit-user-select: none; 21 | -moz-user-select: none; 22 | -ms-user-select: none; 23 | user-select: none; 24 | } 25 | .mega-octicon { 26 | font: normal normal 32px octicons; 27 | line-height: 1; 28 | display: inline-block; 29 | text-decoration: none; 30 | -webkit-font-smoothing: antialiased; 31 | -moz-osx-font-smoothing: grayscale; 32 | -webkit-user-select: none; 33 | -moz-user-select: none; 34 | -ms-user-select: none; 35 | user-select: none; 36 | } 37 | 38 | .octicon-alert:before { content: '\f02d'} /*  */ 39 | .octicon-alignment-align:before { content: '\f08a'} /*  */ 40 | .octicon-alignment-aligned-to:before { content: '\f08e'} /*  */ 41 | .octicon-alignment-unalign:before { content: '\f08b'} /*  */ 42 | .octicon-arrow-down:before { content: '\f03f'} /*  */ 43 | .octicon-arrow-left:before { content: '\f040'} /*  */ 44 | .octicon-arrow-right:before { content: '\f03e'} /*  */ 45 | .octicon-arrow-small-down:before { content: '\f0a0'} /*  */ 46 | .octicon-arrow-small-left:before { content: '\f0a1'} /*  */ 47 | .octicon-arrow-small-right:before { content: '\f071'} /*  */ 48 | .octicon-arrow-small-up:before { content: '\f09f'} /*  */ 49 | .octicon-arrow-up:before { content: '\f03d'} /*  */ 50 | .octicon-beer:before { content: '\f069'} /*  */ 51 | .octicon-book:before { content: '\f007'} /*  */ 52 | .octicon-bookmark:before { content: '\f07b'} /*  */ 53 | .octicon-briefcase:before { content: '\f0d3'} /*  */ 54 | .octicon-broadcast:before { content: '\f048'} /*  */ 55 | .octicon-browser:before { content: '\f0c5'} /*  */ 56 | .octicon-bug:before { content: '\f091'} /*  */ 57 | .octicon-calendar:before { content: '\f068'} /*  */ 58 | .octicon-check:before { content: '\f03a'} /*  */ 59 | .octicon-checklist:before { content: '\f076'} /*  */ 60 | .octicon-chevron-down:before { content: '\f0a3'} /*  */ 61 | .octicon-chevron-left:before { content: '\f0a4'} /*  */ 62 | .octicon-chevron-right:before { content: '\f078'} /*  */ 63 | .octicon-chevron-up:before { content: '\f0a2'} /*  */ 64 | .octicon-circle-slash:before { content: '\f084'} /*  */ 65 | .octicon-circuit-board:before { content: '\f0d6'} /*  */ 66 | .octicon-clippy:before { content: '\f035'} /*  */ 67 | .octicon-clock:before { content: '\f046'} /*  */ 68 | .octicon-cloud-download:before { content: '\f00b'} /*  */ 69 | .octicon-cloud-upload:before { content: '\f00c'} /*  */ 70 | .octicon-code:before { content: '\f05f'} /*  */ 71 | .octicon-color-mode:before { content: '\f065'} /*  */ 72 | .octicon-comment-add:before, 73 | .octicon-comment:before { content: '\f02b'} /*  */ 74 | .octicon-comment-discussion:before { content: '\f04f'} /*  */ 75 | .octicon-credit-card:before { content: '\f045'} /*  */ 76 | .octicon-dash:before { content: '\f0ca'} /*  */ 77 | .octicon-dashboard:before { content: '\f07d'} /*  */ 78 | .octicon-database:before { content: '\f096'} /*  */ 79 | .octicon-device-camera:before { content: '\f056'} /*  */ 80 | .octicon-device-camera-video:before { content: '\f057'} /*  */ 81 | .octicon-device-desktop:before { content: '\f27c'} /*  */ 82 | .octicon-device-mobile:before { content: '\f038'} /*  */ 83 | .octicon-diff:before { content: '\f04d'} /*  */ 84 | .octicon-diff-added:before { content: '\f06b'} /*  */ 85 | .octicon-diff-ignored:before { content: '\f099'} /*  */ 86 | .octicon-diff-modified:before { content: '\f06d'} /*  */ 87 | .octicon-diff-removed:before { content: '\f06c'} /*  */ 88 | .octicon-diff-renamed:before { content: '\f06e'} /*  */ 89 | .octicon-ellipsis:before { content: '\f09a'} /*  */ 90 | .octicon-eye-unwatch:before, 91 | .octicon-eye-watch:before, 92 | .octicon-eye:before { content: '\f04e'} /*  */ 93 | .octicon-file-binary:before { content: '\f094'} /*  */ 94 | .octicon-file-code:before { content: '\f010'} /*  */ 95 | .octicon-file-directory:before { content: '\f016'} /*  */ 96 | .octicon-file-media:before { content: '\f012'} /*  */ 97 | .octicon-file-pdf:before { content: '\f014'} /*  */ 98 | .octicon-file-submodule:before { content: '\f017'} /*  */ 99 | .octicon-file-symlink-directory:before { content: '\f0b1'} /*  */ 100 | .octicon-file-symlink-file:before { content: '\f0b0'} /*  */ 101 | .octicon-file-text:before { content: '\f011'} /*  */ 102 | .octicon-file-zip:before { content: '\f013'} /*  */ 103 | .octicon-flame:before { content: '\f0d2'} /*  */ 104 | .octicon-fold:before { content: '\f0cc'} /*  */ 105 | .octicon-gear:before { content: '\f02f'} /*  */ 106 | .octicon-gift:before { content: '\f042'} /*  */ 107 | .octicon-gist:before { content: '\f00e'} /*  */ 108 | .octicon-gist-secret:before { content: '\f08c'} /*  */ 109 | .octicon-git-branch-create:before, 110 | .octicon-git-branch-delete:before, 111 | .octicon-git-branch:before { content: '\f020'} /*  */ 112 | .octicon-git-commit:before { content: '\f01f'} /*  */ 113 | .octicon-git-compare:before { content: '\f0ac'} /*  */ 114 | .octicon-git-merge:before { content: '\f023'} /*  */ 115 | .octicon-git-pull-request-abandoned:before, 116 | .octicon-git-pull-request:before { content: '\f009'} /*  */ 117 | .octicon-globe:before { content: '\f0b6'} /*  */ 118 | .octicon-graph:before { content: '\f043'} /*  */ 119 | .octicon-heart:before { content: '\2665'} /* ♥ */ 120 | .octicon-history:before { content: '\f07e'} /*  */ 121 | .octicon-home:before { content: '\f08d'} /*  */ 122 | .octicon-horizontal-rule:before { content: '\f070'} /*  */ 123 | .octicon-hourglass:before { content: '\f09e'} /*  */ 124 | .octicon-hubot:before { content: '\f09d'} /*  */ 125 | .octicon-inbox:before { content: '\f0cf'} /*  */ 126 | .octicon-info:before { content: '\f059'} /*  */ 127 | .octicon-issue-closed:before { content: '\f028'} /*  */ 128 | .octicon-issue-opened:before { content: '\f026'} /*  */ 129 | .octicon-issue-reopened:before { content: '\f027'} /*  */ 130 | .octicon-jersey:before { content: '\f019'} /*  */ 131 | .octicon-jump-down:before { content: '\f072'} /*  */ 132 | .octicon-jump-left:before { content: '\f0a5'} /*  */ 133 | .octicon-jump-right:before { content: '\f0a6'} /*  */ 134 | .octicon-jump-up:before { content: '\f073'} /*  */ 135 | .octicon-key:before { content: '\f049'} /*  */ 136 | .octicon-keyboard:before { content: '\f00d'} /*  */ 137 | .octicon-law:before { content: '\f0d8'} /* */ 138 | .octicon-light-bulb:before { content: '\f000'} /*  */ 139 | .octicon-link:before { content: '\f05c'} /*  */ 140 | .octicon-link-external:before { content: '\f07f'} /*  */ 141 | .octicon-list-ordered:before { content: '\f062'} /*  */ 142 | .octicon-list-unordered:before { content: '\f061'} /*  */ 143 | .octicon-location:before { content: '\f060'} /*  */ 144 | .octicon-gist-private:before, 145 | .octicon-mirror-private:before, 146 | .octicon-git-fork-private:before, 147 | .octicon-lock:before { content: '\f06a'} /*  */ 148 | .octicon-logo-github:before { content: '\f092'} /*  */ 149 | .octicon-mail:before { content: '\f03b'} /*  */ 150 | .octicon-mail-read:before { content: '\f03c'} /*  */ 151 | .octicon-mail-reply:before { content: '\f051'} /*  */ 152 | .octicon-mark-github:before { content: '\f00a'} /*  */ 153 | .octicon-markdown:before { content: '\f0c9'} /*  */ 154 | .octicon-megaphone:before { content: '\f077'} /*  */ 155 | .octicon-mention:before { content: '\f0be'} /*  */ 156 | .octicon-microscope:before { content: '\f089'} /*  */ 157 | .octicon-milestone:before { content: '\f075'} /*  */ 158 | .octicon-mirror-public:before, 159 | .octicon-mirror:before { content: '\f024'} /*  */ 160 | .octicon-mortar-board:before { content: '\f0d7'} /* */ 161 | .octicon-move-down:before { content: '\f0a8'} /*  */ 162 | .octicon-move-left:before { content: '\f074'} /*  */ 163 | .octicon-move-right:before { content: '\f0a9'} /*  */ 164 | .octicon-move-up:before { content: '\f0a7'} /*  */ 165 | .octicon-mute:before { content: '\f080'} /*  */ 166 | .octicon-no-newline:before { content: '\f09c'} /*  */ 167 | .octicon-octoface:before { content: '\f008'} /*  */ 168 | .octicon-organization:before { content: '\f037'} /*  */ 169 | .octicon-package:before { content: '\f0c4'} /*  */ 170 | .octicon-paintcan:before { content: '\f0d1'} /*  */ 171 | .octicon-pencil:before { content: '\f058'} /*  */ 172 | .octicon-person-add:before, 173 | .octicon-person-follow:before, 174 | .octicon-person:before { content: '\f018'} /*  */ 175 | .octicon-pin:before { content: '\f041'} /*  */ 176 | .octicon-playback-fast-forward:before { content: '\f0bd'} /*  */ 177 | .octicon-playback-pause:before { content: '\f0bb'} /*  */ 178 | .octicon-playback-play:before { content: '\f0bf'} /*  */ 179 | .octicon-playback-rewind:before { content: '\f0bc'} /*  */ 180 | .octicon-plug:before { content: '\f0d4'} /*  */ 181 | .octicon-repo-create:before, 182 | .octicon-gist-new:before, 183 | .octicon-file-directory-create:before, 184 | .octicon-file-add:before, 185 | .octicon-plus:before { content: '\f05d'} /*  */ 186 | .octicon-podium:before { content: '\f0af'} /*  */ 187 | .octicon-primitive-dot:before { content: '\f052'} /*  */ 188 | .octicon-primitive-square:before { content: '\f053'} /*  */ 189 | .octicon-pulse:before { content: '\f085'} /*  */ 190 | .octicon-puzzle:before { content: '\f0c0'} /*  */ 191 | .octicon-question:before { content: '\f02c'} /*  */ 192 | .octicon-quote:before { content: '\f063'} /*  */ 193 | .octicon-radio-tower:before { content: '\f030'} /*  */ 194 | .octicon-repo-delete:before, 195 | .octicon-repo:before { content: '\f001'} /*  */ 196 | .octicon-repo-clone:before { content: '\f04c'} /*  */ 197 | .octicon-repo-force-push:before { content: '\f04a'} /*  */ 198 | .octicon-gist-fork:before, 199 | .octicon-repo-forked:before { content: '\f002'} /*  */ 200 | .octicon-repo-pull:before { content: '\f006'} /*  */ 201 | .octicon-repo-push:before { content: '\f005'} /*  */ 202 | .octicon-rocket:before { content: '\f033'} /*  */ 203 | .octicon-rss:before { content: '\f034'} /*  */ 204 | .octicon-ruby:before { content: '\f047'} /*  */ 205 | .octicon-screen-full:before { content: '\f066'} /*  */ 206 | .octicon-screen-normal:before { content: '\f067'} /*  */ 207 | .octicon-search-save:before, 208 | .octicon-search:before { content: '\f02e'} /*  */ 209 | .octicon-server:before { content: '\f097'} /*  */ 210 | .octicon-settings:before { content: '\f07c'} /*  */ 211 | .octicon-log-in:before, 212 | .octicon-sign-in:before { content: '\f036'} /*  */ 213 | .octicon-log-out:before, 214 | .octicon-sign-out:before { content: '\f032'} /*  */ 215 | .octicon-split:before { content: '\f0c6'} /*  */ 216 | .octicon-squirrel:before { content: '\f0b2'} /*  */ 217 | .octicon-star-add:before, 218 | .octicon-star-delete:before, 219 | .octicon-star:before { content: '\f02a'} /*  */ 220 | .octicon-steps:before { content: '\f0c7'} /*  */ 221 | .octicon-stop:before { content: '\f08f'} /*  */ 222 | .octicon-repo-sync:before, 223 | .octicon-sync:before { content: '\f087'} /*  */ 224 | .octicon-tag-remove:before, 225 | .octicon-tag-add:before, 226 | .octicon-tag:before { content: '\f015'} /*  */ 227 | .octicon-telescope:before { content: '\f088'} /*  */ 228 | .octicon-terminal:before { content: '\f0c8'} /*  */ 229 | .octicon-three-bars:before { content: '\f05e'} /*  */ 230 | .octicon-tools:before { content: '\f031'} /*  */ 231 | .octicon-trashcan:before { content: '\f0d0'} /*  */ 232 | .octicon-triangle-down:before { content: '\f05b'} /*  */ 233 | .octicon-triangle-left:before { content: '\f044'} /*  */ 234 | .octicon-triangle-right:before { content: '\f05a'} /*  */ 235 | .octicon-triangle-up:before { content: '\f0aa'} /*  */ 236 | .octicon-unfold:before { content: '\f039'} /*  */ 237 | .octicon-unmute:before { content: '\f0ba'} /*  */ 238 | .octicon-versions:before { content: '\f064'} /*  */ 239 | .octicon-remove-close:before, 240 | .octicon-x:before { content: '\f081'} /*  */ 241 | .octicon-zap:before { content: '\26A1'} /* ⚡ */ 242 | -------------------------------------------------------------------------------- /styles-and-fonts/styles.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Handlee'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: local('Handlee Regular'), local('Handlee-Regular'), url(handlee.woff) format('woff'); 6 | } 7 | html { 8 | width: 100%; 9 | height: 100%; 10 | margin: 0; 11 | padding: 0; 12 | background: #333; 13 | font-family: 'Handlee', helvetica, arial, sans-serif; 14 | } 15 | * { 16 | margin: 0; 17 | padding: 0; 18 | } 19 | #dropzone p { 20 | margin: 0; 21 | padding: 0; 22 | width: 100%; 23 | color: #fff; 24 | font-size: 20px; 25 | text-align: center; 26 | position: absolute; 27 | top: 50%; 28 | left: 50%; 29 | transform: translate(-50%,-50%); 30 | } 31 | output ul { 32 | opacity: 0; 33 | background: #000; 34 | padding: 10px; 35 | margin-top: 10px; 36 | overflow: auto; 37 | transition: 0.5s; 38 | } 39 | output ul.show { 40 | opacity: 1; 41 | } 42 | output ul li { 43 | float: left; 44 | padding: 10px; 45 | color: #ccc; 46 | background: #000; 47 | font-size: 12px; 48 | text-align: center; 49 | list-style: none; 50 | font-family: helvetica, arial, sans-serif; 51 | } 52 | output ul li:first-child { 53 | font-family: Handlee; 54 | font-size: 20px; 55 | float: none; 56 | } 57 | output ul button { 58 | background: #5DA0E3; 59 | border: none; 60 | color: #fff; 61 | padding: 5px; 62 | border-radius: 5px; 63 | margin-left: 10px; 64 | font-family: Handlee; 65 | font-size: 20px; 66 | } 67 | output ul button span { 68 | display: inline; 69 | background: transparent; 70 | padding: 0 0 0 10px; 71 | margin: 0; 72 | border: none; 73 | font-family: Handlee; 74 | font-size: 20px; 75 | } 76 | output span { 77 | display: block; 78 | padding: 5px; 79 | } 80 | output img { 81 | display: block; 82 | } 83 | 84 | @media (max-width: 400px) { 85 | nav, h1, section { 86 | display: none; 87 | } 88 | .dragdrop #dropzone { 89 | position: absolute; 90 | top: 0; 91 | width: 100%; 92 | height: 100%; 93 | background: #369; 94 | font-size: 2rem; 95 | color: #fff; 96 | line-height: 100%; 97 | text-align: center; 98 | display: block; 99 | } 100 | } 101 | @media (min-width: 400px) { 102 | input[type=number] { 103 | background: transparent; 104 | border: none; 105 | font-size: 16px; 106 | text-align: right; 107 | border-bottom: 2px solid #000; 108 | 109 | } 110 | #crop { 111 | margin: 0 10px 0 20px; 112 | } 113 | fieldset { 114 | margin: 5px 10px; 115 | } 116 | input[type=color]{ 117 | margin-top: 5px; 118 | } 119 | form { 120 | padding-top: 10px; 121 | } 122 | .preview { 123 | } 124 | input[type=range]{ 125 | border: 1px solid transparent; 126 | padding-top: 5px; 127 | } 128 | .dragdrop #dropzone { 129 | background: #5DA0E3; 130 | width: 100%; 131 | height: 100%; 132 | } 133 | h1 { 134 | width: 400px; 135 | height: 50px; 136 | line-height: 50px; 137 | position: relative; 138 | left: 50%; 139 | top: 0; 140 | font-weight: normal; 141 | font-size: 24px; 142 | text-align: center; 143 | color: #ffc; 144 | margin-left: -200px; 145 | background: #fc6; 146 | background: #333; 147 | z-index: 2; 148 | } 149 | #mainapp { 150 | z-index: 1; 151 | width: 400px; 152 | height: 400px; 153 | position: relative; 154 | left: 50%; 155 | top: 0px; 156 | margin-left: -200px; 157 | background: #666; 158 | } 159 | nav { 160 | display: block; 161 | position: absolute; 162 | top: 5px; 163 | right: -60px; 164 | width: 50px; 165 | } 166 | nav li { 167 | list-style: none; 168 | } 169 | nav a { 170 | background: transparent; 171 | border: none; 172 | margin: 0; 173 | padding: 0; 174 | width: 50px; 175 | text-align: center; 176 | height: 50px; 177 | color: #fff; 178 | position: relative; 179 | } 180 | nav a.active { 181 | color: #69c; 182 | } 183 | 184 | nav a span { 185 | opacity: 0; 186 | position: absolute; 187 | right: -120px; 188 | width: 120px; 189 | text-align: left; 190 | top: 12px; 191 | transition: 0.5s; 192 | font-size: 12px; 193 | font-family: helvetica, arial, sans-serif; 194 | } 195 | nav a:hover span, nav a:focus span { 196 | opacity: 1; 197 | } 198 | #mainapp section { 199 | position: absolute; 200 | top: -500px; 201 | width: 100%; 202 | height: 100%; 203 | display: block; 204 | transition: 1s; 205 | } 206 | #mainapp section:target { 207 | top: 0; 208 | } 209 | #options canvas { 210 | display: none; 211 | } 212 | input[type="number"] { 213 | width: 5em; 214 | } 215 | #options .demo { 216 | display: none; 217 | } 218 | #previewsize { 219 | text-align: center; 220 | display: block; 221 | margin: 10px 0 0px 0; 222 | } 223 | #options { 224 | background: rgba(156, 215, 125, 1); 225 | } 226 | #help { 227 | background: #E171D9; 228 | color: #333; 229 | } 230 | #help a {color: #000;} 231 | #help p { 232 | margin: 5px 10px; 233 | font-size: 18px; 234 | } 235 | #contact { 236 | background: #EBCD1A; 237 | color: #333; 238 | } 239 | #contact a {color: #000;} 240 | #contact p { 241 | margin: 5px 10px; 242 | font-size: 18px; 243 | } 244 | #options .preview { 245 | display: block; 246 | margin: 0 auto; 247 | } 248 | fieldset { 249 | border: none; 250 | } 251 | legend { 252 | font-size: 0px; 253 | } 254 | .hidden {display: none;} 255 | } 256 | 257 | #options .demo { 258 | display: none; 259 | } 260 | 261 | @font-face { 262 | font-family: 'octicons'; 263 | src: url('octicons.eot?#iefix') format('embedded-opentype'), 264 | url('octicons.woff') format('woff'), 265 | url('octicons.ttf') format('truetype'), 266 | url('octicons.svg#octicons') format('svg'); 267 | font-weight: normal; 268 | font-style: normal; 269 | } 270 | 271 | /* 272 | 273 | .octicon is optimized for 16px. 274 | .mega-octicon is optimized for 32px but can be used larger. 275 | 276 | */ 277 | .octicon { 278 | font: normal normal 16px octicons; 279 | line-height: 1; 280 | display: inline-block; 281 | text-decoration: none; 282 | -webkit-font-smoothing: antialiased; 283 | -moz-osx-font-smoothing: grayscale; 284 | -webkit-user-select: none; 285 | -moz-user-select: none; 286 | -ms-user-select: none; 287 | user-select: none; 288 | } 289 | .mega-octicon { 290 | font: normal normal 32px octicons; 291 | line-height: 1; 292 | display: inline-block; 293 | text-decoration: none; 294 | -webkit-font-smoothing: antialiased; 295 | -moz-osx-font-smoothing: grayscale; 296 | -webkit-user-select: none; 297 | -moz-user-select: none; 298 | -ms-user-select: none; 299 | user-select: none; 300 | } 301 | 302 | .octicon-alert:before { content: '\f02d'} /*  */ 303 | .octicon-alignment-align:before { content: '\f08a'} /*  */ 304 | .octicon-alignment-aligned-to:before { content: '\f08e'} /*  */ 305 | .octicon-alignment-unalign:before { content: '\f08b'} /*  */ 306 | .octicon-arrow-down:before { content: '\f03f'} /*  */ 307 | .octicon-arrow-left:before { content: '\f040'} /*  */ 308 | .octicon-arrow-right:before { content: '\f03e'} /*  */ 309 | .octicon-arrow-small-down:before { content: '\f0a0'} /*  */ 310 | .octicon-arrow-small-left:before { content: '\f0a1'} /*  */ 311 | .octicon-arrow-small-right:before { content: '\f071'} /*  */ 312 | .octicon-arrow-small-up:before { content: '\f09f'} /*  */ 313 | .octicon-arrow-up:before { content: '\f03d'} /*  */ 314 | .octicon-beer:before { content: '\f069'} /*  */ 315 | .octicon-book:before { content: '\f007'} /*  */ 316 | .octicon-bookmark:before { content: '\f07b'} /*  */ 317 | .octicon-briefcase:before { content: '\f0d3'} /*  */ 318 | .octicon-broadcast:before { content: '\f048'} /*  */ 319 | .octicon-browser:before { content: '\f0c5'} /*  */ 320 | .octicon-bug:before { content: '\f091'} /*  */ 321 | .octicon-calendar:before { content: '\f068'} /*  */ 322 | .octicon-check:before { content: '\f03a'} /*  */ 323 | .octicon-checklist:before { content: '\f076'} /*  */ 324 | .octicon-chevron-down:before { content: '\f0a3'} /*  */ 325 | .octicon-chevron-left:before { content: '\f0a4'} /*  */ 326 | .octicon-chevron-right:before { content: '\f078'} /*  */ 327 | .octicon-chevron-up:before { content: '\f0a2'} /*  */ 328 | .octicon-circle-slash:before { content: '\f084'} /*  */ 329 | .octicon-circuit-board:before { content: '\f0d6'} /*  */ 330 | .octicon-clippy:before { content: '\f035'} /*  */ 331 | .octicon-clock:before { content: '\f046'} /*  */ 332 | .octicon-cloud-download:before { content: '\f00b'} /*  */ 333 | .octicon-cloud-upload:before { content: '\f00c'} /*  */ 334 | .octicon-code:before { content: '\f05f'} /*  */ 335 | .octicon-color-mode:before { content: '\f065'} /*  */ 336 | .octicon-comment-add:before, 337 | .octicon-comment:before { content: '\f02b'} /*  */ 338 | .octicon-comment-discussion:before { content: '\f04f'} /*  */ 339 | .octicon-credit-card:before { content: '\f045'} /*  */ 340 | .octicon-dash:before { content: '\f0ca'} /*  */ 341 | .octicon-dashboard:before { content: '\f07d'} /*  */ 342 | .octicon-database:before { content: '\f096'} /*  */ 343 | .octicon-device-camera:before { content: '\f056'} /*  */ 344 | .octicon-device-camera-video:before { content: '\f057'} /*  */ 345 | .octicon-device-desktop:before { content: '\f27c'} /*  */ 346 | .octicon-device-mobile:before { content: '\f038'} /*  */ 347 | .octicon-diff:before { content: '\f04d'} /*  */ 348 | .octicon-diff-added:before { content: '\f06b'} /*  */ 349 | .octicon-diff-ignored:before { content: '\f099'} /*  */ 350 | .octicon-diff-modified:before { content: '\f06d'} /*  */ 351 | .octicon-diff-removed:before { content: '\f06c'} /*  */ 352 | .octicon-diff-renamed:before { content: '\f06e'} /*  */ 353 | .octicon-ellipsis:before { content: '\f09a'} /*  */ 354 | .octicon-eye-unwatch:before, 355 | .octicon-eye-watch:before, 356 | .octicon-eye:before { content: '\f04e'} /*  */ 357 | .octicon-file-binary:before { content: '\f094'} /*  */ 358 | .octicon-file-code:before { content: '\f010'} /*  */ 359 | .octicon-file-directory:before { content: '\f016'} /*  */ 360 | .octicon-file-media:before { content: '\f012'} /*  */ 361 | .octicon-file-pdf:before { content: '\f014'} /*  */ 362 | .octicon-file-submodule:before { content: '\f017'} /*  */ 363 | .octicon-file-symlink-directory:before { content: '\f0b1'} /*  */ 364 | .octicon-file-symlink-file:before { content: '\f0b0'} /*  */ 365 | .octicon-file-text:before { content: '\f011'} /*  */ 366 | .octicon-file-zip:before { content: '\f013'} /*  */ 367 | .octicon-flame:before { content: '\f0d2'} /*  */ 368 | .octicon-fold:before { content: '\f0cc'} /*  */ 369 | .octicon-gear:before { content: '\f02f'} /*  */ 370 | .octicon-gift:before { content: '\f042'} /*  */ 371 | .octicon-gist:before { content: '\f00e'} /*  */ 372 | .octicon-gist-secret:before { content: '\f08c'} /*  */ 373 | .octicon-git-branch-create:before, 374 | .octicon-git-branch-delete:before, 375 | .octicon-git-branch:before { content: '\f020'} /*  */ 376 | .octicon-git-commit:before { content: '\f01f'} /*  */ 377 | .octicon-git-compare:before { content: '\f0ac'} /*  */ 378 | .octicon-git-merge:before { content: '\f023'} /*  */ 379 | .octicon-git-pull-request-abandoned:before, 380 | .octicon-git-pull-request:before { content: '\f009'} /*  */ 381 | .octicon-globe:before { content: '\f0b6'} /*  */ 382 | .octicon-graph:before { content: '\f043'} /*  */ 383 | .octicon-heart:before { content: '\2665'} /* ♥ */ 384 | .octicon-history:before { content: '\f07e'} /*  */ 385 | .octicon-home:before { content: '\f08d'} /*  */ 386 | .octicon-horizontal-rule:before { content: '\f070'} /*  */ 387 | .octicon-hourglass:before { content: '\f09e'} /*  */ 388 | .octicon-hubot:before { content: '\f09d'} /*  */ 389 | .octicon-inbox:before { content: '\f0cf'} /*  */ 390 | .octicon-info:before { content: '\f059'} /*  */ 391 | .octicon-issue-closed:before { content: '\f028'} /*  */ 392 | .octicon-issue-opened:before { content: '\f026'} /*  */ 393 | .octicon-issue-reopened:before { content: '\f027'} /*  */ 394 | .octicon-jersey:before { content: '\f019'} /*  */ 395 | .octicon-jump-down:before { content: '\f072'} /*  */ 396 | .octicon-jump-left:before { content: '\f0a5'} /*  */ 397 | .octicon-jump-right:before { content: '\f0a6'} /*  */ 398 | .octicon-jump-up:before { content: '\f073'} /*  */ 399 | .octicon-key:before { content: '\f049'} /*  */ 400 | .octicon-keyboard:before { content: '\f00d'} /*  */ 401 | .octicon-law:before { content: '\f0d8'} /* */ 402 | .octicon-light-bulb:before { content: '\f000'} /*  */ 403 | .octicon-link:before { content: '\f05c'} /*  */ 404 | .octicon-link-external:before { content: '\f07f'} /*  */ 405 | .octicon-list-ordered:before { content: '\f062'} /*  */ 406 | .octicon-list-unordered:before { content: '\f061'} /*  */ 407 | .octicon-location:before { content: '\f060'} /*  */ 408 | .octicon-gist-private:before, 409 | .octicon-mirror-private:before, 410 | .octicon-git-fork-private:before, 411 | .octicon-lock:before { content: '\f06a'} /*  */ 412 | .octicon-logo-github:before { content: '\f092'} /*  */ 413 | .octicon-mail:before { content: '\f03b'} /*  */ 414 | .octicon-mail-read:before { content: '\f03c'} /*  */ 415 | .octicon-mail-reply:before { content: '\f051'} /*  */ 416 | .octicon-mark-github:before { content: '\f00a'} /*  */ 417 | .octicon-markdown:before { content: '\f0c9'} /*  */ 418 | .octicon-megaphone:before { content: '\f077'} /*  */ 419 | .octicon-mention:before { content: '\f0be'} /*  */ 420 | .octicon-microscope:before { content: '\f089'} /*  */ 421 | .octicon-milestone:before { content: '\f075'} /*  */ 422 | .octicon-mirror-public:before, 423 | .octicon-mirror:before { content: '\f024'} /*  */ 424 | .octicon-mortar-board:before { content: '\f0d7'} /* */ 425 | .octicon-move-down:before { content: '\f0a8'} /*  */ 426 | .octicon-move-left:before { content: '\f074'} /*  */ 427 | .octicon-move-right:before { content: '\f0a9'} /*  */ 428 | .octicon-move-up:before { content: '\f0a7'} /*  */ 429 | .octicon-mute:before { content: '\f080'} /*  */ 430 | .octicon-no-newline:before { content: '\f09c'} /*  */ 431 | .octicon-octoface:before { content: '\f008'} /*  */ 432 | .octicon-organization:before { content: '\f037'} /*  */ 433 | .octicon-package:before { content: '\f0c4'} /*  */ 434 | .octicon-paintcan:before { content: '\f0d1'} /*  */ 435 | .octicon-pencil:before { content: '\f058'} /*  */ 436 | .octicon-person-add:before, 437 | .octicon-person-follow:before, 438 | .octicon-person:before { content: '\f018'} /*  */ 439 | .octicon-pin:before { content: '\f041'} /*  */ 440 | .octicon-playback-fast-forward:before { content: '\f0bd'} /*  */ 441 | .octicon-playback-pause:before { content: '\f0bb'} /*  */ 442 | .octicon-playback-play:before { content: '\f0bf'} /*  */ 443 | .octicon-playback-rewind:before { content: '\f0bc'} /*  */ 444 | .octicon-plug:before { content: '\f0d4'} /*  */ 445 | .octicon-repo-create:before, 446 | .octicon-gist-new:before, 447 | .octicon-file-directory-create:before, 448 | .octicon-file-add:before, 449 | .octicon-plus:before { content: '\f05d'} /*  */ 450 | .octicon-podium:before { content: '\f0af'} /*  */ 451 | .octicon-primitive-dot:before { content: '\f052'} /*  */ 452 | .octicon-primitive-square:before { content: '\f053'} /*  */ 453 | .octicon-pulse:before { content: '\f085'} /*  */ 454 | .octicon-puzzle:before { content: '\f0c0'} /*  */ 455 | .octicon-question:before { content: '\f02c'} /*  */ 456 | .octicon-quote:before { content: '\f063'} /*  */ 457 | .octicon-radio-tower:before { content: '\f030'} /*  */ 458 | .octicon-repo-delete:before, 459 | .octicon-repo:before { content: '\f001'} /*  */ 460 | .octicon-repo-clone:before { content: '\f04c'} /*  */ 461 | .octicon-repo-force-push:before { content: '\f04a'} /*  */ 462 | .octicon-gist-fork:before, 463 | .octicon-repo-forked:before { content: '\f002'} /*  */ 464 | .octicon-repo-pull:before { content: '\f006'} /*  */ 465 | .octicon-repo-push:before { content: '\f005'} /*  */ 466 | .octicon-rocket:before { content: '\f033'} /*  */ 467 | .octicon-rss:before { content: '\f034'} /*  */ 468 | .octicon-ruby:before { content: '\f047'} /*  */ 469 | .octicon-screen-full:before { content: '\f066'} /*  */ 470 | .octicon-screen-normal:before { content: '\f067'} /*  */ 471 | .octicon-search-save:before, 472 | .octicon-search:before { content: '\f02e'} /*  */ 473 | .octicon-server:before { content: '\f097'} /*  */ 474 | .octicon-settings:before { content: '\f07c'} /*  */ 475 | .octicon-log-in:before, 476 | .octicon-sign-in:before { content: '\f036'} /*  */ 477 | .octicon-log-out:before, 478 | .octicon-sign-out:before { content: '\f032'} /*  */ 479 | .octicon-split:before { content: '\f0c6'} /*  */ 480 | .octicon-squirrel:before { content: '\f0b2'} /*  */ 481 | .octicon-star-add:before, 482 | .octicon-star-delete:before, 483 | .octicon-star:before { content: '\f02a'} /*  */ 484 | .octicon-steps:before { content: '\f0c7'} /*  */ 485 | .octicon-stop:before { content: '\f08f'} /*  */ 486 | .octicon-repo-sync:before, 487 | .octicon-sync:before { content: '\f087'} /*  */ 488 | .octicon-tag-remove:before, 489 | .octicon-tag-add:before, 490 | .octicon-tag:before { content: '\f015'} /*  */ 491 | .octicon-telescope:before { content: '\f088'} /*  */ 492 | .octicon-terminal:before { content: '\f0c8'} /*  */ 493 | .octicon-three-bars:before { content: '\f05e'} /*  */ 494 | .octicon-tools:before { content: '\f031'} /*  */ 495 | .octicon-trashcan:before { content: '\f0d0'} /*  */ 496 | .octicon-triangle-down:before { content: '\f05b'} /*  */ 497 | .octicon-triangle-left:before { content: '\f044'} /*  */ 498 | .octicon-triangle-right:before { content: '\f05a'} /*  */ 499 | .octicon-triangle-up:before { content: '\f0aa'} /*  */ 500 | .octicon-unfold:before { content: '\f039'} /*  */ 501 | .octicon-unmute:before { content: '\f0ba'} /*  */ 502 | .octicon-versions:before { content: '\f064'} /*  */ 503 | .octicon-remove-close:before, 504 | .octicon-x:before { content: '\f081'} /*  */ 505 | .octicon-zap:before { content: '\26A1'} /* ⚡ */ 506 | --------------------------------------------------------------------------------