pax_global_header00006660000000000000000000000064151144126210014507gustar00rootroot0000000000000052 comment=2f30a81bb2beecc24693ea3a6624ea02f7ee9475 replace-in-file-main/000077500000000000000000000000001511441262100147315ustar00rootroot00000000000000replace-in-file-main/.c8rc000066400000000000000000000002551511441262100155730ustar00rootroot00000000000000{ "exclude": [ "node_modules", "**/*.spec.js", "src/helpers/handlers.js" ], "reporter": ["lcov", "text", "html"], "sourceMap": false, "cache": false } replace-in-file-main/.editorconfig000066400000000000000000000006021511441262100174040ustar00rootroot00000000000000# This is the root file root = true # All files [*] charset = utf-8 end_of_line = lf indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true # JS [{*.js}] quote_type = single curly_bracket_next_line = false spaces_around_operators = true space_after_control_statements = true space_after_anonymous_functions = false spaces_in_brackets = false replace-in-file-main/.gitattributes000066400000000000000000000001271511441262100176240ustar00rootroot00000000000000# Set the default behavior, in case people don't have core.autocrlf set. * text eol=lf replace-in-file-main/.gitignore000066400000000000000000000000621511441262100167170ustar00rootroot00000000000000.DS_Store .nyc_output node_modules coverage *.log replace-in-file-main/.yarn/000077500000000000000000000000001511441262100157605ustar00rootroot00000000000000replace-in-file-main/.yarn/install-state.gz000066400000000000000000004025321511441262100211140ustar00rootroot00000000000000‹¬½ËÒ®KŽd7í6'ÛÀ%¬Ü­”2•R÷ ˜·@H)ɽMUmGï² G¾sˆçÛ&{R|]£ÿ_µjÕ{È7SzNú?ÿÅÏ?þËßýô‡ÿ­ÿî—ÿîßþòÇŸÿßÇão~ü×ÿãñûþñ×?þ—Ÿ«ÿçŸëßþ®ùŸ>ïÇóãßõßýòÓÏøñ×òüüãŸüòÇŸÿ®ÿæÇøÇ•rç#ÏžTúÉÓ§Ú)cGTÆÌ½zl½7=}$íŠÔ­½V�·÷;ËÏêãÎ%M'\&UÚÕ¢ÞÞ~殸�îœåûйéÏ?þãßÇ~šþå�?ÿø�ò§?üÍ_ÿ£ÿô—÷w?ý›?þò7ý�þþÏ~üùïúåýüãŸýmüòßþô‡úéÿêü÷ÿæøûü÷öã?üãšebsC™wÆÝYjÛù½EmCëŠFnYtTwõn¢öîLݲ¸LvN›[»Ìãx5»¶Í�‡{¼¤tr¯ªÓs´âª––Í·×ß/koãsß®¬é¼Ö»dßÃ^³Wv†W ½kæ™u÷PóÉêÓI|„ïN=wÝ¥ÉFÎÒkÍãÙ©Aùð°Y-ëž÷æä9²%hÛ·×o}hmyax¦T1Ìgªž>iî�º�ß;'LÕß~ÛîröÙMìï= [ö^ô½XyQ§¦¹Ò¯é'½R…R×Ò >F÷.¾e¶›éÛëßG*w÷Šfßë{5áE“æu ¬àͧرN„žXöÉ«¶5Æ›|¨Kk¥Óóç.úÜß¹‹Ø…ß°ÐäÙ#C±ü{õìQgÁ¶C[ÏÕ¤ÓC$z›öVÑv‰ÌÞ_ïŸ÷î­ËW’S¤÷]5íeON ÝØ¾�‡fD_&ÁÏFµs=ìEcKW�LÎå·o…°±ßæ‹)yï³^ëãóVöUæ|y^ïu}}ýüç²*¹žôæÇ‹tªÖÙGîŠ"ŽQQ^Ûݤ»b횉c]\5ëà³¾Srbøú8^NiWµ•ç•mݺ¤¿<ž¾vðYyIÊãÛë_®¶ñ”J]¤*Eü¬Y¹}í#'÷ñí/;�Šw†É°»R›PhÊ穵Œƒ·cÌÃ*dýF𗟬$Õ^õf°õÞïýÆõÿø'¿ÿùýmüøçùWùÓþêóË_þë_~üÅÿúëŸÿç¿þù¯¿ýõŸÿ)7«Ér5GæÕæ³Ö^[zÖiõ«%¢ÓŠã—6‰¬“ÝgŸ¶Ñ­þb—Ó»ræîŽ·HFóZºå»æ8L3µy‰Ï×»+ËÙ“¹{—]ÛJ¨}ºTª¥ö�nÇN³i¿Ng¢ ¶˜3Ôï°Ç9õÊ4Hwœf¥‘÷6uø ÒŠ<‘ën¬S[—>m•­Ñký±ìMûrL›‹œ î•ïæ8ÝwÃ&×l ÒQo·N‘·Êfåa=yqSwï•I©©#•„g²$^¾µÎÛRܬ�ïM±sŸÑŠq¡¯‹zSf6æ£4ºwŠÚD¦cí,Ûž¥wgÜì=RÛÄΉڪÓL¼¦ØÔz1ŠÅ:û9/uìkJ·¯œ:TÅLO®¹Ý[_?ÿ�GVY§}+å8w½÷Œ}—\#SMçaµÜGö¸ÏµwDng¶úS&óZýN®´Mº)ÔViÆéñsƒÊÎÒ–‹ý=sM›N~]¬’´£*ªì²°›UkÌÞââ÷Þ³^êU‹Xçå�µä©ŠåËT»¥º/óîØqHêª(¿"zuÝVÑ>ùÈÕªGTøR{ý¤±z¿Ãæ®­¤«gšólëÚÜnãË?=‘Ç%.®¸›<7é #U!‰Í±LKZÎJmI¿6D´·ä墥}(Py¹Íº,'¾>ìÐÖàC•®L;§ÎXÔrw‰=‘sWž¾ÜѺWnüLò<ŒO»Ô+õ7c~çÐ 6­Š]ª8JBͼY‚âh•qÉZ�q–Jízþõó?Å]�n³ú š3F5´†*”Ë–¼\º:®/]í´d÷ÛaS•/ï–'%ëP=ekÔ~£ÝØ3s½uhµ‘¼‰ÈZ×m›Ã´ß;üu±ýôyÜJv3Ï­a}}Õʜý¯Ý-$1›?+÷>–µû,ÙèfHóó3'9ås¯­òVå~yÆLd©l™ë½|·õëõßÞ{T:Éü­æzÇÛÞm¢S'¶–ËØql}{§Ç\Í{f¥uûZzÅš7'« SÉeO}²"×+_w×Ènr]ì·}Ÿ¬ôõù›G]Ï¥k’«ó.Ñì~lΡµîÜ>²U¬¶¬Øsc¤‡“_Qîå,ÃÏsê]Ê‹—ðD÷¤ðÊÙ–b/ÑŸ�µ×}dž×ü·‹¥?ÿW¿û9üWùWõÓ/ü«þå÷(Žþò÷ÿú—¿þ³?© 7«Ç¬·Qÿ�ëK–¤¿p¡Rkb�‡sXw>á%s|Õ«{xe‹õ“©›Žstî¾cË–x%ÍY'µ›žu.3à‹é•v®à>÷FùóØKÔèsÍ¥ÍD’å’d-ïNÑñ“ ¸~Ý*¶WzÚ[$n\Eð´÷oÀ1|®i�î¹#¼Ÿê0QlíÜK‹æÜpz«ÚwcÏôZ!~GESú¹¾÷.ö3)a-¹—›xßúúd¦ª¹<eƒÓu�¬µÙ.�Nfzñ‘w[Îa›b'‰Gç_ù¼»µFî̼ïè®G„JVu5½Ñe)‡ý&mz­Û�¦ýÆÎôŸþáçêù¿ÿíOïoü¿ölÿߟüi»S³KYÜk{ß¹[&xÛÃ#—š\÷µòâ^—ïJÝmµ]Æ][�DvÛ9É.ni¥Nm§c?‹Ó—bÞí£3Ûks˜Q¾MõíÛÑ5éçªÝ°ì×&¼K¼Oç™§ù|iï\‘VB»°@ÖxK¾'råní³k/ñ{ú×s§zgkðivòÎÆr{b'þ+^Y»¾¾þ©ÇOç¡Ïä©·âïB™ÇŸ”â ’Ô~ûÒî‰Éô»j�Î䬵€ËðKÏ3{y8¿-i.çíóÆçÄr}&½¶:_*Ÿ]ýuÝ:[t«j[+õ·½çùõ6“s}×9ïûëçÇw]\κoq�;/ÚGç…¿s¯/* Ä!æ“‹KÏ;ÝÚ;Ú£q¹='T¯pŠÅšj�kf[T‰v,§¥ ÿùúú—\Ý´ÎÓõ–ZèdícD�‚OE/yLv §ˆîˆ‹ucÌ 'ÌÝÝié5'lÍÙ)`†ìËó¼©ô�ñ\Ô¼A’û–Í×»ëê7»� Öé~g!>Ï·ï÷–¼ÀoNɘ"íHáノ{r†Îá}‰Ž†÷Á¹~ ƹ³{½ º(­TqŸ�3´jwôµ÷ußUï¾Ü´wv 1n©y¾xõèl¶E{ë];Œ2W ^Èh*ïdèz¼Ã÷åî³Ln‚$YÏ${T/tÈ“uïÝ�óꜯ×Ïs•ئ '~[¼§ZtÖ‘ô5ï-�«V²K☟+¸ª)B¡S ŽSÄ]ôúIÛî”c‡¸üV×Ú×÷µÄšËú�Fakù×Õ]ŽÒ‘%{µ“p·ÇÙÛöÍtëx—YÐˬô³mÅk½/­÷lj¿ãëè¨Ý}O쮣®Ùè�öÈ=¯ê„™ø¬žW¢±¿& �Ÿ¥Y+y„Ü-™ëE„mÑšÞYdÏe·ž½/(�`ÛW—Ä]òt‰ò©UYIm{�†”ê*ËYmóâñ=ï§_K0ó)¡e`8ãuÓyZ›kíé½@æ†ò¬jгG¸MlJî·]€%lš€\¤÷sã6™Ê•ûëï7J{�³7Gì9÷±¯0lø7XóËšƒvþ�ó–ìfýŽz¿­¼ xY®~»R 26´ï¾¥¼ùÅsç´,^ŽÑ^Ûük’mÍ[‹ßë—è¥rùØÕÐÒWhŒ_ØÕ{žoÑZlï¬VÚ¡àñßöEUEιRö–:‹ G°Ï@O¾�vóe©=o��»%9ºO;”ã ú²}s=âë}¤æF�¼§ÅJruálíUC{Ô 7¸j{kÏŒçÀÛA˜Þµ·ÌÒ«üÎI)ÒïŸÿõ+Ô.'oe{>íö+¨)›q®^§¡½î©ÝtŽ©”Ĥw„Ýu|‡ÕåG€á(ï"!6ìJñú‘>06I¬ì~ëpݲAó÷ýóçs�“:îÃ.}ëU–@Ô’íÇ—'Œ¥·_-é|g¡"Z(ò�FûÄ>›zÖõXg÷sËMF¤ô©Ê©ÀBŸÔýîê%‚�*fâûúg‡*•înÉ2{“ùb¬t¥ø;{x¤†Û\ß|žuz¿õM}QÅù¾8X�ÉMní¢¶Ö9™²_ÓB �Ëãìu^|-qÚ €½óŽ¥J)¡ðµÎÜâ ,nTfÅͦѣ•r)ìùG|x¶-êÁÉ-ØnÖ;¶²É�>‹q†\鼎 ÈTlöÈ׸5kìÖh¶³³öË S½d}›Jq#·g× E±3$4}ÁÞÓÊO‘—¶¦¶Ž‚„‚'—û¶µõå8�×{åd‹Òå±´Okú5ï‡þñÒ²GnWß㹇^3´"k^DÓ:]Ïù<-=þ8´s[n3_·Sïín(MÖ6åîònfgo�]º"€ülxùöõÙï{tè‡Lû6�¿²íj¡½Ã¬ñ ê¬Pn Fù~-¸Þ]Õ—k� 2/:u{ôX4¨¸ �8Ž“}Ým÷Ü£ù²lÓ–]þ¸÷Ì×øÃÍ>!Òó¸m/Ývd(‹î&À˜™‡MÌfü\–Eù]XY ;Åh‘Ú;ö&tĶÙTv `Q¾õ8ö}Ã+$°~¾¾þu#X—ض—Ä,v%òm•ÌÚ¾,ö‡¬vuKÒJ™>Üh½4Ú²^m¹ Ë=ÌnZÞIs�p]¾*|1'½ïEŽ~ÐôK@PB—_¶£Ù´Ée»l¾” jíÓ’Û =¢­{ÕU äykÄEx]eŸ•ŒÆÖ¯½¡àÕ㉠N{VwQxxÚ yëûýS×м4�¢(5÷Q^µp¨]“WõbgÒ8;L®=MÖ”Äku|�Ó9ÐeÎ’7笲õÑ[©�­¯º5XÊs_P –Òä×ûOÄØñ˜»êéâû”ÝNn¿ÙB‡’`åZ²5��œú'ô#ˆFlB¯#zWž%=©ƒ¦¢ìB‘`y’ê8!Þ,×þþü=;/¯yrÉf€‹z»ÆÇ½;Ö¦9OŽoW¨ÍV£ )ö­t(ù~Tµ 6«ArK;ÊÙëk'n¿\Qƒ¬:t‡f×ø^w y%x†îݨ쾗ɹϞ+—ôxùœoÚÒ»z¬ ÔqIƒ"¥oß©òdíZ6®¼ä·¬E–/�žU³ïA�ƒCgÎüFÿõãÏþ¶ü0õ¿í? Kçh?÷”óYžÊšö€ÄU=‘•£h è:JÍ´€ÂÙjµ\42+ÍÐæƒÌd@Cñtg£dÎ:� ˜î®'ËÂê1œkŸP©¾~J:²x•/T½Ø–B_z ²st½ù«á+nwŠZ]Yd¾éÈy'2Ÿ{NoH·ô‰ã3دèz6¯‡£+Ëïí¸>q~£–þñOÿõ/ÿòßÇï÷ãŸã…üß¿üåŸJÁ$îî~ùÈ%B±¯©T‰�¢6vhS·�{Lú…Ï̧e/zLI“-%&‡™F*ù.´Öé¬wz$â:&Ïú^ÜEu—宽ƒ¤“•åŸV<ìè€ÔÛ»ˆmJ±CϽ«÷‰½×»êt¢e ÛØ«·%ˆvTowðÙ|íëMöݭ͇3d­ô�5vº}oÌyúCÿµQ$jZBfoé^¯d²÷y~ä�FÒ^rs7ß½(YqùJë�K�x6@z›N…ô{'g¬1Ù£†óÍzé9¾Épd½¡/�Oî%楳bI}pÂÞåó«…bŸ%“=÷­´“?LÇ4‚‡ ä~eœs.ªªYñý&Ë1>tDÃïNæû|Ä…j¨6�rMîyN…¼út \]päM/q投j.´æ²Úœm¼pfFo†üú:©m%yëk�”L¤!ÅÉÈ7¾çh%¢ÍúfîñÓ[Ež¯G{tüQõû”Üm{är{´ 291ÞYm)»¯…î=“ šÀ GêËy_""ûë��§Ô§^ØWáx÷ªö†¾e;ÕÊû:â°yëÒ«óž]O?s¤÷žôŹåÒ€5¶uÌŽWæ>êOäZ�—†ÿÅÛ®k -^ô5Hgkð ã-kp°>ð&$hÍ’[›�m9„˜�?ž«tüåås” lÆy«Òµ>ËýP3Ñ‚fv?ÉÍoŠÁ‘øù¨6ãRœõu“)Fïûfí5§ƒhBy€F�­æn5Œž_Oæ�à.Úñü¨ßëÛ—ÞV·ŠƒžåÃrzt,­ ðÚß\õxŒ—)ÑUìÔ_ïŸ�|+2y£§í}n¡{Ä�‡n]â–N_ÐõÍcÒLbÚã|õö‚ዊ‡ƒúÈ÷4ˆ¬Û†èöEé¾A4ë¿;@Hó[YÃ[@¢ªØIh¦î•‡‡>>Kôé:Õçê;Z¾�/ämgñà0q­óžë°í@»IR~½~ÎëD]säI›¶çŒsó·Øß’ˆDí֯ײ٠ û-ÉCylñM@{ýAò,°WÂH‘`ÿšä‚÷ÿÏ ¥ª�»’�“_7™†j– ˜È`Ž”EŸF ð]a¾šÆ„^4Aµ°4sgy=«¶�é%Õ׃&‡IŠ)§írÎ:ãûøÄÏîä½Ù½ß÷F™‘Q³�E¬®¥KŲM ± •¥�_“Õµª·mpîúÚ‡Þø=¨äDµîyÛö››z–xÖûÞwööŠT’÷Î쯟¿úØ[Bñ,’-zN œ [c®eÏ¢¢à[eÚÎ64ö{AÓÞûRŸEPö 'ÝêàÇPY‘ǾÂ5í ±Y‹}¾^ÿ‹÷¢–M8�¼{.•r£Yá#¢Á³ ¾Ê ª ô�ĹöX%¤fðhm�¸uó*R…óÀb­}Ú,Ï#‚Źè­`xô¿Þ�LÉ¢ûP¼�ÜÁ+¬JÅà[�»ëÞ·j œ±Ý€ÛÎ|ë)~¹J \ƒK^¼Y/€îN¬_‰�“|ÇÁËS/¼ù{ʨH0±¤Ì¾8i,ñÚ]ܪÏKw:ÝîN ²ƒ=ÓsŒÂtH±žÂètž‚_ÝÊli%ç®ítçLJ$�ÅçÖ[¾·ªX£ñ(\TÅá™Ã-Ï_Kl£�L#‚á!ß‹G7Hlä­=Åyoå'£cÃfjk`Rð&¾=O�E2& €d]´7}oÕê|馮ó)áÐJ)ÞÍP�­¸Z ƦÛùÑôuhYí¬¤XjÖdS{å’”‹àÄZ÷Îxí—¯Jï‡? ‚µ ¡Š†˜”(×ZÇzö™é2ƒ$ó�ŒKá3M£»åX¯aãusnÉÒ[ gøŒË�›‘ çk4eA B,A4:–2<©aüyH½'B@H5âZÜûÙ:»ö.ð-€¥yׂëþZ4ÂAb] Ï»�¸,»�á”~ॵϲ&–¿—ÌÁZï•_~ eçöà×’ª�$-¹è$gLàˆ HA � BGg]ñã�ieY«ý°5ŽÀ¾U÷¨d‰ešÝ=s9_ï?©°2ÐÇ8 ;ÿãö¹p�]:Øæf |Œw1·'4¼úð4,vô5~�ì%êŸâ_ïÑ9ó:”´�jEÀ!:HÐg¼•ã×ׯóî @ô1è;kµ' ÎÁÏØ*^ž£|—èÎs–? «©‚¹ŠööK‡_‡¡Ñ,…„aí³�dÆ7ÖM1ýŽÄ9 å¯ÑÐ[‡Ì|À8$4+ïKïöX©áð�åG|*²o¾}û å�ˆq‹4¡ŽÏ}›ÉfêÙoä&¨ÕòÒ»º ¡9o‚Mï×õj›7�/ �Åq vÏâ U¨ú»Ã¡VHS–lÚ@½*‹¦àù\~/ƒçãØ¶-3• .Å7œÂCÙÛ÷Õ€á€Røl?wóo°1?þìÙ�ÿìW#Ö³?¹!k#Ø€V@È=ë&¿hxõU¾Á ãÜ“P s˜B´ùbË¢•±LÊET„*E`ÊíŠ[&ËÛyC[�¢�¨übr¾jÙŠeÔð– œòh|[b/Åa«§ Z¤ ¸T�„�°GS¶9¨`£Á²šÌêF+f»„Þq¿z%öCÇG ¦©g³o‡çèï5àçÑam‚Ô ³i±n¨q?(¿ùZ�>W/‡/'2ÜE( ô±Aô”å³]oÖP],-tio«S׳^km|JvHg#Öëë u!é'’·7Ýê2ë6Ô[]vý’|ŽZbàˆ|½ÄS½Ê!òü&˜€[lk/gM}?ë¼Ûhdîõ¶ÞŒAäÑ×ð�ÀâVºÌ'b`Œ¦J_³x)¶¿‚ Ô»ßqB°Ç´‚\:Ó�Õ׳ͨKV`ÙÕèm<cAÃØ²ËH�.¿ÜºG¯Áì'¯œ×{‰îcá´p³¢~höâ{O–æ<7=P»ƒÊ†}�íÙê›ËÞÁ¥Ñɳš½>iƒ ü‚±·yç“òé›.Áxß×)M?u„‰LWB‚‹ªˆè‚‹#mÑ­�!`m>—G¤àð/ìH¦Í6NYtí÷&”!ûì´<3øP $mTô,ZoZ–¿q ýø‹_ú÷ÿ®ÿîÇ?ÖúëÏò¶*G·é£Ù1÷°0‡>G©@oÏÀMØc�d‚¼v_ÉÈãÓ žg#^ÀBV‚�Þó�õxm ¿¸ÈbCOë�#»úŠû=ko}Vû~^ê÷è3JÓ YÑŽ}âÊ´ŠÈ[Ís`K8Ê™L˜|Á“>½N…l1÷_W¢ŒÊ×ÖÜŸ»-Îâ}ô㙪€ÄêëÏZiüÊ&„QM¯n: ÀÐKY¥ Ê� >a­R–»H;¿¦\È/ynaí¨"ü Ú@� É]  äÖ»�g<õêת›Zu8w è`!�Ò>ç�‡@èÚã¼®cÑ ‡÷}ÇlºËo­#RÁYµ}6PU»´bõi5ÆÆp·Â/d'¿¶¤t¼¶œò�CuJBÆâ„¯³·}�÷‹ ˰}´`r˜SUÞøÈ½S›A<„"èv½„–9ÝLzª>ô,Y�C½(ë·¬Ñÿïgý/~­•þ~Ø ‚w­…ðË5¤» m�w 6>àÒ~·u ÒG/ºƒÐ2@ø½oÍï¡1èb‹ùº·]QɃ¶ó©G=“õ@e0mägQuÞ�á¥� ïªã¹€,kû¼2Ú7eê!™†ˆ¼-h(ß^+a;lꪊ~ô}kz ÇÙÎ$Ù½š‘8fs½(ò¡•] ‚FÑÃéIu?D¨œÞhœDi'bGs{ÉY±ÊÞcˆ„ç˜ûì¸ó±¯Ékú„}dÀÈ8© v`£±»¤Möæ½Ë�­_Ù¹368øxôë ú&÷ØËX€÷Nî|ëx¬U: {F¬ÓŸ èª*À¾€“=A^¨ýø²¹CÖ9ì1yݶ626£XwÓ[ˆ\d$flG°÷𵄛½>±¦Ä‡Ð]¬€è!7§ø¢Ç,hi=lpBì?Ö»¾§Ön$–Áû°{lh!ê$ \¦D¸f6í=f¹µ’A”,Ì®>—ù�¸ƒ˜‰tZ$p|”_!ÂwÛ³»HTŶ۶­ÈÝ㦇œŸs¬7´_')Læß ¥z7r:¯‹X1È¥Žu$„tÞž-ØíŒÃwÁA¬ì4MvZ×…,'’¦7ðÌÚ<…*,¡“B 3û*ñ|vDLó·²rþÄ4R8@a•|@³èÑ"}QÍÅH 8¡R§ì@œâ�R\üìs7åL›�Ãß�Xý<�¾¬ `k’Kç.5‚86¸–™jFz#�æ·ˆþ¿è_~÷Óþøÿ”L¿þö§÷Bu¶òFHÆ�s ‹rl0ÛÌB0ÌA2ÈGíÝ]6‰H®–�H ño%P4œw�oDGžm”Ì['Žç¯Â0C~�y?‘.ïçëbaE¢æK½‰_“ ÜS@¸^QÙWï…Ë=@GEx ü¢ð"Mnç;4žÉï8�ñÅ–±G2ÏЋ‡Á©ï؃5êë� ºLFày®ƒ¬*tÌŒ¨mþÄ“©3}ÂqV T/ K‡`?2˜þµ¸¦Å>)G� Ó"$‘½EáA´¢g3´ˆÒ|rQ‹Õv)¾?àì`bñôÂÌQ�h¶’-X7ôú>�×ät”‡ÞEw­‡p€aÂË”p�Çþ©[µâéûS÷"Cœ°j<_UÞ÷v:âôOÔ4âl8.Îç@—I g`âÍküv 4@®ä�Y� •DÊÔ=RÍþøo>'��Þ¡Õ…ê©…¹Z@9ß+í„ó¦RðûÞ»nó…aÓ'�œ™ú‹�ˆº×Èž„ß�¹�'6ÈÜ}·"aÃW–å‰Ïü„hÚÕ‹rÞõ ¹ˆ,º…ßsV7°* [è|pðÕžÙHf7»[^ È±èÀ;¦„³dBš@×>\�àÍEÙÕ@pVN|ä¹Ïë�Z™a1];ÞZaNV€¯Ÿ?zëÀ5¤“À¦¢÷Ú@"ûŒ•«ô'ê …2à ožÄZQX²œØ.}tg¢êÃlæqÙg Rvl„B–ï¥òuazŽž3FÈ'üËßJ$Ú&6Lûh¤±Ö9C2+M\>\òÓ²™3 žÏIžµ‘„ú�1w5Zp>ú èqðrTc´Ï³ï5;°~#üi/邟E'¢ºLæZm€ùÌÖúä=G>“§ÙL>>ó W䤿©S²Âß=–QP²r }7ÏÓËHa�¨…ƒÞ?DÌÛR�Œ _†ËAÎð=ò [v0@qìaM á&¬üJœ47»u³šF|².ÃãˆPk/Øî{!’µd¹ÕAƒ·¢l/¤1Å×…©A»Ïö‘B½;:‚òæÜjW¨©Qå`ø“×!õ,Õ™Q [,¦xú"½á^‡sÐg­…È à7h9Îܲî%÷í#Þþk,lçYÀ‘�ÄÞ7úñJ¨4£Ïõ~ÏÄC¢ÌÉ€ƒf½¶:µ‹<Ï‘#ãRƒôbÁ8 ¯²#Fùh!¬�ÁO_~¢yœÁAË&/xõK}`²Ž`hÄ÷œùqòõä ½”ߪhÊ÷ëOè¹Þ É± óÝ� T|÷¢×=Eeäì—ûEåÅørp…ƒ°õY²Žž…_´hÄëð¹ùõ÷«Z ÝkÀ„¬j%%•\çêÞ±ù¬; í#$9‡' jï˜$Ëݘä’Nvæ0…Pu>�?|(Œ•¡6MÕä ‘ž;;ò|O±ù=[Þ†6‰7ä�gêÃÜ#8–üƉ·c{Ø-^F±<„Æîd™�8þ|£xm�p#hñ�µzǰÜÇI�ȳØFN‡ÿ:päëõ¯¶ïÙë5 Koî'Nvv¸—NÌ j®Ò·�—¦I}Ô/3å0/zè¾u0Òr+2�·¢Ú¹mùáöÝùtï‹P/0åÈŠ§¤©_×Ï ¤) 1¹�ÞÉÍ`M”"ÝZ¯ÁÕßÍÃKìq¨£FîÄ$¥FÚ5æ%9¼oŸµíbpÄÛ\×ô4__Œø´…9^ð» àH¯û[ þÿ$ÞÏ÷‡ÿ ºâÏ�ZGìäÖ�~ãCKe%â-_ÊÝP÷`|�ï­jw(˜Yð1&æ� di�­¤ƒ‚&$M}$`HÜÃÀ/há`†¦rfß,fÓ{åë 9†§.šà”dÏ}‘W?Fü“¥0Û¯¿ëC•õLœÑ ê|ïœY3öñÜa>“˜L¢›Y'aF†:î!€wénw]ûº":˜¿†£5”lâM:bŽ;t9yZhŽD߀aý ùO¬“ƒ‘sû2#‚œ” cä†cm}І´ :å©a[„4 í`Æ~½îúè(ÕÁðÕ`fÆ`âP~¦B¬>³;$0± „œÕ6تנÔÉSæš°agdûP!~ѾñÔÂ…»øž`Q‘óZ–ƒ�üƒ‚[´ïW‰{Éļ«»êã#ÈìÏDÌäZ \çòÍT> *"ïóc—Ümi-4ÀsŸ™!}×áH¥9R {0äŸB=;Ø’¿ß‘& „c€Òv\+BðcÀ…0©] ¾b˜tö‚ðHy× �M¯†áâ˜a0"¶exNAø¼g{“ÞÜööÙ§(/²6ðŒô]™ü}p#+°Bä}roÀ[w~È'Çš˜Ðákz¯ìRû‡³ —NøNÁbQ¬ÇÕ—]F\aZ‰Ví¸<€‰=r!/7„HÐ|Ý£×ê‡á ”€¨ 20�¹�Ç‘Æ`"#ï¼-'Ï»šX T#U n†ýý  HŒJ³çKÒro/‚¿n M…Mp¿uóa žŸ÷ýt:……I%ã“Ö>HdNÿO‰4^K¡u‘"jDHé1„_R>ìaZóÉýŒÃùŒzìA.îÌé!nHz'1Ý’ÊkÎ×ó·‚gþaÂNYgFT8¸è’隷­Àtƒ1¿ƒü2)À³0Gò£•!$LÖð“Ú˜@‡DË…°mzIŸ êFÀ’Z"žÆ�9F¼‰÷˜›ÉßC�ˆ›¤BRŒÊg ÄxÈ#¿öɨ8ïðއ«nòÑÉLQÐâ{ÃÄCLÇøÆÝ‰Y²+ÍšbqbVh” ¡ÓéGý8A#¾s¾þ0j™$vÊæjÆVªÆÙ*©ZŸíº�S4ÀƒSwA †{Þw0 ñ&)¥D弇eÀ; ØB©l…©/¯ » §ÇX¾?ØP•òå8g?&„ Êiº M&bqa+>ax›²bc+ŸN€†‘HVŒ‘²¢ y]y²ùi¤)ÌR³RôFãZŸRÓ EÈ/CžÐ÷²#:úÉ?G]7ä_¯ÙÖ-OW��¹òã?}-6ÂĈEf']n�—Uæ±›AÃF(¹1„O^28«6&Z]EÍAëó5T7�¼§®4ìIP„Pß3�ù+ˆæ—׉2Œ$vÚHR×ÏøM†®ræz áïewa©P4}2[®ä%})®á«^Çú‚;ªC9 ýB†BÔνE–ñCñj+�A%�¡É9‚.$„œ;o¨s³3¢:p� ¨ïú>ÃS�† ÁºÌôC"ý%¨!Loæ[IS,úd–óÿA'0U ³'1Á %b.z €É¢ÖqÈÒàQºÔ‹ï~H·û*Ö÷PhQ CÒˆ|&PÏØÞÁ{ïq`ý…¡—*솼7‡îâ4d ‡é Œg7ç±ë ‰ˆGì¶Û+¯àÆÒyˆÓ¡}†‰äëÆ˜„mCg,Œ¤o|x˜­²ôö”•õñ•.dÚµfù2KBàAå4*ÂÉ| Ã’dƒö M‡¾ ƒdŠC1‡Oýn¾S&‡Aã_C]³±²A± b‡ÞÚë×)•t>6ÍãÈyû“�{¡SƒzôÀªS‚aC|׺ç3KO9+ަÀX�¼ÈB_aê œ[â'Ôâ`¦+,áOM4I¢>ç�€3e%a :…Éy—Î[÷ÄÆ”Eì{Vf\åg·êã ýÌí¤.6ö>XpW` ßq sbz!vÌň2‹êæ­ªûý$Æ«û�¢g±�±[»kÔ¸˜T–¶™Úõ©¿†2®�m׳ÏR—‚O=H?(Lé ÂÀóMˆÚW®Oœ¸HJêuÌƒÝ É8Ò›Üë·Ô™_Buº9¡^¼²ÕzÅQÌNm|ùjç*`½UH>µs!U†v¨EóÅî+ºä3E½ 4TW~¦}³Âøë`øò ÄÔæëY{v¬¯wÔB€©]ÇZO”j-!å�WûiH¶JÞÆÈú‡cä“®�"BÔµïdç6Ô? ³¼„= iC©g¢|ÇtÌV�âe+0¥ü{òÒôdÇÔ îLZ(¼ÒèlÒB¶ÿ9 ¨9ˆUHEÞÃ0bÀ¼ç&Ð/=Ž£cÁ0E*«ÞÂ`‰Sï­u·î€ýª=¶Îzïk¨ë$y-ÇdmÊ'=òq÷6»šÙ™ž[P¹Ô­–»Û`N…þ�sp4(ÄG—ÙA7¦T¶&KÎï˜$ç¥_dJ²èy–C §‚yƒÏâºÎJ~á~½£ª^ÇUkè] @Óñ%ë˜0=ÌgFNáפ3Ì6@™-s˜9…˜Ke�´yìjÂqCeôW-éÂF­üž\ܬ(L[Û3<Ðþ«w5ÆÎ $q'Lš@eÍêÀõ#ij¨ Q�¦—íT Ü¡º¨ðÅG kè½HM,@ˆV9ŽW˜Ä©Y©�¶SõðSw7‰HBFúÕ_‹*>jñE«½÷ÙŠI«p½R#ì ¯ÚYƪkš‹OxºÇ0g&q7�Þ·1�9FUô“LåeŽ“Æèæa3�_?jÌS%w¨ Þ¤`¹ w—�©Ú„IëŒ|Û*p ñ¯X®¢ó¸¥ÒCµ�Õ4O"„_=‰Õ’ŽŠ€çè·.•½™T’‘TQWyýõŽ€9ú¤‚CºÄV/Û¡PqAø$Ë"8¨q^7²ö�Íq5[*-øìµšø å`–�rDz^²Pˆdkô¾Fìš{F^çjI~õá+C…í\É\�b¢ˆg†9»$«`Eåw6P3Ùf>™J]…èYŽ'�õfs°{ë4²å�½ü ©rÚ‰�9=Œq yã×ãÇTR´¤ ƒ}– †ïÏ�ô‰_Éj>³42X¬+¨9ë,£%‘Ää+7[gi€Â å:ÈBíµ DÞþ¢„~ZVlúùõ;JèÍyæ1-ç!k�»[-�€K1{š!ŒÙÇrpÉ|o%¯<9d:ÊùÆÕq3÷¯ê�Ù<.+oCsoGz;¶##PÙ$UÙš¦ü7ætüx÷i ‘¹%%ðŽmŠóäëwþ£âzÙÛ"œß¿(0­”ëœ×ìT´½ŽÚÇÙŠ†lÖ!“Î ‘)˜¾«ÒÁûo3b1“÷¶˜�ÂË…^4‰cF"»-pÎÞHÃJª°¯eU�äçœr®|uâF_ଶãò¬’7à ¸{ EoÛ$ oµaºþõ\w9$ž�·Q¢ íK­¢�3»ˆƒF¦S¤Tnˆ°s‰ëâÀÚúèî‹©Ñu$Ô8=¥gÝYüÈ!‚)ÎYlaO0vjµ—_?‘Vˆ©j‡Œ–Akû±åÄtéÅÒƒaM§ÒªŒ]ÓÞfÕÚÙ”d3ø³HÄÑW+GÎyO,‘¾•®œÖj)Wbšã”bÊp”Ó�õ«ÿO¬ŽT “¹¡´®e+²\ ‡t0ݤû:õìÁXHsNÃk¨”E:ÇMxÛñ:kÍ–—´¬5—ÍŒ:µ< ð-j¨­L.§bºþÕëŸÌì‡W ֙嶜Ù=nšùùx/£í\SÖØ’Bíâ#!j$��Ãg•„¸ö žn×Ìü¢"%‰c¤)ehý&´)dǯw3@É«,£�^Gð lf}äd³ïŽÇ< f`Д6À 4xû’Ì·2Ñ’²¹nõ•Uöè%¼Òv_ KCM{K¤=ÁE ϯÿq:çÑAœCA¶© ƒØ�kÎ[òñV&õ�@)S%Éš­ÊÈ­ö33‚¤~rÌ„\ݸà©Ì‰ÙŠ~É”eõ¼ÀY>9ŒgU¯ÛýÍÿõgÿô/¾úŸþé«ïüÛýÕß|õ_¾ûþÛÿüþ»¿ßŸ¾úë¯~¿?}~ÿñ»¯þ¦ü¿úËïý‡o>ÿíþóÇð>~âùw^þõßþá¿øßÜ?êoþü«ÿ@xÿóç÷óÃþñ¿ûùæ×ÄO)™É™TÍ1û}lë÷@¢�Þ­Gõ&1kñdô”šÑÙø :˜uÓM=/kÌ=)µ "‡c…㊯è�-cUî»gôrFhjWÔ° ¶õm$ ’kZ›�±èÚ–¦Wwœ�á‹k2,“]#!lÊÊQk¼øhBBvmnåL-ÖæŠÊß«‹w £M¬ö‚gjèuÈ(ãtלëtÒJ /ãú]ÆIÒÑ�ÝÂãmLVÒVF ]k‘¼F!ß�2´<ˆÏÙCy7­Zg¯Á�Ù“RP”µÚ>ô6øÌ)ÇÎç†åçª÷4�Àšëp%™CÕÞ²­SeÞ£?‰3xΩæêõ¤�*Á=S&‹RYù@H™y$ËŸ5’©N÷û }$Ø.Ek…»ZÇbã¯,Á”eδüäŒî24ÊλN­#_ íT£²O ðR¶ˆ  îjƒ�šædQw^“1üÙ•*´µÄá´:¥Hzõ¹¯35Ý]/»Ä½…¶Z•V²­�¸bIg7â¦È9³qÁK �mDPg°i'í¥«rÐG%ÚXè€ÉíÂw8ÇÉ%�Ù $ë)ÛZ(hfS~aÈ9mÄÈ‘ÈNpéó1Ddõe=ZÅ Õ¦6; ´ž» �í4_œ…J0¿¡'ÿÿh½ÿ`nÔîC¨È§ÖTƒw$7 æñƒš-Ÿ/ø:Ñ )WÜÁ^è YZ$3-KúöCwÏ!FOgZôÒ &Ç>¶†Ç–Õ‡§ê‚דH°*Ǭ Eêü.çwi]nuÚ°s½R•Í.×/F:g»L¯¶z™ee–ÚsZÃÚr!œ"¥ïšmöE-„”Ngjû`Vê;ÕJjšJƒUï ¸VÎaù‡Mv9�z¿n�Á+A·d¾”Î)Š7þõH«N žŽ3De�ræé�—|ÍSu˜ %Gæ[#·hô9ÏÀ6X¥›pNϪɴMàPY’ž—pkéâ+eüa ýh¡h$uj ›Áê‘Æoi¦†HÏŽq‰;Ÿ=–Í^êØ™¢ÀH¶ilüšÌÎ)¢³5qóº9ê5K±Æ^–Ô›ÔVŽß¹j¼{%-tvG¡à¤ }“+õ>Ëg‰Œìš25u°VilÕáÎdþà˜xlÛØ³”�5Cf%‹…½V™ó*”N¹IAþZR‚™<âî¹ÕBs¶dG›®¤{ô3¨&€µÖ=­ÑÐ-uÞóå0ìÌ‹RFõH‚tÍ}6ÞÌÙq«EÉ„o胱bÑ®Ã]ZÌîrá‰k¹˜ Õ[@Ø=çJl™#ý²ˆßäpO …©A¸¬°~MÇ¢BW8}eÉ¢.Ô¨ÁèVó¤²êÜF=¯æmã˜Ø]Ù&@ðëýxMt$µÑVblC¡);�ù²K“ LÅpè*8å’è&<Ãxél,OD&Hѽì5çhm5€ÏbfÔå<#i'Ï®U¨Žó‚ #Ú³Iù.µ8g‡tœÊéZ^—*o ×Óµxò¦‹yZa›¯ÀÞ^a\…†IàK¬h°™— ÂJ(²×�Sð—sl*æÛØ©ï@´Öd­Y¢¬"--¼Ç›¯Ö!3Ož´›’ì‘øÄ¥©ŽÓrª@,øX‡†y_“ù…ͪ>6¢A¹#ƒ];Ú£èâ%î§æ{;OŽïGغ§¦1rŽa‰VèÂÿ2d]ùÙÚþ þµÔkd _ »^ù] %Íá΄…%iàÍ•·TÛ�–¼  9¶£6ƒ CRQò÷é„,>¿…«iï.UGÇ8˜{á·±ÔInÇfÓvO.‹kU¢ÚªÙÇH+Ë�áûîJDvîØ£äºŠíUj't†‰nÄ,s¬’h<–,þHƒlÁ¹ÉV(UŠõ¶©¯†§ŽU=sؼ’FÞ}¢ŒæÂ”e®ºÖíðF=ÁB-׋E\k2ÍÙìú°Yö“°AÒ³��²ä(­jX�^�{Úlœº¡È�ðÏà^:ÍÅ4ðöTˆØ]æQI¾ùR‚p£à¶HMmÁ8BW_§Ú|ô,~YhM_­_ Äè©O‡î‹ãèØ£�´ reµ—¹àîçÙ¦ZY¹Ì8að €½ð¸?BŽÜÉl:(’×1ôµáîµ�¬›°à¦áÖXí7\Œ …TPd­Ô:W H™?§B²Q ó@ÙÒmÑ+‚ÂQ ùêbè™ø¿›,¹¤Ý®„Wªô7ó›5†=j=êe©Ê · ÷Ü[´Ê%�¼÷�’âqO­ÔÆ9ÚÓ•bøSø­…½1 8¬P¦Æ*ö ¤dÐ�Wie²L:¥³÷¹D´õ÷xŠ> èëÍO laLl„4\ªóDôÊ3M …a\å‘h ÀÕ¯±Šó^�dý>Ö›Œ^7ã{ÆæÄ/dO�D §h‚šg[QÃvÞyÀ˜§6iày°z^$¶¹b#Õ‚_yÕ3ïÖvlšOX€VI2·!(O�^Û44¤Ø@‡Ú,lÎ͸¯)§“Ý9¶)w–¸­°UƤžX¿—�]â!¶©^ùuôE=?µVk†Óßz *¼:J‘c’XÏQZ²ÌñÈÎz‡ÀM±@kg®¹Æ8‘…-ËûqRíµ/Eוq¬ ~­µÃ©J¦÷´/.þý�:ÅÎ@;½4ËÆpø°- æ³+ðá&»dÂ&Ê€5ªIZk%ËSf��ÍH( ^�°ˆ ŠúpL¾0<‘S-«‚16÷)Á'o©'çŒH³m-Vû”H™t--_·á?Ù¥ÒUxóm¹T¾z‘¥Í™ :±µ …}cselê-<«$m´k†�VVÒ{:�Ñ�ó /Tóh嬗ì|ýHk)ÓÄ“ªôðµ¡e]iäv]šUš™Xªè.©¤VV;¯ Ðи’f޺Ë!I U”8Š`D`GcÞ myºu´ÊLÏá½%°]øPºCš¡e�;[NZkqØ)[Þc[CªÎ)ÞÞÌÒ¥j÷~Û{¢Oµê©¸Í˜ÎÎûΨÐnãî#}—³­†‡¥Ž®‹Oe?9«Çâ8Å5“¬ò/ï` V¤´3�>T�¢9£ ï“ê›ñÕr#LË{Wz½õF›y BpuYä]ÏaÝ©m”²4Kb6(¶Ò\©×ÄæoΖGã#CC-w�´"£³Æ*Ù’´ØlÅÚˆãJvî~¡®Ð›ŽÕÆÉ}áuà8ôdÁÓQ–ò#¼0E³‘ƒyع;g‡ƒÏñ›ãq W¾+ø©²ÏÔÃ"d�ÎhxLj é`‚ºçWde÷};‚IËr¢tˆ,Î[ äÇlo—»Üçì½4¹šrÂ#›¯ï)+[ÕD¸¤ß³U†rk3ç,ÛøðvÊÍü ÷‘ÚX-õ“ްyW¿à2;Õ°“z¯wãÓ#æÌ€óO/=)•é çÝtÓÌÜgÀfïz¬ÌÁŒÔ¸Õ Ù4Ôµ²j®Â!lÖ•ÆŒ9R(õìtjo,kx�vä…ùÊ‘a= f™aÚ@iœ"­D„�²|HÝøNT|2ˆg@â�ŠÊ�•-£·Ì¶ÂCëÜ|“'LÎONÞ{Áöañ\j^m sÇ¢ô”Á$STIšG²<®1m·ái´¦w`¨à£Ð ÙEˆ¦VpßuꃽÝ$pt�«°cë6w–àeÉíãÞEõ½0ßÖå¡Ns§¤à�á$¾û —1ÒW¾±ÆÉe­7Ô1nçœãy^h&Zƒ4Ó™0OGi9ÓTœ:V+ÎiYûÙ§¸Sö[Ë(ÍuOeQ7Ë3W­ž‚1 `Ì gMM¬Š8u€4ד÷YóPîsr‚ø‡P{ÇB09v�!·d?Î>¯o……!rÔ£nÏ­æ>x(«mž�A§ÝÃJ¯H4â ËpCƒ¼˜ÆWI<÷!y¸Ê™Þc+ Uª\3£0®’fV~M´ÊôùHàHbµû¥Ï™x\xÔÞ“µðûPf?(.2ô:sÆF–�ƒ†UC¾™÷ DÞuv¸‹©•gŸ}Z±Ã*úV¯Jn©Î+�V4Ï8¶xÓù®™ƒê>XÕ± ´Æ¹-e3úŸ>ãX=p]L<Õ¬qNo†L£PˆT�s÷Ó½G=@ƒN Ú¶±Úâ,« lºo:²âcÂ08Â6Ñc¶Âr½TJvˆeÝwmíJÆ €lo²�£ZZ§ül,}ÜRé­ÄŽnÓÚi…4Í4ɳ„Pä¥OF3Fê¨<ä¥à ‰9ø_D¹V’dI즆þ&”6¹ƒ¬‘"ÐŒñ$78ZsÝ’6IÒQl³çÖ4/f-çк·¾¥�SNPk?®¸´3k÷ôÐ;AsÖ Œ£wíîý$"E's_W¸Ýp=ZdV³ÚælœWù6þiC<Þ=EUËË ^½bW*»/Ér¦�œîö)+òÁ¡)uåñ¿PèÛ$]ì·ÍÔf)©âÈcEÖZi3Éh­•K´Ã»e…êL\t½QÃ[:ð¯a>³g"] qãüÑ1¦H\–Ö,Ù‹Ô¾Ð>,Ö ´:°¡CµäBÙ¶6y•Üà…pLøzÊó„8ÝSF�?˜ºŸ¼™ô1fk†GÓ ¬h=ÀýµÒò,øÚÝ‹Mך´Ü3ë!$¬mž²áän—:Jé|°2©‡£�ôÅ)±1ˆKäâ”ÚE`½²+ ÂÀ£Ëà¾o-Ùæ�::‡4lÓb^¤t½µ‰Ý3ë™ ãÃ’|Zã×7³)öܽŽmÛØÁıF'@bO–OÔN ¬§C¨Š°|Ê»ìirœ]Ê(4p†îc¹kߨëWZù‘må qnRøEEšbáKk÷”Ž´f½:cÊ *ãd¬¶wKÒ&g(½—à¯~ìÚ4ik·®Ñ`7Z÷h’¯ÊC¼�={ëFð…SÎ7fy™ýøèŸ@)ÿVø'»?�›ý „êOàD­ù˜ÉŸ@.þ~ð'P|?�¥û DÛOàÊ~Ýõ«Ÿ@:ýÞè'P??�½ù ÌOàP~ëñˆ‹ŸÀ=üúà'0?�Ä÷ <¼OàÌ}íí˜kŸ@>ûþØ'0½>�¬õ |«O F}·éèIŸÀ0ú’Ð'ð|>�ªó l›O Ì|µåØ)Ÿ@0ùŽÈ'Ð<>�©ñ d‹OàK|åáX Ÿ@<øîÀ'Ðÿ=�Áï $|OàÑ{ÞØìž@H÷N¹'�À=�Çí TlO`S{!Ú8Íž@Köf±'�ƒ=�Æë L\O ÓzÖ(­žÀJõb©'pC=�Þé MO YzOÒ¨ŽžÀVô¡'p=�öç <=O Úy[ÎožÀYóÚ™'0Ç<�üå ü-O `y‹ÊˆPžÀeò:’'0Š<�ä ¼O æx»Æ2žÀqñ×ÿç¿øê?ÆÇïÖûÞüÎ?üQ,ñ×ÿÝWµÞöùa¯ÿçÿó/?~ÿòßüÛß½ÿ°®€‚‡´O¸aÁtiÍ-£i ³68Ûðjb+ÛÂfqðï*¡‰¤3û€uÇ¡ºšÓórç¾·’{¡¯s6|ßµâHTAˆ‚ƒ/x¹“àJ3‹%>RL`¤ 9î1¦u�Ú�Ì*|¯ÁÑq@ÜÎIN³›êkõ\z¡´MÁÞêž“ uˆ1gc½-/¢üëeG›`_³V?7NÞ¨—z¢Ãm‘’ØFª„sä½ÏŒüüÂ1³ åʵ(Ú/öyûä6)± …”B9’J Çâ)˜<5ã Ï¢> `æQf¯7t¾VÈEôd ç)€TZ±È%źSôäÀ ˜ ‚q§¥èÐʯŽ0Õ¤=^³™™#“-$h–O»›Rj�lèÈerµ‰dqÞÉ� %¸Œ¡+eŽ)ƒ£b’‹¾*(>Nh%“Õj4yK¦}ÓJ³]zM:Óš™\<©“.ñ:­õ×ÿú«ÿáó?íõ¿îkÏÇOŸÿ—'0æ|üê_¿_û»þ7ÿüÍý…-0§mšv>sÑñ®ÀÌïš”Iæ`3N²u—`¥d|˜ÝpÒQH=/Y램ò ØX9º‘9/=&ÀkacNj€Ý^&þ•‹}õ›Ïññû�¾úóë*ú÷Ÿö÷<ö»÷ß½;ï?ì¯þrýñòýø¿õüê7Ÿü»ßî¯þâ>~úûÏß{ì¿ùúŸ~Ã`¥~:§ “ÖÖÍdÈÃt›(ÙÒhuœ*½�œ†Ëÿdd@�&¤WŒ¤_` .ÕŒIûÎòeW_�TèÉÝ·NÛe<ÜÙÍ"µÑ€�ˬT2‘·ËÈcìxwFæx‰˜Ü!¬Êpí>Ëîe¬F¯ËñCdF‘£œ“ƒu19ÄC�-ÜØ’ÎÊ0qJUjùOwö«ÿ~þðþ»~¼ÁöwŸ_¹§o}éþxO¿ûþÛ¿ùßíëb_˽§¹·ÉvÃâTµxØüzi6*#’p�%V³ÇÕhx.]àNNÓétÀÊœ·PoU@Z#¬×æŽ1òܻޙt>ÜÓØÊGö¢¾, ž�›Rmt¡kâ{Þçá<DW·<–/άêB—‘šüé%îw ¤ˆdðç&´¨…s2Y– M«Œ|JMâZòÃÓúg1^¹™o}Í~~3%}-_—{3S‹�j¥e6ä8z‡i³Äˆ7µå"Bt¥¢€�‡�ëNêë%t’ˆïjegrA%Á¥+LJV/NR~²ŠÆjnÒâàª4ß7ÓŠ2I€ˆ»eJsŽ2vñ3]†å*û±íêæmï,5NÜ®Ù#¡º»Î}Rµz&°ò{…Ž ôê0òˉhÌf¡ *°çÇWï_Å7þþ�~÷ý§�ß¾ÿ¼×+·ö­¯àO·ößÜ[;¾N_ç{gÍÂ$scغ5{ÊyMg½‘èš1ªy}#õ_»®Q!ד%šâ£Ÿ[íççaœI67±�NIjËÿÐô¼Ó ‚†œ]Å8E?ª™=o¤Ú[X+ùZgF‹Ìq>TÙA†ÖJ�ÒER\8ŤÏ29‘"p”ZJ"¨¢Ö`/ºNh†¢‚gðiŒ×=™¯òpgÿœ;ûÊÝ|ë«öó»©_ç_ºC³žA€—&°Áæ9Ú’66)�ׂ=ì*ºä}¦>6®–r»Í˜¢ªRÙ¿/æ[�‡"òÖ©�¤Žƒ`ê"W²œdZbØìú¸DF®©Ê­”‘{ë.Ìù›sÔx3ì(§;±¡tjKA#ƒ!o9ÞFptœjÀ°k3ÈÍZ!Äh¿‡9ÄÐ&3J½Ø¯ÜZé©DÄÃÝüM|ãþþ•ÛùÖ—íç·³}­?>œˆ� ‹]Jä¼"Q›Îî ÅŽoˆ¿óÍãìì�ªÄ9öøGWü•xO†z‹�sHÄÇ_÷LìmAzF1c 09øh•éÏng“Æ#Ã6ËAžâ&•MqkZ~Ÿª£¬±OW^m£ä–VˉTT²âMGØô\�fÔÖÞ”Ü6)êÔ–{B4™ÊjÌE{¸�?-�¾¼Ÿo}Ý~qQ”¨t3õ†m“R¿Mâ8þ*²ôGðˆ\Ÿ–ìv ¢HȰÍÒ1jÂZJ —D:m®¼À”íc>Èó%` ²g_…&ñÙÓæãBÐNex›;J–ZF-ÇöÚ|Cˆä¹UòDÓ#E¾IþkÙó)krúÓê&ò�;™cmô ò5³áÀ2½!rVØ+µV![eëãÛö·>Î×¾�o|Õ–EåëôuúqßÂ�—®HD˜}µ, k�' ªaÖ©%hAàE<6¯bm¿t÷›ø­¢§Ñç1#ˆ<±0`¥—x�ï=4zG_Y¦>>ŸihÒ®…¢ÑNÂiÊiB<ˆdPÞûŽ�÷³v«Žz�úœ/‚ë×ÿŠÏÃwJ •¹á±‰ª++Ð{m”Jgy�7ôUGÏãëöÛ�ñ�¿ºgyÛËöp?åëþu»÷}޽ïEë’4N ;/¢�ˆ{áThÙp7U»EeÇ®B�žêÀm‚8¤-gïÕ�êCà#¸ûiŠ%_&Α“–R§®à×ê~|߬YktB÷IÎÒ2禊É\"&.b@wÎ>}¶Èa©gH?1®ºð6‹Ú:�êôKôB£ jWà*cèžTJœz*3Ùñ¸ÌýÍüÓo_Ûƒ¾õe{¸Ÿã�Ï'›ôjJ¤P�â�ÁÄPP”Ò:…V7™_�‰hb„G_\¿Ö-NÔDO²9šâ¦½Áž7ÂèN¹å|Õˆ�œtf ‰#=¾nÑùÜU@'¡�Jv5Pı–nCÑ~P$Á�ÅQíå¤oé�4Çí÷’eŠI­«t—°@IáäBAÞkì3È Ú3Ùâ÷ó/â›ÿnúôñÓkoÝ7¾x?_å¯åÇohlþI%“¢@ݸlÁžD°PQ^žV’œyÜ©¬Ð¬h™‰ þ œ_® ð¾°Ãy?ü%z¡‰Zƒ|gEØ&åkÂ%öÑíñZØÚù�†4sE¦=ZRi؉ô¡¦4hÛõÉ.ÍÙ˜¬É;†hªÀË8ß®ù誜 §’·åV®»j.R�¨@‰su|Ýv‘ôø ý×ß¾ÿîý·þC|óÊ-}ëK÷Ê|áÇa‘–Û>µRÕ ½ÞG&I³ˆý¥Ô—*‘ñTø)¦Pè&î¾è°fœ^q’¡,m …aêMàZˆð:Y%èÍ‘ÌpÉ&ÇÊÃ=]%t„Ö„Æyê™”¨­ÕD@…òqNÄ�ì%/¦qX"á’]q^ g¨EP ípysÇò…‰çdÜžü„ŠÿªªmH£&°—Ç{ú¯¸§ßûç×Þ½o}å~þ”ö¯åÇ­K².¸gËz ¥íîÆóO×Ìýº‚#»ç2q9 m:«Y‹«£?ÉJÖ@J®vd/÷ÜÈ'Iö:vñÞKõÝÖ¢x D׊°Öfzü”æ 3¥ øTl‘ ñ]l¨ˆœÊE NO\=ÈÍAéÀP) ú’Ü×Sj)Ÿó¦�DŽn¯Fc» ¾­£|¨ç;ß8~¶Ç�è_|ï?|óîsüîÓ§?¼öê}ã‹÷øêýé{Š1°®æE/¶‹è›2SÍ„rÉ’© Dh.ÐÁ‘YN¼Ä{¯«mg m­H%þ» $Ì�%§«ø>È oeEH? ˜eê®ùñ{z•¦åæ=ï™5 ÉË”áØó1OY¿X”z£ $„²-PwP…aÔÍä¬jõÀs�Ÿ+Rii%à‡¿/Ö42‡l@6d}1^øðþw¯M‹Þú²ýüvÚ×é§Ý(tÕ Iºq\*ììq/Æ0 `TûxùƒP( W¬ã¤5£ZÐæãx¢¶uåtÃ8ñj‚WèDâ\¯40gÝ„šp"ÅÚêã´ÐÊÈTÕÁ 4ª»%kšÒ:EsóÂÚ‰•±ÔÀmØäÇÁ‡XýÄ!–²ŒÊ™ÔòRO£Ú.  «YõºEhwV»lÜ57=¾u÷çð¾^;I{ë+÷ó;Zþømœz�‰”$åÑ…3Æ5öt&7Ž—yl¿–ßÁä”òr²iÇG¥ÒáÅùÍÃDx–ºô4fž=Ù™v®©Ä2nòÆ7ä:ã¤Þ­tj>íqmTvâ$0+²èS“Tõ *Ráh¯[õVRFžâðîP+ËÊLvÄÌ:2‘âV|9A× Ä~¡]VÚ8«6ÎK æ�Óûã†ôßÿvÿð.üÇýé—ŽHßú~ùæ}Ù™2ÊÒŒsÉw�5,6ìB°#TŠj>P•bbí³o„'cÓ(¹^�H+¤u½ž si?¤KÛiÁݾƒ4;/ˆ�”@º¦�o^+@¢a½2º/.™fÃÁg>™à&¡'xæ9FØE¦L\ÓO…õITµ,ЩBÅŸÊr¸Rê@ª%¢wJ/]æv�[˜c<ÜØûù‡Oï¿ûí»x¿~xmÝûÖWïq‘”üžFA©i®%ö¬kÇ�Fÿpè„ ˜4L‘V(•46x¡á×ÜÚ.ô6aý rõ¢J»É]ÁLèªÖ‹&ƒõ´zz¦y_ÀT …„°äZÈŸCÔÖåÚÃàîÐ1RQû®‚›6Š&ʹ�E¯d²µûÉ—œI9.�)$g½6MžpœÊtiâkÂùR�ãÀ?Èøîµ]Ì_µÇiýOÏ(É~Z”ãDž%VÒ.výQÄ­®há܆Ùê ¯šȼôÉÝR¡¸$¾KÚ ŽŠ!‹æiàI…þ’ÆÀýƒWúƒ�$� Šõ<¥uª¼�²'�© %vH8Û8l1 |=Ã$\d2ÞueLS6Öl²gTŸBÝeîÞý€ºËï9‚9ðÄp23�²k€å‹-�Ïè�½ûÞ?}Þ¯�Þúêý|ošÿyÑ[öÆ–PI£UKJ¶áK >�¤;>ò ŒÌw‹U û™­„.uN�p”/ašà:Á_Æ2%�¥�oT)ìœ>×8’ªêãÞ´ó÷ üÝçŸNÚ>Ç7ûÛ×Fùo} ~kÿ9°rÒU³@¾’9£EÞ¨]CÆ,RòV£  nšA…óHujU‘ðºÎé·aª•4˜&ê¿$¸:‘KÍÀd’‚ZÙ¼Û®žZÐú®¦¤ ÂÙdͽ;Çú=¿6 $׌8…g·fš-0ö8Jñ¼½Ê*ŒrÑdùYæ@Å‚³Ðli›Í _v7þ�b¯–ñð.þ—çýwëÝï¾íèô�/Ü—×—·ðL Êq–¼7u_ïŠ=¶í�Îâ†2 µ¸ƒ¯ÊÕZ1çlÄojrˆ£“¬ö˜�n�n²\ß�‡0`'}[ÇpN‘Î9ƒH~¸¡¾u“>s¤Õ«´ Ë|ž¶Ûhs€›‚Ï:%ˆh\ÌThÓ™TaP �2¨/ù4‚çáݰ,G|mÅ �ìV8ðK¡;XÃÈ�q²¿:?íß~úø»ïÖ»øæý‡×Ho}iÏʱ0^dÇ|EQtåªÓsß�çHù´8¼Y- 6�0–~�*èAÓo2Ncê­`>D�jÈâÝ‘Ï _I Æûã[¸r`’+“ÓT7fgí{ÔÎ(ÍÚì*@†–}Xi½i.°÷G`EÜìú«MÙƒNtÉ Ò$ЕåXµÄ«ªAgÎ>â¬1àv<ÜÙÿñ§—ñ»ïçÿÛGö­/ããíýi�Ó},Êï3ÚT÷sÅòÈXþ¼Cà# éC[Ì×§¶šæ ’ƒ�¥¬ÌUŽ˜!¥7œ ÙIknÙË ºOØø•E`rqDÕëØ_¬ŠÓ䄟蜵FNÈ>èhI³—A×`_-¥ÛÀGâ»ÝFE‰–r�ReÉ*€ cßbB@áÇ&#Z¦û™Y©µ. ª½¶úp{ÿãÏnï§ýýÇO¯ZÞú">ÞÜŸVP]ÆÂÈc€ž>0²c[asåctÑ[*tæ)…ÔáU`#b¼ìxGÒ®£×‘j±&S×%® Z2;9‡¡Ä¯Î™ØÍé!㵜³Ð´{|+7Û ºW²<âÖ™ÈRB'ò#)ÔdVÈÌiï—Ó¦èŸä4s¦b¹Œ;ÊŒÑÁ µ (¢d%=z'$‡Ë‚ÜqÁªÌ›ÓƒõÇ›ûrc_;¿yë+øå[Y_¾·‹DøÚÄ}€ü-Uglu0é€2™}µ\©jœL ÄÏn�Qn� Ú‡Ž¶´ìf ï³Àë�¹hÛ�ÁÚ¶dÑz»¸ã}½²ó@©Üõ„òí¶�ÏQ,Åײ;£@ì/ Õ¶jG¾ ž›BFÀJñÊá­uÁžZ”mI)äë 0NÂc ƒ/Ãp1U$äìÑ{}<:ÿ·?ìÏ?¼Ûÿ~÷ê|ø­¯ÞãÀé§çu×�r+ÏmÛð{¦T¦ Æ­H3rždr2bɸv6ð©xtJM@<ÌÙ£8ýžÉü –*8Ç»DQ��pnï‰?ï`Ú}Üñ zPÙÉ9êvºXŽ>%78nD�T³Y̶:ÊDqq£W�y#QàÃw¦YÏjS榷6�‡+È×¹Rgx?h—?ÜÕ¿üýx÷ÃÇw?=µ¯Ü×·¾~_žäüx0wò¼¿Aªô9Æ.ŒìœMv©=ïj[ÒÞÓ? þÇ­1Øê›ÃN�ÅÕ—‚À½Lüwm àÍð…kÝ}&£õwãa%8‚�x»Žx¼¯b£§·¾z£'ùç¥q— 1/Zæ„‰ÎÆ©?0hÕcÎ:qAJê7EÔǵ¸ö[‚çM“núXƒdf˜q�ƒoÒ!N^QÑlˆNÀ“KãRÕí1_ø§’G{ëËösé_÷CóÂä�èl9R §RÚ¨Ìë Ѩ2–3—êÐ ²& ��Žá«Ÿ™™#áÅk0�š šM~9áîÔêÐá 1&lâ�ØÌú¸\šð‹£`ÞYÛýWPæG§¡ìPɱyøìZÕP#–ØU%úNWs؈sfÍl(õ@�í}æ•àôâ.¥Ø^6÷ ÷™@2Úãýü‹Ö÷;²¯}Sßøâ=v.~z÷Z�§^´wðx‚.Õ9àâíœá¸Ì£šÊÖ,œÒéÙž²ÿ^4›È%}íçÆà²ÜsêÙðVÎî4¤‡ì AAqÿŒÇ¢›[;§Ÿ¡Î‚&+¼èûØu”a«À¾0F”†*Ë=Œ[ c›Ô2ËÆsx;„W\ºem�õ²P¨ Å™HÓZëH2xо¸©7é²ÿñýçW—¿o}ñ~~Sëoê–DÕϘ²›5xï|–jõQвFá×Î.]ʼ àèãê¶�¦¤'F(ð_,ͶóÓRÇ}wëAgt^~ÍxKnIè��¼¿ø 2×ÍcRÑ–€Ì‘]§½Îiºþ ³SS£Þ[ îƒå%�šk™;ÈþJO)¥q[Á �O¢Õ2ûÄëuw®)jTãØ;ÊãÉÜ_ħ�Ÿ?¿ûü½ÿÃkto}ñ¾\ý¾ÜÔ�°�6]]ñ>¥rÖ1ww wfuÊIÇŽÖ‰mí¸p㎢”¯ZÊ ZBB. g AICz³j›‚ 6íg‚ËãÚ(:Íæã!º17-e2�;Í£'€7£¨†wü#dƒÈLû%Mçâ› æÜÏ)'e[º*ÆF¢@Q¢ÍÒNÛ‹éÎÊ>Ï%s€È1,iÉóªØc>ÞÔÏïû�àY}mñÖïË'õe�„�Cœ5~Â^ÃÍAjMYgk=ëÁEKo³§šZÖ ™Âú9}¶32<èžàv¢Ú.VM=ŸCû™�%äTÕv&V¾ùÅ!ÀX{,#ÍÀd�îtÇP˜N\‹ÌóïD’ "#Uâ ×zøC=¶ªH×Ñ� ^ÔãI�0Vu6øépÜÝ�¹ç­†q·œöý·ßüðí‡w$™¾uéûÖWï—’†dl• {' )ðà�Â`»˜¸L—(º¿é1/²é‚vxÆ^qwLlÅ2&7þ«´KVó¡Õº�œDVB2W´X­­ „æÿ¿˜¾õEürjøãH8U?c0ÅiÀçT½B‰åÒÑó*€ÓšFvhÚõ =Ž™Çž­ÿ˾0Nõ«à B±A1 ¤·Úü6QPoIç\EKú\çãŠéOuâÿÖ—ñ—n/Â]ö=W‡tJœ+ÕÚ:MH›©äN´ÍI­äôÔ‚7ÏH¡›p¸ßúîýor1J°O‘X²½Fˆ'Ž"dÕùÅèõX[”´€Þ¤’®ªùú´´M ¨Ø¾Rf›jœ�:ŒLµÄóD$ ÝsÁ߬_å"6»–³`TíªCÑî¹rB�Ùüñ¨î_}ë¿ß­÷¯f`ÞøÊýÒj˜±t’ Yþ Ob.g&¸>35a˜êq}ËÃ.`R¿Á™’eô¥îå²Ã`@Çj®ø˜Y ¨—¯2ÇðköÜ#š²åñm¬Ðc—c ÓÆ´¡m\*ÍÇ“»¿ª37ì +¯®Á¯pn93�c|Q,ò? «³¤9Ð"ŸÀ•Òqí„Üz3JÈc…µrÎô}džŸ÷ýï¿‹�^­R½õõû²¤ñジÜâH9G;8¨‚:E’Ô•Õf6ïÄ’SºîänzŠ]á~ä•G�x=Z ¯˜8ñv£hˆÐÞ@CÁ�m§ ±¹§�¢ãóñEªôO0óÖ—ðËÌ˨é~…!ò–®TZòŒ„niNôºÏ¥Öª–;›ÎZ;Ãi\¿8Í?y®ÓŽùš ‰k™GüñIýÍÚów¯-�Þú²=ÞÎòc—Îv‡¨È!.®õ3º訳7! ¿�’Ò²9ð„/éGJ;87»,�½d`2˜ä¯*dOËcðâéoqKÇl¸œi®›wüPD¿xñ&vá :_¼„Äé ¹ïkÖ[‘uNeÌã{\Y¶2øãÖiô„Hȧ%¤ªYæèa dyË©zåDµðP®Õø=qúÕM¾ÞŸóÚÝ|ã«öK¯ƒO`wãTcÂŒÏ û<õC- ê ¬?Ã�WÂÉ?rNÄ«~Òž©Má”*Oœlc�ÕIaÞÓì¾ÅÊ(ÃÛNx1HôÜúcL+y•å‚<·¤-К×1(Áï�TèÂÉ@*ý¨0`À?ŠQ{â…>mÍ,âÞQÖÉ�¤õ<™ÍI”��ÀW•†ôÎìšW|�wùO/Çsï~,1Ú¿ÝÿøÚ"é­¯â/M‡{ês6ÓS9Ùð}Šö³—×ÖfaCqlŒÓzÝUW½ÑŸ ª‡�^yŠW³iÊŽN & h¾±¡ñ[1‚Êâ3Ñÿ܇ù¨XðÈb�)µ?‘QÓ[_µWFM/¯Þ[ 8ÏrÝ%U2go^ ¯5j©–�ªâZ9Rüò �mP1°Þ�ô{ŽMËÚò©ÁÃá´sF(Áq;›ÎÝKî_$¿;‡‰yæ”t�1ßæ#i8=rŽ?Z=­÷Uz¹ôžÖ™a£æüÁ@7¦u�ihWéz0gô²;a¡µ¬y+Xfˆ¢?—tÚã—ôϾymoúÖ×ìq�ûSùƬi•Äwþñ*¾£ÎlÃW`¯aY÷¦F]÷Q”);; ™Ž„³`NïES«R–FµžŽ-³UAä�é£ABÿØš12V¡ÇD'è�¢œ£×F;Ö;cútW?RptFé5ïíûôÚùpBi}uâ¸q) »Ò1vçjlUþЦe&¼M›á…­j¥§³�T0ÔÇýËûÏ7løîýwŸß¿šãëë÷åëK½U4‘ì3ÀÂ�¦¥?ÎÜ5$Và©”sìœk�lO;”Âr:ïø'rÔÁ6*�âgpº3ÈR£ø Ã5˜ÔR\¸4¸œ¬OoQÁ$Û�f9ËÅ]Æ Ù}§µ±]©ãßÅÃÝ7¢'Gl]·ãL—Ž÷S®H‚ˆÑj¹ÌÃ¥¹Ÿ®9·Œ¾8±·óV–N�©G¢ðøŒþË¿ûüîþíkþ·¾p�ßПNâj‚CVó5»«¬<”�:˜Bpfj_Í› É”©'šÃ©,Ãjü{Q\IÚ9ê�Ìü¼¬ÍѾYæ^ÄZ‰Îž[¼�”¦º ™Y�à¥ùwlÁ +é>�5¤QVšuq's’¿‹ÁØ&§ôMä%ûÇ„¢!ø<ô_ó„{ œ&Ókƒ1BåIË( ·ÆñCúбÍ~�Kûðñ·ï>ÿáÛùñëüÑ7¾x¿tS{lúÓìûãˆi,,ÒÎ=1Õ@ij�可÷&êXQ·«j­š.åÜØ'Y™±øü!g–TÔæši¯U`Ëg¯$Ú�ÈR�ÊËã—ôOéÐæ­/Ý—‡6/‹#ÜŒY _¦q+àUfœ¢¯@Š¢yäÞs.co&°‘™9`ª'Ñåïe§Sw”t#÷`ѷƸ•q;wAº3߯ӚÖÖMQ1·Çç´Î\ e§[ 5›"LFîDÀW8/W3°Çs›¸ ¼´ª’”Iîº:¬D&x�^q/#Uÿ÷$¹±™íÎ4Ü᥉®ù˜ þ³o_­c¼ñ5û$[~<�ñ…tp+¦ÅÖ@ä–Q%¯n#ðÕD, ây>³¶õQgÅA*ÖN(BÏC$¿[›`½²_*ávº—s%IJ°/¼êIÝÓ‰ñ¸oñ1Ø[ÎÝÒï³ÂHšõâ¬;@ž¾²¦ò2P š¢óùá”e Ó­ðð’ez«2JÒ9ï,w!ª„|®ÁŒš„sä:4qîå¿ùþ}|¼�–×îé[_»ÇïA²óxpJÐïÞ-³A–Œ©–œ´÷C²â“YKQ€—¬2:£³Öè™ LOá}dëÖwª®|ûJ(o랃B«/”:g$Ö¶ú–ÇW®.­£u?5† óÖ0µìêêõ€'_;Ûت¦»S‹Òbm~sC’ì=¡h9–sY)í3Ší�Ù³'’Ñ‚v`ÝC’íT©n"5v­_þÓçýé½xÿ_÷»¿óßûË=} *ûÆWñ˪ÍËyjGŒ¸GÇÚZO]�9še«m ­™²-å }fvN£&jÚ:fÙµ(äû°æ`Q ý¿¼tÀÊ÷}\%Ãç30üî]|üöÛýÝë�ó7¾ˆ¿ÄYg[�ûÎû¨Äª¢4g­u®ÜŠŸnQP ï\Êé»JÑ=*�Í¢C{ZæS� ýôœ79õÞ$çÛÒK&lµY|ÕqþäC†o}ý S?ÝWŒ›½Hø´c€r–­ZpScájÈŒ£�ð¥{¿ÉÕØàiV"§­;“Å•¶k�•y+oæô« ¡Üꉾ ‡Œgׂû�òÂèÊ@uÞ*•§â:—%ËK¤�©íp4=©Öµš¯¨«•Åð?b++Ç�u·˜»WFùÓPúi¹ÌÒæ³šîŒÁ¹ oVñ ²œv=ýñ3‹ qúþãÇ×¶«o}í—Á?Í•ÁíöÒ˜¥ hW´; % ò�ùeí~Zfsìýœ$’¨ZcÞ§LèB'«S1!ÕÜ|æ“ÊÚ`Eg·Ö[Ú.3Ëé‘Óèy?.ƒW±¹WUxd�ŽJϯç�F‚xn«Q5€D-£x£ºÈ»¬K´CN_ �{ç茽,jäeMn3Òª`Z÷í(žrºôàb¹ÏQvz|V_úæ¿ûîço}ý~)ï`'¥QRÝ7{ÈWe°+‚¦á£Ð ¬�ád£É2c[K/iôZŽWµž™�p‚W;ï®ÿ7uo×3irœg^‰”È•¨Åz×À, {ØDfFDfÆ™þJDd§ÉžîQP"`ø·/îçíjªê•}Vè ¶, ßɪzžÌÈû¾®¹u�¿¨Õú ÜC8½XÉ@jr¸Í¿SÀ÷³—í^î÷òèeí«€˜�Vzì0õÔ_kÒVgÔf%:Ql‚�HÀRŠë¤Èq†�6Ð�îp¸ ÃÚlvWŸÀ#˜ïË OÐÜ�a©yMêyqÃân+ü�¡Ÿ½z·Ãñu$�D÷ž, )ï&^‡ÉmµëòètI:í Në1Œ¦5D Á¦Hik7Àü®öÏ‘@¾vÀ w¼ã‰Ç¼^¥»ÃnxMÿâÏuîT£bž8"0Áñuý †( 6m]Ì&¨Ãv·€¸u|O(ˆËá=W6zt?¨Ý�ОcÈ›öâλ†ÑØ`%vزc;vÅ|'Íý»ŸÞ¼ "=‚Ÿ¼r¯q+µEOt‰*isZ“a×¶¬w×–’î|ã:>³Å³h4蛚G·ì.»·¥cÕŽ„ÿÝ šgog qÈã Ym¬œŠÐï³î螥ƒ“lTm 8¤f6fx^\z`Wü+§Ü#÷¹p–ˆe)šiXW|7*’j ü9Ø„x&¯³8‘0�¬µ!7Šçòm�åWŸòÇ??.&?yÝn£,òõJƒóž›OÇ@ó«’‰4vræ±À3n wœ�4‰K”ØáCÏÒ“15@‡wøPSjÁ,¶ÖKä�çïZø(Ùð_ f­–Â-A‹õ`¸28'ðô(J 2Û*q<#§¤Ž5_åZ‚rq Þíâ£D™õfžä›9¥™ã¿§¦€«,×ÙDÞHŠÞ˜þîûô¦ÞÙÔþ“WîµøJï�2;^%{­<†ŒÖ 3 l2ŠÙA3 Þ`Qä< Í:À rbç„q*m$ÏPÄ#1OÃ&¦ó”3ê`NÏqÝ-� z�3�ɤ淟¨E¤»ÁãBºÛì�;’�jaûjë|f|ê�B�0ʤ V‡Å ’Ù%+²Z g‹YaܬԜx Ã=|lõKÁ× ]¾uføU¾ÈûÉÞzûáîãÙ øZ0?qÇì@Æw]Èn o2hfp�]N,€(|ì@ŠÖ¨œX�ºÆ5mîˆ$DMp»E Ïs–ýyMpŽ\²�/Û´Ôϸ ù‹ä>Ŧ5-FÀ ;ÁÏ´� Ÿî5 ;æ�嬅”ôÔÖ3¶]·U³ï˜öã–ˆ…0mø£QË–Ö�;¤©:ÏuÐû�=P!¾ÓÛ\ɇ?å£Mï³Wî~Døµ‡¼eáÚ‰‚íæV†{—ÏØI‡¶ïX¸û]&ëvÇÃKpfj;Ö;×lm·œ¸ñtÌÉY lÏ+i+ÐÍuEV ±*=�¯Ýo�§ ª³&GÄé}‡o¨`×´£7Ò�!î¶üÆ#£Ezçv΋×Ôd¹´­–2£! �û¶5ÙÉzð¦ŽYþMyUeçÛáï>ý�nïÿp íý#ô³ðµ¹ÃG ±!·€º.êe‡ðhó(w¬2‘ÙJ Em¬!d¾:@"Óp'�¯ò‰°"â·ƒ‘ÖY†v�� VçÊîö‚êX9èvFˆñ>Tð ê)�‹Ï±f�|41®Z\ ÷­8·"Ñl­aNädOÁí²çV¨31莿™ŒcåÏ®’ý4vVæz½¬úÛ�ùéû?ç›/M Ÿ½Ž¯½YÅqg…ÆfßÔGôžâ�ņèñV eÂ_Ç똞Õ3.~kA�– ìssc<‡ç”2Û�/:džV-ü\¶ozÔï>_­rà}}·´ÜÚ 3»»˜eCEÚNÝà½9@Ûï�T‘ÉNäây"á×Ö ò.4ú‘Œ+‘¡"Hx«Q9sDuéõÏ÷w/=Æí§7ñád<î?y-o’Ý`ðW¨V ¹0|¢Ó£Á’˜±.–�Æ¥ïNuù~Ô;L<§ïÙ ��¾I’ÍúØÎ3Á„ÂÕ2ÒAn$Ñ0áî@DІæÇ@<Ù6vqkäÄ.xz5• ¾èêGÔN.Q+�¢v5øŠÊúrdŠÚ„܇ìBsâïÅ�P[!CàÓ{´¾NC]bwta!š:v¬Î€£œUëî±lÿp]Ø<$i=wå^{ÑÒy’ÂÌ3äb—ž4ð§#Eä{�~Ý1-=Ž”ÈâÕpÞ.oùº­ö¦ºQñJ tn°c.ühü$å‰b�ÚÖÑ2k~[“bÃ%ÔФ>{áîß³/ —#¹ëLi¦uâ†*�S¹¶ì´äÛxPß[�ÆÌhkLàN4S˜R·bó)kÐLèí$ƒÔéˆÕ3(¡?Œq½mnôôo?ÐïPsóì|í »šÒUP ¨ñ¦F º è‹÷ 0Ô¡$€A¨ Õ齈�\mŽ»ÌÖ ¬¦îëĵ¦®h@Ba̹R�IÚóÐê�~ü µqƒ8AªgÄží’1ÁÐZdðÚ‚»ô¼¦ƒ‚$^X×úYääjØaìdÄj;6(Y[v9Ö½°;à~%.SñÒ9Ç0•©¡Š+2F¥ë,”ÙY©oÔõ&í·RÊÝá«À™R`¬£\1§Ë® rK¤´æ��¯MpcÓ“À»ÑàË)ÁCí´»˜ËoóÇ|ûBöx”F{òâÝÇG¿î‹CF¢…å*pi¤b¬Ã`ÕNéìÊ�gµAf|%s='÷ÑwP%‰¢æŒÑ#:µCÍ 2�˜�SÈ<"<.¯A|g‹;<w¡Ñ ð¾ ÒV`taœc6ÂïØ™ô\C6¼ŠŽÆæ�#èË æ žuÖŠ#–¡²6fQ„©Ã1Ôç2Å#råž¾ñ&GðæCý/o?½©/ïÞ]oÔküæ§oß?:à<{!_»Õ‰b¼�8Ö@�+AΠ©ðÔÕ%$ÐÜS‹Œ7îöÅ×”ÞÓã ³2‚ç�ÙgCÌ‹ %¬îª2y·Ž[Œ„ÆB¡…Ö 3¶X8„¶}»eB̲Sª{Ôî%¾'T¶šÇ‘RØ0Å4D hʬ÷9öŒÉ}î­4¤%x_®y¥óØ*š„ëlƒO­Ö�&‘€�iIr[Íø‡o÷é¯ýnŸ½|¯ú�-AâñäÀïÊì¹Ölq<6æ(ÉmÓgëÀɺx®d¥x�·€µ®œé­Ï 3Íðýmži"nG‘AçeŒé&M©[܃ìAgÐÞQ¶7¾–kbßË/æ�VÃ6„aë)�è—FïÁŠ@Ì�âw™Î²šb ­c§5ɶæ�4~ÌM.@6Ss뜕·1‰¿}û)ÿí¡OáÉËöZ8"­ƒMÀ•Ä Ž}jìÂËšï~¦œ­ÑÌ×qͬ•Õ§Ó¬†|�c`�é IÕ”aðÙ�ËåÇhœèWf“õÊ:l½ G|/Òg¯Ûk¸5»Ú�åW4—tÓf}fÃ8.ÚH@ó¦yky¶÷ãÈ �+Ö€!‡ðŒy@*�p*sußCOtC;Žpfv^Ñù”¢Öh[+© Ûòœk4›@Bö˜Øó,ËDÝ'�wþù< ¥Nóà$€®åÚxïHÜzîÐ[„M@ê�0#6�M,vo°»m¾Ð (p@æÏl»ÿöOùéÝÛ÷Ÿ¯ôÒ—÷o?ÿåÛÉõëÿËç·éÏ^ÎÛ“ëþö³ÅuãèèÀg·…2'àá}_|#Ãõ½îÑG0Þ¥e�s6¸ÆˆÁÖÀw©uWÀNKƒÆVö„R•soöµÓNcc€ƒj«v»{šSÐYÑÂ)ðTgä”bµá¾óÐæQ‚Ô¶;Á݉DWô¬gSž³"À@< ”±OÛ†½0¯ÞÜ·mDhäò¨ÆŽ¹úŠ­«þgó¯_¸w�ÀwÏ^É_Žù÷}|=È .mc ¼àe$³j” úß1©Ï­9† Â$NÀZßWGú(ƒòÍK–cZÖ ¥áÀBm‚„¯¹Ëÿfg:w^5ÛHûZv_Fº’×hc¡:‡âEᡜÐtâØf.˜±w@–í*:Ë;;Wë”MG� `“úTþEǺæ´m{6®“˜¢Çü6 þo¿zùˆ¿ý~ãÃûzû‡7öñ£=?yoéíãÛ 8BFáÌàÊ*}‡·y©� „h¸Ý®«¢–ް–‚ÿm#ó˜ÚR�¶ )ÑÀ{uVdŽ5Üч+®L>ÖþBJö«üôùc>äLS­EÃ/°ƒÅBÓ†ARˆÛ@*~i—/‘„ö}á‚.úhZª[ÁÕ ciÅ` @™pŸoÁÖ«ñŽ£X­„f·±sµPEàÔ<ñÓ"ˆ‘†`h+2vÜ&Oÿ6~°w�‚âÏ^¶×ø \ ²Õái# äY¡cq$:¶WÛOª…•¼ÎXÖHçVNIUоú&˜(@Ü™"ž»ÀžÉ$°ú*Åþ›]Dz+|!-n'‰�$�íWãl^¡¬B-r~YPÅ»ž‰^:bc-ï~`j1Nö%°ÉÔ9ZP#Å{çt Ñ^‚uì‹Æ• Å�6FÐ-‰à·ññçOo>ýdÿú/ñìÅ»�<½�XMÛH­–‰ gitý© �?°q–°C�ijˆtÔ:*¥nÀ`€Ø‚kþ agA&Øþ¤L%i» S€’súíž&„º &`‹†ÚFƒ@ƒˆª Ó)¡U-¸¶¯ën¤ã\?VQ� ȾÔO(�.‰6ÆRç~Ðs“@�_φ J¡ O'6>�éô[UÊ·KØ—½Òƒ7é“Wï6ÂÆß.aS}\‡ù)ðµÌ…d®Ì³!³£(™4³Ë0ÓèÄŽçÐÃ?ŒþÞeЬÓw_ýôB+qäœ8¥·e¶â…‚›8ŽEa2�V-îNb94}ðp460À'Ç?7�ëÁ¹ýàh¶úA8�·1÷s'Ú¤T±jáèJ¾Q©è>Ö˜t`µN”µp öC$ÄÚLç¼ÍNüŸ_?Õ?¿ýôöó‡� Á<š>{ï³á_1'Ä #3@&¢ÅA•WïÍÊP›sŸŸÞ”tþcž1ßWöµwkNõ©ø°Åb8f¾‰cZÃ�L;ž‘®uû¶Epêí“Öx�‹7j¸Á’ähÞ>@8lbdÊéÔ[Ôg îO÷’œÝ¶ã?ÿîidx‡˜ äøBÅt'Êt]7ï´G/3¼¸oƒ1ùé§WÎ0O^·걯˜Ý-ý˜"1` 0S4>—zÂPžûl|{P5Åk»ôÈ‚êm�%§zqÚeo9ö¸RxÈ nh¸6¡R“@'­qÝ]Ôö!c­Ýo·½�x-`¡Ï5³ÕjlÑ� èÚ>¸²+@±ñé«ÀÆî #mcɦŒÁúÁADX‹b/èæÑñJ ž·òàmS{�v5¼¡D{[gÎOÿò%Ξ½p·§Rù– ³‰íƒ¨nc$º£=P1m-J‚N‘9ü§5ç}uj×)SñM°W&z†Ø dab³ÁÙ¸6j�Þ\Àì:3õzxÞÑ7�æm§"ÜQyOÃÑ #¨}0.cϳF\š‘ÙŽ7JýÝ3ˆú‰ÐN dîZ9§ƒ´ ˆ–Óu�ºbÈ0Ô`&�αÝL�Ÿ^ 5={á/»$bðíŠÁ…¯2®uñÊjM‘š;pí�…?ÂÁ³E†5xòØóúû’é«àñ+ðû€ª¢£w°àg÷Aà}œÍ±%áæ„úåÜb¶#¬__b\„»IŽÔÌxªEÄÀMÛÓAXØ6F%;U؃ŒŽvnj`ÂDÍ[£+±–$§ã,£1w¡4~E‰×¹Ý%ý®ìÓç7'ó§7ù/_ìÑýÙ xße~áZ"?ƒ¨–Z@�½Ý½0ÆTÔVÆfc9MxüæÌ\ÌlÀìl´²8€U j çž¾u}m܉ÊÔqĶ@ô·–¥3eʾû¥öLÔÌwËì͇ÿÅ^—5¨Xáþ»Íß9w#—DzE;á—:j7..J¯ “ W¡:y’t�Q÷]]FL•]§”N�zÛÉù§zû.ßäûÏÿò&,: Ÿ½‚¯µ8zò±†¬rG H‚ôeÒ¶òˆŒ²ï[V;*;òóÑUx€Í`X <ÆéÀÁx8owJ¿zû‡÷�sKÏ^·[LôøÙÿÈ¥ ŒÊ0‡s™cü&¾.ì›{ÓÝ¢˜ŒO4g XƒšódÆ+™�»’!½iÚ’.èÛéÛa¸@Ê'ª©×…ƒŽã®j¥Ø(Ò¿2ûx„á‚€ƒ`0p„±* ‹íÙ%k¶�ŠNßLçì³™1 {Áï¼jrhÛ;Õ[¬�ö–ûØ��¢Ùµoß«¿}ûã—�?~ùøþºGþÇç.ÞíM[ÿ:ÅýÈ<mÚ0«3Šs5˜ÁÎá*ÉåÒE§`ä-¿ŒBèÙG´ItŒå%ÛT��“¥¶&²!ÿRUGÏmös]ÖmdÉP¿Æ×µ�Œ†'Ì|>e‚}8–¡â»`¶V˜B¤H{Ó³¸r®œkéÔÝ!&³`ÎÙ˜:�X0gºøim“ñܳ.b³í…{±Ûîò¯ß~zóŠûÙ ÷Úÿªø.mž  à"ˆšÝ¤Lr*@¡ðÀ{¦tðÊñ@‡Ø¨¾t(:‚ , ÅÓàä[íl˜„}…’Îùø9ÒÐê0ûtkÔoçø>უhé´&¼sÛ�ÖA··@¥‚ �1.¤8AHPù5³¯ ÏžTXâ/ŸB»û ß}ñ¢±5u%êK�ƒH„>G`à³To ‘ÿßzùôÙüÝ7™ýÛúË›}ûù‡_>_˜·õèôúìe}-Ã!†vºáoCÓ} +êãäl¹T6³Â}ož.ÔP!1­l…¼Âª²ÉîèÔLx¼Ç!É\ûœÒ¥`°‚ù�+H9Puõu7<”ØÀ;ÆáÃsnÑA‚d¶6Ïí ÓÑ,„�Zíh9Á �†U†GlÄo—¢üK—⨳ œ_J}ápj|5¥ªC}v%F)–ïèjÿû»Ç>ýðûóã½jŸ½z·?âùuëtÕ– Ž®¼nÄyƒÓ�“¤q$}­5�šB»^h…Kq™N©Õv8*LÜg§Ý˜ ŠZgtt�˜WÅ\.¡Ù 6î'1ÌïØÊûì¥{ Ä… ?G;a…£ê‡MÈNä ìõ&KcÑ=·´dÓâ…B“# R'‚¸!ú³7º¶I ž-5}âªÌ#ìâµ�Q‘êîêçÄm§˜¼€‰¤`š_éÏÙ”àè /ü¬ÑÑlµ÷¡�è7ÊHíŠA"ÇŠ S¼†_W¼�úÜídbGTJ»ËdfPa‚õè·/Úß½·Ï_>Ú;T®pÐyøÂ}îÞ>�¿ „…ÏÌ#pgtÀû&˜ÖJGAíÔæDç¶¼à²îZ¹;Dqdk<¥£çØóxCOœ7¥JTÚõ\¢R•´¼n$½�·Y%Пû"ñE;RÝ_~‰h¹dÊçÙäÆÝ|Uí èMJ¤*(iCF‡å�`je07†«¤–° RêÖXEmw�âö ü›?}~ûá½}~èƒ|öÚÝîŠõë¤é€«Ôgû¬Êœ c›¸ñʋٱ5�:cÂ](fÌ{�}Áz‡!„tÛê©‘…dŸƒFéËYPÌÝÍ¡{émðè-U ÓYÁ¥¨.|—c§BUøW–ê¸ 1μXýÔЩ³âÓ�íÆÑ “tJÞ}FŸ¿R�ÖqW€Ëq|ääŽy¤3ØãŒi,.y¯ºýLû—ñùÛù’_¾TŸ¼x÷G�oõšc´^R¸ÛšzÙÝ�Wé½ãº éc˜CÍu�9b�C :\”7щ€æ ü“ „ònø¯k÷®%Lr¢ÊšîLÛÌ­=ñ�SÍÚíQg)Ž2£ ¹]cpŸóª.¢#¢V£° ŽÍ%-Z•#¨úàÞ\ :ßÇŒpD[®Z8Ïtð¼&Å݇-~¶csCÈ| ×l­Ý¼ýd?GE_ó>{õîG‡/ïUãFŒv0]y´öèM/ª§ tÌ` Ú¶ln°¢0ëûÌížECÐ�¯5GŠÍÞÛ¶àYÛÉ�°\ñò`·c˜�-gµ8i^WQ·TŸ+æ.öy@ñÛ81L^ZXÚ �Ü£|zX4†Œ"-g¹@t�‹ÐC­O�pj ¬¡B9c®8ˆ û,w õˆö¾NûçOõoúÓþøíCýû‹ áç£@Ú“ð.Èÿí÷Ú§‰›ððZ<檚VghBÆè€5ó„G–6#i‘à//”¿} -³�Ýa)O—v‚VVeè s¾³¾R½’¬"âCƒkzλ6ós`K5ì,w „áü–„CÀu»ÇÝìó,D¾‘Ls©ÄU¬­Â‡: GYõ7>œD¡@-Ž�Žº«®ÁWè¦lOœHn7Áï>~yuÎÿ쥻»=ÿ6CD»²äìVr–Ñ,u �Ûíè6Ì= €@Øï’:ü°`uÓ®æ`•-ølñê˜R˜×ˆòÓ|ïô¥C0p‹A€ÑÊã—QHÚÝ¡ò…0®V°+]Š*Ì*Ü ::Z jOà ‡ƒð£pÈlJšè0�Œ~|ÏuªÍ±lÀÀZ°¿Ž}8¡ÏUžhkð–§ßlþ›ŸìÓÀ˓WîÛGúÿþUø_ÿûÿ¯/óþëÿöWÒZLf CkÝfgÜaž‰kÜ­Å�Á‚…mëô5q°_×~ ñÄ€�’Á{ãriE6•vÌfßW�W-E·+ϱ‘š’-wÜ,Þ½±m:¢ÓÎhj¡©% òs^èæ‡š�ÙÓçÔÌb:ˆÓ;�Á¡S¢™?f»Ì\|F—¾· ôAkxo‰YͦäšðuW¡ç²n/ê~nÞëÀ¦'¯Ý½$òeÐÔ YІØÍ<ØKX´öô°µZ×1ñw9£è3Æ!TÏPO™s­~•ƒäçHá[ºmá*ç‚R+ä²/Ñ cý"žgohsû¾#Â|O�Ëg¯Ýk”gOW¸g¶dsÌÚÑ�¸ÿÈò]8zAH�Ó–*@�50¢Žé8y4l `Ã[h÷Y&bZÍmRÐs'@éo€$'SȾË2�.¹5ǘ<&MÐόΨ5š{âC²ZÈ8èÈlù·‚e®½�nE‘Šb³S_™I§†¯@wÝc¡C…§†š‰AÔŠ!ëí1çú�~úü—wùè�üìÅ{í@7ÀO8ö^­€†œÕÄD,�5«/Þ˜šô¹§¬AB½P+¥ê0”Ð9@Ùë—BgÀôQäÍL÷Ëw:ól+2×´¯€ Înï°yü¶žñŸ~|¸ezòš}û,ÿŸåøyœ±â€=ûº´i•3�Ä)–È}ÝXvê—*¾]^>Þ¾ˆgi3“¯�¾G´»5ƒYuÑæÅsRkó9d¬Á(‚š³³Ûkmé-�1Ô+ølç*œÐÓœ{rG?A̧OÝ ”PäžÒ¨Ëd[8ë?³nÕHBzÃV¶­Aˆ…>·®‚jûðªÛHðoPk´?çcÉѳ×îvwôíç©·�âJ3 Œ=œ65„Éu¬Ž²<ú#|zÃ9š-àG(-Äpcº!¶—êÆ0¥)°Ú£î½›ÒLL,©ê’þl·+fS½ÅYž”8ø¹¬ëK»uP›0™†äñr|tÖ0Q;�j² o‡æžŠ‰1®”†Xý1â Ž‹³ÂðÉ(޳´ÓÒ�°×µ—âZüî3­wöùÕÃê³×LaÃéœæn@g®�-=ؼ¹´_w„m�ÖÛPï8‹aC±"�Ô{SFó,»ï *rlŒkuåÒ‚c^âKth‰i�Ñ2 šâÔîJÈßO4âÙ wÿ�¾LõÁA„ã^r‚Ǿ½òÔsDUæöÛÆêoÞ~z“ÿöù•ÏôÙkwöþÀóKBÞg¾ #·a( Ô6þ¥q'‚Cê$Nh®s±EE Xfœƒ|rt 9“ƒ¦Ùž×îÔÚPƒ›ÆôXºæKõíìn·ûý™ÑŸ½€·×ªý÷ë«Í5[?5Û ·�Ù {¹*£m"Ðræáí‹z�3ôtïKQ‚@°¯÷„"íäî8Œíj: zð¦¡ÍUËl.c+i hƃ‡Õw}6}öâ½vŠÙl0¡¤#1m f]¼¦ae«“�š=¶h‚©¹ʨ�®oðF 0­°ÊS ÷˜'˜'æ ŒŸ VQ^ËmMõf·C¤ï¯šñì¼O·|} ³´&¼ ƒÓÒÓ[UÒEƒ ÿó²pRT�†}cÉ�HoxÛpÍK«0Ùvwë‰ÿЇ#g*&-}’éÜ&Çõ¯àøË£[¹Ýÿ¦KUKø$t‰î™ÄuY¨`Ãʦ\W”²dJ$ bTƒû>›D‰<ž�ì\˜ßØâi³i…!¹�³Ö½`à[=I[·ÇÓÿçú`F=‘Ÿ¼–¯1Þ1�êY üp?6]ÑûÔ¶¶sWˆ[¦9¾q gr ÃA]z�‘Ḉ¦¶V. B·‡6JºÈÝÈ4A  „ˆQ6vܨژwûáaÈG·Žñ>>fªž2‰Øí ˆØñr¬ Ⱦ@ê¸aœZ&W7"í¸/*@ºssô¡àš5Z¸æÉÕýˆ‘µðhûŒÏàí~ø?¿|¼ñCþhoþƒì³WñUêµ[òsŽ›�­—>0‹A?aÍ3é‚/R¬Cí(�¸¨à¨´ÆÈ@@ ¼ÆÌöFì·pèb<­/ð“vïѲ„®sžNãÜæÓzG&¿]nøÀ¬Œæ¸�‰\¼2áyDÏsœ.çêæœ¢ì>$:á2U<3.BZ@ÁgçÈ@ÅÙÆ¾"oÞnÀ6ãdµ²v¨o Óq'<úÕ—�oß<W>{Ýî‹ç_sÔçÅX„íY °€JQ˜F×stßÔšCÊZ�äë¢xÕ¾B ¦»oë;7+HÚÀ(UÓq‚uR�ɳ— š/�‹�t‹Áû®îàž½v÷wp_»ç=eîc•€¾P›”|×íð—œÜ&4²Ì�FÞ@NÏ�lCúu„X½´;3̈ÇãúÕ÷ndj@Öý¦€¥½-=#íL¨Çš±b¢%&€—›ž¸˜Ö:{e¦Ùl~¸Ò-\šì'Qó!¯�Í­N{,®h�^‘U,2ô9ÓN;ÜW«€J Û-䀭YÊ@¬<|||c¼š03À&4å(œ‘.p -â£}v¤ÛúV`Òn†ÿt�sÞåŸóý§>çÛGó¦g¯àýOõ+œR ¸ZWç±9ÞfÈŒ"Ñ30Å8}RAè@ãdØÕO�Ëö�³0ãeU5’B´†– ÌÕ]_$î:'cø'^;7'wÂÏ>W¦!b;{§kB¿î@ŠÌ1>Ëí®!¼Ó`ÏômFëþf êf.¶§oÄÔ@ü$wÏõ1ƒèxbªÌ±q7,WÆ-äoÞåŸ}šÏ^µ×N3m\�í©y]â·÷œ¤cÎ6{mŒ5®õØ–cô–Ê´Ëû™*«Ö1�M¶5¦Àå¦YC;¯t¬¡`ØÂb˜‚*6woS‚мEuÞ&[8ñÏㆱm§bž;™æéR $ÈC+y_^·UTIKöü+Pºš�ÛuË%}áÇ„B§·¤‰|<.ßÑžÐ�Úƒ¶kéíûô7?}Ìw_N¾yÈuyöÚÝ¡´NlBÿª§xDü óŒŠáFu$S,mhmN_TóÌF<x[Wçg5÷NÇYДv ¥Ù¯o"€ Õ´h×a®Ù2�}::BýnÆÔ$õØgBp6÷€'˜ö\><Ùùªì×èq@;lÑ×n@a�«§!øy¤2 7¤Iš\@wjCNxOª€d“Lù®hƒMð›ø!ãuôÙkwÿ;ý*DwDBÖpŒ¢™[¯Ñùêc1z#‹EpÉp:ñµ;Q­ ÎØ•�§)¾UðÛ!­î«°ç&ŒU ŠPC $ò¸P�Fäæ�¿�9zmú6ø†na%VÞ‰þCõt£å­ªÖѶ6o³âC'5¥_×Z¦éÅMv#h¬gÎc®ésƬTÂKÆ-±;»wšåϸ–� Ÿ¼t÷?Sy):Ö<Ã@$ú¬±ã�Ð hÄ«íé¹flkYÞeçÚ �o›æcËž2a0ÑÛ=/¢Ÿó<*8>yángûã÷úr6Õ³ðšGæ¦]­abeMϰuœdºË&Üs$²7½‡1{dJ¶‘Õñ6@ÆGßDgõµðó .Ûnƒ× _Hå^L E‡An'I„Áu7 =[l8’#�€4•Ë40Ä —Ý–/3“m.&˜¥y-QLe K88�'J¶�3í¬£øË ¢¢j±§ÏºUµþÍŸò/�¸ÝÏ^µÛ¹ |~l1ÝWæ1F(¤¯k3æèVCÕHö´vr£‰&ì ûE@p|€ØÆ�û¡ö/¹Ûo �€Ç1ÁjAv²7/Ô÷ví½pÐθìlªk¢£ á鯹|̹R›µÄ°½í%˽¡ý°ü‚Â4(ÖD�ƒÆè/"¶² ¸ÜÀ³Õn®ó}�h”®S,Ô 7B£ùÝ÷7ñá}Øç7?>|ä>{í~(le@Èj}œ•ÚøFð1ï ÖÓ91覘@ll¤oê�r ZÔÖÛl].Fu Æ­ _p·³•ep�»�¡.àU{öÑâ¬yçRîû˜ ‰If;úJ]h„BE<ñAKßP8u”Á0]m ýÎ=íhè›Í½b¥š†-ö» oÅõ>{`L }µÑ™‰ó–žõOÿ>ñû&ñŸ½‚ß>Øÿ‚ößÿ½ÿ|MôÛ7®á�-t„]‡!8qF`ûî}ÍM/¡ æDAIsêÖ��ÚÄÊÅ‹¦”�Çé„(úY¸'ÆñmP (!¶�Ú�&øí%û�»Ÿ½z÷ÉÑo”´>Ð1™¾Îrâ4úØ4Ž¡³¾¯Ë+àœ²ŸÑð‚Ñ-ZEÑ[$ï•¡c,ç-k Du5¨á"ɯe½bLY�!:J…Ç'Ó·÷4Ôñcšˆò8_ÊFisAø‚ˆ­BÚC€Ý-tvñÁŒÀÉíz ÓZWT–$)[È–…çÚÁ)´5“ð^Ä3™Ñ�äÂ1Z¡+ë–’ö�íÕ¼òÓ}öú}û\ÿ¯o?Ý—¿öŸ¯šÍ×a†É=�£–sÑö憓0™šÌ¸7¬Ë39Û.q\Ï·yÎÄMï¹¾ö[_¦ù~½ö—\~4 kͱê èÁÄ$·Ï2å÷\�zöÚÝ›úWAºPÓµ–Çýô²1H‰úîÒÙ £“pÓ¨rž‚ƒ ÌW%v¤¶IÇjcr)ÃLëÒÁ�·µZ+ànêÆ¤®Ñ5Xâ‚ð^ý|$ºìøe�.ÎÀ•[›Å³%�XØû.aÅŽSªD!m‰ƒÌåV0œT«kl´c†ü`³#ÈßÀéG8gðµï íÿ€3ëô«}öò}ûXÿ3>ÖŸÿØþwÖÙK`ÞÒΤ¡}¯ÍpÞRO¸€’»wGFÚ5yCuû€;ÞgÊJdx”™P�€@-:4†‚T:.¼¼àýðËç}È¥–¥iCå¶}î~p`CíÐv¼§Ê†$Lá'í�—m!GlªB&>7°›†ùÆÌÁøD W{aÕû1AÛ…`ì:±ðds¼lË0¤—™wyˆ¿ÿyÍ^²>wénQ?@8íK’»‰ j�L-·†8˜yèÀîOÈWn `²Ù:ïG›¡°vj•îD`ÃQ7`7'PþzÐáš3  ´¶í…jEv›ÿ†¿ šZœMZa<Ò¢¥”,ðñ7š¡sœl³çɵ­� 8)€ÊÁk:ú†»žM¡§J;c×õÿ{ÝÑJ&YZ ®Å…DÊ MnËç?}yÿ—x,{|öÊݧ¿¿n‰qn\­³Ð5Q_‚Ô¹ÅÀÛ„r×8×… ¹©m¤Ìj{4 c÷Ó™Š"Gâáç‹�tÖE¦óàE¨Û8oÃöÀó¨>+ó»*UíÞúÜEÞjõ¸’÷0a[6xÓœÀSáñ¶¨Ó‚5È%�A:0ßÄXƒ¬<ì>Ó‰¾›0f�Í"g ´óM\€0ÑiTÆéöäóG!ž½v¿øLÿGÿwDR8zqÜZó óÙ9<—�~T<#É1ª˜Ôy§â�0|˜òJµ 2ÌhËšŸÁ­ç$ S?І*•ÞñäÀ,ïLé-n߬ßÕ˜ÿÙk÷ËÏô¯c~À4Î@k Ç!;ƶÖr!mÛé.œ °“:(L1ù 2ï¶æÌ½âÚîMfÄÿj¦Ã=]mÄæ©`-^Ý7¾¤è[(4·¿Ó˜d¶’ƒèL¤vl²”=×Â3X”–} hû¢w.bVl~@ÓªÕi],­øıa‰~ZÃ!‡oŒrqZ���;”ËiúË0ÿõ/U ¬Ï^¼_L�è¯S§ÅùƒòNž=µ6”Ÿ²·jpǺÖ8Pä1ƒ§MØÒõtHØb"Jç -�¾íÌ)ƒaúÈ‚ªÏ«mm •Z‰3ÎTïa·úäï*`øìµ»B¼|¦ìGö0P&ØŸ‘q]0n½Ë\Npe­8)l�Dtä»àÇ‚xÀ‚ÀfŽWKøL|"x}Ù’ðFà…ïË`܇Š(XŽ('Ü]Çù¾Ô2�‹ Dzr<€‡+€G®6+�€ûÜìsì@QàS8nª©&<µËÚ>2²Áf4bäA1I„eÇD¼V±þÑä6ñ�iŸ>Û§·öþµ!Ó³×ïöšõÛèðÔqO¯Í0îáz‹J0‹�J0ΆàU ß~Ï2ï~˜µGwÂÜ NL× ½^ €�¼ó|/ÆZS 3ëåTðÊè¨tåð¼EñŸ­4WÛÝ/ 8xSç±  &°Òºw]na »<ÑíÇÏ=¦/ Ä’¦ËFßeR Ý䱪£!ÓÒ“†úÖàqÑo–�¬všÝ•©òÇü�~¬Ï]¼_~¨úsÂ[×5Ižø'ˆ…?•€Pœ=qþ㚀S·n2s@ºÖ=û\cäÁP˜Š« ëc3+¢Íè±¹èÀŽ`·§õÏiÚ7£ÔDünìÿ]5äž½x·OàÇù`ßëØìŠØäq”€½pf+¼§¯¯ÍІ%Pƒ cBf"Õq²?Þk|ôho¦sí…\›B\w€.!¬öé>{^¿»qçHþΆüÏ^½×àY‹húžÞË®Ö7¼Í³ –�ÔÔ{ö¨Ä}f™ùBº±Gî6!.Æ^nX”�Æ}Cž¸P7ÖƒFHà”� ðæ¡n:„«ƒÇ@ç–'K¢¹»hƒÆ2Ò[ô-«ÍðÖ ¢Æ60Â9sl%Y˜£F· F/×ì£s5GðlBR\lʱnwAðàŒB2P7r¨pw�Øö¸üì3ÿ%zô¡¬üìu|­˜QÁg2u9{�:¶Pï €OÁHæmé01ƒ$²“ež½KÇË>_¸ ŒÆ« %µVШöQg#£ ¥.P®¼zo ¬rä²*îýEßÕ„ÿÙkw;áÿö$ŸMKÇž Ô‚Y[¤�Î_ßJj‘9qšoEUý|¡“ÃÀvl]›-\™m´MpXvZ5�â—Ë&ÎÕJ�;š§ãl»¸Úp&¿�½|Oàg/ÝíŽég4ÚœÖúÐÃHÄÕ)38lÏ(ŒKÙA ¡½ Íg þn; ­Øä…éÉ"Ú9ÑÿCÚ‹øTÛÈ ”'#`‚€`Ï=ö²Eˆ£ßY¿¯mð³ïŽ)Kß~¨ˆ½Áž«eÏ] ˲/ªf"¨Ø;2ä ée{Ç_å$�öèÑíRfYjçfáÕdQ“Y¾´àN]ÈáÌZ ÃzT*ìÿ§îÝ’u;²ë¼�-YfHrÈaµ€|†"ï™Sî…{�ó&‚FŠúÉ}°[â:¾<@QÜûÀ¯‡ÅF°X…:gýkeÎËßðÔåúñð%Ç}o¢+ë¾x4�«·]6ÉÛÖZ-Ê©½´¥ò,�g.Ýf™Àë½í%[Œ:¹²x÷ž²‡Ïí¥ÑdÒªAñ§ÄÚþQŸöŸþküò�ëw¯sýÝÒé[?ÅÏ7¿*„—»‚èô1�fÖÚ'ù’ïýÇï,ç`÷f-D®¨ Õ@ë7a_-¸TYëÒÞîé�¬‚³G¯c‹B]섊&�ÛŠ¸z™8Ó[ÿ4âÿK¢@ëG÷á‹ý§ß”ȤEÆÑ,$¾Î‘gØ~-mUªìŒ7fs¯…[ŒhjhENpqÉ -d ¹Îâû:�ù¶¬Í¥(S*Wœ-‰ÒmÅé+™ž®U?�Ã�� Œ*[úì§m,f÷ôœWÕpW¤È×{û³äÆÃŸ*jé™g'‰ 5 �>£žŠ>x'ò·b"‹Nƒ”Þîw¯6ÑÊL¦éALÿÆþöþðµéþ·~l¿Gu~Ñ ©ÒéïÚ;aß«e%Û'ÇõEOaÅ�ÌõÙ»"nó6å^»jëš+h1ò RhP)DßA×8Ù‰,‰ i¼îðµ‡ìN9˜‘Ÿ"Çâæ±Q׌<ú¾QpRC\º—ªV˱çpFpÆÖ=ÐöÔrð¡aÒëÌ�<à«CÏ1D×öɧºQB:E=Mvgý!�*d~ÜÂý§ïþîOüžÍêw?ÿéïÿþÇŸ¾.ÿþÖOñ÷b3Ú¦gM°Ù]ÿåš‹$ÓZc”Ä­´K¬+7‹eΛÚȧ¬NnR¦­Uð}û pâm*'$Ç M|Y}<ü1i{v摟 Á&CŠŽ9;~‡Ì,¹‹O(ÉV;ñæ÷mlbÊ´ŽsêÅÖðÜ%ŒÂo5/º¾@8–‚R�EËv÷­�Æ vÅä3Ç)¯×¿²û‡øÁîWYßúÑý÷¹�Ö¼Ub5$_¾Ã)kÑı$Ù§'UH[s¯ÁÂd4Ôâ:]~ðŸáý;˜~•Å6!oWwZ7Öy§ò™’²[ïmŸ—\�^ZúGhšJz�6ÃÆÝfMÓ½º�êvæ›會÷Š‚<´m�jiìmr’?Ö÷9¦¼§´»^òé�GÀBLØŠdP”¬]—ô°R=FŸí­‹áâ‡ïÿϯþ¦ßøÙý­Ó{€»ñHðT2¬Ï11éY2<{¡²–Ò‰™×öKÏkÒz…v6×dvX�a7 �?^cù’Ò»Ó«ÛÖ¶ys�†ÄKïG½ÒÚüÐ aºqóæ!«¨í¼{¯»Ö�ùƦ³B‚‹¾Ý�Þ²…Ii-¾ìÉ»Gôv�åÔ5×ÄÌs‹ʤ+³·ïuO±ö)Bù_c»ùÚðá?µÏ¥_ÁDÌ.ߎÈE8Â%«pž�u0Ìê”ã§Ä-û-úÖ9›Ü'òkÛ�-<­õþPž5Ž{4eÌC¸Ð$å~FbsóÕTØ�}JP8w^¤'ߎ£5™íàémõ)ÇŒ‰-k­Äq¬x‰;;ä3qCxcŽ rœè‚Î ˜€Ú»T×Ù¢ÎS³6þÐ#ˆdÚ™óãúï¿ÿù»¿ÿá~ÿÇï~Ô¿ûÚø?½ß“+…¹bŠUˆâ¨ê lxý"¨¸g”¢ Q¥»^s½I«½MïÞ»àpá]]Û]3|D©)ûÊ�ŒIX5œbµ aæSúÉ_ÖÆæ[?¼�—éo¶äFµ?‹I½s5;*¼BëhoÃöªîÖQ3H”p^4n€"c1¿Ånˆ*:d•¬ÌÁ@øíÆø`è®Q¦‚¶Ð¥µòUìá6?ÖGa›oýô>ë»^AwNO?o`!ÅÄ£WÇ5³U‡¨õêÚô,Vp8îtïbçO9†ÝVû#™1¡¾Â'ÂDºúœælqÈCw—Í5Ë€_Ý>nÌmöë¹ò°}S«T@tÓ`‹Õ ›Ór¾Ó®î’ÀZCiY— ß¡ +i°^!M˜�tâî§5«`ÙMF%á΄Xî®n¿÷?éýáþÑ¿û½4Öoý?WK¿.䆖ÑÓr(¿:Û¸‡1ÈŠ«rN7¶�kÿõc ð‰­€�ñpµ“tqPV°ÿm,ˆãY 5÷è‹þkÖëiëê­ÍasPµ»»Ü»"O–Ôl¥Òߡ趖˜NˆW.3çm'z£#Š Ã³Øjwú½0Eëàï–V@r$êqH‹_ rÚÈÙ½:›ÿõ¿ýÛ?ýáþ1»iÿµýøÕPìoýô>…wÊoì1Õ+‘‚Eä¾¹J³¹1F·ŠvëÿÃÛ^|dÿì–y0èi{æz¦H_ðš!¹^V}âbõ¤E‡ÛmUÙkäPþt2æ§oÖǺ ­cÇÈ‘¶Ãp^´yÆ–¦çÃaX=ŠöR²ÇÑakÅ£³D‘Ñf#‡Ør{æW\½‰:¦×–«Ú "Æ7ÊÒ:Ä%û 3ð×ÿáý¬ÿÇßþÈ8øÏ™»?Å/?}�ý­âïQ{¦Ç¶‰ ÂNŽ1jn ìXƒ¥ ßCÙuöÐŽêgž‘Å:㓈c~®©ŽFü#ù†Iv%P+Ö¤;ËdÖâ�èAœ·ž^ÊÑIð¼”}‘ƒ¼E¼’-’z*bèÒ þ‡-er ]ØïÚ<“0®GJ¯>sÓ)ò�‰»¢ºJEášH„ºšÄ'ÛÍÿøS\÷ïúAâ[?¹ß«‡[B4c¹9£§‘æêI6„uÒ€×Ë0t¦]%•„YH~άlfu[àêVe»äH@œÇš7¥Ec%˜±«n3"À±g£êýS&ÕÝýâ˜ñ Þ'dÄÚ=âeB/"¿�«¶ô¥‹0jí<»E0Æ™RvÏXõ�Rj‘RW[€¶kgøµsŽ¢'*‹ð|e�VÙ¹Lû8oúâç¿ÿ)¾: þÆÏí“(â·ôƾ'Ë&·¶íâkNÚ¤Aˆ,1⻞rJKËÌ:'Šeh{¹F#'-ܬìÖ8ÏeM¿Ï±VÞ’bJ劕däÞ ôפø *xá]ËI¥Ü’Ú–¡©T½eKŒ!^m*½¡b;v½ÂôÍÚÛu`}<©øü–ÖâãÞq…No(ŒŠvþ3�d§óÔõ‰ÂDÊÍý*ýî[?¸¿è? ø}”3��×ÉN”Lî‘O%GèÙ@ŽŽ¨ *8ôÕ'vV3O˹áÍ�qµ™šÚm£ë–½œk«�4"ctÖæ„?MÑ 73õþhW‹sÎj{/¯V¸‹h‰¾¦�Ýëm†È¶ ÿ3·!ƒ'JÏT/Õž�…#�O΂Ðaœ�]È�!gÌÝæN¶žúB1ˆÒn«~ÂïÿûïÿÀfõ»ü)~þÚ â[?½Ïp­_ë$.=ZÛy¤ÇÊ2Cø+ZmSø­Fåro$JWV)Ñ…ö}ïº�QsÓƒksd),¨k¥bߺç^}¶vgÕ"d®ŸKè�ÊQu¼kÙNÙmD?`áv£ã¾°¥ºA@ZøŽõ\ÂÝ�Êa¨T¥¬…WlÍ©§kÔš¾Ø}k¹ÙÖ)QH�b‡¾tiÙVfŽò±Uý·÷ówÿxÿðµ$”oýà>‹!ê¯!cã} Ö«°�ˆÙ2ð_¯‡¬ñ‡¯}–M3J�~²ÓîëÌlü_ûµ}G%9¾…I;!ß=î9wì“ ‰¥¬±¯MŽÜîÇÏt [§q—Ý–nÃjêu•Y&A>ƒ9Í<ÞÑ1% S7ÝzºD"iÁ#Yžc†¥5‘—Yn©k<ê´VgB=Ì·'øÏµ83û¸.ÿŠ?þòÝ~ô?ýðU@û7~|¿'Cs­É -Cµ> ûé¨LN¿y’ ’ôæÈéó²h¨Ý1Ú¾Žcäéõ‰/÷a*¶�¤nbçvÍÙFÛâµ;ì³1QîdÃí}üÓÊ|SûÝ.×Ê<�ûŠð"›Zu¶Ú%O‰=›�¼£(%ðê{3&⣛¶6àèP@ØØòý’âVu !в†òG³—ŸÁ á»ÖjRìÓéûSüüãÿßåO?þák§ï7~z¿·4/«‹÷ F¢iYIoŃ©÷¾ìHÇ“Ï س4Û6ç.ÝYñ£:)pÜ¢Œ ð©NÎògÂÛ©y«„U¥„c§­üËVºÐEÙ÷Q:Š kצí´Ó×ʲK½û‚„›³NQùIuºœD-”ˆ({Ž—8RöXÐq¤]zù>#Q¦m;£øn~T9®#wmFÁäÉ„ƒc!ã#Ÿý¯®ýøÓ¿û»Ÿ¿&þÖ�îãæ¼ÿº9Ÿ-v/ Wî,e³óy¯Ø*Cî&Ý;Ž…çÏ]øßƒ´¦klf#°©÷^å¬Nf_™•@Ô­rÇÙçd¢Ü`‹„ —ËÀÕY×gn‹¢:¢(}³2‚fÏÞ�ÈÇÞf†v°pŒSsÍ•�LÖC�ÒîLÏÎk¸^ÇË<¼V˜bí†ç]ÛŽaÎ~ßOúÕ…oûØþyÙ{þsýͺ:f¹Ùgø^•BÛÚ÷òxA]÷�ZË=�du°ˆ\%Ô÷IYÄ*‘geLÕzÇcw A?ù9ƒ”—ZÊ‘ì>úÛ¢k–ã:ÏþTöþe¿õCüÝó7 ‹k9c­qî6î¶qmï\¥ú¬wO ]]ûÝðö˜xÝ cdA �”g”GÒ�~¡“¹u®.ô�óbÈt9uX¹µjQû”jž(õ0Éw-åNÝ^N.n²9sç”Í\­(¾šÜ×*_긽ï“Uoji�š0\è2KŸi¶g-—ü‚(€Ìi½´YÙ—”…Àe÷‡~þþ—¯Ê!¾õ£ûØÐüö“FÏ•Dö^Å—n#d†~KlÆ5Q: {½£<™eî•€ŸÆ>à™}­9gIòrœ‹Â(×ÌYhGóÞ2ëº!+Ñ�ÝØÂ€>>j»³¶½-¢E!(LŒ^ ¬ À:ž1ζˆ¡"@D¸"Ó†zmöíA©¬´¹”m.ï�©Ê¡Ñéæ=g�ƒŠàêšç‚>ºê¿!þyFÑ¿ûo²â¾¶ªùÆ�ðŸŸÅ�y÷í] cå'ªª¶ ˜â½8aÑÌ�ñðè6½èhõì¶VEæÞû›ëÐ(SÖ1ÝÅ�…ñ^–Òɧ~ ÔUýŒ»«V¿wn¢""žý¶’òñs�ÃúÎ~ai¶Ö.õ쫈<ƒP‡XghûBpA1ZÝdÍwmž4%"¯Éd’?�”Z€¶{cVÀ˜gÚ| (´“¤ 6ãš~dUþUüüSØŸ¾û÷­ÝçÝê¯'ðd¬±@šWÄæk{—!5‚Õ.dï�œ¸ pµ¸rÚÕ®Gïá0$¶JÛ¸{NíÒ}]¶&ƒðév ´¾X‡„`Ò¹¯YlÖ[M?]¯yf-¡æ;Dª P›’R"±Îµ`ººtÁè_^¤_Ǩ¯eŒ-‹Ì Ç´Aq­ãÞz³ôI*Ì»ƒñ9·tësM)‚ê…€˜�Ÿ¤ÀñóÿO”ã·~vKàög{ÍD‰Ê9žøhc™ª"C_¿úírkŽ’íÖuF9ƒ²Z± Î ésê�5‡ÈI¯Gg-›‘Ð'¾`˜éoã(%y½çްOûò¿˜ø?¶O%ðü3·Ðåö—ì;AÑ7М:aIµMPlt7©u«B)Î\XNÅ·�YS^NaÊ‹/5‰òÊÚ[ÖÎ…†ŠR]»7_ë�ô;)v$?®È  Q_cu+CªîRì +a‹Àƒ±‹ï|ìÐurÆéÐíy–O\È»² ”ð#aƒ�îd®ÞÃ'ë»ÁŽ+çDñ³eÚsÞ<§÷}?¥&ÿ»ŸîýÇ?è?~½NúÖï÷´ÀõlάŒ"Kbï˜rŒKbsÒy×òž.¢8lgª/û*t_�A19HVF'Ï·RÆ %Û ò\)CÒwA�_˜‰|ºK Áô:ö9ãÞ!zN‰ÒÌÌ&™àKTFŽ© "ûeåk›�q[%îGÄÑ‹ø˜ðv§(h›ä°>Ó†Ò³ÚÊñÒ}ö2«Ý'núø£þ|3~‰ö­Þg˜÷¯'¯IÎ2eAkÝóžƒzy–×69™H¦Ï"b¯·HÝ1Ê®‘h7ËÀ$kzïgΫ~—i;Žà–/ Wêåa’TCžâAû*<ûÖ�í·ŸóÿþWÿðýO¿üéþð_ª¬3ZÑæK°o(l„J§Cê˜=ïÔ1…ðÊÐJ  „âÅuT~M‚ï£KËþ~º÷<­e[½œ°ìü›­W};ð¥±7¹f÷oþ\¦}©¼o{-�ö9�¯Ñ±ûγ[2ý&çJô½wŸ¹ÝTajð§ÅÙy $á^Ñ—ñÌ.w$Þ6!`½>ªþ£ýíýþ»ûówÿÓ�øþ篺v¿õü|týËxÉΟ­l{×¢wM™Õz9u�¢wfÔ\¸©d+FV)É}{^[xp±¶,Ü9HN�BZ•ÁÅ«'+¤Å]Sk6=¤^žåã¦_ð÷-]êG©ý¬³µ£ ŽJ·± ©CÈËœ«*·£Š#t@ˆ ÌU7N “q+·X×5+]焳¤U÷x«›Å¾²µRÂohÙ=†Ý¢gwª�%ªö±ÐùMqÿ•÷7~nÿR�/ùÏý7‘iž€ä1mT¸ÒÿUIGȸ‰�Yn¯B�ËŒ·ü°p+{!×Q¹%ú^í– AíD��Y栄ܳI¡²Y×}xEžôZn}ëÇöùÌ"ŠÝ%Lê®ÏžÙÙ?ݫ͢œîÅH þ~J”%¦d¿Ö—çp±šq5ù‹¹éÜ—_´X/¯ %;¤-g¦GF_·äù((/ä÷µr—w�¯ "\6;xÁϽ>m®Vly¡”dR ur^í­RЉ©�Øœí‘Ýe»„Ï1ô¤´>/ŒÜ§7Ý~=sÌ{ÖþM‡ñ×ÿñW†ýø‡?üé�ßÿò�¿)â~ý×ÿôË÷_•™ëÇùù…K@ »RZïÊg{Ëã3ïê.[÷ô´¥]æ˜{ÍŒsR^>ëD÷£W©c˜ž¤Éz[Bä]H“÷VNñøpõäx‹áý ;>çÄY:vºÛ›F«ŠÛÛÖIK¤Í(ŠSiŽ“Wœv;§žÊ4KH�yË ‰Fm¦EÔ£á̧q^Д6lœ]¥QÀ² 3üa,jnìÍír}:/«k5cÜ©âºàúÔºni“t Ú¶ŸƒÅþÝ”šo�U‚¤]©ÛW’SØ9‰¤!z5rtC½ž§®½ê½™ß˜bηiX0Kê.ž={ÜÄtÌo·®pp¶-:­öÑ•Óñ[/)YZU!f¹ÞÝ×pTTÝ$[„Üý°¦Ä él¢1} tq¿a9�clt�4®wä¹—òbæMõz©Uw윋¼Ð¸vÌz/w� è#ü� §in]uv™¶ pPZÖ%§Ì‰%n;ŒIA;˜¯n\Æ©QB8Ž´o¼�óÖJŸø05÷wv/\\Ëâ™-ë ƒRùu¤§Á$4*l8ŸÂ˜Iª¨g¥†&¦°„L¹°ˆ –1ÖzÛ~êιÅÒØ87hc¹/ôjp´›=9Ìõ�祹^´­vÊy1ä1";!“N®vˆÚÚ…ÿ~ô]²íëú”Øw6ÞXzi«I±e³=F³dPÏA{% «Ý>£I!Ú»¨½ê­Ÿ¥ÂÑDö`¤»F:©4m{ìàR‰]ʼ»ŽªH§BMÅO¢Òfá g¿§ý’þq|D“5y™‹”¹3òðb8*»=wß´ÅÐú íæ€÷¾œˆC9_Ò+GTï%ÕNÉŒ[q�ún§ù"ƒ{ìVü+×]RIƒ„ö—;.­sA‚‚—–YJ_; eá Á=¯ã½ Fõyû¸!�ô²�†ë´#³ì¦c#þíM{t�kèÍBM¿k^¨dSµ¯cë.jl‘qR&ÅN_e§•ªù£em¡©ó’RC½hÉæ·�µÞ÷:½œ¥Y7žÜl“NdÀâG¶µGÇ' ž½Õ®äQÕªç@Jôy3¯G þHOCÑÈU¬– õAF>^(bžgé}§c>�ZYpM`�2½lÉîñÒµì¹X‡×²z¹­QxîÄ£÷Û‰a«'®¥/~—£Mw‘TÉ=g iþ¬\äÞ;²Žw‰€áŽÀ›wV/3çÜ>ú¸«ëÅ4—Î4aA‚Çè�Ûdm¦Ä’cU혹@ïöK<µW/‹n^$à) wò­Ž—è–RÌ·œê¸z ø…esÛ…’EYS)µˆNÒdžžÑ-j_»ÚîåJ †Ñ>¨œ�*óÖ;Iš¥%�àJØ£soÓEÎe2p0âæ/ßõ ¿ÔQ”¬¸§=ø ‰àmí \š[j¯dgWzqšm¥élk µÞêsW¹ùž­jôø˜· Põw‚í<•×’šeðôÁttmv\LHŸÄÂágE,i×ܬzÃeÛvÜëA÷N1š6ˆ‹c ÔG£>ܾ“Á¹~óI ½ ìàï¹[ž$äe¶[ë¡Ür>…–n/¾tI_çÐVf[„…¸\@¤Xs³Ÿˆ1:°ã¹ŽÔz×¹º¶› Aw¡5Þ‚¬%vƒóF‡.9dm 8ornÕf©€Žº¨Ö:,4”•ƒÞ‹â¬^¡‡¯ûV7¿ñùÍ®¬-3¹à`È“º\…V”ô°î�NÉL­ö=Ç*¨ ±¨á÷S…¶¿À×ô^néÙÇ'Þˆ¼§Fîåa¦äj-Þ5 D´çUDKÃ<?píVÌ5x / —*•ûÓ�?hž+Ûy‰ï¥¾î9ëL_ú½Ô‰ý·Om}¡ìgÏ%E \Ý� ¹¯¢ÙË䋈eyj­Ìjž‚T ¼™%oúZ(júûÝH)q£ÈvV¡W“š1¨¿§ÊE"þ®XÏÁ‰V€Ó�‚mʵE¬x£½r�ãÛɤmÒkÊ„¸U Ò™y7>´.ó~¡±å°‚0±­é¸§/ØïÑÖî¥V­Í+;z_˜¢átFá¾)ìf ÔêI‡!ZË¥çÒaî{-Öž«g'àÂy9¨ru¼q×­ðbÛ!¹õBÚ3Ó®ðÑBN2Äæk’» Ç×Ýà1DGYó®K”C/ÃÄó´öœ ²ÕèúÓ¼à´,7‹­¯.j}úÕäW_øoOâß,»¿q¹c±¡LÂjÍÓ/ĶŠ<¦ö,^÷x\"¿I>Û]ËËõ(–o|€Ó¼²[Òì‡\Ëuµn«ç*r”—¡E–Áä=”Ó¿Fs›‡áßxQ>>©ØåaÒfa�¬ððr¿ØÆ Mj]»Ÿx÷Õ‰ „×®Ëz½JÒ¨ŸìçE}é7cî Å×ë#ˆã@*ÙÂ{o6Æ=�@bý%¨–r'-¹‡[x„ë:zé–vlÉÎ5æ-Ž‚õ+k·iž½³§øñÀÒª%n�xçB^â P™cz:=âuŠõÊÈ‚Q�-+[™>¤Ä„ÆÉ:«Ô‚�ú0µÓ9ϼe„é9çêä${·Ö h®¬0nß»,&u}ï~¼¯ºßGÙ~�‰~–ûº anô@»ž°5Cªo"¦Rr ÝMšû^‰í¹q;å'Õ.�PÞZ6ÎF{N‡ŽŽ„LñTî,þúу0 µ·I•¹Éã;2]á­,)m)1’�„F�÷2üaêð]últ¼Uá7écö Ô-&RÜæX·ÍXéeÙ]XOœy+ÿ¯VÕ‡3ô“ÌSïÆZ´“Qù• ÕK«§CÕj+ÃÚ@Žº:ÛxjÏkàà&¼­6½ž]¬äa ·J¿FíX eÓßÓE+sJì\ä>é»)OLHµ2L|ÉÛ¤=Dè—0’YÔn©b~Ñåÿ¹×s�Žžß ÀaL}ô#"Þô¢ÄB+Ç«±œúLÂhãRîHyÝ¥L Ö›û˜×S�°žMœ®Ò¶z]ŽÆ%’^mÎm[J¼‹ŸŠ¢qióoe|íÌÍ“¹‘|Ù¯à�)«.øŸsVk1y\%ú¹N.ŸÝ¼òg™Á„áª;]øÝHŠu_M•E¾/§EQh†„LÝò¢ÿ,Ç\a\gæ.N¤0ù²-Ö†ÙSÜeíÅ c5ϹÁݵᎮ5U—1ÎëamÕJº .Ùæ\{üw÷£í„N0mÚÔFR ²KI±î¡ŒbÞtQAݾÊ$¤Œ6TŸZAsÆÝÚ¼7i%‹«ÐÊT^"»ÀiTцM)¬ïÆ-�Zòrþ—‰š‹Êð ¦zQo¯,%69³l^†Ÿ²à¨™ŽEoÓ:ƒ:_»� a‹D…2 ¾?%ÇT”-vg‘9›G–L�sº¶2�ïærkgUXû9aíP?2¡Dô}¬œÖ³W2Žï0c0ä­TàÀ¯‚¶n.­~Yn˜µÞô\–P^›åš€ÇSÓä¬ù¿M¤péÔêí"Z­Ç•°ðíË'1�$ÝÅTÂhç]§úiíò„.f¯v6ô¶Ún7; VbDS‹Y Là±^FÍÜ¡Z…q‹C�|Z¡Ößùœ}Íq241Ëu»Ï9YÏ^Õ$YPÍé¿–¯·Fï§<Õc®uͧ 70 Æˆ¹¥¤`ùN\iÅ�6*ûLÉ/Â…1¯�i¹­êAÒs²�Í‚VF`6¿(°œ›}uÖu/¯ãéFeäè+–´}FËz™Ê3¦RÇ)å5s[VrÒîm4lÞNW6 Ó´yÓ‡,žìw„ݲr�Ó:2‚PèŠÂ©Ø¬`xŽ='—�bÇgvØ &VRº´¸2K'ˆãðAŒ¶®+:ñU|ˆìVèÜΚH@‹ÅòÖgâÒî:ì�²–F�1×m#²Òß›ÛsdøX�ˆ#Š Ó}€ÓhÅù‹asõ×?«D…dМYR‚Oàš&¨âvžpg.]^î“C˜vµ*àŒ¤®~ÎÁf´Ç`Öd‡èCòe–aÚèU¼™· Të‚ý£Ð¤ÍCµÞ·{"ÈVë-Ìr”æõéGô>¶\·µ˜˜õ)ý’j}IMõš2±^g-µãZ>£2S�'ÕÀ�Á¸¶ºÃŽ%±<šRf[žœ�dØbœN„· ²Èõó&zrŒÜ÷Ôšì5k‘•::÷!NæRÞ­1oï‘HÍF%o»gQÜ÷æ v‡Ÿ›b Ìú¸^eÃ=~üaó×Ç¿' ì+ûŒžúÀÊíºF�BÓ¶£ÈÝ€´_·ƒ»‹�󴹌\/jVjŒ/�ì9P iÔ´f5ßÒþyWäewNF>½k£¿uæ"0L¦ñ·N4º=l;½i x­€ò†íúk[K�Þúà³ûêŠ&ÚD;½ÝO#b¤¾¼°)xaëyYñL�§ý¢ç½$elí鯔²”"°¡ª$ zÕ² b¦Dˆz瀆ŒàØÇæÈ•D6¤7Á¼¶–‘z߬p±�$µ�©`«/í©é'W¸8c6˜?_nqÏY·¨UŒõÅW\!Ãu•‹àçúJY5jáu„äXY¢ß¿$ø¢ ñë2a½iÝd@‡4ب‡Øì|ù -òdñ·…+¨Æ»•zg§¸o(Ýú^ÖZ§Ôuˆ‚°vn?è�ÚÚõõ”ÌtB›Ý4¯{ ¼`Í¥—@\nÀþvj- ÉØsÌã®u`ü•\5'™lË7;ÌgŠÊå‰Ô7Ü”åg5$’ë’Ág9Ê}êz0šãv(|jY›u>;zئMFž£c¹¶áÄÏë­g«V˜}ƒõ³Iu¼·­Ü«”·Š©]Æn–�p+�0j'ÍýzÂá)µth�A)6q=Ó_g€VÄb&ç�Y6©æÙÃ&câ©zp¤î6WNƒ—qáÝ÷FÅh…uߨÒÔ((r6¡ÀwÙÊèì•FK€qk‡Kíf q†÷}¸ ×R!)‚µÕ¥*’ûØÝÙQãk,�ïËERyFyâäSpeÐ <ÍE]Ïȉ¶fœ•¼Ž"ô ¡!-è7lwj^»n%!ãH[M·ŽHpX¤óÃæÛ3¨¥irqY2@EÂæ- Þi�§,eÍ÷œâü‚Ñ&3‹/_D âý\X»E‹`¥X!£ªWE@IƧì `é";й6” 6µÂöŸ8wÓ‹Fp<5QVØ%å ¥êõ@EFäh‚’vŽù„$Äø0QÎAâô]‹£„äR#ÏôÔ ^ôTôgôüðæÒËFAxÖ`Ê¡C�4T¦ {“øCE€vºßCïo¦0Ö-¾*næ ZôKùºÊÊΜ03X;²�ɼx‘ƒ¤ýÌI~ƒ�…©as·SAt¼à£Ì>ÍÈåjómˆ�Ú^Ö¥ûÙŒÁ¶ 52¦d|ý2VaS$¾ÅP*GsìÎåï’–4Óéê˜L3…ŠÔv÷妭�à©âg©f2oç(d£]¬¯†ÞgG^YOɵÙSò—ɬåI‰\1�§à¦­#që�©ç]b­F#8¦j «„&J$ßVÌp…l@™Ljò\^¼÷ìË.-zpÿ#‹yÌòÃä¸C"“¶×ŽŠü©8±´%f߯³&ò´ ¢Gj&Eñ ‘¤ÅÀ†z.c�Ê‹£œ«6µ¯ýšŠÑó‚>+kÈ8v¹X£Å^ëÈŒ!²Ôe—¬¼¾CÁì³u|𾩺–&EšeðÃ2ðmmïg ë�{@µ²j.{�d[öt×í{ÌJèkļ„ÒhcŠÒ !‰Ý\·DL¨ùy›òª8XZ\—¶måúDEÇ`v`x3™n€r#4®lWË,»ŽK~Ç&Ú�–õÎ1Ñbö'«.†Æ�í;ÆŠŠ‚±ÜU•ÄÙ!$›?™Ð�µåm�¿hOrYÎ�àÊ&�®™‡Fputw¨Lh ·UލÃd9 I·™jÂ1’Ϫw··-Ý®eµËˆ>ï]ž€]IYÔâMNâš1þ<…Ô,Èô ˜ÕöB†ÙÄ0 óML-ÄümµTx¿*sh+Š¹Ô CÆ£·©¬Ê¢¬kq‘i2ÁÊ;¬+nö>1Î{õoáiï‹@öVÉk ¦’Í“Äó2~_y‘%[pT?óá›-|&‚ k{ñ:ó̹.ÆÈéšw!Ó/[Á¤'ü2;Gå5.×þªüÏ›/Àh�•£ìE�wæÀƒ´óÞ§œ“s�Ë© ó*šù#�„ Ÿûš¬Ò`ÙdLZÇØ¤ {¸zµÔ“IWZ) Ðçœð·6ŸKÖÜøE´’;ˆ^© µü3¦îÜ1ûXýøètzDFÂýV¥uÜŽJ¶jÑ­vÐa£}k‰îÅ&µÎeÛ¶Dl_I†9òEé'a‰–žÂ8²L%¼Gï.sÎ0¯3ÞQ2âVkD}Üî‹XsŸÂŠÿ |ñÀy2䨥éÄð–•wöbcwŽ(Ðø#4³m<µê™DOÔè‚£—1¦Øx$רÝv+Ýäž6C:IªÄtÁ턽i‘lãk¡†¼ëYJà\îFL…‚9GçrCÅ!Åj{y>þÌ—¿]f#gTL§%f„©Ò?P½ÿRþÅbl³Ö ‘Z.½í©eKÛy,*3º‹Í‚­˜õ6 ¯›»´ü?û[ %¡±”1®mMNÏ�œ¼‰p² ²äôƒ~Í[Vß"o`piGâÀ<˜€ó­Ü¥c=v¾[=3økª/ÖÔÇÀûp”òµ£9/ZÅô&'<9-ƒ|Ö p’¾wé÷rJŠé$R^ð­aDƒ†O¨ŽWï/ÀY”içXGå&KÎy Õ¶1$+“ÿ×Ð]Øí“›— ¸¶�0�óž·�Bߢ-84šµe‹�ÞÌÛ.ŒÍ.™f¤SÉ~NyZì«�t"«ÚIñ©ð+Gk2ˆàvþÖÞɹ¢jªµGTJÏÞá·k½<¶rn�B½_¿÷qØ6ÄòÍ ˆé{,®K˜}µõC¿Å O½jx)Nu¶&¼rqI”½ÖüMéc™×Ñ{QžÂ—Ê]ñí³SF+g÷«¬ Q…H=wtR2dÉ¡Ñw�Õ…·Rk fz£o]­)z>NËw;œåZžÇ·ÎU¥¢ílM‹=¯L�Ó jUØõô9N¿pkÞDN\)›5ö ™}·¤©›´o-~Ì¢ww¥©í OÉ; ±i‰ÖFÛÎÀ{ÀYÔÛ“\ÆBÜÓ[��ýg©//MN¨;äÎÆxֺ͛²ŠEXo6ÚÖ©žÌ_Öjîûl.9’mÃ�Z¸g;é� š=1é$'îÙ^ÁgQ´ë¥/⪬Oº½ÙdkÅðµc0xÛÚ�#\BìÚp¦i7 F1ÝÁai¼­Åf^Ý�¸köpR:k@¶Œ—ʇù†™ŽC¢PÂŽ�_XX£3lÁŸÄáF;çþïå:åpBaÀÇŸõ¾Âo]Ô“~>Ñž qmžS¯Œ$"#–ϦeõANóÐ~0]ט`D[=§ [”p¾¦öö$U?ÙÙ£¥vTÓcw#a›®‹˜ ©ýõ‡Q£Nºò5«žñ&:�ƒˆ�ðÖç©DHxvS6B�)Ã�OQ 4m®ž¨!`cÿÝT 5F4´�‡š¡u=tÕ˜ýùïfS¹Wa <#ÕBWZv7®;æ)ܦÞg%ÊѬ­n=ç!ºúîô,ù_ωEH0„ÖPo»ÖÓùPj@“�·Í§lô P¿°n4‚»†EËYWO†´äÔo”iÖOs4àÊ­4Þ«{� ÚÌ&™»§÷£dÎ4qÑ÷n™“¯‰šŽUü®=Nƒ´T©!ó´M¦7²ä÷nS÷ÝtLj-ò0xâsšDhÕ)·¾Ôs×O¾´×ZÓ• Dâ*4påË$^ K¾Òt Ã=8fÜÑË“–ƒ[°çÍ×!Õž^/¯ÑB¶Œl£Ïµ je»Ê‚â¶–dèß'sÕ^›’âdH•B_­ bû ´2ØEE$Öb^ÿV#…µÂ&F‹?ž´* ¨÷<=ìJfæmºæjB!T”¹¯ >,°VU\]ÎÈ $8Ì.WŒï‚é±Ñ1ÒÎE9Ój�ûj $ùÉ~4-"‰SŸùh�9Ö»u•Ó)ùsa-¤ñxfƹwS×>kÙ]ïíG;ïå@HM9[Çk€wóuÛûCïlBßר¤Yœ‘§‚OÚÏè °Q"I\ܘ»¢AØiM#=Û䣼7�Qª'#«2 kr¸h𜕹j4ÈÆ�”qï´äuõ¼¬�/W£>@TÁÔëÞÀòT{¤.º=F°‰ÿSw¶U² $N�N/+Þæþ4 Â9/Žªµ Â2[µc•Ð-ßzeìc½-Ò‰'æE p• BaÀ<µ/ÖJu™«EÇ9ŽÉ�«á?øY³ïþü2+j®]X°…£óÌ¥˜r¤éƒxމÓ%~'*¾âA; VezZÍNÅ^™¦eÕvcAŽâÿcîÜ®dÙq,©Á7Å @r<…ˆ�é5=sëVž<î$°·™mžc£fÌÅb�±­Ä»X¥IÆøUÕ]uñ†óÞwÝ€:h®c|ö$F‡< K�w¼0#ݤÜTÚíËxxÞAÙQR\³�)ÒõAb So%ûu½“TyÃÔ¦ÚséÎ7ðV¡ûÎfšê|Õbê[V)ïMöF€ÌߤbÑ1Ó·ÎÇQ(mûumúàL'äLãÃPýkOùßN¹5 »Ä=šñÏ>ž7¢ŒQ;E`:íƒwzËZ^”:Áü¶œ)X]¢*Š_µ¿Åì»Á^ úLëô¹ß kßÜw†=ˆ’g•T^#ßÙû�…<{£rÏQÒp¢Â]‘�â P¢9Ÿ¿•²kÜø‡Ÿ³uâ(º&Ý7–ÛðR|¤˜®sHÐ-Eóò²—K™$›ŸîÔ—H|ð&ͨ…¿3ß{‹ô4ÁÙ™Úw/°"ø,�`,ÌÛÍ+ŸPZ¤<ËñB *�+±N 4”Û� Áã›÷5¦¦Ïw!^|´@…�8Á£YïCˇ«\Ÿ#g±ÃZ®/í\$Ú¹� 7s­º+æ¬ÆC°öýø£Áh”õ|ÒóUܺŒxºoë—Ü’>wað¿ÇÛxöÝ6OñÍÝð‘XEŒ͆ÃõX¯Ì–.¼ÿäAJ;[û±0^àhwVŽsF�+6‡íóJ½ ÃQ\×1Ýá輘$Þ«Þœ÷ò騄x™¬šIaÊ>Ïž™Î_Mã_Éo¡¹>']›N5H³ÜÂP"HMõ¾§Ö4ˆŠpÔÝG¦C:LIŒ§=ü±¾N-¾w§ vhcØ»†ÕòÀØ ³ÁÞtÊp§“jåZ®D|z-ÜèË^^÷‚u¯‡5ÃaÖ�|IwB¬¡V9“2cpßS’±Zµõ”b³ ¯MÚy‰$»�“»±ÈÚ6 Ýv°rÛâÖ^ö)�•åV««•{wÔ1jIJo�'«Ò!¥{7 Ù,fÛ2È6¬}ÑÈ/¯ÝK#ý8‡„¿–8—ý¶½Üù¼G7| uðœãTœ)ŽÞß+VaY,ˆ`ÚÖ(N¡ËX/·âÉ&ô·�{\÷<'ßÖk7<;V[]jÞfu�ÝQA̱³«7xÀ 2”A˯ø^ê ‡s%‚œ…Ü3™®E_PË$]èGÆ:ðFߦ�²ᨬ8â=M¢S·rxš�gEî«ü‹&Uç!`~¸LvP«¯n¥ Á|f�‚Í9®µÊNWve Š…çÇng×IŽ”šgk6>¿ÚB@­ó)ô˜æ:H°Ÿ3ùÊ×ép ~þnt_éðÞ&OcŸ�\gg“KÂKОŒbáþ²Ú]I¯°�Ùµ SeYAß*"W'uéê½59†Ñ“©—\™Š�3š4"NSÖ»>V¼ÀæTO%ý°ð¢?f—É_hd @3é d}‹9�_Œ˜{>edXâEØ,õ± ‹¤åƒ*xb¹úƉáír,¶Î¦…̤ª×‡ mÔž´c˜…e]玂Åà$ üè�d ˜’ºë#¸mEn�ßU�d³®Æmfg›¬/¹WçæyàrèêoSTå1H�Œ�NÞc¬ùÊØ¡<)ª�+§æÍšROÆìʲ}ííÅ‹ðÔ Û$´AM½rÙw­º®Ð³@´‚›º�½[õºk¾^É´ð½+$ÒÇœ²Ek±ou­-³#�Ræ^g¯O§V€!<|ßx)¤šÚ®Ï „p ¤h=ÁÓ¡ݾc/šÇNÒcåpêEü9û˜<,”‹ ‘gÙ¢€>x:reè6ÝV?þœ\†dup¿m>Kôå¼ ù³•ÛwŽŒ–':HŠa·åO1Œƒ1}ôY@µ°Ã‡Tl×·YU4›€Ùj/+Åcs\×°!^„ÇBËL­ÝÍìŽx -¼ÕVg\¹ö9o�2ß|ï´6"Ç¥ì�èyÄ‘‹Ñ­Òûnb�›]tÈeõÙ•7œ*4ò^Æizw$�ðxí š™h)çqYÔ�éÐrœ'ŒÂ1èõÕö’=ó·a˜—´è|¬­ï½[‘xRr\Nçº6ǶûÛÃÁEp&ωÛaRJ½\(�"´áXíÞδOv93{N$ð‘w­×�úÜK�h=§AŠ�¯ŽÒëV‚�S;dLﬨÕwcR: ÑU»Á!ÞN\+¬�X¬à˜î .ÚfƒbY–mxlÝ6»‹@:XŠOj k �êô—GŠn­kð�þÞ¸„½H¦ÞàŠÔ²œí ,|ä ç²Â:˜Ê}̓&·¿€LöÃÿƒ7ÊÉ·ÀÕ\ÞDjá¾[(¬Ðu8=�ÕÌ@ô”IÏbå³€Ú© í�)Ó„†û±ºwaõæ!¾›ÂZÂ-qŒÍ_°òs›ødsÙNóiôÚÆzI ”ǘ†¹\qZ¹‘7f¯­ìG!—AÂ’¥í�¿+ô±Çåqå�KÏÚ™è¹N‹ž¥;ýfÆ™‰Vâçä㎠,]¼+ËÜ;cúµË¼¡§´•Ñ¢[:ÝíB¡¸ç9¶!+*¾ Ð6À"q_Á�ø])ý,sí'1ADÍuz+dÄp—a“9"êÓ»yƒñ zŒ¤e }-˜4\J´´gPÑ#ØTãøkª²ÍIÊ+¯ <ôp’1Ÿ¨ÉÒƒ †Žƒ'Ì "M:Rƒ•ì�O’&ßâïq9x3$€7_µŒ‚ÏØReL��Æ9œù¬¾¹õà„¬k8úÕ£`Ÿ7�ûúí#z!MKЪêÝ€cŒÇ¯'Œt ƒt)g—…q*?_eL¤LTc&÷mâ‡xšF‘¦§xË%¥1aïv�Äë!š*t⪙ýàŠo”¹µha¦VÍz®üô’Tæ™§³<E=蜅°bßKZŒz2�e(—ghær¢ü™ß&\nÌé{êà¶6 j�š—{Ó^%Ê^Çjµð*ZÎY� Ø6럌´4R€(¯¸K 'sálµ§’Æ¥p{cl³yÛ` ]’¿AùO#ÄÝ9òˆ�ÇÐ8›�½¸AÜñæ±Õ\™ö³€ÝÏLv#ã<�—HF¯{ñz”œÒAAY‰‚q¢[ ŽáùôJsGÕЇûy¯«“îì¨%·2¢£¯S®{„­Åjh#Ñá$ä·ö»ŒË¿yâ«M^ª¬Ëª‘Ê�鬒{ö(S�Õ޳Þig¾ îŽ&Èn|Æ‹�YKTÆÅéžZ·˜„XþYš #Ë}òöÛt‚ @qL?‰ïBÌÍ(…u–¼ÚúÔ%»µû¶èØ“>|NEùŽVF´“z°àöšÉåÑ„dîú«ˆ+øM0!œÐŒ¦ƒÌ{4+º20g\g‚ln6±Ú–—¨ žxä™Cß$gM×z šèkÓ^‡�ƒ‚rEV[øŸkSݽ à.L�Äe¬/â@€‘ÎŽ½Í>'[JIË(LwúèÑ�¿½ úö˜Òã6Öu:q-Bô»V5.¬Ë£Ø!Ú«ÉæºE¬—zÇ�%=þ£ LQÊ7¡f<¾Ú:ž¨)>ܦ³Iãý÷.rEçHáD;vW¸ƒµÇ¼ž×Ú7@|H¼œDÛ–Q^·8�‡F%WHcòŸI©]*`)5šUJP£ Þ&ΣÃJYó³JÍóìU;órÌæèÆå�HåÔìÐùR`Œ»Ä°¥ Èq{@N–+7ŠTiª74\‹Í‚¼£"h“2NºÅçæ açNêð©ë¨lqW{”Û*d Žâ¨ÿaÌ?À}}‘3B"èD’Ò\]›ÁÐ>`÷ Ó´%_ poçÿ`yÙ�[Ëfªð�m äBΪç‡V6„÷ôY· ¬-Ð|0~áG8“Õ×R¹¾õ=`?C2Yv H -QxsÁêq€ÛÏôe� fãÕ%2£îº»ß6�Wh"¦ä0.»ÍkIÙ¦~ø¤Ñi¯4m >3¯²˜ÏND¬AByò[ ž±_…ŠÑjIØôžs-ÀQowÇ$h#øÄlE¢ØÂ`�âªp˜“¶OƒÊåÈþ*}Jsx¤‘Ø—YX³n®iÔ4h`ÁA¾¦±K$•s„0y�×CËœ6|Ýy”ÕªzcE-olîU‡íxÉQáî�çÚ�5˜YfÄQeB>6€~*ˆDÒpw'&¾?[Ë#žQÀ+Â4>/ÅVxnÒX¯—£XÀÚ>QÉ�¿R,Z û².±f²Æ5OMO¨û»d·/}tj¤6Ÿ)zäÖ {:�[T@…Þê,�2݈#¹Ä©Œ… Bâž/›µ5$ŽÝ8rA+Ó:µÂ‰áÁ9ƒZ§“ã]íKX"fГ‹…¶(kOXÎÓ2i6WR¾¸¦œË}Y‚!¹$(ú8ùçAË¿þ{/¥ö.à&sÿ%{üF–Å‘ÀŽâQXÑ—7x8²¤ËàÑô,¡Qp/´€÷[ž$šn$ë¨ÔHû�mÇô’Íå�ŽDž©T«J0r­S³Dn5Z&€áGˆ!Ò+c:¾ö‘QøÝ*K;F°Ñ¡ðBÄÒÀ°€¨Ü“©$ä“À½ä:Ë( =„S½m4%Mƒ‚c­ÈáFs­ÅÓIu†ëHûÌN»ƒ¥¤ÌJœO–@%óкY¨ÚªS û¼¨'i–À(︎oÄ&Y‡åŠ 7h©ø&¸ lÓr‚+'Ï7É£8g¦¯¡¬:»" ¥Z¾&+õó{ÊÛG)£o}|·� 7¸T¥T[T»k×|«:¶m¢7uÜ=­B;tÖ†­”Ü:ÿÓ Hq�:Ð7EYX&¸�ü…Á•ác–¬G<ɃNBäMŠíÇ(@5¥‡Oø¼tL¶/Î`´W™ˆ¿K:ÇXˆ˜ñqä„+Ž-ut1�÷ðÉ^Œâ=œ¢WÍ„:u6aᘵ²–¯Áô[hT?�ˆ4 C×1áÉ(:ñâ+ׯE[àFyGtJxGR­Ó\f}‚à+H™y2ðÄ*MéÎwi¹+öèv¾6{2š‘äEâPæ.„:$¼A¥ìý�ÆÛ•ßèYÏsÈ�O'?!œ1Çb"9vh¼t˜ú…ù[ºl›-G]í-kŲ{ÑI•eE‰_­qqk$¶P–u•U%O²¯8U^¾|«ª}|Gö‹˜¥´Ög™e¶+cqáíuãP°(`n|lj�¾¨ì›×ZÅŠ цºZ�3ê­ó@U.jQ|ÏËuªZ�ãi¿d˜ò6Ekž4i–ÃPƒJb ø««�I'gKÑ2Z™ºeÓš¯Ú ±'V°RCìîð2Ùá:ÖN_W^AOÅx›ÚÏP ¬^¦�îuÉzdÏ äÐ;Ÿ@ã¬æ‡6Ä L†ï‰‡ô#ƒâIæ€ °�bze¦ÑIœŒˆ<ÀïpÇ�N�ñ€ë®Ææ�ÍÚl§�;Ú\¤ŒÉûÆÚR* Ùt\z§Å§åÎE‘Ž@j>` râ„F�½bÒЈð®CV‹5 ÑsáwŸÕr$Zg2Š ÷Qlcнi \Hu/ÅJ#‰ƒ ÄE›«î]£”(ä²9޳«â41ƒHæQÏl7ù �#z> ‚ Yz‚>| “�Ò2Z£@#dõæ Œ}Éää= SEÃ\©mép¥½yÚèmá sðBœÅ½¸KÔ7[:Ïó;Ò®³OÛwè\ÀxÀKŠâŽÕÇù.Ùmî/:uáçcåI£)dÜ qç•`SI^ûÕ*0:Ƀ«OØŽ“YíÜ>w´vø[¨h�•iˆ#—ÊZ´%“@)�:•Ñ`?:3EÕ“Räg2ç¯k¾õ&«Á‘ø½c/7tÁ¸ðè,× @UÕ7$2p3Hüõy1×|@C,ºÛˆ5Í ü4—z…ð¯Y¨à FÕCÌKk9ÄZ[¯Éò¨lÀï8ÌWiYBƒGY›øn“ˆÖh„ëÅgŽÑ'„ƒ,-Ëΰõë;qûa#ý̬…N;–B»k«ÿ|G'©Á“•ĂޗFPf�½ ÕÔÞƒòGç•C|C±¦ƒ‡hóÈðYNÓ«y-˜'w½n<Í',vãW›Ö$øB#q“¡Ýµ¯�êP¨Íœm=·ö€sm|§žŠÑÛW•„Ê,îã±k[ß‘ç–Íã98à‡ß´gE ,±9êå[®â0«Ìº{ÛÁ^üŒ©‚œàÐóØ�«ò= 8YTü;�)öÆó^ïë³È)¥7PÓPgÇ诖@¦3¼¬Š)ˆ1ࢠÊÖS„��¨ÏŠâ„JÇÉÔteoÕ¦�àºãz}LÁ'ö©zmêü‰ß„⨓¤Î×JI|Ønì×ÅÉ™±c!‚C1o³»‹åÅyï°ý´Yz+欩!éJ³‹"é@¢çâÔo~Rˆy‘”,¯ä³u®Y£Bkd­-üE@FÎfŒÓC/ w葨«òë�ä©c¼Ú8„²V<ºýögý�P?Ú„‡U}¶Ô"Z)¯ÓZuNB-u'ü½94Šºƒ^ŠŒI çò$*0„èP+eWÝ��Ã\ž&ò­[YnÃWär! OñK®‚Ü›°Xö#àskl†7#ja‚yûã´fÔ¹š?Ÿk(rp�ÌÝJ”%¹äJnyùöVwÌbÖ1 }•N×”y oå-80èn`y‚ΖAh„$×E‰Å*ìôQ*•}{CV©²ÌãQ¹]][L¢4ŠÏ^¯w<¥Óø¥Ž~°Õæ š@g)âÝ ¶T­w3-äe=Ž-~ìicâÐ-<„h¤YÕDNN>c |î®%ò”ÝŒ3HÊz�µîx¤*B:ÈÇÑdˆ y]E÷ƒ7Drgñ­ÌðÜa1˜XÁþ6¿Ì *zœfD�Zûƒ÷Фòõû8 &�!>Ï`ç0kì�¸Ae5w«\!eÄðҕئ¯C!‰«ù.ù²zàõ2èhœÎ YΆ•=Ti˜»9`óœd¬£³©—1î¤ß}u^”D<�#@J‡Q×÷Á"ýá&…ÔW±º~ãG°�ÏÆ84�|5š^"|p÷s‚-zŒ'”ÁxçÎþœÄÙ}FúöwÁÃD+f8éíÑfÅ#ë%Ô#fésãâR7Þ9í]¨$Ðò²7õ4»Ö»õcVŸæ ½U§]ó‚L¥lèHóqï5°]³´òÛ+m‹«Â„¬ÕkO`úY¿Ä(g^éFOòp87Ú­[kÀ…YDå·Fö#b(Š]P0~ªØÖzß}ݼ!œq&LÁ-égAc”ùã³q̽Z&•÷†u TpÇüèíQ”¢îÝ@['^ýMí©¼R�AsŽ]@¼­Ú}� Röå•Ī‹p0.Záòwj]\He!ýW¸bƒëØl˜ãUÂø€¿0šê¶ FY£a ¸®ðy«Hàг\¿èJ�Õç�½3tˆ–ŠÄ²c\Í‘¥„·Ø’ëÌxºP[“|.’ ¹að˜°Î6¨–NaæÕp4ÅBØ(Ï «Î)p·µÑùvLôYú³¦´ÿPÒœœÚæ6> ˆ1 ?>ð“"_Äï­Ç^Ø]*ø¸Q½â@�œÂŠR|®:wòçhå¬ ¹å•�„(ä�Þ˜?*<'–‚g ˆD ÿ‘ZïœtTV_UW©³¿ÄéKSm'†Ø�W×*%FÕdn‚–-‘èY'Êš†pÞV“‡8À’ÈÙ@Év¹ÜÞ_jAp+Ƥ“ÃÇ".Ç­«¡{¢¼÷ä隃ÝÔeC+û—­ÒHä×Q؉´©ìIҮëA�_üu(˜¤Îb°8{³Âg i æÉJÞq…·?Èiæ×§Ù¼Óg<¢‘K-êôM óÂýmTÇudº5öÝ ;É1x!2 íŒq‰¾?á§×¢ª<Ðè6¨,íólcÛäy(~…�³v¡µšþ4¸OǦÞF€\ï9½äy—1IÙŠNËL©0gêsôö%÷3¦2ø]©3ÁI_­¾C?ÿÉÁ“¥.�u«íÑ(†ŠöEÖò¶J ™þµ ¾òÚHû–¾Š×¶;Á¨c°.ó/¢MæWÂ}õ�)¾ÍÝ:káªêueWrÄ|Û¨­Éíý�›×Ê‘L:6D¿œbæF%z¦­^æÙ¼.nìÊW‰ˆ8ÓÂö]è+4×õv<®�v­AÖºx´åÜ:•÷Ù��Ð6¸oä�' hˆ½Ð>zñ�uTF÷wöíe^ä$çhh`[+.­ñ!‚õ2̬‚#xb ¶½æ;é€|; âsg“¾”*a¥/~TN‹uƒD0û¢/Ý‹D÷Ùc˜÷A@s!xä"¼ž°Í€’ø·)6樋 @vQÓ®ðBG;à‰‹5ÝeÀ¡ó¢t¾—YÊ5§ƒqâzŸMßù1ýË\�’×·û„IGIîæC´Ž¾sñÍüÆ�`ÐK¥Îض¼ŽMgú‘)“ºÅSpS¢Š"´y˜ÝʆûRË7çŽä WésöšïÕXæ::cBêLÆc'‚jàcŸ¶;·TOÇyË~C>¼1N0ñ ã"¹èOXúa3KYºQ‘žmWcޱœµä“GçãÉ$>ÊQlÒ%»Ä™¬ã·p=Ʋ¿zšVSŽykõ�/¾²w,ôñè¾Yk2AH7"ï°C7ò4*,šk?ý‚6x8ogíò.H+û¾»Ë›á×ú¼GøÆÈË=Ñõ«GÇ^Ü|+ÂFÄŽå¢ßQþfÙ|N-%Å_›É2øð&ø6æ%“kDŽÈÛÚ+ÕrMÎO“äu·88‰ÝÞX¾¬‹¹dÄIVB«3öF0¨ ü=,ÑhŸ´�õ¾Ûï“Øc•3b Ÿ³l«ÖvÍÞCéî¬WƒïtÕÂXsê> W9ƒ,ˆ´Œ²ÑhHÐf%ù3U‡�̹`g· ‹g•QÞØ¹÷Füd�ÎWñÍŠÍí’agÃ}FËrVŧ]¡ Lé¼<κóRåVVêÇÆŒûb^p¸+¿ÚÒæ!”:×4 º©133<Éeó;Oy"½Õ8îЂ|¼ü®}9s,² G”’ù¥ÛY™XEX§¦YZòÅY£DykA¥¤î¨|bÀ¸g$•0·~‡Ì@B/°“¶?FË`yëŠq4õv\ngã_?j|ÝåN·n;hZœœA3mÓîõtI0®ƒÓ4ïãgrpªçÆeÚÅd\Œ•SƒsHèx½”{Э*”�8ñÄVCŸÈçZ•³ ”>wLò ë‘ÚçZ<ñ¹Ú=7„0á*üSø§Œˆ 7¨ÈTà ¬d'(îŽgùðá>í>›ü Š#ÜæãMAƒb£ÄüpòŽø^•®-_J¶€–¨Æ¾&?éqìôw?ÅbЦ!8u'°MRðË—�%J\¿¹„½e]Î)èŒ(3‚óo+ãV›ÿ¡ ‘V¤JŽ8€‰vƒ¦BŒ¨¶Ì`Ãå$ÜÈÏOÁLƒñîJz!_À}å=ó¦E+�ûNnמó>¢%;É8A~Ê>«ágŠv[»)ÊÚ5?ޱZÙ8Œû¾ZÈ̳ëvŽøE/hÁgålÚ}޶‘^Û�GÜ4 ÌÕ¡Ã*ÙØÞûH²Ô«‘êÜ _¨d Ÿôây>¢,ªMÚì5ôžór›×`óäsh ¥X)µ§üq4ö0èkâpÀý ©­Ì.Ë€…v 0”p>Á/ñä#—^ïÄÅÚ\—üÎ1Öd­D[êbÌšÕjqH ;ºó,�œ0Š5`”½�(z¡5�±|¹¤–Á³bbȽæ®4Bwnk©F «¥ÉbM›ž”ÝSMÕþÐFUq Œ•)³•ñ²ùå ™¯?ZŽãv.%- ZšRø¾½éZ­+®–Ø§Ц‘§&D`SŽÓý¹äS¨†é²ϲààã™�ÐŒH„ÿ{“ä�{-¶L�Â|cÕ¼»Õ¤ ö}„Ñ=#©çóÕñhqàVx´Eº¬#É_8ðrën6ÚÄ~Ê4§ @:•¿w� /—[ì�oªõ.äq_Ó‰[[MC[…fÀ¾tØHQVsÌ鱍(åN•�=ódŸ’Zh5Â�Ô—øqíZš®î1 @ïF$hö�Ððì•ëJi?U¥ Ë‰”‹hM¶�î‰ý°þÒ°›~ÐôÔ×�Pj];¡(¼i•Al+uôØýe$~Â+^ðÌF›™” ÷;µœíØWÎæÔÙi‹�¸Ç–EKf¦cÞ¶0pÖVŒ¦–÷@Œå æ”üR¾…cf$i_îÉ„vd)ó½Ø'³Õ½ŽqB¾he#ó'�¬áJïŒ6Ȇ–.�.Š3I‘rëä—0‹¼�j$Ü+›1Ëw~ Ý4²p»*� ÖB陆$Ý¿+%Õ £w²¼Ìµ¸+†˜Cææ>Úëû¥]$vëp´–·åTòè{NŒ� ŸÛ„"Ø� „Gòˆ;}â˵ýôó2„.½æ‹‰vvŸ­½#¯¤?òó—íJß=;NÒ…ÐIð `qïÛº'd 39ÄA�Sñеž ã.ðuª1ñ�ÌO…R+à4~ÑÃú§UÛuq§ÙÓ>ú*¥¿Î¬›¶®ƒzÄ‚d×õ%È61Êq¯ÖO‹1fê^_®‰* }€‚¼ÛàO_‡‚¥Ò"É_9ÛÛlãvOÊÞ,ã¼»ê³ë—ñÄî™–²^`•jžý‘Œïõ;hfŒL•Ùðé�t•úÆõXp0Æ!LÂÜŽAÁ+˜Å•Ø= ŠQ¢>žµR³2ÚÓMš—�c�·‰¿\ÝC‹〳P=r{ˆV¬k;X”>0||ðࢌJ‚:ÁSÇ Â4·lO>m²G©º'ÑÀ§½õIxRe7;˜Ã8y²R8ðÒÜtÙFl}jg«�î>l¾bgmæürsïÝ’ãÜ4‰ø�šé•„5îw¼É)Þ"º4*¯ ]E¤Œ›ˆÙ¥Áƒ¯NÅ�üz(tÒf¹â2¶Ïº°7[Œkõq´ä}cîݯñ>›@𚌗WÚ^Ð.¡ ½¹Ajâ&Æn„•v?AÁ�xqéWÔd�×wÜ^x¸™ÜN|`ô~L�Ý>r79ƒ^.ÉYHì ow$lã:öAÇUÂW´U|êQ>Á¾‚.¹!ýqa¤Q´v§1[µ—IË‘ ÍÇ K—N¬2X›0o½È{ĉý¤}…èÿÆ9\LÀx'¶äÓi_ÂË2;µð ‹9\v¶ Ð;ë†!eÕÕÜÉ?ÖR<7w)ðû[]d�cf¦~Õ­ÚkåÀ«éÕò]æÜ I3qY¨•bA×Ó+‹Èc·gç¸óŸá‘Ig�CËb0Ûô.þF�Y[Ì>N�Ⱦ­!gƒBHádYjÇ<ƒZà(㤟•ÈIŽÝ“óY¸\-FôÃ)ÒK�m—KW™W¡p$¼¤{F”(È…TÇàÜÌc¿³AÀÕ“Ý"ŽgR™Mr'ÕÂ~?l�†6ú ÒÆ¬}é�°u•ÐÞÃzO6I±IyUÇ÷öŒ‚ý+®‘œ}üµÈ¯aIf}Œ»Þ”ÄÉíúáïéf��øZSë»c’ª«÷̽* Á-ÍG¶Ÿ¶‚,`ã+šYU »Äô€8ôö±©�^Ab-sôØ0ùàrgè…B¨[.Œ¡?n`ßêÜœ(Øž±£ã½'ªZCéZVNÔçÞ°±öގ϶ºÅ«­¥ŠL|›y½b‹W¿ÚÍ6åPê¡6ë=L 2Ëb0’XÀ?±½ýEËÆth\ZõÙ‹ËŽ9¾œ�ºé«ñ R{X£w:”ë:q}Ûfƒù6oÚªú²(sûªö ð8DÚ§V´|F:,ÔÖîRm�]ŽP�B,¢*¥ÁkÄ\úíÀµäŒx ±¡çÝKe÷¾æ©Ê%­ ,=Ô Ké6_+SµÄÛ¼¬�ÆÓÒéÂ]åõ6/d&¤•ï>·W©]Ïq/À¢rÜ ‹¿çËWy}2ú¨Ê˜" I§1²±ä]R YÜk€”š¥�ßU¾”¼­Õwñê1±˜É¤0__ò—ûž—V‰Æ:Yxm-cÁé»�gn£CdÎ Q³Xý¢ÂÂL’ô±â#)Æ„—ì^?·©õ�ˆŠ¬ñï„ÜžÚìKK 㬮Œ™ê“kQ{#¥1œ½SQ¯>bêq/¯M Ò¬�C]P:|óµý‹Äqå0ˆªøI¿UézïÄ©˜ Ø…j©-•ÀiôÜçãÈû,r£ñ@�>q†]VïÙ” Hê„Z‰2à™öÐÉÎòÊçØDˆ·f3�ÄšÖšì.è€ ÓGB_õËüŽUÆ~SBÂoÙ †"SNøU ˆ’»¹@ò¶P= Éd›'†sá–¦æ0Xöø�Û ÆÚÆÂ ·qí§ÜYOò1é ØÒ1ëcFµ„ 4î5™2ùŠoÇù÷œ´dRŒã÷e¸ÏýÜKbåòw˜ã¬±ê\@šY,ñ2Pyã ií³‹ÿÀÍzµ6ïžH{I~ ¶bñì�`í°—dâìTô,Âïh{ºèÂΔ^ÇaF[òö^úÚ]Ï‚ùHeZî;W­�ô¿`0oËçÏ×ÞEŒ…f´´øÖ.m›~ËV|GÁ‚Jo.swÙa�¸Îž\ñƒŽëªÄ²8¥:•ì“zþ‹o©Ã7¢¶Ç¤—q©>A%–¿nÛZ¼ŠSeÇU0 ïä½·+�;øÌ/'2´…�JúR@d8ÔLa‚Sƒò[˜ã§êêíwªË"�mt‡gâþ:_É髽°½y¿Ç,Añ—OggâWY¹ŸÊ嫸“7„ô¹Œf}·=†’ Þ”‰8zsUé¨Ú1£fW©*$tU±'mRÖÓ1T+–·d¿½+ÓófFƒM$“Œ ^콬.-í0¨óᤈ^4�×ÀôAû)²:ÝÏ(,‡ÕÚ-¹ü0°•Ë¥Lôt�§Jšì†Ý†aÅ7ù^o Ž[Aâ‹YA,]�"Ÿ…@G°ð*�’ƒ»F‡³µ7BIXA>ŽåbTø¡c¾zfCPkÔ1rO [H¥ò�!ëm¡*�žÊì LÖ[ ƒÒä¦Iø'K`YÕ�}™ç!œôò�Ûnä®ÁšsôºQ¬‹ïº—®Fq$ç ¥]/Ó+ôP¤ƒçZ¦„¤óÑ�sÆ$å-^Æö€Lí°M`FG‹ÓLä°Y½ J¦•:ݬ�ü¾Ì…,¤40KŸv”Ý0^³7u/ÿ>éˆßZŒA¯'(�¬ì|Oë�K1švh3*E87J¤åDìz ,»ÇEÀ#œTPq‰Ýd¯hKèz�º¼5k–›ûæv°`.ÉcZ›”Q/…ç…)ØÖ�œÔÛzëkr}‡´» AðÖH*�û}pMï­oœu˜·ì‹i�?ÐÞ(—7a¿ƒ²Ž¯i’ G“‹NÞ¢ŒË ¹íÝm>/ïÁN§\ï�ÛZ¥5ÁwÃû­ λ㩞w=5�q6` Õ`ÁWcݶ„ß09�q †"6Ó¨ã4÷èØ;�Ñù r;WªŽÍrò\ê0DûNÆw”Od_!�ß«>>¨H7úm“w·…�¹ÀDWÊ ÀÊëêK´¼MW¯Î›yG²*­êÇ×ê2½©ú(ËY ±¨]ðĬKÖ H 5X¼ô¯õÇÀö1�ÿMäÒÆb+â,cÅS¦(Æ* ³y™7^ÖÁÄ�nÃN¦‘”ÒyÇ’KF¢Å¢µé-/axôžAx$I�@A£´=ö& ójaÍýZ›{v€ê¢§º;½žTíîÊ Å­˜ú3`Õ`Šö:ËÉ ‹gÏz¬'—áÝmÝý8eâ…ÄÓ™µ,]Üž†9«¯S³_‡ý±t²-tåórg¶q“¥õʸù#(A–;¦–ÃrÚÇÁ·©�ûM^Tð'«'»â«¶³O>èa…³ö¯üA—îs�*~×Á{g�²ß>ˆ%ÉüQœ{¬ v�Þ%ÀF26„”ô_U7˜7uQt×·ÇÅ qO×´X¯Ð`{ùYA#ûö“4ŠçÔµkÛ)˜>¶ZË‘'ÇèÐätË,”©ü�þ9ùš¢ ùTÐ:¢‰¹éàûf/è:¥‹òr!µ„Ñ{!2y‡êôæIãØžÄ`ñqÝa ¾Š–šÃ&ÄHF@óFóíóP%FѸs°ßíblÔp�݈™q|þä:RÀ“-s%«Ù]Ú*H¿»%_@ ryÜ&˜)IÂ4ñæAö•ëÜ-·}÷+ì:2ÅyúX¿ñ[€°ßÑlŸ{À`’a¤DÅi{Ì¥ö€Ö¨Œ’mÜ Õ2ãÞÚ Mk¿µ¹¬rö•($VøÒ`Ø›bkG›Ñ1»ó9€±]Î ²ØŠhبkRÞ­BTFãþ{ƒävíúÐñ!ž<ªÞ[9X05VÂ2i. wDà‡Ï«´n°ä€j\ï^ÔZð þŠ¿zéì¼ñ�>ë~Aè6Ü}6ë»ù=̽²\ÀE{ò‘Ò)‹ÇÉ]*Öx"îmµ}аÅ:ó´ñ$ÚS0Laz¹kº´’X":FÙΊ†�>kÇ“´tà¦8PMÄ(F�Yƒ]xzIÕ±€EŽÔ®x‹� ¦uµVÔ‰:aÑ!€Ê¢3­ý_½¯¢.¾ì2+ñ<5A¿ZÇë i~ð=r ƒ=z±þò¾=�ÚXqÒôÐL²J_-œánØiÊ7€mõH7¶Gª²Û!¹HŒÄ:ð=ƒÆc™4ãËgÝ¢CõàÜgØ_¤.þ›ˆc�k=Ä™�1ÐhÜ-ËÕœ”cñct,‘à6tE‹—ô%Û[öÌÞ…ÞŽ.o¾ î&Ð{æµ–„Çjò¸âó CE gye§<Æ`ê$)t¯óÆs€�|„�®Wž„æ€Õ\®£S‡Ö—Ž–7źYØ€ JBuq¸æ1Û­ÉB½9ßîÄau�'õÚàx.¶p$ìÏ�¶‹r�þˆUô‡kèh—'Ç3þ{Åîè²ë@ª^ ;®¨‰ð†FÌe%µúºfÏûË m™ WhI‡ñ5ˆ¤�²­^ೊÁ¦3”9ÇW€B!� ›r¼xÏ6ºz?|5Ùœ!òé³A XôAýt:ÔÂlhËÓº‰ ½Jår…Ð:Æ#ø’1y¨;ðŒƒ€�¾7”_'1(.OAz§«’EcãN§Ö«Œn² ˆÜé�9á¡©†¾ô÷ÎXcÄœ´ðÇÛ8 ñ²½eü)0+0–•f½hHçÉuôNwhúŒXñËÜš¸¹9M¨8³°¯AètDJ³×� 1ÈÙÃïkÛz_ðè±>LqQº3*ãé¨\·35#$dAã½——(ÆR6N€xÌÆ Ä{I !”ƒ3·cñZµ‚Ì¿Œ–› �‚’Íáá…@/œ½uSF©FJE&b>d 6ê×�Ü\™Ó[Ã[‰�[ ª¬VNUì ÇÀï¾*û;º üék•#ù×}wgþò ×W8²ü’“I.KÖH/{<(”ã½zÊp ÚM*“8“‘•q˜u çöBî^"ÎXÀ®zçUz�.Qô[$5ƒ:Ž4Ÿüÿ¬Sê˜Ý–ù8—sÞﺾð@ë P:ýÙÅ1s/lä_N!s¸«AH u c“¨ ;ê¸!PµÞ{QЗiÂ(%ÖÛ›Wªu#¡�ÝŠýQ†TƒaýÔÏ�TIjȼâî4ãD™˜º´ÆTtr+Lï€?Á~€(qDÔ¢ê6Åú ؾ/;£„Iƒj¤ éks$m»°pyT¹Rš¡ æuD÷s?ü‰ñ±kfb¸…pÌ•z°=-oJcpÀ¾ ˜‹·M xƒ˜çk…{�‘íØ^&¥ß×Gÿ,Mšõ¿ÞßÒ[³Uj—dë¸H%«€»ã<!«±c™Asëù møÈ›Q&cF@³Irg(‚¦p_D4Ü�Õy�`?&©i§Ù a[¸­m†x�í¯%d†a`¸wÃW[y`ÝÜÿ%6 « ƒây ˆ·ÂñÆÀ¦(qŸžQ® "›33ËZjÉË¥�eˆƒwÖÛŸŒ ³‘Ã�§c™íXT>[9•ÝÕ5:SW5‘¥fº�™ ¨ aû|cWCÛßK4É (w¸1¨Š¶ˆô'7Ó»¯¬Ó/ÿϯlYÊþÞs¾w¦*s×v9†ºÏMór3N�²•”�iÙÏ¢ zlÚ­jæ¹W9ZTcÜûÞ{Õ¥.ÚÅm¢4o±[‹°âÁLÅï�ÑYN_}Q(ê{Q ƒ›ŸÒ½ô¯¶ ˜ø-qŒ@§YÖ »¾ Ì¿Lb»e#=Ú» 9÷´Åmåç2óЬwv§Š%‰”2wamx;�œÛ+|cDšƒ'Ÿö|MJ5ª´ýªÎÉü„¯O îT#ÒÞ‘¾vºGGxÏáu1 �­è…ÉnL25mTx"_û úØ‹ìú,�"¹a¯‚Rt!Ùàzÿ SûehpHâ— à±ôA¾gŸžÕIãÅ“~¦¶¬H)û°Dióqgš¾h>v"É?�Ì"›<»|Ç)Á•'n‡²Õ‰K¼pவ�ã» 6 £õW­ éEµœ¶¼¶ë¹«4éQõr�¿LxpGêJ¿u刣àvc,€Z˜ÎÖEùT»²î˜El€u±Œ܉-‚œ€1|ÒEw–ö[‡ÉD"¤—@ðEGõÕ˜í0òJ…ÊΖþŠ °ëóUê„ Nu®2=j"5pQfb¦OlÕy{… j‹…<9¶ÄU÷ø¶ƒms»srCç¸ÁC.Où£ Qˆ� ÛË”áŸ4l)œ›:‡/d³à¼÷€Ñ ­‰Wø‹€°òJ_òrûµ–r„×WÃ{;ò¹  PÊb|Jâ2Þç$„¹ ÆíÕÚ÷õót°ž¬¶Z†�ÙÜje\viqHà5…¢—Á’°~F»ºÚ¼7ÿíâÔ¼Y¨†–$²oö�÷^¼PŸfðÒ¹ ‹úó·lV„Œ­Ì´ò¯�¤+g”u˧õTÚ¡W¤ò3� `Ìž\ÄZ=Q0©Ìæð IŸYCöqçýÆ(£œ…ÏnHþbÂ,^tk¶–¬$ÝÇ<Ü*y ª½x|Ê'X ã ¹L©<8ÃGÛ¥Iñ§f3[ê¢±Í *™ÊàQ$¹¯R¨g´KÔ¬«TIºõ^¡“?]�…5�‘:ˆœ0ñ½œ’wݸ ´Ü=6OPš|›¸ÐPðíºh˜èYÃïÅïyÒ7U®mBÌ+êäΓؔ‚×�ÔØ¡R{¾Ø¶°µµ AïÄa1„åíÐjY�=ìºñêÁ0ÙÂЫ¸ï•Z~}�Ø'� n†!¹,\f­”d*LkdEØ4µòñnå+4yg�]õ6®³ÉÛ {ÌÌ]ãEÜÒ·[f·×¥î¶Äçœ äõbDZî»ù¦üZ>ÐïN|Gäho ¤lsO‘BÍ•Ð[‡Ë ËéIk¥ò:©šƒ&y5�àkïB=À1ÌŒ^»ñºíç…Ú8�à;w÷íç`é€rÊÒ(Ï8s^C[øž­E͘˔ñd ؉uã$'|€ždÃìwP?¦“ÇÌ#+T郻 VÂÓ©IÖãê2NÛ¥ÜkÅs"Ë›ßrÈâÁÕ¡E–Y2®˜³Ü�¡›nÚäOyÊS“˜…Ïö©Òê0g^„t;dF!ò_ú@^˜óÁí‡ÓNµ)ï{ó¡6…ƒ›v�oe4`hcÔ™æK÷�Äí� Æ˜uÑbºy¿ç|I+ËÊ(]¢žUÈnkN9 ”Ö² õÄ4ZÅ JÞfæs äµÌ«Ï–7`t‹–(OßqN %e\yàa÷zG T¢V8[K–ë9€–¶«<ø¤.…b/ÀoÊX­Œw� è² ã±.á¯OÇx¼ÇãDÞTçÎEË¢ñfáÞMÎ yRðI-…ð‹ðÁèÚºÈøÒLìÝ`ÁS©ÝªIÁGº‚À ¬�ÇÇ8±d/(%63@)“5®;’`¶n®²/ß`¼rè3.ì§RÑj™•3Šªspb•L’¿­ ÄQím®P1I|ÀqéQ öv΀É×lƒ.'×g\[{ù¼“þ:oÊ= ®N:ÇKé ÐbTk_á½Û9„—âÚÛžcC’(JdÚ©D¢›¦Ô³”z-‡C&¤œã¦Ýpþ¨'ëÀ÷ÑÎÚ§®sùR:Þ>¬zAC¼ŽªŠá™iñ5 Ùs¨Ú¯«½P¬�jf:8DÆ�)¹Ò®=ú& �Š/x†p ì›RjT1ÏŒô?;ÒIF§YLfÛ²6Ÿ_NÆ/±ùoUIsyì‡%t‚’i:Ø'n€cÆlíИ'tÚ+y‹åܸc¾F9¹É�zÑGã<Õ“ô]5ã·€®b×z³4·~ÁncÏíoŽÕŸYVUrdÈ“fÅáÜ$ Š "ÁœgŠ@>,T ôÂPÞo¸®³ðœuÞ§\8ëj²àCôƒT ~9WB•›O³Çxö"ì¶9�sx»³ŒøŽ•tïi/Ý~ëPD!“±>4ìe¯FJV€ø®½_)ó%l•ìÏÈ!öi¹6§µàšW¢óÍ'súSéýk;й#ð.ï^ðN.½ê×Çfg·Ôá—Gecï&: W/`î~N38`´¾­2Äþr+S¼¯É‡�(ÑðLWÅd¯|z‘»»c ²ä¶94ºE°óÏâÇ�2!ŠŽÑæ^#¥�¢Á¼™Üĵv)‚1®Ø) >0<šðw¼Áùöí舨½«·,.y$ ÷Có¬Ù6†Ñ 8v'ú' qX¾€7ëg‹ãA5§kÚ‘¶ì w›¼Ì¨04Ί2ñÀ âíö�,}U ßhë•“àåìsÊ $Å(pÄA޶¡mää…ÇzK*öÞÔàMse|2j'†FQ¡PÐ#§PÜžÃ6ä¬ßŸ(‹R°¿*C{µJçËÝøqð¾´Åéµ3î$û°p0BŸ 5EQ8½2¾Ç=)¨{¯»3ƒ&L ð`îRkI£ÜFÚ´ê�‰0 Û†ÔeÞ t½�Iªºp½ôhôtæ¡mŽ^˜ $'S ‰¼ïUÔ²1tCy€ÅBGQkÏ[ëš V¦É¢¬Î_æÜzä"ÆXopþðÉ™vU!­�&ÏhðUÄ[&a)® ?8P._» (ƒRGļð%Þƒ¢qXÄØå´I˜óë»ñ1»ì ú¶ÕpÕ³�…Ä�'&oTS~°©V¥Å1JGÐUófMÎ94è:¿êDÑ{ïõkYrìéÍpHvÓ ‡�ÐÛE=PÅHŸÙ# 0æEÒ}ÞBdddw‘ÕU¥ªjò|‘÷Þ�‘÷Þ�¤ÿA€yï½÷ò¾<Ýd×>u…{‡ÕÜÕñ©Ï!‰Þgí\keFüâûÀ¸Tˆ&¸!8º²P#´Ê=Q½.DI4‡µÔv�3ž¦æDªTܪ8WcÁY^VaБ¥�‘ØÞ)q Å.‚˜�§BZ›¬XbšƒS85´¶ÌiâxoÈšsEˆ‰°xoFwòÉHÖ²ÒI©Ï¥Œ‰ç>-‘ %te+g¶h‚p;î1¼>9/&3fP 1 X´5è¹…pçpë““Ú9ZºÄÕi?ô£ÇQ븬¡ýp¦ßM §HhGY‚ß¡‰hº  �ŒŸHÎb¬�§Ä:q©²ËœžÚî-n´-ݬ‡ByK{çY,Ô¯-A®§|ÐÀ^2ì~xÒ&eRA{°¸ÁÁ*GL xØŒØ+;^_uúÍŒ— u«¢e œ ¾γkû bašÑË”¾dr½ m.Hk#A…¡ CGÏTª€å,Aû�ç¾ ºÌK¦¿x˜~dÚ'�xÆ¢ à Æ\`G\àÒLæVLÐ(Bă³%� À.Ð!=Œþ(6c:+Qü€¡;b2¦¯SÛ0ˆr¤b�x6ž.ìð]�„4f*êßôæú p4Ö„yã¨c )Ú6ˆãyâtô 1Ä�spJ4Øßg§2_Sσ/©N<† B’a[‚^ZvÇ5î ÷2 ãH0Þ4S‡•«D-O�‚‘dÝç Cðw´aíœúÂVX}tŠ;ˆ ^L¤Ú„™›~ö¼eè¢Lh0¡Ì趨[T<ºTpÜÜWë'< 1Š‘¸§O‡ÎèöË¢'u§i¥b6Ë•�+ �d´(5VfÓ2‡¼Rsƿ׎|!H™ñØ…~v´¬WhX ¿ˆòÂ�’eIHJ„0ZñËžA�‰ntˆdMê`ßFt?âbºHMì ÿçqÏ!¬Û9¨ÇIݨÆš™µCW¡¾¾€¿Ù@"yt·Sì*�nŽWáÁÉ>&Œ3Ù~�9÷B‹%Ñ_‹*?÷ѽ´Ná|s·Ôiš½%Lªù{y–"5·^é„ït²(DÑúDÕëôÐ+;eð˜ |À¤�s*°œ�+‚ìA <à,ÃibGço˜ð÷ƒU„5©xƒÔ<75Ôe³4Òâ iÉy*ŽuQÕŸ¿ Ê¾sTÏiA Ï™ìG€}=ʘÍ3d62»*ø‹¨)¢bX!’„ÏÔ'ŒX`L$†èÏt'î�LsO‘q9MòQ©°žÞÈô@üG?ø¿éÁw^¾zöÂן¬öýÐ_þÎÃí LgFjã!W9Gjä£�rHÙ ÓdV`9© F ÝÊì*Õ4­-30;¼ÏÔ!©Ó�Ë¢P´èJKǧÔ(³*åÙƒo<^þôÕïÖ—Ú]ª•×þ¨ ‘ˆµ¡«À7âýî¥oån[p$í+§E "çäFI1 Bd¦dyü� uDç�œæJÍà»¶ôN`‡¢#"ÀŒi<øÚK{öÜåÁWŸêÇþà·¼ðçOÔüáã§÷ã'þà[Ož™¾zöâÓ�{ë«÷à/|û jþà[?zöâ/Ÿ«ù�¼÷Cñòñ³§¾Ö¥GòàÛOô釟è‡þ'òg½÷ÉÓ<}ö£§Þòøé~ùÇÏýÁWÿÔ?é�ÿåß´gO×ãW�Ÿ=})¾½ü¹?]þÔß­'§ÃþiF4´­c:j­èøL5jƵ™r@„±yë�¡^¼ùÏ4E�´‹�¾GÝÆÑ³‰4€ŒgÆŸ%œÇÐE—ò½ÓÆ�e"èÓaJߤ/‘�Zi¡DH7Ò8bK¥å˜FhбÿHðQ³ï@ êh&LªW V‰2-ß§Îá5Mާ+]þ)>Ñ*9œi½ÔcÃU¦=í¢4OK�<ÎTÊQEv.X +…n"ÒL2ɹ€.bzÛóˆÐ \êa¼9'�ÿzŽßt!2Çnvù§ù�åïåÔÂÙakòt’z£Ì‚âW]D ´ÒýîNÉ‚ ™$)V`"V”Þ`Ûu_þÙ÷δø(kõf^Â^5Í^[:I–X… OƒƆ·Y,ɻ‡¶­3Ù­140a’{ÔÅ×´wÒ„Ée“{ÀhØ{¯>­—¥ � =ÀqùçÞ;”HÐø7ã-<Î$çшd‰Þ ÌM9HmľtÁ@ÇkéFÚ2ÀfjÉç“äOˆ‹Ho(V<0vN}ÕÀ«a Œ[)ÃKñò{¿q†÷+æb¨ÙèªÑúv:&ø’ÉLéø°œ pq�!GŽÄqt%Ö(“’ÖbfÔ92å=éP3NR=h6%Ö&„…œ˜–¿qù}|Š ÷Oî,Yã¤Î�G§H])ÑDW kÇ@϶kh¸�b‘U¢¨X‚+$ô~kGšIqZ%Š#s�êSŒo•ÙO¾¡°¿°rùýßøà·>øîs÷¿ëó�²~Ãï~þÙö'ø+å—¿íúùÙñ›æã§¿óþËàÛ�¾7?ýž=yüèû/?øÊO¾s t‹{;h¿¥'­³¶I000FúT¢˜Ní ð†4Ú~+‡°�žZ £/cPk“‚ìoVrè]Ù¼�ñ ÚÒ”&¬n½^½OoýÈþô}úàëþòÉ㧯>}­~åû/¯ß¤·¾nŸ“~óéó�?�Òx~ö"ýú§¿xýMúÕ§Ï–þ5ú»ÿ¸?åwý½FY{oiA~ðΊCãÌܶÖÈNžp_®`ЪÀf´T‰‡9b)&…´Úœä”âê‰Á‰}t²UÏ*–GöUÔœ�«K¸³0VºŠoF~ÃNnöõîÆ¯ç«ÜWí#}|½Øn}É>¿Ø¾Áb«�âç×Ú×î~~ç–šÃÍ>-îÒ,¯¹6ûUz„§²v>oб˜uƒDÑa‹¶¼ÅcA•ëÐN£è62TÌ.ƒ![äR›ã¯L㎌CL1Ûx”PÆKî×·ïÁ®–Ú×ì#}òƒëµvëkvo­•GõQüÜZ»ûù�[k=�Ñ&f£d¸¦‡^j£] ¥y„±âX=íëü” ”ô:£vÔÉêЀ$yÀ ’Hˆ‘´"ö ÙZ=· ‡ ‹H‡ _e]­µ[郞ÖÚwy¬=Ô—Ÿ¿xöñã—¾®—Ý­/ß½e×ÉkËîîçŸsÙ� ~ÝJ�š¸’"æ6BeÀ�¿6P”5Œ�ë<<ɪ¶(os1Ùœé˜#¨lc#vdæ®´Z7}ZqdÜbCËy÷`w�Twùçßûà+oXü§?“(³6qNFƒ‹“3åe¼ ix«+Ý\ž’À=?ðÕ(Ì�Å…M—)=þÉHõ=xìRëîØ_“™ ´&Ž"f t¶õj ßúã|¶üÚ«?÷—¯½Ÿ¿³ü¥½xüügëxØ{3"-ÎüvQ8¿Jsã(ç˜Ä£Øó ËYFv3]XÏÚÈÀS†áe�=à[B*Iñ%sÌ>Ucò±qv&:ñÙ^|í…>ýÐüÆßñ“¯½»š/Ã&ëþ—XsÈ̆H9á‚,[�\ÏÉVò€:xk'®<“øÞ …u…dÄÝi�Ž Íy7Z¨-�õÊ ¾íÛÇÎd+ðy3??#9‘ϾÄoÿ1ô/ÅGáQü¥?ê—ÚO¾öÁW=ï¥ßúcÏ‚ýä³ï?{ΣHŸüòO~ã_yý•uìSŒ3±U ZY•UK=Ïš;àš¢ÔQ,[î´4×"0« ÈÁÔáN*Ÿks«{ÞžÉâÏ@"U…8aý:hN¹Z$·.]/’Ÿ<›÷^S7¾d÷Ž}!=’Gò¹cß§¿øù_T! ¶Áμ0-ÆÈ@D’ÄC¯ —Hg>¿Ñ çÀ��i¯œ:¨¡Œ¹AV.9îê½ÖÒÁÎF¨ƒ€ÕÓñÎ…~У%Û̉ZC>&õò/PŸZÉ ”Ú…ðŬ›Îyh8:‚E26t3ÓÏšFµÍú@D<3]“†# fOV#œ›F¦mì9†•äšvÆ®$UiøÔY/ÿâ©ÕÑjC ‚^Ò «=±¨M,DN�›oóäyˆÜÝ®m©câ³ìN=n”¨4Ô{’ÂDyê#P¼s$Ä‘–b+ÃãÑÚÇa—é½¾þ¶w¬ RÃNTøaÂu÷A‚›l9xc�‚©ò5ÏH ž�@/Ub�C£§<»¯+•Ñ;Ï ëP)]K’LÂA¸_"ô�”¸(Ú oÜ9®â·Þ]Ýþß²�Ü~ðÐ_¼xöâú)pë+wo³ÊËâóçñ»Ÿß¹3’[�ô:Õ;^}௸v8&Š,rÅZÛpç¶ÚÞ,ÐN^SÞ3¦H[š©áÛ+ÊæiïqR½kU‚¾•\}5?ð‚�ñºÑ½Zq·®À_ŸÇ¬/>¼Wh¼õ5»ÿÆé×oœþ–Þ8%ÖÀ5žSŸÐÇ™2�:6³= à·ø} Á/�8ƒ+%Ù~Ø®pWsV‹U7¶””˜—%À©Nmë@e91ï—µiX—ùô¨8bFà …Îõ*‡Î?J•…ÿ²æ„R!.U[1,µ�䌨që™\ZÙ•çD ºÚ˜saê5БZÇÈ€ì$�<¤“…‡�½.ÿÊ{%!´Pc­6tg y®L r;h”‘êŽÄªÕ&Nè®'!γäEq¨G‹�t*1‘|†}qAô4C…R¸r ¨¸¨ûP;¡Òöå_=�²‘VkŒ’ç‚°a¡™‰ð ö*x:'¥)dq5î¹÷`n·8¢vœua<ˆ Í”H7‡£D£2'³†¹o­y�˜|_þµ³`ZN{crm_N+œÓCªKáCÝf3ò_ïÞÕ¤–ìh�@ˆ%Ò,à¸6y¦DÄBÕ\ª¨tô«ŒsåPIŽ5OÒíò¯Ÿ=3¥—A§§z¶mÚ›³m™ÊËj5B´å ë)d} WYËÖ=w›ÃèÌž¦ƒ;œØrÑURÃÛ$òZbn�Ñ`†&Yzáòo¼÷Á·ßú@)ÕqÍt䉯yrÈõ§÷´.{»†©y¬{\d2–ÕQKÀ‘3QÕ8fkF5QP¸uJñ-’ˆ4ä\™ˆbæ�˜ÐõùÖ»½«'òû?~úø¹¾¼÷P¾õe»·hœ?·¸ûùÝÛ€o•£³Õž¤×¹nPfÖ*¬a’Z¨÷vÄä–6 B+à aÂo„‚ÎX ?¤� ªã™4ßçyŠ’cweÂimÔf÷Nœ7~Ô_/7iúD×½ØÎ­/۽單ö›éÝÜov°E�yÆ6K[X jš0)hʃH�_J:p˃2µ‘&;35 /iåÊFm©A0ªÀs×@¡™IbØÓ0ãʈA ÷X¤¯qýt»õ;ý:,ö¡¿zhú䉿xcXìÖWï §yT^;åðó;·ê±^�äcçÆ8bŸÜd´Þ&m;“;1v%Pk5“`gó]™«£ž‰p*«ó¨‡Ap’ÐE©4Œ½¡¥Ñ¼+£»›“\wo½{º.«ý8ô§×KíÖ—ì MÇ×—Zy7—Z*Æaòà±Åf݇Æ^ßhH.|¤”Šx8@´ .‰2·Æ°¬15ÜŸ¿ÞÈ>'ØQ*­ gª¨óXwÄ n…Ló¾~ÀÝ:LvµÔ¾býz¡Ýú‚Ý?MË£ð(}þ4}÷‹Ÿÿ4Ý0 ¶cÏ­X¥VÖ1šN1Dî™—4ÈIÈhuæÆµãiIñ[pÄA¹71…Ô`¸zL-Fä�mÕŠêEÕÔkÄ(³£¤Ë¿y—µÌ�øoQ`²‰™¦3hGBÇéöbj™±ÒAp-6³>y´"L06UH-9)RQ˜/É™á‹]–E\p+2I(%ìB<³I‹{ÍË¿uÎô÷Q»!#åÖtoÖš6aŠk,­wîõ¾KopX±yúAEl]3X+õ›SÛB#ÞÛ,&*«uJeÌØó/üT[šúåß~ïp:Ñj–¸g—Õ`ì<êÜÅK/³+p§£É$Ø3�¹°svP ×UÐÁ¢,_Ã0îí"!¡MZd -xŽ” œ‰ŒŽøvzRÆ–-ÆË¿s¾‘LÍ3fo"’½•W¦çiŠÎw ß'µV“ËE&@ˆRcš&«Ø"÷ļí„Ò’¥XPÀB>kGT>˜ÅåMž]CAý(yZÔrùwO*z Ì‚™ºV·àyqëwÄ÷€SÛlN©�†C½d�ÉŠDÐ×a…• fV×êαyÓ­s#iõÐ1ë¢GL9ç…Ø¤å’/ÿÞùFÊK¸ç´ó±óÔ†�@Ae#µÔP�#=#¾‹õ•–D̾ÓIƒq/ÈWcŽ9:c$[Õ�^ì³oö+—øëqüêè둎¿ôiÚã×ø¿ÿ૟N°9þÆè?›ȵΕ@‚ºÆÄ„5òXOT[iÀ@ƒ¯1aÉ®X¶»É^=G•¦M÷è ÜE¶¢$VÆ`/¤Ùf�UйïG:„‘Ì¥®ãjñÝzóøÙÃå›�_¾Ò§ó“'ßÿì óõ—ö‘¬÷æën|ýî�c¯N_{+‡‹·Ž…¾« l}7HHá˜Ï9•c¥í#½{îãl^‰‰ é±aˆ²¸Vö3»Ûê6×–3EÝ5Ìhp°¶î!„l`¹‹Ô�‰(_¯»o‘¯zÄgËïá“Çó§÷÷õÚ»õ5|C‘8¾Ö“¸ûù�[{}/ )»‚N/;!<¦ LKœf�2¹N¦Æ×/ý^æÖ—î^5%†×_ÿôïÜ¢sL`³ ̪µYôF%²`iG­5æ°k«ÔŠÍ¦áXž×Ò@U¦bIuo1f6˜Y yª=¦*‚°q€ÉÌKí BG‚ÿ{Ý»q}äjѽ·?]?y~¿vÛ«öÆ2±\•‰ßFFg¬c$Å GïÏb-矲(t_ä ˆ˜|Ć7p_'Ï�Ûåx¬KYö¢Ä æ†ýo® }ÏÝé,§cã¾ÆôŽDAhŽqùONudôÞ½Âß±B²æ* rñ›ddÝ5ön©ä9àÌ,‘L‹îÍ!·!Ùq¤´<°'Z‚äo(ñV/—±§~”Dm\þÓ÷Ø5¿å’yïìùjó”F¡K›Bš'u)ì.±bÃ#Œ4-Et\#,[ ®¾ã{L{µ9ò˜³TÌ5»Ó¥ ï!¹?9Ö$ý|_à_0:5ï=îo]¼žÓÙÏ^ø‡/ž}òt=´�?¹7§sëË÷Æ]F¸ÚeüÜü£SPÛk lg>pIâkïbX,0uèô,žFJðŽ–&Á•WÌ"+�ReÜ‘gaù£^]¡HγÍz’…žÉ!�=[†¥µ|ùo¾€9 ‡^B�C5ä\ îK¢¯mm©·ˆÙ·À±-š|0ƒ³Êh%µ±óQT¥D{°¦–¬ö0çÌ'ý %bä`^œ*— [×r;µø®áºrãnèuä•¿|õÐÅž|ò†`æ�/ÝrÀ¯?ÚÛzÜ:Æñß¾ø°ÿî½wa0ò¿ÿ"†Ëö]K·Ñ½5 è6\6 6¡ÞgÃ^„n3dN£c²$˜É9,öZÐü› ºã¸ "xëî,�6cÎQª'½ U ’{tԧר”‡®ßùaøêÙÃ϶÷wä·½x÷ã@öo€*þAÕ¥ƈ >KsšëÃbŒKÄj :æBWaZé•Nú�lÒÒl–Œ”M“×PåÒMR¨£×P?×ñD•€ªÀàM÷å8̺ÐK/).‚{6;rÓ6&âóP³Z—Ð[Y1…Z²m¶�¾o |ok·qÚ�¤Û«Î8—OÛŠƒGAÎ+ÄçF^Ù 4AË]ëåäSL«ƒ‰}™…³_\‘êu� ß Åq­Zz¤h€âmudê³´‚H,�ñ•‡9Æï‰Æ71�â«éÀów„Ê«æœ:V; t“¦Ëÿô<¨=G™qU uŒÎ�v8eú�KÚZfFì û3°‹Ç–kXÅ{­3å4˜r=j$ܾ;*…š¤; Óyc ®÷p:‘›@Í®Ó%·&5^Oh~üÌ>º×ô½õ5»Ÿ) �ÚçÓË_ÿô?ÿý_£Sêi0÷DÍÂÍGöjmʹжª'/K/ÇÃ\®õØ� cZüt¯µõ0ËÔµ:Î k,ÕZ©ósÆ]Óî8‡á¼üÏÜyàž«ñ˜VG—|öçð\¬JtÛÈ4£†P²æ,ÃM{ª|j>[HÅU…—xCY):êbJÇðšPÇi’lu(­ÒàÛƒ€ÑËÿrêž §u=7§ÀoƨR‘%¡Ëk%…µwì Ÿ•÷cŒ#uë«÷�ÿ-¶òºÈ“Цïa.JÂa‡¬Eæ¤&Uëœz,—ç…W)¥ÜeóÜ$„#’¯©³�DÒ1B«˜>‹(�çÆå´¯N íæ;íÿýÄ0[­qÇ Ê”Ü͇v L›ìå½äÍ{Ò¶RK½�RŒb¥à®èûšîš×žCÊ@Z]×µ–‰©¯5Š–ÔûÖ“&XîpK\þ�ó)()Š¥�@é�^öh�ŒD¨!‘lQDstW$C0úŒV$xÊÍ€+&/s1u_Ù�°õ¬3,ÇI+ Ä>[\¿ !Ü OœôòžíÆ’¤„ò¥Åì©/ Þ\–µ…³F˜ õ:ú4íÙÿ|h8ÑÂá�Û¼5æÆtÛÓ!g¬Ûvƒ-Y"S€Ò±W”´ê¬! ;ëyù¿N$Ó;KÀMÊF]vd¶yñ¯�1Ðx\»êꨛÀo©£µè{„m'gšsa§¶LøÇ55"¢+[¯©'�üºÕ­‡FV�‡]þïwâöÿ¼w¢‘1cdyŸ gÅ?ÊP1=βgÞø™þLÓ§D�Ä(5ʤ²»[<‰¢ÐÂHƒãÆCZ¡vŸ9Wi¾� óÖhºG Êèh¨k®ËŸñ>[rÀ@eNÇ—'[ÛÌ aÍìº'cÄ“—KNk"!«ƒGFk”ÁØÔö�½e†ZƒŒ‰£d…ž¤N:»ƒ‰®~„»ö…VC “‡µ#�Yùògò)êÂÝtgë¡-%!íÉô¶Ásð8ΫÎDèÛ­Y(¶<öV,HpGÇ‘Ž˜xô•»§á=µ¼š¬K™–‹[Ë ÇÐN§4lC÷ògñ)r•´ÓDÔábª4sßZ-o#,“*}Ž8ft²Ê±ò )žãÀÛ¦RîÝîà[gwp—¥:Ûº¾PÁϢ»c²é-ºtɳ·± —Pöhôipa—ŠÆr´`¨ýbˆJ{éøàÌ´´¸`a“™SN G›E¢œáù4ŽqÇåòç½ÿLi|)pB÷W2F >Ƙ‚™[Ç[Š-¼tp»Ôm»n;êõª‡¾Õzï9im±á ŸmIÆêT�]] šÀSáAé�S ÒÕ9f)­¥i(½­æð×WUh�Ú£xVS‰RæÄ3O’m¼æ�!µ—l"¨ñ®±ðD,g–› ¸1î£#EC!ž«´ïr'wç��J– LbG¹v‘ÕÎ@Ilj5wÐyù=ßøàw¼=þþ§Õ‚o²?ÿøèû/|ýO»ûí7ùíÝ?ðÕ»6Ìð¼ñÃÒ°—•nHiOu¯Â z¤ÝË(Â_ßTw«tð� >u�9ÎXÓfWÑ"L§t[ƒ­ Õ%Zåq4¹à{GL{olüÖá¯kÛs}õÑCÿ•Ç/ï"n}åî•_óU,0¿�XàÛ¡Ö°'ðÒÞ´O7ï)æ•êA¨&Vçð¡ ›”Å22û6°»[ÑfvÄÞ+‡4Zqˆ{6†,+¹j,^÷’j%§e¾ üW‘ݺ‡¬¾qÖézŽ|üáS}š»×ü¿õ•{Ê W+.¼‹+.u/Áw¤pNe 7”ÌŽGrRw)ÚŠLS Kdxíìy'ÿe«Ç¦KÏf‹“j\Yšrꈸ#Ð{rNŽS>A§犹Ô9:Ên=×å匮·ƒ½úøÉC @Ïïgío}éÞHc‰W4–wq¼C˜˜J§�aA§È^‹#UÙ‰],«C©-5Æ\`XYVÍ)gçŲ֌î•j�$Q£DºLïµ° ù*r’*Úf/蔯;ïæ&ñùç¶×ì~Gãl?ßѸûÅÌÉ?ÿýwDöeᢽá0ch”4eõ‘²g³~¾Œ>Š´ˆÆµ-Oq&"h³.[[kÇ¥>÷ÒZtäÂa%ÕnUk+=Ž‘ûãDªÒ¶I˜;Sõ�ÚöÍ%{l«¯ÐÓOOÈ·f}}ÉÐcoË�y•Îä9iÎ0e’èTòñÚ—øHSÚ™ èØD#̱µg‰ò³vwµ½àHŸq6{JÞG\+ÆÒx�©ft¶y®(E篱5v¾Ø ,Ý‚ÜÕ<ØÊD Ñ©zéÒ+ÑRªŠ Ÿi¡æ*…\BRUJ1Sv‹Ìa¨7VTîäS³S ”é"Ó®S9%h˜2݉¶´½.Áûï˜õ/|ÿ@‹}Hg÷W¶%eœG û�¥Öå¶#{DO²QpB5¢§i«KÆ•Ž6JK�‡Q<ÅÝ=zÜ}Õi¡Ö¶·©V ±òh©Ê©ºõ@@ !Ge|²ÜïùÝ­ì[GÿÿZíÛ¯Õ~ð�·½Ÿ†9îÙJìcT¯C¥ßÛã,Ü69ú Í7ŽqÐmg£Ð¶f!¨]‹Vz¸5IÒ5ôº õ†Iäu´4!ç4[\ªÑ-Ëÿ¸üºLuãIÉë¢ÁÙHûCªU÷”‘7¾ro°ø½^¦ªoizµEI¤êÊœ+'‚Tãš•‘bÖ!¡è\a–µ5Ž(»±Ä“�¬oäó{[¨wèÄT=Z®¸:ÓNlÈCî;jŠ�GiÀ¯m}ÒË)^þ¢÷ߨ¸úùŠe%Ï) ž[ŒEu3ïH!4¨îÀËÁ4®Sõv·2=ôN¤CôÄLËvl‹Ëzf'éASž ¦:†ÓdÖ½.¶^]*�~›¹æ]CL×âñ[OeüA!*n} ß83#W33ï`ÙÌܲça}•�J]ij^�®ïr‰1I‘”­ÕÎTêðHôb¦£Ä '� “J[q´5Ò*æuÅTb�¥G­}Q_w1¿ÏÖ˜)Û²/;–çÖ×ï�Xžx…åykgÑ5…½t˜F"·mô\}é…„í �0-©Ù±#eÐLÚ€+OãD!á ì…†]2 Z˜ØÉq¦ÌÜbLÃñ½Ù †_4‘ìfÖ6Ü«�Ý:÷ýFÖܯíÉwë+ùÆêm½ªÞÖwo6�„TìcçU±Ê”Ú\“¢&ÂGÞ½Ï\׌yçåxÐæ «òàgJ!õ6c@›Xw«"Å»¹CÓU�ùgØ·�¼ÒLÿÁ%¬×œ”[gþ¯Þº¿Õž=ý¡¿xõðå³O^˜?üXï!Sn}߸ðäjὃ¯\·dkÄ`¶´¹YLqvŒó„:p3‡ØZ™«b쵈/“8õ®ŠÝãÎÐ�:¤I™…àÙé·ÆR“2CßV´ö°ø¼Éœ£5»~åÞzüõžEà×ã{]ª[_¶_L+þÄ#¦ï³Cä³EN{!a¾ëæÎ Û—ë)+z®-„Ž‹Ë{ô¾ÎeÒ¿ÚF)Å9-m_Ì0lk› ïÅÀ·ç¶ZöÚ¦#<#¨ †Ë_üœq¨ahð”zÊ»vÏ¥vµ¶m¦»˜a­‰{À|M�$sÐ�PÒá ç�à"�‰îfaöãeG)$‹ã–*;E·…Ù¬4Ì êè5˜ãÖAÊë!À—ŸÖWv¯¨uëëö†ÑWy”_}åç·ðÀ·dæºóTî@ðÇ5– 5í}’?d]çµ×šÖ­$F K%À•LãÎÙÚ–Q[iæ[,1¢í¶˜þÙ„¬ÔëÒV,楄Ë_ú¬úXó\k�rÈÜn({t1f¢'�£’ò®; ÃHyˆ—ÃÐÔ¶±»kÔ>KéE%»;ÐY¨q'/cù,âaå5µ&•‘ÇÔc–5\ÃÐnÍܺ§€}ñìåˇ/Ÿë�îkn}åÞH~¨W䇟û@ÇkMÍs8Åg�W1š(½ažô²°ÜÏóJ5]¸é{lA]\‚Ì']%GÍ5tµ‰8#…9u"&«-)@wP—ß!×¶\ŠZ�9—¶.Ùûç�™™Ìf¶B¨´RRU+|J•0%�ÈxF�ÚÛrðj¥„�e­ê…âæt�cH/°y°åypÍ3i°ÜShÙò”Üöö�óå/?³6ÑÄtYÚäÐw×RŒ™œØªYZ…"�³GÙ»å-Œ-I8P*Ñ‚“•õRr&UæH´ÏÒkGãÝË �¤©”ÂÄZެѴ¨{_þŠ÷ßþÈw­„ôSf‰Éw)NÙ›œÍ«=˲̄Ъ1µ€V1¯G4—F%ÝÓµû(J©n¤}zÙM–ÐåZ£Wî¿-k�Újþò£ n}1eíw éð¥ì�Üo7ÉÊXª3Ñ<ÍYk™#5´ä�Z€Á;�‘—^c�ÈZ}Æî³PVê¥-L[Ü3 #Ÿ O(Ìf¡åIJ æ„ÓPhà@+�Úóœ×™¥Ï†~o]d¸ü•ïÂøÜ—ëú¦ ÂÈ¢ÕØ¢îFŸö³èSJ‡¥fv t}¬@ÅFçZuÏC'pž}ZRg콩­LÁ.ÛÖ UÓ*¥X´®uHRï¶T|[gõùÕu�?ùÚÛm�×Ù”ÇÇ .QÓd`h�k`WÝS02¥QòXᘛ<¢§­DøÊ˜y™‘ÕèÀ6Dr›i/*3QDÆ2 alÐ=aJ['º–ºIºŽ’ßšŒóÓžØ÷_<^ú�üÉ“OWÌo~õBïjÃÏ?ýð^kìÆ—ñ^ÔW¥Gñóð’Oñó¿½B³ê[¢pP^ÅšÚÖ<|%I#wØßEvÌ)nkao8Å‘£ÎÂm-k(¼6IœZStÑ…¸#M%¿Ý$�kÓläÅâe½š{»üU<ÞÆÞ>Õìâê_O«õ0 \ÃŒa'#8bPL}+®m½{ÚÌ™„\ûê1דí¯pçT6‡åQä`]ðZG`j‹—^¢þr˜±Š¥Ë_ýþÛljæ 줯28]*#ú2³°=†²{­sĵg.)ïA¼Ú´í”šÏéuX�ÂóÈ��pÏ(€N‘·N-¾Gi*«SIlÖòœa{¯ûºpxk(ÊÕ3û·Ý�t<|ùêÅã§>|áú¯ÜkÔÜú~Y‡Ø¢óâÉy3à ³›ˆÉZja×VµJÍ«O¼Ö¡S‚Om8�ÛÞy’æ0"¥JZËùL+ 0º²£ûâ§� °�…Ø`‘‹¿N-Þr½]xüòdÑ>~úòñ}~å­/ÞO.éêäòúŠ–Í˜°¡%�/¦uÀè�µÂðº }ŒA‚ ¶viMFÜ–¥ƒÆ®`Û6ÁC–|ŽÀh�gàT=y”Ô+-&X¨¡µ´dÅÒÐuÝìÖÜ‹ë33ºç¿ÿòÙÓ‡öìã�ýéý™Ý[_Á/«Ò>1^˜@Cîí GnBÔ^m/@qK9ÙÖ‘KUÀ–îL·¬–�.S8-f¡ùŒåÌAôiYÆ VÚ513ÿÑLžÀ£¯7¦]“¶¾ÿòá�õãû€Î_µ_̼.hvJ´•êVIÛ0 ˆeèòÆÁ/· Hiä-¨�7`?–¤ÚH–(HÚla?oC¶®Ùg�Á$´%fgq¦>_zìÖBæ ¸Únñò×¼Í.ÅϾÏï€Køô‡Ÿé {•®îEæF™cѾVM}ðe­B}­YÐLZjtçëAé¹[ Vc‰6ÅÆfè~’©í` �ukت1Ž2cÛ£’Œ£ï>Ë2~olîÖ£AW7ÃöÂÿôO¿89 ·WÏ^üøÞœç�¯ßÂA¯?„ã»ùјÑäkÎ^˜ºêºÂ`!o�ÌJoÈ]3óÏ’lh�ÅGZ¶*÷emiz*ÔšW­ð@µÒéˆIE •ë¸RW(@)%/»ž¹qÞþ:ôüáÝÄõr»õeû…黲&¦&‡¯²Ci›Æð–Ck ‘Lï4’úÈ9ËfÆžáTÞLmø¤L»­vö]ah«’»$Fœ¢‡]GÓ˜Úh3m&jé¸Ï&Òyùk¿€^±l'ý˜ç$¨kémÇ¿ Arªe�Îâ(sfb’#™H¥6ÜrvïÕcßy­Ý˜öm�úûÌ%Ï>ËÞˆ({ñ\g™³/!æ�³g }Þ+¸Ý8€uµè¿þÒ?þá}jí/ÚÚÄõµäùÝÏïÎö§ò7óÆ¿û矽ðSÔÍJUGË3FØ éªce‰Ù`ll+¥ý«(*©§êls¤±·Y¶¹Èpô.«Öy´G}¤€T·ï±è1¢ˆâ´¸õh­ë©ê['¡®¼éˇû‰Þ+òÞú²}YkKÖs .CGµáA"C›+ÚŠ8�ã€ru�!,ÔÀûž©Y)UÃ^k3�škÓ .·øÎ°‚‚Ø0«rz(ØÊ5ÍTVØ ?y½.kÞÊ{=ßüá“gó^?áÆ—ì>:Då×Ñ!w¿x ‰°«/Ý™Á·4ư�Ý<˜gg]n½Àhôó )¢ÃB©2kX-ͨ¼y¿_KÙ*Ô°žC—8JßÓ†Q�gK×Ãò¥ìÆm¹©µa½ÏÁ“èÅ*CÀ[4fó†Z€­|À‘ónz6÷ÔýeÔ Ÿ¯ŽvH"ùõ~í‰K~Êø´’K4`Í¡�Y÷49Kl�ÆŸˆ%YØí12ÙæÁ3×`ιVð:3Ê1,0G‹#dÓYÖÆ­Ã�×6¹Ž]Kn}N@T×_é­?ν ˆÇO?×—olÆ1üøY3#_¡¯16y£]êÄU`“甃Ea¶�㨲½Í‹x “/\ñ$$Õ±:Ÿ‹L!: Aø�aóE·°1â{¤ûøø)“¦dS„ˆ„ÕvÜsL¥Eæ))1Õ5vô ±µ¯.!ª0þÃÝÿ“q[¼»WOµœ¡õâAêŠA�¨@©©èlÑMÇ9Z\™hT´Ëï=ÔÖ8™ßm¦"UÒ 7Õa‡Žh%•î9è*ëÝU3Fe�ì#uÆòø:wÊ)uŒÜWº}•XÊfWËKk#†Î}ÎÉÐóŠqØå÷½ÿÁ·ßÞ~õî-øÝõøå«ïùË�¿7?}ôñO7¬âµºöCicy¡†–Ú”9k*Y4-±¸$¥ FÎæŠu�‘wD%@ˆe­q­ÖÛì³�yqè:»'ì!&Ý ´›j$u�élÅå×a–[‡9ïU hMýÀï¦n}Ù¾¬Ý�»ù¼P÷ÐTb·ÉtsoI'z9ÊC#tß…ddô)uÍ´Á|UíÁ&™œ(^¦6kŒ³$!‡xWÊë²—ìÖy~ÌRÀÿbœbýú™}ëÌü5ujž$ŒÿÊs}z¾Æk‘Ï�¯Þg%ÃÕ¬äÛ°ùeD…0�ÔŒòh•©;>Š·eVº¥,lµ¶È <�jisÁ›Û ™°Ý¼iVø@Ä­6FÙnË[§Og»•d!¦ÀPGH]¢ÏËïÿêSeZ޹ A¦CîèuJ°¾ËÔ×jÏt­ÃtH÷ݬÄ9T'hFd�z2 U23­”cùF&x-Ödi—KÛ^[6оnà2×�Ú[§�~õ@Ø·^øËgO~è?yñøú¸õE|ãƒ7^=xߥzÕ§‹O¥”=k´í¦4¡¢ž2Ýô5‚�ÒcÕFªwïí;–¡nÞV6�}wf®¡þ�¢%(¨áL_3W¥gª¼khµÖ‚ÉCiÀÃÔdËtŸÐqë�Ù¯¾ø~ËݨúÇúü¡=[n× ðÖò~ýàQ~^“©Ýýâ�[‚iJDòaÛÇ´<,Yo+õ2š˜j—={ó®Òr NËZ“òv sìå^hLˆ†™8ŠØj2î$÷2ÓJ[#@P$Тë±YÝ=O¿× ½1XõtkOrïqwëkvïq×¯Þøýmù{oÍ‹üëß?³=µŸÝ_ô(2†ZOAºª¯¾™m©µeÜ^k‰­÷L¥…ÕŒa£u#MS œY}�ØEùSD£µƒ|é)U¥C;!ãœJšöùøs®xD©°®F¨kk«² ÁÅQtÄTYǨ³HÍK­¯<7J"AKž“Ôªmjü),ÎSd]˘^­§¯¹5íÖJõ.—¿ñ ˜âІ"·�º”…¸ö1°õc. Š´F­Z°U–fÒ 1*>Ï@Ù�½jÕ‡oËcn­µÏMà�6ƒw&vØYÃ�Pÿ¹¾ûo¼Þ®á�ŸFoôxÝçòÝúÒ½¡;_ AÞýüF9ûHµIÓf·\ÊjQê¨K{-tÒ'íI˜s¶‚{ƒ÷=±é9R€Ž±Í„E9×M8eu¥uZé‰úx�†¼£éàÞGÚ|v–¤ÕT/ó»ð(º7õxÛ�su¿|ó.ÁÉ1ù õÍ´dN["Ôû®é¢NX1×ÒBȾ ¾… ×ÊŠe‡·ÆÞµƒ¯Ñ­s­«M;qÒö…ÈIÑž7 w‹#Ê ¸œ`òˆòz}jeø"&Œ|Æ)aÄÿœ~¬NÚÒÆôùÀ.ªî6'©Së®:½¬Òú$ ³—–(V݉ü,Ž•j[1®Ý$Gª«i.@ÖÝ î,)£Ì-ÄzM?»õôu1ååG>õé‡'á«O×=Ð�¯Þ/<ÅY«ä’�¡yÚîa—Ùë2?ƒå5VÄÄ‘éRÈL5Òþ×jìÕj—R\ØEvánlu Œ˜ 쇧ª>0.ðW‡5¹¡fÝ Ù¥Ò.ËPLIQÈ›DªtM†´Aµ.Vú…±7A»-4¡9¥5O¥Ä¾W¤-kÇ>K¸;KèÞ›Há˜(â>µÖàb»"º-q´)H”k#ŽëÇã­ï¯?úèñ}Ê­¯Ù/ÆÐBù�9–´bêðZz�D+[¹9ÖS,Š3èÁƒ´UJMf’E� S¼2ö®¡•E¦¨Xš•¼+µútþÝ¥Î:8F_êSZòl*³·$i•:æ´ëdñ×ýå“ÇOï-¶[_´{Íšñ(�Ï?ê¾þé/~þ¼¤È4ŠÖ•‚«ÔÀZ™Ãú˜³vÕU¬THdøŽ!È0J/Ä~’‘F).f©ô|ùûN ¦®]›…½Z�1’·–ÒJ¥†Töy/[½OóˆT¹wŽa¦ŒPŠ„4ÆÖÑc³^™¶�’pÕR4Qú6eF™”³³Œ…)²pùûϧèÈAÊq5$k©­ŽBŸ1šrƒÄ¦<³K©zƒO·ç2œïs»RE™jΤ—z,Ù{ )ç±xîZª%‹�í‹«,¼ê‘ MÙ²/ÿÀ‘Õ­\uZŸ“¢�“NonkáÍs zÖ´G+S-ôy ;[0©„îqô:2D-:ù»-¼:Ö\qÌ•jq×`ÝûX©µhƒB•ÒÝúå|ÿ åÅCæß‹Êh…�}˜=í�¥µ=7ÚBæYwk÷¾—+K»å•1WÉù|?ä”’9Bð„ÏmÎ8+ãØ»¦�ùý™H³…8Ç꣥Ë?ôþAÓèyªäÜßb±Ù`¹U›ÏÀ…Œ*5•Y·¥ÁJÙz$þ:DJÚj·ÙÓÜ$ÿ%n�wÏØHAl@àÅ5=eÉlÂF ¼5-^þás§þ¢PÊ•Ôc+My;lt¢Œ=F ªœf°íî@R9L¼�pÖ²†-9Z¶5xòc‡d/B,ÔM4Ì­욖¶Š\²5J^f—äýw÷zùGÏó"–%eŽÐK¤ û6 Ô&’fï%S•âØõFßå�\rBŒ�÷{n±X �3¨mËB�»¬å6Æù5Rä±¹;åÀ¾*wXÐyùï¿È¢/#Aé~gªNÎðe„Ãôœ[³eŠeQ|_ºµ$£÷µídê÷¦ø4ggºEfsRȦ#NÓ¦½Ù]ŒÊîlêa¤žºêÈcò"i± 9ý|g*ÿ”¬hr¬gݦ‰Y¼˜è¶ØÞÕ4²CØi‹åÝ'›gõ èIÛÁFžºŸO™¹¥‹ ȶ™Ã*�iRY;�Õùà#Ì1múLYó$˜ýò��ç0›mŸ1ÇIО}HšQý"üÒv^…ÝJ€Ø–P¾ÆÚk¬�=½¦]FØQ ¿[µÉì¹ 3¶XÓbfÅ™0â3‡ YtcuP[ —ü@t[ÒZ_®�®N´GûXR<›L™�Oƒ,½BQœ)Pñ&æÛ ۿފנ}z'“.ôÑc5·àŒ'P —»Mäè™äp�Àx®\þ‰»�¥ÜÚ¬ì¹y‘�-Y-Ìôÿ²÷&½v'G–'2+SˆªêìªE襀Þ@¥™›¹¹»z“‹þµ~3s7•Œ`T¦�ß«çyžçyžçyî]ãü¡ï{ªRB¤î @» ƒR<úõëîfvÎïŒÁȉÕ: £O<ê;�j­Ÿ4VÒ~hi¸úÆe�q ¸$9Ç4RÛkÀi”-zž]g#ÑSmqíV»Áöðw]kq�W °Ô'‚³iÓÎÙÉóÜr.H…F˱y6£�ØÛ²Ž§ÉäNÓÎüæ z FŸ,æÆËÞý6–ñºjø36ã÷bâ?þnüi ¦ãñ?:Þ¥`…µÓ‡ö†ZDZKœhnÜÑ öD[¬¡ÎÐå‘1xW2Ïr‹Ý0éˆo»*š›Nâ•6�‘z?Ú{>ü=ïׂÏ�!mÒIx œe�†æ˜x-aú�·(¹QvA¸¦bš±ˆSÒÒ’r•"qº \ÞG�ÛU<‘@2‹a$‚Ñ .�ÍyÚ¢‡¿÷›ÓõBiŸóŽƒNî@$£ë\ÛM—†É¬>ÇñÕ—5ü­¦ºŽë�ò–t>«�7º—C…àLÔ´c§@ßÖW4Ûtæ‡ �qáVE|çç–¯S/¿Ü/Þ=uô)`Mh·i zpYnÃ𤖆ɾ†ÍU.ØäØ)g3”#Ý{K’Aæá6Ð|RÔvÍÅðöG•IÌ—ÅÙô„‡;Þ”6šü×Zô¤~�†ÚNÒAýÒ¯æ£uÃĪ ‡$dÀ‡¼²Ñì%‹ií¡ulî =ÙSõäãˆ@5³QÐ!Sƒãõ0"øöØ 0øÕÃ?x©mI:�ô4|‹,uûdð,G�tKÜãv–Ü(�zJÅõÐ,;@�Tú™®a]&àË1yè�‹Ñ€¨¡Ãnš†Ÿmž�|¬eÿÐu%÷œÔâäÖ­f˜mÉf1™aîÎ\œ›Qñ£Ì£� —\ð*ÅÉ"2v=Ñ6k +!·�ŽÚ¸æ–Tmaã% …”J<üÃÏÁ½ûð�à§(•(Xš,ðѯjÛxk£½:aÆÃ ¼‚u¨æÜ2‘Ö·{;‹îhÍ�&↠À›ºjda›´Ï¡èJ#ç|ß'šŽª�&¥Éõð�^?EÖæ™"=†ÌlèRÀYÁkuì– ®l’š’2ÒíkA´Ö¹ÉÚCúŽ KÁ™\s, Ú¶@y:B' ]9k®+¼@OÿØg?ü;ŸènÃ99S¥z“´R*î§mÅVémâ–�CŒÄM(ð[ÂQÎmëÊÑA¢†XšUÒ¹ÕöhÝ‘µÕ»Á£m [ÏPµagXAKçpæWõuÛ£¾÷�ódãïüøå×OiÖJ†ÈF›Âˉ•¹NÐÑø ƒËV/Ep"·©;ÉɩŒLYðì‚u..�·­^Ë[‹ÝçÐÔÐ#3‡Ä2€åa�s¦q¶{=ýÖ_~o®ÞØÝ›®•MœâkÎa½– ÷ˆ‰g ëcGEi¹x©›„†ÑŒ�ke¨s¢¹rTzͦ„É�ÛF¶ú«ÕmH¡Ú=ãÊÆÅ9u«'¸ó�sK–øâÄdT�l/YáÂq_TÒ¬>9•µgÁB‚î;š�¹”й�-O¨�o G�¦†U§\1G®P߈Î=0�o˜yur<‡üü‡ˆò/?mzÿWzýýÏ^… ƒ¿ú+ò[ßÿópíÜßü¯~ø;ßÒp¾¼\4œ÷ÿüÿÓp¨ã� k B<Ú·Ëê�dÝÉ’ÁÆòtã娗 ”RŸ—×2 Ÿ–-Üi§µyN‹U†~WáÞgˆ ' à4�š —|õF ã×mý©W·oÕ¯^¼zùÅËGC«{¯Ú¯M“r•y ‚5ЉÌy–”´”v¸£3вm»t¡B˜âxéæí“4¹8jÉщ“Û6.RÉ%¨”ѽÂE'¨»£Ùr½oe¢¹ sT<üãŸ@“²:£�;pñO7^£Ín˜¤°DÛ è&Ö¶ö#¡k.mòaA¤ïJ.Y"��#,Žæg@ñ‘¸åkX_ÑO;ÅNíl+&ƒdzK!»·“ö÷þʿ̳_<ÖvïÅû®Š4‰JÀ¬0n[û„Ýq—–l‰ŒTaw?Ç#ž­�r<à]™Õêv®®qIMQ´Êu 9}M�5G6' [œê–÷xoÇmLÚùâõ�_¾oÊ>òÖÜyåž4ØÑ�Áîî8>Yzâœ.Ò~ÓìÊË6ª*«ôt 3`yE¿,-$¶@ï�“ ÿ)hô7z8on½wöìÜ츿õåÛõîÕ«ËÎuùˆ_|õú }ʽWñ×Ìõ)ÄP¶¬ÈP‚O n´ñ˜Ö°C}zºè…ˆv¦JNáæßH�jy'a\9[^ýX# !lPD޳¢Tl£Í�·\“å-“òñGúžùvïÖîoÀŒ¿3þÌøÌÁŒßMçÃò0„íÊG}bŠ š‹Bwéýx߀ B˜< FuÓ9È]�­•WøÅA’BžÙ1>Gñâ«Û‚ϲ°ÝÆDhïv]Â3|ô³ÒäóáçË?›Aßyù(/â¾?Îmÿà¢@¾ÍwoÞüô‰µ£}Œ\é ~Ѳ ;Z!3„Zºrƒ7J:ë•/1Ú%‡fT[ í·"L Íé}xö=U»e­�Ó€XLP5�Õ¹çnºTÿöCýóß|¨Ìnà׆�k9å¶~¾|&}!Å ¦ ší0Ži»Lk pfu%ÌÙ ¡§ê¨¬“÷Yz2#‘æ)k”‰…œ\–™£†�XÔìÒÐ"ZyìÛæÓ½íî7›ç÷¾Å<Ù~º÷Ú}ws‚„‹u��³¢¿¦ ë%»‚GkÜ mp˜’@¾@È‘´=Ú’5u]*qMH'9o¬ú•åµ¶6‡ô=•nYb÷6œßÚÿ_¾=üÈöyï5ûõ/>Á^ˆ gÔ¾T£§TŒ‚h .¼ U§A�3(˜¡Fô©Ýv5Òê{ï…áU®ãuÆjtæTåKÖ5Ž•¥¨×OíÝ‹Ø l:T{nнo÷Ú½�Ü¿\®Ì½íÑf³È›íý¯ŸÏfûÙBþ…÷„‡Ûd™ÚPiUB>ÔÔÃÆvl{À�³Yô:p‚ø(|YšCèÛ×t… b¢Œ¨‰¾Çizy—F­Ñ�[8ÛpwŸ†Ü­‡ê³gÐ${ø§ÿßÛ_:Ë�8ÍP‚ügÁfÕÚ�¨|qãS°ÏNFþžÂƒÕ'E°#w!ü¬4É8“T©£AC;åTÎ)žZ¦H� -64»çDåîýöÎ|Æ ÅÛ�¬;/ܯ· 1ö‘°Ãó’ží¾Ìw£å¹Îª>&ëpž-×¹p¥ ”xðÌÓ•¶ìêëœëù=£Û†œð$wžÓ»æé{� ƒ"!ó[ËÚf®’•{ÐÃ?ó $h '±Y#Ú¦`pl”¥é5·qÈÊ®Õ2,|Í˵ÑsžXf¿¥t´ ÝEdž÷)êà30ìl2÷¬FÀÕ]–D[Þ!V÷Û)Ùw µ{ï¥{µK7¨Ý�ñZ¼·Dë;¤{B«ßaÓ"‰•b2j3ä5Êk²]¯’ƒ�tºFƒ{Y (;’¤‰ô =ðÜ#¥b!F›vÍî€ÂÑÖ!~¨Oòæm„£Ê7˜^áŽÛøógmü{« ¾£¢¬'Zú¥Ù!]{Ï+ÜÄ-ߘ§·hm”/PÖ™¸`¤×dì9øÎG㕉4‘S XeãÌ …L[`¢1eZb*e{¥ÕèhVåÛaù·ð½_ÿì' Ãû6ÜŽ�Š4t­:(2쪷eI¶™‚£N«©Ä9Í Ó½në¤Zã+q~O8 õ (²f‘ðC6mé¹0Èj!£&!4|ÝîÚ{Ó÷o;ôÆŸ~¤Ý{Ýžˆnþ°Ÿ;>À˜÷ƒìôfÚL 3—Ýj4 À8ñ mHO€ÑÐh2Üá屘Τ&‰ùµçà-Ûb$xC‘x–¬0ùÖ9PmŒ¶œ„þ¹ÏžÁ3æáŸÿ þWó°"Iâ2m£}åIê$ƒq¡€7tAB;Àîm÷.ÀA�›ÿ[7æ_øâõ~÷ê¼xùÅW¯ß|ýxŒqïµ|Ò�Â7†”gˆJ­i=ŽÌ]ø–•É¥7Û1©+Ù2°C{¤û˜¸°Üài¹DàöjèìBÁ²òÔâ âls’�&Â(¥;¦ú<ÔÔWáå ûÃ]‡vÏ@s~,ÛÈ}ë­5ÚÍ )!kïq.•ŸLrašÅȆÝsA[�Oz3gYdІ*³GO›Àt€3ŽwªK#R‰[´úGôñ{\nu/ôåë7�Ùãw^´G›­ÿ@>¸PßÿúÙm6c0;l:9Ôå§m`Fx¤/8žÊÁ¥­ÏæShš€DßÏŒaÖlê¨ 9HôÁZ*žÀ MDaŸ½¹¯Ãj§Dè„/€ êÖÓroPÏm¿îåïÞ|ñîÍçøénvܽWîÑŽ£ðôçvÜû_?»v [ÛŒÕÚä½ Q™{w:³ˆ2ErÎÑ'_œx|pÛ-ð-›°¿‚\ÀÙDÍOp”–ˆÑq¥Œ^ë$:#b<Ûb‚ã„‚…nAc÷Æ!Ý츿ýÒz¿ýÚãÕ·ÔÇ—õÓôòëÏ_¿ûúR‚¿¬Gcí{¯éwµœ˜E*X{Éh³Þó"Ä=tî,ì·ÆÆn51`ÛM÷è@ø)†ïjÛ1–ƒÄb•Á�»Y¶%†È%4ÂfÍ´ÌtÓ«iËÏíDëÎP¬Û‰Ö«×Ûß~þƒ/Λ=ºpï½tOL´ìƒÐ§÷¿~v[ná½ uøF÷B€â ²á„.¢0ü¾`ûôÉ«˜t‚¾�ï2‡ÙæV÷&€šÀŽ/Þ0Ï‚üŽ\ òÞ‰ä,æ�¹ò”{ípßös³åîÍ»­)¾ô¯ß½ñW×ûÊ?óî½zOtzòøª»�¿ëÒ@ðÅ�hÎj>dM|-ÂÑ1‡ûÛÐÛxiÛ§–¨“£sÏ¢k‡‘Á �žHX}ƒ«9y_‘?–A`ûÙDñrŽ`¸ƱÛ]woBÏí3璘óë×/þÚ»óîÑŽ»÷Ê=ùÌ£›gÞ3Üqщ´:´â�å³�‚WJË�q!6åÄh'ú\>#Ÿ†òyŒo¨“vñEŽÔÂõέ²0²£DÍüT+èC³5¦Ñ7âlv$o4 ;‰KSÃMüX8$VÔê�i8JsÓ¯°*… w â®>ØmKíÞ?Î-<íoøqÆ9ÕÇ€Õ´÷vfëÄ !¸¼øDë•Ýš0½k¯6a{Ü<¶MêV‹ü Æ+.Û³b;y3E�\*ý*L|kcH ¶9ôWàOÞüånH”éå_ï}ˤüæbÛˆá%›cÍ!=Ön ¼sjdÏm®i.�!#Hîzª7È0ò…f·ƒ¨ƒÐYpQ{>ΫŘ³L»ažç�ñs̽"çmÍxožÿãÔ_{w ïï½jO<ÜûÍÃýã@‚ ŠXh!`^Ga•Ñ"Gà±7M™&œHÅì�zxAüö ½¬÷Éð³ Ûä`ug/’ž�ËuˆÂ êЂõEkà›[G�‡ñ(‘¶y!(‡p3”€Ä¸1Å©‰pD›°+ã®&ê›ñ^ܨ©u"ÚˆEÀS«1áÇñE6Næ¸#AŠ£-\±Š6÷ ŸEG»0ß;1áùèå«óâ|ùõ›Ÿ¾HÏÏÕ÷^¾_ ßòÓsã�íÁá ¸‰©´~vT`�;YYß]jkoAˆ··à8бäø9+¶‹Î$Ð+ö L Z†,0ŠËX`žµì`+.ÞÝÎÿô 6Ë8ÅmÈœä�e·}ÆZg:à7˜ð/îƒ&NB6§¡-Ѯޘ/’ ¯©Q‹¢N¼T¨àf¤¶ÇÜ„uýðÒgÒ5öq½åÜ;×á¶vÃáz5�1„÷^¹'ííÆîñ1‚áïžìð/ »GÌ0YGÏ«¥rè.Ä’ÏÜвð¦ƒ�ÁÞ½_RJ§-ߨ(q_µmˆzóEÛö„2ÀÅÛæ½Z/ec¯™GÛ€>[5Àª¹¥lß{�o:/ß¾xЇxïU{¢†ÿPk£Ckƒ^øOØsóL—w‰Uð?Ô……2Í/èè¢ì Ný‚G‹Jd¨-7kîPò‰È-“ÖØq6úk;Ò(Èl‘£Zq@�\«ÛŒ|øW>e[¯nÄ‚ö ]� )×9Fh'Ca¸y#­Þ³I?LpŽÔÒŽøÆ„À¥I£pÂJøe-nFmÑ¡Í�h;|»/êeÓ jp7öq+ƒ}¾Ô¸Û¾ü�×íI­O»Ñú|”“>%óxi¸a/è©ú%UV° Òç ´ í@Mwqógvd'ðaÝ›£ýXª‰!œ¡_qŠÏ‡…aD¦©Yl2ˆè}ðnÝŒˆ:?ü«Ÿâ¤ßÍ¥ÎÒÙwnÑ9 tE±hžH\Žôêµ<òúžkÛ9x#hpÔ bck�©ïqÊúô#×n¹w �7Ev2ªÿ€D�ì Ž¦ªÛ’öÞ^ÿŸõ¼.ÿ·{ÿg^þG'þ�Wï‘§œ`!ÿyî7¿ñìfÙ5FC¶â Œ‡7G§Ô]Ha=Çùb™wƒ"ÆfÓeDbkÆKv[jÔ)Ú¸îŒ_6ã[ΤÈT×€mn/ èlv§QTìÍšyÝ–•÷vÌßž¶¯Þ¼{ºž¼÷º=Å\n?Ü~ï›ßx~;n™¸B9¶Åç™fjï%HùL¶6¡ÿi¿ÏÕa4iÚ(Þ“ö>չƑ">ÛD\gŸ��ç²ÏfÄŽ@ùÒ0ºxºnã‡îm¿µ¹Ààò4PîÞ ÷„¾’nô•ÏRa>á#�I 7¢¥M–!@”:N ¯ßÁÒð%‹bÈUí-XŸT`E¡òn›pnál¡-0±82Áydœ>* ]ǶõH`¡<çªåÞù×·cÐüÜ_=B+Ý{Íž(¡øFZôq“w7 þkŸ=ƒiÔw}8¶k)qKk©¯`Þ¡×™íu¶}Ì3ÓŠ¤æºJxöØ00pã9*EO¤,2 χçî Å_œ„üÔ\6:- &ñƒô>:•Söc¸2½Ÿ’}Ü“L£3õÓ@•€¶%ËvÆ2`ƒçZ}¬¨–‰V^}¡< _ÆÌyæîŽ\Ñ.âȆÿ# '«3ž!{2@P¹†ÝD TÌÞcxK˰ÛlŒy|pЍÎÓ'æ a¼mœ`¸öš“I«”µ¥Ñœ Ô©…PÒ“Ãf~0ç¨ÕAR•¬vÃ`’©Æ�MØAø8¡d0VÝ‘·éÆü“ÛsìÞ+öè™f?àöû¹gÚ7¿ñ«Ÿd÷¶&=üëWÌo�d­ÑŠòˆë#Ñ´��¤»,­l¾ïÖó›Ü]ª)Ï=¥/( ;ŠvNoCQ±57�ÌÌëxZ´=;8ëâYι¥ÓØÿ~ŠæÍö †uîhvÖ‚ì"O Ä%PÔ×fµ#ª#x@öUJtŽ»ˆ¶^ÊCj¯35¹­¶)H†cY¡»»8e$ÍÝ6ãõðo^Ѷ ÿ¹@PKŠ 5<ó çENðqîûšì’Ó4¢uä•`àçäå„MP¢}ïÞ�Sïm^ZÑ`x×Ôålƒ ·,OI_mÒÿõÙ?ûèí9RƒùÊfd•ì”y" ð[”Øþ;b{a~‡`nÃ’ONaÞPÒÌjèrð6üHœ}¢Íº&5‡¬7Á•™Ç5¼!b\Kn[ÒÏØ¥~ÛŸ»óÂ=9‰¡›IÌǘ@Þ»¢zø·?Aî$úƒÐ.�CÙsÙEˆI̪kîerœkŸ Áj×i�Y rˆl–œk6‹8º�$Z«uaŸ›#_ˆÅ �/õ’qÛ'¹·zïfÛÿö�Zr÷^°' ÏVícT¿Z%iSÁe”ÖR—÷ÉÌ6Ny› ïÙÝ \Þu,ÀŸ˜Aé8<ê̱7i_÷9¸/ºVØñ"�‚…»›fqR¶Q¸tébf¿5<ß[Ks{¾ž·_¿q|†�:r÷^¸'í§tc?}†`šƒŽÛŒ¾Ñ0Ø­ûdV8Tû¸¥ª’ƺիm«+X½1BÍ[LèEú0qI"¸�WÒª6áÝM‚¤ïšså }ëK¸óLóvý|ûâüñ×O�™ï½pOžp|sÂ=Ã~îÖ2OF¡×Í«æ€ìÄ.Û9æwÃFÏ¥rYîÚÌÎGš‘º1úœº˜öÞ´Zpˆªt]kÒD4ëª.Ø*>ÑÓïHñÞ‚lE‚ð#[½;@·bž«üö럾:�îÔ{¯Ü¯ aÉêË/kœ}çé¶›‰®¾'O̶�³ �l£�>ÖÛŠŽI|Κó*°™pœH7uEpekÙ¤÷ŠÕKàÐU”mWqf̶LþÔoÁ‹ZŸ�g)MGÚå Ž9�É4„Ðp¡M”-9B:4ó4-q[ꊤ�=µMéå›R¯U »É¬�¬=Oµ ªà’—dÏÒÑ× �óáßýàd.fÅ@vö)9ªœ dã  þI-ŽÇyà<†{À*uÇÅúÞÛìŒ-�Ú’Ük6„Ÿ!`IcêÞØ‹‘l´Ù•æµãóP×!·ÝðÊÚ x�!3¡@œ yÞku8ÂGŒ5}7%e�QÐ1/Ù¹ ä=€´Þ¸MUZ[—q�³/¼]èDì%gÍ•£„@/öÈoûç¾�ýú/êÞ ÷„ mÝÀÖ¯@#©E£ÝyÓ®èÉÚ©™hïÃí"‰Èªå&u°auº¸¹ð2Æ_acEÀà‘ð�‡RvÎŽ„}uBPåÜ!¡ÂÖ):ÌÓöðï]-œ¡•”pƒyå·)ë ]é[yTéê9á¶R d‰ÈOo»V:Èz¾ç黬ÙBOÌ áJŠ¡ €jx bí1ÊgcÌ”y®Žâáß¿Ž€Àûñ¸\È.–K¥6›n¦4¾º'±æÂÑJ{ºI½ ¤²ÝGOÝê6¢ù´@²‰¨âìÍ£ûú‘:Ÿ¯Ñ\·6�Ü~ÆÉñðà§Ð³”(ô.DÇ[ª6�ŠmFÏñ€`³­:ˆüÁ¦*©#cãK”Ð-)­pÍÎê»hV“waä$V n éðu'ÔZ“«Ö|ø¯ÖõZ~ ¡IcTUÛ©mvtëZÑâh ƒ2£ç†Á�’Ç$‹][6�ÉÇ_‘g«Œ¸Ð;ë²; m‰ÑºN“JÐVÅ—ÆÃôÙ…mB@­Wî˜9w OG†ñÖy¬óÂeUÑÖÕh. ²Ê½æøAØ%ˆø²’HWß}ñ9¶=Ö ÈH—T×ÑÛ–¬â@“âá?þì#æ¯}{(·@žJ/ø?JbžVnÈŽë[!ïà `ÁjSÎ9Ç©qŸ4NåìB3àš6Zä°o09Êá`Z9ZH ¤E’€"š6öÞÙïÊ��ÍwÖ�ßÊõÊ¿~Z†qï…{RêÉ7RÏ�A³Ï¬èÓi!áuñ!$b>Š0‚Ë•;¾ø»p}� -›ðÛ/nq:úÖË’œ4&Sc_ˆÆAÓâ ˉIâzΘ J3�`möiÝdÇZÿÉ5§bª#�šÍí8”ÜæLÂô JÉò•èc£‘®á#†»œkh×:F�4_0±±6è áì?é6ßc/ßKe™é†[J4NXéÃú ^DxbFè»Î¡Ýšg^ó¬êDDH?ÆKÓ. õ œPz ?.uxÓ%J§#çjFã¸;… •a¦gŸýdhÓÛµè·ð½å�·8ˆxãy^œ?þ …Éë/Q¿î¼zOŹü€oâ\ðÁ2MbĈïMç [ÏÉi¾Ò…Ž×ÎA×Âl`ŒÙìL#ö4m«�Å×»�1f¢Ô_ÙñItZ}�µz�ÜgÌÔ1³F·Vx§$“ÚyÔ¾ó�s;¥å_æÙ/~Q¨õFë_.8‰�eW}Ù©7ΙœÃÛ×cn¦\*Rì«FÂô…1¦(Ž0tÅ„HÉË#}é:ÕO]ayFG»2,мdZ—!M~QDnŸ‡À`0ÚìÖ§Ø�f6—­‚Ññ¶ãê#‚öij~ÃÍ/³�‚î09¿Žj²z÷q¨I <~uôØ�èOÌ—Õj5v�e"˜�6Š9þ³Oqª©˜šÙÆ7¬§$™müÇæƒçÝJÉI¾ûð±á•#üÌ_ŸqCqÑ^{šhC�¦Cb«+µèaKvC0ü©\c�9¥�¥»÷|*wï³oÅß{ùÖ=ßþLüôêå»G“º{/Ý“^Ávãü(â§�ø’ùú‡qx�Ji ªA¾�g¡Å]µ¤ÑÚsØ4ß‹Ênw›#g[R׌ ´€.¯§ø6”èèĠƪ¢GþógA_ÿ/ðSÀþÙb˜;Æg öÏN6tnµX»*x¹.C¥oüµ¤‰�Á(ÈëRLYúY†� ÔÆŒq¬�Ëk²Ç\8še­Þ{o}„ &ÿås`À?üW×'‚ÌÎÝÚuæ ³ï˜Xèò®'Ñf#+5:�ß@¼�"¶e‡œÕstt½{€áy�œ˜0š¬œÒqѰ ‡1ø¡¤ÖÐÔÇ“si â‡ÿú³g�Öððß|‚J�Ú�º¥¶«`—º«ÏÓ««Ô*9ÑH‘=Éœ®šbµû.‚Òj‰د{¦ÏÞÜYScœtaÐÄD]òÎxu§7>ˆ’¥±¡·ÙûöX¾·\çæ ñ·]<ã'ù‹�¦/w^È'§/t3}y†ã>4ëh±- ý[KÞ[°¼æ$7o<¯ Ÿƒî×›eéa‚ùžÖ 1)éš¡é;F–-ªØEµ4Z± ÊÆg;º…|v·²{+µn6àßò~ïåçç ñ‹&Í÷^Â':ÁúAÓáý¯ŸÝÖü��k½Aþ«FF&Á}�„ l”cÑ/l:;W/g¯ zºcÞF…%»­Vo‘T+¡ÚlW�i8Í›¢ý�£Æñè�¤c÷–çÝRµß½yùâÇ�f~÷^´':\zÓáú›í; iRb ô$Tèk#š M�>@2•v¬rYÛ‡ ý€1�ÚððœÔa‘î˜̤±ññÝf]ÿöÖ' õ|ˆ‘ãåÖ¨?ü·Ÿ@6F6Ñöí8 í(þ–Ž€©r€Ç¿k`ã좀\ŽdKuG²Þcl’=ëØ©žÖægÈi–ˆ�P•bÖ²÷ôvnÕ<÷ž«>‰2ûs—ªÿÅûé÷Í%çå{YÄ7Påg)±˜sÉŒî6&®®ÖvO´ßF·ô¨«Õ�¥†�³–¢í3`L\°&R� ¬s·l ¤Ø0‰‰›ê¢¦�éMô)�ARßÕö-àûÞÅ[nĘñòÑQ{ïUû®âä+÷@ZNõŽI"•c½GC.À4o¾xøF~é!úÖÞh�Æ/ò8Õ(�¾àvES»ãÞ…&GNŸ˜�–�Ú³‹w´9mnƒŒzÄm(í½'Ç�ÐT¨i^�Ÿœ/ß~þõyù¸ƒ~çå{2È>¨dèWw¨|ümweÏ�æ½k6*•%×Ô�¦"rÜìÙ×nP•÷pöqµÖú]{®+î«:3ÆÀvE�ÓÒ<¦9D|Œ.ó…gª4BWÅ ^™mHK¿Ýv÷ÒßM¿zs^½ÛçÅã,ª{/Ü·j»¹UÛs¼Uµm¢Ô •Ïkqqðw<žŽ®Ô�ÙOS"î†@XDÝ-ZÊ >m¢1=t*0,64+1¢A*T�L“6öÑ;¯i­í¼ù:{Ë踷âQšéë7û"MÕËw^·'÷[¿Ùo¿2SùSdŸ�,½ �ÛqV¤�³†\&Ÿm^=*R}ë¡Þ§É¯XÇdáûÀ´äØ¢�b�Vây’�[ ¥&ð¼Zç6]¤aÊqÓrg9äÍ~û½÷eC¾þò'çÍ#îݽ×îÉK•o.Õ�Q6WM&¶YTƒóÒµ3…>¼ép³5 ÂŒÂ2šîˆ~xYðÖ_ Z7u/ƒ,”õtÕ•�íÖÑ4 iœ Á…{@ÿ6Jþ»OP6uë“(Ï ô gëÈІá)ÍŽ¤A,·ÛÞÁ}ˆ$¶”•=ø Æó„�†¦bàäT-‰‚£w ^ó`lÕbo€ÒÙiC;š �¨4wV¾Ý^í¨ž_äç'qî½pO¶&é¦5ù1â÷~m}w�uø¬]¶­ã©òÜ9§™¬fFÆ5·¶!6Šê(ÖÁ„» ´ú¨�¿«Ï餒ðv¹ã8¬ZB�PMÆY,šáù>„œ¦¥ËüV‡Ñ~Àò»ÿÑ>ç d9ÐÎ…”A*GHÊzY6J§�妯síÞÂ0ƒÛÁOvÑ1ä&êû'^1]ÙÎ6 gÚ�ÎXztÓá‰/Æ4 n› wVðÝ6A ªüúìG�µ;¯ÚÁSåy¦8Îî«q ˆÔ¤S«�É–W[Hœ™æ´Ï„æø0À‘@cך­mƒåpãØ8C�ëôÅ�ìNïPBú!݇) ©bm¤ ÓÈ%´Ûín»·¦éö@Ê×_¦ýâ‹ÇÕÁ½î‰+‹n¦iÏkµyJ@2vÚ> ›-ÎlË©{MÄ¡D6+ˆóÌá³é(n‡Æ–}NLŸŽ€ÅjRê“gÈŽc£ãÂo|\|¸d 5À-'õÞN‰› ÷;¯ÎOuÚî½d¿žÁí3xŽüæuô‘_GÏ yøï?�JUsž–5€·Gb ±læ·�ᨫ¨ð…$ˆu&œN'A6|ÀQi>„¡‡n Ôuåò1‹ ÃÄxŸzõƒP/=ciÈã>éìoÃí!ö‡ç§�‘Vw^²'ýƒ)Õû_  UWØ­%^.H›÷qðá3¤ÚiÒᆶHf-P * ÁoŸºä3vLð¡Ád—ìÉ›HÜý´˜I»Ž�ÿæ)ÞZ°ìœíáø��¡]bR `ÑPQȆ mwdÀinqœˆ‰ 'hêp´ĘB­æA€kò �.Œñ‰�²�šë´ƒîÚÙ|X[bp/×Û®ˆŽ�fóVÿwo½é/�Oº÷Â=ÚöãFï7>†Þï9à“þÇOõ]%‘h««£÷K‡åŒ=Ún¹ *M^]6ïÈ9©žá»Iî^F“‚žgEÂ.­Ù®z¦ZAž¥^M€ãÇÕšLá{íÍ]û­æÞZ£›mÿÙWï¾üib«<ÊÚ½ï²=ÑÅ–›.ö³,Æ£ŒPŽ*ŸEÒÎAH'8•:P€Ï�sa#yu$ƒäåæŸG²F-îV6‘’;úî^e ­–hÞ¨ƒâ«Ež{ã±'«ø”c+˜ëmmto‡Ãm¨ø{Qõ‹?z¹¿~#qï¥{£ô!·«$òïŠ5Kº…$Ýä¸`ÆPx¼�ì¡)>z“ÇE³ÇÔ0PU6ò@\«#¼¯h…ÀP‰(¥íäAžØ@2ãö~Â'&á8™!.oÔÇÃÿôÙå‰[bƒ&GÆL [FƒòlÁ²åh'F2l‹�¬Ž3ℯÃïÄçJb‹>kB’дDŽbuƒþÄ‘¶b®MèV!�a“óÃÿül'ß�WÉõ" ·œCÛ^~lÈŒ™S8�aªŠ92±ç=üÊ¢ÞÛöÚ×7uö¦ÌÀó°ãúè´÷åk?eR¶¦3lokuGpØ�^Ž‘Z�øöÙÃtuÓ¿÷Ñ#Ø Ý9hæá¦YËH ƒæ¨fÁ±¬o7À„ •ûª�‰£ñ)óAjaÇÊŠ£jÈ=^:áŠZj2ò)��V3fʶۖ½ÍA�Äoüéwë½×í 3!ß~œwë½9Zÿ˳0þ¯¿9OsžþRFÀ>�"w|$ö娹c‹0õ8«/^Ñú*¸1ÄÇÉÍ‚_òM‰‰zà¬ríJ§x,g˜3× ¥‰ÔÕ˺L»²°q5Ñ.AåëUþˆÃugÉãyÑ/ôÜyážôè�'à9ª´gÙnd$cTïêcŒè²húAß'cGoaÙ>¯vlM<؇ٙs9Æ3‚ ÔÒ“žÉ뵜j ÔË¡ƒcÍ `ÉBLõ-æäÞݽ[ìâeü‹wUçùíÞ+÷ÄHœnFâÏrB9·™8²Ó”2ÚéýäŸà4Ôâ©­oÏshè–ÑÆr¬u”{ííÖ ˆ°L„x8tò‚ŠHÏ‘î�͘iÈÑ\³�)m“¹~w“žî½pO¢âùÿ 7\ rG,6G+¡Ká 5Ö¾q�Ddgš¹D�uDÍ1woS”ÈY’Æb­oÞ±ƒÌÏT-„¿˜ñžQ|pé ÛÓ CÀ:“…nïÔ{wn=Çß~ío_ú—O6~î½xO ÇÛ�tð#Àe?þ¦;V¨)©ÏBúV,øŽðYõ¾�Úm6òe §K-Çlp´¶ñBŽ„¦xdÎF…*dÊÌܱt?Ö c_ÁTèmn�»Ñ¸õÛæ½J·÷êùâõ�Á1wï•{´ãÖ‡Š¿»žg‚âŸhÐ5v˜Ã2[�ŽäT0V¸Òý÷³s5Ä/²fí€RúÅ"_ØK«`¤/ª1&²àU­t›ŠWqÙp#u,@owܽ ÿ?@ûÞ+÷ÄÅÚn.Öçé|»Óœ«ZAF gGm¨ˆ £ÓGk² É Ù´�{‘E�Gx­é1…ŽóY!SˆO¬#È~�:¨²Ìº/†Øaô+:u„éÖù4¸­ÑáQë�] ®\ íCë<¡9�ÝÕÓ`õ˜±‘°Èº»@-Ò¶.¤Cåi#]�ÄÃ+ðjÆgLY#GÛ Ǻî0£�·;îoú)2‰_\éÄ�Ї{/Ý#>bkæþ|ï›ßxv›NbˆcN9† 9×ÈŒh¡]kÈ ëk¯,tVíÀÓxjî±h@†»Oöá¦KÃ$…‰tó¬eMùêôÙ¦‰K’Ò igp᥌¢z="Ø ³Vp²“í®3ÏòI–î4BlðcÁåèc˳EÈu‡Š¨ûà3jN(j ú‰E}aŒf…óaÈÍì콺w�u É­¢Ê„^U¿5�üöcî½ìIŸÝøìžÓF»ñ{ñòËßÿüüð·ß·å˜z7¤”.P'TúÐUà^ÎãÞiÀâ*±yðõ÷ÈÐŽsÍ>hõêý˜]ˆ!\r`úðh›†ÌÑœ ®7¿â—°ö¨6¢ƒÛM×ZßÔc1H ºNÄüBÓ'®Ør‰OÉáuo›½ñ¥ƒ‹åsH±=…²°e£h÷^ÈÔÖ±doÕ½ûzW§=ÆVxÌ$ŠývÓýî>ñîG�:rw^³'5rƒ¨‘�!«½sêÖó{¢�¯|϶1ð²3†2ÌHÝL6í[a ·6Û€°`žC`ÈôåÙÖÄ´…®@j9Tz²Òšm¼g´L PB¯sÚ¾|ÊÝ´�eÞæèëÃv> lò ÌF¨�g8rödïhïÝÃÓÔOßkB.– ǺP±fr´­qá—º ¯4=\Mg�̪&-}ÃTª‚š™¨�¤¹yξWDÊ1ÕÛoÿ½œ'q=ã4^`w[Ëæþìî<¦9”Ù¹)wVâÆ™ÒzŒ�…Æñ“u¸³ûرˆ„ìnœ!ÜÖiâÓ¼wÎ`L.,¦%C¨kão?òßúË—púÞiÆßõpå8áÜÐUšvˆš['^ˆo'ñVn½²Cþ¼78QÚ«Íii›ÑÁ¤IÝj‘ŸÝ»Eþk{"ã�¼™ž…ñ·ô’`¤.÷ˆgÃó[þã„ý—¿çoÿr¯¿ÿÙ7ù.¯þÊŸüÖ÷ÿÒ\ûú÷ÿz臿ó¡19š ‹’Ý,}.¤Â°Ê)îÇÖ°-buL· )ŽZ0âºö3‘[¶Òu/Ê!½†º4O„º[Œèî`ÿ�†ÓcY¶æ½QÕÖÆ²êVaíP`“ZTôÕ ÚÒcÈ8ƒï�¤rú&|SZöì—ã#XEp>]«ÃRÕÃG×Î-bÏIbÖe¯1Ö\Ñ×t©É‹¶ b!Àß¼þ£·çÍ‹·_ï×ïyòï½xO¼Oå†;ò,Ռڡð?‡ý´¥Ü¥­}hï~È�œe˜´…h¡Ä̼ÇÀ)âµA�º ßÅX”+×B•¸²FQËjBmjr^ƒÚÚ›Nit{ÄM‚ýi6l©UÞ…¤ŸÎÓ %ÝD³Ð@ üIÓ³£Ã:ÙÀog¢­][Ù™f}¢›Ó†!×—„�ʉF-%ëPJŽu„é–æõg¿xùåË÷ÈùGVÖû®Ûãhú÷½o~ãW™J_çŠIhá;OP2Ö–A,�–Ç…;§Í%}@åÞïtBæù:ŒV*ámX$ ª‡Y隽ͻ•ØÈ5ѲÂgÚ|ÛŽ.ÿÛ§�»/œ=ÀNÃm*•(Â�®Õ§.BÅ‚aV # ì6ȱcAØå€9ÿ´ š$Èîâ,ÙÖ n+EÆÜˆ®Çÿ"áïBŒ „ï꾿÷º=ÑW§x;ïý«ïú{G¥|Ç’[?í˜Yp>Zœ9ÆÙ.ÁqMçCŽ�^Œ¶Dq÷c{ävܹëXoû„Ää&Ó„KËÓó‰6«õÝj£J|Û€‘y,7«…ÜgôiHYChÊ ÒNSòrÏ855<Înš›ÖL=t¼Ÿ²�,‚y¹]R³N`Û£ï0—VñTcnL>¢dN¤Hm$nVÕ.çÄÉV·sáÞÌT¬±5ÛûȨZg]ÿ•ðUc¶½çÀO²õÂc±éjkó@R¬ £¸Ïj¢;zBýÚ€Y/hØàb¢M¼^y¾i–pL>k«çÛºýéŒ{¯Ù“‡ß"ãê¼·bô»äy|‚*d Îl‡ï8Wž^4H† ‹!3"Á¡0Ž"ÂU™Hİ-s—ó*tœ1¡.0¨Z½bVU¨äÙPÁÈå˜å+ªÄW“ ªƒgYÞª5Û7™>÷–¼>üïÏ"Ââÿøìã+Wñ|l­µ\(#Û�ÄÒ–Qòn­™mjˆ”è;t·¢M‡)2zÐ6xŠhKÏh*Õ³¼üq¤h·N·Q³µõBNÏP×6¿S_˜Û—Ù�—î k»1±~œç{«PþÏK†Ï_è˜xøAcôŠg’6h@*îÍìê¡ ´c9sñ5Tîæ�Í¡½S_"µÛ°5Vb@ÁG8â¼>öU÷)dWYvÚ„kxëÃÿõ3À¯f@x²¡K½çص},ƒ7Q]�æ¬ÓOTΑn:;üjÌ�!Oj´»apZëUcp®’Å­öçÙÌ:šz“L£´|ú5Tóöza\/ÿHC¹%};Gm²‘×:HÆÙ~¸.�­¨Jð‘4üó¤­Á¹"vM0ÒK*j´Ô±]Úl³/�ØÏÑà%Êc‰ì ÃZ‹ pux¬G£î£6ÓÐÃËÚÆ~dÅB¨O#éó(ûîûs»¯›g/¨Kg-ÝG vc‘Ù ®zìö:»#Ræâ=G�>Æjmn=¶1Ê´UÖŭýíVìxççÖÇ�–ÌWþö©9h[kh;00":ç^áøòŒƒŽäDЈ¨('€FªøŸQ�ÈÀ8�ñ ›Žf½8:tø¹Ú²®0þ/BèºóJ\é£áÜ×’Ç'Y{?Nùȶ&gˆåö ݪNYˆ ‹{]sŸqx6U7µ‰„×åV åkÉpuëc0˜‚ªxÉ-êÁv„'#½£fîÔ`êpNâ±Væ©Ç[W\U·õŠZ›<#R¨  ¬æ¹%t£i�{ß±Ë|ãò/§!ÀkÂŽ™jØ^`RGåÊ}½ÕAÀÓº×Öœ]·ƒgdN4î9棓ìÕë½xûÓ/âõc*û½Wî ŇFQýHFQøÿ�”×XÒe¶Ñ‡CžWÝ#4¯Zk®îâÚ©í/²Ä;^ªæ(Iu.L ¡ªÜN@Ê;2,)×Â¥âqF/ÈcZGBcïmf>ü?Wš½×Leë§f\jkºö’M ©ûù ÐEñˆ¡Ù,˜fgöS ¼JŠ2Öšê¡1gfŒSÍ3y¯˜é¨áÙÖ8 ÏP�8ô¬.ÿï'ÀiÑ9Qᑵ´ºE[ŒÌ\ËÂ%Û�šH.NÒ²ZIûäZÈiœZ®! k‚jÕ· l™Ï QPLµ* #ŸuðRÈè‚pÑÛp·{¯ñm¸ÛË·/Þ}ù •ßÌ|óOdO†ÀÐMÌsÑ}ÛcjP(„ s¬ë5ækÁíVsµÂjz&áUYhÑt 9Ðqn©8Úsué`×ÂTáþ]š)šáô2â왡¥#iÎ8ÍûíÁïCæQ�õsõˆÖ}ï5ûµù÷¶|‡ OÈ© ±¤e4Û8BGó�s«Ú¹zÃy¥‚1¬Î@XonŒ ‚ÇꥭÕ²g®Þ÷™<Ël­¶dž‰Ë_»�\5ö^g5ˆaÔU ×Fí5&8>Ò7ÑFì9®i¨‰5Ìr×HŸn ²~Áˆkã nΨÊF§+ÄZ˜a›`Ê|RìTb�±Î¬ÕTÔc›r¿z^6Ø�µÊHƒûV¼û;‘¯Ï·7ÍOæ‹|ý“óÆôÈ=rïå{B�G¸1ßÿúÙm»%TÈ~.„.ºç˶-Ü=©ä<•Žà÷ ¡5¦ðÙ¼�Nv«uVQª´éE‡5Ø7ƒ…>5küì½Ë¯¦I’æ%†éªÌéÛ$`ÓêYGÊÍÝÍͬ%XñwÉÌܼ*ª33R™ÕªÑ,@ wÄez`ÃmÃýޏ_f`Ø‚K˜á¾ 6Üõ¼Y]ñ�“ÐÕ©ïª]Æ©¬È÷ø÷~îæfÏó{i¾´a•­)’<§m·#“ϼìaQmð`oÄÓuR•J¯¦�ÛÈ>�vL¼xçâu(Ó„’0—d |¹‘µ-göm ©o†M‚âÚË‘ØÕyµÖ%tÔ-åà×Þzã¾úüiwܽïÉöm»iß~� 8mZ‹É<`D<§&¡m£g³“ .¿ 'ÅÆ9 /µ¶�U'}çN§Ü-ÖF 9ŸÐiÕT=�éZõÓ]dv˜)@þ.Ž&ÊSÛ|øß®y´�Mœ\9]2{ É~›�™ÊW±{˜'.æn±JLOÃ]"O‚q·!ªø-´u_Ñ$Ša�OÌ÷¬S§-Ø}F%ô(sp¯‡ÿO±' 1§ä±òãG‰!n(Fe9`¦gN[̄Ȯ²wâHlb“L©í• °ÌÝg ›ÒBüøæÍ଺Ò^�}÷ÙôDçÞ…0ô¸¿á>gÓLŒxs®|ÑqX…ûtí1'ÏB‘:›ÎŽO_ëBÙøT™�a÷£j 'ue®‡ÿó£ßúèƒgÙQd“{¶�]˜ZZ“ÒÓÆjÛŽ’ïQM£òäiÁ]?÷¡û˜O“´áÒSàÁ¢Pî£Áã<�ÄïwMmÍ|Ê€uöðYWT_·s ù¹÷[+™Lÿ¬>Móèð»÷º=i o7ÆðgØõ¡>©Õ˜Í”ÂªŽ´�)ìnW¸Øò~fƒ`:¼í@ØÇDªí<ºÊÿ¶‚Öæñä³Â§�†�ÿØir 0¥�¸ï¼ôLÜf\<º-²~;º÷þv;ÛÞu½q/ÿÄ£îÞ ÷Dë§Ý´~ž¥)œºLä_9/ï¼ÆÑÃÃi¾鉔"›6Ä oÝœM�G/H[h`¸‰Y“}5d ¸��qÉ2_mo[ÑÉÎašÜíF�žã{ÌM·bŠ{e·�õzüªÝwÉž :·¢óó*ìß-ãwòÓ—ŸüàÍ;c¸î�jY¦ó�<—K‰WA†å°6b¨‹–�ãPWÅçTƾóTŠJдζÐ;Ö ìbäiÝG£ªž«ML¥ï·˜m(nÛ÷®^nUo/ß¼øâSùù‹WñƒÇ8³û.Ý“ �vÓÐx†{Ý<…r"M‚x6çXQ›aë›…Ç\jÙ#0ûGÑã8f`�Ze–”´œËt;Gì R!û…×QçFÛ‘ù¦Ž8ÚÙ�vÒÕš,Ìžoí ª³8¢¸õÙŽ#ʨµˆ‰Lg–…¡VÛsl0äÆ2îÙÜz'�ÞT¤³UU£fÑ×îÈãj+ÂZÖ³á¿î©p@õмú¥«Á'þ(Åée¾ºz«�:h÷^¸'¡tƒ}†Fîð! !8þ˜¾×oí³Ét0î¼OŸcúÅœfˆ8Idä™Ç�•èËJ^Û¦uÑE½”©Ãi¾ÈE+„Å�ÌÇþ‘¸½=<óŽþ-èû΋÷$è›n@ßD‰60TŒœ“‹g5Œ'iùB¿ˆã<å Çû€^0|†ôX Óó%"§O0dj ¡íÔ§²Kñþ$¯]Ÿn·Šµ*g£‘<àÅÎ^vdW°4P*éЩh*Ô{‡à>GÃÔ/ lòàZínÂcÒXv]e–ð:|4à~FÅÒÝDÆ`¢r6 ‹Z¬~˧»· ã÷pïu{ÒrÕo,W"zåÞó÷‡ÿëYDüß¿püÂðûqðÜ#cÖÔž cjŠŠ~ Ivê‹û:€¥’áÊÞ0DÆä�.¦+ã̾—t¢d0’¬7 –Ïš×_­s©`` –²˜ÐŽ3·ï~óŠÜ›5ðõ`ó;/߸ç›or;ßOvAÚMäCLšt¨³Ž"·p¢Â$`Õp:ìEU½­z÷Ú'ý}ÖÓ»üì¼LrBßh‚sY«mgCä +£€D&C‚Hj-=~Æ1¯K�µ=�9);I:-C©;rFîñA3=]�h¨رåöð7ü hH?7p¦Ç×PyÅ=¦L1É0Æ4Ä騂S¬Ÿ•Cd5ÜMá+°‰àþa‹ábl}×ÚxСmȳdwÚgÆœrrIpš£e�p§EùMh¼µ>ØðÃ?üñ‡¿½9ÃZ©¬Š¤¾ì­<%ÇX¨/ƒ•Üzx ìá0Q;õÌn^ýð­x¿�^—(k*Ê…K; ©±ÐnâäÕ["ŠC=i,p�’¯’RÂÚTÍâæcom™¾RZmOâXl³ææÉ޲}Ÿ”Áúq_é7ÿèۋ׋|õÙg_}þòË}}{÷ó¯¾|ù`pïµ|¢j°I£}�+ƒ'\ÑgÐp¨}<ý#l»œ¹¹Ü pn4FŸ­/]}ié"‡A•®5¤Íˆ>Ó¹®¤oAr¨¥H¯¶ìPì±1ÅõÕÓÍ©7zø[žî°^ÔF"1¸Á†òÑ#Ú¢CábÒ ÞYm”î9d õ™<�:ÔD¢VMð^#]bLÛñŒ3d~¬ÍJ0™–üDV(@d9�®$;—’ÛF½çÉïë®Â;£8àÐyF­Á�Q±wT32¶!Á±²C˜Ñ;ióÈÉf„†Xlƃ­æg�œHl%hçÆ|³Xðqf£ƒîù Fu†pÐÕußÍAÇĽk`¤ÖÚôä× ØwWÍtoHË6fœ9$¼p7DcyËL³áŒ¹^PÈl�W,ÛU½·VÛ+š Ô[¨Œ†÷ 5Ãm'òÞ�ssÐ}óÇx57ñVðH(@,'ÈIÕ®¨š[ #Ë£¬HåKÉ.cYšVgi˜á)|ëî)H³l#GíÚ¾A®÷Özî7†í¿žDûúcüë�“Ú~ãOþÉ߸rįúþz}§»øé޾_}w¸½ý­oµ?ôþ¡æˆñ Lè0—©Õ‹­ NÎ-(=§ø�°N¶ƒJú íûj*�áH´â˜Ä1øZÁ˜&ˆ5Mµ‘�7‘�ò”#©§EÍI�ó¯4¼=:»él´:Ï3SpEáE½ÜyvnÕpx-Žåh6Uº5¾¹�†’ÖŽlÐÐ@d-6”Õ>Ø+ÓuË!¹ lî¼öê?>Ô¾ûý¯>óÏÏ×ÛÀÛ�ÿö »óÒ=ÑF¤õ‰¼×F¼~ð³ŸbËÃik lä1¬ °¯:zÚ�‡´ëé= hI Z¡éDÐõAìk�¥qIëÚZ®î¼Ÿ•Ïã{­ ƒgõ†£mGgô©r<8þÚˆÈÿñH�HÅ;ó$2Û7¬83,A1DŽÓ4jXÚÈb̶’ðɽ–MÓ ’Ù×ÄÕv€ë¿Çš�‚Pj©í!ÈÌ¥i¹k¥>ü­xË;^ÃtÈBÀ]н´ÕÎR$øS*Z�§åE]—DO/0�™5s($^£e¹®²6J†ž¥ÑnÒà΄—¶oÖ�iùaÅzÔúƤ‰k»Ý¸ï¼Æ_õúþÎ÷_�Àóõ×ð—^×—�±~÷^Á'(<ïGе)ö-d&n‰vƒÆ0ã(^d§V‘í@íè 70¶3�}s÷ˆ¾”农.¢¾òOåø!°ÆU/îHÔ¬æ{ÜBfe«2Z2ß*x;#˜æÌ‘^'Ø#{Ù5òC7s`„lKa¦¾r@¯¶‡É‹ xÙ\Ô�o^gö“½Ÿ‰’Z³:�¨YžÁ¢ø…òËÑúl™ƒu>=Hú#_|úÕ÷^~þâ·_>òÊÜ{ýž|ïèæ½û �! Ïï�Ëb-·,s$š´Ipƒ”ãs&�\�Ö]âFº¡±Lj�qž6O° 7�§´&βWØiè±MÖôZˆ½v—³x¡«R—ä&æ ¾-?BtGñ¶eã|Z×ûÎuÀ4Ë> 0Ös¨÷Ù½ˆyÏ(fhœ™6Ì:¥™Ò6bkµöй3ÏÒ>oVÏŽ˜¥u’®ùû¨½%"¬ÝP²wÝMat¬)DÒ{ÌÖ©§Ø b)I59ÿ_½®ï^—/¾x|DÜw]æ'ô^lýwÞýàÙ'� %æ‚æ£Øè»LvV“ɵ;�¬ÚQMJ¯%)ßu�gë«ê޶¥�¹çÌ‚®f¥tbߪ¤im‚“¼8&[ç•zN¶£•£ßêX§wß'öÙÕ¡–g²(tXsÜØåƒ{Nò£z6:”Ûµ€ñm¸ß̓I­ 0Ô˜âŠÇ5±Ë ³˜®êƒ¦miy?ÔöšŒojN}ùºÝKï½tOÂyôΣÏï•cè“ÛBBÕ(Üâ íbIÝ’†;¬>»²! T<�RÜ‚a*èë¬6�,¸':zêàf!ž0Ž´6$öä~ù\ÇRZ:Š8nËœìÒ'#É¾ÆØÖ¬o"ÑX|Hã¤4X®7,¯ÓróØPšöår¹�´faß”iݨAjup®à:CV¨¤žÁà|Cë™ÁòunÄ?ò;¯^ÿv½þâÕ«Oo_¸{/Ü^”÷%ö!$þ…óÁ ­Â¹F‚ekkshÊ[LZìiRà|HcòI�vð$í<åD_"%§g4Ã5¤%‹Žìµ™GìmBã@²uúéiôIoív8yïQÅÍ ÷W¾;køòÍË/_½~ñÛõ£Gc¤{¯à£7oÜ\ýÇó¼úOˆ°£z÷ˆ%M :¥À"¸‹Í›jN¡]"¥ˆQmÄÚ:Æ�’ÕQ2a(³÷g�qœ÷¥,vôeuYdn3„cö­†!iìÔ#2ÆÏá›wï|b€Ùß»ü¿ýó³{óœy1mÐE†AÙbI1çˆ ¿Ãp,+'„j'Pù&ø�ûžÈî85fïápÍĉ~h®fžt’Ð&jÜH}“feÈ8ÏZ~Vq>jw¢ZÖ‘æ$$— –iM¸6‰+µï¾ŒÚ™ºf È-I$-X_8eÈèã¬>ûbl"8Ï z–Þ!ÃègàœF]v8‰w×y4¹Ïñt/á×Þ©—¿_Ÿ~Q�‘÷^Ã'Oý¦ñô!¼Ÿ÷îôü¢ñôÁOßBò/Ü¢ó€-2·Šö©«åœYVÛ±§xÆ{bȈy ’O«änÎŒyâò¶¦su$²fNø�ØÛ‚šÕãtÚöê\´r$[^t[Euš ZX�á çkô·~{~}µ^Ь­Ó�€Üœ³Y%jZIJ#|�—{ƒ@]`3mÒ5ú°ÈCÝ E!�/ |.í~X-¿E ä÷_ýöËí�išw^¶'¡bã*ö3—NРõ ­ipðlÖ.BèŠ}šm*lé¡4]¬u7@àjZcµÅÞŸà®n*ç,µ6hóšûúk ”�³ð|¸ùwœ6«�H«3þ¶oÁã¨èuu%ÇÞ.ªp‘Ý‘ê´Ë` #†éA½b`Çíµ2ƒ šÐð³û)v†ˆ¹‘Û™­q³�Õ¡$ö³Œ/ÛÊÖ*‚LвtÛ©iÜMauðÑ›ž5ÒvE'BæÍ^»%népÜ/ødñšÁÉ»zÐç5Z³ZÁG.�#XpCÅE±…Ñ[ƒ½‚{3\]×Ы§?½3~ôöO¯ódêΫ÷ĵaÜ\Æy÷µü*?æÔêX?HŸdÑ^RAÙ!®nÐ/­“à»þ°#�ÍZãÕ°@K3tÄ13äB€ºW—Ä”Çét,Ú5BÚ8Û͹#o_“{?ÎÍÞø—û~øT‹ßæ„¡±�9L<ÐÙn•GiKªÈ¸ˆÔBÈÓÒÍa˜‚_4E¡[î»�.~yàŠÒj Oò,´Z6h=hÂ/„²müî¥âuÔê÷$AoÎ…í¼&6Žt[ÝåmʾҜ]m7®™-Z€à¾ÛX± ŽAH˜D"”2¼r*\‹\£´ `­†T鄎wêæ#ÏZuÂÉt"X\;÷ÃYûeæšnËøZ[(\¢SÎÚWT�¸É˜jRxRGßÈ/³ìcdïdµ1W×¶B7°GÿÇž¸'í³F�žC³ÀŠÆÿÇ,&ŽÅš±ìáïÀS8\09ÝsÈNlì{fZôÝ–oD¸M^à$½—0Bls© •8}l >b³GÅÞç äsë¥EG:'Dô}Áç íÐØé³íY·âÅ{?έÞíå÷>º*~Ž¥¯-üÀÀ'‡« Aß«”�jdè"–¼Rx1q |"p$+Œäæhó‚�V€Ô*‡;鮿}zÛ_Ô�Fñe¤\¶:²Éߟ_ñ�3˜ˆ¤ººÈ2ºµ.:ï)ƒØ¢çè¼|ß©,Ùóú«[(Çn”%§ú8lrõfÜ é9|ÿ‡îÉ ¹ÓØË§H»YÒeÅÙ�XÇ€øñÖüÝ(Ï„ÊÓ�ñl¬¹á+ ÷€c¤Ó€M³„{ÂÕÖ ¦5D°…£âã\’-¥Íx䀌î0æf§lÍØ�Q‚¥X ÚKDi-ÏÃßó-ÈЗNáIYÓÇÎ#nhÓÔÜ»ŒÑöV}ï•S;­Ð±/²ä9Û�bj¾¦€u°•m�Ð>!“kˆHÖ¸¢œÌ:WMÙÛW©�KY-y¬Û¯ß½¯º�ýC_<¡´¹÷¢=1¢[ˆÑ‡IåŒ@œÉ•ÞÔmçæª"]?áS1è%6t9Öˆ …“eth èÔn2wøfÑ67—H÷ÚÇ—$¢gß° 6í^?Ãjnác�‡¿÷ãg0(~øûð— M¨G×®c­Ó¤‘‹·¹‹™Øf¾ýW;’Û0EKgba›Ì/´´]\²’:Û„zGw$�¸Å&¤0 5 Ë 6¼SëáùØ'Gà¿è§Bï£pyå ¿,,q0Ý@*@ª€Ü!+éÌ­-¤LÒQGÐñ¼òÃCFœÖ`ÁTjS ~öœÇ*!£3‰AZ«ÂøQ«ðÞ›ìíùûºÞ¼úô‡õâ¼~õÙ##Ø�—îç5Ÿe ÛdƒaºÝí¡jikê §3jÜ9uí†LÛ¦¤Áƒ×Žî{WÉÑÈpŒ¼ûÖ}8y¨=8F©VüÙh;z£Ýº´8 ŸÔlûöR|ï¯õmŸÃóÕëÏ_üàÍ#vÞ½×í <é¸ iß’¦;CÛ[vÃ#ŠÑцžñ—¶#ˆrtÄ&½·KŒ}­…‚PÓMl},ËIÈ=)OÄj^¹Y×9ìŒÅ³ÜG¶ÒºÜûqžTÿÒõîÔ&¡ :û\"¿þÿÚ§Lë0Ïú¯¼ó¬_¿óÿ«e�ÚÒ†,‹@ÇìØ÷6<— »ÖÎðÅg?�†f÷esª€’®PÎ!Oh�8}J1M­'~A]\€R÷Y¨*Ð�ä÷ÜIçÈ=Ë—æ6×ëÎkö覢kþäMåÝžO‘òõJ~/?ûV¾K÷²f¸6nAë¶qìÐ~$cÈ”ôîè tÅQTœ}ƒw5hâs²_W×1zˆ¬™ÖŽ[È\>Ï<Ý£�F± Ÿ4˜;»w]"ã¶R¾÷�è ž½÷ þ¼Ì„ ŠflÓ¦¡©‡A™OFteCÃNfoC!ËKokjèk«ÒöŠj(«¦æ@ÓB¢†–à•,‰ nôäÝBÀ±0±9F Et½EÔÝ»wóæýêþº>ÿòÅg¯öWŸ>ѼóÚ=銢WÔ‡pkÏ3è TDÿ8‡l² [AŠÔ�Û\ÜPÔû•I 8Xw�>†è¡päbO x†•WB¦05_�x�dsrƒ “S ÿ· wëKÏ[ãoµa”b¢ç#%ôÙ^Ò1¦™[¥•Mñ 7Ìm1ÄQ†Ú)�Ç–<ùððÕ[{O—Ž¡\L@/„†«IC5‚vb¿-ï½Æ�³Š?ýôÍË/ëÑN{ïu{b4@7£�g§¨,¶O›9i@¤5Ÿ1Ø™rñ>ÈBêjžv%›òVùÝìØAŽ!ˆ?5Oðæ=È-¡%u˜“N÷�>UwÙéË¥qËG­‰ç¬<¿ÕVÞy垢"É{•æ»üì;í¡.PMtü·7Yg:À'EKŸc^iH)f !=¢¢W�“3ö˜�‡l8-80cÜ46T£Ÿ†Å±‘{³�–1tr0ûÊm[þ�oa§GúZÍd�`ó´…`lFLùnÝÓ}û¶=ÍtTm§¹Ïqð„ûÞ‡øD‚¼0?]ì!cuÕÞ¥ÛBÆÔªE£®&˜…r§ ZÍm·Âº‚Ϙd; ŠE-Õdpbë°pk5Š@˜nÓ�|J£O—C`R¹,®ê±©B<à[hÕ'^Ÿ.ǤO‚`Éz®kt¿íüéë¯^¤ç÷½÷÷^·Ç³ ú¤ÿ¤ ö;ï~ðìöZw0À`t“ž¸JÃÍì q-ú mìM`wBLÉÑ#üX-„³sætÂÍØ+¶ T¦v„rQw-.k€ð¯{h„ª ËžÎ·ºgœjvë»óÂ=‘ÚCïõ�ßþùCÈØM�*eËw‡QÍʺ%�¦8iOsï‹ÊmÏÞŠ¤åŠTAñl{ìÃVH’NÑàµK&ÈäˆÆžYŒ% jEŽ@ͳàµ?ÀM¹5 Þûqnß¼ïRv÷ ñßÂ{lÔ#'FQvt |ÿj–Ù]ŽšB˜ç„2y@�L¹. KñŠkŽåÔ–wÕâ>§ûžÅ>á¶$ðÏLŒÏw®DqLéù¾hýBú6\`Z›ú©˜mëð.zVaб[KiGVÓ%IÑÎîc啲Å�-6öZŽÄ,b£ÍÃ'èuZ—¡mP«u¬£˜¢aã@Û%%·Ó~Loßý`« .¤�Æcõ±&Ïuaž4À^óh˜ EW,–œA mu×q€~��„],&m¦Bç¾B¥¥ó2‚£/*Æô¹Û›ôv|ù®)ó¶Š»­Øî¼tO„Ï÷îoÿüäC3¯§êãäZ‚ö¹GeœGtÏÙ*�k)9É­Ë$ÚHY»š°z2ºõÑ�4œf—´DfãÝ9×PÐΓ¯0ÒÔnŒIP¢C'nUê�£L­�;|�¹äTô€Ä üj‚t�9Ün`Ü}unÛœbk%Õžš¬iÒt'?mp2ŸÈDô$´¼Øš�!ìÐ:žzøÝoA>D-t¡ï ”Q_uiv ¥Äv»bÜAç1”í[æDQ–sqaøT‹{ÉßSâ$f�ç3wt¿r¥ã „´÷·YÌU…cÜû“¾­ëÍëʯ^¿yÜ•ºóº=™žÒnÒS>È]éÎoýÍ rïǹ=ÂArr,ú“Nn¦ísõ};¢Ñd41ì•4l”¶PÇE`¡wnÚá�}¨³TÊr ´kc0sÉó¹Õ9©k;½G![|ö­yfÉY ZÈ~Ò³óm¹ºiÅœŒ4^¥h@Wqó ¼4N9¯ãàSÀÖµo×cgÖZÙዞíBñuí«È¾<2r3Og•nU´&tÔÚZ8‚!{o¹½ü|Hï½hOIç­ñÃß÷´>ü™ç Aü9œþ=iÓŠ~¡Ûg;+ô,^[{ƒø5Çœ¹ ˆTlcF·ÝúÑ­{‡&½üP>á—EñIÇp…µ��Ûp¢¦�´ „.ÂBÁ�/?-UÞßÑ.TÎ¥G¹·ìáû”�ë f¨Çaž+Ñf1Œœÿ²lVë19páBx�HŒ WžXÜP ‡ÒÍÛxR{Ýžß|ù£OOOî½r�ª³õI�ðöÏÏ®£w5–çÀm—-ª•ÒÆv­)é;sLæ)Y>]ÔEøÀÊ£Û¢Eíö¹û&¨Õ`}ji‰(±kÄì©ð,à\»‚ËÓ’æƒû-=¶‘Ž#ÒhL¼öì¾Ñß•&£mqÈñz5¶4£1ÚžZF½!ahyÌ>e27 qÎf@,ñFR ÷éŽôáͲ[·½§Â­}Vumµ�nýþ÷ǾW_¾(óå óÒ?ñ;/÷—�<=÷^Â'ÆÕï_ÊéCœêßÂànUŠ.±‡ –Z„ TK±(û² lÜc·V>‡.Ví¥Íä[ÒÍÖ�<¡âø˜ßê:[?°ÊŸ¶°�¹ìÅ�µ­>LÔП¹=žïm(¿µ-þàÍ‹ùg�ž÷^µ'®¡tC³û0yÈcÂ'*KI}Ù¢ôÚl¾ qƒ5ev6µSl;sš]ÕdÚ@©„y¹�E_¢£+Ú4( ²N*E 5Á‡Þ5…&hÁ[ŽÜj·îý8·°(ý½/üéKh ´&Z�5³ÎÉx @î¦gˆÛ~ž„ÆÙäH”\ä½E'\¸#{U µpÉpj'G8Ú™²aB±R”¨<¶F¤ `ÔÍ%´ð>òï}7~ ‚¿wøäoÞ©þΦ5a–}2܆Oa¤R g  £¼D<é^¾\·É€ôÛTeƒ9ßΰ[�Ë:ÑÍÝûHÁüÁ’éñA¦›Çä,Ûòm¼‡k÷G Œ;ÏžŸ”�ÿòåà“߯Ïü‘IæÎë÷è¢ Á2ñO\TßýàÙiÕKÜ+V•ϹçŠó ¹ € B_„®6ž$ˆ¯™ø¦-RDt:’•öYg�ÕPÞ¨© ›k@ˆ¤¢š­u_Û0: üƒíÃsm~Äâ¿sÔ7Et=%F¹÷Ò=%F±Ÿ<ؾóîÏî¥k²fž…Ã^ç^\(Gø,ÐØlHŠfŽ�ÐéuºíIsÏ ä%¬ŒX´”95+¶+Qk,Ôf›«ƒ�µ¸í3F€@d»WŸ«X†4³}…~ïÞÏïKdï5{JdÏ·"{~VUû7ŠìÁœÒý”"ÏÜ1bDw †×tfs|ÌV¦c$m+^³Ó’ˆ†þÈKž‘ì›8¡[¬¾²‹ÄÃAù�­áV†tgˆäm¡öº|ï—¯ŽÜyÙž,äûM!ÿ ãF2À'ã@bDe³ ܽÕZðVöÞ oCwÌî‹çXg¿ºÏØPGøä¼Öªl˜í…$5· nêX<Ñ£�q¢iOupÿšïG¦ÂIŽéÍ5Y -W¶­Ü­¨l´ã§%4�~méÉlSÇ®¬�èiÌñðÄA 6"õî• ¾µ¾Í YV7¢¡Vâ—ÛÓzÏ_}?¨üò ¼{/á£W¯B?™†ùKoÿüü^½l6ñ«0h?�”�6'ËÖhÄ0á5RfÀþÂr±m°‹šR ‹Bß‘½ôîGÍuû÷%iÙ›‚O[ªA”ÒwO¡ƒ¦l±Þöm{ví5•ÅÏL%@Ó“ªšpž\}a»¸Äk5Èw+%‘H\]…“UæÏƒ û¸úG‡•™[Ú6Dù2í] [ÁÔqFƒ¼(kÎGɽìM½~韾üõâþC{)}ôêÝy ŸèÓ¶÷v½·þÙÛŽæÉ^ˆ»hÓ ýl©±€k#�X®õhA/=\Šk?¡²ØcNnÜúr[mclm•S­ÅØÖÑXÄ{K·…hB­¶UŒÓ'@&Ї‹o}ø¿Åq °ÑL^™ 1‰£lב¹uvKr®*·h£’¶öÈÅ…K%Ò?N¯8¾fxƒÄ±Õ„K§ B�}—÷¸<Î<ü„…õëí¸÷ßÎ'^ûçûÕgñ£'Ü÷^¹'·Üv³å~åVÓÐST§û´ðÞ–òÚ2ñ�ËÂæ™H|†…0Óí!Ð)vò6jd˜'&O¤nzVy ñPÎÙ¶ š¦Iâ£1¥_h¾‡èÛPÚO¥Tw‹3 Çb9Muøn†„☫‹h‹c…aÜËZG %¡uY5zfDcfID›J­a|Œg^Â'–Œjyq a¸‹éVïpï5¾}ïßø©ñÕ9õˆ]ï•{€ñ~ø ?Ïð•ë*rüÔ²•l£ àˆk7²¶wAøkÍÚŽ•„æb.œ”«¤'Yfu„@„a�ÖJÏ¢-êØ £Bl{#6 !œ2×Àø~z½ÉòptVtI_“![ÐÝASÕ½¨ª·•‡‘¬k$Çh¨÷:“¦´Z¤tdx6(˜ûª@½ aöá»®vT 'vÚ$€k‘%Š�xÄÎߣƿ|ãž_7’~-üSÿ¦Ì¥¡ ÜUt[ß &’^Ü^Òœu6²‘v4˜w'²*”ŽëèÈGdF…÷4\Z!ÍÒ\Ô3p»ÛÝ›ÙzÛPÚ_}ï±2û¾kö“ïÚŸþË~øòõ—_ù§¿E¶tb¬³—� �<Œ –Ö˜F“Çñ+rDéÔÎVá:pá­t4_¸~?›H/ú�£(DÖhZyþå×üsç9­cê™þÇß¾õó&-ä­ÁÙ}pî‘|R÷½ÜI›ý”ó`ü° eä+gÙ X‹Ú‚�k«mïm��ß”‰ÆßØ´´bN v£ŽcPÅ�-ò­cÑÚ±þ“_Ç%Ìâì„4Ç:8éŒv¤§@_ßÏ^KçŠÎ€ƒm8B2Äνw°Ñ�™Sæ1Ó0q =†u@ä0�$#€Hi.4rÙ…¤Ÿê£'5â—³!@�'|ðHžªlº¦örSón‰�Qjñh‡frÃØ÷ ìÝÆs�åšEG*àÞs>G›¹ðV!üïì½5Ä¥ ÃQy[DŽZsÒÃ_x ôŸþúOÉ·ùµ7_}„ë›ùêÓW¯þó_ÿÍ¿êòææù/ðW¿ÏI“ÌãPiŒ•«9[¢z¦.ż–¥œîkÂïÛ×ÃiÌ6-;íØ ¹M Þ¡aYˆO��¯†·z�v!jÚ*†^mõi,³ßöâ³V£ÃQ�”7íg �‰èº@8T/DHLU¨©‰uݾ7²�öÆ ÃPÙx#)ÓŽ"9”úF– qrQ4´�ÆØ‹dS·9Žì1Á³uþ¡ÔÇ€´û.ØOûã}s6ês ¬{=C¦ñ©2¹†T|DLr:SÆÞŒ¥œÁ5ËÛ*)HpW †Š›«h uE„$Ÿsd[Ö�«z"ÍL‚q4Wã?þcBè¸%„~ˆ�S$€@6ÄBêÉžn&�rtÃi; —Üø."ú‚x¯Âεx ˆd "�áA!XsıòêCz—}¦ì5‰Ý Á%äµúIÈTÚxø/¿‹[L›„ߘÁ·êã Ô5{’x )c£«“m[zz‹6uq·=M¸áf!îpJÌáCæ€çbª¼®mgï`¼v¸ìÓ�D̤I?;þ+<)òºy陣å‚ó“v âÒð>ÙFfÈŒ5ô° 2³YË…Û×DHùDÀšS¡Eåg6 šh¸é¬T°ì¢Ö¹[1þ´dD’>üE<…×*î Lo™˜¯N[q¸X9Ôa@ÎN5;fð ̵vhÃÛ ^�¾Fn¯%$p‡�–^{Á� Ígú,2Û¥(‡å�)’›Æâìýá/]ŸÈ\Y˜çJkm–°Ò’ÒéÐ)‡,:Gq÷”“[@'Ä«�ȶ5÷©B”ˆ!'ÂôÛ›5ÝÑù@øXú,ä �Ãy¶ªtç‡ÿú»—«—�òßàôî­I576!t5u(�*„8Í1Ä*8/ž€»ŒË"”cÒ¦�ƒž0ã^{k*t þ,lhcCÉÓòÔÉ6æœ[ò¾y>ü7×'ÂV Â{³®IÊ‹c%!Šo:µ„›of_Òª¼C)|C÷F|ŠøÒžÃúÔÁl‹6ˆÃ¸2U”£/ ûìØ96úN›Ô�ãvd<ü·x Ʌ窞V™^ª²°™!û/¶F>>l-ÜHtäèÀz_ ³|Cz�x­¹ÕíTýÚµôèÖÀÁº‡X²cV´lÓÍ-‘(2ýá¿ÃSÔÚ¼¨š—¼Ê»�8-ÏÎ ¾'pxôìf\{BÒ6 ×T�^D€#V;a&†SofáÌzùr–ŽÞ�Ó;Û˜ÝÈåx¢J¡Ù’ Ÿ¯‚'_‘ÊÛwu”6öð?^OÑ+ÛæKtÚ(üøsÚe�ñ+ûô\=ϱ ¯îÜ"øýJ—$Ëâ‹9¢°k\É;AKZII\~ñ‹ÙZ´ÑÔHzø¾û[õÓõº˜„ki_=�2œà©í4€˜ö\Pnût„¿Nõé{t›ª-RCíÎü¼/:2›;#vÌ$·‘Z»®;Òò¦k©ã�©ùÃÿôñU–?‘m üXd—•{(pÙ‹ºs4(´´š‚s/1”íŒã Òµ¶Ù[XÆÚ“ {;¦NHUÀEŠ. õC%«÷æ­M´À yøŸ?þ)뽿æ³WŸ¿Jýå‹|õÃzíß«¯ë*óþ—�ó7Þ•~ßü/ý¯]^Î5 Oý==d¨G.À�¬4`WÒ‰¯b·eGzOvA]ëa�À –±z¯žH½€[?‚ÐIñÝЉÒ»Tµ¬‘¬51QLuš>ºOÛXcÒáZ˜8;,Ä5|g´{éè¼ð)æqU§ÙÑÓ馎=K�Œì,ÛY¸+´ióDi^q{£­Â¥ºÒ” ‡Ï™ÕŒgZÒoó9þh~ß_¾ð7/¾xýê³—oj?Ýwùž¾Z?‹Qo†Wú�†W ñ¥”­1é ÊÀÞøRëF Z?2 ü5MÁ©Ø�®€q�ÇäÈŒ�Æ\‡�J:ÁI‘l{i;Ùœ’‘4šWœ¤#uDö<Ý÷xø�±ÕN^Ç£ÈÆÓ â�„]*P�®!¶ÅoË.çL«ÑöJPU/ÙµÔ…9¨¢©ÐJ3_8€e­ZưÏõ‘–é3ë(|UY •ùÃöÝoºZ{Ñm 5IÑVßÕÛa’q*�Vãm¸D®eg´Ø£B›WÖxö6ÂZß±·"kÿ”6[±£îÆ@ýèœèd�¡+¹­mg_ʺíœÇþìÇÏácús?íVûËï6S|çþüÇ7¸ØÓV ¡‹k;ÆÌYÁJß…tï³”}�Í[!† óÙW ãÉ2[œS ‚Z;.¾*-t )åÁ„äeŒ×jð2Y_‚ÁƒfÏGÁ2LŒ_”˜ë|A‰‡ƒlæ52Ûlù¢*Äw Þ‹„QÊ i ÇRŽXLp#3P5AÐíÀ¹¶lWõÞZáXk2j¦·Ð‹à M”Û1Ë× �[µî�íß í“ñ¾„óÝ~ö r�ÎÅlG6,9Tš)mgFhí¡scÚ«}Þ Í=¤�dë$ ­£ö–„§gîÖúð®»¡ì…±—ô=K˜»O›A,%P ž‡â#œäî*,éÀø0©)½uÙW˜i¢íguòì ‹Û¾jghîV)ðl†92éµh¢‰WÍàZŸ—¹Å0LX6»ìå}4�jóìÚ¶é|ø'¯§è1u¤ùk5Y>v¹W*ÞBÀP×l1÷š� ÀCNu°"ƒ1aé㬎p¤hfu‰†Ü¥ÃÞLWíÂEžŒ'ñî ¶÷9þ©�žwïáŸþè¤+?ü3×SÄáΗ°¬lC½D´$ÕŒÕvLíD õs&^Ø1c—Ä(ɺÙeãŽÐ½FÂMÏiÆPr4ëÒMÉ*f/¤hÕPÛÖ¶ÛÃ?‹§€Â7Ι#%Ó‹µôìeȤºæ2ð¬VNÂL}å¼=’‹…Ï ¥¹¨_ý™3ûÉÞ‘‚(¬Ö¬N'j–g` �$Œy?lãN¡ãÐl"'bœ¹g¶}TjÞP‡ƒc±yŒû p|Åš&×”ˆ C‰® Ù—¡ù#R“z؆Õûá_úè\?üË×7ÕðM2 Þ†vaqœ‡§ ²‰˜�pÿ¸�É-q¼ƒÎ4ÎAû"hn³çÌmØù+úB=rÐG0³NêQÂg]"¤ÎŒ Uîšùð¯à)ÐFíŠ]ƒH¼ Óx´Út‹³eZØ¥`�š 6ÒÊŽí£õîÉ™} zoØ{pÝ0„Ù›–ÁŽBÚ¯®›UðÌi(°rì‡õí'BgÒvB8ÞQÍ;±OÕ¹$0`È6Ð^&…Ö~TÎ�m��˜Å�ÎÁá�ÍÖ]œYfn ƒ%f ²‘ÒŸ·è”‹&‰ÐÜ�±~÷Wžìá_ûè°"þõ�žWåá߸öÎ1EbñÙ×Vo§MOŠ!B ØÐSdÓÅ•WoLrzç ÊE³M®f ¯�í\Ö6ønSEW›k› 9V®}j£S1—ÑÙÓxFúÿy­EyÖòhŠáÂñ�·w7ðM“§I‚õ©6£¶ ˜´/Ìéñµc^J•cÐÎ4vñ|‚`* ݨ Þ ±E–‡Á�ÞKH?Þ.ÿž"WkÙÓQ £r çêÅ0wΕE2à/ §nìâ†*á!=cÖ2z¬ËCß ø7F@K&n­™ËàkÚ¯˜qRµËK¶>üÛoׂªpÔVIH+A�0‚ƒUç)�›¨VÚjî5&\(áŒÖµÙ@ÿ�D²Ïsª_gŒ!@ ¿“ôàöºŒõlä©RV·öðï|ô&7æW.³d5N%œY+øêî–f-1g¤À¤upG°öRPó“¢7fŽœ)£ÝF×ü¬í…š3 >N:×:^½u:ÆuO÷жb<ü»=ƒPû‡ïíif¸lâšÃ‹¤Áz2xM™<Ñ•;E]a2?«õ œ¤sì­['\­’›§ x 6—ÎôQÇ«–EK�øäJ¾‡ù S Ù›å¨>üû×Zp6FÔ=õ‚Øu3þ�±x)!×É H’‘ìMù £f[æ)¨!Dl™$òžsFÉ4§Çªˆ“4©õ>¹‘ÅØ² F7•âZçáÏâ)bAN?²U Y‰7qå„UlÈFüÅ9xÉ ÜãŽ"´å'®óó¬òæ '�úŒÅC)$CI�ݤV&åŒXw\Îç€(ýÑ)fëáÏ]ç§^jâ KåRô~6 ÈVúÚšFðˆ�uP½¶‹$K÷´yjש=vNÜ�ÚSb4$Ø"HpΞ³-²1³[ÌÿÁGÏ –þá?ÄSœ9âHx嫹.°"thF\üd Gµ£º‡BÖ¸!G%ÃÁ2=ìBH(Ǧ8Wé?hiÛˆ¢æÙ$µ¾ïJ¼æœ>áÁjƒ’Îß¿ž"Ï&Í18Ù=¸|ÁsKfŒ·EBLbÏÝ Üžä!çèjœUL}pÁr2&Ü.#‚ªu\:m‚Ú*Y“pÅ”p4¥a²F<üGWÅ7zIo¾6nÁ¹hh–jKÝ7'ŽÓ\ÈÛ@ ÂÚ€-3Ôth#áÛ˜ÅZ÷i/}¥´ÚŒíX8¯¡Ù½N”ÑC¶#Û…]—ÐÃ?þñ3Pö!�ýoü†è:MŒ±ÉëÌvˆ«ï‰¯ wÅ1…>l«d­ÄÄ�úžàßC´´6¦ösÎu`)�Î^ļ »YîN‹"3ùÚ»šI‹ (è‚à4ô¼Âxð⡲*«²Ê£‚/à½!ë'±wfv§çàÙ»x…õ!ô1|ˆ<‰‚^x>YÞÒóùëòyžÏß–[žÏU«]:¨  .¦ê­ª…¢dÒ@\–&J¨l4­^ ´€˜NÝ©cØ& wžV¿°¨.±æL‘bõœ}¦6zƒºÝM™Æè’ïl7îÜç¶ûâš»(þÍ­¥w²9VŸî^ÎÛƒrÞÕãÃ}8 oSƺúñpKR/² U½™Kj‹)uh²S|§w%‘+âÁØÀ$Èä;j†SD#øY®up5D³ƒÕhÕ®>ˆjt5v[jö0‚³'�>[êp;n§%Ü D5÷™í¾˜2ÔdŸI„é ü,¥�’RÚ%Ûp«vﻵJ“sÖ,o:1ÜûZH‹ÁD‹¹Ý5jÕR‰Šêø:™â(áÅö7ˆ*n!ª[çpí¢úþõ½ET_/öQ}³¸%¢úvñ~àwŽ£ZÀ’� ¾/�èê÷å>|L¼(ƒ¶¸º6/Ÿ÷՟˧ïÍw>{õhyrÖŽß_ŸŒ÷>íøüât‚V€äSFžúZ vø\Bž8g)”D Èg˜hP,É.9î5 {_œBºãÊ. ÌuÔŸ}p&¸[s3ÉqPРXN ÷ÆNG‹óãõÇ£¿{±>éço½ýÊÑò|söÑÕ?>Øèfà ¼ñÇ,/¾ lreplace-in-file-main/.yarnrc.yml000066400000000000000000000000311511441262100170220ustar00rootroot00000000000000nodeLinker: node-modules replace-in-file-main/CHANGELOG.md000066400000000000000000000064111511441262100165440ustar00rootroot00000000000000## 8.0.0 The package has been converted to an ES module and now requires Node 18 or higher. If you need support for Node 16 or below, please use version 7.x.x. ### Breaking changes - Package has been converted to an ES module - No longer providing a default export. Use the named exports `replaceInFile` or `replaceInFileSync` instead. - The `replace.sync` syntax is no longer available. Use the named export `replaceInFileSync` instead. - The callback API has been removed for asynchronous replacements. Please use promises or `async/await` instead. - Configuration files provided to the CLI using the `--configFile` flag can now only be JSON. - To use a custom `fs` implementation, you must now specify `fs` config parameter for the async API, and `fsSync` for the sync API. For the asynchronous APIs, the provided `fs` must provide the `readFile` and `writeFile` methods. For the synchronous APIs, the provided `fsSync` must provide the `readFileSync` and `writeFileSync` methods. - If a `cwd` parameter is provided, it will no longer be prefixed to each path using basic string concatenation, but rather uses `path.join()` to ensure correct path concatenation. ### New features - The `isRegex` flag is no longer required. - You can now specify a `getTargetFile` config param to modify the target file for saving the new file contents to. For example: ```js const options = { files: 'path/to/files/*.html', getTargetFile: source => `new/path/${source}`, from: 'foo', to: 'bar', } ``` ## 7.0.0 Strings provided to the `from` value are now escaped for regex matching when counting of matches is enabled. This is unlikely to result in any breaking changes, but as a precaution the major version has been bumped. ## 6.0.0 From version 6.0.0 onwards, replace in file requires Node 10 or higher. If you need support for Node 8, please use version 5.x.x. ## 5.0.0 From version 5.0.0 onwards, replace in file requires Node 8 or higher. If you need support for Node 6, please use version 4.x.x. ## 4.0.0 ### Breaking changes The return value is now a results array instead of an array with changed files. The new results array includes each file that was processed, with a flag to indicate whether or not the file was changed, and optionally information about the number of matches and replacements that were made. See the readme for more details. To update existing code and obtain an array of changed files again, simply convert the results array as follows: ```js const results = await replace(options); const changedFiles = results .filter(result => result.hasChanged) .map(result => result.file); ``` ### New features - Added `countMatches` flag to count the number of matches and replacements per file [#38](https://github.com/adamreisnz/replace-in-file/issues/38), [#42](https://github.com/adamreisnz/replace-in-file/issues/42), [#61](https://github.com/adamreisnz/replace-in-file/issues/61) - Added `--quiet` flag for CLI to suppress success output [#63](https://github.com/adamreisnz/replace-in-file/issues/63) - Added `cwd` configuration parameter for network drive replacements [#56](https://github.com/adamreisnz/replace-in-file/issues/56) ## 3.0.0 ### Breaking changes From version 3.0.0 onwards, replace in file requires Node 6 or higher. If you need support for Node 4 or 5, please use version 2.x.x. replace-in-file-main/README.md000066400000000000000000000402111511441262100162060ustar00rootroot00000000000000# Replace in file [![npm version](https://img.shields.io/npm/v/replace-in-file.svg)](https://www.npmjs.com/package/replace-in-file) [![coverage status](https://coveralls.io/repos/github/adamreisnz/replace-in-file/badge.svg?branch=master)](https://coveralls.io/github/adamreisnz/replace-in-file?branch=master) [![github issues](https://img.shields.io/github/issues/adamreisnz/replace-in-file.svg)](https://github.com/adamreisnz/replace-in-file/issues) A simple utility to quickly replace text in one or more files or globs. Works synchronously or asynchronously with either promises or callbacks. Make a single replacement or multiple replacements at once. ## Index - [Installation](#installation) - [Basic usage](#basic-usage) - [Asynchronous replacement](#asynchronous-replacement) - [Synchronous replacement](#synchronous-replacement) - [Return value](#return-value) - [Counting matches and replacements](#counting-matches-and-replacements) - [Advanced usage](#advanced-usage) - [Replace a single file or glob](#replace-a-single-file-or-glob) - [Replace multiple files or globs](#replace-multiple-files-or-globs) - [Replace first occurrence only](#replace-first-occurrence-only) - [Replace all occurrences](#replace-all-occurrences) - [Multiple values with the same replacement](#multiple-values-with-the-same-replacement) - [Custom regular expressions](#custom-regular-expressions) - [Multiple values with different replacements](#multiple-values-with-different-replacements) - [Multiple replacements with different options](#multiple-replacements-with-different-options) - [Using callbacks for `from`](#using-callbacks-for-from) - [Using callbacks for `to`](#using-callbacks-for-to) - [Saving to a different file](#saving-to-a-different-file) - [Ignore a single file or glob](#ignore-a-single-file-or-glob) - [Ignore multiple files or globs](#ignore-multiple-files-or-globs) - [Allow empty/invalid paths](#allow-emptyinvalid-paths) - [Disable globs](#disable-globs) - [Specify glob configuration](#specify-glob-configuration) - [Making replacements on network drives](#making-replacements-on-network-drives) - [Specify character encoding](#specify-character-encoding) - [Dry run](#dry-run) - [Using custom processors](#using-custom-processors) - [Using a custom file system API](#using-a-custom-file-system-api) - [CLI usage](#cli-usage) - [A note on using globs with the CLI](#a-note-on-using-globs-with-the-cli) - [Version information](#version-information) - [License](#license) ## Installation ```shell # Using npm npm i replace-in-file # Using yarn yarn add replace-in-file ``` ### Asynchronous replacement ```js import {replaceInFile} from 'replace-in-file' const options = { files: 'path/to/file', from: /foo/g, to: 'bar', } try { const results = await replaceInFile(options) console.log('Replacement results:', results) } catch (error) { console.error('Error occurred:', error) } ``` ### Synchronous replacement ```js import {replaceInFileSync} from 'replace-in-file' const options = { files: 'path/to/file', from: /foo/g, to: 'bar', } try { const results = replaceInFileSync(options) console.log('Replacement results:', results) } catch (error) { console.error('Error occurred:', error) } ``` ### Return value The return value of the library is an array of replacement results against each file that was processed. This includes files in which no replacements were made. Each result contains the following values: - `file`: The path to the file that was processed - `hasChanged`: Flag to indicate if the file was changed or not ```js const results = replaceInFileSync({ files: 'path/to/files/*.html', from: /foo/g, to: 'bar', }) console.log(results) // [ // { // file: 'path/to/files/file1.html', // hasChanged: true, // }, // { // file: 'path/to/files/file2.html', // hasChanged: true, // }, // { // file: 'path/to/files/file3.html', // hasChanged: false, // }, // ] ``` To get an array of changed files, simply map the results as follows: ```js const changedFiles = results .filter(result => result.hasChanged) .map(result => result.file) ``` ### Counting matches and replacements By setting the `countMatches` configuration flag to `true`, the number of matches and replacements per file will be counted and present in the results array. - `numMatches`: Indicates the number of times a match was found in the file - `numReplacements`: Indicates the number of times a replacement was made in the file Note that the number of matches can be higher than the number of replacements if a match and replacement are the same string. ```js const results = replaceInFileSync({ files: 'path/to/files/*.html', from: /foo/g, to: 'bar', countMatches: true, }) console.log(results) // [ // { // file: 'path/to/files/file1.html', // hasChanged: true, // numMatches: 3, // numReplacements: 3, // }, // { // file: 'path/to/files/file2.html', // hasChanged: true, // numMatches: 1, // numReplacements: 1, // }, // { // file: 'path/to/files/file3.html', // hasChanged: false, // numMatches: 0, // numReplacements: 0, // }, // ] ``` ## Advanced usage ### Replace a single file or glob ```js const options = { files: 'path/to/file', } ``` ### Replace multiple files or globs ```js const options = { files: [ 'path/to/file', 'path/to/other/file', 'path/to/files/*.html', 'another/**/*.path', ], } ``` ### Replace first occurrence only ```js const options = { from: 'foo', to: 'bar', } ``` ### Replace all occurrences Please note that the value specified in the `from` parameter is passed straight to the native [String replace method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace). As such, if you pass a string as the `from` parameter, it will _only replace the first occurrence_. To replace multiple occurrences at once, you must use a regular expression for the `from` parameter with the global flag enabled, e.g. `/foo/g`. ```js const options = { from: /foo/g, to: 'bar', } ``` ### Multiple values with the same replacement These will be replaced sequentially. ```js const options = { from: [/foo/g, /baz/g], to: 'bar', } ``` ### Multiple values with different replacements These will be replaced sequentially. ```js const options = { from: [/foo/g, /baz/g], to: ['bar', 'bax'], } ``` ### Multiple replacements with different options There is no direct API in this package to make multiple replacements on different files with different options. However, you can easily accomplish this in your scripts as follows: ```js const replacements = [ { files: 'path/to/file1', from: /foo/g, to: 'bar', }, { files: 'path/to/file2', from: /bar/g, to: 'foo', } ] await Promise.all( replacements.map(options => replaceInFile(options)) ) ``` ### Custom regular expressions Use the [RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) constructor to create any regular expression. ```js const str = 'foo' const regex = new RegExp('^' + str + 'bar', 'i') const options = { from: regex, to: 'bar', } ``` ### Using callbacks for `from` You can also specify a callback that returns a string or a regular expression. The callback receives the name of the file in which the replacement is being performed, thereby allowing the user to tailor the search string. The following example uses a callback to produce a search string dependent on the filename: ```js const options = { files: 'path/to/file', from: (file) => new RegExp(file, 'g'), to: 'bar', } ``` ### Using callbacks for `to` As the `to` parameter is passed to the native [String replace method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace), you can also specify a callback. The following example uses a callback to convert matching strings to lowercase: ```js const options = { files: 'path/to/file', from: /SomePattern[A-Za-z-]+/g, to: (match) => match.toLowerCase(), } ``` This callback provides for an extra argument above the String replace method, which is the name of the file in which the replacement is being performed. The following example replaces the matched string with the filename: ```js const options = { files: 'path/to/file', from: /SomePattern[A-Za-z-]+/g, to: (...args) => args.pop(), } ``` ### Saving to a different file You can specify a `getTargetFile` config param to modify the target file for saving the new file contents to. For example: ```js const options = { files: 'path/to/files/*.html', getTargetFile: source => `new/path/${source}`, from: 'foo', to: 'bar', } ``` ### Ignore a single file or glob ```js const options = { ignore: 'path/to/ignored/file', } ``` ### Ignore multiple files or globs ```js const options = { ignore: [ 'path/to/ignored/file', 'path/to/other/ignored_file', 'path/to/ignored_files/*.html', 'another/**/*.ignore', ], } ``` Please note that there is an [open issue with Glob](https://github.com/isaacs/node-glob/issues/309) that causes ignored patterns to be ignored when using a `./` prefix in your files glob. To work around this, simply remove the prefix, e.g. use `**/*` instead of `./**/*`. ### Allow empty/invalid paths If set to true, empty or invalid paths will fail silently and no error will be thrown. For asynchronous replacement only. Defaults to `false`. ```js const options = { allowEmptyPaths: true, } ``` ### Disable globs You can disable globs if needed using this flag. Use this when you run into issues with file paths like files like `//SERVER/share/file.txt`. Defaults to `false`. ```js const options = { disableGlobs: true, } ``` ### Specify glob configuration Specify configuration passed to the [glob](https://www.npmjs.com/package/glob) call: ```js const options = { //Glob settings here (examples given below) glob: { //To include hidden files (starting with a dot) dot: true, //To fix paths on Windows OS when path.join() is used to create paths windowsPathsNoEscape: true, }, } ``` Please note that the setting `nodir` will always be passed as `false`. ### Making replacements on network drives To make replacements in files on network drives, you may need to specify the UNC path as the `cwd` config option. This will then be passed to glob and prefixed to your paths accordingly. See [#56](https://github.com/adamreisnz/replace-in-file/issues/56) for more details. ### Specify character encoding Use a different character encoding for reading/writing files. Defaults to `utf-8`. ```js const options = { encoding: 'utf8', } ``` ### Dry run To do a dry run without actually making replacements, for testing purposes. Defaults to `false`. ```js const options = { dry: true, } ``` ### Using custom processors For advanced usage where complex processing is needed it's possible to use a callback that will receive content as an argument and should return it processed. ```js const results = await replaceInFile({ files: 'path/to/files/*.html', processor: (input) => input.replace(/foo/g, 'bar'), }) ``` The custom processor will receive the path of the file being processed as a second parameter: ```js const results = await replaceInFile({ files: 'path/to/files/*.html', processor: (input, file) => input.replace(/foo/g, file), }) ``` This also supports passing an array of functions that will be executed sequentially ```js function someProcessingA(input) { const chapters = input.split('###') chapters[1] = chapters[1].replace(/foo/g, 'bar') return chapters.join('###') } function someProcessingB(input) { return input.replace(/foo/g, 'bar') } const results = replaceInFileSync({ files: 'path/to/files/*.html', processor: [someProcessingA, someProcessingB], }) ``` Alongside the `processor`, there is also `processorAsync` which is the equivalent for asynchronous processing. It should return a promise that resolves with the processed content: ```js const results = await replaceInFile({ files: 'path/to/files/*.html', processorAsync: async (input, file) => { const asyncResult = await doAsyncOperation(input, file); return input.replace(/foo/g, asyncResult) }, }) ``` ### Using a custom file system API `replace-in-file` defaults to using `'node:fs/promises'` and `'node:fs'` to provide file reading and write APIs. You can provide an `fs` or `fsSync` object of your own to switch to a different file system, such as a mock file system for unit tests. * For the asynchronous APIs, the provided `fs` must provide the `readFile` and `writeFile` methods. * For the synchronous APIs, the provided `fsSync` must provide the `readFileSync` and `writeFileSync` methods. Custom `fs` and `fsSync` implementations should have the same parameters and returned values as their [built-in Node `fs`](https://nodejs.org/api/fs.html) equivalents. ```js replaceInFile({ from: 'a', fs: { readFile: async (file, encoding) => { console.log(`Reading ${file} with encoding ${encoding}...`) return 'fake file contents' }, writeFile: async (file, newContents, encoding) => { console.log(`Writing ${file} with encoding ${encoding}: ${newContents}`) }, }, to: 'b', }) ``` Or for the sync API: ```js replaceInFileSync({ from: 'a', fsSync: { readFileSync: (file, encoding) => { console.log(`Reading ${file} with encoding ${encoding}...`) return 'fake file contents' }, writeFileSync: (file, newContents, encoding) => { console.log(`Writing ${file} with encoding ${encoding}: ${newContents}`) }, }, to: 'b', }) ``` ## CLI usage ```sh replace-in-file from to some/file.js,some/**/glob.js [--configFile=config.json] [--ignore=ignore/files.js,ignore/**/glob.js] [--encoding=utf-8] [--disableGlobs] [--verbose] [--quiet] [--dry] ``` Multiple files or globs can be replaced by providing a comma separated list. The flags `--disableGlobs`, `--ignore` and `--encoding` are supported in the CLI. The setting `allowEmptyPaths` is not supported in the CLI as the replacement is synchronous, and this setting is only relevant for asynchronous replacement. To list the changed files, use the `--verbose` flag. Success output can be suppressed by using the `--quiet` flag. To do a dry run without making any actual changes, use `--dry`. A regular expression may be used for the `from` parameter by passing in a string correctly formatted as a regular expression. The library will automatically detect that it is a regular expression. The `from` and `to` parameters, as well as the files list, can be omitted if you provide this information in a configuration file. You can provide a path to a configuration file (JSON) with the `--configFile` flag. This path will be resolved using Node’s built in `path.resolve()`, so you can pass in an absolute or relative path. If you are using a configuration file, and you want to use a regular expression for the `from` value, ensure that it starts with a `/`, for example: ```json { "from": "/cat/g", "to": "dog", } ``` ## A note on using globs with the CLI When using the CLI, the glob pattern is handled by the operating system. But if you specify the glob pattern in the configuration file, the package will use the glob module from the Node modules, and this can lead to different behaviour despite using the same pattern. For example, the following will only look at top level files: ```json { "from": "cat", "to": "dog", } ``` ```sh replace-in-file ** --configFile=config.json ``` However, this example is recursive: ```json { "files": "**", "from": "cat", "to": "dog", } ``` ```sh replace-in-file --configFile=config.json ``` If you want to do a recursive file search as an argument you must use: ```sh replace-in-file $(ls l {,**/}*) --configFile=config.json ``` ## Version information From version 8.0.0 onwards, this package requires Node 18 or higher. If you need support for older versions of Node, please use a previous version of this package. As 8.0.0 was a significant rewrite, please [open an issue](https://github.com/adamreisnz/replace-in-file/issues) if you run into any problems or unexpected behaviour. See the [Changelog](CHANGELOG.md) for more information. ## License (MIT License) Copyright 2015-2024, Adam Reis replace-in-file-main/bin/000077500000000000000000000000001511441262100155015ustar00rootroot00000000000000replace-in-file-main/bin/cli.js000077500000000000000000000033451511441262100166160ustar00rootroot00000000000000#!/usr/bin/env node import yargs from 'yargs' import {hideBin} from 'yargs/helpers' import {replaceInFileSync} from '../src/replace-in-file.js' import {loadConfig, combineConfig} from '../src/helpers/config.js' import {errorHandler, successHandler} from '../src/helpers/handlers.js' /** * Main routine */ async function main() { //Extract parameters const argv = yargs(hideBin(process.argv)).argv const {configFile} = argv //Display help if (argv.help || argv.h) { return console.log(` Usage: replace-in-file from to from to some/file.js,some/**/glob.js Available options (all are optional): --configFile Path to JSON config file --ignore Files to ignore (comma separated) --encoding File encoding (default is utf-8) --disableGlobs Disable glob expansion --verbose Show additional information --quiet Suppress output --dry Dry run (no changes made) --help, -h Show this help information `) } //Verify arguments if (argv._.length < 3 && !configFile) { throw new Error('Replace in file needs at least 3 arguments') } //Load config and combine with passed arguments const config = configFile ? await loadConfig(configFile) : {} const options = combineConfig(config, argv) //Extract settings const {from, to, files, verbose, quiet} = options //Single star globs already get expanded in the command line options.files = files.reduce((files, file) => { return files.concat(file.split(',')) }, []) //Log if (!quiet) { console.log(`Replacing '${from}' with '${to}'`) } //Replace const results = replaceInFileSync(options) if (!quiet) { successHandler(results, verbose) } } //Call main routine main().catch(error => errorHandler(error)) replace-in-file-main/eslint.config.js000066400000000000000000000031631511441262100200340ustar00rootroot00000000000000import js from '@eslint/js' import globals from 'globals' export default [ js.configs.recommended, { ignores: [ 'node_modules', 'coverage', ], languageOptions: { ecmaVersion: 'latest', sourceType: 'module', globals: { ...globals.builtin, ...globals.node, ...globals.mocha, ...globals.jasmine, }, }, rules: { indent: ['error', 2, { SwitchCase: 1, }], quotes: ['error', 'single', { allowTemplateLiterals: true, }], 'brace-style': ['error', 'stroustrup', { allowSingleLine: false, }], curly: 'error', 'comma-dangle': ['error', { functions: 'never', arrays: 'always-multiline', objects: 'always-multiline', }], 'space-infix-ops': ['error'], 'quote-props': ['error', 'as-needed'], 'object-curly-spacing': ['error', 'never'], 'space-before-blocks': 'error', 'keyword-spacing': 'error', semi: ['error', 'never'], 'eol-last': ['error', 'always'], 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-empty': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'no-empty-function': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'no-unused-vars': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'no-unreachable': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'no-multiple-empty-lines': ['error', { max: 1, maxEOF: 0, }], }, }, ] replace-in-file-main/index.js000066400000000000000000000003371511441262100164010ustar00rootroot00000000000000import {replaceInFile, replaceInFileSync} from './src/replace-in-file.js' import {processFile, processFileSync} from './src/process-file.js' //Export export {replaceInFile, replaceInFileSync, processFile, processFileSync} replace-in-file-main/package.json000066400000000000000000000024071511441262100172220ustar00rootroot00000000000000{ "name": "replace-in-file", "type": "module", "version": "8.4.0", "description": "A simple utility to quickly replace text in one or more files.", "homepage": "https://github.com/adamreisnz/replace-in-file#readme", "author": { "name": "Adam Reis", "email": "adam@reis.nz" }, "license": "MIT", "repository": { "type": "git", "url": "https://github.com/adamreisnz/replace-in-file.git" }, "bugs": { "url": "https://github.com/adamreisnz/replace-in-file/issues" }, "keywords": [ "replace", "text", "contents", "file" ], "main": "index.js", "bin": "./bin/cli.js", "types": "./types/index.d.ts", "engines": { "node": ">=18" }, "scripts": { "test": "mocha 'src/**/*.spec.js'", "coverage": "c8 npm run test", "postcoverage": "open -a \"Google Chrome\" ./coverage/lcov-report/index.html", "postversion": "git push && git push --tags && npm publish" }, "files": [ "bin", "src", "types", "index.js" ], "dependencies": { "chalk": "^5.6.2", "glob": "^13.0.0", "yargs": "^18.0.0" }, "devDependencies": { "@eslint/js": "^9.39.1", "c8": "^10.1.3", "chai": "^6.2.1", "chai-as-promised": "^8.0.2", "eslint": "^9.39.1", "mocha": "^11.7.5" } } replace-in-file-main/src/000077500000000000000000000000001511441262100155205ustar00rootroot00000000000000replace-in-file-main/src/helpers/000077500000000000000000000000001511441262100171625ustar00rootroot00000000000000replace-in-file-main/src/helpers/config.js000066400000000000000000000103761511441262100207740ustar00rootroot00000000000000import path from 'node:path' import fs from 'node:fs/promises' import fsSync from 'node:fs' /** * Helper to load options from a config file */ export async function loadConfig(file) { //No config file provided? if (!file) { throw new Error(`No config file provided`) } //Read file const json = await fs.readFile(path.resolve(file), 'utf8') return JSON.parse(json) } /** * Helper to convert a string to Regex if it matches the pattern */ export function stringToRegex(str) { //Array given if (Array.isArray(str)) { return str.map(stringToRegex) } //Not a string, or no match const regexMatch = /.*\/([gimyus]*)$/ if (typeof str !== 'string' || !str.match(regexMatch)) { return str } //Extract flags and pattern const flags = str.replace(/.*\/([gimyus]*)$/, '$1') const pattern = str.replace(new RegExp(`^/(.*?)/${flags}$`), '$1') //Return regex return new RegExp(pattern, flags) } /** * Parse config */ export function parseConfig(config) { //Validate config if (typeof config !== 'object' || config === null) { throw new Error('Must specify configuration object') } //Fix glob config.glob = config.glob || {} //Extract data const {files, getTargetFile, from, to, processor, processorAsync, ignore, encoding} = config if (typeof processor !== 'undefined') { if (typeof processor !== 'function' && !Array.isArray(processor)) { throw new Error(`Processor should be either a function or an array of functions`) } } else if (typeof processorAsync !== 'undefined') { if (typeof processorAsync !== 'function' && !Array.isArray(processorAsync)) { throw new Error(`ProcessorAsync should be either a function or an array of functions`) } } else { if (typeof files === 'undefined') { throw new Error('Must specify file or files') } if (typeof from === 'undefined') { throw new Error('Must specify string or regex to replace') } if (typeof to === 'undefined') { throw new Error('Must specify a replacement (can be blank string)') } if (typeof getTargetFile !== 'undefined' && typeof getTargetFile !== 'function') { throw new Error(`Target file transformation parameter should be a function that takes the source file path as argument and returns the target file path`) } } //Ensure arrays if (!Array.isArray(files)) { config.files = [files] } if (!Array.isArray(ignore)) { if (typeof ignore === 'undefined') { config.ignore = [] } else { config.ignore = [ignore] } } //Since we can't store Regexp in JSON, convert from string if needed config.from = stringToRegex(from) //Use default encoding if invalid if (typeof encoding !== 'string' || encoding === '') { config.encoding = 'utf-8' } //Merge config with defaults return Object.assign({}, { ignore: [], encoding: 'utf-8', disableGlobs: false, allowEmptyPaths: false, countMatches: false, verbose: false, quiet: false, dry: false, glob: {}, cwd: null, getTargetFile: source => source, fs, fsSync, }, config) } /** * Combine CLI script arguments with config options */ export function combineConfig(config, argv) { //Extract options from config let { from, to, files, ignore, encoding, verbose, allowEmptyPaths, disableGlobs, dry, quiet, } = config //Get from/to parameters from CLI args if not defined in options if (typeof from === 'undefined') { from = argv._.shift() } if (typeof to === 'undefined') { to = argv._.shift() } //Get files and ignored files if (typeof files === 'undefined') { files = argv._ } if (typeof ignore === 'undefined' && typeof argv.ignore !== 'undefined') { ignore = argv.ignore } //Other parameters if (typeof encoding === 'undefined') { encoding = argv.encoding } if (typeof disableGlobs === 'undefined') { disableGlobs = !!argv.disableGlobs } if (typeof verbose === 'undefined') { verbose = !!argv.verbose } if (typeof dry === 'undefined') { dry = !!argv.dry } if (typeof quiet === 'undefined') { quiet = !!argv.quiet } //Return through parser to validate return parseConfig({ from, to, files, ignore, encoding, verbose, allowEmptyPaths, disableGlobs, dry, quiet, }) } replace-in-file-main/src/helpers/config.spec.js000066400000000000000000000157671511441262100217360ustar00rootroot00000000000000import {expect, use, should} from 'chai' import chaiAsPromised from 'chai-as-promised' import {loadConfig, combineConfig, parseConfig} from './config.js' import fs from 'node:fs' //Enable should assertion style for usage with chai-as-promised should() use(chaiAsPromised) /** * Specs */ describe('helpers/config.js', () => { /** * Load config */ describe('loadConfig()', () => { it('should error if no file is provided', () => { return expect(loadConfig()).to.eventually.be.rejectedWith(Error) }) it('should error when an invalid file is provided', () => { return expect(loadConfig(42)).to.eventually.be.rejectedWith(Error) }) it('should read config from a valid file', async () => { //Test config const config = { files: ['file.txt'], from: 'foo', to: 'bar', } fs.writeFileSync('config.json', JSON.stringify(config), 'utf8') //Load config const cfg = await loadConfig('config.json') expect(cfg).to.be.an('object') expect(cfg.files).to.be.an('array') expect(cfg.files).to.eql(config.files) expect(cfg.from).to.equal(config.from) expect(cfg.to).to.equal(config.to) //Clean up fs.unlinkSync('config.json') }) }) /** * Combine config */ describe('combineConfig()', () => { it('should combine config with passed arguments', () => { const argv = { _: ['foo', 'bar', 'file.txt'], ignore: ['ignore-file.txt'], encoding: 'encoding', disableGlobs: true, dry: true, quiet: true, } const combined = combineConfig({}, argv) expect(combined.from).to.equal('foo') expect(combined.to).to.equal('bar') expect(combined.files).to.eql(['file.txt']) expect(combined.ignore).to.eql(['ignore-file.txt']) expect(combined.encoding).to.equal('encoding') expect(combined.disableGlobs).to.be.true expect(combined.dry).to.be.true expect(combined.quiet).to.be.true }) }) /** * Parse config */ describe('parseConfig()', () => { it('should error if no config is provided', () => { expect(() => parseConfig()).to.throw(Error) }) it('should error when an invalid config is provided', () => { expect(() => parseConfig(42)).to.throw(Error) expect(() => parseConfig(null)).to.throw(Error) }) it('should error when an invalid `processor` is specified', () => { expect(() => parseConfig({ processor: 'foo', files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: ['b'], })).to.throw(Error) }) it('should error when an invalid `processorAsync` is specified', () => { expect(() => parseConfig({ processorAsync: 'foo', files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: ['b'], })).to.throw(Error) }) it('should error when `files` are not specified', () => { expect(() => parseConfig({ from: [/re/g, /place/g], to: ['b'], })).to.throw(Error) }) it('should error when `from` is not specified', () => { expect(() => parseConfig({ files: ['test1', 'test2', 'test3'], to: ['b'], })).to.throw(Error) }) it('should error when `to` is not specified', () => { expect(() => parseConfig({ files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], })).to.throw(Error) }) it('should error when an invalid `getTargetFile` handler is specified', () => { expect(() => parseConfig({ getTargetFile: 'foo', files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: ['b'], })).to.throw(Error) }) it('should convert `files` to an array', () => { const parsed = parseConfig({ files: 'test1', from: [/re/g, /place/g], to: ['b'], }) expect(parsed.files).to.eql(['test1']) }) it('should default the `ignore` option to an empty array', () => { const parsed = parseConfig({ files: ['test1'], from: [/re/g, /place/g], to: ['b'], }) expect(parsed.ignore).to.eql([]) }) it('should convert the `ignore` option to an array', () => { const parsed = parseConfig({ files: ['test1'], from: [/re/g, /place/g], to: ['b'], ignore: 'ignore-file.txt', }) expect(parsed.ignore).to.eql(['ignore-file.txt']) }) it('should default `encoding` to utf-8 if not provided or invalid', () => { const a = parseConfig({ files: ['test1'], from: [/re/g, /place/g], to: ['b'], }) const b = parseConfig({ files: ['test1'], from: [/re/g, /place/g], to: ['b'], encoding: 42, }) const c = parseConfig({ files: ['test1'], from: [/re/g, /place/g], to: ['b'], encoding: '', }) expect(a.encoding).to.equal('utf-8') expect(b.encoding).to.equal('utf-8') expect(c.encoding).to.equal('utf-8') }) it('should convert from regex if provided in JSON', async () => { const parsed = parseConfig({ files: ['file.txt'], from: '/foo/g', to: 'bar', }) expect(parsed.from).to.be.an.instanceof(RegExp) }) it('should convert from an array of regexes if provided in JSON', async () => { const parsed = parseConfig({ files: ['file.txt'], from: ['/foo/g', '/baz/g', 'plain'], to: 'bar', }) expect(parsed.from).to.be.an.instanceof(Array) expect(parsed.from[0]).to.be.an.instanceof(RegExp) expect(parsed.from[1]).to.be.an.instanceof(RegExp) expect(parsed.from[2]).to.equal('plain') }) it('should not convert from regex if it is a regular string', async () => { const parsed = parseConfig({ files: ['file.txt'], from: '/foo', to: 'bar', }) expect(parsed.from).not.to.be.an.instanceof(RegExp) expect(parsed.from).to.equal('/foo') }) it('should overwrite the config defaults', () => { const parsed = parseConfig({ files: 'test1', from: [/re/g, /place/g], to: ['b'], ignore: 'ignore-file.txt', encoding: 'encoding', disableGlobs: true, allowEmptyPaths: true, countMatches: true, verbose: true, quiet: true, dry: true, glob: 'glob', cwd: 'cwd', fs: 'fs', fsSync: 'fsSync', }) expect(parsed.ignore).to.eql(['ignore-file.txt']) expect(parsed.encoding).to.equal('encoding') expect(parsed.disableGlobs).to.be.true expect(parsed.allowEmptyPaths).to.be.true expect(parsed.countMatches).to.be.true expect(parsed.verbose).to.be.true expect(parsed.quiet).to.be.true expect(parsed.dry).to.be.true expect(parsed.glob).to.equal('glob') expect(parsed.cwd).to.equal('cwd') expect(parsed.fs).to.equal('fs') expect(parsed.fsSync).to.equal('fsSync') }) }) }) replace-in-file-main/src/helpers/handlers.js000066400000000000000000000013601511441262100213200ustar00rootroot00000000000000import chalk from 'chalk' /** * Success handler */ export function successHandler(results, verbose) { const changed = results.filter(result => result.hasChanged) const numChanges = changed.length if (numChanges > 0) { console.log(chalk.green(`${numChanges} file(s) were changed`)) if (verbose) { changed.forEach(result => console.log(chalk.grey('-', result.file))) } } else { console.log(chalk.yellow('No files were changed')) } } /** * Error handler */ export function errorHandler(error, exitCode = 1) { console.error(error) process.exit(exitCode) } /** * Helper to log a dry run */ export function logDryRun(log) { if (log) { console.log(chalk.yellow('Dry run, not making actual changes')) } } replace-in-file-main/src/helpers/paths.js000066400000000000000000000032371511441262100206440ustar00rootroot00000000000000import {glob} from 'glob' import nodepath from 'node:path' /** * Async wrapper for glob */ export function globAsync(pattern, ignore, allowEmptyPaths, cfg) { //Prepare glob config cfg = Object.assign({ignore}, cfg, {nodir: true}) //Run glob return glob(pattern, cfg).then(files => { //Error if no files match, unless allowed if (!allowEmptyPaths && files.length === 0) { throw new Error('No files match the pattern: ' + pattern) } //Return files return files }) } /** * Get paths (sync) */ export function pathsSync(patterns, config) { //Extract relevant config const {ignore, disableGlobs, glob: globConfig, cwd} = config //Not using globs? if (disableGlobs) { return patterns } //Prepare glob config const cfg = Object.assign({ignore}, globConfig, {nodir: true}) //Append CWD configuration if given (#56) if (cwd) { cfg.cwd = cwd } //Get paths const paths = patterns.map(pattern => glob.sync(pattern, cfg)) const flattened = [].concat.apply([], paths) //Prefix each path with CWD if given (#56) if (cwd) { return flattened.map(path => nodepath.join(cwd, path)) } //Return flattened return flattened } /** * Get paths asynchrously */ export async function pathsAsync(patterns, config) { //Extract relevant config const {ignore, disableGlobs, allowEmptyPaths, glob: cfg} = config //Not using globs? if (disableGlobs) { return patterns } //Prepare promises const promises = patterns .map(pattern => globAsync(pattern, ignore, allowEmptyPaths, cfg)) //Expand globs and flatten paths const paths = await Promise.all(promises) return [].concat.apply([], paths) } replace-in-file-main/src/helpers/paths.spec.js000066400000000000000000000026441511441262100215760ustar00rootroot00000000000000import {expect, use, should} from 'chai' import chaiAsPromised from 'chai-as-promised' import {pathsSync, pathsAsync} from './paths.js' //Enable should assertion style for usage with chai-as-promised should() use(chaiAsPromised) /** * Specs */ describe('helpers/path.js', () => { //Patterns const patterns = ['**/*.js', '**/*.json'] /** * pathsSync() */ describe('pathsSync()', () => { it('should prefix each path with cwd if specified', () => { const paths = pathsSync(patterns, { cwd: './src/helpers/', }) expect(paths).to.be.an('array') expect(paths).to.have.lengthOf(7) expect(paths[0]).to.equal('src/helpers/replace.js') }) it('should return patterns as is if globs have been disabled', () => { const paths = pathsSync(patterns, { disableGlobs: true, }) expect(paths).to.be.an('array') expect(paths).to.have.lengthOf(2) expect(paths[0]).to.equal('**/*.js') expect(paths[1]).to.equal('**/*.json') }) }) /** * pathsAsync() */ describe('pathsAsync()', () => { it('should return patterns as is if globs have been disabled', async () => { const paths = await pathsAsync(patterns, { disableGlobs: true, }) expect(paths).to.be.an('array') expect(paths).to.have.lengthOf(2) expect(paths[0]).to.equal('**/*.js') expect(paths[1]).to.equal('**/*.json') }) }) }) replace-in-file-main/src/helpers/process.js000066400000000000000000000042341511441262100212010ustar00rootroot00000000000000 /** * Run processors */ export function runProcessors(contents, processor, file) { //Ensure array and prepare result const processors = Array.isArray(processor) ? processor : [processor] //Run processors const newContents = processors .reduce((contents, processor) => processor(contents, file), contents) //Check if contents changed and prepare result const hasChanged = (newContents !== contents) const result = {file, hasChanged} //Return along with new contents return [result, newContents] } /** * Helper to process in a single file (sync) */ export function processSync(file, processor, config) { //Extract relevant config and read file contents const {encoding, dry, fsSync} = config const contents = fsSync.readFileSync(file, encoding) //Process contents const [result, newContents] = runProcessors(contents, processor, file) //Contents changed and not a dry run? Write to file if (result.hasChanged && !dry) { fsSync.writeFileSync(file, newContents, encoding) } //Return result return result } /** * Run processors (async) */ export async function runProcessorsAsync(contents, processorAsync, file) { //Ensure array and prepare result const processorAsyncs = Array.isArray(processorAsync) ? processorAsync : [processorAsync] //Run processors let newContents = contents for (const processor of processorAsyncs) { newContents = await processor(newContents, file) } //Check if contents changed and prepare result const hasChanged = (newContents !== contents) const result = {file, hasChanged} //Return along with new contents return [result, newContents] } /** * Helper to process in a single file (async) */ export async function processAsync(file, processor, config) { //Extract relevant config and read file contents const {encoding, dry, fs} = config const contents = await fs.readFile(file, encoding) //Make replacements const [result, newContents] = await runProcessorsAsync(contents, processor, file) //Contents changed and not a dry run? Write to file if (result.hasChanged && !dry) { await fs.writeFile(file, newContents, encoding) } //Return result return result } replace-in-file-main/src/helpers/replace.js000066400000000000000000000063161511441262100211410ustar00rootroot00000000000000 /** * Get replacement helper */ export function getReplacement(replace, isArray, i) { if (isArray && typeof replace[i] === 'undefined') { return null } if (isArray) { return replace[i] } return replace } /** * Escape string to make it safe for use in a regex */ export function escapeRegex(string) { if (typeof string === 'string') { return string.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&') } return string } /** * Helper to make replacements */ export function makeReplacements(contents, from, to, file, count) { //Turn into array if (!Array.isArray(from)) { from = [from] } //Check if replace value is an array and prepare result const isArray = Array.isArray(to) const result = {file} //Counting? Initialize number of matches if (count) { result.numMatches = 0 result.numReplacements = 0 } //Make replacements const newContents = from.reduce((contents, item, i) => { //Call function if given, passing in the filename if (typeof item === 'function') { item = item(file) } //Get replacement value let replacement = getReplacement(to, isArray, i) if (replacement === null) { return contents } //Call function if given, appending the filename if (typeof replacement === 'function') { const original = replacement replacement = (...args) => original(...args, file) } //Count matches if (count) { const matches = contents.match(escapeRegex(item)) if (matches) { const replacements = matches.filter(match => match !== replacement) result.numMatches += matches.length result.numReplacements += replacements.length } } //Make replacement return contents.replace(item, replacement) }, contents) //Check if changed result.hasChanged = (newContents !== contents) //Return result and new contents return [result, newContents] } /** * Helper to replace in a single file (sync) */ export function replaceSync(source, from, to, config) { //Extract relevant config and read file contents const {getTargetFile, encoding, dry, countMatches, fsSync} = config const contents = fsSync.readFileSync(source, encoding) //Replace contents and check if anything changed const [result, newContents] = makeReplacements( contents, from, to, source, countMatches ) //Get target file const target = getTargetFile(source) //Contents changed and not a dry run? Write to file if (result.hasChanged && !dry) { fsSync.writeFileSync(target, newContents, encoding) } //Return result return result } /** * Helper to replace in a single file (async) */ export async function replaceAsync(source, from, to, config) { //Extract relevant config and read file contents const {getTargetFile, encoding, dry, countMatches, fs} = config const contents = await fs.readFile(source, encoding) //Make replacements const [result, newContents] = makeReplacements( contents, from, to, source, countMatches ) //Get target file const target = getTargetFile(source) //Contents changed and not a dry run? Write to file if (result.hasChanged && !dry) { await fs.writeFile(target, newContents, encoding) } //Return result return result } replace-in-file-main/src/process-file.js000066400000000000000000000021341511441262100204510ustar00rootroot00000000000000import {parseConfig} from './helpers/config.js' import {logDryRun} from './helpers/handlers.js' import {pathsSync, pathsAsync} from './helpers/paths.js' import {processSync, processAsync} from './helpers/process.js' /** * Process a file (async) */ export async function processFile(config) { //Parse config config = parseConfig(config) const {files, processor, processorAsync, dry, verbose} = config //Dry run? logDryRun(dry && verbose) //Find paths and process them const paths = await pathsAsync(files, config) const promises = paths.map(path => processAsync(path, processor ?? processorAsync, config)) const results = await Promise.all(promises) //Return results return results } /** * Process a file (sync) */ export function processFileSync(config) { //Parse config config = parseConfig(config) const {files, processor, dry, verbose} = config //Dry run? logDryRun(dry && verbose) //Find paths and process them const paths = pathsSync(files, config) const results = paths.map(path => processSync(path, processor, config)) //Return results return results } replace-in-file-main/src/process-file.spec.js000066400000000000000000000373011511441262100214060ustar00rootroot00000000000000import {expect, use, should} from 'chai' import chaiAsPromised from 'chai-as-promised' import {processFile, processFileSync} from './process-file.js' import fsAsync from 'node:fs/promises' import fs from 'node:fs' //Enable should assertion style for usage with chai-as-promised should() use(chaiAsPromised) /** * Specifications */ describe('Process a file', () => { //Test JSON const testData = 'a re place c' /** * Prepare test files */ beforeEach(() => Promise.all([ fsAsync.writeFile('test1', testData, 'utf8'), fsAsync.writeFile('test2', testData, 'utf8'), fsAsync.writeFile('test3', 'nope', 'utf8'), ])) /** * Clean up test files */ afterEach(() => Promise.all([ fsAsync.unlink('test1'), fsAsync.unlink('test2'), fsAsync.unlink('test3'), ])) function fromToToProcessor(config) { const from = config.from const to = config.to delete config.from delete config.to config.processor = (content) => { return content.replace(from, to) } return config } function appendFileProcessor(config) { config.processor = (content, file) => { return `${content}${file}` } return config } /** * Async */ describe('Async', () => { it('should run processor', done => { processFile({ files: 'test1', processor: (input) => { return input.replace(/re\splace/g, 'b') }, }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) done() }) }) it('should run processorAsync', done => { processFile({ files: 'test1', processorAsync: async (input) => { const replaceValue = await Promise.resolve('b') return input.replace(/re\splace/g, replaceValue) }, }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) done() }) }) it('should replace contents in a single file with regex', done => { processFile(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) done() }) }) it('should replace contents with a string replacement', done => { processFile(fromToToProcessor({ files: 'test1', from: 're place', to: 'b', })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a b c') done() }) }) it('should replace contents in a an array of files', done => { processFile(fromToToProcessor({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') done() }) }) it('should expand globs', done => { processFile(fromToToProcessor({ files: 'test*', from: /re\splace/g, to: 'b', })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') done() }) }) it('should expand globs while excluding ignored files', done => { processFile(fromToToProcessor({ files: 'test*', ignore: 'test1', from: /re\splace/g, to: 'b', })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a b c') done() }) }) it('should replace substrings', done => { processFile(fromToToProcessor({ files: 'test1', from: /(re)\s(place)/g, to: '$2 $1', })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a place re c') done() }) }) it('should fulfill the promise on success', () => { return processFile(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', })).should.be.fulfilled }) it('should reject the promise with an error on failure', () => { return expect(processFile(fromToToProcessor({ files: 'nope', from: /re\splace/g, to: 'b', }))).to.eventually.be.rejectedWith(Error) }) it('should not reject the promise if allowEmptyPaths is true', () => { return processFile(fromToToProcessor({ files: 'nope', allowEmptyPaths: true, from: /re\splace/g, to: 'b', })).should.be.fulfilled }) it('should return a results array', done => { processFile(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', })).then(results => { expect(results).to.be.instanceof(Array) expect(results).to.have.length(1) expect(results[0].file).to.equal('test1') done() }) }) it('should mark if something was replaced', done => { processFile(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', })).then(results => { expect(results[0].hasChanged).to.equal(true) done() }) }) it('should not mark if nothing was replaced', done => { processFile(fromToToProcessor({ files: 'test1', from: 'nope', to: 'b', })).then(results => { expect(results[0].hasChanged).to.equal(false) done() }) }) it('should return correct results for multiple files', done => { processFile(fromToToProcessor({ files: ['test1', 'test2', 'test3'], from: /re\splace/g, to: 'b', })).then(results => { expect(results).to.have.length(3) expect(results[0].file).to.equal('test1') expect(results[0].hasChanged).to.equal(true) expect(results[1].file).to.equal('test2') expect(results[1].hasChanged).to.equal(true) expect(results[2].file).to.equal('test3') expect(results[2].hasChanged).to.equal(false) done() }) }) it('should not replace in a dry run', done => { processFile(fromToToProcessor({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', dry: true, })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a re place c') done() }) }) it('should return changed files for a dry run', done => { processFile(fromToToProcessor({ files: ['test1', 'test2', 'test3'], from: /re\splace/g, to: 'b', dry: true, })).then(results => { expect(results).to.have.length(3) expect(results[0].file).to.equal('test1') expect(results[0].hasChanged).to.equal(true) expect(results[1].file).to.equal('test2') expect(results[1].hasChanged).to.equal(true) expect(results[2].file).to.equal('test3') expect(results[2].hasChanged).to.equal(false) done() }) }) it('should accept glob configuration', done => { processFile(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', allowEmptyPaths: true, glob: { ignore: ['test1'], }, })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a re place c') done() }) }) it('should ignore empty glob configuration', done => { processFile(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', glob: null, })).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a b c') done() }) }) describe('fs', () => { it('reads and writes using a custom fs when provided', done => { const before = 'abc' let written const fs = { readFile: async () => { return before }, writeFile: async (_fileName, data) => { written = data }, } processFile({ files: 'test1', fs, processor: (input) => { return input.replace(/b/, 'z') }, }).then(() => { expect(written).to.equal('azc') done() }) }) }) }) /** * Sync */ describe('Sync', () => { it('should replace contents in a single file with regex', function() { processFileSync(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) }) it('should replace contents with a string replacement', function() { processFileSync(fromToToProcessor({ files: 'test1', from: 're place', to: 'b', })) const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a b c') }) it('should replace contents in a an array of files', function() { processFileSync(fromToToProcessor({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') }) it('should expand globs', function() { processFileSync(fromToToProcessor({ files: 'test*', from: /re\splace/g, to: 'b', })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') }) it('should return a results array', function() { const results = processFileSync(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', })) expect(results).to.be.instanceof(Array) expect(results).to.have.length(1) expect(results[0].file).to.equal('test1') }) it('should mark if something was replaced', function() { const results = processFileSync(fromToToProcessor({ files: 'test1', from: /re\splace/g, to: 'b', })) expect(results[0].hasChanged).to.equal(true) }) it('should not mark if nothing was replaced', function() { const results = processFileSync(fromToToProcessor({ files: 'test1', from: 'nope', to: 'b', })) expect(results[0].hasChanged).to.equal(false) }) it('should return correct results for multiple files', function() { const results = processFileSync(fromToToProcessor({ files: ['test1', 'test2', 'test3'], from: /re\splace/g, to: 'b', })) expect(results).to.have.length(3) expect(results[0].file).to.equal('test1') expect(results[0].hasChanged).to.equal(true) expect(results[1].file).to.equal('test2') expect(results[1].hasChanged).to.equal(true) expect(results[2].file).to.equal('test3') expect(results[2].hasChanged).to.equal(false) }) it('should expand globs while excluding ignored files', () => { processFileSync(fromToToProcessor({ files: 'test*', ignore: 'test1', from: /re\splace/g, to: 'b', })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a b c') }) it('should support an array of ignored files', () => { processFileSync(fromToToProcessor({ files: 'test*', ignore: ['test1', 'test3'], from: /re\splace/g, to: 'b', })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a b c') }) it('should not fail when the ignore parameter is undefined', () => { processFileSync(fromToToProcessor({ files: 'test*', ignore: undefined, from: /re\splace/g, to: 'b', })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') }) it('should work without expanding globs if disabled', () => { processFileSync(fromToToProcessor({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', disableGlobs: true, })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') }) it('should not replace in a dry run', () => { processFileSync(fromToToProcessor({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', dry: true, })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a re place c') }) it('should return changed files for a dry run', () => { const results = processFileSync(fromToToProcessor({ files: ['test1', 'test2', 'test3'], from: /re\splace/g, to: 'b', dry: true, })) expect(results).to.have.length(3) expect(results[0].file).to.equal('test1') expect(results[0].hasChanged).to.equal(true) expect(results[1].file).to.equal('test2') expect(results[1].hasChanged).to.equal(true) expect(results[2].file).to.equal('test3') expect(results[2].hasChanged).to.equal(false) }) it('should pass filename to processor as second parameter', () => { processFileSync(appendFileProcessor({ files: 'test*', })) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') const test3 = fs.readFileSync('test3', 'utf8') expect(test1).to.equal(`${testData}test1`) expect(test2).to.equal(`${testData}test2`) expect(test3).to.equal('nopetest3') }) describe('fsSync', () => { it('reads and writes using a custom fsSync when provided', done => { const before = 'a' let written const fsSync = { readFileSync: () => { return before }, writeFileSync: (_fileName, data) => { written = data return data }, } const results = processFileSync({ files: 'test1', fsSync, processor: (input) => { return input.replace(/a/, 'z') }, }) expect(results[0].file).to.equal('test1') expect(written).to.equal('z') done() }) }) }) describe('module export', () => { it(`exports named processFile and processFileSync from module`, () => { expect(processFile).to.be.a('function') expect(processFileSync).to.be.a('function') }) }) }) replace-in-file-main/src/replace-in-file.js000066400000000000000000000030151511441262100210110ustar00rootroot00000000000000import {parseConfig} from './helpers/config.js' import {logDryRun} from './helpers/handlers.js' import {pathsSync, pathsAsync} from './helpers/paths.js' import {replaceSync, replaceAsync} from './helpers/replace.js' import {processFile, processFileSync} from './process-file.js' /** * Replace in file (async) */ export async function replaceInFile(config) { //If custom processor is provided use it instead if (config && (config.processor || config.processorAsync)) { return await processFile(config) } //Parse config config = parseConfig(config) const {files, from, to, dry, verbose} = config //Dry run? logDryRun(dry && verbose) //Find paths and process them const paths = await pathsAsync(files, config) const promises = paths.map(path => replaceAsync(path, from, to, config)) const results = await Promise.all(promises) //Return results return results } /** * Replace in file (sync) */ export function replaceInFileSync(config) { if (config && config.processorAsync) { throw new Error('ProcessorAsync cannot be used in synchronous mode') } //If custom processor is provided use it instead if (config && config.processor) { return processFileSync(config) } //Parse config config = parseConfig(config) const {files, from, to, dry, verbose} = config //Dry run? logDryRun(dry && verbose) //Find paths and process them const paths = pathsSync(files, config) const results = paths.map(path => replaceSync(path, from, to, config)) //Return results return results } replace-in-file-main/src/replace-in-file.spec.js000066400000000000000000000632511511441262100217520ustar00rootroot00000000000000import {expect, use, should} from 'chai' import chaiAsPromised from 'chai-as-promised' import {replaceInFile, replaceInFileSync} from './replace-in-file.js' import fsAsync from 'node:fs/promises' import fs from 'node:fs' //Enable should assertion style for usage with chai-as-promised should() use(chaiAsPromised) /** * Specs */ describe('Replace in file', () => { //Test JSON const testData = 'a re place c' const testData2 = `app.setVersion('\${sourceVersion}');` /** * Prepare test files */ beforeEach(() => Promise.all([ fsAsync.writeFile('test1', testData, 'utf8'), fsAsync.writeFile('test2', testData, 'utf8'), fsAsync.writeFile('test3', 'nope', 'utf8'), fsAsync.writeFile('test4', testData2, 'utf8'), ])) /** * Clean up test files */ afterEach(() => Promise.all([ fsAsync.unlink('test1'), fsAsync.unlink('test2'), fsAsync.unlink('test3'), fsAsync.unlink('test4'), ])) /** * Async */ describe('Async', () => { it('should replace contents in a single file with regex', done => { replaceInFile({ files: 'test1', from: /re\splace/g, to: 'b', }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) done() }) }) it('should pass file as an arg to a "from" function', done => { replaceInFile({ files: 'test1', from: (file) => { expect(file).to.equal('test1') return /re\splace/g }, to: 'b', }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) done() }) }) it(`should pass the match as first arg and file as last arg to a replacer function replace contents in a single file with regex`, done => { replaceInFile({ files: 'test1', from: /re\splace/g, to: (match, ...args) => { const file = args.pop() expect(match).to.equal('re place') expect(file).to.equal('test1') return 'b' }, }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) done() }) }) it('should replace contents with a string replacement', done => { replaceInFile({ files: 'test1', from: 're place', to: 'b', }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a b c') done() }) }) it(`should store in the correct target file if getTargetFile is used`, done => { replaceInFile({ files: 'test1', getTargetFile: () => 'test2', from: 're place', to: 'b', }) .then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a b c') done() }) }) it(`should pass the match as first arg and file as last arg to a replacer function and replace contents with a string replacement`, done => { replaceInFile({ files: 'test1', from: 're place', to: (match, ...args) => { const file = args.pop() expect(match).to.equal('re place') expect(file).to.equal('test1') return 'b' }, }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a b c') done() }) }) it('should replace contents in a an array of files', done => { replaceInFile({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') done() }) }) it('should expand globs', done => { replaceInFile({ files: 'test*', from: /re\splace/g, to: 'b', }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') done() }) }) it('should expand globs while excluding ignored files', done => { replaceInFile({ files: 'test*', ignore: 'test1', from: /re\splace/g, to: 'b', }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a b c') done() }) }) it('should replace substrings', done => { replaceInFile({ files: 'test1', from: /(re)\s(place)/g, to: '$2 $1', }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a place re c') done() }) }) it('should fulfill the promise on success', () => { return replaceInFile({ files: 'test1', from: /re\splace/g, to: 'b', }).should.be.fulfilled }) it('should reject the promise with an error on failure', () => { return expect(replaceInFile({ files: 'nope', from: /re\splace/g, to: 'b', })).to.eventually.be.rejectedWith(Error) }) it('should not reject the promise if allowEmptyPaths is true', () => { return replaceInFile({ files: 'nope', allowEmptyPaths: true, from: /re\splace/g, to: 'b', }).should.be.fulfilled }) it('should return a results array', done => { replaceInFile({ files: 'test1', from: /re\splace/g, to: 'b', }).then(results => { expect(results).to.be.instanceof(Array) expect(results).to.have.length(1) expect(results[0].file).to.equal('test1') done() }) }) it('should mark if something was replaced', done => { replaceInFile({ files: 'test1', from: /re\splace/g, to: 'b', }).then(results => { expect(results[0].hasChanged).to.equal(true) done() }) }) it('should not mark if nothing was replaced', done => { replaceInFile({ files: 'test1', from: 'nope', to: 'b', }).then(results => { expect(results[0].hasChanged).to.equal(false) done() }) }) it('should return correct results for multiple files', done => { replaceInFile({ files: ['test1', 'test2', 'test3'], from: /re\splace/g, to: 'b', }).then(results => { expect(results).to.have.length(3) expect(results[0].file).to.equal('test1') expect(results[0].hasChanged).to.equal(true) expect(results[1].file).to.equal('test2') expect(results[1].hasChanged).to.equal(true) expect(results[2].file).to.equal('test3') expect(results[2].hasChanged).to.equal(false) done() }) }) it('should make multiple replacements with the same string', done => { replaceInFile({ files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: 'b', }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b b c') expect(test2).to.equal('a b b c') done() }) }) it('should make multiple replacements with different strings', done => { replaceInFile({ files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: ['b', 'e'], }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b e c') expect(test2).to.equal('a b e c') done() }) }) it('should not replace with missing replacement values', done => { replaceInFile({ files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: ['b'], }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b place c') expect(test2).to.equal('a b place c') done() }) }) it('should not replace in a dry run', done => { replaceInFile({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', dry: true, }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a re place c') done() }) }) it('should return changed files for a dry run', done => { replaceInFile({ files: ['test1', 'test2', 'test3'], from: /re\splace/g, to: 'b', dry: true, }).then(results => { expect(results).to.have.length(3) expect(results[0].file).to.equal('test1') expect(results[0].hasChanged).to.equal(true) expect(results[1].file).to.equal('test2') expect(results[1].hasChanged).to.equal(true) expect(results[2].file).to.equal('test3') expect(results[2].hasChanged).to.equal(false) done() }) }) it('should accept glob configuration', done => { replaceInFile({ files: 'test1', from: /re\splace/g, to: 'b', allowEmptyPaths: true, glob: { ignore: ['test1'], }, }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a re place c') done() }) }) it('should ignore empty glob configuration', done => { replaceInFile({ files: 'test1', from: /re\splace/g, to: 'b', glob: null, }).then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a b c') done() }) }) it('should count matches if specified in config', done => { replaceInFile({ files: 'test1', from: [/re/g, /place/g], to: 'test', countMatches: true, }).then(results => { expect(results[0].numMatches).to.equal(2) done() }) }) it('should not count matches if not specified in config', done => { replaceInFile({ files: 'test1', from: [/re/g, /place/g], to: 'test', }).then(results => { expect(results[0].numMatches).to.be.undefined done() }) }) it('should return 0 matches if match not found', done => { replaceInFile({ files: 'test1', from: 'nope', to: 'test', countMatches: true, }).then(results => { expect(results[0].numMatches).to.equal(0) done() }) }) //Processors describe('processors', () => { it('uses custom processor', done => { replaceInFile({ files: 'test1', processor: input => input.replace(/place/, 'plop'), }) .then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a re plop c') done() }) }) it('uses array of custom processors', done => { replaceInFile({ files: 'test1', processor: [ input => input.replace(/place/, 'plop'), input => input.replace(/plop/, 'bloop'), ], }) .then(() => { const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a re bloop c') done() }) }) }) describe('fs', () => { it('reads and writes using a custom fs when provided', done => { const before = 'a' let written const fs = { readFile: async () => { return before }, writeFile: async (_fileName, data) => { written = data }, } replaceInFile({ files: 'test1', from: /a/, fs, to: 'z', }).then(() => { expect(written).to.equal('z') done() }) }) }) }) /** * Sync */ describe('Sync', () => { it('should error with processorAsync', function() { return expect(() => replaceInFileSync({ files: 'test1', processorAsync: async (input) => { const replaceValue = await Promise.resolve('b') return input.replace(/re\splace/g, replaceValue) }, })).to.throw(Error) }) it('should replace contents in a single file with regex', function() { replaceInFileSync({ files: 'test1', from: /re\splace/g, to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) }) it('should pass file as an arg to a "from" function', function() { replaceInFileSync({ files: 'test1', from: (file) => { expect(file).to.equal('test1') return /re\splace/g }, to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) }) it(`should pass the match as first arg and file as last arg to a replacer function replace contents in a single file with regex`, function() { replaceInFileSync({ files: 'test1', from: /re\splace/g, to: (match, ...args) => { const file = args.pop() expect(match).to.equal('re place') expect(file).to.equal('test1') return 'b' }, }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal(testData) }) it('should replace contents with a string replacement', function() { replaceInFileSync({ files: 'test1', from: 're place', to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a b c') }) it(`should store in the correct target file if getTargetFile is used`, () => { replaceInFileSync({ files: 'test1', getTargetFile: () => 'test2', from: 're place', to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a b c') }) it(`should pass the match as first arg and file as last arg to a replacer function and replace contents with a string replacement`, function() { replaceInFileSync({ files: 'test1', from: 're place', to: (match, ...args) => { const file = args.pop() expect(match).to.equal('re place') expect(file).to.equal('test1') return 'b' }, }) const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a b c') }) it('should replace contents in a an array of files', function() { replaceInFileSync({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') }) it('should expand globs', function() { replaceInFileSync({ files: 'test*', from: /re\splace/g, to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') }) it('should return a results array', function() { const results = replaceInFileSync({ files: 'test1', from: /re\splace/g, to: 'b', }) expect(results).to.be.instanceof(Array) expect(results).to.have.length(1) expect(results[0].file).to.equal('test1') }) it('should mark if something was replaced', function() { const results = replaceInFileSync({ files: 'test1', from: /re\splace/g, to: 'b', }) expect(results[0].hasChanged).to.equal(true) }) it('should not mark if nothing was replaced', function() { const results = replaceInFileSync({ files: 'test1', from: 'nope', to: 'b', }) expect(results[0].hasChanged).to.equal(false) }) it('should return correct results for multiple files', function() { const results = replaceInFileSync({ files: ['test1', 'test2', 'test3'], from: /re\splace/g, to: 'b', }) expect(results).to.have.length(3) expect(results[0].file).to.equal('test1') expect(results[0].hasChanged).to.equal(true) expect(results[1].file).to.equal('test2') expect(results[1].hasChanged).to.equal(true) expect(results[2].file).to.equal('test3') expect(results[2].hasChanged).to.equal(false) }) it('should make multiple replacements with the same string', () => { replaceInFileSync({ files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b b c') expect(test2).to.equal('a b b c') }) it('should make multiple replacements with different strings', () => { replaceInFileSync({ files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: ['b', 'e'], }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b e c') expect(test2).to.equal('a b e c') }) it('should not replace with missing replacement values', () => { replaceInFileSync({ files: ['test1', 'test2', 'test3'], from: [/re/g, /place/g], to: ['b'], }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b place c') expect(test2).to.equal('a b place c') }) it('should expand globs while excluding ignored files', () => { replaceInFileSync({ files: 'test*', ignore: 'test1', from: /re\splace/g, to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a b c') }) it('should support an array of ignored files', () => { replaceInFileSync({ files: 'test*', ignore: ['test1', 'test3'], from: /re\splace/g, to: 'b', }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a b c') }) it('should work without expanding globs if disabled', () => { replaceInFileSync({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', disableGlobs: true, }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a b c') expect(test2).to.equal('a b c') }) it('should not replace in a dry run', () => { replaceInFileSync({ files: ['test1', 'test2'], from: /re\splace/g, to: 'b', dry: true, }) const test1 = fs.readFileSync('test1', 'utf8') const test2 = fs.readFileSync('test2', 'utf8') expect(test1).to.equal('a re place c') expect(test2).to.equal('a re place c') }) it('should return changed files for a dry run', () => { const results = replaceInFileSync({ files: ['test1', 'test2', 'test3'], from: /re\splace/g, to: 'b', dry: true, }) expect(results).to.have.length(3) expect(results[0].file).to.equal('test1') expect(results[0].hasChanged).to.equal(true) expect(results[1].file).to.equal('test2') expect(results[1].hasChanged).to.equal(true) expect(results[2].file).to.equal('test3') expect(results[2].hasChanged).to.equal(false) }) it('should count matches and replacements if specified in config', () => { const results = replaceInFileSync({ files: 'test1', from: [/re/g, /place/g], to: 'test', countMatches: true, }) expect(results[0].numMatches).to.equal(2) expect(results[0].numReplacements).to.equal(2) }) it('should differentiate between matches and replacements', () => { const results = replaceInFileSync({ files: 'test1', from: [/re/g, /place/g], to: 're', countMatches: true, }) expect(results[0].numMatches).to.equal(2) expect(results[0].numReplacements).to.equal(1) }) it('should count multiple replacements correctly', () => { const results = replaceInFileSync({ files: 'test1', from: [/re/g, /place/g], to: 'place', countMatches: true, }) expect(results[0].numMatches).to.equal(3) expect(results[0].numReplacements).to.equal(1) }) it(`should not count matches or replacements if not specified in config`, () => { const results = replaceInFileSync({ files: 'test1', from: [/re/g, /place/g], to: 'test', }) expect(results[0].numMatches).to.be.undefined expect(results[0].numReplacements).to.be.undefined }) it('should return 0 matches and replacements if match not found', () => { const results = replaceInFileSync({ files: 'test1', from: 'nope', to: 'test', countMatches: true, }) expect(results[0].numMatches).to.equal(0) expect(results[0].numReplacements).to.equal(0) }) describe('fsSync', () => { it('reads and writes using a custom fsSync when provided', () => { const before = 'a' let written const fsSync = { readFileSync: () => { return before }, writeFileSync: (_fileName, data) => { written = data return data }, } const results = replaceInFileSync({ files: 'test1', from: /a/, fsSync, to: 'z', }) expect(results[0].file).to.equal('test1') expect(written).to.equal('z') }) }) //Processors describe('processors', () => { it('uses custom processor', () => { replaceInFileSync({ files: 'test1', processor: input => input.replace(/place/, 'plop'), }) const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a re plop c') }) it('uses array of custom processors', () => { replaceInFileSync({ files: 'test1', processor: [ input => input.replace(/place/, 'plop'), input => input.replace(/plop/, 'bloop'), ], }) const test1 = fs.readFileSync('test1', 'utf8') expect(test1).to.equal('a re bloop c') }) }) //#197 describe('#197', () => { before(() => fs.writeFileSync('test197', 'ABC 123\n6666666\nDEF 456', 'utf8')) after(() => fs.unlinkSync('test197')) it('should replace contents when a regex string is passed', () => { replaceInFileSync({ files: 'test197', from: '/\\w{3} \\d{3}/g', to: 'replaced', }) const test197 = fs.readFileSync('test197', 'utf8') expect(test197).to.equal('replaced\n6666666\nreplaced') }) }) }) describe('module export', () => { it(`exports named replaceInFile and replaceInFileSync from module`, () => { expect(replaceInFile).to.be.a('function') expect(replaceInFileSync).to.be.a('function') }) }) //https://github.com/adamreisnz/replace-in-file/issues/156 describe('special characters', () => { it(`should replace contents with special characters and count matches correctly`, done => { const results = replaceInFileSync({ files: 'test4', from: '${sourceVersion}', to: '1.0.0', countMatches: true, }) const test4 = fs.readFileSync('test4', 'utf8') expect(test4).to.equal(`app.setVersion('1.0.0');`) expect(results).to.have.length(1) expect(results[0].file).to.equal('test4') expect(results[0].hasChanged).to.equal(true) expect(results[0].numMatches).to.equal(1) done() }) it(`should replace contents with special characters and count matches correctly (2)`, done => { const results = replaceInFileSync({ files: 'test4', from: `\${sourceVersion}')`, to: '1.0.0', countMatches: true, }) const test4 = fs.readFileSync('test4', 'utf8') expect(test4).to.equal(`app.setVersion('1.0.0;`) expect(results).to.have.length(1) expect(results[0].file).to.equal('test4') expect(results[0].hasChanged).to.equal(true) expect(results[0].numMatches).to.equal(1) done() }) }) }) replace-in-file-main/types/000077500000000000000000000000001511441262100160755ustar00rootroot00000000000000replace-in-file-main/types/index.d.ts000066400000000000000000000033061511441262100200000ustar00rootroot00000000000000 declare module 'replace-in-file' { export function replaceInFile(config: ReplaceInFileConfig & { from?: never, to?: never, processor: ReplaceInFileConfig["processor"] }): Promise; export function replaceInFile(config: ReplaceInFileConfig & { from: ReplaceInFileConfig["from"], to: ReplaceInFileConfig["to"], processor?: never }): Promise; export default replaceInFile; export namespace replaceInFile { export function replaceInFileSync(config: ReplaceInFileConfig): ReplaceResult[]; export function replaceInFile(config: ReplaceInFileConfig): Promise; } export function replaceInFileSync(config: ReplaceInFileConfig): ReplaceResult[]; export type From = string | RegExp | FromCallback; export type To = string | ToCallback; export interface ReplaceInFileConfig { files: string | string[]; ignore?: string | string[]; from?: From | Array; to?: To | Array; getTargetFile?(source: string): string; countMatches?: boolean; allowEmptyPaths?: boolean; disableGlobs?: boolean; encoding?: string; dry?: boolean; glob?: object; processor?: ProcessorCallback | Array; processorAsync?: ProcessorAsyncCallback | Array; } export interface ReplaceResult { file: string; hasChanged: boolean; numMatches?: number, numReplacements?: number, } } type FromCallback = (file: string) => string | RegExp | (RegExp | string)[]; type ToCallback = (match: string, file: string) => string | string[]; type ProcessorCallback = (input: string, file: string) => string; type ProcessorAsyncCallback = (input: string, file: string) => Promise; replace-in-file-main/yarn.lock000066400000000000000000001717571511441262100165760ustar00rootroot00000000000000# This file is generated by running "yarn install" inside your project. # Manual changes might be lost - proceed with caution! __metadata: version: 8 cacheKey: 10c0 "@bcoe/v8-coverage@npm:^1.0.1": version: 1.0.2 resolution: "@bcoe/v8-coverage@npm:1.0.2" checksum: 10c0/1eb1dc93cc17fb7abdcef21a6e7b867d6aa99a7ec88ec8207402b23d9083ab22a8011213f04b2cf26d535f1d22dc26139b7929e6c2134c254bd1e14ba5e678c3 languageName: node linkType: hard "@eslint-community/eslint-utils@npm:^4.8.0": version: 4.9.0 resolution: "@eslint-community/eslint-utils@npm:4.9.0" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.12.1": version: 4.12.2 resolution: "@eslint-community/regexpp@npm:4.12.2" checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d languageName: node linkType: hard "@eslint/config-array@npm:^0.21.1": version: 0.21.1 resolution: "@eslint/config-array@npm:0.21.1" dependencies: "@eslint/object-schema": "npm:^2.1.7" debug: "npm:^4.3.1" minimatch: "npm:^3.1.2" checksum: 10c0/2f657d4edd6ddcb920579b72e7a5b127865d4c3fb4dda24f11d5c4f445a93ca481aebdbd6bf3291c536f5d034458dbcbb298ee3b698bc6c9dd02900fe87eec3c languageName: node linkType: hard "@eslint/config-helpers@npm:^0.4.2": version: 0.4.2 resolution: "@eslint/config-helpers@npm:0.4.2" dependencies: "@eslint/core": "npm:^0.17.0" checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4 languageName: node linkType: hard "@eslint/core@npm:^0.17.0": version: 0.17.0 resolution: "@eslint/core@npm:0.17.0" dependencies: "@types/json-schema": "npm:^7.0.15" checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e languageName: node linkType: hard "@eslint/eslintrc@npm:^3.3.1": version: 3.3.3 resolution: "@eslint/eslintrc@npm:3.3.3" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" espree: "npm:^10.0.1" globals: "npm:^14.0.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.1" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" checksum: 10c0/532c7acc7ddd042724c28b1f020bd7bf148fcd4653bb44c8314168b5f772508c842ce4ee070299cac51c5c5757d2124bdcfcef5551c8c58ff9986e3e17f2260d languageName: node linkType: hard "@eslint/js@npm:9.39.1, @eslint/js@npm:^9.39.1": version: 9.39.1 resolution: "@eslint/js@npm:9.39.1" checksum: 10c0/6f7f26f8cdb7ad6327bbf9741973b6278eb946f18f70e35406e88194b0d5c522d0547a34a02f2a208eec95c5d1388cdf7ccb20039efd2e4cb6655615247a50f1 languageName: node linkType: hard "@eslint/object-schema@npm:^2.1.7": version: 2.1.7 resolution: "@eslint/object-schema@npm:2.1.7" checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87 languageName: node linkType: hard "@eslint/plugin-kit@npm:^0.4.1": version: 0.4.1 resolution: "@eslint/plugin-kit@npm:0.4.1" dependencies: "@eslint/core": "npm:^0.17.0" levn: "npm:^0.4.1" checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b languageName: node linkType: hard "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 languageName: node linkType: hard "@humanfs/node@npm:^0.16.6": version: 0.16.7 resolution: "@humanfs/node@npm:0.16.7" dependencies: "@humanfs/core": "npm:^0.19.1" "@humanwhocodes/retry": "npm:^0.4.0" checksum: 10c0/9f83d3cf2cfa37383e01e3cdaead11cd426208e04c44adcdd291aa983aaf72d7d3598844d2fe9ce54896bb1bf8bd4b56883376611c8905a19c44684642823f30 languageName: node linkType: hard "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 languageName: node linkType: hard "@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": version: 0.4.3 resolution: "@humanwhocodes/retry@npm:0.4.3" checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 languageName: node linkType: hard "@isaacs/balanced-match@npm:^4.0.1": version: 4.0.1 resolution: "@isaacs/balanced-match@npm:4.0.1" checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 languageName: node linkType: hard "@isaacs/brace-expansion@npm:^5.0.0": version: 5.0.0 resolution: "@isaacs/brace-expansion@npm:5.0.0" dependencies: "@isaacs/balanced-match": "npm:^4.0.1" checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 languageName: node linkType: hard "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" dependencies: string-width: "npm:^5.1.2" string-width-cjs: "npm:string-width@^4.2.0" strip-ansi: "npm:^7.0.1" strip-ansi-cjs: "npm:strip-ansi@^6.0.1" wrap-ansi: "npm:^8.1.0" wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e languageName: node linkType: hard "@istanbuljs/schema@npm:^0.1.2": version: 0.1.2 resolution: "@istanbuljs/schema@npm:0.1.2" checksum: 10c0/0bd98d140df9afe03c1edc54f5172ec07c114cb1a8771e7be6d3d28dc76c5292eb31fb6cf1834c1eb786c35920687487b46f67736a6c79034bea3f2ca1a93aec languageName: node linkType: hard "@istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a languageName: node linkType: hard "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.14": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 languageName: node linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 languageName: node linkType: hard "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd languageName: node linkType: hard "@types/color-name@npm:^1.1.1": version: 1.1.1 resolution: "@types/color-name@npm:1.1.1" checksum: 10c0/2abeac8d8d833e0622c66f21487cc8b522792abb2eff2e40df0e3e53261728cb65bab590edf24953eb8d8653ec88044dc801d9a4e58c489a0f10c025de522868 languageName: node linkType: hard "@types/estree@npm:^1.0.6": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 languageName: node linkType: hard "@types/json-schema@npm:^7.0.15": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db languageName: node linkType: hard "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 languageName: node linkType: hard "acorn@npm:^8.12.0": version: 8.12.0 resolution: "acorn@npm:8.12.0" bin: acorn: bin/acorn checksum: 10c0/a19f9dead009d3b430fa3c253710b47778cdaace15b316de6de93a68c355507bc1072a9956372b6c990cbeeb167d4a929249d0faeb8ae4bb6911d68d53299549 languageName: node linkType: hard "acorn@npm:^8.15.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: acorn: bin/acorn checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec languageName: node linkType: hard "ajv@npm:^6.12.4": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: fast-deep-equal: "npm:^3.1.1" fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 languageName: node linkType: hard "ansi-regex@npm:^5.0.0, ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 languageName: node linkType: hard "ansi-regex@npm:^6.0.1": version: 6.0.1 resolution: "ansi-regex@npm:6.0.1" checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 languageName: node linkType: hard "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.2.0 resolution: "ansi-styles@npm:4.2.0" dependencies: "@types/color-name": "npm:^1.1.1" color-convert: "npm:^2.0.1" checksum: 10c0/866d994769663a7897f7c3bf77abebb324ec40880cd56e621df7b61978323dd93183523ee254ce6730ed93bea064119255be79aaf5082d0d8268aa3091874122 languageName: node linkType: hard "ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c languageName: node linkType: hard "ansi-styles@npm:^6.2.1": version: 6.2.3 resolution: "ansi-styles@npm:6.2.3" checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.0 resolution: "balanced-match@npm:1.0.0" checksum: 10c0/d45f1aeec59d87562cd65415e2890b9fd6ab7fa89941a46fb2eb505e2165158680ee1be7110586cf86f3a9599f1b88ec4a7fcf57594560ca37814a560ab95f41 languageName: node linkType: hard "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 languageName: node linkType: hard "brace-expansion@npm:^2.0.1": version: 2.0.1 resolution: "brace-expansion@npm:2.0.1" dependencies: balanced-match: "npm:^1.0.0" checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f languageName: node linkType: hard "browser-stdout@npm:^1.3.1": version: 1.3.1 resolution: "browser-stdout@npm:1.3.1" checksum: 10c0/c40e482fd82be872b6ea7b9f7591beafbf6f5ba522fe3dade98ba1573a1c29a11101564993e4eb44e5488be8f44510af072df9a9637c739217eb155ceb639205 languageName: node linkType: hard "c8@npm:^10.1.3": version: 10.1.3 resolution: "c8@npm:10.1.3" dependencies: "@bcoe/v8-coverage": "npm:^1.0.1" "@istanbuljs/schema": "npm:^0.1.3" find-up: "npm:^5.0.0" foreground-child: "npm:^3.1.1" istanbul-lib-coverage: "npm:^3.2.0" istanbul-lib-report: "npm:^3.0.1" istanbul-reports: "npm:^3.1.6" test-exclude: "npm:^7.0.1" v8-to-istanbul: "npm:^9.0.0" yargs: "npm:^17.7.2" yargs-parser: "npm:^21.1.1" peerDependencies: monocart-coverage-reports: ^2 peerDependenciesMeta: monocart-coverage-reports: optional: true bin: c8: bin/c8.js checksum: 10c0/1265ddbcb0e624fe200978e9263faf948cb9694ce8e6b858adbb14f1186de2e6c451aa4aabb821e9eb7f1972859e14691eaf2ff12ad96be7a3fc0e39946fc569 languageName: node linkType: hard "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 languageName: node linkType: hard "camelcase@npm:^6.0.0": version: 6.2.0 resolution: "camelcase@npm:6.2.0" checksum: 10c0/d9f403a6153394c5bc68ec9c2672df1d04f00a7847708be12641b483b936cbfaaf14d891f92bb0026184e03923be24acd15a0476761e1286eec484d68f615fe5 languageName: node linkType: hard "chai-as-promised@npm:^8.0.2": version: 8.0.2 resolution: "chai-as-promised@npm:8.0.2" dependencies: check-error: "npm:^2.1.1" peerDependencies: chai: ">= 2.1.2 < 7" checksum: 10c0/829bcd98c04f0b108b2f7379efd33c668e53fbf0bda8d460dc63c96a709fd5de79909392aa78b4256de16a4d57640641d7affc516111e371d6e9f6aec1cc6c8a languageName: node linkType: hard "chai@npm:^6.2.1": version: 6.2.1 resolution: "chai@npm:6.2.1" checksum: 10c0/0c2d84392d7c6d44ca5d14d94204f1760e22af68b83d1f4278b5c4d301dabfc0242da70954dd86b1eda01e438f42950de6cf9d569df2103678538e4014abe50b languageName: node linkType: hard "chalk@npm:^4.0.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 languageName: node linkType: hard "chalk@npm:^4.1.0": version: 4.1.0 resolution: "chalk@npm:4.1.0" dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" checksum: 10c0/3787bd65ecd98ab3a1acc3b4f71d006268a675875e49ee6ea75fb54ba73d268b97544368358c18c42445e408e076ae8ad5cec8fbad36942a2c7ac654883dc61e languageName: node linkType: hard "chalk@npm:^5.6.2": version: 5.6.2 resolution: "chalk@npm:5.6.2" checksum: 10c0/99a4b0f0e7991796b1e7e3f52dceb9137cae2a9dfc8fc0784a550dc4c558e15ab32ed70b14b21b52beb2679b4892b41a0aa44249bcb996f01e125d58477c6976 languageName: node linkType: hard "check-error@npm:^2.1.1": version: 2.1.1 resolution: "check-error@npm:2.1.1" checksum: 10c0/979f13eccab306cf1785fa10941a590b4e7ea9916ea2a4f8c87f0316fc3eab07eabefb6e587424ef0f88cbcd3805791f172ea739863ca3d7ce2afc54641c7f0e languageName: node linkType: hard "chokidar@npm:^4.0.1": version: 4.0.3 resolution: "chokidar@npm:4.0.3" dependencies: readdirp: "npm:^4.0.1" checksum: 10c0/a58b9df05bb452f7d105d9e7229ac82fa873741c0c40ddcc7bb82f8a909fbe3f7814c9ebe9bc9a2bef9b737c0ec6e2d699d179048ef06ad3ec46315df0ebe6ad languageName: node linkType: hard "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" dependencies: string-width: "npm:^4.2.0" strip-ansi: "npm:^6.0.1" wrap-ansi: "npm:^7.0.0" checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 languageName: node linkType: hard "cliui@npm:^9.0.1": version: 9.0.1 resolution: "cliui@npm:9.0.1" dependencies: string-width: "npm:^7.2.0" strip-ansi: "npm:^7.1.0" wrap-ansi: "npm:^9.0.0" checksum: 10c0/13441832e9efe7c7a76bd2b8e683555c478d461a9f249dc5db9b17fe8d4b47fa9277b503914b90bd00e4a151abb6b9b02b2288972ffe2e5e3ca40bcb1c2330d3 languageName: node linkType: hard "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" dependencies: color-name: "npm:~1.1.4" checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 languageName: node linkType: hard "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f languageName: node linkType: hard "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b languageName: node linkType: hard "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 languageName: node linkType: hard "debug@npm:^4.3.1": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: ms: "npm:2.1.2" peerDependenciesMeta: supports-color: optional: true checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 languageName: node linkType: hard "debug@npm:^4.3.2": version: 4.3.5 resolution: "debug@npm:4.3.5" dependencies: ms: "npm:2.1.2" peerDependenciesMeta: supports-color: optional: true checksum: 10c0/082c375a2bdc4f4469c99f325ff458adad62a3fc2c482d59923c260cb08152f34e2659f72b3767db8bb2f21ca81a60a42d1019605a412132d7b9f59363a005cc languageName: node linkType: hard "debug@npm:^4.3.5": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 languageName: node linkType: hard "decamelize@npm:^4.0.0": version: 4.0.0 resolution: "decamelize@npm:4.0.0" checksum: 10c0/e06da03fc05333e8cd2778c1487da67ffbea5b84e03ca80449519b8fa61f888714bbc6f459ea963d5641b4aa98832130eb5cd193d90ae9f0a27eee14be8e278d languageName: node linkType: hard "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c languageName: node linkType: hard "diff@npm:^7.0.0": version: 7.0.0 resolution: "diff@npm:7.0.0" checksum: 10c0/251fd15f85ffdf814cfc35a728d526b8d2ad3de338dcbd011ac6e57c461417090766b28995f8ff733135b5fbc3699c392db1d5e27711ac4e00244768cd1d577b languageName: node linkType: hard "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 languageName: node linkType: hard "emoji-regex@npm:^10.3.0": version: 10.6.0 resolution: "emoji-regex@npm:10.6.0" checksum: 10c0/1e4aa097bb007301c3b4b1913879ae27327fdc48e93eeefefe3b87e495eb33c5af155300be951b4349ff6ac084f4403dc9eff970acba7c1c572d89396a9a32d7 languageName: node linkType: hard "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 languageName: node linkType: hard "emoji-regex@npm:^9.2.2": version: 9.2.2 resolution: "emoji-regex@npm:9.2.2" checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 languageName: node linkType: hard "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" checksum: 10c0/afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d languageName: node linkType: hard "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 languageName: node linkType: hard "eslint-scope@npm:^8.4.0": version: 8.4.0 resolution: "eslint-scope@npm:8.4.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 languageName: node linkType: hard "eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 languageName: node linkType: hard "eslint-visitor-keys@npm:^4.0.0": version: 4.0.0 resolution: "eslint-visitor-keys@npm:4.0.0" checksum: 10c0/76619f42cf162705a1515a6868e6fc7567e185c7063a05621a8ac4c3b850d022661262c21d9f1fc1d144ecf0d5d64d70a3f43c15c3fc969a61ace0fb25698cf5 languageName: node linkType: hard "eslint-visitor-keys@npm:^4.2.1": version: 4.2.1 resolution: "eslint-visitor-keys@npm:4.2.1" checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 languageName: node linkType: hard "eslint@npm:^9.39.1": version: 9.39.1 resolution: "eslint@npm:9.39.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.8.0" "@eslint-community/regexpp": "npm:^4.12.1" "@eslint/config-array": "npm:^0.21.1" "@eslint/config-helpers": "npm:^0.4.2" "@eslint/core": "npm:^0.17.0" "@eslint/eslintrc": "npm:^3.3.1" "@eslint/js": "npm:9.39.1" "@eslint/plugin-kit": "npm:^0.4.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/retry": "npm:^0.4.2" "@types/estree": "npm:^1.0.6" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" escape-string-regexp: "npm:^4.0.0" eslint-scope: "npm:^8.4.0" eslint-visitor-keys: "npm:^4.2.1" espree: "npm:^10.4.0" esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" file-entry-cache: "npm:^8.0.0" find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" lodash.merge: "npm:^4.6.2" minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" peerDependencies: jiti: "*" peerDependenciesMeta: jiti: optional: true bin: eslint: bin/eslint.js checksum: 10c0/59b2480639404ba24578ca480f973683b87b7aac8aa7e349240474a39067804fd13cd8b9cb22fee074170b8c7c563b57bab703ec0f0d3f81ea017e5d2cad299d languageName: node linkType: hard "espree@npm:^10.0.1": version: 10.1.0 resolution: "espree@npm:10.1.0" dependencies: acorn: "npm:^8.12.0" acorn-jsx: "npm:^5.3.2" eslint-visitor-keys: "npm:^4.0.0" checksum: 10c0/52e6feaa77a31a6038f0c0e3fce93010a4625701925b0715cd54a2ae190b3275053a0717db698697b32653788ac04845e489d6773b508d6c2e8752f3c57470a0 languageName: node linkType: hard "espree@npm:^10.4.0": version: 10.4.0 resolution: "espree@npm:10.4.0" dependencies: acorn: "npm:^8.15.0" acorn-jsx: "npm:^5.3.2" eslint-visitor-keys: "npm:^4.2.1" checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b languageName: node linkType: hard "esquery@npm:^1.5.0": version: 1.5.0 resolution: "esquery@npm:1.5.0" dependencies: estraverse: "npm:^5.1.0" checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 languageName: node linkType: hard "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" dependencies: estraverse: "npm:^5.2.0" checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 languageName: node linkType: hard "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 languageName: node linkType: hard "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 languageName: node linkType: hard "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b languageName: node linkType: hard "fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 languageName: node linkType: hard "file-entry-cache@npm:^8.0.0": version: 8.0.0 resolution: "file-entry-cache@npm:8.0.0" dependencies: flat-cache: "npm:^4.0.0" checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 languageName: node linkType: hard "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" dependencies: locate-path: "npm:^6.0.0" path-exists: "npm:^4.0.0" checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a languageName: node linkType: hard "flat-cache@npm:^4.0.0": version: 4.0.1 resolution: "flat-cache@npm:4.0.1" dependencies: flatted: "npm:^3.2.9" keyv: "npm:^4.5.4" checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc languageName: node linkType: hard "flat@npm:^5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" bin: flat: cli.js checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe languageName: node linkType: hard "flatted@npm:^3.2.9": version: 3.3.1 resolution: "flatted@npm:3.3.1" checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf languageName: node linkType: hard "foreground-child@npm:^3.1.0, foreground-child@npm:^3.1.1": version: 3.2.1 resolution: "foreground-child@npm:3.2.1" dependencies: cross-spawn: "npm:^7.0.0" signal-exit: "npm:^4.0.1" checksum: 10c0/9a53a33dbd87090e9576bef65fb4a71de60f6863a8062a7b11bc1cbe3cc86d428677d7c0b9ef61cdac11007ac580006f78bd5638618d564cfd5e6fd713d6878f languageName: node linkType: hard "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde languageName: node linkType: hard "get-east-asian-width@npm:^1.0.0": version: 1.4.0 resolution: "get-east-asian-width@npm:1.4.0" checksum: 10c0/4e481d418e5a32061c36fbb90d1b225a254cc5b2df5f0b25da215dcd335a3c111f0c2023ffda43140727a9cafb62dac41d022da82c08f31083ee89f714ee3b83 languageName: node linkType: hard "glob-parent@npm:^6.0.2": version: 6.0.2 resolution: "glob-parent@npm:6.0.2" dependencies: is-glob: "npm:^4.0.3" checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 languageName: node linkType: hard "glob@npm:^10.4.1": version: 10.4.2 resolution: "glob@npm:10.4.2" dependencies: foreground-child: "npm:^3.1.0" jackspeak: "npm:^3.1.2" minimatch: "npm:^9.0.4" minipass: "npm:^7.1.2" package-json-from-dist: "npm:^1.0.0" path-scurry: "npm:^1.11.1" bin: glob: dist/esm/bin.mjs checksum: 10c0/2c7296695fa75a935f3ad17dc62e4e170a8bb8752cf64d328be8992dd6ad40777939003754e10e9741ff8fbe43aa52fba32d6930d0ffa0e3b74bc3fb5eebaa2f languageName: node linkType: hard "glob@npm:^10.4.5": version: 10.5.0 resolution: "glob@npm:10.5.0" dependencies: foreground-child: "npm:^3.1.0" jackspeak: "npm:^3.1.2" minimatch: "npm:^9.0.4" minipass: "npm:^7.1.2" package-json-from-dist: "npm:^1.0.0" path-scurry: "npm:^1.11.1" bin: glob: dist/esm/bin.mjs checksum: 10c0/100705eddbde6323e7b35e1d1ac28bcb58322095bd8e63a7d0bef1a2cdafe0d0f7922a981b2b48369a4f8c1b077be5c171804534c3509dfe950dde15fbe6d828 languageName: node linkType: hard "glob@npm:^13.0.0": version: 13.0.0 resolution: "glob@npm:13.0.0" dependencies: minimatch: "npm:^10.1.1" minipass: "npm:^7.1.2" path-scurry: "npm:^2.0.0" checksum: 10c0/8e2f5821f3f7c312dd102e23a15b80c79e0837a9872784293ba2e15ec73b3f3749a49a42a31bfcb4e52c84820a474e92331c2eebf18819d20308f5c33876630a languageName: node linkType: hard "globals@npm:^14.0.0": version: 14.0.0 resolution: "globals@npm:14.0.0" checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 languageName: node linkType: hard "he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" bin: he: bin/he checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 languageName: node linkType: hard "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 languageName: node linkType: hard "ignore@npm:^5.2.0": version: 5.3.1 resolution: "ignore@npm:5.3.1" checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd languageName: node linkType: hard "import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: parent-module: "npm:^1.0.0" resolve-from: "npm:^4.0.0" checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 languageName: node linkType: hard "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 languageName: node linkType: hard "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc languageName: node linkType: hard "is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: is-extglob: "npm:^2.1.1" checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a languageName: node linkType: hard "is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 languageName: node linkType: hard "is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" checksum: 10c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53 languageName: node linkType: hard "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d languageName: node linkType: hard "istanbul-lib-coverage@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-coverage@npm:3.0.0" checksum: 10c0/29ab1980e973f169d0de899256c193caff192f30e5e4f50ec40bddac307d454c7c6493836fffea633469e7d1d1ab7fe04fa64c426f8bf8d14b17679284f5fd07 languageName: node linkType: hard "istanbul-lib-coverage@npm:^3.2.0": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b languageName: node linkType: hard "istanbul-lib-report@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-report@npm:3.0.0" dependencies: istanbul-lib-coverage: "npm:^3.0.0" make-dir: "npm:^3.0.0" supports-color: "npm:^7.1.0" checksum: 10c0/81b0d5187c7603ed71bdea0b701a7329f8146549ca19aa26d91b4a163aea756f9d55c1a6dc1dcd087e24dfcb99baa69e266a68644fbfd5dc98107d6f6f5948d2 languageName: node linkType: hard "istanbul-lib-report@npm:^3.0.1": version: 3.0.1 resolution: "istanbul-lib-report@npm:3.0.1" dependencies: istanbul-lib-coverage: "npm:^3.0.0" make-dir: "npm:^4.0.0" supports-color: "npm:^7.1.0" checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 languageName: node linkType: hard "istanbul-reports@npm:^3.1.6": version: 3.1.7 resolution: "istanbul-reports@npm:3.1.7" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 languageName: node linkType: hard "jackspeak@npm:^3.1.2": version: 3.4.0 resolution: "jackspeak@npm:3.4.0" dependencies: "@isaacs/cliui": "npm:^8.0.2" "@pkgjs/parseargs": "npm:^0.11.0" dependenciesMeta: "@pkgjs/parseargs": optional: true checksum: 10c0/7e42d1ea411b4d57d43ea8a6afbca9224382804359cb72626d0fc45bb8db1de5ad0248283c3db45fe73e77210750d4fcc7c2b4fe5d24fda94aaa24d658295c5f languageName: node linkType: hard "js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f languageName: node linkType: hard "js-yaml@npm:^4.1.1": version: 4.1.1 resolution: "js-yaml@npm:4.1.1" dependencies: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 languageName: node linkType: hard "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce languageName: node linkType: hard "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 languageName: node linkType: hard "keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: json-buffer: "npm:3.0.1" checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e languageName: node linkType: hard "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" dependencies: prelude-ls: "npm:^1.2.1" type-check: "npm:~0.4.0" checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e languageName: node linkType: hard "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" dependencies: p-locate: "npm:^5.0.0" checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 languageName: node linkType: hard "lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 languageName: node linkType: hard "log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: chalk: "npm:^4.1.0" is-unicode-supported: "npm:^0.1.0" checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 languageName: node linkType: hard "lru-cache@npm:^10.2.0": version: 10.2.2 resolution: "lru-cache@npm:10.2.2" checksum: 10c0/402d31094335851220d0b00985084288136136992979d0e015f0f1697e15d1c86052d7d53ae86b614e5b058425606efffc6969a31a091085d7a2b80a8a1e26d6 languageName: node linkType: hard "lru-cache@npm:^11.0.0": version: 11.2.4 resolution: "lru-cache@npm:11.2.4" checksum: 10c0/4a24f9b17537619f9144d7b8e42cd5a225efdfd7076ebe7b5e7dc02b860a818455201e67fbf000765233fe7e339d3c8229fc815e9b58ee6ede511e07608c19b2 languageName: node linkType: hard "make-dir@npm:^3.0.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: semver: "npm:^6.0.0" checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa languageName: node linkType: hard "make-dir@npm:^4.0.0": version: 4.0.0 resolution: "make-dir@npm:4.0.0" dependencies: semver: "npm:^7.5.3" checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 languageName: node linkType: hard "minimatch@npm:^10.1.1": version: 10.1.1 resolution: "minimatch@npm:10.1.1" dependencies: "@isaacs/brace-expansion": "npm:^5.0.0" checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 languageName: node linkType: hard "minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: "npm:^1.1.7" checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 languageName: node linkType: hard "minimatch@npm:^9.0.4": version: 9.0.4 resolution: "minimatch@npm:9.0.4" dependencies: brace-expansion: "npm:^2.0.1" checksum: 10c0/2c16f21f50e64922864e560ff97c587d15fd491f65d92a677a344e970fe62aafdbeafe648965fa96d33c061b4d0eabfe0213466203dd793367e7f28658cf6414 languageName: node linkType: hard "minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: brace-expansion: "npm:^2.0.1" checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed languageName: node linkType: hard "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 languageName: node linkType: hard "mocha@npm:^11.7.5": version: 11.7.5 resolution: "mocha@npm:11.7.5" dependencies: browser-stdout: "npm:^1.3.1" chokidar: "npm:^4.0.1" debug: "npm:^4.3.5" diff: "npm:^7.0.0" escape-string-regexp: "npm:^4.0.0" find-up: "npm:^5.0.0" glob: "npm:^10.4.5" he: "npm:^1.2.0" is-path-inside: "npm:^3.0.3" js-yaml: "npm:^4.1.0" log-symbols: "npm:^4.1.0" minimatch: "npm:^9.0.5" ms: "npm:^2.1.3" picocolors: "npm:^1.1.1" serialize-javascript: "npm:^6.0.2" strip-json-comments: "npm:^3.1.1" supports-color: "npm:^8.1.1" workerpool: "npm:^9.2.0" yargs: "npm:^17.7.2" yargs-parser: "npm:^21.1.1" yargs-unparser: "npm:^2.0.0" bin: _mocha: bin/_mocha mocha: bin/mocha.js checksum: 10c0/e6150cba85345aaabbc5b2e7341b1e6706b878f5a9782960cad57fd4cc458730a76d08c5f1a3e05d3ebb49cad93b455764bb00727bd148dcaf0c6dd4fa665b3d languageName: node linkType: hard "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc languageName: node linkType: hard "ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 languageName: node linkType: hard "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 languageName: node linkType: hard "optionator@npm:^0.9.3": version: 0.9.4 resolution: "optionator@npm:0.9.4" dependencies: deep-is: "npm:^0.1.3" fast-levenshtein: "npm:^2.0.6" levn: "npm:^0.4.1" prelude-ls: "npm:^1.2.1" type-check: "npm:^0.4.0" word-wrap: "npm:^1.2.5" checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 languageName: node linkType: hard "p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: yocto-queue: "npm:^0.1.0" checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a languageName: node linkType: hard "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" dependencies: p-limit: "npm:^3.0.2" checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a languageName: node linkType: hard "package-json-from-dist@npm:^1.0.0": version: 1.0.0 resolution: "package-json-from-dist@npm:1.0.0" checksum: 10c0/e3ffaf6ac1040ab6082a658230c041ad14e72fabe99076a2081bb1d5d41210f11872403fc09082daf4387fc0baa6577f96c9c0e94c90c394fd57794b66aa4033 languageName: node linkType: hard "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" dependencies: callsites: "npm:^3.0.0" checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 languageName: node linkType: hard "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b languageName: node linkType: hard "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c languageName: node linkType: hard "path-scurry@npm:^1.11.1": version: 1.11.1 resolution: "path-scurry@npm:1.11.1" dependencies: lru-cache: "npm:^10.2.0" minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d languageName: node linkType: hard "path-scurry@npm:^2.0.0": version: 2.0.1 resolution: "path-scurry@npm:2.0.1" dependencies: lru-cache: "npm:^11.0.0" minipass: "npm:^7.1.2" checksum: 10c0/2a16ed0e81fbc43513e245aa5763354e25e787dab0d539581a6c3f0f967461a159ed6236b2559de23aa5b88e7dc32b469b6c47568833dd142a4b24b4f5cd2620 languageName: node linkType: hard "picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 languageName: node linkType: hard "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd languageName: node linkType: hard "punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 languageName: node linkType: hard "randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: safe-buffer: "npm:^5.1.0" checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 languageName: node linkType: hard "readdirp@npm:^4.0.1": version: 4.1.2 resolution: "readdirp@npm:4.1.2" checksum: 10c0/60a14f7619dec48c9c850255cd523e2717001b0e179dc7037cfa0895da7b9e9ab07532d324bfb118d73a710887d1e35f79c495fa91582784493e085d18c72c62 languageName: node linkType: hard "replace-in-file@workspace:.": version: 0.0.0-use.local resolution: "replace-in-file@workspace:." dependencies: "@eslint/js": "npm:^9.39.1" c8: "npm:^10.1.3" chai: "npm:^6.2.1" chai-as-promised: "npm:^8.0.2" chalk: "npm:^5.6.2" eslint: "npm:^9.39.1" glob: "npm:^13.0.0" mocha: "npm:^11.7.5" yargs: "npm:^18.0.0" bin: replace-in-file: ./bin/cli.js languageName: unknown linkType: soft "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 languageName: node linkType: hard "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 languageName: node linkType: hard "safe-buffer@npm:^5.1.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 languageName: node linkType: hard "semver@npm:^6.0.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: semver: ./bin/semver.js checksum: 10c0/1f4959e15bcfbaf727e964a4920f9260141bb8805b399793160da4e7de128e42a7d1f79c1b7d5cd21a6073fba0d55feb9966f5fef3e5ccb8e1d7ead3d7527458 languageName: node linkType: hard "semver@npm:^7.5.3": version: 7.6.2 resolution: "semver@npm:7.6.2" bin: semver: bin/semver.js checksum: 10c0/97d3441e97ace8be4b1976433d1c32658f6afaff09f143e52c593bae7eef33de19e3e369c88bd985ce1042c6f441c80c6803078d1de2a9988080b66684cbb30c languageName: node linkType: hard "serialize-javascript@npm:^6.0.2": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" dependencies: randombytes: "npm:^2.1.0" checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 languageName: node linkType: hard "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" dependencies: shebang-regex: "npm:^3.0.0" checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e languageName: node linkType: hard "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 languageName: node linkType: hard "signal-exit@npm:^4.0.1": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 languageName: node linkType: hard "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: emoji-regex: "npm:^8.0.0" is-fullwidth-code-point: "npm:^3.0.0" strip-ansi: "npm:^6.0.1" checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b languageName: node linkType: hard "string-width@npm:^4.1.0, string-width@npm:^4.2.0": version: 4.2.0 resolution: "string-width@npm:4.2.0" dependencies: emoji-regex: "npm:^8.0.0" is-fullwidth-code-point: "npm:^3.0.0" strip-ansi: "npm:^6.0.0" checksum: 10c0/54d6451abfdca5f147f930fe4eb1bbdf409ba115042146bb93dae309342124afcfeb776149075f60a6f8d6b2d3b68f48702fc96144b37789dd7a4752284b9648 languageName: node linkType: hard "string-width@npm:^5.0.1, string-width@npm:^5.1.2": version: 5.1.2 resolution: "string-width@npm:5.1.2" dependencies: eastasianwidth: "npm:^0.2.0" emoji-regex: "npm:^9.2.2" strip-ansi: "npm:^7.0.1" checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca languageName: node linkType: hard "string-width@npm:^7.0.0, string-width@npm:^7.2.0": version: 7.2.0 resolution: "string-width@npm:7.2.0" dependencies: emoji-regex: "npm:^10.3.0" get-east-asian-width: "npm:^1.0.0" strip-ansi: "npm:^7.1.0" checksum: 10c0/eb0430dd43f3199c7a46dcbf7a0b34539c76fe3aa62763d0b0655acdcbdf360b3f66f3d58ca25ba0205f42ea3491fa00f09426d3b7d3040e506878fc7664c9b9 languageName: node linkType: hard "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: ansi-regex: "npm:^5.0.1" checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 languageName: node linkType: hard "strip-ansi@npm:^6.0.0": version: 6.0.0 resolution: "strip-ansi@npm:6.0.0" dependencies: ansi-regex: "npm:^5.0.0" checksum: 10c0/85257c80250541cc0e65088c7dc768563bdbd1bf7120471d6d3a73cdc60e8149a50038c12a6fd4a30b674587f306ae42e2cc73ac3095daf193633daa0bd8f928 languageName: node linkType: hard "strip-ansi@npm:^7.0.1": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" dependencies: ansi-regex: "npm:^6.0.1" checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 languageName: node linkType: hard "strip-ansi@npm:^7.1.0": version: 7.1.2 resolution: "strip-ansi@npm:7.1.2" dependencies: ansi-regex: "npm:^6.0.1" checksum: 10c0/0d6d7a023de33368fd042aab0bf48f4f4077abdfd60e5393e73c7c411e85e1b3a83507c11af2e656188511475776215df9ca589b4da2295c9455cc399ce1858b languageName: node linkType: hard "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd languageName: node linkType: hard "supports-color@npm:^7.1.0": version: 7.1.0 resolution: "supports-color@npm:7.1.0" dependencies: has-flag: "npm:^4.0.0" checksum: 10c0/e2e6d0c4a0165790801c87b6b16f3e1e0751b4e26e0fdd3c3ff41dd00f6f933548ac3f06b6b9225c27117c386e270f77f08350e50bdef5070cd67d13893bbb66 languageName: node linkType: hard "supports-color@npm:^8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: has-flag: "npm:^4.0.0" checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 languageName: node linkType: hard "test-exclude@npm:^7.0.1": version: 7.0.1 resolution: "test-exclude@npm:7.0.1" dependencies: "@istanbuljs/schema": "npm:^0.1.2" glob: "npm:^10.4.1" minimatch: "npm:^9.0.4" checksum: 10c0/6d67b9af4336a2e12b26a68c83308c7863534c65f27ed4ff7068a56f5a58f7ac703e8fc80f698a19bb154fd8f705cdf7ec347d9512b2c522c737269507e7b263 languageName: node linkType: hard "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" dependencies: prelude-ls: "npm:^1.2.1" checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 languageName: node linkType: hard "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: punycode: "npm:^2.1.0" checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c languageName: node linkType: hard "v8-to-istanbul@npm:^9.0.0": version: 9.3.0 resolution: "v8-to-istanbul@npm:9.3.0" dependencies: "@jridgewell/trace-mapping": "npm:^0.3.12" "@types/istanbul-lib-coverage": "npm:^2.0.1" convert-source-map: "npm:^2.0.0" checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 languageName: node linkType: hard "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: isexe: "npm:^2.0.0" bin: node-which: ./bin/node-which checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f languageName: node linkType: hard "word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 languageName: node linkType: hard "workerpool@npm:^9.2.0": version: 9.3.4 resolution: "workerpool@npm:9.3.4" checksum: 10c0/b09d80c81c6e50dab1bc6cc3a4180d4222068f17ada9b04fb7053bf98fdbe3dbd6bdd04ad1420363f5391cbf57d622ecd2680469ad0137aef990f510ab807a09 languageName: node linkType: hard "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: ansi-styles: "npm:^4.0.0" string-width: "npm:^4.1.0" strip-ansi: "npm:^6.0.0" checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da languageName: node linkType: hard "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" dependencies: ansi-styles: "npm:^6.1.0" string-width: "npm:^5.0.1" strip-ansi: "npm:^7.0.1" checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 languageName: node linkType: hard "wrap-ansi@npm:^9.0.0": version: 9.0.2 resolution: "wrap-ansi@npm:9.0.2" dependencies: ansi-styles: "npm:^6.2.1" string-width: "npm:^7.0.0" strip-ansi: "npm:^7.1.0" checksum: 10c0/3305839b9a0d6fb930cb63a52f34d3936013d8b0682ff3ec133c9826512620f213800ffa19ea22904876d5b7e9a3c1f40682f03597d986a4ca881fa7b033688c languageName: node linkType: hard "y18n@npm:^5.0.5": version: 5.0.5 resolution: "y18n@npm:5.0.5" checksum: 10c0/62523d0036ca408f0fa336784b003e80c9a0785dde42050c90e9208df6dafc9440c23d9defd102518ec9c5e883838b1b94615bd98446fc7dddab4c007ede8845 languageName: node linkType: hard "yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 languageName: node linkType: hard "yargs-parser@npm:^22.0.0": version: 22.0.0 resolution: "yargs-parser@npm:22.0.0" checksum: 10c0/cb7ef81759c4271cb1d96b9351dbbc9a9ce35d3e1122d2b739bf6c432603824fa02c67cc12dcef6ea80283379d63495686e8f41cc7b06c6576e792aba4d33e1c languageName: node linkType: hard "yargs-unparser@npm:^2.0.0": version: 2.0.0 resolution: "yargs-unparser@npm:2.0.0" dependencies: camelcase: "npm:^6.0.0" decamelize: "npm:^4.0.0" flat: "npm:^5.0.2" is-plain-obj: "npm:^2.1.0" checksum: 10c0/a5a7d6dc157efa95122e16780c019f40ed91d4af6d2bac066db8194ed0ec5c330abb115daa5a79ff07a9b80b8ea80c925baacf354c4c12edd878c0529927ff03 languageName: node linkType: hard "yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: cliui: "npm:^8.0.1" escalade: "npm:^3.1.1" get-caller-file: "npm:^2.0.5" require-directory: "npm:^2.1.1" string-width: "npm:^4.2.3" y18n: "npm:^5.0.5" yargs-parser: "npm:^21.1.1" checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 languageName: node linkType: hard "yargs@npm:^18.0.0": version: 18.0.0 resolution: "yargs@npm:18.0.0" dependencies: cliui: "npm:^9.0.1" escalade: "npm:^3.1.1" get-caller-file: "npm:^2.0.5" string-width: "npm:^7.2.0" y18n: "npm:^5.0.5" yargs-parser: "npm:^22.0.0" checksum: 10c0/bf290e4723876ea9c638c786a5c42ac28e03c9ca2325e1424bf43b94e5876456292d3ed905b853ebbba6daf43ed29e772ac2a6b3c5fb1b16533245d6211778f3 languageName: node linkType: hard "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f languageName: node linkType: hard