From babf8695674275185d934927b6dd96076f7f4cb2 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 01:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 01:40:18. --- .../20260512/20260512014002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512014002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512014002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512014002-Binary.backup create mode 100644 MikroMaster/20260512/20260512014002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512014002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512014002-Binary.backup b/MikroMaster/20260512/20260512014002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8de38728db85576bb375dccdac48725872f5f557 GIT binary patch literal 302647 zcmV(cK>fe(sF8Cwo&*3tz`)oIS?JJ1gQ)Q`CiJQR000O80004Z`SAPzLud$YnE^S~ zp6JOX{vhHed2}AAQCA!5k8?6@GXFzgu$QGqsWe_vsD;yL129JnJPP(0@I(E`_Fj{L z=?*}S8wh54Fm+b5oh?KvEqD>(lJ}}5g`rmnO~bWxCR8gTQfgyaf;J?HKq{S)l8XW- z>mh-n^I+ja21ZcxobReT7Y2;T3k2loewglW>F}c;P%WHqbC8PzEb{<5rZcAVtw@_D z>$Wzye5b7z3vSc>fCtvo(d#?>QNnIJnA)(iaDA<%$#Cd4Mw9GXH(R_nL-f?>R6}Of zc*E%44BI`OF3}Z~LPIa$CrL%1~5W1CI}Q2EoWkfFgV? z|H;UnfzUZzI-Ph+w}Bm#+j72P@4Fx(N8=kEQzA6_%)T{C;)PorMCM1oTgnu)>>O=SEJI)CM0YxX363963h zRmm>3l5O-q99@e05-h#3MIv{^Axb=srEr^G$w~?|Cfn=_pRZVI{spr_&a!DIhof7fXesea1||9=?ElkZx%yx{>vSu^ zMj4=?k)`cYud(@WT3T@JWGOAOxgy;6Z9DnM5h)({dgzJKNY=^UE(kkQL~)h|HdoF6 zWwzSKwNF%QkX*VU>Yn4M5%2CVV!R~oQgMrRPjht5sf$#Bm@@zYS^U&pyrg-*7c1}9 z{Z-8ytMvwNpZnd>(#mYK&91?5S4i=PVMXqF6&^z3=@t3!Hh_4%i4i zPo8P3kh|-y8q4Mrr915S|CpgY6*}#alu(vBWTw1x0J@d~ZW8w56|mQd-IiuW-L@Dz%($y&lHb$UMx^nJo ztu-d&eOi-V0-md*w^~ugxi9?F@RxrPjUap~G<)RS4Wd55Yej4ecHjiNMeKlVwY-Z< zeakP=ZX&)tsM?n$+F)BD1`4scdPfWC8~+T=mnKSSAxFOSWgs&c?`{`yk68*=Dx;(A z$vyeyHZ;oHZLxQor19C&Cf#AY&wzBvz6D@h?L;PX!Aki_ud3+Q)vHMWq$kMQV|?{S z7All*-S@31rk6o&uvA}U-SFVWAb&&V%*g#D zgQ+_=#%HVddF`1TsZ@NeoE}mv&0O> zBNGEhiljEe*^*rac4qW?dzCbS7C44_F~D(nM0E`XDDVod-pAPWcoUH&2S(r1RZwyY z@rRl_^ujO_-CS-enO?&>VbZ|^A}+jI&vl(IoaW&rukseWfC;;GDqE=pmuo=rkHcC@ z{*CVEQzu;WU$07cednuNR#lCiGS)pVf}g;txixdUL~ewjrOkISqsQ)lgfG)3n~MUx|k)0w9-LvB-}+56$ED&n-~C&u!?Ry5N{9+Jj;k&za+CAShzk#1gb z0{N5gx9z|Ab%qc%8&lrxDD)}5#=|ss*(WqVNAA!IC@$Q^yiSuzxuJ9+vkODl)6~F8*zoF zvYQ%fcR;W`%jh`i9T-ZBieDu?O;}3UW}=|5g`y~PpEi0Oj-iCpE4{(}G_O`#tp6pF zP7S#?^@?r=%B9PSe6<1ar|$Taf**@4L1R4BG@BYPZ6Wzl;0Nk})e3MUB;B3fSvBXs zWTb^3M^z_XgM%q*>02@^$$EjyMh4%uNRFpdg=j>EpWTMuho2$gZ=K~0A~H z&{Ija>sQpz5P&^po1?!lU>4mR=>6#}zeG>~^u;eOxTNk6c@rW9QK^6XP{UpB&li4A z-p5Y)*o1Jol?VXmFg%$TktOu`M0(cRv3X8=LO*}Av(j)bthsgtm4C%YLY1c6D(0-1cc2l4a9pH$qMIP9slGu5O|{ZArL7 zpb=`#ctm6?U6vvT3to2?r3n!52rYe18Fpxj+0(J>|5DXLM& zAe*QS`15rD)1?j4e@IOYGOXhKB|q@MY}Cmd^_j&ZG8#a`_;obW#I1^oxBbds30(^H zvkPy9A#Oh=1aZ1b&oQ;X)0)|d-21pZMjUqZ6+5ppGi_qvL6BjaTD-@JVqc(IXeHV*(86M3bF6IsGRZ@7}uYFC26LRnK#Vs5U`%yiEQg0ZdE_>NkEr4cR9<7AV#?;V`K z8~G=VLuJl+^LkznbZ4^L2891~Wij0wH0J*FYu|)TP%L%G6eQ1d(?XE!)W1bmX zesb-_Po5kf#c$6$L}&kD@4NX8^YxLK_bl)I=*Lrkj9-LYQC8gX+^LT0wh~ZwK5wOi zNZ{N@wrj#yZtepcBlqrfmS zlfR{1maog$A|eI@Z6LY-jp8k3nka@C(&&4Po>C5m@3UA`pyNdhQ_yfl|kzi`^g28thE_^ksZG5a+Gw9WY<4NoGARCWGwe{lUC`kKW~7 zE9=OMG&=c)9BN=EM^Zf{{w?%_;NV!K5I{RM<$XQQcO4)=Pt3J>*RGXGJ*r1omkY^= zuOCM{l^Z#c?5w>C1(B16%1s--0Uxh2im>?q>z2AiB( z{U1>Aj5d-%@4eVF3T;nN`D0{E;-pJvb-q>V_>J_!KO5UGqfv5O2=Fr(T8#nFx0M=+49q~JcPlmFzdiE;0zJ5MlbD-7H9+w*{iBS82+ZH!O*0%h-gP@ue%njXdB>lEsf@FI zTEGbo$aynC3$20>91-?(_62gDXc#nK0w2gh;K6Zt>;ToaZCuJ`%ySlNdjRA-bMr=) zxKR;;;>99sw~2M9%F^@X+Sz{CZGscI$#>^@1w4W(VD^SrttCS?ZSehG;(hbnYc*8g zk53AnUWJe?t50rm#6ugOBLnmtLSbv$s%@OZIc2q!mY!|S^NZaluj*vvW3tU~>v^&t z0Mk`r=5;SS8`BS`Hb-*z)N#|KtPB8zqfws{!?nqHaQ0jS-cwH5ysp?eZD!rCCClqB zSh>jirpl@e{|ZXZ0A|kh!@&WMBM(V8)Q1B3+R;)j^*(u$CHU9(pbovd8l)+3>7l#; zXzE_th=&K%_O+_|=vb%eAwymE$yfToZN1|eYq;U2kkBG^5HFJyn}59VT-xH zEbSp7!;srbngkZu*U_0A`G~N2&_?;sPm|~3Li)y4LTTIZiT(KARN4qTEV(p$OuMas zRxZlf7wq-ldU5`nLBSL1CCD=>-qIctPM{7J^J{6$B4f=~d7rKyS_Hs2iIX^6*qJ!C zF@`p$l!**_a*4$xAwbGWg%<83!r5Gw%!h*a!=T0&N0cTQ;(Rl{dg2bKj@;TU011r@@AV?!P!z z*fQ4Mf+tw)8Vx*Q!4O$l2BBS*avuLj?PhnOmTDv41JPcMt7(=1h!}vr@)kUFm{m4uKQ5%4 zV0@{ocVLdIM)P!eDwDqCett0CGNB_L0bD{>p{e^kf>0AAeEub7>({0AR#edAfzm8t z*4Vxjzgpp)DQ1DfR(P>KYg*FL{cH|1>XJ3+t~*3On=gHxKjg3YVWs+4x=@t~Z1P(( z59>Bf=#$khBq5P!(zF6Js#O5CydAl->gceVM-b@t;wt>a+>Y(2^Dk~ONWwVZQiJt+ zm&m8;yxLQo6bsl6ycGl-*6)x+8?2&%bDVrRm$M^>g2^&M;Pr>QwcoA9N*YTx*JOR# z(wzwyJo`#I02u^{y191qhVucVu2)ZU1%aiQ_h`vNa&5-^m8s=aFMoL=^Y1YMsY#cD zDQQQ$;p&mJQKqxF{)T0SPfN)XFE(brTvQiIA^aF)^}%8Z>Fbs8w33Wowf$PnG3qX3 z;{1#BE7yNNqso+nB%$sK-+}Kx=LRqMv)cg_T}7)BdRdgzGD4RZhuD+q7w%@lcbs%p zobQM9G58&8QlsVibv1|%7TZL(49Z9j_V5{XxGO?F3tQ59xnr=b@b|Olmsx@rR^R?c z&#iik@_U=7Qd_So{UZEEE$Csj)x&}p*BC%{;MGW%%C#OO!bcsoPC>3N< zr6V;2iaFO{DcWwv*c^CH+~PNe)Lh9ji|;p%ra7T$zM^!^)t=%5nnqO1C(zB&t&CAM ziq6#Mfz;a066SC&z7r#ehS@M3UN~VI?}GaaU;t40anI*|? zZPe2Hb}|A~G`g#6JQJ`5{Nquv7i|2$&n-(t2z*#ED#(sdRl}-zWMJ0basq~;FJ)Pl zgJfvBOv*4dd?{(D>&IR?VR2cy>e#{C#AZ6WDbXN+*cC*CDQUzQ6lk} z!31Xk>sAu^EjNHl z#uoGZzv3R9jXk|sw60C!8MtPWm*|@TD;vxNzxm;FQaKig0iRAbBLq>oV#BRf)sJ2$ zMu9w4?YStJz>WS0Z5XG4Zh5x!oGfB+C14B5JT_-{qvOvIWj*uNYXjs9Xi3!XK&cI# zve)P;8cgC2`Cd*8EwV6yv2HfV>0q2nkf9L*VNxOqadJ}a*ccOx=S@~eD`Pd3xDBn< z;8EJWEGrI)aHgsH#!OrWmHSSBQA|pUiJWtKGM6~4_)TkVxrXl3GArXXz(@P=P?9;Y znXlbHqe2Uao$e!HynUEHT6!v8D?>f$J1@a$(k;3-2oA0ByTGsxK|g=8cWo59ZjH!K zxqc+Z+o6g|) zA(`0Lh_W@S9e|ruooJ4?ck_BFbWR{TbyeA~#M*)y4I&k?EPn=5fD41ZXK-Twopr1@k3L)O-SMGCfa3N5;>{6<;{{N#{-%Oa4lZyPNnPk7A2dZ zx}$eQN^U2tXOlLd?#M#H=nj0JXFl!^b#ll7yr6azt9GD&C*laldaw;eY*q z-L|gmbl<3YdLO-q*}@}8Sl2lYw9I!L!=-peyVC`Ez>d>Pu}xPFwL`OHK&ARii5Wqc z>pas=`%7Xjl6fQnmmMklp~XiKXPFUkB9muw!LEhFtS%&ya(KUZ5oouPlP6kheK@7i?h}4IjRP1YtYveI{9Ij+Kg1Mf0rQMee(7E#14$Mz$ z{=}D187(j2Rcfv$k3UbfK_|`wi@2J!yh<9=AD#M;9Sv~8ODjIiT3y5@SnkQ%q!`6v zj++}T*b_`2Mhn2qe*Sc0=~V%n$_t!A!yfkTx0HI*Za!|}=Sp*N(MXeneBi7Iv@-$~ zgRf|Ajs$7A0-d>*x?y@JYR@C1l-!`0-bMj+y`pUtxLPU%!QfT`Wokpo?*pwtrhOc1 zM@Je4Tqb47kDXkP#@UK1%irZP1jb|w$)1p7SQ;9*0%~NB<5a+P7ia@9O{EX(?1I+3 zFL$c{%dV#2T}VZp`)t)VK$MEu_{rG;$Mis&0pqrn(O-^TO-hCq2=?b5a*`W{VWq>I zB4)*lRTl%!$_WvE(E*t!8juTk2wLjS3De+a;34?yYNZ~ZFSN93R>Rag2QEbjcIX7$ z-cHm8N`Miz*IkfBL<^_~tS3xa;#}r`)n-&K)ya}6 z#=0SvAHe(%56VCe(^1s)jBwE5oWDj7^_c}rlW`+>y(7}7;_;&m9-BDnxDt+3kT%j& zguPVq3>!pzmm$CqBhHwz#sJ2XHlBeBfT)3kXhY4j_8mFM`KzSr{|2Z2T$oLPM#q_| zSkHqEIchu#V8K5eFP@qKKl3OUSRe)D`m}AUsnrPiA~&KGHF1*)K%#yAce60C&MFF_ z?=hI&x$}NsVvqXG-mgMs`JA2U2Q0ySWcgl_Fry~KI_P~7C|5%$)L5Xjy!!;l`iB;# zr_q~^c-$-)i(Ynn$l_O9XD1H1rBCxTRqVcN?rQDK!`HJ!8s-s~ZmE9$Qz$_pfZbPl z*e));>P*%WwZ=QJdfi@i>5ht;sP~{$UrZc5Rs%Gf?uIRNo(ME`=@taYo=mxrhxT5=Sal7k%&@;BA2jsg(6$Q$>12uu= zEAzW2W*SQ5y{F7-r9T0@kYe~J0lHikV29hit?Ya%ErabL#>$=^D9sE~PGWzHZ5wQx zQc@U2MS-qakNiGx{+L4eW`NS<8g%lj9yi{Wzm5ZN6OPG?Fw`5yxpM_w-X=rel1pJj}3?5M8CS3P|)J z@Wb<56F-CQV&)m|rCWD||H5==Hy5A4KbJ^Zt;d}|wQ^hzf|^o@p6^043CX4)CY9!; zLA+1tie{YO!IuP7=gMz2Ndu&-`V{FR%U7rtY(l~ngC7ul+UW-76r>S7hHBqgyDP}| zwPe%zj@}=a`x0asSm%$rCw-HTJ4w9O{ag)(sw1^j&ydeT%Y`|@gUP%dRdp6JMAj?9 z!%j+Qu55_ANHF2ra9b94+AYm1Lxtczc9Z9-BRh$uwJ?0`q4J_MBo*?f`rF11oytLO z8I*lgs)^@#(u5({R_5FFPEmqawIY27E!OtKt51wnNT`TM=QJgTjIosB(&hkRJG_<_ z7C#B4W~#q~qY0;DLLbdQ|JqnvttYDf6he^aS*YrS_A> z5ox}B=rQgoY9pPWP@NU#5;Fy?DcuU&or}_+EbNWSePNuxUE(%b#0{a$cxL`COOBCj zy9=*M%%vK=7Dy0o)d`K!NVBEF%~pR>(F27+{BC%)A^L^0opB~V3?ZS@s6bZYbeME6 z4yOs<2-dh{jQA7RC~O(-?D#DtL}=MA5tWRwwe6P(l@HO=!ce^8&n|2^%ka1ph2Ib8 zU=Mx?NSyNmZxtiFZW^JoczfvxUtJY-SwZ}>hzZJKNxVdp>X;mx`+lS-0=O>Al=@tc z{rl7Ybnb;zMl^EVbi5Lf>um?S;x!*el~ERUK^|L{4%-U|P@(uN`Kp4zL%_@QS@Y$= z0o~yo{Z6u%2S~+ROF#W%3wfg57o?lic>nntv0nhqI}oMk|LbToL1GzAzK%O>zE(t` z>AYa5T)@5h<}_^1H2mAfTzK1JIQf#d7yLZ>itfvrx8uA}qiq{~5MPd=i~yz<^#{6l zIGjvr+)~|z4G?}HzlX!`$w)w*o0w(%hFca75^od6qKwNJq;o(oTq)036twm3?{%!vAU`aN_oc)9X0Cmh%&mL?yF3zq?8%6$(DcL z##c~3O(po+rq~c|8pq*CBAh6Ggamft!S4SeB`ae+UF^m8ny)|489-WP-R-d(3b%y> z9B&XN;G1S|tF7O<6rPZ`h`@|SJ0QO1*e{)5Q!V)3K9#y?Y-V230XSh3)6I{EiR+&h zewO=&#+k-E{fcoR!dp?+UL08I{h-xi6KDaB4m^Zx-$2RP6P8Ym3BPlks`XSNp-!Qah^57g7MlIG&3hD!8 zSzWPfq!x@t8^vcO!TYH)J;{lzabl$`^c54NC$Z}<-_Oww3?qy`h%P=n+(<;qtkT;qS z#RkQam~1Vq;MDmQD3K+auHr$$doAQX4n6%)ir(w3J^49O-vHFwDrZ>oc4zCoJ)4al zU7-PBUKwrYb>jmFklJpt>NYn$9vcrZ9RsEWod&S3^*RWl=$R(&Wtf=#uY_+koZ_)|eI3--SagScch%fFt`cP1{N| zW(mlRCrJBRz!t71a>%zEKug1Ne8Hpupi*Fc5Y#zZdq3!=OG?9=df;mZ9#MNC@G*g9 zTlO3$Vzpu|sW;h8y}-+}lfh|=2u&mPAF1HRj~RwCKvKIReo&K^7m3&WaebvnKCx!J zKR+RSRl%?5AUL+l@MHf>GWmL4eCcG20)+qyjIRrHw#M?nP=5fVQ_*BZ46}aV)=7ny zg8W0Ct8IE7U~C!R!ATBl?3Z-uXh%W)^)%PPvJ1nI*Z==^@k@R+36D>u>O*KSU<3&I zdDVVM2?%|v4jWdDsm0$3@K0xCRa=K#tTm!l$VE}oDUYlKShr5afM^%XG5zu$Yo&V; z66~9`%k1ERIe$0Ed6I41{}r`Y?qV06e_L5+s?*kOl7Qbu;lXOZM#BkwSgkr5;Kbu} zQPo{X*E@#=<>&jNGQ$}8_x{@O?{$!If66SPD1Pm>vSJfnLUGN*}V)$U3s(W)uzy&_rWLZVl zRB5U;4?dC#Ry<^$s;l3CxS{!8ynIKv71}K@4}YTg>An7b&=9SH1Oc^a^0mjT4z%|* zwlvK*E*g>HvG4q9)7wlH{!in-%W?rSCHFZx;B_||S+%Y@Qmg_kNC(zx4FsYk^d!{N zGJ!$^ujBkr-%a6pJwJ zTS_u+5`fe3Z%&wZmF2QcR(2bS}{4;N8BBd>G#nMmQ34wD|ReVaV zh+O8#SIuf}3)LcGR>L0&CaB6O_ee2Uzz}s2GlYpZiOf95ESTNp!)$hlr zx0oq+WdN-Arp|Vrn+S{yckb=O4phu9s&AXhu&p5?ZZN8FSlCiy(&txgXEg+p|IV&O zK9W<+B(%mn%{N)&;8Y8Ca0xT{_*sTCByU!JUv-<|o~Ly8*_~U}CU9oaQVTdYsH-LT ztKEKC*X)0os`(8P>et}fwUG)Lfza>%+uADAlyK|CJ}m>Y%s_8=gjrsg2rQQ>XLoM+ zgew%pIj`KWR>z!Y7m49;4&>cYlD38kWp#G9YE_e^19)=-uca+Q3jT6)~ zDxu28Wi1 zP(nj&F~$Xe|qU zsuS!kuO0qb!d?HK;aHr5YzAe)V&9OfvU`Nw9CdH&>Y8+r5TMFXo@+kBNGd+i83Nhs zc3C&Nt)m{ZUt7r4OSod5_k#D)m9|9|lgl9Y@^zZ(soyy*M^GhA5rH%1i?hx8y|pW! zDCxj+6Hg(to!MB~MKz2(b$h8zg$uXA-@>H=-~(IYI9@$RfK_Ga#bcY1 zns6o;Ktw?d#0{UEZBIxwd+LKOYyA^s=HhZSc2Yzv>G|@Ox4+RT?qo!ri*XFu$ zUZ2}*fN_N9r+8<)0REqoJFHw4S;PC~1$rrOajg71p|M_SVw#=fu&`w3!2YQ5a=;2` zX(JVZKj^H`+eB;fW57}y4x1ZI`Fw>?ao;qEq1bPwVprM78>#z+JR1YwbFj$~uI{iw z{ar%b?b2ZV*m8Gc&%k__)#j-qoJ^)V^EUl3if`j*u zp?Hzt29=E7z0_ASBurnbXDL1TFM)QaNlGeE3J{!5yrcB0b`P~ts`~cp%(}=Q3i`g+ zP>*1Gt1Meu7A|q|#9~>L+?ipTFsObQQ8CC^0|qJ|CZ5i~RE!F7bg32jD0kv}W0(=j zI+zY?rl1@UHV376o`5K=w3WiVm!TX86&Q&_Ya4ek>*i=OmapHNYq1b21$uks`5sT$H1i%0`#6e>(E%*b-Od&lr4YnR4-m>CP;in-#* z06#ukn_?GK>+P3PuP9DkTgDVcWVeu(ULTQ>xz zm|drWwrv&QsRUnT<{3FMB8ct&&vuUM;|yFq07R=k)HY`j>I(+JGtkCAyjsnHW;<$L zf0sNtX$Ka;emwZeZU5l!-5PMjHlsrMal1iu-KPv;tZKhQ2o2Gxr+HgNZY5>R3YnN! z#BLMv+-4O0Z}Q^8Lf5>bUJ>eJe_tC!K|uJr6c`CPzAiMQ>X?>*1JQ9aLiV4S`E6c+ zC#^-K$MQSR(X27)mK(VELPLm}>o}R<QNxUn9gVQ^xMas;#>F~4amZP@+sN~O9@iIdJa(K@ZRH_=~jG^ zwWOt)NMI^jygAb|Bc%2z7B8%=E6QR?^SHj?A(fAm1~PIoOl`2SP~i1sU=(TugWay` z9rDaAk9tR_Jk#J5`>;7K^hGj6gGc5WPPHsKc*I@1OR{WAe8%Je%Fekatwh8}US@?j3q8!V)I7a%mwH=gm|0SF>>Sy^N^fDswv0~@>Iu@@ zlQmRte9+=(cryqib!sDGEEi4$Tj6h}=lmfSj5oG87U4|{oxpbS6-Q3OK_6Gk9VBEGac#jW7o?<5}Q2I@xG_kufJ z?l%H#$ZdK<6!+?yf2c0WuQSR6W_-cA=Qez8Me4QJ##7hOxJlp-B0r%9AuMouU52I?T=f@YPd1?j^8=@A-b|`83S^vJqsZoOd}6 z0J>NMZsE66fUI4c1G~(p2N+~}sSOe{ns6Up-7D8bolL#~MW~i+(#_re3gg9KK^4pI z(F)W=etI4ky_)tqYZ&tMmZc>KT{FF_5`MR<=d_>&=>;#2GYB>9!LZiltviTel?5~* z3^O9muliLhD{a(LCV_lSq0(YN!QqD~f&0kRtFK;P zX@X@JJ*S{KvE>m(mz_BOv0|cu$%@)i3t@1g_mUIEjJUJ&U$`J}?Kn~X^bjFzJ5sH}l?Mx52Ey-YWGn8jdvN)AO%Ole zf8z!(7~!L8(wQ^d!!E2=j&IK9LAYNJK;!}GNb`GtUXScAm5o$3H75cVSuRi<1 zw0zNa{(O(5**u{a{OyN zK7+G6y@S%=ity@OP6sr-HIf!89r9IGI*^HmprCj|g67gU^Kq#g_3Aj2W<+gJ z4Mk4Jme}XO$ksN>-&MSX;Fd#+6+`aEH<^V;VC%N3vDMdn(|-l-f+9~xbA23xnxeE+v6jTn9TPqBWGT3Fuwdg zlNJ*qkoW(bD>x5X~7ym+R;~z7kV4_lkBa{spoL z9&qo@AcL$cY?FQCeEapdplxr~ain7~RYdAPGC)R`5!-7kvWR_QdO3 zZRh35H<(!)=BF?hpSORfSG zD68I4Qrmb!;uJek{<&cm!WSef-0_`>CFD{&leS!Xd<`$Uqzs4%-1}>ro~*UqAwa zyO!J^EYEq%w@$S(`KCSK`k$m%_sVn$Wy$U;wO4ZZm(ov+!dexfb$U^h4Z131glcV} zh(mxjNKxeioT@;A-zcrE;0akN9;@aF*$QR8vw6*6(45#&wi*)pi>4IKB ztNN!$0Zu9TO~yFTCn@sJ*bNW6Urkq4(EEXC@HBwz9O)eF=@JbASp>(inig z@}>ATDf$LsP<5NL9y4aS(WFNRE59IFimT?-REM*?tIR{#cJ$;C_i@^sc2!~OViFfF ze7z+>5De-d4&1YO+Sl0;w%rg-BE{_mY+kb630R^-=aX@zOC;J0GJ_px#SB6;DsV%6 zfoc;Z_L%A<5AFKrtcEX3E^np^jRHqSa_(H1lcNt|4-!kWoI7n67wxAP?;v6Zsl<`g z+%%fwPZ|cS#poTu1YQz?oZ&IF^HuKf&WS*F>rCadhSCkE8<;(*8EtJhH#mIfj)qk_ zj~PEG=E9)Qx@-7hoJCPzIcY69c;E9kGCiegO@g4vHH(6nEZmXxdtWZ{6?jw| znSz;fxCkm2(InZ0-cbat$MORT|CNvoQs>W)SqESci;^B%W)Ui)j*X%&M)M)>$Y! zMR}H=rDn`0x4}Tu+D1DkXxA!@3QBR>g`ZE=G5r0FfDeJso*jPZ?$?kQ7QU{oS3wnW zx{688d*6dCISo`2)osPjo$~E5VPywW#D-Topy;&Q?70&-b;-Za9y1kFn%sr6QrX8;ln-)u$c zi>b0&wp34twz>pJnHIDsr3l9g{SUymxo zj1-k}*JPorV`^24oc!SsLj(>TzV^L{QtXg&K|HpqEA63YIy>IwR?a0Azvrt8>fb+i zHE0xY!s5|Q;7)cHk&VJy)^o2s{o*FAXI~=#97)i;XQUzP8#k;s={6o6V*IjV_=w$@ zVHOxke2v)rhFS6D3Vzg_UeH{vo|ah9V788Jz@SyB6jSq>7${f z%o*KUy+I?5(m);@qwL9r+xKSZUyKbj3T?BGTf{WKiqua~3xV`GDElSQ1oJTmS|>#v zl`71t$i3;C%`06+^tsiJMw-G(8>0VcAegV~`d&<%Zqe~;Xa@>@4&pu|Lh9hf=e@jS z%j?cC$#cxn#CGexcXZ!A*3ideVE`Id%{v}&=@-r7Q8ZldWZqOrZS!=oqYQdBsCNkv z<1~6(|Fq?NoECs7k4E_2GCnk!#7~P0nWzH8hzGe4B{jP@pdHloRt1kf^W%>rG8naK z5^`b+sePg+tbBXIoORropEbXd&&JSw`FF?6={BdSaO{%XRZeYf6IOgV z9)>zlzT6PGJu8inyjTj1(2ccC12^{VTZBcfIBXA3r#P*Rc(mB{8}& z@3Il8Veem^tcwd_IA_y~N4{u<4A*3mr`%yjZbG zIMVL8npBu<$(#j$X2RFcb*Zs?;&WViE~ft*%L*pNyVb_-hc(#X*=%HA5sP`ybDUh^ z5Sjp9K^q4OY2S4|c+L|27Vz#;QB)^%EnARta|b2=cWK{4H831|YW3tm&B@mg+R7V- ztQ=Vhmj+M+@lIN5iCmLy>YdyE(5nScp{KPeSh^s)M*oK#zc>!(P$rSJZGDkweUMlM zP8KpO%xSuBKfrYcL>*s}N`*`PnRhKmn^Xv^D0t)UF}P?T>rblxh(^jj>Hw)MFoZ_7zUp@3o%W3eKR5jKo_+_c5ip%l zvr#)NP>~G zCKOA8D8S(wVo45Rb-RfMuR2!cG?z~Y=*$igZo`q_p}2u(U(}8FC-vccAr#d@^GH_u z-((yi75VElETFkB8OjI1Ep^W06HE**_P{|AzYHSK8p18Eaw8eX%_z*&LSFhnP~!t( zOOD4RjjfYpEM7ib`kkF#$nsEIZ=50o&;YIed9+%y{XB80S6zjo-f9FY_Pf2-ysfKc z+(w_v{r;yGzNqwZG~hCU?lcol=ApzZx+Gusadxb$e|th9<_2Winn-^AkXAdt4-#>` z#%zA4{LdbMCaLZ+I#aHeFN!h)tR zbe)}G9r{ihqaC|OT#Vad7D{!~vD}A|R8$}g(E8Jqw@+Wxw`i$xT-{j?g}hV(v6l6>d3+}BcpOK9kS$(g>72?6c-`yrY}id%^|rY?zQDEW#V* zMYJ{p7$wtmg%)Y&)lG-MV=F1N8OC2juIT*w7zuo-Z$vs8hT1HdMSW}zv~0|;ccB3Oji^Yapgnb)r_pgI{W7X#;$*Rd&3QRv5hJ~?BqBZ?zV%VSU!nlnl)3Onh?T3 zlG=ueKRQ)g0PA@11Zl7r{JI~dq+QO1p3+W?!Ed3M)#jd-9jaCL`iGzg=`6}T?;E;M3j6CrYq-ORr6)<62@T5+iW=8a1UauKG zdcG2E>g_QbIGnb>AL#~ykg*0tVc9>jHopMPs@jpm1{bT~mz3}keS=OO;9I$$T}-f@ zMd3RUlH%3MNQNOoMKlfc##O>64Q+nPI#LXXC?0V%I;6KVnA<=9OG)I*T=kUl>t~j( zir?5QYjxDpS z!wklH>g{4K2{`NQPGq4OYaH@j4gK?2ImQ{@s^Dpd+qZyPtCuMN)NBdz{zSSRG7KHR zEVpY2DwVSQ49gXUP8`xB;Ec;7ax-(l9<8;h!)jGsH28rt=g0<`(=JW2Gv1pU;HqO) z1h@jX1#B2p4W|?CH+yM6ynTzZjcq%^(}1wLz_p?J&NnmQw!x;?l^6|UB_Tjn`8C)- z)A2`Pp2O6=AnIsRC%xGah37U zK@SnSi|Xd663yz%2m(aQLbEuieK>#~hs>=l`DCw7Uuc#fEl*Sudzq~*Utj?=DWo)BD)=aY z>&{|V<|vUMCb6fo^&b%J6(9BJRMyZo+Lg=6Xm;}eYW=yd0XP~7l?Dw;>nB^#F`v*z z8f~F>hINX^Zs=68`#CKX+e~g&susT%!YBeRn!!eed)?{j1yo!fj5H+0d1Bp75nhYC zRBaoaGvL0YN!SqQ;O4a=i>1b92htffNJ4g~%2+By&v7xzp$+O!nKuC|dJ>gq13%uu zKZRw3l-noz@H0x`Y4+LC9d!NVON(ZZqpQE_59&N~p%x zkTOAg9bOz)M+5O@TLAw*0Kli^w%;NFP`|v19wNc5hnJ3{)ka(5qh~c~4!w`x2CH|% z^gUJ9D|VUHB)?%75(j&XFhz$Oa5Ng$P7553+o}xinx0}Nl^zideh%SmCzxRXmtv@A zgywgXADC6sme8?!ZS4XWnHwTNLSo;*TEV89eP!Hm{pFa2yvWESC6j)geQ^BaIeEc6 z1A7arR1K3Q|Mu$_nlO_!XT8?46fx`P^rCRO5DhI9CH5gMCJ%{m-3yD$7Lg`=s!4BJ zO-7x}nTE_}2w(|or193H|Lw6}Vy(2^^~u*i?@=p()UV!F72(~48h97cfZs#lzzI?z zw$pEcJK`uaHC;#WaLU=S)m^rb4u}`B*uSY|KbfGC9@gLj2Y=rl=p((`qY?z+*e`{8 zrO}kxpucuK8j}B!r_XKw zuGqE*(&!MX!U|!f#wT+6E)Q0|aE5f~a{~kzr5*T+XFzTZI))gk+U{HSxBBjfGU{$X zu>1^$ME;bmb?3z<&^Xhgb+}FGY@@pVY(&{SqPNx|7@jlIfqJ7*zW;ib=8ZDHjxq#R z93=y<^99#CJdPnUnFX?N-*q5r#}k1#2WHnZBY{l(zU7kFyGHJk?BoYLHI4i?MC}Wnt7x&=d%N1_S#O__8 zHIMd_klRcV=Nf|S=gav560U?1h#{TV5prQnTtS41MtB_Z%6jg;zKDJ{<{7W$4#T8U zyMp~^NvM8UH{DJ+3>s<8IdIWUqet>ajXDbw}36J7}dD@^~jbkjtmoO_> zI2gr$PwgT>h3fWY?N=ytn(3xml(Ugs3|Ggp!~ltLg+wk46i& z;_*n?D}TeUZm$|CV5_a^w7LPQB-eyaWxIsKECj*x{c%iD&%rd#mn0Fm?Xu|T%w^#q zA~w`kYj0zk?kDNAGq&&;bT{0uG9#&q4NBo%W3IBEg$J$A8y&17nx;T;1G&=_Ntcq0 zU)2S`lgm49%n0b)Jz2557GoTO-!o$A0QdKy;o;Qj_t2|M-3tNXLDUT`AjOArZ!LKU zGJOF1c&xBKj90y&ssRkx$|v0Dv_HvXvjt&M$>8Y0r}j^HVoxJiPi^peEYLbEWYR zj@_c-J_^aLI7*J6=arK{(Su~^|AHK@6ZtS{e^3Pxs1Yw^sM}Foy=m79Nv)>9qyd}r zM~ohrg(mF{l5(nb09<$av&DBXSwIA+{(ZW!N_g~Vd954KJxSOOmIKwR?z!UMduDF4 z)rTqA5I<)%1c&D6^V{k9Wn;$sx!ZK9=nb$mnW8KbHOt4IIkzO;@#FHuOS>|Ks8YqD zBCd2#l^63jZu6@3kXY}Fm!nM-sVjrP#zi`Yy36>N{qCwwyeR48K=B8SsxQa2q`Bu~ zoFk1rQF`dhEZ;ack)yeHVU;75uhN_NkIH2~qQkGsq8v*>KwCClZadaj*#bX2xuXqb z#Nm`%we!;t2|how8>&400`TW{5i*co0~)61*cHaH&A8M=HTuE42wU1?OD$Ab(!+1h z`iE^8?D<>%hn@GRO@w!kqIdKD9xFao@;C0Xu0z@H6Supwe4+oXhteH}$%lo{dqEDV z*U+_DBs;=nbeyPstz6y~2sOcfTKPj#{5@@~6R{|c_AxlkX=%-4lY>HderVJZe8uN~SJvXyZa$SyKd zgZ^-0SRM1XV@wD{MIAd+Iiw3&!|1mJI~fRwPe(*E+ViJr1O=1+@iYzBE8(r8c0AKZ z<{r!?O_6%$}+5Y`Zr6&D~{)w_+cw^te6sy-C7%%^?<{=7b+J7H|@F{R)$& z$aIV#LR$Z6cP`q330*2GVPRO)Zjbl2Kc6kIqnp-XZYHC*tH@Rl97t!1(8RNPgC{{0 zb5vq>d_&B#o+Z?#^^|`6djSeyt6oJe)mujyj+@bfBqY5}Byyf`9x{k_Dl9E#&No-( zTxGi1(tV8?xMUhO2gJhbMGSs=PAgNi0!S1N+AYlBO+I$7%Pk!f)LG+}?}P1wVI)IE zkhOorUGG!G{J+y>;Br%aI?4J3?+1c5cB(_NSDwj&xW0P@Rn6F6jpWzNL$2{UasQ8` z`kFuReI)MfGwlXgexA%^qU{1D>McG2FgTGcxo^tCdK9a%kSbRM1Zl(Q>*$*26=CnE z{-}Yl8}{W+HIx0oH^CmL7xO=egrBPJQREUcI)MAj3K{vk=B0fC$>nvc#q}IN*A#Z@ z7R3Mn4Hoz-V+f5DjxKLW>s-$-6Thz*g_WYvd=GZe5NW% z_X&v|Sz0w2IZy0iM>^A{{dHADELpGmoT{>e)9wB;mZXjhdaSMcq zdpp06A*%nh7tnF8oMSmtBHYs@-22Pz%|t!k75ROk;9viA${9%3+RC0_P(yYL?^-qi z(;o^wD4{Kx40%{TQ#hl!Iv?`luI^912+eT_spm zheL0}a9m_Gf(ZEUIMGR5x=$91?pHkE(8|4*nWoRmR@N?cA~SNs$&^Z>tGZwLWu?Q9_ZK?nn+0KShG+;qOu^%8jaubiiz2hDC-m%~C&C74&!)`6 zd;CnXB~@ODl-z9eAYZ+z`~yh_e!?I<2}!ewD4aEkR?imO1!Pq70@GTX<1ptMnB_6v zm?O(@y`QShYh)MMCA*UnjWoSUGewHvM66E%YFfDJHLn-Tt2B1u>x1G`HFAlJ=WkG; zs?`kMzr`Jz(-Tr)eKJ14y;W)+ye0nj1mJwcapuV2o#i^9KrH`l_5jJR1FrWfJQ4aY z#7~}FIQ@aG*%A?#HPVgqNZ%Oa6Mc~6+M%D*j<03P>g2Se$6E{4J*Sl()cHpPP${Pk z*ewr>EK0F`bl)L#zzH`H0@f^hkrrX_$ZZbgn=ak=SEA-9-jp*I=lfQ>XOoKn zR$#FPU}|gAUu}~pbPEwnaL51H>5EvLT4RaV7Y;M&^Bj7?ARPAH1@DlhJrQ~U1Xe{i- zx*&8S6m3_eqiz0XWr;y@Pe-x|>He|GMyFU9A1yGP2W=ML++#<6bdq;#3UdIGQYLwDO9=FR8x)LHt%Z(6paW{ixU7inxtPuJbRq4?-7>%pm9ldcK#-NMOH|U*!istn1 zFwP06kndTuT(|K36;i%nZkUzld@m~|){$(!E&Ql~_S$h>*CzGGzE&%`w9TP~A)(=K zP*lkB5iJNFRIE`4UN|GF^^c6WWzH9>X4# zB}aRq(lqyIe}Uji?4A7%vjeI78|2r{=eHcz)T+kN(iTp$$1;CDP(#_ctHeIFt~wO8 zs$kXc4e+vI*=3y1Jcxp6rbwE}gF-`?m2s@z(Z=uAW2g-h0!<}$^OJTk@Vk0)0QSMT zK~Lvd`UbE2Zrca#*r)b7_lR60owmvcLD=s?dw$|jhH-^G#T3#t(eEl6T)tfnsGLnB zhxLx_Nz))%AmO0bb{#dW?oczk`)0v&rSDsS zLY;S>zYw#Ec;tVx?Zl$0*~%H1e$C0~N0ze@a~Wa!AG|cFlrP=?DV5{7VPsh-RAsB3 z$*H+fAmd6R_1sg8Aw}Fj&?5RqLk6;gCe`7|E!Bv(u<4P29jlEQT*its5;}+~-bQJ@vAS(&FD&_yyN-5c^sM;01l4%ZS z_McPosu}U;v1t&9sN4|LS!XigoCsvw-C&h^SaWw(D#94r=`<^}X-<_Lj;XA|j6vS- ziY2jYUXMI{)}Z2sxd2vP+e^lUM;tKls9UUPLqlekCeUR+e-YAIjCrBH|#1qALEO@?E@7CNwJo7AnDPN~IP7@Oswg4QyIiPmf;i%Ouc3bYB zDtd(}j)lywD+moTK);`yjuXZ2yF8B816!0_UTMZWzAd zosLa_nc2ot(gBk>uEA>hUI{?wKJ@UXvLqUFFkf$GEGhnDCFY^Aq_8=oO;{Kf=nk1W zk7I*YXc6fxp&6jX<(nEVfKoCyL6e9H9*?Q_%TMD#U4s-XSu9f@vgOgC3*=FVTsY1l z)Iu%;6pj-|M4Yh?UW19&NPLh12|V{00sSZUT}W<9jkNyQ_veHCR}+agM2hCRiK;K3b3J;4zsTG z+sb9(n{M`%=nukO6M)pl_L(eemIq*QNTyY9hnB+*?wh~{b3m6|gO@IYcvmn*HhS@^ z`LZu7L2H>5{O)D2Kq`6@vseTkwIX3Wgw8@HmHuYBJO45MI4@lxC^TpLUgoeQb#vQs zMkEz$?;H-B`eVLNEhA;dn76Bmw(Y}m0ySEHI1stvpigjIQphgXt+h)&ZX3JOmn?Ev z+fYxz{z%)%FPc>%V`hO2FPBHLl8v~0I2y+#i}p`169bbQOY%`b$8;QY5LkCvo3cLm zO2cLONK3>*;SWdR`D^DP4umhQC^^!lVBkJI|eK z3Ek_r@*U8UpoO9L^{K(4*y0Tzd4U?ml2Ofw)K3IwEa?(sH z3+>*W>0S-i&QCWUst%-S!Y{!oTT0~V8(w$xIcMw(`i%ODXI?S?z^>1L$_DB>ATUFm zK@vhXz0n8NAn+XjuxQg$KFKWv*vfg;>sDTt^(^w6bMsk!A{=(|R=5?u&t#LoEG0PLRYyW06Xfyxb z*^43%&Xrl`cy_>eJVX4cB(=OTO0QDPQsCM#GMG2a2~O9UL+zYI_!}jnhs$X5B8sv^ z@@un0537&%0mk~^a>ovM4pu>WH(zrvM^<1r2mU)SsvVBCzG9(B5VOlgD`SYKd_&@a z*7GZtv+9HX!C)ddI;gL2j$>wN;O_;oe%#`+A;Llq$2mWOG7F#eKSSzyr&xbx2ll3i zUOC4LLy?#%5of?gSNH>$_N zm3=IkjDikV@%e%U9EOmb@sX^1I;EI_? zL2=@l!cFm0Vm*YpK4%I)%T8R_)K@P##{)wvg7x>NuU42qFg)F4BApq8Xw}6Z7}&Ao z>{bfz#uYb$*(6Q|iWDdk<#?wcct)foD)RD?UAAK52SQ$l-SMoeQb2iDO0Lc`89d{#(eQ|0pVs|=W_{qBi=I(I$l(+F3+Q2d z40gmiitr&!$JG4ePmC{4xU$ff3l#7Un~tY7{1s7bD- zEJN~AiD^#J0Wqp%lY|w>E(WAbcAcL4C=ROy`y_auaeXR;wu^`NvHMdfj!O*ZDjAL9 z?Wdysx6mGiQ$`6D+4Dj0YYg(WGe-Cr1~lozf0?1TV!k&Si(FDV7=jm ze)J)7RK(=HKB%~=$9d05BeE-zz+nGMlD7nIht8LfVa(v&XVykF9JNNlt3rF1Np42j zIf3;-+4Uu1C_l^fcK)jC;nd$PCc|%FoGd_!z>nYWEKmu$Fv zywwaN#6(lf_9_$eEQ2T_@$cEmy=mY8#=Twr;$kN0gR=B1t*9HpAb008YB4P5G35-9 zWb6Ce^8OcB^8v2ukrM?`^w{!wjj|QHD#Z)ay5y9QgDM6rYqK*h5o46ZX!*fx7W+aj zPS3Ppu*Ga9+!|x?Fj8OcCAPA|lf!D~QFO!f8L1+8X>%0r64>bleacO2s`0#J&d+@} z`yca{`Oz?dn}2WORodv6xfbz~_Fj!Tz0lpLy=)qtVM?-?vlHZ2ilyd+6VE~iBFeN= zSDF+iM}9;z#fp)PFzD(=p$!7j@e{Vin_#EFYfvN5X4xWHIAbJ$m*B(r;g9~{8S@I1 zEkhdKd4=}W;UYjJMspp%Q2|7zqUnlLvZa#EX-EpuYff(%AUULM8uRK~93@mx zGfa@KS3`7BbX!O!xL8#4`tC|%pJM&I;{EcI!dxUM)BBjVG^7w31c%XQ>0Jh7gGCxx;LCt7-{ z;%Hi$4;g&6=|5XoU)&9Zl^_Fq2}{{iVB zq8{w!f>vt5%K-)Wsk9TRKx&x1w&sAFIh(!^r;Et%BY0c?>3q%2;e%k*nbx<+bc1;-TeUM2k!1eh|cSDj1OT zV9&9J=Dot+n*`JDSeADwQ?R(P>T9jwe}F+dIzX5%>N?E>@?Iqlbg_U(r?q@8brFLP z$~T#G_zA#~doE-cBkrG{$}TfpTIQ9}cCb-#qrJf{7$LWZ_ApzDZKx6OERDRBkuiFrwYo816U8`PQ$Rin@o5Q zR2pwqiB=2~D-lzE;Y;7!%HS@7hEN^D$~*q0x&x1`7KhNSywzvU6<|>_>a!P^>sQ=T zG`sfR@LVnS5(h`G)7-f?@YjHjKC34e-IMveN1|+#X&=cJ-?q)61&00%XDqw!u79H6m}7p*ZNAqVhGRuPUeoe{3{Y zHQ;J6I-9dXjB`3#$;$kJLhyxad%8BFm^EaP-jCFrcqUr+R?Y?*kgW45bOdk`LLX$P z8t+U_FNbE;cD>f{`D#MRN-gEBIT?X^qHlgAgYhw;g98}RPOlzZv&w|w5@Nd>KL0K; zJgoK+?m9j%qQE5k5h;xYV<}3sWbGHOX*wSWSX#X)@%z14YcAK%OG8e*%yCK&Rgqj= z0KImPZ0gXaRfvJiL;c+D=D5KhruV~o_Xl-O38IMThd=2(H?ua8i!4m0ps)Xa5b}g z2}-FS{%B3`8WA!DaNhZfp%UkS`{s&X5X3e*5kDZLtE2nNs%mbGkRfM4FPjPaKHq|; zVR|xbv`Pv$lSm)F-N7)>;9!GTIMs9)U!+ln-uK?_^k7R+NvG_a+u$;xT41`#KRnob zN+|C)4unwBB~xJ=0091^Un;K&(#@;UU4{JXdm1o3;%tmgn#ig?azhz1%x}-5|K@lw zr#IIQ-$Ur@r`0f6ST`zREITz#>Nq$^Md!?WduI&Bb%k%e945yrK}UBfmH%T_USXqd zR(kB-KO*7t>cTOFxGiO{06O~3mgnHLAJ}BCs9QSpPx?7C2S?r9>1to0yi5MCD~^P< zA&k^>^0qyiu2XIa`O|KJX>s*<7g7{a!bTK5C?h5l42AN_v*cyauJN9*n>ne#c5Mb_L%m}owD&amwJY!Chz~6+dPo!(-BYWpC4h6Dp zMa#kWC*?!Z%qn7Ei_a1sT1!!Glvze%&8&fS=smNQfVIHqp@vF2PiItB{TPyJRQ9oZ zVEIlT{hgC5u?8i7d9t0NQy2*iZh34xTAzr&MBf`P!@3T^g2>&^w(1Jp*%c}EGRw1& zt|gh9h_&Awt)kpZt#()MR=#tJsLFz>*KEi|$^4qk4@YtILKKDS@;sUA3AkpIq_CDh z8C$avn>j18rn$4e{>N$hyIAsxI2@23&60=^^*7~gLm-@#5$ACLM%LR?o~TfuQA0zf zrvEkt=f6l+I7-sD(E4p zx&_Cu_Yo%5c=?Z~XX%^%3JjHaS*5rMrkyc1zgL=}2i)o7*Ap_ej#vx8D}%X`*=NfIV&EP@kHCxi|j(0m>5dihHKk>GJHQaFi>jhNZTR1`k%f-Z8YM zP53IJqWZL26=NwsAD`$D-A4(MqpT77h^U2kVw{Snp(kvoq#eIme&)5pc?U5ptu-RxF%tT#`rtpe z{r*Uva4;+640v`#M>N<&0ci$y3Bc^?Sn2bW`NBJMxhuBnuq*y}{85qNvMZk!M;MMm z2Ug0vISpxTkvwl66R~L&jh!m*58($=W+f67iSmpQ53^}3`h>-vZOyShrUH8*p!IwW z9`4nS^mAFek7v@eoY%-#Ja5GK{VPkg%_$Z#FL@$+4cu#U(5SxBsC*<}Rix78|CJKJ z#I=c-px90dF=2A0NKYnjn)WeRJ(a{?68*o^ldO~}u{oS&n9Z$WzQF(IBSE;1Ro!|# zN1cO4>M})|fhLtJ?~zhhz|I07wwR^95hAvQ%=Ck;3shEI#9(8@BSJ-4SfZK@4->bR zcg9!cO)bqxtLp1Q=bS9Onuz=7e$6Q0h2jQMaZgheg?5<=kQmhEtU0Xv)!7ZHGg1!L z*yU|0gRluQB_C7x4pSSp4x0h)3n_>}X4qV4WB6Tj*DYLvYM)a8eusowm>7tKV zH{d&Oem`8Dwo+kacMw}8*Rslqy|#BYU=+2h`fvy0s5<=|1HR}(5&`SU35`m+(>aoK znygU!I=P%o-?Xu&{RwMpg)BUY`ZHqp-`7-wcTHd<(hl?7U}Tc)p_Wt4iw(f)jnJP1 z-VxYC|M)9=ZzDEb>-DK0+n@KDAzEFZpS8Kwf zPNTs6SX&Tc^q=5KHxqvXCM`Jfx+X(^X6S2jxLALTO;Tc^@@S?G*CA~~EXCF#M9JbO zqh%QJ=(eW(EW{dnTz9L<1=7k2xl=p8ZP|x?Fx6wfKi^duYZ%%=?o+;joPxtze@H6# z8ogf-{r%~ECBUVq&t8+BcB*fuLAO}+gu0P45;y3bLfRWDoM{ZGzrpRXR!Cpzpe?Dz zl-@Pn037k&oi0XkR^r&hfR@HOf^q^}yw}HB_h0N2^9mdDjQ@TmFtGM@hA@`e=SGZ| zD7BRK74(_>r3{U6x@kE~6C2^HZ*o1oT|5J8p`qFkA>&KG1E^Z&`0kt(G4iX=-+|Lc zxoTY+v}GPdq2UI-pxVum1}aBp*=BS_3ashf%8}g*Y0rY?U*4-vddN4ui5p74E$D)U zfMt6OxktH*n{obk!Xp^EgNL$@lLkA!M1!TX2?YWk-c+LbzBvt4MV9v9E$M%9qAi+v z2cLQLteht5U5)2dtgMfVYm?gj2C4%9Oq>yJ-!rSlqsicr%Ff_FXg=Rr(vI!_3elQp z|MMb9x{D1gYuX!|F(8*`$@N7i$HnaN>M7`X|EUW|uL?sNOsY?)3MQjLLS9XG`p=8s zRGe+#3%ZuZ$DjB z8C`$)zr~5|i}GV}?&^=rrtd=vtU8LDa)BzVowM)M6+XJNRQO^_gu^AH3Eyrb+0y<# z47IG734iclRdz{*OCi<*XYt62T1Fi)lbs>W<9X#()c?}Imj8Ni5J*mVxavGjE3qn^ z=@ydzJLc+iy(>m5c6;jZ4D5Z7Ze{SsJ~wKXFF(|07$d@yap)pxOcC<0I)Z&GkL4Kh z)P*u`%etXTV}bhGtZ`8OMbrM;*ehTh)WF_}?PZ?>2GFK6!qm9LXHf5Uymd%$jjca= zb4%Z@^ZNqy%n$Sbtcjv#3F_IQE(<63aKhe3=Ta0Wu8b*&*#xs7_6%ZgHn=oI_2e*T zBK*TXihA1P@5$>+c#LCa=lSUR#&JC>San*k=fat?;W?vJ4$FAukJ$h3r5JST#9xa_ zUBU7$2N3#4=7=G<*!a(yGlF*Yv`5GYRfld+rGxeSTAaWVrGI(? z9AHbN20_2QG3dwt+-&#Wb?tIkRep9P6~@clnYj~v;sL*9QU!foSp5~6p;3J_ym~gN zjklzu`lwyZo@}yCJAJ!q7mjX3fF>41wYSmy!sEe@T@jNy@T)kbW1`!G@5bvPF9RP8 za>!=HzE=tSzNYn3LcAW`Do}9y$;x^u#hs;vV+|s=>;m>sGP53Zffr^a-qLfj}#A4F~UF4!2)A$I6mqV?Yp*Rw4Zz zVv#vZhO70|imEW!;J7rmPlr!m%D?o}GM_b8~ zK8}9Sf*WCss5VansgUXuVC}13n4W3jDI1Cm<$NWIp?o`YBXB$2fBMf%5vvrn|X+D?M{=kh)3jy6(Y}FOtxaVaEBt4OhI}|WV$om z+U*;kQ1UN>6{wsyt&WR&#B5Mb9P)hSW0(&eed)uQBzA#EXpCFUVa-1%%_QL2BtH{< zn7#9TH-^W8sB--D*4}SRt0GOb)I&AiK^0Kgl{hyL^vcg<3}(( zbw;X&F$Wis@XN-%*Rg_GB83u5I1Ky-R2_M?Qwar0tzsi33v)s~$O7}5_;2!5moofc zAd;a5Et~=S)c2R6zi00nmhjgmn}_a^Pl4Nd9urbfvhp0B=`)zfJ5@h-N`2>2-sSU? zR0n8$xMi}$QVXOU)CT0u&E;#FwH7aXcQbR-XV@frlSu!WOcL?(Jp7XZLIf_D+$m`K zM*JHX-NUWEGpFp!gIH9Ld~e($H3_d|mm<*QBnW|0baAR@sQ^vAfY7oJ80DyY*F_;N z)5&5zvUYwIE!grIn;5K+eyU(=cjlM7wUo`miP)K2yf^Ud!c3_)W{0fMy?mJO&JlDl zXV)Sgj^z~#9`;KAj~`Ypv;YRpK{sM)96JGN2q;A>incI@F!Nzx7p_qv2Rs*7-yOW+ zK&l9fzZpVu6GO8ib9%#!pFFFcgT3{32CYT!WKeQIM?#ClG3jNls?`MwNjLo97#`*8dm@*TlwxB~PLfcpYg3>!Na5}uS%igfil`f+!ZSXzt zhQ7~e<4|%qVMfr|Ua+9n^R4EL|`>^(6 z%?fCiRlsnQ5oJ}VMZ?;Xh8oD)wJ7fS=}l)PGoUlT$?)=k#keWfrhKvUN}nc!UIU}w z6{i5LFXtra81%r&X-4OUWF=2i+p}Ze%a4SBfWMtBhuZo%im;1M5#fAua8Z7}KKfx7 z$}R+?uhu58{Aj5)XvzsiOIk>4I*7La$0>|J-+WCbLK)MS99%Ao`i;8Y9C>=XT#5)6 zivLi603IHq$Pko+ zK5Y#6OWZB5BE`s=-ghsh2T>*9`wyYi=y?Rk2B5t_@lnC)* z=tx^u(j79c*)Sg?fwM3Ooy=n?h2v=KAPsk&v4PpRA&-zT8Gbj21hOvRu0(WY#5ab@ zHy%+JHYAE}Aw9^ciF7%dMsN)jEaI6FQb`v6C$z@yt~{6`0=}>%NFhTT?gA{SkWDgs zfrm%%gSeujv9C=re;ajIoq#iDv0PjsrBcBn-6+peXmoZbO$-Y}WTIi+IEC`e%*GC6pg-n|;qu)dd{NjJ&LQJk75L8(61mpEq6L&Hn2c0(E zs@{{iM2*W8eO!mo%CTjVW_~w8fV6P*Ty!@3GT>^q^Jm|<&#l4g0|KF`1m~?9Mk4hS z;oSQ|0;Smv6`{PDyR>2R3R|2tTuBCd4~bi43Iv&x zylq)v=KW8z1&rWOJi+y2Z{F50vc-Ul=#0+|cw11?E>hv?<77UKGS z=L#&}=No)G6ZH8-JV5e}(xj?jpm;_paU!PlhY{rl{y4n@)RsCKZ)YdPb8i3ZAO!Cp5Iq41A?d5i3O-3apM1+8r5_+MX1*2Fu!ibGc_IpSpy|XH>+pdd-I|^Zr?}WSEByNylK|w ziM?WBW|Om#jgLiHo|6bA3Wa*6XsJ*uRQ#yyi+1k*R;z99hKZp2!K)fM;0u812EF4D z6}7N+w;T=koGZYAKoOB()jG7A_?c;S;V{^f3O1N$4h zjQCM&RrQW<-MH`{O6RX!%U`ZvqXr})ejp*8XFzScTT(q{Hb?5tWN2Z_2iS!QR_dBP zCu4M^C&U(0XxCylHc@^MDoWwH?VyU+bOBK!+%;w&vTCeJ7srh<;t~XVV`wxADFCWw*V~B?e#vuFgrmO{S?7vry+71e1E+o168L_$P zUH33pKFqP+Z7+r@x_saxLNH#jwk)D9_C-A4Pc#yaV8NHD_Q^ zEYL~3Wc=hl$Jr_dwxN>pa;if~vrOBH|Fe^I270VOV(eeXAnG_rX>)~If;I<1BHf+O zYFv7EK6FVU$K>b3vn>OB)1gmVQWRKDOuZ;zX9RpQl3o*e>B9(uGxdx^;87O~fG3TZLwmKykFa=e#CHvRc;^BoepYbnMa%WZZAYFOd^;S(+LZejC zH{P|5-1oN%+dI&RNq&AlwVI$cV>l|zPeP4$e@c8Sd4>D3i`dKe+OKaOibc9|=2tNO z45ps)V@pyRZL=vYUK~=qK*-eRx-IxzQ4Ph;kK3*U^uz{Ur{e@ceY6 zKrxtvsD}R8U$An5M5=JAgn(U0UExr0gOhZrSCNIg&o4=8=Wfat;mwHgCP!kUVhka0 z9D+j2(2YS>U3wZZq-u8?u&&aPcRNcR1GRcIR4thW&OzY(t4~5U@bMzVbS1V%2$2+K z?$#;Ia(w{`<4a*3S;vU-ui@1gdnzf|U1VW`YoHfE(Jk##WeiK{W{l}!Nl8{!j&fG& z_~PV`?m$)Lnl}s(+4Yo$Ifu`~v#az}b|&mY-wXcMIZ;BIOEavS-LVSQsF*u+Y~=Eg zHDq&2QhXAg?%8b~4n>C&4&Jsy_deb;OPb-THt@TT!<7RQ%YPN0xcyWyuW77Ij&e4o z2aD-zTI(-B-=U-GwOdZ|g67!)LMYiCDbIPr8h-|kq+|&X!%K}Bao+u>dhq@p6v9_P zk;6LhirGe<9^&E5dhQTKpUyxr=Hhg4Z0geY%AAM-*9Q#yJm*(lRiH!ctI1n(OV;#u3z(OmSSN4{MUf#&AUz(G04j-q}$rw|7k2dUT2>=R1P z;#0{DNo9O2k8-Jpy9K%8WG;SAF&^T=(do8FvH2^IG)SQ_{BxqS9cI+^Jn~BJBI_{j zy)vTpdU%gV8n?`uEuxaMi^bs^Ef@-LzLyldBg9W5K|b-9 z**NwR#kDKE#vB0!`~zUTgy~WS7Q42Am3E>$lT@IrQ1w8ek_?=E8_SUvwPDnm9F!CYvo$Lwi2WZ)Fqs% zv_)gXt)50Z;)_FwPV=@SVx@=Bmhza~otyiNtlU210psHVM+kR*zb zGc>-xJ*N7C^j?*ACdNKIOT56!rWAHoI}#1@|I}GIc!UUb7BYb0bi&}%x?Nf8YZ|tB z)O=7U+mqYD`pEY>TI(3+ox&Y-0l1f)4pV=c$SddHl)tVg{e#5QQ@K3IwxDe7cz@1g zCA}VIxy9{Q^H(lS`E#7v4bqR#6%Dk~4x*i#%;n+Dm4WT`!WM~-%$O;gutMkjt1|liC#`! zGmge?=_8)`>VU%J^mH-s9HTzJG}aFLS#5zu?r3I@4uHwr-VYgWLssDH4{q7#QyRs^ z6F)!XLJm^fb!7vQgP6J@0O_y~eq05EO}%m1)JS3ZVW0&qF@_#tJf0boBAA+Ip8LAX zuJXF8|I2VMUe*P}z^?XQunctMtB0F0JY8nhX&{dJ+o4-CAxa$>HStI+Ytf~`(e~^M z1il40+3DLlM^*|;*AqQcbuLhm}b~G)QhglAoD`KO1sjERA*R>I9HX!1KaomRX zD0fK%!STzVW7u3ZGb^;b9HLiSO;aw!a?tn%(n1owx4!Z_Fe@#c(;B*5HqrO+Zgy;? zt^D)UNjb?I=%@o+_wW&4#P)}bTdD(Xa?5d{wTEeASS76MBMM)!s>h{vfv4=yw8@0&qgDT zUv+A0X47FvRtn05npX=&-eyXNG{5}lT0v4LSw71FIz$T2g{0^ndr@i(^NMB~FaAY$)6oBS z`2c%*gv8N&?UbbIFlao{n22+s-ogVg_ZLdRtWHuaNZyia>|*8k1lPW~esvlH`3x>B zyxY0KNksDrkD|950dF=4)O}cq4~+u-OvI4x1O8odZ2G!hH>zq`FI;9{y5mMox++A( z?@rI(!F)j-r4wciCD^Q+rSTn@`IOlu6?kVcLYfP?g3ZL&@nvhIIOYk-oE85M;~AJC zo@=DLV@@4xpnaSzE@Q4njh$ZnLM64^2Mu8Ya3LfU$2Lt^Tp-&HiReDE`;d7vg{bkN zLQZba@P!#`I`GA2OJxUCg!J5>sFX@z5TKqO1SZOdriEJhZJ6#;@aXHX3>FBM1)`=0 z!wXaYQ#J!%frh+a!U9A~^%kB-0kWE14Eh9rx38SqkDEzB#CM%7PPh;#AB$i083f3Noq8PIazUpZ;b(I;7J)_IE&fh-w*%>?9JqeEfXV{yyWy41OpkhMm3q zf7+~v)4VWM9EC1o&QLLmOzbuhI4(V3f4i>OAwEZT*>EOvPbx_ZJPs>;PL^^oC?5bekVX(WU5@yG_6;2zEP)@_ zF~{$dcX?FnTSv4jk3IO7Upz&->1Hx7PAk6iGQK0YN5}IEO)~TG&drt5VQE+Ol)D?p zJ)?Z9OMIF~6TVzTJFMQ6_EoE^JFY`M|Ctb;kc3Y|&v5-(YP zPpyMna1&&%=us0cPvH+cP_~2?GaS3x$Jv{;mU^23K4 zqt)+FEbjz|w%pAKa9DJ@43DNEy7lAx_>i`kCB9ot3O9UVp} z?lKG>6+`H7aE!>0G)*K)8Ydjf3S!j;lt9T|FYAiME+CZu=G(Hux!}@#`b196komlB z2x3(?#8nM5RFmL{$`xPZFHVdplM4sNS`5h@KzrtuQ8M~EB3kf;bk#_0d$C3pv2&P8 zYHm3bo5Zmgmif;wbea2vXIa*$kZ)Z)BTZ@{)vuB2n+BqrDAWIIusgVRYfa@Z>S%vJ2tNBn^rD8Qinx4{)#==S%LQ4L6~SOS*J6(ROPnSUV5@=F7LGvL0K?budNx=_j9qD>Jv) zdPq^mZeSzB)IDS~CY}#y#vF!!n^l7=Ehw_tx2eUPnm zkd%6Wb-k9ifK%10SI~;rp*+OEk-<}7^b@YO;2j?HJpNiEyr5O6a}He1Svrj zOBR4X2CUb-?vot!%nhq`7N`HBCn$m%7C`n1ZDffCBgR!{Ln6M}GJ0!6E+)bsxL?t1 zvC2-XbT7_Ed$3Zl2O-#d6!pvZXVe4m@c(hgQprz}YtQIQaeFZ%70o>i~F0LON@jlWO9kv0_JC{l|H zgr{hAPexTs0yEs8MB5j9A3(;~*cu%Wt(kst`F~@BE=(f=%d4LXPgjr~Wy_XA$C$QR zEsKA6O_^BYB2&sD+V5K%5og~zA~}JlGMII#B02N&{dgHh*R4z0JomEIs^f9?1{3NAJmG4C8HKzNF4o7EM?kZ z$k;Lzq{{Wy1}<}bEUmSw%%$}*5XDx9)yagnF#bz3;G85>a0!R1fV(?+HjR(qI?5Z) zA-^$N#ZM|WH>-HV9b)dB|F8hdz<^_zPWu_mBbjg3rh5~*Qkrnd39=L-JyL=o_bmhQ zN;5X?Qiz^IwM1daU7ymb1*@u-{H2z#>z+3ThQP9jAi18C0ei${9c!wB(2|NKQaHUO zsgFU%#b~y{uHsE`(9)|!FQGC8X&a2ZxHbvkI{KJ&uF(Ld6U(*Y9auI)92p(>0Bgz4 z)$`H%bNc2y(*7(sFJb>s^kxK|=Gj63mJ|UQJr;e6B``hl+llit&k8t(!LW-uV`5aI zH1y<~A3)bbc+NPPhzZfl;ed)G_!G-E5clWbB0sv(^Qi77s(@y#iiS8nVuv_0f@x!- z1K9>M=XZ9+$Z1gVJmMy^vL25Z@Qz^f-&`Ls<)Ih-82cBBwmL1u+~!r|VQUxBwO$}g z4DMo9WCtcXChXjjP0CN0tA7gUE)cXI?gl60j$3rHq~TSxMYS3W?p2 zvm63p*|CGjD1kC%n;KnnukWm7l&5g%xc_SgPJk~)#+XV@F{TtiNAW;6W8&5ojCaB} z?3MA87x4)yqh9d4Up~8XRxhC!9Cu6>Y@MJCQsfRKAMc^n92H#I*u}I7%){j%^mXeM zyuz>9O8kpcBr;aWyS!aD!K6|*vQFG*VCZQv@{DD!MggJ3QoFyndm)qE<#p0H+?-y7 zA9HI;3FUCI62)fs0j!B^$655MLRGk66aU`*VmQW6-QYi}J$Hk+aRkU%C)<)`iSmWA z;vxk?$AU!|@_5pR-tflmQe*_Cc32+pq7*lKnNy+*7M2q5yLSS)8Q!|Y*GFXE;$a_k zDVRxU&C17rMOs509Y9d?(bdX)%5j z4!q`5x4A&8@wEiw>_V%HNY(hgqF4Di-zbf8XbqRz{Ksw~GdCc7zHHu=>3PCGgG_g( zJago;->awICW|$3vNr!;BT;cfqk$~fmlM@sp^T&C!6S)MZjLy(VikJ)C%W!-C(b=- zt#cTy5d`NGFJy_syd`N-b+&mea1QQXvCuCQoNR%yh?3X@GjmB%O8DVluAIn#)8zXu9y%D9#ieE)#2xO8@Rq%zL!qOr<%lUOt8 zW>uL^?DFPdviELw8sg)m|6rP2l^8@0I(vyh_UyF-;39v~IQ1006aGT*_@~;3X@RM< z7LmC^JH^je1Kk+O{({JB91?&rn-$nfmvyBZ7Lt2C|2KI)vl~Gb)=H=H#{BRM)$v{9 z!8(6{rkZ$9wDyrGlz1Rji?#2X&X~)^WH)Ao98UBM|7w6kv?M1j`eis2>y>!tgNOh9 zg=!i^A#*ed_P=%FE7c{a`Bu?PPPCr_==R^@h$v1Y?^Dz8-XU8BtJKFl>x(E--FTV3gGbsO4X{?2wJMt~O`{x3R;Epu+8&MnYkPjN zL(rSw1TObuAOm7WH?Bm(WtKf-dbK>{U3j%BVnKf>NAT?N9?%iW^ z$UchOCd-KdO*T&V7h6utjmY@;LLR%Qyzp%CySfY=>8P_l+`UVnNlqK zZ0jdFYpm2bWMmjUz0yF#yTb>N4-_l#kY)yCj4x= zZx^QsqGw-A`$kyU{yef?`3Rn8tRLQzaRTfpBgu;r@XY%HWoOaEGjA2maINnd#os{^ z7}z4*3xcOBwiH%m#UsAX5?Hn7U)I|#*{sLyYe`k2&qCr|M#Vf54|0+m3U2m{7;sPX zJ^Zcu%qFE_>Kd!Yz=tGyoR|)2nuUwhhlgs*s=vde|Ht_G)#&Q`EgE=2Eo8gVD1*M1 z>sdCT6Mcn9(Yk!3_2>k9o{JKb1=X-BWqa=R`z^z_;1Xg1GekRl4FCpj)8(pNN!9 z+V1I(3az91DerR{bU)uE@*v)munr?o^FAEM`B<(It+fP1Nqg!u^P@scB=mpTYOv%X z!!K$(>qWZrH^d8OzPBDmc%qX%zhjZJlAM-!YXX%r`e+fUW&MwZwDa$sP*leAtniESxH8k8B*00#|3F|3EumW`hE-Ey@ z?B-+Ibzp|dgW@p5pO|ar-;Rn;vIaBMGJ3(qkvc=%hv4XrX5k^LkR5Qc4%m*sHrq?V zOj_g?9TQ=D>n9WJyFHr#&HP6)4!)0Hzd2M^w`OL)J)V#01V5+A$oMHS9?u@(r8I^s zJsQMn0H|{=i7qebOpA#H3nIeS6|t;oA*$;EFog&x;>^6;gS&+16J}E8>&$GF<6sdu z8a~I{5g&&)@W-|X#LwCtivpCrht3#w`|+>ric4NdWYP=k1E2Tii0yIt5k|jIY7=t3 zrwXQYuIUJVrv|SxUy6z1L?tYAu2*F}GaAmh<86x%*qEq0h>-;SV|)a@`~_mtL|xjU{70&v>bn@y4#|Bqi9stS*@J&6np&Ei-J?A`H_VP))Q8 z<0=PaJx~>3=|?3kTbCj{e)+w;8)ib?-Vs(UF3G!`wK|rUL62%;O6~qqZ1I-&k}hhS zil4ov<*0`=2Voi_-pH@CtN5~o(`QQ6kvA_SZ^cuN!SEw-wE}378&Moo@q%kBXq%Ir z`sb7}2fD5$Ms>}nOR7*$?@Eeg6TH-72WJD!Oy7?|lFPL|iLNOWvGOP+hGKu@R80A} zFL~`TsXt&;-0I&5wPl|-l5NyCf`VE2W;-2*1ZCGAE{D0$2|uzNGmnHOl%?cLG7P6_ zUU6G2tpCM!P_%;fS35$#iIe{VWc#pWuH#CN;TU>NYS zJuWzyoxxg6Kc%iAyIPzPZ(8dsByYRX(t#>Q&u-Ox{+WUF(d`kr^_Cnk@B*BE3v&|f~q_c~to`&41wz&LO&0i|b(ZR6Djz2LVFiiD1-D_cNW_n#?H z-FG*6vv>AuOO6F!CYXA0Bj8d~uSRHLb z#=^*@1-$NvGtd(Dwt;&JhbHe$B+`rwC%AuY>fg?#V?-|{RXZ`RVuQkDN0LFy$=D)1 zsP<4^^W0?5;7ylJ!tbdrMWgGU)*~QGC3hAfObX9iMJGl(2UUTv-a)cS_J4wL+17)j ztMPS~D79CSCDyU@m7UEAwf#21Mf%uOwjl65biBLv^!#ZH)5n_AYtxhKB=IiG-FLa= z0J#VGSaFFf&^f_a5OFF(jyN<8cb2c{6^wyu-!ki zuE&oY_1AwHsB%gZfuFwdWew-eAAzTaRXV3OX+whh-e%}(|9v+gY^TrREoxvSYHkYl zn^#VDxr^K^(;vD29o9xUY8XT#jx`s?s8rJ?PwWcYaTpVfl3e6ArfcU4s6NSzm&wV+ zSM76NJ&@kXW`p`qIhK*8-fc045cTW>?3b&jei)p}Jf+C0$AXdVN}a+!328hk7J>Oz z8D?gH@e^-Q8$-{cO=|A!QvBjd8-pJJ&Vx)1Qu{%wmf=^8vyrtpbB8*|j@qZPJ9D)^ zMo{$d9&hgU;Mq_p5?mL}Rm5uil6ltKsQDH|eP}DfZv@#FT$*W6#4>*78)uf&^ieB{ z@TiE!p8%p5YMY%{!v66yUJOTZ5AoTs%mpHn1#N48`GAnD?y#K5XZ2{b_g7YnL5N+b zq@(wB9#8=1oPIyHVCmgH>$C4zX$BH$a?eT z=sj#>T7C0zHRfxjV+RoDtyRLjL_6QpY!1N^HoIt#CR&_Gvwb|4KW#_)RB*IWmJh_n zJgNi{rI#XKs;B7}_mF5mRBWE>I8=i{Up8?^(}*(96sD3Vn2V}awbO#e5WaG!nnMC( zlZ|XXBS4amX8c2nLW$-k}Hh|G`z?q(L;f z?A&k)8jToQ`b36QCwt)vk}a9Jz;mtbmA2VD6aN*e+NcX$E9ivL;dvPnalh{n#OaArlQJ-&$~kH97k}E zyo^oIeg+?qsdlX^ z$`~ILk5gnBfkhnkk`NfB15wn00DmqD7&7D_laQHV%97sn=|5(L^)yuf0lj zqeIF_yf`uNlmKdzBU5rBdw#FVuh&oJ5$B`mjkFm!SVdjVRUU`oc@dW~Z};CRNzA^y zsDZ9PqccI`G36vKDkM|_qX%8Z@s(fG=20ftscEstEe3(~&0XV77EJ%LhrfqlDTPAw zoaU;n#|!JloJqT?H$p@QnLF>1~oEH?+@>nVSvAL)clpRO*1n{wkJFN)1EQ~6#&Sr}8 z#$0x#^c;p2EkHn<5_-&US&froBWWGC-ei+P zY!ZJi0gTvi&Taa9v;&8Ck+r+}f4Fuy%mT5!GP>ShYe-l&hqjUA@s>VgakE|8)Y_ii z3W4Ag5um8FcLEh!F~p<6Jh~i4VFC#xCIWXcb;W9bJmXD_#1k#xH}l8-s-nX(FDz-Ynz^^HD?z-DxN7dCZ%M?q*L9$);@02$61+Y|Ubtw+vn6Hs- zE|@0C!IjgOF(gXc2%HQl%1dFAc)F%H#?RPZ(=*CZX{CMcEeiJbXGp@Fe#GHo`1YM0M5NNH(i8N z?zmD)z+9t=VEbjoxc1z2f>Qs(_Gvz-T;N$w_#}@pog$*V`LtTxA~{5j33pAS?!;CP zRj%dWsxpi$ctD_RX!UIM`hol!qLNkUJ`Kp}k)o&^G8npb2J>`;X&6y)OJ{gH=E0v! zZ_&|>@9fvKXw#x1DGIeIFW#%r% z_?F0DE9WF-;w&`k9JyPdn&gxB9u+|KT=m#l-C4);`opEM{=*+3bI<0efbFgjGuqy{ zNq>nQoDd*K+jpzbHR>e5JZ*(P*w6X1B!Efy*RCvH#auf4F6Vr4-!b!`@VJt_W`mva zGw2~`3LL7#dT-&s`+k?{bYKcrE#a@%Usy!JGC=6Hcz8Jn^$N^md(wQ8Mat>OhiVX# zV;J|(AmiRLT!3^zayu`6;5$&?ckfcgI7ngHl4h+=%+c)>k?tjck7WoPTVgWoGAVfG>-Y_{bI}O z!DfNwwgevNDNK=|y((6}iIajN4CEeWkmk#z5^|a7d7cS#Dkp5LMsrT4HIYklMW9Oj>MfDR+?hjkL~#h{p} zFAGND6p*z{c@Z}=lfzl*p-&~mcx-Ar>Z?W)S=vD{e@hQ%3)cdF!3G{1`I2`s6(B5S zG83-}xZHE+8q$F(rhUf+G9}mhauZWSN1svn?MU=N%lw>){YU|%{V^i_nDvw%nTr!? z8*ZfhToegANI>-4p(b2FA)&{eKM4Qiv>l24-|LN0WJ~?Z1S6O{AM(20V}d0*=D%Vv zg-%MDP2?7~1f}9aE9qf<_$gb;;e6DL92;kwN^>TwK(Mc$W7tk0SnpZ00|_t>V$+Gv zq=?c+VK2fBrSXm9`#ro#@5KhB*u+YEt}(evX~KPb7zyh3vlMiR_1v%)idX8UvbP9< zD_tanKoiz;Oiq$>muH7G3CT)1L*z_!A)-k%<$d1_N8Nqh0||8V*|)vO+^a4;EXD(* zkxfx3-;$^1jF@7_^3EI$q$+-wnu$P2cG)3GmMV^ldb>@gbInrxzk_=umzNFS3@wSC zHYG(hQe<2-E38#QqW{PTMejpOqnUzSQn|icKCpPO9!tkMeUwIn(erBg{Zck0m7cPW z$|-dj)8&eG&(B=eC*k^#PROC+0*@VIGUP2Bj#y;NX?hDF2SzDmJ>7f`33`SH^_T zF=j@Y)YLWG=J)8pnABVLG^N{ZBaG@K3af6?A8YFPdc1hZ0+9?c?%Xp{XMIPKc&ud- zwQI0_F{Dw?P;BW7a`sX+F0zOMxW2wu&`kRMYOYA`fpQ)X;}axU!qh|2^v}JTDRGD% z1f2-8fBNZ?H;`$(kj0q~38$(+=t%fjAkMcXu;x~k^D-%VBEX#ZX8=X@fUiaqMiETPaabR=*!HDkoOI?yRnx3y!l`Ev=r2;~~@Q1!TL z`Wj0QAGJlRqcZf&MgOx1Ja+Qdg=cDR>d!qZj>(#ZT{I(-r+1^X-jp4(ixZ66egdCm|;3N4*QION}FV}b+#aCcStt)C&6P6 z$SWy}iKv6t(dtF~0n2@G)ovgtsH9pu(Am^dJR@=8&oLI?b5fo)z%?wZs~wl>_){|F?IVowbdv) zW$Y<6abA!1Q+9r8BL5D^7!PSrrtwcG9RLBwChera-d$zF>=l9?uNhSye>PiipK@F4 zCNAy~M>yzFG*C0faGCnH7_up>J^GsvmXG(nsm*Rr$-ajbaFHgzS=0>7#-ZQSrcXOu z0%J;^1azn$ys`&y5hctCzSLE%x)IKfPrsK-awmRob5^W8{=L(}M1ZEc9FZ$%}QcMBb^6jF&E__^$oo zto}xa@UlU?;dop#1N{qgnXo#YLuKph86>$A(KRf)$+t442O6m`GZ0y(*3zb&H0L5^ zNr-eSp(cogI@AI)A@btblp88=cNt3aGvK9K+_e9KU46x?Mxzm*Xcr1yyjC7+l0~&B zw;#@W)mc;=n)U@^y%q?Og`M(`mjgl%Z<+dWaoUt;7dfA(kF^%|M-chjGm2dc2^{lz zgs2N9aP9NpU{okp2f|DdlkorV9r*u=wXJ~u(^J5^N1Tzh>%Kq|qI%Rlhd`p+l0{Y@ z#xK?`^X68ZB96Qj%Se6fO)#PA^P$n4E9&51Z#t0c)1~x5ZEsS}osXSNd{-g^!DQ{3 zgOUe1(d38>S&&0aG0@ozEE_%C0x}P`5Zjh+1Yt;QwuT8XD07luS&)1C4xaMjsswe33VHcBdNSEDacC>pfZym_O#Ii{bfS#x@^!@zYh(gVdLE zCi6-fX<36q4Zmx7IKTNRaU6+qPmJ^Gk>ddJjmuvdPXjD7Vj@ z+llS5g>PiC+{y<XAXhps0u6UdsQ7N~buo!WB<;>7>@f0`T1ZB+};#*tTHU$*lTco0+dMpX< zQnJwl|1D_1)#L6vhQVk}1j{NtwpB)HU-^~ps%9ZVZyh0rFSrUL1v0oIQbZ*qo`#Nhj(MU$xDWg@eS^*O0VG-o7y8 z50%^Q*(iS-z38o-qsp{vdYGBT9q-Yqssy&F?*MKo)l?}=TBIkb*=HK_(Q_Dr4KrIIrM9NZa+~whg2&~Q?;_x^a5#3&tkjL! z$yIyz&rVirAUaM#L6$qGbua+W0I6_$$2F^j)672zOR3%py&a$`oElQ$)egvvNjIzj2YkNT+T2{U!hYtlxB;* z_w+8O?fvrIM8K~qm3!9%w<9=*Zv!z%L*|!rjQz+KKp(sH(QZem_zM5JKjzWdOdJQ5 z&=Zvr#smqv1Ls|q*7m-lJLR8engF&q&>s0pv=8+t72XRq6+sa z2ElBGg8xD$HgtI^ljlxY-JAFbR}H3b$%Cu|1T9#~jv2*(>|O%?1f74l8#!oS5g!b2 zLHJq|2YzdYBTGl&f=CnfA)D&xuaXPe``V~vqBXto0j0QkAPZXSd};~4_peStBl&~s zxCcP=oHQm65Ug)gz;J(dm?|PKHn_p&_|nmgICv#>{Vq!gEy8+ADlIa zbFhW>sB!^Oph1+`Cfq9Wr6{eka`FzD%_BVs|<_II%NNn$vcO^M@jB$oy|6nj}Z-YeZ}6v!gw0tt$xzl^6ousRv)-S zbCRjjp)JGf;wz6(5~OW$-W^u#tW2nrY}&R8JMaxe+$*L;QP-R!#fneYD#FI<~xa9NpT8tE>Ic7`0hvH1vGR z(6i{rop+_sF&T-6irjnP??)%KAWKhNhI}G?aqoV?TPm}~Xih?D^h2lGEEW$1dF^4W zfjQm)q?wX{*Y}w{6bg7a$#GaK--(sa6aT(zhswyU9)l4@z@(mxw%H!^TQ;tg9h>6e z2gtZZ3E}Vl4?r^jz@izSKxecAI;W}$hQk3?L;8y=u0yy=b%z^P5O53p@ND?by{|5@ zCx1fh+aE#IJw9l(6=MuSHWCT>cHs>jJ?ypAXxZhaT2rUyz$Vw%0HWct!P&ICm;Uw= zxa=46?c|_}TJ1#NEpkfno>!=ZDib*er1HO0fStrGnWEERXYg6Qlu!kjDOtOT170VE z)=K{8DegNdW=@~o0^{rU=6w`D0*4`mvh#Fz zqZ3LO|MB&ep@-*5VBR2KAKzC;{C1;AUYfo;!t6ofq-2m<-xC^R<#-U$H*$qSozAWz9SRX!(8iq!1CsB*DoE?|E}R!S*5*f;%lO3-%(@$q1B z*yQ~}jaqXY1E#$HW)585H^?;z;W|x8)q{ z{QHJ|u#_wf&(}B!QH~acZ5+X66XoJ_u5}g4HA(M0u>z=on6IIUaTv2V6y{6M->#b# zbE@-Lv1-F_KE`}G#0nU`g2AirTo0rMggmj)h zc2SCwupVE=d3+`FE>~wkj=Fg^rqI(G26`wrH^w4MGQ`NrsS)mxYD>c-O-*Q}=`19(!4G3A~H^P9hrIdSSLONYE^xX1G>K`LU)~ zJ^ldXxoj%fNg1u-?n7p)(Lbks_aT>SxS9HHe8LT6D=#JWFj80bB?%u$cSR+cusMZs z79%e8)R!T%mMf32XY5$tPHLJ;)RJ{S1)F&=-%hI6uBWCN zp=WD!K#%otte31Sm)ftmKv!L?YEx*CYjX1w?C6P_+(1XTX`bZcLHyc7*GN(xo~a_x z#!m^* zzr|a_Ke7Rh1F8u-3Z$oG5zj}?E~Wa=#bH%nE*kFSFAszQzYd+9VcCSI&H0Qb3zSr# z0m^t6EtT#t2ZR;AkB-B=;AHVz|Kg=GfyUx@n+~~Ni4EkeP_3P}CNA1ZZ3JbA6-s2U zX%-y#YsY`1G)jv=hi|_uaGAcn&I;cO>Gp|*>W?q|!2J?cv{nafKua{&9T|geG!;+S zbcBJRRS=8aO@iWY{R8w}Nx$oksq972audyQaUeqYQk&(lG@Q;uaTJ=Vk-{8hGUkNH zObb9I0BEG;B}sS_q$XxXYjKg;QJ+#<)8i5f5PMnZd)Bm0deW5&-fgyY&H5&%n&L|w zjMb+c^^f;<n!yNOrWxicd!+#OcIEbVa@(K4nTvRAHhkFyUL=J0thwK zwvsd?ef;pF(dRq<;C67Pq>MGJ2Y$}&yA$d`Nh&#Z?{rg+>YjDE2^X{lR zOmy|-afSh(B`DJsKY26zxw!xyE23#XaSoh@Ea#jw4U7GN1*XghXk)P!m~oLpit=%( zNA3@o6DU)W!mm#2SHevLxGihpSX47EAwIWtBUBOUDZGy>ppZ{7=}&T5VMrzJm;?zO z-%cKH^;sRmNwTp~7XlGSB9}xkXxY71+{kfQRv24&*viPfO(M$kW$}Vx497Y|R~~yg zm)`DvOL!2i0mDV$&b*D3jP;xr3~KP>Bf@Go5zq8~CpD60Zi~6SMe}BGk;ppVWY;ar zDxeAMc36EIX}ePt%_=~lZAJ&ALW=NQoeRG}#Jt7oNZdyX<~P}hA&i@`ohP{gkl(x0 z#IjE=wqli-4sv!Bl#>vlO%JUj&J@^`Uo<+l?MDAi!T9vkKG4Kcv8HFM)G>-=(*K|H#l2>E&Uy;;%2Oz$pWieh) z=xx0_zzQ0?02!>QxGrcvFSi;-HznDiF=2|Gb}D%#_0y;|v^=DBoi7*E?Pm>|f#NQ3IDm}dAK2W(>ffTXX*6%b388cGnH77U?ECXcKJ zlvn#6e?Jqd<~@&Tks7v)O4?@A`nI)$1?koZqL{DAF61jHq%3aTPJG&m-6{1hLls7s zqEO3yg;IcC?|J@lZ0v4`utlV^-x^{n7@ZiJ35;Z)FrfN#&gar=!03xlO%ZM3V|ysS z3|!J{Edh7>Qh*>cye!nLw<67HjBG*7+jbYt6TYZ^HZm1&>s|q_e{KKmWr)Z z%bK|{&w_EtMM|9=FN>zUO$^nfgy4z(9?G-Lgjo=z|48;laR4M`jA=>sd5{TkVAPCG zG~~qft=kb&9ONCZGMm|kym_S9H-!koF9mM?9X3vrt{lf9!U75o+pGR($H5^cWA(!F zaz5SPu3|t>z&c}{a{%l>vOA$p+36-_LFvM^o7k@(sX%>SaA-W4hZLRJUzM`-8gZ)| zE`}~SYT_gJi*S;=Uje_In84tCrbKI+U2}zXKgFR=VoeV2sUOz9`3192N-Of>v)Q>( zKfg=LD2XtaG?kLu@d`rtnJ1~I_SSOwL-k<1oPT{el0e`2i}Kft`E_p(7mppVsz?;) zh(fIg3IWc2C|7dkETL=FWEsWE7c!4nO%)oH@KvDl@dS1&UBj>^BccMVU8SgbQqzPU zCI>u{>t?c=`D7c4X#IY7S$|ICJ!Cy25#VU_d{v}_<+s#&^dO-ofR~Bgv&Q5Jb0Ns) zCyFjKw9)raV%IFXn!u}vUKl) zaB+?RqJJ%cA5=PSllKbXlvo?(-3=2#M!AhFsg+k-<&GI@UTU}G>-w!8K+#srg)34q zA^P3J1KR5vEfZ15MV{<_nyEX3_Lzw&UTW%GZ4XqMJCN8h8zg(f@5sAKYyOm4&i`o? zKzAm+1!P`6|EWUB>sjG!EguA{@@|kc`3b_3Dp@dBR%M6>Zvut&**}&s`^A2pQfPgK z!6+fRvUk9^OFJowfq|_Kp;F2?B|!J%oYlV^bA<*oO;cUM;kh&3Ijw5dC&!20AkozU z7W`Fu5l-^1c|Vl-yXmq>Ft@1gwaWsqteMFO^+F=*>#NIX&!mWVFHTN_zrV5rf!bk? z9SMv5lynRj)r1X)r`X)?MNGC|mj*fXpC}9=*XVMnIaQR`S#^ax2CGdjM)P66*SU~n zR2ZF)e~6$mZsba97D(KsU~@vERNey3xW6+qmP_#tbm|VfoPfCn1ALRs!udW^og14i zaJE|;s-KR>BdDobu4c87@!4z} z@gx^{#?X_8jv0^k<)`yZB(|D|E0vcSa$_XiHAY_~t%x4wkNkO%j5v+kfrx*c z-%<|)XGx)#d$Vx9L7hv_#0Ob%B2W{9Bdd1+VOaV^fUz`{)~TIXmMOb(h%3UIA){ZL zb;qB=V4EW=FkBzSx~nBNwco?t(Jm)=aAZ#qusXI~)|hgynETbqK<~RvvT2#M3oP_K z^;rDm*t3ax%4YVqx#Nv`*l^RRy2yK+HY{jXA;+V{IyEkY}RIID-6wph`ZUWTDr- zp&MH;i2781&i-9x$FEU{L2&7Z^|pJ|5O{-WDd@{ABmjI# z;c!82fvEbXaHn1?NQy&uGcOq*QtLPp-NROdUpW=Scgc}fEjc?a*k`*QA*d0}SxE&4|XaFUTu-BcX1$*BtnSZ zov{>n9-HO4g4L{qWirMDD3kdn8)cpqc9}))N(#Sm5)sBGHqO4BX=N6=JNp-rC7d}Tl zxpen}3xD4|jk6CyG;&h&u5u1Nn#`6U=z(ln=L>P>!}6BMT#rY|FR~u6TST7vEpdA#N z5zZy|5Dq({e>t%8T7G9LhW$5`jDvgXkKKU9a`R!ZuNI=38Fh4 zV6lv-YzLB`{AYh>QoyH=9(*&$ir?tdOq}^~6cXU({D>XXXPYMUt|^s2v6&$FuBnnU zO=go8xB)uEj>op@@Y)z#Ci=sryY<;npYGA0BV-*-Z-wga(rkS>S`sI|;6BtPpn>h9 z%C=LJ?hK|_LeIsl^j0xM&a;`8?H!PI#yg@H(UR5w>(L>bTyh^t(4c>XH(`0LGkcwk zlin<_W?)_E+qMAi*h0BiwzArnmeM#;q{&w6Y%eM!7Q5WpU|Z&>{t8z%eXu~rDfuB%(sGe;IXA0KRsDFXjR5~Y0KjM@gc$yWyQ%`sJmL8rp;2{e z0uk(C2j9rBzD!rk3>Vy(1!>h9XimJ{b>+n?|EU0=%D37_O8al&Gz@N5GK3t*;`t+d zz(R-IHrJ6KD7y6ONHdWg))g!nHYdf$e)Itp#1R962 z=#8GXhZ0_}@j&B0q(bNtNB@HxVOa3`=6F*jIjD4my*;BTND}po? zDbp^!S184qP=pWtmrb*PZAcba?Je2faxa_5cZ_}M6)esQk8!lNX^wLT?;pi{1InK* zKiY&bC2O}oS6dMwt5rn+J5-|I`h=4l|8uLc5=)!S18mtcNt{k{qACNvSPq;kJ!C{r zU7g}OQJQ(+gZQP)m~5Wrw94#wmWW?L(pL`l6bVc4{diDA#yM-=B?-8m;YWO-Krm)Uj>_JxVyA3;Lwn!_mDv*P; zPLV@CWN9SM-TsL92@xAdEQ6%Bu^9X}HB+S5*I{1Tl}GM9j9`qRzzqsW8eizEIP^{$)cb5xrJA{5$PVzwd=m_wF|4GJ#OMB6uEh#kcly7RH% z^>AdXldQ3{2Lv~c;Fx8}RlfOYMauAFmIVKp@B;a@G->!lJLx`khnRHt6Z~~ArHA%n zLAl*(W7J5<>j%fwLx>>;@Tg8B*>M-KFT)X$EPmeNjED0H(}=?JQ4m^}SVqnyz(GdE zm8!OmN&h(v9}^w}CMkf$6ivT$I;4%Zcqnyy!wr~VfxS>db7ZsejkHl3 z&Br-Nb{*b3cQAq{!V{y&?$E5f&R{Zo4X>?3p$Z-iGG~k}g;oO!5^0QQJ&&%&e9~rO zJjct;T%JYIn&ld85y@Vea9kv=C&wEwwL(KS$v$5DYDY+gi|Kmbgb-3PN;VAH=G8B9 z7!ks)p8(;beAqN8hC>Gm+G_e;8h1x|{aZ$URhCLHuKM)ev~`DqyUK2PXQ<|2ko(ag zle6ruSPQ+C*|jFtY*-p<<9OM911B3O#|hb8c>QgOZpIt-$oeXCzF3E=RA;`k%wy&7 zGJa@g^a^5)?(CjDl`de(ta38~T6T?i!7o34KR#MEiQdX%Aj+eFFD#zK=WSgrS}W5Y zz;*FZcas3H?fGdY;k*5^@E4gtV#6iRB}LE6X0Oqv%{?h(_IQ(ln41XVIKfmBV$w99 zaMN@fGT=YPG!?E?toQ)D)E@GDH&))vW}$AE(qhevtKiHjH^h+d4>s%}1)r~={N40Q z%@Eq#zW!2k)?K5v0=MZf5Q^`x5h(cU7fFa*EaKHcq*()1VKMlJMBae%b za)k~Z=S~N^h4+DdNE)1L=Ne-_OyCuBYAmTEuK-ewiTPZGjF!V`A}&YVj6j%i@a%qOBQb*4mmxGj zUTo}D^m_p@69TgOP%Z@oJFLT(;dF7FNj6GM-#*hI`$RleKx$&ot?>V-`Sa9Wb3vJQ zGdZJs#+OjQ!=m8#F* z_vs9_X<@0Nu;9M}ON_=#DbPcS|Ft_oxkJ=+7a{8)8^}vTVtVH67abh3Xdd}J(+zB! zBKVoXSea5OMTNs?#DkW!=b@Z0N#8@D#K`^prit!6i`=$qOcA0y*yWn~POvbKjj;}G z)52_`hX~F7Mqa)8@0v6!oiL|;Xo0Xp0DQH^LU#Dy@9B5*fL;??h!AcOC)}wqn36qz zS8t+GJ-(pz@qYc|{&6z`iY1u%MSjW>=jT`Ss^QykeTU^Er18iyQ;8rwFOF#SrGNc5 zOY7*q=}0ZL-3At8K+>V-Bb;Qbhb?<1)L2Jk1XbL(rDcmu7}$72b2g5L z;W+G;JJ{n^OySdt*A`EZZOE??*;eOGK`3?nD>+g zRw)l!y`LI>xLb`u!(kORjVd|;DvtIu!RnaerK)Hf81?zo;9619RZ$sq;NZGUplGqy zUckiC>ah=IMfz+Ylwtc7rL&d2(0ZhOrLJq6Qvelsh=>y~2`Cbg4ADo`V+*p_6>X%L zs2ADG$I~gt0)boki)jB<*$)G$3i0+Gpc{`<)>#8VoJ^r<0~VC3_?pfK!M;?;!+47K z2dKKj@MG?0w%v)OAeXsH4N7D~9?S{v!|Y0~tO#V`ZAR$fS|J@E>f;r34T8Ku@YO_= zE35>-Gfmhy&FWA!WFnRF@$LcJ@lYjMs|g?``&V5qFSBuDvSM0TkR~=UJ&Y(dk=(3; zn~n;@)4Y?lj6i?eB_hG@Zw4AQE*(|Qgyq{xHkTKPa}g%_*hko^@GmJMNAq2K>0Vo${_oheRrrGZ}V-l+!YRsTI;K}hzDlZyAd0b zLupiX7*{~ZgS3gNhLpp|cRGBdC^_mN+GwnDOp{AVwf;ieA}l;uB<50q75EPG<^OWX z1M<}4G8CzvC$vR@=b+(tx?kU55}$~_aZX%rcUzNoB?w((l$*unze^oVKz8tvFvwK3 zbUF3^%tGD4f6hUN*U3eDthtwX3C8*h>!6aJnpDW0+8vN}#?4qM4r)al*z}@}WZWyV z-(5)j5ir8=;rZXY-X18DXZb=DeVqB)!7<`8ZY3C&&y4b z{EGmcsWKbk_3f*LNB0pC zeA*{@jn0hvd6%;Mg-;GME)0KZz7%$d<(ul{~1=TRY*ooiqO`z zox1%qZmWO$(qJC7blX=g%6p%SI+A;x2!K&~c;du2)DD`>ogmMj8SMGBRR;+lYp zON$_>kW&_V+L4P0cwjIlcV;1XhhIfiI=W%`6UOSEEoSC)b5Fr#{w2S81j&;7wLB3}9snu4#E0NKKvjhT zG$@qM0He6zS-N(thq#-@bB%qOD5|lDC537NELSlf1QKuxUH=_*+4dT}n2_tJ?K^4M z71I|JDTe{8or)=le(Y>+Vm8M#e*T#ypaSpO#@}TUTS&W4XhPiIvgTqMUWLqHrt=WpTu%%E&hJZo zPs;`2CcH~L3iB{lp*d?}3pgkWE&USKL>7Hj<3tYGxngwhVjAUVwc73 zFeOyPVR*leQC+q6`TP<0Tr}S5ArdTd#N z!aZXfisk>ly;#`)l8QFD`z*h>tUy8NKl#Ma7f&Kq`X;e$QD0!ibR^tP`os}N6~@*i zPT81^)ugr&{lxRD!nEcjF98UspRe+sYO$bNr%IMy19d$K1U?nK&4(w1LK6d5uBadZ#dR^40OeZ)$6>#IJOL`&n-l5xQ`A zk!}P4wCm~Zfy3xk0z`molsE>E686S$`}82y8up&#cD|Q=V7JU@- zC^^ylhyw>)4nqp1s$mi@j9RvmQ5G)cJMm&p{6ukpjoO7`Z8`P>b>rm03WjOnpk%@# z>+j_?xBg?cRHGsM%y>I!L%%g9440~nnDx?Mq3L&c2#w$Zn-^`nI7NDmojg>SPO|VO zRT(+2Rh+*xeSS-J^c1xzJl*$`uRV@&d^MYzMX8YaT4E$&i?3jKIJ|@- zL08VU&Q(+GAzkkRbcRJ8ak(c0TP2jP)uw0lJcU%c2MjStPumL7KhkCo*$<{x$mAd@ zZ?mL=W8yMtXBVUAqIF&J@uyGO9!Vd~?^J9q)pqI6g%_}w58X@>uK2^l7+uclP~Uy=MK+?C}q?FVXT zp1%VMfRkxbtp(AL{{ycbMQe5mz$uFf@q5bO>i1LyvIPY>iWQ2)m+An0BRWT$rJhT# z=>x&zI?}?oNT#yE^kej_?5#i_96?wyTTMJc1rWSGrx}CzH-Lyn`F+aF`^CY7H3F#1 zMr0j(c8IkrYbG$rg!#rD`gSnCV^p2AWHkm)zO2*5Lx}oeD4iU&CYzbL!-tCJs9{sA zEHh)6=0Y6s_O92&nzI{t7{?jGz0%%#8l6)*D0O%MCWA{*X2o+)zMv z<)Xgh3(9XwZ=VN_R zb-NsjXAukBH`y8O7Bf)+AfH7kh573p^`t|QN6hJ$nIZDZBQD_KY=J22HZgrNs2g;o_a_IE1|EAT2RU5m3f&Xppr;OGl|f-VCt; z#8(88aa>L|Vi*od8WCFxE{jKF7@+X_rcR#bp18%dujpAGo=N)E%kvX919e*R(R5xP zZ;?btu7KC&*rkf*{>|j<^V(QB@Fp))cOasZjJc1P&ykr2FqC!4}jm%&sir?ug( z+9!h(x2Nf?3YTSwG$#AVe&%RY6=KVxJ3ME8BFlW~?Swhg-4D+m9vTPgx^z~kEiVey z$Ilv>1++dwlGHdrfIZ z1$fiW$i~JW$E?@gq%4);|0fW}Id<@I{4PF3dvL>R*n03EkDnm_iX7Hj1Q|ehF65Vs zBVP0X72_osHq@sa1{n%y9SH%pk)EoZ+`*Ng3;Wtk8;sA`DsimYNi%Qq>QUC=9Gp+q z1h_0qQ~8i;muS}P{f+B*2})Ana_16ZWp}nnd_c8HaM&OC0=FjrZ;^X_lX^;}Q|Qem z;1A>@A&y$kKB49%w+bI*1TpbBxnxvG-r=xUM{|RCGfRAqZpD_lkhyl3!HY$#x|<9v z4%q%_3TA$Pb)BqjL1O=f-q6d3&c1CC49bE;0S%uBOL1Hf4g z>DH!!v!8-0nY|HF9-9utoU|MS8_6M%^dF?hP2YE1Pp?B1xTmOi~qbPr`GQ3}4Xk%y|^}^)?q7Nt>Xo6e%z40#>%)N%0%u&)>FWv$HS?`gi zs?RSPWh#G4;PU}7#G^6+WYas|s}RHhc4O3y>pf^03I4{+pm5MrPt+qCWFOp4UF}og z57~^&Nc#lQKGTrW8UDP-xuBE`XAAM{Yq9ik#~fIUH@lpsay}wfW1cop z&q$UgwrO0BvecyIb(!f1YBp8Yney%-^)g-`0B{-fdY82Ii%%wnug>pjrdLO~i&E=m z8ngEd4j>GO+HGtpInFe$>L>b5rZ^7q6an5SboeX)tT7`a59Yd*4Fj&j$h-Q*Q-i;# zFCUpY1`MTU5ahD&mF+kGFkV>}8Z36$DNsnp1Lju!)f*&3#(M@2{J&X+G~v;YfFUb7 z`Wh07*x3s=hiMvkDeBq>rYdfcdmhJ$x@;OwN|ar*MXd*b?o zny3;7=QQ}>vE<3pu$iOqW_@@K*!V%=7(6TSvir{Kasfm-ku|qjM11UgL_CQhEMH?! z3M4Xd;z9cC75)}erF0atTOjz(m+>%K^FqAB5#DqXufS@r449fi+W5YO|5h`0UYVg^ zBvO^UUD5Kt2So>x7<8aQ#F1IZIs&s7nI`x3fAQceAUM^tH1U+Vgu$J9Wp=+o_cD^z?O4s zv*>X5>qKXa?7&`hw*rWqL5R!QPH2i2&f{0fawbdN_pFy56Z4fv!=2_tF!o4A(zabn z^pRE|VH|aUKtI|TMhA2oeFsbwu$luZ(NQ1n8h9i>@zE17ce6}z*qGLfJ)!iTkXNG9 zv{gKXi2`~(ei!p+HMWc5Ow5;}X2IJcr!J%Q!kU@l_)OR#+BpikUVK7E2Ly4@ZI9}7 zmkUA%u!GT^{=;qXsoS^Br1stHj&@I`^HH_^u|O`c9YCt})514GWCDR~@Fd-p`IXz2 z?CMM0&*7n4CX>V>KKK$!yO8`A%OTSA&Y`*pjqo-q=9Z?ATPexnOxfSGOzB5(g(H>0 zG(V;db}D@9DS?Doy(^8UTuH~3E_E1po6gH!QeJ?ibMXbHxs;Qo500XXOX31NR`zz_Xh>r9osxhs>ChUX}n zCRZgA_L`>*y#$$=SfZxn_aIsOkrR74ZW+&aB;b%A#k)pXM+PNoOV71V3nzXCpk9T``-j*9K!!I$W(_-;(N4uModJ3V zmbanGce*7aVxB(km;2>66LBZ_1eFI4kkupDsmJ+m7upu9C>Y>WR=dfen@(f26d*f0 zry!Sv+nj64HYr+(IbdTNmLk)+ahFcus@WFzZGsq>=Ay>VXqymH5i(QbEWQ(F4N->1Bt{?oethQD`^JK~%1+ z@u`)dMsg?qmh^keP)pB&N#9wleW75S@6=+aaqzmeWw`RUQq44Oe$iXW zOR=B^gZBK}gVu$q2uj9KNO~Zd$-l>n^{QSt6kOK2F_*!WvrBAK!|OB-lMf;*;IFc! z^M-)?uD;yg71GS|#J>lOj0S1%$|Fju&9UF%yxL=PB!bQcoNHHL&-4_Non#64(?`rW z0)=h}fq^c|vv|f6$td**_m)_|$UXlZceR3f-}!YfeQ~L?iL+X}5VATifR&vX1*d6_s6gR)QnfezhzI7vfO$h^Zcbb zl1weR3af25y6$Da{}0{Xkw-)Bt!{8z=}s{~gOKM+N?DebUfwnZ|gVi6j}N>%ffY(ZxxhSFsYOsWVV6lBP1+UfQJ;fIs~|8LUQL#{mH1v#hs5(RiwxAQ;R3?>>BsYA?VZ0 zA8<;N1wb_6X3g8M0m+}xrgztC=tX2Gm{MbM&zXq0&F4~%F1{RRYF3)@S_iGsLK4@8 zH8iWn-Q=6sJ~q4^RDF!@b=3+%!PXMSl-Wh^(8hK%pYG*z>JFm>>4to}KhHsqxXM^1 zWCdQwWtjw7QLz2GFav-d#(v*~2^{|0_7Gt!$e;j90*?B1<3_u$f zvL1*71C@oUao0&Gh0P`YpH1*C6W<%rfL}^{s&SdI+w(ebkUa!cNTyF1&(g^JV@YJk zTYGCs-Buo=&w&5It+TL51cHrA^PsLstWH^quBew|Rn@r>qo?UZ*ra%LX%@*U@oK)N z;bNKMRG+%0!I7~XaT|b3{0b6VIZu14dOq-R^IU-Ff&TYp(|~+KJBW07Y^|^n;6)3r zX?ogxwA*w=?t8M;INS#pOGb@FP)-}S&u=IBMZZ=-XxO&1#ApXdVLrA|g^R-A+wLt+ ztBi1S@aMYLkIGxKfho)7<*ZG(1;bK_c$h1k79v1r%fKMrLc%hGNUW{J!;y^M^8qv=qW0N6v8x!6ec)0C+qM)wZG0`Z6<9SW8TMUoXY858 z6?xIyZ;8HF2=YZU@aI1}RmeN`x-Y&dOYcouo@*57!}+$_q4=~RmdPE(j9!!ud0NZ1 z#p{vKv^?v2F%pI&AA<^W^(tdgY}Gd=OzqBNlvyiDq<`)TV2@k-?^vHI*RehMwp6P} zXIMsrWWsY;`QL-Tmt_Tm-)|2PVbcpr#!=o1MD_hNo+MfkH7kh0wSE+#h6k- zXOD^*9HVFUzh^@jWl@JOgc++qm-NKQOyNTcyZ5z@bAHl{RM7Id>h!>2jS>)G^M>Lk zvB?tOfjfasXm&H0-UquBoi?sW5~0|I4j`Gk>r1v%mykeYp;ejB+z3AG$jzgVn?u3YyFcPvod}N0DOFL5Ny2HZaDNc@&Q> z-OFgUfS zKtC=^Nzg+yi zKJ6A6T#$?=i-bQ$t|*Cg!uHH8!A*ys;BqyGFko`@!stFYLY%UnViK_8?}GXyHL^`D z>Yr@F2GAOx(pub$jwf%UQLc9F+a1Jv%VvJoj)KDa>fJTvNnRd&G#AiSlEdZ;{Qnf4sR`dnZA0e1-RvbpqbL>Bfg)S(#$H^0k;0fc@k{`YWq-AxQ#RB9v%zE z+pr0RL38>OnsrIWzO(>J6HznKvh2rJzF-H7-Kb-^qrwHe@6798S#3Iv?Rs!N)176# zo1K4e3z|pNdv;xmH71}A7(`7xwSQf8SN`fAlAXkKcNKyyFfYC|*puZN=qjJU#gx3`CCFSkX5V%=ppkdqkU{$2@ zH|gG_oLD1b5cC3Ty^W|5**i-uptX77tb%s*CIFfK<>t$zL&LAe^KVrIN1Z!*#IqF-$~x{kSs zQ7|r#9eJ~?A1x>KW-nPKT8GBiJ(QfT(wzAJNmMEPpYB6Ai>Mv_e)8%SAN{sq-mxm% zKFr!**GyzV*`yJNF@P(oM|xZ)&2)I%^+7`N)>%*ER4n6tw(OZg3*5e|qM8<(vEU4? zx^OLSD9(`TCEF2lHwYuy2|M19ysvwH7O8GjHZa)_ivr4;5f0x!o)#vC7w{#xsJpS~ zj3O3w!HlZN_$>04A`-GgbERHewu|vG{&8i>%4wvaz`BgmILfYr@@r3E*PVXeqAWTX z&VX-NH4ACo^GTq&JnW3(sf$btjjhJc)DWel>>TqY>ip6eM&c3XiPpP1pYxRLs=|7c zhr8o*B}D#~a)6PbUfWJ2<6x6|gfN!l3S;!@X%k9ctX;2%%JV^&7YS|fDIAuqD{&9d zWrqO_Tt*O#RBuS`Fw206{Zn{hl|;W6ja&LfVA7G+dtZ`A7Z-rc71-doDSw1t>qxuB zt>*(dvDwfJV%Gu!PHFioFm%5H%|qyc@nfIv+=Q%_A16!J_Z@3Du;ZRIUWD28pPe~} zpi;X^RNH4QkjfrYlabVfb(UiF8VmE}idxWA?t&DqX-BmllKNJKN0}He+kdCp_(qST zUZ4i$VV`%$#^d`#@$Pk=FMs5j`i5siWdRF9dFN&4P{$g*L>}LN{FVwHij&@qx&JkX z!irGs52w5H3d)z26*LvC8Zg+Ee+;^6O^A5(icjF2SuG=Yz9$UlcvUPQl2i89;bdE( zg|*=GFH32$dlblO-TlGXFik6ITBS(4Wog|_GzN+HhT~O6+A!Ygw&4$TVxUYA+iz&W zl#~C3fT449RJ$VG3C3}wBRtw0L@z>Rl21G z@G1gP0mOd@)&z0ym9q=sK&Nf`4PS$m4ciuae@{bsmTuw9m{fjnjvHlg%w~s#n+@5A z6uBdrwru!|8T<7#&}MPC!BZ0h|2+p(BVh`{&~@17py9XgbEh)s$cSZHw_M z$DyML96x+O9%F(GkK9p-h+P3ch+fYXLdL5&47Hx!kVJ-LG7dN}Gaga$1DLO~n3Uik zp|S-eHfW~FV0m`8Ko>IVu3hT(t^K@2%<)or7nKpR7F4o5O`aE_qe*S>yA&dRDDX{+ zDpw{yHlw06;qlMTquFScG)w0${ol#<-6R&Qrb1NGSRlm(@nRxrh2J zOjWfRFC?0UarA?&FEt>TF|9BvWoHyBRcIN`w8^GBic<_hnIyg~ zm2apmyi}H&*E~qiCK}IjH4S>APpH7y-=yej`*2YtgLoCo57@|xscvvp1~d^!CW%G} z(z5;vhUw7j67+& zpq_lw{gfi9h_DFn=6-4>v@wUFMHbw4qmNVf@>ev^FROF#BC&BOt15%4L;Ec01Nys& zrmc@-n*Y+%ZU3)(_2?M@_19_f#G%(<13+8eotF9PT8| z5-Y%QpLXs`*jZqtUxJs(C$T|$ZW zt&~Q~YA9I*E-is>Ty>HRw45G1`x;+1+OYvek{@tS4M9Nx;r;vR#!pDB76T!=c9dIB zV-nUT{LtBA-eW-^tn_;P9*848BSAN*n6*(sA7C~^57#)zc;7xcdF7;4bcjG1E%wvL z6qTgxDK|oS@-PX2$S7|X3LfdtDbH-=4ZTd~U6Z0k@Z$6VGBy6>VivLqk(BGW2p1AH z2W`vl9S#zG_x4({4sir<8t(cu64dftz9Bc)^!T8NlEIRGaLYHY->uo8*FN06FBg_f zpdgVx)dEGFfD5x&1=$s~$=mebWsaxm{=k2iIS#U$8S1oM$%;}7fv>4udI@03 zCIDA18lulcu`CE>kNF+JqPKvftCd9=C@sQ14Y}KGasdILf%359*+R& z$MYar;%=V5PHY@vP)@Mi?t-^^q<_{gXH^2*NHgSBSakeM;MH3=-T^bCzH<_&wrWqO zb1(zEiA?7iviB_1dEL(CKMFJYv4Dnq- zqs4iM>V)U2rLk6HJVfw>_K3ip%u9m$rJbrUU%Nl>()Yl_kZq|-ERG-d@bY9Wdf{=% z>T@*XS@}ob_|K5UgErkJ&qLfYj7VAy_7Dgbo|!wWiod}H852*HUCNr^8|t7-ilY&2 z^veFq*q4}?xBqHWw@o+pTdKBpleZ4~qv2f=v}o!7nw~A!pUNBlN0Q%a;^M3r(lhtf zI!S?Gr~tB(atVUjT-9U4M<0k5@&Wl2sZe7&hTXQFLiH!$d(>%!4>Uj2TW-#nKYw&; z93^%zWa2WM!r|I2x4tev5;1|1>84g_#&YY)1LMZ%coE#aI3boYLiC^%(>Hy|K~fE1YQHVt|)LaTM5iJ@fpeF(^^08EMP9RaB7U zuTVJZZ2{Fwwvz!xj>A}O}vUJ6)R?0z*zRrwO;**(v5ripUE)qtuJ3DT z!kuS6SX~0|P~iAi0NPg)&0IjQ$}bOZ*GYsiwpFm%m^tjlcUUn@EzT~u;n7-6pWg6@h^#z_k%I!f{bz$uB7lN3|T;@AnX$DN!r2Z?8aI@?C zzsjvWd}7w&QamiKIaGxiD#E0AG3^@vpW-(!fwv7l+1nI8=sE2Yp+6Z-opLEZlWTBMQajzsexQ$ugz{C)IB8eWnq1+}G(0k0@JK^xr2y8w zC-KL;ms4yU5pFRSRsrzys$`+<3ej;x9Dz5dQ`BP#iVXaz$<#BXhv#I3+9f|DpzDIj zsJW|J;;!0LomPRI0ipbM%-`gT_a4gs-ZTvk)#F2>rhDes2)?^NqG@$g8|vK=8Bi|4 z#9GiPA%cplO`EM(!p|5jlM{UBH*<-04YC-W$o%J+nADG{t8fYc^pP2lzH%{jS&tX_<$4(VLvnEpJ^OT zCz>lsiVDR604A(-_uwLunVrovb#4z%1g^)Cx5nYO;vL|-tGW!Dv>+1 z`C*gzdjea|7GcnHb4iUAFMrDsX5xb?Qm&mauhHsFmV_lBR~_-C$ZT;kaVLonV3tNu z<07{^r>trAK$Yu9pqv^eytT*Mb5t;NNqHkSW-!vO+6BexUh%38RM!j(s|Dq>f#Ve` zt7Un_R`|tt4TT(b0t`~fK6!Tg#|?jd0R9zUlg32>uO!NjArEqp$p~$0R*T>RKC@(l zs>hT;3&A$cwi#%|l~M)xT%g1v|MMiRhoKr2E1sRpj$OiAOgBjJ?sJW3;-`YouPDYw zRWq7C<4@GFAN8?Qh5;bus{?iK4u#W(E0Ilk+A7=hWfTsfb%FIGj1;o6?oVYRBao2G zY29=jh0eHfZM5CEDHM)Tv@A)9zML|H%P@5}8=?{*$~^y-m>hsAsQ(_%HBZ znldyKsBp>q4oC*!vR6LZ1^VnENKahCjJ(BD@BPI< zrYw19r#&L)?c+G8XptElz#2(@&r3&Hkdgf89k~E^MbChQK2xMu#*b~4Dl}-sypWe% zI!ez-eBD&)G`4dTUQ7T{|Dov0Y2cX$>JRK)Ciiv(L>)J}+Ae+Ol}8wHySec{+z~o0 z$>-Dd7w_YEYf-U`E9VLor9GHzC(ymYe44!YEgD9reIy4K5@2A+8(yX(5U86>#HGVk zVf5R7LhqdOI}fa8QwU}F;r=&7_5sN&8E7TUSSOm@w@;e}&iPoNgpHWULHYiRF1^#xY81CJ%JA;&`tHhwECOUu2`2D_oz}KOlU8>?>>&|4B@q4X1V<0KwX349jk89*4%H_Lg#TeDWb>A0pTU;`Ui!MYc^ZZ$zZU_ zU$E9D^bXxOs3enqPK_mbzJ5y2=5NZwiUgxqY>wdgun8%*2X35u%%WTc50Q0!UPqjT z;9F{y^re{PNr{#Om*vTZ&gip?GY}vgD+B(FKC5mAT_;2*cOBi=Yia3J_MaJ?Wz?A^ zUVpd1?NVr-*|Pm@VGKDsa6^sz+pes?HRh(o%#G}&!DHdtD5Hv$rzRM|{y&|Z<8J=x zx#}Cd$zSntpdd2{-Z+qJ6J_RbIOno6|5KX>3`Ts0hCd>Rrgg@~Xde^UN8H+>)5_<- zV0QOR2menZvF&194uy-SL8mRZJ)#0&TAJ*K=YpiQ0be8lXe-7}@3qkV$< z^&O=JZzSz{*Kir39aoBMj*}><*`R4dMnW9tFuP`cl$E*JqpfKIXZ$e=CvEw)#KqlW z8UhGOl3!M12M*7JAyo?=@RD$sP!gUX6a@Y=Mo(S?O)Yp-6bCpVV$P&d1#qY;8v$tO zcvO_&%>xJ71j_| z;wrfQAEIa!$xp2cnID5{(%_jGJIqo~{Lwk8|HUrHsdoEc@a?FNh(9V>U~5`GfJcSS zVeQ(%qRa%{j%n=~s=VhtP@0479BP`vldBh$D3$bdqN^prpgnuXH34IO9HIg^Tk8IQ z!9yxhY`O_&W0bNpWmq@KGlw*<5QnAOl_|zOf;S12TzQKA$cYQ(DuPU)n*CB8i_gIp zlfIv(c_nOA!r>GgUwH+X&)VY^h?HU? zG=*^H@FcsB6?v+#t{nmPzW-xJtrECWdjO(nz|B@5Gx4e4nca75ncJ;a2-|h9)9PG4 zf@^TFwVBHuf~a6@eb@ZVJ6C`U4Ol`oO7fK&hCPM~2G-OZYW=pL))aIe@|Zf~IR-&i z%fBJZUPl<2Iv!Yt=14}=J#~*nvlTka`@PqT0V!D<6<}YkmMUq;IsiuJvzbOgEI8K} zY&u-1;8C84YJUU(ALe|*PlOxlyV6a13KAI&u6OPE2&eD;$14{$ku~VQ7eO7~WG_NOX^A*c8%Xu&nD$-SC-E< zfaxkr`|E0M0-1EQl<+4t!=J!~mDP0xB^X{C*AYP27;XR!=+qs*gxIRFtUJqR;G9>O zBW*!m=ZyY5c6Xy2pk=|9!*EEs{N|xJ(kI)_LlEkxE>uF^ZZ?ukiSk-#9 z!BqyuoC-|2yy@;W1T{Jogp+z;##@7nBg&F(Ye9?B?nS*Ew{>sAwe81c<14f`c|hAXe zU%V1ooYcEd*?>IYBETyB$~CsqGKc-soAZ>k+VK2NAD2gE9%M_;M5PgQIk-ame^|(fwPw(~ zvKy=!CvuL7iiS9uQ;WU;M4k*mh_BFy$t;xxGqw*uSU7Fhto5vhd5XqT49ggKGd0^~ zgCe=raoT*hav_-w1E)adJC1on+rIy2hFC)UT4>~4%}?tJapz4h;i!!*`)0~@8*D#t z-CHECkKW`;2P_}QjC@}vBL?oXDp-Fa42bG=auG5e+9+h45pAWCA!_rx2{nII}@2^}xEQ32t_#6)tmBt%#p-cjW{Kmnud z?(H*d(6`Z+c*wp~?^7F3XzT-ctge@6f6tLIV0Foy;r@vf#IRFAc{l8OS^e*HQ!LW^f zXA~@H6BBiAp}=wr=8N73pKPBR_NV?yD@u= z8Nhk-z_8yWfBKc5^X&2S5rzr)LmqMRHhKxcNJq*`K2qi%*hg>lmwdo*phX(Pz9Y^3 zNn=%R1hrkk1vK^5+P@nxvG<5Tj|zhnm989K1lo5jy2|?=Q{(;xARReZ0+XpLoh1Kn z7rFTgCQhgMrT*kCl=7N7GIuMjz~GflFW1a15Y`0~#q^fDv>l}>$I)2_Qb1g{gtcF= z=}-p9>JOEs!9*0mZVJt?#P5{W@udBGOu96k)&poPSYA^9|KV*=VhO7-eZ0>9D}Z=& zWb@^>hk`XFu75|5NHm~;%8^dLgXmYqjn+y9v^Y~2h}}aX&MTQethh#a^!-x37pr#* z2<4=`9EqKH~re@cRrKkwO*`QhHVbC|ur zo|6<@(iKg=6kTQN6EDKKnX^v4DTpc!dpzh$@NufLHR%y80t?HI%s6A3MXMwIKSpgf zEghs$ZL?AJBqol&!EXq-feg*iu=8tA#LvF4hxV@`Q>RaMW2v!GAd;4ub)W*12g85l z#%z0DFED`!@dQkkUgSEhWK^3odI^A5VYI8K<{@Si&oJ60>9?3T;psL;b)(^$-?L2d zG)_O?RM1u7)Wg&A9F)>BdgN0k#r-HJq}gbl*+=U86~t9cK^)$<#U8A}&9bwNd+uGK zvHj;qBuefKhR}E7#oAM})K8N}&+J?6V6=$n;2qzQ*YJ@}PhS9ZgmmW@B{lA_S7VbD z@}sHUDXX`TtC>x%Y+te61}<;!|8$f(4vp}%PlrI>vhBs-tDZ~Pzh=nR;1v9cpiUQI z@w!5dAMl^HX6LmNEVMH>C?NFmX*WbjshZ#C>b|PV3nYHb-as~n0aijk=V{VE z3IMWhC=ViqpQx=3y#*yGT}USKlTeB{RchA$Y}hdMvm0I_+c}t18zUe;uhNK|9}Qno z;kz7Q{}X6Hn0)O59Ap#1&e|ee86aCWtQVpF=Z-_a@A7slrZoeu_nV0{%xrZj+H9>5 zg*2RbF$n1jD@{#IiwDr_WM36xdizbt{hK`quB?(0@~pj2(DGI7?ZhfX2)YNjDi$#3 zIQXjU&o#$gJ4#kNMK?t`oj5|@zKu6Iv9dH%M!US@CR5I|59Ns7+fIqO z+R5A!d;F^$d_H!?gjO*!GZsJe3na-%`p_Wg(PQbUaV+LPwfHv*Z0_)Y*Mfs>Ad4G5 zVd#jd+{yziIF5zeNS&FMnGsCSkcVr8H{!4`@(Z$KZ0CAKD;KfTR_VaM%|x2Kg_Gsq zRfX9rsCqMX`hF>GcWOrd7FBI7YI<$%WhM5N6K`v8;Uf*B^ow>@&R+UJi()9y^HZe*4Yetw30e5%oUAAw6vo$ zTgVtC#4z3d*@xm-39{7GMWn{6(D#d{JsbZlKdd6oAnuvn?w@hct|$X6t1Rl*cJE6( zHB_A{7>bNB^7wi;5<2!|A5}D4OIc5af??Qr-1DwMK9x`!p(>3JsdrwK9YN{C- z<~roeh_`br*EXT8q2gcsTS%Ba*X3TJzTYlVy`0bDQhnV>)Qj$!63S~oLh(y_P84L_lOqak{Ks$sjH^{tW?56X-B zB&WI~a82}o7q)=e4E=L(|E1QWGYPpZWGhpKy|xI}k@7y909k+r=)Z=mF8UToqaFu@ ztcYMdem$|;J{*E#eB{?fa0hxtE}QWEDP83cVTD9Z>drJT`9rYLMFCu&w~#!|pc>rk ze;Y-+=%3<4X})HhF?`}hXrcRHAwy&3xCJY%uxx#lC9JpN!zAW$Qo-H#We(Y*&7E;< z9SV@T4^^Db-?KIW*2gT~dm;}Md{|TO5GiIALklM|-i=UC;a79&N*VM@w)?Wsch3~u zClDg5^`Jtb< zcD!6QIty1Ngr0S^CkzSSY}`Q|ogEZD?gq&*F_@hj6!R?fH&AF!E_4r?Xn?n&3jQ|l zT#_16Fah0kHE_y7U_>`!$z-aqA|HPMu5k)5GigobK`ojOv}@M^YTB3O0CY6La$b|2 z{*(VMBw#zctp!3~sqw*`PG((jYOQHWnk-FkYO5W9(wd2i0&65tWwC`YEE%?ssd}gK z=?8ETc!0IN9ls#Q z($gwPhl_tYu6Cq=>_AiR)}_xMi#Co9vIZnCe$VnDmW-<`3Nsq3tcl(D>>9`C~5E~sx_lEOxose%y^4;4j(VnSppg3MG%EI9p%1?R_ zGR|cpJ17r2rlA}JUR_>dUP@0cBAwV?dgvs~AQs_6bGkxcy!+1gefax6k@OW;qATfo z7j=Lgn^f6lsk4Kb7|p*<-zBDBzsgd9!bF8;pMk;)o2KNm5(EE9fAkz6###<+U&i2~4)?!tzAC+MiVo`cF+y1ubS~_H% ztf+}G4_$F-yvpdT?`(J@Wt=S&B1>7a@?%Bq1v?#zIRhBCoVJMHDg3_6mS z1;WM-I`%IIh4(r=|~)C@(eo`lwZ*zdtV+pWIo zT`|+D_o%?HT|9QZMBJ7&$-!TyM=w7X+WY3qxsXH-E zLbdqS(kWWnk}6kPa9beEp}li6Ky#4wW^Fz}yNdMCY7a$PW>;LMa0NwbdnyRI3aBTdX$RTkC4QaT_d>%54rp_757iLnwD`s;}3 z((kvn2uXuMb37*Zhq~&Q8zFJL@2nVxcIk`tYM{Zo_PtG`7nrvWHf&fRbZd3iIpi7i zG|19qkEk)h&3aJB-mJv_`R_(ZNqd1gNRM`q?DLnoFbn7~LL@?Euz1$RLoc#7C$`)h z{Nj{lOP;!HmA`tOOFcNUCAA=_fTiWj|HV%FJH;-MmMrkVIy^1t(!`!k-cZ;YV%WeL zfo-!-nbRVP9rP==(gs9ZUgYlEX$XPp?&fI8coKbX7+t}_z`8{ix?q4Oyc8z(-`~5R z$`32Urz}UJsfX|_6J|5VxOR#vWDMp})4^-pp-F8ninj2xP`iMr!grLz(_9N?rjOp- zLNOENx8;yz7KEesrHsO(2VmGzaTHL<+XQW)mv6AN*V9CYmthJfeISbo-U)6`6 zA72{7^jZEvlnMWj3yQN`!_^M+Nhg%1=?Z zJ~NA>GO^YtF?>X8s<%Asv)e74Ond^@Z4K-`S#Cs(2=h^i-Fx&iC*xV}I<4tO0mp#^ z1ZmXUJB3q#4Xkh>l~xarfw{hAJpKx5YW_kiqQP^**>ujWaq=ihK(JJq;>9klKZO_E z1i97b5;kHUdglZCOfiinJ;11-aAtkVAXMP@`i5{W!C7+(52C2B&i;?V>TKzw7d1zl~$`;N0xH`V&~#SYDNF86==a@W1wT zWbA%VH?MlgRM8``SXZPtF9TJd6HQVkUnY4i23vU*g)N$KywO{0+Rft-o*C59++>^& zH6Blw{kfJd$$hUol1x^q!+ED$I34xlW1ehXe`56GyClO$OdtJU;dwKwGT2bD74RD) zHTCgnBt6b_`r9;+W>jscK$smB+Ul%&cLl4&T5%$g*}8~|KLAYicF5w}t3n{c4st4w z=#Ho?S@9p%*vII)9d4G-zk)J0B$l}XS8^$=CF@Vgz&kbgvl(V{#EP6y`5F24}I(O0tVDfg$M*7Y+Yv`{^GlDbx}6&z{D>3PDlQlPh~g8jlr}tmVm(jCK^PM zTa4_8m76;FD~)iIC=sbgUQcBGq({*8+Mchw4oTj%V^}H}Ip_VgnGfLg0G}rqX-lNo zx_Owzs|$Qh<#V|Dhx3Y_fBa|!82eYSE9FqsQfA+O?TOt6^`T< ze__w1p+VHjY4HwizRT=B{)~dj|H|m7T$?$R0Kls8vjO{x7$(>mB9WA7RaLuAUyNXv zQF_Ew*ec}=q19Y5*v0cCIj4v=2|kCNB?j^=nWymww_5MEP-YlTByJ1|WCb=FKp^ln z_7~{p7}7nCaPalHZ0*L;Ynv;$(Fp@h6EuH9{mmW~grOp2j4D}W%{?WOdkj;hE_jIf zo{3m!9f{TtL{Y3CVq1A`OMErLP6UK-KPEq<0=YGpkA)hrhgU z$JUdYybmw1H%D&J5BbUVZvpM|UDOAs!HA6mJ<+y?p-F~?!yAA!PUUOVS)M~v6&UwB z;a1tNw7t_@oiyJ~0%BlNTJM9lO8{h(;r1)%6LQD%@oRO%@zc502qk88zq8|hBG9c& z5@->+#laE?9;7hw~-i^Lp=RJ z&Rxw&%Nm^4pQ#v%0tL0$4^@5>urBA>0uWniNUkmB2-(b7x)_5B$6}BHm!W~w zSt{zv-)%5$*Oo%^-NT5s0zg6Gbf)o|b`CPLyx=CD_=IYh3xakpSQ+n-GTcoOp(_mM z#=lyqFUnNOBfc&nj6gk*6q06NUk{*}o09FeMev)v5rhys2fs0v>^7#_t;DF&)=K02 z-5O58RqdtTJ%EIakzcI%(Fb&?Q0GZm4VH*&{Rb!_Fr^%Ke z@|1SOwWTpnET{R85^%Y9wK%*XJ9?R&BdoPOPR{7SrPTOi>iz|Y;xT)b;jS1Qh;4+4 zwl>9aV9jd^+=+~PE>06)R%$gB^AcyrCz?t1npw-3i?5@)4CRBwjLM>pCi+Yrb5rPV zGTMS3zNZVW>jWVMwE2BoeQwx^i1J(r0MPG`*|!oUDW*7jGwNkc7Yxpjoh;%6z<6t7 zZb(aoGGIq7iFCwKhKPB~5%Ii{F)Eux+iRQB$(!4N;RktqCqe|>+AyHVRvIHvKUdoP z<1l+v)_iEmXS-EFEo%vJ#fhXI0Kl9pOIYhlb#)Nw}uhBNJb9$ohO(_g+2!9kIsad;EkM3x^0QT}WBlMfaTBm6mpAJJ~w;YfXOd$%ZU~2Ks z2wh;oZN;AvlC-_CnCG{5ZW}^g)=OH=VTdRoAti_y-PnV`^|WyZ#WARjEgvfq0yO(c7sK*8{v7}@xgJtDydSV)W_D8F3^9fJG^eOi*d;&)VStA--~%l?77MUBY4fns9dJmR$a*= z8B!FwYwZA?5{a2qI0vUl+q|HsjuH|z7r8ah~2md0*E7gZu{TI}KyY$BbxHXy; zhoc9QW{N7k?ktMI(DvuN_ZipRs;w%@h>x>h?$bg{JJqi|v9;vNzbn$K_Y}F23-{*1 z&neq7?sN$KZ>$0LZPSW%n*2qy_wUkqR#mBuEOG#f8)dv4^1gEYee;a}nEd*I2uCC_ z@sV};|Int<4aHftR6G9??^b^hyj^+aB#RkAh#~UpvvBWs=n=L-0}3 zLrdu7=@9+t2o`xCI#bz>vn-B?Z(2j;UTz;_!fYG-;l>Xif$y~u#MWzf0585{1YnET zwA$=~;4di%wgpcrt@cPwx$ zL#Mu%y?)Qq*Q4X@+#PdsQD?*U)AD_?eh~H0O{OY+%ZBCf9ml??tw5p<1?aGdBoQQ zBMe26#>~_(qX`CYw4Qgl9yOYjsIjd*N%u*+y}T%_jh5+WRNh^{hGfb$U~a;M@hVTz z;7<^Y0Zg|O;TSqQZ^`xzI#F|$a=Og4u5hf^QBJtg~ z3XkjxXP2p?(oRl9whf>c1fk}Na{kB-okdB1t^dWuFNW6?_JLmAj?4fwBk~#ZMMd?c za$I^lnBFj)my-R`(+)ZZG)!w|?@;#WhTImFsE_AVH`Fz~;~Rr|R_0b&iFM`3F8e^d zn)=DRX!)zD(7_YA=mLBIDYD)n7I69klV4T%c07(QBK8%kte@lm;j7 z$cTV1fuL}5F}REW$gS1+qyZ7d;;IYmKS_27k`K8VSXpeu6Ro5`ZmJugqg*n6yy)QcYnDG{QRA#%5L_o}= zvvL|nSx3UAI{D1+gtjEo#1sU;ecjHDUy2rTPZr!3Hms_>XMXztI@@F6i?ZA6*4hwm zGn#`?^5#9fH!r^zrmqmb?tX5k@>qCF6K~gdh&~veO(?I)K%JkPkZ0J>A*}UXVv>S9 ztd_F5W{x}UPn0ziF^U*7S>2yKG@axt?&DnX(DR9C|cdN5$j0%^%a2w_YiE)*z?L@ zYh$BosE}{iJ_lgnxH-?GFKjMm%s5->{DH7}z=jr#m;>bD4g2qo1L-!J)<7HlVsu5Q}8TjgEi+lH(=owS}`L zJMLM1cld}-Wl*7&1Xaz;I6Fof8a3&uDexD@o}<*JjKzTN?z_4bLQ4F)!i zr@t)SSi;=DBw zgX#5K3;-DbMyjTWw~-q3(5kbr#Sa9p?d1Z<{tG5@nXihvZZQ4On;J#Po@IHW_|eO~ zOY$J~6oiB%qXInvvTAdp%pFSb3jMjs@!`+U-}MDa^SgR;k<$=7ttd zqm%ND%mlh$BIXh{Sl9F2r;9Z8MTOY~bV^#&Rny84#f)ZZ_4N63h7>r9!CL-sKqkg9 z*jm_=={pU!K(vF6yW!WgE%>Jh&$)tO#L{!nF{vJRx2CtJKR!{X3u}_~+1iY(f$~QO zX)eLHFAcRkvKZ1PWyPD-i9xYh)4m??V2;~am!``fnKk%x7HTMY?*62yz?Rw2shNBs zkjaBlI6UQum7dP_FSSRYUGT^PZyS{qx9c{!(EUA^EmA!A!7Zh|M^|4E-M&<%;Vr{J zQGxVhRc=W2yK#D|BP^tG|9zEbaw9uT7U{FEox*zJnomn!v4toUWO`Gr$P2y`r3rqPy|9ufQE<1}k4 zMkHDI?~|yC#icZ4Q%xFI{GLqXlqn-kJctpgU4a04l5$KL&HUA1C_Vf63V@IRgtk#@R<9Ot{1` zgRIiV|FnnvcJ3db*K(Fz;!nEF2mJi0)i6~5kjiacQJuel0pb)b=LCLKXxVcx>(*Ys zwluKu^Xms>+izS!p36ChU)e&Nx<~P^g^Q|BL?YUPA69%j97e}|bXnI0jDcWqAWv`4 zbAlFI_48i6hLA4RPoe_`5q(CjYhYKRxnd3HR;&%Qti2{=<YzIWReq*M374e-_`DGv4?skM28- z=By6+lJdvJj==N2HRrut>V~?kymexpPc@vw%kLCBB6gR)aA$bSl8Z4kRAA;0P})=$ z$%Q8dVgr2Y2$_PRnv^}^mr8~1lqxk*9mr|24K`D>&_*8B+6A>{bpskV!4IRGp zg(AVvMK$K7s75zgN-lrG2h2-l)n)$FyY~GYe_cD`uQl6gj_;@pUBalQC`+MJ!mIP< zK;cT$y$C0K&94>-i`L^M*AN~ypd}ZfW3QfJIBd6M8u8@XV1RmJB2Ooxs0THZhrL1D z81ME-9-aHvv4p=q8smVgdFEE4Gsx}Y!JAU-Q!VCv^`**KOb0v_5I&Qh; z?8;~elF9z&(DifO`0&OG0n?&D&vceEZ>4!{WbDv5Mt%X~jB9x9k_+@yon zh79MOGnZI`Ur}NoW+x4&A(oGYZckr9O(?aorUDASmmv4Ws2*(n5FH>KZ|%1r&jGWs zh$%ur%_a{-`^rW1-u4n)b&>g&u;j_Hd<`h7ThWw_I$sejGfmH(UP+_L^;YSeK6I_g z89Y%=f|=sVf`nMIA!b{yLp-oT>ZdQKQzIo)ywh<(`PHEK`7UP3t-~qlF#6i6eH9YZ z)gU-Kn6pt4xyov3?j_*^irq2$u+%Hoird^GOt@*@+G082BS|NY_Ib*VWv4S_m0ZAk zgeqM^+t;vuxDc5g2&JMCXOG!CjN~TCuwR~FGo{83aVGsq>8U-%{|eHL$GR$eu2uc= z_Ko)|%%{p;9zutkAwxcNRu|er25xe2=$qSw+d^6n#kaRAEDiPU(?I$zpjuv+pe+eO zZz-?-gI~#&Aj^ug^$kFpSsoRaX2@fECoGs}8wd2YS)pQ0EV5~TV}AtlW6=t9kHLMf z;*UUP!U$q+ztT?i)_!zIppCPIq4^`|yF^aq$Oppk3lD?e|By2xJ9Jhf!DNt9djeFPFv=gu#eMuw70Kq! zOVt@aKO$eZddAprL&QHQs!e;n+U}gokV$`)P8&@t#4_esFx`9BHks3h;Wb8$Cu}~# zPyP%gTSo4RBu4Y1U4zxo!Mr2$>Ppr~4i1My11gh2aIS|Zr~ciJ`+B*1v7o@sP<59G zMW5)5`(&9`CWYSbR1oX#dx z=E0QFZD2dRML`NS_x0ytyG!friqkDPKCEO8T;=Ua9GA-rM6e2{0l#)+bb}`o)ndCY z;^N5%E`T zJ^N_{@V7siIo2?0eQ`xV%N_9?=tZyAN0T8rCq<(nr#_SlMyB=ud$0@kwhy=&M7np_~>$i z{J}%V4~Ax8=VzMfW`8kV)+W6?@Kfrqa%zPJV2D&l%yHg40sonr?vrMZpD58Jh=?g< z-be*8o<(uqu5LcqUgd1ctr`dw4uLPF){Zos%%(SGeJz_`a=R`7lk7)j7U>3{S;|X= zg!WKpe=KMyc#9y+P7yQy*XTN$ieWQwtXfB9Is3J3vn-UtEP=-@rEtUhBT5MA z1q(OMp%qZdwewsD*-v+IO59dcGl`&rVhSr-T`ZX8^VNOP!cpN)#P}j8*MYqKa_)$c zyiXhJ6%eP4x$Z};39WQ@D6`NmgR<}a#$ZzqWuA%1<9J^5PzRmQ)$IT*n|cA&oo@3>;~y<@xk_Y zW$~9Ek&5d8iecImrAvGGWLgi~gW8bG250<#TN0o@oE4E+RJzGEq_dG(MGG$!tA<&sS>)A{DUs zY0s~Iltf|CVh;p}){EWlcJnc&gk9OLd1hSzg_45!8-TMlVM}M;i)PyAG(YnKGPmBZtGML_yo{c)X7afQo424asO$T)dyL7aszM~H)2ZeR zlG*OfL_%gqvxwZp-_N+2BC}^u^%!1sq6bK7n$8$d92xjGz?DP$;fms`WD zX00d-zaMhhDlDa-zs?Ki==qaQwNvcD<52bLi*^ATl-$M{aAN~bG)b@l28Z1aSA|#Q zp_O#~j&gJg4oSIwC#z5|;)J0LX2SGBb@G;c!LzFMS+z1gMd>SY#}Jzp6~+M;RnLGe zWE6RLv?P|^xZ#EI zhQ2U>V*FY_5exdg<)fK8u_ch>S6ASg{?%A>T_$mH53Fdr=0^yQv^_8inB*%Vg?!i- z&)(GAfS)hmYq;85j_qq9uA|B~b%ns=D+qF45^M6ujbP3Ql?nmPB)1q|I?|jAZVeqrZXyzN^k0s0zqJ(P-*zasWfO8mP2MDD zHnXyqfRwgzpfxq^Kbm4+O1iou`xk2j1Rb#-TDzxEO;)`kzqRZeC%B;-Co{INuII3hs9Yq`jGeKPhrRb ze4d^<{+&uo(o>W@hap?w&U-`gmyoiC#jDM{B5G1Iv9c&J%;;SozcW>pG+v~<#$#8D z0Ow+t!f6oN8H@{z3(*Rr z|JuAjUJf^EI_K$Q7`Pqi`pi@M{27$_Qg>5}{_1_Y%^1MGf1j6(dPY!wFMzK^iO)1% zh`{x*XarPVs~Pmna)zFzvH&&0#a8?7#1zi=8l|%-2T`sy)g%xz0j}|h*foHb{j46FM9n!Rhl`!9kN|_w%ugcZ}nUr)fyL;@?ovf6Yu^e=RJo5gIiUIHfNx z17cdA_<;MeS`gy}EYnvlk5f-xe1r+}Fl}Y@8&P;dbdZvKHA7QX_eq9xF9KZgCXhGF z-8Z6N%k<=<{Kbw_)rP?US7?Df!h&Og%Eg3a?D@7mefqpO(01evWPe=rz%f%e=IFz| zCB0}VB(;_RymdI3Gg~ZW(wOJ%*)tlx`_uQA1#w3b`9uyo zl4x<_QfFUp=ikZ?1$YL546CQqNBk(04$ z*cyQjh66bfa+f$}$Nc7$p2$G1ej&L;{07e4%mf6CQEy3k;0qHRMu&YN04(fKs7CO9 zdsp3t)9$Sq5?5Y|4-mBxN(xgRc0ut5;;U1{Vy-oA$HC_a;htO36^q;uR4XaM=}y6W z$EN8+1cC@1Bb&w(LIED*2q8#Q0YS$}l@E?dR2v+SK*Xm7)QVZ5gE#Q2BELIP3f z(s#g@SmOq|vv|i1v0|Og^#Q${yk@_0QR~t6#w(-JjzOD737%-W}Rz(2xNI(0y-&Jy(iK_gvs?*8?-5B?~j1OpGmqrjzyn}dND|siTE0!_RC~x zULMmqrE@<32lH7X>*HzP{V$6VI{cT$YC4OEk4S&SXqA zH|7*h@fv3AvTHxw3AnUEub_(bVEj<(10gB_#-4O3uFDonxIOL)ZE1NZAO>u5Iz+6C z>5ii1Te~5Wn+DAwXV*HO0WKS?g|)UMsFAeP#b^LC_Yn?xxV7`}Zi9km7O1%$Bt+-_ z=;3n9DyND^%-k`YQ6%LJF|ukM7U@cI#R}`Pk(c%k7|Hcge4`F=XY}S*t<2n5dj^M(g70jITN3P&pb- zU4myOShvqpuTDf?=KknjVr6?=Q6-&~{STK++T@AM{Ij#s$DL#AXQx5Ap2DkNC%-=N z4gDm!E_BwBl(|v#)(lcb7A5zPrZc2Q841WeO!%H_-{P=1>xaTGaakR7$;7u9|Ac?O z*JM3)ovJatYfa`IQ&VhFG{)+urMfU%-?`$+yX&7*5fju1J52h;r;Wn)-##Z_Zj$2> z4(xvk!e7Hsu=8lk{xBDHU+voumGo9Hf^}tEk(~lO-0i{VD04BW-`i1+Q*FBYnv}95 zUSkhxG&MeIZZ=j2&}834x~uuDt~3q*PGi^Lk3M_|MT%;`Xxq z|NPjEE+*FE4=dIeHZ{Ld{vA2el13~S$E*3i4M!yR!WwBsgCkxRH6cR-b$*y3hwKC2 zc|Ew7GT(De^)@vJ#k$h3F*aKpkmdt~dAwg(36CkCBRc)3=A%}+g5dMgfJNq}XZ3RJ zs647b3y}v=FT?Qiv?%PU`c;04r^V%!+<@T=pfu0`*8d*`FC@7RxPNWudO8AVtqCq6 zDS!=nm_AOMLYgoS6AH)(@`~`YNdJ_;1;VjFzsi2juC9P{sN=xnF^5WSAQUh zl?O%NgWU0ImAtH5ZX(AedQ>jx)m+tow>@nvMO|{@yn z0^U;V0>d9>smw1d0sybhs}Bq}`)L2QtXh$a_y>}eo>4T#Bi;_uEAFzA%xq!vcTcnI>ceBCMApxbs`O) z=*03e`_VjY%*}6n-ZxBs)C2bEtRg~OA<>@2p>}^#N!LC_W@hIEmoFCE;TY}!lq9~b zF*AbT6|-~(C?AF-d*upGG(yU*H}9 zXu@Zcp6pokBDIseg#}hi)`g+6zmn{j0}27`8r_fBx2mkW2ti&ZpK)q52&r|m2Q{`U za20qDS>|iT=kJ>E<#k!sE6~;It*M3rS$j;6Z(}9lf%V*3{8RL30T( zdqy^S_E&D_>3%Qyv1rn%P3Bl>%P4E}Eov)1i;$$L=XzPJm_Rna(P-}-2gWnF%<-#Q zw2j{FeqU(=&p%ilB5rq>sh6r|;HgJuh{}E(cjUF{Pf{`p!egLfT8(dMTZ>f~T`Ofd zbKMX+yWYg}N|D~;GC?s+t|paKc6{dY|OY7)CVk7mp|)(zTRN*B&{-tV8U! zmf3Z$V!>q_TRSeI;>8xWII*6=f45nP4nPuh84Af7jXrrF&T5tTBQ(78{w-VIhn2>F zpN##Meg`@nvA1F57{HRjEej6c`WdYh$h3RI5t{*U9e!QPjKcn_u=;E^yvEaXz;Iyh z*Zf(3P^1>1UpZG~h?fR>Lpk<5r|t}#>?rjuo?!aq*v1G8UMdW+0P?ZgFjbLGT(-Vc zn3z7UR-fDRdFdEHev(W>?P0Uo|9IhBv?dM_`d2>(MFnra$Fs6UWWj?;apWqeNguBh zB?GC_#gHg_lNsU)n924o-O*^3G$2;nq;a!T1~AksZ~VU2I;1JEn~zX`cM?B<`#6>E z$k0#<)@9S9GSW`0#8EHiG8Tg!_;rfD|CsE{kjcskl8%%H9R#bbiHL|mFWd9`dGp!u z^QfW8RbXK75bNx4i-UV|j@|V875)8Z03S&1>RKNlIDffdQk7fFd%5zEOa*#XDY~Rd zLNwD{A7Ga4X>WyL9u2EuFa z7VSVNzoG|FMQ_F1trjail6!B-@J;JN`3{hZ!ZPzHBP73N4>0Zu4Lc!*>7hyk!t3t# z+fYiX;m<4HFkaGV=I zE6v>|32+m;>O6cK;~^sncj(W-@3Q&79-ZuWx>xuS8M;JZePh$9|A*^4(R_LfS8&nP z9%ThAnLSs}Wnip8A4M6i(?%w=EYVi(1l3@VTGkfcyi}|OiRAPWn;EX7${qV6H6&IH z-0;_%P8Ng$b~yh{w|&-3p8X!zz>j%7-Q9<2Od%k1fZu48t1dY4eZ366hdCbJQ1gNl z?rI7oID=_tsP?z+egcs;ecbMJ^ns}W9`Fyohyr`xBpkBm&6L!E0}Kf5MusV|AkcI^ zUp0dndPUy~!N z=0G^Dfi5PEi=^cK=xVJGZpqq?+b0#B>ax+p?vra(fYelejB|W*WZIxaP0xqC8WWd{ z7r*OJ5A|?GK{j}G&2?X)Xm*49A5F(CInM^WTr;Dcehp5aG+v@i?%>X(hZsn@6fa5NxgNx5Gr|Q z!Z_-Kr(72V1+kI+va{;Wq7Njl$!@Z~T_C!Y9NgkK; z89w|QyF1s&{L$w~cGRXjtAytKzI%K-H~o95syvjU=p}8M1QX0!w}<)v0Qj}#`SzsG z!g4T|n|J<@rQET;nxo7_@-*Foe#NdlKU+hL0=5^lEUQ_RrsMCch;+lfr z%AdV*3K$Y*-DHEi@AXuC5}?4aIO!~a`oJ;DZtMWtuvxWzIRBU7W?a8sj1?x(ia0y# zmS3)(kF>a+U{C5l)^Ze$hW%Dd{a#wV>DOJPz9Ye3$Emfcw)4JS_s>5m^lK9r2orG~ ztB?D)I{pk03_e%IK<*Dg&359B275 zidUn>-^TK>(jHg1Aq~mu#gpT6m^K@t)$xzZsgj;ged9ME`<_Xi&D2M%4b;c$0RKM# zz>RSS#*dv1to_IN39Z>m5xme8fwH_C4RTxs8UqVE8$a3KxIr85IJlWgNwRt+B~=mJ zQTy~fY{UOegxO9ghI`5RUkW-SOJ=A#V#JUmaJ8*P9XNe5P@=Tt@PmhP%r||b#`==K z#B-)7XlKwYuVF7R8e@91pzra|8mmITAo&b-nplG!^!1ObFmCV4^RqC#(x2orSr<%s z6{6W6*9l@WdEYGuo)B=RS*)^=sl_0Ox@5KJdy~%%7@<)j21G;oa#=;aOd-kY$T#B~0#mRyEfmgJWxGk? z4dEM8Ai`QnYV*A`)-Umd`m#PA{`;v(Yh`Lyp|f^XI7lA@Tp3tB^%%S(C*A~1A1r!Y z3u@$q2Kvs|wk4D7q&EUb%5jSDP)%M#SKUT6v^r}71t&T}A+UB_^_@SUX@sK^6ZIkwAQxbKGWl5chC zz;QiVuDS~EbW4+TB6sTt2tW=fZIBc5iJ8h$`tuW#&})%%+mhoBh`xPBTWJo**%kyS8WBC8ess-t)I45I#LR?5Zch|3US*AY z=-~S80Q=r~z_3WOvZn8FSk7%Rw=5H-P1EN+eYv$5h%|SjdXXqFR zf92X@gTs};-2VdV6N}VR7nS&w!uZ!4d#xsDp5rKWKXkKsk3v2GFwZp#^fKKzzvkW{ zeM)La6P$SxocpNYZxopDf2I3`HYzDEWjY^pAD9tyD%azmPKu!tpNPokVmW$}5Z`m} zcGb#L)r{QP+td8k(l-1o$ns4p!ogP>AZ}dL`fcnR278J0dHlMU}?+`_Az=rKZXXTtKoqs?)dv$?Oyw<>z zca}j-C4S}ZELZrhGDN!@s4YTc47Zwo+#_+?w_Vs4cPkPrD=OPzmme57Xsja)Pk_%B zseU&-7%ewfhw+zXW!`r*5ggCw$Vc4!=&}9nGdS4hDoVi5tljrzea9CAq{n8WBk3Od zove{ka7b>b=2NBbKoqIBd2uFhAvuPwxm@!~wH-hpvhmkRK(inD@qkLWO z%TF-nVp6QNS+Ll_vOws4Dm+C+l;OwJ2WErM(6^3CMg2ESbmbF}3i_{-$~+WPtfrCm zhz$ULDV?2(PHT4I?OW{ZIL0)8#)^C6TqiBCPu0)=vJZ{~q#({dpZfmpTk}TXBXO(W zGB>YPo1r54>3A_iNeBsT7?8Sa1o+cP3M>r!(VO)2**i}-he_p}oS2Xlhh4bOPzd!T zT%VzXOn5paIg|B?-LeL$p*2nuXjF7xC(@5z6;rFvh58})NPXJ+P{Zmm3khF;zltsHua-f2#d*?Bxw^^=14{Rd zcm(1!qiO>O)o`-(NUDLB+bjwIasSf%zo}DWm8C-@ptB6-sB9lKJPUC?;T}PW)@Q)a zcM>c{;88DIF;+QLN0~3sN(Rz(olB>zPYGCZotc?M(FW#ViUB*UW_HSlzubso95=Lt z#xCV;_}-z!OKPvSd_Fgx-E%aO3TA|9nhFR?5|;>uI(?FGKslj56I-PB&S7wF?Az(f zvF_k5!X@VRsKzMpws6IqP+n%qkkPF>O@Og@;VDZa;kfX=fPGk9b&=R^1?a=1KADnk zAK2;$fKI!Y_AWn7cs|+bbvudbV1dN2=^m1n%x1kx3O*C))_4Sm>T!g(%0(hKULe@| z?!0l?RsSUprl`Jqc`elyhfxz&Njtvc>1-|XR)}z2?ql|%D zX=-R6OaGf~zUusWF_%)w1mwTVDn^+_+Pk@=;pD3i^({?msr)YAy|}6SwUZH)c|0+& z!I7C2xzc;irF3xcpzg6-g&{Vf5EN&YX?kI#9KS*!gY z;}o-=9Ftck9nD%MjmOEO)Y~UxAFggrWVzrm?$!LT39XGwb*4~iD5)}gM~#!{8{Q$OyF<7w$TAc)S>%7b83cK2_&-(TD_*d@G^&fyabW7}d~ z!EOYtVKd2kHDL?u`mP^Bp%&Qn?}_mmDG1sUO)VD-!-9piTqHrzq#1l7pMsoN;8V|_ zT_d3JK$2HDMEd=6+kJI_I-ST#P=7qV_mynNf3?7TC7g>Hha(B2>{D2Q`m+)~O(~5h zKU9jBCK*a1ljtM@jWI(euWo-;#^$5W()i(*9moVuL-2SIbPH@D{fVx`fW!J6=!Iy! zUDzx44ALDUKBID#h5=1atus10Vx5H0+{mtSThfIq^3cSj@kG!oHvory z^)X<+sDyI_0t8FU@(ELX=b8PlDe)R3Cqd?DlmF<`a=qokf$vW`r`wbn@? zGLQZ`uUgs(CY|G7)LurLOP2I<*bmcEeJ!3#HjtCtD8>xq#fK(O?Upq~uV38T8grak z{a7T&@*g`@JP6fQKPqG8p`-5@>FN-E*tz0!_*K094$y!a4=bvX1Wo9lmYAc1C`ih% zF}kl+JZe5xIs|U96aJVYF|}1jPS6X%gRMh&=jSQw$)#XZ#1(Vm!~VslWuE9Hx2+eJYp4iy;pY@Pp9+YI1{e--eX6r(77iF{6er4dZN;U z47mC^LL73TL@i5&kvVb+r9H-LT{G*E(dlQHZw zI73?(?}~XU#?^+Wh55V@EE6HFAmx5ZX@?C!k?UvmF1I9hOjf#mUS6$4@{}z^NBiw zD$v7!F-Wrr(UXyc2;`*)=CL||y{CpKK!aE`#I=orvcFazzQlLxNz1^S=yuAdmzrNzQ zb<}hH4%=>Ed`3|}NA03oaug?m@&AcrY}EXn`5)l?GqT;TPtBik`T%_Ko43rnl{g)Q z@+K8J{|(XprInb}zY>FO!W zqhU9W2@Kt{%k8KeuW(E(g#-B1U0wz?lwQn+H{UI}`@7vpq{@Z4P-Jj7hLkUE9$RRe z-I)YwWoVR&N1Iau06N_f-DEO;u)c2O&;Y`=lxjpqEx%YdP#v7UItY#GVg#dw$zV9+ z2K!v3NY}&5XU;_Y-t0L|@4?~C#6`RI%%0yf&6k(0`U|&c@xH&SO%Y29U71SJsGSzS z<(_Jt`%FdwWIWNuDV(Zz0m3|Ua=>FM@y97usJo*~{?SG#7&4j5c}__!vwSy41@XD? zC-x%xSq;flG}^pZqZ*P*T4V1QDpY=MHnP<1YO)tQ|8gFgv>u3m3L3Rxf{itv!#+Us zJM;AWZ*x|z?Z`)^b*3D(k8|v+G@D5a4nNWSg76{yJSU^!2s?YbO8_~I!~Ufxz+rAD zS384bmYaikWgxcHf8Ga;tkX#7WnbkNfvwyc z+fk{eX{?ZzOne?N30kBi6Oc1%b={{Oae%x9{jut-1Zc!T&lN5%%qo~VCeLWys^Yj& zWb(m1!lEi|9@2fjkl=EfXOd1n)!V1`c&z6~22Z=9v~@(~_`{Ay0fExvk=5bh#tHx{ zstj!HZ_)REo-3M43vpXOy54QmjHwSkGNqQ~wJngnYYc!=mN4_DGT{c0tX5gG2pXs< zRBrFCW+)_cOBtw3TZ-x=7zaj}y|k$_7oiV8M$2dye!i!gR>!wmrecbiSF|=;a?kv6 z3UE#Odw!Is_GLb`7fTQeNzn>$?J^`RfZVK;c8=Zx2_L{)XIX^{!$dDece5_x?}2=B%rWwf!wy0 zCHxt|_dYVms{ONkEeUX~*><)&fB>uwVEw;?{BR?VaUSK~p)#XSn-!jT<~XH*Y4MXJ zGRh5M)Ng^qTx2^!#By1lKJ~UK2>oGErC##`p)MFjX}*`}l9OS-i?kDzVRpU>9@=~= z)?>HKu++JW)1lELHy{qLc6sDGzWXi0G?pWViI z_8r4~4ji}3N}w$}!sIl8a zxQ7An6X8hC$+kHVZZnreqxHmoAZWeDb|EHGcvD2Z+7E7D?~avc`I-k1rzn)vg-mif zhT1$42tvZwGET^%vAN_5qJDV6MvB))I$MW~Mm4~YM+NbuT>v?=3`C~%(1iK>czd<5 zmL1@U+mHFGYrT57TlLLbSdR;X7WCHd&e554f-_sWE)_T=aPkKRKjE%ppdk=N+p-ZK zQx`J%3dL0@Y4O-)#H!17AESC0wD$7M{@`pHw(ANCl22EYyPL*pIKBwFIG%bwk@nEM_$sMPo9;;nbz=98W)rM_fHTFO92tzkJp(h@_2p80t{R z*w$z+^*-7Oi2i=wtL)e9gBys7nr7?fq`gP?bnfF2M35b;2y)!IMark1MC0b>)LwXM zRiAc$*q_XWo&H%K23M~&&-Vaiuk0rsZcNJ#K|eJIGb5H=GN_A1Z8Zu^wEY7MA z=7Ut`_@zr>8YRRLH`=nkNpC=u+RJqou}!t>J%+EO&WgvDaVIO znAQnxbZeX+Q1c>&nlU-5O%z^e4du=>#n!^Z=h3V(Ox|~#kW-&nJXf;5>3P#9d+<|L z`aKMvi|5=sL4Myj+n8n|dVdyqTYluLKbww0IV0XTxXT|8oq56yX~_Wn0)bYa#+7~) zB%qTbPa9~eGPq83qH+UVYk?VpkVak^FUXF@PqSN)4oM6$L;~y$Ne7sVOq5^;efoVz zl_o7-G&K4&gA3*TMO@>|Xm(z|8`#XH9DaXp#Y-dvAIkz z9m==^4$?`dwa=wxKiF!JcA9+44j;1Qs{I1_fDOy%eKKHU0e*yZd=59GDDT(`)%tOg zD@h)B(aQYMvNA{xLk z>gw>MYCb^3lQLM>7(rSuno3!MWgwPo`s^*h@xJr3k0UG4$@Dc0-W8N!eZSrs{ntc( ztCH0|0e4$h6a$|i=U#fWdcLt%r4K|Q&vvJJyv=PIp|_70W-S$3OGvPRo6{|!92leB zU1!RZoSRAbCW$wT?2r4nQk_GVr~LlB_h<~~P3Sm4wv>^XvTVUYmK% z3o+Sfy*Ggk&#oViv~GO|lMs9*XRzT3i#+iZ*25@X=_qw~B`9hR-(jJTQj5jo5>)pj z)Q0&wTNZwePfTE9?NRnB&k4s?g96s{j;@WR#Qf9spB`T{CYGEuJLZ(8R!iN+_w7n? zEwfe8L1_jqDMrWKJTa#-k%tdN(2W*^m~TI2Z+8kGLnQcNP7Yw7zD`9+Owo?zJh(_i9bHjQLlgJYA9?cb?~l*>Ft^(@WKlKPpxTae|r2%%H^8QW#HC zu{qZe-G;GD9P7)=&p9SIjPeYq22^PipjCuW-K{#A=Yrqloetptlk#2Im3OEF5tTIhq3zOhFcRU;pq|m$MankRa z+`R<-+5B?Ll>mTyoiYd3w3FHz#Lg=)<_rF)sY#Et`Q&xP440_AdtxEcP1SAh zPPo2v3K$&48}s>W^i4>~-3CQ}7ScuVB+@`&cY%Y=w{_kVlA3OSs@#*-11#+(M=qbO zGL&KA3N6gA3z0Y%t-+5Ka)KI*7!Q9~!uz0$`Z6EeR~%VmZ7b%`CcXsgi!V`-po|xSs@+-1{Z~kz z#T)a@otWskdclKZjoiFj2ad}N##&EPn5VilWc3MB+*$Tp6{VSh(#c^N14$ws8OHq2 zM~t`qZ?o}wf)z9rVC~_=>41yACfMHH03U1_@R=K>;P^Bq(qCm>!6s~BqMKt5?rrk4 zEemy!l2a@&Me!sO6CQ;M(#=2KcmoeHOZ5?GOO?@t)Lz}~J!*#wC3e#&(wXfEw~%IZfs9!A%RS5W4)PDf;i>S|hoq z#PNTfQ$4LnI7mzkIVFfg;_R#xhe!6ab#9qXPih65%#XLdMP5z#ADYjmZ9ON|Sts-0?k3#;60-iRuL`DY5> z7CT_2t^lPMiLq)yc0eOhrV2Y8K+s7#caKM^*F#fOfEK}rz^LK< zF#4E^CR?PoVCsjx%EZ4jtk|dAk#^eXR$~~%RBuLc)kB2gx#B!+*_eLn9`{lGf4M!F zSU5p$j&mAHC0~!T?2mU#<3{YFMZ3yi4h0JwP}fkTk60i69>DaOWZju<;(Bo^-cEcm ztgJj^{oa*tPXr6}hfH`~baTSi zU0VlQCP%(}D+k=q9i+3<)#3eF~@-zQ%qK0 z(k~2{wBL;8ohtX@5lDvBoP&Z^Vxg}(|FMj^&{-!H%s86quY}P8mn5|{}YL0^6w&XBDJ3V`b-niq{X)k=w( z`9HS>E+uJDuLM?~)Goz>5Do*a?J3vl!a+nI(3o~0f2=BqIRjhIrA~{;;N>2vr4~=Z zy1Od}^ux5-2Pu0`BkIa8=k*p)5ZIVK7--eQ!UlM1@QnJh@)4>FAW!kTReZQH&kl@4 zK)jpAQ4b^al0}?-W<&xB!^U4MQJH1uEsx(I=*OEoJh`W&!~SN2Ks-90QC?v{rmB?k zV;A5~odGuUA=lYal&wr94X25aB%f3qM)hKfB!H#7;3$PzUxJ+FfkB8bHwBO_Qy5x> zt323zKkRNQT`r?;^p&=uiJFidjeYs!#8kHphIKbw*r6P1+9LR9%q1#7n2hL(kdoax zYj%Wtt@pjyoEpWhREWboHng-<5$T@JMQMY(F?98Ks(nkAUL6s+Qqz)91mg6?qS+#tpOrT+Fyq^o~ZzNJOm~%_rCH-HFzM%i`>9AL(KKJhsY3 zb4i%X;*v^RZKimK*30X=SV!wFD+ixye(8d$7`1UcHG2B0gBFQz;2S72RgVm8MDpzF zRX+;KRewK+ifl7rp|V)F#kywGEc+XMjHIyK?}K3IVJ~jfu9WL@#w;wG|&(ie-biC^yQ>zX>MTIMu4Y{XH}9;sR6OX28ZVZ@XqE z0Cdly3YB{Q98F(Ta}YMy+mQGapFTW-T;ZOY%OK^i69uGOPvT@6wKH@xEIN}hyC;bPZ_A-`%ooSQp3$qkmgFknATY_ayGqQBm>r5 zM{<|G2~)(H_Iq#hy4KWe0=-g-fb}T8`_d9RMNMj1faDhX3YmPZ8Q}h|q}DOmruxY- z^HFb=u^2g&A&-D9?RiaVOJY6FwZR{#y#8b$W~VVr0c$Mhl+%tsa0D)*3pHdvNsFfE z19Jr{4AxeWBir^IRLt)fZ5o+15^6Op4AItMaXTlDOMwvyn98G92JgZF^U>R>(<%-i zZeH~h?&|$8Wl`^PyK5_}?9%kh9D@}o$IgFtx&#sbj@u1QKV>oLk0S?RE^UxGOEsVj z91o+UbAYgDk!^#=s#S}~FT_lvs+PQR{-Mt(j<9Bb-O+Y|=mFIg2W?8KAqH8Btc@IC z9v$948cWdTA%vbXqiFL28$#S2l353ecLoY%`P*;PG>8MV>EpvaBAl3md^SRl?YM*}mw&-|% znv^~w9+UNBLn7eC#W;lfbfeb5;JP8F%hIQS14nc@*aYtgO+Bqyc$nyAn4{VuB%{tUq$&R^xDnVYTpwVf-2Co9te|s-*xcn_*B{xw* z81ux$6=;Yf>BTN==3F=Z$|uZf7STDLAbd#!y)cL*+G*6asvX-Kmp+tkN6B`D)1kOY(B|Q9@f?M&*`vf9t;Z zPZZ9rC%*LS!6c!6FPmo6Z^6wGnC0()jpmIB8}U9nj_mFg5N5M6@ZF-3`GD0cN@_~^!t0CTUDmsM_YmSZh8CAR5^8}+p7jrm+Axc z8qcP6g}yig(v|MP(mTf=0^>~-JIDc@hC5Kx{{+m4l&|v4IX>!#XT$RN1&-zeYQ}S~ zDuJ@PzUzQtB4QTP8L$Mc^RtJ%9emOxtg(S>GBu86SQ=Mg5(C~jSAu=8*XBTw#qs*! zPbKSR+Ev*+{o2SDEH$)~*2L@2zP|XU93!s;?e=xM>SO_}u9gGBK$|XDiLlpFBxC3T zTvq0WNQzck$=9U(82dibf$T6#ipG<|L0_zU_G^N?INMmu>$x#mTCJf{yzQHz^D=7< zCd)s=;5dl$7mssHdJ|QKk|-VmsZe*-lE}KG-Vmsz;DExz212cBtf_Bx&<+oO1bu%Q zB;UhoW!o1Q%%dHmCvzLpm7l7Iqv^_=Cz-O=PEq08zwvQg`{xrNnNY(hy`pnRd9Bd% zNM{{f$@nVt@S~B+9iIys7y`gd23x%plwnZ0b$l4_=P}T4b zJ2U*QHF@Kd(>g%qmq6i_`@?|}xhln%IoRpUcW7g!z>Ff=nVeJ~Z0+PrxI6lmGjz4! zdB13hJm!RlzWK#&bgWTx$Mk^73&XcU=YN*^u`2ion7R`FKsSV-3Vf$p?0 zarJZNcN{fyf|LDph9DB6SH1SuTh%dJ_sz%HA3$Gnp-oTC+cArnxVCZf5aUUuz$h4C z`oH&jHF1gI!GD3NFn)_e5VJUx79%%Ahds@K8hXHFWs?|L=<8RTdoE0!EE?BdOKuIH zqvyPTwUk5hr!fX?q~p&C{(I#G@uvaq>cuX9t$e7>7R7TKvV&jfQ&=T5|?!B z@}U1+w_al~OKbs2-Ga)2_WT{Q-;Ju?jMUJgkC-8QwQtKpFR>Gyw_O}5)CokaxI3xG z->L$9Vp9tOn!~KaC$YPJ@DIN^freUaZ4_rGhM^#|qR!;F#VOZv1w*|U$%kmQdB3X= zo8B4U%9;Aw8Wng(P;-%n<-Q>oAB%fk969JmvqU5KhuQg{YP+H2fMR-$?+mKk1U8aS z*6F_KBGIc4mb*WSu@uVZWN==@LI(&_|K985y|{xuXTi!W4Ph5TnZGVxF08Dh%eP3(RsIrqobvtPXh!aBBj0KV~Z4jCW|T@7pf~D^ggp)iqvKJk!E3PX(>Q&EfY5%XCwX>2;sOpQ=+bC|+yN~kzLJrsDKRUF6nal&~1i_;D#7%Ru4 zHTMn0@S^JXemKpZ#3=&#pqU;ew>R{J;x#R0V?aB5?{?byrkkKQc<4{^tHIZgJWY+G z7g@K`dNu9>)9YCVqX_IYbdW%B9W9f&sB~|NAu`lf->~<}$6%TxfM&-g>g4dtQ9A}1 zh(v+ZgFtuxQ@Ns`Kz=bc@fc2+RS}li6iq;A zJ7)_A;o^nk9aRN;7q|`2$cf|Q~}TsS=_0pvSAT{TjlYQe;^f2m*_PJ z1+ZrJ8%3>Tk@kgy>3P&cX6e+kNO7HQR!J7%T;7JIhh;i>&zE1%RU-vQ6wi zE!c&OY-!=HlYZU;dCFN@SgRd4;qmbi2r_#Q8Z3)_qIt<(#U9NRDfGt6yoHuVN;mKU zGClOtUXxQh!(eF6K$mkIU46o?>OkGgFOf~RqKB2)8CYFKmx8O*dHD%|B98{`D5#+2 zWLFnxoV0)lKU7}zq(GaE;P(A*mBn25e|J@XNZ2v`Q=Nv&0GjDLX}mpc#?4UUwqSe) zIPqw#Rhepq>N)6foV1Mu_&AMGebS&ZS&A&Z2$5G#An}vwLy!Bp5iCfQGL0OT2%qGz zj5UftG{5YVXHpsD4PpE~3!*Yj$z%bG?qttG-67trT*;-%cU!?vt){++yn{yHXcWgP zYcuEm_ZNFua&Lj$Dk@%=0;PD-u^-}nW^-Cv;zT59id>*ZnJy^;PnzvLLLVLK6L z8;ukbgpyznr5k5NCqbdV<>RyLB^p>*@X{q#R^kjwv^6d{x}+SBhkizFp%NE>)eQIW0~)S3x-Rt>oOR;)G;g?$&YRoBiZka6ofniG;j{cwp$ZIMoeL zXCXWh^HO=b{}$?>WeE4Rl)mFAzq0kpCkV3TdQjPW(z@Pne#XzLPmO4Fx{i+=y-;i; z_Rzz4OA$wTh3b+N9A50SP8PbhP0w165Q`y!cLrk`4a9*rwlo)KC{*SMj9^J?CoIc( zXwSb!u&hYpql-E+03kf0Wm4Y5yG-a=34ow+kA#q?&;TZB*{z~`J1l^K*B?tJV*kAk zvi&o2K^*IC>e?1h0)(I89=u~P^N`1i?<{8$2E%na+wp<+f?&VaHrpfH_+^L%Cf>Ea zSsCBNzcLveQV&XWGmdw;bW$gAASrWS_`WQf?-;b)nw*uXuTw#ag_TLwR61V6Xg!Pg`&Ll^CllK(6$??2)HF)@_GuT>S(= zfyr(d;~XG3z5l2!Q$MQM{p=C+WvQ}stK;>D4?WToa(()bnv9>EDzV|&YsH~A<(XIX z6GD*EhH0|G+<*rR;H{3n9Yw5lC2a%x9(EUmJ+$rE;4mfk0!FK8AW!OiwCK7zi<>4( z|2(eQc?Ig;WvE|S4o%{y$HHD_YhIG$U4 zW6AV30Vg>DuKJ{dWNf-;8}U8=m%zlhCeXPV0Fa_pr$c9#jY!+!-253EZ?0ZtNL(c5 zzuExtG5G&C5UYtu@HNK*-Koda17vidp=+#`$Y1Wp=CP@bGjeL(K!XnM zjEeQ#-zU8vF5Ha+lf_;v=U{oqaQ#3|Uh(cs+&aiYPd>CtTfb1?&$B?bSp_Y7@&J^; z#()4ZS=a83rO>XvI0D&M$7YoW?^wRPugxz?`~vzK*?AA?Tn1cLu5!eGskL?hR$-Jd zA@my9`6s8Z41J(ut1+lxA&E;{t@XV!5>Y9zd~DDGi1(w4L~TDnQL4T$ki;-)CDb|x zp|8PWU78tAz3ExY-uby9_$(uuwPYljK7I;;b98r_p;nCF0r2ql*}$rzwH*_5fiy@p zRJuF+G~3PbUt2m+kBEVk0*gu`l?9^WW>9<#Z@6hP_V#RSR zP`Ydn9mn8K)+3OKNL!MgKFo2;RTnPG34QP%B%ch1%0H5ZO0|a7<2OagL}Z;)7)*-` zNc&x~2mhOE zR@A9KK4?Z|cMWt6I8H%0RnOrz3%8PYu@cYa(>cGQBkWbRSyb#Q-L$$lOb7fp0iI39 zEl$TloNE*-+fs-PQShkxmd0;9rw!I^R?%J5V)j~YZ9+{TNA9*Y25gO1?Bq*uzaeR( zY^5KsbF+;rGA8Yi5@V1*Dy#p_OfR4Dj==EXuM)E!=zsSz70pYIU-<8)y>CHLZ!yre z(#TsgE>gtq}Xrrgvg zd{5z#;MWOwUEeAOLM<6s8WYtdek^9?BQOe(=B&DGP3Ll>`z^}Xa%U5Jp3gBry|%pZ zTNqOA6U_IV@&p6gU%VIkil@nA=Ou>|^bgY@y?q#iMdcP*OMA>ZbWuvN#&b||lu_p`#Z#05iOU^RNiN ztLGezG6I*#r7Od1-8zta4}HPmx669cTop2QZ}ZdjOd0HqW=(4-Z~9VPfVyj)*FK%yAgz)BMN{TLmAfZYW_`%OX4Xpu9(bTF z;m|K5CYJ4mrzdPz6%zk|kL=)(g@>6awr~u`A%bzB(535qOWi{<;2bqrBD2E>=Y?yt z>=1cwPE384CFDtgaKP`S+)`U@5-pmLsTeRLx2(!Or(dn7wtRtk`2J^h*ihIjDOu}| zAsNs?aCdm8%_6WK9Q(ND5uE#Brp1?p*2qC?zpTw-VFY5HZz)k1?xuv!%GLI#fbtcj zo9&wN2_x|4kFGw76z6!CT7x#x%x`msiZD}&XYUMYc=%hID&mg|&lp8}jH7ZV?(u=_ zvDno6Q~7{-eiq%|KT>=x(|B7e#UR^42=9H?e3eU#e}(cRbYv}_tMX1R6f)A6X+84b zd8ogl&_04S@~c@2xtFg3%F9;|NGAm;t3tzDXG)y~>{EC}h<4dwEt=#hCp!% zX|R1*$u}FAB?1hEcic?D3h~M;9;*A|3RwV-&SJV}#k}Oj|Jhr`wrJXy>LFq?BG~Hh z7LTsqNoq2Rup&P&2FaZ6gjoq<2R{lC=OA>Nra$(990J6w(8a=|_pFZg(^TzP9NT&=}C+dl%g6+3^5sWg>3 zQf3LQmLQ5THH%;$#h=@{SpP4X^y#KaowK|o-ei8~t)9aQwb2q?v%r>pDXKD4>u~lG?q3O)sUlgWsWjl zVrRHLS{FuP*1(gWfllQz!a3;*4iDi(@6+u~a*PvbMQDYTVhTLKO2a(H=uwwuQV=(u za0BH!*7Z(y3L}Mig66IxJN;5U;2R}~yY_rbZ9_hAn1o6t;~l0UFtX8aBR zWOwKI_a`Sv<0Jqq?9R>qeWgBhnNI^exV18;C_^Ga{20Ea1$!8l$)Fw#HPy$b!AS50 z{}uX8?*j>hz#c}!X1pU-otKzvyc;Fq@!g4-RHvwc&57~% z*tRmyvJV1B;|Ehwpu)GAn169xxEfbsS^{Ud(Uxek850Xox}A@1vkY|j&5xvmpRc7q ze^JL;v2tmeK@UKyhM#fy_<>v7Z#%6+52hfCQJi|JRNHWE5ac$tHXFJvxjy>fMq(WD z3Bf>!j5oB&En5kEnj8{>P)}4wUDo)?Gw{Os*2K9+1@}hAu4|0(=cf9QerFKwb3`S_ z$X*9~4j~ugi2_fCGmsKA#iX%DGAa#9{ZVa#6L)9kUB~;sY&buJ{dm+|U=(E{usOxN zBq|xec_gVlKnc>2WC)kVQI1CCg>n_Oc}Dxu;4BnjWg&TZO;Ilv2(sMtI zfsI9w>&*b=!fT0Q%G@@|)47U@J3{Rdb;{L@Ujr$Jyi#M=&(I-FIv0AZ+_dkvYQ>|g zv<-rZhEUZ57r*Qn%Eft~0kw+Kb1z4duFL-L_fazBmtQuu4Rql_USqbVtUwwMxdiwo zr1b&#^(sD+R~xZIUxE&52xadLp#&p`PDNQJ|C~BQNV?0X@{MJye78&H?alG(p;zA6 z8QD}{qCQ)eKHtSutX|u9xmSV0Pi3|P5*03@tPD;?cOtg-)h_XBKuHw%@)hETRG zZF6u_PbaTuZK6`zG~5rL8UfFO7XYh80#RC*VK}i|b)lGf&;i?18b8YLmcFLQg9pQ0 zlXcc9@UM^1%n5ht6@3Ggbb@mtKX~#TQzBg`(ZN=+ZX}LZg7anV=0E7!V??NtRzmPj zNDGg`WnTNLx-PUu$)@G!D6r$;?FT(eW1Y+$R%fMhow90qG7G9&6Ik0*Z{n-gnp>;q zg=FA^!)L*^HJW60+r+BPjWnc-&JSUnEN?PU6W^)CPkSHFO<`_Jb+rns(C4;qC2Hj6+lJ4~bPzt`yNg@D zE8#a!-nd}LFTz;<4Jwf~f28N8DjYifItI1P;Q^a@C(%PeR=Zqs_n=?R$A=)HuB@Hw zy`|I6INUi%_g962q46X!OU#<5>2;av+h~ud!>{*&}zIs`sU}5%CM9us! z5FnGmV7nc@$~#v%1gPyisu`RP&by5TK2JR}_5oV?V5+lIiCy(1$yz4K#;5u%CK%>x zB<&5tV^@9~q$blb)izSO5t&lvuOaGLqgh^_Qo;Pj&&z@(gf92hr?>qC8Mq3wm!<<0 zeh|*OA&pPk^nf$Be=kn9M6{J%_QRym@~WUU8eltU+X{MXE6({@n32esh4~;T^}&2h z^erE574wty;a>fc$Ej7xZ;cc|vfr*)oE@c2O6$qXJ#(pqcvYpEcIHC%Y4kw|4n=Gr zb}^>)>+e51^Js1Oxp>puc)=9$bwpl=4#|>!&=QxLF^5&z!22*^L@k1z^#Y5VBrmS* z6REioZKlrM3S!ASWxWWDsd;sGg^?m7%3w+S5%OM6JCLRslko4&J#v^nHRv*fVgYPE zW#Rb*@nKgn4H$np#oWn}rU^u0%x^iB#csq)XkOqR(AKblNPkGGTPDVM!^ofx8S|Ug z`n^g5f8AF~w;0f1CLCF3Qd$V%$-z->qf|S0BNIl`**3YO@i8VM`~k38@sgOyD7dvv zz|c0)ht?$KF+SC-L8xLt#5Vd8Gn{HLy!o$r2I=j;MuA| zUuQxHWj5BdG5@`aT)W97oVij~#R|z8;?9ealvjVoPS@z-xaE{Qh0I7-dE@@H69K-fs5lnuF3%4|4IC?qFgpz(*Te2ey< z7|33=m*TEp2*1;?huZ5KVD6{O_%qX5#hdLHSik6e+O5tw65H2DTXs0Rw%`ie2@ky+ zc`?|5g;K`zI7*201I!U3g$KWo?}wn#YD}ZSFFupgOb#;cO)N$KFjtC;uA!kK*7+;MonMu*W1N;=+sJ1)vLui7) zVbqx{$OGSaHDW6BJ||9b?7|u=lkSbyuo4DQyc%{ZZA=_8uTI{gtQWXrQ~fk0j;4?iReS9#{C`+ybC8-_S=5#gG{h}Ym?ST!IscCE8BK}Dfaq+Jif`ygCWoHciw#HzxS zBz{o_Q8PaZcMh@sdRO)D{h|s@K4sQbl{<&-Mt2AvTd-~?zf1>_ywE`xHm{a>qYAet zB(R6Hn|ls4xdwr~1~Hrh zs$<$*O)W2gDNk05qR1TlMgFKzc_axr^TAV~HG->^Ed)B+x{+SRt~ms+-QNro)#*Il z2b(N3sVd=$Un55@Kw*$+YxsR%xlBD&XYi0+1cqW0#5<`Q2ED9VNV3ZiU{H0LR%zQ^ z)iaO-ysg}DFZR#l49ep2c`7KwcC=@?Zt+Q?z`fptKvYmahV6si4Z>?Do;`mf6wGwF z;eOF%D40F5#L4c*;BS<3qaNysm}+emdc?JRKRwG*-WfYYn8JiA$h{%y{bQ1UeeI#nD9 zZ>*@Vu!pXdWlA|i3Fk@jg`Wsv2_GzlZ89{?@`bxGBL=fj7%*AgtW$`Ku@r;* z^5)fF?|@Tu4L)0+<~xZVC@TXiGy)~LD4b0G)z4#Kc}<kUr=%G*si@2~;SaMYpNo+&gb4XM>o=gUtkes=s zDr|DA0RKM#zk9LmFARu zBg(Dm0Nn_CvC9xG*&jqLOztCGNqlKzv6)w?(M=o7&lJp{!=keC)fT%x%rl`;8zz?Ao%lJBvN3r3rU*f z(;~aVKtKr@&-hqYPgjz`vil&ZAGNc9{M3LMJ=ij2$ll;p+lKI+Ubezjy&%J#13-b} z3Ll1I*skLgLxMr{xft7PL8yQ+taFL{>YT3c?1D3iiIu!VUROPZTYuYmT0!D?{q#&5 z*i8qJXhxK9O1~7GD9&a}{G$$nLeP3%voEcs`q0VcDwGkdsg5mq6qm!CrAGLls=(b( z)mc~2*xx%cmP?Y(u;O1{k;W|Nl5y6BOyq7le zkXRN~-1@Rei>#jygWpQ6dEF1 zu30KYM87ATa{8Jnbc5kQW(BR-qbt>JWPY|V&~LE%GUe8`i$1&f)y-`3R|J&y5_JbIACDCEdgYVg$`dw>^LoGGD8IleVhQ^F%0(N^i|)bmZ5 zy3GHdvQJ${IPo9eT#bM*rD-KQqByyX1)Vl`W|lq@1A-Y5`$|D-DT}rps>o6&3{~e zIa19Q?g+a?PB`~;wmf5gy;GU6+2U`;;;f*nH9kdf=6`IX%3F$T9V9f|iq6!RMi2ub z>N+Z~W}1k!Bbm0-(+i=673)-$ObNTUnCuKL*N>xSpAAW>ytw5DUEZ*U%`9fCsc&>hJioEPS1M~cx3w} zrR&sV&} zZ;VB^!Ks-=Eo9?VI6Tul3ltP1?Hj=!?y%e{engo2yl!{g`xt1+bMP#5xY;mtxfiDZ z%hNs0DO$hg=wp)hWLV-2*?~n8DEi&4kiJDPOK41bf!C)iF<4{s8(GOND6k~Ih-5Y# zzLbx)nD$cUwdCf6OHg{>MU6NbsOVh5Z!6F1#ukUMxM!Xgez2NV|I2hLhh1yxV^C=C z#}-d`n3(mQuG<}6R|BILXbPu@yNlDmyy8T||;OZ(*Mgc}dT4uE? z9$H&hsIxd2Hycg$kNEJs&rA|{S?0%y1SOED*E%qdk6bmeg0=)oxlUV<+&YRxIPri0 zzp$P4fH_{wXG>Rihe%yZ?x3&Vwwl6@0Qeyr=lWlh2H@D5ClyRVvMdQ#TOyF#0f%am z5sb2g_okyn-aRr&o}=AWK~_%gle^!o);YQ}@wVw7Zd!%vRKSH6@7M}`)t%Qvc2=Kn zXNj(whTHXfRd$TjG~|GZEQ^igoz~>z zxsu+&!iuOgwAQb9N-%5hCU0UMoFcC!2$$lVqKoxf{ITHKl2lLg1RVN|C*8CU4|G(i z1cA@@Wih@hmR-P-o{-3%>txqvaiVM6hcvm5wH>pQc#}QEc9`q%9zPuf)-a!?zMtN; zp>n=I@Nob<6E866&rl6^HY6B3+Cv0y*40=aWvfaHKIYi+S?!5Z+U;_(Zb3k zCUt`)6{7U?Cd2GVI{4T6Lk5+iS(!k@gb?~_Q~Tu2z8cadP4zTaua*!bk_vf2c7RjB zqI1`xzjFFetAw52scx#*>Z6gX3yApd8e;z*^qKNH8-I2BqQCNR%0!)d?rg_7avzKV zodR*W^O^k@{^sjILgj;BK8r5PO;%dV7ngJsS#+uz9ur22JFD4HP(RKu`=b%2URWv{ zJMh*p;^k*#!-4Cue@iCN1MYEHVYXm&-*Mj&k>qO5SZP{_z{dJx9idux?H4Qe@v4&{ z=Ci;_ToQl3UfPG)R4*bOC00WNK2LjeY$J_v^?aygadnrPR=}{JcgnB73(kn7P1UBk z)^Mgqe8A+Q#uoXc2mm2c(@qi%BC!D&Z8(?PVw9kluliB5Ef0ZKjAGijUVa&|YwN%? z2*q2|ui>^4DBvWfB3%7fi1(BKem}Sh{Jt724hp(xMuu~l`j8)!P1}EMOu0wB_hUZ|n+`+! z8zeD#4+dJu*=%FI(`^&jWpb9Avz6VdfJ##?y?kjgXYL^Lfx!u)se+R*D}_G#a4YZ4 zZuE>(mQr;WHbC+yyDLR~5#SSDiGeLJ0DMb`bUm$uBdhZevNHrsV)tDaS3W#jgxVQn z7=9Ic5TTS{S*FSw`kb2b4t=WY79-2}hGh`~*zETa^&aij?P1?u>?YL64dW+){e^e0 z>Xpkv>!!JSG#Ab0Tv274H%M`frY%)oKNA@e0_!R26fqwUf6FL~YG=3_Zup!lpW6CM zej`VW$Gf%F4?@N}oIP=1C4owA2Khb%$QU63Lg|8*Dvl$6)8AG z=;~7S{%28Ca?pQ1m>80|z3ccv*wqF<7O1Ldl5B&2zzm<(Rpr>Qa1K7(|3 z59&CklZvHNlh!7zSCbW>4mw*i_}zjuRYZmCCR*Pe7wit{#A4Cz`?IwEfqUL`5^QX( zwMq?1BQ;#Av#O`O2Ek7wfMGPt#>M3%Q|!=fpK%y_B(b378S!0?h^tiB-;S~njKP#U zXlad4{ay8~A+Uxr9mD;}rB!{h#%ld0G?YHK``Y!YN{dd97_sNTgvyjxt2c7+#E8&@ zJlL;mWWVO%8sxb9k)xk|;FNp$Ghwp|y=B!HxUauBQY)8wc8ES*BvW$?6Bv}YIVphz zTNO&+$f%&8x7C5)pa*UF*~0BX2`oY?|CK_h0Ivwe-6gqvGBOy^p|Wkp>Gr&c?yB-i z8U`;Ep7~)wV)NEW=5x$@SA}48p^=}*UqOlZoKr~AMcg3RSQu7hCrF4I1t{p#z5N36 z=j0}mES3p|{U}EQSTq0+^#jlc*HdDy2F$TOJ^~_&D3_#{gfwlZO|_oeR;z@kUh!|f z*gy2x&dpHsX`m9S9QJJdw&KgBk#E28Yv5S_I;At!X>P78uD#}+%$|6ANEcLM;rcV~ zoR~HA!QDR=E0L@-2A)&k0~ccM9mM~w?U56V2;^4;$rNXS#GpaI%f_S$IPI32Q%0h2 zy=YO|4$YSU^%hK#Gb)TP|MWEAf4l4bGR$#0myxwQ-ylF+Ys-K5;B6AmcAcUiT?!^felL>4o4Js+3aF_X+%foHZxmTD1-5`R$ z#`qiMp2--#XY@=J@sgv-BzFlYv6j=(DsRfVS3j7{I2|z&wU>x{eso-;#W?=YP1(A0 z*pOu&4H$n!rh0SV$9y8N_OF8hx^O_NGJ(+yA#A-p_&k;c|5~F)`41QAKhmU>;fxC| z)!KzbiOg>X{hI3lqjK=QH2CFLxQi%$*2Z!_nYNJ!s2<;bTXI|b7^J7^2(ONF;S7CB z`2Xu0iWBLA+Ew6Jh#+p(@VW`?^E6<)HJZ~}iZxp>%6qG4RT}X?di7iUBhfDjI!BX7 zf4%mts`f@iFS`Y!JG17oiU+*~-Z?ESn&xtuo(G(nbPd~2q6X}dWjIgSEm&RwF=c=6 z5kAV3sroo1K`vO;<&KpSg9uWUL|CeQM}IOZNsc>JzD5Z4iAeJgNmk1@rqv-_Ewz*u z>l$kjD7tm(0FzRNjeKSsA@5!_J$;)c4%2fhHQTr& zGX$4_Z&>@k>4ToN2pEd-uI)%y%$!d#8j{=sfqEc?Ra(h81P2SJ#O(FhA1O~MZ*L)i z6-Ko z4Yxw=Z-;rb{al|0GUg_eqf^ZaIosvb_AC}nV{^!I%q-~ads(s;FC8zrR_x)+&_$`? z_)_Cb3e4N1`NN-Udy{lPFJc}xQpL1m7&=a+&_X(kRpT`wKMEC@EIZC{Hj!1AT+=T> zS3ON-6X&%u-JpyxSg!oe6YgU?G+4aukfgNqeU=ZEBt6q`UxbG<}5=gFknuPwWrg-uS>hE%!1;k$n0t>u3Hu}wwp zm4n=-1f(nR><%ntHrU?B6<(s^se5>UeYH@3(#MB9e9_&isLVeSzXpxS;vtFmP(X_OA9#!t1BnB&nE z!i;l>8MG!qk4!92xo67k;%={aDsL(|- z7OL~<2tF9YbbdnsqvDnxpBCs7gQ1I)PHEYylxU<^3o9ABh%c=^7sj@U_EoGP>FNQL zBH?Smm?)V1Y>M=)+2-rduJ|oN@Wr$zQn=l9`K%4znFPE4W&Exp8IxV1mw{4;D~VOS z;9>@VSXr_&Premss%9G*?#Pokj`OxI1_Pg6f8l0=nzb)8tUB3Pyv%5qAc?A(hz32O`Q-%CdzGAUHd-33i%#K z3A;UdKBZ~q;GKk`dogK6o;>Pi%lZk(l2qk=>Z8Sa2F$4+xa1lV+)Ab@(^DukSQmoG zfZ1nZARMx}iY^@BSWbfMg&!D#$WaITv45duj0WbTYJRRFY%;~{6^da~>fFDxn|46R z$%D3uL}178o{__cK#RtI%COhNEeI9+jCr;rLmqtO8u|9xGh&R1b|kXZB!e0YlrDR~ z>>gY84{6ug9sef#YdJP=z>)?zHPDpuvhB_BGJTs|#o-raBdMR=60!Yui;Vc!jO|_K zOo)TR`V;X$J$=oQ`0djHgsh!oFV2PN3^7n;Xe(2L<&3i(+ZY0yvSJNUmjn)W!JW#}ScjFdYdit<^4+JU^ohZBu>>o)YnJQMv_{-O=Ch zY=YJAgO*^Eb;P1IRgg9tDWyadlq}+t5M3i-W(_7OJY6WcVJQ^WpcML^n2u6k{Y-2^ zbIx=T@)7tl%sdn}Jb&oQt_b0vXrv0)mH2()O+udQD ze7q&wp9TA1ZojhE(KRF_#b;G?x;G5U&{uRM%%J6j9~p5fc_08Iz~a4W`E_Ydq|{L% zgKtsY&Y2EHEQg=2Rc3{^I1em@OksUXi*AcW8t{~T%&_aLVf(myw1gc9+i+=tq~d2b zD;e)z=+j1T1W7W0-vs(I5_(W>)Hi5mH?(O-?Hi=EXf?-M?(C9{Qhzu{<zW}%ev3ry3&g;VYrF4Z)Jdob-L0=y&I1eS_ zX8K8V?Zasg8=*qaKlYXn*j_I-E@VYx-#H@B{PF?vvUN$6fD4$cmNER^E~3hJR@?1~ zHAZq0X4x@ZMj=R@EOCxO^uxMZbTwS0t;q1evOB+zh{!zyO-v7ayvV^eTW>79)gE6n z8PHwyITUdR-R8)cP-Ff)D)K(6QLAQgE@=LSYPm0Yt?_`AJ+G#oHF5ruYT`ClyUIn<@SrH`86=^dwn zNtvEAO}BD&ibWN1O_0LojJ5O`6WR%`40bKkDFcgt{%^Jkc5yH*ioJDvS?1w%&I}B$ z)Y{W?px-139R$R7)0!?QyFu=8hRd61c z#+LEy;5jJvcFGI#Rc{>32n<+lB+}^kR2)Fh=fZ*H`)pvy;nELj!dE!i?`)Mq)fNA0TJu z9rfn>Sx1{!1umAQLUjGsOb$o3{UP>mQABDdC3(>L!9w#VLHFKI=(W%3pAc6%N5W$r zotPCP;`4IxTM3V`YwL}*7GX=Qo-o--zkPzOn)bs(wM{wq2*FiG(M9QQU-fO2R#f{5 zEA~!aevhuHUvjz0donHTnn-;4X!F}^cFXFz5lrX3_p^ZgpFgs0XL*O6m}|qJY^z3q zy{4IMiM_6Y9T3n5Spp7If$od{uX5aNeDKr-#nyykpc40vcu`oWv^P_LSUQ)GC8+Wo z)Tn@=>kgxig5_3#Z*@G78CA^DI>MdFpFRV_A^br+c|tQBd|xM~k_uaO7Xmq{c#7rg z&UU9}?Uqjcf@|NXszAiV@JkMSA~bH6Pd9!Pq&x1l1`nXC6lR1fSkw>5H`7h}Wx2R}b}p?w4BAuLL0g`PQ(8v~g-tOFKqI%Lc{ zU)LU3c-x&!OmB6t@A76u*0FNn!~@i)EfP&8lZ7p#FD;eK#Wk_f7tHo-QMA#~uRxeB zbi-@#$L6qh(qEE&3KhT;oxf-szw#UBicnJ6j2v=>tYJ0=YX50ey0}4?Zz86&&34M5 z1#RHaB?Xq89LWpA=YFsV|I0mP+m^f#Z%9=`khGTE`c_Y%Avj(SHE2zU`wf({8(c_m~f`6sr@1g;VaG3ckHqt`?yNiGrajT7U1W z^k{{9HAGNW@A|X?Sk1pW@h00ES7eG&JdId_N!=%#cNr^<^3mYGXsC-*tTOPL#G_Btm^?Jdu}6&+%;b?=&BFs!g1oivQN8z zWn<%HcSC1>T45^rokF4U<`NVub< z=`WrD(tig6J03Rj%kkvyU^1G#$JS<$2X|Rn99+N!cEOxJ5hF*JiazfDLRxDg7O?|J zPLAn}cmnJ-VB0NddT>mbu`BUPnZxg0`X1H@{XgJrLgz8=i__zSKyh^EoX5NADNOdN zt4tc`?+UH*s6ClUHUKlp(Qs^%!mz-!%4g(QkP9UtBxPw#}f5t@lRfRedj&$ame=|fWj zWsJVY!^!wS{NV;cJj2u|I_Q-*_B3e^ga(d>V#QwCT!Z)o1mn-Sa z=rHuXJ&>0d9Lg<0`!(t&nL8nmR=uuIjq>5uF+U-^__ll>rq_BkBvoR1BE`N=Fg;)Q zK%nNyne3u7!M=|XP6iV(*17AIl*w^WgE6M&KL*i>0I2&UZJwW~H&wsK-7@#id;axr z@k{LM;*oZ;NTE08FD`RfJHsmLJbocBUM3i&id?l^a_ccw__|LVe;w(6cD1)sM7^&r zHRnGNDYxqJO;PyB5ynbf*|d+d8tpR8zG;dcxo-^ip|+us$Ymi7B62PPzLL{o`x~dc zMbvq+Q8zzzfDoPk$xsOet}eHVp%9NGW~J{>0p|PxR~$%sWl=!B~cnfcqX`V|tm$Ftx`>uUHlK5!2qR z{8RAnV`A1$%siXVS^|Ibeew1ujhm%-`EKKYr!#@Qp@?2WuGd@uvs4(s-O*fBjNc*6 zrc4}(HvMCVtMW#Vf1m#onxF59W5e@tEc=VI zcx679H4zI^;;dET>$-=8c}{S6)jp##l#b?qrelO715Eu$N3x>mm)fc^<2 zWq+NSgjo6fevNYkWw&n*Rh1HzMbP|d&=Z!XxZ?m!~2f8yKA!sQCa zVWA>bLWaRo{1<6p16d$LyZ5H2K z)rp?pe@+n6sKxHI+_vt;{Tjh^NyZJSHB$~x$&@~oePS~qh&N&x+^$QWW&SJ$ z+!VI(CV_n9a9kjw_yv*jYHTX}wSw;Yu!!{#?rAH5WPJaT(S^vo?e zeP`|oDrweDwh^sLrgX+(Y+!!rO|iDwG<4N3nOG_p%I}DJMXZ*JiA2qQ|C9GO^|G-+ zUf6I`w$*ci5{8)|+s#)9h%4d{d>+D6-7Pn`VaY5OH-1+*ClFPxFiB%oZG8RL+m6p9 zu)gNC<3{o=sTcGAqg51@ZeZliywUmny^M8-`L;V*2Jf_iRSb-{{#&`lf<&>G#rifL zTJ(KbMN+^cpA?z0re*MI#S0wY=s=2pV^6Kl3V7kU1i)jrK|?nyBJw|0tPjc5;TBQq zBS#2z-AAx6A3o71avGJ=dRIJtCp*lUh;E1ufRRZ#9H)|m@){L9km7?KwqZ5yO$)86 z)R2z`{7J#)SRDjf-$j*x5w?QHBowKn?cmY~%h~ZG4a|l5eQIV)vI>$8HC3@{PqyiY z%G06rA0EdL$BKC~xPL2XL%#BGK0DvkW$o#bzOipb9{D=k>QcD}rRWGl+E|*#KG?51 zAWxgIa)wNyV~B@O{S>`Vu(shWd3mpD)Q$zY2~@vP_)QsG4CNU*txevHXDVpaJV2&3 zDlwV3;2%Pg&oExReKWM+X)k$`2V_1^%l_DU<3JzI zxAe4>k!$>~&qQNF^kjtmB%7Xpp6QE#6V;=udu-G9-jT&g{MQ?}OgsR{n~dEd5xh|O z?1*=9z$*C_%n&> z2b+GT4Q|c&9R!7}1}+|+N`~v@(O@c{F#tJE!!4aeIxm5uvEfB@ZlSO1clroUN8#l3 zX#7wtUh4m7=;t-Zi+Gc~!$}SUSO=U5z{%VKx>=5!e1;ZB`-k%Xg)NH#pVaRppQo2M*xNC z=4A=KmevXsF20t62VO9(+ExpkYnp>}%_%Yly{Sfk>r$LQ{ce6)weh?)<-O`(TPcx3 zyCt?t?c(7+Z{PEdrSQ5gAO!#^f1Sa1Gf-`C3_&Gvm7c6T{5_G>KR~Vb>T29-_vYuNNq<`)}&&^5;QnY7dWbft_l3s z@`N-e_P5;FYirsmM#3|QHqFtg=Re41(5rQq%=JbahA68N%(;zhynoZqhgRAa<#n5* zq#R0nz_vaP8!|1B_D0N6@n(9+R1j}EU;A*OOb1OS10h~Gdm!ljP zK~8o6 zd^SaR)~v(nKT2tamzGPx`OV~C;$L|+Q}hdwC`-0iU=~G7scYFS1l*57Ztq`<@|mZdTL|Au&QwsEJnAX#su2c&-T)eKSL1 zlF6uwM6*yI#K$4ukd2*d)J-K`84XzYv3%>w)5sPV_*W{+xX*O zl=Bw>kL=si72ba;oG{FgI(x+-q&ByPSxvU!g8nox)exX}S*wN3*>u;FUUQhUB>lRS z={vo%X-J@X5{8Uy8dTS+6zxADm5x1z$=oY{ziEe10d6a(kkM^uePx6Do3T*2c}!ev z>0;ztaIJHz`wCX+Td{(@a|)GZE6oTPuK~S9GjV6+(}!a(T!g(58q`tiy)gssSpeHi zhleB$N`ICE6iGWb5rUF$C$kF(oc0zT1$FrimQ|Hdx2Hu^jJN#tVs7yUqZt+y9c_ZT z?&@<)!503B@gtA8eI6*KGYig+s4GuqWy7LPbhyT0dK)SW>!pB7(qLGgy`C{4@Z zE{*MbMc7nK%`E6+e{+QT$cQ9wKmPi~D9jOiETj`c?WowwO0XZ}3BWLO`ZK3;$)L@| zJud_3r+c zG5kTpD#n38I2{%;=18nrxqO36^#kfKZ}_YS@|;Ka{A0}~CYv~KGLAwSsVLrC)bK_k zG@42jnJDPR&@Zh@+Of`7QFid7KDFnzT=2aEv0dysPJ1J$lq1YYeMRX6e*f_7(Z@~S zp3u1Z;9y~LFe-N(v%5_YRmli?Mw90C9B1fO+;%a>ftPNMgFxr+WJwFG;b-o{?7KyQ zhf6MXZvtrm;jHsoA2)QE4rGlC*yG~|Mbt9>D#tR|T%k$;u^58M>zZBT9<$a_XnxSU z^AlNnCiy(-_Pc;u`G*m5?Z!{Oh}Blll(5kI&9CH`g;j0P8|DX=Ia=QWk!Nb(gYg`L z;(fsPY+&TBij~sSUj)d9NZA)qI6{NN`oxm*TnsHwx{B+9c1+iI&>v<#>bGvn&SJEG z1z@_(@YV8632%Y7&HdVSwB%!+5_gNEGl5?=@l-&q*=3nA*a8kblw6K)ISz!_vY0d2 zua)gLw&W0@HHlJg1HQ`^fpcYTKZrJV{LIwt(EBuozjE2QfUV=3kW1c^FruB`C3tHY zMBYgV*0v=(K0@jMl9Il*l0H;Pf^of#Du3$@x#iKWzQfqRMd=rq7M?M_RbAd{BrBi$ zwKDg3Q*^+rgrQnw#x_b2MAH=Z_|w?`z|1G$?x98|ImsN|8jNUb5fKFa_nkqbQ0`MP4wMtX!;IIw;q^N)j^Gm@S^cdggSQ=dnkY2LWB{t7J}7+5rS zgj53KFcH(8XX3U|C2p=Y7%MSoPL2NvXb2Sq`(*3gDJfIWOceDI#=B}@8pKtP1!ucA zJ?<)!3{gCK#9a_EjdAhmbBmxniF18$dlP=qJ`1v>${m0MdrD0mk(q4PR0 zyQyz>a(`TJ0S&}P;lQe%n!Q|4=IY2fbk^&?2Yl*oN1vcbXyj8#Jg4y7vn5K++F7)% z7$^o*s9$4LL@*}ee;Q&FUJW$5!d<0SWU$Ntlg%o)A7CX1iNet{K6;eEiR zlstT)b|^(U>X@1J!Vchn^B9wl<<*0y>Y-*&)i=}tFGUh@O8!_t-!e{YcLm<6)~;|> z5mrewwc<8Byxs>vJjCqCMRE@67GZt*WlTrL9_yE*jqgGN*$e)d3hVpV6G^$oXD0Qe z)q}ZLpA)JoC<%t9GWBu6nr_Sgy`CM`%vTmvr9z;$UK%uct6hhB)t$L@_-CJ!`xVNt4kKT2rb|Aoxaj zJ~r{7^#S{VqcySMvRJtT0PTSQY_Uk_ot@2{PT%R8Cm#)pU4!KXy8U$S#*ObmCq z6v)A7Y$@GJ^x*F<4a<^kBP^^r1fYJ9RQ(XHodEK?g0z;%v82C*E}DRuOU7aUbr+=8 zbSq*T2f(1O(?z&1vY(b`i|r0-(N^1sEx$8ix-YSNNg7u`!@hj?ganzcXuoAA=_~sV z86H?;XQ!&)NI`4XCICw6{vVMk5w`r@%s*2FWrR$AwEX_P!+Rz|GYy=?MvvJq?CQia z{t_f(KGl{P>6@7SI zNIZhc_4I8A_$ryysu_LmW9=ShWzW;lSRnSD6UvPnJ6f<)8Pu;K2p512+UV4! zjW%16zF(PM2a++ato%EMV|Smn0>#JC$C>?Zms()ONzf?2;F_c#qAoi3U2mz03GNl} z$Sp&v#mpIAX7l~XL|A|*)I;+kJ_Csr;^Sn~$!$J_94EXKh5;cR3BFLF7TTwlxJY@k zM1{YGJQm-f24=xWM%>H7Az0t(@1=4N4fB&=YX@bTK?dXB@lE!nMKzo5f z(`n=Z(SIYt4MvW#0t*N7FL(Kw-D>!upUhUVoeGk4xG?L6UOf7U$vWi^vJ@PS5QliG z)DUGW#|x%&$vpeHTsYuPU`O2u22~y?dThpi&wT2Rc`ZE9kVre-RM#{a0jh;ygDC~6 z1ff4;l%h2;(7IWc4Cq+!mh+T#kCg{K5^m`?Aut#g#MDIrHNa37KkKy$BzuBX9Jlrm zXGvslx)+3|x<(Ze6$%)V@GWc5(39X7PZv8DuIt-YtgDVIutH(ZhVHn2XWw2-@s#vu z+30P>Ii6yJW^Vk=+=?W1yx={vo%+3Ja)?i`Xjz5P4t9SDYkDHRMm2!S_PLP=k_o2C z^AlaGQ}Y@E#z%Y;c{9X`Ijh7JhX$dZowgz>@j_4agrH}p5u}DyQ&hX*CWSws%1{qM zQfX>?v2(X|fhlEC@G47P;{|%nOwSny7ze>6YwQ;4q*uMEX~k)7# zPCh-G@0d;IB92*mv%{C?DoG20vwAgYQnxq^pJ7PklKY4mKv?fA9xc6LBz@Et`ER*R zq)^h+nb3siJ?DLzgI;eOKv0|`BzNiWVyEZhv}&VH%LQhYcQkx|xvW@z@ztlQcxyrw z>N7%WmQxd36oEdKoY3XPRMHQv@tKhg)?NFyc{=1E@VgK6S}{CU;h&Um zv*H<-V%`Sk^v_vz8@egLGy6p9H4>EWhpQ!8!J`|{v1NDA;Kxjj8y*yj76O|*7qL`M zU)*`#-&Zg0UVz#+s5e@trYMn-vZ@|)@wfO(HxWjWWA_b7N6mv2iK1`DV~v@mdM^~w zETCj>u!3a>gbra`9^Y{LuLG{HCX`&Z6z|VXqGwPOGA1#j8Lp7e^gGR=BkqB^U`ll_j7jl#6Tnqh=)N;hv3$-EVwKzuzsQZu2$Tv<{q zSwZ<}cu{HXD1`rJq<0etW(@}GXm|r6XKVvZ?F6|s&VR+`VneWx1|Sw68AAsJWQ?4~ z$LmUp1-#Xb;y|jP0~UcR_HU%iuI`;qedB2d7`YSAr)JSW?)L#T);-qVK|R)=~AtPK(SvV8~fSJnu)N%T%mvu?7bX@KocDk zLyoYi%+|9;q-kHPYlo4!WFQM?###*Oo>g#UA>y75y*z6aC1wH>^@-wk{pe;znv#h-3>l*qt*lUaR;+WP6u0TiA z4j;+?elkQoVki1dk-H#~>1xTCDI6p9fsMo1dh)_kroQ9z>38MlXhGqF*hdjJq4jRE z2oe zLc?x;G3XF;oBHI zEAAps6UI9p!jES{r zpet1oLt#KK`8#Tqbx+8-<-qllBV`u|zOFoHr1wnCNeBl6ACrN(n-g#Hym32HA2=CNip4~$T9B#^7HK14?ql=eaHpFrn-DriI;(A9 zFKSEQsaaY1zNGlX>)Jgdhq{%#Kpq7LH&_F(6YN6Qb-Gd#zW>D|UoyPpmO3I_$XAT1 zG-{wlPv$iavJdlp&#k{EP)WB97uN5Elft)=mHL4yZJydw!3Dxc?@0J0l&i2cXWXtb zLs~#LTT!M6dRK7k2V4dts+`XJU6JJRrZ#Do?~~-*$?uaF3a{J_VoP~Q<{54S0L{Cu zG`B3rZf%JookV2Ir8|t$=cc@UMhUY**{z$sG_qHoM9nz7Whk=rxPH=;{*;Q-)E^n} z98BNQJgA3VTQ;^e4peGb4_46aV??U!d@boyAnYHp?Xi-LvJ93RGMeY*i>2{O0*=u{ zFr@Hsm}>EN{Ec@W^bE40FM9583e4#kHy{cf!Gx|^S${#3-Qd5opKJRcymG&4xe56J zU+YPxT^rCGpPq+eih5=t(yoo{KcGYQ?{Fx45jLySX5G>!;tFre@{Vr;Sf0v`K{w<& z!S_^!#3cy5D5b40z($MLK&4Uld};ruC_8zEh@ZfdPDOL5K9B>7>VsA~M1^~i+;ybm z8cRejWCw>(-D!Wj3i*gegRtG1h29I0D$%V z+1I!999L5Dn&c(X?T~7jc0w{7cP2&xaLg6X`_ z%>3!-M;1jsm9Iuut*@|Io_Z4^zEy$={-)bz@?>nDqnACT6Izo?4bit@eDiB2^VagiX_AdSac&t&Mffo1qXjYT*By>@Fu; zSU6ZArKMYawX)Z{V4KGsH|!93canudhHCW;BcSUe-eq*Jr-pF0G`BwG=UhVE_9*-M z^h+kWuEjMANQP@i0LdA4$8+^lELWz5U@gtjRl1>elz*zbFnbpDhj>R~? zW(QCHjLGs_>W580b;#EO60<(=z)2ttN*g~m)QOsVNMSiJ41^v|#F|Xm2JtMxKTPZ~ zEmkdHiTbd4e^OEQE&VihC)i5>B@2aT<;P>{z<4nJp&7fv;ucs6q=QPOFCdZ#hBJKL zTex;^^bcQ)Mq!AbG#=H?7|ZZKj7!=a@*{8&!7lH>yj`_ot>}iV^NfU*0ms?a+eCOHv%s+Yf;30K1t?dvf0Vc6Yyz<9 zcEw+)G3Im?+#tVHP^M5>VQIaY9NimN)(nA~jS#OfF6iIC0bs4Q4|k@LDY`DeqlPiB zXkeU|mbO%NpKxIhxEoAKLq*xPXoMc#u74U``4 zlF3GkNF)~;by_2!@=I4<8-lsxrf~{*o=uczdwUQr+&)V04h|Vb-~pq|p%SGz>_2>p zFo2>~5_28DUe&$~AYVq^v+mpSdq^1r!fUFiP5JkNN04}CyECuV+~I#ke1yWML}ml4 zx+bo>KZlDO#8n|rVjaJ$O-|!a_5?;qeZy;f(M(to6?Y%5zd-djJv4XvE5e}o#yvIJ z>vGc#3gHkwD1TWtTG+NjDo)Hg|7r|ob(pX-Mq5SCuS@`6Gg{-kGaY_$V*ppcKbYeih>u{yIG($ZxWs?dv z@3h=B0QZM+iVhpGe{Kxx1nuVCw}|-PV6M$C> zpufRC2lley2c|o@oF;x~kIuWxx&UJc9J22=$|P6{gEo4)H}MAiIla#~J*xd~OsB_U z_k#&OC-{Zm2(a(Sn~8foRXY_CA}Z*3q!M8RYEw)k-IeIck;D1w{E!yZ9Z}w|_7G>V z*mV__Ul?rCHzedh)eC zqMnEm*vheC{0c>IQ@!F3MPSSg{!SPD`v+wSOAyMTKLaHZ+vi1(HNuv?I)ISV<3+ey zR#JqWOQ%k+nGnDe!jR(SHwu z!_3kO7G9NNJlF`A>f@FQ33*eV2NoZ$jO4Z{02BPJX4cKxb zlsvVp(YF?LG5fTQINfEZR^Sp`9O3Lci9P2}juG;-{ksbtW&I`dIjZceb<_{zED7;d z!n5YQc3NdoO~+_bSzUM&_|Yt~NqDKfvUA${mtLqY){)VV-t@sMVfRJ7ol=(CP@K3I zQ7u@}Miy5vA$qB9vFvLY{N3e$R6~zRNxj}{T;!PKHi`G`c+`x_(Kvd}pdLd7>nuF7 ze=2D09ZBf=oVaqW41MXXB=yZ3oSwiT!c)-CcdWJ(alnaV9jp>rQ_y%qcOVvq?QmEJ zP(uwVBoL&UMC-IonK1zty9WeEL2x%mMs%Z=Cz*&$!~D8wtZ25)ukcObCT_<(ou#(Y z1ta)Ulv`nu&1!k|K@h+t!{#vWSB%YE4LRUwAMO-F zqL=r3*sQX?h99i5R=RC!+%kK%=269ubF$k&*iJUAR;jN7iac&kK1#b#;ve8>9|3M~qU{~!Lv4VGFMEf90x${Jkr$gXs=NWj3B5kmrX>vr*}rg6$JyaRG}?iOG$cIsnnR6cR5w zhT|hS8eC&!>^2%B*&iIxEZo_l%b6SnSO_orz@Kazmm38y>J8Y+uFk;i*78u+r!x~T zOvN%}Ua0IhNUxV2VXZhFxV+R1Ay~zV_K67hUwjaO4(@5MmSM#ns;Z{}bUbBWJfKd0 z%-=wWRL|QwTA6o4-X33Yntg8c^|Er=OWGj%2%^&I%G$B|19*#EW7*(B0JTXhGi#MIEY6 zNm&@vsX|IEALVi>Na>MN#S^dM73r8_Kuu>nTZW2rT212{s0OX*HnCgdj3~XS4OOQS zu{D`D;d!jH@Xb9W!~eQV_rMDl#tLn~O$M%=F`19|ppoUYoQmf^;%<9*FzLfV=rGTSq8_0&eU|y>D>wnR1x1bQZ8s`BvGShHpVkm78UuFT2E%drtN4uk* z4h9wS|D|dJ9Z*Ws71lc>vet0!fz`VW;)oBY$#H5pM8V!_DapEe|7=Zv_RA<$!5l$@ zE%P1fV;1yR_SE&|w*Ut~&bi#kItWA;%rXNgsU7mR-g2YI8=xxC+pmB2cAX4QnApD;7=lp z7eHJ>oX7>N*kstYUbw6!XZkf^XHFzQ3l*2)u4PZ6n4zUxulfE_;B(12s`I;?-qf0P z3cSS#>)FarF47n`_yvR--ThJGvy3F~-jA+;-oO9&zlO>0sGFMg)&znERQ-2oj-*YiWDoV%yT# zW=HpOm4rsQ*BiriZErY*pCCzhlz~Nxh+2AN5C+eJrJz0vk2Fo}9pWI#U&raZAnbs1 zRRAiK)E?*UG4Y*LTQy>ld8?wK;h{DT$Mz2d<{DwL0Yz=Zvs8ey^X$ACy}`qfUJtAFmG|Xr3Z|^ctP+*5^nHUGu&5}K2!Bx z?A_z4Q3bjK=eTg{rh`1fAI*@P-gD}md6-V}!Ld}M<6sp-Y-8lCryx!~e2RqE_mg#n zmBeXk7~t{q{G)xU#W*$lfAZfs|6jNdv8kF_!F*5Pf#{2TLxp4A&TMo_Ed=Y_h!XxY zmoU2qfv>Z@G#fp*#TV9rvf?YqwC>Liw&|<@jmP9WOl3z(p}s%QR`kG|9IQWI+{N;f z^-buV>!aonPFSvGoj7*dqs2t*>dwN(1Nr)slWbYpV4b<T_IUzrpr-J@C`SIBQgO(x*~uQGX#s%NIGxkGoGujNmKG zcg(?4zbob?lRG)ZZAaV%2#1E(ksFC9H*7mP=P{@yU<$L#k|N|?oaZn+K!dH3%Ow&U zF->%mL1d_A6skLNpLLcA{{5ByEKkJ)_~-lI4pORGab`!)51qMzs+O;Q@1j~G9e>5s zh?(wQIT@mpJ?v#;?)z=iJcS)RDrUvgi$22)>`>DQ4n>%lf}0W)p5r)1r@ZPAM&fHE zirwCGS7haWkECjRKiQ!2g=Y4LgpS?Z_E z^a+L0O~x0@OQpowcPEp6L+>3m>Vqq8LXg&r`8<6`kX!}wtq$DUgLLkEk9Y}WRp4C# zWyueOn{JRQ0z+%j@xZ~xRK2NDGj1upxAo05ALOI*)MS)b4i=EV44E2q*kb#CLN_KpbYOG>%t1yvKGQnC*tn$JTy4D@i0$5g z0_QsnDY)`q#m9OXs*9z> z)KOv;b^$>vwc6JJocxJ4XXetWdAhu2SAy?gT#i1OB#^cqu}P9#lyFTK{rUQL@r@g=_xciLKFY@Io5XONuCC6c?Q{k;&fi4D+_y07Ri$Nvjx zha1QGtTBHv;{l8O>QWP(u-kL!14z6J1!YBloNt%QnGvBo^rM z1^=z`e*u`CA9>{M1G2P+zhI~0-tj&LRf^)aJ^5zDdV?#$l+ANmY%LEkcg>dKzEaTC zZ#X-3l6mJXf5AS3K&e|dKPk;I*x{#Pxh!?|mO{h=DA)2chV4yrLU+;Dk=@NW~Zk7)XM6S65n-y3|9Ec2)^|}?w z1FIPzOi|#*G-#pywyJDlsxYeyl+Am?%pXGXJRN*H=CV~Z|M^Rb z9zRR11C!KV460)Dl*Hj|z&Ut4x5T8RCecK?hCU4KQV{Gg3V?)x+fWNRm(E(D<&_6G zr6;N@ZFKIsnNFUbP0S8_z#&hoA)9*5CIsM&)^EzT6$X@9xS9pWESXO?(W=K$ss}fz zUr9|53QbZDN0|-ow!JF?hVHWiPK?Dg%*Lkn^v4F{yZ5Ch4XCx{ev}6w_#tE0 zhqx5os4Fy@85;$s6-2dS!*MbF?&wEVjLus0V+Xb&{Q8?8ZmI~3C!DvPiaEH?L$ICc zhd;Fy{~`seie#uN|H;h^CETM>vqHMUF9Se|aks(athikNQ${m&G@*!l0XVdnEP&x85g z?wdTMKX~aO2rHVt5VV8|dgKIuuHB#}5m8r-$S70<=k!L%2Dw!xT>20o=B? zN{tm$0ToskwPW1`x@jS*)t*(-K*OO6eY5cVMxkvyKY-1bX`VRdN*30ZCb^9Ex&jvg zac9mBle>(K|4?s%7}eN{6*jCrb(q~D=h%}a`ozp3K0zM7W)Zpa%yJ7Z70=emJ);-e zfVrqOufp@7hE)9hWeWq|5&EoF2vl{1G(Bc0Tlb$`9=BwBxJdvy%rKy%E%r~X{03A; z(f)>ss~@7DNe@Qu<_c2E)*@J?Xzyl#BAJ@k1^m z@V@o5=f-J=Pbu9Wo6rMlU)-h}0L4l{zxx&=_254T*UR#gfd(EBf@L2uBqa~eN2l@abMYYIep8n} z*z=s7nqwTpetX*$74+Bgv^7eal)1v*qwh#>fvC;i%WdOQ3DD*?cL1Fkz3XpF)l3C^^(NV5J3qoJE@kc;7r97T( zte~TvX2fHNk$W9Z#$0`<=N}~X3as4_|InKYEYFFIaRp*5Fd^be?~uEqX9mP_|3FYG zOvD?syQWXo^*09z$ zvIYvQIbJIPW;=vAkRZP%V-Il(COvdL-btZs!RlX7AIr^%U%6RKSq3b%tV>!l5|fpJ zb!cX>B5VVZ431-`kHxsO{=VE>&rA(%-F?6h^MS#vN%AlR?Qw=XFbf^TD%||`Z$(9< zfn|^7Gow1YUZ>EBeIN%djk$MDR>F(d|K2|c`aJo>nP_s<7WfHyM=5O**6B|)-!3?8 z#Ei%k0)BkA{Lo(ixf!txC-pd*|AU!K4ENRSl=CnOkfp9c(xttUQ7|zmVKfxKQXGCn!d$ zMt>+Ac@|3&02TY@XW3gP3PAGYcOlOm(GS`pi^KVbU$e96@q9DNs(NT3ZVDu?Q3Z+G zd10xC0z_p!xw>v}xGcl!=Z|%q0ajO4##GErI&_^I1G>c>J4p;jR}?Bo7i%V>2SKi* z$bx3nLgwE9f$Fl#3#uNvr)Q5=+ci|VfZ5x+YIX=ag;M)w0zjP{K87#J!t#RDQcOi1 zEm*WyDrcP6+ZnQ2h^US2$LpI-Ww%Edn*(H<_cOxRgGQUa`A>~0F_Xl0md)~jQ@J4# zSyjjQe3m@^2-2ifrIK)m!AJif>2ykzi3g!Hagg2s=rTcX0ur^t(721;TD0&o$v(~C zK6);t56uEZnAb@dxiM78SMt!m^uV_oAYfN$1q$*EtlQ~d+By&+EH3zLt7m!x4TId2rYoY@Z)Db4NVr&<3dN?X&3ut?9h;cI^y=`s1u zmW|T46$NFKVAU^AJ%I)ltLp1vOuoiQcwHZ3<0|~4yCMCsB$$}Lrbvb_UMiZ=8kzwck#$ad!XcfbH|_1XWmZn$|Cm1G1k*rDul`kerBZF%g3h#X{s92nEj$ zfRv?c-?UaVX2aJG-S z2fhsAsviY(H7n(z;uXQvjWe7ts!;w){VfGu_cb@R9{lauK5CIdk8ai=NdAG^6~RI6 zr7-aDjpZ|MzXU7F@{U$QKYOmY&-+Lu8{n7wkXgd(&2LDSkrg6t#?!@S{;J9;cXde( z*GFXzT(u13ouWiBYN33(`^@4oi~1AmaeMiPoqyv5?3!mTUn-;U@Ojsr;P>?nvBAg6C-LW?O*GA$7yk=1MeO1tvJpQHi=ZR+r$Nl6O2j8* zXfNT)C|K~t8G6sTsA*k6tp?hK-`m(Cxz0R0$=9Gs%3AP2Mo_h2ZPtHw(wC6)^r~x>)lL;YdnHd2ULo>VG!W4%PyA@AU=%AZ=m&A4Mt!^cR0iYT z?1HU{+gcoY64Vazvn}zqi@ca!IX=6v=dP2B96o(A&R_w>NVEL5hHV?w4nEJ=;i_H& z)Nq?*(|Pt*LHxS;Zb7(XZdd)?F7_<#&ky zG!S!J0svm)y2WLK;R=L%@M&H`@yKm?HaG?Aj3m0M6n~HAWr?m)t2^DbNxzOZB28^4 z+zqRCDm(8MFknW*y(_xv8Jq_w)}ixTqgi77yCA^rE33~nKFmYxY4(G5c{(ue_KrUR zCuv*Xb?-I08DEu11aX!wW5K(}X7h5<4c?UiYU}qHGa#BaCczGxf;hKD{4qfZj+F5N z6kXKpnNS1R7XRb1=;6OwTetK`4xKp*wtFnpa*OK}dAoIjWt$IIzHDU3ED42!j~hkf zNV)&*u%liNK%0sZgDB7zW7afKFY=%${gb`qH&gyad5+!9V&Z!)eQiw*kHHsQP~uI%DL+gGMvHW zW#z#Mm}RiBIWQy!6Qv=kK#kk(n)t(&R(ET+ypyf9y!HG_b8#K z9egzU1h7*_0RlUnukl%BPm^5#4#WT^Cq?6P8m_J{e8H=hZlG)YNWDqhu&P(+t;bfxA@R${p zE&_H~{ivj84%rCv6L+1;gqgmT`eBr-67%bn!L}kHNa}wcLO%%j69t97qdV)zgrL($ z8!@x4S{p-9;~(B5KUOW7#5s}~dwGg?5P5eoQ^!S5ovkxBeUfH=HFJ-j%w-~~vAbk} z=XbmCwXfcj?)|L1>N|!XviU>|S?06cf1yEJd{w!>>dDKXFw8(1j)3bJL?qBTnm1z^zB_*@u*g}wI{_V~wV+HbCBNEA%R4edqr-YWODf_2*7G*J^4l?dKxZAl!frknHQ9cE3< z_g6N_uMyTD+2}HBg~6%EV_NBaIWFX>^BSGh#@$`DxIl)6?M;``jMnFrLO~XL0zkOV zBFsG@GFPmQCNqI{s;iTN@Q;&&V~afTBTQ&C6ZtS-oP>q{5@DmE&vc0I$+DK`0sMpf z3w~(1KW0wCt;ERpUqjK1GQSEpwJE~l9S&VMYC||C^IGXD7c(+mVtFQmK;{kDJ_GwU zl7AV^$UUBS{kUlcz2OO|O95K3q)_RsHWF_PHw_vqBNb$5TCfJhoO5=7L)+k7?u@j0 z+RR$xf~K-?%OO3R`?c4WLH)}ZSwcM1C`{18e+LY|yG0%qG`n5Ug?kC)O&L8etF2Kk z&n_HAwCxjdQtl;Rnuy$i3+V85YWPg$?Bh&XE|Y7HsyD)AsC22b@k5b5(~0!UBO}c2 z0_*YHP|RHZh%(Ps*7bTr2D%c~bX%sF0H`)tzlGfzS*U;PmVyg%M0KuJ@hjaoO8CLTLjB@RB~RxP zxQ8}^0;nOS)3w!XltByDGg#R^w}U|llNpkRv89R)OSCJ&I$t5H$0fL8G*|0p5-75S zO)Fo3-XaYs|MF#IZ%YAP@lGCt$f0-~WTwq*$*{%fniij+#A%0M-Q8i)G+@ZzKE~f1 zPxT8v&Pc^V)<}!&2AW?znRbWtU*cqkpAjj5G3n%AFm_Y}Zgr8-LEl=527idt-*amq44P>it*@kP%RA4QiiXTb2F$T$BRrWib@Fof{Nw>s{iVpHHF_A;R? zJg@h*Y`7Smsu>E zZsBOnNku)Pz=jo}tWL*yLq)g9wilZ1%*Ng;48f-i2j})RfpOqcc0*M4QX^p$AhFpIVf+4k- z-o3pIIqq~>4Rgy_2=c#@8x~8+8px??0g~YZ+*!z~j!O^$Av9oGxM5!}HIk9~EY->V z&_d_Q$QB)^jsQxNaLs}1Y?C07>6CN_uxO{bYAXt|OH5%r;;#JPIMqIcLJ;Nt9GC2{ zFDI@=$h?@5hmi*4XK*&Z-lO_%?!sQAIWPkdK~Q))b8gz4Z-RWR)UECC|4zKeuM((w zR$xl>K#N!^CiF#|kqW2*8jw3^n{{EYfh(*^ZjzW{|INF*B((CjJ5`6U?br^|h+z!u zEpat5HY(bwt+_c_fr1!`c95&rD>OMJ5JQrbeK-7y`l7U zv+;YB0z>`by1?;JPbC*%#^u>CMgO(l?59kE`$RF@aef(l$ZMFUwRiK4ZuFHG3+mR8 z$E#R@8LaE!W?5@LeV5#qj(o$e#qlc7c1nu*-S)r zweG=(MNsIR!I}~EUSH&~l>{fpVam@b^EaI+1wvZw?+Qv*v z^F~6bD0c|i7Mc=IKi%yzLr_jmxI-YEiC2RuJ4xIiXUek~10@kIpfYJL-xgx4L09w1 zjFNM-+N`(Bc8hTtC@cx*58(`7y2j1SAY$O?VGVe%P0jH}s#H{IcyQne-~J{;6_g^{KA1+Fnu1|<_c8fIri@Ti@sH^+(P@nRzyy|o zK6BDsRYoSpuu@j~e#6&I%lBVG%jKY~j~@byX{AAUIk3yZONgyTC6H{>zYG|iE|1EB zz7km!k)|D2vRMCCi;sO4bBR?a07;;{$yy3wE)tuiwb1-y0?wZcQsBN8M;n7{1*&piRLj&zs#zVYa;qTgD_DQP~KlbF<@h-x!~z6gMC12oR7hMGXVx z3+-$?bCZl}eS7BHaq(%QT}BTd1_B*gh@f7@HvC+bCKqH0r_;(cti{!ZVO$kaO}c#` zp^K-IV>!;(6_==Ib6kQleXpv~Yj@L`NLrk2F|mW`n04qWIl6PHa`iuJg{VU#>k{PzUjL^^9AfMuoe#vkGFs#X*XLj z@?+?u1|gLvnfXFg%Wh^^J*=i)wGy_hCIPTP;u=y`oiT3uNCi?g!vcxpY) zYc{%jmHMUTxj}4}@VMR#sVf%D7wRuaM7iIITOuj$IixpY9})ipg?NJ5(1*%WX`St< zNa^bQg?~0isEdBkF699lv(T(cmEzn@T{Athx6qP{tKfLU!;dTXKnKcZ1FP}JWaQxT zkti8O>qZC6m?G^(GtYp7-k?(+xYH?~^Ya{u)?lDI54Yt2z{o&BaQ zV<}~^noe@XL<$e<1?yLv=b49j01Lgp0E733^djnVUDc~CMc3~t)Mh`EEkiTv@;LgB zfo|=a4CZ|`RZ^zK7?>l*$8W68?pizE`+ldje1jSN*+W2C@E3;_ZkR@v*J_ zkh%k_+T+sKd+Zi;cp4>ctvfy0EK0bZ>l)r|BL$qCf^xJc&v?+OPDM6L;4`@W$k2bw zLod3)92~~r$EzqdZKfZ7-CBe)kgo|ZO`pQN_D+A2U1GR{whwr2Ue?~dTFqntgTRc5 zY{yJdW)m&xqhWIoFz^>u!@2Wx52#&D5Z5X)Y@E&S+q%(tapvNco7xI@=9oj5-$YR*4J3KSE@ zfd-ppoAnOOXO{B*EcoNlz2qptYfMJKNM>0y!VDBd;+}r01jNPh!Ax`bu#1iQ#FSzX zp1+39?tn9&?&>V;2^&+|w~ z3I5p~axnlTxwG>Bd)y9jcZeuM-=jVZ@!vWPb+`<{?!=bRYs*XIVFUp{CB%e4c~d`N zQCJt1T*UV0K=^3)eqTq-GKOyBNUmG@yiHf*pMZNREh9`~k3UJje>saJ<1rRdRE}#) zCK)`^QPu$V|)v49|SM zwo`ViEcO98c|NV6Z4CJd+uYcqQ3U@(%ky(Rl~<11hM7NjL4H95((Bxn#JsZ7?jI8R z9t_FU1}^R|o7w)2Tal^Qc|^lXgb^2)m*xEW3K02y8hA5i+o=LNg*V99rfVk>M#zOl zU~Gh!@=LYk56$yTI_*_}`VjERwh*tFAAO1}$>$}B*ReH0_X`=u#;H$c!9)t2Hf|L< zr9%$vh3T$i9UmbQUa7&RZTR_i#WeeWppv4G2@jIDZLEKbE+N9T+Kj-yyEVVKS#-=; zb6Xv0zS{VN9;rmCG|RNGG{CjXr&YNURTCkN+B`fzJV3rQ%OdVkCjSoCs^bc8ov=f} z-5sG#7dgS7Dn-y+=3O8kal3MgnuLzGqFp!z>UqVZvl%bz*J0(I6x#4MhicwdQ+EZh zV*EaGnP;u&tGaK9n^PXyJBP(qtRQMYBGFyMgV z))V4GOL2XZz~y^S0)WgSfp*M#x_CFHrg>QF(2FpV=5xj^+Rn+3Sig!RgW9~$R{G^| zN9watbFk?mp9UK10;E}{%sW6hr~>1ZYpZ|(q6ehi6g72^Rf%Ld=xDxxt!?_ad~DN> ziKUFC-xAWnlkZy^D$(ADe^wjJ64jvz39>@#k3sw1kDVt5h6W+pn4VNt**vNGqRzUP z*ok!XG0pf2;%$KSt%CYyn`cluNwJyhiiKV>1(jr?+J`h+)eq~YmNAb`X|p$HtolXT z^K2ZFT8V;Rw1Qhe6x|5IyFSE10h{Qm-{-rFg=i!|RL-qf%(EQ*`OXkPx6~FD*0LJ> z^64EvzdQ&n6h@VSJJDT+2T%JbMeitKASry3Txi+dFt%T^g&%4Xj?oDn7;}m*U%PE) zTxtiKxv7n9{hN74Dd3wU=Zp0=!{yK^-wYQA0NULr z4j*uzATjV?-hpoAPD>(Q66m3(>j1_ z9ycu3V8ksl+xx-k=$xj5|EcH{4QyMM|H$XACp7q=Snko3gpB(y3DdDcJ{jcw-bKHMPYQr;zI^CSE>XiE!TU zBx9t|ipl2&{plXFFfDtaMI*kQYH>kr5Y9)iwd`c+m)TcO5HC#u+qVw?$V-xGY4-l- z48N?4=wzo*Z$4OeUddhv({C1=qE61NnFYM7*F_l|vS>!8pg7vb?53kuJSryu5K%Th z7-4YoZU(YgOulcQiQe48j99dGoqL3G_AoY^pezN7EXP%OfTYXfJ7o(_rEnI)Z?ssQ z=EJ6~v&qKj_tC@`UY?sLkaN&z?JC0RgQR~ZSl49FHoYqMKrhj<{XmIN#>pwD<~S~@ zcuhqmn_{9?+kg60VS-n_xY(LkK&P?ypSG7pbO5{FxH7(kwMdph29gPYMib(ZXvSlc zPyTXA6&Y@*l^*d0%-Vw*Ytxyoekyj$5H+!|MURjiHPD$UKl)LFYknk!P496+4m}>D z9R3SeN>6)*P3`MM0fvtb7=wO_fS_x{OPo>+Roj>>D=gX$!O&sFBZdf*pNR1QwiH$1 zTqE6}9z*TBPzQ`mc_i#n`npRyiz?OtcYG2Aew>Oxh_!wU%jeL@$Y|A(_#PmIwkcVdrVlzl7-6Fdl# znkA7~S7IVrXGw2L{^y?3%C6kX(0MeUx)Rwe5+24L&8~|8HBnYor7LmNt+vuy$!Z$M zK%ZBe@P&Au@ttC5B?(;slq$s7MTLvjX=A?W-!2gMDu3$}{9_o+*yyx|_1v{UI{@`~ zEM?3yiOUF*i+Z2Xd5S);*W=mu=K_KuOHm7fm`P;B*5>qKmHqZx4pP9N-3$ZjmTOVc zG)8O+6WszhufvYOLxrkqe9zBUo8Wt%7qclj{n&da|0NNY9p{2OW#@HFK6dKeKGcsu zqx@B3r|6ipNo;{aQfYQ0Sa6*Ti5P{RYevT1*r`YrSF_VRF+%eW&u^Y&#E!qy<`gvH z0mwWf@eDel&1wWEa`@|e+UR^><;Zp6yNCay{6a{&2_K^6QL-rw5`d)qk|Vc%B5=r8 zq&s+UeF&qThXT8vLc1HnOVGS`n&cN@m>k{6V_PiWJxH_VIE|@3E;+tl|3n`dpzkLL z%ydnsyxMXiSOf5K`&b%k3#MR%TXjOU;N(ma%^|`Fb!(1?6zUTvlyD0bt;aE12oZIU z%Ns4VRsf#dyOW>*vcjkui@R^~PoZhGZ`IW3(62%Ted9^IyGhliNW)x?4;+Gfh@&oS zx+@{Mgo4Fl-D{cNn|nqIFxhqQmSh0y&jYb5tg;)T5qdJGoa);8MQ11T!=$^@ZG6<;Bf`KcO22C{?KN5I^r)>YAvEQawQCs&Zf7b zer^j8nU&Q)@T0q?NXd`}l2^aNtj3(VBD$h+o`d<;&u>r=2ordJ=mR5q(4aWg)7pxu zdE)M3_K_5dI4Y0o?jA8K{;5yZS{%6=j6?)6=%tCJLObrELWkxok5Ql)!TtKI_Ha zoa6@Y*Mj$-6EL`@%&1!lFp&pKEC}?^c~&!^Z++S=X?10AJ}}~9IelX^k=C3dmnK;J z9m+t%aBCYgk~0%Gt-%u^gV-N5IO)t@-fUQWpv$RJ?o?)R9=T7KJr`)uEvLXr+P*xz z+2{-?Tsnob608D()#PLxneoO@ZL*_+h65KGY{Jw|Cd-AiM14M#7j#O$F+_YNkf(j^ zjY~-KZ6KtGh?QJe0`=7aI?m>&mxe^k0PVobrd`02wRZJjyZWZe=~@@Z%YiX5!Bd`g ztp0;pL7*p(Ivo@$*!IP0Gy>B$=f8L<|7?Bc-j9!qphf$)<@3`ysd@WHx;8qoQh{@hy24MPyv zD+7wgFZRd`aq_s+sJwT^3IQ)a^--{VRundI#%(V}{`6*#p;98L6HyL;BajIEN9Z%+ zZz@%Q32z3>iI>9)=9)1;p|$~3`S9&IoQ-Lz5o?9hZyWHu?rKLRyig*Z;&M5BOMFcC zlQ*PL7*O!?p6@uA9d-T!I|#+&z$YSp3+QN8P1JSiv!QBv2sh;)@57 z!JB^Y+eu#~zM4RlIk&QBkw;n<9v6?;4lHFj3y2K2@45HHdBFh0ovKYtd-u;u+x*5l zx+b^icbANBP1$STrPWE4Kpmr`#z}C!iVu0h&D;^T5Fdg$4Uo~rpp^334pHL!{-FRZ zcWd`%Y=d@jd8-pr^PU#$7}fu;HmjXyt}4eq$qzWYfA$a=A>J|X{%L-nX!6=dyhVp35IiCLAYWa!{1aOj_yQx#|hHL zWmQ~@R#RgLix$ZlN^~69+4annTt_v4@9%4s_4;o5slSja|6Q?=XN?=r@#=(esnL*+ z{)>V2$}ipD4=XRRMjg2gsqM*VAgOI<@4!oLhLw-r&>P)!VwYj}%`m+g^R1wZ{-=(X zUem=qd3CH@`MI<5!Alp!6h~Ap=AE0jxRw<`+=Z{+17CE?h+{RBXGDmKpPCeP9vDkv zueJQ=5T1$D?3;U>o(mu%Be^X5lXV5Urng;3>GVRdSt&Y|VR)R$B@uf6$XW5y1cQ8B!;0iW2okC)Fkn{&818B(AaZva{D z<0}q`k4y$B>#f)6HSaGzcb8HJ)8AT2$XC|a+5^Mx~H#H;r zzH@p!rx1D|aWa;QE!nML61!w*M-@(RZo3~C9WSv!&E37iduAVmDnf16n~-E^i_*Sb z0k^NiIj1a1a1{5@ioUaFvITYvut;gYNAn4eH4l9*Tqdxii*l)(w;Nxf6hN(hy_!W3 zuLu{?eFx}almFOoj7_?9yS`{%gSdf{bKy^YBj4yZ3M-`>f=)Fyr<=XhOrLw9LcJ{S&-Caiqhoq+Oh- zK@6oX`0kR#t@}=^v2BkTgrHtzG?IIf zCjz7A=AS;yF2Ztz*7MS3x%n@DPvh1VR=WF&O#fy+SBM^iAa91{JdeA3(1I$Qvg&X5 zYPoD+f6K|`q9^~aGA+EvW%I7nT&_XXnF~Q|!Wp9bNCm|MCDQL%55C{C64-t#5PfRC zV!n2u?g26*3dgiikVX0fdTHR|80aONzX z3UElQ=-DI(w7R$+S=I3F5x}<}E&iU1CbukrqMriSO9fmiCNl{i*!)F-i+MgxLOp?KF3~+6XwKE&*Fmz9Ms}pQD+Cuvt(#I8aY# znb^g8*wSRUHWj)^11FvFa2wy&V=9CCJi57_6Orc2bH%gY=x-ETgBeqUg9&(tj=M!y zUz1P1h2wrhkciE7Y_xilS?Ov|>~JqhWkv2JbAGkK1}a-}LKr-I@0pLzKe;VbFp5C6 zM7IBTP1v~z-IrG*R!8qZkvVca)jll-+!tIk|y(eLrpEK@e|jBD{z<9Q%#- z6D85gS2@$NWl2{n<=0;g0@2CRatyCC&D(fDyN1W|-FG;Ps0%*OeT_!X7~tPNEwR<< z0xe8+Zm^(rbxI2eLI@Rjc@Oz)|Fd7pR+d=CS;hfPfvCUSRiZf_v_@mm|1YozQ{5Td ziv$ZOkF-6mP*Wjov@oX%KVaK_x1bqie1?2e+n5eSzRhl2x?kpil2L3N>zKR=Rz-!P z14b1Tl;5B35&4rE8YKXnLL#BP3ge%| zWxJV}EPBTS@i2*a*^1sWTnnqoSfi!p#)LNse#IcDRYFofg-kHg;|Z7YyN`S7VqvgIK0QeMSy)RHDE>2UjMerk9vu)7spO^aYq{WgXW+F2MUWVQ8h0LDWM;`6I^=* z)s&bL{Bk`#wHKv_gR5SsmG}qc44r2oZUR z@q2(FFBPaA(r;SUjGpCp>KisD%jrB5liH!{$83K|)5R4gkv;Pk#VC|w6k^6;Q0K9zRi8tkfAtHF;! zI((DrQG{!_?`Mg0>&36nWD=y5V>-<(?8XTx>xG6|^yG=XhPJuV!+6@tN9RYn4-nEN zFdVLqyJ6I5X0A)kPoS>+yPfDGrQBaogHTE&#ZCX>u0`aLeK`9+ysLhn7zSVY8L2d- zPNL65d~hRi^z>S#4?i&JP^!+)YzZ{UEWSrcU0$}>4;LdqsxHIWX#XS2E)bwa;6)ct z{KZFd2x$}4MhA^WJvZe{jHHK0u|PD>YIdkY+eM14zXHa;DBgbbA%qr}Pw5jC0vn0( zBH3lEyH*n4&4H-s#!xR&5|G*x%isOhQ43(ZXlh|(=%A;ybZ4yfAuGr<;snzFm{Lg& zS7s09;Txg^isgAYp0H7ErJsa@8H~hr*08yMAIQdVU3@b6%>#!4-{?8FTi-iS6XD5F=#zhlgCJRzjL&t6hTJh~kr6 z$oX|NPKn~p57o=3RVkhhL6-YKmhLV$xrap$FJh>Erj+d}TJ9Oi!ps^H>W^Q9eD+&1 zmthgF>=GFRYS#%4E82g2_v1Y~E(M6j9sn>GfrNM6TR`o)dca}5LtbDkiu!y@FJbJg z%ODW!s&my41TKhN7$^>AZ1^h8(ueU42)(=LjLR=0`R{1)c#XZq+$A^&)QuJ+PuMwe zp6}L*xG9;%12LOCD$S>AJcepwg;N^Pw#$*o@cg*shv*hXD_=wi+KEZIz}7BltZeU4 znUJ66+ZJ^%qBdL)MX9`^ztxc={o}OK-7|%6nLb33Vj}EE*M%TaSk`LCl2y{I<|A63 zrV<88$H+4dW!xNpu9D>w6HA75$%<1Yvv`X;bydVS@9;VX#(wKvl3e9r(W0^1OrA2} zhEmdiQhvLppDxLMRZt)qJ?PMa)=!-q7L5VHGlDU)s@8bQKsD{Ju?`cB^)H#z=rMSt zSR2URYv2tetKlUjwxNPgrDkqI!m~Q4iiVqfU^+UTiD*Ejkxmbh(Bo?BrAOI*4YeOC zUem?qf;2j9YLTQMSYtQTA4-U0QBRCBAzDk+v4k{Ahz@Nb9X{v}V&XLC9fOhqngBTu za&T9S(aCyJ=wJT;@&X!h7sY%@Qn1`n1O-G0wYpCmX?mtRHpb(!1%Po~qFQK^w%E4^ zWgRykG;6-UsLqOC-dHEB>OS646EfB8M)X$wA4zK5TC3cO`nE@-F%*w&ZpXjd`03|N zP2R=gb2^r52px%}*{<@0XTLcayoR=j;>-NaskA_E9ez(d77Xsn;w>Y4v6335+1ohH zLZ*pPqSS7VBa+7zB%4a;AJoki$9N=75FT|1u+Q~4Lak$lHk>V`*PC`V!L z#z}XALr{FsK@Pl#hg`)NZ&uKxjP#rw2FNFJdvu1CV0$G6^2O57%xZea0ihZCHZhAp z!2Yb}5zRrQ;9ud0D-a(8+poSHXugigQ%=C2fx#_>6GSE)ASkl7!u7lrIXQYfrHV&Z z!+ya)1fv~P5W6%WH%JevafDwpy+Xd(0v>t+gk#HSyK=-_7vL1s7kfg`?Jm?%V+d2OfE<48}E&M zTQOA@10H48#i2nL;#3EkvI@Dvk5rHYh>{ zV%)zCU~{M7lv>Q2d<^c|0iqq)l_vOlvQb{k1VN6~w8VR(dc{`7za z>9ynvb3M42;7*860Vd1tx~)%?0=-VoP9D6csd=i!x8vWeY=S3kVP()R?ZM4HAn(5Q z)$f?Ap?W^n!Qwj5^M%)-pXwzx@pqhkdNMMZgpKzKpCqWwjvHjyx@`H?5CwvCDJ*Z6 z)urgrF@4Wv$<>|6$2&q(fb5^pphs!T*udlTMFCxn$TTn4c1xTPVrdQQ2M8hAgk35r z37vG}YnE4tG>usH9*61GZx^+=od1q!GO7)x;?wUuUYr?YejZc;-v{OxhpRLL=gEdP z8e@Jg4CB4eYaS8{|`nYr4JRBq74b*KIQQ)=VOXQLp7ToF@ zh?UoP74`EX{c0NUdXUoFlTwa%3ui%3%^0| zjy(P-W2XatnK!lh-2@^1#-=5ap|9^FuXd`>z6BT?%9c>wE&~I2ZJFeN0JIuf;e2tm zV^qDV3E2t831>XNU65hCdDf$)58moERFiI1A+oV$H)&}x1*mPC)pzn0pe^1+919nD zAm&2yGBw(g)yc#tv*rcvD1oJYsM_nJ3~tdqb!B? zvlL5%@_&|hA}{!q0(AYN>ybcP_lD|W%PfmN)VRP;XTZie77K<|r1{*$oauM}3MLjrGEu5MLNXuT^ z&+`j+u#o?r7}MNu~-tt8DY0q0B8;SOEi()t5 zI|OYba_{Udb0z9awl#;Pv_88Bkiz7d_W~xp9$bRIqTg9#u819{SZ#Pp9X?(Ab9K7g zus4kcDbBBdmhvh(Y4Lhq56y&7|DR7e#L+$z=d*OP<=7oDY9iggh4kb zR9cW#@Iy44t%d8Ov3?G@uoFYN+IDUo%uKDl+^OmR&xV(gYSAvvenSNS3^QBg73okd z2;cn2uv(+>FRq}=PYH^MgT(*zUVx9F1S<#h*R|y8*VXYO8b0w(^Q4D%Z7$bELZ6di z^o7``vrJIgZ+&dn1R@}WoN@gXPd7C}nAgN>lLTpDx6kxiF1_~AX2>eE;#r)DD-%i3 zD!00qhtcah?^sq6BYu<94nxJKaOd9Yw|PR8XGadJ0XlyHqy<55VN0P1Me(mX)o)tH6fi)jEwNL zb@aYKnhRsvR}h3d-5J&1aRY>5IdKf2_5;Fs7bK7~Iv(HYzDeHs;E`q^sNjz-?L$!@ z$go=5olnkiS~iN2Agl(qZkIsEVo?_)5Ee;-CB>J}fq^|yb5Xo4-&>IU?T};rrQRhr z6|d@1KbJcVUDeCuoB*RSPu@m3VKDt8{K*Jrlga2R#xg*^{(a9g1#N1Y^|AqA1F}v- z%$+B;Aw#a8W3bG-Q|JQhTk+l}vMS7c8f?|dcEqN$ zbc_4)pw^oLD2mNpkR6?ftlPej0<^(RyX0@GLgYU810)7mRPh+GOZ#z~tU{OWOJIl* zQz%r{;BD8Qv0kj9)rn50L{=1=z1g>2+tiEjG*i-z$@qizdGsTq^RbS58bny8KRs__e|EGkN zCV>a!lLicOml6}>>IPKr!a$IgIkUfN5EYcPVZ(}P#e;> z7H4nc5wOcc)sd?@gi;ig^I5-z`0N~;VfSTC-wLru=CGii^RG2+z` zRT<=O2m-%T#hEC#4rOSex3&dSwibr`RgS6@v(h07OVYm1@Fy;uHnohy-yeC83`bM5 zq%Pfa*JNmMt2F<^V$hTq6uar6btWr8y+--}iJyN}nnQkNY_$da3SJ&jOpLejzkJ_U z&hsWbKOTfNu*<$?#?{rfT(#BDv=phxKOA8q7aU5cgBSCaFTCJpFlZ}`oFw$>P`IwC zv`L*I%#D0F;MOdQRSIn!W}3Iu2%lI=sm|-`d-rodJMoQD!AxOK?|($*vV>s{17`yG zCFIEt-dfl%TE7nta*o7G&O??*jXjQ32OyeIhD&?HyGQOH{bchs8RZ5K&84NPZ!qFv z7J;UonY3bQ&AJpvQ+D|d97J$c2KB{KpwCkX3Zkm-W2RdFoEstV4ONsM=9~1e-1Tc& zw#+%ObOP?1r-K0My|ixW!@Rd(TIj7n2cK4?0A4*09&&Eyf+61y8xlx)Ny^^i!)vhqTZl)%}He8v8QdC>ZE?Ci1W%`+M+3<2Q%6hDN?2T8J8EQ&|`TYZ@{r778nkUJg^d!9c+7!+DFQ%x zUy8vMOFx>0(anuuULUWVw0NLa1l;2^&Rypoyy0|VLDJ#e!JFF3$gGvEa1&)eRqHds>sUkzo!LNVCS`rBNr6A?x zBkyO%p+I@u<<}GJST7{6c#~=+VF)NV|K^w~iW1F*gXiBueu|!3z5@niWispCSmdS) zqk>a+hWK=&oR+-@nf}f*C6mWM#Li07S}8W3Cs>VXG~<2$q7_$=c2(Cs`ZJ07!DvqX z?r&)qrrH#zU>oAk4?Ph6=(ZIw<>7)}ixA(tQ0bplN1cc;O)#6MnC;j}g>7@wLAUY( zeU3CrW4j;&ryFeCI27uAXhOd4Eerd)OQctbg0;$wM{DZ1^;lNj|I^H}`9_Y}sxK>Z zCWoxisZmah{ho;O3C|Q0ePr;K(qf=eM7qbYsS;*{lCHG&E5J%(_3i$;M(-NpA4M`{ z)wd$p&jfNV(QD{1_UlCy+jI$hX-4V-b?lS&k8?1eXqe8QbYAVdVS|K*gXfbWO? zD$t~@-v+f|aCsWCNNG60v*LjyDX0Z8qD%{6c+N+H$C_qcuga$A%pN1DmB!*nHjb$a zym?Fog0-ZAo80ZV)8)ZDCipVA;SJGbrg{GJ+|7h~A6JaG?7sZhOzw7BYdya-agt|1 z!U*=S#$xn)Ps_%B-@xN{;X!93bW9o;52&DVRnw6X; zeVm*BDwA6yEXEHF(kF1OF1gHerlRuPf7?tCEfDr`$f2SHGq+I}7HZXShR}$e2R#)Q z)l}pFpNzQe&V@hdCTQt_y$v8s(m(o2o}zjg;*;+n*o6F8Y8SBU^I7Bn(n#+^2e8pt ztA~-*NsqBkaPkegHmc*Zsy%Av|0hf|dIa^Bj0mTfjyKDKrr6WWV@SiyCxiRM3^QvJ z-;K72Tyb%4Lss%+$+C&#D-slckR9}7wzu5DX)pr~{e(8+c6Kzdsmc3x=7@pe?u~Tq zH79cgjOD_Ug49>Tx_>@DN}Vy!99(VWx~L)KvxNT`l^LEgk4rR|+yGoVkW(r@j>A``d)`3t({_+(Y$FStjHakR>i0NU0@*M5GB46{|mYTBJ6dIIuu4E7c^}CP@hHmFQS#yLzEW+m=NBTBTS2jn(Da~ zR(46(=`L$=F~@-x*vVtY1hV_>1yZvRdNaG8spIe~dv5D`NEi?!o)5tQ?PiQu3eR~pGr(EBD5o5OAFbz)sCjKCVg=q$mgmlnQ#quU{sci+~ z5b-}iBex6`paCUHp^+HR+ES(a`Z42qaw*>k;acxwQb%p0PPb&Lg3!^8t0wuf&FlM< zp6*qghJjU^_E1$>nviq=^P>diFj8UGKip?{XC$c9SJLc{c)lXw>UaRl@M@mYl z@`BoxxQM^MKxM%|H@?vd-ZL=uq~Klp*b341#6gco*R#XTJzYYk`S?j021erLfh}P+ z|7wuK6x-{=Gn3iAP>D99cTY3CZnBMas@mg*6PCNs}KGaggVR5N|9esbdB6z z9I-_K9d;27jW(DnFJ+hsYFYn*`1#)&R=JYiPAcoyVYwTuZ)(wpg51@)f$6LfJ8e#7 z#8ILJ9_+TpGE}N5LX(_CupwbLYWC0y*c4zfsCyDuHf^K43Tw_&gG0$)3(R;2q2da0 z^*)FVwXE(5`H>tWn@XqzB*9L_gH7IbWK+Rbr<9&a{cMDHwe0}aCQ*!W)iTykBN_m@ z%Zyptoe^FQFn4tas@SsXGvWvFGBeu$4YB%z664mue4x=m$KY0N0t8!+%W?Df8-xF^ zwCDh@way-Yj&f%F>{SS%*r-cElZ}|Bkgwpi{$mus-KWmgo~^4w`jt@z<)@Mz{TcIL zxzaK&pckJ&Wm9Hq)|`^Zq4gp6?IOxnuUyUeaZZ%-100()gwPNc+4!yT* z+GD1%I4sS44j}mMy(QH+5>H^4xy28|4IaT>`Gt%e4?h6r=X1KQ0R3sGAO{)C(cLE< zus|T3zVz@QX9Ens=B~Ade;mrtM3~V?E|LIMdlV6j|5xlKMZT^OVknNADuEZB8gq#a zkpKS@)l~e8x=gksOZpjV> zm71B98daHFq(fMbMiRi%mC{l0Ls2&c7FN0_Jsbj^Vh_64)rTM-%NC_0nm~|B-P>jU7U`#1Z*E( zFg~r1(T>@Jh>OPKQ%_5!al*@oU)!s(TWT{V?Q6qE=$@6fu_X^J0KDM!)3ixo;c2&L z3xS)acAx>Fne z#iXAI{U#)23TzLr*Rs zfKZlWxM@T?-nCrj)MO{>i`z3izpA_%1H5{;0nd}i{Dnv=WZt8tet^VMrlnB^pf>|+ z6O0F)g31Aa4JJWY67ZXy*pCNUoAYD??YGc-l|UQ3;|O?-x4DuOb$|>y=WdUfgZtoj z6O63M1w_#4d~-=%SK2i+L}F*g)X%~8bSK6on_OI* zf1V)CYCX($R%neoPPv&?)kjA;@&60a*})vy_!83;4CzA4W#sJC5(S)?%k_yBbgPX? zD5`Q&!H#%rGxRwlKw2&vsEU0I1d%gTWDoBKS3%Kh!$RL9qEm6)-e(cyc}e?dRqeZU z0^69oTh)nkRRB=9h(YH7QsP-_U^U1vl1AKNYPOyHQf4RXUB|@)Y_(ceJQAS#l*kv? zr*s5mf1|7IA<7W6P4mp}Wx;$J4ZG*Gp0ch#vhwNg3 z$Wyxdxyl4kPrV2mLY5_LDrL%g5T-mESjppg8a=0mQxAQAiW3CDGrN6;`OHT*cZ3 zYF!rDa)pR82g+vCEPV1PlZnWg^KK4I3P#+kE72HxBy`F7*sL`#lv-kY_D+D4sLZC1c$?|H!RuM{%z`&{GLD?H1`$kU ziW+e4CZkR4y!HPb>|CIe#V8$LLq=2XElGdH3B>p>$GxNQ&l>>t!@WTefR>DQWAKom zRu7ry$b6@hJ3OOTvxH!)(?|8J+GA5*aqTnxNqf`xj%}^}T*=ca5vDZI3}RG85IjBN zFI!9E8~Bz;NA<2#Xe=$lT##unGxBF+h_-M!owkL9UT4nqq!WF%U2nD)&pwf9cNYcx zbjuglI9ja+HRqRX+MabiVDa}zbUB?v8y~l*=iO>y2HUEwlMsIi>9zXLY*(dg50b(9 z(B*u*B?zRfUl!24ZOoLOp(QxzYpHnV#`qt(^HaelBR)4e0B}jzO_GN#2U!CroG}{_ z({V6ZqooT($zwc(92@D{75qCu16C{xEW?&u=oY1z!hgkI>13AZRg3rUke-XbG5A#D zt@8OJE`gRl_~Lze-51$&P4?u+A|fv92!j;U<37G1xumJAoYS(LWtt&+PVk2mjf)=1R1Kdi~Epo1lNpV441s_H?K|1k;e_yc@+)nEQ35-2m-PbSEkkwU$o-lmn!To+`F{6QF^ED(li3Z})VOcgc-^_+-_?e5S(*$t zSkwZz;70T`X9y>?&s(-x6TU_15cYKWfdTe=3mZT1mU2Il5H3bgeaV%9Pgb9q+CzYg z*q2Jwb)fDGk?ZnOf4+lH|6*eMygFU8*iMuGj=%Jm!sWqpea{LLfpWkSYv4k%15fq+ z>0ld3xCHkDT*7Qz;V9`abvaZbPVsd+-UN%g>M{!CQ2ELvPo44QR7`6*kA{(*o=yXd z;K`8v%dUl+GPKvA2x}9WPuNcsUAWSvaz~3OfUHsY8YlhcJ&Ni!h-rqO>|{ajc9BE5 zul8wCbC@fSq_|DP(Gcq@V(0H9r5AiXrylTx*RjBfZ-*jIz4vr2N8;yTs*(#hdeSsW z)VL{*O>;JC8VV>5#sgm5l+*WjG*2@n6qT)&N7C`UUF!D z8n(h50MB&{ zVsuDwbQZ_!HJ3RjpadqSbC9;mZfn8ZS!rEYe|;PTT;;?X{szOG=Op6^vC~DY`9hMo z4V}t#7p<&J?#K}rY;kCJ!8|RG+k9ah7>F3q)NMj=c&{@BA;4nmG!FtwX;36E(5&_z zB$5+f3o>cF&z!?;+XHa&KSA8d-O`CeJ8O4#Sgf6an!EDzxG-!lHJ}Ua2nB#ae0W)h zPs{@@Jslhi^}MOcNfW9%qMW2&isT@WUu5G^liRbca@P1PZ4kO!EwntS_#hy1E2@e4 zie$jEQAJ~}Bj##5UI3*P1ZEqG4v-+MX}ySP5@5U`nPmA(Uu zHtv0`GuKqg6SlFxo|Ft~Cr_)Tyc^G9&%rcNI7Hdc*D)hg-GKWfjCFv@2_mLQ zofH1lu6I+pX2%F3I*~MmaoGr9OObZT2#;!#uyKZy1L3JEu|u^3h7bBSBw?CqoVK=H z{ovrm)s>aoEhrwv=k*9$jd;>ybpnng+I3o;7sL+>CqJ7ZuY_4`&Jo zP^n*Ay{hDNkDs$6gEjyOJDVp;0?*<`$tGH}4dU@Tp;&+vsU}bTXq<&wYZ6Cm!tuo$zi8DRP4pTT zv1NxMR4AldGxk(zbRt^5L?COMV*lf$=L)rp+Tc3-*eld>+8}VL>?X-01?ZmLm7`u} zpRNwv!c3yM=Hstlw=&0WI5(%;P^b9<%z;mQT-!Hevs_!af0H8c^2kY1O+=FJ^oPM& z0wj=A8@QRglPZ5UZx+LUwJb7tQl4_|^@l4tSV6@N8#^<*zA+}CSE?ksZsl@3-QncC zt7JQ<3s-$!vFu+f87gQ5-Vs8R&Kg_Xr*cboWcID}tiY&e-DKfQ&ukuUvjT5?aZRRn zv{NInqVcFcx3{I#*Cah$&4ThG%)5uc;(_eVd553IpPR~%AMZHKhFd3HMBkOyg#AJ3 z>2y+MH;xq$?tTnCcYtq@dZ_s^VmjH_i$&L6L=Tf#>}ZF>gP%eaaR7OLgY%lJBiD?j ziY@~@C+*zm>U69!zUxQ+0r z?AvafA}FA_ufVIuV(mC0tpE7PsfXGfYhxUo#|^MW5k+@Tv3SMhDfco z*L$zy_snvxgMX*FA+np;J-6Hpbwl>);(f)kOroD;&YhVcdsMaSquBokhj=zQDEK_e z?z8f^<113?QEsc0+ed@X+dr3=r22(9yw$}~``D080^MY(BGk=PVj_~#f!+*gH{hI% zESv6}u-AS@jO6_V=0+u-68y{BUtU_z27o5&cm@IuxY&VPc_t$y@gry6Q_UAnj<9y!`-z(@ton`sX!0XJOCi3apHB z+lf1YU(0UzHFafd058@0C!fiGCLd|#%cRb{0{t{gRGvOMMH|)EquG;So+9aZE=>Bf zwGxX!pyG|R8P4IZp&lG!(AA#5%5gRRz38U-mt#y*6M%j6asG{7aZKh03*_^H&_n?W zaonNg?3`|+wo{+zf1KqP??B^*NJL-d_gY0nnY8c%Jo7MVmIkmK_m%~${uiGr@UIYp zEMy60Gm$60t{q1G|tJNiKJH4(r@eDY)imxsPXp+v}ismas z8FHyY)GXNiI9SHiWdrMVv`36~ixC3=-;IWv;5RUs_y(>B;)3@lucduU$DK>yS9lsY z%-1woJeis9;_ph3GoPi~i5B1^68y8xcMbw{gmocd*Dp_R@ZQ0FN?ixa7=+V__eWl3 zf^|9P5IbX3{K(Y29Qo@rAHJA_gCj;2s8MXN5ZGnJ%~Y`D^c`USc~4R6tz$3yJ5-7N z&f(PRt>^|jzDh;OCHpQCc>(&4{un6G#oy$oiShcFXMa4h@bmCH2bCMzDEv&wY7Shc zJhy%b39zXvlgk^dQhLgB9HA z4rN(mqOjl=wFGEUkllDAd6c9`@HdE{z;D2J%Qi9FD4cH4I7<8nJvnz{`J1Gbf{rUc zKs}u<^N*bXK{`f~=}RluLZDJjnjGmdV%{r9-Qz;iptexiG z42UVw4?2dyK>x)3q{NwOX3n1c(o@HIe{DxxbIXTK;=stmD*}9>M{9pjgc!^T#YS7$ z+!RyCVCgTTcxR&%C1OWAF0D>b-hlJSLnfPaPn|eO%q-LHP=~Cic_XEIp}JFqXS1B* zQvO^D^@=rK)|)a5jX%QE;BADbI{Eoa+{53cFVdTSb>=t61%nU<0Fg_m4O+?LP5(+4009 zlNa-?)X@wk4PHd-qOoe}<30Uj_4VZWDax}Woo0ewXkZ&41jzrlpQ$~{1Fr|U7bHjrt zYQId(V9UAD^itH*#BVNcEZzOEn7T+9(#|_G_Pn6Ufs7BsdPD3z7>p zEd?=Eg*KDW2^v{kJ+#m%cK44Sf4yn|R*eN7MS2=R%&OjpasjbitGJH1sq|rv zrObpd3&X)8-xniol;6NBOL6Ug!G*p;A!iH(zyN0{n<_^v@(Kk{mE-0)Q&*RnTJPwe z)M%b)%iJpC^#}f|Kg$OT{dxP`pBeJJVt?x#SA{@6a6smA@@zj-#LmcE&#*zk32v#1 z%0yrHHAu=?_N#6G&c7x7I?;1P-&0Y$!e$G-t?YNC2vV%xopo*U_#jBHLwFItvs9Ww zIiyDsX4BnO1$G~ghaIeKi3X2=1DpAyZ+0cG)-z>*Rv%d>?(LrH%28V zBeH3x!ZXF&cjNq$)?`Us4Wd-+C!ulv-h3y@Q#vl4i(jGL4)dw-It6_y|LP32?ZVcs z_SgXMc3$c!KBHFYFzf+7BBji^$+=J7D|jR9s!OCTeBsa42Zmurm=y`)jhWdY$t}ZX zZDhy1%45Mp&2uIB&*knK^Bu+>5$RD{C5!nb^{mIguB<9r1JV*wv1uk7BqZ&;UWio@xoukHzapE#h&>YILsJO8~c3$Le6# z4_CIB@}b<%I7A2SD<8`~(qtaq(uNFK0&i~e#!rr}LFWjXs>=#7BFW)DZAD-quV6j2 zi%K^`KcPKq6j#hKsLB_jIkQ=9o2Pf3%_jN>8xJY;iF(}VSidmI&amJm!sZfGk^#qO z$^k;-P2F_%|BNvpj8?5(7xCVLT^6<4wv3V6za4fKh>yaoCG0jNpig=Iz4dDwXQ?~n>Q2;;*>RXGzLf%(j!D{kA4NZWZ^B9b(;p- zFutE#^OCGi#~Vz57l9A#bhEOHW=+qO0Z3@VKFIgzK$D*Gr{gUogI{gX%}ZeJ!LplO zvuf#FkBEAleX8H=KSQ$Bulug}r2wLNnbj#U3>yDkPKLK}kU8~^^D|52X%8zX9vT+h zw(jha8J~D6g~@Vh!7gVN(jyW0<+O&9{!u$F(wLZqp_9qa2@2L&Vn@$BtGy|K8HK=% z04^g=He~2+v{WMJW5Q<}-^`hPvvqL=U`+8F&7%;A;h8MM*9ykG4RkT>7JR_5FbISi zd(U40UlKo!C%IBpfzf&ApZgKrxG zh0SQbbq7*bPiHiyf4m5SQ3#*dxQc(bngS&!qP;z7zdRVVs1q_M!uWxT2_ziy=QJqN z-)l-qU0F1Ca03l+w&2U%N6^oOH1-OEs^IAI8lH2FHei>QlR>G*&r|(Oz$Iv+EFRV^ zEWTGwx;1RNn(aPINZT00W>HVqX)Vzaf6#ndF14{jXP4{{3pfGllEp9ZzBZv*q{Ca> z6%H(0zU736S&oY*VXm8|Qx&_yZj4axw5S0@9qc~im_S!P=;KSziHrI4jp;~ko;n6V z)lX;H1n%LnC>Aufv0J&&hk12C%LG9s4Hn;2mqo^NT&}y@6rK1N*f;69Oqvi29F@Q} z5w(Lq3nREm^B`SN_WyLl*pS3fNHh{V$ehBAb9AnO%)Zy3u8enL8m{vg_{F-y$;jjOHO% z20QgUiYQu&Iz;|G5-4w2JgPZF`;&EH8oAfrU|0y`R@kYMw0kU|`65xTo$AmZ1ClJ5 zEAa`O2qwX$exiQeijcHCQ6eh6O(K}zD%faBJ0zDr<;nbnGEZWMK8LDV>`SA8F&T&Q zmJwsY->m9BlB5JO z$cs$<-B-%R0IAs;66dC&YYYT=8qTv6G>DOh@nHz~v|?UNu5hJrz2)Lpyuj?6jtL{L zkX-?;g)MLYk5bwzvs%1t;be6R7P|`6A!~ei(~p$bGh$(sPmV_AM+2)JV_$^8G6hD; z!eg5>$|NwSei!6&=xiFO1~>2hP_&)o;#$_G{DNyqH^|48$1Kv5H&Z%@kz~n+ z932~lTLxrP;MXJeiZw^nNR&KZ>c3PY3)reRXE(M+&2a%PC58GX^s` zkG(W+ClxNM-af`c;GAN*-DTWKB17kv*LmaE4N4;}TOknGM_*p01L^!<4hF@pO<>-z zPn`lJ@X1z@>=n2Y(nwr-R`_zwmbf~qklgYa4;gMlfW9D-SRzqb30Ard*wRD)nQ>eI z{A}RK6BO<7pU~XapXlp_WxsQ^Ml?6vO1@3RLvR}|uF#%vlVRGKc-|pak!*iH6mG^G z-ZWD}+ZNho&>}zH5a@HA@k+ivB&}v{E;OTMm6Dta_fO_A_6p})#~etWwI^o$whlH% zRmMziactK8*XNR87MeD>Gn26g)T!;x%rj-0Le<`G_p0`4_`5paE)}URm}wT+@pe8s z7-HU~B3%Ql|R`8h1oUMwfU@H*k4!D%yVk;`;2`aEYJA%G98TFvE}i2GlE zlqg^E`h48_<6%)KGbu{2wl>PQp77F<^!avf8_Kc1WQu@V^Sp{6N8K-9u>JwMnYzoi ze`1Pg7x)%p?Gz4xCU8@qRTGtM3T_<{J33_LIOr#LFju^e#1RsWC$_iYhs9T|8d-Ut zkZ<>gN1TdiT8z4sUx0!_Iilt&Usu}>u-^-mKJMJWD!lWl?#(?Kf~B#nHn7p{Io9Wm zS^t&rkhc6dBsaM`!I}Jf4iE+->-gHSYu8=Mce3krIJ3rFTciy;jmx%76sc&=wY?_> zrlWryOQdFJmbKZiRCkpi5xg!L8k+VS+iIjAHq;K7{WBz`+~BnBrB-d}UUhBv2x7Nz z1BCKbt&~EXji2|OMZyTp(UP@=GkB|zPsWXTeG7GHWH`X&<;wUQ;hLuRUM+1cMqmqU z^zmAM^Lv&XFbIyu`ClyR(EZM5^UjWkzcmz+r@e|2+;X0#cPZsRGY;m0J1Z1`DZ%=e zRm!jq_Xqy6yFSYo|DNlSVDMrl{E~%ySl;MTKjk~Ee5e$6>*P$N$K8kj$!|k_^1=q@ zn_O2bK2wW_t0hQpHghPQNlLqMTwJ&-OsoBE1G8|2i4P#CiZbVQq4g$S*(_Y!5%Wef z(+3qLzv`0i{L<~PC1Twi^Wa8Qi%~!pXXFFLyhx_8$yqU^uPv!xa~$3?x6sQ;cDhF1Q5|VBy(TH*c{f?QVAtFa>gpvL7v~X$;#H0RKM#z};NoT2<8lV3H=mr$mSA<9eYz zlfPZgia$_P-M4a`wx#3=e}ovnFG&NG+zU~P>NtyHT0N#8*Z&UQ0kE6DxPkI^ZmzUk z%o)XSTu{cxF&<$1aS6mIdHFcQP-;3TlIEserl>r_>uZ4($OrF2PgjtXk1qb4sR&>W zorNcJFaDBSvKu_lwbhUJl{AAkx(+|w9*a`gqlwr6*TO?gH$=hWY%H{2Cb;;_ea&rM z2ALs40*ST74XZzOn$s3;E4W*6FyF=Z)}k8u4&;r7KIv;}x_cg(JDC#)eR1#eS>8?B}|i?IRf#ZuQsUsQa|QhBOi_QwzFaH`3t z(2B(wmSO>f&Y%dl4v; zB|Iqhxh#*O!%E-N0)mWh=YOg-D~TWJC_WwJaVD>STSphML;^;DVgd@f7cn@2SYN~J zB$W_cqx}k9(;`CWIe@|zVhOn}?1<8}+QwH(#{Xz9dP*e1Y*%9XIOK$E3A-QfwN%UyWPZ z*ClK3Frole)o^9^XvlcCJa+I{+&BEUfOL3lAhVqMYUb~umDX0)Zqc{lO|h)=8u{qC z%qzT9ty__ATpjN7xV07Ae5{wol3I-%P(3c*Vk(wSK<&aO(S6%}8K>N83t*a4c3LQpdAUH`164z%}vJv$$RgKNh(~cs~gWP@a7(ywC2? zGHouk508CqORb$0mB#DMILDk=?o~dLn9raG!zl4B7A~PL==^U}X}ocu@xZq#&1=k# zhNV>C2(WB1Y?m(%n=2;Q2@$%G?6}A3;K%*LTN!#8Ck}df4xM`#V+FFKogn0xnS+Bf zJu{PmP{IdDUMn!u0cZ2 zuOv84mm73S1XbQp#1+LI-_J?@;!V0nOhtlNqK}F-nBD-)YY3@8&(xaLTKX5tLGZmK z12z{y6S|7>A`-pkRfS-NSU$*mXSx6&3C1u7$S^klsvK$GZhJLPukPMoWO-Sbv&&ZA zp=R9jciyHF0`2TeTyQSsY)i=R(I?}P4z}GKYv9trOOLOhh9T(&BiP|;m@R}u2)E2jon z31NYd3c%zR z`)FXA5BpwWG&O9c?#`p8{{zsvs*zSb{Y=0&AcU`h|LWjZ0Tfo{KgCwS!cIw{C;Lx3 zXzYvcBOuPuBdP?U7A>V4%9_R~dPQDdN7K55d`LY=jleD(N6tQdQt$tWwHm5p&sS73 zg$tlbu#Q=YxO0T03|bWstjFrEQ4e+Iaw*=E?W4TXZ^Dg?S<-Oz5|Z`?9%LsNRsINS z$bha`qmQN;E2U(%`0BDc1$L*!AZXWOn-j*|1mljh?xlJxTP1QVia2t-Ch(Ofkd zkyXml@aC7_ITrr2`dL8ioo!nsnDY+7{rooCDz{h|d)Q!G<gpS%HcN z?Q3ECPbLf1!YF-p7B?!BpbcW1ec2F9CSo_iqTc|@IC{A0Ve3pw zHa2xCe@<%B5X(hk5Lp4bkEPH^P9STVU`~f<@0^?RGd|RHLL+Ex_CBpy(&l9X21Ib& zRxvbSfv0VEz{Hk{-9=|ukK+B9^lj#PK#Bo&;wlgORobFK3CSYAx_u#hNPPt+h{L$J zI@9(Q>`Iz(re(IpQ9axRnSKU*nq#oPAveBCN2bCSZK-U*A-~h>IwBXfLL-EtR&|$U z5tLFNvVNyxj_mxL^TI~SE`>&MTK#31rQgHOdbqJSFgI2LLxC7z7Gqn(_(~9vV8WKD zmFCT4Wok6w+mFy8i^ju;vIi9Fv>FYsX|wHZ=dC$nUxONGb$fH1Up+$y;lB~2RhyV+ z8i3Fs71k=-e$-k#Dv^wI7F-po3!i@n8Z<$VgS=~Iinh9SP7b}a<(E1DF(ukW?Hj{K zGsJ*6Juk_jU5<;cQ+w$Gy`fle0M05HsV?2%)o+T;4`g6Vy>3hFsG)*4+}_M?1GCjc zLs@@sFJnf}8xvSm$rCuhY~`kQ9 z-*&!iO?nz$dQT6%%C_*!Im`w9>Nt+odVqhI*Iyb_HLmJ1X-7P&;7JWAyEUx+Noj}D zE|w(R&+-h%$qbH(v?o<@MNfz>GFL*tXl&4b<}dOTfz)LkY z>-h=^_Ml7$3*nT5?Q@{}f1==(`LJIQVZfx#5)?f7hM!;dG}o;DK~i?7)&qP}1>I$G zWDp0_BuJZp_(GaSJ5kOMul77R?zqa7SIUFC@roQb)au+JBNlP168Z%rp{tOEh#@o$ zYP@AB&1JX|o{LfT=v(W{ce*h~gT4N@ANlEfB2;{nsLvEsj!Q+xC|F_VkV-l71yQ{4 zU>E;5FHi}UtC2e^xh#x)@)3Ku(OU?)WKf67xq6udp$sK!-X8*wxzhG=HUnkl&p~uZ zJ}fc0U@H3?{VbKZ1vOd=T`m215xIlB_-^B9hWi^y8VibrOI2P3b16rk5j+ee&f zMRRC*`3&*KTYMoNFDm71@d)h+#60xAW_oM2Q1O?68?~)%M!i*$V?6PDfi$Ozd~G>L zGiZFd9|0c8v3=+iy1i2y@xcVn##g`_-ZK8-rZ5Cq4w)ZiwZ@aZ1m(?{NQTx62X%;|E6lAYz4~`w;6k)9acB0Y(m;EH zv&1TKxa8rh`T1}-zN$@FsVE<}286B%n<&(=3DbDI#lHM=_e^`YwKcr{^EzGaPdag$ zf5j(2z3P;uc8`h<#P|_5M`ZQ)fTU4+i?n%PSdKghV$XKz9C*jyo5{Xe@FVdrL^Pl3 z_g4qpC;{b_E$p|t(IncOmIh715ZmHZha@tfnh8m{*nwdIcV4ipE#HeMmyaGkG25#K zIK!>pLfjh7c=Eq4!Z$jSu`fAc_CT9pgsovz7ITe6^fI50L&LXpgqW*c*SoTC8betN z)`FNuk&BH#EW6Kg6^Vmx;(v7&7D(2|-I!1dNO+Y|!C!zCapwQ<4#d;k4_~dBY{9h> zFZVJp_dGS4#V3$`(M*41qg>ars)Kvq{@wrCv+4RIEqDY+(+i(4#qwkIC(xIZNy38A z(oZp?4#^vE0XZ^clb;l1L z#kLtVt!H6Wqov)TcOvrPywCb>yfQ*eaHlYhki?zsV+(?n59KZtD@!oC~ zS+OCG42@95iuFcf?U-N2K+I)j;it%GTt`!oU;YkgK!{63Yt1-`?q84CJ$R zGM5M)dFKh_NetUS$i=} zS8JU~d}nUCH}{*M;-7=lAbi8tc35vhXsIMypBT8dd-V2U{2h2Io1g6V4rl}WK36m; z<|T-kvI{e>D?*FfM}OOj^_}+%0~Y@w>fk<@{XtpimwMhD^D3r#vi}2d;NS|81c?e1 zPqO}5r+z43^yb#(4&w?SSpTR@M#l!6AT!r&?yxXD_cWId$aOk$khC0DLUYMvizduI zW0)(HRca&9HIV!rZe^7{B8p(bL$3HBUw#2p}ic96-cVc6?g#-Py z)<;>@@>_!n;Z*2755!2|`yC9!Fm3t#ID72p>OsAJ_pzvKT*{S=VbgNoM}!rX|Ez(2 z#78uqG`e#W`_c(db{Po86g8_MIP#oR#gm&Asqe9rVFwNu@h2T&u#m}B*jtqjQ$4j+ zOXnnc>tu6onX9J$Wro3sNr>~0H3eh`X+rnF7r15dUgFFd6jHBYJ*_Gx9PHB~AkiO` zw8Ap-I6#-7p++6D+f!1ACgOl?IkEoRwOxP%B@8#RKrM2N{BRPx0*z{rL%#A z3e0;#7d*;rK10h@9OzU0^LG>c!6jk@m*olP8<@;j_jv#x;HK5kN=xF=87gK5it8HI zOHU+XO1)0pk~2^n=hV6Et!{Q0S;C!sr7;4>r?J5`W-mR=v2iPY?Rf@A2RT8O_pG|~ zQJp67tf;}W)7~G4+$FLltn5famtZJDU^Q5|R3_DFY|&aN<^ARVlHhx~8I zsaElL-yh=6>PEItIIDvo+5uQI1!2}sR7y=b-I>@RP1#a;#9ALLya0%vyc%tBA>$d9 zTTC`Iv9(z_pHZ*0g$E1IO&|?2Kqd;VK4EUqd^Zt9dqCT*Kr!}yp2(E-Qf+VEZoeRG zx_qtts*HT3RaVNm^d3XY$KUe@;HJFfCJ55_GEeI059WCIf(hEjrzpl`9Iqy zCfDn{d|M)9DTzpmVQWHAfZQ0Z3e*}+5F*v6e&2L5cyt#t6!+@Oo!9MUHvon8T~s!! zXs5CC_bdEj=i;-uOqU41^wlkU^*P*FaAY7AH1XzMpbE~;Wboik*fE^hRq@aYs{jsG zXOH!R$Oqw26!u%ix%IDDK2wR8eE#K1&ADUxk-J0e;Ja#INK1N_JqEiqH-AIywa+XY zGPrce{6-Qi&2r6?J1e2+CE!4JCVUyg;ammdLsNRv*S|k8&43X2n!DhYgu#oa5%L2n zzu1KrZrxtIRkm_Ru77=2c_vF;EoyHKT|xJ<@yazk>blpym(B~w zbX~DS3C8tLhHDJWspwxc_4ng&gj36J=SQle$c>$J$Xpd4r|4G1& zYbFT`6wTX__$tnTd1hN>VuiOZ-u<1eQ% zM^Yps?_L=evhszpu%Ut@XU1!482Mz@3+fj1m6+lE&Cl>!!#T5VCkT{4N$9i4B&|-} z3yn!=`Y)9AOgWZHBkJh30A^)3V+7>YL9Y<|z)h1z*J7~DXc}_v2Pi`7eP+5^pJCvAkjkX{+9jhj4q)Rk zs(o`0I{FL0wDG1jrw>#+be#j|pc}B$Tn%|m)Ovjuh_fXMA^8M*9iaU`tgH~V*V-;bWRs9F8sWwpmp-Z6~ zzrt#Ccz21p;iayB?gy`MWe~y!rk`Y$!L31 zOY6rtylxYIa2%^u5ymoSa4W{kOji@_05EJ-sc!MSzoIrmARZ9s z7&`uV2#S~Gua$tBEWat(g^v&$Yl0*|K)*SV1C4wUtyVBO1M&PafN@ox;Kw@$JYvdb=^jYI2zBt z50_nfYg`Aso{x@Pg>Zo8jZEcEGor((}RWxLY?l%v-rHn^4E*H@h2E6P3QlaY${S6 zG+ktNVms55n2%isu3r*DKBb;U@yQ264L|~p0r7*5R2Pg%H%Sb+N7nc4&&O$;L^-h? zGT0TgYC(GJGyaa&#`q!R?q|x&0o0(Q@3ox)0`4+Zv+{zmON9mnGbHzqOQyvdk=pimKwE!ns!og9~j#%}T6jP_ptac{;Im=C=f3% zw_z0%(obR#dAchPh&%m&IEcaVK;=ULO&|wp;}eO_Qvj=d7f9h61N(`$n}N&GQp6+{(NK^hdcWw>OiBiDif; zIELQJ**ZP?_nsQ0|K-W27crN~{g3(W7+t9D_v;NY1W}DoI3JUq+L*1@A7;h2i~@M7 zJ)7qY103vTd6*m&wD&HnD%M`di?ed(x6AtG!J>QvV>G1XkzUy=>rTNm*O zO>6+Ju~!roknt`wsUe}piWD+=6fG~O7)VJ_@oHK0Ze%tBgJ>m?>_01WXe+<<@Mld} zi--(ZU^UP&7iw;hg?=hA&xU`!!_|X^iQ#*7n+^x^AmX&#+Xp(%UIjOEk)4YnxHq6T zmf|g{=W-bdav@|5{>M`Q`<@Yr^G?O9^sjwCTA?q?>iD3hfh0adG|U%ijWK7_IRX{# zbCwFUpC@)-d87KNs2kUS68+1XWlwiDro~wNcClWy5uOx#)WF8eKR|<>Ty!Y;zlK)} z6;yi?M5;#CGr86011FHfq+isoJ37hRy)IB|X0n@;J#)bAyLeVoXGwOq4|y z8AyZrZ~R9ug#bGxf#;I9fcS~VJE2Whd@LjF>9gnhAAMu8?eOheS{pb*i7=3Z_^O$@ zwhEK1*h58gqn3@hu31?PYO{|T6u9)QcUTD@xXYi=WM|z`%va1epg{z34{VP${a}5@ zbgZA%W8iMT4=@w%Q_kR&^+37r{ADyQ*xUJ@6M-p}N2K&Qbpqq5`E8Jz5=|*2heCJ0 z7CC8=oo>J4TB`2!&?*H(39Jge>hr1*rZ#1p`=1fLbn zU*|erENx_#jG(y*h{@|1ShCx)&kNjOrhbr-Py%h_Uu5*aTQmZ}KHN-aiZC8$z1+eN zspQHTKr|HwjI?`}6?T%4a1-1){*8Hed>EIP01uk5O2wcW^XF&YazTc<9W?nD?kn~E zzF^CHJxCskUx~{tJQ-uqX}&w5OvU8!;BGY%2e0YQn0YVtQr&|}rBj2^YX{fsdo1CL zoM;VqInb{As-h_6VSpB(7r+hrIXT-qaGJc!yM9iDn{cnXa}*pw5Eini(jAeHCs6J68=`ruCcld z+;4H?;Ae zo5%KLyo9v{lbWdp<*@}fs$=pU;!%?Rz4WEdu;F;_&Kk@Mc*GpGtG3c)QdDIYgiRUh zBrv3Pk4Q-PTj1edVMGPTl2f)svs8srK1Ssxg&^L@*m{V>(*z^^vITZ;XlA=g#lP_@)8%= z6<(d{#7tGT(MbNu9_Bq1_wpyDuB2HC60vpf9%Kneo11c#RoUURG5PcZIpQ8cIY%@u z&NFLOXZRveey=le#fR*&{(~>g+sa%5s@6-ltieFG-Y9g1Ye|^l92dJ&`EpX* z%BhvpVxhP-Pb{R;_WLoe_u{01bSFy7y*-?;$92u6wp2L%Q9NxD1smm;_*}6@j>S2Z zY82^fB3WR~QSTl4JQ4S6W48nADV4I#xI-cOc*-2bDf2d}qd(gObh|*fmSWH-6o(L+~e9Qi$a&QLkld%D* z-P@nHsdhGx_o?clAeQ@r3E<#?vj}i^|DExk!c>#W`W>QHZP} zsz2L6R=}`WL@iPSh!Ld_@>@Bdgi;uFi}r1(=MSy$NB6=Ll$87#hHw?TsU!*SCb|== znyFp>Lbdnvt-uNHetfcA3J!mbsT&#M*@5o|%q1wl!t)-RVOb|Eau(A8)>|d4Novv> z+@hTq1EjWlP*#?)IbUcGrtt zRmQ!QMy`J{lh7jaISna~%(lr#lNTeg+cLpdaBB1J^Rhu~-s3kbx`Thq44}1w2$CSd zekHKj@{vQ_W3x>rc7C3y3sXKmm*g(33eEHzQ;cpPE)cq{dfQ|Y2LY#=qnfBtKv zESCHU@Et_YP3A%W??^+T4jj^n*o{RGVw8;-SA)}ZrL^!AMo8|Q5>+EKJD(AEFudaL zlYvftqve9gIq5lq5ROkg%L&{tYF1Uben8bmdejL48tHMnNnP59piUd7G1Z-G_pD%0 z#Rpi|^vBLXG$-%Lf3*8vgZf{6I{Tph4mkT`bs4jp|9}z7=%8Mn8-OdP8<0Bj zna(PC3pt~2w z*%Ck&s0^3!GJ)C;LYs%Su&5a2m}nKkDEs*&Z~M@C|HC6+F5|`C@ekW$#!pzzx;93d zC3NEGQqFbzdSpj_B{G=Se95PQ<@W`_*2wMzg&~-vr}q^}}r3 zV_KTc(*!JmLW@3pjab5AMH>#WJ!jqy%xWA=;HG3XsB55zONkbM=$f#$^kW5B^d)SB z%LzCY2Y^WMoS21HNt+Ut=XipT--qb%RX0X$X{!IGmJsk8RSf+A7>l$Tn~xk}WE8~B z*3WYEG%K`eEn(oH-=>o%)u@}!Fr67SA1dKliW(n-Q}M`-Z$BnPmb3Q@f<9}80{lLw zylg{_EHiIQCe#{DI)sb+{I;6G-|8Qi0>(oLB#OBTbXeQmzav~c1?w}`hZ(cs!+uQz z=Ui{Uy<`Bf_9XoyVmb@=M1%nlir`FQ7AU>0sTasFcl0=_(~vKOQUKct?za}aa{(m_ z^Xx7+H#StB69*|4f%6bOvR!fhQ4vLe-(vVX@@aSPdlLu|iO%oxnr{*xk@+Lye{f^A~M)@$Dstc z-LArZ9SzU+yM~Ymriby+{}lBJ7`=;B|MOdd9Ke=48@{7K*uC((j1|=+={3Ogb;cLuyyzPFAwgmo^PPWPhTCot%XFrjJHeTtjYX+eT!8R0|fRENqk-A zXnL|q6R1RD8D(h2*?r}>zNRI)ax=(j17ov6_IPE6$l=yjaQ8d7@7CKtCjLei(B-0m zrzA7HbGZuBHL(NYtu+)p=>~skv{x%XWH$@LM$!ygFP*zPPZaE@Gd{mPPwh1BnnhZA z6mhk)rMIf@SQlFJ>mXi!N|*u`$jFx zef!CDx--r27fT-tl3FzOXyKW#)R$k~7}N{PlD#4}i6O&1s2V00Q}-r4L`yCQ59#qu z=!fdCRYjZ$!Iws`XH{org%W%((eOE4Ih&pH ze<-F)iC1oL@pLtJ;ln}LMjLvu(wYXsuKA;APT%vDazQxSwFONJ-cYPYuj;@fnRLE-v1ufkaM&>6vcbp|q~UhuPCZu`IO3h-}?I0ErG3BYQLq7yICu zFS(@R^m?E5261HTDr>B&o6#qiqWNlSXpQqsPhI539=HL{$E-4+ELG}MMyIcdcQG)} z+C_qG?=P(>G*45kq&)0WBxXt96P_%Fbt>a`mhr?)Pgie^rM z-I|=JfneG4);4iZ&HD|{@FSG0!BishJ|eDcID>@e)o?~_k{R`*8}|>%`C?z`!&|(! z>;M?TNVNh(TF5Z7ODLnV%+9NC!_mH#@aYhN2c^~`-u#^+ydM(wQfGI63NdLfCJm|6 zawR%>p3TrBZpmiFlJP-4x|#HS4RR{pOukKuo+UOVyJVzhCsc4|ta`bgYI612 z-ilcspyLZ)tz%aSXQt~8arDWbPID@s6hWx&prh$21mN7QLYTUrlV$Y#|KAxM%( zHMFfr)b3ev|3l;OA{nq?_hOxoW>NGnij*e$7Y2qa<-LspBW?C>Azd>{m&*}+w(!uZ zxd#OmfzEq2jo05)O6@U!wVhJayWf`ycq7xvxv9#4M!H+r3c)f6#~2$=mEeun zaY`(nD^;Uwg2xZ~pd#r&fYwvQ8Fp|;iJNIyg?>+QSzEA}_A zZ>O`k-Qg!+5oIY+Y$0NJYI%=Hi<^e@wfVJ`S@p+^H>R6|Aid~M!Eva9bTpA4@=Bmi zLEIRfzKgGSG47q<%z}qCvs4h4aP^%EB_=F3D~8z7-T4rV<5`f0O13{?Lz%Zr3(Ym za*WKyjkNOzgGIpwczzXuu`p~$0i2vMS&S-MjJZ!7M6%V9wd9%dD34KkMj5!yyRJHT zM3*&4(Wm%r>!nex-9X`LFpk5Vy^JI`&Z#t{)NEA zD6m0tpl(ro94lF?55L)U$4Loo`nN=>$V*NwW+9gUhy3bS`0$(vnk9CdUcw+iGO*#INyKjVW2%QV zqBY8uIfkWX&vmCrvG{pVg1e=^jiQvCahiYQmr@qSfyzywu(Dj{kojxo#P%~@{;mpE z)pt5#g|0jb%xgIbr)ov|4@h2XYo+=LM~JK=qR9c*7T|5X-ET?$6%DB57-2wZe zKG86x($iN#dxs7?W8>`!Jq6fX-rXH1z1T?QwBT9BOGO%9Nx9gOaO@p3uUxKo^&6*s z#;moB_kYDabTfgL+Ar@lhOv-|+hOASTGnY^Vu_Q384AaB>neplYR&)*yohbF#L=yR+Mx zP38Le92a#fi@-?ro_I412ex$Wr5*NW6L@JDQ}fg5?z*&!?`-wb^`wCtygwV5U-&bf zK>wwV4vcEC8*rnJt*nxndv0VoUh8yykODMx_K!o)QyPR(7b4)J5f=y!q`u^=cj@4? zBfef9G@mDj^YU~Ms-gZksW5b84q|e@Q!Bq=p#`y z+s!Q1ZKd&K@=SxuR-lYXvFJ&tHYXWXZTD}m!m2cW2S({9mjpTiA=B;&Gf%Ata}d3$ z?A&UP)c)C*{z*bD?X8~sP$@^ynyr%buK?r9bmOgnS_i$wgSi}zquYG!W4oFK(XXKT z6?+$})CEwKobof^GMf5z7m6q}FFb2SWFr7g>s4vl&FpsRJrAKuNGj+^F%Oro^c3(~ zsxI>F?rjXD&WWDzMsm4^RQG)43uXBnKDFa@S2(`|fN>Kv79SKcwnKssqwNv*DmR>Zqp)GNuQ-_`veJWl zU*5EZ9o*&KI@eu(&RSLLgB!V@4d1)ydhe%nf&4cjpU}OWBY7(y+xUf>&`g>nBsP;8 zsw)oyIN5J(XQ?5&uC3lIyMR0Gju?WePsaju#l0ur^3?J_M{il}^e30?w&-;X;6fz} z!_fcPMSM)wpB{4Ltt~B2>WW|`GUA`dbtaM8uK9sK)`OU1oyH@`1}+MTPHq6}<4i;b zoM#F`>2AV`+Hg+1#l+Xgg@*mXn5krSMv0NRccds2QBeRCJ0N3%?B>lOd3AIpq~LUtdN1m!#i z+)!T~Pwf~ztd)b|jKR}eRsr`(Id=;{LI1Mj^^4>Xjbnont+QF-$>=$ZKXtHcVxWPR z52Ge$hU5ctadu)5>o>zHR&Q~g^l0hs&L^)UTd3~Jew{;^>GI8=Y! zk9yuPY(j7iCWfSeY=v@fE^6c~c2F)13en7R#B=r>@T|2-2btkkwn7`ANP&5mJb&|j| zCV8LS3f%x01EJaHH}MNFRt;aEuXnIO1Qx0tzJgh8b6!~OW;f-HYE||E^!Lb~13uhl z8j{|P8kKg= zYz+c+?6kip=3@NUYK6pJLJPJGAK`TFBdM2nl+1qz6e3B$vZNOrd_9N%0~ zYB8tgZtL@KgLnH>h|c$_ci}Ka0GW>pA~(NEMrncnxPK=HP9(OPeYD{eY59lIJmN*ogc^b4nWt_v;xo@&hDjh^5`Ak6YEH-7#QtnN%!4w~=|&V*C+E4(~~tdZZ=n>He0* zRaW`}t2q*6{gn)d?Xuk=3b8mY%YZe>Q8DC^jIuE?zj{)(PQ*6c#eY5JV<$0m1z`r@ z{LwHcVe#4-3t}>(e`To^7e3)bl0EbFepr=whGV|5ACNmxB1%SL4=@-a{hqR0#g z_?5}7dqw2;cA{<1yS;v9v1j(wNr${s0(dfC))rk*L&8dkye|P`oQc~mK}r9??;uvW zk6WQ@j{C{2hegxpat}TFbWT1eGk=o5W!y=^06SENuSD@wG~%R41k3N!u#nrdoObSg zRi??=tXlHgi`E!A-f9{vjtGFU}e0m#5NF%0|dUa z+!ZAeZoWRtM?W6?^c4PRA=S$GRcY^OA=*2oyICR6{-AHn2DWnZ>2r9+KH`9SR952&OLd@IY-$Zl7&AU>C zZW{kRHIn)*35OC*%esH7UiBNXvy=b!6sh10x=8We-3y**$7PgC4UVN;^vXbzOtOtC zk5(TR+@4)M|0p^4Q)!DI++AKiaU{E-Fw7^xOR6QI4q7m6U$6?Kh3tbsx0G8qMnrzD;%IYE*_@Mn_%`lYDG`lszSWi0q$$ z_aSMbruJ{FZI7tFH^%;@X57O9e~qUFYD`0iyP@fKm@#Pn-040eh9VW``gv^yIaTBK z@r&>Y_Cphw$B{Tne+toSk*gZ?)DT4=YsIrB&VyK%+|P%>DgEJe+j1(FEXkX7Ps)Su zmvuVDQa4@FF4qjaMWbqVa!izO+a3RB;CgiN#-XQk;zV2Y1bR$e36gsB%=udrv?6x5 z3Rfk&HBm$bQ71;S%mu*`I{Kt>bWd8SuQ-j3^+busfGD9B3?c&)OSL4pHQdc^*<#pIJ*-)$nkwGJNwXT6`yaEIa1IPTx@UBzqD0$YWTY@7F76)t1h*S+T5qE3o zLm`e>jbJLMs`E$1XCh)-&|k-kU@>jg<@zmwLjmSNO?zaay9oH%4XaACyv!$!1>e9; zSF&tIm!iLzq()f;P(q}a+pM0cbyHJ&A^gr_i!t8Q&P>_c%MV5rtd^ z+n%ol?Rg~=F@_EYasI&qD2FeGip9dqAFcAb_&x28t;kOM^5+3kP+vv+5L{GA98vbn zI)+({0lRs(17@iT#3J`T6>@`ho#(F00BKnU!TkQhyutL~T^v9517Qy4;wKhlst_bt zq(tX8uBWH1@`#CX#Qph}rQF5CqO0o$!wTimtWoe=XOl5p95g&>`r42o1WuWK)^nM0 zl5N%uwhHD$$OUgm3UmAPQlvbvT!AYh54?>@SKLLvr?Ntk;Xmg`p5bH<7DK=a3)B`I z3p}VzdZGID*EE@#(u=V|s2%fB9S}19eoYL;A0>*k0IdhFQ}DH2a>E*B-c)AD|cAyohrm_-Ns&m6=(@CA~c z&BmIB*XD5Py`QzIBXdyjI_2rGSHIA7X`(zCq)|&8(1`{)jAzbL4|e9iY^nI|1!>w2 z=5SZh>w0=5E46+X5qQXf+*ED8Jfu$zjheGjXq(Q&_M-?`C)a(qHY`VcbZ?2LRbPl^6zBQ8&z^7-N5SwT&5b(ZWCl!9+7 z#!IiAXdl7awP_$|^N@b(9M|JXtX~h;c)LYW_)t@A>QyKBXWWvFd-VVlZwlI`^>W*w zc8`U79O@f`qA~IQLd{4mXatq2z~#o+fnm@>m&5MYrWkJ-3o8z|U@>LjEt3;bxlzLo zxVnocfEk^jvk0WgXdYZ$jJ&jE5yU!yB)Y{D@1!vcvI6`&3Gfmis(lvKA6WVhfntSA z8-B(dL*x%jwYnnSshzKL(0~HQpL<(-ycGL#8G@?^;HU17gORT^?H?FO`;@xZl<$Nk zPO+G(bp*x!-?7UY+T>+Nu-=Ma<7eS&3&4Y8$92;!SF`&QshUEh;GKHl{v;z>+Gy9A zI_uu#?(lWS!Pz|C9aNh}$;6&(SFYgmFGNvG$YD&)#2BY`xD~-q`IoKlu$}&P9&LXR z#z87259+3_Ub%E0;5tm5=GE^IJlKpCTh>q$o+Lq zwTeQ`Zq%kj67S*N>~i) zi2zB-i3B%%iV%h93hEF0JldRo#x;=#OlxH9dp-m)OKyw!Z>d?228<+ph+@7J)>DGE zWl&)eJM=ISXytSBLC8EHOKutGwcLiF1B`m3%{1AM&7DnQ{2W!#IS7dZW=Bt$IPn0( z6fK9JZ^OT!D2yVB^gsM}+A$|A!qj4;{T6X$h;8*F6b+!oR*uV+PBKb+)QGFSLi;kC z-nHg^@&TwN>4+*4#ZQtRh!DdkTx38FTck$D50H zP0b*xUHs5mz6APd6VzfZLvkF{2DiAtHMs~KKkkaQk$+5h0RKM#z_uJMF$c5yO5P=~ zL!jm3%b`13MnAzYBRPoQV*{a7VymP574}UJ`<<@Q6~w=wigYTj_q?ks*~}G@2fExz z&ToHO*cpTib(pL1Z5sN0cb63+5~Pe z@$NI$!1ujzuuTTSqtrX%(4D6l{lTb@Dke zf8IMwMyyA5<#%IKLLB5@#jKJbsflGK5;Qe(Cf%cIgf{fStJH$kt|$!92nCrRa_}o# zG%CaRFtiR&@-bQZdpPw-0(*c5wZz`D0%U+^LtF@nnF*V?$ z%Zxry5T7#8J_H|-rcLHR?v(BpQYI$9(n)YnO|Mk73Z{Mi!RsZcda$%JpNO=btn?C- ziLvy@9GZhBDO^J2JN=9ts5^zQHS)9V;9zdbp0ux{KQ^xl{6 z83`a)(N6xFA*PYxgiXTQ>-9e;Q{hjJCVoNZI16){`58oYyPXglZouG}l2=BFrTG7t ziba2sY1}(u_z`$-s+;gKC;ADlP-OJ>k_VU@XsNc`9ViP;bOm2ggw#WkPRW@?*Q8nG zxn3uSPc~;-1m)6cp=D%NTOs#=Z}gRoO(=cn4moLdH#iD(^|Zdz(VmVJ)H2{fq|+xU z_X86~@N@T(k?ay z7-6Gq7FLgc=s{st&G=L^q=c%-=wRe~davZ$ zaKav@vUvMS_3)S|M#{m{fk+yRAJAY4^t2??9WoWGSX#fBEgF%poIECjR zxnMojs!xvBxZyuq^#)u?i++(`vK!^ab?ZUiZkm4o*Br~OviHTp^!?9TvOS8`Cn*J^3PLPS7G-WdFjgXF77TJAJ4cWxR z)}fJP4o@F~8!FP!#%p!ahFwKavuw^{{pi9X=P2qMd5|FhIg zINy}GGx!s6S^Q~yH4hX>>+{=%$p=2EyH~>dN0)un6XR>c903H}D>bA9foC>U;V)%g zKBk`Ax!$@Qb6C+FL`||t@2;cbX@74_?nIN zr?Al@`axortf}A}&QLZcF$&tO8`F0gb~6G3+yW^?{3D3)1wJZiI}A^fU=)4g_~GgV ziQb_vnArMsV$YQqb7d$%#}2L#%6XEMeBpv)n*rV^kM(j$D^A%MUf+!g;BFs-9e5ZR zL&iIKkGpbvqMGx5)#~uIYfk;k<${j!J~SU2h<{Uo5o6?1!70pXVgHftq87z*^0343 zPI=k>TRlQFEf~C-io7rQ!C{6g>dN+Cov94!UB{lNhe_}RX5brZsLwPC8~7bg0&?f1 z;Uh(W@87uu?+4i_)t#l*5TNCZAXX8CCBxdx;1HO)MZK&z)ilzk&GZ3eO z0gyPm^LJd&eOU z45I@JEgu0}(~+BHvDMD@r!;aOijH;C@r60n^7cR6VS`V0DNm{uZ{4ica)J(_R;v>r zZ8MeOj4STkkkvOSIS?j-{1kj~DN?a^xrYT0s~SD-d?^<`-M)k$9R-*w}k*zZQ&*WvpXFdrHpgZ z;jACXxKFTNA1(fDme;oRrLEy$UzLYL`8L2#3c?x9_^(RNGck1Yvc@!bkMS7p8*{irNUYBNb3_wN8y|kAC7Y!rUTED!m{R? zZG!Kn1pTx{?xfwzqLT0q9Cd@R@qYp6$ZI>rWl&lQs}b(RYe`*%$*eH)zU9T!jU3#{ zr3ie98m#q8~c%%Rh9^bH2U&QtI>z(fSwY7e}jx>qQh9Bql=IBNzJudlS>1 zWiP;sKAIkt>=G|_Xo#b`<3ucjN|H?^pFk;NhNW}_oEPbV9iBJT#i_U5R2Sf;bC(#e zfC0IJvs0w0VsUL}Y{H_u6iO(8n0TqF8gr~&mjIu;_6dTpLIL)AEf3Q&;K^Ys6Vdrl8Op9QX6U-rX@+$4 zNe~aqupPqkkzYdLCqao=c(iOEvftvqhlky-Er?L*%eSF*c0Xt>-(bGi*BMt)@_#1Y)x+CZSQ0HVsr`Laeko8!YhSU9OvIGXh(kK~9d%&J_S`p}o|+6Y3W! zyzR&(U!5Q(AkEQL>$@$KWF4GsUzQi1XhkO4qz4d>cQ*8k?T#+yOscWZn=R{N6i+2voB7yruVS+it#N;PA8v1DWw{HjYv+&BMWp4ULF^wu3V0rX-(_p116}xg2>|*ts{gzgA0EpFM3ocnc61(rsj1T$- zbPNHotc>BDC77h^nAiw5Z-1z+*n?Reg`*Ts|MhF*s?>A@5;$ieOoEWZUb{qzOG}&L z?4z;h#N_zs59y;D@D<3{dwBZ<#e|Ke9%Rc)_r6t@g1H)j$b60gtw9x=3vMxmm(J4V zvwBBwl8l9v=9c2tkmy~K_WOC;`Jo?67}6gP(0ot?1Z+kzLsMvs%G>kl3HXcwHnyMb zi#=ANbN$W*kfcgh2ZMoF2muZ^M!Dv+F=#!lf|zJ*ytiL0}F0<@ge&;5`HPHl-Cd}uB_O{6V{Uy62J)Jn<$@s zvR@A2&*&9_R?c|*(y#~mLw;0i;g4NPf zmjOpr+xOuyA6}#ai;z_=@z3>r_63c3lPRqq5ToNOJ?2YL2od2LQ+B>jx3>7oM5MoB zD6|s7mg`#lE^01Ed*#^u&*`aq9VXKC)zwxpJ(OVPLJ2s}(OqBD=X!9fS-nFOcbejc z!6=0Dwnm2}ZE<=FLkvt-&WOueze#2scrEBxf?tT8dBP(%3h@3lP87{4RDJo5X!g8% zpgS!UOfYN$4Iu_E-)Z*U6#zpm;1k>3JxGf_-VlV&LN9NMZTI=;E^M==Sd<& z7{`Hy>_#i#xD3+AtKHd5X6|32?ZuZrIuBy9$2%hk^yC2ODh~3s!w(+ig!Z2fb^LO1 z3M@3381MrEPQ}DCxl(7|%UVLq?q$niQ6~7?rsZ=8kQB21XDVa~U1Ab*%p%}It|7yc zI5irK1P2^Cv@R&qG5i3P8sQEGKYL-zV=I3jK}SIGB1WODQ%~7Uu)qw1(i&NsVmmbD zas_2j7#E^}g8Y*Sr%v!lYp-W*;$NRR#1nM=ks;ITJ6{J1sunD-=h|167owE7gBgS;yrUb;aX3$K1?bj?Rbb>abjYQ zED|lm!(ftE$mx~U9qd>zlF}SXw}=XH{(#O_G~#&m>M3Y(Lv9(Hb4>sx7vt(jA@?1= z8{*<0Z{L8cB6B-<347nVkM{0d6)k8gD)3NMq;(fU;U#)wp9!A>Z3{AdUpg7UR0sy2 zEg#zAX8eiodM#s&fA=pSMXc;m{{=f;0`}b}Pq>f_tJ7AFChl{L0iL9+yK_M~UerAAY#E9S2XK4iHQ;Xbm{!0Z0r_V5U*3dzi za~tBpg@oO4&D_y(N!`eMBP-5AV~jhDSk$t$d~pU4J=!&IpS){^8T(8TS5_cDE;~$9 zEkyusZ%=+8s`Y5LQI<=;yL3ZHBOI!v7P5r6LgpNwQ=?Jco0>dGOq3pV@hHkPL2up2EdE2Kc0g;SaA;JbJ)I* zywaxp$IfS*O}jV6jM4ylu1NmNOGj14mg6czFM;5PVF`M-uPF@hi{6XVvo3@pFCK2@ zIIIDsJt!M5TNR{5v*9+c0MoM>`JOVT4A)&t4v}eI@JiZCGx*O#)j_HJgfEiYWf|%p zz4xt6S=qZV2^4WcNR+>w#RetVZJ}O-(7s~i7K0B2j0>~f5zc0Me!YERD5zU#Zxx{W zCX?1U@YxogEzyh6tmpr@7y)3Z=M0<%I=lS6?xrDr8kB!877LxW*iKL>qK2q&F|xR4 zhQ-gEK0U%b#pH~;7$@%7&>^5Fna-IoIWjhfHO$QvG4vE>@;=?4pXk1}aIfrF*oRW; z1Bf4#2S;-}8k75`C)~Gs5oo?;^&9J;&kj7~-}+Hli>X%>mP}Xac-l+t>jx8~15DCB z0FP$!xx^-dUW7o}fY)i0gPCCca$d(PEvJCk&g}DK$1~gv(!Ll!{SxcIaWsTao#mqV z2kWN-SOWB`<1JEGE6j(L;i=axA{{1>Pg|T)fE&ZN73tu@&`TKPF2t^ynv(Yq^%a}} zpppVpkr<-z-!?N@K1&bS!bl80!RVl~0#XdoUc8dW*6P7%GL)7E84hXNk{1>xo%$!~ zhe(6#llaMN!6!kF4G8QypiwT2)Q}*T%lyi?q~sWe=I1198{SGAQlfL;Ox594%P;Xy zIhU35nQcPYI;qGbAR1)<-8RhRgfVc7q*4if_A_{&$`@;{p>aP8uh<{-Y~Vk3dmyym z?D}03O#wcF4MadijG)GYV2!(7R0~*~HW#FS+#DW<3#4tb%2h&Rt=1E^?I?)MG&Z7{ zWrFPz*77G*g4FXsCGW=iURD53?fhK3u)PqI)&99z*;)a#cybW)Mty*O2QM{uF>o2! z_GD}n0;b_eA<)6*Rs{$Tp+j=TtU*@mn`Iu`N6Czag*c#`Dc|y5kQ(?Nqh!gM3+?A( zegtf0(l#`NkF+MLxVO#rBvJ%po=-TD5+%w^SK70rP`8-dPqauIlgUk6z=`wcxH>*^m ze8Y?li^a`pe`1D9By%Ytg-FQP!>wbh&85(at7ukqUvlS0M+Q!dWmUiWwuf)&$Set_ zRdSbv*Q}Vln{G$oXAg^>w8D1PabeFybPioKdgQ$#-Sbrb?L$Du@YdF4G_NIYqz*^7VrD)g3P*Bzs7hqh=J(;zsVi6K&N(_Og z-BRlTi|Ya0xIKUJsOHx4|LB*D3Gdd&Rapoopc!rqCj=)RQaRsKvRO~NQ807=g;N26 zTBrJ9iTilvPBptr`Gj?Do;xiv@Juqh>|`)}Yku2_JVT1f&POo?TKgnU=@QlD_g!oJ zO8aQ%t+30cg<0qO!8K#%^XYdsGzg8!SqM;2tS8#%wIfvjhaWe+XsH~*qB^tasG zPR$@vXdB}U7FT5-soaId@>A|lU3v()*?LcS(@jZ0m$U5{Q}rwd`nYUZ0H2-&dLz+e zGa1&T0nJ}RS;kc&`q{Di2-zBEjM11cB(mpGUUHZwO9pMp-`Q5F0JTh1((f=Z=^NVI z^E72VWFv!Q1RoOaQ+#UB8BbAEg*Fpask=(0w#KaMJ6+IpL(cTUd}lKo!eZ;bd4ESd zM(CtK%PQuC`Vts9Nmx{unw{~KCJMGaMxX!^%A4qN=+@N)Ab!oJQi%7BPH>Ocx&Lnt zF6Y}3asn1RPOVflA8=KT5+Myh#Cd>$+3Gh+L?7sHIchcPSdA0x zA*s7NN$0)LQ|IFj7tE1osDZq35@_7?Kb8>%IvLk5=bQpUy-y^0$jk|P1uj|Futid%LIP~FdpDbOC zh-m{|<>65iWN>+gE(wnPc_Miv`26G(umpyCJAZ(e!8>fg_?Q0F06vr9g>B$X%?ucz z!5xEPL-A~t1d(i#X@#r-9QY3jO%a>|z2HSN21|qw1<<~2e6vE&er^KRQ?qZ1X4S`e zuN?BwC8A7VwGhU@Gs(%gguIZUSXRykF(x??n1z9O&ZEfZd0iVml4kuQT0&?HI&V-;$_>E@yEuY^N_DX;jw0R;Fm~R z00(qkzI5~nQFz5XIR=@2M`NqrNugHuqn6LZxAzr@&_hQW$EFOnyka{1xLc{W8moojIp zZk<>tf7_&B)VLK10G9=EYgLW9(g)nZr9XE_<3P4`n%F|{hk&lXFJfKZ{ZM06QsGb< zD5!=_+F2Jz8wOgmalz!ongt|p`dnpnpzr>2%K+`;Ooq(9_h#(a%_F!A>_M{kz?He5o3Ii0 zcG5#}{?F6r3JGt73AXOgLfGpmlTv8wDsh0$CtqYVUfTaS;Y%8YC<*Q{%OCT}=JM}qC|K@~)I7C~(LlqswscH|gCrd<9J z(L_#p_3vPEdit3XwgfRSsuj{q@1V z_1||id4Jf{Ksc)A-6KOR9*Mew{PAOUrH&AC?M!mm80?b#zR)%dm_^!6q}8cgte&ha zQT?RT-8-QilySb~3}q_#fM!S^w+$-t$%_U8_W>Hx1F#q!T)9>P0hT7Z)WG7fXD%>j z#RoT59$1V$cS+4n2wgDXp!MSaUw>TiYe3_}(_HlL)+^pFA`LB8{V2^PK4?P4Xxk zznOh_fUFKs>@h+6`mvi$QJA`D*jpn2NnG=>ON!Na#OUJv&RQPdsMtKH{qzI!W3w{MdE`OYqsg~E}ztXS9@l@CKyhL<1+htW(* zC!-mlk&Imu+i3X2-m9fhH$8ih_zx+SQdJMqNKM;t%RP!bAJsQ zVptT9r_Zek>I`bN-^(h38A!BCF^w+Y_KN&AY6Q|&rmuUfauP7>9 zn}wQmPH#U)C9i({4zx?aUtIMPAyo@#{OY@-gLo+YKg^{#!>>Bc79bjJ8_#M=lB_wX zGuBTmhyY{B{aj2fBUgt}( zj~ulX1Hp()*@6smCe5xzilZ_PS}=d?iH3($7hK-&wrH2oV%lP{to(8aV=;oROjDfw zV0FmYm0s?5u_~noGU;u#)G0Q~L^mb>*QdWv*loV~Oe0Xphv=a8VeKA-fb%!Cz8gqDg8*s*6StgFeC`E%GjD0)Ih^y=^Guo?F-4S`;?d8i4wAbdzF+d&%t z2^M3eb`1p-+I7DC8_IyaOHhpMCe{aKxduu8KC=@{F)d1HtVxYsZRRL{-=z7SO(d_Lp&81L?;k>i3UdVce1DKTlpz2 z8;!HI@s6r)z~Xo3{u8$orfp959^c?90t9 zw|%e+9<|sp5_Lw@p6O-tB*M&dU79TB4Y2n?FDjS1I>gwDKTY3O?>x&{Nj~tl{llEW z){=~@xbkzB{oZSCDq|Y)=d+cacGgeNZ$u0Lj@O2FhZV8Pm+K9$BN zm|-6|XP0k~!pHS;)uKz{NE|*(3G0nuPV_jSFcAv0EirjagG!Wlfl;oM&ukyu| zJ_~;7hJGf72gSkiE#4%-NKu+Vb;_f|LmdRe0ESCxZ7r($RLfZ6*Rx3Hwg|-Ru8dMW zdY^GG_0~`61Pny~W9jF0H7Dfp=BGY8 z-(doGN($=6;?EWp3`oQ{FA3(2C5P{JH}TrgGnA#^DE-Vtt^l?6ZrKWFzzzCldGkVr zt!D_U2qq+8YPak{Gk_OvE`M^P1SR`W*@eyu$mYSHL0*^O5f0(p;O>pp0W?;ot>v-C z@rKx_3^U2I2e?|WqO`OV>k<7Zhu9Wxm~25P<2X>K`Usns-ZOpRl6#&E7}skt&{`#= zPp|G_XEBqPV%X|(8=2k!WIPWCQe?=dEdchd<~M6|u9Mps2Wz6Z@hLs<$>!y5mQT9m zgMbWsla$oh7!}R3S}KQsP~9C-`RThFu8TP%Iua}z-+Tpz@&@acKAcEL7es<5VjX1X z&y($^kw2QKQoM8@gJ#A45tdSK-Nvv=T~HnKbOinZHc8q*Xoq?Ngor%nuUCN5tC@m$ z%o{-PFGuB(?&JH2A&m8bAq%^lDnpDGd^w<;a4M5UupU1zuH@PTmb@+qKX{i`ys|Mnz zaA-%&rh)+Q04R8X)RzsCkGEx2pw3m8t&{z}fG-o3aTWD^FlTr&ksqLGW zICYjIr8XbSjIDYxneqwhy)uynA=v4%@Tdc1SFfFz8@wUv?<}c zi)-%&_gd-CCF?(mzFw7Wh;-Y4A3DICWO?+#E8er>d6HINZOzpu1ps*nd9?RgVyl!i zBp=7}eUl%j2GPR8%8E67a=+C`!@IiEj*JKM0e0}S(2+{Tk#{C&yX_IX0UBh^naoo; zi9F&*!mmPm3ITr*{)mOC91hx3Hly2~*@{n$wV(0gJ&}X48zGarYLU|5wF*};nH&rR z?E(6CmYsM8R%b0csH16N^FJrfNV>p%&DnL%98GV8c(XPfq$ipKE$K?G#ZbX355f5T->uT+vx zeZZ2_{5li)^W6GK4Uc;2Jr~fIjMtFiq81%0^Y?Mds%j)3bPAnBBkU%0d&vn;6d;8V z0jG+18$dkbP)JXyE{`o!0y_{8E?zCe=Qz={T`qwxpsH*V+u%J?)uTT!EH^^=Y})$X3YlCJvFD?hvcgk| zuD7zj(%&}J2}tcGqe;+X)X}eL9~dr=BgX&R@l+fD)t>liMw-X?2rn^-9(9v~Uv_ap zV_=vgsfL)h{n0j9_6gz2OW400o)UK@79$*_VVd=%gv+zu*rDV^o^fBAk$sFK;ttULDH?j+s;; zv2(x6{$=%3IqT58LY%VGjBd~?px}fegr&Xz2*MsqD7b$FWf^Ae+O#cn@YgnbMtizb zMoJ24&2)_cBuqh`w93R_^sq;P5lk}HWk0JFHbW0sk8MC0*2Q*ptshs19Z;l$E5Kb{ z2a2gW&XGr0t<=ZiyMterL8oIV4&~+zD&Pu-^zHCxFbiM4X%!RU7FIYu2(<}3`Hg=I zmti#?c+SPYP*wxarr$d*%_lOZUM!@Bh6F!_3)P9=GH_mv(~8x`Hd>6j<6$`dN*y#T zh5_WArfQ}H9z#3m6K<<&ee$6>{dPK0Zsf#K$n#Kf?ko&0Gq^F$GmFra;)n479=vW= zW_zdU2LAx_B?`9^16UR?_(2z!04n4az6l|ckEnxYc4Lr2O+YG{TVN8QIwtl}NLWTp z$OSe2*&W$vI-W4~$i>Uam6h^w&Ax{*=DNU*DVJt4m*{xydF;@N$bS*8zzG$L^fPpd zzopV7>AID#v;;XJ-iU$+3$Ox$Q|v;YqMo(sDBEm6##8D7v7J~htnAjx=>|M)`-C6!%06IlMQc8A% zZi)cvfMUy04PJT%X)+TQVkgBf{Q*s07&FPrDD@(?)MN#h-x2FEb%6)gxmCXnfdZh* zxtv@>Kyw8y|1|Qga)5YVUxT)3(bb+OUdszpffi|9)-C< z>z^lDcBGHY|27=kpsliiPej>HiyULelt6xC0eV7x>oA2*(s3XtLTN=YPjh2TayM+1 z&Ao7-d*VC^0V$V4jJSX0+R;_uuO<#fc3Rgt*6}GiH4xd2TNU$m&w9~^8@SV^X$T)4 z!To{ZNSK0gFR3KEBYX4!IGF9eAwUteF6n2xVous@o^!Cx>z0<8`DD+U?ID8Qf!v0Xg#KePC`g>tzwCnv8P2;Ak^inW{9gD~M|DX_$|>K<2@$!wK}(OZ25uxQ zC8_-=ZQ8rzmo&kkn%|!m)QBN7SCRy!f$!5uTO)y%9_7%oIL|I{XYe#FQMA(40Tb{U zh?zjVXGxZdHF*pUdMmQ+jpzQ=@;sNKLn9+rkU|Mh>$%!@{ zCVHD(=JFRSQ@8Eege6mtmOm*eaOT8kQ`xm$ao16 z8J(__f3xwyu$&oTtx};_)shF&+ezI=q@-k5f!uAm(VO|C^>$EqlJ|=sSjU7a=G)|; zgpjYl1iG~D&j}CrB6pDsVQ*mmo_$ik3U6Z60kbpp_NtU};j_LXLqr+f`*N}6Q;I9I zP15$fg}qA*Z4@%vSYFubdn{01{xvGqU2^>-!TI*` zP9}lW)2;$xsTj-c{loiNU$%*Ta5?%?UXuU#bV_sPy6lnnk|DNl9FL=vU2$Ajug&p9 zV-6p^fgeVY;SJxciEAml-(Kn+bWC~DQG6;C;K%=TQ{vk!ht(fgXgA{cw4|D@M}}0t zSZv*d_5SxlkviH#mDL(DU^9Rv9>OJnPygSWB@ZlU-t##;&!$y}^fCG$PWH!Q{t;P9MMhXRlH2+FO2?{{t?x79JDWB=-w~Yr6gY@? zIh7O?at#8=z{pd3q2*p$Q*n7nD;z9>Lw)1%D7<-2_x(+A&J>2jH&G^y7&&h*p=c5h zm&*x>*Y2Ru4g+EhWt^bXKsM!Wg-hMH@nyhpT!rFLXSUI z*j=(5;=-&maZtlU>zvj75!}IW*e`q4ch?!2xgpLNVXdU}{U8*9^{8y(yGD|#*EllV zK^YM(r!_s96kd%4RDwI&Vdz*(EyRn{hfz2!k%Rm~ zzY(yj+7BAPE~I6ZUz+kaCaVPENss37CyH@8hr(_@QR`i+VQJ>d@Ru^ z!eeY|b-Sd+gc5%LkO$wRvB$=*80xqIC{5wYg;*es2ypa^&j&S#^?*&H%JdmFkkV zmxHc%(42p!u5@l-Q0 zW4KqQ!O+%Orf`5T`{v>qszgt_K#JGC{x9O5;J=+0Mlp}CC{Aqiqby!x!t4hT#aGkx zYky&_7_%+`uUZe`QRjP#V~RQoetucmc>j3|%WFr>Ywfh;uJ?f}j@`4xLZ%g0x=Nke z`VGJbxd?&ZP4)8{XMU4CV>MrtFf9j8&`N&WeR^30y(6wuW{|s>bB*7+XuL*~Qg=}59k5_Vh<#sIEA}Tg?JMU0v)ScUR zkY=NZEHpP06`LfNKCck`Td59$_cSpP3i;fh|tH zC;J}!b);#@1ixh~&=>71oI_*N$z9d0R3NJyB7B5&Lf@#G{FW(Z79KWNB%Ax=+?sXr z_6tVCU%Ni}mJ3mHy*P|5$Xel4a?nZC8S@E<(I}rcKtIvt3O{{IyyZZNlahTg7;mu z8=l`9H9iLXyn8!sE9s<8xVE6i#_q&99M2zJPBr<^+L=iz?SBJ*3Yh@fhXZ8~v&=~W z_Mhj@VYk~Jhhd5+CjjZb^!3OaVSG8QB^t5{hvP1iC5`x-E3hZvMm5JXVFJB*5)3~4 zts5CqnZq=s399?~#6?pEGbD&vhv>6V51>FLt@yv@T_kV1QYJF69HyVspQj;309p;L z{zH2EqISvXR9b}XD!=5$F^Oa3wr>Cx&>Z}PbW-j#Fk$tZ5{-8oJQ>Ur4~FH5`chII z=n$GBG)N!aGdLO-B$W6~n^(5>V~z^EB~U1Qfzl>$E3IJPw2u$0*S>BEzBogZ)qYM^);ruXe0 zyEh0}VD-dsMvw#9b9N|bYWiIKk!)p?z6`Fwi|AyEBxu zJE3B0Cvm!_fAHn;v$1qHQ~ulSME^{XlBk?GlSaptKc<>!7Tu6VYc-!x`iF@e2cM@@>gY8v7K&%e^IY8d8tsP9x@~D;h z^De>oxhR}P3spOZ--+Zv=#!zD5K_*$EkPErE5Vb8%8RwZ%`$ebrNF&sWttST6Mk(- z0o@uX%p4dYdGI0Z7G;X(;!vK5Yb>g|EUCJ~SmI0=JstNm z*VLS?4gXOv9@NI@u~E_iGsSS%r)8v+z8Xc7*Ud~qzBKyqr-sc1;gaSsR2`Z@_f-n` zMD=7DvXlCPDT&6uv&oM>mMIgLPZ_e&vPK^<9fH=#-2~VJM1+d^Q)5ghSD~iRCMvjpt=HcxAi?3!!Zk z0w2L4`m-`y62BRv#=b{9g9<-w*6^dd-;B;K?;wNX%3}Oc(W6j2S)w;H>`=*^m591dcWXlOBw6OTvN~R)*(z16SfA zt@3AhSHWGs?BGnpos*Y4`Lrd~TUoU8iqzmf0WsR@!~l~{W{3;H2jXO^jEpLn&O4V_ zJ!37={dMDhjFTMF4Vb>f;3~A07lg=Z@Lqw5%cRjF*?GJ7`B*rb>=rjUaEJ>H$+rA z#PxhR7u{eEN&c^o!BTmP(_G_5wTsE>wqQJX%aymYiktXH<_$`V9V!;c;^FPatA@*H z&4zn#YxV~XFk*5=Ml@%w8jjQ*Gp>IBq8+CSpGg8604xejRg+A5?g!o&!obsKLxK3V z%w*fN{+so#s_Kz&Ji-7r@W-FlEEm8f!h#;u=K8xT)c)@wyFvrm55^da+aepOIZ#5e zFpuW@@(97Z#wr>+)8+ZK<_Ec@J*z-e&G5C;Jm5*o;k%?2( zGZac-rJ?zm&WxZ6b?wY6ulD>^VnH+8(o0A7SdFIO*pukjdNCX~QGgI&&H z$#5Ibhk%4b%H*EAsp(38CBYnfrbl z;dWQy z%e4j5%2XuviWIX7ID@d|lYp*?d7z0O?Ug7qKm7<0S#b`fdxddC2|=d)!pYVAu$poNc78Mf6=qrE6f(_ zsH)6N;?#JYW3R`O z2y$c1n&y*um=@hH3H8~pJVkE)W$0hBIYg1sW6a+`R*DmT^=u-STydqCOCPb<};OlLYzM2JT#0g;-JkgfR=Cwu!58wXB&{d6vtEg#C*MZ4Tyl1z5;f{ zhhmAs_I{-K#cg7l>a|PyCl(xS`~ZT{@Qu^K8R~O?Hr2*dc&N|%-T;lN6VK&OVl!E~ z^|?6X`caH+QJfV-su}x?+1Y3B$N0?~P&oUfiuDXh?kotf`s3}z=Iz=Lq4U))21jej z9wE##(!N^a7+miCi<=`0g%;|c^f?<_ zOU@gVmekm?fE=v!i48z$ike)7!^}}tC=E&>NM?=ML0rq&1IwyX{6~eM#{uTH>Wxb6 zXO5X4X;jZsbj?YTAP}lF!|@ToQ?SPP((d&SC{e+IZ*sR zOV+S6vV4mw93>C-=`qi;M^JezQv_O%O;bjhn{$$f;&qXFYG1hiuoHl%5!V6Vd$#=;{*e(*LqlFH&R4Ud>r9@Y zqpsOEJUZo3MGqSU;e9ZQKxUWV@~eVQp5tO&z!wG3ByL@76Q5gOzZyR~bGNG6J`E1* zng_4;M0WJ6y_laxgiTrVz2B?NeN2O%w|#CzotmGb_Us$S6>RHqsP698GdPHN;KEFe zF2L`I3oV(2keG8bZNp76lR0siFF z^+MZPj7%F=_G%41LcoiRCXKHM$FpquT6gBMo!($$s5hFGyWh@bEQfuHL(DUQCQe1K z=10-es&guDy^We&6K(ekFUM=fsdC#(fqQmf8T$)$+IrcQK12!FIu#jdOe*Cdxw4UL7(tgnAtDU~F{Ea74$$&zyYY0(2il$GHR#E<=6eODiRNeCoX!_KwZD|-YVOp5Qd{=&h%_6 z#jT3VW>5D)rae4Kp#P@K25aY?Y?Al?)<=t|BH_#?r}MqZ07xe|VK7fek==<@>`E_V z`fU^TIp;iIPG?%cxjoRd3|FadSB6ji7ZNz8x=`FHBp(Avz>yQZip-z0U1*n){Bhj>0vuDuP?xP|g~Tb}a(2qFL#WjHE8nJcsJ zGY(Yi?v2(H)?TjkF&Q_T>Zhr(nO^_)eNMr~ideF-+7Ae$8vax1a|MRr1ZHL>jz(fgHu+xs8y zS~Q#^WUmlw!O*8V*1wLd)aD(-BiK(jV89rf__i#{pvP?#kaXsO|1V-K2A!dESjDSg zz8Y7(%fTY)t{9qKp!idMMI775HgdW$Uo>h@1c5KV;K_66mHGt87kGftc1`EdG z->LZroElEXcOq5u(!#M(Nv0+_>k{oCf}z5O1dfTKAvEhk5JfQmEUhWVRr2V2Li6nh zAo;Tkn+$XK~m_{XJ7dO0on^eLuo-2y0*rqt}nAmnUOSvX$r^~biP z5B(}nfKlERo4~a-2l#3lfF&|Qb4SLuB3}9A$~4?>h**=DBcD z?q9WeC8Ic>-Kr*uTP zW5!dX%7}#W`Fr1@=G`U(R1VyON_oMW7xJQl7=ww}8<68-x0*kNtA`x{S z_!|M>p2CO_#dBCASXGhRRNh7e79j^GUR~BwYp;e%e?hxbdI^Cz=)N5V?7VxNVU?h5gX#{thV z#@`+&kPp4Fp%+sBG-yGtWm?GV|4IV-$jo`oePmKhqVsjCA7n!U zFQ7pnD1duV7W&X_7mZ*Xt=2;T8Gd8w1e{&a56{}A@h9`(V~KY++Z|?MU5KZzhtq;s zX61pfE4`1AII*gw0M>}eL`pbe3&&2#c=UXeaCG@5NyL|j9uW?mPk#ddAgrna#)krWk4w^vcL=2Z(`l&ou$a;sc@Gm0WY`FuK zHciL$x|eQIz6(5s_K!wKfc|nX5(54W7g(1OKQhO6ARo%VlkCw6JQAk44iuMTZ`dN3_A?PLp`EmvHgjH=elFQY7b$ zFO|m;hoL^*rS*qrbVqY9uP8pf0x9WPW2a)8GYr2S`&w?lpqA;xtQ~wYtEF>HWae9* zR%`a+ciQJ18i=aTD@AVbT!~ph4^z0{O?HLAVy7i@)+VztD< zY20_}`M+1zn6Qq&?*d(d)liAHa{-wCub%s5Wv5yY+kI+7_|Q*@V%0>3qw`R?B6lpMpJx)UQ+^qV;#8Frp$H0n`t%3wt{kf$lD@|j6;VT zM&rA#<}CmnTPC>6&oc%TPk2?{*12T2b^s9*n42c8-xg7#YT>{+1B7OmN!)b&ZFdr! ztxw=^a-4K~VSyAJJt*4{oz81=$iX_>dKH3n`k=<80$WoxLS z&R!;Vr)7 zu*#~QhHNjwyt*!1giK9n{V}>KhSTJP3WA)+ySpJ}^IP1cNNxELs$NlZ9^rG8%^xQ) zO{+{CGlQf6OKm>;+G z=xAoe-T}D*)-3D12L##&mC0Jtp3C2$%taB-sgU6EAMpH#)1O1it>UQZ<7z3G^cEy~iBD<4beXf1PK``!;sJg&!svtaT1;u`l3 zz1)VsIQ)=9d3iK2yU;(2tS&~)YnL{`Xbj`4u6|AtSE78k#+|gnc9d3^Ku^07;j-0& z-$wda#RlK!#((s}ib?U|MjaUXsbI}{0XIkm0Kn{42DUj8=8|u(tA+`*t{d&t`+_mH z=(SIUeS;R+TEX&HT%Pa`Okd&poh$1B*u`qs7Fn*I#jCf!U!!gE7`i*Zt&RCg(Ae5O z2Y6Y$MI%t1DeJ#Fkxt%xYImj2bIe?Y)LIt-QO?CVRsSkOY5fz0$$IaB_~#5MS~KTl zy+|b0l9S~wwvcD~N@M9y8Ql9>^!GZhkCdX%s3jLNU7X_%=SIpLTz|X{t|v$KOo0JP zfTy`h^UoDFux0j%N+L1EfH-bO+%|qs-92tL`2eg7HPBCBDv>NiH$GS!vyMGz_?q!Y z5r8+Dp!trnj4ST>BAaOFQ)aMlI5oM(V?SnwQayA zU+@pyM8Dj&q@*02Hj}&q=VwFuuA>epA=Agx_Ya8}iD_y}Vsq7F^3sTPds@lorqid7 z6d7uszNU8g2KuLg?L#QAgQ8L|f-9GNq%eK{moBhwkhvxMsOAFpErKJThA~fhic|sm z0Pu%7*NF@mh1@Zma2lA1@dkeR2h?e1OpIJiP}-MRn7COs92xbnzB#J1o8ke2Z}hG> zfpi$mNCKrT-p;E&n8SLMxwAqv%HfO$+Xp+5?C$Pg3cGFvn~wge%>n^`Cm~->Rl+(> zxUs}xgeY^=e&!{dR2m{;ECaqWtWQ-l_^(nG!$=~bklT8y(5#nE-g?QNtXP+!8io3S z5e%a6z;&RxO7&1E&S0)r1+(x0DFOd+#vHyX&$Qz)XG_JyYX%T=^Q!MB$|DA^$V6FS zggWL=_j%jO0&<|2#LuhQd*zUl$;EZ?Xb2O2t#$$IDXHJ^IwsL-sYol)n`oh}hQrZp zy56wSQp{9YgfF(#`$97-!R=K9(O2kLP5Snq?(|A6&1=|wYs4oJZ`XCr^Im@-(&m0G z%HAlVF>A(A7eU>J7*8d0X$%)z;4zv^4p@zx;?6M(E91&aR|t8wOa-Wh1wB3m)=s?V zS)m7|^QeVZ2_2kJC#~1V2dK_NpjCZ%nbG@*d6z|J$N0&VOjR!IA=niT(bGN;8pSLG z9MQ_!8ev9A3jW1zd>Iy`;u8JGFo@CDX|fwiWp5+;HwZUoJ*Em5OgnQzmz`JOu=l;X zWS&1s)^(GAl-4sVfn-(-9as75E;2dB?Tl?sBwcE6&rPU8^f|x;qEPFvD9#C1<4(}$ z3$3MVUt3GWbNPC$Hf^X{PXW(G{xa?v8wxoM$ z^j~f3Z!$Ipi!!&@8Lb<%@enPQJ&;)wvl*~3N7^Dkn2`F#VYI5vhN~vT{LjL=2ykuI zD2kXWQRE$#22#5`(L%TC8fMkk`%RuI=W8uqX0}%gtd=@@y*YYO_X(K2I*rrbA(k5a zZZFn=N4tzu?q$Qu^WEUSzPvlW^fRN&!!eNxeKBI0`Un;0d3EUuXXjKfhlnM-Jy%K!9$D*k9 zhR43&Yo5~j+`C6nU^evf)N;*2N{CV>z@w<9pqAN&3rlhDU4@QqDVs)>a7yPGeS3Vk zrX7WwUxiI3c-c=diiaQ$Y$ITT&*uwe@eGV4Q45P%o1*#-Id-pi<|=N#?P~lKrqBRR zRgrIKf7{|X&t2B{-G)Z7DLVO!_pEIZs(CSd)8B%PZo%s#7?{F^n^m`y`^!UcOh}ls z8`fM<6O277L_dNh@LMj72*@f6@in1#?Sc!^uSnWq$yafF+WZR2>poL|9a;U%E!!e@ z74c-Uft{}Zh^jD#&2L}4tmxfu@;cI8;*C;2*yLb>4 zD{3(D6vvDxPn-AN?CphbIx^K?d*rdi?DzQ+ETSK9hZ9&$8`a8tY*Ka5El<)c#t%aA zas)+z>Es3Xmm8d*%DDXo4W)393$Bf4`mU6=6ZspGs$9i}nl zr%8wsW6d%`biSU6%x5Mt?QMOxJF?x7;@E_;N3`b2r~aQGIdvE&UG|D{d>N%prZc?E z83EmSe7{CcU?@Lf(PNxf)@9+ozWgdxAKcZHvDFsGPSD{-Bsd2FDB;=DIi#Q7lr4L< zj!cI7S}eNaW7M<$5TUwk? zJPqloYjAva&aNs=3$Wt@j;|Xt6nmfwcw{dJ)hsBEJ zNK~TZ3=1!T8b4!tD+f^7LD5ROVL5I;J5J3+z@-;`ONqVrvkcYdFgdboEBgFwtLNg9 zjlvs%p(%b=E(}VXf!#F4E$NEBGDvEFE9Qx9!D)(2H9C}NM;)GAST#hVTUQ9e^!gLd zx@ykHAs}$QJs<*eEuHTs%@bp<4=MRRz%*a};JP4*-c+LSP< zWF*AN9nb6C*Dv8aConGqBxDOWwW!pDcBV1N4u7m~XV4Idk4S=q_lB8gn+iCY)Ts3E zu;avi|L{WBN<_|*RA7X|?uQjo+i@=zDhz$oGwkQb5QaRutfWVc-J|23_%th{YS%Dq zGNPc&OtEo{T6?H${wg~yMtF=!0LO6Z%92mtyL&)TZu@m^F~Aw#kvGhHHOoKBve&hMtxdcdUC6<1e=jBAuy~ zH8tT|A^BH`yNh~Jp+ztnKPE(s{iHq2bcx>`mg9Zn&<+*n>Q6gBl3XYJznqN*ZaB66 zy)(k7GebtCB)uu{S<}`5Ir~EmC(I**l*h(VX)`Mug7X?*-E|HAj@4x6nC3iI7;^d6 zCO1a3KkvK(xXia3SzyhNFMYXc|1Tiqp(fCAp~UEif zov-NlA%gF%nYW+0_@MRU7n*EL%gLU|pcdf4zQId;8@i5fMuIQUq@8|6j+E%IHe?jH z3t3N%I@th~5UmoBC(=RrGOB`~B75D3y>co?1Fr8Fw#@VqzKIJc!PJ%_}1V6MSR5nH^(!fxW zM9jiy?+CZ^VR%FhW_7)7WsXM^(M6lJ&?vLO3dOU(VJ6H|b^4`NGzxC%g~UyQj`TC) zgCN|iKL1*ga1g??YSUzJ+2}gq(N=RJUY2*3ADV~!+H94H9kjgEr!YJ`P=|Ozs<(-O0Vo zBx3$Hy+0BoWY~_abyE6Cn^@oT<$7PhRhlb}X=mHI+iX`)YB3#NKBq~-w5&4|E2Tr> zwAnXT3rT2Js8gIe)td`%2j$|JM*^&E)^lc!_Sr@ z#7E7?az+o@lQe4*W&YUbfYxsYD2ke0jYJocGIS_=$MX%BNbx6VS)aEuAV@&(5^WX_ z>LFC2Vt|p-HZ@_9qeRR@k>M2-!a+*6)x#>uuBsVDwci{as-(n9?7+I-5M4sMw>*3> zVcaqhaWpxLCpsMO0{=EcI@dY{90ITS8m%Rk%5&-;Y%~}%4cqIj9ntOH8Pk@xW^bbh z>gCs*2aXtVC*+=^KZMpNFD z5tydO&4EhK9Eln)-}GR}*>bYZA;xI@z#(rH2TXqZR6J(oC%y*wc|F>JOZ`&WI?Ssp zK|}*eye_P~pNg37Kb@-bI%K5}MI1rr%xfloaXFWkt`{A{V}R?|prU_7w9={lvHXvc z^eGUw<>vrH6+uLeb}tWz7POKA>5|dNoYH%%`EqR~&L>393Ugi5 zEK?zf4J+a!A{!XNFqg_`bBoVnzU{Qs(l#aa=9`_1a&q@!R7f`OF2LY8nAoavo)NR6 z;4{brynn%GN7DIvLvm9xB9zkX?>`e7;06_UmEOi$4Mx|Aa8KKWuO0e>wXye#kBjhW z=Zr@ftc%d6yjeB)cw-KmBMQlTH32vGxl$_dCQS4YTFna9#NWC6w84&YsY8`&T1B1S zilIA7>L$G}Ik3EFRhMOGnN?b}S;~x5@L-v?m}^6|}g!uLXVK4Q&LaS#u4W)z`YeC({rYlb_Rf$bd- z4I3qN%Nt6*>dZ=)lXQ+Q*0jf00^iKN;6Vs@2Z4=UsZq|7C zBfp9hnAG38ubX^#I1C`Y>L==Pnz)`}4TvBw8an@GA7i1f1nm_$U-ojxBxYAPg0XLi zTtA`rAMA%HbBRU6<?FWe@$lYL-I) z9}w%}xAa7U{7=mt+|XiOV}vAfvG3L@YSTXV;+5#%@7@K=mZaJ+_soRu%A^Pt+NK3X zJzR->y-&Ymg6YggfCr>@S;*2AtIPB9*Z52mWX4F+QJ-+VZE>(Fb^TF>5875N+4vg6B;>e`-ei5>UVWy zPgp2!Q{<4|e5;_~+Zu&Fafnndt*|a}WMcxh=79Z?5c|MY-2>+w;SGfrQ;}NxBHHl8 zLslV0TP%aq(VL>D13nk>F5MIg>){_B4jb!*dbDCe1oWjn;1+4^E3qTcDWr1zfyHG` z%{2yiZe6l~0O{-PJHH4C`p%cg3Ki&y8Qu{4iZ~iBeRqIoEgi5qzP7jSsP!66m2??m z)Uk4HXSQSRljUZz4>nXLDqo+3yIhhyp*WI=0bUx1^pG3-wr~*1ZmHe0jtHNcD4uJtXtxp@}!23x1Tn^ zof2AZ=XQQtIfKB>qnjrAQX+yc^I!;p2at7Tj1?3J!+t~@&g7mzlbmK{uFZ0Gl>qLlH*$zsItj^@W9 zn7hwt-Xp5Y4pjAI)AsWybDm~n16yE|n7~}f^k5eSM5E;&Vu4DY@p?2T`JVUn!Nf%; zOovPz68|eRjNz(O9X?DZc!q3)O8(8{DpJ;Y#u?Vx za%sCwmEvc{33F%Bd^D0TeUj2(5Q+%Koo@rg4=9vr5xHCF>XJq&r1F+f{$=)VX@?~Gbo*r+P!p@#7{K?NJCoppYFsu}4Vr0Kf zM3J^5&yuxX7`0IfsUI>Gr4rFG$ZovWVA-*(X-7OEczd`qm2S0CFm$ZKk^GUTCxM_An%MLy|jO%Zec@{@XEU6p$SVIY|W*5aZ~5Lt@h!IJpu8uO+1 zh&f@i!c^;swDb|6v!X~HfBvSI3&#sEnM(|UX5BdgC)ViN7&F*lrxBU&X2RHjEXGKl z-S}tCJWjyW6I{ZdJ059e;(FoA6QbN%3LB*I>kaBg&Ymt*1iDNG9n?lbs=Kbh?bf%E zsRT!z^D-v}KKka)7-kE6TYh=t)D{-_Ih4EVnE6vD+9S|pO&%7diV-qge~<;ADAJgc zbfSrQt?x7n>*0a9*Kzr#Bo8hlvd3UH>+y-iV1INmNCGHD#~2wYCp}N#Gk6kb*T^+U z4|gY#0Q}w@5_Q^Yw1PbztZY=57&~$jd<}YaBP3jK3GPy7d>acj9CU*Py#K$iI-)AT zPr>uiRuWyl#&`^C#m+aU7tRTd(d5s*7s9!-Mfo|=h7UEX+2=PI%D8u!yJw;pW-g2# zX9J=X_Kyti2Q6}Z2(<~_xT=7(b;ayGeGF4Jg;^*ya^qp15sV%&BC>dHQ)h?C>5I5XfwctZMR{a0^AIl`_f@Nl#2Sxw3P^=M-(2Y$Yy!K#ObnrRZ63Nla1lXzbuNWx1cxH>u9s>= z>lxg_9o+e8#bnR6!i>wi*s-Nlu^r$Su8A_Z@2x;_7=orKv_#s#lgl+Q^cl0v-Z3^$ zf5G?)BgOw|pqi&$_Qadc&E;W6MWT#h*9k*^CO8z&v6-Pd-R$^*wRW!9+E`b=>H8qo zIkXs{vcum>kh4P7hl0m1>bu=4D{vg6H*sT_QtS6)i<87Bkr&bun{l?)GTVUs!O_GO zXwa@(Ijd3waAiFQnURd?_=<8w{BG<8^;9fp;s!H!4TaleQ~>fq$t1RP=Y`rufRc&= z;~?8XuLnc8o|BPT8awWh5NZ@w@&$vY_#Rf^Zalf5;9)mE<9T2(K z6sK|+1H7qyxJ0E~%seVA)!&X9au8DVlpzggt=miBsL*evD@Vyy_t9oWO1TKEa^ke+ z6WxDDx)pTy|Jm$c8LRnOMrCHekEGDa4qG3iCS(wy*)1{pEh4g>`M+O%w1Jc z70P%!sb#;&hxFF>Y^~qdqK8J{gahXMr<`|t9|N^H)Ij~^Qzaou`poAMfmoov3ZmJ) zmHcFlg;yKTlQ$U2NX8h=)os4dY0iZ4|Cbr+ODn+_f2kr%xB;kaf!q+uE&yM+<0N8` zO=Sd03Snc`BBm2_a@wmi%wDzu@c9B0x19*g#x!xF%eA@r_BBcV;vw)QDQOf}+Iwh5-gOec?{CJPI!3T-zX)*5EW zag(?$rr9C?2%MKQm?h}GAx^9-$UZwIRF@k@#l&qXOMUD@QwRmmgJ#!^oi_XTr&L7J zbP{oFvLC_CEB-96olHFXh4LPJmozoxYaiN{S3|o3mKi&cEBmsaUKHDXx;ECmgvlPy zR2Z*%u17h#B&4d=$R4g-1p$avhtWFwxl0=$I^%=@nj%7Hp@$OLb=H1k4b4%_X_-*X z2=K$UcEng7$G+P@EG0diA5T$65^MT_4mkiH*?DynY%3CU+6pV(X zg6}XuP`Efn|0$IR+k*|1Ht=bC=esCX{n51*0xDLbEQ6IW)tL2u&sgu-o7fHcitVQcbMij*zyfFxv+3fb}TwW$ISAO zuUC{5pgk=z9pB23uXGk+iB?T9s?@GBCvI2PfNKbOPD49Rco)ob1>%+!k!oEM=j9aTCURFdviyJ7ejr6Z2zSDaOUeb zagZ73J=k~O8wX9ism`1GkBDNcPI(0@O$U%qz5x@UYg^=nuzR3=iz+GX<1Cq}PbG_v z?f`I6%^?VCAH4>+3d47o$cYwGnh+r1&vcRo?R-zEXu6V*)9r$SCFi6Ww&;B=H3C}K zjcuvpw1ngS5C>-S>3TdpI1_ifsu{A~RW5}mj>vFayTVW{Z%fvc4e%BRB0zk{vMNK2 z&93;FU5oiRo4f!HweC69ay4CioiCxUn#LKXhiwOmya5#rd3w1m`swFZe$ILskM5c?6ae|4#bss7I>^n zZnv`j_DG0)3Cu<&>hIb?xj@vCK?izTz-QzAdlynfOh3BC&iEVv8?_Ludx}xv=tIi7 z@svU?upTxT^EYRDrw_iV8v&0+V`i#eA9eHw(OW?;6`ry zZg_Q&y#4c*EL>27$}Cv+-S#Yng0PB$ogwReo!!&ew|so+|+WTRg~eH zq9AWI;3GoR3Z79!D!oLLW{~z7IIHPizPc_z-J2Yeh#`T_6%Ud`R2m|plSwE*OAl5E zt6j}v14629p+6s9X*mq7KnT0!WEd^J+$fREuw!TK3RHby?-G0GCfzq83=<`tn{V1H z3ZIbblxdd;fBcm@-UHnE@BoF*=1)8`slRnDqK93~`_2Tjp_ls@Y-_Zx(IjuGDFlha zjj!WRPjd7FtB@=*khbDOQ={*9{N7g%`P5GY1*tNisQ{V%a1jVp7=0#^RoW0Fwr4~F zQ?!XHy~e9~>E2jB2G;8k|9<9aLlk|F>eGH*sK7J3N>!spWOuU=9KcjduE$Wyarnl3 zgh(hP564>(<}Wb4DahZOxMW6^NnUJYR^6tUI{%BjO5inbaU%s^#@QT__qccrV8w+@ za&3ERK0KN$^}W}e?%Toi<^GJ+@8l6rRAk6xwWBPt#Hgl#wD*uMfK<2kBRFQ%8I{pY z;5-jh3c?l(%!L0L4q!NEO#T-xUA#oFlx^oQ)EV~>QrZ^h_8w$YX+(f(km z;ZT2+Ga@9Xb3Pj_&dp&|`x9UfcZMi;ZJ@P>#`HpdN_)Z$s}kWkDotU9z6ew+}J-Xtc zqqS&@d;jqP&3E2K*VZTjfVL>iTMRr%(p-IhgISN`YRtwanz2c4Pj$B*{pd&khP7TD zk)WA5_L8dyVZ7b|diTNgRwuKzz58q9khye#&(LYLTA|bS!%TDo@tL+PI`(0}c>Jssd|FE}sn=hlbDC;Ur>&|)(3}U}FSKfUS*${DnK}JD| z8src>{$b@@4W?Q>C_bGtbm%9w_%|AGx8}0`2Hut25X(}OAS>hAQRO)dIEVhYOalE% zOVV&#dJzY`n%*2JD>5h?VENfpUh2EJcVT@ZLlTTlbJ52E0z$P_9_ z7D~tKRR*-Jj;m~i+IE^Z1ozUs$w#ywrLA9TpCzXLULd>XpYV-LW>37;)y+$t9p}KM zicc`1*jHE2lfHosBhNAsWoqIa0iOwADBd;s^;yYJ^9g7t{on4$eIIcU0;7}%OZAyK z=qRm-(V+@D;6opjrSe{Z;&ANh@avk-PIiOHa7DFKlg;uTo^u>Cn^Hl2Ce^;%0#u~7 zqpWfs`S~j^;qgv3=jNEsl|xF2V!;2}fEyjsmFmwzBUp9#sKn=2enez58I_)8(xB0FVJ~q2Cci0AS>7;_WWd2T%sf>=Jk1GRxw6FmS!x@esD9a|i%?(J^sY33ZAI}Uf zlnp=hbDcRD0;KC3|AO4-x1_|Y*s%bX2~%tU#~Bsu)H?9MJDx(7MWViGl;iwMT$~lo zp(;UYHgJd+vhCmA5&YAZ90g`+p!fBFLzX@XjCzJ6-xj^E6x#d@(oHJ~rxb~dVSi5D z*}a{8EyjW&+TuCZwi1QD?=wY79DG zwi^>5RIF9(1z@K1%19c=5}}|rECOU*1l|#si$~V*9EfH?4F*gj6lG>p&nPe?@xTFTauemik9(-WvaaUiuoeh;8MvpO@&!z!f0;&b-&p zS%X1&f%%R7p0i_-%lxF4{SZiTXjItL{Fuv6w#Kz&dlGB8zW^N3m>;KpZUv%&i6%VV zF?Vs!kzngXTs~0AqQ}njeN?CQ>IJ1;(ss&T+m~l|H1gQ#J1QiAr);DKH+c_A6Lma? z1l8$geWfA@=C#9paM}pMt^!m}EaDnA@dJ?}1wtmycn*gf`VyffSPbA_Mc(n+D4ECp z;})@6IWZ3Rno-mh)x!SG$EQsR3x*%~$VLofr%6|c4Wv89a@&x-3=q@Pg*3fk#B3BY zt%Rgc&YN7;{}R0DA4E~|u?B!+1Kxp3P*gt2WlUQdr%CrSWt4awPI+~FUSUq0)xFJb zEC)idaM@d#+Vz`Mc%e z)UY#^I5|5DEKo#z-z|_hRG8I(g%xQWl*B*8S`}nT{bR{WoC&hLr~hBHykw@-G$^3d zKHU01Kq7qTJQK1V5|W-^vdE4Y8&eW^>Czj%b6{ugyZcvkLZl_s3>f%2Ba%Z`c16zZ zvt(Dl)eCF4CljPXNcij>Bv4n3Y&Qsb%3iK~x|lyi(Fz~Ccs|)1V^lrtf%|N(U420` zY*Tmfb^HXdzJw~Lewj{eGjpDQI!+}q-6N5US~^%@v9E+#IbohnVKeNI*;hMAJ&(T~ z*km4kU{$et@GEePJJ{-J;necKOT&Qx_Z&XVS>q`z?OYcM`?m4{_$1tS1>*u>Y0P@n z;c5Nr{6H+zpUpbP$W6dI#NNgF`~m2r-Puza!hVw~sJCvHQos$wxD78r3!wGQtfyFt z-=th~R?ZHKqm2Q{$h9gR4B^)$yI&Wm&z9FCb~&qKF2=;7NPxKyl^AAN%n-dmaWT;@ zT+A0O1!OcwJH$Hx&X5_1+w*j{@0clVTS&gx-9dFYc)$J3MBjJ1_vRuReI^=RYpTru z+fkT)6~{!NErXH>CSgdxM;q3&=DXOTw+3i?Pe+mRn+dis-V0w2_c+C9p@6ov}zbK4dgd@J~igRTss zeJ*Td)9~adM4}ff%`9;@>{Kz7;&MfR?p2kP1C|h`ypW>?k#LJCPg-PyzZUxg=FWG9 zhp#WymGi^@b|gvuCY|QLW0s;Bi{NG1Z*~e0kceZf>bZ{q^pw zSGG)EX+|u!@YbW7ePXmQhW)o4duDD(mDba29N#PG8@PYP$pbpLJuB@3j{9yDY=Egn zRc_m8bn?~4I4sAVCCJ3ohEB7L&Ffa1+R<>fVvb5tW}Ni7bCpE;kefgbzsQr|=WLJ% zDq5JK@BT%Eh^;f@L$>i6bfdBecFc|y%HZ!gT>>6`1b*;()?%x4wn)A!r4WM7WoUFA! zWjuDpc|oucSQlbGRZx+lgJ z8l4Hr>J#nS;(nUd*PuP(EmWGDwZ~==h?MCe3?X%iR3Ra0kuDznjd`yJXOl#zm|GGB zvyf=T{B8Rm&X+SvogXNJbvVe6A0mtjXe}<4*{+0)u+X_^r0Fnxd^XIY1?-V(OFZ@N zYXbnO=QBiU0~XV2Rz&npMKotE3|tY0kZKBqA(24arZOyG+Gb+i+ z>NOXtHnQ9d+gKcL4a{n z%G?FomTz~V4{B`g;sK)?{f>*0zVj695;HN2v2+x5qQMz%*uY!tff4x&X=W~S_D`Nf z+Eo@KxJJWl(9`T5?%kC(^F?V}CCDSrjYC}4j-{|MocFTJhN6bU|r(N`vS9S1hvqKMp=%^OW`8(~(&wGP6VM8kO}F`Fm@7_#2a zzQ*Vq)+0?`b}x~A1gpc=&5XAO1RgaN>qIAP?LhdPbKn4fK-fpgCKE~Z^$d&%l5dY2 z1+*qxW+4wg#@Z&JAz>JWHJ) zbZGrF-lrN>I@Zppgi)&fo|+0;_I^NAi@v$)sem6R!L6{V+hc6CPlvhUzxrZ<`8DtH zLLSAM-aA+6AvSTa2Jo9ur1T z+>iOKZomQRjLoRa(X?_!WxkQ$2jzJ(0hQYhY+~{H!v_xak0P9nIQG7kQAI-1$OM?!vb`vle5s_-`vfn%^&`xBm-Qo@ zAF8mxjkwo7q1()X3d+6g=erWP!Y1wK;MM4uX_x0d+nt>=witA+A2)oKZkhW_{Q_PU zLACGo5x-9H6F4gtceM}R1FIZ9XSX6%?$Xp}>04@U{Z{av1oWl2dDxyaMKb_ncX)SUmhCQ_hKw4YzpOUYW&rwbNd?F(}a3gg+(ZjctNibJo;V`3+ zWvb~b#|zR)^gIr5DS|$$mI}f(GO8xWQ1Sw8?^6y6(ew_f6TW2!Kp(+L3sJZI`A*Rd zMe7Xc-K0k9;n-oT;weNu9Y+f&Y-r#eA@}ArxnDY0x&xPJ55|D$eTEj`X&6s7!fFs= z;I;K_^~P;S>d0E#T5k>BuX64kTM7o&P!#Df>bCn#0|1q)xq`#^pdSkO6|Xsu>dIJ0 z2|I>E0^v|lMM-B- zR3y{3x1NptDXottP&mQFAg<5)SN1*KwS<+?EfkAmop;1@d4I8Ril1Mo%30U=1=?5? zuy0^{rdF9n|H=0R7arix_q%28pR;3mo;D;O}raf{x zBN=Pyq?HSOK_dwu#_ZDO)~tiW$aa3nukStciq-tp{qr}7FT*M9Y>6x=n5m%Wm9^c2b+ z*SLU)`Tw|z+^NHP>7iq+^zlYlD3{YgMJ6>~ggtU|%MTRgJ3Y68BF|pe>YVCY&Douj zV`uva*+-N)U{ zsKaeKQ0Dff$Gd941#$>$)YC)UuvW8`2mmv1t5mR=6FYheEV`kSFO{c8*yM=UwuZ<8 zpSdn?nBY=-;7dO#+di9&EK6k#azV9M0Uo-%abxfMng!+pTZL4LMS}R}g`gPdRLLg_ z1hpvS%q~C^p=d{!U{6Y;&e09)4ygdTUd&c`L=2(c4XLrI|Yb}z{o*Cob@SRXeu4fzd|iEboA zNEWzGu)+oHpXJaf>}lc@H#f@PbB=_%Hi6;8Jq_~`;D#+-sd?ud!I?Iix78c%~qtpn{}Qtm5S&>emAfA*k_GG@0kPnpsQ zn>bELBN~R+Pd^1d8PM=%B?t8Z9ngQ+C63g$PVWJpz1vn3Cdxxj9?cE|Fed17K{YL` zVNtHEl`A+jn;o-|-2k=^|2_w#l25`g1U!t(n_0VIH$gQFQ+xggTSIktJYf*o;)E~5 z_ZBmFaa)rdEYL@M5=p3H+1rr+uOm^Qzwz0DUCz4rKbxQ24!dCY;BN25aS_oH)SF<- zU2~O>+7y*e*?oKYT&F&m^3cM&5WI3n+mhKijX7^0shj!8&1w`tFJ|WGbe6Vlw`%cI z>=^K+1rHjln`b!;W)ktgap}+Alw6Q~Nhv8jKfXzdA4Wj`4~Gpk)aH*sOMwzuLB{4w zKA3rqbUdeok=|$xps~J-aeigz>%6<>mAVH$eKps~UX-o~I&%LB91oQOni}S)2z`|vp1Ev&xD{dF+1sEFQ zUI`tdA9i%ox%QdT-ZE6`jqqFa;LN!@)vkq<6#cQ>|Idix7|?a`9L1{B7YEX+kF2hU z34Lry`{|iCjT|Yh4a<(@1ulZEo@psH9M8KD;!~ zC2r_m!%aNOc7Smn>^pc#!0FjkFRhgwPYQ z2c15-*-X@s#s9ZLv&!<%i))(30QN6uzT)bXBdN}EdtN!Sq>a4w9qTlGYrg{{K_vO( zy>(D+kR{~=umb1AZB&+T=J#{a1p8fO{uXUev`U4QL^stC_Ywog5wq1H0>ke-fke5}WpEg)l|?~Xarv*~H)aVqQe zq6xv$hz>U}rntbJ9px{h0cMK(^Kp#Gx%RrRo}dF9eswzIHPdhZ1lsNzjWjQ74(y8d zYtx*2`gW9a$U1V;;nZYkm9DCfvmgc4lfWAaKZjD+A9I}731LtF4phz!GaJpy_QwF6 zKuXhFmm~&mNMv;D1B)fzfre*xVkb!CTc--ujEn-%FAEy;d?~8Zd62`nt$zLG<_GFx zBudwe#i(DdDT>yo&Z5UJkg!2Zl2!;O6ppo|(|%mQicwjHEHrKi_9%)%QdfmJVkJS8!UIYHR4gBH`h%_dx>#Cm$H?ny6 zr0D)@m2_2o{x%i~HHeD6XF-n!-xjpgQm`J995B2FATErT4z5W*1LeKoaznI%@=D(W z4UUTCCdNdpDOx+gmFo~I_J7+0R&svTpzVut!#0+y(V)jPC!&zi0?jh&SlfFFAUMov z179*BiM{^KR=cE{uNgR>fAx^U$2DGQu=Cp%2crE+Qi)V+LM;&; zS<_S$N6d(_cma26X3=x#sYh13@ZYK(C|4OkBqfXEE#$$@9tOg<{%*>GdDa%-Bf2wN z0b4=3xEzY-R;2_7EY}53SJ>VHOj^$1Xxo21rQnEL`D#z#WlX1yIT#48LZ%)rxa;ZZ z9EYl5e$Sas;@pnQyf}a2H_-#js}mFcwU6K{@Sfl*o_r0Oz7)R_qbqAe@U==ptX(<5 z$(O|uwLXU)H7FeO>YAnU;ucJ$UCe!v87q@0dSZ>)SYOpsZ&>~p%H=hXc%NQyMYf*Yc1+||% z54%3hh2MmwL1yHLV|AP6va(D_V4&5tmC6c=YR`*0N%0S0O6Vg2^UgEyVep@X8XIs3 zb%M}$A~rZp11SlrbjPHdH1-Pbe?m`UvuRW|v^Htzkx^r(zy`FeaS$R3vS z-U(StfGdUSM)||_Ng!aJE0-PlF8bR&Xs{(2k~*E(dN*5mP69-FQ*c8o2s3n$)!V;f z`gBsWMj{FnTA0m*vCQi25<>bUJOQ0fG<%|DfE<$_ei^BM1!Lo`rp{2XWkHkcc*;>v zBz@{ZX8pVoz6?v1szY@4@GlE#qpA7do{fd+Z<4MZ#)aNv-X&1+_fS93a=KVmxX(Uw z@pQh9Z)4>U-g@zRz8ZfmzEj)S9{lT* zkG0;6k%8`1)k|(bNUD-K3TkMExzzH7GoV4qG5&4`BQcsn&;bMkWIZE@`j7#;N$Gpm zen4r`PgzvnMZY_=w7={3c*35ju+5rTC(SHSPXUu%1z@0L$5~NzWvCmMroAjpbw*u{ z@rbGFZTyK~;=HU-uU&_HDKY*+3THJ=Tr5jSGq8lDIpr_f)F#VUT%R^$tH`J{)XO_@ zx{bXNWHm6x<&DVL=niThSW8+)UzucTTv_e6kn->NPVU46U38*k*msnY$hvd(^$X^CUc}cg6*Ap+&*8cE- zDWmCMU1ngVD6JH})Uv^FG3gUm3zxwP^p#aA-lq4BBkr9o8w(~zUjIWQ0VtnU$|QF% zO4B1tJmnl|9fIhmPYi2%^5I%Xxm0rGsVl4Iqz9Pxmz z6>;gVl-GR|hUVRzJK;qQbO)!~3bs#_>|v_3^LiS>Z|TP2`b_|;y3H^84Pt*cuY9$O zuB!WsTkCaOR{_rJ5&}YYC7ry+?V<=7uX-x$kgaVs{C&5R?MM%`8-tU2)E>uTt7QzI zFWr)h3<7hdW)^6Mw2e_^lDPpxu&7E>SR}#NbJrDAG=>(yTqIrCtt`b2*So_P^}sn#ZomdJ#c~^ z6&#-|Rsvp=YQ&1^>}SxiWo8DIGB{T!wYpS=R)WC-y9*1-nR#~zWtodWjv3|AQ=O8) zGOGW<--sptYS$esoCY%ztx{7h=EY@>yz17qJhONksjG)InAT6at8$*ICBq$xZ8?cW zFd|2CxfZouN;U;OzzeOUxCdt6j|*(VwiDl-Sh1$g?>|e2p$fL)OLL~}wRtcwAMo}; zzV&aWzW^)sv?lP1s8DWqtXC5=r5rlTI)s8aEs};)&SJl;H^E_r5+!J?4wZCJ?3Dk4 z)x!yeqEyin?!;!t--d7gTrz=CG=TUwk=YJhIoE(a?yC z1w_q2Dp#z~l{2WeVPd#C1wVTIS*VAHkl{)~tiz*iB=QHYSD|dTBMiUs{t)}yZ!`?< zk|byG?IhNamr(rd3m*7W@vKg5D&am^aw{^61Df&8xR>1=%am#E?b?gsF^*}gGAKBk z%lJYXT(htX2;P=0!hpYb%i-u&c$9%mqqJ?sT4C74(z74DE@G z)Go5Qk8);ag>tK?Ai18Z;=qXL0pQ|TpW`MdARyBp)bo2EOHu90^rY=2My|o&&9l1& zWh!}T;Rvx`XAl-?$bzDL2G-f~4{k_skn8u@f4xR)oA0rL4YzXtWi(YE&JJ}uu%Tog zzL(Ua>FJSdMT++}O^Fat8$p&aQqUH%yx{sI2G87lI+#M4fzQzaU5 zJ18XsO`PrKSAm~n4N?~;<-ER>2wPA_fOid%lc=ERXNDyU6D^y@`tT4zVv-v!tOiIa zG`k%iuksOK*Ybp=+{o<1Q~GgI+9aQ}b%%wsCS5KImqe?buGa5ql5%Ix@+~(UkT;^^ zg4@hYhx3Lf`AhTz^b1qSX=2py!V2;!z$jdAqK6qBdj=Eyl$s3<5t{|Wv(oqa_+2_Q z_GyE9oX{7nw6O}A{0XFXx1MSH?lXs)P?_8hLakTWx;K^`_!nF&%zPN{HqU{SgX#d#c_qtG-Z2ao0p%gbKv^P0640Y7)+9cVXkiQ zgN*H%)e!?y;~R=8PBL67E0VEAZ|9q4_yIIn;4p~YJEWPmy$Yq(#?P*UEd^%tZWp~x zZoSQ(*g#-e{pt(vxJaAruZ;|;EZ_y`0Tt%8L1@PldIXVak}nYlAKRj}0TezZp53v9 zvQLeO3i9Pj)mXhsG+-HN@Z^76fOOyAuCK-GBf5`isEjEM zlG#*=c9P@7kN)F!yb3#>Vihx;;Z@=0GiL?iNIzPQ!4Mi)SYVfuiHY8b)~xHEdeRHx zf<E?vPW?SVog{edZK>acM~w8( z6V3;Gq;|f42LsUhN2fvFW>eq)MPnWID~u@bs&e4HPs-!|KZNXrJ7VZAOi<83K{HH> z#39s-?a0_<*)$sxr2i($5kShV{@OOSLH+8RIrV;(;1SHjqL(*C{b9OdPYyPY84Nb$ zDk*YF04toX;d+wA(`cY5o}w%$Ld{tunBK&b*%ocJR9dp4g|4bf*+I^K&tdBJ1N)YI zZtUZH1sJzJ5Hjw4CVEyrLDV!PoYcGkLrO%%VBI~ zX#qBU&a1wrkRUyCt;*n4z`Q91p#T&KTdms?E4FoOkN78y<8nRmG6PT~s9WlqEfGyu z)>yuw)~s?&7BbY3N{Ae+LA$^`KTAP8?tX1@^|3DB33o!q zT{nsnW8eO)^i0^@GeXNr3^EAu6Sg-K->4CLIdzib`Z3{J0HD<~G>2+SD`4h;aGlNz zxZip6qgL(33~l+8*2(+qFpb9`6==K%!(NBL^|@9>TlkbYRb~w&&p_?+$8p6iO8uWn zMrJ5xqB%H=VVa$f;T|~qyH^lD9w>|*ZDxV)fVMuW0gXMl51==HbGY77y(`xFoUt2g zQ9&woE#(ad_cc-$c0ygQl-w&Wq~331B>1dZ-hX$DeH;dTR>$(o%}#UfXRrY^&a8OQ z!)z)`pJ=eAQBvb{!^f``UZ>*j4JnXUfpsS^*wR3x6IueED-c?H<^>mKzCA*-Yf!ok zCv|{JPCwY>qIQRA!_$z}f6H1c!vj%Fd!pOkevLbg!O$&-yt;*NvvRgimK(hy%cRdG zTMpj{*%xuQdht!G31oQ`y6EEqvjDl`b0Kk(>@+Z{bT7pU%gm z|9`Mom#82L6wNP{d1&-C-1$*jtdN%2vjl#3qY zhMAbwFQL`GGy~dD*Z%|mZWta5#lp1u6OE_RwleN|JO0P>XHlv`*GlFFsi>utpHhpC zQP#7hQ|~MQbVhvSu1`giAO?%-w1KQ8MO1;j^%qP(*7SCS)~3c?PMGS>Ylq>*Ekpl$ zf*}0nMdl@9t(j_K1tY90e9ff2p_!T1Nis&p0M!d6|Ebkt+}b*QrmaiUt6BxU*QR@TM-bhdTGaD21=m0^tNn!-TCRTj75pNX`o z#G5rta}mBtoY)e_LynUVM#_(_+sPXE>1b( zktqyI$L>Q(xF#EZa6%HOPcK0Dg}U*JJqnM0Dx#6A=V$y%>%&dkQ<^Zd=5F+oCu-z*hXLBg&i3E9?a|KcVv|*=Z>3Sp6Nm z+8!fOap=$%fF~jqfIuKUTG{C5puI}Za_iagm6$^U**oq;@mYn;|Hf+bd%)`&qRRU! zwWyuq>loHEMK96`CQ)DmX#Poo$>w!!=<|+b6!ZJm3QJiyz#M^q1?Y%5Rp=*X(rn_b z*a$nnNeUF;{K`|xccIFlL_#WhV3=Yzd+rp5ZHQ<2zK$MFT|Z0FaTq=m9sC&j^xya9 zj@tDtv+ z#!RfALfpyB?0aituUv1kBg#HV8J*1aOc0P|k5tiaKqlht-qeXq!hiNmAsvB~D>?xf zuP=LdY6%rqKqv~%@62)b)~PZ6|B8O*BTOsrZ-RqA@n#r3nzCl`!}vRs|7exs_TMbS zIzo*Ev4emxDR2RBfcqS2r?Oeti^2#cB>c>jNOFvAX;trT_%>*lH@98WT{ zRKuFop|aHWCOCb_ob@g(z9=4El)aC8C(eTA3o-^XYbj~*d8b;5Pw}N-!I$NocyHgY zFR~1LrSM2o!ZY=;3oZE9z6>KR?l)ArMxl?JzVd5|MsqQ#$laEmZRKK(rk@blbAn2_ z?z)NB%>gFF{PY(+F7lJAc0DrgXKB=;rl55pU;#)|17(pPr52RhV=}DR} z7{O9?CUfvvm@D=F7%rPXifo8y&&h6G;iUs%Uc0n5!yJ%7@kM>npVhTJ^s&<3@=ALD zpXP!${(2F#X@63)z(BOmA&RVyUYLFQ7swvPSKECFdvep-Ysutrepn`qz4H5*kb)=> z+~iDDo3KLj^?G6hn<~Jo>hL@b*}?Xpz?Sc(w6#7KK7m!CJD=A_A9cL8ZuMUFqQX&r zc&kAX#d{Z4oe(~@uNEka-ft&Q!OF`*Xr1Aqg+5=|%e772ZN`C8BvCb~%@r4Ec5y132s=!E7w(c?c>$#3%TV20 zY@myATiD-)XPX?-&6WJ%F3+M1edkB}W6Wf`%`?WQI2xESESBB#a)fYNYSz_`=@45E zRf~XwQOzP=qWZSIxnou_raHfUT`AdF$c0oZ&lH9Uf+|n4u4TocgrB6V&nA!4(>jx=WLDq-KLda`v<_3Z=GTGS`+AF*;GU$s!+(6 z1eE3cWT)oLDsVP^_p}M)+Kq7_7!J|rU%o|jEt@)42xkA}j5rjPyc#l_-R?vHV*v#6HM$2Q(!?>lAj( z|182`6H!}5SzLkEtWJ~cbYpp4dp%!g7@BhZegJ+Q=F0V|I#x26nXZ^m3-GN7tCbJ) zt;*L8c{XgVPASj+B_uOWTnHb%I)J_nZlJ$YW--e5Ypsn;z@ zDgdSlN`xhc1}6t{|4h%7&2YvA!5`d=a~vL+yeh6LAX`6yJKsuhQ8K+jN3>z#nt}<0 z9pT5}E_&;n76YN^M*}Gh-=#*x8);a>*L))FZGf zVGlUYP=$>VaZO`#(v1n+0HILE)B&ruS0fsWTUEM{KE-J7Rh26NQF+%yc@l~$7UYEq zRTmu_;g-aQxF(*}CW@vXy9R66a0au%)#4!BaNl-EKv9xndv7ir9h0)#-`}>^hxJXM zbpS#-j{r&oY3*o48wF6@WLtZ#yi(lsj`24-5)w2vIx&E5QuXtlw8GMSS`eQKvYoly zt4_&a8CCJ3@a7*iVb{}8(8`X(sl5ho8`DBRQ(3){K`C^|aWB$Nl6s`4;Q=7r!a^#` zeRyWiz2{bCr*!Ypto6ZYiKRK2-a@Ieow2vVOTdpG=_kZ!8INo-6}t1dvvPWE-zkPP zxTt>bXlPp1>;KBo;p<(`T?PEj3ONAdS`5KzZgsr>ECH%i)k06e z6F0CIin}Op=9%j;<`3JeCH$Id*f2g$B29xp#if>y3#S=FXl&_D@zxx1W8y|y()Ic> z)X1-KW`}@hij)^J{++>5tg%0-JPylD2hsPV7*PFv)&DCrZauN%!yuYc#SlyklB2gK zx0MVVDq}*1r2@;U03fz!93V+EKIT0%xTZ{EFhi5dX)qE1mkX+y0@i=*`BiT(rLR*3 z>BEMAFDH(18jA~is~_kY%5X&SJeyO!>ko%V@MP^{=`v?;R>aL-^d9XP83PDVJNA^1 zH)s;#d-G*!(VKIm!I0mK861*O;eV+bps)bpros zhAu}V0`97AC-#Sv4SSFbs%~{9{ohsmyR}~Iiiz!{I}CUy(>Zw&Ud?u>wqZtH64VYI zp=WYr);Iy_o!$SUo0QK5H+ccb^fKYl1$BGfJrf;Ri9BK0_wwyd%^a6YC^c%1RTP_AUs0z!DQs%uB{4YSAgl@# z1LTJ4AL>VWPTi_6CYtGVi-Y0sse7{X87Sd}#sxaA{~dyk5FZ=IB=C zkQX87COszk1t^MF?0p6qTZ^tYX?LtxQW4&9LQrv6J|PkcA6(>}y&l9_l99+N8A1$F z-pIvX5bz<<>XgM-VX|1p5vuBoC5G5fDL=?u#EFAR>_!FuURo@5DJVepyHILerWw&` zDO~EC7Ae+nP$HbuYxeIT;}O#E%RQS+5xe?(TbbH7Z}n>H`UeX(>*H+OOYG-LvyX{939I+r zz6~Ykg|jc4D~*~ATGjE$Bj4+DYsWtCMxb+$i*7yO4Bk=MUra`1*X8VXhD^=AvH)-iELRKG}9`;Fb@tKC?Ad zbRmTbjSL!8+G8&_j0!HEo=wU6{YVT?wSYx_LoCD(dgu_d7@341-A#Ps{(8t%Tz6^@68%i(LZQrWDn5eM)c_$K2LGN zhRq$jKOyJvO!L40^bX2kZdzrGd~%PZZ@du{oia`_lKtJ^T^WYudg}!8^+#|<)(#Vp z&+Hcl*5PpAchxHyZxT#0S96)FlTm@1g?@LD!M@^Kl%sg`@H~)HXY7t(z9#2*+Bz&N zc9}Sksb}&9U-SSbA(j?5MKX1bHE7T(vCx=P?wGv*Vfk~={)PNK5br1azW!J}Y{U~V z^hl=*a_2pBK7vYik3prKu5Iifgbvoeb%Bn;LwUiHNp(G*(z`3Rc#Y2ly5>$U?{kT5 zs9UDaD4P~fe55jvP#5ud^I@nr$|k4o-WlMKKp}S;e|ncr{5eJ&g@A-^q?yF{Sa|uT z;V;>zHZhLVxS+bqGqif}alvRwlqUL4=;vNHsK3iV=pgsF45n4bs~Z>4_(BCCf4Jw5 zs>5WkiZ<}x^{8rZ_N!<(+io|>$iT(=yf}t!yo$Ct2?1PhfH49qBU``X{Mfd#ZlkHD zq<1KE%X&lENM`wh;txz%xh=pINajIR8~+%nc8V!&!ls2Ect`#M9u)iO37oUExak>J zPAr5V)Q@;XD{v)EiqO_J#r}jPj$FVb?vWUOF%*+no7<-f?L3kTJ z@rW;7ByO_GsUJO27Y6Pj8Gvkh4#FPK*21plAC(P!VQ??^CccbK*0G(#|JIVg4$grQ z+NttCQ%{g`MzOZRU0T@xf1HM4*T3OHI%qs-)F?E*fu;~b#Kr0-fJ^><^=GYy8lz%`1)HZuK;3nPB2gr(2?Zgu)lt0_bByASjslG z2kmybn8j~KpACgS$|w#?{=)7X*3%gX^cE?ZwQtQ?4G-*m8f#(oGQ>`UbK}rVD^!4L zf0WAPULQ$XDf^pW5?{KLHk?AjG=*!6KF6uMnJ1!5?95UV>N?yp;9m~*j|8=jJv+xP zf~KS>b?7cRoJW*Quj$e9PEf|OR-cV(hL0xJ>iuhBFHlzf&@VX|8pRTyL~ua+wf>&$ zH9UZ=SdqE!Bt3JH{StUf2j8^=CN5!u+lb9l)NL_d{W|bU?31HRjmXGz@ywB7Bqd;H4Gyg~`C$SjG0OY;b-Bla2DqdMWchrS4=L&J)Vjz8Z42EZ^s zHWl`!3_6TjUzpHqKxjN-_QM%W=JUu{Yc`KB^2(K^^o-{0c6}p#Pk#vse}8y$AoYx& zAuMZ_7&XubM@a6`tHj1}vKzv{Gf59H+#EOy+myrL27u|sY`;F;s|3~XBOdJn1$Ty7 z1k8jvt2bvIkHn~k&I#%3waivGmO{((>j;gBJR0NSgOzcJ+)6x7S!^(#lNCZ;{AdQN_4$UV-&vvo>$YNlDvkN*gg}J>i8$@q|*ReAy6!E zA!m5n(7O80rmOv~$uy3Q%?fbgUns}@vTMP*y)18;^4GBnZW@DKU+p8@vIte@K()>$ zll!VhLYe!P{MUrit(Z|k5B3XHOX|qzF+202!0uFAo_Cj{ehx)|^pS|7DYgc`dx7`W zfg&wyoF87r4PXzV6dGw+5LUE`h=GbI>hJ13t)71?N+}9HkcVyGslJNaE<$gWF=aKI z%$=nn0mG8ulSqljx9`0e>_?EFz_8I0FdFDw2>>UpJ_LKWuhZXTBerx;EL0P}h?d4}$vP5?)A&jvws$Xhia);~; zL`3!&`AppUn_yfRGSn0!uCOUH;Z^1b^^WB?2)Ey?c_f=KUE91!C!3S{&sa|`kvLF< zM+w8Z#9-4e=B8?VGi`8RUT?~}F%A2UW19cF56Vd3c~0HS>nD>#JSY{zTdr}g!%88j z5zDRD)Y zqeIX9lKrqi@l6v+tUwn+vJ5N4{++N2<9R>p;XyrrEc}&#f55V>3ziX%(H>X$R5}MJ zWj|Wyvo5A+URHxxs>>H8oEklT1$KQ3NI6&~LP7E*!4B?<;UD){?W%OzmPP~tuMVk+ zaeLzizma_gfFQ%bUi(1Mbh&vNv)2O?qF$a_Oa0F?gnZJ}(!n0W>+moGZW>3$eVzOg ztU7?<`SCh(_v$(Gc~aZ1E6rjlvsXQvOF~}3lLp(D)Ixs+Rnz>lQWvz4^@F4fW~1ahKR7CjiwZHSH-Rcu;BlOGtz`YOdu+wkYi*i0)nK~IbZTd` zHev}$%<)VpOryW31;Y@Df(MKTOa$R*AXuZP6ov+SJCgmX^ixCF)U${P*s-bly*SE( zJut>Q(5tZ!y2pYk0P6OO-=#EQDA;Wb#ve1Se&f}SNMCQq{BOB~P15%dQ`3g-)UppkRWVyy@ak_F$zf)wa| zefP4o7 zHucp1L8>BQ`EWc$4-#l$E0CCpsfA4RX(J(-E8PQqnJLMHVav@qA;Rl0(Z(R%2MQ)~ z@a8Z~8>-tDA#Q-u>+nnEQFqPciIKYl3a-8Ea`}lg&fUwPX*#`=yfPW}``gW%RRp$| zh!6pp7OXIrifF=gb%rLR=jJWCK)Pm@C`<9@iP5rO%SmQR*%cR%@I@i2QGoI1uet%Y zK!+M&s$-DXKSQsbsKMm0h+iwJ(!x(}GTCcF7*X_z5^7{OVon*unA7w~OLY@t;{y?r zVn?DjR_SIc-*d$H5%Sm^RI^9M+NSqj3?aa;`%*pF&lG7-eM(}kps!e?U9*S}jVCu5 zd_sRGk>q#wezDvJK2FBS+~`IA0UG<+Wr2RH~a<;%=}WpTY$^< zSv>YTgCxDz+p6+~I+Bz>t_=Kd#TpKU+c-P%bzVb2U4EcQ5~fJ{A`W)SxVL0}|q+w-$MSS#J)&oru33>Y zf38N5TmwwLW{1J-+|iJTdjQtNNd^YN==$=fc-5HZ(8dDU;Kk;LnWI`N`^0xH*4^>A*Np0ke(hE2}j#E#K8FQyAY?9ax{6-Y7nkN@b%@ZiG_zM4R zvD63SW-}UghM}VQd8-MBf_dU%-rvURox{==`$X<|i_c!(#WmOh-*b3X1LcQ=#-L zFb3G&%!&p8<2r1vEWGe=&x!;(RGMreOv0Qt$YLj`uRVSRsRSpkqR)I?c;@Cuc-_gG)CzQfNFCF>v%L zQLYqzJ=XAjkK7I@yqMkSZgk2O?nt<2zzIdWY7s`oEik$04ZDiW8mz?jzi` zYTWl3qzBoy)9nVqDBp9Am6Pt2cK)>fwczZ9bWljlc0S_- zj5n(9IJ)z!elcwM@^SpNGiw=B1Quy;TaV*?uNXD^mqz<&k8GlU4%3D81NSh`-$SQ} zU>A_jWa&f~e}35Q*FW;CvJS#4TIn`YJ{F+CzUuCK{Apq)4#LY|8NMxyUC%4*1tWwK zVOvPUrUNz89M7s+$8W0!;xjXs`(%D1kvw`(OF)hwLI0Otki<+o4n%74_3P}jn|Uat z0#IL1USXTsJm7)HBOzzo3+;dt(JmRdzUFYmmugr}I|xAoByQNcw2o*i(?V%PTt`oQGEWgqZP3ejkK2SpTR%FQ$j}v7y%UPVx}KF zzd)SW6bU@M#WCR6ZU5YyIIHl9BD((3@4`!ReI2%1T;d=cQbBU)7f25|Azo)Y;U4I- znm3VR{X0OBcQ@b+XGacuSWaZ3&ui}ws{45>Q$OC`nnz!?`F=Db7&NdX_NSe53GfKI zyV5J^WX_@XT--WB1-)h0<`fa}hC-C+OL1*d0L0jan~=ts(YXW6qD+-5_@K&CUziMo z+O_D5n~L*<*x?{my8sn64XHXxVA~b~wy)^2*dJ`kFjx?f$-+GPW^`k&qu znGvUguGD7p9|x-taq?EKpBAKE?098VdB`{v?EyieMO8zFp!ZY9$%8{JCES}e*R5Xt zEIS*#9CntBvXm^Cw7-i7*~b6j?I+gGR*m?E^~+e2D)_~y%gQ^h82`lUB<#Uv(3rRu z@W33!HV*Lz4fq|;yg|do>&~Jebabt<@cvFt(B7l7?i9XNg zPDD*oWuIu7I~Exl&UMjroVD2?uEN$7wh{=_j(SG0uBWZGCzg#omDamIeS(yRVJ8p` z6Y^pZ`&TzlmlDvz03mZzF2dy^<2MJm>3@Rq=J7gE@&IaOC`8F`vVhnMJI;@U!vJhb zLSqRl#aq`@6yh)QDeqdc0f4|<62%~`OOz}n+`YKfb>U(B(D}G12Y?q6UBGJj`ynP! z%0E>FLj$l9jOztnEFuz8-*a;%{{?y%>gVZ7a;*r4y>%bFlK`i08WCH-p>=RN+pouhWFXt7INhqS9~z%kerd% zn5Idw1UIYmve*lA=Px$@?tsUW-NYZ6uB6!pJJ$0YWj~=aEi+`Yb3t|(32r))A<}bt zD9y%d~>rLb3 z$mZNGqv)#sJ<(^w)gjcy;zr=GAzoZ^_TtO|8zU@wBV0wspPlH9s^DP&gAwQ*$o$i5 z`4;JjH(%^pSWIa=3brx>5&O-Ast>#!VfQ&@*~Fr8Vg9^hOhf+ZNdG($X&r(D z0{rhjK`UZuDOQZmyu*|o0{_Kd3M4=f!R7(#AIA}&{w55V*@+CN5YebsY@-wTYY!5V z+Bk5O0BoyDIN6d#g3+R;5gUOyf$+B5F*wkQrkWiOzH#X48 zhgz2M-jur@Mu5_xiwd zm-2JAaNsXA)(g*F_al3t8XrE%rqzV(NIz?pn-!J)Toj;+BWj~?3&0}TYQh72=_nTM z4%&`2ANg%28@Xh%n3NGj!Y_NooReOb2*wTtJFh_zvcdAmtT06HPh+T?qHZpyM4%cn zTbnfVKS~xed1kk6raSo1?RXwV1RRy|R$Dp<|!b?4^(rsRbP_ds(ZbMk8AeZL_US5xd!zK3}Q zI?W|T4#Dm)^iSr>xvZZOOE%!`M*1%H{VmlVe}v(C<=fGPWpn?b+ijf_8%Qyhir&R6 zev0SrCW(PbVfR=;Op6as z0(fS6ziBCoaDkHokBPU6(HSmqwIW^rZ{H|7n_1%e6)f5i7Mc0+6Z}tDytTV)xHYV) znG@Qh0S{_&@=PoVzn$m)*NZ+=iT)sA=HCnG)83D~eQhO?0Lw$P!`GTaV6)aI<+z7# zO&$t+w`i3v6n2^DFJ5)iZ7Vj@Y(ma#_+Z{e6N=R!@Ytq+;0$H_qrl0JH^VFcJItK5 zMG|DdlX^^gp#^3!5?BW^xj9nnn+*NavVAaSlfgHsXj+xwXHslo(K4sr$%AW_$niU< z9sX|t@{+oBB)k+)2}JO&6-i!Iy8B6Sa9IrPC!?_+eNRF(6SF_Yxw7=YP^AKhCBHu$ zVQlDqHE8>%#=tc{^;N?HlXlA3>_;@m`2YXC|BaH<`J5>z_td+hmE{*9dPO3hfK0UEeV;BhtdPnf3_W7vs+}>Dv0=>$tvV z7@EFsSEIzY)g;@j*eR0VJb^CkBiu<<(?_&N$4yIAGq9N1(-6c4(_Sw0B)Sa?1nARx zmJtV8>PEQ@$#m6Fr3r^cc?OhbZTtB0~0RQvBI z$O=Q0k_YFm#wUbW2h&-mn#~%BA+*W$ywcd^k}|YaFnBYBQCtOE+nq04t8Y9U!JGGl!ixW>Z-3=xV1P8nR(|l;y9OwjTbA*@GDZU9{33`#zRs!q-E-V zQ1;u?X~_&rs+H;Kx`3S9k8dP>#XGmez&4ipdBDud$kg$R9dFvh*@i?-kB+?27zBDJ zK&hf8Fr%75YC8$R{-u zR(0tlqQBclE>Ic^TDS=A3=O5x)jKO}?%0V!XB2FP!8c!PL_?{+u$qbhhGVdU6M*X# zM9akQ-{^`e*n<9_6)Z$`mC9bg;Zl~qAuRr2kyoLIFKgFu3M{b>`C z?T%Rb5?XxdseX-J+7k#>wsCMcnw8Ceq3sk}mQ#t%KZJH4J5CQm-7zA~3 zIDbtxEPA(}>D-@KC5ONPKcCq_CYi$t-GY9DzV>1;QhpW=&}La>AGRQR@*(W_0(-4k zw9x^WK$33^*Gt%1r&+Y91QrRQ8A&lx@)CbT$7RvqX7bHi6C7bC(kj&? zig`tU-U-RjaL}4G7n`%pIuR&5OPqYU7)i*O#&cTwHx?-_#O>(*+{vW^nHjR?(f<{gL( z2tZ#Ri^xOr`m@()Km3nZ&K@_(T79f=h3o%tAE)_i9tks>3bWnTj{xPLSqVZ@k4i=) z90o1q`)xQ4&%Gc7M6TPcIumhLC}ujJDo}_kOVIV2kDDXY9vOae>J9kyedDo=V67Fo zQeq@8p!vrOh8t!hF}!=WQtF+Q__o8U|%v_{>kuU7Tp2!>t+Z%)`LkKga@+ zNBwCdbI+ZKP(;(-;LWOjGz9{<%0d}BHBVBHm=UvHOz%$11>Xa&B-0QbU$46TChv5O z#{Lo0_%iivLl+U6D(1HP$Uyba7fRAs5MGz{)p|*j2nwi~u=pkCJ1~9}gLK7j8Stq% zm*5O{2Y6>XO}cT7EdRX4wt>SnHyFtb%1gShtd8A%jEz14 z92boqp`Vu&bpHNxStrg99$L|h^{YM}e+0=Ic1oYrrdU4@a3a_>{mZp@I1@8qDGjU< z5YvV{MZe4<5`6#{}{1FGp25?irB*V>WYQ*TVgNm zih>D_;5`17DnS{n3p|#-G{wo~_@jF2#VDn0h*`gz_~ZJw>m*|~4UZd?APkk=>z&%? zQ%@Ua>j>3)ka>(Wl3hfC8ODd2q7mGLUOi3NI7y?IeWVaS2eg5!>94( zMm7Pil5qqOB>hA(nH>>Ib?h;ETf@9jaVTv>M|JMHcI<_=@S~{Gc-2S*S*%RsLP|xF zz3&*5Wt#_9*6MftTNJpMtJm@PC6vSfpraecc=IczXS}FGeh2=(2GzLQ82#sgqGx9d6 zoSEvXgaU7vlDX>crn{dNqK4sU9Ab9>mJSEw-ml*%M*y)NZ^T%3qiW1J3@u_aaQbSe zRWgC##cwhA<&Cv8wpR?qdJ0<*2t^``do(LYJ{o(hIRqdJahfC=9kwh4YIU2p!nVPc zQL?E;q8iig`{sP>^$TVtN#VZQ0gLKfZl0*fJy}>nJ7Csf>4DtP6cz8bxNu_5)c~JV zi~DtF-a1Zd_2?%9hA|wuIDf-lVrk{_^tA)M_;m;uUE>x`tq0NEh$CeF;rZd(r-^A$ zvs+)_>*x-`a#Wmo=8hYj)(;gV2OLqi%*MwJ zb7R(4R1JKIQMq^LO&8SPWmQVuJ)Yw%P=(rT=Kz<|J90#83Z+f5t<_H9TKIx?JyY0B zhcTkb*|mzF#cXbo5oU)x$)0W}h?%e&R$T6vmLiCs-8DS$b3Lh4ap@~tfB1=lxh}U9 z{;pB%C66b=Mh%$80gjDGugY7}P&wNe;p?+eZd%tBD@6TkF;hDWonTyWGQNW(OYOVQ zEuBi{i#f;}XAe7lZvcUMV+k(Je%lN%yZWGsSy$wInpzp5wW#QS(pu;=z7Uc8)to~W z9uU%c96xI9+*t7MvqYWUtBFl5yYuZ;53vXJ^y?dX`^~oRX3$xUHvZb)^KeT5X_azE z1h4|kQJWd`_`9*qEn#z(Xaw$@UI#YUNNOfXxX?SZ92n-OP#ds;j_N>N+8Z>R3>bGr zgI60^d4Wg=|NCPE1xWo$nw`<%)avg;=h*GjVu!c8Zj3A5Ezk5?CP-l(gc=)_E+pU5 zr~TDuBbAyRsR(({C58!6I6@eK4b}@LAl!<2S6yv#_}8fMOLJ?O#>C9ZVLq!9B-Haf zHqTNY9%J}j|9KXs-0-OGCp1QeT)kX_RJ7x%!jjwX9akYw zVj8ib%%Nyv4s;#Wtk)Y<;d!sU7o7Pi$NxDk{JYXANj1$v}P#;Vb;YH0yC zFdJaHCiCpd8m;Xu`@Wre`H0(yio(A4NU;@~-E<9Xxud;~NTP!Ba ze$4aKv&4f_%*lH4*3p_KH2n%K6uv5NsoOwtNP1$^NeXd4VYF_?rcoRMKfkhIrQZ$8 z)2%B;QNcsZtc4Su2?BG}9YkJ1x#xi@wvpy9MF+uVl&&NA-9M{)3qQFV|Mv;s<>@YK zql~7xxLyM}BEVcg{VDhYx!Q#5YtyW&DV3Kd*{J%kX1dBodoW;<6YB_W*4yONr$Xr= zF36FQm2^}%HB~#n!bz?uWtDbyE7eizV+Tz~!^x0QZr$(zDmO#tS9gR7O`scGjFqbw502u@aKdToub-4P2O;|P{FL{JamCD0Ke)XWnX25X#TWh zapztml*;JjARbMV>!h5XxXCwd0KS+7GI3+&s!LH;+xUn+Lb~P{21?pT5AqDhqzV{t z`y)PN!7-g}L&>)Tq=15XAV7;ZFA*b1c)l`?f#phfp$2HULWU=@9=d6SwnbNKK4|Cs zIqKyaK*+-4kAL#s!Fr5I%$A~sMMV2D0PhI}@=^`%_dJ4-5^kHgko6A;i0w)-GCk1O ziTa&Z2s4z5Da8KOkWhtI*uXTnxX00X&hfFIbJM@5E<+#V4OKhCYd zA(#N+@mTmb-6xF)0s0!wtqY=+N;?55t7e);8))wl&p;rY2RA}etXO7dD`ztfI0Tj3 znNcxi+Bt$#(%kHB*0Um{ByrVw22I}Ld}%$sjxbqy-XD~6S<=pK=F>r7UiS++SWn3|Wy!mf=N6jQu^ix(DIkdvEQ^^e+7fn3T z$mO3ZDQ5tV zZr4&TJjGX1!2a4b76cPz@-$z=&Gx+5X8*8a)h8LPfSw2Z` zdZZnrs#IfsyfN%f6?5i<)NSa(eN3{CAJ?O1QBn<;^C;d(ce4_YN2MiX4r*sw1DD9Q zci6$qShY;2PlXwgB#JOMtfO~jGwZK&%;3GpKOg;b1>&I`R$XQ%)}fpU;)@gAZVe^M z9ubuC3M=$v=w`Q;$_>sqJBA8S*sSea+{D$d5UZ-Hk(7>uRfNXD(PEKKFoMGYSh*KJJ#$ynwwuM14-79uwe6En0QF?+Q9qm zE7Qd)-9eqz{;XXMeP2^Q>)YZkAPl00YNJc%pA>u#)?xhybJ@p?2FWlg1iS)X86di7 z8Uo-{Q4*Thi?m4K$4C&Y`c2N$nIFEQZO|cAMMZ(g5+_hU;9%54J;}D$sGvO^)dOPmO(6eEOD)54!T~Qg4@4gHPE* z5!Pj8w@VrQd?DyzfAj@HkBPdrj7i;6+Ogll3iIOe@pUL$>J!ahGdQNHOs`c!SMg@V z!=>@V@#y^=C@zSnjSsLuh}GLOkd|MPCs?gzdC!B{e(Q@6Hbn_`@i06`olucYMbIiH^))Wwhe4j32Gv!auGCZH<3(dSc%oNZ z4}w#^1Z11E8+r5d5=Rr{E@5QRFLbjFE&(8J7j-gd7x%PaYBtT4vxAh5Ck~V=W_~8L z)1&9r7H9A(V4Qw%;AwMyK57K&poRqhcm>18?uBL*S!L0hVEV(61&N@bxqUy;`^ALS ztty(bY)Eb0`VUQ{h!i)~wgycPhoVR1EqFpm9T!#Avt~X`4@l3seZ+%F_)KFyvocX`NTPgB zSmK>NvLMxQUIG0HzEpTY?kKG#M4bxzwtnDEcPelg|%3SJd5B++Kdi@{>no z(stA&L3T;g+jCAlP2jaJ_xq;=gbq+V?4b&ys|qFBZig^9$OrYj!E|DFqsZ*;FE5d> z;dLiH(8Q6>sbdaX6fT4X_tP40p)fm^tRx~LXvJbPzYwM#T&Da&-0y;eZW;&LgM^`z zfV5ax=_pszGpk5ig_(3jF>y(CymW$#6NUzQm-fzIb!6Cj8!f?mgwCxck>q{Ox%tPc zF^vy|!~b0>7K334;n-jk}4K(G0D) zajIcHpx58X2lsLHBA44zA<#cUEkVOWGtOItQ0+(;a=w(g;^!e%x z1O-c#Oh;i66Wpf2G1-`eAE)k4SX``Sxw$w9@oU$Z&3de`xU_~ICUKMD{akGnJGdTH zyNFb;|2+cHQnMlWfB0mC+mV#M>CY3}4`_@XtNc>{Y*#pEVuF$O_9uoG)H)3^~zm@#bP2=K*)j=Nvfp&ucB7|(TFk`q1< zW<+YD^XqiUJ2gb=s~nEDhFcWQXjAy=^<7?kq6@HfCfT!qA5)!+`?>?SzGsPy;i{+r z!Tgy*%t=ORo?ginHYE|&H};RTyQ6;zC|AxoBM!po@YheszgYAWtPS=~TCnwwiugdl z`P884Qs*3gZ;;{up*612uMf!VEcSb-16#a>ZYi?s%RDVEr{yGdDFLa_cza4+GrTO_ z5q^9{Tx)P*a5$L_YO8w<_jE|G(-l$8!pG9f#2lK&X$6EjTdPl6@LUv zm!uGI1A27H-H3OXMfF@kJShh-JlmTZrE1C-D3ty zhF-Mj;chH{73k@ZFfy@ovD1}pyQ2c822pg}>zJ}Zv5*gSTvnN6qeN>j(UTt<-u+Z4 z@G4QmB1n4}ME)T9cIj0}EFC$Y*>$H?pm+((bzJ`-EQ+}__CDpx>2u?Bjo(+@ZR|gj z?j&V0x@B#gni7%ECQ1ICy^(NLCoRW))UiN17PsXVhVg<{+*A(Y{mr3r4Z0&aF;Mhk z8uTE431D49tyJ}5^5c*U?teijk0fdROCZB%A`s~70BB?j8hkSG5zgvWpgGgEZ&G^p zk`&=EKR1y_IC#W-PMn75sL||+==0d|uH^K*#X$P9GuQjI0nVcGC+8GM9$}_sj6jHu za{%qU-sKW+NTnbv7@r|)({sDh!BpY{-iumR;xrNJ3J|U6FfhhKNY$>kvVwRQt)6UxKGPv`QN`gAr!{ zJQGLqoQ1GUG)2@KJr*(L9`!YnfcQo%vQKGLTB8?bbh*`zJ>53&%_^&^RVHSlh^D^ODqQA4K_Z)X$y-O&YcE>s?Wi_#@`AOcikk^utDWdDHichl+AoU&Afso z=fug3G0&tvoDbozjAeisIin%X)#JCmKUB%S5ES1%ac@jFYqQTYuu6Y_r^9}?#YdN{ zgdbHdhJ&HkNO#?Y|4UB`aa>fy{|T{chwCkMVaOWk89OkznSZ7q!NEB6IS$dt`LQgY zu>N#+n~4Z-zvml zzpwG=WLR%$OEJ9+FH%i(a0pPAmF0h0l0>AY9Lw5(rwrDz{^WHA2LSu!QY4R27tG*~ zd}mm6*U=q}6qEh>)-($O$lYeZ^5e0HD>raZMXi1ylc}U#g#m~Z@p%6mPX2WHcvZTZ ztS3|J4lH8-)ZGPOKKQa_=v`LnT2FN`InbthXvpO{J|q`EV`5ptKi_$8qcE?kRj}rd zYgX<~d*|0;;4ogcnuCzgYLQ!?Xr&7=%&RoJ2(Krn__0ro57Ot>g1&ybKoy2q=rIkG zbt2{D945`xX@0yQY~7kwPfyzsXB2JKG78KkrK@l8Qd{uh#Y>_;Q(Jj%M9aJ|1iYTO zwE}_D5h2j}NVXqLxTKL08?&L=7`0sY18)m_Tu9BiYApR6oct=MEC`61-k6D!_)K#$;`c zE1yQWl2pp#sr^2f`@~9Po9Vx;Jc>~P67cQh7nx`=7QqX=oZ&cD;6?xzkP4E%Empq< zcRxFYiRduDgE8p>6kfbZfyx*?Q_qzQ4aBQ1@WM&aJ>( z@0s2>i^Llupb8Thhxx}P%sh_f2W&s8Gv8LhEMrbxcu^MO^_Ac4rB?Y6YNoPFNBIjM zFC)`q1gV5^;HHMz>v9hhS$wQ5Mh-?ZDwlCllqv8wKhuP9krOcIEGtd{&9;ABpQUo0 zHjyu06)v&e-WJZ01PlP6kEdYE2!0Iqz1#%SnDMY2P~hB@!|X=#UkO`4RhhfAD@bqv zpZtb@ug7(BtC3R7CmkP;8E50n7~oHGF-m{~O^(fwDE83KJ0%aadq4^X3l^$UaA~bU zY&HeRx%S^B2*xaGN@>RcRjOjd^bo*>e!EZH)Cu!p&aoaq{ zDb3_dc{)d${b?Fiel;UFKVzlZ!}{ig0w36(=;0PLKQh3V`nu{o6@_!N@e)+@h=f#N zbvYl&;0|&fSS1xW@^u=?WQw$4DbbGhwx%mrV1tS+pnMXf38u9LI6fuy`OVX`)Ue1% zmh_H}A|7{o>g^Xd+*4R617*2b@DrVcg<>YdMw33>$xM50;5AK@wjTkL!i@-Qnwmuv z@YC?eW(u|vP?lukT- z+dm3O7}J~pkQsi~ZUFZ#WH}r|nceLA2*gy3MXA5JPiT@aAgA$FyOo~o!?Q(;mOXQ! zYC|9==K+&?wnlfh=SlN7rss*^K`6jK3)#0Ss%d6O@63@(2&V9ywFaX>4_^Yp`8*5R z+>{HwJf2VfA>;DgWoKM_^8Cx`2~Kb_5`j9l@&BrE-cPq3@Jg=nSceM$MmHq7eZl9G+`$JV0`o zZ323#P)>c?9c(_&cP)|zTXZkAY?Q($RUpMrXS-xQU+*TR2dwb0UA$2vtXbB4?BwdH zXHPLSOo4z|C;tg@`q*Vwra1LLIX<>JHn?(=`##zRhlf`fl;_^lQLO+KnINL2SR^!} zCH@cEAqNHhyi<@+!z|Z?Q^w(eg7^6mN)6Pj<~#v=Y0&nZ#uJm320LGvgrHFp|M0eq zwiQm!04|`0xco-32E^?LX>KlQ5Cn<;VdS&9i@Wl=M}y^|{%p_$wZznV)3Az1UxCFD z)v{n(bnjiycxC5^M*$a(vsd97MS!gG;0OhW;&CJ-p3LyUo3+|A`G?<54YnT=zzr@I zxbj~a2)6?oo|gpWZ{4qq7FG&g-UI+=?<9|`3V{OvuuYgqlL+QDJ95IiZ#aup=Br#6 zCfd`!r6iK2JFphPmVv}wWY#wbt3<1*7YaM7quTZ?fdM6y&r2f9IkPKXVq^3Vxwc;w zvOC%oK5@|HkBY47rO{FIL5lHRONF!T0kk|eUea>+^N4qkY;gHW!a{gI5-rVynK5Hb zd-rypx$B;)OAnTEs}9ich{A%6XVZkOCw;c(8r}KC1*pp{7$J1sb$_OxUZuqJ*r}DK z!l&!{L#=9{B@E$08i`W(Denhb;-#^d)x!~+5<=^WmZ=L3;RvI%G6_N_7?*XN^Ofe9 z`vHAfmKHWwHqa=?PeT?slw2qCF9qf3<)c;%GhLL*JCfu1K}2kME$f(ws|? zCe9z}JRXXT{d|)))x!5egFN~|lfC##2|s@y-qhVGh;g7(@rz_-03%10 zBV}B`MG3NN1HUl!$^wvHfR>?^sH=m&?If1ecp@ZR*_L;y(=iTRFM|E=(T6?yKGP?2 zfA_5*z#112=`FTDb|lCI^<5~6aQ_w7j5rKVCad3uI_KSy6b;)iQn`=C0y!kTsj>WO zLWSsC*i~o_!d0|3xE}I8h{%>OM@(zOP+Htk`|YNp9BcpQsAN7To8CYC$`FWro%Xb; zJ0FLlr1De^ogyZDCTQdk5Z$JJwla%o8<)d5`?s#hbCYxeEG?FddL3Z0CKp%Ns%Dz_ zbHgK+*|>$+_DgRX%-cEmHfMreNEKpZA9^LMt^zUP5p~sWl5ZC$0>Z4`URV?!V*L}> z>44!?8O23d>yQh6v^V*!Ul*%x12=%c4S@_yeYsN5+*0-9ga&j*YYVgwJT_I>s^ zaLW=#2)X~cE@<#N9h;chQ2!(h7Bwg4qB_1Oa=UDpji2CHkKQ26W*49ToDylyM53rH z9J2M2i?l#*_*-w};b3=AdEDiAS0a#90U6Vt;79Jw6Vv+c9@7 zz{VZS!p>`q%sZ<!Fd{3(FYCKR9@7 z&!!78PFBpAFp#%40Yo^Yc2rV7uK?QeSGmDTTqRJOa@rJvl1kP^q-Pcg+fZJA+^A&a zC~oe%uVSXk9-6iBV9_1pqwP@xe5>wt*s+^pfaCxlBZhf!y9H?It*_uorN`WWCE%F} zMz#3a?PKq$;s;V$6%n9t#o$!&8T{OLY+TTt)s?5tXg6hKDbiE8lLO?$i?8 zHx3(J9C^PV*#Zv}Z{?YN!Nx-aE?9ALa(;uO`iZ1L%BwZuH3c{!G7VHKH1G<#ti?kv!;@2s;#I^>+PSjsbI$(4?G1Q7wst|&MX zMzVtm;yQyegpiR9H-@o}6E+D-)41Np!eSV(gC-!7So&&Zrt$YqA8Z1HeAtWxLD5d` z+@(qezgc3)&V>eChRXMDs5xYEbmU{=OAC8+D{mKV-MW3YK_Cnp%Tau3#=)ReZ5#$W zr1qgOhj2k+J)zTRTd`VYL9JmzJU#}-U3(@Ii!gAipAZ>h^EF`CXEH z3JI6V!Ant0f+A`zZMreUo%-HI_GGsksO-BY$$!mmthm1T*Qmd!@5ld%Sdg*TIxToZ z9Zct;rYoY6N1mbd$Ls?q**o2KlB+E7SVQ{M;H)a;4tFkvw8&x`cv3RN>!wBLJ_3r$kmesYkPBAk^>1#SmPe4@?jwJYrGg%4+GN2wdwE#Pp9yoA5 z;#3V7Bokv%)HE71r&S{F6p;lX-!)&S+PoA`85pPMDuv8vSF8EZUsz&s)4c(q_4KRX zqVjAVUyy}qW`C9k^2Zf0MLt5ZB#1{EB8F0gg4JXs_jOiMkqq<7#x&nn%1Qg6g#3S_ zBZ;)7vTfF*4drcMHH_&mFPgj+U%Y^ZOjXaxy*k~{GJOpuNl?TF;1Xkv-1`SUyZv9s z^}ncNqoYVEd+6U5xd`UpQD1)fl%ob*Yuxym??p(U+)bo)w~SjY8L#!HuHNrk`|hY3 zFTd4r#_R@NlHI#3Mi=MiUx%kmzu3rsM-GD2YU*-U{5dnEyf1#-tCn-P zlQ6w4`QUN6wvaavmTQ=+kDheMf)^K|e)xoLq`Iyf#JUt_@eUnknH(^!%K4V*Lcv5K z3z`8Vmr@I)iUt7S6)>u}9(hLhdgB;MCKem%DM9lBKv*?P*J!jBIbh|m_HB4iq5WaH z(ct;9+E(j)e;kzaUVkjE=R6IknY1Zc^BKc;i4bZ6hsI1%yS5 zbj@7k_>>yM42<8~9El&Xuj~O-sBjyeswW+(t?_BlH;J1EFtyGSk0ffy_BZXl+X90r zwTb%fGLuF~GcODRE@{*wcggQysF55aIv^s`67i>XIn~A4lG!=qR-x$nJEgPdn)?r%nIyic@fKG8ke! zSu=nN%G6@6Ii_A6_@Oec()-08D9dq*p~WtW6(IelFlc36^z@K*`iqLaNh7F&q&htU z+FihqlK+i*~I&GEUnrC|(_+uAY)c=fc+uZ-$ZY-=q{e^AWc}0teq29JciNQBz z<)1gzs%~+#?_u$`%Y1L<35VWPl%G`3=)71`k(baZdjFGcVPF;W>jNJ7l(IX|s4wUe zUl-aPd3UzBQKzg2J>uXO1h{WYTccCBof2xa@?Z)7H%@XjkE1k0FwUX=Tz-E$WJqRu z7D*^Rro_@|1NEbt05Bz;KcOst9C@CjIsNO?nLNX^$3Ns*;zbO!LOS;PgBjTSU!+8w zZJ<<&?RL*PY{}WrHwWa8+3Np>c_D9)`$v@q%NAl?D+Ww((C_M@p!m0HU=ST(y;~^p zid`}>qP0t_iW1AXTy(gW$JU`1uEwjW63`cTCaSr~3s7T7_weAKSKo#Eh$Rwg8x3!sgVJqbt1s zk;A(O+STfl9n(1(AhpX%t3@*PI|$olH7gm8L!68{8aUXK$aAzBH{3%dqc{pGp>?Ys zSywuFV(t(&?*mX;Jp6_APedomF<`#5@4&4^DrKZARmnlNtnK!~B-B@TtxiX4U!qxi z80c0+)@?jJZgwER@-%>9$byM^&gyM#8hR@6nDn4~g4zHBDcb+67!k+WPZF#k8j3S= zbD%h4GyGKq#1c z(jELaaI{)GFz}Hq|7cWp#ou0Z$Nrhmxm2ZM1+LH{y~HGm+w3HM{GD+)`@2GYI+Ar_ zvI%Nib2wE4St1_&i9rV=vz$}jz zY0Nl?JJZs?@{u$65;;X-dm?g!xdl52RTDLF1#i!ocVB}^!(O~-Z8g*@y}u%PVaAtl zqSE~?-NAYe^j9dvH!~#RiEX5e?-$zH*56 z3r4DKVt}8ByeqW@H3B`^+4JaGL5+|w>mS`hS15G)hIY!6PI{TA-bfb9S$zvWs z*1>i3)*NnY$yXEjfi2ueFq;ZnrPg5*WGcLdwra%-VfA5A`g2giHs`l&qZ6$c0je;s z1tD7HlnAp0Xr@H~BWu!N@wFXin1l0OdoGxCKW{Vq$Yj-2ke!VLyBK=Afs4X&dxg{XEsQn1>Nmng_r^H4Qe*%d%q6Zcz+ovDwNbPZz)907#(ODX2 zvmjP6kI9xl-1X!Ppw7FS_bf!wO%^nu|E}kS{m}n)dOjY1&k8XGXwXmUd^R<#e^kWt zUEp_bmDOaB3#Rmn>*`Wse#Jmnb&zRQ0|@L!s6_7`5LjLU(AX8+{gw}`(%p$?@+Z6I zEJl+z0xMj1*8^%JMyoiJy;r+*A;cO?Qf~ubvhf)*M*e8>Mw9K88#q%)Thzs&m z+p*Zes@O&@oyv{!ViFTYW&KGbK9NxOPM+|C#t5wS&_xWVdDh^sZ_YA>yqpfD#VDBB z-TaY8nCQuZ%6Br$L#2REDj5|w%PK-y#GQOt-GI!z_;C?-ob~*OHrW=grj@CfW{g!+ z!n+AS`?CqgXZ&RCP+W!&Ze5|yE|%W+kb4uPGz?-;6Hao2f^c2!Cq@l|obD#Is}PyZ zmhPR+U_S=`B`VZTy3F;H8=#a2w)=WU+1Cc8O8RCVi_qf+tKsTOL@ky%uZWstIp}b+VqwFFLWp&^r!MZQ=!D`A@x;ti-$qq zuJkL`PEv!D`FdGZ`8HC^LfYdu@9rE8NA#|t#g=T;SuPVad3BSkMATTwC05Kb2JwH| z2HdHSOX3Wv>-!$b2+5&@g6%)C-s7mooIG6BP}LC#dYkb;yEz?nMRc)m*Dt?jw`# z!0z)vhbI4ypxJL094_?Uw2tXiR}X%CQvic2tW{a%WVQ+i$c9HuTm{3 z@onD6jfd5+HD6uhRn-d&SF;Pr} zB6foD`$+0B*mvOKliqRDbrU{;3fJzJy(a1k4~w*X|3Mmh_%Ph?hrayO3IHmxWe&|{ zq>c5~+VxE9a`7n{Rvo4|D!)7<6Oxdo(`vND#?na6>7mJGWW8cgh_S)i&D%KzXahveq~YWD14(J7da;c_d{ZdgcF_z^g^sabv#w9KoXLQdyk|cYm6L#lKaQ^Sq;DEA zsfOCF6(t~>lW&7~YlcOZ*@-Ez8lZTbPn6@~zvg6GRhi|yGirND8C!Q5vCXwimCQ~r*LoroxU4}1yf(w4Fdq(pibQL-zMbowD+!*|4j&cb zD#$)(;!61*P=N_HqV9GCqL2ZW`#pQ=ly*55SNa3_o{Q*BJr{66`w|hT^5JWvy+1_a zOjB}yc`F)vGT{<4;I+=`&o&wIZPZSP60|_`%6nU)0m(8~O%R+=i{6o92{W8w zZ$ls5;-VP=EkyiahX4ezkYIR2xkc_=%NBr(iRBZ4J%bKCT0E2?<|gdB~f_sI{R$MTg$E4c5sqZzuX8W(LQXeu1FL2kwLGr&>6U zdwgL276LJdk~q)(-N=i!kGn1Xe!nx5+oN+&d7y^5w3_+EGH_i*nKAaPNgo)}0`|w_ zjb_6ElsCl11Kyiy1wWS-U033IPLRTqzxh+TnzR)vAb!s~p5v+G%wqo!E&fk!Fm7%Es+SdV- z=k(y=MMZ?738bt^I$bv~$`MIv9c$yxK`0#$LGbG8t5fKh)UeG5$BuNQh(O<`HvkN} z7rL~nlR3t0U-}N2sb@f>6J)eRT+4tHbO}whpgchd59Xn%j`+jj_=2DX6*$20b$j>X zKDJyy5@8O-*r1y&8FLc&ChqGi`zomMZn{Ksln*mf5QNSIJ~QZiEm+Ihsok|-7r8rY z1Rk0sW~f|WxM%LSPt7J1M!P=}iXQT`^Jn+zmqL!hx8GbNO$=J@+xS~lU$m@X5v~IJ zEm#Mt%pWVFg;@D5@xt1&%R;>J3#7guyXRJ?RX^UwP3D^lVd}1dQaT^=3>rO5-XlPm zRJcvDrV$O#F^qCQ--Ul+D}z}xUhwNaVP2Hc_W7pj=QB+t#*mnCPnO(0yrTbJ@%OqjiBjA|U3RL3o{?)J5m)5d9 z-vJhTxAt8FVPH#M>Kr1Q5Vjvi%$RKuur?SxHT~bha5vVcN^UP#7gKBt9en67({mt3 zR^x`4Ex+sZ2_Vl^T!ubfeUmc~p{LcvZnjQN5QJ;F;fV8Aqn}hueG{Ejcb=rSZ%qe8 zkbg%KTK&NUlwp{}L~ldCx|;*_CFnvdfj0WxLSckY{O}JpDvvgk@}&R>_PFL)H|oeN zr3^_gGRt!atl;!YsFp`2(+SJ`5tc>ey#$kH@p|)1uUbVW9(I*GU%b8cJ*dE zFFzWIE9XCnuW~fLQ#?dX9%goK`_&Me8CwY*_b~GT^l%>RM5>I^lc$Xqb_%ZLFd`x1 z#-1K2<>jG2XJhMIy;L)eQ?y3TOlFIx@x-SM<6HAjjNHMXjlv{U3uf6m8x72uqK5ds z9IdlLEv#g!)nst_20IHEZRf;d_b;eH?BF<4#q~{!EY)d8U`10?C>*!{*3fWq>JDg z$>tDx{#-zWGWIREuuW@tZiKAP+6xid=g9zIF`}SV%@CJ_Y^)H1cs$tAvmz*CY;-4+ zprPpsy@&vR!-+tc65`M?BTcD}gNEDF6wi$qxZPT5DGm_3-HAMV%PGRVHi(!$l~oUy zn2GGgk~|Pz8M$E4uQJh5JCdCy_z&s!+R0&o$jB@l^uUee?ocJ zxmd(!1Ie!l{#-t|EO?OBl7pc4Edz11|a5}py&l0VicYN$U%eR73OD&aA zmFQ6Qjbw^9w$Z{SfOQ-^m0yBv56eGXQCj`$R8B}!EG8;jW4?xpZmN^;?LET+ST<{f zt@m4O{okNie#V6GnX3Qmsqv=XP&OsFDWlR`_&s|$ie^094SWCy$cyhLq+hP^z(#}ohY!bj=%zg=hUjVt9f{c0iyUuqoarXf1`(UF-u@KQ+mdzv}033 zh7dx-gr9KCLRouN=sb=aI z=GnviJej)E8XEYQyeVOM$9qP&dyXgXvR|3kVH8O&hy~}$%4SW0lL5?%-kfsnIYRq5 zjDQ9jLx?J-eXB7bQww2bm!)MWXOf=sFF;MrpKN9L7L4H%9heTjW3Nc{oBQ;E2KH%i z4$lQagt8zF?|p4Ms)2!y6-$(pb7NQh$g^M=59A!AsxQylL2Le6o zPl0nYqmtAG__aEg9Cq3y&VgNdQ2`A#4Mz^1B5u^XyFer-b-cuP2oJ`gKQn>PbswA* zb(nHd@9902UdKnlvKBxiPRWK!6C<>1sn-G*i)|U8kZXabic780w2MC+IldM03YfrM z;a0uIQPfFFxa_ypoC$f3NGj6v*IRnypBk^=I9~5Dqx(+Eth8B2dZTiJ zkA-Qyzgwd2IY%Y=3|NpVGdYl%2ak=9Ur4t@y2%hkQ$q8)WVhLVwPyhE&cAX7vNhP( zi@bG{%RS(Toc3k6&j_r{`LV&i$xwK%@Tu7;+@IlcO}4qVTk4HozO?bLNS8O}xFeAB zEFojV{{hqE;`$Z(o|Z zUQh$!a|w{!%i*n1k`$uT?YS;u09Qh5_k0pKD)RYx%mDK^UBPB%gqRKymm_>mhM>mR zj0RQM8E7G8;_|BZ9(bG8T{Dd}%*%XHrUHkZbiKPRoj8y1c$8aeZhX96?z5R#!PGC%2M`*^d&H zK&mw5=9GpH_V5&XQV*Hu7SBnDO7&iz7m%wI7IgQo`u3v|jR5ZpF}85OAI}SIeNCA> zoRK^;g~Z{i+VZYz0<{eJI6H(~drv3d4t%W_Q$@_vJ@#5`f&GyVs!~eV;!Q=uIPIDG zZgH9#Sq@rr(xH~oTQe+3cc@0oH`0<2(Ceef878>Tp0FKozO%-?f^KzV$ZhQEnDdhz zW%a4{J5H0Ect*%|`+2JQiYXa1WD`;M9jvav;K3)Ny+MICsfKF+jcx3om@jQ88lDls z;|9sfxDDbkpH5d7w{D{me@|EhZL@_z{jd{A;2bugmvUSqLW`#vHv$4jqfQGY4#OY3 z7CRKAeUj!|wZ>p1E9uz#fSSf$%otbrY}L1>Im6f(mI&#RpzDPQ4aw()YsSK1i?55= z1l9JS`APN;)2USV* z$HAzip&^0JZU<@)L8w9h%%P#8FUdrcSOA_2LJ|s$1Uq_geZDac7HkywG%tB16`>X} zKZJ|lQXPW6FrZlup55rX6r(SXfEutL!cY2$tn*t5naDL<=C#CBcAUu*?z2%7VKYn^ zWGs*|^@ECwTd@P~y&E*M8v_qf%_V$4L)iGgM~#1FX^%+1>sw|BdgE$y_R6jYVPF1m z_^ETLc4l9bf$y$9J?nb=^t}9osl1jmsC>m{DUaxT`*EPHFpF_}Un zHjR(RASp8ZcAE7qpA+0&;RD20IW5qKOP?_b*Z^|H3rh~{n}dMj5wwh>txJq`KY^6c z(y;){tVP_Ogt0(9@=TkE(NFf#i$|UJNpkBfz{j##6KUPpW7uwd`%0H5sdw(02e%l{ zDaad~UZa9c%Tw#S?GF!de1*S>$&=?w)_I_eD*PafH9a3EHEaLJE2rO)1n5fPh|Usx zGF>LK6+`(CrHPsr($J>Ug$eI?-<`Wn;?9-6`~}o{DXMr-H|%)@gSIW{7>_NQ?;VQ=y91+RGZAkM>8z1fYSOAUYhy>)J3+P#SB@A18GeQ3+&4k2KoyeX z;@2m0d%Qw#S7z^NS)z_>rMaWyzZ3kJ*uYvn=IZ}s=dzzV$6d#?x)@9iWt=ggsgkz(#%=n*-fN+An(Ir{d&8vhy44 znR=LkM#?#5fo{IkQOJr(BB0=30Usf0hMBrbQ8qYt9dP1zL9iQuwRGdEtOFv#GKCfq zx))T2Mlu+l%-ktu$^TLy5jA5BHFeL02s^@E|_#?xD$A*M;~A-m!fjty8aV{ zaITi=_{;CiuBT=e#rUV|({G7km!VD&vnWVwjENkI_Zl=d_t6U0Tz*7sOwr*n$*YzM z)hg0d$Pvl+=>Tl4*+qaqgfogk-^L-m3HIR89~1_)k9~d+z-f4(HOtr)RG(yPGOQTu zVvl#Jd*&D|nO9`x^#`C-99vny^Adjh&$6nWy4*eiIic7yALXck1bM;Tui_tKuGPwN z&wf9*nCCydoud?Otw*NqlUw&OPPakvn1H=l+_o?9>*%FI#;jZATqM^z{DdX`53|gk z*J_rrjwbY-DVPy>c^?^%ntk`S+P270h%UYw$`|shZ-vwhAQ#9;`GUB!{uBv@MYjB0 zxjm09cEwTDtM>CD*PU5uN^utf@)s{3?>90SL zfY^^R4e&Saa$JbbXXh->xk;GRznizDO~2I~S3k;^o@s$E4Y}|R6`9K-Ka&QoMBj`J zo2`Trf`>uKbt5x-Lr@~$IC20$6ce+}#CM6&9p{+R&NF*5GdFXZSf{mOh9>@wqv_^VFRRp7gBL?`u<^G>MbfcV&$#Zw7kLSYO~ow z7hHd{dgC^h^Qo_0%;KgV#AnOmJm=|9{jE}yLpv+T8;h#~Q*P<^lz2ZM0}W7ryL+2# z5@ygxpM%=278ro0S@nxY!> zimCVJcE<*he1V4g?s{%)k;p^8zwhO@mSAyNfD6?1%N8XKY(k3F@^8(g9W=KE;Yl(q znI+;;56P0z+6QZQrwb0-ALaTen@hQ2JP3ab(=k?+zq*mm)kTi4`VrX&>@L^Smhcer zzH-`GM8z=aF(&EV-Wu$TF1&=_;whF*GDZj4yG6IcXGjrrt$x=@^CZ&pu`_fM?-_!6 zU6nGNg$PB2mU{QBr$;l};b7P+^bd+ZV0(T{x*93&MR}&make-WGGu*r@=DFcCEvRP z`9*xSWVokiyASzg(Gykjwp2yHGR-tm_(NV!!_WJL^3N#}YS7 za3E?!5_WoRneCgx+a4t{r8PP)$IGYG!sW9`f$f^l(|}|*IVd!H>)mhzke|U7Z{czy zHM38b4b^2M$Z>LBGa9ivyIEox-55Skorq}trv%`7;so~)>`6f zGA^|AuJ}UYqP~h8(`@%2Dicn+zbpmDQPA+$gpUGiy%TC_Y#nJ>eqjjuL{7-<&Y)6J z^+9)16GvTZGVa3QX(_JXtO%9Is`Eo}!ywEWo#xVpPzW7TDm(NiWv&c>@|l`fX0LFQ z4*Q&`K-7dPzRqY!01@>rDT<<|GZ!VllPwt> z>KSiJ16i9S0FDy?c_er=Obf?j{qq_ozVcT5aX^wZLL{ACafxOqAr;^W1+t!O3u4?c z;7i9s272c)Dl3Bf1C=MNC{gr9Lwik!OPZ0SJ(+|BTt92l%qBBhAta+xz*anxUJHAVUz93A$r;&_8; zUU4pebwH?bb_wxEUJ+mY<2M+&n}@{VmA4G8vcfqepPtO5v^o4a476+F9_l}lh|J9I zn1#O9wNChbi|{DlNxFN9)$SKu+7s7;u5K8yD)ZJGnT{Hn?jEM>Qev$;{-c(ayBzDYqMUyTs*ooquL5yDGvW-k&@Hh?Y>1DUUGSu%a(w64% z#I@8QoIEZ;PBbXJHGxmZ?aI&ng@amKC+DO(n~{Nte$6n}`Cvz>Hvoyph0y-0!Zmu2^xkGKkKfbj|6G*kIF- z0dj8s>=XKMMms_%2ncN*e1ntXvF1xBfeDJ=o8jvrxRf7071ya=y{B5xueFlrT!ly z|KM0^fln0vAnGG8Xf}TtoPk@()JVC{&V@${OC9Ls#uI3`{sN_VRUj3BE@_=YI&(+T zO(`WWe1rFrcj&J3D#3S5&{?H~&E>wjG(#B#M}f*50$u}i&VpS7Vc`M?q6^}D$F6y( zo0HFnB;(nPEc!AmE`fD)WZPk&-9_1FY;UF|Xfv#iX9GTzu=nu~dt`mL2W?++KFZX( z_oZpuEM^^&W`t+5xFMF=O@NR=y}c-93b=dft1BmDWnE{%!_tR63kh$Z@3+$scMrR)3`H&* zrLG<+i&zy4cl9{d`cH-@1?$UwRh^%JIu)Vus@Tgk`0>8^<8sy^U0NWZUC{$gBpIww zFxd{w=4Jjaygz8Si$nKCY*UwA&zES!=$>l|7Lh8Oa=;=H4x}@Fg6^k(2&7-Nl9#v) ztn=ntN?vLKf?CKB=u`@aq)Hi9yCae@Uh*fkmR~}8@-pa-*<0yCf-5jip|E}ecPA6O z#rDI8MS)#yp;XS?K?U3caBLgQ&Q}FBds8Yg^_GlFKU*IJ(&YuFP}T#z`b3<7lH0I< z_ygsg;fCZ%58H}oI(~(bwp*rGOAWVxJv{aMR zN>zmGU*v)ovZtRny~-L4HNV*hIWA&^xU%E^jqIIFADU1y7E-@}1bf&4bz@EZJSiC- zB9YCGY1h)gZ_Pc$IR_mPGl`hep>7(nW=sF$2Q=fvgat-Na zcvKFv3al8cU`cu#fteWYDml`(HENW$!OA5YD7&sXJ0lA#+pAYBsvx+x9hpY=Of@r) zBgFro(dBD}TQ{B>C9^a`4HW60p=+gs^4L?Mj@@PnuU+iI2eIgj|DVxaqyp$6PT!Y< zX=?)F<8WuYHEv+v?$4agPL7bcUei5TyCuaV!B)*=^FKseJ8N?_89)s+p%nwH7{B6W z&UDPVQnh8*hX(p8n;WZssjA==5dt}TmW){+Gs+->-~GA6rS7BWo}IgFB4 zDBJ82#(wQes4q#U_-Th5RGgAp6>x6S2BtcH^tChl2{^bJ_Ar(68in}6t{52i-hSHY z*`a18%ttv${#W;E9>R5_hf>;Ib%_ZS{4E_jP4my2R4TS3#b0S_LK^Jqz>V_@Dt*R> za+8);l-Gx=)2x!a&Opz-ha2MVND9D?Wk_x^d~es5JOc}^5Ecin^t4#ylr_gvlT0U? zNZU=kJH%Vo*5+>i={UH;V5r+4m>?Ukc?4n{QZ;zrjR=I`JMZTteh3$mXE{pQr;CM+StQ56JAKU26Q29}%%LOws&?wc)q_twE z;u(J>hhmcEMhBl-xIV}K-pzFrhV_H+?;QFFpo6d`D6gGoY2%ivNgyJ-O-)yn zQW7r0_x>(7aXG4r#b{;|=UCrPw)AzAN8k)8Iu%J{h(g_Vs^r1mPP(4#O?IvtLfJZH z6oU6kt=Ld~11-Z|;$y1et|0BND7mqgZS2x->`H{r<=HOasK>XfY>oSqy{Y_v{F9Hx zGPqKB-L9HQY8pQA*-6=>q0J=T#A*S?eTF#Dilj;(z;d$@sJovbRD`Dt2(>2>XWg1$ zQGg2Xwt#W`_WGI;=U)08%s;1|04Z?&;xJ(~?XMqY>kv0f0A!PVraygaL1|fCnSkp_ z7VRz82jmmI8>|Qi&+gytM0jrg`Ybs?E@jBRav67@KBt8vn?VaPw;y}rhaoPOE2$qv zBY$g&&JAI3_1#y32O-3I_2nR9!rQ|Q(%%fHKxB|>_F*u}kZdq9Wj1ImksJ+LXr}ny zBMeN|tgnL5DG4qcL_R`6bEuu!ugMo~=NpMnEkvc6LV27%-T1J3v3t9)v(SYEbq0y= z8Rqr)L>>grr68R?CMV0tedVBtp}V(jicIO+&QcY8pZs(mo`STiN0)(zJe)t=Y-z2$Id-JNl5b^dp5QNO$L@N-VJ! zHSPjt`n)>H6oe@*1y3CwyVPib(?**|9+V9`u6gm>x$LXG+7#kuNYT5TVBks|?5pm> z9@uGA9gh1d^QkvqyjnqUWaw63ytQlwqe7&GOM`2)_lFYQUF-DrOV)|~jruq_hV`_h zvlzSy1ivUVQr>~b7=N_-?o$L_-1~1VJ-G#3YZ8k(hM1C}(i~<~(tKbZN~;|{S4i2Z zU&cmaA6w*dFuV3C2f^-m+eV*;1Pi0dz~HT%>xLtEwreNu{_C7Rd{OG!@B~Xy;O7uU z{PR#VS_GF)wKNY{?hx})qpfzKYE`-KL*-zsozRLBobVJ9KB)`er;OtvEt42`{=%YT zC8%q70tksqNcAGP4*~=Rs?m6Ytav_~A1>_qS*C1Gs(3GaZM zYQa*HZ|p2IO4i54om%Fw0%Gz#Qv`g9=cS#)M-==+YVQgI#Lu&4GmpT4)Xn$EzA0MY z_hrs{+BW~Ni-}7`B}9!Y0^{QQ;4OEhjxncMy$-K zi~HMV6epx7WYT)(#qd1IX)Hww3?jlPDgp%}33ysFv>u?D8(2=1ZJm{^GerHyBCiH? zf{xgZLq&_2?#Q;$b3Lz`DPBG<1kFG?wgkll9sssIrp@`*|OF8p$DFhK&dNTZeO%rLq!3JDfxa0snWNqVhkZuYV}If3gRAY^Hp^DHpp*@b{1 z3=PQ#lia0!J-URK0^UoYbVNMog%DCnQZISlRdOc@)c?%()QDZ7Vy}>CHTY7>2)7}S zG?5u(P_Ki&5Fr$*bbi$Jp*Eati&XqkQ+Y-lT2vED%n$_NnLQ%*bxWk}SNOqKWPzRH zMT$4_=+mqimt%@XEjN59JGn+YDTU{DcjdDw&)~%==O!DSa=2L7xqxNwJ)HI}j^7^l z7tL2jIh=9%UBHVp`AYuNK?(e>##ZU%r&jI{Nu2a9J$1aFp9v)jaI z3Zk);zyg)2qvLW3m61qK0csde?S_!F z8(?N1OtUE{p3d=iI`=cf`{n|Oo5J3k8Hyz%fVhatBmn-~?gh2??JX#;6etYiX$Z;# z8E8bju~-iuNM4#morI#@>ndLze*{WISwnd(7Q~?nna~Qd#Vp&Mtwq3Ul2@K0%b39a z3_NSbj)StuC|b{H3+}fVg@_IlspBwBvGB5ScP>VMXFYzLsz@MWL4%MPtk*YJ@b(F~ra!@H*1{o!3SOz-5H_3CtRuTdVYl z!OSq$i%m$BT4Ue{B+);(vk22EA!kx&Ft{#5Ne`F*IduWh)zP= z{iL{~q+cI7=J^~}Sjm5%(Y;nMi*#pG`^UoW2PPLp_e6vEB`7!9NRXpq6XC21rY>V` z`IY!w#OM#YV%qWJVTh=$^7iNXye}?JRrqFYBmlD#gw@UOyI*ic{G7S;KWWd6`MKvH z={s`8SgOi--vG!`-1u^_$%83lKnB0saFvsb);_V}qp0- z5y@;$Y1m^Jw!~b}fAd{jdtB!wP!WZ08A@UoyXcLXOY`fds^iB>yn_itobb;acW*?faw?^PWh4b<}SSeO1)&XdzJBql-O zau|*xzfNbbtZt-d{_c*A+G&SixLN;5zM5CwSiZ~Q7Y~Q@HYfUFToIRE#U(9nA{P1b z)&`ngbJ<&b)a2nBPC?mzZVLi9IzZEUKU~1u>M)xm8(xVC#@0(6RP?(!A1LGGyE^a_ z1aHOm2vJk6`-))2j1gfT|GEcl%}WOSwj#$u9wr$#X4!OPhK+opCVt`_U`K>hLG7(p z-=L?fhn`ab%5P2KAJuA2#Y$RZUSLP@%-#)d=7XpTYZ0o=rB{g$=E^E7?W#uh+q@3a<}`iOft9+5mF zTI}gG#x{FGHU{&T4D*=Z8lB2LpJvD8-m!~C_Y>oJ41IyE&Y0HE6<|Bw=T@9RO@C+q zM!!B^9u#n)P-ZZcuig-3v=!kvpyRaQSe$JPwGv@27uEhaeA&soPw$ID0N+F}Z&KsX z19q9U&aqjAcaNm$IO;s9s0-%FW!`*13N@jY$X6=?ukU<$7tQVKEKW%%Xa*y?fo+tv z=wA>+@6XJVH~Vypj-esT+KT|m*~A5V2l3&0@b=7{4)`y@7W)KA*}pB~Vc0*6qz6ji z!RD|qRcaR9|EaOOQ7$;At!DNF@0RkM*5#W|DTFOn!Djoyxe|IAi4J+uq0ED{)dHHf zgOu5xz|r2VWZas9DroB1g=Wd4z&&YDCzljo8sy1gGVs?-UxceGQNBh&5W!tGrQ-`yz zNnt1{c8iGDoVd??bOP3$vhikVjV8m#wKs1tU9m(urf9ocR_p7_p5o}+UYx9$H&km}&g~MB?t0UUF z`gV;!Wr4hd>4gQIhnG{tjW5BT3Q$|HGHu*D)+__)KZ21j zboLJo*a$EL)}p34p)DbKjy&PTxUM618O|+-1s63};+&L(*s$O!RHU4jZ|}XzMMl|J z>YxAdw3F!MZ_^=5ANAKBNn|I={;5IyfRQ~$WA68r-k|7yPy2QVGDgjki*!8~?A!BU zY#CRc$f)POJT@bCsY9t;4VIN3dNWAc;5p`%eduW*(NsftdyWg~HnJ=o5 z0puU|FU*4lE!fcf+a4@F))KRp)&x*4O33n9sS`3QmbU2u$44hHU& z()OP7j{+WZi9(q`5z+~H4x{8_IOOLpc{rK;^OlB=J^hItX#JSO5KVIzDD3y9LfkMJ z7`7?idX8s&1X`_HfMlm&COFB*S^ip|n1be1CM-26AW3BX1fX_Vh@!AsCU(PPOwT&NjAfk z5PmlXT%VA=N$d3fziG2B-|l_0KsGP>UUBZh;3MjgKmUJgff0eJt8n%_7vHV~D8ay4 zVcuGG*wZR8lv+895oeW^%vT=hX5p3wZIcj$|05$D(031VxhMjy6yGg!OePsp5Qe7ERA1UH{^nP5nsgm zX1h*^`+h=(?xLtc)qt!;-bmE&uSI(;t@EL=^FU#inF}k7vLRXb#6&Fi;n-c{PgHRH z(utJle;+rnPKUDKgm{_(wqpCkJgW(9%PncmA3!AmEPPryKhEhaD!2XRqHLh3SP|rv z#E({l8-l;QcfA=8~Rx}hvrakFiOS( z77&bw^Loom;GBt1HGDqI!|f=<)p8#o_gD4hb}em|$UZqJ>**vDM00r3cUC{$!IOUM5S6_&Q9@^NM;B^B+$Fu< z-E?IwAd~=(NjY@&><#mT8z}_`cdg_~D-(Kt_6U9b(y3_eC;|kcM>55MF1$mBXJj1{ z(znWGX()RLts_D;Y^`&XyR2}`zfWH*n31QqN`lamx5Yx}=elSv`G@-7AZfM-@H>F& zI$GBuu?05=z5X}2v&+`#C;v2;%soj z$T7hI8Fhf1s^>^9R192?pW{0bwq*s#y0|IgwVlOY!V=7QP*!_eBa=p8GP^QtAMmW4CVu(gROqaZ`-V+d2+6ZUa)(AVTk=u=mv^~Kp~oqj>iiNv!9J+ha%_78$YyX zS}Fa~mg6TwwH!}V0$hKGS7~aXL0k25#z5($aRt}w68G8P+sYyPxV-DI83(6YH%@ez zG|8Gu&P7FBPr~>OR2}~RzM)6|oD)#CHH-QZ-bZ>omkh9(!jy%@y2YYVQ%R$N>?0~CndW)d;mJmqk7J@hN9!733Wi8E%woWl*Gif z2F`+<21Gmif#b53g~~Yt7N?v(*kPDQ`3x_m?{>6kfY=KLnDe8uIgy8trDgUld^DWU z*_)g87bIqHUXJ!jUTrGPG0h4Q#dDBaT`Xd=cOnq@f$~!$=9XjU0O7DP?7egeqv-Ap zE=@0cMC}EFf3w+lo(966BT}Be;bXOMEQm3s_zv-8&>XJ=JoY09E#mwU=C__T4G8&w zNE(nNdGsl`_kts56rSJG*1^SoY%Lyh|O5V$SnGl*SrWxIU4yI99h$m!pv zJomYnP}cba>V%x~!4K|B4_6o9j(5mL#?tD;QKY+^GOg%z@Z^b!Pas{Mv)_(OS<>Ba+kVu^FG zKuqe1drK^T*z80juHm_~MlXn4{IT{3<(+jb#TtS7I?UK8_l7%k`+{u!R z?72wDQszcg>}+{1Q#_*8JC3}dw(k#ne^WeEYJyl}mR!#w?V=H238yDG&hTBj5B)PM zTm93$XfdgzgC`c1s?W=?GNVwdT=RioM(0`EOLkP`#PF>Y0F?m=(DNvR)^zKZZ_qy5 zJ&)}cC0I4$PKiB?vGyO}^|^ZWcHKH-P0pqxcKsoo)zAT3vW++2w+`_DWFLYnhoa3C zR6`3o)>_gTh1iVtu4y0UMlw}7C&|pzGQV^^J*vI2__F14$}BJQzDx88?Q867dxu*g zu`p>2J2@@I^q$dLTGYyT%!P7|0c|N#(fHl|lZwZob%qVbJl4?s39QJ4ZXVloj&`}p zo$sfVCvkMR%xpO!W1NTv!jL(ohM^5uv`zgIwE#{HH3dgJ6l%Lbj3jvJNcc8Qd`pmDnPo9HI86!cDm?~i|!w$jye8a_giw-k8B#%(HW%2S= zSHV14`@d!wjEaCgp(WS5r~(_juBtdZpo6nJ6sJ6e)X&bdhRmvI8TjYR8f;z1p<-JR zG8?YE;<^O|aEl&cH2jhlM&$#i`y!luCd`Ih+{PV6@*b-WQA>FB8*oeJRf+fw{88g$#TC#fFmy zic}vU%7LOWr&S@{=G(uU4`mBT5a?CCwqcp+cBF`n$?koy4)9+nJ0vCPfTVPip|ege zV5vu#YiX~3LoWA6ulIyD(2Vjb=_o9O0^R$6bU0=u;W5c zy2;&IvL%H)Q{xI#4&+PTgmXJ2FWCv_MH0DYI~xl@{BA#j*Ytr@o6#^&1)&P?*NP9H^jk^@jr)QAq0!Tw1)Pv*rB(Ap@QArPe@9hn4v3 z?6*=ATY@%oSbw4PFDfAA^Djc4pMWbg*Af>LdLh(K`i~E2AfvyCb}wG(J}BU%q}xfg z{d7Vj+Btefh=N1)z#}6%RNSCi+_}lvQ^RZjGUP98aRikCUM-VRDLMs>hsYztI zNd-B7_Fl*2>5zwB?E=ot@KZju-(^FPhsjvr#;wRH%l}BvbL`SX zBr+s9bPICX5F-mUgn<|dOy|tN7vwpnvgqntpOhu6x(Q(DjF0@ROD>6AqsO>6-?uq5b_Gkw7!c zize_Z5B}!FlIN*CibT2tUZ4G24&Xb{+&&1U!UeCfFXhjy1l3ON)VD*_4TD{?U4gF1 zKySPM>9^_zr~Na=GX-e2Ay&(o(Hw$K(9QVIX2OPVIc93-KdNt*=QeRc&9vIB?fhcq zaNxGDP8;~L4EQ;4X8>u>ih(vYLf@W+qf2+tq(~tFW;RoYDW&>{^^JY%xM~wy!%N9? z=w1v!G_!9H)raa}*SBW|OPGL#B-nz|T^!VaA65C^YH}IomBw){1W0wyw5QSrb@~k3 zQ@M9{{7;8gSFIitWHrh@W!LBU8fD(Kqi+LoNb%>oVBU8FobaKtgJWT0evpcgb;I<= zuE3q6ADPE`Bp!TQtyI4#@3O`KUFgJISE&+Z8-m1PAI&9L#HY1K8Rzitmdh$CrW7^< zvMO<%*s4@jH@_wW5k3@m{_d_$4xGg5uF?)T{{$F#vlm|l0b^rKYr$4Nq*#?0Izk~B z5Jl$?cm@kDM#fK9_FG#}z=Hl{kn^W4D%*LWyaLqETG#91U|7&VR(4~lDsQbkP!E6- z7|B6BOG#l+?cl^i&GgWmYZ4quf52p)Zx$5bC~fsult@za3|xoos?K{b6X+%cj+-Yb z|665SiW*NSY+PLwJr4kSDk&%oTEG44mqKuX+~0F#v~-4&T1oT(%G zOGWa$!CZVYfMJP)eZ@wbOc(80)U++Y;6AHZq{TE_e?if*wvnG6>n5z2$k=VLrua?P zzn%cuCR5xwfhlRkB3(Cd9c&sPtG#)yiAl;GrW*fzTP6#6 zq|L#f`y;QG|CI!!6mQ(K8~S~YoU2T(10rJ#CJwX-6!X|wHNI+g?4oAhxk9O_x9DdI zAQUp|c=tDE#Vd=b8{c$Avt{5y4xvjLp69}p`9AY4za>OLd8si^FuIXaUq zfJ*mgj1|<(`uhaDM4w{pB-*3Lh8V~csza-YRfX?g(or9shY=XnF7}v#jM?!pV zfnL?M9L|uB9-nL7>@e`FKfe6*TL_Ot$+J;oSBQ!xo6VHu`o?yU$h%!>nDF7cYHezu zV^8?Z*NRO5n3lSWP`S;9xnb+MdynF?{g0wFM2`^_bMj@`3Y&BM1vr-Gh~Z^o)6n6b zwrMmh$e2F$<{Y_W*`p;GeWi4gOHWD^GTW*`HE=EB)CvVke|GwQfp zP9dIHwSS3@-9-lE$S*qyOSQTElR^jIXej9ybGRuTwBlEDJWVChyJ=&q@BN`wy_THK zO792Ql~Hx@EskzA7fvw6D4T?mUQ4qwY1wgQA_gmqOp(189KkniBza>D4bbfB*sr#x1FHMl*R4Vnyp zfX~y}VH))ADzqn=Vh~7PsGN7mCNuBX0tv$$0{$6)*%u1+;sx!>jpTi4a1NsAV8X8Y zK;SevFK>cGF@}SzFw`Dho5UTx`VMye3u5wwfAZW{L|I(T9=3r?223p?bEO{OV{RE_ zN$l_Y#R0jkRZOP{noE-%M0ajq5&-W>&%>hQw63R+NJdC4$mB0aM(0lfuJ7ZHOp}%W z*`pG?MT4SMmS58e3Aqh#Uwg?v7lz=zXT{(<#Mpxa!5UeuPMx|L@@Tlqky^qSWTV^` z!+?16=C;|u78Mo{LeZwU4WeFI#T`&8$hI4(eE?wYlLz%?v%(Vhf`V@ecFuSpU``Mu z(2HY|TuCt^rfmgZS0k%_>v-j#oD=(pb%$wh!8r_Pqewr5oOJ?(m~(W zgJ{u}Yx^Znb3s9wTKREQLQxc@Wt6nZE6=0Q5aT%1aFC0vc$`b2O+~l&}{8&yEj2K6rz(a-& z*X$vexjl#qNm?9guTPJ7YjUm+uW1VD(D~baa!howS;iy2-lkea^hs7>E9-4K^bGLF z(8!*T|A3GoVVPkA-LG8?1Joa)JQpZL2ps4s zm^p{!(gYSgKH0pwSX$hX8mHTu05)F+h`j@gFWD1h06gu+JKAs4gbf2-rD#qCt{Rv` zbZq8f%g4HeAL}>Iojc1}1w97#l?@awV7^}~W8-C>9`&8DGbbN*T{)vjbzDJhRUALH zc}>>0Us=o41(;u_zPI^Ejcpq~W5h6jc^zvOj`}fp)nWtQRaQBs7t}#K3XtD#WfBob z$?UP)0M-8AR@?^HFJG&)EvQ)vYkGW*VC!d9u2fK}QGGM!2APU}V2bXthnKucO3CL> z_+nMd?j;^N!Hk)XQpq2qbxAyD?NStV-Vt+$vhE6^0;+-ekld>}q6{S`^=+Fpewy)* z*kRB?M>V$IVC@P4YF_&?177~n>qQ$x3Y==h?%zC7F4 zQosN%%TB<1!M~by!VqU2@#mj@3F64C3nP)4K4(Xo3GWMf5~Yys9EKgF>chEpzdheJ zC!~c@nqJv_8%msy2~OIPjpeM{1`hg2#IMxDFHw2DxtoPKYaD|N^ZkvoBNVlhKW-x` zR`U|Gn2GFgZ>Lf+BmzOQ&atsaS@`&Sv#Cvjb9x3@v@pN4)$Ws{_Ob$ zzwtuPb)}zB2j3?gMN}ia9Q-^)rk}?s{EQ6<{qhwU9bcL@cHyOM2R8Mha6O#YB6`yv z1%xj@;NzN4%XHkG!%r7vXnAWs3V8&#Ys+!D^fTf3WZIC{aKmiM|Z4OHq6>I>2Xd(2V z0>T)$=55YvWyeO3znky4^i6JchEH?K97-UN8=JW`iTa?hx8J%sZ%TdoFHOK`T65vE zQ0Zf09*-KbO?wF}jGdv)0y{PA0ssqm;LJ!-WKc$Bm8cNjE|GO#K0r8YOCBtTFbpnX z%!+K3hDJiFkk$93WjUkX(5McXO%1SN%6ZllAZZHMyFMu@f9Ug$VGBi?7_%>40Vwce z1j8938w6E8!2irpbt=`o1Kx&a~Dz0!E65ntrN>s`=8lAzc+ikW%<`vrN!92wL`06svD^zZ!)c3F@#+yW8Po zKbocBTi$C>K(RoLRf6oATCdjX}w^e>LePK$?3ef+lN)e-nlD~%1 zi2tYOCL_xB4k=|uXCu+z!6Uice>h672EqMwKOXSL2yll0Uf(L4vwVG9|5sBb)-WEc3S5S z2@P#@0j9EWgkEQuIS8jbuDV|sQ<@=CWu#xMfl2*L;w{h;{XeM@=j$8I3M84vEro06 z9coPrI}O+?SkGA7Ub(oJ>@e)dlaAeV9SLvw7R=Qg5*sh}6U`MsjwIUr9RMWpPN%)b z^+7d$)z_|IaI^VccVcj1n5_vE?F7nSdiSDaP6cal*z8Oy;-y9fvC>~IOYsTFJ+Tx! zaB%2GCOG9kZ+a3!4To#?JrSo9?vq<%Fi)S zL2uV`KVjosqb$cAI00J63ERf+Nc3pR{ps+Xkmy}_6Qv^zVd~hv-{!5%9qgRmWI7F$ zpFCt7P1g`lSzO~Hy4O?XU%TdtrkV&0$7z_R0sitgj+|{Ae+Dj1EwU@450j1g3;Rim zM*pEb6==0iv8Rr*DD}adX$tX&ULliPtnlD?Kv1Z+(EX>mC{qA;QD)ZNBDE zy}_0f8!Ltv23J=v5ycyxrqxZQn+TnI=3FtASa zLCK6fyX|iy4H{{Rn_tbm7uVv}9ZO-;w@EwwDSo_%{ZH5MqH_V%E$qZ}OjlR+oj6NI zK$0Q`X`298C?0|N!CtaJqgh|H_I`aqAtwG9n%aCu`%`zwxJf|ydMIFX_DR84_c3VOLnf*7|h(+5aPA%JH6j9;Gv*U z)XeI=p`tEhR1tvVL_;hqX5We=lzCghj`)ZYj=K0fEgM&y;$?aCR`&MPUGAl#}+y`XZZ8) zdM#2qe^8t$wwS`#_&g}tzPn3G>w@PIA7^leua#MegkEND8<_dJgi!NJD?il{K;n|y zP9E|?TY)bBhp+cnay-e2W`8D+wrMTSf^aaV%L*M_hIMkOX$rFI(*{uNM@EETI_xGS zJD)B^`V?O}6u_I~vLawN|iFIY?;f=%WN3xw;rl*MzC-4UAYfCo!*$<76t*9letW<(*uL+n@W zf_P);z2rRal9bY+%wEu`AXAQmnnvN=IkIK;9);%d@i~P z(;YSA+W?n(cz7K6J%C`Ei>LhIyH{lGMjBWI(7c7>i_#b-wCuI`n>Id^4S5pY&M6ue zPctUp!4tXq!&SLmZp03x1AH%_>78)oU6xc`yui*VVNjz@QZwR!p(u7e_z$K$UsLR6 z`D5b3ks2elo#`AiVm>J00wws_>Kx3t4}v?XUiq4R=y7aje%dkx5mn_}C^*e0w|4!m z_hVUP7vYhNt>$MKQZX{Ejdt6@i=A5f8W{X}Orw)ZT7k_Y$H}c95w`=Jn;38L7=T5$ z2zF1Xj+}PXv&?#ZK~8ARV&4poU~+T!m-*0#tqi_5hhytV+j1O`8Q&Ljqu$g~D%JuV zn4Dbgab@L>l5_dsgi21rifp3fK0pFx9t7hgSNExrp!Rd}3WMwVGH zD3XJyNN))fuSApltBvW5BQknIl%vekK)jSCaWU3a^Ot|L<`R_+9-TOr;c4n;GTx%+0>I-PL;nH1}-fLLBSO>L64q(bY*D$uSmU+_TvSc68eAi$aTZ-^AzQDh>L3 zdrT@3t2C}TeDvp6#_b!JmV&IkUfJs|#4X$i!anjT%4L5 zJeElR>}$Ak0vF{o5gM0fBNA1t2*Bt7ukL`h5Q9KLyiN|p5yV}0)IcJ6_nt56*j_*L zAbliYkV6_@OT}OPigw8;)kaie@z3GbnoDmbCIswULP*Cx&4M@gl*RO?*s9M)60uDq zBa?4(`bE3WBnO|?&b64vJ@{RKo9#F=&flM9uoqM3_HtYs4TRg(lXRFnH%bII^PQ4>yd1Uf$=12&(t;9 z`+Lw>9Ldigcuq8Jet~1m4*8%Ow&webkIt~7PL7%Eo=sgfsv$DC)aUsJh^?+`vR|Vq z^(IVtr(nAl_o*_jU84A+AB7e!h{h9nS&1<1$WdZ;S#LBAY2vt6aaxGSy!rtj(I)zW zFvEMtNUesu&$0)oKkH`-ck_jU%klxxHBdm6;Jb zY-G}im6wETBs$yft?(pyrPO%zNQvg#UpGF4!mPiX}E7dhN zRaige2jT7`oqshZl_peaKF&zgzAHCCzNIGVY9F& z^WTYpCz4%2(hsuqgZ(ziCKpOpb%%KdVJ32&qr-y>g#Bn3+#r=biE26qJnvFDF{N=d zp`fyjh|D-U4*9oYd~`k;`Up>OnMDoHD7A#-;)iRM!*yk^u@HyF|c}hmNQ>gkD)bF+5b!+u=2M>2h&@8{|+y%=Q=Y7(WvjA;X z6I|MVdY-2vZUvC!>aO2m>R8HSqs_ckfb-F@{!8XNQH<3S19$4A)nX>jf1LihW?RKI`+_wnHTXNuaV?&w6pxT-v z*fxd6PgJp=7SvP0aT7HNaPC#g&?^pmCa-gTzI%Qj!pCyMR`J9?zs{;X%WjbzURMTT z(ht>H;eM?!7?%^)`OpRqU}l4Cg)%ls>;I7HR(AHWaT+TCc=NEJ$o^oJ29LKDMX&e7 z_Jct|9Mn~zNkjlgETw@H61=b~$US?76A!@_IEY`(*8?0sAu7MEHCN_}_%fk%y$~ZZ#27)AB@>i?7E461r^V{_M>3^oYrKlcl~S zw)5GP;5^apg`+HS2eY}37E6tt5tgZ)0^ff9A#z-KXl_5!PsB3Pw5l2I~H*A2Km5=VCab^fH9cu~Fs zE)kJ7fgxpibl>x`<~`UsrxEJ%!~R+TPFtxn%HLNiSs(5Jtl@@c0OkG^380YY!2G8( z2-GAO6rnWOwG-%$exEM=AJc*L=9*i;;U8p zf%W8idwXh%W`WY2J|i^zV^SmzEBSZ6l)&8tD&p(VFQX(C+(oTI8XMlCAX$iuyPAx4LwT=M-K&t7Q~O*|s(Ff++r7o{7aR!dQV_pY^_dMSwE`bb!E#^HB2v zVsz(v4LpU5-he75B!*Ex2SDUv^qutzNV5^(OLw8jrb37iPrQ569NGEyM>Kk^@hTROd8<`Hjw2-XLm5o2RL_10td^^Tz~OaMIN#A}y-#dXjCuB?`Y zi&2S;G?UF~{&aZpU>41nX`P|6ylVc%Y+D!0}z;*ySVFu>FK#U8@u;Gef zVK(Q}#EB=)S&^8>GEQGWzW||55-7_cVi^6PTyl_5#qJEaUMO!@G+&&3vX8x|ZVXpc zV9A4D3g5NR03M&JEM_>ouSmiNt6DAo{I3~P=qNKe)c@O6I&CukR(VM%ioZVCgi)&2 zsV=Wu5NS#$M^-U`WmPgAH}u`NNemY63;;o;!7^{IFtpc9nk*4?u-8p6I_eF0G$_G< zavTwV#bzq#HOHgfYt!ksWlkNpX2U)Q^~tCTtJ)b|DECq= z>~k)IHdnB2SkqyYnP4Nhl(no!WNW|YPc^Q|=9Ums2uj1}`w>A;#(x3u@9jI}GY>Q1RM;~5l0-7bjTFaB|c+vPTg~&x-7hkV+%$fi+zROaQ z*Qcon?wLH=;l}YnUh3W_;7vRIGE2#7(CJ^aSJ+{%tcE0U$z|#sk9)1`cgPptfMW!J zMin;N)LH+@?z2rcN!f*4Ms`gGX(gqPOgPrq1sVAICna&nl<$BQZ{xVaIWTc6$w&79 zGB7OgfFUd!*dCeBk$GknNYqwad*%x6`L)RWXn(2czAXPXJE>1jsYf*l?ef6L1~ihj zt{*QTdN#%^IpzpuZ#+h{vxVglp&5N{uHK>XEuJg1ciptn+LfEx5|8O2FkOYDErPM< zi=Z)?kJwZ6YRJy0o{H7-6HwU`Lnw!L56~QKEP4Z(o~)##&%#rp*(VIBD11#e^DrCzLCRP~2*{q>N8M-$Jk}?ID{d?=CbEnJUOyid}c{QB*6d&l$ zN`^Xm&EX`hLV2UFE^7FNnfvUAARO0$4WqGjK;1#CA$4NcJJ&R(K20d_Or?Irf{%Z} z7z{V)O~w!28SN0h^Rf{CC1TZz=v~-%p3VBBs%GX1RB=bU_pBKoO1!aABD^8lleW%Wn~K}b|Msk!`N>F>8>M#( ziWfqo*(?+(!Fg%1>h_Dh%O?fZvqfCP0-`d#J)v*zX~RQ{IBeb`(hLm}C4zb{Q=6-Z z0cou1r)BJpvca5}38 zdc=;dc18_){^;tMD?-^tqx0b=P`)%32?XGbLGNOxb><8#-W~Sj0?MIZp?(cS&CIN3 zKcXwNE8esDB9Xo_0_}l5C)1{c01{JZlJD`q6#wI1q=r}mgpCnl2O;v^HVeNH z)}mJxm>tgFsx@6vt4}yEHsceC!TAn>(TcAUvh{YE z0NQ4b-HU{i+3xeHrK&NCKEWXFu1Hf8fFC2VjdPq-Pqf8Tw8*dLNN>Jo5!~3gCraq+ z4gqzPH178I9fGOb!O7m^{eLiw>)hC-BYa9+O*lg}-|stW6)cfOhKx2t_!0 zLNpZR1Uj;&&07~^ywI+x)nsC7316FP*O(TDzD{Y9a{lQ6JS|tkDtnR_7#NtzfWlhC zXmlwbQ2yQ`SH(GHfp{?b8o{YHu-@|^732F=FH(nUBoPq-@E%mJyMm~g0C2>&NB1@- z{H<;fvhnOg1=^{F=Y%Xa{ffL6~(Qah)zvpePqvLdHcq^)~iStS7@o$ zs^}H{HAKnvEg!tcGiiGDT_dO!_d~dz-RKPXF`U%9UtS+Y{1sm6!4wXhVvR!N5{GJN zcW2W?7L3K1q3)B`W~$(z8&HQKPld-=V$et02LmMl+LGDko^TZNvT;RimE(NQaD13$ z+&=<~de@p*=#^c6{qs;|v(=2_(_F>jzO5DWVX>tIFE)@R51sO0JKv7O*t2_Bs0_4j zgj+1okmqpz7zk?b;QcUnWT2_;gjuQwk}9gcJW7a(`cRi~lNki$N|Ys6_%2ev=*-x+ zwXSaV87Lyy6`TBd?_Tfxx8(fF6OTg#5s=M1$;@zq_~nUc7E)n)A`Cn;gCRsz_Bb#L zmo0)%HWEkZk=gY9xd!!(No8Ud`g}QSp(Sk;t0RIRP&99V#^{2YqzUm> zOsPt1J9JoDzvkC-q7=0SZ6D*Xo@e=QY3d#Wj2F`l!&ePAAcc^WrNmF8&Rwc2;rM-U%&r#uhP?OtYn^>EutGZ1cfd(l!aG-fm?V+gsj|NwJ>W7q? zb0x*R%p{hExc*74zj-+N?Tfli^Fe|EhK}YqkO2O<+B_;6>m{$HjxakAJ<)xX8@$M9 zxa1KpjRi-Qw4g89bAgRCvcmQ`-x^YZU0VEK2xR;fj_l|F!4zrYn6DZp^m`or-%CmU#(#Gl-7RYbVc@AkG5Ce$)E=MxLSxnf)6wkec0VmbmuD4 zl`x%+PclCQ|0MSczJ`u07e5Qoz-|frW5*vcQYlOnbvLp=QX-|9Jp!Hi=1o0ap#vmt z8Ay;JM>u0$uZaqDs=MR&2mP_fyZK`MWd}41AT;h=wWEj*FMBSbYrZmRV4w2k-VVgb zqujNrioNeO4whq4vWZ$TPs06c(?SH$TF3EGY4^aiG5Ms>VLbfqs{=q?ZiRHlE3E)4 zPjTwuPmWbclS|*hX5SG2No^PXE53QAfYQ+3Otg^f1ME9q^cq~YDhEo4PT)y*tEA{4 z$I7M}?M*D_K>48e!gai@V32B{$EHlcASQJMgh{Hr!u1X9H6}5*;cdYW%Raz0LCSsF zl<;umZ%6oKd++NaTzHy6VmV)n&6vheM5V_(bbu`SD_Sj+o~pI$Te1%IgU~xZRU|~T ziXoj~IU&qvPlz-SRUPA^+FepWMJLDXE*j-nC0h@S5(#+1K-gH-{Cp0;YjiSm$o`3` z?~GLb$pY2qni_lys(z*NMXPAm=EnQbuv0%3pJ5-7ZP;n_kE>XpTq7d61c+w3h($6Y?xlls#1MwDB8nj=u7E`mfa~dPI))AcDzp&OJBfIGuSsUwiOK;i zU(F&iUqfM*x;#QDo_k|7rbbpdx#M9P2C1dDvu){2>Xuj*7J6=<+<& zAlL1XL!0Ako(y|Mma&WUXh0E^Y(>@d@Q-~X>PEG~gT8!3k!u{Csj4U%so(n@8%Ej> zaYOCHl{G7;B`cdLj`pP0C0(wIAsoSsOXumh?!a%F;iXV^X{TE;DK7>0MH^fUEk%6mdE|b`vY;DN!|vEP*uIziPPXq zXN^>4@X`z_8pN&^_Brx&Oi&j@+t^(^A$A-Rdt{S=d_oB!EEXoSnVm_ic3=jsf_win zOOnjDzS!b9>R$>?`&C7$ZBDuU6ENRz-y{tpG%x;)g-vP`XZ^0uPd=juqfa#VoDFI5 z82PGnTac)s&qYg&X1IBuHPO3X(S^Hr1OoNA&<57~Yy@2PWqC#i^8 zovRGV)F0;Bn3_aLANcbr61>kUq$@ycajxMQfIdG}Y8LHfJ5l{8|h0 zi=|<4L07qj#kTh@$@K6KoUJkO!MBuvEO_NZ(LOcpY2gj(VP}8()p5Y>q#xZnz21qb zSt?gRQsVcEQ@cDkoO%F>`t5%gyh7wd64J^c9NmDRkQ58?Z0KI*Qbsf|bfQi{Bl0`P zG#Dm%C4Ra^0^lmmOb9CM+FB}Q-wh<{C{e3%5D?GNhTjzy`vM7G6bUihBvVJ5iT8^} zM+vqYfR;V>ph?EVN)}?9D|)qmXi8hWi=o6<3NqbKI>L1bS!F$uv?RFxn)-L{Nb25o zEbtT@A&kj9r`jMuV4j5Da=1Ja03^(_t}h6ktIt(3rvO`d#xjvF~JG;s5ZJG5OU^!_QMqlOTwERQQ)bAV~wl>4`rof-S?EHe$q6 zcyUIX=~74aMtW{~U{WH_{9)tZ+7I=@(pr{fz#XMkLsv9bXh_~PBgAFIz!-5H?ly;M z-B1A2;7m7CZ*~H4_zC^_`0avQphymF43P2=un{=?qbi_MK=s-2ZkN|O;)Hb_{h!$r}YAPtHy4%Q(RB{hL-yU$eaOy)cX z{nRe$qiUI29;Xp_Y^G;;t=S*=r&OK|K*kH?eZI={!CKNS6hq{HFy;19#hZ#5mXt04 zMWQP=J*Iei!s4k~hnZz@GLT^ayxppJtJt9D(R1uNR=QD3GtVEZdthc^hb@{Us#Bh@rc5Q9({Q0kxx}IX^Pv5^36W1ke$NP9#{y0>_XpA-68$jMr-^jB0%P7esoYAt+8i z@Zh+}#wm&D)riO~uAOQ?gt>(wJ|s}B&qrm(^v^c~F-Z^LgYObwmo$~18+AbI9R^CB zwJXRu6qGob>Vg&4(m-4k#~5oNIR7$+q!g$kDC4cLi6f2l7eF- z2ihHht@HTQJ=M}TYv7;q8;jP#pDP!av{h?8IO!(H5w9gOY!N{^+KU>TO#Gs3?`wnQ zP&F!}^dq^S`puHT+o@VH{3b7-67h)wvFncSPlwOW0^cxKZ6@GA@=`5uT3rnJ5~ZMZ zy$=>TWw~w!G=99z@Icohp_MBKd=A?utm0z~3UoTXEp zaZZGR9VgBNxjt(FkO+kfjm*=%hL*yLORj2H;9zi|E`acl?vcb?wz^3hu%wv(SG7Pj z1Xntpdy7Y(CAbIbBiuJp-rL26l*>kje%@3J{c&f3UlP&9R5zEx=@V@%_<;S1e|Hu7Yan$lSfbjhl0kQtX&Idn~yo z2Rn7i>LE52)DMxFDomSGB@Sqt51R(g-4lQlx?iV>4-W~Oh#(RdD;I8FKXYPn{Hi8A zy*?0kCJF2r!h%h$D2DZ;#YeC%%iIk5tu+y=zjTayyS*3_Wgfd5knvsD6W|96>!+uu z^Fr@bkc#T_4D0-*(%!dN(Mu+6XbT8Gj{9Fb7XB3PBEk#Mj8s$DrM>r^WWrng>6F0_{A44})J<5))Yr!~E zl!((R4Y(OoL>!qPpT|>!lKGZkV}3S_&lJm^eJEDJ z4lcnn5Y`bZsZn;`cfE1}RDq%aE$5_#yhIgc#|rp`46}R5M^-l&cY>}}{-Dj)L&V20 zz%=c1n9Rfo;dD_1`XO|GAK#QHfM=e*sAk$`=9Uno#vlAc*oA9;tL(&H96b>sOQH{X zqHgbtL$O^;bQv?jUv!oLFi_-!kJY6?kBqe!$>Jkc5lTJcUU@bPj{RJiIBA|+dncQD zk2g*UZY2<214zYUi>c6}7F(aQMkF+>;^J`$7(Z<%lPN2nLyCbYNe#-EkDs5V{oYI} zlIB^^kOY%vdo(Q`dsY9(d7Exqp_!2g3Hl7^g{{%GdyiDm+Tg6&k@(E;$}JW+Wq-z| zIW4h^{k+vqV%v}dxE#&m!QX`2cB8S}iGxL6LSg`|nSLW(KJ@q1=_5Q1%r>eSs&X;+ z&frGJVmIj1JwYi#*G@NfmNRKeW{_ZBzEO0r6KKd;$FyqpJ;(+5nReK+hRII=K*4Wg z?5zHZkiLp(=k_aLC1q?Y&=)0LBGgJdE^Sw%=L#{B#3Pgks@xCFjf_E)B&vksgvaQ} z%qb9Tud!(MCPGes{kKmNvC{yS7p!fRsBd1M*uYB;IFKc$X7chSfN=!g4pq;oYu7Mk zo9cag<~7cUT~HQ~3SOe14^8dFB{@+AO&`6|S@GQ6kD8}!OxjNABkbjhD7t!|P~%frUPGqlw8mDLt1D7BeHf%kFhhFPLQKrc?HmAgfZpJKiQd;c2R6b1K1%w#KqHT zbXPHHV?sSojC>&SHs}m7lozG4d@mPP3;a3Xm)3qu(kH?oFQwNci2}~73D|0L3)YX{ z>sS@ZK-&DI6FpkuuZr6p-ZI80eYu;+kQ*^{QZn5Jb>|X4y9lL@hx5DJW+$GGGAb@E zTum!Us<$m?h90{*m1-pnAF25|uF{tqNxMj&uvBm&+Wz)FWnR|Bt^BtTA6<|F?apnI z4p?F&tuqKe7BprI6B8#tSh7%E9~N$ArKC7rrZBdbgz=Y(6Mp7UE&gdF z-RKHBbEPyn|F;YQv%SZFt58xjyAnG6X*q2Q*XhjgnvPHr37fy}gVx6NgId|M%E?s` zLVTQV(aP3SDE=#ZZIbI)qjReB{L&(wxx1OTXHcRTy)JJQX{e=?@+Db2S!@eA*h)?R ztbmuXSAQ5o3LHZ>GNHE^OSRLRHWpW>-LP?ZrPjjg36Ee%Au3uY21~}!hx-QC1LJGK zDQ8EmH8gesOvm|mOEDK2Dw!2Hz3=H$mA;(}BFZUUf^L#aswp80gBvV=Cdl>RE8@ zqsSJOBRlH`SiY-pf?;r)y=fX2Fnqq08|`g^ddmm*_#V~0MHaVgNh@mY3zOFJA775a z2F|NTR7iaA{?Q+sj`2y{1HV>ituoBo6W@eip-&%9i(;eSs!ipY10f7M4eX*v-qczB z_%Y60QvKWqb|8Jl!%iZi^X{~CtP43b<>Cvd-_f^L>!C=s!<(I{NAQETyC*5ji$t<& zfzG$1XZB=ca{bricZL0-oT(e+q#nGzZn^d5xag%bmZ4JiG%27^w=G zexGARQq(NET;pw9u7k?-s_Nt=D*l2$5W%WG3GV&MwAbYyw+Ro@^o)8=!$}l?jCg&Y zj1bXJny<2&LGtAU`Yi;}Xkw(G$bf;={uL-YL*(3XLl9aL0Xn>w`ctob>0ayC69g{P z-`-qW>gPD(m>aerX~}q!BGFQD`_uq|YK3t0ra5eH^-2Y@An z^l{i8y@t@rT&|Hzq0&UO#C{|#$H<#T{N?Ndx3hGly_vq{nJw&&EcNdM#MRWP`_0=z zsX?MIWM%5=mn59{Jwe3hiDd~V8_d4o8A zX=naV-_*q&|636(`J->f4P(Bj_qerL66t4^G#km5a6?&=#gfoN1Ex#YfKg{Q`JiNazTTa>SpS2k%G= z*87TjK^gsPvr##fLLF`g`qQn5BCMo$s2k;Ds;L=y1Twe1Nh?5{E%joCrKNxKrej;C zXs{?4pwxP&xMQ{0H_huc&9LeS+UDPJXJ+lrF}Z*AR3|}aTKcmroVs<`ao_t8O0-^PFZzgi+0_#pzJn8|t@hb4Hv2NnJeKk79sifX z8I~93CADh9pv)fxsjAVma@3Y`zDF`AbeTL(H{A*~BmX)g8_!XEDyhuWQY>jGwW7`> z`UglhwLxCm$sXdlk#uA6L)1mdLY+_Y?G~Dnf_PwimK z1g*wZpW5zA3ad>8G@QVy>0sC8^Z{O}1JR%++Sf}CvX1;C6qLgX&h*Hew(4EZ)TGb? z)bn16{k@*AQ4i?tK?DdLrsC|z2tUc zMPE70L>9vrMt1*>$;U^`pPtF#p(FEI2C2~_Pqu=`h2{}B*H<#p`u?E+o$;LD23MeE zD_fh^ph@1pi_*eb8=UM|?f}GaWnmn}2gwn^6Da$bj+b;ej@tD8nLKQ7Km{cYoTHA| zO2u^9-9tXp<=duYpN)C8ViLF-Q0Do~w=RLwPJF`YJ#H^iI8{T!s%r4W4z0FP>PDCf|A>X6P|Ze z&JfQbg)%KGe}C58`%c{m`$sM~#B`%-pR2Asp~*i*CYHX+VUJdkE&HTT7CA<4MZy1; zxHA?WeZWr6$aW!~G%&si=%e{Btx-1S07i6`Sn?L(C2|A`AXKgi&Q?xzlXbNV9@dYg zHda04;x@cKq9svnPhPY|8D7J?=3nt#f^TOWh;OoWTu3EzfDe^7i#MXVUX$tQMU9xxU4rw0`zDM+o(VwT8noqp^Ton~)Y$|t? zbdf;VKaVXlQ};|*X5=IIn769>y;9%I9KQqmEBV)2wkd@zZMrbc;uolw;YE;J?N@Sm zy~xyW^=y~810IjM^7ilGP>Z`sk4Q9j``^6}Sq@pX}4+ON;`r z-;UY*?+l6n?4wY~X~+x#3T!lEU%fLc$eeJWb{VskanksLB)&TpOKiLma5J;A_^8-= zD=ME3kAimolo?}xU9GTy94f*|Hjj7hZ_fQVHR|#~(YzLXIt4f=1zepmm#&AGf0bPb(RJ)ik_`9JyeX`Ha&^41(yjYD`kfL2Nu2slV;<|QBBI5QzvUFo5}5r{ zKCg#uO`mZaRFd>lq21;Ooyr7&^6D1Abdft2E0_+{Jc9kqOxLlDojY!e_-4)}yTL)w zT5q^w5XVoqMPmWzJ=IwKMdtV=-Lwy*5{nj4r_|qPUtDW(YjCPN1rwr2&MQB+hMaNC z|4{bBugHFX4_4{I!k>vmP8cYeKuHbs0}4DomI1}OMURcxG2Kc7MZzvRb2l&G4wco{ z7;5$r&D2a|q8Q`HT?6kvv@>?H+~$&-D-OsdkfWQ9w>1Xd>1n@zhE8h8(ZMDHU`jQ| z>{uuc{b|rpAstik$s6NLYcR(i-$x+ktwIi~W3L9A3S9L6#?y1z-18h;^c# z&qNVg%JJ-k_o;%KNjA>aei_@nJSL|SMiaNYAFVxrGZSQ0NQYaGD zcO#3^rQ{za2NJ}04ZGh$8bSvt4a;4w^V&`_r|0vwJ7CW?@6HnxYX?mAnY`Hfyn+X%t3)%RAhmNOCkz*ydt z0i(glief(?|0w4cJ7G}4PM-IOkIhR`e@Ww4Eh^c%ZsSmgYeL7ZBJFBO>nA6|GYL4q zh?ZP(h-zzTdulR0h@%DkPmS6*!PeVyFa?)u(Hl!*wy|E>#RRXKaP{p%!r^(W!amp; z!<&Abj4+eUq<@7qb%hUKO=qiVqf39yhK4fo4sGO{^@8nSY%dah{3@k0Q>b~c2`uvh zTo9eH{lyok{yhdtvTbDKS5 zw`ca1-m-C5OP+Kg-;QcBMUakxjYUbXo83k-Tx!H|2E|zk{m7GqoLA1Z!a@V;u6h&S z+r`^K&V#ej4`b@4_FEgI}=tfp8cht|u<0 zZB?ARm_4jkx36=j8J!zCu}yN79}I`^CoD%^uib^vbG1yl*Mc zUGJ64RGL~P(O@bfd#F&vHO`-~c`xF^ngBInO)%;8Ne*23dtrxrLE%GwIV??TfU1lQ zC^!&q@? z021?o3cpB+LVXNqMAp@MfmxrqOE8Dwb7aP}RPoUqaPOdCy#Xi$)@+gZD^(!y7cvt}lzCP^G`pNQ~r{@5Rl6=>~7{pO2hH7Fj* z+ZD3Ez`Vq%f-2_e(K3tF39UMJ2ecA^_*DWkd_HqZ=Q3e@v94vc&0kVICltx75eUbP z{K0NU6dd|i{X_|#YU%~+k&}fF4gpD@FPT|2`V%SV_Y=St>qO*`>iV?%@rFI1{KALB z2Jv^x`1cR}f)g#sf7;5<6uQA7=m{pt5p;2JmHJ&|LO^>;vpQ|j%eupZ!o`(NWC18> z3i(3xyCAydSnw=z3AI7O>wU@vHAa)tD4K8a29G_N?)<`A;8rQx#U{Z#o^`%FWG%88Z6 zA(Q3p)xw(DG(SnsrHh|jY!HWT+79gbU&bVAFq?O1b>$Ofpj49 z!y|1utXwew7r-=WM`?b)xoVxOciz1M>KVdLRQ(YZCL%k(spU~@J7y*;E^dj;r)QzW zYlTUR+yg>Tavc$50-%$W5-=+2+M*3s` zE4H{DkaCOV6B`mtS9ouh2E)h_ww!ha9Vs@61!_lkAJ%cMW3vM*7yiYhEN~f@mgqbx z5BfJZq=01*61%SCn;Xb^24zmgXW-e-jU1F0+0D2F7Vc)!<)uJxaWSN+wm5b#3S0UX zBwc79&UK5m&HT%T4O#qYExj%g^+uLs8qRH^#V)>-SG#PSkJua#kJ@Ol{jZTaK}%!{ zju>GUEQ?5p!#L?=Ecn>J2*RXW=5Z{@d0ss^&61+FgVQU zu2v|N*ujhFTpaG`Z;ef}uqf$zs#(#%a!f4k)CyZBD&L^_{A_=$`jvO|t4;6vl}HVR z0fo~cPQhHExnsr|HcNT|UL~)bddi+^($(CodDj5Fj~eFQ+Qyc+x`2Idg-e<71(+8f zxqLb|$xqz4(hE>Iq?;WoaSF}2vHtK-(q}Bl#+PiWLee7R><38Qwx&vfrtdSS;=*Ad zTu8ZNwIo$eJ4OyUKQ9iy(H9RWQ2FouNP$=F>H(J_=&xPfk#`}YKPYA%#bHS7Xvhmj zS1>qkXirK=nYbTQMR64XymP}TvfXa>nkiX9G^BAH$?LH`U17fsG)MUrIt$O8CpDvU zH3FS1AwHA*KE-RurSv4$Vdiy!Of`0lPDRBq*K%-Kp%{(((1*~D&?9ito{sUj!rHFf zZ}U;Uh8O8^kRB=$3du?6aB|thsC6QW;-o`n8|hs{Ryh{(7M}MoFWY$at)luBx;~QR zgx_@{d%7Ht&p!qjsHi8~*>qx}h*n^@Wj=uKe6z-`j080-R;%ShN_jw0&(ysg0OaW4 ziMbUQaYMm6XWJET$8uGREn_5wd_SxcrwR3~>;=ia(VdbxCHrNU^}X>piTk_*A)_=L z+6Q@gPSz!+dWb)M?>Ejm#ft?PXyg6X;1^$MDiW00T?3-m9U|>l(elZ^uyN#=Wz5^_ zbSG{H3|}$gp{E1VH?OK>Xb}7o55TZ2RmnF%w-_|8S8#M^+wk%ojnGYhB7F{fkS{q-y8+dYC*>GiJbaYgtuEV2Zlx|#BXJ7(*!&483OP}dqB zr`SOwBd-n9wT#cCgcQiMN_o0ZW5s_$6z8`cE;s3tUD%%)t`{%}9^<9s~c6#|5CMU*~w-X3QLRX`dk0c%=}hbmmsxSb2z0Gl|Lt zO!df9(BWoC=Nl0+VA`-PcgMmhEi| zgwpOgsKK3UJE$eML4#AIXW@&@ayMBdgT}zqq(rz|U9VlQbIyI#IAPJ|#`WJP=P)dj zgp)}2C@di;<#usS&RWBL=@y7M;8=Bxa1`E`_ZM~&`*$HoTI|5p_8uy1W{ere-+YjA zRu1qA?tup$4||49t2Ft>_a`L?(9Orcb%P-qm3Df@j!d@c_Cnp*o1#tR6?F zvz7-HL6g{QfB+{O;}oOdBSvoBQvsb{c{FJ=T&mt|RJg6{whNZ6qY-RCR#4?6XZnJI z$i_R5&b~y z)b=Jf4@#Fsne-FHI%9}VKhQ09RhPn~!at#T%<)C$&ZNoaOMAuiCpbW$&|pWB`{xEi zW`AbD;#w?M$Rd87dffo#t3FWKN0L{A0+IEzUB@}jh-WV7gOkRJHpn}piGd3=W+;5>cB^#=nk}y z5U#QH;I=v~1fY!+lYR9$U&+TOO5=h(Hbxdw;*O0h6KG$h+&b#dASskZ*k|7$Oi1t2 z-Qdp0wmf~ORy@@^xP$gSf=dneXj=wRa_-r@ee>vRBexKuB63F6`4up>eKFMVzRp(Q z;G|ElBeuu{*<*HMtj5JSyG>u+cRujkeU@G{m%89~HA^sYBK9nMw_(Iaq&{0Y++>f| zo+*;PbjofO4y6maR}P~^e5>I;+&=AH_+zf6Bu_$MI9L9z9|mZ7}7XMS)HFUZmqI`kio4!R(4f#I$F1=SlMIE2d;g; zc=v}?#Xga$$iK)+UI4rMQjG0$738v@aT{a9baX=^W!MTD1jV;5-k04>V9py-$j^R&pgGkxR&)?Nl!h>9-q3pWSyBd_orZpaeXX1EUiq&PC$MW z_imvY(zDz=qF;SEj}wdlno&+86KDL9W6RvX6y1BuA+HrZ+f@*nj8Y@dH`NIjxnjtV z?~E5xDJzf!^4s0E#N0GrHb8k+^uu;phWTVI{xB*59@40Saf_kCTHg7&1gFfnH7LHi zXgnLrgMv4PB*lsp0F`@;CF{-O& z9KP3#`@xofC_1-X{lFC?_GMEYO7gM?=?B;Qg!_O?Q-5-dVYmEv96uMH{ve3dWb?U@ zLRp=$l|>XQ#LI?K55UMgxJ6>+vtLv&9nu0#@#Rfx9_uaIYznr=YN@oF1Roem3oMMjsu zT3NO1C**Kv#UKXmQK1%K_PSYXdpZ(K8x|frk3$sshp@+ek}s$>LI4^48XCi~A(+7x zZud*B7Vd?GzSD?SE_It0w2#Cl1}}yXx*n>Q#oN?j&`34;;d3%X=&qlrIT)LI;m-If zD?50P^3zTrC>C9a$Z%(KA zS*Yl7!E)M9bm5BhrgTAi!4LjrQCKe$NC8)6g*X6+j`%rz@?YX4oA@Uln07MmxzUYM z=|xYz)))shx~|!{0YOP%w?NUQm*}PMFR2p1{lgwd1+(PEJ+!aVi56YZp;m31?^DA`2`ev2Wc{Q{J%4>dV0iCx-Qk&)i6kulRh?dL*PTqtb= zM1IvDI$_pDTuHs3TW(LTklnYPsiO15Cu9D1ENoAm_4SP_6uAZpsTPd8_kp#UEfH>2 zY9h2ry{C*wH`pd!S^+W~_}^ID zH$AOAO63a=>UoNtR=UqERS@>wz4MQ3kjU)yNsS7q{wmp`6n)ROh}~0^;_}-H41gZ9 zB(QSku`yYAb!Wmn{_0P?RZw&0^H9#&BrI{&HUbRB!Sx+qKSRwONV!*yJpW@l*w8hFHCI?d#l5W! z7muivTkAZ)scnFkpI+{3)!lOgcZ(K4V5tOCplvDOa=}Qeh^<-rWIu?|>Amt0C(d-$ z)T8kAwCTf#2c3x?;SRAzDpgh62T$zl`$;=fyrT*!**(QH;V@c>-VB#qJ&v1~ENzqM zD+3;5=NAY+RsQyk7tz~1%e_3VKImy<;n+)P+_vV#86>Yic6a+`kx43G!^;v-higk; z7H5hO(L$92HupW+cVd`+QthD0P#@h-0N=pf=E}TFQ!^ ziZvqDY~-w`K2&kQh<6QOd;sQ)?gK%{TTeA@kZ zYfcIE#w9XHoR*lr3p#;}8>A+0JFm0oUkqzOVRQ}vv)@YmL(`x1Ov@Wn2S&fpfhp5g z1}|Z|_G`zmn~F?TQ|f+Hb67MYDFv=qAO8m;VF zklv~4LrGvHKFqBD;8Zg^!4M1NSg6)Fu-Ce|%zw&#iB2RFe5&_}%jQKjZ{z`}CmoPQ zD!g3bua*DgHOPYDp>3OrbNmBUytm0f%TY8q{MIC~X}1SbJ`0(@xbyNmvR?;1YaOMb zMc^8`lmKC1Jo_)Ho9J0oX(N^4z8>2TVh~m^(A#3yy7#y<^gVeoGWS$N=P%OH6O@cx zIi;@vOVz^pJOMyHLHh*9LX#5@OZ-X**rOI<99)C5ks?ZJ*CMuQ(4CuzReE%xCh2$} zCOFY2KT&zen2<@m20-k*jV1e&+__$>c}H!-a)i?oVQr2$(3L@WyP^I<@Jz7F_UF{T zPYv0!@-epdq{lRVbbAQ@CMOCriyNlEneCtf3NZ5oP#*xZ zjhSm3oB8>+PfvI8_9$Z7R^}KX+7pIiSb^b{D@SXDC`YqIC+yMDWye{6iM6YVtyak% zmh_`3+mtCTa&z!;e(oEzx*hC#^|AY2Jc-F0R$@TQl=Oq@r(FR;L;9%>ab~wfDu&F9 zLYC8MUYj?I>pZQadjOe4-O|ZYvgXT|_TwaZ`1(v?QOFDTo@$s$w`{290Bc@cA&fBw zj6NNbJz)apT%G6=#Usx_{UmW+|NXqDbvzrvDX3nIqZiKTqGnkH!L*?N_gfa%D`H?r z@vfuzvd>g5-KJG1@x)+O5@svFa&eH7-E2fIL$h{V10MRfS2AKJ@gqsESRdiJWSt+g zcLT%EgQc$#Ba*2?ON+qjLCu8xuUCS-%$05)DU{iB8ysL7F#)!)Tp7ipfxg9%701eK zvFRnY24xROl?I+>4A$?(KdvzkI0)*rvELrR--1>$Vbxms;xA}?Wh%K^S)})3`XQSD zgPVTwN($A}Ok|4^Kk-ct7JL4;c^&)@E$fDwN?yg$Z*b33YjCPbLJ+(QTg@W@&bV3B1!Aqxej5Jb!O7aj z(*%s_H_dU!wA#+2O8b>kX&T;Zp~=c$T-gZ=o(z3iGHx-GhSW=&(k|*pB!AfqvAx>o zJ#EsO(`)^&ha)x>w8D%}8GR{Y%)4Ta^(Z*mMoLr0ef?->p9x_!SI`Y5z&9IQz)gtu z(Kj&XqcezOYz!>lUC$DSpR;rtFXxXd#mUAxn;kft5^Q)l(;v(`B(LQDBp^U!&Ymv{xCb}*b(*}-crw}HCFI(}5$$a-Yz!WJ1yd5SD zqAT5iX|QU{8T-I}ym+c3yH!eH?ZjrjnHq?L#v`bOdF&8I!jjz$X@5Lc_HcfaAaS|< zwEm<85hdM<2j6BKPX8DAz-5D`V2RS(3q_hcX;frS$7H_EF6Fi4P!s_)i~7do_Nbe* zLO$qCk#pS*f0MWZ2yfe7N_?>)D`0NbcQ_28>FVf&p#M~mRBa>=HldW4q6U!E1|2DO z#_TD!v>Cz`A0lC-XZxv8nwHh#|90@h7q?^t%1hV&!JQhpvMmwc9=}gVBa99zlY?L= zfIUN(6o_TNApE^;;hDN8+7?2-X&i1n0 z+v}g8MGZ%wk;s8&0a+II$aRDGcxh2%aw+k1M*o|$UNWq`$TE19IVN-_sT|JMgc-G4 zaADv}*@ILy)YIe>ayS?=B;SY8o~GN1di-AxUm*DeT{ghMK>8i4~Za?RA3Qi}T5xX#-Bom}_!yrs(^adUa5UykO zL=W@6g*B}6C+f2Jxzlr=lo98~RV8WVnP_`I{2`YSbf?7KBdkoh2?vMZZB6l$VYdv` zv)k%ba}7h7$Jra`vtgW>x-uS7ckptbI@6s zpBsM8A_vqlsr;Y!{}4UzF4)`{Hp4q%_|UIsW9zH zg(_H|j8|P}&_bZ9O#}R?3cwkr)~lJ`fA{5WpZ;G+hl{1Rl&3e18Hs>q8mt1LMFOq1 zwC#d9-RQVY?`?J2^dtk@asg@u-+*qM$yoHs{Z=$FTOE09yB-w1mb}kl@eTfn(QiN@rJH3QIWnv@dj52WQ51Z?rCo>fQT%-A0@5Pmu^AuFSthI z_@l8AD5l2zv5kE?JpHRl!A{1EErL4*m4YLqAX_o_G-3MP<7Jtk;ob-;O>p_fFAxLZ zwRrFU$GDI?U0^BN-E|o_ZrfjMsKlN5$EW>rk8Z*>6I-Ljw=q?Iv0*h>O@a#{8$sMh z*O=aQkfO4X87Ql@w_&8N!@~UgCxYIaz%K$X}wl+M`Xh+)_e1PjMt zj}GihTR}N{h=vWX^63IB=Lm%7y8+<{jI?N6kX{$jEA-HpPX zT($5>5KTl9CY}KDx1>kkn+W0U^TGY!p*GDor|vzf2p`5k{3jJJo-Z@x`dzxxqF9)E_~FK;(#|xV<;`>Ia5;*XAmqQ zQ~2WcA;Y5Q>eDSVkoH?89^;;eY<~`11zOuDc6bEenqal-fdwUl6qd<$ikMtqCM^s} zu;TJlcA7Mc>tKcTzf)v|x%I>etGiEymta}e>eJoCQ@eaqOvyEq26XqqWn^TazNH%y z$K@v6A^ZqN*5Q3NsFR4=iyZBo!chQH&BTOT4$JQFlQjHe#|x=-EMaC9HtLO9P12P= z<`OFvW!^T0iosg4pOB5+fN||0&jUhFE00Z5+cKyBZX5n@I#$ep>lKH=g9QPt|Fub~ z6v@}5IN4KN^b!8HND|k)y!>dv(0V`|BSup+t}wDKnEAU&D%Q0wHzoX~@;&U+XL)}p&`@iR8^rP~{r%5nf&B2vsU~E?JjZp@ zu=rc74rb0N4LC*e{&ce6mVDU^EYB?2$vSp1=TXeiZmdnfOjs=Fr%k)b7qFT+wWR70 z{F1`9xh4SMJA^A1LbEBMbeNLCujAW=Y)%3LK7S66Q~GNik6ftR&{|V*iV@BJsCqC* zVTpU^^~{lQlGv|gWPMB5#0FOB*uEnE)foW;vAXqxxEx#}~?uHmbOq1+~} z0X?ns2s;(CQzjW&&wXe(d}9jA#gKFs$!4n)6imZJb|A~oq=&I1MLECS~ zD@G(MJ=1Y9T*)2(CzWz@`F91pw5%vu^+4BAV3-@i0k!5%y0M_LZ=nJWGV&bv68d?3 zaeJ@GUbGJAM}r&OCm7BuoR#s9-Y={u!Nzn*YRx>rkOOTOh7K|>96DB?Rz-q;y4wfZ zSUq`EVC{sGWE5v!i;FD%uoJ+T`SroYIJmV=zz7FU9Gotc%eU+wZ+BU?f|MIWle9#c zCodG|j}E6$6mcXiS%D7MuenJAxR>fu`}J`&6DqyNX`14ebCo?O-!ZJ7?!r?w#b}`| ziK-+4M5z!B!FmzhC(zIQf5MGbSKxtL+@ED`DLn%4yuv2rEKw}Q2@O<=p#VXa=-)xliGLBgn49$>R706>v}H^vM>Sb7 z;O)1$7vLiRUv6jB~v7O0kr9+S<5lF2t@yY z(3>&G{H&UOpXm~BfZgjvMWngRKeni;vwK&!PjmyQqMoXRaPG&u=*m2=>oSzQ+Jq@I zW2xeylKvZX`F57bxASCps5i;Se{?Rgy<7 zOKK{)&ubA(rvJ^HUXx!?n9L8Lmmz^p@-c?5dCS_`VNO!q+A9a&RbXQ1M;I$9eW7Xn zTwO_NqMB*T`tN&CA$=?44N|#khUCQB7#heXrvm6tgGe^paXbfglB*eic!0{&ZfrcY zh#G3Dr~Uy@6ArXMM6gK`MJl0{s>i1F;BBuEIc=0x#hCi%n2=Qh{tcqBiE3Y?21N4+ z^lNBz-|8u(gL8E>p=>J}gbhN5;9rr%SfKo70MX|L$zDVdKow@elz2y~7er8psn9tT zgiZCXsqQ82LX|ic1(F?P zV9Un2G8>60gFNe{)erk3>w+jlb|2I2h0)O9DmhsZ;zHj6mOT~-@I>Qg-LE|l`xKi% z`x*yKk>)R*gx>1>Lh1~z`+w!w4<)ZgjjmVaOp7o};}>eW2xX7EFvU zZDun{^$?ZejK<{kWvyCuBAQc#NuDHbPCcmQXUxY|$H%VIG`o5_s$HzRJrWfPc)KUN zBVFG#*~k_{ivF5J-ery)M*j?wyfOOgO`*F@|81O^sx>h2FYWI^=lge$zI2PLo^0Ws z&yNftN^=bj&2m_GTx3ssbI1JClI;#g1a2k@|jy&Vnj6I z3L-|gEO?m4x}tpjAmwT8y!-7&{Q0gpve>)qHT*>kH)dv~wEQMA=O$O9&)HKB#K$C9 zCmd58AOVb(Jz4eLk4{~K^_sZvE&k9ZfS>J<0*48Y9rCV{FBTbK&dj&4#pVY(U1nH5 zL^c2j}V`m^K-+d2Q2n~)cp9h$t1)**xt+|;vpdfx$(Ryw$Hr--U=VjH_>zaiyu ztP-viJXaqzA?eoP>f<*Q8^2!mcVuc$94TkghDUZBoGJkQBc5u%XIy1HVtEDq|wbF<<@7AS?!uTyw- zkC@^Go!;Wn8XZmWa|Dr5!6m$G{OW5eJ`3nnkD{|Qj!v1STe!Wz zWmYZNP~-O6?(j2@e{@5#QnX_@m$!QZ(sv`A-tnMh6*BIpFyyr-BNgxR!e$Iz8mHb=SUjf8`$x9K7%jj+_mH0TGb}GZ5 zi!=c8!+eN}1# z8VCQRhi2V<&>mY{G$*wLjp^=4`|2~1`jqTWp(w*L9^A|G8v?5oRn`MNTJ7r1A zGqh>~5_I~l27U1UA8cyzUc{97iT_bj&wStulNc*Ku6aF-$h;O;eYm`;TBbaWz44sx z$(RpXl(g{Dko5-F6l@Vqk_1r3_w6tKGMr7IWUm_~2!*pg`+u0Q$f5X7Y)-DJ;aaXY_ahU1d^yk?!{v znw>{-Fc_Cq5g5+Z_G^2U2GOAK@ux0#pZNhj(kFXTMow{B6FV=FkOMVX2x{j$582pa})}N+?PQfw5ajRcmD9@l{|9 z=}Pn}_RL+c|F2ASs)m5mP3#Uz&rOVp=*h=*lxH6yOx5H74&mqKCuU@gg5MlAFEML1 zVJvO1-A2V7&6^U~!2$LXg(yg>?xQjCRgWB zbhhF}J?Yp0f7Ix$_#8EtVK*fbr2$=DrN%igg7TQU=KK$N$})QfmWXbBBIF|>hk~UY z3!fU>PnPnk=_pt)tHHA@U8NE_&j(JplOvco5VZZ6v3-=Wtz{7ok$QN}$jYLtU3Th- zOd+36zlxcu<_h)ZIVBAm<$K62`umLW*T0ku1N(`Y<=6uG1-MllLy`$v3MoZ)Lu~e@ zlkzcqj3qC?LbOcQLQiCrd4lt$1t7_Uug(FTOU6~Gjv$=3Op*2>UviPk^&-HU*w4{x z&Ph+ub|ciJOsB)RT#jyF-fXuxA0!|J4>wu!5J-*1aH&8{KJRkcR)=soRW=kJg@~~M zMH>36Rl#WjCd|wCUwpxWJBI+J&`ea?UIH+0n&ypL5QVYB^yz2kkn(b|OL5NDnygTaUB?qIW4RB~cVJ6^yj_M)F*2FCvrQ5`YS) z<)6pmM{vEHc1aGB&iW~Qj9@n8LM6>wX=*Iq(Kgq~i%S-<&QABkE~TJwddOIs>(nU- zQMXjIJ$UBD9Lgi)4pm}RqMtyb<;W;f`F0G7ihrwx9rpQl%6^3^Zg}4=WrT&4aH4e* z;P%V^a_y9$5GlitYTzCEuKLk8%VPmr&jadXk7BLr;K$e1P2BNf>X!2%TJb?^t$uVp zswP|{TQ;OFK1re^$fv`3ZEigERVlnEDR2Z^l^|OsBSyg!1N^{hX9{>bsWAs?P z=|JmrR;!?i*^jume>Y7Zbr*}NQv8*0 zske5> z!Ao;T;+%0oFe<dz|*qB3_-|>w<6ED%iWpWFoZ#@?`xi2RuUHl9H zsKXkR3Xw*XLXx4u??kLuUzRO4I%`q+yVjB_sE5z7%jB|aG|43?{sw*K-9#9DC2FZFrc zv7=@*)qwp+Jh@w3i)plpGLD@!T~mgc%VL#}ge7<2(oG^)_`leuIM1wsyi0AvuWmNt zG~oT=ahUgR1L^nqBiXLQM745d&Q!dm?&y`Izrc!n&V(ofNsfvb1=s@@3IRaUeIHXz zT7zn`Y&YQLqH&9j;o=XhSnaxAgYC?U-9Kv+Yojx(;opD(#vYRdWh7fdOGZalp<>PJ zR*n-ZKLVi}nE1k`> znHQ3YC`7=RHoYI;ZXu2l%8m?Fac*|Usd&c})Ybk+gEAJ5`Viun@$oq8h^t2r?W!q)AESg6Txr#ME-tmhAs9U`*^GY)<4-7T-Sr4&PbR+5KW=(k|K&^_7<&= zs>g>7;RXV!4;YtS?RL~`jYU%O;OU+l&r+CbBJFX&!Hb0km=Db0jWrbBSX&SItCIi# z;A1|x6b}tdhneNZNfZs(g+c|&M<2y0WUXhzGkx>gLm`U(s|1rgLRrfP0$M4v(MT@W z%i{vZfICR0CCvI`7l3pT(L>(%3VByA13!Mro?)-pJO z{cir|Ow4&4@iG}eXH6G0his+y;9z&FGY*$NUmg2T^&`=&3}MVD@m%L_65m$^hy?Gv z46&5U=NSI}rUs{?QTNOnCwmNIz*mTrbJ{&AhE==Fk;dmwQYB&`hl|@qi zN8`R!zlWnWDBnO(UeqPkf z4Jvb;C`=^((PgN2xOe|O1Z%unsbw!31=%KJ@_ZZ!I)iViGCp^dsp!3kM8V}0EDB?` z&+j@_vBtHRatk$AI#N%Wd~vYQcgv~pnNKP#tnRK^g;qLVUFuH{K8Cju5!|oY-u~uw zN@tahh)Z$`^#TSmpgtX%rAdO<2J8xDNv_lfEN1qzBD`9oOJA?Jp3oJMI&Sz!97K0p zi~c!~=crR@7`*Q)tIAYOd=vdx%ZWFYd-z^1_zP*WX~*9JClKD7bq#@XwyAe2F3~sJ z3c4t3zT=3tP+!4AX|J=a_GS{xlVfZCZ=+XQz9f=}r(BpaK3xf!a~LGdVnXtTJcaJx|y^hv=;Du$DMx z*T#L0{$T4+#i6e^md>%Ds2W-#3lPzbFlb&SlsPL>759tTefO44#|;8{OV4jg)bP9zSGRn%7;r!%4si>voaNzpbqL-rladrfsKd3CL?4-q|iBb!*%A4ZO z1aAQK%_(lo9>1E%k--^8TF3d>O2SUOEzy=!qz6x}6n{}{dERc2*Ec11b4Utum|DlL3={eKC@H*97(YG z*e0<>2tp*se2=B&2Vph$ns|URhVP^Sj?Ru{-4d* zEB&8XqkQ^R9iKfn*Xw@}oxWvnrut87jbRuYLl|Tjbmy~x8DkKsSuTc5Y}MtcTby<5 z4N^*)cWAYCnmBN7UN|)dyGn40G8k%fKzC{tVj#>MYvSNz`&z)QL<;CD?fm~kjsWeK zZ36Dk8@XnlTW{&Xww1)+mNE(C6^9EPO~~6RrcB%Tq-2W8b~xsLP-#8#!<;s3ngJY{ z#lgx4H`Pgms&2{*f>Vr>C?eWzWvc+dZg|kJ4b9-dNVoSHPLN{dVEhuU5`0v{&2)kld=Ia_JbUe86mTIY zt(R?DntI!(^%>>LCI1Vpw2a*fFtQ9aN^L=#eMbSg=fi;sIZ(@p;*r&oJA7MvM42H3 z*3PG}mD6N+kCOu%TbVM4-uEcuw~g%F6K+`;y8ncuS4S4kj)Jc+v9IyR(OAiH>e$2r z7^R$-PZ6+;&%{M{)~AjC&cP_F(+Y8RY`!w`N$A4hy;7T>27D=&+u!Ohy@FW}XI%K> zo!AcU4%Iylrqk;30lu)d3PCU$OoQjxK634y6RSl;0fpNDp{Qr2SK0%7HyxtOL3LJ3 zHJ450Efo22;|jS?tl}JQ>^6MMG09eZtdpK~<_@DR(G&c2#as)KO+q|4I;h%HxfKT0Vp?6>C?$=jM z*{vdL7y0-Br7uwBm4SoUUrBnL7|(7kv|EG>#98fV3047D_?dhnPG?Le1C|9!uX^{m zbnAE2-wU{y;`;X(@z@94Si!Gs)Qq|eu z%*s(CYHw@1Mmj;_v$2`=2(8q>fDyfua(|rFWRz5$DdzHeuatdte%^P zN!Arz-@$n06oW5ain(+o6>>;oS}|X!#i*>%6nwyLUj>j|-SB4}*HFtN) zUM2rC&K@b>+X^t1;oJoYG2-i_z|?}i{lfK+aC0nM{W@ce0i=Uv>y0C&xS7#d0t|A1 zSdl)nC&-J!4f5~ltS6oT9NSzs{E0BF&dLe8^#eq`fv~oot)@LZ= zBal7zfr{wLJ?lc@=`?>RU|n8i*+ukG84ppo-0Q+?v~T}hGtf%$_%S7O6n6zd_*Ngj zFbp*t`h2C$OWW85abzvx#__A+y>2}K7#f`DgEIgN;tl#uK~75}d3DWF+1RwQHCr^u&gZ2W$}{Up+DVK0Lki8i0>V9f57~5_unnrK znRnMBIZiTWQmb9wcuPZ2NmhEQ^_$Hl3ntn7PvhE=1B^M(UIqbm-}dPy!WGx5}Hk|p?)Ojr<{#pU!$U*r3UE# za-t5nvTwdQ!Wf&7p&3YgmJ{jS$k;`CphoVON+`HZE&NLeQf0-{txOj3Z1?i40V#LE z@cW#dvfPs~lam><(7+NW!bPYe!M4ytz-q}~0Zt6nJxkNkg@4LlDf?R984%ef|2j@y zeDAUMT0`AEm-fF$E+Wbp^}~&MO#m-PLOq}SYI043s-k7K0JS3lKv0HV_QDXJFKowy zyYB#C!td}1qz@D&kvt9N--_w72qa~(&}?IP=Oq$9>8wXG#fhOZ8Qy3#`m?iVmC{S+ zjvZxSBgm4vl0T13H;w3V-};SH{0@*&;>8eN_rUP4`Q}tRs&ZJ?ctyC}F|L!D0T~PUURv9rwP%uWwi0-9#f7fu8 zD>IhFlB4tXVw+ywuBC;HBy#H>prI=Hqu{+BKv@e&QW1?leXk zhk+!*Anyx`3jY2tAc_?h&}-<@7x)d}37W>q!f!Gp08XM;9FS=wajq<9DB)5Dx?SEO zn1SfbY_FL>fpLE%8k?WFo$i95)F$u~a@DHo$k)7`-q^h(_(CZkk&6h~A>*t+_Y3G1 zWm8?uBKIZE6KZH{A{w%!c1U=wtPoP)Zsoo25%C(rzL5kdo!%SG`?``62eQp~VSW!m z5x?$}NkV_<^PM&?>~nxETQGWn<~aypPVyBe`{zJU+EFB|5i=lJ8T3&7Eo=zRp;bzu z2|ODgs8m4(lGtpOH<~6ni(e#`{nos^o;xo1%YWnN2q@xHaDZHv}r1_>8l4~*#(8Qs4>>=-pgJ0+|N`e__B(~WfLpIQ` zPkWi|t{+K67xmUtXK01%Ssu2tQ6Zrd!|>@=G)r-Spep2D83e>tu|k+y{&06T=|$wb z<;#1b=|MC-)VcWaSv@ZZBDr!yl~`W*$^o@cm(5DmOPut4ZaK?G$X)d9Ucao!*opbP zBMF^?u;(@G#Dou2Q?BpRDUp5n^?lS-pOUJ58XG7`Ped=N#p#Qrbl zo+$$;F}*tA6^W3|{ff2KiBTeLok3F5L(f0evP0k*ACn45-MTGmO#+D|%Z@Mz$X|Ww zK#9@*M+-5FF9z;YYHJMUP)K-DC?GitWLm$Y!pP&DNPg+_HTK9@)#WXmsjzABE&uHk zq9XT1{|hpgQ_c$JN}#A?I!@2oAnaTTJ_)!cGmHS^IpCA0Pg22!w75a~^?opq!YmUni&b%{s<_lJdHD<_D%v@{k**}E)cvuEb2R+ z+END*>HzQS9v~QbY6DuDCU#3%tkmEx0@6vigQx+TjB;SM6grW@d1%cv1-6<8iI1?r zW#|S%Z@K&0_V(?GM#nAOe!MFGCtTCL*F_EP_o4^VeJ}-fq6V9NHfOUGWE7ugF>;e! z3EQ$t)vbNb4;_}q89&`pkPeQ6HGiEZG%M>)?&+W9=c!Vi{UWMA8M3_Cz_^$1@lN76 z32*}>O7WQzuyzG&nHz=)?&&*DYG@}-W1uC6^O&t_=FNv8oQVgq4**+FHB4xYk zHC;!xsedenx(mMw1N$XU3P@BZ zpRz~jcv`*-*I37kp?e#=H5Ele&PflX`8C&rqX04ZV5}$0ZkPoy2S=C_7H18gtiG1} z^oBK?DTOx(i2DWHc)dk08bd&d+B8oarllVkbkhbouETZs8!@#-h&6}{QbxDI!MO>r=b8xM^pD57&vUz1@S^8SmO%V}+1k^}mcpmh|EZ zr>GF>=fHiy2{4mCb!xF209f2GIw%VJNN*{~ODPr|C2D#>7pGuP-=w_!g!wucuAwST z6}hje))qNY8efz_-|nsjMMs0_Ud@i52b zM@5H#rI0k7?x=&RDq}Qkh-kG0@TL7@uEBI;bwwl;W^i9kLe{YTK?sc`*!x1CHS%y; zD9hnnO`a~tiA)+^kKI$$_m~y%-Pp8RGAPmPi_b&R*4Y{RwYS4xSP8_ui9kmdXta)Z z*-^&L#xhlZRui2o5<+fCYdzw7+mCbXcO1eGrK;?jTTDCGQN1aYdom4$OQ;jMHy~g)O6l ziHgaisQ9(8!F3rg=f9c?T1OttJfoy>DYeh*|Nfk9NlJ#EyA8}e<@8B>kpqf!X2ro|DFhVf`pe~U1Z zC;3UR0r6+>y6?MR#jUg>{H72B_PC%c6tiNpfp}48%S_~Q!yOYCk+KO7FAqVK{fa^L zw;cJU3ee4oK3?6l{vkxcEaE(vI>*P{L0I6b2h5NFq)}7`-4Gv|Zb1Y@8!Gg4%;pYW zkbv?#79!~D`Oe!f1V^-O&6`_+%FBP@=EF-QuxB!|KO%+4tBwZ8Kx_hq-`=@%Brw_C_5Wh5~G|33i0xdXsy z&Pjw|_A7$y-wAdIcm?+J;9Beveqy5XAvfq7u)X0s!1F!fcKEx#j+I{WiQw2i>(?zf zy>JylinTRq(iZnwkS16jj9uL>4mqZo(-PzMJQ@oJ9UUX1sh7oceh z8%sgJ#e`*rMq~cAQz}&NiSC9KbvHY-Q`_dWa6+VrMh@BAKuF4#d6Z>yfy{mi)g6f@ zVY;J-zDD>EgoGR|80VwOt>Lamk_#}0Fc3+xg%8@SEGS_0#DNaS+0B1ik`~3zXf74{ z_JORXq>&!jd||uE3Z)tWDAa%}O8{Q4Sx~MW2*7**xtzVY|4rb*n!Mx36L{-O!@UpB z{p|fdCNwHSwYJ6t29PVatDVl6zRGb|+rluToG8rC52Q_(xu}vmMNKvU&hE`4;9;C0 zSj&oJ{#rGm%*BTJye2~>_qvBk>BP9iw!P9QFxIhdh+Es{^-kv)iQl=V-_r7jw;>Ah zo1B|<#l*zeql`q%emNa!QUe=h+1vI`L7aNp4V$Ttf1Vi?7nxN)rjEsmOVy%~vCQ$C z<_bG3?ylZn{UdtO%*wC`xy~A>?0u%pop#RCna~}R$p3;ddDBN&yLinBW^3Ou!%8m> zw+{eJ<*|HSFkV+DAiY76KUh{NE2=k$kPi&MtlRN`UtbVfk&JmaI5QZ@6A@6UU~raz zyvJ}FVS*S}>aC*p;4K;rlKnK^&bGYF5J>cT6G@&Vu>XDLUMB406BH`8pyXo&%EI^! zatcG>?L19G@0u=Dov{k|hC{P?9sRELN)1Z$GH(L;a~9ika7-=t%75#9>ew?hV9d%GG@Cg$gU4S*?1G{7BfgxKf}Ff{1GK>J?OAY*+o1 zLJ#bo9T63Q@n!I~9h9SZk%GR?_lDQpcs(K)WTLcZ%nWmLa6Snp=Q_Tn(w03Nk}?7Z z--rNFZ80=z)FF5*U{*n50W%tf^iv3Gx2ed4@W4;26F`^i%iN}0x?k@UD`eiO z&;JRHq;bk@vs$bqEoKF3MUSdUa^*C*b=E0Z*748gC(qz_sy|Y%P=_n#x{O}BK$Ir^ z&!-G7_D;d7xV0Xk`y(<<8vmCt1Upm?Fy?-E4fT?wnBPZMo@#)neD>bm$zu zMZf&)uGf(4(A%i{3!i1Eb(+tBv6cnTJIY>IPfJQYT&$?G`(p}5Yka6T*yyJGcL1r< zPf~la*gu4IYV=T`ZF_Jsm8QdTFMHkVDS**p2+)O>{vHpk->l-2hKrHad4k(yliAM_ za9pjQo8OR#jMMdj_XUUt4*F=LVa8_2>@z7Va~^s8Kt7Lrre<%}rZ)D)QAoZy8zR{3 zkJ_SB5~ecj@28df*t>|X8uHFTZUU7)sppljjI=;w$7!qV#lr9r+rh7ISi2g9C6uk4IVY|I54f}<|GG6 z)VEk5>l>My6nX|4avOokQ)36iqEvl@rIJr~qd{3cQR?#6r^tBP$Xt-gp|+sU_$u-g zwx5q;T%|m}+pvY)4AD$&Jt6B1fG$1}`*8VT$w5-om_C+epu3+vDDveU^_Ljg^hK$C z*(8oibd!>l>YouhKJdY?^RN(2So+R8Cmdw}Mq|~k>k;I8+4~of2?6KlC`*GwLz^MO z!-jcap_%l11UFUC%+(%<^8fu)?zEd>QM3>=Yo~Z&pJZpeqTCe()te>v~Y zsrN*Jk3DEpx(z*^p{<{4qSC+O8KdL%Ob%g){U)-TYuf2e0=*xvm*fq%$N`?N`LmEoDM{{E8~N#xrLPMNOc`08WmYmJ|f}nAM2L zvdKb^NyWmm3hO9K#=L0QMs-d^7DMR_EL zrKbsacb*M4^uav+b(I-jk4r<*6KSXq3V_Qfp*bFJ@H?iPqAXg`bcVfe7n)r!n(-Hz<3JF#VeCmtv@spfV&Q_7!<%|_(UY5O_48(^d4ea5_1y310QMv? zjk5MnbOf!PB7It$qKO@~A zmvwXdaQf@z^M+D7zMgKY7DCegRgZw|mEnl(!@H-)SHGs9+|BvEtt)Y@sf}qGPH||H zPOisKzEqu0&uzyU89(S>w<_pLqHytK#6cgp+yE}s;1Wctm_c9vl0%s2yqFxg9Y5ss ze*q`UcY)Fd!V%7_Fi>;fdR||}Y91f)CT1fTeCqj56mS)!Z)95%HcD&7b08~yQ+n2~ ziO$hHD-O-*3xunmZ~jtFGM|FLNC$-L`vBq<9p@E`h{dlG70TG>PH=TsOsG1jmIe^v zf~+}@ZvV0e4?SMi-EKD-3Ep;*-S|E4k4g0&Mu>*&TZ2kq{WKu5#2aAIr^EX-vRJe)3UV3+a z(&>!UnX%=hP{yt$h9+1T-_AZqnr=yGLwg< zTFWS&k4^N5XGvi-POs(Zzka0DzUvFbEGt37!#tRNs3~o6;Of&!X3ch0N|>M=)#e+i zo~{h>s|!i6>xFriz~u-A`LIE=ZV`f8+`Fj1L41kqT^ChE%IypfoTKd|c&#Npd7#p& zZSh4o&#-WuIAIs~=M{{)=~HV)89h1w z4V$DWjoiFu9~PUM(IkSsDr}XLp~feT&c;S&A`aAj+%=`qJi?kR-5`K{;CnH7&2#lS zwUy<*v3ld8PU*DOJN-fR>^_1`X<;%N5ssp{U%bY=ROV;RWaEUVrX$`b1GfM)u9`97 z&86!k;D{9D4G1HXI;D&i4k$6SZ9k*(6u7#H%muHqE+r%gP){Yr|GqKEDd)R!9hRf5$;nLtB;?dgNgep)w6nbb(SohM3Pq3pL@HhiuY z^5p+oqQ0--mD$CpiJ_jCb$#kihmVD=!ZJm^-BlNAbuRshT_9o6LC2e^@eVFdDDc*n zrZ<{s!TL-)JEP@E|EBPxs!E8-C(&W%?;G(k@435yTf7$Q_e3&HSp(x$nR11}$vKPV zH9Ln_1M)+k~?F$tIO>aoi<$#$EjkJZXf)0{60xXiL=<_WJeqb+%%ke6I-< zOqba*tszag^~1<)il^DgMAtjgzVZb?r3R8Xb5tRFkre}#gKFs8-_8MLt|7-ohSV&7VZ&Zt%`ryg zbwZ6OiHBIlq(2;C(bFG-3P?fP9<5NuOS_mslRqCLH4cz3h-$xD+b=khimI9}9-p&>jx}#daEFqnCz&Pa&~_RT#UgU!T)ubFT*5Q>Hhb zPsUr#7fKOf+LYpeT#f}>poWDA}Bh`xQxN)*KLWd-s!nyw<%a_pJ ztrtFvoCrj=UI-QvqJs0rcRW8%a4j**!-xo!VIELn$P?bru6SxbPb&Q4>;u;B_w4i> zrY}S4=kr$!!!`NOf;GA%6H1nx&w|OVm3css>y1zZ97Xe}E;xGPh}Lo0fa)z|TOBad zhtl^!KUFbKp<_u$m7mHJ=6 zNp4>m(dYkI3JR|uiXC!MAzoM0BatXNXH$tLsa|etMprv}J?4!fx{UUUsg(CNb=J-P z(Zr17p);)se15KL;mRZQ@}Gt09}!wB;TAN4<`^#SRQrw2Klpmv{cIXCnuyeR8-J)1e0-+5njZ{?`}FBMG9 zL!TW#(9W<&3J{CMLRD`!gx%|CQEHKlu5y=0>Gxqdiwm2-!m8-E%#+9h{Adn5mLCwf z&yLXIJKccei5LGxLtb43q*fjG!kiqjVTL(y+zr|HT*Q0D129_Mdo;B%jnaEFR-6GyF()2abs!t!tH+Kty?JN}h?Fgf1?4_$VC`Isa<9W%yMq>2i0YY8q;@?8vIT&FDfzWfxA$}pe3^dB*pyC&d)P=hb$iXG{6NK$Nh z;HI&{70}BTJr+4?*kH_;!YkI@*a+(&6Du{sjT;l9Dn`n+Bs8$}hX=d-h?g7)Qql`$ zbAq(9G4QsXLYVHX95k+WCVd51lO4e}`*!F`1-}@pk`r3QeMj@lbL0RM{i4`rUuLWb znqnVcV|quE&bhyFgpR@<>YR=w^%&d*CdfRaMv`8PlPLYZPA4!QFVt!P1)-#m+Yg2}OJEPr+2pMPz-uZ)c8PQmL-$D7#+;8QE06?4-O2+FJ^6-(F zCVUN#Qn9eKmx#fvm%d&i)e6ZJ$Ub8|52}{l2$GkPsIjX5FEY_n?(!&s|N5XsO-JWo zHq0M7O|wK{*?2ZiT=>!yamtF)#u9W#w1B<5e;7;4Bjh_gpZHeQT3o(gdqb?>+%8CA zI_4?DeuF5 z^(N#aNg)P>3;G^`#zMbnG*@n<_I=PKr47+fPUj+76K*Icxrh#kmL54|ICTX*9KBGv zW$3-qwK81L+cKdn8@fWLjgWM@ISPQFT9+ZoZZWc}}O3!j$8BDE4 z8WspBAfa&XV*L2*TRN2Fh^8(_ui^V-P!E?DOcL1*1Q8HN*orSf=1J?r@|$n|+f|S9 zFqiqsaP6?dL5-hx%~f3hiCz<+qF?Mpzb<5*W2~5!|0Puv#2@ustW57CWNr)J)-T)e z?(bP_ih>V^NZJ;1R}+}lmq;pTOWDu)f!r(d;_TJEVVT*Fr7uw|4d-zSw;;Y z6oDOjzshws;>zIH)C?}i_;i2HJQa;!DUP^1NQYow3NC?&$IG8syv#UFkQRcIJ$-eQ zEMu?&c1-1wmPvOedsx6O<{lS`^*w+6ksZgaJGG%%0b@K)PhFH>`7m3Yk z=^*2HYs+ogme1@e5cJU+P5mV_H}yI)3);*%crcaYA6X4AFC?d80`L-{dQW?=G^Rzw92xJS|6Efo48H=-+<4A%sXlC2?}EX8rIMNHdh9 z`(^@RguaPpw-{LxyJ?)T#AzF8VH74fPx%h_Td@ShHj2}(KsZ`yfm8twgWg6j76fej zSau{1o2`Rob%kRp^9g<4yNo(PC$a;oUBRluA-7ti=rY()=Dn)L@R5Bp^>gmv#&zHv z==id^HMn^SU@Q$>BHVHWUU0pZ!HgXipr--*IK0&urytZ8nr=)e`sEQ*f(ic<(!+m2 zhd=TtyEoBEI*LBY-tZU9va~m)j51<1?)VB`975~)Uv+?q3uyd2P!!51q%hQUG?ChN znMVCQ6AiNN7uXxc+o!++aaT)6UA>EqV^|X*<`f=G@cwSD{|47&lorr=i$@#b>;4mUf^Wg zHz{x$M35C-V#&v9w)etm2>60lOIb5CAp*&+Roz7Xfmwz)e3|!QB6!RV6s~FUm=&=Q zQ~hvf$(J#;Lqj{sp6cSkN7TplOs&z#0^eoL@{&}j2$+Z_4ZYfvgzrMl0V+~rB<#5u z?L9fI%yN|ndk9FmCfPdz^JTqIz^14FmNjc%uXWc2ucZxyEOA;yjJ>;dH<8-yr&+gM zayXd_>BSX1d4={TLxlhi+8cIaCxAC>dn_YT)QW-s6L zrquyJlvU73D>EX@RnD|!8V+yz2Cj|Th!=AkfahW$?^xe;vHM zV}G6rYYJtK)m_NsnGJZq!SrAF?T1K#BOWYLC_(80gDU*XnH#1e?PHwN({i;2JR0_s z-i!@J&+U@8rUlJ)Xrs#dl7D$tDX4P4CJgDK7S6fbd^RXbWpD6CL7(t8Um%0^f%1wN z4v_N;6COF{=SuP{=R{!EuCl>}EMpF60PGgQ-$0yXL3Z{&Et~Kf_T3fkgBXPCX+Ma@ z_#qt-=^z9cQkI{)^1l2nhxQf4O{>tp0H=~|sHaeiY(razBDFpoo<}kYDq3%=bnxTo z1UoNVUMtb-biZC|uo1)Hm)2Csh%CeF^~ymDE2zgp*V=ht4a7=Rqx-SxO}y?psayV! z+phNL@rnRisv$8l1|V&6`=9t23$CC_;>Bm9B1qc)dZ?FfBB`m2s2FD$oEvFTxG+f`<&B@98$wgO0@+JSk_xzs&i&~B)Y${2#m^O!ay2FZ%54_9>toh z6wX;8(# z`{e3)aXR(#RYZxEbpEIuX`Yd^efZMSB5+LbR~H&?+bqqfP`@vh3Qid7Q7LF!25 zh1KuG*Yw_Q1u8-O86jzIpV~a!rP=2x_-O1QU(NRuq&=A=tsCQ6weg)3m-2K8-{TB;uQc8Zfv$G@xH7rMRx;vC*`5wFc8+E1IE{c>*B; zik+_-8zG#1)j&o|Vy+?0m?Elv!=>Wl$z`G5V(Rtdupr^*UcFTU;_W%Ek37G6MfXus z3WP`Pe`r3FJ6oe48qFl(_(o+)@M0DqneDut406albl?#s76$^TVS=LsP%*dF971jS z+)0l|(#sV9)1U4vZj!-0jYV^Xa}=mBoJgLp;1><089~Pi>W|^ZW4>AmQ@h{J&lD7O z5Zw2-@j#@Tbq{q(m+HQ7e zg0pazY7+26--K5;4ppkSijz{Eg4a7w<6r}^vf{<%`9j^<_8^ySHwt8I@MU|6*O)AH$|2C{*wPRb$quiBA2B6V zFzMTiZ%Ytt|MpT|IWkoXiuL}r92vG4*oetct@*IUlD}?m7ZM3me=ph}j|=V-2?M?bn#GreJkK0P_LB_nyze z{u81n>7h;ZO%~yFp_kg&$r?BjX3AYGR>vFIOA3?Ipjmm=Czd|hbVPi&{120v8-_4| zJsU=PCB`1bKJDUL72-PCb`BH+hm{16A$|J-L6N*P)2bP=VKm6ZziPKzE6^R!OADLp z3hjdXMdF@ck`f1DIpTUWPyC^huC^_aJ*ZF~nddV4J=OdAg<{gg_X6g*2+q8!eh%^b zzlH7;ot*4!$F#^hDFu+LwyjT^2d@iYaPq|qZicgKVxKal+b%AY``{TvSIA-`=r!T# zJpw0kR(zGLgWMhC`X8_ghagjk=ozr0kCgTBdUSF7XN`nGOq-6%46=(<7XE}6AD|m` z6}`ZX$tDvYJj}UDN{8DM$HVg_zC<5e9InGpUZGzYi$1zW;+rAKe5Wyck!IBAs?nRH z71{&BZvuK)BUK@FqeEb7ygue1QOI!9x@pdskDS9EWcv2KomMTBT0DD8C8SKYYPOiu z0xp*=hIw~Rq;;-)9LTL|pPJsHuCQt3C>>{0jVCbmK7TEEZy;K><||Yt7W#1%1eNWu zgRXpL90@;4fV^=c8@R0PKLD#b4-)B*&@QU70w)u7;l_+0Hz~uNT*g>IOUP@~_ZBSig z({nn9O6?cczzofv(*zRp#_c1^YA!RMvDZl&0XjMOuNVbVsC1>h+L!(PP@yd$u*vJnt|&pJ1YI+tK|rLF%vL@g z!cn~(M&0Z)5$=0&HgaL}XBpba7{cQbv;^r|1S~;xJupmf)(Xp98_47oWH1f-k4@+! zWT8xG;Eu@NiBh|mG>jf z0fqzC<3%pwa3tArBJ;O{fEed9^&4BbnrIgb!6n^I&Qmwk|CwAmGuNtc6HiHTm}<|a z@QSd5i}yI1QjjAWz}pPKJZtUwp0qD_5CHwK>Ucmez9TZ6hIZai?me4zWP-+OFJlwQ zd6NiTbKCYEv~k`s;&*Z4u%8c3LtAXnc^}|=NfR{w&6v@(ej)r=K=z?3JG7!;kV66u z%w{m4nHDkf<;L`%B^6Bjmh#~0k_F#1MiMB-g)VE)+#I!@7a_Y{G{v<~t$n)<&pb9{sqExey{X06?t+EoJqU0k*rH8F zbPW!7`p9-KnvaN)eld<+jZxDB>Wv?82Q1DBMyaf!2~*SvSV+D0-=vv~9Z)RnX{wB^ z^M&;il|#Qq3Y?j+4XG_>`3qA!s*78Vtj`EZ=CCl(@~@hn3-VP1k85A=DM0A?Y1}F=y%+|DwA&wp5Pb zkGDcmWY4G>gW9T9e8jcUqw{Q5Su~}GRs|ZO;?NiDPjGx$&kE?H5v&>Qe?$j*8HRl8 zK`6#ZQsVg;4U5g|?rc=nyul;O*eXIzd3OsgB zIL+X;H>CDLMT4rntGfm9r`urC8fX;|(4y(SFjhFGggnJ;^L5_0gm&Fq>1o%;?&@|kvWs-ma|Q3ubL}`I-C_k9j30g~mDfD~Lx>9y*obI5 z2qV=_7Zx@_nB58Qt}-2-7E;^k;(F}&(&Etvg$4_tTO13aIOg)Pfs9q|oN^a-D!F^J zEnMm>a4gBVFC67+BfMyJNoYDMS{=la%}(7MI45yQ>c9u1C6DquBg3H-%TFxxNRLvw z7bjs3gOD+RN=3NPv?`5GX~e=TT$n=DwMk8Ktg(&y#&^G!ekcu0jU!;g0wS8e zs6CSU*xTxU{{;epu3j3SsF{-)EW_RZSXY|4CZ;9Z=L|;Os~XxN$gAx@?wLS}9!>_Y zUKrFcSl-a@r49RrYwtxBNSf{w1h8q}LE(urW$_t{u5xyI^?v%+{#KECP*5_Gq;h1} zG9%W~n+`tTZrf{E@ObVHKAV%zhtfIgNGedt-kxtMgnp0Mp@y1WB>P)BMQ*A8Q}M6X zzYz+D&R*$VFbjT#p(!xQ{d$VnlNDabGk$8X(wMWIFqr54sAxr;LY!a|nYqmY(-Udw zfH>y*@|?XvF~vRG|7`f@r7ZPx`fH+%pl3dlVk)zi7B%;D&NG!AtAr$Em1x97XPztw zEaDXf52Br!O&jQSKS=CFptIlg)4zj-_&J%Vdd(mvVBZwhrZiD@hQ9~wg2%oM#n2`l zYK+W7^3B0kDypeiIKFg<3K`ZW#oiFoBe-%izJ=b-Nv?s(y?Y#GvyDOfBu-jtNSOc= z8kujn-k07a*Qn;M;_3n!&2c)cYM{71kaU>50`W2>LQ#Kn5{6DVZr)^S1%Qu z7>l=>zU1QHa|kk78C&hq0*7%zS2bKv=W3;*vF|-kJtZg=QiAT@b53IV2XUuMf1ODP z{4E>VX$;4FDZORW+2740SGxIIi^P6buy^Cfdtm(BQ$r-Cn*!|PV5&MsY7-L=IW`Z^ z*%2VhOkp~R(3ex-X}4v#`E4q1+oK8;#Pr14wZJy+YR9L2k&dq7GR0*CI)9>qe;8W{ zRACl;g0-%dP(It}@v9-H++cpT2#aQbJ=y}0l1i6@A(?U*Vzz~yv+rUL$;xpmvl<%E z&Q~VjL&U*-U^7Pb#E3Gw?GCtE8oc*eiGnigX8Wm6kRNCLhJMgEex0_@*0YKI!n(n# ztAgpn-U{@JFvn>l|7QQ@I>&7ZbMj|%AIft9MBMgg75*_2h`u=YgTS`^2I2l!5?fd7Dru7%4mT!FqHBd+Z;H1<&em zKrgn>Z~fTDfP#Bh2EcnYM#b#Ul+NZo8hkN+jI}l z{sYR3nSnor=R&3_xv>tnzWEZ=pG_;o3MKr;w?JQqR7%+&0XT{Adpv!Ym{~#WdhoI> z`(UF5HN0l{q6ypxLXgOOEHz`J9s&fYj~ARlcSWI2j@xf%8V7quIQG%NjaO@UqqsmN- zm+!4SK*ZSvjmH2=q0B7I^TlG^TRkp|N=f*E(_}Mqy388|e-}u?^V~Zp`eKL<492V` ztFi{LHhK=o3V=8FV^(40FeU2V=}zc2P5ItS>Aovg*V-4*o$WK4b9z(xEvjA1(K7Ff z$6tmo;2?t&h5SytqZka3$~&2WBn5GJ&5t^a+VrA4Ekq4lcS^NIObx4TA7I~`S-|dw zrGa35opR&X(``y^u1`F(VCJ;pZvMH3rmice~8pwri9{*vJ(-$To?_1Z5YM4b&_(fj$db<7wBU% zjzm=El`$9s-_5xOHvAhzNmc@{zu5dmgrKeijKjqxjr)OWdl%7$s`Y5%iDaiX5U|AC zq&WJ%{dZ7tq!v*uL>eslM?E#Q39k~({1HR}CQo2;0!>Zt4Z*IEWZ)=mmqY4(6evTU zioX0J&G!4QaG%;qO@urzT7m?s&14AutNzch(XPGNX9KN0fquE5@84p;fhV!m!AvI) z`N3^W$Ub2oR*cV&6NKkI_GJ;iIz)C=LFyHV_FjX!nx~tz^xB`+o2i9lfcN(O;n0{W zUmXgsVE~P_r4dliz>o^j zsKMaRuj&?ZzLppbAJf>TSkwNHb5~mO;GbZnR83S$0wVuf4xxq{)yD{VGvev$gOQJ> zvG?w>A=9UwTv_9kdj#lN`*Hf=mIkIhul*p8%X^dXkJDV?W_@02c~V2kr~KQ^7@MpO00| zGmQ!k4>oCqpytCr5X0W*bqGkCc>r16y6ReJ0vo_bt@@DE1aW{G1{X;>+LQ4=_ND4J zEtki|QrKMzm8eQyF8xw_gsZs{vA0L0CN`3Z!(CHB}~4##NzzotJ5@##d7G#%>gJ-FEZb^^vvVT1WUdy$`aN) zQ2M?snfy?gP(}&3t7!^%tTqSM`Dyz^;?KTRcK>l@8-zLSXl817?@%+pc2}` zUF@-dn&pQ6vb3oNqOT;(mIoM+Y?s&I8Rb9J656{SlBQOd*0b^9(^d-q^TK|F`==G*z9|5Iw^LBUBhK_bI_xN}5U3esm}(_JU}G&F zlwA`MM=N{|5I(aXo8&#$^gCYMC1!&~ew*4PlWSgHi5sGq^(N1Z#)eCzVyFoVls%=&wk}DGS!?`Q6-a3>C$j7A{R{p#w$-(Edx&(qTX1GLn&bh0zo#M?1b5A!MQ6_f;X* zMn=ZnU%rTX3@l>QZ4%ubosT!_vfWUd~JRYJP_s^i9O%C^VZ2OGP@GxfPD(mA^<`Exf*kE_~M? zy*z^5(OJ{FUB{*-M-8dTcUnNwU(zChroJvK2nRnTCfzS_W;4IEiRs#zOZ7)ShnRbW zX8x}f$_E^cB@1E8H5F!%BAThkEYr00kkb51rMttulQbg^M(MKiM|Y1Sf0w4wR?D|F zcT%11X&T*<_ZXmRu7;c-K!y*F;#vtau(pszH79c6<3QddrcGlwWVMxd%t<$iNDSK**c*f_n1;tBe2M6P zYEPvEu`^!jbkb{Nh222@MUOV`PpeqY?ZSM2Ci^WuZx0ndtphRWNM^fGSlB6ju(F{a_Y|X5R3;kfk9spd8&aj^t@DbE>^8Q>|mxw5)T8IuDKh z@aLOgCL0Z_CmQL}DyLhV;5ec3+?ysDWXyCS46OGDx3Mq0C$QkcoQZJz4tSwUHHUM# z#&94R?jx2dN&k#nwoSZ8KD&GC!!RhaOMMy16VeAXKi3UU$rtflIdO=LLL0{l%&UQ1 zP&{QAlMy_>!(tYMv6%7@z5YIO_t4|H2E?%3-)(FL zj~%t3Rg8J@;;&M`(|G4iR~z zozpCVdYV_=%-0WtI49YE!im+j9p_V~;|EW`f>v5Br2RwL1BVe%k!{+c%CJ`K1C@t{ zqmBl*bQ&Ry-}Fc`~6h*bsYkz!TKQJCYS-jUTjL`2$^ zdb)7)7?-gQo&?NeUDS*nxPcM?8KpbS6}B4UsrJKi;hRl@T^>tuEEU>9OXs7!K8Mqa zfG9t>^f9MFolcwSSBVUUdDVk2O;$BT%pEVHaRM>Qeb5^=19&tfAc1>J?i~WZej{Yt zZM5)S+bFj zI0gGSL#4t;T0Bu20oGs0%UV6{2!i^UKH59i88QQUfNRNctWrU>cPc7f@x+n=1fV$V zO`eX3`}Bvbk@=k*O0sYrk1~9)SJgdk`!21gO(%e%gOSKxTxFEXcm@_?0E5~Avz>bP zHF5k!|Cjc6uE0tDU>O>e$ijb)LaItRSpv?JlGa0Er2~AOU>O8;lhSXC_Z;fNn62p9V+0JTv;#Acqu-B85jKJ&$sDM?aSlLVqS+BkW# zKBS;}c~~ydhCAbod@%0_CL0J9{Y+<^lxYTA;h@A6j*;SL7-r0roJXUMhP86P9+O#M z40r3CqLTK~itPiKm`qQ{?0; z6NS-x*4@Ldd@kxMKA~2TyKIz*U)XkaUN-j2ff)WDdx>X&obh~{(8ZB-OA=Z>@hl#tr|`%G0T1uYl6+& zAl~7_T#drP6=Zf28MW-v<<`8GsZtIOtl=r^Dn4q0$UY0ZnIi?Ogr|zjBay>~k^S*3 zm4V5Up_qGN7*jH0DXw#ZQc<3ThuAk|dgvRUUnD|)E?iSCLMcgQQ$zJrOCEQwnbG4} z6ps)=jY|!%?u~QRYfxH5gm3rva1&}3y*+{SLVDJN1ez`;f{2(} zenRZ6VWPnH!Nfgn;X>+UpTQOO(WZsNg+hy0O;&tm z&Vhe$rfjI8Je|_Ar>g<5Kz1D-zF1|TrVcpMWXJ*~B*UkxdcD{lXL63bb9l&f?uU<8 z?N7MGq>k|Nb6It9QMkCwAMB;xqJ67aKb}hxde9SS7ATDxExarMMs+~XLqNbwcW5y- zo^+$l+#t~twgQce?FD`==JJdoac>i&GL+2WmgJB0I7B#U@5K5{SO?L)N_xi%{a2 z>lQK>#6itQA4t&CSMT5c zIpWgIlzhnQh~3p>yKWe9s1v_$2H|oM3&flVVyBY%tYP2t zqnqZrNy_f0f>|}pA5uqJVv_5PHly$`+|yEj!GgGJ#mKV4g%YwefZwJc=v=mJh4=e0 z{~;U3R4h(*IX`iPf|fzJx$82=XXgw+z-CW2osP1Y%Ooo8<$J!9ehl%)WXntB%X=Mn ztIzz9h#C^|-+shtj3c+T<{Mx+B>ws&McDpv;HqAYsgDWj%KEnQl-T+LjG(U`Wow2h zAT>eh_SQ6OfKfTFtYQCPvL66BU?SNjp_!l?JDK}%m{IVd_YVapUvAOQ$`b=;{5%e2 z{jB_6=@_yWIX)OKTHJ#%={_&7g4ar~-eaK|I-~oK4(cEQMu?d@J6blxqoAAj$9e=E z&e+jxtfYt^k`y8p1qM7ag0{ciURtWiTNjx`N(n1}nOV_Wr5S^^%=1dA%}iL1!iB*1Se~aV z$$5P*Tv=4LNiGGo)4?H@o6iLt$i|9RmEr?wJ3HO8UU1LW90$cO;={H~-o;NpbE`;V zrFpi`mXA`s8(S;O19Jp*Fb)LHkmW%S9=0>(?am}KkNE{h(5%FP!hVsiaW&H#2?lk2 zSd|5!Tf{W98mi111P9n33VI4sWw(Rs!|KxOPbdZ3O+K6Y3Fm$otSu(=s=BOB3J`MH z!5WgZ0nKy_HgB3%*yLDS>=uG})R!4>;#FUU;mB%P&4)8?YS{mo4enFg$hJOvVMl`0 zMPn>HA|*DTmmoN9(E}l>$DSOfFpiHsS2PEYkaqf0+Y5)hjKmPnRUa__ zkW=8z*HKKoe(L4=Q+omG^>!oV=gU*r=RLCBiKoVC>HY9vyge($TcBZfA}fhj;SGN{ z0|&lVO|w6u%h-4gKFw=asODc3=Eu#$dx$0I=!PAYF`u9yOlgH~*5%jyS@k_a)>f1X z?x9-=20MPFnX4`_YY>sTV<9fs8O$)K=4gBPKHBJu>prm`EIkB``a5lD{(qpPH5b*w+NvuxTRr zcH1`16KLH9*88crBR&pQ!O))PhDVreGYbkqvpDE;hd#^spHr3O51#ZC5I^}ZF^%Gt zBkCn>EKhvl>%9z<5kb@vyvH8kHCB#+#6Pu1$M2tnD%88M$>61RAf>38V$yhEV ztu^%SQkHSfMeJ(-)J6$5IlXhSKx6xQ7zWv|kneXj>?u(3a=n~p07)U0Y*~i9T z&|il@QqA7l0ZC`LZ_5~}bp?Hs!f2kWiCK^`^Jh$%g;KFLbEq#y?Sms&2@TBgU>O6Ds*_OvRQ#MjO>r9vuW9Ca!f?J zS;$OcCCao1v+`^){KJnfgYaUE;pKPvD^*Qr+KR{==4(4394TvJPui6F$Y2v9Uj8vc z<-6bP2T>b%?_``PiqYVLR(FE$$Y`hAOf?d9O*^wzEu3f=?ZSo-Xv%ZNQN-vpUyH-X z6ec6Au#hwgPc>dF`jQg(m-{UM?t?n;A!d|2Y|42VxIRPpbdyB6uFH9yJGH4ylV4uZ z@1iFu=rOzHESJ;!4^{Hly;WI`sP8_g0sClY@rpJjY}Ac6`@0weXKY@F5OH;l4RfiP zG#_*sldIvAi~f#GWIYdAg3*a9-7!DfXW`~=J7be=8^LZcueE?1V^X#tC0?KVNr7cF z9QRAZ1d+(jcDRx zDk42^+FLIEjh%XY2tIBhTH@AvLp5-$AOdoUq|+YA0tWEG8!+cUtn zk=KeJv-G`3rbrH;) zEnj$eKXjfCZ~8eVLgLGW@NU>5P@>JKc(5>-Su81iiK;qI*!dGqI2)MBjO4Tx7PaP3 z4^7+=LO}M*Jn^I8cSk zJS|5~N(Vfi|0<;mjDZ2?%YTb;!3&NVr=RDpIxa&F@qfPN5l)7%&$fItR*P6qidvZm zATPncynW}gBnq}xD;FP}mEnN97fnAk^hhC&+>T9a~ zhm~gnYVIkB$Y|l>^;>X^!Re-J`YC&}!ufR6w z)pCDYAJeikJvE>LnhL!pa%M8Qe}PO~(9vQzQwmli##bCknnen8+)n0Y+8SKd+Yc{8 zI@FAiuw>p{Zu{iB4c~UBw;*0&zpvNhy2J#~^e8YE;%}}6mT}+8Z8#@#I^k7O@(yGo zuN1YFdOx2c zamQ?b33(|Du#Kk?Zi&cJLio>qX4i>&64C;6g;WwFX@Joq2t$d%5T!P^|C>8fH>Etu zX@9*dV-#}bWpdBakBhoKBTeP8pt&1N4Ey+m&iHHCm#Nd#aVx6l7FA*knuR-=5#$HG zDeA`#aT9;(6F9{}N`{bJ)rDu57P2^*f!lb+WLR+pVU5%&L>yQ%w1=YaTxzLrHmeHdP zCXd0uP2g+2=t}u{Cz1*M!~!xE+gaGWO@y7VT=$+HPfg%yBseMd)6cs9veK>4E7-&aRaAydE$2}0zsf^nlku*pOlS`y zO^;VGs3D`!nn;t%$L~SIuQwuIK=HN#7o$#CjH`S5pDdM;0tm^K;gO|H>~Js$sR$>g zsAqE$NLWmWLetM^hYDh)JhE_!mYBt#$9Ir?VYk1L`S#v*SVTRFVXhuBXXLfl>!DLy zJkXJu-EZ8B3u8yy=2AE-4U8{`?eoo|3w3lSER9TfCFMj5K^+d88fhPNJ&F&qCn=Fb z!q;2EPR3gi=7a&lY^Lg?zloKEv0}%qKh^s=C4vI{xf$6RI2mHxOjm}i=j_BOTQL0i zqzx1WC0n_gsG;xAq=5YMJ7s8^J85+zA*r9yj!*9+2b(Lsb3ToUp%UAI@6uMPT8Y83 z6b9=t({Nx;*9VGfsbCFi!yl#leWE>W3WB|FMy@7F!B1t^YzXlSJ`3<7tZEDs`H`hG!UPFFG@UK7(Eak}T&syKDaUb~K4-c`e2_ z1zM8|Uv1P%0}KQgUp1lQMvqrl+fKKlAqP*-=EbUi2w#x1EA13aGGN8nKzdalbZ7&Yrw|1+iv|6}*moMFe>`%o zkzy0yeHleiDn2$Gma^i=z@Bgx4NxoUyA%=p$JJyMQGSTE!kVaGRx{GEo&b_tH*sp#8i94sD;Lv5+EO3qJJ;%wRVslK z=Vz3)Zj3R74FivTNXIv6Dtx4R{m12e*o2h7(kE#S3c}#K$ZuVdZpC`&NLj?uR04if z0uxlgp(A#fGlm<`JxzJug*68n*|28Fa8mlO^*sN;N_Lws7RtbF3r=hEjuFsH`0V$v z`9PY_Nj!(h@`8Ogx5T21{&4hf#};K%GJ$Q&7rv*?PC;0BSUaOm^ltnm&rSFthyy5% zCSPwAE(z{wec$nq4PY9XyRKq%|M2@}}e=0(xS_^HS zQ|7f{*#+hl0)Ic`V|a$TJaBi3++B=JHDPV*pCQ;ot1BuzaE^XR)Mv zlp7t-a)J89vV6J#d~hSOty!lUO(cW@G#;h^NqixJR;{`GEXy0SNfkH>`}m{)DU-J*D3nOV}SH{|}^-Oa`FI^st);^|Mn%?HyIfnUdZrgkH1 zM(if%Ov@cF@vY+qgwCCr`bpoU3P?GZpN1D{?oWjp%$5_0KkPnpwMqk&PG-2T7gIh`MP8D!w5i=`X&mYxIdLuH}=%T->mgeFS%VScN z1@MQZct*9&3A1&SSO^Zf<9B45Sc0=wI}0@^If4j(qn*whol+luiTcD4o@7@NV{ ze`};9Nfw_R8=mylh5WjAi^MOcy+-}mjTlvO#{fxKrB&V=h1=9CVYTCN)zN_&t!gNU zhl>FTC7_8QRsjllCCso$lGxR!*i6Z1@3#oiGMrQ2a9UZqw2XdVO@0Vb8o!Q6e`j1- zGe5m8h+o2V>TI{Ibga(%wPkTyXxUAwXhas*@O+1n`>W5WGr$X0C)0LddMokAk7kia zBQU2oAm&#l!S7(mUXoIWf&MFO|UJ_i=#(_JZAl9>bG_ z?{D~=w=s+%A|TmY!f;B+3k89v!aR8JcCeIREHTYs$H?87x-t*9Qzn&oGLF4w*IC%z z_}0a+tkii}G}57N+u1B}bt@M-K^(Mp*yeE6V5i%C;c)=X|4dL$Ypa(%>=){1_k>C; z_rbQ8E7R64XFjnO1mPih10b9sW_t4OcR6@!Bk3W974>&X;gZh(=H37C*w2aleo}QJ zE}t#H4q}S0wd&dvKCr#<+@Gus?7ud46X$52T$KJP0PP+4Zxs2}c;4N9JIt^)*hCtL z5*K16s5^Y2DqQ>gq-AL1DJ$?cJ#frSdb0Nq!a5@{u=hDz&4H64bI;7N_47IIOMQZ` zlyjiECL6u9MPgYkD@6-#F~es)+`(Ae(E(Tyn;ABfB7vrtSYhz1lG-tHt2b{D63N<| zP`t=+R6x9h=rCn)3`ie)UgrAQ3cVLIR?l@v*Z}UpJg zZWg_mH@G4jZDSaP6{Zhy0Z}h^_YomQQSzWJ!j6SD?LYf5bGm{J+5UDT$@Ak0xMd?p zxqw&t2J0OjKT4Zrc01A!)dO=w8;@fQoIW=-UaY?Iu;hq+al7fbkYurREZerAuQbk` zb4k5}rLuHpxgRt<91nfs1Veo`k)RpemR|>EbA$)P-K`HNmHxA2=bO+TOLLn4j3@Ot=WFkwGc3C83 z1^)C2HDS}#+!#1{Wi?AvHAL2in&V#`1T~K$bNqBA(Nlhda0>P@S)1R~jfa8nuuq-j zcFhs!Ytuc@%d{o6$OA{YK^ZVeih5P7^)u zaTUG8zH(r2#kd5r+?C8#5djgv3vg^_4QV5mdci87Cf%?o<`T9Pi)w@2AV18J0>E`A z5C|OU?fOp@d9Id>;%uLra$d>zpZH2G8tVr@{9dSs9IsNEbxKQ;K)EkWY9%Rd!+to>}V9`bQKYGY( zz~f>* zgPgO%pMJ{fD0T3b9o<&39?oVNdp z!!-^ye#;2Wt%UlC8u@V{E=ub1tDZ-0jTC8u+AVvw%hOamNFFY4>aDeO%A`7*RozQNYoiyymaf;+r zyQF|rSo=E>EXvwPV2W@PPJk>t5R^Z5b&cR)yZq0*#HV;FPB!}SgQ3bIC|O`0RIOCbM8LYPfXiLv3e>%PmfZ5i%c@VDNK*GPY4+PQK%mQSxJ^AD$rV7TWu_3XgD;DO4?Lv@ZqnwosY;HzHRn z_hc2((TvU1Y1Vq3@8YW2(sef778xdM=s6XVOJfc$xHKibrPw&EcA3EGAHQ!21%Be)3rl1k1($04-VLHTOIh3_O7YpspcU5CM1^P4`T>Pn|FU_ zFCt|f8znV^+`ucF!M5&P9u}fth7CzywyQ\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512014002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512014002-Diff-Config.rsc new file mode 100644 index 0000000..93c89b8 --- /dev/null +++ b/MikroMaster/history/20260512/20260512014002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4310a4310 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0