pax_global_header00006660000000000000000000000064141333253640014516gustar00rootroot0000000000000052 comment=e3009f5757abeb0b5b6233045f3bbdaf86435d08 vlq-2.0.4/000077500000000000000000000000001413332536400123235ustar00rootroot00000000000000vlq-2.0.4/.gitignore000066400000000000000000000000501413332536400143060ustar00rootroot00000000000000.DS_Store tmp* node_modules /dist /typesvlq-2.0.4/.prettierignore000066400000000000000000000000041413332536400153600ustar00rootroot00000000000000*.mdvlq-2.0.4/.prettierrc000066400000000000000000000001051413332536400145030ustar00rootroot00000000000000{ "useTabs": true, "singleQuote": true, "trailingComma": "none" } vlq-2.0.4/.vscode/000077500000000000000000000000001413332536400136645ustar00rootroot00000000000000vlq-2.0.4/.vscode/settings.json000066400000000000000000000000511413332536400164130ustar00rootroot00000000000000{ "prettier.disableLanguages": ["md"] } vlq-2.0.4/CHANGELOG.md000066400000000000000000000014251413332536400141360ustar00rootroot00000000000000# changelog ## 2.0.3-4 - Fix package entry points ## 2.0.2 - Package admin ## 2.0.1 - Fix build ## 2.0.0 - Convert package to ESM, add `pkg.exports` ([#16](https://github.com/Rich-Harris/vlq/pull/16)) ## 1.0.1 - Handle overflow cases ([#9](https://github.com/Rich-Harris/vlq/pull/9)) ## 1.0.0 - Rewrite in TypeScript, include definitions in package ([#6](https://github.com/Rich-Harris/vlq/pull/6)) ## 0.2.3 - Add LICENSE to npm package ## 0.2.2 - Expose `pkg.module`, not `jsnext:main` ## 0.2.1 - Performance boost - vlq no longer checks that you've passed a number or an array into `vlq.encode()`, making it significantly faster ## 0.2.0 - Author as ES6 module, accessible to ES6-aware systems via the `jsnext:main` field in `package.json` ## 0.1.0 - First release vlq-2.0.4/LICENSE000066400000000000000000000021371413332536400133330ustar00rootroot00000000000000Copyright (c) 2017-2021 [these people](https://github.com/Rich-Harris/vlq/graphs/contributors) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. vlq-2.0.4/README.md000066400000000000000000000032771413332536400136130ustar00rootroot00000000000000# vlq.js Convert integers to a Base64-encoded VLQ string, and vice versa. No dependencies, works in node.js or browsers, supports AMD. ## Why would you want to do that? Sourcemaps are the most likely use case. Mappings from original source to generated content are encoded as a sequence of VLQ strings. ## What is a VLQ string? A [variable-length quantity](http://en.wikipedia.org/wiki/Variable-length_quantity) is a compact way of encoding large integers in text (i.e. in situations where you can't transmit raw binary data). An integer represented as digits will always take up more space than the equivalent VLQ representation: | Integer | VLQ | | :------------------ | :--------- | | 0 | A | | 1 | C | | -1 | D | | 123 | 2H | | 123456789 | qxmvrH | ## Installation ```bash npm install vlq ``` ## Usage ### Encoding `vlq.encode` accepts an integer, or an array of integers, and returns a string: ```js vlq.encode(123); // '2H'; vlq.encode([123, 456, 789]); // '2HwcqxB' ``` ### Decoding `vlq.decode` accepts a string and always returns an array: ```js vlq.decode('2H'); // [123] vlq.decode('2HwcqxB'); // [123, 456, 789] ``` ## Limitations Since JavaScript bitwise operators work on 32 bit integers, the maximum value this library can handle is 2^30 - 1, or 1073741823. ## Using vlq.js with sourcemaps [See here for an example of using vlq.js with sourcemaps.](https://github.com/Rich-Harris/vlq/tree/master/sourcemaps) ## Credits Adapted from [murzwin.com/base64vlq.html](http://murzwin.com/base64vlq.html) by Alexander Pavlov. ## License [MIT](LICENSE). vlq-2.0.4/package-lock.json000066400000000000000000000043531413332536400155440ustar00rootroot00000000000000{ "name": "vlq", "version": "1.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "version": "1.0.1", "license": "MIT", "devDependencies": { "rollup": "^2.58.0", "typescript": "^4.4.4" } }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "optional": true, "os": [ "darwin" ], "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/rollup": { "version": "2.58.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" }, "engines": { "node": ">=10.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "node_modules/typescript": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { "node": ">=4.2.0" } } }, "dependencies": { "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, "rollup": { "version": "2.58.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", "dev": true, "requires": { "fsevents": "~2.3.2" } }, "typescript": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true } } } vlq-2.0.4/package.json000066400000000000000000000014261413332536400146140ustar00rootroot00000000000000{ "name": "vlq", "description": "Generate, and decode, base64 VLQ mappings for source maps and other uses", "author": "Rich Harris", "repository": "https://github.com/Rich-Harris/vlq", "license": "MIT", "version": "2.0.4", "type": "module", "exports": { "./package.json": "./package.json", ".": { "import": "./src/index.js", "require": "./dist/index.cjs" } }, "main": "dist/index.cjs", "module": "src/index.js", "types": "types/index.d.ts", "files": [ "src", "dist", "types" ], "devDependencies": { "rollup": "^2.58.0", "typescript": "^4.4.4" }, "scripts": { "build": "rm -rf dist && rollup -c && tsc", "test": "node test", "prepublishOnly": "npm test && npm run build" }, "keywords": [ "sourcemap", "sourcemaps", "base64", "vlq" ] } vlq-2.0.4/rollup.config.js000066400000000000000000000001631413332536400154420ustar00rootroot00000000000000export default { input: 'src/index.js', output: { file: 'dist/index.cjs', format: 'umd', name: 'vlq' } }; vlq-2.0.4/sourcemaps/000077500000000000000000000000001413332536400145045ustar00rootroot00000000000000vlq-2.0.4/sourcemaps/Chrome.png000066400000000000000000002371071413332536400164410ustar00rootroot00000000000000PNG  IHDRc% pHYs%%IR$ ,iCCPPhotoshop ICC profilexڭWwTTݷ e:RDUzC, 3 eTƐƂKD"FF@bADn,5((1X}o;}gsgun˓HI @,GsSҹ{PhB <~$(..y}\qI$@X8b~@D*,f$2 @G0>NMKt2%ib|<4eGI,j\0Pmt9eĊ^JbI>oק _>\ ;G@ 6F`~qXZqD$yd_@ ^ xRE4[󤀂OdQCq0~HOQsrQq8,a% JsS>Q$l-Kʽ\2i#',ixC &ITR1ah.*' r$!~$?.fG0% ùeġ9Ssy'Y\␟AB\d6;t',' {̑'2R%o3_2糖Tu:KS("{Z<# sz>!RQ Ȅ3eR(%eȸAI%uqrvRҹWK=sf ?c< #@g^ėKK @:0 ,` GD& H4H1se l6O8 y\5F'}x XM@^?FDAdbBN!&*Jb%~&'DqO/$EIҘ&Ǒ^dM&Sl,%ud 'Okd'@RzHyQ!T,NeQRjUNUQ5^jPT/f4v}H:EGb1 F#͘(cT1v01N11LӆɌd1sKCf?2`9X,K*cgag]fu***(++)U)V:tYҀr@yrMT4UlTTUrUS٫rJKUUUsUoɪ"TQŶgef-K555k@t52Zjr9c9Qg>SϹyn>MTJE^ e k k ay+  ҆ gn6*^Y-Z,,M-'ZαJ*jUkommlJmlت^cymdOڻW_t <D:0xsÑXXxؘ6}6r\}rrwwtYy"&..|jj]]9 6tv{GO^OK ύ7t⼖zfx{>Gs/_G<ݾm o܏կӟgY/&AE pG ܠ=Aς߄ iB#BCô’6 7 pɈ\y#8U7s bc1Mɉ&xg$XFŮgWdՓ;ωoKN;ubpIId)ɵoRBS*S:SǥM=f&JkLg'H*5_uMqR6T3f8-yf02R2vg|jxQ3!@jAOX)|U՝헽*'' *W" z%M^lμ}JZv>sWOJg~+ }}]ϥ_,}ir+W-q^xSw^ާ<0úv>E3X08(Iy  ڗb=P|X<@  X-@@#)ruQhKc|lnE]P? ܹ j͕&8iTXtXML:com.adobe.xmp 2014-09-28T15:04:07-04:00 2014-09-28T15:39:19-04:00 2014-09-28T15:39:19-04:00 Adobe Photoshop CC 2014 (Macintosh) image/png 3 Display xmp.iid:ad626d1e-8b40-4c5b-aa76-05685967f11e xmp.did:ad626d1e-8b40-4c5b-aa76-05685967f11e xmp.did:ad626d1e-8b40-4c5b-aa76-05685967f11e saved xmp.iid:ad626d1e-8b40-4c5b-aa76-05685967f11e 2014-09-28T15:39:19-04:00 Adobe Photoshop CC 2014 (Macintosh) / 1 1440000/10000 1440000/10000 2 65535 503 355 wC cHRMmusdph0>IDATx]uӮ[߽ݻ==H@p !H I Xp?}}wv?$7ÓTt]]]]߼I` #  1@BcL#1 !H# $@0H ,!$$   a$ƒ0 a $HB0& B0`, {1F# X)UST?Q5@DB 0@"X0$! KX" D $b1La0H# I IA #H„@B@r"H0 D$1 @cI> AKTMR5j~緓&0G2&$P@BH"#@€K({oc€% @ ƀ1 cB€AH1Af] c%LBc 1I %)USTMڿj$[KH"E\$ %@,!@HA0I0#DF1!@ b $0bHJy$a@B1J>A 8k#0 cH$0’R5jJՔ0 9%/P F0Yo!YGXD$@I˓@ a aD$5@Bc#rtBBc@cI` H,0B $#(ARd+A1€)USTP5,e-!$0&% $5lVRH$MX"c} F1L~V^? ׯ߿Zv:~M&#FA~1AfI $$ .IқK0ܿ 6ie)ɓ' M4Zocju!piC(-). $$QZ? X}oHVkj-37HϩuzeyxA8Q ҟ3sJ6oR8D UaV>'Nh 03Kp[P|HHHJJʺu{ vǏz;wסC՚*8Z/PT=z ib9sСC>|5mڴjժ<ϿL$q5vX;wn׫h222.\q!!`yEQzUϥhUŲ68ZE C8G\.IL;(5E8c *a pck@ʬ͚!t{^(y1ƒf 4f 0w./O8r"i>T1j' Qg=a(H+MrMJ Ha5$C7%hMKh4/>t{-b!㸃n۶ŋÆ t@:ӧl*)lyY^DQn5o@|!<ID4 Kl55'#,a&huP", y:i=y҆;@(m $#hxy.T>=!)&"&q**5%@ ʓEmDsfһ>KH(C!9dJt>w{JRf"q;u;σ#+ i4(z]sBhE剂p ` Ÿ[!^NHKsY LٳgWX}SNׯ_JJ(Faq~ѩ2y#$(,"A"9T=)ʲl֭oݺ`2x[j^OPBVkull6ϟ??((9Z3f̛˦w(Q"{Y6d2$QH:tt0SNbtiNâ(yФIw:jժ,XcK@WRMmZ6xHtAשQBS9bqpinXTx*9~% Ӥ-sxTDMj֩Zj6r}1Xt5zb\= ]8o?ӡkbNjTXq4, }LDjAz BCC,F*5kZj-U3oϧ64p3'ƒKo? /X,!,o ~pmuj׮YoGDY,uΞ?wvE5IwV1׺eoąXL9_ŧ@$@rJl߳ov|f[O߭iۦ]m:uz;Ç rvd ;|y~ԙpN:voްb^ZlղD/S$o4o֦m믿j̱1uusJz -9qEKThݺUj5) Dfm7lڲE 1D\hgK|1H u?>qŌ (Ժk)s)"ܶ:իTQk-6KI֨1b,+O.\@&xnү_%6o+;TlmٓخN}'GEގqp×Vpنc\6^Bi {Nl}{WTNXa1j_8`k׮UXqٲelFˆEv/Rg#ׁa`XC5a`ls>$3<-P8 x@E{"E(+o2~N3t:3FG&O|AjZ<8yGƷPѣ ԨQs [F ͛c|*U0 '@7N:~7lKie721hG~0탁S4:h)|uᯭW:`^ b:cJĞh8Mɏv0ktku:fm?`lr5aG:9 4,Qg >{ͮ.Qf+ Ĉ F wn9obQ76Q~uizqf6[ž dVqUVjj3?xB0NWI={&Az&juƟ|;qe\Y*CrȬ^ޟ*.$sk2vX=D-߶EqW"8<]?8׳Ùu%W[=jA[=0%,ܐdR9f:W ~Ic?]TmQa=sҺGuWnBD ,>;E$Ix=TpJwq"J3zcS|4z ^ܷRsԠn=WMUo0\ea%vX7~]q'Gy9a0N7Acn٠@7^XDy@ʍm.3*Tm7s|Wښ5+{׫S7ǭ{z 1htTb2^7| 距'ΊczGF;6xd+YKe ִiWPaȐ!s=}KYY^@~Qm$a<}1 jDy!ǿ7tǎk.rݭZZxŋ[jve Ǿ}b Ad2~+߄ nwR6mzÇ>|xM6-U,[sE ǽi?(P@^} %̮e>8f݇.AA7K=rM3π;kE"A?΍뾜 ;]3W#ߕ^}=rcӠhK@`fneǦukwcWbqj۶nȥo0Tl}WHNJHMϚQfB䲙_YɄ1: }檓5;_J-k 3* 'N/>,ܸ𧅓n'hD3'ϘZm߹j^tsZ|IgJv92,!㗛6Syz2)L-Y4.spa#&ضƒm?M&Y˸\^-Y9Hwn[qde[q>^a{4UjثO׏k;UAC0j5eߺ¡LJ]egےE(U4 1@}º5;.O^]aKš~E >Ȳ&5zD [-"u*4Mpeݚ=eXp3/ه(kykDMJ>7\ǐ=ic#FZn-]ۻ,P* Hb;,lu<dni*5=&,=;Vɓ''::zƌCVmDωo6!&ư890((9074ÇO8qyhttt=aG2gddܺuѣ@M\Yh49'<J裏tbŊ+Vt壏>RT/] ~ ?!L2Ғ)u;6/bqٽXE._P^j -OvȡAQT I(~4EU)V &Ɠ4?@M>Mt`OѠ|&}F5\EZ4IsbyLzFIVӅG=#>}:t*">L0bjD$AA7pq^G$E  Ѥ%~=]&wt||b0Lo$ zSɠsz}L \xcZs;٭#wZBmQ Iy* Z֐hCPOd!SqHz7M}Pg2#=qk7zo˚?[t%q10˘(v  pGYkObZ#8i6 1HIdw'`}-HUvm:^3P4=gU"q9?.K'{dI嬎 m?|Ԧ?y~&!d0ٳ`O>fѣ[n={LKK\*1ܰu7,]aa7 g%ǽ.~lw˞x UQj,Dhe;+pa367~Nӫs;~&$͇ >\6kD˖ -5Ridd _5<BAt{:~yvi~x4kZC9ֵnd-) xVy|Lۯopj_̴L\).$B}>8}xrM@1@^t@sVF\0cܡCgHLHa",{;jjյk8p[)ިt|}DT+:W'9vy9HF~f͚եK/I`8p#FqNUV-8p EQ˛Nn;_| uyt…˗7lذ{ݻwoذ/\`2' ?x9֭gϞ]v3flj RT*U&ILW 1]>k<ۘ' Q5ؼY.oˍ F1$X3s[IR]tI*ۿɷH lؠh1汒1M:]8 0D~`\*?}S} VnX\ٹW :STP>Iӡ3G]b"IbG}-}\s'XY/?f+}ըXaɞ}mڲЦJ%B1ѬZ)l؆ECGL)}Qşh c9 ;S뮲U۶o7Wk5͚jJ%k!Dr˾ڰan0LU]ԻO&4_5SnS8 i?uيzV׫_G^ JFg6D slv VDm [tEc𼏻<8жz߮ZJ՛;'5PT9Mc5YtAAIX0A- 10&pP5 F!p6 bv_8c=Q{{[QvyK5 12Z8 ,V[{#>"=}{1K׫$s|f^\Fs c13=\ӡS6! $ҙ1BabcϿpN&?|b>SįyBF ݻby *HsăTjZ)!с֟&=gLj]Cԫ^ˍ<'$$|Nl6|>V"{Ȉ0 A[lɓ'O"9Hd6b'Oׯ?vW5Mbb .;E$tQFEDD/9}^ngƜW5*-Hqh"#tF! $p,+JZ~F!f M{~чGDT4𳒤Uk ը 6ܺp{s/h'NO *QDLyZE`DDtYkMu+ls; ek h`$s|II`}҄ۂ\{aP'3I~ը1Dk4%H~ Q4M{'NX,ȬƊEP.{ZbrG Y̭W3=lx%NJbTݽu'ʕNPQ?+IXESpy<U3٤yr5Ym$E~oRR' Ҋ)y+!!!33VZ/ #x?V%$IZCS$ 4Z ~30AhjчZw]KȗQ4HWJj"~Fbq{̉$1Z(I~x8,YKZ 4Z-I`Q )OdCQ덋 HTb,:>1McV+GjT@XyB`qӴ<ƿ E^TR!!!4M~EQ>[,ׯcԨQ鯶dhZ>j(Z7 ,GIjJs/$I*J~y5|QaP 8.,,tN4iΝݻw>}{Jӥ0e٠ r$vaVXKc HAOQ.Di jv0ޠQ3K\u{|T^$Fש%H4r$@f(,IOt f:r\I1 n'hAE |f $Zժ(-bAz>@ $ AFDr\nNo`(2@a HP͋` HnH`0p{X@h EQ~ٳ%,,颓HZQ$I เcf:-BH9+[#iƠHWHPiZxR^YViZ`, 0&)`$Qy^jBq@!*Uh4$Ij^C.[9e0^ jAE#@zx 6$Iy=lϾ^8AO H7ЄtyՄ(INo d%#`0H6c -bL3jNq FsYN Ae(OAI.JE`bqV7#sHo&0_x޽{6lG\ƍEn-KVh<|-˛L&9ZVZ|S0o/m6->>~7._39;|{GFF#IRRYҥKlRvfd իWFcv™wJBYIMMu\KVJ' $ӵ/=FB·xhe}]vGu)^ bccmۆIbߤqJ$I&iʔ)+W/o,/}31e"ŭ^k!˩@(^~w JOKX^]Ѱaÿ-B"Nxɞ:ej./Gwܥwű@R$zc1Rx"@*&}jIu9. {4M1j [?L%h6iݾٳwcyx2;B`љ}c`٩AZVBBBBCCCCCVkHHHTTT\BCCCBBZs}Wң7ys2.X6⮟ZdU_уukt@L4aDW}wTa KEo~G*U-'=Wb4&Vڴ 7kO[j֤nI@Q C3DL^ &cElo]>Æ ϫ3pH6j|>ΠW&in~єvIk,x%RK"dwxA=2Y26o޲e˸qgܹ;w.ZB 'ߙ~Ov}j ffݨ݀Lۜ"'vݴe].Z/EkhG4uV}w 3ny|6(ب!_!hHӔ/7jΗı\P|[8NNud[򢘧PI? Rzc2/vjlhwǑٻ} OW ny#`}xH=rZC޲'/6<#˧?E0" 8w'QN0UKMKmuzȞˉ~U aV~i 1<>D[6o1|$_n^{u}o7fOհmQ}>`]N)$&J|r[>"Dz\ƎV.:āIcצͻE]xdZ7m~wmsd6: 3l]ՖoЄv {5?Qqo}GtiQt3338{B 1 <6Xd}\ݱ=LGb. 6jj*y_f]]4cO7naisD/ٹlI)_8x:}A*'~~ |ܷs&z[&lY 'ws7X3&੍}k]r$-6ݻNl3 >Ul 3>{Fhs7j_FҶ9L7v.J3PoƄIgD6oDC'ة$+=}@pZ}Ç^߻wo1MN+EdSa;#Mjd.Py&|ڪD@fϿx?w͙Q:;wG뾿ULe 7ڶ䰂jVaH}+'eP{ - DTiעYQ&C'oxNHi.דa7صeq4oL |vǰ B&NtVXaVk)Ětx5wiY糱8R\8G1)S^#DGX-!:@HꌢaC{vnI@iaFͷ/߰F VGW/ cɎe q)׫RL;kz!s4%Púk$G[FSH}L /]c5Ž*{f_ʚYB/wHt(VK:c4ͣkFtOUj6C>E-l|Acݚ\F1͇um NXUe BlaKh1EflײGʥ ,??$Ia<8k,Bx䮳*:bܺ7w>~UuB|nF#tP ҮٶOZY.tI3gH0o꧿Iz\vӳV[;.~_q $u:yٮ.Q0'a@ëtB"ӧλz[ 4)^ MI&\p5oQ{c3jГ6 4$ Z(7g-wmOv]5e`|͛wՁ@`ʔ)SL WΛ7.o^mxsvl"EU4bФ6_ bֳɓ'XA&J|o[sT3s+}դxxI]MSMs>胁Wq3>$ Ο 5ܳvȜU;Ax1@U2Di@cpXq u NWqm=եAm]9\:tҙ2E i<]NXpȈ![M_~lR33|+9!jm %mXU=i-|wКzaϑFv1~ܥ޶ j1Wϝv]a-]pZC`D_UL 59ʑE@ ЪUo611Qӽ_ NMHԨM3ھ÷n߃V%,X^~}{e,m Zrƒ Mԏܦwڵ ]KU:^y7?]f4{a(EZ%3V<ˉCvaguV_ssSx`-vn3ܾ{2fP2d k^$|K2!Λm&`WMˎeuްeyLҽ{wذaCTTB+%=]˻M\ !_Ȣ% S ' $ Yuٝ6^w7$OF~+uC?CVۏXYA]xgl.̢_gs&'xRIO$M~M(]x AtZ5GHi f o/4*1gn;uE,Qf Iў΋JI^Ze.mD>;d-0j/)@jZzf|^OJKE}N'$!W`KJ@SnL|^ S|qދF~I9~"Ū9󦯦߻똅>S) t)ߪ yGC%\rre*T&GHP-o;d@ |"w@G#>lSJ6x 埍Fi۶̙3+UleOZ{#Cjߨd:PK g\E+^?NP7.uٟv,XŘn /^:y]d< xWvLF#ɉ kΞ$LnYAe0~vʔL[9lI"Ure%%U7SL>_Tە=8r*a7۾H0EbMpAi (&)x#5Z3 @l+7m\ҫ19S I$HaЙB0BHN6o|'LΕ){zl# 3EyB`.txxQvI(ԔjK~UO>Ыϔqc8(?*`pz_L$Y-AӥxsکZJ/xpErygxn'ʲH=EF=/HIQL*!UyNG.Sx/77d}gCkBմ~z`Z_}6Շ[.'D_mQ]6wr;O>6uѝؔԽ;WO[}͹'c5KG ^ ~n @HN~ 6M|vDuyr=OLKOuyKYx1m*䍏2ǛwcwX ^PVWZ/Y(ի"Nxtn=zdA5q i4/~gr,pI&ڣqDJU̟r_t^rm)'}5#~h5?n<~}%+\. x5O0Í\hԮ7ӥnd3.ݺɽ$IZ`bX, ,$)))ILOzxq7d`ʻcd :};Ïw P~lؿ`XdVvf!WZd YJ.>7܂To\GV% !jIКs_dgK9Y+pԃ~FjL->NL-]HO u}I2l\IʇXCjc30=::{zbӖ]]0]m_&]UT^o4Ya1tư\6N K#Mrwn^6Ukk~- JX{ؘA-!JVMfk00ƀ1QPppʝS}8OuNm:[uYi)K\yFLSX{QZN>}]p%S뿜Jb,jk6g&W\ۖoX-.df|f%1A>+uش~m~a!%GN^d9a[YO8cGM0V.D~?11QV'''{dـ= ԟ,o| fiiً\nKJ|`eܡk(gֆB^vll?`\%ofVM TiVM47W ۯS%76+ aM,tz3ף]. (YZF'YC!wևs.~dފ-߸ ^H|Ng*"2Bom.݇4i&HGj,v|uxᚇ[k:g"OJ]7(ܻ+S̪UϟժUJ􈿶gg-zF)e)=5%!5GT|>P9O;Xg xV h$V=*ڬ-$>tK-lMI%A"9o3V\d2eO%Iz5惄T5H(Mjz5LTXQoE1(& $ @T*0 {OBmd4?љlVB| `PU@8@j&HƤ'޹p ESϕ"%d͘ lz `Y#Z#+`j xyWQMQK.3M3-^|HXD5(35%9-Ck.Q0[}E 1#%51-]$R˚uL`ErVJf(YRimVQ$Y铫WrrṖ??u1IeJ175u/Fd GӽVFaud Y 9ӧUfZ͛86 P{qlZرcCBBRRRΝ;׼y,K*$0gR1YT?bZV1$,+s.JT wxZ.I8U;#I3,:^sT މcU(TKq^/겂+ad Zdy'.lXVɹ~TSwc=1w(!*̦f }+X}{1AR:! ( ~hN!bD:gADir B׫i񰜀R4%Yg׏FM!'a iAq{Ey$FP/dF\c+!X$ᥝ-O_jo Ez "Nˉz"I,>ew1Et: B~'欔jx3?{58Z^ZoĞnH_jYQr\A:-$>DDPz&iI$rI|>RV,{fVKMNWt>X!%Q^PyDsgNaf’e_%ם4>O/,! ||?g,|;2!.r$'jaj bK0>vHjDrr]/?J!^r{M-ƼmǼ$a{cEs.Dt=gvP?(-( G({gMr o4-w$neY.[l~/Ǟn;yw)<Xh0r ǹ\B^%IRD:9)wy(z8 Ȟ ~2#[0wOj>w^$)*=_ ; T&X9RbEnQ|A$I *ȉ(=]gyU!L1)xC0 CN3 $I4dg#'^y 87(PVupAx'$ I.(P@[czt:NlLM(vfN-쎂w u=~9S>uԕ+W$Iz*iqW4 :0d伙HC QmƥwS-og+OȃdfW>TQ}yŶ"OuupGE.~cª0+wOɟv|$o?e[{lJŕ{n11s#b1P(&&&?b1޽{#G C%jժոq>rǎo_lغsW}M 7 k[͚9oG* O Җ,iPtҪ |P' m65"dRfGTF%5w,;Q#-]ۿ1fow̬x=kAANSV??ıd9/:wW,ճRBKeNSQ@ztﮈCnyV㯗>q%a6/;:`:S*T)k~ċ94a™?8㪿Gmީ|yi ֥/&ݢɓ}*%@\(qg!JlT%7v͌:>W.R>xrQ vيsK{$c"#^FWgrr%I*~K+]}­.yS!U]Bx-=Зr!x\+Ǵhy7*Z`+IB=U} ZO>>8bvǮ{j_˴?RwxL鞸Ԝ܏.R,čG|[r%;Ĕ?6^><7)%g?׫Iúk7lϼ T,_fq RH5je ua?Xm[ۍs6<OFyE~7U\@{.kLv[/]\tOڕ>Irk(-t+c2T/ѫo.O<njd9ś񭟔ف1k/Uu._Rj}="f=lKrp_Y<|£_L>*{Ļ=SFߓF.\%<7<7 VN6)}rj׮q[vʕ"I*JR4/_"EȮ Pq$IRqcMZwȗ'wF ֬ԡ{?lVl۹^K#{*U(۪Y~*@yMN3?ϕ NHoݶ/iS5w ڨ#XJ75邓 թ6-Z_DGGh΀A8.**Jy&@i F0Kn9e/v|ͬTuI<ʹ \?/ON /[' )K%d44C4 x/m̈ ؝9~,{Rz3@jD8-nl/s'j 5 >g)v YRS*||7x~."C w8wq>UtU}p 5;9aZb}('@ĉ .b&W Do:AI^sg.T{|'}s" QiV%p o9s.yY/O:u՞{9e*Z15?%$anmN.*?:.a-.%9Ā/cv-3m)ɧO<8z92 ?;1.̢rs~}$#)EղïFǥ9\t/pRrK$F" ŮMLKŽ" KcWosWN*,o6|/%q'<T^=:::::9w?2((HXY7v111 vq; iiY.HHW1NyI]90`SظH'2RA:nZ&6Cԉ֬v'ANEƣ뛓/[lE;}fR@ e*T{vǏg (C"ÂmzhuDd.=klp[%V]`JzlljJLX m^9VRvj_СZ Tč,B/V`0)@v>*ջs0`MU>ujr )jc#pZK赹~ QݦVD*-rn'ɧ¯P;$Ww:ҤBSoo {ji^XMhЪs*k U- %X]Pao1Ŧ~YJ^օ󬝧Ԣ+԰/.Xo6j>9MۭcyΝ; /^x񹓒$ǎ;wnRRƍǏ?zhBBBzzg}vnӤͲU1~n 6z,UEL-_.^IʵL.s@k9AΞXr@ |;vHLLzHOLHHNIMKMOHHKp:n;%%s >Woݾlj9ܸz#Av~A"vEcݘWoyW.<{)̔'&< rD{3Sb$sK.CokT߷< b%>wz|?eG[XO9KtJG~ rO|9aREE%1%aw횟 H/y8666<<<66o\r/[j׮uzEGGt[niڔӧOGEEթS[lV^ik bvZ$-{0Eny3zuUWȡv9ع}0[(E(A$dTf^No@H9^_pRϟ) ҨO->+U7c_,X2/}53"O<ZUjF~0+' DzUۭoѷ==brF>4o[T\ϟ 3d>DY5Qs+w]d4=-t: >СCM6{0'Nz蚖Rz}bj֬bEe/d'=bE ?*h4B!7o/VuZUU!'^$$ISr^LJ3?_ӼuyVR[,/#--ra)lVeT SZ/|CjUh]m t(%  (,@ [  K*= g|"P\e(P}| MB$˲*P"(P_n;c*6[%QRiTOn_|l7Mf( %f,JX (<Ə\ՙ$}4AYa0jLwj4Z "@"@ZT}Ea(BM_Xh4gV@^5v?rf&zQ1AE)XXcDh[/ UԜ}۸oc?@tW> cǎ_~%,,L@Drrr5 ( <0$ @ a 00 I @PFG(22-sx]7V@+^5 0P\ ܢ߃X@"XH`n "cyK Xͣ֨wz5 )kpp@zF4vDB/^!BdD55q_,[YfJrŲujVT쥫cbbk7l9E wu)E}M3|peAe5Wgmڴ}gVG DW-[%IZ4~d\q뎐Ξ9wYcj?À}ؿvJU@]@ r(JK$XB ,#AB'O8uff/~ESdG71:2B25L#[#?(Q|˖s/Wԧ{gӹj<ާGg$WAgdފ%pʵ WiլCڵE;; RF Sauq^Hm[5S ]^5`9aލSCǂ[ʗ-mY>r{w,38At*W(th4iKW/z`˜J[m^xjT,5Rpħ#FiZ0=2J1ƭZ4Ys̝{Z}AnUv씇۶~Q M7ҧ} MdՊZիthצUenޣDZJU@?Y0 r^,` c ! @ < vlwPZPkl R3Q}~v=玊T=iBCz.dPMV@E~?5=(Y(@ 1wɥRR~sx϶N6mT_rg-N|,Ih=햵ur>(5z$$ID4Mo\_\.OAÔV@k׮]v}$ƀ$QEJ $4(5ͨ(s9ӯtmط|^Rگ7<}¥=q\kjm9Ӊ ֬^L2<m۲cGȴ7pԫU侀o߹n=j43 ӥcO&~)iN1ݭ~<3r|~YDzYrB2q JL\~sl|F˕>zZ6kVΜp̯%Y'qJU@OҬJ^9b5 ~1 u}@4ʰ#ʙUҢi'qU*e1Cr]*Qp Ci".P˸z¥_B~С{Obg4(پb1cz/kZ[ JQ$4uQO-y{jpt'0ە*x$v'3`֭XZ 9\Q/ŝgAyK`@ T UlPT@9X0IfQ? =w?\-߽u}Kvo)@RJ,\@.)i (2%ܹ9fAEQbrو06kpX֐d CBriq4M<糅Zܻ{k'$&Li˓;炇B@Ǧp*yJGt I = !DS?۩ 1wl(n }df{>UDo"s2"Ÿ;c B/coǹ2F:^^/=#d4ƜZCe  (xY&_Wx"wlZ {u~% U)*P) z})U((P'F P<4O9=;sY*Pj+ Y Iݻ?z^/(F"I|$)S|xGXtV9c,ݻ/_>hr4aH P>#+򑑑ŊAAA$\. $'O\.՚m$ɠ$ttZ- Wl.tQoPeIZ CN)=+PP%k?h4Bx0*-;rGG}ط{dDa-^ϛxJ0Lɸvlا{ e9힃{u)U˲W5uzuػ[>uV9R)P@bys up#QX*/( _~*1{SV߼}G|/r՝{c?1a[V*/W69]!'?KhѤ'qIj*(ȴfuwJ8mNRJJ._9pN{ٟ/c\QsErJ(k (PXmYii|=vtzY#F jc$H݌j-Q4M@D-TVc)2_|}٬O{v(>sRj9 P+/]JЮ~͟77뗫TLXQ-6ȴa22ATX^ ˿5'Ơµg Kqw?W'ΩK/[uʕ.UӞ1fhc)(\ _Zx`KХ+7c%AAĤR%6p֐A>`e =x( $+TUH i&B˒K΀ R b,ozε @x< (3cw8 B9,"I"5-M&OL6 ` $)= IE>"yq|bEb=Xq7Ms!IakTzˎstژ{2vN;z䔴|?Ot$I)8Q?;P/+PE8zz>::<.s}N .8(P -$I˲?{nLL̝;wnܸ,qϭnغoR{tWT;\ϲ~h׹G'r9pHtdD )Xw+W| `^$L$>["#moRxTdD54u<#3WtQ6' ̟?o?}ڍQ\ Vf5+P_򲗤l?"88E}wfà{y׋  G8{c#pQl}{'L9&ƭ;BBnܹ>;{{~-E t:]:$ I.t:9t`*is223U*1 U6=ގ= .wϏ<=uhٷb͝{ RR&N֢IÁ}{(m]b#9:?pj{L$ ȑߟgyn蘏zB#}㱟dhĖ(VSI)/>NR@ρC,Y޴Q 6o~0kǍȰ/%:Mڤedl-y<^zf-?,/`)kc?ԫlRyrE?qzf\~4[P|Azۥ} 1\nwn4jmZ^hMJ[W@y$ 1ńF՜;NI`-Q))i-6ڸK 5WgիVӽ\~G~ٵ3ÃhOHܽo7רZRS?9}ߔ.Y [4$X 4iT~n Hr7svKnݱ_n Ms,s /ry_,ҡݔ :*rO9ޔy/C6n}qkjsve|sq Ε/[!z5W'νnZY~;i;~Vݭ_ O۳(PX(A 2. #YcY XbkԪ}  З*v3o\ ԬZPdWUL*ԫ+4C[CsZ مT,_6.!HjܠneVe/Ҩ*&AIɩʔV?RBzC ~4ϗ,_+StI,0 0Olٴ(PX\NCGuLDtd+#_ҋvyDv3{5)%j F7ڨUɩnb1@Jj6Mt̙6p]|k>=V*/ r9_2n Ñu9}N~Fs~34MfK ۲ADrj% */ "wmYB((w.޹w~Jגq_jx,Nۮ^c?{a\|"x}~W]Ez 1>#~sljTIܽkר$6[mknyԙedknr9x}PT/y;O'@FO| {qjZ.=zۦUΚEF}o~6-gM\@…J+2r'i(^q-z}Iiϴ߾sO@Ðt[, 颴\ |>{f`lV(BMF# #=#χ#l^wɂQ`K* ^۽m]~Ch|MZq@viܰnjZzdxԫSs/>`~+- bR5uGZ/UxՊ|H8|-4tG˕)_=4[kdžUc'M~۽bM^{:"BDD쬩bWwaTLܹ2wﶭ8tϧ@ͧO4w "+#;tPӦM Ð$Öq'nҤ , I";@UJjZb16 0(I\SUӂ1wZm\Q bA@siw$%͝Kռ(Ƌ?o޾7wVY,@T|KH2B!T~?0$_(Izei)սCDDXN+w:]Dg.իL&%#Ex?sFy,#sZjN}L~BPo}z%IGy6){[E1^Yha ωj ,FξK,O*?ߋoB(P?7@^zS Y W@ +P@(P@;c(>lKW) (ҥJSj C !zپ gh a>]fg'}晙y6@ ʣ:<@ /_3*"= @ ^C72#+[[P_D (#gQʔ."xU$ JҬy:0 B@Sթʛ~G6gїtl[TIIPD -ffq<>_h)bŲeԘylG cF rzT|R˖M̟" cÛ0o 6:|s~#}ղ"8 P*gUVtҷSމ@ ^+[M9|p?$IP7F;qKBܙPD /Fy(BUIuT_,R(_@i{ ~ؘT G"PD ʿib7ٷgW3 @ ^{Ӡ(kvĿ @ HT@ //t:N((l A;⿯>|ٳ,{^)R\rժUCm@ KDǏ=AeU_`韛B{~=c0?x= E= Z4i1YjIl=aʊEsB):s/b\\#4$$<,c9̖! G"^q+2" PgB U0.]<($~?qF111ǎ$@aaaKNMMI#%ݶ8NUt!v#yN:~?[X  fkҨyZ=aڌ۷LFaTa?ˆvl gtieu&_ULY[nݴiЫJmXDQsNHHa&fɲ|Yxqf9ȈpEQT0Ȳ~?fW/p8ssF D|{<c~?+I2A}0Fu7c\yVդMg EBEDIl9BBdYV%0bJj~yez뭩SoY9F,KRR?F`EZܽ{-Zb~R"$IΜW(v:]PzQ޸u;3;Jȟ/6uKx<ߞ OkҰ<ǣ6qj>gY\O*H/^Jsp՗EIr mP&L?i ^z3GPF 6ԪU+66V_|Yeff9r$&&&Qb0۶l:szߡ5PV $Ϧzф'u|{>l2=oH5Pn >|E~?L?a4hYz ꎚ8o"6ѐugs$%.Pu& 23*믿;wNtΦi`0+VzOdzͻtl׿w7h( P8h7nEHg]7o=~X?Q%IV}(_$Jb; d2*ϞF%IohN;9$D)d{IvQf MQ+b =N#BC~gW .<Ry ǥ3...''G֩S'))iii,0@B73;y6i6+xPI=.JHK" i:"1狋pER ((D. Fg6hdpW0\msd1 \AV+v'JEc6,:xʴ\˼ЮcvOR/ILFC?à'm%,o1,\@rm1ZNtkAB@j\ϟtwWW< ?+^cÚw._uz+V1M˼0b2?^$.=܊u'/={߹Y eDO1!H<{vwsr7^t%oX%^?O!%Ie˖U<}޽{tFFFWz?#'$Ipƍ`4>?,zan޼yM@ZOWOtoyO;iݺYc>bw6=`)g60y~ R'R<ӗuyOnn7`APUr  "p (}nY[pi n}4N&Uwoԕū:_MSJO4{o/(A5jAN8+rNN++.Cw2 3iFuwnY٢!йWqDcҟ[NKKkݺu|||nnnޓ-xh4,Ϝ9 /6-pܹeˆZNݻc<~^(`GoL54oޖφtfCEŻn9`@ɉ͇Tiey^K2; B#u \g02}Ӂa/Իh9ק@eq!͑qq!sXCΘ~'7}gaf^h;x(J-m{A1@z^W-!,oIbbӗc;=T({/ۺSoiwznI$˲)YczW>lذի{,7іqh4P%Izr:I4MpcE}Pfqn"J['w(X"(׷@If24~>;# ?aIۓKDŔ/U@ **ڼ'j5,+oQt '5&ϱ]09o[)8uKuektiq{ Fps!̗ fSЪZ-v8YTϛ'UMR Ła,ʙīaN>f{<:NөKě $IׯQF'O޸qcٲe###La֯_GGGvMOVo u$\FE$PN[cdedA,ˌ 0@WV]'H8(EJ&rlj;ZZ- fvN{ݷ<'z/SqQlv02m.4pYr9$^(xxE'z%C24~dCh 'At<\ኢ1 oV4Ho%펋+XѣG~^mq\u+V,::v?c".&_ αVbW<>VUR  DT&e>ZarJĞ;wLc.|~sIu)o_}SCcÃ_. 5xY-{ev[g~L}6ݛOpSz6kVX?cZ_jW>|i|NqHx<`@jppsOΙ0PJZU=(x<^Iy* <Ǻ\> ,=^AuF3SM%=ק-^>ljҶ]>xܡv[o klHQc.YD/QE4Ry*j`ADQ9iZ׫ |>߳&C%ЗJ;^G'Gt^;6P#BBC Zu HEF\䒆 eVDX Or gSU7L9e&KD(vHngOk}uA */q^6xꂥtЄef޺AO*ޭmd]zI#@Hkk换A1*44D 烁OZٲ*Uԯ'FQfBCCH SC"CpBQE7Gı@( j0EQ0 74*H~n6^0g(O,(L%8O6O?oWӖz%I2 IIIOMT8~lh+Vp۰aüo⿎߽{wJIaj]rEիנAҥKOԉ'~嗟O>}l9 c *bFK,YiA4:EKW_5$4<"?ܝ``q;<~cyKPPHH};\uULD$,!Z ~-\ZvA¢ q< ⳝtM"%ptKq"Mk2tn e.[['hII0ZD4M8.K}۔8YxQRPphk05x'[i1,!p'I&ե.\8qĠgfۧL2p@d#PdYz͛7EqΝPtiF.]ԣG-ZxY7[V $c 18bX?'JN ic)`8$>#IkpFe`,]; v܁:q$?!)($ nWegnʖ+) )d|^InTXLq;=l|,b& zeFT}$$f2~?/>FeYq2$؀=l @=˵ yn˕zcyVL=x)n|7n܈|jdJa}>xi [Ce0t:]`,j?IV+˲.LN.dzPcR~g>cRt#G>b˫10 #I)񨻢8S]ѐ$x$I<xE!Ic 4"E`0L4yN'0(6uyx<8 J('Wa0 e(c#¶m$IB<3|r$O\1Ay5D^)y7*@eʔ1L/7=&%"˲bQG]|N (*`?$x;VBd܂ԀcWeR+h4$Ȉ+W^0PBN}A;qm)2 O5 .$(_w$Iy8?GmAxU^˻BĿ4tU`0|yݿ no0Ԡ#W.p~Nգvx ü^oFFFÆ _ͩW ٓ?~F ʿ"CG%x`ܪ{0AZvէN*V0,mtz~vǛ4iұcGLKV!AtAq4:|`J7YGIU4VUEeu˲(h4>o׮].d25iD>t6+k֬yNA֬Y;v7Va3*BSDʫŀr4FD{oռ dgg_znsg2Vk|/kYq~Ig?x ft:ׯt:_X#DEEUVegg1")))55jzu 8oZ- ߯hhA0ǵϯi9%Pe(6ipFP&?d~Q;(-C_ոϥV3fdddDDD=:"""###K"Ĝ8qܹsyU:ZmLLLJbbbyo$nThe0ɓ'g###n-[ԩSdI~@#;NxzzzZbŊ#G4hР}*Wz$5M@QΪюԀ<[VU[n'[@2^rq!1U\.d~ƿ܉+ , k&g2hk$ߺծ[6p0=ft$EJah48F~z=<͟p,Oh# ;*υx}NDQd#E+ q@4jxKr8.Kǎ(:Nݻw۷fi4|%$$Ȳ|ƍ[^|l6q7avpZ֜eYa>^E]p~3A1o4 ./dv߻w$nݺ]tiƍ~wi4:4w\M&sKhݽ{FSN:UeYϪB޽;77%{yӦaKV|"~z>{h!{WcoY}"f;/=gM\Ǯ.*(Ȱbfȴ)((v`:t!((_6cЩAA'I EQ؃.&, 5$IV/{2f~:הtk4љR7Ykץ{uk{ȥLoň?]K '4@wH"pLQp)̓cPi'Aj]7}t.eUGi44IB0 0 44_x r/w~yx$G^p߷o_JJ EQQQQ*T'B|Y/8;񢳎&;;СC@ɲyfIWO<χwU;vx<Ԯ];$^ hR-m6>0Lw:G0lz^h(99Yd8>d1h%Mh "ڝ/mVF=zҥKA,XaÆ~۷]vv]D PD 'QFnݺIIIvlfFM34^W'/33bŊΗ_~y6mԮ]{ܸqY,"##w؁aX޽ӵa:|>ހ_ǑG>@Z}6UZԊC61kZ(j |' _YS& a x֯{?PN)ú~ٹrm2<*?*iյ_Œ Ȯ+2d/UkyXfGz̰sVsnYN&p5j˖]Pa?X\i?“'%'ܹعd\\02d٧ _`~Q8&RYԳWݺʕ\јXOkiϝ  3reN|eE^}߿~S:teҊ1zKp(Nw`I3WMz1m|ٲE{J~՛O]V]YZ3>b \=ȴv]$Us粳Pdrݿ'nתU+++ 0aŋNg˖-)zejߤI'OVP!&&F 6U2g3{2rHet:/_%IRzzz˖-vsAPU:_>$I{I1w޻of׵,6+򝮿oh᳦+ٳh2thNj/Nh}}¥ kY4ن+jګUz7>Voݼҭkr)c2zpٗg.ؑz-j'udxtu~NI'ۼa](jN{Yjb{ϖybVMcl+BX^孢ߞz>-s'O^)P- zswZr'uŚujY-f)q]'m*`N.ډ9zm{n9?$6;}ڻ>Vi>~uҥ8l4׶U-́Fתko =m7=Ash[!Sz}669p*36oҺcN K×buۮ-ݸXȹ5^j-u?En~0~x x_+TuvSK}>O]H#ϯ<ϫ? |^ƍbܼyy?dffޏ"Eu2,{uZ nӦҥKϜ9ӦMRJM<8Yz߯]v Nյhp_>,q/}k;G-~o"{dUƒ b#e/Wzr#YN+mq^vޛ@E.jzjR5㡻faTdדp:,fHB I*e0}8@!"o ||!ycHlq *rʐvj͊AQ1*,#7._{.;q~]j6l5}.cSrK9 Tg칹6?/+$郚7o {v[rFzNFmYw ̓CcZV~ۈ)},`OfJ+bެlx-X|ms:kݦ{OXQ&y~sM3Kpt\1s3])YmިBebVZvmP/I0ULlS|z'߶X/keY5Z*yw[eA*W8PP!ՖPI111m۶=}˗}>_ѢEI{LQ$I{uV|||j#/IR'Nܸq`j_p j2d׮][X={ر#+++!!!0vy!Cx,ADxϘڴ-5v_ |ĩ3VlTj}:r~DDžf@#] *Q!=k|9~w59!F3m}2? T+ F&?[j؂{O/$p,XCJW{Jbъ/U(_"Uʔ&@SZCիi]7sU v;nXvխw;|ͫZ(4$4Ġ(adDTjYq*T▓zsêvt@#=VNk9|Ɇ6׉әI\K,j侠( ILa9sK2gYa9w{,c|^Pѣׯ_OHH\:R W8Yfɒ%E1cFDDDNN}'ɲjF͛wء|>_˖-[jr'E#GTZh4>)r:ǎkܸqiɞ-`dfܳyyKpDQff}qUոjgkRvxфG~y7XCC"yRb͛aqF\ C؃ONTOɌ1ਂaepd i) Ar̤)K~Qw8}W.Y@6W8^VWQLA!ZJr!aA 83--S$ŋ>K"wn:+Ŋ5Ҋ8VT0 3S_O *rxH-M1i CvvF[`T#7G|I3*Q$t:(/Q^VjիWד&MW^NNο!,k4N7ll6|%*O;^隥̝9טϒ5VCx=^IVp2gyp4 8&^f t$7 Z z<,/b87(e 2:sA`80e0,GhhL|,8A DNJ:}4oDKE|>h ze0Ph$Q NGkH iFKS߯Ckׯ`8(% zx˫1YY1I<^rR)(U=$4eEQ;w._|N70RZ]ۻ@Migj9țu&p=tʢ{V%A^)>] < @=/]ڇa(7(湨rq9 zn'H(0I]N>M<X?3yx>O~D;<׸󩛕$pY%I*W:3/3!-@M< P݃/0TjkcRq,5oAʫz(A|>Wwj!p[V}c8R파7!!ndYNOOw(,F%IRvvzë (p-Vσ]t\(+ꘫ@(7G_sN%PfWě*qTzdAx퓘#XI)¶mDQia?)DNG 1L'(P EQ$lٲ&I[^ڿ\k@EO$IA+񦨼`xRI.\ IުZRR00+MlzB C*/1fdd4l8nϞ=ry@ aAjdWfԭأiMy=0>C@ ^ؖ( etSQ^$0@$i Vt;l~AzҊ80 `([UR$ Bl ?m ueW-C ²~.K5te]@Q t'^7Tޓ}VF6[R-mw|6s3'r@FEY-_GGo4_;b&Ei xA$ SA #F+j~h P0WD%4'X?A,3CyfL0z3ߪӤBBq\PtK< nߪ .SxK+3:~vMWzr`؇#ktj1`Nih ]40U70 1 0( Ii( A:ɺq=ޠ#Voint{Ʀ{Eq HRCjSMH q 'ڱ/60 $Q( $@b͹ujoZ-0'?| ՛q߬wֽO ,׏tZ`2q HJCdf zo2_b5sc3)96j}V APJad˿3t3_-Yf, 5iR\3fy qhE~Jg4h奈l #(+(F{xQg2h5%px 5ؘ0Iaɑ8! gRKaٙ8X 5S$FX$9h6h}.5:YO{=^9$,*FJhb(biZ0r-Fȴ5aOA+q.`4{9u 8'.(1a`95_PH4ssDY1Y4E~,ɐ+DK3$S N] cSp*8(聯yE|>h|lSkH0I,7 ۇzHøgmÖAm7~*شpC'4o3]mȼ_M̷tт^݈QU*G^jˎNh0{[dqSz%PϦ5k?+}Rѽ : ϼ&|w5ĸcJGXY?=x,@:vkeFl;x}aѪ.gB |fbϷުF)-?Å(  aWYԃǝi]qԗ_-'N74sĕ6vĘ;{󎽋G߻rh:(o wώbōIҶկ:Jt[ lZB(Z3_'~?%cLƝ>̱.\yFBq_Xv彀(N&.^tҥnﵔ+` ܵ~un~p7W~ز] ٮzO V82`Цe_tcCMʳf)00nh9pl"r2fܵwujEZ3%;כsG16_n{oӸnƯVKn`PK,]pc?դ >iFIR17aS4Q%Laߴ&f=qcǏ~sǩKM;S/s+ִ]?vzVVwhMfōsS^\!E2Ӯr-u`LZC#CBL {a'\:1zO]_v&7-V+9nO7]I^(`Y$ {Zp؁UVZi5۴VhȰ]iu2b7ֺr32m{\jU.wlj`ݬ1|eE^}߿ufo1쬃Rr>4nϗFdNwh@Դ~?0 wi l$71Ǐ3OMXeGw&oƀ}ܧl5D lvU V,3avK}xxύz-u3STtR1nhy\v؝4v`ٳUjɜ=ԃs=n>&Qi9pZJe] pŏi7Вa%.\ѶB>MV_]l|x.7x1^_GҲ<{# ;okh /6{m+8mցsֈ]+ Abtcjt\36: NN5,ZSұq1AA| |٤ލ@=g>mL&w'K;\}?ss.bH 9ׯYIگ_pյ6n4Wfɢ "Ks?\"l=K锍HhS@vcEOx- 69FFw/JkTTc%e{WoYP\2R B{ٌL7=rcU- q Wvh8d\Nm@6ꃌA_n)-KNIvh{i y }ŧJ>BŊ%VޥSէ4ya o<:7%ʄ\:{WYLj0-X| 9'פG #-'[ *plXtVMY K>~۴d|>_T|=SFέԒ\Dd d9|E3f=#FORROVn5G~nn 94P0PDaCII@+6q^uEv;i?tzk3ږ1&R3=='h%^~jV$1Lx0 5pdPQt:EYA]*Jph0ڝ\C!B( $c8((XCmqyxfP}v67740 <]4/n{ԙ\=Gj(0r կYC]ZvJ8J{VUuEG65j dPxSDY'@s3rԲhAfdv {,%+#h"5s<>#=V2Ͼ˂YSnu z/Dj6{9:L]M͞뫹cc Сqܰ2o=yV,v Ȼ.Bk֖-r9Z}/"͊r=./ ֨Q7f\"rΜg;i]j֪?KN>saŚ\0{+w :c.q'' /Ef˙W3 ˢ?nm٢oK>lSZf[ot}IdbO / lSW.zן=l &=>Yyec}n/0 y/؉G~ǠϳFe} ȩ) 3AWkwnK}4@8}$(Bx=nGUNfIWSo]9KkԎ3}{yOe޿ ?]z}ǁR~Z=oN`{ً pW_5<Ǻ.?`UJau/瀩w8Y@תInѠ;wմ{}%\NiTdS:vNtlȖGWḥ~2~I=`F_۶Rݦ/FiHBk2@/;i"m_d]=Oe7t2AÖ=X6, A{ȾEUpTzFFbyK_ڴ 1qڵ ?yfpŪMU8[mkW4i4&2"4:'1Y]ulܙSwA\9440EQ!",\Oʳ=,aTb:GdYva!8(! ((cpTů(ql󑃢'Vi"=BQE1B,+ Gc[Qʴ9ezͪkwwM;-bYQa!a*fWKzլuBXK5]3o Q/t/,8i6E!B\T=~?wV}1Ho"vݻwWTɌjcǎ5nH9w2s(JW0s%%D0E =T7eE-ȲrVtا\&n\IMxxEE 'Qȸkwzk(ͱ-=!/@HX٨7=9/L*UB] 5WWISA ד}dDZ%pLDZ-'K1dyq a(-f $(ii- p(Vp,+c8Mk4_ ɟX 2]bHXV`dw;%)U(Ww]bqfݽc65NVk;wD2%K${{0`Y0RKS F6''G[{ד fkDX)NJ qYt" >?hxE H@E+ʠ7e`^y?d 4K=z " z P*1RHo&8A \8scg UkiVW>_$'#SE$axpyjWEVIր>+Floʫrۍaؓ8t@ ^駟fΜi6GQn]Ysrr?f͚iӦQUN(/^LJJQ|Ҩ0d28pŋc?B~.t7?v l?O]P//7z>hՑ"]VZe61 vjGEEhѢPBƍ[tibbbLL ][є*UڵkӧOvQWZUDgmKZ)|eP{qO8ҨQl _cU|bD:V.[.6v ?؅-37}uzCit/lAfŨʓhYt^AL]V|ʕ+תUVZ+W._kP ^ږL&Y1 ?~| iӦl x</bsrr[)(Ns999}Ypp x.ܵG6{Gj'-;-#HlS&+.?8\&*3t:vWZF#cYSdtu 5'HۖlRv?Đc7[JZn}ڶqaϘߋb\z `z}MHH@-x<6EƜZ6o:ujjjjJJl6LW^MMM2eJB^$0͇joxȐ C{2\UӖzCC<#,'֥q=;8ހ?`tw/Ν;'$$vݞйsg&7KqOLL}#G#駟-ZsN^H|򑑑0 |>_dddJMO,?e֊WFlK?zuInn]ey;lSZSQ'rXq{f)r_p x%n?q}~0%J2]nQytVzRq=}1YP)}ºK(ۿVӧp8}ye"_*M6^jեKƴi:vgϞ[6nC $( qBej㯻֓$@ڴҽqY1ƕݵ{u0xb k l[5~ͷrڲ91 2XhAPXdT?i~vuZW*:lIe' 1£ Vf9Q1*qKyT^Z_i~KdͶwtS  $$$$$$4h!^7, |{mذNt?}C 8y$,_pd2P4x3gf@I*2yޅZ‰Iꇰ؂)v$Ȟ'BT,g#t[^%55u޽)))`0.\aÆ$M^.]{k׮@bbb/"iw(K'"8xT^E$A(7r (@ G<7A{UQ'x,"ƨ?Y@ WG<6 h4@ ʫWsssyE@ ^/Wð`^lyxT^(G ׉G4]e"ڪ<@ ^3ɓ' ׯ_/T?ߔW~!::h0;2.&_-Tyu 1hV;6wؘ֠Ǿqv*^ o8l߾頠??ի .<{l||ٳgʕXbR %K+V͛{qݑBϟ7oޥKJ,͛7/Y񗒈ҥK,JH.Xt噡!!r{i$c*T >=#u?.EEm=%{mVV_Kra~LјwH%I֭[)$$l6oذ~ݻɓ/BӦM3L U_n4nb2;ia;o}J /[AA x4ݨQ۷gff6m4**JN:]z5l_ҥgϞ-IRx<~Fi۶-)))q7o,Z(ر#++QF% --l6߸qѣj*TPb (pƍx<|M"E¬Vܝؾ};Ջ[֭[$ W\9~8aj j(|?` t'?tgee?srrz}[k׮]6p-ZcƌYnݭ[uvgv׮]M4ϝ;cuxfffK8}?~Νw '̻ロ|ܹ l6[zzR/^TeϞ=?HtE۝iӦ;w!C8زeԩSy_rҥK늢سg>,P}:4_|/n gQoߺl޾sOg_W/ton2,_bqk/d9X{׬q)QAw:]j+y,4Mc4˗/ k"++d2-^8磣XaXgYS {ysϝ;׭[Ǐ_~}Ĉ111+WҥKʕдiӀZliX@ h4 >}YfWy $Iryaոa)GʲwG QT18ODG=}~TbKW|]\ L>jJx>߃NVKhX3<DPgEAXcY-A GմnKTR}cO7<*8+²l&"88X[6n_~ի0=OAēRaqd5tٳgyD%oRCVe=lժUfn3gΐ$9aVVC=_Q,3iDbNz%QTH7|[$>zvAyefefR"G᜜\(Wgp8o j|ukըsָv}iM5~'N{7ΞXRt:^j6l>6!_\,P$@zvt܅Z [5|>~ڣߏ$BҠ(7p8233sss}>_NNN"EW޹sд.hԨɓk׮=nܸjժ| Rh9sTVm޽mڴEB Eh4aaa>h4JiذA djܸqnn*<ϫ7o>s̵kΙ3B qqq͚5h46M=0;nܸVZITjաCV\yϞ=%%%'絾sssG͛_pe˖4MTjk׮hZ  v޽{EUYq<[IF0nϟܹ{^<xmyU}'(mx}NBjZ|>_($Is~_=G8βja<"𩞙Gt ԓ}>(EiZ՛/e?Y=24M,rʐ$ނ$IVyoDK۞*h- @: EF xU`0k@*.}wj2񼳯ki1zʒh @^*j3l~# ݅@ :h@ }\ лF!@ ==%y#?h̠&C PkjE)?}E @*@ @*@ @*@ o.7Qu6;YDIENDB`vlq-2.0.4/sourcemaps/Firefox.png000066400000000000000000001370711413332536400166250ustar00rootroot00000000000000PNG  IHDR pHYs%%IR$ ,iCCPPhotoshop ICC profilexڭWwTTݷ e:RDUzC, 3 eTƐƂKD"FF@bADn,5((1X}o;}gsgun˓HI @,GsSҹ{PhB <~$(..y}\qI$@X8b~@D*,f$2 @G0>NMKt2%ib|<4eGI,j\0Pmt9eĊ^JbI>oק _>\ ;G@ 6F`~qXZqD$yd_@ ^ xRE4[󤀂OdQCq0~HOQsrQq8,a% JsS>Q$l-Kʽ\2i#',ixC &ITR1ah.*' r$!~$?.fG0% ùeġ9Ssy'Y\␟AB\d6;t',' {̑'2R%o3_2糖Tu:KS("{Z<# sz>!RQ Ȅ3eR(%eȸAI%uqrvRҹWK=sf ?c< #@g^ėKK @:0 ,` GD& H4H1se l6O8 y\5F'}x XM@^?FDAdbBN!&*Jb%~&'DqO/$EIҘ&Ǒ^dM&Sl,%ud 'Okd'@RzHyQ!T,NeQRjUNUQ5^jPT/f4v}H:EGb1 F#͘(cT1v01N11LӆɌd1sKCf?2`9X,K*cgag]fu***(++)U)V:tYҀr@yrMT4UlTTUrUS٫rJKUUUsUoɪ"TQŶgef-K555k@t52Zjr9c9Qg>SϹyn>MTJE^ e k k ay+  ҆ gn6*^Y-Z,,M-'ZαJ*jUkommlJmlت^cymdOڻW_t <D:0xsÑXXxؘ6}6r\}rrwwtYy"&..|jj]]9 6tv{GO^OK ύ7t⼖zfx{>Gs/_G<ݾm o܏կӟgY/&AE pG ܠ=Aς߄ iB#BCô’6 7 pɈ\y#8U7s bc1Mɉ&xg$XFŮgWdՓ;ωoKN;ubpIId)ɵoRBS*S:SǥM=f&JkLg'H*5_uMqR6T3f8-yf02R2vg|jxQ3!@jAOX)|U՝헽*'' *W" z%M^lμ}JZv>sWOJg~+ }}]ϥ_,}ir+W-q^xSw^ާ<0úv>E3X08(Iy  ڗb=P|X<@  X-@@#)ruQhKc|lnE]P? ܹ j͕&8iTXtXML:com.adobe.xmp 2014-09-28T15:03:27-04:00 2014-09-28T15:39:32-04:00 2014-09-28T15:39:32-04:00 Adobe Photoshop CC 2014 (Macintosh) image/png 3 Display xmp.iid:48f8280b-7918-47fd-a693-7000ee3bd90b xmp.did:48f8280b-7918-47fd-a693-7000ee3bd90b xmp.did:48f8280b-7918-47fd-a693-7000ee3bd90b saved xmp.iid:48f8280b-7918-47fd-a693-7000ee3bd90b 2014-09-28T15:39:32-04:00 Adobe Photoshop CC 2014 (Macintosh) / 1 1440000/10000 1440000/10000 2 65535 428 249 Wx cHRMmusdph0>xIDATxuEǟu'wBHB r~G"eͺOkGN6!#P~ꪧ~+Vmc9x3@mЌss BʹJase90Ɯ@a[F5~:i;H\24۶[2n-cU҉j緲 c)x˴8I>6|<2i;|΍&rtN:W)W|.]NO(4\: NZ咽ιctDy1ZFcsu 2ӷ51OUH-wi+9N?q'tw}|-I>ӷH?t tLJ)urpKJsB+V8A8Oe[6YJ:/!9N[6V'mVoږ7jit$9uW7dat1oY8ә/햆Jt>N87U,-3D eiY[ݷw[2|, !2-sW"_˝C$R[=Q[-n C+m̾ZsZorKjZ&eP鄴F"O:n_-n)|/ێWclyInsf9-VdU ![;K~+ijo1;10Λ#8g!ƹcf38k:խ!Y;qˆ7Ԝό#DM9Ɖizpq$!́; A،9ws2N5x}JTB[5"Vyk\-~2V9 rQ+-hZſW,yG2'n->yRZaޮUVww l˃ֳZ_s=2Zx儼.^.(3tl籹~Ƀ3,T篮_x7$O5͖QK.S)U% pCC”epðÚV_BqK؍*bPXu۬Z Yu 1VClU࿉^PPܵ[ ɇ~]tcUqu]7  Jٶ5a1.; nJ,`9۟X2=pӲTxIqio2ΣH>}w U|Ķm0F>^ pI׮iZ<1rD>}Uzs4W_ݥsD4 l?~ 7|vFhd #ѽ[6MYW]ㆼ/Ybvb:7>z οnÏ;Bfz}ʘP c nIkH[)}=Xq M 䳏~9{yY꡻=/UWa.N'>^]=Pk$-f9K0߃zѲvg5d-(/:nԙDm2vE=˅˧o{ySệ@&'ͰcW}R6?>eR@t eTX tg_fb*P[W_߰Ge˗&u=fɶO?rZwRR*`O)z}|38fɄS~ q|?C<BkV#G%K,Y L|7 ޽{@+=Q380ll  1#ۂYf!:Ԗ_P8Po)Y5 }4uG>|װgǓFZ[ڲӎ=9eoDeYcF%K8^j,\aXE=fGhos{LM^x[ [-ضe;ӓNgP)Ǐ 5u ̌HCa eE5U?X؞vM}* Aye*uufPŬy_ALg]$GZ[|O~́q'P7 f! Ft ͭ`+4PUBaapJҷh 4cnLiZ*^M{≧挛; 4Bcvgz3{[\f5t%a`8c~IeEE2ƌ}N;ʬz}d⬳uw;E'鹻owTk%=uj}pgunڦPWPL1n$M3w/\yC|W;n7`zfQTuuωCeu% ur::oi\N7(brb=U1{ݳyJe_~5;*ӣ62fci\ݷ^9Y`[vcmu! PrLQUZ\w-ik&5F` )n!dQ^t7}S):f{kFm;*!Yd$C [bQ(ƖN> 7PC) b5q5.>'Qؘ#&C'q;@ȫ`~&{t)m(?r]J;D8熱}d2YSS9pEYN:> i=bb;sA/VX1Y`0Hn׾ݑGNXpAv(jJ[iffJ2zѩh6GO)#n; ^^$i/IVd"no׮iZOպnʘrZu``IIwJ_JK[v˖M֭]fի0]1+/3#hEdBQTEQ,z^tqII%]16 @},6 Jr ;qiDk\jmC8i+.8+/38Ӄ8wꢁGK%>/2dPWv6W.߸vʥ~TL73yj,^(nA 0}̓g"J˗7 lrLiGFEq.]r1+5tp_p_V=[V|)OC.^ xl#zunӭaniF;p@cTmJ=jӂlO(3n/0T~e_;6]͆=gPOL.ɔ/_D;s0`، rvF mPVjk{2/mƞ^+δ5Kzڜ 4qxRܺI0JVU^fyq͎-pML Dg{!i,F4d1}x7]QZ{ze3sCNdz߻(IK3}H e`.ؑ.49VKs(ʯ_@ GU]|݄tLxr2-ִѮ v]}ߛs$l:#'3]@~.No mq^PW$6:⒉͹O 薂8ƁbM~9@tOXa?KTo4UzDe~C 90ng/Q&HqU~xcGt&9ۿrȲi{ss!XLӵ?*2m, PSSe~x;6K,C2j[MKiV6kL>ȈץlI*Ƀ.,֠Gr8î'cJEI"Ty23[SXOp >Ma=AD044"qUWa  0 A L9 R&Oo$"z<c6Ax++ <A4[u +,zemڢ' 5rΝHbskCv >pw1[nr9cbu#Pضmk]m cﴽsA;;#9p,#3CR1nI E!l۶5).f,d2bŊ.%%o916M:77WswʶmۼySNEX Eci"[c7ԩn\.s(tPplBUU3(als,:cYRmc0Da UDO@ۋS#ÖC鎥0Ig)kG)$DvFشz 0BYh–e5/A dm)m[4 buMka@ܥ%IjEK8Ƙm#Dpӎ-ۏ(.u/1Fݮ.%]۶k N{bUUUVV?+ BB̛7真wţӼ9/o_t#t]5:Lh4yv6TBHoZU Y+V,Wm #8YbR׿P(ha&@{b b۶uڵk"F0pĹr{:vܩc'][S B/]FOiE`n\|Yp}G<L&9c"'I˲ofV^srsK1 nFk~jJmիV^fX1.](H.[40///J"bQJEK c eJm**׮^Wݮښ 41@p30Nw_! /_F%ګWȲ-.ۺmU[J7ooll((,܏g#L'LiT: [;T*fںZI(8Gk8 hIR}}c{ѣ'!alqޫwoť,S2J[(TjUU-[6oذ>//o>ln,$iБEXof&^z3ƅ(l! UUmwHM&aȒL%lPWEELöcYݶuq' 8;;|Tٹ9n˲,JhA^Aҝ@ cLU\99EE?^rEٶmu}۶-[6gdd"),_ }ˑ҄={ڶ|T\d"l; tP mE1h4ڼh)JYJ0Fi%]ם^T*UVVvE Z 8X- u-qJr喛м@ -`M999b8|@A34DU]Y9-RJ%IB{ " B ^_#۶b@ ERj[… (!CYٍH<@ۉeYÇBi4GxD@ DЩ~|Bc$|>EQij:rosk2E_5M ?N` 8@ c $ʘmY;V8@]4ĂhX>#BC~ 9 h)k|sd{0w{WĹnGoa\Rh  C[rUU2LM9%'>(N4x=`G;,JOQd{*E8?~I#L:7LP0!^?uCTzO1yt)c{ZEωG"ID";HI\?rT:mX*x=s)G pK]%z--h72XQrt$8IvAe#z=\r/'y>S/8r);3q9@&O?+"O=G?nٺu}iuڭm'H|P_Q_YgIj"I lr}PQ( 1VVV=*"Al-(38OsJ80cwRqy۾٬GY5G)zø RѺ(G٣C0gmq;_eډd(3d&餵Ua{e~-&G{Z[qh=28Ss y`vhk1rPSQ(h:/09?tmJ5&LgZq㟌xB,&x̶-3|lj4kgp_{!m򕏺$3jCz 'J⚩gN4ynxu}ӏ>b`c5us= ڭ =jH}:2'D[PxAvlYS;w+|A.X#Vd\≆w^[/>5{1'rϼ >naִg<^~RL." ]9 h y~W\w$ f_݀򓥟<񅗞v 2qS2aڋOg75mH}M` (3 M)#{ m`dpՉ{{ƃ/GnK˧L{_ O{9W\~*AW\wwOigb={g9cFnL1VJw/xƳ,.{, 0Dp \zr}0~_O}>ݗyC<Λ8@iECtM}_us׻\sVaH%Yz3]'wc iWy9bC*f jV}gy ou }+/>72+<~H2l0-vD>yь^5۶acwJї>刑p7_ߟt{zk9vpkO1`W{6/q|xܾf|qȌ{O7;A%`k |8 `,ixN1$qhIܞ|F6 L-CCx*CG֧8 zrJMiFtee5ѶcGgPFRoM]v*8#in-6ZE.l[i-$= Pi໳@K&t*Ч^^Z[ɶpGzFm7vLRd4&@pDd0(3hxaΗv9Ei5F H,#STD1PBv د.!O1AQH]P?{2Mkf19yig^,_V槿O=t-[^vTnmpK4 sA[ӣk6,`ѪG~ f;f eJq/ [#w=Юߝv2{ @Nn^{Ω%˯>;2\^&f0@8i&cW9af/ٺ2u#., *HUu?ͽ]uoz9Znn=pŌ^x16yijb!nX; S&xyMdB3 Z_e[iCdwt9킋p| :s1?eҐƓ;ny cu|ʵ<⋏%ǞtkG |#X5wf"- M64/qFs6nѻ]'\6s;=دVoZˤmXax[E(I-9zbOs)P]x׿s:Z`Fczw,pb"՗m.-xG+'8t%-֡9ϻ[NrtçL9ßrXRq`YBp]Ymπ=YK:w`ҭyEeEfgq ~1=/Ldhv=霟3o\͐ghtZ2uqߥ><6nڞ}⣺7j|=v%s='Cc23;fbiұ_cz/9㌣оs'nN-8˵fʲFC{^˴q)E.D N@EZ腘 +I}-$BߎTe3KsWIZP(A(k"iApNB4e@a&%qbVSѼ`Sz Iec܋g/wC3 <^"Ώ`6*-씴zSZh=Jmsf c2zey. Phj#VuF;z6D>$(0J$9"gBg!ajq!j cc|Go0r7kmzy=x7o k#L B~`+z [5w8p! h尟|gWMA„|?$4hmB~w}|dU ?P!]wcLcB\.R` 1\^_e0<}HQT%, aEVds] )ơ$.iR<L[!&q_# u55u^7賈HUmV.\Nqu~X %PReFReJ00PVG5E@aq@Y塔:?o_dx)m=Mkb2n20Ɓ(snrP, 0 # tBcGs@"M'~BA_fOsכ5v9k.a1L $&*nU!GSY&8JiKlsW6iY`'RF qveDL $QE8pp{嫾Fvq|9k@0zmFN=jX<[Z24lIq\pf&0pYp4zQUJ:fP++"MHG uw5 RPFuIKU_BoM'D^X`ƻ:҂,#gȉwol5} Ќ'tW54oTяk(Tw3G/Wg`ƒ_۾Yg6Ǎ u&/!(MuqsĘ =;z fKŋ6S|6ï&9li'L"򗳗Rڰ:aXUo?pSV/?1}Ҙ-Pݶ t0s}E jdΆpi¾brON,a0nBON.0 /:%O"ify;&1 mwW6.7l|Ϭ[xAշasbQ1b#eNxgIRaL:0]jc{櫩x<EX<%I\tq faw~a=8}}9Y~N??=1ciȟ~2Ю簁]2-Q0?wtpKHtQZ]"հ:y;xGk"ϒn?6utS:jP GRW~1 k=mցl_ѶWh誈M @IlS8iuʒoo}is*`./NeTX#Z 72SHn¯rӴzhmD)ke6tТ{R _~éskߑzseM2t󴋮ՓK:~筯ƝuWOu۲?}䅷XFmӔ Hqs|]2>`~C<ԧ-+; wu+|7r{9E2'WR:b$2S[cMKYj\X[hʀk">_V飊Im긐_c $UVP9WtM޳A"rvSoXx{{ 3毐U#\T H ~GX ` 8A74{R[uʈmߝNnò&tH@HG~)%L-zpuH%99RT8Gd,q{cH=ZZ tn4!v?˗' ɖoQFdlKSi~ML ACi3 }n9 Wl|xM^1ǝl{71Ʀ&M;jú߸L#$乷?箽JHZ@Ak} tۥu@2|(dKM9ݽuF=t\Gm2 ǍC:\7&ʻmX UGfӏ~Z;{S: Y8wFMExf5hH^(y NJȴx-}T2cuÉ]WLгsSfU >ʹ:~)50W~vVU3Kl K$ p~[,[c?E+'.ǷizvgXŬy64I V\YV5PKxFc鸉Gq1nRiEx%sS1Cl$@G28)Bbfx#Azr:t$ۥ߃7We/pkI yzN߀?5;FīO 5UR,' H"I}C0"[\l=vEPf)LUCĉReqdXYo5`iJ`+V\&0)5c~Ä`1w-3s8kCOL0m@TAM"1|岙m486M[,\Vhh 8”@ &`?sEUUUZoh `-'BaL eA WJUUUU[IڽʊˌwWW}n)ư$^M0&56SD PY5֖Rngz c;P0|2}D PH}ղ D[ eŌ=KªTUݾxQ(QUUeW~P]bIJ7Zr=݋ !EW֥l |ADRP*bz[v>HF^G9 ʒzCL c aq~o,]̫ J8x}K~*Yla#azCA׭"g;J~7{ J nU$mߺiنmH@LeJgy.Jdªb\X7$ *0ۿIƎ;\$ȜsLdUUB&T+rq@z3uTst"qTUU$W⦃7vdH;""ahj:#LvN,QJ?PJggfmVll(N/q9{]ht9g G)nh׮XhJ}{]8m .Jln-[֝Qо(S5"J/XYi  xgHr~Ցv;wk G$GcQ-77]Q_1atp0\?#(KjÜh=O)69RebӪ \PPl-Sj츜)1 `vBj+ @Myz*>T^Cdضk/:qp)ھam>.oQNf¾]1]g; ] ~QG]Jbc]kgYJ[r(Oŋ)muoM#Ge;TT*6\!,mߴjŽ:ɪ؜ upu=+3) j*֒|*!#z+iM ?If/[opxU}J[z '7^XғU=S<\6$+,Qrk]~Ԫk7TD@s#^}-tҔGו? \-G}9/^}g!I G}ni_~:dh t'n{uƪ;n[u_@,/gV'W_pf/S̚ȻkgTե8;2{֌p"4D_i߶kV> ڌ|Mu٦2~k$o\Px=mq5kc04ZSUk{nv N30G;gG^|مǍ蝊˫7p̟guvٙtv5]ժ16{;3q@Gٸf wKsҾڸ7>]tYg?|ǍSFc{㩹d~߯ԱêHxx%=H FVxͯ/'ݼt7VnsׯP~-ݷ̶YWzkZFĩgg= s._]fod7 akg}۳/?s9BoNM7\/ѧ>ʀg nohm޼ː#_x嵿0쵧ޞǽz͊| 7'^^*-|GӢO9(A٪>槓.7_2$ (FO}G.1^s9*W[*\)dw@erDB#GeO-]8~رCRuaԛ{ X>oUZ ǖoܰ21f hG~WdP',𺔅?sGHffbvnۡ}'EG`͆H_O‰ţS.=/\pמDd̥x;,{kenctظ@y?`UDO9#vƔ^z v>qd;gщDR,Ytq'aٍlb::)!͍ نe$Q"%kF)c5[jz`+r2q9+Z̶-*˘sR޲·gyd `_;?LbO9.ݪ-ZUǼ.VӚx2Lf0L=Fҍ{A8gdJ--3,H㚍eaLEUP*ͷsoz}ԿPߖGth\unwbiZ@}{hk?1?aݩWnk "k6_q{8+n{ﻳ-}C]𫯿[Y^(׿wxow֍}UL:t蚅_oiJt(|;ύKM߰e VAƺUKcDz%w>jmcxŵIJ(&R;}`0`Pl/Tջw;4Oܺ7?42~S${tҮ[N&hܴz ?,/ڻ{<4ϟ۪ɚ-s{¹'lG`smʦl^^$sNd"Wv٫Cntmyl~MZ ޯ|w?Z*){5uus~y٤<+|w-Xp΂92b8_~63M_K$4Tn][קgof͝<3/T̆Of0gue GU~4csC ۷bՆރU=E,۷QJ-&R?X\|/Ūeǟ6Okq!Þ^vG^}? VmyţF *ܲ D(>|Ҩ]qnϺsA0lXo,%㒊'X+/>W7iR϶|m_7o f箩>|x kpfl3 :u)O}匷>aE;z›ݷSbV#:o,ض%7ywIz뚥?֯r/yמx/>.#K?rMyWwkrѼ?zh޸vKO1:vpM (pn(ٖi3JLm-`&J˫3s h;zY NŹxB7M4''@롆`99\߀控N> kc!fۦmSJMLdYJ6oH{GsWMðlF$ºZJVu]RqEUK:wDˆcCJcq1"IiD4޵P۞`a6A⑤d az8jeg!۲(GR1"L3HȲڽk:';')DUF,tC#]Kq@!rFn4.h lRQ~iP+G !<r hrf7#sض( ClvЫv; !ܛB @R1hY 8`B8,odasCG^_4͝{Z%͟_ H  ,lz#z'7J0AALbFHra!ZF)w%q\7RDg@@e(`DJC !+;kxGDr9rҼۃ {!O_(DP 8qt)]Ҹbg+nWܲnGvwp_58"Tn\4uj BHM֗^yUJ|/tU-ڇ!YIZD}1A$em  b>anm4jS6Bbʱ|M3i1! p6}(P9cF㦛ny&QsOF!GR!!H|닥NM(a)1 i!OC/K94]넉iJ?7m"hٜH/[{thROwm1. xQvG_70-vX׌&c% 5/jg:W/3>rԣYbbbQsa1v5Eaq`ӻwL isCXiuk'Yu*8-C9@ZuQLY'z1 s-'*էHD 7DUL0[1D!7o){i}To[yuf؜6` 2F`s@`s#:ts>F`Z"ή}LМy!cbv`!"A! ߣ5uB߬KdRveQEhro w缷}C>_F)x笴#% pמ'riBS9ZSOs抾cN X}fvC\m0A{5 \xY"n²>}ϋJUoؒvH/;'K4?:NzQ}= W\|”i/B3MIQ68٬6ic 6c`3qLf004.nY]@4i%MF Jv4e0X2l擫6`SVmܲ9$Mak`]7-B46nJ4s51Ӵ!>5]ѥ]WG?9 q)yV2AꓖB@C" #?u\[oBc _z{訁^q٧s" P_~/[?P[*2#ߙ Vλ⼿|w.(^ȃ.=۳O<5rǜK["J.xG7@R=yYC'Bntq)'ױ0ӴW0+.}a67ܕcpakU|=Iqbܿ`ǁƍP[Ͻkg7w׳٤|oqfǞwRQ\w.^PmXϏN`zGuR__[o/i<ī^٣d ѳrc|"::~@òW'~5]!=kƭrJ+bΙeX0M=Ƕ9ȌTY51+b>2&HI] b%ˏWM1oU;w-# sf{tB/u`\[Q /wsfge0;U];uٷW1b n3$n ~\娓>SϘ6M^zyFHVWkE}2H1Wגν:w)mPj7ԩ>|?0 #{ޔc.uIuD X}g6 U[UӳWצ6NKx}'G~GW靺wrP1h鎘= B(Džfʦ4!|T,"n7 )򕈱0$uֳg߲km-].s ow *۸FMl`zzloVLysZCqzepO]aٻy~&tW .↏ޢ_425>h>9D5Q Un6$.zdxfkYc"wl刎-7+f ORD;0F筤'ĝ4.X}3 re p̮#FtϿk*v̊;vi\+&%;?BU<_W*UO iU9g*s0hVA<7ko=w)FٶI=Y7ϟ_[o|yRdKMίK-'yÎs=O@*rNXhf{ciB*eQ`ʀ֖ElO`'5ml[1Lsfw7=r2$;N̪8Y-VoA˓K5;[ nH)~ŸxE|[ 0vpF!X6oYy U$]AX B3M>9rWU$`}cYT9z~cW λkﱻRQx7ޫNFNc`=}k$6P,+aچ)ǎ `T7ɬml//'Lɗ^~B%f[Y'Gwmjғ{Kl˒:y"4+AIGWqh?Ip9%+^cI>4d")rٯ̭7ʹ:~)50WyiVY"I8GHRh,]Yy o!дwt):`]mjA)4[UgnM3˵'gETq(ܒ/f|a9 R,9Ypd懳^C} xG^o*>kuI]Bsz3H_tU"䜋8ce'7aOlS1SΜ[~p~m:9bhX5`5E!}/h}Sqs(退6|~ӛR0BmEWQqcªMPt<'QۮL L91^)[1nl T&Y.B0Fe/aCG/IN'geJ2Fq#f٬:aY1E~)q+s\8)[Ȱ7& eT75^<*fPOk&M*AlBlVB\$#ۺ ~&?3mt^Qb=n7p59-uQ݊^sQ0w 9GT_t8F {H8nU @0 gѰ9瀨Bev8w-+ )߳Fb^ݵKĺ s!j.I *' o) iX)0m„] a0 Bd]G\ <6Ņ| [;=g@ (9uQoPF!,d`D }K&hmD$ #ٖ%d  TU2mN|?3?>Z/IENDB`vlq-2.0.4/sourcemaps/README.md000066400000000000000000000130611413332536400157640ustar00rootroot00000000000000# Using vlq.js with source maps This library doesn't include any special magic for dealing with source maps, just the low-level encoding/decoding. But it's actually fairly straightforward to convert an incomprehensible-looking string like this... ``` AAAA;AAAA,EAAA,OAAO,CAAC,GAAR,CAAY,aAAZ,CAAA,CAAA;AAAA ``` ...into an array of mappings. Suppose we had some CoffeeScript code: **helloworld.coffee** ```coffee console.log 'hello world' ``` It would get transpiled into this: **helloworld.js** ```js (function() { console.log('hello world'); }).call(this); ``` And CoffeeScript would (if you asked it to) generate a sourcemap like this: **helloworld.js.map** ```js { "version": 3, "file": "helloworld.js", "sources": [ "helloworld.coffee" ], "names": [], "mappings": "AAAA;AAAA,EAAA,OAAO,CAAC,GAAR,CAAY,aAAZ,CAAA,CAAA;AAAA" } ``` (A source map simply a JSON object that adheres to a particular specification, [which you can find here](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?hl=en_US&pli=1&pli=1).) Each line in the generated JavaScript (`helloworld.js`) is represented as a series of VLQ-encoded *segments*, separated by the `,` character. The lines themselves are separated by `;` characters. So we could represent the mapping like so: ```js mappings = 'AAAA;AAAA,EAAA,OAAO,CAAC,GAAR,CAAY,aAAZ,CAAA,CAAA;AAAA'; vlqs = mappings.split(';').map(line => line.split(',')); [ // line 0 of helloworld.js (everything is zero-based) ['AAAA'], // line 1 ['AAAA', 'EAAA', 'OAAO', 'CAAC', 'GAAR', 'CAAY', 'aAAZ', 'CAAA', 'CAAA'], // line 2 ['AAAA'] ] ``` Using vlq.js to decode each segment, we can convert that into the following: ```js decoded = vlqs.map(line => line.map(vlq.decode)); [ // line 0 [[0, 0, 0, 0]], // line 1 [ [0, 0, 0, 0], [2, 0, 0, 0], [7, 0, 0, 7], [1, 0, 0, 1], [3, 0, 0, -8], [1, 0, 0, 12], [13, 0, 0, -12], [1, 0, 0, 0], [1, 0, 0, 0] ], // line 2 [[0, 0, 0, 0]] ] ``` Each segment has 4 *fields* in this case, though the [spec](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?hl=en_US&pli=1&pli=1) allows segments to have either 1, 4 or 5 fields (in other words, 2, 3, 4 and 5 below are optional - in our CoffeeScript example, the fifth field is never used). They are: 1. The zero-based starting column of the current line. If this is the first segment of the line, it's absolute, otherwise it's relative to the same field in the previous segment. 2. The zero-based index of the original **source file**, as listed in the source map object's `sources` array (since the generated code may be the result of combining several files), *relative to the previous value*. 3. The zero-based starting **line** in the original source code that this segment corresponds to, *relative to the previous value*. 4. The zero-based starting **column** in the original source code that this segment corresponds to, *relative to the previous value*. 5. The zero-based index of the **name**, as listed in the source map object's `names` array, that this mapping corresponds to, *relative to the previous value*. (This isn't used here because no names are changed, but it's useful when minifying JavaScript, since `myVeryLongVarName` will get changed to `a` or similar.) We can now decode our mappings a bit further: ```js let sourceFileIndex = 0; // second field let sourceCodeLine = 0; // third field let sourceCodeColumn = 0; // fourth field let nameIndex = 0; // fifth field decoded = decoded.map(line => { let generatedCodeColumn = 0; // first field - reset each time return line.map(segment => { generatedCodeColumn += segment[0]; const result = [generatedCodeColumn]; if (segment.length === 1) { // only one field! return result; } sourceFileIndex += segment[1]; sourceCodeLine += segment[2]; sourceCodeColumn += segment[3]; result.push(sourceFileIndex, sourceCodeLine, sourceCodeColumn); if (segment.length === 5) { nameIndex += segment[4]; result.push(nameIndex); } return result; }); }); [ // line 0 [[0, 0, 0, 0]], // line 1 [ [0, 0, 0, 0], [2, 0, 0, 0], [9, 0, 0, 7], [10, 0, 0, 8], [13, 0, 0, 0], [14, 0, 0, 12], [27, 0, 0, 0], [28, 0, 0, 0], [29, 0, 0, 0] ], // line 2 [[0, 0, 0, 0]] ] ``` The first and third lines don't really contain any interesting information. But the second line does. Let's take the first three segments: ```js // line 1 (the second line - still zero-based, remember) [ // Column 0 of line 1 corresponds to source file 0, line 0, column 0 [0, 0, 0, 0], // Column 2 of line 1 also corresponds to 0, 0, 0! In other words, the // two spaces before `console` in helloworld.js don't correspond to // anything in helloworld.coffee [2, 0, 0, 0], // Column 9 of line 1 corresponds to 0, 0, 7. Taken together with the // previous segment, this means that columns 2-9 of line 1 in the // generated helloworld.js file correspond to columns 0-7 of line 0 // in the original helloworld.coffee [9, 0, 0, 7], ... ] ``` It's through this fairly convoluted process that your browser (assuming it's one of the good ones) is able to read `helloworld.js` and an accompanying source map (typically `helloworld.js.map`) and do this: ### Chrome ![](https://github.com/Rich-Harris/vlq/blob/master/sourcemaps/Chrome.png) ### Firefox ![](https://github.com/Rich-Harris/vlq/blob/master/sourcemaps/Firefox.png) You can try this for yourself by cloning this repo and opening the `sourcemaps/index.html` file.vlq-2.0.4/sourcemaps/helloworld.coffee000066400000000000000000000000311413332536400200220ustar00rootroot00000000000000console.log 'hello world'vlq-2.0.4/sourcemaps/helloworld.js000066400000000000000000000001431413332536400172130ustar00rootroot00000000000000(function() { console.log('hello world'); }).call(this); //# sourceMappingURL=helloworld.js.mapvlq-2.0.4/sourcemaps/helloworld.js.map000066400000000000000000000002601413332536400177670ustar00rootroot00000000000000{ "version": 3, "file": "helloworld.js", "sources": [ "helloworld.coffee" ], "names": [], "mappings": "AAAA;AAAA,EAAA,OAAO,CAAC,GAAR,CAAY,aAAZ,CAAA,CAAA;AAAA" }vlq-2.0.4/sourcemaps/index.html000066400000000000000000000006101413332536400164760ustar00rootroot00000000000000

Check the console! It should print 'hello world', and the source of the log should be reported as helloworld.coffee, if you're in a modern browser (you may need to refresh the page with devtools open).

Clicking on helloworld.coffee should open the original CoffeeScript file in the Sources pane of your devtools.

vlq-2.0.4/src/000077500000000000000000000000001413332536400131125ustar00rootroot00000000000000vlq-2.0.4/src/index.js000066400000000000000000000030671413332536400145650ustar00rootroot00000000000000/** @type {Record} */ let char_to_integer = {}; /** @type {Record} */ let integer_to_char = {}; 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' .split('') .forEach(function (char, i) { char_to_integer[char] = i; integer_to_char[i] = char; }); /** @param {string} string */ export function decode(string) { /** @type {number[]} */ let result = []; let shift = 0; let value = 0; for (let i = 0; i < string.length; i += 1) { let integer = char_to_integer[string[i]]; if (integer === undefined) { throw new Error('Invalid character (' + string[i] + ')'); } const has_continuation_bit = integer & 32; integer &= 31; value += integer << shift; if (has_continuation_bit) { shift += 5; } else { const should_negate = value & 1; value >>>= 1; if (should_negate) { result.push(value === 0 ? -0x80000000 : -value); } else { result.push(value); } // reset value = shift = 0; } } return result; } /** @param {number | number[]} value */ export function encode(value) { if (typeof value === 'number') { return encode_integer(value); } let result = ''; for (let i = 0; i < value.length; i += 1) { result += encode_integer(value[i]); } return result; } /** @param {number} num */ function encode_integer(num) { let result = ''; if (num < 0) { num = (-num << 1) | 1; } else { num <<= 1; } do { let clamped = num & 31; num >>>= 5; if (num > 0) { clamped |= 32; } result += integer_to_char[clamped]; } while (num > 0); return result; } vlq-2.0.4/test/000077500000000000000000000000001413332536400133025ustar00rootroot00000000000000vlq-2.0.4/test/decode.js000066400000000000000000000005161413332536400150650ustar00rootroot00000000000000import assert from 'assert'; import * as vlq from '../src/index.js'; var tests = [ ['AAAA', [0, 0, 0, 0]], ['AAgBC', [0, 0, 16, 1]], ['D', [-1]], ['B', [-2147483648]], ['+/////D', [2147483647]] ]; tests.forEach(function (test) { assert.deepEqual(vlq.decode(test[0]), test[1]); }); console.log('all vlq.decode tests passed'); vlq-2.0.4/test/encode.js000066400000000000000000000005121413332536400150730ustar00rootroot00000000000000import assert from 'assert'; import * as vlq from '../src/index.js'; var tests = [ [[0, 0, 0, 0], 'AAAA'], [[0, 0, 16, 1], 'AAgBC'], [[-1], 'D'], [[-2147483648], 'B'], [[2147483647], '+/////D'] ]; tests.forEach(function (test) { assert.equal(vlq.encode(test[0]), test[1]); }); console.log('all vlq.encode tests passed'); vlq-2.0.4/test/index.js000066400000000000000000000000541413332536400147460ustar00rootroot00000000000000import './encode.js'; import './decode.js'; vlq-2.0.4/tsconfig.json000066400000000000000000000004631413332536400150350ustar00rootroot00000000000000{ "compilerOptions": { "allowJs": true, "checkJs": true, "noImplicitAny": true, "diagnostics": true, "noImplicitThis": true, "target": "esnext", "declaration": true, "emitDeclarationOnly": true, "outDir": "types", "noEmit": false }, "include": ["src"], "exclude": ["node_modules"] }