Skip to content

Instantly share code, notes, and snippets.

@chrisdickinson
Created April 24, 2013 05:37
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrisdickinson/86dd7267c05c892dfae2 to your computer and use it in GitHub Desktop.
Save chrisdickinson/86dd7267c05c892dfae2 to your computer and use it in GitHub Desktop.
xúÕ<˝s€∆ïøÎØX3ìàî(Jî,YV,˜ªÓ®múõ⁄gN£AbI¢ àfflfl~Ôkª (ÀioÊnú´Ïæ}˚ˆ}ø∑8<Tfl®$õ¶Q©w·üäT•*£Ôu•™;œã"ôÆìlˆáûZFEi2xö¶TÂ^Ì˛uÅí,)5<è≤;£ \˝wÍUúÍb◊‡ºÎe5ù&7›yY./Õ}6òÕsSöIë,À¡$_zøÀ¢ ÓgÊó4NÚ¨,‡»!CÍ!‘’<ôÃ’≤»ÔìX«∞ºV„»$ÄX^–/Fveí<S˘17jí«Zu£˚(I£1lΩ bM„Ê˝ıÍï&ù›≥€˛�∞Æˇˆˆµ√µZ
]Ny1;,¶¸o¯¸ÙhP~*{j›iBÁö|°a…_÷j¨„2ÅÖéb †‹‰U1ÅC0™FÎPû%ºÛ≤÷ÂflDÆ…ºHLúLÓíÉŸ°jÔ{:”婱å&w—å‡"¥lπp;Äø…¬MÏÏ,Ú∏Jı@ZÊp‚Í“Ò !ô+S'®`–W©.·¸ ˝œ*)¥˙è8_�L`�ú∑∫.ÁE^ÕÊÕµ‰1QU]ï $ãeöL†ï)Å( 5Åˇ_‚Q7æÉS¸˘Ω:ú~Ó”ñËÏKÇÙALT¶Wpv2· a«fiGx®¥$lFpÌÓ £›fiéR}ıp�fièÈ…no¿Øh˜Ô˘ 3 A¬†Æ¶jùWª10 ùF~z‡ì(‰6iæJ◊
x9OSÁ´å–üÂj„ê!Ë$¯Ze˘™ØÆ‘*Ø“8€-P2ÜvaÊ*JJfi«èØ~˛·Í√{¿sxJx√Éøæ˛ÈÕÒ—Ò˘ô}ˆ∆>;9≤èÏìÆõ≤Ô2
fi^˘∞Œwh≈�~_√àìæz⁄Wß}u÷Wœ˙ͺØû˜’˛¬vÔÜfœè·˜1¸}2Ï„TxÛûú¬»Sx{ÜÛ·˜sÑ@”N∆y?èqÍÒÈ˘Œç≈‚S)X¿z≠ˇÜfiø„˙„Ì˛=ı˛ùzˇéÏJqbJªa܉∂˝å7|¬õ<Ü''¯∑?«ç„ÄÁ'∏ÍÒ)Ó˛¡„îggD,ú5<=¡˘G8ۉˬ8¬Ÿg√ßß8Û!�¨„ÛÁDÑq¸ÙÙŸ3ác;5¸Ω˚ª=µávÜ–üŸ√„Û≥Ghèëékx‹Áˇèªl^ƒ$"Dö39ÍsZ˙‹RÁåAù2¥ß ÊÑ!!¿ßåÊ)¿$yÍ[ÌÇBΩ,4(2¯+ê}T\†œ#4'†oÙ.hRà g†&sÑ0Õ ‡#É„Ó5B∫OÚ ÄÙÂUπ¨JúDZE£™∞¡O †2ÖȈ]TëÓ®àU-sX±5%®m¥!h%’<∫áe J/'ik¬<CàFtTs∞fQB:mº.5¨ãM¢åıflaïB*Ue�0ÅZD≥d¬VK´$Æë:T#dV˛1%µà2B÷2µQ∫.tBå€Ï„~PG/™E£WF9÷4_l 0-ÚÖäH¨ÈàbQœÑ¯¢ã
ª◊1’¸äå'3D6%@V†≈ÚŸ"8¯Ø2h°sµ«ß±G+3‹É \ìËÂR ÷͉¯ŸŸ97YÖH3ç£ì_¿éøz˚ÍÍ/Ω>ŒÙå.yÍ\öuÁ«´wo~˙à:놰∆„G∑?^Ω˚˚˚€üfi˝^ ®5‹ŸôVŸDÆ€Sø¬<¥Z‡Á$Qä #&¡f˚fiñ‡ çNß}ûÖ$–†œ·sS®qûfl›iΩ$/�á∏=5bÎ3R¯ú`'ÿ(R¶è~êó ¢âF <—…Ωéyæ:©—™�
‘G8Ÿ"_*iYf&<8ªöÎåÂ∆N◊üÊú˚R ’5‡!7¢‘ ˛õ¸2Y"]BôÁ¿"0bc∞Öb∏31‘÷:#"„"_çéf_up%›±P@†™∑?…ó …Kê(:èÉÒ˘xȪ®/ßÉ^ÉÄ∑`[ÅF™∫#Û©yæRS‡— ÅUQË @FG¸å #‰@›,uyy)4∏>∫Ä8Œ ˘àd¬Ãì©∞CÉé ƒ†≠5ä»Ã∑Ëé–q Ù¿ùÖÉ≥j1J!ÅàÈY±
g≈,™√/4˙j‚Íf†u–=*¥AYcQJÒµŒb´IDË:Ã#î.Ù`f ¯8júÊcú¿/˘e‰m≤ Z∞3G¥)r°{ÜZØDNDo4Ä"37™ãÚ–µQÆí˙qØÊ"Ö≤¡Zó_ˆ‚@“≥Ë>Obpfi3êc¢bmyŒπë∏G2`,¶ód˛p˛™(¢uóeWE• í{iù∆. RIgádZ«∑|ƒó¿M©—Ú¢¡)Í»>wGÌ=¨…Ë=ÑUt‹Ä
|v –Æ“‘D~ M∞¥ˇdñ3
LÕèd@g9Yïdžv…I%Ä˙J Ñ™ÄŇDå∞∆˛ûdep‘8% LŒö∆"C≤5∞q OÜï*¥tÛ$’ –ˆ9p'qa°`cÊt÷͆íê^Äç?¯e‰#Œ؃‹∑o`
ç‘´/fi@"7£ª`,hY-…+ÙŶ†çF”‰4ZX3≤Vg°yÚ Î!ÜÉj§XvÀs@†Ùeh$“µÂ?fiæœDYÔÅ›RÉ<<‰4ö≥,≤[4ôÎ…ù© R“†\◊‰
yfi `Ü—®2UñU?≈#¢ü ÒUÑA;fi™;ƒ¨1†oñQ¡∆›DkwÇg9!(~Õˆ=]≥o√A( D˘`+É4Hkîx¡ì@∞œÇ/es:*“DñÃÑ˙≠bî$îG«û<@∏mHŸìã¿™ÊüïÊ
t<4¢`–pEïõî<]Ld,Úg†&·‘¿¬8{†~\ÉıMçÛ*ãÕ¡Ïπ‰v<¨ ¡åë~üÄP¯Ù˝'Ò:M¬g«…!<çp kˆ^I+ãv[Ç} Ïí•¡pT‹¬
¬d"Èx{ô,a$Xøh2—KGed9c4» A‘®Y«àfl#^;gÙ'=©JR<‰ìç] ÇjrYG@˝jé-z(:”¬!ÜÉíôw¨—˚ŒÈ‹EvÛ¨ªÀ3wAjƒ}∑M… ‡∆¡Øœ=!“{¥úÏ≥Fx»¢.ë„Ä–˘M2ÌÄô∂>—Å}DflUj
ëÆ¢;é‹Ö∂¶v‘`!i†^√ Σ¿MDÆ–≠¡©E5)’üfl# c†‹¥B°–„*ÁıKÂB¸+RQ≈öÅÄ∆#]e–iÇ@v vµ[Yá{¥Å8'I5sD;_Ço'zŒÏ
,≠0FB™0;Ä€πû§⁄S ªË TÀæ˙Û’á›∏fi∞–S&∞Bú◊ü¿0∆üÇdˇÚ}‚W©…˚¢jƒeG˛/∏ufi.eÌâ˙îèı¥ çfiqã…k≠ˇß◊∞∫6∏6Z†a5–2∆©∞∫I´bâ|&ƒE¡°ùè◊ÏÊ/›-=√â”A≥}—©¸vá°≈3hÿéÜÂ`w† º’ölÒ]Z<î,6Ωì
flƒz¯˜Ü&Ù0- ˙j°ªYûª¸˙\+¯´g!Â-[tf∑g{¿=É∑fiŸ»_Ù¶–eUdr"ük;†¢Æc`,ù—!˚™¿y¢∑pa∑J�<ıÌF!Ö/'fiÓ£¥“Ïìı∑œO e:ô7_)õ∏=F…4ü]8flg’øÃz1Œ”˙˜∂µ≈µÆ˛´r}”áꧠJ¸Ûs°/û6µ_õhg!fi”9T¿∞üÿïâ∑x‘ÿTo{íiŸN«©ç‘/i{[–k`Ä~fi]¥∆Yy:û(Ù+ÿ^£ù£“¢ i#∞{ØK &-1j$EXDÿID”õKV%{ëflQ…Ç-∑ıX˙∂¢ê·F¿u#SÏØ∏Uû€•y« %øÒe2«í
?y^*∆*epgED>Ø∏è ∆‰mª·∏<©cè¶fl|Cfi:^L˙vܺL(∞∑o*ÉA´+åæ—‚-Û{^Äi0⁄˘J.§òÇJ†[v˛Uæ«2ç2ƒ¢åò√ˆFb´ßEZÃ\x˺0¢„8_à ˙éºßLΩ˙œ+>”Æ=ÙD˜,òôaÈôu6môÂï°‹ä£"qÉ8]îü§∏}VÍ œ1Q–◊\¡6„Ã�f§0„Öv≥Ø<=…&Q¡;7=à`éΩΩ= ¬^ÄLx‰,8ɛƗXªºÄƒ-Ïç˚.aZˆi°5fx ‡v™∆|Á›ë~KXGB¬∞XHVXÌU¶B«nOà·—<*…Ssj∂ÄÖ†æz~Ùm@\\ ò}
Ü‚≈hËMYá”6©∆Ëã„IÃsE|⁄∂îIŒ:Ì’˙w∞aí†(éŸ7Œ)_8’∏4˙cî3¡∞8‚î^ Ö ™…”äeå4ÅwÏà “⁄ÄrÉ
Ó„uÂ2· ÜÛ’#8+L√ ‚ádr7‚º
svüv+Ä9bû◊–ïu|I"†ÓÎIÄjTRA,/HIqUDŸLs˛¸:⁄I2M&«Ø¨/óÂ+/˙ïc…(ìO L7‚6¿°‰2∂zÒcÙ ≥ÂÍo¸»ÛB†˘K¢£cqä≥j™1pfl∏®xòX?O&U
.aÒLA<VTú~XÕsDB†!&Ö¢i2.0©’Mz¿ås‰o–(píÀ±5˚˛T:2¢¡S≤OzıòåÑπ“ó(äT Êjô±¢ªÁ∏~œÁxœÅGÁ∫ 8ç:r¥˘cQ‰≈»®YîÊE¿e:0«X/fi•¢»ÅC
Âp¢`Zw
gJY"?º˛i†fiÊò,œ@Ê(íµàx’@ñ"�â!»«ˇ�q�´ë!lîjc·5Pd¢∆ëH@]Rߧ\Å∏°ÃLsXrE≤i_ 1â—hº,óO∏d sÄ—˜.?F÷ìEfTeˆ'VïaÎòUȃTÈ2sfV¡„0éÁ(òvV¶;TToùùÑT≤n¨z'ëaLXóÒ ûó∏«ã=%òs–Ë·Gñ¬Sõä‰ãÛ‡,‡éƒ;$$cúib»$bîDpŸ¸∫NÂ^üƒàôΩÃ!ä¿Ï4å(Ùˬ£Î¿{Óª «ƒ’hda»-Áë?flE≠lßz~˛ÄúÚf¨Â u~IZ}s]õÍi[lg€™òã•Eõ´·ãá„,RÀZ3t≠ØÓºÒpeÑ;UóOqjÀcˆ∞à÷3ƒô∂∂≠%C‰ØÕ=ŸDXÀ¶$Èܪêßn}¡—ù‡CC…_h§†˘òv‰c@bƒ”ŒavPFß“˛äè¶˝ùP∑Ì#[fiµ´á∞{Uù°l;,ä¨∫Û∆a—”ÅDY�væ˘í£óÀÕ≤ÉØx·»±˘äw5lŸï∆¥≈«PøëVìÇ Ù=s©6äœ&≈\ÚWh”zWE!ÛûI/õ¯ùá≠ui!cÂ≥,(˛√EßUA˘ˆa™êÏkw\M-•%µ¨Ãú”C‘Í˚TŸ∆£ß…¥˚Ñ0Èπ�ÿœ¢"
öá √ù�J`¯œJWB¿‹€ 3/¥AQ·¬/JX”âŸ* 7ÿ¢Ù˙ψÇ%)é$H£ƒÑl.
]mÁMŒŒ„x≠ñ≈ĵÀŸ¡ø);b¢Û©E ÚY,πZâ÷ÏÜ…` ÆÓ¡ysú\'∫±}ã≥òA%E`ÁÚªQù†…Bi4„¶t϶Q1(°ú≤;!=8
ˆƒÿÇbµZ™aˆÏÿÔË>ÒrÇfl}߉¿iHk∂0<Ô÷»firߧfl≈≥≠«=™OÜ”z∞7Ü©’…¢L
å∫aá≤c8Ætæfi∞å£Îa+auBD}TÍûÅŸDœñ˙0’Ëù@XÜ'v2X±Ë‚Í/^®sı.÷Sfl¬[ı‰îIœ£<±ù^$ewW£sº€'ˇîÂÆåRjw¡Aƒ
*ªÌ €^O˛`%$Rg˜"˝4ôÇ©`ºUÁÌ_ˇ‘A‰
jãRƒâUÜù'—®ÿ—€7WØ?å˙∂•Bk¿ÅKfä'"VãÏLnë�%vOæ/FŸ»Ì‘dÍYÄ}å©b∏ÙN‰¬Û¯Nù◊¥ù∫ïEû㉟-≤¿4N&e≠o6ÊÇdÙ=jXœ¥)p_Ôº◊˙ÍCÍs
nl>p⁄6[rûŒ¥(ŸY™Ñ2'ÿè:göPóñ(fÍ ç≤L«ÏŒR‘¬¥§+} Öõ:§≠@v˝m6Ω’fl∑«oæ!ıjõÎ∏
Æ˛"*√–ø‡”,Áxéw†„∏'«SP@•ÁæKnô∞FÇ5¸ò€ãt©ãV…¸ ª-∂◊m)ÆsøÊé¸ÇâGJk˘Jdh±â≤≤k㶌j¡•àu(-◊fJ^©œΩVÿ_"ÿ£µ‰‘)∆>á~€Œƒ◊ãWT©µK†Ï'u\üTπ^jˇî>jñNLM©cn§¿"ü£gMGú:h?µen uB„ò {∏ß:|Lù ¶6f⁄RÜa¢/>âäX∫1LÈ˙„Q Ödäéú™C«“è‰ û-`vÿmË‘ÌBuàÏ™hª√)W˘.7xß ÊO]^ï¿;H›9h†oˇ}·PôócıÛûΩî%��ú™kâ≤I◊�’!VJaZ�≈VÑ⁄óZ√fiVÜçhzÄ Ćí] &SK•◊?¡‰®åˆ»≥ÿ≤Dì1Òj¶úvkf$¢xFË1®uãd‹nk6ó÷K`;7æpÓB(1≤äd 2»YK *áßz∆©ô.Y‹Ew÷sô§ßa˘∞~sü
Ä+„Ň8Â?}∫≥7&ùÆDÇb„1Í@Äx}6ËÓxø~˚çíˇÒ-=ψB“≤ D#˚~xÌϪjƒæçÓûÅıÇÈÔSÁM
ÿ~>*V]7¬‚-‡0´ófiÂ휷T45Â`ä∞X %&π©ñ TSl–‘ò<¢~ʱVøË"óNy"}øbÄ˝¢¸ €ªUˇZ∆ øUDµÔ¿Û7¨∏{‰úıï%`ˆÜ7Áúÿ9Œ«#’~À—ß∑=rÔpÒ
/Êk={»8µ9{µÃ= ó˚:o`ÉST¥íÉ√Ü£a≠≤|%â8Rb8Çúrƒ]“ Èé$˘`,ÜH9o”V®£B∫÷¿/·oØ+œ^í} ËDAP•Çÿ•ç[%«+“¡Ä]äfi9˜,m©æJUR√©˚’Ó⁄fl\7¶-©”.=kîÄ∞¿X7÷†ì‘¥9BN2<ÆÁ[K0m„a2ÙXö∞9bÍ∫fl±*ô\fl&Á≥‹h1tê=–6Q_Éß5
¨© £=Ô•óA¿c€^µèlª™‹ÌÀ·€ÊzíB >¥ú« úH›∫eΩÀI*XÓihvâ/Ω _`í|d_÷˜æÓéÅe(iv3∑l˘$p0eyãú¥uÁ˛†‰’5’QØ˘ÂÏnnB?õÊÏÔ{#B*I¢ÔÚ“ßlM°Ó˜ ˙B
üB¨á?Ω#-‘bŸ—ÿj :s€√^‡q7|Íi≤êZ®ŸY™U—D\'≤•≈ß±^π¿‰Qô˝&w·°VW "®˙ xn¢…›∆M£`∫±î€k◊QéÎ !Òí\o«ßpù{51ÁZ˚A∆8Ä\Û†h°[&≈-fiø˙Z-˝µ›≤dɱ]fiº…√éce·Y/Ãÿ9∂ÛH¥ø_ œîq~KÊ≤ª]å–∫A∞Åyıg_Ù6é∑&9Ä{ˆ≈≈N∂/ˆÏ´U÷≥m¿{ƒ√≥MÕUüÓÊy·E2NJn€C˜—K?€∆['`-π`;]gÒmJmPè[h€*√·Ô]¶uT3rerÌá´æÙÌˇæoÔo„Ë*v¨ÀÒ<dÈ8Ó£ppïRôÍ�b ódëWÌ¥xy˘à›#A—N‘NÿtfiøÆQ7 =
7¨√P˜¢\sùÚµπ`/Q ‘sOÎV¬«ìöJΩ÷yuï;ò8†ÀÜû{’Î4fi ´à√ï\‘ NO€É∂í
Ø–p™ø‚¯h˛óÙõ?(à±ñ´ÕêYûµÏÒÖè›$ªá¯?ñUI™óÚ]jI÷`Óx±¶
∂ïMtflv$I”fií§»∆êú2s]◊í”›§îwùeë`Ci«ª÷kÅÌ^Èó¡ s…WéBüzˆS‚O8Ón} ˇû√‹J,õáÉ!F “ÿºw˝ó!˙Ì,ppÈBØ`.<~∫ŒècJQ◊tÕ¡fi<œzãY«œC\37Mí=ò‘z¡éπŒ«9wÏ–í}`Âû{í∏c
ÂñÀ;ú∑Yü Ë’D¥m\€≥M`ãõı‚È®fWçÒVcâW]͇÷VÉSÒ=ô^]†JuÍ"MF‘« <∞qW”vúR“`C˝Óÿ¯fl%Á99 π§.©~ÔÆ$ñ
±u\r;Û®à�bä$åî≤À»}±Ö“@GdÍ¥U∂ô°‰O¯ÿ§?gp£8&ÿç/fÍpÇ(*ວ~H[4hW|õ©vËÁküÌo6ùü/
±µMñƒÁMΩÏUÉ∞1ÅŒ$RäΩmRz‹§)
ã”»ÃÂrs˚fiºeïX6Éífl°“- è–Ì[ƒ9&qˆâflJ¡≥:çqÅiì‰}Í°C∂*‚'Ó}¥ùºfi°[∫ wÊêpJ
å[-®èöø]¬@:‹¡Ne! à eeô∫ÃM¬&ûT¨Kø/9WêSÒmUô ™´[Œ+É)X[Y >SÅã–9` V ¨=á‚ᛉJ¢dÈ≈p–(íØ˲,è-≥i¥‰kˇºÓ¡’VP—‘Ëgı≠͡˜ªËIı≥˙é~`å‘Y≠†È\Ø∑∆P ÷(±Fñ˝t¿´wo‘ä˙¢«®›fQâ©KIôz\≥85TZÕ>u(ç:Í=fiƒƒæ˙∏pÀ<ëFuà‚¡F†�ßÔG û—Á?تfiM∫≈˛˚wπȵà∆øÕ›k¯ú~ÃÒˇ'
˛ãı’�€œºi}˝?v8ÔJ ö.G=ï≤/7.≥ÄPâoGHwQËû.`S~i≠ … ~ ƒf€Ωã¶Z¥i[6&·hæ˜ñó¬z”q≥F%ÛéõùKçyGÕ:ïõáı)w«Ú∑fljDº√G´tÁåQû8$ƒÖ⁄›ø∂Î÷Ï›ÜÓŸ–6e=`ÏΩRà⁄¥MVy®Uñ∑Î˙√+º˜g{7˝&Q)èeÃ∞◊Ûø¿·nâ6/∑>ÿ¨ÿa·Îÿ.PØ®√∫m®7lÂû€Üláæ_∏Û@+ê»∏käµø7˙∂1≤Æœ€:~)ÓÒʪ‡è6!ö§!~á›JScÜœ⁄;˙͘
øD  ]Ô◊oû$Ù‘Àó/˝œ‹ĶEà OØ5nB˙ÿ2Ö€åˆ}p-Æ{ûè;»ÚÌ8¯¿{7[ïd�·“«¡{->¸˙≈ €©ºïê†1Ü>m…√Ê´68≠—°KûwÛäN«,∏~exıRh7Õ¿Ñrßã«™ÿΩ¬<#›¥kßÌ÷‰ß˙EÕ¢M¬ôAï—ó∫vÇ∏Oj [ÍS©Ù¬^ïq˘ò wkù3ü7Ÿ‘={M!sÕ˘/’∞ë4†Ømü≠ÂLÍΩE\6˜¿;p%È'¯ Õ◊Pêˇ˜*≤UInQì€˘;†˝Â[‘K$.ù«x‘˜NÙf3:Uúç´õyé•9ˆ  fC~DÂ[iÿØ≥º∞E±¶ÅA@ÌÕ˛ÉÁ˝…7¨*Ò/ÓX˜\nkI#®—≈=fi°≠¡é®ŸΩû“©˚≠Ÿ“…r©„ÅQÖ}Åü2¡ÔÓ“g ±’"ñ+|∂‘7JËcK∞‹Bge=w¨S¸N6W 5Çd6√ˆg0?˛á?\+`Ø√’ÛÁ9HÑ%Ï�øflAü∏!”`øS·Ì“æZ”g‡h].8æfi±ü<√Afl…ØœÚø˚˚xJû®π£È˙?¡W¬ï@flÒı|≠Áæú
ı‹7i({m®¥Ìᇒá>∏‹|Â¥IÄ(D?›!‚ÈÛ∆BÇp„ÇÖ'‹’ÿî ˙ÑC°OA±å';r?Ö"î ÚÍB°o£…§Z¥û°|íb≥ZÇÿ˚Qê=ö‡∏—§k˙  ^eÖ1‚¯◊µŸ/”hÇa]9¨'Úµ¿%&btØÿ√œ«DîqrwõÊ-{§ç讑|EŸ±}kR∑ÒcM™Î˙O—‹X™Èˆ˘K,∆h4æÒ‚ÒM
ì)FH‚Q› ÄBÃ㔶/)ü
úB•§µçt¬f ’•∂n]ífµüEÑç\G°õ(°R„≠≠„ì‡37ıÉ{$dƒ¯ykô¯Àfl[Ùà'fÃ3£€æ™„öı<û¸l;Jj„Á“>%ìäˇ~ïïÁí8ó ·ˆ‘ z>W⁄âı-ôm'ø„;∑:‹Û˛~” ≥
’Ó¶1u‘ S˛W˝qQLîZ°o|Â≤=é≠3˜u¿˚xO◊˝ΩØhƒ∑ÍÏÙÙx„õ>]˜˜æm˙É%#R;\:Ωè“fTˆ›ÂFܧ%JÁêøÜ⁄Ω7Ωñ|†◊CåØÏRg{˚Å7ê„ ˙Ö
C82A.¢[≤å≠ı–æá7/1ˆ%[í≠√Å◊âç∑ÜÜ4˙Jín%jΩ£Gêıیɑ% 1q?{∆
z¢iÛBVVhÓì=òN_/¸'îQ>÷éÚ@Öflflë/Ë÷´óœ˙2ñl™∑Ä –Ä 8¯ lOñá©tfiÏ0‘wcøW.q>|˙î⁄ 8gøe[$€Ã>»Á◊òÊU3˚˘ñŸÁGèô˝¨}∂˚ ¸◊‡_ó‹]ëfiïÁ¿fiÉsÌãèY˜tc›‡*;/|fl^îØÓ≥S—˙ÉUˆØê…Î5$‡-ëÅEv|Ô5d·ê©e.T͵ â„s§àte}OÇyIfl )“:pò⁄„ˆ˘A íõ4›ÄÂS¯∆z?Lr8˙Ëܨ≤€|Û
Ó]ÓN◊õ~as4©Nd–Op¶7˜l›û‡ó®‰åÈùõÑÙ∆<*Skß-(—4næ°…ˆ7÷âZÒ˙Á@ Ÿªqâ¥ëw≤HÁ%H5∫≠˚4˘ºÛø(Ï˚
var inflate = require('inflate')
, domnode = require('domnode-dom')
, through = require('through')
var xhr = new XMLHttpRequest
, output = document.createElement('pre')
, stdout = through(_stdout)
, stdin = through()
document.body.appendChild(output)
stdin.pipe(inflate()).pipe(stdout)
xhr.open('GET', '/index.js.z')
xhr.responseType = 'arraybuffer'
xhr.onreadystatechange = function() {
if(xhr.readyState != 4) return
start(xhr.response)
}
xhr.send(null)
function _stdout(buf) {
output.appendChild(document.createTextNode(buf+''))
}
// chunk up the arraybuffer
//
function start(binary) {
var offset = 0
, chunksize = 2048 // <-- capriciously chosen
, self = this
, next
// turn ourselves into typed data.
binary = new Uint8Array(binary)
iter()
function iter() {
next = Math.min(binary.length, offset + chunksize)
stdin.write(
new Buffer(binary.subarray(offset, next))
)
offset = next
if(offset === binary.length) {
return
}
process.nextTick(iter)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment