From 27a98f59e21dcdb57980590756bfc860d0e8ec8e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 02:20:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 02:20:42. --- .../20260509/20260509022002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509022002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509022002-Diff-Config.rsc | 8 + 3 files changed, 4647 insertions(+) create mode 100644 MikroMaster/20260509/20260509022002-Binary.backup create mode 100644 MikroMaster/20260509/20260509022002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509022002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509022002-Binary.backup b/MikroMaster/20260509/20260509022002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..72a381ada435e471d3508ee63ccde4e3b9a73a65 GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXKR!&a_A7Zy%M&vuF^AIaZ3^#QI5Bvrn6D_Z6+k!e8wS-%W2o1A)e!qt(h!Ff0CN*7-%S+W(BAV*p8U-Jq*u$(9}+u%im-S<9i@TB zF}GJ6aSww~p9+F-3AoFa%(|=T01EVgmEuLCg-ams#Dgb{B-59Yu9-3QbR($QNjR-D z6qf-v>@ZqqgT<6w2LrXuM_o5l$04F~!Ad>Nl?p*2r(>pL6DlOY{5w=_98e@&xUvSo zKbY%MKVN*Vr1UStZo$Us-C2sa=u7*e@)P8hGTt~%Pl?ER-7~YjXCNv=Tow=On5abs zcWS2lDsYXS{t%@VT{{C3%ML(R$Tfe3O3;Tg)I1vF4B!*7L+Fg2DW~mDv=PLixx#19 z_>^M8t!LM0^bO)TqX|hT+_Ldi!F+=AadqNarBH&SWUA==-c#o!veX4BBXNWT8rrPp{1Qf=06~I~W#9PKh zVXZL?O%WZKELSefZNz3q%Gjvs8EDV#@B*eycQ8wu7z=D2XWO$J8mMgV><{)wR@e3G zM05&z4x4JO`Cw?y_EteBjz-MgXlUSWb-v%x01y@E8JOnEXWgX&UunB!r0T75K5bJ) zY5d9*g0$Pn|8;RM52jz_yStv8#g$f|?7%X@6g`M|s3=3mr6tM2PD;@s$}`Dy!&(%) z@j7%-&XEKPgh^@H~>{not(LSs>W#+ZU9Y9QfVeSbBaY z{2FffZ~sU`dl1abFIV^Isl7rr+si8G?#OSA3!qd)lV_0a(x6ZYXmK2mUKwis#mCw_ z=|?h!&Or^nL6gl^Vjx5Wp-C4kcp+L_es@s7T*F50oF`Pf=YDW1#h;(?A%8dqTCU&@ zcQg8OMXXpu&NLg&y0{-Xl^ugFsscCo3%c%6LBmTKCWzGp7RSh3R3X6;=I+-HKx~D1 z(W>+G;;xa$nKs^EZf*QWdQrIRGxH1~CGHQ{FHgKp#x5B}Co?Y_7+L*qxWS!4={ZA- z3p$eB{h2pdWhh|(2i)0Ts-!Rr0j6<;lS91Y=!l9@O*@O%rU+i)no`0MbUV!~Q)WT2 zbcc2ZCF8iUNjjf`wHQV1J0N{J-r&+dp&FkOL*tw%fw*;5efe3cezSor-B+fpie;1_ zzb*%idq)7Ua*a$iY}7ntF7~FWYS&oj<}nK}O6GgALRq29Ec$66snNR2*pmPK_dd#6 zam}#PUy>u#>w1H;I$1daYxhMjw`9EK;+U_lj_&g#WUI2i#x0U$t|N5Do+useQ}ri_sq*r5iEm4tdWQyt0HlWI@uDo(v{i9;o_5yOgJ( z8h)*2se2nn0D~b_L&Z0Is6Y6yaemDW?$p?j-R2YntO`#6?z_;*Ps^(N;0m>yALryw zFDj>VK51tg8YhY#c54DWw_J!ma3MHm9!KX~I>7i8N1m?i*Yq>F{zJ&Qdu|u)pQEG2 z90`}(VG(JaBktg#nK&8;XJt2DJhPsdj_qtaD<{z3`r{!Zq!-da5Zt z{&KH<=;KMc_)Qx+I^FQHOD>OZeG62Bn&6H%u3M9~YIf`DrZyFY#ZCOy$wPz7(mpd& zRIMlv(Yal!=BhQwr&Z-6t=lwsonUuAeLX=w(??5_6V%ibnM4$2>cTHXM78+4&GaPz zX7kmDkgphD5o_s2wm!IV$0t@e>4YwusSy9Y>1`*o1t)l8>~n*91rn+p^4 zpdTv^h9zyyUUZ9Do19fO%1HL}0JUER3~hP!M6P->DERd~J*plST`5W#h4>#rwI?Qs zOUZR$$Wx{FElzqB_1C^wjeM=xxcf>>-^DVhJMJr@UtQy8x)BLYO^9WSmU(E5Ho3<` zDAZ77-m_>^+_ocyizVd^_hnh**X?XKU{18>Kop4n?+S-r)I~^g(}>hS};vaY4PBWLeSJNSl1uPFoX@ z;FZ}t`Sq0*nK+P`Iz|^szZTIq$85lKD%^lH>(^A`RCoZOySn&r?p)67fc^wOxLO-u z+xETi_;%4YtFT6Gee<5vwA84DH}$hhDWycA^!k|+P2>FmXTteh2du#a@b+n}V}VuK znc|FI-8+HM>V&KQWH zDIh`vumbX>=x7+D2JI2v8Vp*XvZJx#qV5f!Ox_DRl)GV*QsZb>o3wE(r-?|**TjHW zJx2Mb*KiBe=!d@;#M7&ZnJux!l&UqN5DdWu6YnVo0^jwi;**aVks6K`bFvNbp*@kR z@P*_*QNu8^ZCjS$S%bhz>&8X_d~0(>o`o*|%5hs&xSHK_ZvMQ9I*g(qo6n(XE zI#w~h^w<0<3j$SLUO!ZMzhL^7N^!C&Gg`G41IRibU)7*HRAsA*89hX@5O^-8Xj9?4 zmkC0%(zibT$R5i26tAZ~L~8^JlkhneJ&maW%mn1h=Cp{kA`s8!quNo%6z|C5EOk8; ztE##0-+?z*rsjyA>UsIEr%q7)NZ*Lde2fqg0!i`09(V=i{@4)j=_Td2{n#-AiimN0 zj@4};!!x=)u*}fw^yXdW0bjt%{_^CzW+oFs*756AH)YFQ3{+mp&4@pRS4!=t_M(RX z>Di7#9>WvvGy8B$&IGDd=T@1EQ8%Vmp4wW@|2yDe769#P$JM`zNrDt2q5!-E-{J4P z@};s*r?%#kr=;CPRF1^^3n|g_8YkgG4!Idg()5G<)=y^FVwdjy>ZWyQrT+}<-PhD9 zJyeV@V(h=!vh_{nKv|d7=I(Jy-)-r8;!55uO*402-jr0iOkX@m30|y_PFhMA$Fj#< zuqlz+`H}+REFR1IY39BLEO9|Z@nb&LGH9<6-{WgGao|}LCLUwEWcD_#$Y%au5h~kb z;78?}y&F3QQ>w%IWCE7dKF_euidU$Ip;Q5QUH1{>I3DgW7KI6!x1DZHY-Y*Da#PAo zf+?PVYE5>}NNEzX%)Bw3lUy*)Xc4>NjzQ*qZR>lRHOZmYVtQ%n(O>Qzj_AN17<^Pp zJ1|KQ(7D=@E&y6QYw0=F^JB{;BA{mh6kH#e?jE4naP?9cdJc6S5)s}{8o-->$6GOn zklmjNln9l7PLDl<#LC!H4c8XsYUrRfSj9-&?#`K7@^isMvIdHwg~yuTqrQ+R3Uli` zzKc4Zf|4+@|5GkDmdacmA}XJ#R}jNqz^R8Q57Fuii30?PR?J;-oNaf3+9I9BAtD=E zNa_GNtrrCknI;iOuoE&?FcKq$)=M=z-K5}GIharTxCw35#BTrV6ck@y^~7QmhFegL zu3CI|D*cf?|3sM!Egi5PLqIdIZ@YxJcuFy3tL!ar`lR8W^~O4R#fybP{~WgoF-7ZM zl;*Z@YU~OU&DQ9FXg>V-J>Th9`eiW%XXR zFd36~95!ekim-!@wdr}%!x;bX0?vFC)~w%24PqDw{0uU`87Mo){a`f{Zgo(NL2xSr zTOLBR?>WpALGr`kh`$d?!&Hhr9_M@Stn5k(=FU|Igg20kdTNfNH^vLl4cz!&MGK@s07c$N4?w^6eM8m(2l>p^ zc_EXE{E{iD?I{CB-LY^mQFr7|6@b$ZpHtBi)j^mr|`YB7Jyn_1b=jicC7p{=7%X+O~}q0x2rGL4Iu&Imk6Y5%&&Z zd0(bk*M=%s;&D^GbSns2WHcDY4n{lbwr!migzQ)#5|a5?SJ&Jwr}`@NXJrsy-wBu^ zn|OFjvz*ut_6dFKe#HoT{JTOb>DWB7!(qW50=e4Ko>Wqpb$QwEpjrnk`hEJ*ZHs6; z6CtlTJVUj7!7%AC*pq#|i#C%S`=RD3X|#PphK#zkIs7P3f~Wxa7G*_@tPPzvv0JfW z@3e|@xn>j`(E2BmjNsnoqL*7x*J@pemJ{+*q#%4jVT-%%O6Av9E)yf@4Up3HE#Voz z3gYCwLOQg~2zTsbI>YE$TfIxuVRG7cn+7)5yj?Jmx?XqCZ_fK(29dF31}P+a1t_o2GAVmI@&>0c$xnG@3E7W8R*n0@#4dT#nxd-@(bdDtlf0w z-!>=8$>dHrd=T%a=>1=erLeM^PEA%p_DyfWeBSz3s?`EiFVzwfgspvzn{KL#>S_Hh zM~S=_zd1OHajlq=bIfNV>t;jWWx))A-Tm$72}-4-=h$NMjBUENb^#Fe$&7kQmAo^l zp0DTuYx5i){!VKN0rb4vROq=7V7_0EdvccCJgI_Pxe_C^8O2!w^ptsVvX(75Cfxa2 z<+<{u(8qU1&l0GeXiQNd!J`h(v;w=)P$yo)DC0!`qVk>21SfP!=GRmlFYny{1I-sl7>46_ zm(rr{6^RN?P`cS$>Xa0GMOl=55oSXZ9}zrw2_5N~U4}2ogcHGhT6G=>BayU$43u`s zz+b@#o;1t1Q4?xUwQ@~cVp75(7lj#Sy>GYn0ESVQ=7|A?y=f8B=H^2L_ z2CXqYYk#|e0Drk5>{;rZl6i2>gn@^Ndj&g5wZ0Q%#b(fQ!gBoh>ROuw#w0@*o{g$4w<^M}`&J5kgZBBletV}U41 zNx61Y=`DUS$PoY%*@E`wL!g5rGV6VwJFP$l{`CFYucwMbiDW7wpACn5!4-IY8NV@8 zyq)lC31Gjqq zx0eg&zO*CapYwVKpn#wtKNOG6yvWkcvl5>i#5^iH`({`#@{(Zh?z6T^Ox~^J>ch(5 zWe}(ysF}LT+8cwi;ew(97dd9Z85qh}Ckj|Z$~_-ch#%DXdo9lV+6#0p{!o3(ryBP7 zk}=_SgrIte^#~HPHa}3o<3Kcg-U_mD_(u`yo(@BM0v>6eB$FY0@R=3B4f{<{O+$Cr z0%FB`ekMv?kEm;G4Yo4@0t!^acQXnd(vNFIj2oS5t%03CL=W9)_~7POq^FcEVu8?J zi@7&?N-*F{xB(YhRC97=`ZLj_n@BaxykD%G zI!*|;!4Jweq+$v+h72t0&S(dNkbH=qhTnEX!K>@? zN6qsfUCW`{o`Yp7d1xIKGKOjTo5g_IurtnIe&?DaOr~QPTqylJNK~|ET)@BnYvfqP zP;d`T1!{`VzX2q@t>45EftYgeZR-F|7w`(BvE@r@?#S|Dq9Rfr0Hth)hABK8uH0VI zcZD00xA${_{TTVwWDh#3@AMO%F|qN$o@A(@XVt0tdWA7ku9XXIhR`1kQv0kxq-tVp zGf>oKV-yxqXe$w>dyR5~BBFYT1NJR)v?!(Z0Cge12u`R3>${`q$G$z8oT2ByuX7dZ zM9f|2eYNb{=@eM6ywjX94l&Ky+k2KEYmOX(?wF4wSd`#7A^l~p#w@R{F$1bmNX+cy z|DL7H;3bz(lnYT%2Z-baW_eI-UXL(pCS>>d#btrdW1h%t507*rF+jC*ISJm&A~kaM zz1u7#SP2(BrXPtdvIPz^#lslhxf3zoZJ(#1Y~_$itG-xcXq4xxjN@~J!I?)SV&2l# znMqx!jwdR}@KyhUAbWQaO2TxSvyEnSC*GT%m|6Nz zc&;AKbQQd^PDEawq_$U-a)(Zr6mPt#xYSFgo&^?cTokEVeJYYywN)*{ADNyu;XL|^ zi___lhmU8MRI1r}50DG!{*@CzPKyL}ZT}%93diMpJU%+ic2K28dVe= z7|bYacu;eaForE?w8L7@27Sdp3=^-lqA}T1`Pm#5?JY~n*jv>E29SDJB6DX@`myBEn( z{E*n5LhAQ+3crUP}B7` zkT=0n=e-pVjsAVUQ^QYTpsR6$uqCI_&o^F=G@(zA0%q8;Fn^=13esuo#!>p$oG&^_ z!=&5^sngRK4DNdg2EvD&XLoC3$oBY$$J-iZ3@FQl+IQmW>wmito^tB!2t>f&$7?-u zoS1akH9;o)91R)SGy5W?ts`t{yhx}M-)~9bEohM39TjK=f@RpCJ-#S<&?>t0G*FA0 zD#93x&_<*c$MBDtAQ9;`5Z%Gmd{Au3I#nGA$(-=JX(k)dONgK5c%Ds_*LW-@kN()E zB?V~R-;imKhzw4&$@yDhnClmZDszs|K~agiHE){%=k@m*JIZKfM27?4G9is>K#%M| zlz)c*VabRaBmrvfsV`3Rn~a)1^Wqjlo=$*-71~ATc$`Feu}h+jm5C9N7-A@=IWO#%(rbz?nb*E@tsWoA2j6vIo-%OCS7pkv_+2@g1*b6brBORGa+LVUg&5+A>>> zGaqXSm^|(ed6t?vG|?gtJ4B|XNI-lqR)OqSHXLv=!ll~QdtkGe)rL~qNyM)}(hMkv z&(U$qx0d6MqxU!PXFqeEDFpk-Ksu7OoV`a?+>UlnV>=~?T{N&DTOADeRH}B6&701Q zQv71LqXrgW&lMETAKO28ubyx;Q@5a(bvPKGK^HTNm~1*Y>}zB+ZE5^f)jBEJ1;zS4 z9XseSty7=KN4Rawz5I2zwhti(KGy7qk1Mvt#iAd9%at>WGSC5l#;ofCsqnN%q&<^u z2i`-?!4&=>ITPmPmZ@xBOtG^c)xk?^kh4UeD&tW>(Kqa)L}85(Y4N@nltG@7ZwSTh z3BkxETFEV`dhCLgGt^Lk4sa%iGTbm-Ly}i|YHc%Fh;Uah4DJK~7AgA*P*X5W$F+tRM?z0ScV1xj3nVX6-fxvzClcNe>gO zp+r_fHvoCUg;ab&+f_ljM>(XF&J=ox+&ayZ#fVPlLs!S9G+F{e?M+hX;r0~!%7WG; z)z~!iOxV+!&oOFf_k7h41;y^k&}>OOlxwdo7WpNloT^<5!Z(F3A#Adl0Bfv8+6$Qv zuxI3|up>RxF2G3E|5o}Z@T9&J-@dI-Rwrxfc{yo}65*mCuw`1mqFRZ4)ejJDuG#C9 z^zL?&+boyiMD|HO#R`Sx7n?XzwjNp~&WpcvE=mAslUsA>TxPH(HzB@|b_ zHVXy{EjHzuZTmd8AB3u{{eyQ-6`EoR4;7wy8~Z99CS`y%g?#SxQ#bqZ1$n6c5cv31e8ZNF1dJ2swTb&MYh&C1>@Mkdl)8XkQ#?2B4}UA89q?w?#hXyfRk#wB&B<|mtiJ6mDuo;uEyF< z-W(vdbK;!%VfKKy$O^3T1XHfaZA;PIT$JcDQMH{`tvWAW5IStS7-n%PYeQiPu9v3# zXa3%nsFAE$h4GV(HeR_vL^Z0cv*&OH%?0vthdPv7VfZ!w}9WRe8vwQ1CzUwkBqlUKEUI_vcfS;XVSq3;&;4&@BDv?l><#gn& z?k?FmsLK!=Sbf#buCKd<^S|C+5?#*MFMe7P(`t7jFK$P0YKt7=>0oQw)-V?w=0ru6 zQ8vb(=1G6&Gl;GEy?#d>CNB|P6c_{no;+Y%Z5R3e)hR!&I^QKUWOMaP^vvq}26##B zDGwWl1`e;QMlNKS7i%Ad*9jY2f=imcUWq>+R&v&k64=*r4Zr@*OtaHzk;{T2aN}mm zxU8gk_`z~z*2HMrA?$DK5D!l%u~i@u-BNGWuI!kVUTn56s#2;W^NTBbOJ0<+?mYBO z)6-o(^yBxyVVf==l3(`8^7*1L(=i{tTZf`BEca_7o>R`Gz>*6nvk`I?c?rbLFjVlu zq4qJ~)oW+9gVMIRE7AO%j%zuo$9G2&?=gFNh#`C#j;ZM4QEpP=BcU4AW5nj>V7 zU=B{FcmTmW;XkRg z#3LggV6?a6G6SbWRHP-P+-ynuKW)QZZWg_wsq|@^2q|;^?&vB|@gq(gS&(G9vXeKH z$gdnrC^O(5A$fw6*ai=&yTO`PoF@Fg>lyZB4n)~7Y?Xn^Tqw*)e%?-beo@P6i)1au z=qYos1ufm=po0H@Y2LU_;u{A2&k1mp-F9qL6eg>&=uKvYxN;m)$TPctSisColt+B6 zI`$sm@hn4LT>=d$V)%1mH=?7EG<$2&5i{LOW@*im3HI{|lw~g4z#4wrv~I&J6F=3z z{Cl%c#7#2}f+B+-?FaDa2av);eCcZ~S?$zuQOgr()5>A#SoM442LwL{Gu54#E*tvL)JRURARE~_ScIpfp;E9|$~_$`^00~cq9@r-mDl)PQ_7mZHQ zEPBzq&#F)a!K7%5HXbAS!TbSnKuag}J}i}?=S5L&n75)PR{}m0@vlgzv{cmJ9Ym`a z7SG$A95MV293D3Y0y+9SW$r>A=dlB6q<*LHJ}M@nK(8j}Fg(4f@Zo=f82wJP9b?ay;tmb|T8n159K&q{ zI!0Iq{oCC7qkOLHF&;TS=;?0Q2a%+ZOsq|3W)p$_`-P?vK6PZSH(1NcYLQC2GnBAJ z%cH5SoRx=KRim;IYM4kJEXh`4p95_xUcJQshhP%Y3$f%(htEP=(pYXECTkUaQ;H$& z)1+fT;eq^eM8SEpU3klF?|4oX+7oxx2Vnd$t|=7pz9*NmKwUazo)xax4?SWf2ehfY zwU=8k8Ung(^s8;CEzAnP$6ZCf=YnFqIM>eJ3gBK%A zmlAIQ;C^b+*!n>Fsq+5$7Hx5h4~|22HI*z!xO|BO{9ey?oXFD0a2x%sl;F)qV}q-E zu6n73F5Ovsae>4>&6`&o2gLYko=%HuUQPtQTn^xq#EJSg88XZq>?IUB$gyej2PpGx$)b;2 zJAClJwjJn^zwLa(V&#>p55B==tTz>0HahLzjW1#JW^@;3PnRJ zZ(sLxc=lb+$UPBee3-*dU7vMmscg3EbE9t;I&0y7>c)~Ys4^38y^F?4sb>E>B2gSp zQ!)V-N5Rth9DoPkIJgas^%J;7|5i@LB>ii%@|F#PJG`lT7bS!7w{Rt#uML1_v9~kBz7!p-J z4oct#D}@13#6hXMBvB%EqvD+~uP?aUiGDQA=l}%?sW|)z9S$A-NfTOt%|2_zEAx1k zdi(mWhQ75F`k2{=?55IgESK%EO&S(AgE|}#%}!>6th7f0*5@j0vEgD*M*1Vd7^KGW zRZ=^pgL>ep5{SxPKVp_UpZR8`+28Kzyz`^xKBX?)og@6rQ`7$&v>8%@!{si4pruZC z8JPkfKH?ty?&2Kv@+DlJpc7Tp`N=EdBrS0_g<$P%p5Q6xs_1;r`Wj*oRgPhZ^7&p#2&$Vf z{Je#C_Z9dcnFpwFm+UHh4`9jt2pg?@TghiG;KfOM`7aGgHhJ(4HkYqLNIG+-Z+=1X zjXCwG_@NBB=(PqLB{7E2moLewlJJLCM2r1MdHfpwK|h(qghy=vl>~N<(3c=(MC#56 zedQqX6!cU@fyK$#W@1ndJW`JI7LQq^kT2)RiCGU8^a%ZaQa+E|MUat4t1xV!zD2P~ z(n(>K7pAQZ6z^>zs=Ng;NWyzLkx3{$q`w>1JV5npf^*+NZ|2K^TGLv(V8F{H3qD`? z@252cDak128jdiwEThxr@ zpkd+jml<$hY`GYP?LI%IUlL)BQHcBno(fWX369|5SgOndIv(*$+{ic54b=c=i~(a+ zp-A0QE}cSPfKs_8GghSA=w6y!tJ>=>X1je{<57NLXHv!V&P2Y&vkZ3)h}nJ$3?4G@5ENs+ba(UdGHm{UE3& zqg84qoX}DHwD9fgd=8b8p87tKj!%lrhbW-jLy{zD)Ehoj4BGh3xb>hP`FK1qo|Da^ zpSl*Ny`sAHhrH^9TCfm{(}~g#rrS8IP}>T2tLtx@1#vV~pI5Tng$+O8XHOHpX%D4~mA@7HAAwdM{%y z5Lrx(8_01;MotdeglD^e3b{9L+uBuA$RwIK(8JNg<;PcVVp#xm69U{BEz|IaIg-Gx zL6&3B?M_k{IW|HkQQfkpcf~aKl zST|RjNpHl??VgveCncGakETj&V_Vkc?KUq^vaYoTYEAA-4RFec=LdP)<%-Ab3AvFb z=Ec*n{78Z_x5_&@HEKLAexJ*<0_+0f+Q^Sc>mlcVuBijC3v?xqONLzLI{}YnVMe zZQZ3L)s~;@-L_&c*TGBHTncWpDT#yBjT;4^VnO%c;u$V9>qA?f)KE;=u22dxJu^aN zal8ptFj;=d(fAQSIOAD_j=0aSJSM_XB) zFNDe(zhM5`cI)q2P59j8*7P5f`SH>k7O&Ij*|ZLTgr9&OTE*0^|9on<&H9q7{gOgkj0CisP@AriaPhbO1OD#WGQT0p^$X{G@-Bi^7(6mRX)O9ib5x6 zYz(I~HCekIZZ-}6{J;``bA(<}N4P>#S)sK=9ddCKSZZ2xM^|Ch`xbYTx~Kj}3m?Ys zTB`Mvc@Q!=V(_n_IjuH!K(%j*K4nBCO(dtq;(CO2h+0RVGr{XmxTHDP`}vlS$gf(3HTD)Ek02 z2o-Xr?XlHoNoiQ4NHMhq0V^MWN5|Z36I*2Y*Gr@dwRM^GrU`r<1V$OqBRihC+aSmS~XSymuz?C!u+3{5N^=&+cF08BeXV{-?z%6ki*$9^7VDFfpjq8=Y~Ty2d+8ABjzVzH9uYd~URsO{2C0(qDVM z#8uq0EV%nSQ)2Pd7Qa5<`zAg9MzNmD_kxl z_Q0r4mS^Wgv4W8gtvOGihxLTki`*=CPBgqRs#%q-v@g zXjVPY+Q5Pj5@@2I7eh8@yQr%p?@nMax!~Qe8--oeiR~`uR2-v#L>x}d4G=kL)G?Tr zMMqqEJSa^xj<8^#3gq&#E>%t9xOp*Z8KdfJ03}K9!sPf(9Km|~zhD3RbwUK2JE-CF%@<4W6 zBVU?6W9R?R;O7A=)5+jki4Ko~zi=dQWyXG`H%UuXF9#3EvG>-m(`xAYCCbLvdBmrd zszDNPNZ0lt$JK}wgN?GCVBEiriB0(tmxrDj!TA^Rm}xH?cLm>WSf!02M=%nsgUr2>xzCYi0qlk7OF7Mqv{c>=AKNnx%OoQi0*5(}hi!U3s0VNKTZ+Sx5w4?l+!am?RU< z!(*(Fe)wSCik6qvkN@Xtn0_3Hu6h6Z^_AUP;Zk@|!|vpr8vAF!SWR&_2uk3;w((*O zptz&41l+upfPl54#pJ0h)xIEys3>vOD?JG~jWN@s2O3lY_)dMg+t$@*r#s(-zT4E% zd9C>bI=W@y4H};^Q|B>Do?1C!L~)wW$X9(=se}qKW_)>lN0*m5OxV4^#-iuqZ7(9Y zHmp>v91xk}qBgBF<HKc;!$Z0$~~3x(jrrf{*&gP+n;1m|76 z1q`Cr0_&!=@}auV%@>dl2g_b6eG&DL&!sDJ2Q};DbP~4rvWSD8OKJoE;Xe7~pL668IpF2yjvghN~Spe~R-NFyJTm-p^GfAq3t-c=qqVJLR9& zkhf;!+b_6j2DiRz0_XJz9|aGQ2%2Gl&l5x9Slwr4=;uH6F;%cNgQ|@ejO>6c0R$p! zSbV-zZ$$G#-sPVUSpZ6iH9F6XrhSqi0pZ6u^dQN`daZEOP-v`0mu)fWaszI*Ri22) zx4!kSh#~mGfDy37uGV);FL|eSJZ@ETswgEC^+7J7&4>K`NS?T>XZU5&FRlB(!3v6N zSPa9}J6-w|M=pD&^K)!~#o`gx8iKC62*$PK9Dc42*Q0nda#-;adS2l<*i;qMi^=$#0F3S@2#7eS0jJ`FNpTQ zchq9~Nvy*4ID}P5%qPNPH)MijxKzoXHjwSi>Kg#@P(KW8A@|36G4wq{gTyz}}D=EZ&wQbQp4Iyw&e9jhYO;J8bawYh+cxpgeSbEjyP#Wk*oG8EEmIj8oz* z$Mn`Kg^W&D;eAnxIjVo$dH%s_gvMJ?M2VLh~# z^1cn>@W^=&bM|gJwuu(DzDXghgr|jIx%FMn7;-K{sMj%lP6@EYk+r%Li`Vihddc(5 zqm|Cng$qD?{SS6+>kt&XVZ;;EH|VdZ?Q*aWYNZ%EaG2#maL}J(lYA%VuWyWiYZXT? z%S|n4)jf3~i*Cq_%u209+FIL$tnIgHVw03Nw6F#izko42hBC z-TYu14-Dg*v5lj@cX;+Uk=#bDTFHoa-PG`N_#1Q$H;HN(o#3)`ZS)-{@V-udE|L${ zyf1|ccW9%$Fzt@&m7@5U8)f<^lGzB^g)sgL(;sPi0Rs1F(&v;g?iXVgLqD*gj0y)F^dTDD_#m~TI^y(kkN{5u?4>RBX`IgXF~Ea#Ak5N&y;Vd~|2q6z-4@e53G zUJAK1vR{qID*T-67m*HYHjmsxLI768F%ql4<&f7XnxiBw-AG_WyXiJ!YA8}i)J$UO zN(`t5IfQOm-$R*+TO#@;5t7gu!R4Auk(d}OBm(buiht9z(e+DBZWt$0JJWN8cxbv5 zkVo?AVPL)NfXapWnKxzVp?6k1qGLw^@p#OTG9&z9P_6%vgQM}uGt%t$G<uxwzmW&SO>&MgrI*UmmELB)Icq4K|6ph> zn_y%KIYm)jJC`*b>*Rk4aTwdVzY=7=LobiCZ0HB_k}rPw+-?=8-zRq89|KwHDn@!^ zK7D||?;xo37ZqbNz;Lsy^iaZ?D^}sBU zeB%fx_f9B6*0M?soncfAiqQIJL-tWu4oV^C0>)ZrnpOZk@Y8G+%QX>XiJ8!WLev8h?!Cb@ zedue1aikJ^fgE@=rPu)F2^}DWq4gVagy$f$eE&JhnX6a#XwT_qLzX!B*k6RJkEOew zH*RqeKW6ciWVrR%+^H4~DwsKlVKuJJd6~4SzlhMRPQxx!HZo{+>SnH{m>gCz8UM_aokp{h^}0!lW?a^z=ja&CnrXd{}EiVUX}=*sNXZ_u9;{Y z!~AJIMGy+Tm_yTr4prXISe<;(E3g=}H4JH7zlvZl<6nJ)V#&N&xcWIH6!2sbx;RrmHBG1(Q?mC*`3(SsU1hZ2)<_w0!G1M=5dGPM$*PqC)Fmf1kdkaKjT;s-U}pOrUm{wfdA7kq76Vn z+$|PdQwbs1y~t2T=^kXY#uc+ZDH=L8G0hH!o6T`~*X|Bv6>PNv)UbyWN%nG)TvzZ%ON zj+{(LFbX_Ca%I`X(WDYbroz6}3%U)|VGkY44s}OW(NAT%rdOVb$j;;NN-o~%+058i z-d=#Op^VrYqkfmKVNmL%4A!xPvz=D(4K(W3J3eezo=e z-sRbr7^0jO<{rnB+rNg_;hk1uyZJNm)X1eKte$*h+#i{$Eq3yy-k*rFP#Laf@2fs= z3_UoVYWr-vFTpF~bmzZh>g#fvgsl5AqW4k*FKL`&#pjCvwEhuHUms`+VrH(qDY7%wVa3P^$D%xBh18|yeKohR*^?r}p7N69eQ0P=kY{mS-RR}d=M9X26iyxeG zgUE*2s~{tQFTDhxeTQ8Dw~(SP#%NUwe(?)FE8+#RL@Ah{CtBDFq)z6V>Y~BiIK*P% zDu?BQoLEN<7XbkOKLEfo!;)V-8FJX$Qq_WmQ7~%|AgZl-2nsT%5tbGg$8M>_G2vk* z0m`68p>yW;T1a;D4<9uyIQ}?#C#&@*A!G6FL+w^4)&vMKdoDk)ThzRytsGN%DjKDaT~g8=T3_4b#yGiBb$(nYoyWY{Cttey=nYX1ZF3O?)U1?BZ%@LL6E z*EQizP(5MWyX#t}!A!J7t`?U(prb@w3WqsXE_ji#hQ@y_f&?@v?2HiWWoCdnJ9Dsa zv@;m2y~|F&8fp!or5o|Z|PoORcYUJwXFcZ z=WFy2(9vbNDOtiRpAaY0Xo735wcQLyZEXnz?aX~e*K(b=sTSngJYTRO7C(wnsL|(C z6+_?&)*somuM;Y6jHOi<@O6m&( zwg+Vs&5qqUQ1GwXCAy2;4=t!%7)Nmp@9TuvPX@lRWg{t);iMogVvJYjr3fdK#Yd>a zYhd)|^Kk(Rp3@Qx1cK(=yy`rBCH0zC8B{$J1ipQE%%Zc&PW)ARZ=2DX_<`V#+FUaC zkCz+2m*G8PaS0NG7tezkO5nGdq{3q}(d> z6aq`BNs#IgQ|n&1;GerhyQ00olk72T`ESL)TKww`ev6x{x$if0mz;K}acm{qyd)yB zE0C^gCov@=FY~MMNpR)J6eK8lV$7`YEg#Sl-6t(u>e#zhD9=3mOi)mE1bL` z;siqq0w*RE45edpdLkYOvqVmHkJ8rLm*wkjJMJosZ1jakRJ^WOs#6wsQgKM3H&_o}b07cx;H-V$mD>N}2%4dY0J0s~^naOg(= zt5+>S$G@I0Kyj7+&cR^)JS`F{?c(8gfaagOhIOBwlzMe4jt? zHrPvOr?Oyqmh4&$cN_kShs$rN*J(S5v(LvnTe1yz&%rh$@;3|}nYYu$0Hx`2Lfqu`YktN@j#@^IIi(UVt z*M-~#uk`SCV*#vRU8sFp`j_XHbUpx;f9}S!nIqW|sr$OwJ~jZ=25wrINtyZ=u#h;> z>>~1#2<;&^b0`>_lYo;R<8~)Z3*)FS$x$>_B zz$z0b=dZLJGTh}b2VV9edFdEz5AQh}7$x>ElFXVVYjP&++p0k$9DH;KeNw&TTvPoG z)K}sGO;Un7`y?aIuC@}y@I`^g;QP=vLJZ)p{DxV0#9 zf;d=K6VvwyXh?r6)x{8(iP`=EP_mKhp*p_x)42`yE%dF{AMK2OIC*(vfDc&6^_il4pY*xd zJ{?Tu1B&!+H_G;G0Q&@65e)+Ksp?2c&L?p?*WSfr65nHJAgKu;*&ibw&{)WQ1%NihmdEv z#O_=W*gZu++FIP%)1Qm_XJhNQ<@9_imEX$ukBgb&q5<*77@z3QD z`=WCZ3j_tIz*{u4vj-Z>H~Z2F$4@Gv1WQS5WeyQHrAO8%Pp))?cwlanN!{aBLE!XE#)#&0`e*^oe znr{uBCT40UoiI**y*SH`m6tR2#h!aVENjF9OLjnc8vTH384|8QL4l#BDAl2~E7(^kX(0L@tvc8Ih zkkdufcTcHiP9%A?BKFfJXZp~xI1PnaUG=eGgoI)r7(rB z%VJTO{3K&-W)qTh_VRI6{c0a0ozdPWf|F6YS2Bsz!HskUo1B{d#C6)%_dVx$#`!9k8@kaEwtA$5VzTeslQT{ifxpi2$d@n1n z)hf@SOl_Ugapyi8`5gD>W{ezBS+ileR^(;1lV?xa4uM-Za*I1t>*ny3O4x75P+;JR zM;nyfYpn4oytuf%3AM#@Jfaz(z6DIGmopy})4ZDEygCbH(HMdVr7}Oj`W^h+vT|2fqpNUCvS+4cnHmG0~QZ_%5QuWcGvRO zht?48?;1MZ?tvvU(NJ^un^gxnPh3SYKtyv`9}O3|>#=s7Ljf+O4{oBbYQT zE2Fo!uO)XkbIl&sML$HJu9a+<=NFFH@> zb{z>Xw4b|%B@lb-@UvO=omOxgGr<=G;fHQ+*>P9cfZ>|lY4U>AiJJRJYT zJ?&1kQI}0D8MdV7C(c-WVf?=SAc{1VozpYR&&`UZ$6fsoZHa@U+ntgFqVc(A@P6ST zld=f4Y%>k4PD+A6Gx4qec(%r&5q{*)Pdw`j9(c;SVdQ6>^4p*(sge7s4;tyv}5X+_pLWR-a+gAG78 z1ouh>OMm-68@b*IkTPBO#8x(tU&%AvENOT9_x2ginaCLzBu3P77VrAeh&oZxL?D#Z#Z{u7jjlMP%!$8Yc#!&(BNnG|# zuQ{u~!<*R|B-Z^Gpd&)Yv6eg0R!Pstr@FP^w!ND&Cf}B^YHjv-rTjy8fi$`}$U!pc zGxk^lt-$Lz4`_Xinf_(%xJ8AaPr(WURp=qiAe+G2iq#}6ud&lKHA4!Vmy6SM8JaE) z(e$IDrEAo(lb>Z-twcY^PwcEu{2nG-rp=C0tmc~&8|Puks&OD=``ezmnYgQ+D}1C7 zvD>3_X0GVRt_)`}b2g)tK-|ud>M)hyG`o(DDd9`RyLdvFL@uRx#(%zIgTZGqR@HQu zbt3&SLamu;V+sKOM&?-nQW~5nVJ>WcZupSGoolGaL;+I#5&vT+k(@jxvuun-$-yo?Bj2MJc}3*ZqhuBfDL0g5di(Y$^^$BEOd$;cVxEnwyQ+fr(nE~qh74t> zRDZExGQ7Il#N%8yPY*L|#-iV4?Ng+5M|q#(j+Fxw$@2_eD@6T7q2z4h5I7C<*j$S= z*4OeY!uZ$JbaW`6)PL4~{S7Jo0GfS4-4YYXgphk?*=D7*aK|Ex^t%RLsG&<5?0`HJ zi{k)jpj^BkDM)J~*&_;2cg zhcPeUYHc*|UF6y#Xw zLa8@iFI$g$DU~gsnrNWzmF#qqJ#!r`f#;j!azN}Bu!~J=V3vcpU@Lg}Ib)?D0q)52 z3Fb9pa%HW05cx)B((=M~BBbYl8dkPAbU~$yC*{TtA}yQd6kCJ5Z{o~@i~tJ|2WyyO za-cuE1yu$rTKbAj@HzaBk|dTf+Qiv;Y9+^`AN6A%_!P>~F$DuXAW!jWF3`bjR+~_j z#h`JVVxmD_i=yr3MKE(x@gsys4Z|g_QznZL(5&WCxczH+U_dtq_)yj?6`~EqtGSI5 z?70HZMCo1!t=eqel+_u#L>w0!>(SH**=c!WhhyIhH{*NdP**@0=8ZAi-gO+}- zfrP{uE}1k4)<(Iw${9ZTewZFu}%>tx= zX@Uka=`P7ENj}HI8}7~qH#$Z*3{(L(Q68k0Sn_8Mhd&(nD<8Frj=kSQ9F8cQ-Y|tb zKx?ODs~eViht)>F*=)NtRa#`{OZsr7{5Tf9bH-F zCgCdANuQdEP&ivHqY~Q`l|YZRXWK44N%`{>V6<9(OW?Dau72Pao$&uG3bxeTq7R*_ zk1y?wglCUAfwv7tR+S7)&(gkX9_o@UWq$b|o@hM`=P~4nA`a5iD5lU3(?PWF;SkQR zl2G-S#QP8hnOmOZR&vYOI4E%z0y) zCHQIJ+_kS#3Ewc24ga6k+}lYyQ2(;6yIi#!m$&C{dt#($7P8rCqL!%-)CzR#oe4wS4}FUQO-b7G#-jcxpAB#@A9{audvl|B3p zY9c}MNSDI0U=drbhJ2N}!f`M-$JLDhX%UZ&qeZoXKB!>K@Z-5omIy=fg;)$13>yM( zJ0apJAu7%wK4udr-_=6gf3z}6Z5zD7`Dr8*g=dt)BoGX4Tu$Dg!20$^Y3?Yx-Uz*d z&!&jgEeAc*#XKkk^-9}-JX&`)d|ZJ>v3qNVF!)L3sv_ku<{b(MYBYVpSW<>d%C(N9 zZyU-8${G4R*=GM^%m35*BS<7_fXvb4o7eJty3MI^Y12w$tlh_l#{JV(-zaH2AfFB; zL=tWGB|;9JpLBJvI!cv>ZD&rf?NwzHY2|%1Y?rzTqyz|2D1byd0&s{%$-Bz$&+OBz z!a*C24;~w+;nG0TI@WtcFX!VYGeO8P!SEee|3D9ZunAm~0za2FJ$nPAguCfykSIT> ziVmUHZ-ajwCS+&lwyBLms29^meuxkOL^za#sa&FBXw;Q6mfsuT!U{MOGSf5^o`_O; z2}+|}xadV@))QSI_Q9ZUsd7;?eNd+~VAOD%=S8fX5@YSs?_*kS;ne}M#tGhr5R{|C zxUo9AK-hOSx(_9 zFp#>0JB`bGO_bfU4@0B9S*KiO+4?dT9FOO9xt!k1&RU5o;<-`;dibQ&Uek6DQ8R4E zGrm{iPRCizqSSdBXK~D&nI&}R(I;0rI_9uyrSYk6+SZ6|-$%4gHqU-8<0L-$?2yTOvs@T3dKBz_EL=vPb(mk5@t1$)yi%8i}K#xDuzNIZmJMWjDs z9k`GV0)QYylgUpX(YJZ-|u?EDi^$Vp}Kr{ zd2!@v59S7$Auc%OU3+1Fd6NZd8lSaGwKWxdNK+$Vd@yIY8kl9N!e8r7!#DFT(g7Gv z^g7T9Q}(90k7BJ+`Ji-2n)gkAtuPWsb2sS_g_R4HP#bP7cnAh+dzRnENY zo?7WbwK(y-L?|P8uBFW7} z82rg1L*)O1)d*`fnyPLK))yxXOsZo~sN_Br^C;9JbWle%e6kykmqmGYF_l|Ax#v5X zZJk?0xv~T^sAl~SfMLVdM~gCuJ2UD7E&EkKb<9Tz<_O6(AJbNA8M$5qX^$rRMm+4d zar@vEYmD?ev3n#_P> zThq*!Z{lzslVHa5dkI_|Xfi?FqBXMR?}01K>;IG78eXmVT(1P*d6Sj+bpWj=#1_{b zB7T2PBV<~`>71d9>rwEv|d#Hmzp6%gkizmcbS( z4hoAHwm?+kF|MPAofi6^gS!N@RU*k*LEuZQRZ;nQz*6{sZSW0ED0KbdYO-HuWjG^q!xr;FSb3%#!N^cA@k%)#sBjDlNt0zST)c%N2s0;GmL z^Ps3WwZY*qs}pVAHn^1_9CXSii$>JW>y{@a^KTUe6XQK3u4aoZwZxb2K+l6`?n z65Go=o-WDZ@>ze`qnLxHT98?&Pb>MrO6TDoDrY%w5sbX019q<`OTL(sydjmACgkB^ zm~YUr31eR0oc3Qs+1~N!abZtzz@CqSqd>Ra>Rm=>;%U0&7ic%ctxrP8f-T9B3{iY3 z$W3pyGvJg!bxKvo2lp|`MG*PvC^x>^fo(JlC8BkYhrjo}Odhok{Cm_C>xoGKhg-7L@=9YE?oe>EkK=2 zbyqNA7*&;B0L0U1sa(7Vyi-l=JqDRJ|K)s~7EKcQ{TPVVR#ciTNUcspYk)s8u2v-w zqp{78K;3kz4SW$Js*2318DYz8diR-eHcWW$GeV1Fxa@ltsLT*t`LNyeY3P&a(nWUU zNDup$L5X2#DC7l9AJ-qmr(w4_XJ@Zr3u{LWV&#L)eR%COQYo%I{a8#qZdkF%=Ssl;Zv29)dW|_3*ooR1ZPRc<(FVn1Knks3A9HC8ay` zNgU;2S-tROIxTvq&U$=RLUv17P{j4IyDBxPg=xPr&p@VNzFORGCycsMeNLb=l(_mi z_b0`7#m}P8j`p37u}P0W252W!Qk(wi{MdORX8Y|6 z+bUIm$Fi9r*QP6G9fK3l4p&Y1ggX%Wzg@n33msNIgmwND%wJK??2>#A!xX}FCFOe# z7DcL8@EAobzOeErl=JsZE?;b3UqIYV+?DWLUVdm2tRfL;2*bB&TA#zZS_ZGvSu%mB zAr3;Z5f;oBP=i4lIKKrnjX^iIOod58Pqi(LcdHp-u1Ys1{^wVFf##DaqojxXJh@z4 z1@G7Z<)fv5Kln*$jO5>@u zAw*GJ(>ejD}{c>vuvMA8>!?PljV+_u$4k9fY`?i-`#6A)SowaNWP$$y=Wl1FDs*iAD;orPrFD5v86bVvlJvgY2_ zz#D0@f#RYQ-Dk;FHzF0UdK@KZ*&H$eZ=Pf!M)^atE78K~)%}+2yP;nc`xJ5$zns#y zSn3GIN$qwiA?L42AiqsUx6Xl|`qnfJBo>FjBV&MoTB#R$iH7bEE|_2~JBj%l-II&q z9t(F2M>liEf8`*sv827B={$zigWgj+rA#lgbYjICR~_^-QcpU*idgF!np7+<7nV43 zju{_|pG45yla;9u?~o5O)i9d1Uuk>_;9J`HjNS7@rcc;W4gE>znk_<*0wzS79bW(5;iirsFGeBn2@aJ! zOIlm{H?>D4gvi)c%`FeH&)|g7uoV+;PM2==@)IC_& z>0G!i%6B*%FdPZVGpAXFaod2KD?JzJg?BL0?@J_=4S5d1->Wt@ZfovH*94Mu?^CP+ zwK@EatC;A|ce?^J!CxQ82%HGDJ9dypjRC3&&##9IA?l6sq+ffK~;^Hle22CKH_8VRVBF=fRiWfEE9uSy#bj-#< zZL~LVqQrODWQn**wS0h-4#m0hclUEf$Jv}R`df{`%O)~ zXEaZbW46AGm2rJ_*)CE9$F!gCHe4%y@F@d%7~8WG6Mp3ca{Yh({oAS}4`#BtHMYA2 zUFL9s2WQW|g`u1J(`Kdg3zaZ7g96tEkkMW9$OB4^HQcYWf8%e7kb)fBj+9ooqahK; z{iG-*+H$gdI<0Dz&`cj2+#k_O*R-gRlpbWtuE9gD+tff4_$=fhPfqjm`yO#`0+!?! z>An#tG8AsX9@giKeTLgSCip@ou>tcv=-*eSx3r*U%aZVT_6cTcLaQ}k2IsZry$bz! z$Kuux$kAp(lpBCxKesc!SBHSaBPP!}-K3msdT|(cv&tqZ8#OuYx_*(dM&cKIYb#BHM9PP6|gx-6vXsa${O{u>GzJGhajo7e;%M|(M>s6QWdPxoIH zavk?p`!3^ z2YBT#iqNm0aM6hkE3S4uUl1OQ=x~LX8;z>VbOw+p>0*G{XO|M+w;Z~If9nLUCc+<5 zhR5w`afW)o{XL;NSf(Z?z#o*-OLfJR1uvu$Vw{xDUEPw%n(6SiLk5OkYF?nMp z*zM=s1DSmDaTZAE7hassD%)*vu~|7_{__#@5KvX6WWQl`f;lY3>jT7X-pn;hY2 ze9VZY&$w+BYaaTQ_cT|zH+MJop6=h=u)|6PSK{7_=UFpFjLra(3bBscC(kHf*rsLT z9=Bes6_W9y`g~f;r^H({UrdI&wYI!)eVlHm*)=hv%lOViy@pzkgi4#07^Kwju}60= z6;(5=mp3@g9heRg4zf(&AS?65FPb1j?ECEpetHq&Ap89baTV0_l+#I}s4A?n<3R+s z-zeuYOnaDEPq75nkKpYv1rQ&;<3?dFYfzYbaIPQL{Nn~y)#E?ec zeLt-fEzk?&MQZptKS{pn;<^cqRV0hEH)?FpU(5_ra%7A96Y_Y4hj7EEcgy^FdTHB&HeZB9D0-k$GJ^(#jeiLoZnQ(F$+v6rV;@Y z=R+UzY_(xEh*ZpCywL52JU=XlqW<|kdHygd(61^dRW#<`?#h41FKmJhH=-r)p3tl9 zsrHlR*->TB2|Ts%F!!Dc90^iUlxsEZSyqKj#%dTgm;&Bz4X*k8JFYiWCBHl8VZctZ z=BGsTKFs~PP>p<3AzQ|(K}}YLD!Un2MNb5R0(q2YRtf8 zcFi{Gl8upBw0mqf;+}+2;cdxTUcDtJ@Q|Zx5f{$COeROWZMab#_D5UHyxM6{@vRM9}o2|M$B|_vgE++CTEdH(6>bD z%p3*w9da=LKW62)BXAao7UJe%C>)sh2ne3`2b8l#e_a(SiTP*2M*q5uVgD+rlvG2a zoTy*PX+xo|K(3PYQf{}Crumw8cNV&Dzn*n995A`F40!(IN zoFcysRed$zlhdq0d@3uznl2;TK_k5-4aB&LR@1#!eBbMd98h!(@Q2AX^t{Ld13NHBnrL z1paQa4OQgb?lGsjhJl7>)>^5a?wJ=P%?j1cG+Ksc*9)RjWwOm|NHURK902TLq9P%P z;MbKoa0SWze`mkG_H{q72iP&j`p|#p&Y(iby&`{je4< z9Oo;8*T~girYbv#w4tjdGyFKxdvaI`FcmGEiwLItF8Fmv?*~hKM+6Yl@gytA^Rl~X zQ02=G?I>LD`-TWlIV$r0ya2-1@<*I^ub4+HsYn#n$4;#jIcJ5F7>f^T5YXK z(e&->Lo23+4$-Gd-2f9QOQwy;WO1TkusmNZGFG(jFqL$+6~^1AO*l8+r&rUMU@6QZ z4VWdB17aFro-W1)q$dY$CRs>W;!B@tB?MN@tl(|9#KaFTdBgfAU11WI+LAvW(EUBeHz~zCaWIRfNH-?m@?fogO;L z0Rb?WRONbLu`rZwOBFWxsD5v9>8i)FS|i_K+G~Y>R<-%emsk(kQK?rj0zlNTPxe1d z#~i`)TiXAaF9YzByKH}4@BuT}4Vuc;BNMm%*a<}$mmG4Gc}x>ZJ2i9G(Hu>xLH3)aU2#gx60 zW)ITX_id?7^xb_C`$s2ZuKfB(zo2jO2@>&1tiYb(JF|t2{v0qPpjP&rDbV|KALNVD z-R|Cc^y&EfWve>U8ck}!yych?9#txA-KyH;!PLb;yhR1!jbyD4e!(*{_musy8Dd`V zNwWY{AiczE^NE7JegwAbI*zZ};L!Z-l-DbfdS-6g{g)18L5czrDi^rqxq%n&Sc8P|P{N%GHjipV7o`_QUB5+GCCZp2~9SGt5__rlP0*uT-AX- z^yhHSA+DP&PLk2)gWS;odS+L)ePObq5nml|A)6uIKhjoV7}=lE3XrXTp}j>=P#;jk z?5PLRiaS}ANh$TRHaOK64{dk=5adih*kj4@&Ie=T=BNvhjX{y;DQm6}?(Tj3%`bn( zF|-{ZeBl`@ z#QXBb(bT>oD5&25ts2p5(u*ldA1sW3>%E7&_Q|4PiP2>`X=svP@>n>u2}<#I+O%R7 z7cK|zl4D%`k8!?o;blA!6yO6ib{F{$1bn!-heUQ;E-$q#j z3-ycO$t6VZy#om^#(^H8eRrF8YO=2~keBCsb|1C-{SO4`Wu^}=x|gN@(U$_N#!d}- zprDJ6VCKoQeKyz`n_xOSz7;uQC0S(_p6$P6XZIdZ?96nY9Lf2p|`76KgO%mb8uJ?x$ z0W*>tgD?E)A;c=Y+r!$P3CbTXljt1eX`J1xCR`R(89KU&e)xrt&AY0stH5qnZLzsP zTp!;Hb+*%|b0C?M@JfiJThvRU=tPjxg4H$tRA3TvOL5*H zuR}8J?%%RFef+dK4V~1^7bZ@uTM3Or$a(`Q9`g#Nee=Tg#3HLo5}?(hP`u=dMBizw zb1|tBy`cQ2=-_0&>EjK|e{()*+Z*pGvqOesuO`#ksbg7*DULgC$oBJlPzIvppC$R& zmV0D?M)kvOxGQ0x1yfZ^Mistb3~LU8>$HNsLU0VBs*it*0|Z;4YX_&2`Faz~)*z z3CGCPoi^$b+n+hVnn-&qWU_^Ng3a{(I5-_A)`PCb*g=vRapf~CpVP!D{eSQBXKf>} zjAmyBq*j=k@7vTXGtK#VVC**e=TJu*X%~f*QWNrgi(3o#QXZw;+#bNS6Db2NnXw+% zpoC1MNzOl@$bS_n+qdD;#bHN8+46GmIi1XN-QN2ou-pwsOtjucb^X79jTqH1&Qf1) z#!W``lr!;IvDik=XQD!&`Bn`N6VHTm;*(j)kmMbrx{{TpE9`P&Wyb4DhJ1fybfs)G z1lCA^eZKWyW1i-8In|;wpAIgK{@4z&Uz-(pf>K|#0#KA{< zQa{(Ok9~AMm4S+Ihs<$sX^tzjPRm`{7Zy`Vy@xO@6Qym}GYm9R!`I|XO2WYU_fH;t zKD*myTfi3c`_n(plL$n%^8t;Ma5_kM#wYyB()i{nZv|VBnl-=M2sI14m_;BsgmpaM zdqQRGHdoGO;(SD9LKcp1{*LU!%R9XjtLZNaSU9gw!giv}u#I`tV$KOKoIw7@jnR5Y zUnl#hTTr?oic9!b(B~ZmOSt*?j*Jy>XxqUVIi9dr%4jrl;3nPWYd$~jjn*U6 z^5RIGiA~bSexf6V`MDr($%xX!Kf5eU59oEkL47YfMN2YN!4B+aLZGY(h_jO*xVMA< z|I8-WJ-HPWy3J$tCdgZ|5RN1C-TpGdP*H+KNkWKefh>%iE&bn;O&W2scdvm$ zVVIy%4u+l}YvxJNy%^U`VBLm`6yTS5L7eyqJMIfz0X#nUG}RgQ3SmK>BM`1P-%i3r zr0rH1uj{d2@m)WS26 z){g|R@nOOFN28h;EReppLb;k6xCZOZZ&;8Zei^S3K+a($X%6g;ayv_r?_2eiMp59WH{`;)(JGN{ncyWNwV^-H1srX%LtvTZL1hiaj|71OHFa1y4>#!^ z{xn`XbW*Y4gU$AFfw|h?{!>a&&a+@GE{87HE1}f+27Jv$)UAuT`eg0M%U620pb3xt z59smhJ1K*2sj7YVdQr-cH06SqctGS-xIB_$Gq3KzPsJ0pHiWFf&KMq*kP67l#t7ncJ@j9Tin zaQ3|{SXup}cHnH%TX9a4*0V2pmE-L$Hu2IX!BfXDUQrA1d=zV#%r+pO_B#VPaov_4 z!L0Yi=3x9^U5svI5;ze-LM}rD6M;sarw2&`s6p=2!c0Tf^B#xg|6##w_+t{OyJjP}Z+u zFPL`j3?+!`U4Zt8T#xD7=});+J@`giXFiZfV?yPu(S&W4$iU7S@3#xYNytP38g@7r z3U`O>H;DytCXcsq?WCw52jhP3Imv?_X{I|uLC?$C#f^$e59&++g%Xx(%g7;bpnMYu zUx#=HO>!3d$y*MYyg&PNj|+^8?*G*wQ$u^fqm(G{m=E5~;I1|S90oke0|JYk>TPI+ z->p|-{$pNLb{pGHDqEJ%H#t!VPL1E6bW|yu>k^cYw|1N*wq~4{^mg7p_uDoi%(AdX z<{mMo5r_ohq3zjNhQ6GK_dBf7y1e_Rl1(X#^tttovt7#3DytjB_{cq*&ZW>EWn`5@ z%C;V90XErcb?t4J0?RVjNWMvgH@Z}{3H%mL=LHZ>7VWo^IBA12O;&dV6ve5y8N9j87vCqnrOx{;MgRRchJKknG4)5xAwaJpn>inb9h)4!C`C{ zE9RG;69{aC7r(TbypZeNaUv}ZO{yFX_{LRly9Zk^!LZldvHma(a0Qm)$A?(jw9x8< zzz3TaAD18;=4>KaM`*1kK+S8jBtHnjYE|MY+(cltgd)$|KZTQZ;LWQ^RT?fQ964p~ zDVX6nKbt*CXZqqhgJO*q&{BC-t`rkQi_i}K?nid|K$?`L^y4l!8o$I$@*!&`z`z}> zm(0_D8m`N=ZJ!D=$!WR5lR;uyL{!-c%6B@uer>r0fRA2^nB~lnFIV)Rucqx_NiPM> zW_W}pgg}8f-eI*Yj7dzoe%>8tl@#e#8*KSjyLdE%C&r(vAaOpA(xRU?vYYA4Vxjku zq|9g{?6l9)1>2aqLOue0&*vGkb1(qfLzgdms)$#v4Av^5fVuiIml0Owf3X83#3tcOrAIPY|9BNc`Ekf1_aP!-39YX<>_DO56X zT2@b!uMd-|#u@%s0ci^`Gs?do8SWlt^R@;Guv=u!8X&>|F#_o=rYbevt{G(B{nEP|BWFLaM8X4Ez z`C3U8k~-Y@qm9$wc(B6#V0j=jlM5Ji=MEAtG_Jl3@Q;`s@KHBjnTf<1h#LlWjZdF! z6XrDZ9?Xup_8V=^Y2gyf;q}Hbst76C0DO;j>?ig& zH;5DA?J9)}-J?hT^5Ev)P}~6jKLEh>L=NUmUNebXKy`8I8V3)ffhw|AZz^|x~Bg?pqMM%Q<=ShDbgM0a0F!3iMO*U zHAW)wn!EUjYjtS8D#6yvSu%)nka!I<@IO027a{8Pi_5&R)Goh|&4k1y$l~<(YzZBN)JrW z@|j~j*&`^Gh;oB zH%>^uQr#NSd`++;`ZEqeN+`*oePK%t(dUj!P%2J3gd8p!3WQgYJr~;u3R_Eg;Pl&M z+NMP9xM~SyCq#>EC77ZC3qo`(Yp4)6a5^>XM-;It^sCS5!J0;m+DYA!J5+HU=m$NT zJC1fBU-^58+v))ehC1I_62rIBW5i#%h9%od@42AXNvzMa0tu@=aFI0l19Q#~#XyDQ zdB_U14@}>+eem?GUNDw?{Top<0S)zd0s$O(ivcJ{#EV-0{RxmT9U)8}_sJMxE-xKg zgZ8Aii!)iT7cMieQv*51ZI>aj*qAt@6&GccayrO{?NYZl`Idai=MA(O9(bS6lPfRW z)_9#Vf6W{l4a&taB!0S2l_3xm%ezRxJ|tMm7Pu4B0jOUfMwt{$d*t_5@T5%2MA7L# zs8@}2Ia6ue=7IZ3hG0?yy6$WGEi+n76v@K_bgSm^`#1ry(>#CyE1}bsofY2sLLP;J z7^-B!?ld_BM+ntCrDI34jmq>fv8$sYp-FTwvWLLfx3z^>xN{qn<7Hdcrh42Sq)OODomk8=1O}@RNX4n>KqFYyWYE6*{H!d!qZo~Xysm(u`xaz>1)w&=;JhVW)=iC z`);%``gLMtv8pffG8BZ{HLsdj#}A!t`kxN$_)9r2WUy3g72E#(qv1NZiu(b3fVivW?e$lg@qGAy$J0ZOd0Xr%PP;r?idbcV?n6)?=2DUAR5 z8PL-7cjnd6Wb+@Ye*iXWhK~IG=pXfCIM-6wQ>j_cBjWkaRSyTTh;pZ~;aAAB}@cU;)az447 zPyGOE=5O4WQ_8~D+Xd$p*Yr-ob{x)6`V!T*;26`cg!lZEBZ1U4nO6o1LFuzN{t)qL zdllJJ+r}d3;cr5A59J7<2Rqucqf{SA!XlR4M{+z%INQ}H?Llu`uLuQXdwk87@cn4Y zXWo{KPH@{mOtXG*uzf(Iy~Rc`SRNeZY+^GYx$#3QQe`< zmNNZ~jeb8BFpprcq+F`6O>Kd;%MO#wLThfPhKu6gZ{w@6=SeSS>p=L|oX6in15j<{ z$D)i3xTg}@wXGg;?TcTc0V6)R+N|Uy+=0NLJw)&w(Cu)pNIIg?3KHvYam*-Z2wpU& zxuHwTyhc*u6@gtWSZH?%ru9@6_Bn&&EAO8iwg`69lOpz-7Flx1wjcllrqa?^qdUdo zQ7_^olk(%9Bb=eIXojRb{Hp`?p!_YG@{xwazv9TEvnPX)-v0inimwKQSFnWj#tZB% z6?cW)(P_Y$2pmKl&!RsjS)MK3v7D&sd4D+TaVh_0R^Fh%WkPv#>)TQ)N-&~{bX

(w|TIAA^vV%|te+m#>+MZ~99TEiYx>u%1~cA!H}Zfhtk z#5v6sR^UxtIQf*e>)+XLVaTNr8I@(YptX>{TpGT3gQ<1@TJ9jK%hdArEZE(W;~FF0 zzvQuOxTi-EVT&L8R_BbATlam&!2g46IWT0f4XeVGJ%+Z`+n6aiTi<)W4D06^ViJF+ zXy0Sk2pQfWG@N%0W76F170F8SDKR$B&l6Q($^JCtAGug8<8I5}oaV4cG;@Qm^|l|N zp0N_Nv|^<5u(>iL97J3n+RjgIhJl(X!wHM_wJB-Fq1QgnCNRtf2cq_Rutakdf8P6$-0 z;U=i-@b;S{o?JysP~QWVOk&*RL8lSPk$_@KHj^@V_m3E?)wYBriWP>slY)eWj8~C?F4bhu-Jx!wo ziJlaAl>;=@d9&^4Y<3V%Q8>(MMhj_yd(s!uLSU+OcpG=gLM`y!6#O2AA$Kg^Pkz9^iRLJWr)WYOp#V&fzAMFjW^>Fw{Kd4ek+(el{+c zkodp@^7k)PV?8QbPUaFZ`Z6AA%FAoSrI2Y&-az5rv=kD0ZU3k-C&oLe zTNIHQMFy6p(!ZUVw-SNd$Ru?GDE`Uq89BH32JC`6q5l8HXV z<#_+}Admz-4j1N!?iG+)T3gXPjHFi(a5W#7$(COhOEk*upM(qlf*3mlM;?XDW+F^_ZEYayp@>is!Yl#5V2*ZZ{wvx15@tLHah`GS_-&*Xt)CJ+ zg!rDy7uQakVdA+auxA9Yy=-9Hx0y~u4W0@!%~G}P#4&eKI7HYDezQC<|IhG-p45@l z)B{e#DnC>mFjF&Ok-1R|LLSY2*G=Hbkg=M?zl6c{uTn>@0(O3aJJr`y1p)_N9_KEU zd6$DDvMN5HarkRRDg%FnCx9Hbn9cKCu6z-@bHbyl?hMH>q80Wz?~=+F7IcP0C3p`4 z4?oeMY+A``3-kvqLKanY+?b2vH{pVNbc!AvlifLLJ9qp$$Le-fo~k2kcuQuFeo~va z3dfdUP^1sq;pM^AvG6TL>^@PrT5yBl-^)fVzF3E<2*v;u+w8Z+AA?F&;+e%1_#4TH z$6X5*Y^lIMWo#@fq>(w3-|~-R2^j5GLfglDRyELBhWH};^fKMA(W8C<$?F+m(HkTu zPNhO@Plt=ef>qQ+LsB?CwEGPifP0{lOWQeY%~<>!xI{fqHnW*LRNCJB;sO&q5+P3N z#K;Mb)qdue1AE-r0bLCi4b9hedYr}DYbC>Cqfpq36SshNDkXD|HOLwJdrxi34LsS5 zMxyu{#g~EwTzgH!LfLz|O)=2i71b-LWoEzVlpkc_+_J_=d-j$L?~`sbqg1}2P;^?$ zMY(LIw7FjMqdQ4hGyjl{9z)F}Y;H!;%sTX3i7@(sjyS_4r4iLpz&0>`I-?C4Gc`i( z!|`vERVGLo`akDtVzm~OmLtx4j;h$2=k8!I1EjlSQBp5V}=(ll-PcUtb zsE<|Yjkj6POk8)%HPl{_z9Nf2w_SB7`m$`*o8?2yF`!ZrE;Ha|YC>)Q<9PT$d!IEX zZe2APu(L2V3HX|O(u_aHqZjN<@6#FW*dQO~70VaYs9*UjQq74Dr9AYdCG$M(Eq*se zt6yXwrg4zXxRy@?A&XoU(BJt$qFO{Ur$a?%qc_3hPEvw36sSrx#|qA}Bnf`F1d|S8 zJxro~iB~2Ib}9`uSCjE|>U;q-qGkQf7FH!a<>CrzWxX*a%v2r?;cKnQ+U=X&U|9=Y ztE0JPbOOS4F@NC#JwApL{H?Q5M%fjf%ek!cZ1Y}c$D0m$$WdHmDZAhu5W z0Y^2!H#oxF{-AF;OVxYFoIlY0?-a-&;wE2+#(6vV9~DC=1Ioc%FG}*Md;RNk(WjzqG zNFp}xMyy&uHMQ7KFAd(cz1ydBZnnNle6I+@yn_Y6YX3A78D@?uIBKcEi0vuh}{-vYB+UBY5IL@&%r&?hjR zRxgP@rt@j+<^Ap!E>Nd?LN?twE}OQhUQ0wnMHQv&A_PK zF0~Ml`6tUVE)0NFg46;y=s@$&7xi-MmwhVK&hSV)gw$PdYIj(~Ncd9&JCl0dPu99d z2DW5M%~Z~yxiOhK0QNMYRPlrage*ch;KGa1e6=5WNOq=%m!IOM6xtGsn%+8E-|Mt; z`UV*bIZL+va|3KHMAE*9A!!3UX*fqrdNjIZo-0+Io21%X5!7>?=ALP=y=3PM@*Cx? zo^FU^ab#LLDCOB%Ue}Dh<)RuK9kP|GjiFMskqK{yaq~2?G~Sl&)*@-1se=2fUC(iJ zBxS=Zpirzee;Qy{i-sgTO$SPK02lcU1fCSo%5>9=qc$do6LB`m*pN&GAoxqixwc!9 zF4Qg(DfiS?MJ-*e!X9S7C&>v#&Y@L?Xc+kMa?0l|_>=V8GOzlFB5ITUd*}!&J9~;9Kk9G5-Y+OGQDa^ zUO&1Vb2a8I_*uUapP&m2+O}uka;P1yJ|u5J`w(~kYTRU2leL-7l&3yyl2bm@yqe}m z(y0N1`R_!j;oL0P9~c}$W1@p*29_^)+043o&FG$gO~)tmGJ7>|OF8jF`-)Q8Uzlo1Or_&HVx~9tA5~M}<^N`i!KJ-MP94##@o+sOKRcu(~cO-;I)wlA`P zH<{mM%HP*3aurq9&JJTlNJw$U{bxc(Te-OcvEsZuTe8*v>nHZoU5a;yWma+Z`Ll!~ z?6$G>890=BQhReuylP&qi$5YKmk{A~NBKMCb3snP86*h?k*D&QPlcw3mteca%%`|e zbjQU~3+WS=vdtC#NxM?N+n4kH1pfAs8JtTJpX1t;rTod+PN}WT5yb-ShR=fVbkKc^ z`a@nP%2T*a!paaz@T9_xUY9;sBAJslYf$`x-qFxFAiDfyh&Vu#1XS-R&7({A{wA)q zq#>GQcY$udBVS}!jOUrhg2M2b_JQvASSYiW^PSOw`DYp|GmRFunoMnSP?6Xz(XZ(m zMs_xH9~RHA?)WBAnU*-&%O1>oJdCI|${c8>%bV;_VG+x0z}_`0vdjTUYxLh8)Eqr- zhkvy*)w6Gz0;0wGA)a1@C1ZF!&aZGXHm@%IjW^O49yt79s0hru(~hn`(4?jHG6*d9 z`djtPk0bm^gxpvK%#$T>t~pxkhQD5AesRU~01toZw~3 zfP;7Df=@kp>uG3ac`&}Fs)x^1TmPQDI|=c!DdxHuX4SgRSjM5Wf9dS1c6{}IpbeEi zn|!BBloNzlk`w1U?b@%cF{dEMQagSCB9#dJciVEP2VPiUgezlU_>=T~l)d%@2g*0A z@o?6sZjuuGtKWxe5>X+w8j#S-^$%&9_NnJRawTTU>G5u|qZ(9ca9yf}IjL7yd_vdB zP9fnfZaFfqJRfCZkw5@343dgY<6)31+<+>&}b}co3t3J zcDz7@`kP9cq;TcXwuh^=BZmqWG&W3bEDV_@VtAtaI}N{??U@297Qpwq3E3r+H<|gm zjVp1owFOpr0Kp5S^fKh+&N2Uk8allAjsn_LUXazA9w zODwmc#y`9?JDbK;H;y%fGZ;Bd!gK~Gm%&{GlAte`icat+ZnXQgEqsY2UT3-Mvz zUDcq<^J0-Z^r{{IpDy-vprLRYqre+91YruFLdcGOuUhXQ>fPT5Inm2#t7GnC`d-)j zt0XvUDPrXvE5GYZwep9;*)CZC|3LW67$>&t752LE2hIt^;|(j?Hr%#`1D(=vwhQet z+Vj>j7J#ZO(0yx(Q+)o#_s#V%zp*P|S4l(F2;e%b08=;8OukLC)!+kE7_3Jbx7?~B zaLsR?9(*rg<@^*xjFeT*nfIyJ3UFOmetP;k+Pom0fR z0lP?|{zzlHkJ?Ccxf=JH9Fz5lCO$^Y$hbyu-zc=xbSQksXJD3|(c=7&q#Aj!sETH$ z^pC5rOx99s2uiRxn46%o=9Nd8@FLBuP2G}GY+3$oEWWC6k`_89Ae_I6fxz%u#}N{I z=Q`V}b!;?ugIcl4Cb>iUIz*mp_>gEYe0(zH$#ekuot3;MCr4kgqZf+rx`{}#90C^wt}xbvpW(&(e`Zr;uGH#A_qN;c z)D^$Y!-Vc21#{)B#j3(ZI`6-jfYJi6LyO)yjljY3e(+F;2-nhoEz49{2& zCh%8ct`e&&%$^WQu-1izokJS{@6@gq51vMrL9$lB2WAI!aM6k=q^dNX4yvpWrOeK- zo41p2VMBM*|E&z_PTMg=&tXt#4yO~kw`uupVA5>*hkv}lcW$&MBUfgP{AHgxpzw@B z(h^|BUEb!ydr057U%33@=K;3AL=T3L{@?V{ci0lg&04B12O)_`vHli=@@|1Jvzf3+ zq?tg*l^AfEXr2b|j*@E>9f(bP!t>W>QX;7Vc_S!0T4!%ho+^5&_e#ilb#=Mj^3tz0z|=h#_C8LB zu+&-Xqf%f(ZyESgxRf({qK4>R+imR#BiHiyOw&rdtB?l*J`84QzI;GyH$wn!!%u?S zDILsk<#X1PXzJ(kWF%9)5;bGTmyD`OGG8TgTA8g9Z$EW>(0U<3t zQM`8HMz)#uj{w-^w!7N2v#8BXTVwXND!4=%l%Nk*Kc`Itlohk%C`ST)QOn9pL`x)q zNN>%HV4>%lFxK01mqkTa)O_n=OrO9HHBNzJ_~>L+k&nKLW&iR!SZQmrrWg)$-)!>{ z-#^HgCdIGvebqzLGv>9nPxz^6FEA^T25~I*stm$J4E8Yh=WzJw#sE}24SJ$v3G#c_ z&xJ6q(tGz6rpwwhkYy1Lsdw^p_t%z>`}vXv?)~_&QUrS9p5CG2OX;L5#IA%jY}gHf zdF(Lsa?q6YyXd%+Z|9JJG0Bi4IIPBA%hjh?b0Ea^3CIM(-3`q?ADk5x#01h>)mIYb zh5|3(U~_Jd=f6Xzj)Qnguu0|tzb6WLv~uo$@~TCE(i@~?rR}`tLiQVt@w%@Lhj#zl zU|aA43eNr9F&su`*wp*kT-L7E!WC404i~62n!0Iu;uSScLMVi+i+1xZb^8Iqs60rH zWk^f3KJSo|T=|L$s)qM2;(ESx>{le>SK>XfPCD35)LGcHyzJ(RVh(c{%!U*%m9GXj zP>XYAs!y>^Uh;Ji&Z5i3sc{RQQRRViSj#LfTl}hQ>X6~&g!dEu(MF7t7CXmzezkm7 zR7((%xbuoP@D>+K{8?GLC5`-ETBkKyw(z;XTEBt&5}k2)X*Mq^RA7U4BNIg7nJSGPcNLE(a+&Bk3MFp*+tDRK_)BhGH-nL$o8&p&}1CvW@TWF-SH(8 zMpdHp*Us;`Op$X)V|ITs_-v*_10G0he~jUX2UQ@6VL3VCzSYQP8#}uabFJ(UKtMPA zZlXdX5N`@2IuA_`+ zxm`>jMI3Z>W=}V$k4a!Nv)YX>x0ogt1Frp~ei@>>BF%xdat7Z)`YPI}vb@Qta}!O+ zNS=<#f@g#MoiX=c$ zBVnq$%qr6!M0-z04HEkx)f;2iqwJ~O-tVh-ls6$1klEv5MdCL?w2S9O0G93$T6%SIh6d9pW90=N@w2H|~vxrWX*% zHjd7<_`fuoGEfS8-^Ayc&BfvDzxC}I|Bs-!KB1s9DZ*plQ|^WhcDHy(J9c-+4$1QD z8b-gEUr4~eH#rE4(hRp4wkq9yR>?n@ngQ;Tb#k+MTsJafXmm;~lOnE84ghJrD4th` z0GIsS<_JwFsH>5ItbGMlaCAl0q+zg-88DLf*w5uwY?2patXW8pFan9E0M3laiI7Rv zuE=F}5hrvHdCA}|rOIGPt&Le0mo8m9*T~l0v_TdtI;@`CZTg(#WMhu}0*|%|ZNIJM zVCF!_{%^LUZhz`nE*=-%ZMVuoM(NDL6?)uz_HE8rt$b-{PMZOtR!@aQO406tna(Z-U0v)|j7?q!c;yNhL>Vg%)&c($P+)h`oD8}IjxOt-Kd(zzWW&8%@i z*vNb>2L1#flI9uJnu`mPWy0{^4-74^By!o4UcAQ&X3eN351USvsj)-&Skaj&SSUnX zNH|p53pUeenM-iW_eZi(t@OrjNj}k0dx$rgQ*3=n&4%iM+N=E*SxrzdvEf{!x<2f< zkLPxM22NZv=U&K&6nIyF-_tYj}zu5KBNv%fr%N0T8dvof8D-XE=qfL?rk)D zuq*bKLagVc`Y@n`a)VZdFV`W?t%>jiif6bNWh-6PS;(xlMwX6m2>csOVWJUoOYWet zE3Hd_J$QLO;Qpork#_MIPsxCDM=l>_-`IITQNe z+Y=sPX5^>%ar^jEH8c1*{rLOj%6;PxEDnzn7gIEUQGtJ*!K8$vzI(sRbws31+|H9i^^7Uom$SGOV;Kj8=@ z>VM5$kg!^e(N0e=gDivAH{81&$PLjdF$;5;IsbY_rRg#^E6pK;5VhJhjORkg0T zRr)wU((alsIc6{Mgim0dOB6_>AL_Ou4jqZSF7YOG>-G>1sh}+S!a<3W_?BJp4p*RU z(X2x5H+F%)gL#0LA)>oV)PvvO!Pxw5EJS3z)5yx2CrEXrlGEmrC^lJ2U|NP`V3K=6 z$$+uDgeD=_qHu#k5=(!4;KM#UJY z)UZDsxT+qs356^qQYYz0d^*X^TD)2LBr-SLpvQFie2J!U#T~+=B$4$K% zk)rLGKZ6AxZ0}2UGc~qdZP!QZ4~s2#D!h5wsZID6i0yVkZ(K9ki1o= zSfSTPj+MzCO2QJZ93g6RLl)+GJ5BN`y|GxeM(jFu^JjB}BU@shDBt{1(WC67weBjiRT z5apf1!~|l>kBOjzbj=j2vc2{{+`8JW8^9FbvN?%lOZi8ZZ=jUv^Tn)-tVLtl^VMEW4~XsOtL!o}nzi#W0_X4O&LNfPBOTZT7sS<`^b*WCi`QsGRa|oIw8$XS|D84Ul-e?+ zxjQAKdLvj-PKMA|IAy9$Z@tg_w5uP&qm37pF~$`LIy0W3`2XXxIl5VurG^IR6GNOq zb%pC+a+VeH($SKBLl2{V!gPkdE;tfj%XBymRp7P-pM1cG;F&4ErGcvpXYooUZ-A|K z?5j%z7IpaCfT!kJ;lU2S)i)%Z%e67oAjgEn_)=-l2#sv$5Ga~Vw2o);LdrhtRHex^ z9<@?TChD7%-nZR^o<-x-IG-)OJnk>d89Kpunu6{|&2;R?_=-4`;OJyyOL3>nG_jEr9=>zt1`t8KG&7 z{?cNb+sR=aMv4Y7;fvDNBWDvuOOpl<~l&mZ7(-}+F_0UxeE;+GVU`!trj*5H?TIL1{i5cf2stb`|8%U9G3O6t~rC{+= z!jp9-gyBvS;HxNF(NE9?i^G|;Y8@YOo)n~aF^=*K9m{1%%zK-dXxO4S!8Wyj%6J!& zOq+=EYu9iGe&ar+&PFkVVb*-63VMh-V&;h@|0_`6$rnz6$n%OceF|i5%VrR`{QdKlLvvfdkzL%Cre;p85Q&CME3Z0pco;0c# zZl$jT5Cr=WZnvjpjdboMh$A#%i;HV_x5|N;CAlaeJ_!p04^;dwO9e$99qx7%3%G}d zt*wKNbS1@%>0{ikvq@B;bhcx2Kx@fJ{$&JZNHwedXFW*JWbmoPBFC#Di|2=#IAJ43LsohJsNs41%wG$9r2|&zJ8mqMNeJBNor_uck(TgYV)@ z;tWt+W!#iX;L!)Phq(gGIkv1tPNL^I>^GvN6qd&SAO}T8Q5|W)xNwHvc-lseg*m>) zmmaV*0}^i}7`#_nOj%)GK=~VfNzkT|fk6gPqtjWeFVU8yd?Vfec50AQS5VTfI-WAp zMiYI45!)ljS~7UP2K?Qlb;)BL)YL12+&HO&w5LE9@tha<3<(HMV2C#XLB;{@vB)k( zT~9mZ$9Qv{G0-5l3w5p`A6d@sqHiFD1E3H`+U)^!8L34{SDO3OuW8fC zse4l&gTgL|PRQMCZ`yKb7cvP*(_%tzs<}{kXe6K0_*jq#^PSMg_Y{BCq&=5q z4IQ>Ok)J|;g)EWb1zi*-ES&(Cf^;#^-kX$2Ybodu*gupZCx<$BWQZADt0tdQvh5Igs49%OeOO}JO}5wo=5OM zv^|zqYrzusq|x9}H|4kb@MXr#5rzjc1a1;u5q|Mka#u8F;n5wk#b;ve_e05L6I7DoOYLSG7;wqcGGOK=I3shaIdlzjWew_+784so zR_}pPC|BvRrCqo>4nrQk-OqO~&IZ1pjNcR!E=b^-`z;>=NHlqnSg2aK(~gZBwD zZQI`OhGSnch+oEVb**MQW}Y9q1rAI9UbJ?bkV@J|Ic_{tx~IaNDcX=8R7$=AbTikujU~T_P${YOi+OhhGs8bBEBp{3 zt9jKVvs6|RB+sdtT3Gd`>YH7CjkvL?avE<#&W@3%5N&SmhEdk>XJON1Z)8uPB0h%q z2%0<8AvXVc}5$!#WP=buWKsWRK-=;eE?)=HnV%^`*Or0zrCA&ISpk#)q>?T6o zCqTq}d;Kkl-?oUWPSlM*ivi+*Rds&tM=`~WjW98<1;RUShoJpipkR&hY-W|1&Cb?n z*m{hgqo_F*=KoZJrYp;v+~9=h#5iSogn9k@%5IbHhr)WUO^%HFlw{PjNCz#nCVMIi zS-h@qB@ov$J%s^+j~@%~LXkiBY_^~{iu5xiIkshVcz3S@9n&+F4;N=a?^|Or4`HY( z{9AU55;~-=(&8w#aV(aCXlUzYua|7?5UM+;YT#YyJ%eJ+DGkz_15s||S>L~NH_IIt zo~Gt0K|tyvCuxdH@|qHeQl$WbLzjJI)BN3besZ9?uQz|rL=I!;W|PJ=Nl)ShCgLcJ zhuCd^lq8$(Yg=)FxIWF`KIY7oBjSQE&cD$v`KjjA<9W?ELvLuG3HL%WYz;Okx>T?^yJL|xyFg5xUbZ8(h4eYiP1Whmkqbc z+CpD{V;0K($ll9-giF6U%Vn?ZeSpMdti9Ol1D5FJ$7@CbhI>H5>(dBxzEfeP$_#rb zPL3B(;?D64;b~cR2EE9v{iO0*_}EaIdQl4qWO~c>baBopN^AE#-)~J4_!5>s32wX^`cgx87Hx2A| zepa|Xj9?1c+3hML8xJEx9A^&q3zMnlm!v-CocRC1kTi^8VcnOxHg}%rn1Jn^Srvd{ z(b5fyjfFh6@qr6gMv&oj^aBESbA&sFhhg4sWn6t;LMlUq-eFvcIL2uuzhgeU zW+mn}%A+)rNbvhEpMi+9KMxk)Jc$_aAID~?(z0DikW>XVxlxHT9UvI-X~OgaGq%(> zhvkKq-YlNF@d`cj?^hg&a)Zw@S-+_h^W;pHhbB!sDT*2+YD;EPp$~3PF+0ELOzi`J2ud-Ix;9d75QLIn{*5i4;^0D0@slabw zf;#V9sx@y&$4}`rMsgxdL5d_0^u*z}fruAe=PCIvgenp)s0EJ@LnblOh(q_kij?NC z1!=FBUm^7qLhB{}1LG}#xTgO;WX3hb;1`Fy>_XMX(chGJ_iFUa;{i_kv>XT8K@Kjx zWkxZWY(a$1LKzdXtQ%=5m+h^gzR~DI6z%3rN31CMwH@PL;qNEg6w}LaOVQ%&e3`c|7uP> z@yl!qAGH|ji3yq-t`07#R55%sF2Vkk?FjNQiMXp{jGGf=+srIgW*XSM+}c{q)`s`t z5!Eq+6RwI zCj4V_liNirVOcem6IB^Mp+`~x57exYKcM; z1L;C(8uM%MJ`G6c6vjIy^$@9gJU5_}Mki$g0`1v{x{`kyYhCk?mAh|l!gbyv1&oe+ zDR<>pVJn@#WxS*bKRCvlj*TNYQQR|>7MD2o=0 zhipYdM#kL=^Y?35I|w)q@4434!Rr9IzZXzBd#YoK69_rehvm56_3X--HUQF{V5wbU zda=+gp79mhs~s=Xk7Cdok-|}~BiDm`k*&fO-OuXBw%oZ@Db>&nO6YXV@h>_l+`QuI z1&4#P_Lg^cc8jB}7ZL2Z5M}3Jk^Mk1R_jO01wW>e{uug6WMQonC?@N73Z3}plDOKW zg*p`l*><2u^=ZWMB^{(H8Gf}g%ZcFU3AWN=-si2OC3c^kzc%;=lkHr5USdBIe*n?6 zv{;DUcmGJ15QIVvJFtiDZ&X~~#PN`u$tS95Q<`TBlyI=iN!SZE)FLu4jOk0AQ6AhN zz$WOF2E|I$gNe&BpADQ|xT^n{nyq`jU^YLx$oF`qEXD^F7k7I(u_c3b1>_<2Wr86> zMAC#iozaS}ZVRb#2cYZwYwh#rl=>eoeymMKKyBZZDI$5iDq3M}D|SsJ;5jBmm><{eL$i2gxr_CH`|x`^}UGSY7^Rk9QIeAGt0f0z!v-0k`sGQwk z65fVRD8aaq=iF-L!fM2Gxjme*{RVw)<`m#?Hm(Cf=`nzg7-!{iP)WG@6h0p>q4!?F z@KOm(1lL9Z2^}=rlQ5XTn;?SUvc<9fVMG+nI3sJaaixEAIqCOfAZlr0)%VI^k~C8+ z*4W7_$_+BND)1KPj|8X0N(VmF{~a}>G>Q8Q{D`5Po6FinezCD3lhi4WcIdm0^IgV? z8N^XaiW1;B4xbnb{Ek((hJe;sfFvoHzbS!_gEW-b#voI zy`x7mpIA)a&@iX6@`GsDh?zxPxG~EvadSi8tze$A9of*ROX?B&+d$%ZTm^2i;10Jr zi%b0FA%n#dPM|{y8w6rM3f+;Bq9LfmB4=UO;*Qd_LMEJQq`u8`<$}C09#PjRhArK; zOenZGtBPV8SZ6NDo3nu|59RQ{Xb$9jkor$1-DA4vTH(k|_lvC5al=trHkZXBvx$cqhn7f_tk^iSYe$&C}&T z$Q3m&z?Hbfm6!5&vY(^_KD=cAnM7e=DJ|1_Cy98?s4=>b5K0ytiRjoKrC&We1Rq}! zG=%^5VBexMe;)^FJN!}#*ClrcJFA%CotkwTJd2J#bDJ|+pwI|D#|tjxm+caU0-<6j zgHmuBcBaQ19n)V9@Y&wWz9Xl~ zj+xuC_KJjn53#tI4vduj@Wtl35;Ll|uW&cAMFSgK=Or;W;r^O@TB^OGYo509kn zi_Pswe|%@DLk((uKwW627$**!Ih@`QO(PP6tzv&L$e5OyKYjUInK=EDqi+b`23p6r zp<9_(7aB9YqPfWXJ$d7r8`TS$WPE;#Z9 z

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 z�%AUSh^*=8!-wNn0NYT3#=g4a|pe92MyxTr>1Amg~C)fNhADjF9paGzZ=Ox&`>d zWr=~X67G>UtSgIpj3cy!)-tMlrVxBPs{4NI!!hq8>{koT7$^33kPLNFR^HA6<87a~ zs@jt9{&KZcx=Tw#^DNtpPrG3`)G?Rl@NcxN;ZnEBB7z-kFl;Zv*gEr=eDj2kHqKBe zu6_Nz(5u2|q7^3egCGI$0%hA1Xbe0Zv*?z*1u;C59mp||>TK{AAkS;vn8W%zXF>?! zUk6f^EBp*MKO+#gc?+K>Z+I&`-*{oB7{{6Ze|<5VB9Pq1)RT)Ak+gg1NtYYxXcvK3 z)Glx1_@0X(ucbm)+FoMGFE*l2RCC@~qbas)VC)%K*CB*!xls!SBW`ATt92%|bs}gz zpvd9$CosnJ_(DL-y$SPHw?EdVwL4LEh$b(0%*PT{Uz)Z$Na6R?< zBd&wWRd`#pY z9aHdOtxs{5t9xW@Da+7ftm(vo`TVHLg&BunJJ10BM>g<7rZ>78_F#CPj;{%FN8PY# zdJ``>7X|(ff6qMT*xR#6tG!UX;2(Bvnq2D?yBK(q9gUz-QSF1=$=TbgwolCLcKRw)|QbrSz5p+xJO4_io|`d zx~a0uVyFZHgNIN2M03LSfDS#bSOY5vFtnX{hno>RxYH?8#aP!wWv3Q#HAg0}x_pp0 z$*~;kDv$&z$+$NU z0vV(cOb!=NV+?u7w~>f*Zs|hc&t?JG)mIRUCGZaJTpV6w`1dy!a}0D~<}qtU?nHtz z5BH_d9Y6TYqpwzWm8dzV7Z^6t>@QG~e~-WsU>|+^;Qhg=&l=eYUc5s6VGT;AjEV&+_AQ+a;Nz+?4oEE<bFcwVH|NDJ%~I2 z4EuWjR^& z`X*k-FdOj`qHRe1mS{sa61U^sAGoy^Yp=9#;F&8blBzpH$(*6k7}H0uslwZ2ot^_3a}su`3uU*l7_(0AeQ&e zrx>alUR>D5zk-7WLP`f&YpXaH#d8sjDLRR;T05C^QuTdJxxhC)o)D8iory%C@mPfw zL}MAKJxbZcpiY$nY}A$o3!X>UqH187hR})gR)p-czy8v|az&*$jMy;;$vdNw&h!fS zugP70X1t6?6uJq45|*(T4trJl`&BIr(AZ1Q-nFij_A^y9L1!896kZ`?N?rKdS*$Zj zP+7-N0gNVJsc8!r(tS060(&};Z~>xrK+AC7F-ifWR>aIB+|c$bdvc6p_dzXu!Pj6K z1E_E(Hu$F-_~a~n#X3HXXG&9{5LTcmHbo}Sssp;gX6h5sGL^W5pGu7UWD))@N!jtW zbup}pVAd7Pe{o~_UKEcl>8&>(E-(EGRldBx8aZ z1?#|!e`Ch+ysTjHt!?4YdmIV^%J>&@LP8<=+FvK}V9(WnvNq;YwSvrgawnprBS-M) zTb;-G&kw%`;9kzA4%|6_$wHEF&j8`-uHHHvt^cubc&Hh2U$DJnDG{Nuuuq)F!y`Ike6qrYu~7_?2H*E~KM03Pk;UYzgxomFSYnuU!`WNG+~R>jlEX|2QcU##md*MTrf)~^H4iZgO~@{K#F2G{~x@oRTJnjRM~GdyvLH`{1+N#V0HWeO zhRQfXuT4`yYX0VQKhSbP5>_UO+fC>q&h)i-fMv92hq79Ba_qj3n-NT;jc*)rI;kcF zx@ZD#9u%~&XB(uGrQ1WxuJ4f@tKjE+0)D${WK)6ZD31csQLl{=^YH4-S3@W(_KvHx zG$d*ZUlBA0h7w&v3 zyny)MC^AK^nZ?by^x4_lLSemqTJV1fWD{Phm#!JP9b!|)hD2 zGmwXDL*P5U%7t*fenLf37JBn51;Sr4TcAFh%oaVNO<YN<9T+m*_vX74fgKU?UA{EM^Vf)>u^$wvTVq zc!aLn5~{}p#>T|z64xUYPowQp<33TIu|_Ih1>dRHbh+EC7tJ8B^?IERInTJDLFKbJ zCMY}#sKii9TYGzm65f*c0^&pjMRX)9z-{52j)dvFNv96QV#XYPPi~|_XE@YvUFbqQ zuvoVEGW94ozB&XTFwUtF|zo0if4T5TKy-=&0d((W6T`HPGnvn zbCGn{hJmk)HVSnwU-A->D_)P&R5iCciIJhKas1laI}1g@Q5CZa9>~rmr`2MXC;Z5!?1qulaNKOA0sWSB+UrbSMpi z-indRP0CKrW!hzTl2aof_f`YFi2cO{p-ZwKEvV-ykot?U2c6HQvzv%cnf{=MH=tL` zT}6b8xo1&{*DKC9k*1`AY2-VMr|NDUAKE(13Ex?4gUxjQ>33XPY+K$~z28zl14kN4 z5AMNB$925#A%d;{{~x(Jm=*W#vbR(omblJVbg6MQTOm}7 zzB(jn(<7h9h%T`hOVClzEVTod+#!sOh-YNCHwQ&_F7h8x)=xfrY~x_KiozQovh#BY z?KGu3P1kjvpQH`$@D3;A8~F6k!90fGGf|@sr!e>CGcaUwt~e9wAJtxWtp^@R*YSOM z(IXRA3BU>5?g%XiRQZ6bZLh~-k!ow-C!G75VHD?2zt;tYA9CH{@~%z*`GyvLh*wWg zl)(40K#~x0e`PSLCEXOt5m`61PKlPHi-hDv)richb5uXb5^F7wA%cqz<#o6A?*DW< zQQGwXX|Vj8l2J;d+%aWC|MSsEA6P1x?%>7@jwrEVs@Mf?>2JfVD(pvPIl^1hLo=&w zr!%r-g_RtKW_x5a?ZMvZ2-k}N6J#d>?@u_8`1Rr!pOJvE;yQ4WcJlkkic{s1>km`m zRWrYvE^`y2_oI&6)qH3Ji&@QpD}o~P9jVhYr%W*F&Du{1J-{Wj1 z@ZTWS>}9NGs*_HeQQID|RE7-y7TgQri-0Cu@YYZNzn;^Nt5II3%>38gwdZvuercZM zl?2I*CVHUYMl*-GhZQYzm%l6LG}&sgnTn;C(!mh9o&a=Y7QwE0TR0zh9{Q>H8{AY#+*8en{F8gmZav)B=Iu;V-rbeXS zJ*%;m!z)_kS@&9WL9(9rEY#~d)uxR78C4(#nFQ7eCr4~Sq+BRkm=tzKm8e^B{R63ayQO$8t@u9QJ8q>exV zYSGOTaEYIZ+X&Bqh%7xVpZs7h)h41>tgJ_f8{AG=zTfvkTMb(CaN%?Z4TG(b;3-z8 z{eu4@L=01Dahz+&rC%aWBrYlr?5-n4n8f}6Vxw7SScmJ{T=7p=Q{KX~bA#`5^O1ICRqmF)2n%5PmJ>aJpU_dMtm7XkaVpL> zgQ#Ky*bokv84}aE4+A}iw)C=QL#g=x^7Jf?;-)@i-J%B9!0K<7UUaZ|8uFi zFmktkrv=s0%F%bC@XI;k6Z<}}xl8`~^}$RAY*GVAX>Z!hCI%c?IH8E4e~c8phU*u2 zQgiE(?31AI=y5YQR&b{;_c5{LTX-rS$o>oX1fVAOL0VudR&kd6E`Kh2~6xGMyX4p3G4PYA*(J&&Q!X(`=0lPH($JtPW3 zvb|f4Nd3?(h$bKmUIY!ppf;KtbK`aPXf*;2cfDIYFJ6iAkP^&{UMCeJLnEf9POeMXvjyyRS0w9adn(mZ$ zy2rYD*t4jPXcb%=KPTQ*!LE#_z;BS?nM&Ho`$jG;v)aoc?em15-aO-E%~dKw(`+X$ z7!2zk%EaXy9NpO7A`-i)SZi1J7~$0;BZVa-Rkya{SNFp|M<=(AaU)eI66Rnt!(H;_ zxZ%G_V7FwyS#=i|w zWtZ;F_d2PkB?>^L>_^Sdk2n0HV1>-`E=00T2g~Zg0aq%c3J?Lrj$h%dpW)V3k%WmN z`BW0BlaPs$yxl)Q?JK^I&*8~f%fCz3yNXWMyYH$kj%w>%=FsI9{mOkGrJPnSCjo16E6o!jd4jQb^F6TN~*7(jw$wR`eaP7~(dV@rEJLx8W!~mvx(&`KP+KkN7yW|4z zPlcVPHS*0yTEyf>r2`3O+x#3@;*EPkhtu?`OO{MM5d`@o=yFvU+MfJ>_(YbQ8qZXf zWwg^N4Q%;vWx;P_(}b1(JhiP)%xoCn;bA`K+o$u?4|0$4g^5e3+J~pA4O}MA?GS>~ z_G?qvvefrIdmVE%0zBYPG7&|sULx823YALLlgh@VmYe+l)w%u((r@hO5p2bVx+nS+ zblMtX@c;&j$7gue+>q^`e-l9_{Vl0?PCMbhil=@nzC@Hu$;{|h%F5C~UD|LGU-hV| z;&_<^1ZifZMb52c>$d;IaSMbS9(%-ryoFODCumL97P7$Oyy`F!EvH|Z2)Rl3vVzo_OJn?*${`@c zkNvLsO)Sx)>Ny|q%3H^?0dUljVo}Ko-M4TZ&@g|VF$TlZ&pJ>6UY4C9Q><^x{$sxL zeC^chQmTRvua&aa1u2}Jz63EThvHqREf^#;>%dq^g;IR`qq$c}SprQ^ z>*CJC=5)XLXV6|NS9YlUlKlQY`sZxD8dLh!xc?kNbm?$p(gpk8fnY{t`NO${^-4;B zPI`8DzswzerEKqIaOnBzP`U$ULy+Kt8Wa+zbT`J7*@0;j3l_dq3yEP{U+t{>1B(J` znj6xvjNj7_R|tb1f|hN4hkJ9>Ts#dx(#4cQ+@MK?Bi`|&{&JX>3pP@CHq=$;sOeVD z$W)b;`t1vE@IPy)We~}g8rFnO&fURrcwfU&NAjfQWmi(%1w7PKR=-<;vMisvTb$KG zdJW33!SYlBpQ+dsQbtAQAysl=7VUGR_|G$KXhKFJC4BfWbyQAUdu87@#a}niNh1FY zX-%W}k{jdTv~d@>!iWAUZSnz|X)d4H*1!x7){A2~K0NB7zLE(B6XGVW{Bm6$cCO+w zrQf|cCiu@Y@V0{y$3@$jy)d{=MQ^{lCX-s#-a?`A7!9{_^DI0c7J@Tq*hO-5HDr{2 zgloA#wy|*tQHj@OSPoR zlBon&Elas^sQ(!^F?-pov%dpQFp+t@>Z6NJtZ-0RFe|^T6dzW>I@StXfS;h#5QUL= zj{NF`B4R$sB^pzsVU z;TJ5oj*I>ze}?CD_bJK!7V1AM9ZhnwH*&T&9xR&c6O+YlB#PRk#3*~c{dOINq2Ns! zwF@%nFL^VxW^by836A1NOs4o*%}BG9&d8fK`NOcB!dn|O-3awpfxhnXnn(4ogn{D03Iyw&Dn1zI_e!6sdIQAdz|kOkWc!?&fZp zmK+x97KSu{wT8K`1(%uVdOW@KIRk3Bc&t(i6{HQq_kO!!c#Luas_QP8pGl&!18BU@ zQdBJeGy_F=(f7Feg%gT?3@ey{gCu37&O**JOJ}6A6klqy%xub6=V<)QpOQPBkRTJO ze^aTsSF4nABO$!*Hwo8USfd2mrs_lVVJ{R_^KWh;zIvL@OY_MdCD zqJFLpsdXfCRuh{>ps5+6{TaWW3GxxL-;|mzvxEoNj?d3~gpbg3Cuz>v$tq?ZT|DVk zJ<2BibU)vkd&cPohKkRZ&!CFF;%|!Rlkz~1D9>k0l_Dk%fxF2vx1SA9W6inBDRq&4MBIUfF_WKOn7e?xS}n$VT;)tqVb zlcsFo!g8J2Uj2};xBL`svNV{lbXC=V_Go0ZLule~f4^~M7xRYinYY{I#&RE1rGtm< z`e3!KF$;Gz_o2U&S%lwU2MCkA$yo42!9Ym$BQw*%9r6Od>MZnu7A8ZMWH<){$kNN- z!#;wE@~z0o{b$IZ9&uBc+`UB2?=IU!j71y4+NBZ-%WTDrDBOf75|at`)v)bJQke zVfl=M*sUG&;^Ae0tXQ%+YEb1u7{iKoldnNV$0eFpxDJ6r4@|`2lp@q@@v2ya?9MaD zpI*A0pAe_P+apn*YxvCff``8b_G@=D>W_2da>-E)fDXf zrlPTIdgEk@gR$aVR>rf-JozlK8nk*JC|j{hbd!uxu*p*8P#OkgTWiGrbQM3CVZnlO zp2;*tJ;z!A`U)q>@2SzM^i7VR@mB&~KW&=gs!y3Y`MGaSMrzbT0ZAP`oIm*}`6cfx zLF(vy*a0ho+S>qp^gRF7>s++SzXuD$taqKgkd;^t>oTnK_q`M9coX;hx7MvFA&5yC zt@j3PG(})GH@c-3Ul>0@`<5hN|7uq$Mg+dH0iYhIa;-UaF!wG$&y&0UK3+G5z7Eu{hViG3&<^ZZpx$=R=} zVle=#ILciyT1!z^KBy>F4j%v}J4sL61F?}){GKUCnRHTxYTrSQMC6K=pMro<#8g%O zYJuA}BZzWD^0h7!v$>>tFsO)?X42nYe*k5X(piQ`1H{@V{`Wj>7jv7Gxsom&tWm0y zRP29U$F<%6aiF{K-#?f^mD8zAbN>6GAfuy5J;2I@$f|~0IODY=n1>H(q^dl<0uI4C zf+j;oEw*9M(K<=Lt~I47i5Lm#iRBsm!@k^+b5BIyiY8_;&0lm;_mrP?mbbNPEw(?m zQ(4*cX@pD%j(*-MlmhkWF&PJ~ryGacuYe6(OdfY!R(L){g24404KzNyS$C7`e}x&# zFwy&PObp1$_zA0a`xiNnll|}+zg?{_<(H6VbOsZoM^sCR-7Z|K5vgDJORCzZRNfikuT}xx5Oy#0uB%^ z;DM5hHDJS($s-_@iY;4g!3*;ikUTGt<;$)+2#ow`D0=GtJS{TkPZJReu zNQtx<%~YapeJ1|fsmqALFrj^W?CH!o(N9x|6gb{A6)`f@m1|Zt5$NfQ|AQ6j)h@7_`3tHouRobZZ zQ%6KHYL+tQ0oHP|h!-&Yv&8!Y5B9f9D;U?i({Py75Ocay{ZT z?7vuea?6~UC;uCe%^{Lon8`GtI*~Ue8c16}(Y-+<%*^#w1Ad{acHM;dv!!Pu*NF`){|}@_nxeId#^RYHmX@Q^f$qZqcpET@ z(u(9zo>*ysgtIk1>J!(I9RGM7D72I?p|y)xSFW29EL68^<^FbiF@q0yK|SkZWa$rVs%X4y)f zggrh+av871(s2#Z^`&tLN0gk zvacJPOv}&fmm~QrsGrz?@(g$~3P#qSoraI!8_`69oUj{Lh&vQDEf<bgq!n=)TBm*n zBo46&qtXcrBH62ca6p#uF3RW;kK}$Lh*pJx*sIE@a`8(#)>a!?c>m?~9fgCIoX*la zc*%)cpxh(Yd2~k)l~@{|c%?31bT>BHr0(I-@3WejQyz*855s9n4yRMl zz5&9?xh|+z_XsYT3`DOm>1`}BEklx3BjSgib*0a)wfyt@lkYhCF`@qRfz6rdt1G6X zIx7_;e7jjr1(kW!c*rlV ze>}Y|jB_@22yMx;^=tT0n+o9G@R5}MXQ8x#6hqh*Jyi}n$6!e*X|=hzM|V5iv%F(_J+-jvWk@$eHSUR*+BABh zem)%1{dki~R2pccCH13;JnEdQ5n->zh3HYT3q>I^8I&GUa%=w}_lJI#Bd#ithWQXli}f;1Nt%r; zH+f?wKv6*?8N^a}edBzDGLxHBAbP_7Ob3UKa_*rY5?IWl?}raDv5mX0lpTOQjuZWj zC}c`4M_ZhG72{R!vWcOrv-g_zYQ8pt)HK4^6ii+={(E6F9q7r=j?62>DYGc{17y0; zy_1s>V1D^Z6YO526qxty9Ihh(f$>T6%tytu7M0V>ba=r7}`89yF zzjHTVLe1}or{c}wVD4+4teHiQh);~>d|K@G)Ycxyrxf#cdQg0j<=Nci=!($9o^w)Q z0$U6Nl;Zi4zL>y_cOmYFrlWI598SmfAyh&w7N^%PRqA5s=LEg+gw|wO>~R@Q#Js7- zYkE_2W_yE{w-G${aK2nD%e>F6ofjg=p=X8M&0t#y0QxWxPAtm`6`0V6?hfb^r^H)+(Q><9j~HADL9|Q+Qvud=G^A&wKA+yXm1S zSQ9ZI0gZ?)xYjBIi?WPkYEE72{zjW~wWl3SjdEvk+(0<))nsbBvT|v#JB@M%xT`mv zP5LX`{&F_d;4S%9#Cp1htBa#ema@U4*sElzAJekYf7zn%VD1;y#ixK|&zp>5V%|#3 zqL!mX2vY^B_e6(x(!s6-#E3b}y}$;%%wB6FB;u?|)jVpLIi%mU;hrEb^cXg2cmb}t zolh@0dG9`R6SbePM~b?d<$gJ{nI)HHtEgs|bdkZ0%ngGP6;`ssouK1?H)99cvn_hV zpke~;r^-rc>=o06(8O}sqN-m_pQ?KlMjTRQ1O3d?qO$=1KLEfZsT;)gDP@n_egSE) z=&UT$^vqFnRns-0GUz*oE1w>1G%`_hPpcb^=S&Ay66L3 zd#B=AMRpXAk($+_O39WOQ}@s)ip(OG*noUGAD+$}4>23Z=!J?@*U?<-!S)DpwIezR z)i8UBF*Slt9OTh+r++*}`8rn~gs*TubV6%j{k0ht$5?5mFILw`QPr=xxaUt-H341! zG^KK?rd7(ICYY6tKi6+*@{3{9hAt?p$*2*CWm+<=<;+Rcw&oKSim&Od64ey^dAB}9 zz98WzqhaeJkxw>*KimYzaZ8y>kEa_$8&aJ&WSKdZ>WQw{Q~3olsGr#CUsv$P!w14} znMdQkXjOG6Els8|-JCrAnK#~xmpF}Ef+x7?@Ug06ae2TQ-r$g9N7q%~(gG|d zm2#UOF?G=6e8}?#I_|a~HKOv-2C-=V{KBBf2A2VlJKaR{Y(^Y)dr|g|^Kd%5g^$-F( z^MOc@e3>9cC@Idwoe}zwEXO?Y4}XvRFVOK%sgtz4=ezpI_7BcbWgmOZiy59!P>CLx3mSb{qy~ty9BM^yOc!ajCW)JRwUyBL}D$Um}_>iY7Vu_dwDhyT%N z?n|E2LG@UN6r0OQ)}{Es&GPEl8HBL4=BeoL|2}X<&h0uThUng-Duz z#)X)Qpud$T+*F`1M~3rqPe(IA%RSJV9tL564M1(ksZ;QAQma_(d!HJ zKpD_9k;wxVr*qPL)+@|yfnVHZRLSFVU8d7;G)qF35-0*4Rh|9EU4Vmc&quY1&Uwlr z9=OkFSVYtO!4xYOhDlAPv(yC*v+)$Q!eci4Nq}dnH2p`iS=kA^kAP+3--sc zz46%&?i&splK0RIfrRw$G8*-2hMX|JEf?z4uOu;h1y>)$Kyx-xs2=DI4dzW9@i?Q& zQH8snu=){vah03zsMR3C1WA78F>Jhx!VT2&z-=7U|g{I|`C7~)vEfQ*VtjQkkwO3g-?v53@XtQj_NvL0gODH>kS z_Jh<#?&?XTZ<*;$x!Q;}P(YBzIv}xH7I@iLX+Rjh6P1bLw@)p0^;O`SJcvx)I#8n= z;=#5X57YKXTR0(#(bjPvgF8FpF?Wy`H;|yz$3P(h4)+$tg^PjuvmFN`e)B>n_EF6q zJ+_g|@GDiV)5yp_`Ezdx*F9yN3?^V;isV&|5ba0e-vKC$X6~hm-BV@+0n@SB-qcD) z1(1V_G37lv3+&i*AVT^e&gCDk)f(pkkx)ETT8-HcUv*-^djK&R-8sQr)sdKB0dr>09mLwLYp3Q1P z{r6nSFCg$6@7|myt!&0LErIVq`I^95hqHj~Bx_p`2yKwUCX2sJh-y{j57CB_tHMH& z{<-2V_bV0M>S3AfrLEHXm^A1qb`{7RS%M~H=QKjrTC@i@UMC zs=XM(HkZEAR7%_j<-8`qv_;CpJ`P|dDgWzxGfr@>Jop|okOaWzu6#J2_7HXpjYLl$auLZKw(YjG%)h83N4@_?(E96X5`4ZyIN!U(HsSf=hXx$hkb`TGM#iW(O_ zmENtC22+%H;&tO%%#}pO#TKxafraVb>JW7Uxdz?$*4pD*Kb(YNyvmv16 zZR47D?Hj}0iJSXQg67!1mqG&$Hl*a%S;NciUmWwA(F3l3urLHSkWpZF$|XE}Oi(N* zv0VJ;L$Gp`2aXhnpfT`auAc8plOHJ@-ANnlPH#?)99_2puL$t|GE%gU31M%+*xf1ghl!`l1m?qVVPa#J9=msmE@FE3Wy zy|er^b5W4`b`8rJ@E$(@5Fmnp?#5iqdcRpS&tP<6672*hv_BiPKs~3DhM!N~i@vr$ z^xGjtxT*-;XTxTVKAb4|`pA*)({7$#w@a59o+g4H&)?K~yS>bYkF1a|=*~HX?Lhy! zZ5$0!K*Ksqt({w9oErU^k;EjfNM%J5=c4wCiw_iR$MX3a-2IrC576OqT2CstQ3Q_|Hp zN66Ux3kIi@q!g1k6ZfT&Z;{?lw4+Kn2v8b$zx%iNfTw+jB zciiZ$^DARt-0`En^$6##J|@?qjL@5R_iwvyD5~vzF4CArs_V7-6>rGoTIcsM@&z{@ zd+s*A9>TG(&_5L|&*2>HYMf_uVkjpA?S#|_HUD!Bm^{|4_B(M7K!y?;RaJ^wIN2ax z^6QGxAr|RWbJ-eTIBxAKVc+nL^Kqv?_f$CWpRL-{JH)2nFuY#x`g+upq$|Bup@Bso zOs{E64-Ot&b5D*J{2cJMu0akg=lkd##kQyh%|?2uNEgh@GP6M6ag`}KdPyB ziw4~i0(d-oHzRlVlmBY#IL{P7SDgC;h#sI)EfYaWgL;P4+m z(SJr|9aJNtC6uUUX|E-5l<80)J+x9fk-qoG<%j4qd~1)$fAkYTHWvk!@BV}Pi zCwIExx@-0RviBk=bgRxqWDFXHaJDExb-K0(SYXA=ga__Mnx)RgFefbJotjLsRjJT| zv3e^un4Je4RGcx8_V#j2B*ZF%o@!_`Gb7cMij^GKg6eVqJnk8>I)6|Bw{u&tlv(FZ z*cj50izHYT7q$T9&I*&x!+?{o8d~R`XLjN?vRq+o?O>C|!OGtn^b-0`Lzy?PpVaDS zAKG-TB-p>D=D>VLAMT9P4eqtEspM9B>mP0&hoa92_w2=r)K^#{s2;5c!l1CkTpuoJ z(Ed30`o*%TY?N9xU&7V}$#T^4SacEjzO!f&Wrn>3r{I{Cb~RDzi84B=s!?zzyV_8M zZmL*nNtszAl^}&JPc&MH9+S)>_QYMHeXBF6x3z5 zQW|mqI2DN9@7Wp=wVhm2xSN$TJ=NNiB2SKsiX*8@Pa@KBIJ^}Temt%;!SmxA2=yr) z`_E&6u}(djOr`u3>X=u9Sbz&ypyqk&oh>{0_}h$GC+ z?!YbGV2?MHc$rI@oSl)z_EN92!Z$yiLd~@ENhpUr%VyzP{0E1rNm`XXYSwVQHzFz6 zwQ00shW%m~EcZtgz4fjm%DnEV>g8N+Tk3#sKa?t}`@|w&{@95*KSRgs?ZY29wAxFJ zypj)E=-vxFK+=DKr}KTS4dh{zDH|MN4Z+Od&1#Fx#9+WM^x!d!#IL3T>Jb&+q1n#L zxw>9Eqzrl7;@w&y{kXOTM;|;SJSy(E}FHf_ervzJ zy@A0H1j=Zfa;AHrnIZk^Bl9Wm=JlPOPwCQM@u<>Vn>RkX5oQHMzczM{z_g zajS2|kQ~eGlQUH~zGx})DMtX&^0O0aRXMPoiMVkxSPqt0bXRKVt(hXRLrRmWFnPzc zkvf3_(Z;GK_SFsfMyxqGY7CO}M_J%=&Hbw?P-6D-&ntXCUv>V0?t!St_)D?(7&s0o zK~w^Tlu{irp|33A1pn21q-4RlfvK~3T5l-JSw)`JBh#q4LFSP3!&dhu5}xNR9-#ol zWlo<4mDEZ+Fvz>d&Iu?-y*l*XLCLW!QY~KYHN{h~5-OAHv=4R+(WJWJGmwyNA5ucr z#Qe+UQ;HzZr7Xj}=Hh~7_;VERpv^PF`NzvdC+Od(5-}m39?be^#}k&nPZX!on(!~T z2o8?>$KC4;>TK0%B!B>fpwaS~^u$XDrP|l(mIap!t}82ZqJ4DwQQAx2hD<$*md6K; z?e{HXT4dxznCx*r28^LWv|+eLS2&)IfoS-fmjJL89nQx@)7F5-^xs+-l6s;qDa;60dpY6 zOdG)X!u%{qJigAS2uW>@rsOLIyRdidiSEoFY!)85g_WFEwE-R*T3ZZ!jC+(H3%(6v z$_zHpx71W*2qMA#&NS?ubmDI+x5CFV-)#`X8z!01V1gFP`;*)>B8F0nz^PFi3nb$o zgWM4UQE=EPWIBNxI#BS`nGTQ0D{Ex~=l+gY5hAPhm?mnL9wikjq1sDkO`H`|lgF}X zme|+nka!@48{LTowFpK9(8h$Zq|2AXyz1r0BC-b1Ss8k=!^x7chJ%%Tkuh$RmrCNc;RX)9T(34*s_s7^5a^=A& zS;PKWDOO%)k}Yer;>&%t3B24H7GB4VWupnbzbGkwrgSpjq95Pu#d++;LXWM!R&IPU z9&WbvO1+O!4ynZtFRD@KS#i|^0L#f>n`@iY0+LZo1?eP&7r4BdB_XDudO%pZ55QCC z&ARTezqc`yzXnTs-lY-ZM<>crT%@53$AA~(zun?DjqF&73)Ccd9NWeamaumHPnLjUUpY`hV^|9;9nI z>NtDDyA2s{9+~{$sQ%Mq7Qw2_q7bRO+%YttO(f*ci+w`!X*>waNebsv-VPa7lV~YY zDr7j^A<4!=3)N>?u%8J%RXEC6sB*wd_b1}xN*Zg3!ZBriiUVq}ha9Vn{(`BHAMJ}{P958W6kVFEsMY-FU zFcN=S%@oC!erD`TzVsQD2HpP|YP)GpSxg1bB4JN&YJoVNu#j$~IO}`cTno*!ao@!( zF65hIE>YD|kVw~%CUGDw%R!#>m~*{&VLr?)$o!mh20U?&ckD4Dialup4ZLlX;2Lyw z?TNY){1>{!a2mBVOk3mh!$blC;m?Xvj%F1^te}F)r$wG*AM@MB!8B zOIqXTI90L4dU+gU! z%@?uX#lvXDf9r8UTtIyyQSr=1fKQ9U9~Oy0QSoPQl}CeyZ_e?dwl0DWD$=@G!JUnQotfXp)B)UgWOseMsxFuCNm z(`F5i@nCjc?F{>a_cLp3u0W~Ar{uE^AZMCT!?i~*$+dJ;`6j+1m`RypZiD2DvI zoV{GtauUA3XR!Jp)1<=BJGl&S&BiyQ4&kGVq=QX5LeI%x%bxh0k0D5B*Gv~tm&LXg zMY&}9zUz--Zh5dsKF}JC+m%qM7DK)#;u+EULqtiLE6VN>kr(k@>d-*LuCaiO(=_2RA^ieet)}ScA zfPrbCR5(!Zaxa}+`b}6+9z4d6MTsLKvKY`4npN4}9S?1&rsF+>lg?g~*J7BCS#v;C z7K>|+wEcFwrKg;Umac*X_JZ8yq3g#U!QhMOkB5y0?kv<|D!D9zIFvV+! z7i4}}p1fH+S|>H!_%Di6qjCmFDt-!?U!`KQ8d)t>6M8dgdd9>t=mULudV>vZApdb)oO zHP4X8W}~|bl1|C1;Cw-^>w*vOz7dIFJDx?Aoz63`51S&Q@DM9ST`I?lU&Gh*f0RO> zV5i>CSExieH0S#*=RlzDId^;F+J7-Y?JpC3?1ACDtxBy;TPzJSALKp0zJFo%Sw9L7 z3wdz+5WPDkj70*o2hI}BVjYu8Ti;y`VD*|whZw0JcFOgez;=gt&#XHKH9w1D4X`3; zNH}b`?>^Iuahq>K=UwwN(VaL|)1UEKC~pI~a4q&LS$(~FRjnMnEKE{`Fd{c67;e?T zT*BH);STLnP@0F-P2Z6yKjn!#{|3e9J`XM5E8*;wNUD6n@EG9+wHhf&?f)JEdHw8VIb-GGptdX4P6+8Ri> zgYwk8X3>JgjPpSz99>YeM^BtEtCljfd6&VRC<(@WSN!ncVP$Khu{7b<@9qMJGQ8^T z^Q!negl;Q@^OUfu`fH+qJs(P>Lwd&Jwe@&xvO=AgiV7=hdo7YbfcandNH#^goH5!l z)S@n6Qvl&5J8h~#f8lW-Ga1}TpWeDt`pN1}IFF&|GRW3>Apzivsd2nW{Ud$$tuxqF#sh#*->7-@+_g51?VBvoEghxK~__lP|p4H;x$+3 z-J#Cfe&@)_muVLH>8*7YA@9Xh4vE1P-a;6hs(PV%%azFAU8xN&mP`>n+_e-}HxX97 zpYmRD>M!w0S$d{1HM8e$4J&DJeXpgJNN@KGak#ba*MuM#T`|6g$N>4#N&yo~VBM@} zRGNc%utPgl-%1xEwZrF&@zS3;<>(NpsP1JlF}RU4E-WZ^=cL=lJ=w?r2N_lbtLT@0 zB3@s_Mu9aRcY*gbDMg)%Eef|p-f@KLt`e)s0>@U))_mP~D%3N*EsMV*sw5C?L9a%I z2i{5C$zXBGh^_lkF`c9S^J{rHx8dR2Bjs?B^HNE?L{E)jA+=OgYUg&*S5ILd8QNZ7 zR{vCy1>6ZbK}t3@yme?VQ%QyjN})VN;h4HlceT_*pJa_siDUycNs45TdwH5$rOmqB z?*$VwU@|u4o-Ma4xuAO5GB6nFtb$p;8;h*9ItMM*Bc}~uiyq;{N;21WNL{TI@p z5F2J*H~qC5H|LYIlaU)uVGn5Z5~1n?nM!Dj@`#PH#0!a}eM_Ll32wtScsT8V1opW|>PWAF7BZ~bN zanQ(#pK`8!<(2z@_7Kg?gR!lk;OigCZx@n!7u^hNr*Ctpt2LHj7qM1+7<_0R{k422j4(l^ld-7g6d@UKxk z0YvN?z<68}gNQ>jN_ls4WWc2}|RXbM0E`BkU@7N!49d)Zd(pj`lHo z7N^iif8gLRiM@plY1sptz0Hz+XWs5`y4&)v>sZNg8vd|R{Y_v9)pQIiC?Rut8Y@}2 z{&7K2V`&g{gRNUcRN*qq<3Nz#k50VJ+nU@FtM50$!TG-HBo&@s6g`K?T#?XOwG70J zk3mCAhoonNaQfR@XF@Gk@dhfnlTfF3ITl?*hw%U_HW`OD5OgM6mZcMbuPdT*nGmXW zR_((TI!&=b7EwC`bU5!qukU*rSwU#dFTFy^`&wl7o4joCWP945x>y-rVrWk=hazfZFNex zz${HCEiAEZ@F|r*>+oC#0axOsRk&9M*YU^UYP42zjt73W-8!7LXJRkR=VmqO9gQW}C8$Bs z$!Cj8evlLvQIvIQv*ov%ps+VsO{kKhLQEz&V^q4Hn|C)3i9kuptkUU^k?tMB? zH5BS2<8#m7VLy+w*iY4Y^=qsYT(qB$(Bcb@FLfw|vxWZ3M#h`|U%g`hlmGcysp)>R zs6W(eq9kclKvUhGjKAcDw5hh491dEuVP(0LMA*CH9?*Q>s4TdUgHM zcvAT?zx0h%)G@4(5Q*U;uxePA>pGukQZ+d+vM7KV6hHWQ8lCGwP@I!cAA0tFL4}>5 z&18yXLnr)7`ZcwrR3nsf&c)s zRs8*PTyeqws!$RX`1Z}*h(>K88F*82X}JoVc`qglb<)7f;jAydJ|ZKgDgMGqhgw8p z9_NZ6@28=$T}{n)E!Zt|#Jl(`Z|tYbZR5?%lYDvAo29+aEP2K$KZ=KLOZ4bsx@c~e z>4S_2>+@tG(go`oTnia8co+m?2lj?4SD8V=v*e6}JUgg(66as#TK5+!wq9|T> zFiM%EC_Rv?jp{YCxh8Zr?K5pkduTjx6&qWf8p7@Aa9vw{KUGcDcNjxdb=~)O!Ba{4 zfL^JkE_2!0>t>KbJzd_y#Nb{sF8x^Obl2lv2La_N60Zg$3kJgBtYqgEX~i^;WHjG* z_G?ZvCftGRHx6agvm8RO0*H8iz_u{1$S4B7L^K+XxPW$1UQJbo3nEJ__76xEa>U!0 z=%l~inKX!2qQc(`7mfSaV2Bk5-k=^K4D#J%fle%DowWk+cOH-haE1fcSp@u7n3$WL zs1gt7JH5o;-_yt%eK(goA;FpD@1B|rl4M=G>}0nqY;072MKB)EEE6Om(+w15*P~jt zd2st`s{F2+c0@CBgW&@Mq%is-o|T-jJKh{5F|}fYtrx3vYaId&7tUT$thOtnt-Oni zI|bLDx|*wBA@jXfNC7S=d!Ean*wcK>!2mvp|3o)?m3@*V1O_Lr_@`C5H`d{rb=3?L z!ET*yi+fwtgX-WvbicTT4A4%Gw!VAAX`X7o{mlGEC3j_#;xwh7!bic1^EwjheaEHv z7rN8&GnAao(`_(i+fX+JP_s{O!-C=h<)bb!#y#GND$O)AdtkNd0-6v7O5!Zp{XF0| zn)a_ry8dR4_=#RHvBMX&N))>K>&C8s>v`#&wh7#bTX81kKeH>&t=k)%W)`1J7>H2f z*NO5y5E)1=!Op>40uSEVo3Nmtr|PlI|H`3Def_d<-MY06JMAY9?5i&R2FF$c6mLw( z3ruN)5je4_&I%&IMJcb?h@z%`bbhFz#;8e68k56o>dR|v?IKQmNhcZ{SvXS%%b1Cd zAZaL-a1NdiNH559bP3!oo+MYIc(4Ow_hu#8LA!HdsTj*OAj_K%S@yZvOR{NqElhTV zYQOfLvupG+*rNS(mpsPJo{}_Y>~Vcng)ULWPU+NAQ&7~SH}+eXtr*NLbcbiJEe|`D zF<+*K9*T$KH(?x+0H>c_hpwD)q>L)5pZ2NMKGED}K>jiZa77X*4RH!=vAwj##04Oi zbQGkbbvG%zrZbT#y4(R`<0wEP(yx#Ac(N2T zm=nZ|B0UPDkqPGVu01g4{t3h9wb-57dvQCZyrhQ6ARxSkt7C_91LTlZXhCU`hV|Md zW?DWst4V3;>y}M)3lLnv)}&;Vgc1dCikroB7U}%4f%;3htld zt#>pXkQ+Xn83fDrfM#-6Gu?&z6ZTDu3pLH$X~;D`xWL-zol43RN+unAbM(sY+Hv55 zWqAs0k(bYJp*FD5<74^teB6cN;Ao6_V>VYXuAQZS7eTKi^V04+%^Z8iI$_g9T|HId z1vIYy6jEJ3(0aRFf1vId@4LfftnLK7(Tw-#&X&i(vM zH`a}o?-S;nJ(EQJ$dHnM7P zDb8u?3l>Ufg7NFfopxXOS!OQrUO$DgYXBTQDu)3atPhvutOF-bBKVf`WNuK~ZGQ7w zkiFG2{4NoDPG7>BlVdU;E&v4#D=5M5+IQE;Q?j z(A>j(<5Y&Zw1i~RCAVDSo76zWe?yq88qBI>#eJyGG0&5Qx!sz#b8AgI+^5xq_JkSza2sile2tmFaAy5|Rw7(*RsZg7eScMX<4Jt)ii+Bm0NZBjT&f4HR|y>d zhkQ<+EwkHAjWE`{NtIE+L-~ajq9$NGK8}Y#Mgu8?#eKC8?P3>}*%P&cef?lg(=rkF zS%k^c0$Dn%!$H0P-tLE$I}AYFTo=#882Kibj;5Vo8mH(gVIke{%%a3?78#M{(ih>3 z?po@uY{tywR7l!V$S~~8HV08Wn)|Mk)H`B?fKD!i+`++)Zg3Lga@FY=$2x6M9QOL8 zAeTA0>MaOvJ|S0#q`T=1GPaeqPoQX0-S5izNKtI+njL#r0BY-|go!Jd`I97UfI%*$ z3rg;2Qn9z9s5xDBLQ}#OH}$>Ad3y^J5S=QrtIJkb`1YR!Db&QEA zO@Z02>qp0;<6YpA4>$c?Z@LCg>l`scLGs|Qw$YyBl>R9|LSW2G>&m7x>oM=SPPH}| zs>1NJ)MV_uUwaQrC%B~t)+UTZ*E&VP(mHq(RV$>fCKCGGhAkat?g|Vm-6$|x-k~#v z^qg0hpnJhix^BrW?@=Nxhz$H2*xge!!Rnh~?u6$8r?ihjmAZy zd5d3J0Ob*b+#4obxnXC#=g^+pRVJNUol&QgEB}|i?`mK)jcU+5+ z!>gAP4Hesq$RI4GMilXI!mH>X)eJ(q|G@R#|0h04g&}IYd!$%pVr=1_N^5BnD^~)^ z6bkqgg*?=PH*vRz!>Q5{ z6QcK1Tl$%}Km~}PPFprcF#}=CMG-i)9f!D5V~!Lomw;(kbmAyob~Y8?jV|v1l}Q8; zpgj_q&YiPiVUJOjt$6=YX&x4xqK?xys(6t+yEL0*2&iBjBC=gZ~(x((VBlC!hM?=4v1L{pLdv!@SJdvZGS2Z+W>M!rd9phDo=Oa+c z-K==?J#N9>_oO}GKUuE3OPIX&@NBf@CI%;4sfay%-Qi=JK=68b49$+@{0R{})?IzR zJnFRrM5Z0WHY8M6o7%fUB!Bc@#rTy?i$@&cW7^bb2tO#~T3hWG#cECUxTdP zl4sykR$+mOis=Pb%zplI9a! zm{Pp`FSFEyw!T2vod#UzCSfn7p*qZe(Y{^wXylg?Dl?|jPLmK(qDwpNHVuyj6BB1% ziN|dt(SesHi%S(W_FcdZ?uxP7Pmzf*iz>{u&aHyn5`EMXx`M}V#iDXBgx&$QS%G~I~73G%!o5BvBDH<(y9%UM@^51 z|0|kNR)K}laW`*Uiz0SyG&ueqn~yx4EJ!1Pw%YnZz*_3hp32({rm&2?6s1v?2Cdqu z8XFf_okgsH+RmGhr&xL<33oVFyp6Lk(ry^=K$fNa5RQ~TYDSitvsGaPv^sEZxPM5- zvPkg(@;m(RlARgGc}?o2Yk@E}6NZIH@s*=r{g(CX-&;J>pzr4&hhSvyFHV2+@?z|3 zU{q!@oyRO5ZJn|9Qxx#3Pzilgotg}FIvy*d7`%;nY_KbSkv_Mm&A5#a!8y2r-P*&& zXap}5$|t1$)QDbjgIn-rL*HENCeenln4eZ{ zghgre8H1>~q;gRp_B=ijS*7|U3P_iQRGyh0%#-9-Pr%oxf?kmuw9BNB1G9Sp=4OH1 zF|m9&QwjQPbTwKgzGn$54mDdAei^=cFXRnbT95ZKB3-^)A>)d!?OFzL4jgk4mK_-x zCg)Bp3TW!Hdqdf|Cdy9?@>J-2$((TQ4}V3FYCJ@Ko!lGrifL2i2rT(XbdG^V4Nc|K z!4#r?GKY)p)Y~IUw`%cl>8`IopB5vJk=Cr_pYf3k&1fJsQK-C`N={-#IXS@d^5rIh z8N!KR;C$|bs^)D%cl!%(BgB)|LM7(H$)gd3oSqnM=v(6yaabH_*F(2wQ-495O^T55 zCX4ex{`|$H*Adc_3xy|aXgth@n!l;L4thRtl04uCbxHAdE_PxrvXo+(&&xpVxX9uk zPH+kCb(T5j@3yNa`_;@|+bjN3Zbq(>Gn!c$&JDHjV~TZKa7@wE!>}8F`R<7Htu?-> zYcMEXF4gBLfP$w`H7GLy4~guzGW~R@9;aELAN>hB4v@BOz?D6F*gj9!R_5}zip$De z{MEk2xVVMaVSu;{P!D~Kss-QQu;cG`$Ld0Y=H>4yNa8iO@U?$j7T?oX zB7Tx*aR1LVq_i}ToF3MBgMSD+*!W2B5yjF$_nc(d-l23K#&G_)od=P488OhnH(3SJ9rwSl91Jh@1zQYw@=?2sT81}Jr=lT5#k|j5? z-01s=9coOo>4Iw+fB=zvq#}ddGBu1Nvy)DM_`wdPvvMIPk5((HbG-MG@U5&bD>8N~ z8avqTxT6_S)cE#zWOE1yCei;#xrnNQN9A`HnX?3@De-B=>Y zq|F+2dqX9B*rCgv1*&7+^xoZ2xj0+(Op@8=Fb;M?Zvs#pEb^F5o)B;AV1f^vN>&hi zTq$;(ePC%L&yh(i_pgP2|ADfHfgQZ|$z<#jP#Q$YTEvYu<~YuIVsE39-v*6r znKTLG!7D*lbgR>jNx4N7$N)*-yl0=Axi^pM_5wk6*1z8s==jcAgrw(eL-{^yS@J|2 zfSk)`0`kQhX}}@a=mRnT31R$LNX(4VKKXe^8M&z;sL&SMB^@~%?+*;~+Z5A=XcQ*) zVxHMDHvyLo^_;-m*YCbUQeHXId*0MAS^#8~mI){k_f{f-j^95MVzyVCUWQcI_BDif znHwMa)emlBgO^t#_)!X(Ck#;5vcjjqaVD8>J+sE`+9$G1#PafaW8Bwvt zJbe)%b+7BNRB53;w|UN_xGrJYf9+R+ zUhf%!yhW{V5jB$cqP=%~34qM3g1!BTe1EKmL061|0@ZA6Gjx0*^?S4D^A(3qL1+*; zBtkWcN{|SQX{I_Wt?byBz)g(LX7b);2eraIrB-f2mwmfb+@MN|F6f^(1kC>(0#(g=kpSn|l;(^4v0xeU4Q3+W}oqoNF2))Z*m~d(RDL-xW2c;gyw`s_v?!#DF(N zGB&>#ELeg`ftko26Y(EZ1^{!;)wO*6`~s!E7}&{4+8HqQn~@RO$zU zu6W`jESdx$OGxKqcXj;#^6O+x=YN*q3S_ViA>+c*LB79@*U^XFgLd56ia_0^D(xCh zCKM0l4-ZmvAHOJvJ|t2yLm2%@3s&5psPKC+^DPU>Avb2Q!N|8b3j?^ zu13Ys%t;K(5cp5knG0&G3$ri&wzFmJxstQvcf?1OnUc6v(A>ij&Wa0KiQ4il7D(>F z!kw5IZ7$7E>pJYmZYlWtW<81PgFu{|+t8vVcACXqmC%2U~nuv(DeE+TCPMSc2 zq(LPZ#!=F?vW35pVyr0%=P$GQ4_qy?E4!vLl|1;9)eHkbtlKk-?=brx5u1L&!_D9b ziWuP3BGV05SK_bgTKv}jmU(POZQ3eM+X{CaWEw->AHO3IsZ7Fm?d%fucUlPb0)Rz_ zbGgB!IgIT-qObDZwHuW=^s54OW?e{;D@;2ZE6WO^-=_@Tz@W?xN&8^5O2Rqyb2w|G zF9WZY1;w~^-zP`x{53v?hS2Rg!t1A#@2ax};%vPM07+~rKYN>;so^t_-|*jqG{){a zCbd3Aw&PHQ&ho17Sg6#?mLC$^6b-n2Y&iVXil!Q5V>}w=4&VH+4(12K(B?r!#q_f; zeY~;h=c5oR^)R1{z*~#CVTcO6@gOv6@N2_}onL_$5U6eHcDZa2-=NK`hz?!<7MrBb zq;^$qjCvx`qqjmF9e!Q<8fb4YmGj)A@%}tvc~w$gLCVa7*8R%r{D(1?BZncV;($W z>9S@x&CXtRKw0pf$J&v|>2Fp~Odv`*Wn^%dEE~gM45sgo;+@1e)?DQsfS}9JH>(^v z9yO2s`!n5jn!Yr@YzBN~$dd(d(qD`@1#S%CH7J%`uocqA2ul8FRyaQ12zcPbot7F} z0s5goA3#2KC(IQdU3ui14a`>dW3LXwN$2Xl&$NFQyxY2XzRr|a#ei8>7gv&xN%r9+ z^)dQx1o@Z)tBKw?3`%{9_T1To(Uzw-80p@Z1tG@j_A+L~QM^ku*n{TYOaJZg)+?^X z<#y<@D2k{N2)SeRB@bUvG}Gj_USbm#)_Hx(G%4?(HVQV-;(|ytx=kfWy5>3xST%Db zO<>9wJICe@Vlj-|wT@4yi(5*V{_{>`0F3i}Zc1XMZ+VHb(!pU> zl85KJbczT6TPWUu<7t+}F4auzQwf(0;_=A3Vk)~tU#hM)uDMolTu{S$VZ79D<~>a+ zOG0e%zt?_LzP!?ogZLT`2I1{yiyq-moNd+{fJB5)ZpXEnt_#t}>n4SwA6PB`aQ7+$ z6#lYKG_V=HT`=sFS5Nyy1~_nfCp zB%QWvjm3!teN4{+7m~pcdyq13%SWoTZKT>nq6I0s)YIL?O`G-m!cWhnG`Ffbv3DU5 zQ|JBVN%JXFI$wchM8aS;!NH#3Ba6uNo+xbeELuj=ffI zc&kp83Pqbm1**?1~o7rrcKPPeu}Rj+kGQbmTYTfPwyN_6s?`u1AwPsV4D+w0@wSg>}%ZR@r?0V z%@wX%D())xE113y=&r=O7#Buv0IqDEK2^wo34K`}8>N1%o8^3ewf0H5=&(AT$sU;<-#Rqg~p(Fqq#LvaDJK1!W?lLu9^=AD-d$`xpM80Ae-VcY};Y=Aft zm$Ol38=B*-dL_HIU`Q8NdN$7?e;f#=0+!TSjdpxtuWv3ikYCXj@-a zm<)LzT`=R(1)h*C0d(5%A+~E+`3!3#S4R3p8c((TM;p@^4cY%)VYwXnm9~Hxhvop~ z?J)P8*?FiVJfUZL);Y-19{%34_Hp7nW#QB?)oR9=!ifQj=;$1nz+2^ zU{1;%EvFh46PQrlguy>Qw+f^JRe;ko?2SRj2e&1CDvDx_>QY-di~yHg3xWQZ35Hf@ z%SyJCW>M_SDTu?E-dscEVG4mn^Ym74{EYJGH_R`tYyB#4Uf{p>6B?fR^aaxlniYm@ zpaL}$4OMc_`?x>g6QZF`KJ4e6+R{u81Ly$50isRmUvNdT4pWl{VBH+!oxyyEu7aB`leO)T$V{k{B+ZYV!$ z7h%Nkx6cRIJ(rf(-TJOz?k_UyN?r-Kce(=0;w!Oo>x7P11uz5QCQKf(hJg+u8T12v z_NK9~B0?SIkNN=NCHeV5OqD}(O=PHt+d{n&d=r%G%PT6ewf`MGz? zodYOH=0legO)3j6b3J?7VJRP;q6F(Yg%nl|&K=Jms@_HzO&`|_tWH$RCOtIIPyF^u ze!C#eBIFF=dd;a5Re^(wa{Ow8!I#E4fcV5;5hWz7E5K9g?J0^Xiqes}yJ_+$nscWS z`)2$R0h0!K`WM$3^=gsjNjT)w9oz|^N12xGHGRAi7Sq2}4U5R=rdLoX@y_|IhEcr- z83KUW5Y~ETuq0+eqS^kq=)sUy1BAZtYWJt=<8}Wf#~JwSrAtEzqDQT+DewpU;5I}k zvT(XgFI6t3HGS_tmhYH04TtkYTMfOHVav2V`NUA8If_K;=5#4(&*rk;aD#*P!l^zz zU$!v*C7(tlK$D2kgr3tpSiHpV2Vtl-hGV8;2a?eDlKCEO0#r^@N>qh(br9QM^Zjgo zsO!SO=;3Cd$<`QQso0{emCfZ#Qw5osFfe%26FbID2L@i{b^H!5_F+}bvm!*wkzx`~ zWHuq3+?d_5pPNi5|7~NdBDlWc3Nm#YlI~GlWSA)D;6gVoa`0p)qX;WX`{b~@#rrU2 zq298N38ounviOG_RAEbWz(g?9_8zQcNBq|e03?pNqyLjNYIUQS@X+XK1UWikj>P{e zki%QUsGL`ojV|bezNO|>tGW@I3ZN2epQQfcnPR%a7S_zddJ-$284_L?S@PF z!na3*+@7J-Y|zCAylCNw0+PTxVOV!zsR-|07MmJtjPp_9o8ueubmU1K8A$+cuaNn3 z6YH94zVuzlF$f_|MCX;FTR?GK8{W7hiwtMu_0w?05py3=!N;e^GRw{g4( ztzy=)zNQj`7r~m?68|lJ;n)x+H=Uz8pE+WVfyU8KI@YR1_T}C`&4?$reJ*6Ug}11c zt`*lY36I}IyGqH{dwZnC`O7Aho z>iI?J)Sm*GRt>g)xHl8o!Mn1zpPPZJok^6y)3Uo`zcJwOGUY23DMkPw$5SX65aTf6 zEakvz?zj!DqOvb~?Ku(7&h$Eupf41)h_dQRV#jd-&5)JhBfeE<0eP?``LnebK z-bXv`tq?pA|D(4zY&3NZZuIP(oOu~l}HxMj|8m3riL{ z$-X)bi%>6;Ng=_U4nAU_3HZ>J=ER$HxSpQ)!ofH2P??C5-6y;Sq4-+q>}CFhGyS2S zkm!ob6~c{)hM*1FivElp*j0KwenLVeJAo2_jj%q1QQkj32VI75YR~@w8f)`d1WDLW zPJ6}Wy&m)MB2!qqc{>~IVBWO4*Q-%`u_aV9gF1!rGv5c;DEcrf@ zBK_Y~_5)FTdrKpdYU9N8oyE>7Jt%@TK^*UM%&!h%yS2!lraScJ>9Sj-U z6zS>AYJeUbC+46=H*$?_@kE=g#UiXky&A~$x(LA)_uYsV@}S0kzmu~ksjE|MAz^xI z-$7zWRcDK0+>u)&S#NQt6*xMKCRJI30vOxkQ?+|1^$hE?5jI|_Fc$Y#p7-QNl`$ZY zNN7hyQxEjJ`JQe-p5otMGFb&ZNm4s<6oAzMlJpeXHjZv-Z0Y)ag~v*2)Jug4Qaw#! zz@lDH$Et+p*K{{GBheD=GsAip7r?}A2=&&Ue?%?6_?{0s7{RA#q>B{qfpswvdi(It zPuV5B8N-V+4XA^~B?y8!ET$`V^6#a4A;&7|Ji!el;dTxu#ku1* znfbI%*2G}krhXCV2D~UKt_49^UuqA;{kqX{SRK=p29ku+ zxep#;+vzeH+b#_NeKH0valLK7ezlyLWW8TGtm3usOuoF`79%9QKxr0@h zkNEqPQ0jz=g6gNO13vuro-pBZmyT|By7AS0uvfEeSBQMWz*>Dc`Qyn7bsZI)I^H_? zFHHY0Q?rXbL$cQns2&SGDxSXjf_zwf~94>_NP#DGY+# z6ETe33=4y0!N2TR`RJP5Kl2WmcXx}2I+;ATIbYzmuTH~WC#f6Vd{wI!&ysjKbxB~_ zmi|8Eu0i$ARE$`USZd5+Oitrg$F()JIYgdvF-Fn(Aa~*rnr6u$Q`z4qZ*8>Nv6Q!S z+uSU#sG9EGlD~TWq#YRIXDhACZ+g}aSxQ2d!uG+e3~T=85@&jEYsU%=f8S~Oo4wt$ z#{EZ!2eVN8Oo3q@H7t4nG1x|nD>ka9L9X6_WQ@X9mBj2)@RWi#?LI>d;qZCY8jQov zFy*3ii!Cxz;}Aq2WFh7!hqPoliBkAfiIc|U>%o;I64lOYgLn8I-_TF* zBey;XDu!aC7SmyM0jb+-u7MHm#urhN?C1CWr@ygN|8+^;a&RUmN%y{c&~-!qDkMxO zN9WVCqe^f*t(#FnUcovqrXcrYzWqI!-3JH^sWG#j5gdg*Dl0JCF3+=lBO?(2a_b+! z*XiI_cL@^`OiLEma@!oW4_ba77NO~v3Ykz>T)sJiX3g+%h!;=Sq_F6EP{%%GhnmFz z=mB&bhI-O##lgjs6GNFP$GUH@gNBEW$w0l61*jR&1_b*rhCgzgHR4$b}7QlxUX^2O(w*C_uOD~&XN{1?bsxdZNrq(tx zULa1U{_`)-dI2mxI~uN?A=4Y>rn50Z)Nq`I&!4MToj;Bz<{ z)Q-sv#SLZIx^wSdO5n1MdJ-|^u_vvmIK`QWgU&}brF13#CN zkL-D~Ncvk|P6}Wu;s1Y4`~XSr#>`QYgiPjKg(sI*=wzy8pc^p6tC3%9e}qyS68APQ2(B9Hjyc4 z<0-tC&F*h8lwe5M$bfB;*mg><(GkN`R`IVN;hpf)mf6A-wr`nes2&n=P6yvTy6ahx zkF-gebJy;kc20aoLoW?^Z@ixWO{$t^8@oXQ$#{R$TXhfuXj=5j8c!Bpv^qJIsPQq6xUn zBRYfD5d8-7g9U9X!~CwzDKiCIWtB{37UkW7#)7z3=;j+0wZ}D{aJ9Su>skGlq(7UX0W~4aWb3cS=MFI|CnEE!Lq~Z(Pe6?V|DG z+^$SNffKQ!_Ae$HdYU}u!kD~jjTHV{xzL*iNJ2qbH@^PtPe(J~=UvUIfe?J52U=1H zcgd-7iNih^oP_IfG@#Z7E`Vi*#lFl{Wi+H@i%-s7W7iD{TDP|9p;a{D+JoPxJ19*1 z?d3w{28TgU@9C)dvPa}^FPV8S66Mg|Nx9?%`bh17jp9Nwv#wxTyO-z z973B?$@{;;ZTNNhaN!KyG!$d&zrsk2_GMW4pq8Os=;_T`kxjA<`k@&KRkBZfR(WSY z@AZ=ZGlEYI&87oXh=Ggjr~ifx6oJsuMaIqkjz533!>3k5WkF=E1&*Sq5%yF$WsFL6 zXt{79RAEykS@c$gcu7l*z$i25ICfj6N?xbbEt@Ywyrx$E1nrbE=-VXLT@r|WsC}nb ziI#5rpLrqI?XlH8ha!0InReDi;ZKwvkCR-e7r8B}Nv&RjXpMDP$C3TPXH2+`qjj?F zgE;ZJcI)EqE$&!N2=grY{kn90F{{Py%7QV>GY-!1Z|#Vi*C^asg%_R)8NwuH>zIhA zZ4+teZw6*Hj&0>aB$;0-RfL^Vf*I5#E~i(JVP#hOnTA?n!t0G`N&ueKQfQc^&XiHkv)KD z#BM_W!)bOJi~fXT*3T75&UPRP3}VOMXG*ad_aVYsu9{XHm}d|N2%GL=!#uwq?9{C> zlb(9=Sko(V1L`PC)=zz^!uv17>Q5$etEY$~EUMP9vR}3OX$jCZ4udER3iUfe3Ay~7 zyenU6mLEd%uVpkgeweKzDGmP8jJk2l!^WgL@K#<3J_C`rV##0^88VNMj}HlGThmJf zn_4aI9#G}TO6ET4kDnC&l#9n9;}`%+ksib{24yz>_)45j^^if>8@sbptAjk0WRNy!Fe_Ex}mSddBQ;8AQYsE#5Q zrA9nxwTKSda%p2aKznFJSTO9jX`;tV0T;%qv2uH!4MAKDuh`aQtOtO3wOQ%v(>~40 ziF+tpS+w2x@7Ze1qa@;UWqVIJQEEtt4ylIpClb3 z2QBY={=Ml{bz4C2;DcLf(@E^94Cv1AWR);K_Nmq z+scZp0O`(o*62WArasFxU<{ECFT_#opRg5vybZ)kADD+<(1e>?_uE8}A{`10ZTcl? zt?9T(NJdC@CAEm?b^^)Pb%{|18PD|MlJ=hs$C5o{_f*##aPYC$C9^Tj6aOVy-L9Y- zDOgK?y~dig4|fRZnw>C4(%*?FLeOrwgb-GmI8a?wLmb)Znb+z3otIAQ{g{@7<6_C{ zgcJQZL`Z)OmhVATx3LqbE6{2l#|S)m4+Yl^MlEgj0Z!?9k7q$4p`NP`i|j>N7?f?r zfaK>=-36P$=~Bqjbw8z8&-}Igf9w9HSzLzB%1Zf&wfhwnSuP{jtvKKg(&k3S0pV4>M!}Ecjycvqoyw)imyCgA2%Evz^RX3A)P17ab z`=0BA4djcU8>C0LBEu)Um|P*wyS64aAbQyXb&eleBZVIr^C`LgIl!RL0Zm3zyW>a93 zwp&aWfMd8D$#~cdUNnqjhG&01u$mB^yd=l#*&cxv%i#~su5HFC9CSHM0&>;T_L{I z0kl~{I`8BzzQh9KqCz=nhb$_NBW@hcw3mv4V1)$Xn zNAvpQE^M~Tq{y_Wam(SCE^1=^99wwj%KBhzc)Z9rf|IgCgmdYF?o!q*;hx0%PiPkG zbEMOa{c0H5^i_uN0ig!{l_UW#K~>gBs0l=4K7eMMI2oL_G7SZhcT_$M>$bnSlmu`Y zVqgX}YF+a;dPXr@(8c><_iW2QzF~3emYtGAW1HCJ4=yf#q)Zx&rn_^c(tT4pRJ$6?I%D^j-VRGC4oCxmeOowGv$W28T%M%${62`wJu7h>$FF?oP+pg1K)AEB$H+ zmjn2_ic>OcJc-YH$Z3o>j9`O`Vs%2*;5s;Digr%EZAuKDw9l98*mk_WubxkgWIKzT z4Wyh3HFEh@EO~df;`r=Tl_m{BZM4N--v^}2PWo1iu9FIX*ZgkY{aD^t9WQg5BT@+l zZckr`mgHaJtXoo^7E@Qp0DU5ySMAHq$SNb zXBqs#0DI1Mk>K&an%~>>8nrpsU9@MA%4Uc)e{k?r&&U|f`XLRE%#qfhRl7>~Hd}aR zS;6@$0uXiz^L^ir%KziuTcO)2Bad|1CL^-5)4O^1>Dz>&c>9B-*)|dmX#Zc064b@C zK2~3iUSxO>Wipr5TsDT&k|%7b7Evz5xtQO9QI>w;?w!6vpagDBYst2fA+n;8n2@rz zG5(dW9(>4>z@kf5{*Gx}zt$pj#M%wAd8r~NOmIk*H|21Eiv#y%69Q*Rc66CbP8QU^ zFmb|JJ;V%=R}`ZYP&5fK!&=lih&l(z>@=ua0qy*3D9U$P3H*bQUyCZGu)nMA4wYsPN$Zp_CLIdU$>a*DQgkGT3xXeVKo# z$1^e@dL^=XIl1n^L+p1c`~y;*xUva=F~IuP9fd0+z7ld~S<2+?eBT6YHX}e!5?ePM z2ZCo2d?5&9CC)k}h7t|L@HRNEb;7PU%w~XM}tna+K+}0_iH>!Gz8|}KhpqtC- z=|oML@DN5rcNd^0g@#c%G2SFp^->Ri0>7d=GDfU5~TJ~)v#7|INh_OY%} zMa!dyai6Ve^Fdj&yVC64_l*Wb{o&z9j~C*Y^C zgXNe&c^G7S7hVlUbhcxL7RT?pcr7U7|I7@-(sparUkgLrQ8Y46u=jHzl+I^7Z~ZmA zwGt)@j!4bdG&{nK&f3@H8Yo;W7zR7lMCZ5=OC|n41#fP_OEXA)62zeGiiil^vOAw12EsO>=K687Y2DrSWk< zwv8WA9$b6&_)F{1M*=l;D4iRm-IM`DdISbcT5LVy3M|njI9|dA+Qzbv2VMiYM~o*| zXB%sfb502vm?Af{OpdV?qMlyCf+;1WS;N}xB~Uy}Jh%3ore>pB4%}FaE7(g@TTB$w zWpfTkTssnCF5bg&7yrYF_G`n)678$OB?G0>m>CuDpW*9@Clq0TW=>p54zafrT!gwc zje*k5pw@kmJ({=s7{+1O(<=wb252Ou&E=B5GNL-i^j-%-Ir{V1Mq`*eC3Wf0k7Gz! z0ksoo#Y{~O;jXa@p@Rqmh4Pv7F?IjV*L0L-G@VAQCkP-E4ZZChnn zLr@q0v`5>OR_qELD!WVA!to@j%0xiAC##W=_)tEn+i`r#cxl5{`ghiw!&lOpyhxw=hB!u2qcg*Fm&AvUi;_dL?v2W2M1aEI7V8_a zX*kwDnT>0}LwzA)+6G@8e}SH#OTxbh+kbWnbfmhE86N>9JMPna{xwE01b6!Nnt%uw z4=$jDH4)%Z$Su$VfzO%AWCo+T5#C{Mr6b{=>tU|1Ont;>wweW-bvHU)8qdaQ-)}nA)&W1nb z8^2|0S)NK{Uy_bsizzEO{s1{8ZC!xuTCnBJgLh|kWBbFiZn0YA9+CmSQfXn}W7o@+ zOe8jxBjO#2W}d_;0p4g9c-awWab2>!#Y{BB-y1A}WzV1pvdKT%kN>L;yFTNIw% zrK*Xdj&k-ciCoa+BF|Y)24@MYp)*SJ|knfkdx|e7txjkGm$1q zY_v3&*}JC(3u-BZkSBG-Q9Zje==l|Fks5lgy5bgCTDp1cHD`LTtKwAuuaYsbuhH_+ zb&3f@edAWH-8X8?0{=Xg?1c0G!*H`SbJb-*fADN@&>bN)wCGqGi0II}?p^FiQd1$r z>M+lY8Tt&cQAIY#M#HEVi+v#ss4Ej=xy*yhML5#?f#%HSp$Z3{i{8a#vtkz>vFLo{IRXZ6`ham_3*)QU18fe z(s-Rid1X6aVt8j`e*;URe)m|s;&r}IdICTM2ad6}^$He5WN9RcXawbF5r&sb(Io)j-%!_{p6T=n|_^ z`bF3Tt{TzsiF#9x7iY0d9Hr<}x-A=kH$aJRcFF8Pb~mZC^KooY?p|_hWkJ57NB|0E zk*nhC?=&LwtN*Ll>=ZbK*a#Gn5Vf9-hW@$cg`kt$dI0~;lRAIr@##wGVm)Hd9q{U= z4y(gu)sUiNcZ8G);bX6C9svPBIaI$~;T$KJ+&ZGf2omtXfG;%r{v^lVHct<#*S z$=`b-yzygoZt=tmu|D6PyHEsyz~5z0CZa4 zjKzR6Gj!Gedg@Tid9h@$}nu0QQ3q8 zk@hb3G+D7O^gEU&mMNvL>=sV~Uc*7JyX(zNct4ZtH!n}WJc<9k-Kre+AvPLeSCuSS zTdbXM?tRrb7bHEy$J1^XfG@ove^0nO#0!oHqq7Ot9=G(4_sJxb6nyl?_xkNO8za*#4(u z2^H>YA#^<=E8ihOZ>WrGKPq>z31NkAfez5fY zzpqR8m)QPKfS3`36Zh}-0P=RRN%!r3P_D;}-P{1Ni$6;zQG8d%)45m0_BteEWQVei zAJD}q0h722=vXM&0G{>NNIOYJGM{$kYc?Rftl$Cnr}V!p$L3W*#}zWBX0T~r_Le7~4HXl6XowlaWb?;XFI3UKbi?S)v^N8zUW<=L8yj?bSYd+_+?SzyW{ph40CuEi&) z=;$e)vl9~O&_fEDpt~CE-6WYoH3-fAVV5w> z+pJwVuw-RoIoPPacx8w##H^^{fysxQD{*Jh=*Qw#vCkm5*gWB@s}$!KiktoJxp^Zk zGMJQG&AGKRzXn;*^65MZSSlLDAD3Tt5AX9p8G`-cTvy9#Y{&YN9SeEwMU68m*>w`I z27w6rqx~%;w*X(*CNS`Lun^|oovi4W|m2%l;f`^@!?$M>ul#3 z7ux%c&sZq+@9j~fq~_q=^#?OSxJOZvVcOoQQnHsDew1B|2OQ?Ix08wZ&sdRPgq?A! z>BPgJ?;-83WlW+*##O@1ijX5rqW zq+s!!CLL|VRiEX)mjmO?=Pq$y*?I1wY&Dko%craIw-laiXlT{KeyrA0@&Suqz@4O~ zTTBsaK_p!eT$8hzrl$`))Z0}cY#%TbXzlQ}cGxzt(yEe0p`T&oIrY!4_i{6U zNW4aIHh~cUqd$G%rXg_QP||C)0Yz4R2k;~VRQbYT(V?p*pV=qxBUgqR7bHP{*HGvS z4I!Ut)c2lAM)z)ydcy<(%suMbf{V;iPnG%j zxsrKsDdxhXH8P{B#k$eTJ2-nk6J(sIg@XuqIN7S)sa9`wM~$C62yjrm~=x_5}{W_ zXz^m)__+}Yersk?p)|m+{!?znKH`u}8?)moMG)IC4i#1dnOFU9*ZbP|j5gHOoy66p z5nb*zKFxkLXRIe7`j`QZ5ei1yCgxW`Cc}w_&TgHc7@$IC#?4NC*r>teV_iW$kVGCp zL9N&VwT@-5OE&2DwliLzrfW`yWbkbZV7JlsUve-Y1Ht$IYpb{@oi7v3Sc5J6xMFAD z9<7~@N%vi0`e)9dP8iq)h&T{7ebt!>&%UMGq_zb;Iro)CQ(BC?h}=|bvr6R|B~1=X z(W^bzr7D!f_EX4^Hf^{FW#3s_qrJ2$1eAIKF;$=oIF2Bsv%+x|#b(iP%;vH?!9z-=;9b zUb00Dq}>GGhA)T@en6R@JB@l%{yw}2zj70&Kg6Mc(X&>8YaSO!3GlQ@c74nWi2%*8 zNnB=$D$1B-hn;%c<_QWA!*PwytUQLd`S4_Z(ARGIt?mB1w28;2?t5{ssKnCWLx z7seE;Bb)_`>JsvDQ$#7Ky)lq7x48hQ$`mAcxX&Pwfj^%4Q$5a~En7$~0aQa^!TF}Z zL&*to-XY?e^nRipAf?c`Fj+squ3;JGrAw`7ZCNx(5mdb2owc27cRT8ZBv#nSryxRS z_?pBImd^N5aRhkA;^VJ)ySO8snYcEO;Xq=7drhQ@nyj@Nq!kqpYSl5{VrKM*mrS`j z6Z@_{B!9LB1$-jL(uUF60wd<}Fim?^scDJy7*=A`3o-=7mVFT4aS&dK3H#`iWLwar z%f=;uQr_M!KpAgPpo(#M0qf|YB2ySSjW*JQAPxK7Ei{Tcz5*Q8yb?qKk3$#^;LXF%?T+MNXP@n$SpR#U6u=8T(^)jChd-z~KtGUV!F8;ytuEJ_4qV!h1gm|E3n?#_k0(@Q8_j|rv|h-Y#&(UCkz*CA z_S_S~^0WC#&Y3xUs%Nrx2mNcs4@Ga2i5mn{tKOvS3~I_h`SvZrZ3<;Zry~q!!?gXAtRS2#4pX}eJ_L?We%+0j(h9p+MHyvEGuYs4 zs!(>mXi1qN=uwt(OKxa#$D2~o-K?GJzJ>d9I=NVVnYw@#L8Ia>667JY$agp!`(_P? zmidjbvd)@&FPOWhmFiojV}1fJ`ihqoloK_5V#T~mm5H8cC%kArvs5mNk(k-)h%eqB zX&}hP&ix$&dlkA}kN7M0R{HuVK%?A5tTrU-Wt^^|MieK}rABOKVkT`*DMP= zwYBA08F&!%gPZWp585VLU$p&1CkWzV;0)=aX69b+U7qTP);nIM+eKe|29@m|`0~YC z6pIm~|MsRa!b>0yL0!|~%-R_yf-ikNQ)eIJ0 z7TSo(WB`m{cT7c_&pH%y6}U82dPCz=U&ibS3X8aQ{uNBqfIlV z`}q!aM_3H0kbw&qEpi=K`~&!^88B5bQm|(xDKi2@;>F_`leiyDscA2%ck>K=kN4V6 z#x*l7z$f;a9v=ANJ+N$9!$H;bs*09wsO!`zdb}&n>HqrgAN?TFWX6-=R)#S+gieGB z9xXwRx&pf(FXvyQ@?KLZeQW6S2xCuzPX@^DUwLPRjuqLQUD>D_3cy`9U5=3vO`wnv zg3|hThl#FjY?<=8{A)~f{@$3adcH#9QxKch%m9BB&^$AA*|y{zEvmE$4LOEAfJ_Get5=;*y6zYaKoC`myCpt3p@8%HtKAHciMJkZfpTper z4+GNgo9|lW1>K--yTF${;M=-UX9yI4RQE2Pu3`1X~pmN3gkhohOjGpDds7}3NiDPsu|3w{ch z(Bjx0;MYR{&b&4-;pTwc%uV*a6oj$%b{e7StU73vS&YWj0gHnsS+uvsyBf|R+Vtwt zPY1)E6mssml!0*%ce|+zwGI@XQ!d6=?Z-We0;HqK*!Y%`+6-LM)1zX7k-l>cNCGP( z$Ipp<9}139T`msu)~STV(t2!D^|E7airGtC~w*2?OG3YG30 z@Ht5773i*acdzP9)7}a*+v{@_IB7mZ-y7X7-1($^E z)7eU?8HSwNR11C!hk|}F(+}Qy*nR7rAD(R6+Y;3x-O?6?fMdr*WrjP6^+%Bs>T&SlJinJ^4Y@h$tYvo>AwFE(EdG z2zPE>B}N3OUDSGg3!7U~2^lq}K)+jM1|PL}2mc2ST>CKViJ%2`fR~}ewjwylty@J4 zzTy`TvlQLfAUqu&&HW4xAfoR{+;{)25^PX=n;feqVyBg{0<4$BoR-ehRV~TxyThS< znD7I^d>GUvw3zSJ7FoLvn8WXC&Otv&zkuT$u3VofVL-8aY(2B0|m9uZu32I~BIH@;;cmNlsGe{yMG>8dhcZEGUVB zAybFHuN8@){NhMv3_Hd}xLN)IVBU}`8ik!tQPV&uj?Z7ocUEqx4!D+BX>|?OZd*Hn z%nI|1{2n$?uSuO0k5g|dzcn6tI3Fd8#-Iv_^STD|pJcO*&=pfzcl<#C?$UD2ayA-6 z_7qJ8A(y|U-QvkQg(VxGin{!$n%OaK*ezQ+eb*e>yIRHVjJ6-Fj8hzpEvh*JHhZQ5 zv{2FB^Uv&^Ykp?684G1#A2=iH?hjySj4q7$yOg49kRZTJi6nS(a8KHE*VSR+?W$_D zF9@)elXML3sc(G1yF6B&4Cy{}czSY1pzplZYcjCA^D5jvy%#SW`f;JeMaIK24q6KX zH5Uq^mLN&E5aJtJTVB4ac<$_ZQ@D|R3kvicVCNw z1@myJ2(+Tb*3sA7QZ$w;@a&a&SDF(XW%!6bq%ea$Q*)c%imVM}8BARb5h zP6Wl=kfKR_^q)SVhp$FZtQB+j36h*$&07&~rJw;PiuVyVF<#l-W|V%(zqmH(S()q6 zHWVgEw|FeAAgHq!__nFm5TyBjHW&9mXgfc+*G{4Ns^B%Y=j#)yh_J$}2XVT$hjnt_ z7HUPPGmNDEPoM5={?od^jIpn%%`zG1)c$AyraG3j8M`>J{PSWWa0PPa@w1F*EMaM^ z1~p~qx+q55YKZ!aJ{(?a#Uh#S-x#2>Coud%)e_2oRIwYLBg=2v;_eIvk-XXQKvuvh zZBmw(>My28jq#YUws^|96hCn$Ch*j9Lv`l+(6Ey|Jv#p4vA8a{zjkZu5^z>8=*y2R z2GZ~mxPsH{ljTX1u^D_#8rk`f4%@-^@2U65vw7J;N*ny;uXzI9{wNYtPnpsoxWr_nBB*9L%=mQj+xz!+&Xq*G)DxRG zy8FpWDnIjftBo|3$W)a#cqEeOm+kt+E!U5k^-am3?8vkfPh71G$VelDKA5*jFS_tLd^_9 z(-q-^Dd?Oiqc%A?^C3s>@N7w(jGx5PCsJ;Evyd#J1ACxI`<)AuBqYVj;Zb~+u6-*a zW{ba)NfCgFTo&*$r-O)`;D#yoa`wT=r{B(EE~OmnrwuS5D31_H0G03cloz+>HXCNu zUIbpmI@kK<7_E_7ZG&`@i#nZ`9HmsUB%o;@Gtm(9FeT5f=Dc&j_o}OK*O@9`+*ahA zlq=#xkRp>yTHMIcYDOR#3rHzFjfuJ+jI(}%b{buqNdf%@HE+%LTYlQi2uFph#Q<_( zY*3tt-V3bxSWz>r{c4W85QnYAZ;T@(CRCl9T25E zqFy|sYyQ5$P;^o#NtlRGgBRp=CJGAwp3Z{?be;^X)q!w49~>aFh12Z7H8T0cQQC9f z=XxW3yI>W0gxhmp~?CLeZO&yorEN@W8^Rmwdv*G!+ zQIFhSd_Hn=+vMY7($EYNkZBYkn*fVy8JA$^C!nd%X*B$dx35JW=-EG#9wRQk#miG< z8;P`W94Jz_sA+AZa)x+w6k+VwW#z#&OqBJo@>jK2q4D&e(&iz-op>O8R_4HN!i<;= zDX?3Z(V^|$XtqFugj3~Nm!%cJMs31{%#Aul1c6nz2wwgqhPb6&idtd) z)uRe=DZEj<1`a7pJqbskhv}eV%a0p<(D3XI4=|_4C(2~hh7I&Fy&vwA{`uzEUh|k1e^a8z$HX*MT+ksn^ig2*W^lI?H>5XQL9Gt1Baxpz*6=nLmkh2zv}9 zA}U{PYDivs(Q&Y1pRmYfNGbF@n@w{WHJ3V2mvjtUNZI345%*k_p|3VNg{PgaL9&@i z-H{dk(ILjUE@!A{A+V@J?-n^@1`*V_r~#}BU|Wkz+jxU3HFleLiceb-TQoF>?D!28 zmUKtiYF?i+&scjsm3z?Wv9vVQ_0Yc>b*Pb?x3=(sAA1CAtHaOvY8*C=U>?8w&oPkS z--X+0o3l9xeU2?XTtrNKI|D zxh0|In_#apKW~)vH1&xN{w=-^+AERv@G=pMDP&xVF164{%`t1ud>lk=D9|P;%O;nO zew?~uogb(F3$6>de3s!9$$JU@^IsOzjjlkau@>3n%U!e2H!j3MXvNSZAWu-0I;?zr zjAA=rk)h=+Jq&cmMvL%axgVyWY z`K@(u@(xvkEp*#9_gDcRv?!bGMS%Lemi*)4|Ba`QP4>~i7u5JHm>;KWQy#n zo2iI6X-3=@daEZbV$%h9S+0zR1CmW}%6BG?Gu<_iYKRwmSy52KYtpj~AV!XPvPlf>h zKLEhk_LKN*#89x-H492Y`;3dvP)ro+`Xm_3aI}x>ge~K@O!=e@CyH5;#%mIgmOM}1v`tRv zf)&_FA83)uGaac>z*PTj?0iVJ@VLV~B<&_sP;t4f2RU^8?96rGjG4;?bCoWPD zf#jYDI=}Y(VHcE4)Wd9uO!PF%YC_``kIO<>!RW)TE08dILGNJ;THlExXaIM}Qgqcn z=pX^nl*;6-rk3L}hrbX-#8Gbrk+7Nn362`z9?=YgN#@`@(sE9fMkcut>;lZWdj-^bVR)$TgXvIiFKj>hb)u2LZPMV^n@SXf z1r29VfObyn{_4U)!lZ(Ve0DIkq8jgU?LJQoBP_=vjKcHZQGknrUrh^6wN^&`JQ

    ~1G^aa66M8j77w4xZ!9+OFw}x+T7i!sYHmm_&Jxmu?dbv)07T(7XeZ=YJzfvjP zCfL9xeT-r@agoYgMUmH|^y7nxIIAJpLe|^4qxMNs?2zwlGFpi=)782FMM!J2xLLw@ zeSw)ckrGb`O0X5>0q3sc;Nu)9_g9C3MhVVhNlUA-$T*Vu-l$=rb~VdWWDZea2>S=& zl_#Q!fzcoCg}2kZj_<9YDm$wVJ-hQ@==8mgSI{87XQH=8o{#kyvOHbWCg8w>6u1<0 zC+&CfzQrxxgArmcdH#!EPEM{$N28q_1}UyqoDPgWa5l3B~)wQ1?%H z<69hXwJ2PC2_925eFBGdJ>n7@v}j&cunpNvyH1wWQ0Q8)>TFT1hI}v4?xZPm19S?} zgx1TYMN{X@YMG>XOh(+KMp+p}a%mazaRGksUV&y)j7@7}Lwz}ptBQNf5ZUs7aY4IH z5XL{Zzo%t5GP zvL@F6c2i)LQhX@g?-_rH@`gabe>L{HE0E}ueC{Sl8!a6)n&A@e4~lWhBD^8uR0mCd zcd&XqmC}n{AjjVJ6>VVFUPLn_H>;n{4KC=7K1tG(J<_QsWQg?NTFvRVpp~m)&eIfY6HuKC|ssO&JVOFcTj^N4^T- zwn7c7E>}&vbxne3Sp7e)Hl1ins;F z0xQowN`A+sZ%61xNjE)gAhrVv!uGtVy^<17UuU`Tw=cu;4`0O;m>mOio}#9Qy$NgY z<&%ghh|G1Q&$jSsL{A9oX8TqM!_*9zeB|wiQDGn>wr!^eCmM3F$pYe%HPOo)vCw*6 zsSuX-gLAzFdT7YNaW;tHC5Ci;_BUH%u8lw`m$ZWbt@xun%h5FZiK)7h$QG3O1;uyl z5G5Rygg4Z{AiOAOKV1bPUZg*)N@ve=0_|sajQ&Nn-`5$a5ni-L(3!Ew7tN*o=J?C? z&~BLD*&p7LjdINnDDNrbFS-LYipULiVZn3y-zu<=41pSClIGUXT0{5YCY|B8&28DX8R$m zvbw4$9ikB+8F7`tVY0bH?&)QZ!Y^t$)lWH)7Rw6t2zcKqCXBA4`4PzmM&+THUSO>Xmc*i+BTKq*V)L9v4k$05kJXrHh~b6a{v;Qb#(zlJ_{n zE4fgHqsUGSb}!n8%Y~3M9M3*L0;&#&ec>a%mEt#o11Zw06{@8SW+DTvY)`8Od2X^< z1wm!mrp<}e-0oLasiVKzBUdw0dL}Ryv`wpzKGlb76?wwX5tMOe=A$=jnF@2Bzr1Z9o-@z%To zr=(>!wWbId*Y($a5_2%)-)+?5oT5)LScb22S6!%EIHT`fQnYQ@e;TW=24*q;7)rPx zs=mu5qra0&5FLOSR+>ez!q)tae8x*NYavE>hdy#}xg-j-=G_f}{wBZl% zTbkMme=$Xbb^1mu8V0zVb2bS^xzN5EiQ=mu4CH|YrF&Q+>ef*wd3skz?=9t{x#-xg zB=9n?U^%Ag5uBki_)mX)+n`LKaQv$AZ#gBb27u zF}GBcJZq=sxM^>7wF;MM)FRsc8hWvnrv;hY_+4jSVQ7NX+!#_XDU3iG&YzZ(a()Op zYyhae7>6r;C$F;-JL3H*FkDU4SqRwxeWmkl3X(CUe@|d-i(6t zz5iz6V8DUzvxmw0PoQ>rIEYj_J6Hx2&q=pR4>%Q4FP3LO=7|+(iqm`I+A^&3U9<0m zbXgstj}LRfn(dcaS@&ZP%;P<{SK5=LLrJ)tdZ`f~(Q}|Txs}Dt1A`HehT=%&IDK#A zjUF$(Y>gAeb_MuF(Ap)O)}z^>`}?G5qIJdWHopW{|6s9y9DPaWO8s7{SX%F?1wT9+ zv{v0Z;>c;xG^>E#6xxI%baUaW55ZEmis@s4oWfvA8r}+6*_hHdIZ;X6E#TU4RU-QN z>hYH(*U}ZM>u_W9yOuFH=T%IP8;9ej%>9V3$ZuSG*pKm_wI;c5vhJVn)P9DvB?ZVq zlX6RJK10tS@Fq#5B$=RDw%7@Ib=}*=KMDBvn%>5s8j9d@7II$E`KM1HJ$X+hv1(^Z zGVjzu0D!Z5bOkXy+luiHM%KV{Tfv~Ol1XuJ+Sz_rD!uV^wa|U1qU(Bg1miWQI3RNb z1q)3VK1x5+%fbBBChS74{v^pVW*8~aKG@pCaIvi93zTzG_-4(_m3iCjP|c}W@6DG{q<^9z`fYd=W3U9W?-IOR5{UG> zgb}Va_Bmg!kKSIBeHM3=+Wx?W374x*F%k~ezByf~M*zeX@k`GeNJ}^6_WR!A=K&;U+<)1XY86dj?Dz;?U}bPkGaGSU5yHdu{&R6$dCB~-iZmduvfLP_S# z&iZV_lVSN4`(8;>4Pq}A+LjldI8PV-;7$x#nXR6$S*%}|9@?bQVzxbFj0_BVdYpy% zM7GWPovz0cmTSi}uNFKVBo50pS{p7XxwU@{B4$AxR#{F;guoVvb@CB4u99V~7Rehh zNOCJJ4+yvj##11`yZj{7VxBqsLIJV>WHU zg{vBzO(xw#PcRDcqF3pd(fkFTf)D1*tz=uMDTaZQ9G5=!r$sp zzy|QTv_7%}4vg_u`B!CxVGDfiqgK{nh3g7X;fnZtyn)6xe5DasDpW)}A)G7aIm7NwgVryCSvE}$xwmck zyf0A)jeWuRTkF=#MwRPT{i(XEecYq?38t}<7+g6Z2r-50h<{^oAF-~ z=bQ=B{GOaVI&^@J-ZM{wX{<%8*?;z=q!tJuMFM8h6(y@3s4pVC=o@#tT7QByoZzpf zzQ^n9S2#xka;{f=vEEIrV1)jHza%e$zdnDhr$BAhe+nsKeNcjW+zl}6<0@?>t?dy> z{Np8i`{@wL)?I6j-6b#E@dslIp;(t$0Bg$vtv}$!V?FYbO9!*StDEN@%@M7|eNQT- z6ZSq6l4Y?iljTC$_$sxYVuwk_!p4>33i3ZGnD&4)6yxj^*n-+rOr7I#SQE9RoQpOA zR%EJmbE|WB%m3pWm>{0z+?@%kwAKmS+v915g;%cIa!3DLC5ZR9>nN?R0<>Y!zQ(~T zjz|5UM<0$=tdr!2Wzhz9t6z70mnHuY^Y?8Um==iKpmATEq!Bbn-8~+w>gEW9GUDE> z!|n_NqgRS3Yk%f{b!`*6B6gs8pSEXCQC69)Y>3W8CZ+D1ReLHBX zW2~j{cZfREfHwA=iP@H7_hdh#Q266F{{@>}vR=~*kEhq2)JIeyN41gri5?5ny$aqa zjWev0!VHPWAJGcMiVi%LN8Gk|Go8RkF9c3#E|s5TRFMk>lxBpjJeNZ#j`66jC2l9A zAzl3ztdHJFj+n(^Md)k)!ySlOS8z|yGPkk!uHa?7n`BkF$J0A!sMPaYMWWmkYPjn( zpNm^E_fry^1I2u*P?s@0IYFIJk9cWU^g6HC?)$2`IRxp+y{*vhcpco&dy4d&Gb(Dga8`tN&P;WEj=Q;$rt0#!)SRV z4#eX{?diECLwIOvoDlQY7M&VEzW?1#L8;Tr<>vF7TYo7vrEFE0!HQny8QYMO;}3xF zn0C#Mfh5(+o}=KVmTXsnK9Kyrdl5Hx@Z;)sEvsTWpL2sc>&l!)ubY zU;L;Mcg*3-D#r;KIOfVW4^~RepaG1Bt>8cQPA(1Ck-;Q=ZHw8}+MR(WjHI$eYq6|3M#NZu zJZX3My(bRZW4Brp&KhTplKzif!4p&#=G^#PokB_R5WVJ9IADpfT|4L1u2IVUB~kPH zP{Yb;Yq!vvY5@tNCzSI7^(G0BKTMk!c~#w7M1lylq-D4q2jih|BYItM>fFaxaBZ%A4-AUkktkK+)IKh{46&jwP{oU%7YeCbd@D#hOB}tkJVq0`U80EX%C%khyw>1% z>%YXH)h?St*8?uSItLIO8i<<%RYLney>Nd@ZK&y4yIAr))TA!&9zRIOh}K`h|JLv^ zjWL5a;pJAzR1XqpU25AiQC)fu@$GLJAhFqe+o>wG-i&D)&c`py}E%{@l{>7PBKg@2J7{q1l^MXZ4N+MXOMu{MzoS#2?o^~qnt{8q6H2Pt$ zFB<8rq$Weh^Jn%C0Cua{p9WN~4kT?J>*ZXD(7JmrdGwdOufLr5BG~skYECUl7_Ec` zUu0buog;QbJH&vgeJB$NiV(UlvRQjb>cJW=-VP#hGgnq9q_VvUr7t5E6iXm);wWTX zrp&-3dy?SMlV71IjYgcR0g#*yxoA{G8(}YoxsbttDuZ@?RFQ1MbzV zN{5Jd>$nFqsTI#Niy(#4bhHMha;fTdd8NdDu4jsjOs=Zkh(ZB{dn#-nlw- zk%38XMxi{_?@;Xfk>IPX&#VO;@*}AKHN*X7#C7^(IpuBqNX35kJqMZg0N2>{aN&aX0KXCgg7v zr&+<}TtLu4YDLi`u(0%?V_obHPumwtHqJ$l!K{;U1HyPm|5{e5)kZD&luVxj zW%EenZHM`bZWZ zkQJWxe4xpl45c=*+W~4}x8GRO$oe{|{$~$E&$LQ*#+h>nN6C6lrkT`i#-Ar>-}AY| zrh8MD6&SCTw&+@_vE5Z<=2-zkCuV}B6{bfpic-UPnSju$dZ|EkMfI7`c{;z$jH^ib zdX8}yS+1bbGgvJE3DQOp4~4=)|8ra3dUiknsf!~+;*pQ~r7!6VS_yT2DxJbKyUuhg zv77^mKp6^9Dg|!O>LNdh#rJpn*4K&bJ!XAnKODr$7HWuHu7|3m-40vD6wr=s-wWX7X8^60=EtBmg z)%9!hUSaexKPp7SDW}n()QS4kTwzkgl2YL-e&rP_8hY_c&>up&jxtP^#;2@nJ(lF@ zmQlG5j_fq`^L8p9dlt|6_Y;35P!P(Bs*z_(Q=M9bFPjQXh?R4*oMw7z-f7z+fhUgs?t; z#dqEuX-eu?rG51ec96c^GU+bywiM1F3rcFqvL+)sP%K(wsnF4POM?2AFAZ>}iqsPxa z3}^sqXR+N(Ire-wDJd};^(Ar1h@OFLm6Maloy(pw|JS5gJHT)K77tK}U6ut#i>>2J z&0UVM3f%%NMh(ZKi|s}@qEFu+R?kdBi5<_)r8Xd9bwUA);2!|Vp%B#AHxElpFz7>h zJ}t<%KImq$h+p^@FqkYwbCcd+y4e1cXo(r?)~`MUpQoWIaegd&k=&)So!^9;U=A-u zs#v889qKk>`0N7W#&JJ{s!l8SR0|^;}V#2g<&VyMmZ}v>{yFfcg6Xpk zr<&M^h|0?Sb@9ZU->Fj%Dt}bI&W${tCvY$E&lb~@B?Uvj2_?r$2-lkysw>APl*`AC zhKU5?8dB#UtH`0?)h|wZM^nd9Z6=`#P#w2=rvt`z0{_0cIC%|T6&HhL$}`h%OpCDu zrVWmW?y$WZJW2M0rz~sq!nHJT+J$rx2r6pns_h&Ng~Uh4DdAAT*o+)Ci;(4^A$KU< zv>0OAPNn6tP}pd>($8H6F`7nDvv_fY#}T@3qzi-StvX>q)s_{4LqV;X#+vB z?r5UxQmwHpo_lmk2`prsrt2!JXpvBg6&_mxY8M&v6zxv1fI}wcv;l7UncZgq$;c}r z>Vo^nmh3(wGxc!fZE|BacE3*%NBmBQ4bW%)1?8Tme_?}$64)Vx-He&0XEst4S(!EV zH|5T@;BBO!`cCJLd69W4OvGh} zWjg}+=cq=QVY#4$b4-DX=L{L+@8=E15kkG3jYCOklqvZx_9Lx4h>k&wE87U+u0Xl;eX$GRoUhwKZsn?@>dznJ;cn zCOEUB+xyw169$TaFf`KpKmJvb zHItb3>DY4}LK*vv#Dw1#OK)z8Qr9DrAV$|UNuRw4jO`$Jk`&_`1b)q+*{UYTOovIe zB6ethx3)bUcHnm(Nc``yq!aU)b3X1v0@uK4P7d}tEFBR17>&4N@outzbrzs-FP|ej zoD0@|0v8-6f)#NwuswL}JL5;0a%$W;F-`U?XD8f=z?=LDeZ9(hN*v^S%4CYZLzudk zEwMa2{RbqHs8{vjJVlYqK5U(vZ20Fu5oo8-(>l|eiRnsZ&`XQs2Xf>rpU-Kb?*Pr@ z(Cay?=hWei-<4gcP)^d#(c~HTnaF>6NTK|P-JtPMoqTOQh7SS%JjaS9E3AggCx9Lj z11F#3nnsdo4&E?AWV_>QSKPA#$+9VN%z^Dx8!g5x3UiYP?Zgjs&$3O@cK9SWrctvO zzrSRCh(ZCis`V+7RO#c6>WbVZ1c2VdcDvYEa?EWs=hRBAV<->)C;*}+@Op-UewK1YpuR9H~u9BOV}c0To>`GH9z`&vg~53^epQHjzQ-0)F|-oQ9P+J6sV{ zaMb$6>Iy|}(! zXSAGGFb&=E!waUc$))@aQ3RF7%WCKXeSc^Y6w46$B#QsFWW+18K^gta4O1+tS(8MJ zcY_l8h%5E;-p434#yBYE#J@*D#EUSBQaKA>P0t)SV;CAawz3c8Q+UQG8%g68B2*W` zcnD10R^~xX`Ya*eVg7QAI{tt=C_DH>lbgVE1s&u0__)}e!!-MjtA4aHaZ4SymUeOT zfrIv>fe(f*?NXsGxK&n#Yl~ZwjB9gBuDPQSzeZ}kIjl5|F1glPN&FBPd4|D_}>URMV@&xYuv zORxrh@OT9kBx1sS!{(NJNjKD&*Rou4xaGvYvgY+2aYMjK!O4JX;B$w;sHPstvDyu~ zr>Boa8u?-mh{61n5M#>t&69|wCWPX0@Yb^d^}c@!XQj7A zMX`+{!bS6u1$goB6zfdTrtH}@^f&I|r;ahXL;mR^YQX|PqFi(}K$jTv znK6QnL_iDTZDrsV=+fU2yQhx2tzKQ2$R2efJ;5fRr3d9F_H_VMDa>Q*b=7XFN|?EZ$fEB z=X4dEqYaS58ab6Q@c7V3`&}E3{;iPruRCSw+XSo+2VfOmL|Z{|GSy7zrXrMEJZiG0 z)1U(j9MXeeL*bKQi_KMwT4J%1;Z3S8YDVAGu9!3yged#vzTl@WnAIxnB4;Q!JiVAi zeYmOKMo72>$DtZku5qUM2!B7RR%xE)opVXqQ76hIqQdEo6NVRoLvmL%bPugj`#gY& zgfGtiPCm%Mvi*lqN9lV`j!Kz;iV@5`YVYo?Z4GRF0FvWN?&O)r0QieNRht^%&DfB? zGwuRdc^~mhB|Xt0jS}Y$gwpxVLPl3D_toq;H=|gMAS4vH46+~kb`=TeYDOqtI7mVM z^*0?}qkRF+@AstqsNrk-L?&>F1rPIOL8we;8SO#r#?)@@awLi@rnLD6 zMB3eDL)D}c`h~(ssU&B*CBNQ>c&6$$hF)u4Ts>!}z$yL32`(k$(As}DD&9&M33-7~ z;{E(IO89ZcI5~%L-*oJ%wwYuiB=&Y}0M-bz&`Yz*!VmjgEcQhN~gc{*RE{<|3&)5qhJo6~# zsN1#|S#%yl zQeA`M+E0O4wl$6TWc`NPE|B=4xYWn=-F`^^BT66VMFC>!How7 zLX1`2zfgRw`H~8^EgeNt%vs_-JoYR(3<3g%8Vo)VA`Xff$(=c&X(naqS-pupJ+O{$ z)1+stWr6k`>BSI`tBh=uxHynEG2uMhf8QzopNA*O$zEns@QjZK8D+x_1oHb=InUVt zPq11mmt9Zh&7Dz=bE_d8!7y$KLC$9{WH_@?fcC8&8*fCyhn2A4MSK$@%IDv!+$G87 zaY$Gh_4n8fm1)6HK8kXh>&mrc22klRuv(z!qIlpGX?AcWt99RVNYC%~EfjQk!VO7Y z)MFZNBnq0p2}aKq6F7!eGZOZpy5p1Xs;*|GgxI>v+jb#VpZJj;tehkED8L1II*3yV z;Rx*fSiC~(7lwES84En^p%%vVxjUYaKx-~%Ak7t!E?=v1p+khUb@FhK1oScZIgIje zE1!|MWbQS7M{*`9er!_Uq)Vp{)lRS_^~2pB8K_o!k;_eIPl$`bA+8)4m8wem-XTp> z?#+iwwu%3c{t>q!ZblHx0Q-0efd{q4%Dv9C!_d>8NNIrwC@cX?z0`` z5Wa^b@9noi(aBUPAUf)apClHPqx(US>ENP!B=lkuU{}f215YCqMatgX;j2cun>AoxJINC?mnF)%t(->N^TJR^1}RU-IC213t;- z0MMisqvz&tyOodfe6wlH%sn~4pN)fEgG!kTXE;R{z|$+5%y}f9?$(NAuWI$)L3~0B z7`6R0y1{i|H%{%av9&R8+kk|0E#hZ>cK)X7;=y~gAeksS%LOTrpVRRpJ?ThhG@7;C zY-U^iMJ8Dzz;(aeQ_$^Sq8MHO``4x}eauYx& z();60RyZ~N6BhtbT_aWt`Q9M{IocxV1Ua)U?myf=C&!bH4~qF=#HJR@WpNJdbB|f~ z*e;Xss)p}m!R@<+(ZKf}4#irs$We$YkGyU>t8m&JHs+P#V*eT_oA>xh4w*lIW(SsCP zG0Xo{Cx(jJcmdYq`t>=YXy6mc>o^(y6j$>uX2BD^KL~{{7EaZY%U&;?k;4vA?~p(? z>7N(iJO`Cf8-&HlpcQ9dx=mEi0J{iTzfkBoM&H_Ic4BuE$JQYGtG-l;iy75Ja)-pv%P)LCPrR7IrpI(%TLw<~lsyHu!U z$n}rgj-4Wf$ z6Luz2&%MKAiL()qYQ#<*wyu8do6-K+Gl&xBPoC7Cjnox8>2M(eUNt1>Ahy8gHg2B1 z|M+OPV<9EJwiOv`KC39K%rT14OxNJ=CDWj_3m7EfCRQ@?IM@%sqd~8rypEs%+Gp!3 zse2Z73@5Xr(x5C9pQ1eK(~z%QL$dJ>n@VviB)CAEwC$$gR9w8Q#=khOm3GbD z%w;LyE?WedQMG{N0I{@>o=Oc})P)2b>;@d>fV?~B4CSm@pq(6zt6 z^M9zo6?aHqQo&Lj<`#fH*7^KG7vN`v-tgH$6?PASb;aUzH!dm$(vJ%=&;=ltc1oE{ zR!sDVwx+~Yz*8bI))!jl#0H~}0qkF96W@daZ&HA=D6_G28P?cQU9U> z2q%UvDg928UQrvt6fE8|(fq9RZ~~IVDVaxp^4j7+bOvnc6p9xozVRwZ+S?Xxo=y~v zxHr#zjs+(#!(vq zrgfq2#7o);YE1c4`7^NVsfBZ`e3qAlPy4np>eqd2>$L!P3KA9xa3G@M4DlbTNd9e5 z*n8@nvM(?WKbpdx(o-6Cj12oG%J*!4tU(5tmrtEi0yid2|nYPZq-(2k|6S!I2|t(RX@q4C;#Q(QL+e*l{+k7Fh6ZC8LpgcAy`$mk(S*V zz9u)onec_E#(ri<$)@Lik%t#?GZ7M*Y(3N9qr*c?;~r`Ob*jXP!Gt9^`^%XoXg*8fV zEFLH!r#?^0;>ZNEsG~Ec)d)7|y8$s?5qP!bB20)QJ+M7C6`)Za5b8=GxUaa7i3V`0 z@V)`#`#tHpntnBBC=`NFUdrHcVseSqYSkT6hqKUmKmK{3ygkfmdK{PeeXNqML=Ni0 zNI4e}m!|()tYTLiqxA6$)3D?hgJ3PrTBGp^6ErTBQAxO_#jWfbv4}i6AOUvNipm9jP4f3ac8;itw~gG zp$CBr4wA&eD3>HRSDUNDgJgn-Md)<1_4Phc=?@^}C8 zVhtawP;k7%{%^Y_7>pOBvm&Acd-Vz2&$sEU`t5-Zm|z~Icd8Vc{suA}v6%gi4W{yz z)*!WsKl)y`8Q>BkCa=K;1{`|!1cb<;GANlML@RF^X}1EWlE_b{cb{2$+6&U^A#T4!hQ;_J@(pcp|4o~-V$Hq)4~?*{s$9Gf|w zCyVXPkK0EHJ>AnSK;dND^dJDgh?#2O=ND`E$6E8ZwBS3!e2_>oyMFdzfn5hSp3xXp zb{j@Afgbdvqny+GdwZI+epu%Qb)0Rnz$QKKnH% z@wW>aM}3ZBbhI)R#H6N}p)f@dtikjRf;sa|2t(v%5^5hBG!U{O*<#~10I^c)Qrehi z6t7E%$$48|?pek*G$GAV$y~#$t9v%c175tV{B7u1;6$#7zCSp7M8da z1dhy9r6K7WZyzJEY_6rqPz>5V)c9otJ zDVP~s03cV4NPgKY9n>8(<_s6o=7G*wi==egl2gYAM&y_Z>YzT8FHJe+0gUc)<}{3) zbj@$_`+jmljXK-ASPKbmqQt&ykX|Zf^&_gxEy21XuC9cDK02i(N>H+~rS&`TZfq4B zrZ}ZcGl+Q2Oy%=15f~Js%UhE0#5}JJ28KOnK~RH5rV(pk^o9f*o6;N(Y3ZEes|;LA~D_q&KWOsb1a_mT1mY zZylyjMdBehX&m$?AX;EQsfzSe{;omvc{SRPifRCXB>}021FTpY4l-CFw%WojbhPF6 z9|zf#%J|@@PI6Z2jOf54bJ|~v+LDPYPz&ij!w`4$j61JUK3@-^EYnPdqfr#q?@^Eu zVtkmC5%+LDFmQIp&vfhT0OPpkJyQ%B0i7_Qlkj+$Tn}4wW$WlSK=OCp+BG4J%T1V# zUft~lF;|bXmC76tGY$Z3SF?x^z)@07l|w;^LP*o*CcU_^{Oi#r+geo882oZ=(#hK0 zQt8t4bq{7{p6#^y&d?cBy|x1-$rGY1a8oAO&$nhQ@g;wZ2R60E8XU=#+f(e6>yjbb@k-m<&*fp* zw}&pbWy-`f+GqP62J}_7?w+hgF;V!a%R&!|Cm-lvfQNRGi~~^IW{HFgx%vxIWccpi8RW^pXIwWh zh5<2|{2IiD{(vUIK+Y0Iv7dK|b8cRJv`m@O4BQ_W3!jH|`jc9J2dPdR{X*f}N9b)I zHB9g}06!&uiC!*oXiV@ZQw%*lBmz5bWEuSw=Ta}^$LP&9e}d^B_vDRR5#HVtjOgl1 zphs?TW(!b(k>PoxX=m}~s7mGsp_a7QIWFv}WRm&EgHT&NB(sZd&RUMkh2@g)ljevz zThuL%#!~zh;GoUk`iwk$1dqf;6LiHrTehi%X)Cd?CuTK7w<%&7k|~UwlSRH5EX05F z)gP@Q=fSD>ASdjzZbmkOJ87;3}4qo?)LUK@r`rt;4d#cZa+#ty$P(;*n!0Ph{AP6!dS*V)5yO% zaEolJtw4hFcesB4yEN#a?4pGBBk6DRG^G~mp2IXo)Rw-{_LJGqnqCX6A<{Xu;Aeu) zQF2DVv>l(;n2gS^!jWlGofmE?)_1S z`I~$_9X`(8_~oF3o<~Tz>1_lMoZlDujisdxHPcB~B)1G^sLcNyq@>&fuKBJ_X3`=M zPLd-4T$%Ij4fop`VSr7ysCXOUZXL`?%A#~W9tl!K#H#}OOOy6wxK`-;|5duLw+uo1 zc0=?XKzc?#(9b+f>p2@s1{O~YU+HA_nRArv45Req^sTyW$mM(T!4%jxcw4hK!Ae0F z=zk3n>0u-Tp`S4xqcfo#Ih6-~-(Xjg%y#@IGb#<>*68!vDM6Lf)wSzU1D*M4Ie*^y zaN$;JRm~ctYXhOC%}NbTz1o21f8Pvp1=GkN4h`fiaFIn*ozLAPPb&^Z@ixkUB^;c< zPI)D)0Qq|zZpJ+tzhC-w=qNbfvl}O_*bc4Ne!>nPX zzzH?^c;t|{n|ePDwuclZ?^zIOB;3TJ7s8N}a1O$-!-U%J!%Y}_X?J+;Ll+L`=LmRQ zO9xCSPmE`B0BA`(F;EIbsZCGRv!qWVThWh`*HwhU8q9+3uzG9BhsjQ>#nIOOtqvRu zZbhNA)2=Cwv(N?Og|03N6#JGYSX5+}ES$~bLLgI0Ji*Tp zy^K5%Ev`D(1zemH9Qzx(?=qP)>W|DMhrywnHDH^_aowvdCo?*z^mj7{m5Mxh5PEe4 z{dTsL;eIhEHZu{7UDSF?kuwe+?yTRdbLCMYr&3{hsk+T(FELKX{4N(4Z9^X5n$lL= zpQQdc7u5Zg08qYL1(9+1y=C8LbvEJ3SU*|ORp*j$g$IS=A@!b9IgpVqz>HpR?zjjb z)P_<5EQV(t%Op?);6UE}qh4P468B-DcgwGt=Op4A%1JIppZp_~^qqy6T~E9xxVgkJ z-9L@glRp{$>))|S{?MWp*PPk-Dg$W{n-Y=aH#A`TD7w~dt1!I74mBg!ml0ri6T#Ay zsK2N|Zmn@fH`5>R@^G8&Gc1F|LbG9rkLn9}J zOlG9lJ=r8AYB;0W8E0IOQEeh3987Rz(U4eb6+sg6#Tz(eOANs&`0wT8vFk8 zW7jsK$^M7zSPz!p*IR=w+ru5;2?7UGiU+~WH=%xu+Y-*zQXtccP^XX!h?IJ&eV9H` zPqr*{GdIkfbl=YSsA09PnEE3qfo4Mrm>&|W`v<$(g0WR}7?wRU5RRE^+*0022F=3c zI4E`VtDaO;P+Z?QF&~QiN(SC}NoIvn;wHfIeA?X$1iUG5Z(=Rb#{=Gv;hbs)(Ullj z#1*Miy3`Y^nVZv(Dl%9hsx1>zWOovq^dxq!5b^j}S?w|4p1;HvNoo?Y5;6A&=`Q?d zj=<rmV9dN1)a!{$8rv}HU z37=*aFnJN|j`&HTG0JHE<%+V*Wjd^I5Ai3lvox9N%5gdF4RCnq3A$icA%cC?gvfB4 z{-6tLqO7;wusp(n{%g6mBnOKb2@(vpqx$@Nk=ssx{ANC_>yW*zgZXkjs)VpI)N+M+ z(Kog<(8_Xqw%H@9Ea%~sFB)@R{d^Eu=KJe=p|kvL#e_-=Eq+XBx>ZzS&w`0u^vJcX zJ?OhLun;Srg@-2T^LNdu0>kFan}??tp&vj>iQuz6GCl>7#&_KJPFwIdl6#k?WY3f) zss5W#eC~4Gf?G$s)zYKK-WU<4eiW6kv&ibF8V0`30lkx!2@|<8)h=(OTj^i;+LgjG z862aKy38CB*}A-iYVFIeMT9i|&prHAGKv|1_Rn3u<};;-zNDYSIK&@@OXWwL|EQ@f zN{eCNjRI=F2CXvRCo+IVajTOH?tLboWIi}wOVzCN>Mar&32;kyTcm1NSRV3sC)N1ULakQamb zQ6iwLzwU|#1STfi7^y>e$!e?y@!ef+|LfL6e9(>L1j|@e_l2Ckvj<%vB_H~Gj?m*} z?uNoe6U~-mh7VZR6CQ!Aii<3mCS|Vl%^CRVRrXBWq6dw^aRNw<-J#VTz5m*N2R8H) zY2@%#7jUKY;ZWMy59hwt7?VPrqE8vSy&Dy9o+}BM)x4cM-QX{ZsZ1DIy6KZ6k2`8v z-6M?wiX#|7oJZqUPCL;JC;Vl%faF07hOP3)RK+QJ&;A`VpCtxLM|Ylq{#bIULOvm_ z2&H(&>)`l(Qeshz3>}G+LZuNeze>K3)1`rMRdNy;jw)HN`8+E7$*qC!zRLAVk!KcD zQQwn^u(kmIKLEfW@PagKwo<6kL;Zj^?eriGjD=kBk#N>_tioqm~#fokkHeSA#6Zt^=H z#?R|gG{oMwU4EhHh6xknj*gbl2Kn?Rx}(92tS%Q5{rztaaaD}r{eA_4S_;)Zs*|+3 zO*;_^U0)PBHONrGT7u=!Nhdd~GPdHdeOx81CmebldWeahGUDpa%8Jtaz~ayr6lBcW z_gd7XJOSYA-4S4w*x?4YwqUXPNvg^2y-ZNq$LG>WG^E$9%q%O?L610;Zc!}A#7 zq7CV(;QE>nE-rgIs(R+owH-S51xeY!Yzv~T6xKo6uvSy6jrS`o+;bKj@m7a0rq2US zf0U2|G3{GW_xZ`AXM?3X@TGs0G&|$Bgd+7Gx^dSer1!WWJ!Ms}Z>B$85!X0)^Slc@ zsPN>%Buur@xL)q+G^~&wX$BUHUa?(@sJm*ms7z zl^2iXwmt_7Rc*ZSt_+&|`7S_G&~W1OWJ4nfTo%4*d;3KY1|VRy{jPzM{!lHe;QbvK zoV~2W-Khrns09Zbw-AEI^w?^4&xWP9W}p6+uX=9cHy_#>`EciC%r#a;I)GldTD7Y9 ziqk{IAd=f-*xPyo&Kgy*n|sO{PKlG5tC;t23tZ}uf@?_H7MFRNGvIZl7A*>z_op&x z1^ikm2g=C#ZRSxqR;g~ju`5n~LT~Q*qanmw`pGXzUs-8aMY(p{(r3)pbq1xxA=cA~ zP%6Ix((9_ImPSK4GQ%Ud*FtseIMn1(0Dgcq3vi*IBp&J|Q*>Ymd4u=VkF#L2bMpBy zjO1BG&0IX(7szm*Q7v2bE;0$ zS12q~%kN6*;$*E1EXH%nMk?3)!e_AdoCeSIEGPSLoGRr+nF-_-0KXG#GTvIg(tbPY zx2I^?)|JINO+xRwz>3ynm62tD?uwmIj-yE^765n(W6mt+Spqg^SCppCIl*Kf7;LZ= z0Be+|DKu|XN6_r36Jn!3DokoBSGY&)ec6TnpI+wwX~`yS2k>8n0h&(cgA0*!u%VXj z9m^);cg*z>xLT#VCAu)3s=25nW$49*9cd%;>{c~mXzm|`*{sz38H_+xJ0F+f?bb3J z;0a|c3z>Yl*A5{vaegP53W?ZKZ}u}Js?Sq(L~y=ydF|OX^}p@`_jQob2;FxaAmpilJ_KH+-4Wt7pQS1K;SKNRlH%r8o44yPKBIKLF!^t+6uVE> z=--+pu_rs^yfITo8>@WOrjqNJRtr%Bw(s-tx}Q<8Z(M#Va$rZ5pv!X-em;dDtG-6! zu9bk@IdSQfFLw2RPx4f=yV4@j_@+w@Yj!Akv5KKBgj5`#oFcCvH^^uneMJD6;nAHZ zDYF|)9=`9RuLH`TMo1?Z%CTv_Bh>n4h#dh`&lnO4@wjm(yA=Dz!>E#Bwy?A1Hp_lK zPssTG&Q``afvMs;@g|PCz7O&0oxFV351>H3kItoX{XD=G1mNUXLhxQz;dPqkq_)4v zKup6r_Y+XjUMOt#QOw(iLXqm&VdbX4vPkH6PKRz|G!~0ToD@J~91uuJ)D|e*cI7-p zEQjlcg7Pb<@_fLHUOmCPQRwM;HI{Cl7>>w8fDlX>FW)&QZx^ zb8L?Jrv!`UrQ3oW=6+baOO9Bf^VcW#H?+95-baIvQ43_n<)6d7+G(9Fq1DQBSNJox zeP~CTL z#}g=%&a5*;X{p@nNH6mnjiGiB9yz`l<-14(^oD<*qCO^{B`raX(tPYT5y`X*o8P#h z;~PRMS^*(a!x}gQXIw<(Mjo}v9sxb0!$+_OZXyg${_Et@$q`2XRI=kpH_P;Xtqhp$ z4cq^BR7hcvx1C1k8l;$?iSOeD6ETYfW#kQsfy6H z`5P>zI>3+0)TL5+#c}NVOwJGp$oC(-Z^;MsNm>B|UfCLx=|11u>;i{k&SGwSF6bg^#H~Se}9ZXn^ zHomf-|C_)uv+SAzsS(E29U&G{BhSKF=vFT*T4KD#_0Ez&(l5y+onck z=7~OA7rv$3euN~*X~I=r=c!H?kltK~iFGyZeGEw{NaKbSmg^;qW;&6^7*Q+pO z7tG)daqJDp=N=k|Jn3%Ee{dZW?3~}$fPUaT?*|}ykH|5z9M+%&pp#DA7 zca+7}WHPe3N(LlGqa>`H1%{<=Pwmuc)75w#0A=dwPw^O{?y)|F#23t|-1fF9!44`{9Ge0q5v}PgHpc%?{L24)a-E}r(__;&aio_|LuMs_ zPq%*n1L5}iY>}^di9QrTKF!5M{y>ir4e|4(e!dH$fuRoIp^`fjNd`BHJhjW`?I%+0 zK?v{|G9X|e=W-9>>nKn%1g_L(`GzA}=D3Pb4z|R#UsPl{au6?GZCp<`_@Su_d1xzu zgbh)GoS!dfg%UYr)NanDM#V_1h}_Y&b(*O{$CRz4oamb_K35^bLm$ zbyiM>UaoJtAdWEy`4Jv*J1Vf+#!EdtfEMus5@Ue?i*5OYNwRBkmMA*H>rGD;_4bryc*T zRK;tug2;hP;E(t6N|=5rG@siL9<74FK>3Maf&ee`(jdJV=(wDYh|Zf`^@|MNK&}7C zVJUO%or1!$?@_?zyBTQwC^9JFPQY{^xi8^ho@2ChO~BrN_3$wMY7@v_VfHeFz!EittWw3S_8zKjVO?2xs30>6hc0jhum`}ode$CKzUwTeUzGzr(`PG6`vFT`AvLArH_CWkEd zT>-0QK)`d^D)EOna)4F!?juBVgu&bx)tl@=5m+Rs%zFOOfvdbXjm~Nb-A^h15^E4@ zsTfBG7`uI&{w7W%Vgnr{kpt7#L1F0u`_x}f?pu*YTqJx84J$PIo-cRBbDH`y4(rjPzsfnZ|)Ztd$Gcb>l_>^cGR^XxX@R&J=p z6ERdbHPXBnSQurJcm>N%RCtR#VDdkr==@u#r0Hd5sp~db##AC#iES@GIuzV8UV!Lg zY(iF+|G5gDmKxJUe$7E1yBuMK{9;->0t5OE4R<#t-@;EqjD4%cSMgm-pi)^Ukfkeq zddY`GXt9Nsz`7rQ3Qe{c_V0ZkQs_m zXL=<+g4H;TXOnNImdhTWBKx*C%3;-GVOLCtbCG>^*uy;!iL2>XRsoWg@Ncm*vc5{` zb;an@=-a&`#YewBUst?`0aZWG%GLLypV?Wo=u!=JmSf}YAjJex4LdtprgCF!$f&cT zd&LW#_z!=&+(4V>|8SiJ|ME2-g$B{$+Mn^Y1z988lkz@VE7+~i(n}TkxZZ#3USL|@03*XZahb~$U4iCnb z1FyU4-=$r!Kr~wS$NVgOTcnE4(jSG3(w-M8dq6kC_ELxNqLl27#iHtjAp|MmMUv42 z`jCJ5RKNj8X8dQj%0&x(=PUa&S<`g2Yd3m3tB8QbT{904VOYrKZ`!;Ud5wYV3aPFF zM8VqrC$!sEH?^$>?Ued}%Dy1v4@>Qc#@Ok^4%VPI4ujgeKf~^}$7i_|uO;jvzr!z# zPD{*N4fT8ddiH>HO4Q7GJN|oa{mmlcl907lonC^S`E)DwN@)C~6NCO`+HE%ks`D*@ zYFs5^C^F1KD2$I!RPH5=9_|2w*b z(hLK?T@}=um0QElbmumGR^qFJMFNAwjpW->I4QMwWJ4w$O85seh`4S?$O`+yBp_!c zV399EF-t-gdbYdS@R}V5#+&H{kL9@@WsDR)_+o!EmC*>>^aVw5^_g>$W0iZwFZg_o zTPSUFwR+ji+C|h5Pw)S}< zFFU$C5S(y%%Bo>MdASib#uUa%p@wu@39}i#*FZKeq;o4aU?3cN`@?T#P*EtmZ*P_% zVdsT%rG1=42n}t?kt3>-CWYj4Ka3}hkc=?!ghx~jTm?Z#aRZz@GbSN%`#Sjr9Yj)O zWP_rhdE4LR?Y*NS>kO3WrIAQ~Mhy%>@#3aFu4q_#2bT(Z)x;BR#*ZBEE4_TyOPO>E zCQVLh#(5{{;ViBKlqc)qavwSzg0&GE;M7=t=fC*WX5j@+gezF;DrANlfy0*pvFK@J zcI~|@p8~nbxYfirl6gz247(+GlZ`|Gxm{YRe%G2VDX^J7E5*;kLck#=P3#JA3S2TJ zF*?|BsI>2-U>JiaQQR`E;5RQAWX5b2R~-KwoIz*pk)9j4%~%AkDoYEQjP|0T%;YtC zBZC1{d9yw&otgdh)GqNz7?QJK4<5}A8P95IAWU~ll2|u({d9p}>_t_=pNlLv1uT+Wcq4u~oG zGClvKU-`O!_FPVD@EmM&TLC5gNC11bk{Fl9=rU*!XbD{zKVF+uyP#$?15bt0+2%bb zF}fMxDNuVRI{FBxTg%d^y0iMKNyPGF`R>gF+)tfve9gv{yuixxvaMHKV*Qpao^j=d zGW}SMLIkg7hgrY`e-C9Z@}UE5TEcp`YR@q7&U_Su6%Tp|Z=j8GAnBn^cTmKAXf6w4KHli_HG>h1T2Ns@^<2j;m z?lBwsAOh_PhQ|ZiY@a0u^u_KQ3_PVuS+Il9L9~6N{)e)|)>j0^2s#fhxn}z*XExOx#ZF+aAluZgi2$4~VaNnImF))W z_wW>S4wTF(6OLK^&Wny03a|fUSytjYVSXZay%F`wloSas$ThiZ(mo!ohe%JwIHM>i zI29+DQedHnM5C^&Hr7TGNEBuq`-Qh<%F6jACcI;<2Bw3@xSs;qhXLI;Z~O{sExNo` z>m2om@ch^bC(q)A*X;?(c#PmLNpe1P%>WE}ffMo+Mdh~b#rK0}=hB!^pfFI0ganrS zMSK9?VY)M&Q@_^BRs^9KAF6+j+3^2&31IH$6dwV)K;sG(2V6^yIRxuVXgV>o<&ret z7|=MhrildXPd2S=c=1_%cW(uGoIJZRGn?M~j!ac&mUt+B$VXBdXJZ`^VS4!g zbY*rD5WmF`@)OHRnG$Xk@Q$hiB-gg$n}5q-J6P8w3v~*$qiip8g$oeg@OBO>IK8ea zB8aimHKfMt%1;;zO-x^8n(MwYAoGoCd=pzc+}PQ);&P<31#!ubVxwBw6vr6H2)P#- z0y_<~x&sRhCM5tEt1$&>Y*JyJPLYV~H1My$OW$3mX@?+dEw5qG)QeBLv1N=MS((HE zRk?@7mvQGC$r=*-bkP^MC^g$Jopj*^F}@zDFiW-gCp$j_)jtW+q&2ix1CTMV6~F51 zsaeY5Gb56lxR9;Fq=(a2^)0*mOlh193pd|K{iJ-ZKB$J&=D3|J+qB%B9vo&rHObyy zsOt>+K9yz@jjZ>}!|%;G6btQ+FEgDQae-zdD09-45VneVnmFhYP3v#@*epw6e2Ts- z&8a$I#j}8P{S@#>m`AJDP@Hcgo1(Z=>G?qP9EVbb{@?X3&ekgSHkn<5Yuc?6p4GO-T z_)$M86n!L_Mrw9W$Bo{Yok8U+sS?cpSYJBWnVl|v`Fj=*j*A83>9c);l?+P}FycSB zsdH-hOA(grsMSqMlWLuQMfx>3#U_)at>#$ zJkdDk2&f|;!1>3luWHZ3d+nr+1K04_^LyEyDNK6F7@Et9(?B3h@mLivo-SQCLf#3+>~!u40NV}ik* zokZ7W4b{62Z2G|IZI(73n`8eJ~CMQJe~_(1n5(U+=6xQ0q-TA z<+;c)3o*ldG;2b)XZc<4RaHM>$QoT!&rz3}3oS(m4L5T1GvU=~_M0Ovn=dyC#!Thr zyyZP8zQrexb}Jovt7-1(ONmyLuLWE`lua}YPL8TB#e^h9wq%rg@rDds&DFgrak_>U zmGpu#z2>&`A<(UX8XqhT>NHiz`Ob?yLb~ep{EGF(C>^mg`X2kdt)%>QJ&63GhROZJ z>;FdNsY#N8p&i5)G$g*u7WN}K)sZu|UM0HG4c)t&@!SWsVlEfK#G@(x+0+B5X8(@w zjZf3VfTDC#YQMjcW#PaHHwuIC{y&MmN6MTk9^j37Qr-F}uF1T3y@Pg{%Xpxi)#Ii1 z%@C+KQm|?fpqNeM?r=uJx35pAQ-FshUCK1nFW-#E1~1mcdvEpCTbo@0rPlnEY# zO40qpy!pjIQA2D{J${&vCQx5tmVl{V6tp36(x(W>u4vpP@lLJajZiP}!E0EMDgK)_ zyJU!37qD0NH$MX-BQ~^!Untj;B9;xD$OtI{AKAd_#>y87tA|L5(%4$PUl zgXS*om7*H9P(jP$SNNEL=C%z5Fu@6R67FgWVpM$}g7!N3WQFF>F*0Xcs4Z-h3iyJw zL=RukNyt$MGlPvw@l#n>pZDyNyg|h}#=={q<>TIQU!!1w&VLcMum0+z&XVWI=Ac1~vghaiFi2V!X{uSiVQ}#S zsWIghuCBrPIe!9N^~&)Ui{p7|1I1!B}q8f zL47~pfcFE9e*o+Sz}{KL*6dmz0n~N(D|H>Qy7!dFfg$xdcfFP&+hb2hYi$7Xm(w?N ztc-6KR~c0N@!I<5fobD74Gt&om{WmgU)x+l^lAs|BH0Y-T`!F6h>XeB%=Fd$Yvpg* z3}?YZpiSJeT71p8>D5Ia+!Zybc%B*6!I!t>9_qfDB-EYxYWGAWQm!UPjmH+9_HKvtwp>EKxXnhogi-BS)sWo~l5{(tWN=jHj~~NT6RHy)ql(TRDr5hY!CTn$r#E z?c^Pp97QKD6U6NPRPR0Bf4+fSF>ls5b~uNMSR3GrsR|MAv-xvOz%QU(bI4GJo#V&D}=jMElM{Ttx^w0Ti3ghsaIG;|E zIAw*S-)N18j8g$6&O<5az7}|!R-UOmO--x_kVW+RfZ|~=oI3qFJpMF~d=+U#34V(9 z6g~w-4CGwbToVcm`W99sK+{67oMvK%B(9l2ckvJLI~igHbfVhBeVIspbW6?L-)XRy z2u&Vt_xdm5v03GSy#4<=A^JjvSbOZd3Y=Rw=fCn!$sNI9MSpWu$ePYIJ;9{}Ofn#W zanuwkkgoVek4rSmHniVOE$nvJThX$-TGDrq!ZXxFr)~(ak-lLSelpum&&B0S_*8mH z^t7)%9+(DpZFraWO*Tq$ov0fF=vrIM--tC|llPaDd{GoRffq^c;zHrxCEFl`FKWOw zD9qEH!|74!wT`{OD8sUcOM>TNn=MEWc5e!h zwq-;2C}wOCJx@s6DF(x!U5X#svCq$g7;%l@pRoM?^0SO+@Q=S%J7er_Z%TGU!8Ca zF12!3rGWN{5q=HpNdG1T57AUD#~a!iPYLKd7%rFk_7Ec;%_-bo8dbbIV#5)4UTZ_~ z%U5dm<;E1xSsAV;mUW=`(t$yI4na3cG5{HJCQn-lY{O0zb9aH^YBTT8ZQT!%Edqy4 zsiO`*+jn?8 zwY&`|$6M%UkSVwwEW}BwjIRlW4PZZ_aaCh?>ATQD%~?I8Ogc@2IX-TMLSrgi%c3n+ z`N^}snR4v8JvpB$yw;|{p)L*c?Z}hHo^y4*=|_~Q*I~VPf$h>XCwtl|gyo8)wDV|= z>9i<$f}faMC*Vs8Gf}KpDKBKjH>?X+3MTx>JO4ij|Gc)Z7pOX!+bWkcOd1XRB~Zuv zy$8SPGIb#}$0z3Zvw~%%ItISCckGa>*o4O}5+U~;!Gog03Qau_XRo-S4~YvL5Z_0A z;L#SLZb8kT^8880_Am;2z6o07&iBVzVetldyT7+2Un5?%KEnG!O6fu6W!QACV)OkN z{7ILbYnbDkoXz}492(OZ=z7YKQ2W?PdKaG$-~Pk?appk`NRNdcHA}iLQZH#kEW|sk zZ~#%ADalDrgYn1?Q!TihZfaQFMN41^d|s7|e&^?ecPLSUXP1fLze+BlhvR~*ZJh;4 z(5d~Dw;V8r!Uwqu!;rG^P$7>mXDDQ5^~}5)M{TL1zZsDXiOU9eBf5F0Vab-3e1>Mp zk%6HRDbj8YmXid-?zU7Ef*7B>?nNb*rF@_9^M4!ry;z%7K`X7&pY_Q zbq+0OxE5ZYTCsM2zbyR`9-`G^;?tH&d&v>>X`7;V0v~cm@X4k0HfAL6i#6nJE?1M; z)}zC^#(Dpy+KTvw-}BV!JC18V*e&>J?CePF+Ksx_{L&l@bO-Ao4w_vhf)gOM=sbuKPe7 zzTJ>~sh|i6#N@G)8v`!{#vD%vl<{h>QPNBYNTU-4tgW5;5*Ja5;bGRV13L?JF2c9o zXE0s%KPEF5yJCy~4G<{Lrw$=Q15g9qUaEDF5&p=F@m}$%!ra?Kt4<8kh2||xZKQxq zb+uPuK1rv2cTExnRhPf`f5lw9OPU5@?&~^1$EJ4PuO~dAHS_zAhP_yRWwNovDV0y%IDT^A3iG)R<~;%Y@O!k z09MACi>e`S>*bz_Kkz3>K?@0T20D_vFp$IoJ!K~2F0XDdd1agkpjR<2D41)OtKu}% z8}=xF;ZlN)R*~Gf8-M+5m@E;BmYDWnpp4o|ky)KQ;gHhzCW)|r1d5jWk za*XGEIZ}iPIM5p2R~s4LBl;#fl~0o=J6q zG(+V{KZ*#tGETh6EaGFv6ffz97D-_MPK;}FoHkm|Y17I^s78j-IMe2tYXkh_?Fe8R zr)<80Z!%@2&JiT0%3 zGJDkWlFr~p%|Pyi5>#b&q()&mauhbtc>5J*W22HNedZRpHzI(g(5siDSJm_KkVER1 zRqPcL2I1`uMsChe(o2V}qMFp_a`c}FX+sjF`?|E4=D3)4V5DP6DHN|CTTR{NCbvLu z6KJhOh*CP4t<=VR4vztP(Lz$V7RpQ&l+zOH#UX4^Kgl8`A2ATqpXfm6(zBN#+AdgZ zj^tNbaXW6T4!A2uVMz~Cf6yeMpW#Qnv5gvax&UvUWdgY)AI(TcGQ67?RCNXE9^xnj z{YC-uF!fh^N{s6eM}~?U5)$aD ztYo(vro)DL9MS&a4WCCcB9hkJor&&|Pi~#Q7og{-d~+-LCi^Pt$i5{&$A^(7VAxbI znf1~&!cq5c&eI(YwYOv;9gyb1mh`oF#}p5(A+`>pTPvD$-gG!D!V>5W67Bg6`w498 zT`5h?SW7?X*R8a0VX$vC39XW%Xpj11fVRZPsGcFn1Fe?VvDD>ImI^VUVF-XUJ7qVA$nba(jzPDqMHiRt#Hf||o8z!u@ zFiw+492ghkx=qp<6G5&LC>=A`Xj43S9S)HDdkOY$`TARN*dvTacG3Ks8-EoU5O}MI zZi_3o3_Ur;vsFHhV}OkG3D9t~MF%t-G!*--wsVOb ztBVOea=cle51FxoQbuGsHYBth#E3i`@~d9_c2rqXJTa)5X)8?uK?^s&;~0)$C@;uC z?(ls>Q~owAz+=IItYxK0U!I|VxT&7g<^huG_O@kq&WDBBiQWgv*JoDXG0Vf6D#jhb zCZ4H;o`4I@Y)sIO@ocWyXcw&*Vk(BQ3Q^H#ghvQ0mdKwpWY_LbG5HDwz2%hY0DE1{ z_0EvP3NRf~9i!HH3-s_o!Zr}1^-(#$-Uw4}Fa9vvoGC^@EpIqj`J?6^*w>+bR&Kce z7W#6O`I)vW>6D&rh#EEyg?{JEk!Pu(tGm1Nv_^ zC6iI=)e9q>r0thD=|>pc$UO($(gIZlmEjv97klk8f4&@?aDF&LP_ z_#pwpizA_0M^x*p)wHz&5FoUVl|^qYHvIT1+ii47lhFSFE#@ zAZKIc&_?HJ!C%C$;$8GCXRkT)O{pL~{>9l8qterSoND0}s`pS@Tl^F1{yAkt9MsvX zP&e53!h{sLEzDIH=kw`KkLvCZUyFP}t8j*_id=%q`{k9>K}Egru_LFwlamzY*`hZ& zh-O@JetuGEX=)2vx2QH3D9H4s_X^#~*5mMwxJ{6x^5lV{v(8JyVO}SNp@K-w^v*98 z{v{eq3{}9@#3Mp#0@i}+fk%2OH_}fG+JX)2Yhwha1Fq+Jxe(;Z|-@}gr; zKw_6`o2{D(-@i0FNg^jYy_aak!7kb5@7w$(cK{=-`d&x}zya;^00k0I03ddsOgu&4 zW-$Hp=PPWM^uiPZaFS#glha3*plh*G=pXa1#BZdnck-=E@Cbb2S*pl?_Y&sm;7;+! z52$_s5&^BtY<)5EsRA#D83eygW{_;>&Bwo`5)+xlh*!6Qeqr8u!Xx2?|H#*dEmD3r z#$#1vVW;`%dD}p|MY{DW@rdZHN2rA9%LDhxn10Xjo&gD#P5E};q`HOt0k=nC>`24E zq(sSGX96(XqN@_qQK=*2bEez+37vBiX(vcqmPnUhYQ*}H=c<(sdcv5c#L{J=I@u6n zqX`$VV-SxeD1MLB$ls3D@&*i}rtA5Kc0cHLc6Z~oS4RU1c8AX1Ae7m$tDOn8+>$$z zzp9yc?+CLqAVgpuYN0QgZ?R0*BG5+|^ByX-+b1fLg|!ehVcgV7>z{hRqfhvS`kmS) z!LlT(HP$)EHB$Xn1i)Vl#K{(mp&YOwP{gGZ(nywZwZr&fUtqE#tLRf0%=M6<^Csp%<;}n@{W>p;E*h3{YelspB3f&N{3L{ zB%5%%1fx?bH0&+iGj2EU-EdYCh6aIG=~yTM0BBhWIOdtV(*Am)vwU<8-Y3ENArpml zN71_cCtlLjI8QM}>S^AGHAuZo?HKy2Bg9%=EaazEjerS?#jZnllhAGZ<-~(!dlS`6 zv`InDo4klKWyEOrP-xp8XP>q>OfESH4T&>QnS4a=vHO(z-?c~6Ucv5_H98^Z*LP>D zXk@ZaO{(AXe&IKXqCI}hc!X1uqFGEowc(PQLl&d#sEZlN*QOA$T+<5K!ZdT<78XTl zoEg{=uH;1}dX>RooeyOa#B}#Hf8noOnVKf>vla=Q^?Xu<SO;;!M*B43Jd2Tn2UUhqANupD=2foQwM^d8d||WI!DE!&_LE zjtFk*CBU1Q_W#Urv`Jr?iY9%f1r0r24QVY{V3KjPvcC}hH|bi#*oc@U`X{iNvJ@4T zzV}ab_3{$uX>!pV;b)r$ois3=RML!T(213?paOp~!b3QmmS>a3x~(U(veH=|t<2X} zl*V4hjlE54{#-N9Vjo?N^yK{4Y|UPgJ=F;Azq$->zlRqcejSsr*YL3OPoNT*G5P^r z_n!6)z51pOv2+=&%B1J(6QHiX6-A)j~T8B#!{85K;Fd!U(I^>lVhRZT?*G{pWR zUIcYof3tEm+;{OWF9>$oo=lF!b$HpT{p}*}p4}$%&?XWXDNY@;3b#c>rR!i8+PW~t zkB5&ecCfk6Cm>1islgzwxNQ3D@s~ItG9;$IJZ4=E(4>@R7gizS>LJIR!DxFj4r>YH zmfKaVW=3Zy!@W3J5F$}3ROLCLV7Y@y+(c;C2Lx+g8$L#2W21}azdc5>RJNb~efMLa zCxJlmL4t0VBW739IskMdMGo-$Y;OA-7{=T?c4tHA;f$K-yOhB}qw*Vt$;Xw)%*&9@ znX!ex@FLuWl@Aj!Piq!wkz#ldRv%TpGVkhQyyWW5o_8|N& zaA(aeIZpA91iE*#p`72|SeYA{c-|cIbfINYk0%O_E1LG^{67O0A!Q5gv(}Gx>#}-R z^vh!l*Iqfhf-!Aw%?XgN7s8S3P0M!~D@VGD)AWtgIL$3o@`7XXJR>P1#{ulMgGk{-Ic5|(kV-o)-yBD`opTlPrEn}ho z@a9`IF1)u%o;d+WM<1B?g^M*KQ-mT}r3@&oT$1}GcEagk7Bcji{dME(Yf>3X88ELN z4Mwi9mf~MM^L=l4T|H-W*ny9AKtTUi^LL3Qnk=5q-vW}U zHcI*&wZ=*WYlw$|W0C`U@d=P!2A9=~Y6>T>>~&XXufjSAV(_?aEb$ksqyGCF@&g%ggxH0LUY{LV}v_AEC7Vc%xspk_ad*v(iq1?0qxmvRzB@0YM75wDx zFdxqfun}m|cV(#IPv%$vQadoK{A-A`)8js2-C8}h)6Qq&cX;gG{l(+khmJ{#iHObM zOnALNIh1aH`u3fU7-9P(;%de_n7s&8mFjMkLU4KIbV&99tNU?=IU}tN$LYHt(rogH zD7W5Oiy24-{$ zUCW#Cz=~)i8RC>bu$}x}VOaV5yXM^cB!)a!Y8ggWeio^ei*$xI1|UUUd%wNwX+hv; zT|G0(#=2)lIAabK@5$dxWWRW|YdE#fzQ-{-ujXPfn^;2$2uqmrk|~tzX+#i&CPh~) z6>y>o)R&l~kRUv}6%sJ>;VZvOKef)c7G)r6l&OS;4NA%;8i$N6yzZU2 zz-8~@e(KtY^H`-UBXx_PZTH$oV!8M(nj4w@p+1TD*?d%LRxM|5)1nnsi#SNy_%~kasYT zW9?@k3hn{fk~%{~|Ha$><`{u+^D;>wT?eoP(HB`ti5yhFJ{UYlE|SL#Ut-uiASQ}S zYF;&`t_Ro3wNJ_NlziriFeKmF<{!%MXru9r!=sTgzJTBa>dNQt)tzWX>~`tHJ-VOw z+s5~cBH?6B{45#t{YMt5DVEuLXPF}0sY}mv-k?&aoB)}|zF0v8{y9@;p(+I-<%XG< zqALw7(*A73?QSvBW zj+zdM?|Qab8z58TWQc9<{}X`hJBAifr4R~M&hwbKQyc{@?nhYUCe4Bcd{kP)>E|AP z)j-qNmBa#A=IkAsYm0ucY7qjp*G3p4?-h*Y63x_&X#g%xn2x(oanqx~BD%PafYLRH zH>JpzW3izp`7J+ezf2=1^-kkmC+*4j6}WFO-t1(qfIT!4cw}TOB8kux`J)T4IbCXn zH80p;nvyK3W9topkH#=X$#{TYJ)3dtsQzRj7$tqT7ndE|IO%PhTQIdb#v?EJEon%y z5qEzymPwWPVfT_!)fY}LLZL@YoR%bE#}5TPZV5SJ&}~-vvJhVe%ZD89c_o5X0tI`O zS<7$F3l^VxEw>Z=-LP3*zDlS+lpApDolu=)KaZXVs)3k9KH1;sL|YGQTF8PUyr$QR z;)lM7z?0YrbeMUQ)Sca^YGTtJN`zI~_YBPb-@AzLe0LsFW_qt$5-nxv6)~~N)%!Z> zcP~-2U0vOuaaC)OYKl<}<8Qi9i;YSC>QY&$$7;`PZNoHP9U%!hN9zl*`54Px*31`r zG{SQU3HxKkaF%iBmQz^KWmqoI*`B z`37kv;erD(fB8G_)`E6{_0b4Q9ai{A|7IjjB2<+hDp+slT?4VE{iy`iU<;zT{C+2Q zmMT^Fz@m=B@z2|Ibe`A`<%yXBSmCp0W27c*KHnb8Jh|x7)MK?Sls%%APwOCH2*8c{ zh}kT5#TrV|%xgt#&GF+a;X!#Yk9n?IRDyi%U!CqL&Q1Ke%q z8hJ$VFjH=o&dKS~J3#;fK>fdUM1Gzi4!lc?bdabg8!Wqiwc9*}T~rn38+Zcjg4Oi* zwK;b=5-qjMKr4XWwy4vxb19MGFaWLu=|dL97H;jq8m+7>pQQoQXD*U6QO!U>$39$r zwej+S;P+|eksw#{&7gHDdKvcFpwvbj#onAf>4zbk9sufC(2qWLNa?JWU4aJt_36(tuNRPyq!~5E&(ESU!1Qc4p2KIKpbBmSAN}PR zNtSk3a?y3i)G^A;{S*z;3z~-Jtar=HmH2rUDWj#Nh%%%iFOO1vxhS)3H_uG_W^>bD zPhlo|qk*CTW3D&eUD}UIH+J>YrR#{W?-%P~8c-sl4BRVK60%0-d(5cvnGtSd#LV2W z40!JJ=pk}%0J6jf3j7O~zl7xO!O>qajxA%Icif&D$Qfjn4{MJ6^u|t#x`)dZ@&#v} zKSl^JZR2rKfFEx-h%+MNSY4`W{j)FO;*rwWKkYq?iKSDki>JIX8I?wg3(6-bmVWY4Vo7C=@B3jxMARQrP;eO1txSd?D6PaQVjR_e zaNDH91f^i>PzQd>_9Rnb9AXy=`*->Ea2G}c6i+DzWhSuLV`ppT1mbxJ zEx0?y)i&=M_9Z!E;Bjxe5_UD#KH~FcQ2hrHB%P#O-C=ZLgX-l!)7~sGSD%t~gGgo8 z!hMl5tqozln%i?857MYfd{irwA~!oKZjXc-5YuQhZ<(-0HYF*0^ zr|A(H+`Aidh+{pZhkPUUy*Va-mZ$eKqo#l87n;3(l&HQmyp(dybY~JGcGPNpg<*~y z8BB;yvZvfIpD!)#9h@uo%~;MqOCZO_T^)FdnG&8cUmY0dDy5{2PLD^Zhf=7fVxqP3Q+r8A|)*6 zEa4>8wgYo`ewscmDrP|jaOvW_DG%e@x@k~GY3_S^(c$=B%olMje;y#f*Uwh5u4G0x z-&qHf(ssBWo#HvbU2Gelz)THh`L)B71|o%V-;1stTT+Wq~;bTt!^nI~#u|2xpl zp#>a4AQWC)ETaYwwp_qV)Xi z&khVbi0--`80AqG<)dCbjdX%etkblUnFmT-2~NYR%(tDgophL{%C#pwP=0!9HNS~g z7-qy*kTR0{bLZK-K)Rvb2HO8xZ%W1G!KA*)=8wfN)hjcqi*0HRyx~O?l6e0MSb=rm zWsCdQW#a(S+vzIl2H!5x7I`x6*natTNYcf8qaj zu%fTosoThg;!k(<^`i^%7t-aBb_QS{?0guSMbq&a&hp!7CdbZJ?$jw;eN$oD>!!}Z zA{_rrjCUB?VfO(w`D28@h;SlNnmK)&R@nx%#St0;DbeiG(9T+wf|w?FvH{vKEbMrs zc&omYjssx4Wya2rwi0mZ6rO5)FNTXtu^A6)o+EGf4FyYYg zwf5dk5z}cMmIdESf;A$jeUI+q=M?#O+lQNBl1?QpG}Umy@oEYB3q9H3qlELyfZOE@ z`_3N48jCcp+Sjt1D>?u1o;Jj!rDE4K z<*u`V5mJ(FIB|;BNY(SNnsFa-PxYC_<?OjzWCKSPac3DMXpxc`0N@100WY*69=fO}J=EeOAIGi*o(N78)uzq^PE z+pg8RWS=)Ic}E!9?Yo|S&rx0OAA6MVAv2clHKyNNBNmLjjndQL<5Hq-0h+WQVy+3e zp|SyQUn9kC>|kM<%bzCyiCm5;pjPL1Lkab4p2-MqH`WxvMTfbG#%Dk@%9sr`az%xH|4JNtC#v<3=u?Y$w zKB_`aB1obDjFx%vzEu&cHC0O-Aa;IQEslZd0q-T`8PJJh&bWXd`j)rxw%-O$(+bSYv zOl$~=mbd=UFc>OKN<6i}NuX@*WQ0uQZG@6ERGfD6^Kn$#b-ES)Pp8(pHA)aYT(4}^nzt}GUco9jw*H-BqG9`ot2UB zrDMDl*Y*M{@bXE1#P0jU9Vo~jQ!k9h;>nUyIgJ7SvRhXdIw-xA5D2^dJv7lBn2$2; z^4hLLw39_UBX=W-PFSi%trSXDB9=%jalMFYDrdXPmKx3s`@afh|J&Le068BZIi$h- zTOF#_w5Uj_D7Vv80q@k*T6iG=PJ!DW{PZp%CeTU360UC3ZUf|vHS}Ar*hgs671eGv zn9-yGWgP-tB6z2z>XrocHy`ekSRIj29_r?Z0RbC;}| zgoj#}xK>==Iivy?vw}YD)crFr$DK=3r#if|y!yY^nlI(IP~k{&EMuo8^i+aOnCD`^ zvpO_5WS#fw7lbL{ig{p28a1oIo;lWSWx}@BCnm@thuTVf{j%dUan1oWRa$-RLBo}O zRI0^^lR~Za9UDrUSB{Fl6A}%WI$>u#X1)$gK5~*q-uUHy5|q!J$PK_k0v*)Q6HHk$KZ?=rzfhv#2Ny1aHI^D z;Ikt2V4Vodoe%mS>L64({=O_xmCjp7!U6V9NYxW<4Lg+*p6V@eSYn`!#n!Q+A5PhW zV1H>^wzc(wPZK4}AgxmcgzU7n9sNj;C^-k}BYRn4t`hHIwuiXj&~uc9m^j`@_(_sU z>ADhS%#j&>)`xPfdKZ{vz$HYXt0)r0bWInsJD!lDWZbkZb>@m`Ib)6rwsv2uTBRT} z+h^#2b*AycIHOSQ^_? zg-4=oVT8G;QZKBevl<5ySlGHYO;@g2FV)yfMKUO=!ML&~vGPAX0P$#LBrztOacN%E z^&qaYn0KGjBCFU};=O2Dm_gAT~>Rc;+O&WSqq-74#Z^AbPrsrNM!?bZ0!BX4o5Ckjn{~}=jadVFV zX>nx)apoWbK{n-R^C^JeiB|S-vK;rqptG`KW2lA+|AZy~%FrH3{yWzGL7=WmR6hjm&_ow;m;W9Q|#U#Gc5d5S#QR zd3~+q6MeaycqSCnwy{`-GI9k=gCfi5vq0K_seOy}6uWqTA{&2nP&QF1+LVvFWHxm{y9jjNDq=^x>RX3?oqtLsL>n+2|?KeE2B>`+$(_7N=VCf zpt{^dYCaz1(zQzBeJ~?dx0~x(s|s#*dd^B37$VvWWn}=;7u@*8ktT40A>LWx@~sFO zAS=#Qh%W))!6>Vag56Hx)3r$Y8!NpCqyweWgHVoO={D0NS*kBUxt80>=Ho4^_Z`BadMj#_VAySvKyGn|e zQY<7VX4WTUAtfWwD6xad`%bBi^>q30ekrno``GwS4g-t5}rcNuZnq?nW2c(?G4pnd?yb{u?aE_LlP`hGNF zzsj9iR+<=E=}-ae<716SaHpF@H!O)&c^$gx;)RIYnf8QY3K|+9#aOZ*N|RbXTONMV zS#9(;;)DN!UM?N>QYNzuyWPN4;Tz<~!+U~7ULBbNzPwhJdKf>1zn6rYMTq-5-a;mk zWj5c5id-Z{@0;QG7po&-IurXSzcTlgbp2Qxpr+Ev6`*JCDvDK<_N7l2|7$hdLsJ#r zxbZ}CkX7-6$3Ar#N6*H0YXVd$`+IK}YQ-yLx*t~4T z4H+_>SMyI)$`{e+-b|xQA0{UdNp%brcDD}?;FAa;{iKOvr#BpYex&V@z(9@y(afIE znMo~Y3zVud@37~s!TpGhfP;(e;wztRPX%%V_B?p)Mmy+0ggWu6IIPfM$9=4jTI=Hb zDNgBQXNzo6N3-(1&s2zoOC%fzr(4WKztXz`{g7bv|7!$*jP4ENZ3Jy<-YE)Il)S{& zG%ifPm~5cFVscvYe|JgvO?`_Cn=?QzpL=qYGNMxdv~rU>cI397mYUtK=A1Bfd#D(? zxukwJdXGI8X+!ar|Dn}Jor=8@UgnbN^UK<2@rB_gF zh;3brd#+_GCn0k2IjFPG#5QNh^Im7@!Jb;S9%hFGUBCWJW1uv5|AxWXKAeG_+P?7x z#M#p7mteSP!I4N2aYIxC*_vwR4jBTL4(tf|d+CIS#rf_9_;maxdjAomB&v7ilsf3i z^cpawy0KC*lJkFuXn!tH3jvd)X?E;bhY6}}h~&=ENaIoR#)lTw@xT{jwuCPI?ic0L z@RIP%5n_f>?W<_AI=Z`KNycM|<12YN$Z)@aG6kI=X_D5H!j!)5D!s-lP{LLRqqGOO zcK7UpuK37i{_hGKPVKq|L|T^oPH!VQ_GGqt@EC*+*k`j#8yL1;r2;9po$a9GDS>4) z#-PB(@Pdu5DSV|;T1ACY2ado!4G9M5+7ix(c~j9xi1Zk0y{;>x{Hrmd`F1VJ1BH#W zhC}qiaXZ1d!H~ZGA-gpeBExM{2(uet={S~1#U_J&|5ke<p1XL-5UB-HQ~K(jB_(r zkO3iLZ4s-MAVD1~)8y?PBe9Y2kv+J?7BU%P~l;K{p5Q|lp$IcJqY>e1mqPF0oO{hlQsWF5=>Yr0hy#e}tI(y`n+g}Xm|=m1RMA@CWkwzD7iHz=Dw3S!f(RMua6^~D z&L7{Y>E#h>z?r@$Hpo&dIqJn8&D~PbpMhcv4p3eFc)I<+i8CuUH8vxC^B!OoUAx_A zqFF7RV73GB89|=EnYs;cC4m6{4#%_At-|EkZJaYzNFJTo^qb5jE1zFO+)WH?LG-a4P~>Pd7SB3S9Wsjpm#W6*Pu03?Qa;?-#&tlO-+-G;yIeD=M@u#)wNIc4 ziWZ8R>o`XA93l!G7LL zP<H?N7FMLyK8hEV5pw|Jx3e%PjXL4m)%!;5|~O55nD z9Y=L}))fEt0Dg3sUt%R;rPb!_2GLbvsRN$+<671OEgUsDX#4RaORD;2!qZH2tBy8= zO6#Ke2^vWO!bSD!y@t>;c(9jw7Y$p*4dT`qKUx;JBFLh^VR+8pkjG(+N{%$5GETD* zlURWfJb%{EG3~C8d*G3NjyKn%&o){~gY;gUV6L5ALdR00!8gM6*Td*DI69(0>)pSM^wR%9! zt+83GG!>al_micVaZL)))|~^S*Wb%#lXx~}HBD$+y2&Oh>zQHzP^e;O8rd;7mLmpn zN`Y=+xPJL1oH@1H>RVqObwX1mQIcc68ChZ`w8ZC)Eq&6yH`L3MINre>aaVEU9UPN8P2mm zG4V{^w{Tt^!fy<@avelo_+u4uY^SAom@x9i@LXw}1){H9CLV-F=df!%a8DP9Wq8ZO zm`%{+m;8fx?WK|@Wlvrl8NE94^3d1+iw}5KK7M#}*Vl4-Z?T}SpCieIuk!tOV7!kL z8SvX4+bRczyFyQ)E8ka*R$OpqQS#0_C*qrNvho}FLO#wxL+XlU?WMTMb^o>T5*UF{M!lzkyQAr+w^(9~N^)iiCfhMz zs=+k*=+USfMjGeWI+_(?a;=-0A~S$=;O*J`Mj%SP#ON}oK3!o0ao0Y_DEF6LcR9J^ zto>Da{L~qULfu)40_s7}!^FtXPYi1_DhZ3gm1Ej|cbsOSjLVZ7C5+*YPB{Vdx2M`A zR&A-H5auMoVIJd^`Fjy+vxx@R+<462i;ev~c=((!_}yh2O+c_OQKH?Z0vxGu0ics; z5D*0K{&kNtr>UC9YMYE0 znLSceP*Aue+vCec_t9t`p_Aq1xfnrDNyy!-uyj(7(H1!k{qtYaARZ3QkPXQ{}%r6D%{QV zteH_}s&NY~w}R)A*WGn0N#+|LO6;bqYzq!DHL|ggGU3uYNByOFH>}j8cbH~TS7Yni z5-51huDRB;ZRQvtYiY7J8&3{B{}&pFX}lMS4!PPDyul=woM6B93v#?^>N3rjM!ZVE zS}ZGrC@-BZV6R&akPMn!Yi5LpMXn~se^fzYe!lY_2Msu8?^?m_wT@s9*6UUAU%GRt zK6{8i9p=?xBGM1ozSC{73O?LAWW!GMkgs}t98#MUiojwK9dC-ih5Ju-0j=5Zv!O^- z<`=Jrj?C0IVrnAiM;x`-(+>RU>yiRjx{pmTU$;*PV>8bWx?^_g*Z}*O!6TgnoCYat zJzu@^qR$Rlj^sSM=|U?AuZ8f77e2P(eI+*v3Oy4}}B2@07Zozn72GbsB1Xs<6ftd@%e?QNb;Rdvj$CQtsiYWXUUGb^jdUl^){N!{P0csVIiGfFEf$P@Ge={*Z+XiZ!`5ER zFJteAS?pkdr8X}2hCB`Du03ClkOHMY1O~*Xt#S<@iwsr$?2YM%NZ7nK<{#NPKs@E& z8mO9%vmBKDgjB&vzV$^it@a^k7!gx7N_A#{!`-yA_3xl_ETZ(dr^*s#VompjspOyr zSCEOth#KZZoP?GjZ|YkLFxNVsyeTSm#Ym{@2Ypt>tMJNriT*v>=X*v@k`v&EFiBro z=N%dV@m}65RI&iw<^D_CehEyel~~V0go-s!2Pqav&w~CH)bO3ystSJ12_~Wvx2__( zZ*Hd+w-zV7h0NPCM5Q_~Z@XYT16KxmcU+n|N1@iR&lJ5eKOYw@UkXT)FH28Yv*o&! z#dR+)zyNO2_x2QJyC77!-;~eK5*cBmp|CZ?bdWzY!m=HRIXZr+p|j3pdv-FdfWFZi z?;%xuN*h=}?Hn>|T`*_+3;fBysQ1LTLBOGypi4EQswd8|^}>htqRcm>QQN!`aH*Rb&W4dPdj|q-5lIO^n7+-V|~932aP}|ENyFm}4Kz zeZ(GOEN9kC_LiU3dp{|e&hx8uwFw~YN)^qJDxOfhQW&S)EB|RC# zUS$15_MG+ST4_7u0RZ5XBDUrErObhO(MpL?i($~&8k4NkdYemmlDarS5XsB?uM+$< zR(E51l~Sw^$IX27SYFT+W0)Uv|Hj8q82t%{TKWCVz&2pq9q`E=W5h4w>$-Y>!_-CX z^p5AiS0^B?Y^dILQo2=`BJ@=j{kpx#Gb=r_E5WEBL2FncLd55x6{9EFwWQ;iNQTX~ z-%{LX=cRbQst!LMCAKFK_^Io+tVm>}1TVW*aNik%vxlHoQZ|5+2C+pEoM&E5s1xw{ zcX3q1E0i=6>k{y}{-Yhvuy~^E)J9$(g3OAK6615veoh$be22ZtZu{Bi<8u7SUTvLV z-8Bu!v~yf>vG|&+bJCy$bz`qfRaQ9INe1Y;F!*Kb)cFDbAqUXzi=Z>P|SK@l{}*#`*MZ-Dg?Mb9#(1LBg-<4sa`C zO85JeJ+*JgyWIvrXebE}dmeSdNa?Gg@vEc7$&;dF`)=S8H)hfhVzV^WE;OfnCPRcm zUC6}ge}F}|+rPiHW{pR)b-pbHE^P+qA`?mF7)me`t10w{#P_^wiwGG%OCN^dJul-} zQ!7;H-}iy#)ziYTuzO=dJQRwa7nE+W#G4^_ZsI??c=3gFZ4*DM;wWo??-c)KsTf&b z1BsUr2;|8yJQ-+*5eXfiIpWNkuzAWiknkd(+k?j*mragi#r%O2IapqVae%7OC) zz2Ce;1rTVdunFw#$iVv=NR+k!M6iQePG0zO!M-d|jkNcdjR?ctbX_eK&O!S3LO0cz6CKAeMzD zIT6m#AXD8Ilr{Fg3!q~?I9$gTo4JdKifE?CRG$1VpU$MXc0<&66;?33Jnx;bnHr!Lq+22Py}mCt zTLEQJtZ3BWxQm`-+l-~LWB;?J`3 z!!x|P@qSRHAwANKN7gS%yt7Vy{sx`(=%haG32W)>5JHXiodSQ2zol$l&8@opDJ(o! zECSeLDSHzH5&pd4d$m>!Y1sr-k))hN{d7l@h1^8w;?WZhI?H|N!gnYL`GLn!k^7m% zkpPllM`R!Rjp)@(eZY&vr98f7k#xou*!Z8>f*ZZ4hz=AelPSnQM%1Qkt)SG>NsygkL6Bez8~FBe7c>B(7tZuktQX=#(XuBdp`Ff8-G(h?S( z?~zrOMQJ5e4cJr9IeH&3s2L&9_aHrgBqm1(*Hr}`{DWv(gF|F@R^~Tyb~|(65VRP$ zU?TD2#a6V)__jvS-bt%^R8GddpB63y(ay$Wu5o3jSUQe*DL_dZ^t=pa5`97bRq5jV z?OM_G-d{yRLWSmriJ4U`if-9t+x@UR?&8ZD0w!Ne7dS`Phx{LCsORJ3+%>lg1%cW1 z)o4&h*X^yP@-h|?P{whFGutJ-Gc~Yy^o{_H!~WfP+}l)U^VR|gZ#l5Z68h!$CpWD+ zMs>1<`HKoto>#6njrj0*S;>wOkiZlccS-&x<}4)K=?&>ks_(8SH;ZsS6he@1Wqy6+ zj+;rJXJ%9Zb>G%mldT(4Awi_53%U$PWg?y7S$VgP*Z1vTht>NEYF*B>gqfo$kOR-U z-4%!vwIUi_^l|wzEC@hievbJ0zD}H&H@gkW&dGuq*0f=jd1S6@H9_w-BV4aU!85Z{ ze@>68EK~Rsy7Yll2A#&=T>3pwk~b#z<2wA%M+atS)++t4AYcAGG=wDpH(?wZ&zeGo*Ig~L zK6S5uuQuPK_+6z4}u{?Cs8AS@miARLxQ!Y zCGRzV(Yvnajv25ZLvfx|(A&rMj6nko_XBrEaPGQYI5{qxt`i}mw47eigY@LPGUyn< za*Dos_`yHlNxsd@;3&yao3u?D37xV32P_ju!b$~N<3gJ@^W|x0B!iWDx_@4aD0#E$ z#W|%V(iEkk_cp(8-FP(T+j8mXis}$w$;YKeK)aDZ=_$lZDRCb zPn7;d6D@6m`1j}IdmwD47(gAAL_EM?6!CShg>2J!AomeD5Dl^|XIZ&B2+j+o(FPwS z?Rr@|*qpJllGCqE#hfnZvZOB9oh)Pzo!8G>iMy;$<)@6h8|rcdfCO!6Twd4*RNvA- z@VDEHXb;I#YpBRs)3m=7NQAN#Bq9C|$I#CSLRc%)^e2_xXXBpP7(5!&rRbGRn?~V{ z5g#;xhGcn+h>DItfE8=z{h=k-TiIEFjtWYZq#b;v~<^ zHR&RqGzo89-X}^v-mnmLK5m!RB-t0#ebGU0)iOK2BWc$bP|hMgb(_X1!&BTxx7-Wv zCrv@v9oIY!F7x^E=$*rJsy9vi5HWVTDtDpwOk1zMis(_g6XR&_bMLQRB>CIk!{}!s zZnEYIBNnxUB4=bdw2VexH-5z=)E?_fYfp{y(G znPMyK*baoMg8P2D`XN^otw+IpT@qWs4~_+3Luy1lg7?oHm!HXJsySZ=^I5XJM zUy16FTt|+bZV-qVYCaUiKGpd!jL$p_OcPHst~%$$5+ye|2>ZDh9Jm%Jq<1 z?LLUb@B8uAfrvKJXji%BCLT}qi+-0kA+Fa%<$}gpq_&-~$oOJo%4F*2J0S7BHWZG|my9efD$i^}>{ve%yf9r?{z*T``nvhBCVf?#+R zcH?ccUhyAi{CGV999aUVT;dZZUh^~Jl_||kuYgn}Id82M{*G}_JHIP$GgHj;u zJ1k(m;Xn3akpAcvjUE?`smHRk(ls6kpKwxD%*e|!ZpD!`kWrj)QBCg9(k7&2kJO^q zDqK_?Vj;uUipy^o9+ZdG<>)T(xRQZ8(Lyk05)EV0)Iab-ig{D~nyb#w!W_=TdGTaN zT){C7-Q-9Jsf2;Fk*nuZ-{P#Ec5ImykbY}nBy2z9z**6{v$sAl0pBpyp0#k?9E+n5 zlc)tIqIU-3(W@a4i%A3+|A+AhQlMb+7zT%N*mAf@9b4KGAVAM1r84BI=3^@_Y{eVX zR-S0&R1{j+`*TemsG39~^1{OdJPLWi%D5f?J%Asmn%t4#&CMGBL{TKtD-{$976b(# zIYy?5i7f&QtTwH~y&^=7>pTh7%AR*U@oG=K>sf5Gl6wn-u6CMUavc$o@T5VhU{BkI z@e^hu2!F-;Vp`$CdsJ$p1n2qvF_~GSbhlHWVF_2KY9r>$ubgxSMcC!iG|J9@&@DiS z-;2r{2*#cDnTtJ6aH(%wnk;{zAEiw%=5y+P4OA@I1}se5sxV_j%k`OHs7XnbJLbr~ zX{cj`4(BO381xBDvE4z_9bl9d(o^z5I{OfED>_ zsNZMpCga{WjQ_KZ;}h+Uqe%byM!gWwB|yS~R4`23WRND6Pz#(U<}L>Pj)C1-}D9@ak?Lpvw; z#qNMIc^k03@HQ-Y8vNs}+iO}O8~UgZd%JiQS67=M&*%9Xy4UAJ>CEVn<`{VW1KX{j zQX^_^b<5E2$A&)&v|Yk2S=1OqCtg6g0);bFv*4%UfPLP;6+ zbr6^^7rlMH65?cw;wuI`CKM~e;pEd=G4cHTrYB$Blc)UzTZH03I;zw%8c_3zxro#S zv6h8AJ64hID#c9F#6Am#nd;U-3T)s8{!-SpiqKrim*wu9^VdkC;nJ_$vph(!UUyLi zg$%JrFN#`>Az|FGFJhBF;~!vat}(%T9~|3|t!43GKphBq5x|?WM6Oq9KVQ`~230jk zXQgbT>~8P{cQ9*P4kaZa-ee0Ua2TSJM0Q0+7nalZRR1+7@m_VsCk>jOb|#^)&0eQU zYykJqlj;P~JyQXDif^Oe$TB94a>gi9Di{(A{iL)x_(Kd?Mk@9b&A|*ThMIfMz&>_` zVQ*x|8W4z^Lz7-5;4^#be#8R}#5{Nr_*t=W9`uM!j|A$``AIB~67yNBjTsYzCI2TL zU}wLyxHc(=hO*948vq{?d$gtSA9`_IRGLnGq|8d|O{Gjou%AgctGpg)3PtlXCN$UP z(A^i+JFXpR=;$^HdE2+zGxf$m#bZrk!XcHa?K{xtVhB0Va-PBk-fW2z} zcbAJ=P^r^NJaPs!5nyl}8(OkY^(Ut56k+*_b(>_SN}Pe%45dD}N_SHWO+yJIYNcp> zA}!>yBgK|@Uw8xzu8=Mgj*5`~Z^e|#;Z7Pmo**kCtXpCmj_T^t;e~|7>N0d9 zrjZ9weUh8jQSfFkTdnzN=h2Hq4r=L>e?mnz6D(rH3*EM4U}%FxoPjQ2*6cNpDHxr3 zpKE)D&{li=>9rW$bM$zGW+I)#;5e=xAN%h`eUj7@ZumrezvL4x@t>;Dne~yYEVIvw zZQ2@z0OF$2yV~dml(uCo1Q>O#uFssm#^2zQr@tUM8;zz*AE)VaOY14Dm((QADsq+# ztd#`zITkd)(PVyPvZiPwVpiiF&pH7?71{?sQQ}y-($ql0@)VZ`RhZXYcOE%|a}hxT z;bZ~i3#J#+Y@-^I#Al#9x2WWc6cy{XEB&i<+WUrqycO#0RU{NfXIbt~O1v@Fk(Oe? z&;Lh+InMf{$$@q1jW zL83$jqoEHDU*!gr7SarC`F!FQWj6rdE>+eTtU;BNv0Qu7jD{iusA*tTr$wp_U}2Gj zXLYnFsSanj;I?|te>&fe{OxG z0|vT>X^oyUov$vELW6(23Exa6>vRe^M`$FOEL9*jI19n{9Q&Zc(8gKgpRE7#>ETVO ztoUi-V_meVWjSw=*^`T_P&fFVT*v#v&hcu_*Uw1gV08AG;P9)pMp-A2QOWl244L`a zy>pxfY$K_RMS(6Q%&r?|I1$i$DHxXNBY)@q8ApLT@1kaI7Bm1lW^V~uoKe?ohQ5=M z%NkAMHAyY0$h;cBR8S#E!1H%|8*y`)MB7~Vr0Y$@up;+BBDR#3f{zkLfwiU%XGt|6 zRv)}EWb48eJg6InQN8*Zh==ih-hI&NE#V>< zuzX}}8>bOn;F&8;qNi1}0^_BnU19?%SOi<4(H43KL@Qa#?7yh<;{A|B7U0&v`H^Yq zJ|xyfMRxJ^M6Wt`R|aB~+_z!#7RcGKxmX(1Hb}G__j0Y1d&xnxWeopAq|lB|k9n2u zVv8feHoX;_xVgft$Pte^=!J{=o(CrXk3ihLu}aFo9vzd}MGzvsw`V@4v_S*sKj(P7ykr?e`@7mbGMi1%qlX9H)(C-g>mra9YSk= zGAb9q;^C=!spafKOSPH~r#Cf0ZT=>MYvu4|5CJKDHlN~$@ti~7nAXs8hICB&D?8Ic znSe+_uf1R4`>n-~NAl`uuoX+8V2aGxJfimF`(`<820=x`4T)c0-??gqmf3~CmU*p_ zm4OgettWNZyo#fT&#QQ)ined(u7;{@fQ!v}hohQ$3%_rQEZ96>4;Xq22|J=X5Qp`r zeK08*qZk3OFmARh)ha+h{cuh&rZr#|timLEF<|qIpetRJjiqh8UPR2F3O{IhmbuZ_ zviF{Np`ExIPAO&D1k`4&iSpsV;f&NWHb#ijz_#CjmZntS7030BqtPMIx*Ivh;o(p$ zZ9ehPWD^#0*~hJ_DQP6@JmCEOY)6H-QC4PRab}tXA5{2uvSrQBBHM$GqRZpd<~|9g zLZmmcmReac(iDPTDX~aOuIIb(N;SYUSWeP*3|JC$0WdW2;Vt}WR4@P*23`@!2nMSc zEy^$p1{| z%irIS+i4JMXWjFC_+)}`y4rw-!3_eD`mFNPjD-F zhODEXO~|x$=XJLhU@bow=`nKU%I;Jfx)0(4qmUx_DaLde0f&Bc6~7H!6LefL~#YcN(K}G z1&Q`9W!XPN*L>02NOBU^9`M2hBwMFvxEq6AwCGE62uojhmQb4wJm&JCR z#h&uuR|@q+GYRAu0mJw(uS^6IZ8Q9ikXj}{a6`lq7zR%=>HvWVm7+#qJ%KQYf`{9B zCOhf5B2Y9{UoFD0Ok2y(CVzgf=iIRBY~w( zsEA!zO3Wo~TZ3WnTM`oGG)7F$biQ356W(9c_q*)&_+sn4o*I(hBWBD811H&oZb`l#rT%mmSN{Wq^aRZJnl}fT z;+TftzYY+oMoF$z`S*o3RjqEWh?4}GNt1I_;JJEC$8tU?H zq@H!z_$h#Ci5!g3=9|ps@K0oJp@4%7bjQ_%PzeVJ(8*n4t0%G(Pd|A|na_Zb)`E}v z7eW9qK%mhRJf_rKlP!$+_=f7QjiN3oq=wSP)|?X#rR|emMQfvJCvs)>^kX3}EL|y3 zz?`_Ae}$CMFZvE#07-r*F6~RSDnl7?`$1|>^i>Tf%yX#DUAx;Q z(cCXtd>}3w9DIN!JPfPSa|I9+kQMa?3gyR&flOI=ikF=$+;FN4$*G6 zDP@l{`#s4wQhRelZ@+*$6~z6i2_%wS>ZEmeY{;C35onHR>sv~ z`HXO|vy4kNBf|~T75Fh|nK+{vCC~esCtLNQ#LY1r6>Pbp{fbGoUqGEsm*+dIM9!Q- zV7nulz`fGgBt({9c%7eiIFR(5m+iv;?8F1YIC2dXDGq;+29KjC6j6N`i=YS7Zr*7aCyiY@ZuG-^A6 zGBaJH1firK%;x9jAAX@r8Z9kt!kt`|Ofb%!J!SjBNGh-CbjLoNMjISo5VLXZU{wJC zhRTIt=AgD?Er*CFi4hxTXmV=O1Y4ug=m7se0KnHKpK&PUw1kvm%z%=1rr!IX^>cR7 z3DHC{TM$yPf+uIVqa77hs^Es>(!y&K`* zO4}+jItmPq4-a6Q!Zdp|x$Ok2dC6tBQN@nV>kmoCyiSwx8 z4$M1c&BcjyM@0tt1?Ib$eGZ&DfKB<*aPzv5Jz%i>^eAf{ti046bhC!xaL|*j58nyc z(#QU#L9MZSjzp`Pc9qIdzB!Y~86#x8>S=>TCz_CyO){6%Gtp;2(oKhC&J`^-`uI+5 zz7Q}0bxuBuZemyfi<;v~^+U_CrnZz^PGER~PIHq!1DQqB@FiY=EDU#0czQtv zJ;NCx1=L=8N*UZ*WmRD5$x>Z&P_`sJmGeutH zsg9kd_(q-5F9Ds3&MT!iei;hkDafAfFb!ynGVmt9Rc+xsP>Qc~S6#yFJX$HT3Xk`+ zs(3_kyk$!Yf;xvYuL%=LJj*GBd()P@+@{c_ks}`rDYvXmidP1Y;H|!LJJo8bAf=&8 zoyI-4RIOofkrykdMSp$#4uIE(#X^@OdNyux%a5GsLnptx zE(mHE|G_DOBbv$e+=3aD>wm+Bs^N0;|9lv}b3&zNU@_YC(#e;;T{?Xk`xm@-ffN|VBhir& zdW`+IE~DXDPWEuLGIZC9Ppy^CQ4GZkJDF&?5_k^+jqDynv%<4~>spU#qDjY(}5pvQaK&}4o& zv5zL6aqSa4c4o2^P<`dmCmgAxuLXcYIg#Xiz$wmxP$wMxc3F2CQbMr>70Yod)i|G- zBQc_!CI->gtnR-a;@6jps8|&v~V_En(fb`UDkf9XZHG z-;YNY=fd#rI)9O7*F*&_Dnojhr0iKGN{!d$Xbtt+c0VaWQx2y1VhfWJw!}tN^X=2* z`AFn5Y?9jqlP7F1XHpBa?G>l3G{!;-j0|XomzT4+HH-D|kS2W$nT$dem~9|_CKt{r zE)6V-M!SF2L7AZA8T)UkeK^{L`+AN&3%$g;#_Zu0yc#TePWSi4>v+oKX7=>UcVZe~ zH$#Z2CfOwSj#Kz8HgH^t_7XVTe0M>V(vOI|R)Pg;zN;baZV)d38#_6l6YjyN+2u5w z3IyBk$~x1Qzttq*FFzV&jtKI)c_k`-+{%=nhGW2^Q~x;P)kCO)T>yo8UhAzvK7`$dGaq84)AQ9pwfvqZpJkQ8x>q3bOh zEg_!)#O^m`4PwKr$I~+)Ub*9xkD7Kp663@AmtWO6H@eeL{5&uw zef$0S?58+V;s%NS81Y)g41q%kaQL_TvmKYnxMN?n^nfS&=l))RVqW#a&y7AoDxm=UmJHpOUG(_SeUf#{2IImMGS zRmK5+1evD*>%>qC+v@$YBFy34iv)x411d4xT3<6<0!e4>0Vo|25qce(4dd?d+SxX3iPI6}X4OnbGk z`3MAg$uX=>h9<0svpjyuNgE~)th5V2H4LNK^f{3El=EB@9LdEnUPQsKvvp9}IJJNE zM?MYUNA*`tnEdmZC5Zyf<0Zpq^Rn}dL#l#T&j8i7ncYTy&<+ap2}dcu1|Wg7N3gU! zEIN?n-OBF$a%x$cx+!el-QP-8pXvMAJ=-%(jRmh9=mT@Z&ne!Ih)+USNig#W=JC4Z z=$~G+XF4(IFwc-I+r6wN!xl%Yh9B`8*Z06z6+9I{17KnaqN&b^tU3dSACimN2o1zS zqA;aEMrTLtiq?j}9a{|uQ?mltsn6IQKNQSc^)F4Y{~%^Yp@IoTE#S0ChZVfM?6gx( z99144Ip8qY3`(4CGA=JWRgP6w2SV0J-wblOMxPR$+%rM#AeMZpSvZ<9K#t(YoaG@; z_lG~g8y#YgHT9fsdVdaZ6|Rgjo`df+&fvsBbd$1?>)Rw>zU#Ai)20)hXprO?T-A)v zIhHBIvAHMP#0)5%(4eO(!2>o*2t627?6}idN=YmLD~J*)ZrcR0CtGZyX}>Sh$2syx zyE7H64)o<$EofO9O1!kew%<5XJZ10^=bpMFGbRSuFnCu~eduPuT+oWv@n{|+wOA=- zK_|lgn$_clz$6L8V~>$A6Xxs}dS+7CUo~v3W_Jvqj$VSFVw=fvX*i68Iztg?y&8A7 zQAY`GC0-a-=dQ`N)@;9ydR_bL0+k}{niIw!*0Ak1m_hz+&CQqBBoeYO#_C(tje>U~ z=9FK}H$Js!Z{~Q%(qk)hS(=LVpMfgJRLt*ZBqT9Rk1&Vnew^1Dr2Fm|CsHg~BkN}R z;NvjATH>kq7#rXIjc3HVSZ+~4^lU!sj;6uuqjM70%>7g>f}mHmtE)g_f^=(~&Oo$P zhbR|O4*}Hj640yZUz1R?s(J~Uy~8U!y5!~M%17jex$yl?QK9QGL}b6rMG?@ zu_DhrS|I_xU5VBwnUiLrCB;qmE(t+r21mvgM&10wix}U6Qi%*R2>+gug* zjxF}$8&7X7AGx$ScQz%Ipc_(LS6;`y5;>xw5$8r(JR1Vf(8qrp6$KbAqT zQoC%$Ztd{>Ei-!R^yBM=7IXe8^#=f9?CIJU_`Dq+%~pN4p7uQVI&(RUGN zkD=nNZ9$ab96n2VbQ7RSnRgc*W?8)*|Hs9dE)Gi%%eMUSt-+wQ12@IJ(0X3Rz? zBX;gElhH-Or+2EuvbkSiu!5cLA^BcwdKci$rG z61e>vLSHo{a6VPCMo|qX$}9Snq3(Ub!5W6hpCgFSfHVcJMLGv00`Vhj_QqsP;_Kt?;nloiB4lYg< zLfU23)8Z<>RibYS)fRMqsYE~e_UdAt%PaCfUuMut8`Wcs@}b2Ma}(LgDer2jnNM2r zoMlh_nHUE=weqN2YJY7iht^L4ZhRScirU{Ts}Ufn1CU8CML5TZc!l2U4uhU>dnQs? zV=HMIAlJ<)i5WRNsW!c{5cM7_?8$(FQ5DjQ;ymr9sn6^N7MT3$SL^8F9et|HLr|RO zRH}ekphCsfzfH{&Rr24tGid~l{;Xb=haD64>Nxb#M~Q=c%>#q-U)zH;rPEp(ZmC-y zDsesSVj7T>tz`BT>~Wu8#DYKe+?=lMqM-=D)O~Z_-P}q za{p3W3GsVVl@^ABTK!c_$&fjf4E-C1w$WwWdC8TskQTpH*}uWo6`fs6F}<<%yGCqq zG?}q+1zGeIK)TU5>>gwz63g@w}ezYgBE zGz-sh(X~uLbx(R1oEMXf%t@FcxVfcq(GLX@K006;0gAHvE^Tpe1bi5Cr2fo&fJb`c z4JUp!g^6$4d)`ul;X6eu#J#SwiC*W|VQey(rK<_h?yshRf&%|c<`oz7!3L> zjr%&|YGY83<=-7bhcD^pnplb}!Z+k@mS%j1QoMs-fWqD09c6{`QPpO^hG$14qcE}Z zEl;rq?Q-SrH=!a_y~px!_w<%P1soj3{6ov2v-X8B;^nGqck}G14?qQn+jonZ6L_9- z0(Po#{nPlv5t!H9-(Hep*a7MYi+4#aqAaLrC4O@Z-BNe1?vFjLPax$Qo= z9WWv^{dQ-^>wTUu`I8W3HkhTtvO$IX>{_;~0DVhv%|W z+P0H86>?X(|Hm3%O#&RA3bub}=)0t*1ZD{0Jf3R ze+{EWC_S1udw+uEa{Xl_!w5UM*jq$C`umqe^fe4U4oalYn#?0aKuZk*{Mf?2B`x5S zNRpYeobC55Ax+eZP}c5FmnJ%P2b7YN>NP&y8iv9I9wlkrBdWc68TlmUa8cQ9zh;zJ zBe6lX++Zz#w3mL+H&nD8{CV8}e}Z`Vh~G@qdqI1vlq$-DtIZuSC?GmNS{0o>a|5|z z+Kv1XnDtoPWvrtIVC{Zv&5`FwGVv$RBLPt|TVdJ!yj(-9%E<5*_D|-r#R8TGgBz0r z=gnZ->v2e2m;_H!4Mygwr|y@siEH-0Y>y8NH>a{kwpF9=D%fu#pR>vVMw!nU%)?-& z={c^BH`L0k!?_s3qftY=n{9Eu>W*-N>OTY2QLyTS*N#~QA z0D1?H%{Ja)HyU4konfNqFFe7>Dmi#tPj$>41N=`pN{?9BjbVqWe$k;`Nm>J0X-F;Pkh ze6d*#?ODqdmL^Q*_)*8N(F=1a9e0inS@imW^B%}i^XtJ|HB522QfKI)s242-pFz?4 zN=ZHCn0}MWcbOz=31^r!m5BeCzMqnBpeMEcJgx)YJ6jbu%WGpD)~IAPT{kxifODeq z0FkQBhRX@`sp3!6a>s%7rqzRx0&UOp;|pL|&!b`A(0I%Xi9@ogU|kxD+s?)mba*Gt z4j-w4CXI%c`0XARQtCrf;cP*)*l!S64mAXc`iS#N+g*mD9}ytjj#^Xm7y2xI2PrX) zLPGswV%kE@O=WKcxeSU`46~WMP|L~JG zPC{tuZCP}~1;Ae*AORv(-h}?Td;ee|ZrQ4RSF`X1KWWZp!5FHS>nn}Aw~yRiR<3nu zuLNcLpQ223Ld{9-?fU?0Y~*sM0ePlUd`#ZT_QUMlGkZ7B-;34csQqZO|7sz4)gQ!W zfs-+<4?BGaDO=p0;a)~yrsMIO_%<>;^Ol;EXQ8*HqX|P#+I6FEm6mORAQA2q z)zku%Q>3jPRv++mAs1lw(TE_BfT={|XZ5nDt6VF&&#h--ABfBj#*sT|*#(8se6vPm z3A5hHPz|ws5-|5$37bVDG^Ou{6FKc<9#NKb;>@{s^2b^6l&(oHeY3Gps>3 z{BmS$qp}fDEFqhQ|85y%bw%Uhki41Qy@S|%fLf5v8jT${PcF4*?6*-HgCW=u?1i-+ z@Xlemd5>2N(gFO#(&^CJiY_wgdN=^vmIoZE-a7_VYvleft7;$E8&&6E^d|cb&j;W4 zQVMiYhjwl-^5&RmP%iFyYa_xVpsEAXHQ>xB-bV$sTjOqxWE3Fv3ZpS!UncCHI|+HK zayZ0|4x9Aq=2YIO$1WN_g4M~?8f*~jN$b$lhm*=tQ_t463yJRU_F7f zX;s`~9~`!VnFB}y&7MjF_;QktEo^vYJV^V)5Ow>|6RpXd`e&;g1YmmdkF9Ds064I@ zK37&aBTr#QdfJOP&xhgYc|(r~8$Afg`gtsRU1`FL#`cytIIcsxZ(iv}fiiac`gw7e ziiRpYdj(2rizD9mNl;5txOQVmRH2rlZ2b)1ko9)6-dZ2Q$~b(+ni})uJj)l3AnVW| z<>-ShdJESsOrU+s#PwwhD4E*h%rh!hE@m-zR_8BwoD67elu`;YCjhn8U_Y%DP0xsG zPKcZqa_=fp)JJw>)Dr9+S$8Dc2w80fZM+V%hhSQLx!=%>Wfj`{z5R|?b=lWK@}yTT zHx9c~EL{aN3lh5_ULnF|F|#a(-)^^^s+RWik+((+HFan0ef4FmCk^BRY|9YpyHNjo z=z*JPkxKfa1^dA={#9r#Q@6?23qIkF!+IeyuvWfrEvX&|(*1h3?sT0}GuLRcmiW1& zeh;@+{#6vyHTbOqA&f~7NRVYza=7P~S-tjFdLBw7+$L%-zDMaICG*<)_)L!;0m%i{ zZsrEgD0KDx5Jij+gXEJR42J4ujg-XGIL6CqyRk-%*Bl5bJ$J^R;)JDbhQI-j2Yu8> z@Q>fVW^(XO&Usj;$!Jz0--)4VC>t~>ylg2Wr04@?m%wDHHOR{IyCo^LZi7f)S3SFS z&XE+gQaZw<%-`Ch=raljcxP+`xH0?b#weY&0VIp#!b4}eJVGeS6Z?8UR3Vv6xlO5) zY)dO0`!Om+++=KBJ02>vzvc%EFq$dk1-lzirTO$tw;C{x1$?N3B9c+k<{*pep)nO1 z$MW2%;Fn&Q>R8e^H~@G+?-U_zVfoNf9LOg%?V8!L2N|_6ZfYreCwMJ{ zQ{7pb8c|2gAfO<}0x4m^l8$!8M*_F8W}O;f6s?N#bYHH8fz940l;a2fh#zlhnJYtN zgy-GoKzHURup_aNGZyech@M1dYZoEi`RrksEFemTs?r*Yi*gJ~oq1{O6@1UPumPMV zuVxwdY`oiT5HA29)&;!0?|TF{q(*{Pd70kDrJ*4Bj%!eRHO2thDQ>Pc(|ij#mWy~% z-Q0^NygXlv;qvaTMg`ZKc?jEHqi*3T!iJ1Rd0d~0)n{*-7=fwUW6|7PWzWd+a4ndR zMBYCLl!>!+!ON@E&#n&lIBR0^dJKV^9NEAob>u|?7o#{yS#;+ADv{rr;LR0epn}F_ z23S?DzKPk}AvOY)!hC?-5J5%YO|jL+?3crh0z!JHgglg?Z=g8HG}bl@-_89!2z;QY zAW`&iGKXBjYNYH75Fj{PDWIA9E zt-63PkgRp2mIN-N{i-;B}cKXWcx9qOfTYN;q8L57!NvPx~4}0YhC+qm&{=tGZ zN1+OUk)=!8hD2P|_xF=&eaFMGx@AJsHbd4uGrf}Sb{q)^oz?2Q`vr7m1k5k-3xB~Q zQ1;vq$K_h(gu3sWK?kc%xCfvjj-kM*5WD`kNI*ExJ-6d?TK4B+GMH}MH#c=KRRYXc zSG`{nRl0_70aaxejUsFUZ&7q$)^K*7hSZQ@?4hInKu$y=NUN*bD05WsC;0$KDEVyU z>Jp-UpX2ey8i`#kKF!$t@qS{X`HoUmwW;(!_pb;t|E?~OsCHY9^e=IWemwL%8NTw&$Gk0#CUiHGoGv zG*%wDL=j5P>j(H=NKQ1O#0DDb23>Vt*ObonEE!$9B@O^|vEI}yiNfV6eH&hZlfV!8 zCi<1@BEG9m(pdsZ|ILHWV9`NVSRvDz!NLfqw|fm=rC2^@E#Ju*XzNFOh!-AqrkL8M zoxZerFw8Z?;47yk!~2WB6$_IQ%V|F+2Cg3BH^9?KMUE-Ev@w=)blXpZImJ(?HnUfP z9Lgb_r4<`vf64|K^6jAS4SP4O!y2pFIf5N2LLs6oAGiRiqR~_PVRDs}K(GhiyLUTO zAxF54-mUS>XJqp-zM&K-&Crj<;5a&L0jbs3&x_RNU!0b9^R0aHGF&5XRfQQ9xyXuH zH7xjXtI^rE`&aegh#>feI{p zaZKygK!xKxDVa^YtZFL2{kv@TVTkQq@%0B34J<1k3pxf&b@v@lat4I}1MBq%^yKkMq z(w)Ke+p$AXM5OU!Qf&%;#Nv6i9j!k3>UeNNc=_|Do74cmn0z%F*j)3h3_vS35A!!m z#t10)*Kv=E+9PcE9tCtIo8mOFdQwq1pAf2BGqW(PIg5u!-L4faR=e+`y_tf!D|OMG*uMtTORI-_;9 zm(vp3siuXrzTb*XP)n}nc4NR%;p`J)OIIl1x5(EK3(X-i)9F*z$WhQzn`aJj^t0{B zx+!2OWU)1At@l}ec&C4>Km4Wm5IF1NhPTNQL4VSpVRinr6X&rj0HWo5pZ@^6pfIL~ zrGjqDX!p@20x{xmAsr_C!u&|#5iXd9DS$gA(aWBKy!WM6F+4VHZAvAb);5{^wW;_K z>3;`6MB`wbaP7?q7mPRkyx==TAEaSmr>%vF7=frmeO^v8m-j2OPY7{JiQh@r9vsJ1 z0hd|Id#!KUV8@w0xO*bdUz)!}f*eR1(_KwK$#hX&$L(Qb1G!=v->=S1X9Wz`QIN@i zUFh*DY@0M2beo%P-p`WRKWe|htK17Vjq&{z7|z)M*kw%U?;+G$v&G<2NOzk!!Yesq zG$?SmFs&q5^n;VdnEE!@I`}`K%9>&w_&Z| zBr0cb7>^G)jn(_u6hN_DdOXpACBZ03Q}C|*^ZF2%uSt0Y}zF0L2< z?faD?29fTygUmV_fCYo(eeux_Ti;}&v84MIlW<=G*jem51^<#MEMHq0>b0P`aIVkm zj*5fEej4Lhm`R!= z#__!Cu8A~iFU&RA)9C3P1HO~*pOhzeqwKLf1aqA*{| zt^!{xH5-xIX4YxZOsZ@9*sae|iIlmQoVXAtD#O+Ey$-cP*>;Wa@8aFsv?$u(#h8-$ z4x%L5Ty|Ecb-NwN5UkJ$J8+lyJz7-1tJa1x6vqa#WqSsRj<#MYb6Hi;qma*w4cccy z@aSeFCBXfRH$10kOz3WiEj9Df7EfY#J{Ag+cpfkt3Ai{UPrTd^dhLiI%)61QK=rY% zP#TqAVaz56T{>~@ju`%Bl>tmyaX;14R)YKb=N;LToQ>@DM=g|uEA(HG2UC@fKz;0r zjvaP@`cs*f`WAPqpra}$v3lzFaE24agSa- z+!7nI`WHvrWgxXRtT%6I7y9J#VXd$S$ed{*Qlm#~`l{dIK2-01 zN?6C%1@2Gd5`;a}2WB4K=HkKWo;HbF#g}pX%h2pKBh=z!r!+QY+tbCurDxZ>B}a;& z!&DxYK)CCwq37L*-8H`%D?-Z4`!v#J>H7oQs=Fsbw2V-tHS6m?1n5pO`Q5_M0F0I# z_pY)SfgKhk2;{d6AS63|pWB&Zy8xPScfQhomosO`0~8mw0{0qo=Ylm)P0E9|iP z<*j_3716YQu3`z!NwypnYIe5CbHI~$xp=Z_rBRSxU5b<4CT)y2^eL0tCKvjySxs5@ z@Ku*}hXLut#d%IPJKJHpqEuChZ#8_oL`8Ymw|UT=d!fO~oKIf1z z9DG_{t`Geq?!N)Z{kyYNZ0K&>cM#v);_dSHiVjv&P{higHEkDe|4 zsj9DK?4Mr0K2@Y8#%-T%Q=0%ljPK0%I&3p$G$Id=$m1|oZe-(-3OLS}jskD3MaCJ^ z!|66*s`!^Mqfs}Pdp%q#g{vw$?6l4vuTFebhDiN=y^{17ewY1BsS)0F9;v^vaTyzG z#dLT0U4z+E6NOKp<%V|uo3uRLb9}Oj_rwEX#6QLHy%E4%f+-FAJJNG>RS%ftgLRG^ zNnI4>WzCu^cU$dH9|7rzVs^V4cE^%Rm^XwPQGT(aX<7;qm(EbApYwzWo)$^Dv3CI) zzn5AHz#ASa83)2WZEGB6t|v3*eX~s{&JC}_?PF*4 zlQUh1!QjOYoh3x*Vf`l(d4u6m3MN++**TWmCuao`iv?znPr2^W@Sx(cEwqr>teq-D zv@9-DCZle?+37X&BFy}##c-#+Fag+j4Gl}=3jOl-P`3!`r*~1&WfZAD77HqE{qUA} z;Sd-(wRBq37OcG9i6TsFQKJ3i7^`0{gUa-Z>FZ-U6h)?QYNyl0#s|}S))8#=UD}ja zPZ)^Ii!PlJN;vSilw6`om;VoVlYTjKUEbFseyAj0s0Cv`%&ny6 zfw!4-b&Uv|&g4gL39hC#To3sI0=km;OE8K(clW`7YG3TJ$ALMh=TF9`hXZTmm!k?q zu3mD~o#I#~WvOxX&Tv81lS8f!X}I}b7c&DMG{xBDjsdSEdv8YJ%h^4pJVhVJCC1Yn zYgjlvh5oeuS4zyz5ge~`AyJ5DvHa|17^Do=49%ab^t^Cq(<2Q$L*e^`tlkrRJem)x z47)2USMKYf|DGfA{p3Q62f#+Tt?qFWIpFD>TGN^inL38Y$z9i}$TfVzY_2~;a`w6J z@%@niE)Ppyou9Grj^hW)x<`KXvg%IXme=l}_dTSxm06#KT+sFhZCMD4Exh!>2i$J= zA8h7MyC#BYK3?EzwrLm5$k}{@gnB2@q@p->t~jMcvwj6cwQ()U(A}r(Egs7)FclNS z#_7O8EC4d<;2KR&VvgFepqlIF-~`=yh3dD9EIP>wk;GK6) z$+m47}0^eFfPEAfRm=wd}KdEB86+U;=ZBdb8#fiUvtphZO%4G+e6d!uh)zjHTv z;mO%eKw2HeZ5$*~A&Dqau1qrIxXZN8#+^0A7hpkd4UQZJ@hcRDF5UH{x-mbrK3qY> zi;q!HxC-$Pd18e&Isq=hj=fuS+V|yZLV6Wfe=lYE08R=~soKfKdLudntDJ_C!lZp@ zXIA7CdD#n&agpUz%Fdts4ZGYsMCYC~W|&7w5isNjiii_p)aN{K4D^s3Q!EL1rh!yr zOlj^8NK^p&WKoDF=31efl&%?7kx)f&uY5mSKuD%Vw6J@iqJa1XhBn5uti-Sq<3SGT zWtyq`69n(*d6Ygeeh{$VZTK5BwvP|rvrwL)ttBNffBfIc9ie6kwvIi`$0wnWd>y(; zpH35_eD@&bSIatbKkCOt(z6#y`4Di(?w)kTh;%ny<+cWx3F4a=(8>ZhNSvylfsm)f zOnPy{?<;I<_2U~qOuP^ds}pjC5iX#%bIZgNcd-MK?xB=!&OwSi_Jd-I_;-gBg8N;pCLqzU>xN?dGI;=ltMnr~^XJq;A zy%6IMdMsE(3$HZZ=@cKO`C~nY`)3GQu?@l}qzlhxUXx`T8azN@iJ2=l?If7;`kDM_ zIs*;-6jCsXhxCe&lZH!v(cg`s%izJn4jX^85>KQ~J=o)sb1$DQi!zsT4m>89H)|+D z^JxQxlxg}}stu?A=dzHD+^IAVO2urw&w@Lg~=nG{HPFHbMFJTTyATFheWdjYh{cOV7on;{y&nAcs* zfj4o=YoqFkfkeamSz>1_6uJ2-jgKYqVql1k)Vr3(Yh(o3Xc|F4l>Hyo4h$N5gUwa* zkAStx!p*rJn2s=XvrDJw3kZEiQFb|iG&Sm~)Fs3#3P?*FvcI&Mpb7PE9h`v<1Xqt9 zHAykimr@#F-vEuVE#tmS6SIc&$af_$fFZ-BX1*?nA+NACQY`-wB{?NtX?rY;MqRSq z2O<0ea-6GP;q4WclVc9J-ba~y5!|V*MGeZcSGu+-_&QFk7xkLqz36dFaSrcUk*0Uy z-`33%8q>a2g1>))#9(OvXy*SfA>T8+6`#n@`iuDuo$n0|Gp!dQrUR%6xkBXOQ{;LO z#?VvBoj>4}KyAd)F}AcPwK%iYW6TI8cHIy`>RMut^zt00Nfet4bq>!>3_;kpvvW&= z0atsS<8;*)4Dz*$0TjHdpMk?U8)D44s!PKq2S295M`n_=TYL@`0h9?U^wwV(;VVA> zCBX~qBi6)}!SGHuiNr=*Ipi%OP%LV26AQnD1;P7IyQ9;?oq;}Ak<6QgtFAkjjTHl0 zD2o@MY?LaR#brpa+481JCmT`6?z4=q#03A7P47+V;+A%kyJQ4HR%d0c?dIN&@8ovk zvFH>hm=vE*KEVQlfXGLGDUfsg8rLeY%!#tW0{@rJSHPKv!T*P|Lech``%K^P6a>F= zNvEeJGdm@3S|9H2gMR$WztD5-w$cG1Vfr`dP}IPS?{9ZS{vRC6PW1Jl_kKKshm{&- z!1S=8kc)J&riNF8MMEhqnbb9TE+f}6U!0GEeQ94}eSIu~k!j?!3o#f?q#%Pt_%C$` z_iPJ6p($9Fg{9(&B1ii6ArRFWqRwPYwNg|R@G|okQZ}6%%!msqBbK<+ddYF@%?4A2 zU@&`WRy7;#$AFOX_yE9rd{vZ|FKfB|&(j6dAVicMbU&$qAxcvkYDrO|;6!J4YTtjS zDr=Q~4WWyxV^rW@57L`+c-BqJeArD=nt|!Tqv|qRtJnD@YtPKxDbNo|oDs@xZ)MI~CkR7$ib^iq1f$ngF3ddxja6Caw;)$Q+#*_eL|3pZ(Hy3NG>A*6 z9a&qGse%ZPbX*EabE90UZDoj&Hy|W-vIvr>&G-%#h`0>}jb-D?8k)tmKq^>66TP|} zu^UtTTg!WYfr~C;+q`dCKy@Cy7mt{}XBy_7=cS+QR(HQOHi=HI1`oA2Hk2sA zZoeT{tR@7+u06tqQ>P)1RsQ62DBKpB|3U4oz-q<@Q>te(*?GSG7k_XWERAD8FCgs9 zajX5?wkI!I8^_pv^Yl6q1_J^INzTkQAAfBa>yql2$D@4#p^+jE=SVCQBrGb@_WlAR ztCRE}aQvP~qj!MV(u~={2c2mHgqU1>b(x+U&CUmVYOFoe8_gA%+liJi@b@~4$@!sO zLETN3{DA+@U5t9QI+z)dPJ`AX`FwCTpr$&TTIsQiq2ut}-YF zwE)$M(O=0rgYQE~J{WrSL9Om=1Al)fp5aH4tf|y#I6CB~<6;EzCy=lQQq2Ocn4eCq zVu_wK>5HgM?}F`0ZI6y=+P6knME0!9D~E*Rwh)v&l;vK-&H!^bQ2O9r1-FBJG(Kw4 z#5HF8)qNK?vb?SU6^|hImjc63zq%NNZ8L`Sc$1$pqxKk!wRXVRoHgaY=2$8z1b1fQY%qOqcbkFBtOw%ZjRS z5+*CSWihEa7(P?IYui-ekaw{UbpnWi)>{%(=as(FB6c(Lv zg52gX3P(kOsuNWriDdy&^0SIDrb(3cpodBz_wnHsMtMUf5O)LEJq|t(Wf|!FP~_tEb7Lze|v>rCHi)Df)*FBc{^x$Xe_;Xa&uoLsQEFM$Yj;She-fG_vBF=bLO z!N>Bsj*C6G6aR40fZD!E&2Hb261RDeSzknUS?cNimYZQ6C)XO?t4WfSjr*roP@B)N zC_hu2(5Kz@V%|ant#`C_LhfKtp+-Uj=G_paY}D%q=HI{QFISuKB^d1kY$^q=8_Y}U z$+;>a$7iI)p6epy(#9s>JJ!ET_9cYyp3YltwIAjugPdi;YR^(nrCv0GdB`vIg??OK z%-CFI#+o*ms%F9>+Fn^5OsjzXk?_54 zW9(eWa~x;}zyAaOsn2JI;Ei^ za-;Dkqr{)aQlCq9d|f`syaMumzmTy6S9j()=01;oWclW2DE1T}*rDO-0iJ|<&UDl` z@wV9=U}n=qUr|?$OCd4M*{8`(SlA_Gv_58wgis`D&&kxpgx(S{WF0kENaGNat_)w{ zR*vmjxR-&J!FQ%JM~Xf+$we>=zO0RPm=9vgefAl{5L2sQCav%S6`Kw&#Wv($;~|Iy zfEEOMtbHm66%-$z5zV!(3t%fpqypichn0D2-?fE-?*RFHT@RAO!}fLpIv&{LyNm)G z1}WP*cT#jUTeSZnpI0$Y{si<8ie0)}5zG{NaP!PtIN}X-6_J&jxr$n1O*l|HlP;*6@X7w=p0VAJia%#{h~2%$v%*eG}D%=3)wf0UcY%@H9#27 z;j}X^A3?QXSi)||2r#XZo^?d~OufvtwYD zd;&JW&}XuJIv>ZKXv!U6Hd>wiP6Mbg6BWPq$n8B)UL{?3R6gk}N6sNn3r^Jq6WJ@3 z!9U(Nx*5W{5T%j?H#$yY`V}dj7HPE-Unk@3FX1$`RS(LKsGQ$UZDJU3o~oHqR+b3efu!%?N-XH zn~`WDZCQbc&m|fqI6nQhC3G3K;^}~WbHHzstZi!+szwaBOu`8l;f24 zY1jHat=6>QalOu!>`nn^+hjrUZ~Cd42oJ``e+r}u)`LmTV=f+Fq}u)7cqRA(4j0vs zi&mik&~m7Ms;RCJOJJAPX7;OsF=+S4h9Jiub-0C#_*3sd0y>{2tp%E2 z*kg={b34C{tqCacaHRT#B%Y)aB@i+Zgq(qfpth&zJr3i}wy|}6Hc6rXU$7rOO5jv% zDC@VrI*c3e$qRA-NP@Ie(zflmN0v*pLj_;pHF1BrkqTy#TggE0o~F13+`3pu6w{#4 zyvJ^tSYoxpG8N&pOs`%Q2uCw^^aOpD%=JQH?)r|6qJ$CkCai(n)YF=A@99yK*xYC} z5wsPYcbn_>NNMD_Lnz^_F&ND}b4Xrj*Xw?0HX1iiF z7*^IY`<*GiVkEIflMAxxzjPRJ<{a2CVD$P#!3HyHz4!HK{u{x416X|;A|fK9O}y$x zd!R$&znZrCXg6>H@!*uq%JhAy{7`OTOrz?oXN&7z#cE>>{}0r^&LIks0SK zko>#lG~7SU0{i$Dqo0nc#b|{XKd=7$;p46M{<2de2-(%(5;fdDg5&y$`7ac@rOMDP zXQ0%iXIgzhiG=VYve{k2IsGo57E85Ej=;i%P#Lgi!Y)=kI#2o?0QS;_fWIX9rNbF2ZKp8JP4B`x`t8 z$b4U4V1}&xj{rZd5cGEtiu@oP)b(1cwvN=wkB9qzE&1Hh7YhSWL68q9U9LBgnB*f$ zM+wy^ay)QG&0b898CQO}6ZA$KTZr;K)*S@NPgb17*1otr<+ve+mo}LT5%2uEfCZg{ zv6;v}#yipjNdlPH^SVROPpQy$uyi{+Tr~|0Ht9fb6Rn& z3>xcn>h!NwIObzDfvyg>T1xfWb41-aIyHKxIT0~n-%c2!1Ns>(a#GN45qt_U^u3l) zFuZ2luVhG>?Vo%N!c3e@t)+aP84(slGSyL2=N~bNnzon-3m0>wsen*RhhvY2q%FFW zCpKVY0n^l+d|M#s7oG!3G^O4QsHliUnOglm>q?AKa2jATN3_PkfKWRNwBg4n&hg<2 z#$*-_x`Vz9u&=Yf8`LP3mJW^!>AJ=DNRZ4n9P?*hMvhpO(c){G`iv(R(x!&deOGic z7?CRilo8MG<=tRV;f*O2T!YW0M;sq&2*-B}hj(2Gpr7PooXgncEtoz>!>2?dbW!`d zUn*youqX!PyC6z*35O={G#2^yyGZR!<>pb>+q#9H;Gj#r8Z3= z#$k0OgTCU)N@k~X-sYfL)?}NPeA?MVmP7ixK{TksVa+U53 zV}@*A4QL)KkNPXy!;|KNUz)!0jpf=8^k9qw-T8U(h-Jz6L|EIrt8S4XW|>39nQpei zQ6ZLDqdd&;JRWM0EQ<}*H>kU3_{GF#RbVZ*iI7(iCb{%Bo*vO`XUO^579W_FA;jPW z(7t)Z6=L=S5Z-CzXc$Lu2)2#yKA7QKiH%zrXIx7N2<#CqG5Cn3?2L5xdVK|sZY7IWk zdf+(_39#WD81`w{z~QVM@GUzCb<&Yxk>kXkmO>B9AAXj(FRpbi+RC-S_~I=;OY&TH zG6He58q8DkS-@dsul>HvowGq7k-w;13q2}ah*`x6+}$^jSFO>mD7os8Vxa)-{_oXW z9<@!h|K6q)@oKQ^qB?QaI9;-V0Dm>_W5!XXkN7ybV9Jl^=9%{?(*8b)lgKh1KL4x_ zhE`0&Y}l}YC>8@ke|yU9YoyNkDdj}sJ$T{-zp6uIqK`uYG%Hko-SCYDgjkoETBiW_ zVW!Gb7QZuoFSRVUgiP=D3W?8iTCy01Bt==^<+{J8$}&|elENKLdSt{nf%0&p<*hmQ zx^*j+g(1$!@8(jV=v{p>vK_F`zy}YdwaEsfwx-e)FI8=fq3s9#lrjYSl)s2ukwu^b zU59q&@^)6IddKAu;9Clm*q0%vgWKlcsC=uAk3ff*6}KuT9@Z*}F^O)gyXkm-m}(yB z1X19jHmQ^$8`DDVW(Q&-bnTYxD7^?CF!8clk};YdQm(A=mV^3O;|F!jJWnaL9hyH|s;V2qW}n5tnhS>Bw`PUe z1nsIg+y;|?y7#T3)F~jhCZuwwUQ|PI<>-t3@&g7BpD>2j@Zg-(FkNN4^GKsUw^WM~ z)N^+AVsG;J0xh!?@!w_=y8X-?Gx|HW9$fA5!2rsckp8-57S<7d5>@8{#>qCoyZ~=N zpB2gd#2%fEccPSI-9*xEG^@`|e9Uwt_U zB>O7JNR2ZrkKo;_=pPyK3-ecEzfP=w*=b)#ZMsL$g2p^@#(d!@@uVn&#nOC})`!-q z@c%r770Q@|RUqzZB^F{ra;=dd&NK}yjpfAqu#T$bH8J<9JHHo# z*Xou$uBgHt&PI>D<+W_;MjpIr*NZ)DKrP&5=JvTEg+X3V zkw&cQ`Yqnh#R+*?CJEwbkd6pU=<13%_TQ|I0} zs6T;9{I1;2>I%Oij9V-|t_B|jO0ZPl%tKEx(-aoy#T{FhdSu!ueDjQw_lS@;{L2(L zHWp?vQ@zGcOU2Tze?T!c{Hd;eu(Z*WnIZzTQm2kq?$pFLROw>%Q!HSU)>})%<9nUL zYENu*SEV`(5#Ki1s-CL{$0XmLkFvx6C@40IU$@lByTwXzD75rl7)i#@iR)KjrY%gq zJ>!Jk((~UQZF!Yt%Uoc+NTQ zwK$DSfWV$kuBd@r?p~iBX}8~89YZzP9^;d!rG5*r(}4tjY9gurKCc(m`3&FEB}%%S zQaSx*{W)1g7f)sOc62|o@_^%F;@N(YB5)ZyI6^2~E)R=es{s`t!oeu_2A7k0TPWr@ zGj@u$mp{5_Ea@&-vV1!fTv4+`sn>S|qCT`y;qh?t+%agOHPG)H)58FBB+J)NcuQIs zR8a=3pEMIofq%L0WxYKhfRzKb!U9f6vX`$+8CngmstdK9?~)uwyVo!h#Cc|F6>XOr z7xACF^fZK=IaPJY9wRU6g{PzdLN+#LH8R_BcwB>>4T)uY@{K6{uqh3I8r?40ik?KlyiwvnzwAxC z@wA`L{jH+&?Arv9`EtN6H93;fMN}q}(H*GQol0=Ws=>SdIezJ?wqFv>js=G;YzzQu ze`wK1KD#x3>-;_}qJ~pO-Yv3-0^6$NA>pZg*MKE|_8v{s+5PMKDA&C{nB;@6)m0q2 z%UE+7Zo#*$EXdJF;#$lTmX*!M%3|he&g#GZp6~AgZ zlUnN5f*Z*~!KIbl$yQ|@ghaT^xAz>Di`58RTYLdJ2LoiW9?y&klRA6@h$dqBS7nUd z-0!(93XrOCkAu1W(2}(?XgD(AhAF{G%@W?RY_bmV=tubLW}m20PSJ9p2CnzWil*#4 z+sh9pX?lC-t?%EAoYN5J#|{ zRA=#h-~l!`4211iR~5Tlj|sD)Hks7xp-)7v8bf>&J;hysp3^m_UmjyXWDo>7HkO)h zlcvV{cP#yhtoTEm?`%A2Ti6l(OI0 z!=E+?ZijKH_6;uWMtv+8S9hNKLvXH><9*>6%^a*WwBC#HR$fZZVENfwX&c5mT=ZCK z$X99m3zO!~dIj|@8TYb1s9G^YHQ+LW(g|^d0;y;~H0<;1)DhQ3^V4~tuO|#5hgTGO zkTq{XGiWmaQo zjW=qxo!U@qNjhwl$|9R=pBH2 z+B{oKlC|6uh_ATEx#ik_aFvKVDz4}eb)-Sbu%>QqLQT+C0+e4#i`*fMXA|w|7CN0g z-H9zrBt0jhwF-p{qB<%hOga+4<+f0$DO& zpOEDHvbp>E>ty4W>O#>_i%TkWm&M}}K^;v_ zZP)_U)!9b2_T8%Ey7mR`?xVDbc6*^oM(7YEP+W7#{TbqcSE@2(qCW3V{(Nu}6P@Ff zHTrc_-M2MaWpJhhdQ45#GoKqy>K-)t&%#Y1+M_bziDo|5I$j;x6tGeG!;j#~`6;Jh zE?||kVW(kk=2vao@fsc-QQ|-B5{@M7^4|c_MB7hM5)_-wIh>Y$m^XXtxkvo-i zjE*ckUIy}laFB`=O&ZrOAgfZZqKDsy6F_#7`T8B>n6B;@Xhz-Sh3|YBh z0{ul>VxLOXro}!iCAk~G+B)bkvU>F9~N7!9nEGL?Ry9Ot9eMaOi#vIstU0H+1?I!A!Lz#ZjAd(u$ikv#8R z2OzJPY@Ni$`sx7c(4K|95HsbuO2x^HBLn<&X0E{hbD@M_f&U>tdFt_ICt_;QX0g>w&F0^?`^f3xW=QmN($9Q8hS z5;dH((#g&C8H*0e>C9O+Fr_x<)9sG6g{~xHC+0I&pZrDi5l#@TNG=5m%KpIQX~CN!K3{SF3B@o2c}&T1^Z8b4U4@oVTcP@OTXN_-h(XNi!)ycdR( zwD?t6P72#XM!FXsT+0B)7gscEdX*pe5ZOl5;-3K_nNzZ()Eu2vif)YagB<*{=w>DE z1mp}Ed21$yn6P<=ypyJ%d*Q;=ebzk6W^u(!xSRf~AKb0!46zzUqb>lXHN0m-$KQj{ z{V5x4E;<54*t9)^Xul~>r-WS}2aFqpn@J5`)w0QO0&^5#ri(Hj^`=w~hk$yv+ z`M0XKYh=&fA_LKduA)!Xh)FD3QRMVr4%rxPg(jb*m}mYTl2?ifLlkVFk>?H7eqLZ> za>s%2iU-Aa+Fmwv*U`f(b zRra2>c3B!$k|a|Yps|u$x8kpM&T+H($D_Gu+8<@QCGu;_FdYx3>a0c*Dcul!W;Fx4 zn8SB|hlgX57@7+;UVwwasUXOZo9e-=XBLJV(&_bgBOmirTr>HG$;BHyoyzAl4=(3; z8?I-1{n_@hV4zaNPpQ{=oEICcHi(Ku^7};fj;bjZ<5!$-7zU!iiU%HO+`+>cyI;p$ zp*KvZ8tx(kXl9&<**j9dc`CP@%@6TBy#1nt! z*yU+d91u%|MU;u4(#y0sW0Jy;MiaQw1AGTw;Z-?0f+1sMn=wa_;%uQHm3RY@CY=W2 z{J0aEU063ZWi)-Jw&<|`^0ujqt(+dRVt3Za?B*$y0VL!%Q74cQRpS2O0_b)D)s)=K zc@!F53oa*SI^Eb#)I|Sd;IWCy@&LviB4P$3v`5;w&6p}gA|f)`S%*{q|y<75Oqn-^7}u8 z8WSqYf5V0Q$#02<)`r%rS`4!77H-zAsv+(IX!%#>73uUR57=C15e_F5y0q?E=!9iCQypr=#S;E0vd+t{>#Ewa%32)1a4p`dcEiMQD!5`6^ErT38RYALE9+ za;W)q;A)AN8w+JgjIWxHk1uWmmD`E$UJvwTumHYe>9kzTkJqRAlj*OW^HNt&!(I88 z_*tsf=8o@ zBGqig)u%#5tWueva^&im1}zflMVlVHnEOj6AQmws{66}HK9A%LVG;x8o}dy{nyy7F z6M`KiB=|boGE+Fh_B{jc(aLiuGXpuUDRh_Fd&0&#K#ICOw zK4a5SGGMl!RXa(|e&=(VmZOsPPWFJ6LD#q*lf+|IkE~l~JdtEc{a^T6lSKv$wPX~( z$F_iyPyq``^IlBZ7Oy2$mcz4ki^+GCb!ybZ|1F9f@mrR~pk7_F+-TLuhbiCaNifmt zVh*4_Uhc#s{H)id8a@gLfopUYf~Ae`2)NvaXXe)oIG+r?A+}z3XJR3!Vtfv6S{)g* zHx_{CCy1RI*>cQcV05JMkmBUpXT%HvJMU#Bf{hE6Gm&jXu0?idy^pP-%FC`#kkgm@ zp(+$OcM1EuWm8A)7X9Dm{sjPo#tXIoKrYDO|1Vtrv2m$Y>2&k;3IG0IaddPm=Wbxs ze_R_pmq&F%X9Xfm`9D&wcB7U>eOtlizHQlm`Y%EsZ_K>CSd+fkv+mP7D%}~u-(?cS z{Xc}A+uWA!fv(*A;%NSMmh6Wc2J@BU12c6AfyIwF$Vu>kDr$iy>z+0-K`X>h_4so# zt*!h%EcH10vC%+MI7Vyx$4i%tV7{jafvYpU0BjWu{nfQI4e}{;cLCeaGZ2FVF)g2FmS}Mu0_jQtw>>5`u8{PFqt%Q?NrU zi6z!YC?52%L1b8&S{DFxbK69%l^Vr%EN)uA%ind-t+d|qLf%amO%LAyz2~=wr*2u+ z$nxznkt$=VA}4LOd81cFMaR@1cO6Yw96Tz@NKsC7z!cdU9=;li|T|k)79FLP)M)i)(~>Z4ED4tG!}8 z`H{Cc9ng#4Z#R4_OnGWe@0ftqv8de1?+Fczk&f>4ySb98RnZ;#NLE%oDzjVhG{`TG z{#6YLLGr@NK)wA$IB$}j;#h@_)+-iIa#A!F10Eh1m7M_3u4U}BDq3tJ)Y=>3-@~_b z>SW(Jz3`plufP*O0rv`rBue$ujhTpwVtSEamCHBe49Q%LtbWtNlbAH|vQdeIRAXRG z&>W$Vf;~*M??2mIND-Zj!ydx;35lm0%R?V43v-i%MFCutHG95729->)gA$xII76MR z(CqCyw1)-dvE*np(vNmxk=vZHkD!rcyCR0AZLZ+~z|NYu;ySKD`f~@mK5LZ9$h&no zaj6&ldt8qR7j71XfoVtEivBqIDJof`(wA=x9Zwa5e@onFU`Q~wF>OWtvKBZBYCEjk zp-VsqwLQ+PbJjy7K?j$Gj5T5y8g~Ag>oNPr+Y**2rsp2Y$t0y|z{9z(*2KBj1N;r4 zF2uv@gw@VN4%^PfRq(9FnAVGTrpf!7?KdEi5!x`FL%1h>|EkTLV^uIuoC%KM@PWtUIr zo3LtU-;3WIAEX{YDa%?6U*_f9LzDAY=W#AGQI;~-wD+XVmb__>d^tKJpQnflMzA>tGerAt(h9nUEYt! zGK<;hFQ8>XdmYtu-E!{vHjTfFQ-!H1;-`>AggOc#A+ zJ3WsW2Tv_Z>QECeu9D`LPj@=`3(f6&(*PxK&sgc+g6)^mp0!TM-_}SHh~^d^HQO_?aAy2 z>&==NZM>L7I6Q2HCToXHYQ*GwwybFRmRMfpQ7~~tm7qcb-p-NLHZKHG%|c1)IDZAw z3kVuZx&cWw2@s&NLLy+V=QC43RsAn?F{i6CdQW>{fxV&)Q~%Ai{o{hParJ|3&3oFe z+QcsF(1_i`t?NL9y!CMj%&l!YTFdC1(ht2)p(`h~xv^!zC&2!_G^G0ai((fnZ@;QUgBJjMF3kvr+3Bb+4^ zX zKh|IJ^Cm3p5Fruz4W(|dMe}lFiMLe_gnb83FQcx)Z`q6*C7g0&%H*9^Du`e(xGt2u z1tY>uJOJL=7G7cWw<ZvTWiyMjzM;1ROt5Fe0FM zn>FZ-y+jTI#!u^ZwKtZ=kF>?x{t8D!+5=ic2l~6+VQoG2ha9YMWs7`<5yg_ji}xDA zD`Z~vos>cMLuNj{?>3z}I92iCi?+kU-oyiiJlGWa?=!>4NQS3s7HUky72eYdBNkxe zZoIE>NiNw|`msD&l4-;n|E5q`fxcVj@X^}UuSjO=2sPe+=DAW9F7cNIJ>Awt^~QJvEevX-67j+%^Ye%3!}+g*!8y^lm2dmqM5azv;+ zV@VT}&DT4d3g{L0gf33RXJ~}3#Z(+YN57|rB!1#AZ)clS(w{VBh2b_VDZ?El4X|YA zZ&TK<9A$^@iV9Cqv|xoY*Bfu!DCff=*#8cR5zv z5YT*#eC+KMXUQKaO*artskZ&*HqZ|X_g4uC4ynCd^@9BTX_^)R5g+w2hBUj0jy$2g zmtn-(O{**09GCYqoE02gefu||;k)_q|GPP>SnMWYP_5^`(J=cr5?+2=Mmf}h-S>%b zjoKL~%KGug?Lk=4lTHDPThs}|;5@T!)NF<|8&8YtIKxH_hBD!WO>Fn9Of2%Oq+Ull z-XmHFAo+z17k_1uHEay6ce6O-@8NPRI*yIhY+bMORODYZ?^42bsu1&V9rX(;aUY3M zR;xvCA0p_{k9KcyIJe~5cJiyA@SL5^Ny<_0Cl9D}M>`CO&K;IFVkKH`ecO?osMp znCAc4j@H3Rl*5-|+F$k%D>9nA$!^yI+WjvtY{75|H#C6p^OLcS@@B;+Q^81XDwr^B zuV~g_Dsr+9$m{#v(&Eqyc_vb5i>*e&ZW(bFO6Z^`k;H#Z;6DjLd|~Xlw?356>g5mB zhL|}7(>~)(y%;)`u?PnAy({FcG$T#nMgYoSHDTbPdlTYd4rnxj1C63<83EpiqHL=d zmZ$L4J_GgjDEKEmPZS`oAu_>55d?u__HZMlKF8eA7U^~NawJRRRoijg@)W!GbidFMYyv=fAX~m+7gj$ki^sUrQ9UFr#6OKY@ zUzKr;lf10epTuNG9GZ~*g!<&l$v~P=OU@5++Y(7?F< zuCUT?Os}8dD5UI|jp@d>-xO~#Mj>11y%)q-hL7Y~A#A2#0H6V3jd$D43Z93fvDaN$ z9(JGDrIE>yEuTEw1l#wcDrZc}W@Q!s-oi9kVC|*%d8Y}Ur{H8~+W{+%sYp>VO3#lE z7sHg``(whS=(JAcf2V#^&Cxij8<+W%{@{9?b1~Fc<7++J-BS$TiV2)AOm9c1ZMo6n zv=jp$Hf#XNQe%`-)fw(hT34Ca#TtmH@cecFxqOtP5Y;=cB%1x&tfWsw5`cE9uFJab z-a#v?!8>*0HX9aDIk2e$)LBxM`i2N3IcBp3vOO0(USJ!ZtW~Y}#%PB$XT70z!EUXP z1{2t#gyB5r^7NHnjw?Fs=7J*dwdTPqfIVWR_YRm70G_CMKQRmyFr9D(w#T(w)gmCS zU%YH#hYX^i6F2YwyBmAt@zNS6K1VEad}1m>(Y@gf9kE7LyiXn$aTNzcBDk*^VkTLy zellMy`#ldTNpLXps1V7ogiPGUt7~MHcfB`CxZOd1G{$SR5co3F1;7&0qb~OSGrCLG zdG1q$Vu*hNeU+V^Z^j7d2wS-;T$ITRPBs^O20Ar3aOijR4(=L$u(YIOH9d<1jy|k7 z{og6=ivYl)II6>M;ZY2MbF>8aGG`caC-nj>I%Sk?k)(q4!)aG~UGJ_>u0rL^tVD(n z>|1&xX##b29zVaBe;88Fc_xhwx?kE<`=leMh+lD}B{hW;Q}f8p8~{5L>@wA6AaPCe zc8{vq9HywjXDZXC$njNIuqVr=_2>eBw8I|La$2Zo4hp2J+Y^HQ1& zIPr>qSn5m??A5n=)WCebMn5{=7X75Vc5q8isjdc`ZA!qcHmT;P8|6JyEyI1I4HR)% zEBbI}&0U}PKW^ol^6_lN2o0}elgE}J{FT3)VhJlq!6sw<=obEeGV_onQcM30q%$P< zwre^cM<&9L(;Hd!7fSqxK$He5f9WH4m@1olo3Hw+xQ6 zpDwZ(KT&Xbm!D8+bu=_$#{MM*mEdy!DfP%Sx}r=NjrQ7y9HykWdP1169#H&K6|*FO z8u>Kq%${5@#iS?Qk7?{Wk*Cuja{@Rw@iT?+G{&hbk3JCg&q*D-bFeD0j@ojPs!Lc}J@;2A`SBm6Bn<39Oj$=ne*V$>!Um(4dzM&@I4luBnSB zR+GD7@_aMLdhdllSeF=NdJCzUkQ&qLz2Uq(`VBWCD)*W`bz|)WDo)*bJ&B zU$T6AEkM^5aU|b4Z!WtY8H}R^Tu%D^i{fXTD5#Nu&q($1CsT5K=lZHAVnDgE`|yHM zLXoo^6uGbBWwMU!iR$fxbiQOLvnmeie>mBh;LS-VV2F`%{|5%Cc#aXhjJ0JKXv1qz-zacr^l$6_Pg18?B4BOwhy=|*XS-DE&Lt>~ zHmtiB&nz0Ef+W%&h9W400P-`yJpA-L)K4&)L`h~SiY@D?B)+7u8=Z;_Z*%|5;ymuh zm-*Ry)uWhUawIO@F{b5?l;-t(@qdp$%*gUi`SDtyL9B0AlbiX|Mv;`(H`3!mTyUV= zg@l7myjM3+Z*W`72YH=A-w9p-jzu^u^`)<;p*d=UgfH2{XH5&_jS;gcw^+QoP{2wi zs`^*%Ta6Q0SXH0nFt4@@?q)s-lE$)L@@AlxUgbVqa-bx$g)BKll)BzNAzRuBPyE$!-GeRtS@rSkNe_zj7}Z_93kh&e-xTx#Z$367KW2-w?x}m z`wG(^=1*y$E?dgq1*MtfAoY_F+sPSiD2hpKtS-h}k442o0LsWc&xR<9<|&8CsBqI@ zKXe^r<=1poV3;DMsadA=LcL%g(;^yMmL2Lf7BSZDTjKb^ELk|D1^FYh*(IwRm@jMd zI+DL@#fK#U8nw6po2p!3bq8A!S#GPB+X& zY<^Ue*w%gxnXzM*q`lCkdPn#XOxb!n%quX2rXJ&9nn&AQZWdhzGo^xl8QW3;ZQ+_? zUU&jNbl5|BxTc_?;3U}-2PWwK$x@ew>wI0&0!M-z25KKu#*<;)XY6RxhXFvf&zmtW z@n_WcvlO6Bmnz{9K;m%qKR|=KZ;QfZlZ0%KBZLk9Nj`EwiTGzJJC5*zPP~a#Vz6@f z_9><5h|h55tFhGT&~JTc&U@#tU`?`sOtdLdVA&XtF=J71FI$GvGpT@|C1jmOT6i3R zS3AjUz$r1z*a>!5^Y#_(7tJso`Mc$8v;;BXA;+|CYTFDMTgPVN)bL(}{k&1T%zR=G z_~M%*u>Z?JP=l6t3<{XX2}Jf64eCMtr*%8GW};eGYQ%AQZOWVJp^Z_*yNmlghp#p-#*=y~~n@!)iOywSOfQ1$l7mBtF2wvrn~dZnJw&~S9#+b?WRt0)0w2Y zdxNg#>Cd~Y6{QazyiemLkY5Cq=*XjCPzK;0wMgn}5_&L<0JIkjPkklTQx}OKge)r@ zoSIST%NJ-t$o>{6e=S0I1Fsy%4gRh?;YVgOCADY+QqhP~_8PBYtxMg=A<1_A=ZujI zyt4~Hh4&v=E<0;at*iQi0j7vz3!IS(E$MIx7|w{#Jm;mI`Xuz1gqr^aJ+&VJFV!L_ zvR~`}9~|kBc8YsDl9i-?6{T4{-Aj;u$3%T7Sam$%^1KMxnhBL?mNP{C#X2=O%emgE z31x(52Jp@Fw7L@Sp&I;XuC#f$P9E6Ioi2E1I$D|eh@GY*t>R$hp zA=QL-#NsA^)aOn0H}?nTpKwfG+T{i9{U}Bg*Y;T4wC*&iqCxYN;JD`t0&m{sDBAvi zyLae2>PB!U$z1wO+vU1928bn1H!c;9o1_!DZK#Yz+K<*WGLqbik8X}Ek;@CLq`3>4 zCNW#6$4X-f#ncj>Ji=g*d$FgC{P5DS?U-4hQ0t(w5`8n5pGrVi4jHz4q^<&rBatbm zl0AwM25%VOLFnHRA~u*E(1v%DHCN_Z_BxtAp{T4A*!*!FG*R! zM546)!wp(1ILB^=C0;Fo3keb?jcJxV9L6t2Db1Wokes*?WPnNiO7~_HRVH`h^(-zS zmdJIizYZ(FPbrv;E11Hnn%WYmUnjM8D|h$GK(QUF$!U1>TPM_(udTy{8AFn%h>x`D z+u6Yl&x*KHI4yM3bM3NpEi;%u@`oNHl(z@~xE^BwVv%t4^-B9je{~GRU@15~;T=;x zqcev5qo47OJ`IIQhNHt*qi(sacSx!%ITirgjyH4sd|TsIqlOpD`B8UG*pH3rVacS5 zC_pmLAVxGcxjinPk#~TTO;IKUrZNINQ<`Z}1<0I0>WvQI5%-Jr9^s?+MImGj>2u6{ zoWDv3w|N(sQ8?u>0-4&>->jGX5Ms+mLAfJd(V(etWz*#dZzTvxa>$Rv?Wy<)Hv;}u z-8+gwP*{bO1>$1*aKUp8HY};y3_f90r!|4e+z8)~LccIXHBI3~JXSY8C+$(cLC#Ru zQ$HWTqADiF({#Mr>_~r>rcCl}Z*|5@sI3lXm#k$lS@$=o{#|F+ll}!`^G)-JDe&B# zjoHu-yJG3Jg&P^_;FE}A$x5^!$Et?$$c}5sU)WIX1HnY<6d=lk)ex~(S(gB2KNj&i zzF#7Rcl%^a=S9f8n1>T{uMvM_uAppB|y@3u(%te6rN zw^29jARBWFYloP&2Tq1VPOwhFIn>iG`Wt3A&0fmgRO!M^!9IO`=ch-_7R8PTKbOY2 zsMKEX;G9Upxlnc1q2g7G{HF+;MJY&Yxka4&uwS0H!+aR}LipK*ab*tZ3_n~~YauX3 zK|_L}U!3afU&0P;7R12}Xw}=^gaBvE2T4>7Uq;E>{hJyFRD=3IfIVPd1j)FxBk4~d zldi)M3~63SLE4(K4+f6AhV9HV5OTLKu>~rUoH7mUf#>%IHi5?NquXo5>ql(h_pomV zL)OytnrEMV`?qD{i_8^`m`ZLk_L=# zN_=%A1Rb?f?8bKyh7F$nM{u5|<9a6bL&@?FZlet)3Tm@P+uUOi-QmT<>m8*-#m~>) zPHKx7^rmb9|Dc+W>8^2f23lYy`T0~ty!Ti=$hi0`2;*Y){EBXIfRds&^w3YK_SO9H zZL?xbB>p}du>?CneC|bGHx5afxINMTES&YIg>Z*pR)EErU_MOa<;Y+i7%aQ=!`YQq z#CbS8$uzh#n^t_%;N6@?eE(T%NuqX7rfbl3lI%NOVkoZmP#QORdFtJ26oKNWOK&Pz z8*I(>=MSFOu?Et4Mv%wpg>ANFV$!gMh*aw#^4(KQAoC3jg2TBLBcGBkbgoouhgBY^ zYUjfQx&sY%;E)^!!JiYgRa?~nuCe=o4~K1`Kc-KyE%*0H&8Tr_R~t8PzuurXWXoUz zC82l1-yLlge$mh|P>6U?i7G31`@yR_QfM~wK5=-SP?kW+H1?+w8o!2BWeObC67%o( zo{xr=ugOx;#2{OE*HOeVN8$kVSM~eAp&d{+Wr8t5{Yw$$@2WfHS*A}9v2mjE2_OTxgI8R?vUa*PH+?U_eP1OKf$4yk0?bRM_m8|_91*D#|4_iA97Rl0Q0M4Dho z=Ajf&_X^$`f299k?M5+PTQUCBBQPVuPn6o##wy{f%HoFE+mDT)za0D`fy2wdiTZRD zvfKID2};x&ZW10_X1xP5~M_?=H z$r(;JW@NGz*qXA+4o-p@69Soh4*f-nPlC`cXy&@!XdGw_LDM|sVmA&K$>BRCj2!YdR#zrbc?S9y|9~|JU|Ma7GDOTp-P)B!2w)nClQkM%=y!-T zdcxbY_V?p<7dGd`!~#2)vsYAk=NTrJP0?PQ^!D#NT>%sQVve$ou~pUwAf~t3~FCIM-R3UhX4E@nqI6@b=DFk>{m~)@AJai`Yb56ZnR4HUmE`u{wwA zAr^m3{tz^2tsN%U-iAWTHz~T6H@*>imh!Uip~PU!u+n`f5e#7;!&7ejlWpUwmA3VOtYxMoUtOIoTRlo!^2btoXDVy!_%I^W;XeN?^A$a)43Gs)GiWil1NfJQR~ zERAcOq*oI(sJ+6Pll;)yFM_dzu2ODzB}&$b#xLC&VnY#0+=XGIs3zi>u5nI2!X&XU z!ofxGmB2!S70#Q~;4~XYn9Mt7^9ipC5252#J@IDN6j9tV1OvSMD$m9|`6@}Df2cTjuUl+Ir;-Dv z^u^lGNpup>s03pkb=Y9MC(TosROYWC4FGVc1oRjcg>0xrvMy&>5kK}?J^_NxuZa8| zn+aBRog@Fh>=87KpM^>bNu~Nif?AIt8CsEaCr)nl<>nc^1T>Y;3#DT9g~InxeZbv%b~`03<0OF9;v9jON@7 zW5rDcT%awTnH%mxfVn~G-xE$BgaNqCel-9D;XhD74c6DHmI3$!CuL6@9Uu*j2 z2jT~fc_r3E7zj^_-_}c%bxS#n5j9GmDfWjkDC;X*AnEFSsDk$!t%`C4=IhVbs#PQX zCt_QzxMgWS#ikEa7z3!kOL)TC_j}{^xf0&^y8KNQprdXhaG(BUcb3Ft6Hn(Yf5vjh z_Jz$jB3TYmdf%H~>1xDgvqGWEnr(t>b47r=L%!N(-P+afKU`8vKNs&E^lqeH_mxn3 z8}qTz#|c;VwdgLmd|Erbo1*o&ZmbX$tKBSbX%RvXmVQ3H9hSO{kj(d;^Trc=H^4bj zJ~l(e&<#cn+8M5*{^FH!)x~KhH-))%Pak{em!2cPE=b=W9_xK{&7t`J|54KlrD|6d zy+VMRqT+P7p<=Xe(_qRx{{7;&tcch(BZ@z$a<_u8Kht;bOE)`=GH1dS9M2&mN+}P! zCps^}Rp2griA30!s>>{MbQg7i4GnNAqqxnr@seq7?x51xH(FjAOCQpqtlN{I?}Vw7 zHUk0t5nkbmSWnnjafi|Q9=+g^_O(hH(lIM~S3AWJ&pbY9-MvBSN^52ZxWBxK+#*!@ zkA(?gh~#*!8w>hCtq2d%2wO2hWq<>)sG!2W<8n#PPHWt6mborFAhj zI3|`;vxwN&AI}UMpX0q7)v@GmI2U2-1%zjZO}l}T=ROhe^h4dRED;X{M7u^Yz(T6-2vNX8O%aTv?fzWjkdgpm z@v|fBqJQ~_RR=POYlK*tz18V~Zn6EYyt6`Cd%wCubB4QKun=F%h68Wr68IIc5x$Oq zcx?Q6*Twjm_@m~pZNR`aK+&=LzM;EBu_p%`^C}JVXI}_U2HL?KJ?)NT0iKX)kye&X zhAjNF@%<;Dc98#Q(Ir-MYYLaNb#4L{s@LLi(r2bDV{@?!^r_*#H}^Z@%(7@$`Zko6 zzlPVxuSRWWiuJHTl7J~O(6pfZv`bLnpE9+m2`GFr3?|Wx7WS&s_cTb6*Cv0$W{sKM zen8(1jnQSGixoY)38N~-uIAZe_0Qi%$v?Ri|CaX!g1%;Xnf*WSfVJB;Ewn|x$B{4T zOpGy9{oa$nunxkiaIHM%5#jE=Wkyji+yH;Pwo$lA)S@4sSlY>1P0&bpIy7iUY9{+2 zlQH>L=AXG(8=FS-E~YDBU9Umsk3JAY_Qk=C(8}bWj7?|^M?SmKI8Pq*VezXl4+Z<3 z;w`7FTW&iH4f{&;lD6>qoRS$SCW6ka4?ngpzCLhz21Jkrv!+@r_t2qWDa7U;7r`A| z*{PZZht4-&S)+i3@efJbE+<}bJTdiRVHRd-0S2%_kNvk z{cI&-+z}D=u&5>c(DGEG=q^LOT@0QoArSbkUIs2pS6%z%dKB-MoAGNv@r7qJOq@on zU);i}w|#t>KkHg~EEfq(i+}G8ZgclZ=`E1Hs(5t2lG~@%6YI#cM0l0vlUZz4@{z;V|Dq5F|!yejHOLRMH9t!O6s_j~#|VloP+m zCv3mDmB_PA)D&`fpJO^#&GDIno>X)oW&K6!0ju!r=5P0VG94&Qr&`ywybWNbk)jQ!ItHr#Ae$!#90T>Mp`Ga-RNq$`m?{)}jn5gRRTboiE55S$? zdtSmHile0b1Q*%>q|-Y=i^4*zeQx}6kSDPzUn!mJxxR&twn*^?%}N@cg+jd`j4@$W zS#|Pz2CW*#RoEgSI9nrbMv##^pjj;f>!xTC3nA3mV}?o-Byi+TRi@ui39rWjWTi05 zx!!_je+@_|#s)S+NxuDxnwB_UHm6Rj#8-f{pRA$}%dx!EmPZ$9HpP-WJx@$CG9r)iHN({3}hM5 zxm)^KDN{VIXaznR+GwA%8W&_Sdz-~biCr=zhpE>4fLCZV9C-DbV5A+jog(yJ{TG3F zQ%@wDpg@$OuPV{WOuj*}e{h3o4u6VUyQpcBuF!6N0VXowLI$iKetnOrI~;0b0NGV3 zP>|XnonGLZdI)BoD8w6_b4>4`h<<|_jt?dGY^DOxg$vaGBn~Q<2iOjSuTQT+;LFTjdRoOo#*jgx3!=(` z+b<^#>ZO#>rJ0kLzSWXUD4Gf{8dj}|Y}z8fqi*KbMMBg{A~5j)*G*y{D5?feDhbNo zFlqUaQ*zNrzll?X0ur2>)gZCilj-cmA9JrXKl>{nX1i_Kqb+I`HmB=cdB3l6d^3eT z66Lp5%(G|xENCl6c({2SOOJGFi{!^K4I*d7b8A zRc5-tJuK}`;&^(r#l;&u8_1Ni50M8oSdcY*vG5mh=cHonoH{DD;4^V_WhAJak;n(` z-hPGBMpqdZNO9hE3RAyzuI>G!TkE28x=p0;T<`zwkV1G3!?Et3Z(Bila`Pb`IrOf0 z(-YXO6^^uQr!xC5kf{U!NVrbQxNa3;^HV93VSomVSSxyLGSgkHrvU#y0Ki=lBu5sB z=l$(ih$rymqc^LyZHGeR^xzJkY^eaxX64bm7cAG2HOrsU+GT+KFbJ*b>!j5Wja^fP^ z7m`PJwbcMAt7DwV&a{Z{QkibF<{+vT0)XGG$*hqu47&b4XX49Ntg59AQ4@jnV6~iz zc|7hA?Fc<9jGgCStIqXGY^uO3!`O@#zO#Mm6QyzFtAEj$JM^67ol^C_E@J+FFSVAH zy7g4r50im=LMy>n9jCGg&Fdoxp0c-<$jliqt|GKM>)qFd7*H5S^lLF3EYP{XvAib+ z>a5!PT7%g(%^4=gS($*G`Y{r_G-P{m&Y*K}nK$cV3iAF8ng^Fhi%OdZfCcU{L+SmIp(wWk!qtMgSbQ*;w zO}xA04oU6BiDhuZW;e}x4swo%+(o|~=TGX`&EfYfV;Fo=CiffH)pSW^cNp@XDQDu2#z3Y)E?F;UcK3 zRb1^cbffuni4wDb%~VW1oD#IlH0$Z&Zw_{O`r;;iXrO_&bM4_yhcQMOBIEbG7M6W; zwe&pnMxBh2?^hw;u>(<7Hy8|pFi_?8zZynlfX#{T#A!5;nz-2d1}EJ?*Q*QHmQjlA zuR(v-B8b=;0{I}vDFVN3D8rG6@3m!>pC$dyA#DipNNt?sh8JHxM%gRqDyc-_?0E1s zV7YMzM*%Z>FhAIO21MQ?-vGO_+i7B;40mP-J(OP-*uy*9Mg;BdzQAAX2Yk)3)Nds8 zR+-t+FtW#{{y9}3Tpmldg8~{&qwRGf zp)la!1^7Ix?CZC+6)o!xbb_Gd&^ROvgz0k3I;6}f*i_BRTKXZm(Si2+u3F+Bdf?@m z+vtt^bbe{!FY7`Hvsz+>f1371__u>{5<~*PZ$tE6J;f(i@+b>(aOd81+Z4>6C(txQ z1#v74?o#?wmm~H;-29!%G1a;`-!AQ_%})GWFHaM}+_N?sG<*b+&w@8xZgwXx&=8{! z#gii3toz`%hyxJ@Nm#A zroI3CHwG2iIA4Mpmk#+~T_db0o?Sd#KJ`_<%QWj1QZ-S;Ys*CoT01P7w8sBW(-AO> zObX^3&Im+$KBlu8qD@Of`TZBmJQ_@Q0{O5f(;L1c@Q%136^29Bvt3gEcl_@%fBL5Y zOIp+3Ck;>2qhV5|$+=N1`6egW{0Jm;M2dGTkol0tx1m2~3TA>sad0t;AvT!>4l{R# z$Dkf*p}$J9Gmiawb&F{(Bsy~Muaq(Z6u@w(R*AEXA(#4KrrE_UJ-2V-`gZO7))g=8%^7c?2kILF|dN$_u*ntHA#y@jigDV4Hl zOl&43y}*wSl%&zafN&?_lLyzJVu3h8)yTl<2l;v1?bkxp^4>EB4*l_WRjtn2ulTCz zxFBo=uOcT38#aHIqM;5N3$#y{(AJq-%gC6OP|%So27Kmy#bi62XJA%BYBDCiaoSF3 zbt9c&jBU=30W%B)3?~$kF91nkQ#qMwK)8!~>!35+61^;5S_wN5SChOv&eP=g;z(vM ztp$q#%~HVzgsH{@%py1%P3hJaHmu|gK|i+Oa!rvIU>sku6gGKgkFI25!8}XtBrtQX z6;YFxzj}jhX-elkKBsW<{&yi7>Abjp$Hv5n7!w#5H5r*1ZqokJyiLQ#(Toa{X(zbh z%Z&B5<{dWLAm}0@E64=K*oBnu8EyRCTjFnx^hN1~XRLdWe4|0tf6tcjl2@h}H{(Gv z;US#s$Tqa)`>b!SX|`m!wzDc);u($8AjPb^eFWRaAM zljTx`YNYC^qyIol+g!?UefI#PjVgV7&frV{)qlr>!K4sBjm{Bk2nO*;B=ql54-e%I zi+oK}L3VnAjUNC>81L8UB8g4sI87Ncm?AP z^k~4ox!+e`JnHyt>Zo`i_`iLCvG)V;>oJt{JsB>$6kRB_z|4<13zPQ05<>a45s-~W zXo61LFCQ8FM$(8t!1kdeC4+8)naO`z4eKCYLIarI&pZc~X*qeimZJ1Us|ta;;8 z^cw#U6O;9& z3r}s)gz()g}&d_VyAH?p^1-Um5$#rxxxS%KM|ViYFnh?FmjO5mqydCH#QLoS*y z@+zB@%FJgkR?=)!#H;j%7epkO#_LwRA7fva%-I9@*~0@Z2+DxFhfx%0>I0RaH8V6e z!mI%l%ywSzy4IRW@2O=2br1+yO3ztK(e)6CQJdW>-T&jn0-5mrXUq!?y>_A|i_xAM z-5C~gVplN#@5zr7-oWR(RqZpi`yFBeXdYhSB;I!AQ0v1cJdX!>ukh}C?S7JY;A9G= zS{Y@p=ti_3s~Tufa2Z-xJzn9*RX1%N6bzizULFc=335-VX;f?&7Ah?9kf!D@LOZ&d zD`=CX35dq|idgl7Ky3a9)-9~x?o@!Dzm!EIDSEv~;0#nRWAUjZzANLc0}fh$(xaj{ z=@Pkopp>zGZhB@Li!1BNbop4s0qRuYNZlO3u{nfffH_6u&P$jgc+Tv**9~>c0aw7u5%CeTHuV6Ocj^PgRUzI*ajf@1iqEfA}y zGQsl=6eDpaAQ7GewBE21^kXf%R>wuNkD z5AIV2WJn_p5=LtlRYj$AYybY52?P2M`MdNr?^K8d-V548ft@N;mtFoqAh&H$aa=_| z-6~2Jaqh6sl;B3L zPbjS$M>6e7t(>>eynstHlcyecbHS}goD=Wl5NMLt^28zq0odFN`TQVPjhaw^N}YUu z#xVqbbul+@rj(Hyb<_Fk{>A{YyqiIQU@*coAb**0`S(?G#^`AWPG}`hZW8DT{xxHy zNo41GVm&#}@N2M!&EBE8`QrN;K;6VQLY>cM4xMZN5Ke-fIZIuiA%+IV8HH|g_cHUY z^MiJygeMaCMGX%8s`|-y)6>uL92e`k5QNXlMvi;l=PCUbBAk^9~e-foQww zyLG|Xl+v?HQwhuR>eB<-CyW|V#iirAEm;f;I7j}4o#G#A87V6yt~Dnanw`fvH;h## z>{s1irMkR8zAq(REY82#M|JnM&r;)~Sr!MN{UXS#gWM5ZqdW)i&{V<-fLs2fAxxf| zv*JM4>$%S8pqf_>b2j>U$i)1kx@w$7Fp|8<}aJ3NG_Ub z;CA4pGt$PWk*Qv9M(4@`i~2uiUU)V>UcsA#KMaJUs>FCtDyl@_B+^(RTPE0BX`sW& z16$+i{|wOj%o^nOmoZy~895n2lz2hKX$8SmVLO~F4f?{Y>+%XN=Xa7nOB+H}QP{%f zR1Ys*C{G^S{lp=smyp>AT9xBTTD3gd~L)(`7AHDDuXA z`#DqQ^c&|@r-m>NUu&?D*UDxVJ~FC5fxWD8RuWIgDQN)Mluo$iMJ$M?m2^4e~Zg?$m_iaoFDqS~`+C=js4+ z#&G?g$W^rTy?KcO2)B$`Zv9^=fJJ3wV6@H7B;L>fH(J8Ho(72Dc9p|JhmQbDx7+O$R7-?sf=V#CdRdcyF0?P^cvFgNlbP2WS~+n!E- za=~tJX$y4oHyWn@ljn`j_~QSqwE<*gU@H1VCkQm4*zxmxc-CkRy;i0w(`hG|;)?PPhxg>sca-@l4hTTT@Q+qsXfoOoPa zU6%SUR<@cgcKQ}fhUj`W3z=nGUbcM_s|xJoNPU7IM&j%mL{9 z!`+E&mheQN@C+Gw-u5}rwJIzZ5P<$}bT~Vca9IlL6D*sED3J)W!gkcu!J9ThFODHh z4QB>tBmS0bD_o6{UI4h?zW(U5i>Z+_3>yDFW;2hAS#BYe3aNj7U+;B#;Vmc6oW#X& zBT6O8VODbAixSGr=Y(5@GH6uqGQ|hc9*~!HY)tehe&Y%QQF{A#7gbR)T~4GYqZn;_ zx~y3zj4a@H4Vw!=@mz`63VHQ0-fO5(=;M(unnvk#oHP1}jknSTlp4Z;g%q**gw3?@ z2CVPQ^H!P4NMW(3Y1Qvjiz>sZvSndi#le*s{-WE8UQMvU5q%4xg%Mxt6J=W<)VM-}W4J?r$R(s6UhPM6vBd(hf0>MNsqNLh(&LY^>*JNg`Xdr=w}qV#TlZz-QAvX5I^#wOhP| z3%Zb^(;@oFj-ufl=csPw<`FTuiR5TJ=*Fkj_nEXIBb2;3`u`5FQ%VabbTl8;Lq&7N zT|)2w^p!}(1&=AN`nO4SvxlBIc!}{dXv-OcBT zp722y#f;Iq_O?+f71(B9zi&8MDwiN#RLN;EjZd}clGZ%1!1!oQ^+9Q7m;Kt!p)P5Ike|iASTRFAXdAkD_#=(hJf#P) zHs1GC(0@A$Cqmq>j&SW;&S7_Y4`$0|q`wKK85}W94Ou2-+(GMr^rz7P4at}&S>dEZ zWi#GbB7|o;12{$w0fmIKbXP6J z>s2H|tx_x(XM>!}aVdjxI-EYtmS6BD9Ktmi<7>Vz+qr6WI)`24k-0fl?%UIKDCxQX z`fnCW_gq&J8yCmlZ4?6h(gC!-a!1c&0Vsob)?HywTIgZ8expRY0&a+O zHF(C>m=u7|HjDAy2htRpr!X4F;&q>DHOIR=0`Gs+vcg&qNjThZWd*D0xxEyOJ3akk zMHP84`F7R?4Q-!;%HeY}slReIJ`E;4!{y3WoZ@$xhm z3eH;q$|a8-DYs33nO(zMo8ZtA+HpxoPcVH;Q{FSSQ-z|IvyTHH>!{T#*u?U>JlAP- zX9Q6I__Wx|5_JMd)pfj;luYhH4Ln`GD3mof{WI)81``S6ZxaRKzakftwy@zTbyW(J z@E`roAiA`>nh%dmZ~RkE(`T*MDCuPXCA8-~Yy*|VoOm>>fziBJxrLsBuuvy>9}tk#^M`01CCQ=veN z#CP>oEG5uMWpZi7AC!GqLKa0ymgmhs<-lK1-z_6yctfb}0Wz@0P}2bZvOF6iR6ZOm zYc9@K8o$Vs0oly`59KKrhR*lNi6n|Jh7<|QMU;?`@~tupK~*ZryF}X4C#4W6S+yV5 zeyBv^H`9n&6wqI}cDiPQjVT2HXr(JA=K!cbRHRcFG2h-Kq$@u;u&_16>baIA(tt2f z1<=vkLXNKm6?UH9j1S&4B<91ytPsFLEYW^_=Jrdqh$Ju?jQy!!e6Pp^``!HMu9|sk zV%`HI@oc<>g)m;fuB5&3=SVfZ6BmlkFU%Sj!9fAj@K7=n4CFW7ZzWHI$OUDacsQJT z&dSpOil(bhJ<#bb;4?7_o+L&ZcK0;Ri*{G+fqSav6cpia4Ogauy%fPcVL@KwVZ}b^ zFYA3kR~gg;atoWAiFK~4wS{}Bx$R*EO(zET2StRFUcOiN*UK9D$~j>lA^ejnxmWq* zVjmH~UsL11tPXmK^9Y2}oU8`CT|!}Se$Y>XF%T+hpCr#mqMJ~WjE!1rpNrr|_Kx|H zRWN3?#nN9V?f-?RmXHKGCtu;dAvvxyx7cWKyqi;Fc!3|=fWZi`$b!dV>JhdP zNN;0TGcW#@80VUmTEft8V6GR6ZL#Ss@fn}SM=^MO-VU1hu$8WT_~rw~iG$5z762;x zpdRf??bVGI2MES_)5BT9YKgHJApv~n(vMkKC_3xL0?u*v&Z1m2;fLsSX+#!~u1 zI`VL)TUI8JD&;De5Ong|4x7g<4Isx+!P&$ zV1Raq{()qsM^fW6s{FKx-1DpNRC@KaZa>@r=*vv5ol=Q0&;fYjHAtNWdd}NYgaYwC z-D-#REN^s6@9DkP1?}a{|Lpx-TsaaMfU}%muT)~Q7GPY0o&|9)O%!U_^sJtB;=sDy zGP;blh_9Qon)vhU^`b!LN+RVA?f|#H(7e`hyyzL>7YVL9(R6XQ1M?>AbfxUWJqR#e zB)EBTSDXmFB5TDwm#)D<(VOmj@@5?FfdrSi@BV*i3aDx3N5|Sx zbo0N&=%~ zK;kX_yzjpE%_f;omK7&iKS%19cd8)DsSXV8Vq(rj%|Ng#NJ`VVM$WZ;x=rg3XIGrU zpAz6T4AdN`LI}G+v_jVw;waD)-p}-c=o{V9pMB~yf(DM(_Uc_ye`wn{-x2qYo`e&E zyz~ld^{oE7|Kd8D&#gFxa&YOa(hj8!Yl7nmk1GYOgGT9^c*iq;!hk=73n>UN##A{l zS{u@Lh>a0fRh3cuS6d118umW7DXu#gtxa3b?X)nLM2qiprqF_Io+XtPI6lM1FxLtU z3*UD}zq_;hdzXsj>`79FPVA2x>#F7b(k&7~)S^gAD1x$X?1~j8FBe*vtkC$_tNq~# zXdgzq^!^M*^p+k9&4DWaT45xErRB0^JE#_zeK~cHXUEu+_kA3vSr?CK?s$>P0*0{` zTuN5=l)m5z9uZfGDbn?_j#dBXQ#=InjRXb9!T!TdEI zp4kEEQA3(4+oe|8LlPKXUT@<_W}Q#$q*yoLZ@Gv&Hbc3_-&)X5+QcK~JQw2DE|Q75 z{RhxF$|%7uEWXd)pRz^SY`btP!3bR3XmA>7Zr^l7`eHf z5bPs)VY-WbRZ^5Qv%ih+K7gk1pnLm`{<(y^!rBa3qAS8jCIK=)N!LSIFojbD!g_mc{y zy_ST3ijXB5pqNZ4R5iSI0U%wKa$zJGpAiT3jE%11p~b9sbk@pdu39B&@wtVpK}4KE zj67?7LRMQ{1ZIWYshPy(6#^(aiKrM#I5~ICO&JPxQNMDzK*-267o;-*$LjIHZ~HRN z(3LFl`MDx|Z3bmQA1uPEp0Jr?!0mRGTmbSsVwIH-Bwiz=5)_2dj7V)=CYFYfiUT(e z-m--!t~Bf46vJ~}Toe*(qKYZz0@xcY_rY8M)1VG-Au1=sV!LB5_+e^2Ih}PITn%Xg zfbWcsCMQK|k&M*{#Joq+!QSzdJ;Vybb4*H9NlrVe_qU6Q1piH&!QZm}52CdDv_}V^ zu}lf4jQg!%9q5w;_u|77i0x5L}z8zvY2x#SI<(qm<7zRZ?SIG`4 z%&Qt%>f0V_PF>vX!|oF){xWhP5;{|(zIAruT9QQ+N&&{l;DopMSY-wE+JFS>XAmkx z5~;Q&X;4C|n11P^w-SS^iYwQ250kb(L6VT5+#88${QWH!K~!(dzq*|$ITKV^;*-ZL zbxn_MM4zH4Z#Xnl`pQvffKzCR<@)--Izuzg2pp1;^Okq+maPB8(V;yUf;;d9OgX-2(yE`D$M8S$FmmIsK>C^;sRE_AMn@ zYq*!f#;o#w{U6JFkt~`iuNoO-!KS|z7e<1-w{Tfdu?N`?A^Dh~GLGZ@*U=plr3{sK zD5v|}z+NAK1W}A=TyxD+Q>fGd6lM4fhSI9R7w>;6tt|H+aK0|^lMwA6!U$d$Q?h5) zW`mQ_L*z*~D5JCy^WAPh!YsKreq87K=IuQXv$;rRgPuDlIYfwyL?Xuk-L=koT{{<9 z-jJ-6&Rjmt=YEAQT^V2NF}T+aSTMc@D#X)&)_!z9lR|H3&7#0@(}lp4)sE=d}E99!b9>x>N1-F9A7 z+$#nWx9D-M>T8p@i_=f3LndFU5ybw$VX_oJi^v5D3~}k~rdjkFf%CL7e<%Cb|{RM1lDY9f5TDeCJlQ&!*>$HPIUb z8I=p%Mo2n@2KroHxB|!Z{g6`hXF$3fA&O9(iow;hn!$T%`>T_#z;mqr3EIE!h-~>S zwUY+(|MbesWbw1T5pQ7HVHLvDSek_?f~3F)FndYc(PhDf0wO83kE&; zA_zhmE7Eit+KJ)uS9wX#^7!l~ggXLtBhch;J5{}}5N@$;!X1Q4t4QnIYobi-^Xudp zi0DdBwZYT3f0%=OOqW;fcAh$$e;2ru)Y4)qQx)&sYuV_g>D9IRO_H|qrj6QCI?QJz zHGlP<2+9N58E>9v9pP=uz~+xQYCaW|-s{SYcXcc~8pR>A&mSz};0ugurD-b0A1*i( zzmiDGi>MFrSyJyUQBdntbxs*b>XJ{IwO{{OtmXafow?U%=~G!XA8$bfu-eChGQXDtd` z2!I!K^2L6I3ATWbaA0e4^;t(4D{t6(g@aZbB`X9Wtu)mPPtFUp{LVsbYxS~^qxI_GEy|zS~>Cx0v+z-8J$r2 zOSZ&^a`k!k`ebSKdkb5whPSXGvf+|Bi>JRCeg7f>O*;TgPf)PN73$)X-RahHDHDmn z1!~|Gv<)qUt65Nz?9X?dX#6;*emc~BrYw>fr0!ON1a-#f%hkO@TsBjhu4N*#)M7Zz zU88iLb@ZqZms1W8Wap;HaB7)?k;t03%rLUh`6Scg;|Mz8nW$M~3d#n9YmLXoW&2v6 z5{iA99d)5At)-G5^&$i#4bU*8t|bfi3>YrbkM$u7n(QtoT+uR6#_e_GPMxbK0{1}? z6AibQ##%p6JY=v-pIg82jW zyXy2BE(}e=TfhEt?Qma}mWCZTSQ(04fZ`=YAF&n!83(S9n>dhm8QRW1;FyBYa6ba) zfY#@YQz=WbFL<7OnD;$tPyQ-R(k^j&>KN8HO*1fTOfbfvc zPSwW$&LY{xIdqoJXZBvbKn&E&9tlX>7=-1x%tk$6Q+x(--rEef<|tP{k=6zNWW@Ae zrFnD$cDSd`DpkKVPZB5M)aq@0U~0jAZ(zona+KqCqp`_-I=hSifF~z1Yh|QtSf!%) zZ-xqY5uac%FRF7D1)>xF_v{T<9}qT|{+mQKku;co5I!=VuE+06&N~GefYhUrv|Z4t zb9l!V;d}_1S;?$>{0Zbi?+E^h{2$V(F?5FK|iG_{Aaczi5&i zq<#P&V!b@gHk=_l9F;$2+b!Jli7iFO#GvX+_a-zB0k1|r4J1(O|AF-jpFJ-0SPDWz zrQVjk=L72s(gLynaZ&io-vO)o2(!ewjGunUOxsUf;KdM+ubEXquGZkPypzGrX}zO$ z8leA1m1OjQZP!mIN-`lRb9;)H#|-(rF10E)FRwzIE?Ih?ISJ9qkC9UzO z)PpPZw&cQn_QHdd>Flx|dkgaXuNom)BC#f!*&=_IXka(P7d1xx8*apuB5RhD%#^m7Kv{!vV_P$Xm+FxvWGemF#*5`OC6Os58QNfIn zrk}Jw*Z_e+6=@u@9|h-;bzmAS-=!dQJ**^1ml^)k3}U1j?4$GKA-gbwg$TwCh~)@w zS%|{HR-sdekb^sA0^xtsIT#WuMsT&Eqcz(OXm|e&<;W*ozVU>9#02IKGg~2vpMgEY zYa7Dpk2R;vS;x_#&9VPUBejPA8{|I;vgH20R-hu8bJ%=kgrwd3aKj;SuB2N)@k`uQ(dzK za=BSj8ox{EEOM*i^;~Nm(syC@T5U5xli-8HF-NJIdi7j6{qClA2!5X<&7JU5!&3k3 zbt=WQHusCb4qv8+m*+4{`EkkKC&P}%nVIxjEb*XRqwZ8ndoxOyoItDN_uzvxt`8Pc zbO@7y2sPl0)CVL-__KI_iSjPn>fyzSWd&Pa$r+)ds)m9s{w;;wMrpa|0OuqeKEpLJ z^H|jdK+SfUmy&9Ck6NBI`gu%R3%6r&Ns-pMP8uN1jA~*+Wo~qxN04Op5KVg%#lj|r*lF=I)JDOMG)TSr1jnw9+Z_~Nyr^(8+cMtthm$$Ht9=qZlYGhM90QM6#nM*F z%X1U)&k79T#I0WY(n)K%6-3V+bt)B|zow6yVu9J#4f;%0b3@W zX9KZ-PtauZO$z3a^NYl8yA6C0xH?~gJpBk3a;X-Ch(f{KaVb3>mOKDmr-~zvksiQ_ zVtm3sfG=4d{e_HuQsXSiw8%$#tj^@zLhXJeEd6Lydect6_<5}pq8S0Akqv1wzUGhfW^KNw&1CvMeOihg_tHM0)iMZo|??Gbm^wUm+p41W*=_o2Q0=l`gxsF@)YUgi9lIkzt&i{$}c7n>a zXNA=po(4aeHB@IBPsX*+CuP&$ch&zIh|{a2m6%8I**-3Qjpg ze)HoS(m-DFN?7Z$PQyN`fVf5k_|Bvgr@@~GZp^L5w_-*DEQzPj|F7#tA`&**gKYLW zb_rA$q5O4;49bT0pieKDyke0$u?-Y+Bz`Y1An803c+I~ z)0sP!mQyd8-HqrAPXi@Du4r(B_%D54ae?T|->HP|@Yeh1aW|~{^uqmHA>I5PlLxUR zCa*AAGs0mKg14@$cfM=BLDCh{AVq0Q&12SY>Vg&b?pRUAlb3o2+ zgoT`Z^xe-`#+pV5^m_8tlsM|cdlCzt_a9V1`O|RJMLdFg(0)Dz3Cc$(ie=u1m=qwl zDFCG8U)6&MZu%CCj^V+rIr7@ry5ht_lgD$ePWepo6nc)We@54Mgw;4SL;)QT4+s;` zVU@ut%xzMgRo?rrd->G8D&r20Zh8>(Z!%A5955(hs`TJ79hX_>5nns&TU9`ksH+qU zo%tf=Xp^G)3V_N1DRL8qN|jo{t56Xs;$klgp@_W#YFMacGn;Uro6ILlEiA0T30l$_-p^>but$gt9(~R7mHGY?OnQ zOY~x@Sqsf!r%Yb9yU}LtGf}VQ%#+P>FQCLsDsFXJ@UO*W^7PY6`v5wdQdW049h-R> zCsEmMGAptDa(ET4@K!QT6iK`W5OL-^(Mj3f=NuMY#ltt zgRd&>5(VEfG5wwBGoqwY%~brR2C9x27s@u9O#?nSgE@lA_(iNybac!US+C_$a|GK( zURl2^Pc3)^GG8R|TJ-p4E^F zqDsPEwyvYp%*{jb17GSL$wkm~Yjeb1&qjTxm0KpnyB2VB+h?D?v`>fx6J~f9Kh9nf zAX}vw<{rUAw4a_C|6FV^52c6kpRT;K3F0xht*5HIa4UhG_5if@RSc-qzZkH%V!J`S z)X(GUZjR)7vM`P!0EE7UUz77OV_|j1&Vl9a@rM@^qLr%fZyulbdycU)9bTz}Ln51) ze4M{4)SZF4_K0Q(svXsy)xKeD$!)F4hf|IQHB^-0C*;R% zM*CtbR>_6@3ANUXW&&^~jX?Yiy1kwh)HXwI7WrLOpL3wN)-*wbBTq(W7hRsN=$QD= z1v_aZ3V@{&kcEv8UnOoS|BfdMvmHfyVAO_h2GCfIc)hSUFgo)@tre=cAJB8JQjjYg($5(EQKwT9VK% zg>;pB3hs|P%#d8NEV5x1Zzy@9bHB))l6~|WmybdYDbmBDB1|XaMjo4#Cxrw!$03R= zdCCB))6eRmug4JMFWmNd=kc?@r&Sq_w+!1zB24IGR9sBz{iEBS57vrj8ySRUz%AvA zDT+c^$H}YJ59J`)dUn!@OiA#sX$P{=6B3%S$21oF;MGYzlN3<+-w(6_}_{ z{mqnO&_JY`jEDbBFpwf*j7OYJ#O@3ViN}x?&Q6HjouB>I4c!%a3&9eJxEAwLMtuT} zQ>?uOThFs70erWfb_I^AJ4JgW8=ohQ0o zl*CliDI~LYf`1M^tu>(fnU_SpdB9ORuAIDez9W+3JWwd&lVTf~Q-D;vLxPxQU);lZ zu_c+E0e>P~Jou}vM#4{r5jebIPiWbp)Sz*lr^mY(m&nhc-=&K$h!L~%FeyW*;tK4EFUeww6_gPv2`fAx^7 zm!50fpO~BLwZGi=cG0)q&7qu=g@cnT9R!bG)(J~4ICLswKwai?1X-o^&srYc3c&=x z_;NrTGVvHd-xVnDkT8BB(Ig49_wwv2G~1SAo8gxTP|j=RA^*Jl*6`LL^Ka0Jcg}W8 zWM=a8ZQhN&P^zoSkX*l4aJm@c6EDb)`ESdeS3ph6nBPr zyc;wP%9x1fAE;dPH(|e#Y6J140;53Mo8ddbv@u_l2fQT7LW7*|P1EY@<6-hiEyEDjvWu9ic!xgG>N63o_Grg6B|wQP!znX@#r#G~2-5;!zEqhFEx zXg!!4GpF;6=HL~OpGwD>`LcP<)1n%vw*d`%wE1ujeu}&VP3?P`Hv{-oVA~vSlgVh0 zS`JYRz6K_vD&h%52{^Dd_RbPYDDvCsD|CG6zn-WGL;=2V zfBVHACPVrS#42mj*R`|oUvtEqC50s}6}d4T_o*+^NRkqeZ87%P5TU~wU}^@9 z<-H!^>b+eq9Go*3n>tuGCJ=#?3R1Xvg``Ui^9T0_#40VT*;#BYfesy<=F0KT@{~ps z8p<0`r{q5RJp$m?W5NP&g;;$Mz>HLlYY{h2LtiMQED!w23x-~_%y*}r-kSt9V=jc= z%$0B&L}#_XhsVA4qS!d147NM$^>@D_D>l`~+#F;WrXvX3AQ=6J;pG#1d?buLALOl) zGfX}IgmhBA_~d2-@R~7YZXvbnP)ulDPl-p0G|n(+9Ztuv*~2M{XcmH-*o-hyl4uLg zDq-TrRb;v_WXq7uGR36AiFt^2^gwREerYq*=+PMG!l*i-=x>J>VN0zFT-;uzhE)a` zjpT8FW}ok>EkQbIt@wh>jP)rKPjr1}gxP<>#%t%Dnd0}8j;)4b>ivEwBLjXq{ivFz zO|hV*T+6_fh|Hg}okM-QAMi$F27_i%#fEP64yed1w?c2XUG*t7~tK)6KHABG< z{gFdvp4Ufz2-`H)5#P|62!YzV;6PwtI(P&8%ZJB{s2^bOtSR~5B=gQuq55`%UNnf8 z#WvlUc7Q6c%sZ@$_;5@_DHxPrepsy}kCS2?Ox zkaDrb65~pAL~7u9un0~{ck=|3_22lqz8a6gZlK5D?EZiw#HsE>b|bS?s$kc`GSs>6 zCV4(tzHLybRhNAD638SJ|3s!q;=Pe{0d$Np4{~* zSa1_wzhS61-jG#`?Qp}5p9F&#*T0K($s}i7tnJyPtZ4uEB1r(}-aF|0HFi;Wrfx2ev|Ujj=sAnG`&oNa5Jx z^wQ9zG09!UrsARBz>pd1s^A^z3@&NsInXTW8aPa}3BJT_0wbGn2N1}YT^zHpdn70t zs}`9ysc!@IQ>w=IZgzre&S$L5p*$FUUw9PadOmqj&Zs*QFNh!VFnLsrB^g69v9JP|rMa@C3y`aGwFjt3q} z4rPGUECEAFL@uloWH8_Ws_{nNy{C5uH{}k7%Uf9Mh<%_z5IvFaxYV@~PdT-QKlcw1 z3`|+z*g4Y@MZ;hu&+g!d_n{brVsbdnoMB~_UBUZ=KRr^we1+)`Q?v$>GibVEavP#? z(8LaKM6LZ2TYdb@%lfK!U|QOS@1?>a=GZp7W%h9ghNZU|+RP>87%Ma290A-DH^_Q* zBR6I{BI>(UrEldXTxmOfX)!Z|8lxd0l|x}}-QO$xnS__2CSS5bwQVB7P5BZ`u? z>x*HT-rci+r62dhN>8}0(D)+~r{SBcmv_oq>p4H+(}S@qNO-DyS7}dN3N(zpUA>tO6fh+5Sw5HkKBJQZf z@olJV7Q9qqtFnM3{a(n=@ls+?EcwSVc{V&{bF0&Ye^H3;V!qMOTOi1_kYf$b1ee4I z@vn}KMZVeXqkOsldG5THUAYQ18kd%$}6tWJ5cW z`Gcl8p)~KzawWu_u+7@A2Mu=aXZkfbhm#FVbc&Jp{U!~!Th+#_k`Tpay(+M2cCQ%9 zLbO6>g5ura3X48Sylg<;V=?*x`!~Q8%IbaWwbX$C^v;~>)2@`8^yfPn@Y{3BkCCpU zz;YGRL9TV<>!-X>gtqiJ;vX%hgQQyuZ65-Nvbz@wt3NMZCr;rB5m{1fQX?j0AY^{L zO!^jz-J~+LSA)(w7(|WhGCiQM6kYCaE=`TW>5$aqgR8Td$^`Pra2{I?dT7`Y4f1SP zu<88ZAD8`aK)=cdWC|#EtU`y{9Mv_!Z#Wn*aJzw$>_J7y16i!SHJ;(oIE=H~LPw60 z?gOT@xsoijlD>$cIulm8P76OG%A#Z!nK*ZQQwyzE&H!}$@zz%VKgGwk0 z7lG;GVPdOEXj50!iv;77L@ffG%!kQ}jyu{Cal0ZTeJUFJEt~fDo=k&EfMoXc`|f)s<1$yyQ`A_m8;kb9^8 zD$?t7-{oLBubCC)>()F90h2Z2p-DZfn77$kSJQxcAeYj?r+e!yS3{y}(smcQQ~PEg zHptJuyZ1=Rl{HPD|I|Z8hzI~bT@(ETp%}F)tbz+MI~%aU=^dy@eUIW7An0!7D_kg| zv=gv3t29L3m{K=;whgcP5sFHUbEJ{8cTmkf>!}sqzQBF-QaXHcjIR&Drk%4SC3Ymd zLbATTGy<^&lmr|xO;pfK#HgY6A*cc~eP(v~>6C7FFk+<`w7YEQ6S_rFIi#`bXAbi^ zSkqW(73*4|)AtKlm*wq5eF#FER{I0^zH*@Pl+J`=U~1*}8>$ zB)Yec=$bf7YpNhoT_Y)wmYKy3wX)`pMPgIqBThtTDmQBn2|MindJ*;XH?n3WRsaG( z{l7=BTxi~=F+VfM%il9?+h|%K=Yv*fS~(t=*}BxdlYfoB~yeYe2L;5Cgev8Lm}T|3a!M2|k@voOfJ%l!!Lqj3d+FSTj9uzi=B58Q?> zb-z*3A5pPK8%9y{#5U(A56x*Qt7O`IM&z1B!<~9DqTVcnXN(}1(-T24XnH%RsWC+Y zf1V)J_#suyGiLu*=R6dvtJLEG^o-c973$ThoveHG9L`kV2Y~(z1^n>cPPru3983#q zpf**7`M>rvV1wP0w@wFkY^Yd)G+lst@%DlATjp zRN)=s0(C(k7D>wX6X-%totW;b+(QPi2R*tioQ?nyDMmM10Uim^zg7Ui)764nFFO4G z##9=S;f}FGRK5)X0ae`sVjC~?+R+}ACJ)KolPE3=%bLg2LFTBcun3JsI45qU6g6gS zckqi___@P)4p^$BZb2Y7ty%@;yyvK@K@On&E~FlR1fanQmW_40QU{V)EDJ$P#$a~u z4}@}x-tC$G_)M=`-%8yNp}=a4;r59(iXPB#>3LWa*OIK%b!_nqR6l^BToro{runBA z1^Bq%eLeywHqvMOi=Da8*pU|e!fyQJ?>e*c{{^Zu9*3@ezY?^m#NE*q`=OA;NjeE2 zQ;(e^xP^vQ1xnWfkgG7Y`r7KM$$K&8p3);nHfC>iAalGnIyz}XK?a)OYco?QX`#!f z;ukfjU+l{f-4Vr7)?bi%m?w&l@p%~mL-1W+&a?pf*Pi^%CGDYyEj zIG{%YG`|ALWJ+;dERx0X2-wV24dOt}4+uQAI)d67O#ckKVbUj~u&v)UaY&KbC{%&>A5-B?BQFxWOiHkV1W@E$R9gV1d$*&;%e$cb zz&U33VOhVo8KnnrLe7Y&mC+vBd~q3WcLZO96U7s>(n$FUAlTn*o|W?%CWS+Tr)56* zWkmi(Giik0XmO+QKxXSC;ThibyejJ(aKB5wE=5Y zK_Dm2Ia?20FQJ}W3Di0|?4RcIw7)Pdys45wR$H5mauG=Tr>fjXQdGsw>lBE8H$joI zCZNx#GQM&vxF7hnxq(wE+;r5ls<);EfF<(@dg=z zcX}}yK<~h%My6$io~$gJiNFsm7WKf*t#t^(sTrZC5=_)Wq+U!=Y5O3W8} zR`rWgBne7OmhS%MZE2ua=nwKCGDYsMzKG+K#_3I*|#z;T_`HInWEl!?YmGa8x52|51G^EujJ4aw5(C zsIFiG?3}?35w3Iz^Ji}$11eNz3gIKP4 zIRIMHTVS_Ems*Otyx3Nbsz*dHwN(D-Qkkwq^?tqU{*Ob=#9_k#lUgtj%k>##Za3vy z5na|U^_5#J-D@VclvpeF1HUK8W+vL)nS!rV>w5D4LwH)i~R(#lL)__|KcP^0o-g6{tduMYG256wnF_RkpO2 zB`eI^cysSL)b5zoQP-7$mp@Z%0QP-xfhhiC)GBe?k!b@80or+1`a^^_(Ho0( zTmYLQ)~jMpQR~(Od&?0&dFIPmN#uWhLiSGqrCu`qJcIc>n07p{+xVFl-*9fTq_c}V zu-kwcNKqky>d$i+O0n_YVOz3ufT|sWiELmJBXrk^`D`n=`zHtKP_=51{UaMLqq3Ya zXH^gRILV}Rn%S&<#RUpKd!6*zfmY@EY3-1m zeTn~#!A_gzE~94d^33zXHA{qPuq3}BQR+8|mc+2d4mG)>2>cbVhO*Ffy&5w|nguc@R_e+$amOnslH0!jwokz(zAert`2fNZuSlKR*Fdp;-p5qzFU)>KDv4~F zcJKd|loDHXj-X8CucBHV?;L=?fW1{wBBdzzH#lMyPER9^Q|B7lN2c&aRpur_RnSsX zknniL5=s3FEnIOt!nLevSTShx-X>n*xHpJkgA0CQ7g?5djy}^2iM!10V%PUQdy0Zf zI`YEFj>Q&~{yB!2o$eyGy9mAei+q$W?EJX`w6zow%7K%$TG80oll*FBc)&@rZZz!v zh&1NR7KU&{#pFE?EUPrmxi`^i?S>VikJ&BFhbE)Q0>htB=NI;GG`0mC_+ZeWA{9Qm#74HsJmHFJX@FgZ!SI%kH&t^qlPT;`xoaAvz5fs&w3G=d?nw& zG!E0Qx0{hF8Qai2YVr>Nnt#Up8o0Edl{wJ};~r|tV~`b)=qJsoR*`S#`bIK;0bT=GrYKii_PLa5V*I*o;-fdidFEZAxu^M#r0Y9ytlc9u~jJ{x^EpTmaPAv-V z!OuD}7_q}|0EoeK<{}R%j|2D+Vfme)eg^=@=bZ|x=C>!<6WQKM+zc7dMFZ)*3Q(vy zV#|U*iI0NmBP`X$40~~Vdx-@}R^UUBEYNqh8fXX%PgxiXK7wWC0Tv&q7FzHZ8^raVa^~6n^Liba6WJO zGuFTEOzjC^Rt&Yck?(PiA)<+u=8a%8l-|<+cy<+qxA)BOj=>3mCi7;xAmy+uv78*~BfzbNNq^T|X(c&*z2yCM5<6@#thtA><}K=y){Rr%T#DR;_s+x4 zRywZHxDM<7)7$I@(O`Kp`p!X(O*M1YSTVko(%4^quwL}>--(u8S)eMbJ>>l-zK?FR zI14Z*{t_bORbOAV&;U!srhyGdRj`H753W>QlricbhPa;-Ci7^{ zAlF?21haPXpdDH-^9kMEnIC%w0#cPR%wppV8YdLQCy>Bct!`&}&iW92(qnYXOz%X` z<86YyQ-ynUP)+kM2z|M3Njip~w+N#9Z26Y+66`cjwawCHa~@OG4*gUlP7(mI0mpcY z6Ph`<;;h^bl#z9XMEcVC*W+iz#bP3qvSkovx2oM?-@1-mO4F z@Jw=csPma)SeCwqKu|)OsH55#Gaa~ISmW*co21W{{M+TauRX#?)R%|8^n^)gQ7@w{WKcBEiwSBYTXXy-=r9 z!hzLI4ppAlHrG(thKAlJzSeo8QDK54|4>YctOxBIx%ggQEUQx%4OPm zwH?x_Z|toO0n2ssTuTzoOM{$^U2GHEvTh##L4J;dZ%Ub?Fhv^ifggiH9T*i-S{+7q znSEnpo*3~Fs)r<*pW{EESmGn=9&D|r?+%7N=f82|alz>^l5!NcVdB`Js2d*{@>@}k zldMjcXKyI8S;I?`FHRnb)ae7J^b_iXqQHMNj@6Wc>jt@osh0(mWhWCu&5fvtMKNTL0_ z^-|rFFkioo4nL;o%x{B82cCXzhC7`P{{j^Yeom#<>8)Rbbt$U=9-bh$HH<8VE*SJhPz!@ZqLBYj&S31DcNyAst ziX|dWte`2j4&DZILg{Sv1>08=#(QbN=#ClzR}!FO=JDYX*wJQs!t^ghRYJ@Fs8p`R zS`8C2G)I2;IHOuZ?RbKKP)TGE*> zvc%2I8^X*gMA}o86$h0F9NQs-$_fg#=a+eF%a+|F(Pp`L8lI+!3=&)pBUV}<Wf)W$HcXvb zuKn|Mg4_O?Dd@Z4y^fT)=pS{Sr;fT^r)%Q8_*DN8IPg2H<T>*cmBP}1O7+GPwD*;Mp&K=-+;f&@DEY4_co^QA#?6p+~fMR*I^Jd_7|{ihzj z)#E52#t||`9*O<-7wMpv)j9Kjy3uUv0KIO7nv-GA;F*C}^G`jHa#%VIEurFpRY|4GI&nT+s z((RhAn!44Ima7gEm$=dF128@KZ|>eFa3AIxnm{@?BSl#0qvx&FS!x6zikQbj)n~ZS z2p-Zo$8l3^cAYYo202{11e5GVs(H0+(Yz~*mIJ=8bn~v7OS(6Z6qI*UU1aWUJC(Av zZ6xg_ak}yy4~MpH(PnF+(Xx7~&-XKue@(V>cv`=PPTbU%Zk;!$)HOxiy+; zy3h2Ba0`*zgoK}3s@l2lQz7H;ka~^r%@~DZ35fmEl&pyP*L_5}nVxtJsM1T!R&f+^ zc3odyLPx*Bmjlg!(tN60>c3m?{fDjN2-GIQSyNxLbLDTP*2Z#|bpSQ@gyp?|0c>(J z!lLBdbQ6DKQ!YvK4ZKj!qUbCrZf^Q;2?Z0wRRJj{B#DJr8M+&)bRS=FCm?*TgiJDHX zoyXGU-wFUVO89JG_!a$>NfX=robngx)g#8g1rt(}0hBx!Rji-fv5rPntDT{Ff&U-i zwP?Mi1=3^jG6EPzVg>ZfG zC;28a+#mN727}XGNaZwAbb{4P0i}W{DM^?^^gZ`=5k+$2{+~*Fi2+^*x&qgFLW%$ z^9uc7A7W@O=cY&;+nAng@9#`$o6R9bDR^Q4^Rln5>=vyMbRN0xYw@v3Lu^wK`ndR7 z5Ac?MNnLm<4()z_*2NV4r`Ert`btdm>#nsSoK26khMHga-SbqA{C1F6TrZzA_1Msk zoxjy@!p1bH4~STPcFj4&Ks46))eSulOzbL4>*1H$w; zqv*z}^#-uM1r3P6wTnc^2v5cYVcsOoTrg=%Qe1|YszTb8y5-&p#F|kzAiA2u&fEI1 zHgKU_cy6>xymE{H*>XFljlYpLv08by*Hri89jumuXEbLB#92+}I$O!<|V#C|N6Qn>uGKJ6d508iG zp+h90$;&WUd#xu3f{j%gZpCacE7J-I)TW%AL&5{lM!vM^2&18jY)^{kI^3Y%GDz!< z>ejUdQQkx>=gb?Efyvfbv}6Qihbq?10e;ayvHPhgvZWITa{U8b9>OfYqERaSO|5gA zyu0G%g=&1`(n>h{FFC3I)D9f1ZyZsoc5`6-ka|Jo~5`U1Ci|XdvFqNAYJdvv&w<1pjPEasy#z1S3B(Gm)F}q|vj?Bqs zP{;1F&?y$V!qHOcv^vXVE#c<*XL))^=!6Rprm8bN08H5fzFpFN{ak@nP9%o}8H(D-&FiDPQ8aA}*|J#nl%8e&pOQ1up-}eCd{~LnY zg*vn#ShvPFrr2Nm=;*eV4jn4;&2%U5)TAfhrEhg%9Ao-7inm^-vPLdS;|+B)dAfm` zqDPI5S^PkwDgZp-7RVpz!l>lTn2ocH1Aoo=1T4;@MfplW$v{2mm-Bh>LWX(Wy zU*huL5Vq1Mv@S2j481{LaPER_rb7^VOgCwh z^kR@t^)y?eBxDvJIc1mQusAi=1qxqc zO@y)73yBzK0p=q;vT<~|HBe0>a0ktdGrTtrMHh{i{1`Wm>q87?e`k3St~SwKOUw>d z6Af@b-J{j=_Gp#CHo2izwP&V+%ENxDb0$cwA7#ZJ2iEOf{{kp{JW(h6bBixT@!Au@ zcB&#x#JxMM-q|--GSH4IMlud%MPc?y7Td|G_qnN zyj8Kl<=u}`y^Ly4oK(sA;~m3gA4yoct#Dbdro}txLx12K#3Bad%=hU|KbY;FFl&ml zrtu!NwjhUrHcVVA;&R(<9REk|-&nJkSPOT{OJy?(8OtLILXel!x-!wm9YJQK#V(vv5 zSgOZo_A(6Xlx8S%Zm*|n3)VZ^L3pCMwY(f@7aS#SSZUyyU@Y?;$@GopBw&{lxd%DM zk11oDI>fEV@ETvd(@b;-i0}91_U41du44+!3{J{gW@Q1gSy(1TM#*~Za(x)jp9$t4 z>^hI<$DoB2klK`INwvfmz zAWUdC+mlz>1+|F5-P%N60e1n4258iAkFym%F01y94Z~Gq7q;;l56b!GT1@#d^+EX$ zWJ6CJdBns1FzcM(cZmsc+Vh102y%C4^Dmf#d{=_mGSbW@mEAQ4N6Owuk8kU)iiK$E z*~vCEZAC>fGYSd7)KU5-*LVnDDm30R^kP2YAeAfcL%&{1CJ{N1N^!R9P@lXvF-MJ} zOoYj(JwQ8d&r3Q&;21WrQ!kJvrOH#RtA#VJZ#3$1{z?ix2E%@~v{arGvA9^;}(L1SNYG}}`cQGAcT8`|Du_#2Q(;iXz^B0^*nXu%Yr!<^E zLh=&s(4Pz^4298?4LdV=O5Qi3%kpiD5mDJJQgPEi9I!lah74R_Ay<7hjBr6IIB){Y zR*;|-LPqLS6T(B<6^*PlJHbz1c%&uP5jj(5t+YS#QS4yTx;0et$I*P!v4^B5SE93m zfSF(QtLk zt_@z^cxjkjpiy(5|C`*BXIiy8$T#;$wPLyfJXm>pT-uPX1aud9Ert%+UMZw(OzpEJ zKZ36nchU+xD|*{~amSl_|57$;nAFH=-Q3l=8^zqt!&Ql}%h5 z%)PNK5*%Z|as~KOaq*JWUx2K4zz7f(#)qliAog~r-ayj#6SyE^-PW=1v_NWW@ZZu~9-lyfKCaQBcSyiP(=l~D3<7&xW@JIw-ek{y|v4M-?(TP&yN5Twei`Z@$up!!VAJD|-) zJ}!I{e~_r6u1%V2btecRQx>;L&*+}}^50ca>$2SAO6H(^D(Z$DCEZ-x?>i%gn7mic z*lMqQ_{=>p>fKieX72B6#oCnk+zz8{#cfa@^Yl!XsWIZl4z_QU-(JBc;Ts*cZoZ$` z4eLGI<7a|n%D_!{cfQVFyid)F=n0?mvXTkPo-l>d-%x0j<9*ML)f3`*0c1+u-ndkP z(f46PF|FC;O1~*o_jVvSQns<&DFb1m2sN!}La!2sAb27R>h&5O(u6_Iyg_)v)YtB{ zEXqcPlZ+99Vgm`k15Y~5T(r7&kBNwfe@WWJ?JnFa??W&b1@x`dk9@0y;5KNvjRbPl zMmISFar=vN&cLp|P-Z#y(#c&IyPlon{|Ymj_yx${?55rqVO~$UBZ<&^$HyaBDkKiJ zCW`rpPY|!UA-D}Vy9Hr&8ng)_5d`BfW8Vcfhd1!oyDjBNdY zIQNET`|;v{TO$Hzjl0ByeoelwUD4W2kd5?@q>0VEk_GoTWMNG`@#E5?Gf4qsi9l0? z>Txi_X|eQLd`zm!KgHOgCYfGa1VZroSyZhP#LZTH#~-MPPa? zpvp&?bWR+f-Z)JA>H2yPB1IF~gl>YOhTx<|94L|}yJ+6TL$xz4S)UZoe2x#Fpohd3 zMG_6XF1!8_vg0a(TOe)v3pag#FmgblTO=0Agf3ogj<^P9!*PyvzK@7U9*HN1?o-C8 zWgf2Fi!5`Rc(AntzZn5w)I#lw5%K?XFa~6RSA}}V(W;!oE8V z5dY*;j@pr1%H^A)JR>y0Ly9R%_IdG?A{Ut!jky$VhHcJC?5OnXIZRSmCPc|QNi!X# zN2WJlR}M+a65Efd(Om06qOY5io~s{SPm$-)4Fjd^+1w$>VYk&Cz~O1pV6kq~`rc>509Wn)r^9H1*^uw28-gkLH;(27=`L1D4__8^c(+Gsly zDpbJ(s?W8Dox-)JWOONaQEA#}^M6u0hbNe3y>HDO@Ys-bQ=Ey7?mvM;ADNkaB?7?u z$Kp~Hx)3b+H(9sUFQjh4`2#bAW^DOoQwEWs&wJt9HaFNGw|i0={yqS9r@h1;klBskGzGZknEL?6mY(Q#|A38R2|ex#P;PBb4kF zPmY(2HyY0vVZP9r5RBnU1+p&vUCld}^C#y?<<5}!IDhI$HVvQx{LS@(_M%Qaf7%nO z`vd-E6y(eyC9in*?Ty`P2U$cZmhAe1nWs-ug04gU(7(bgbP_0!uqJq@>P@vu;`dlr z9?=NhN}{d|VxXzHmmFQZ-a=plgT2`mn{OuS#V5v$9{>P~JFwKYl+}S1fc&wpvh66n zUE@0xk_tcdJ*4}Tr5{)n?{eU7KING zI6yB+RJH;&A~P13P1~BS#@a&eLB{=Uo@%J@BY!l-Vyr@HusWTePOWqT5gk^}b1@D4 z6WO{2$DR!?!Rc*(FGDiy=Tl%dn&EfD6iXMOk|AoXVi#4LGg9+5Jrix*DFr7z5l_rK zUa4`eh~Jv6K4e6ak+GKoA?PQ z{@^F!THQqn1arNrBtH!jDgOc7uEjP1MdJ=+f|n*mA`j2La{*ufO>iPw|FR1=yyHf_ z0o&R`lC9D7r+=w7y#Th#j&Re3F`h6`pKZItDAI^wL)En#`sdH-xpE$sZ!GbVzXuM|g&4Dd5Q{M1@mBp_bX_nH?!Dsbs!0_p^|1i(69<)z3d*DS2u1$G&Y8n6GmNfE?@C!l=YZs{%f9U$f! zzNJJgLL3#u;dl1o(E;)+%6mwV6&6?n`8w~(B zeg|$!&qOEgPq1~cWWgYUc7ti>Sf<%9FS-h%PbN)AyUJc+qDRO9ygiEjS@Q>f&!k?J zl_iNAkT0N*iLfq9HeLqo0q!D}uDlVdGZ%es@1|Ff* zYI9Kk=;A7V|MlN3MYCm22@5D~O{v@^7&;+i%>=8pc$*-MqV*6K+$^Al#@hEHpN=qn zUBhraMlt>WB8=%MT&2CUiGc)P3c1N+#dz)be$M6?hNCZVBn!`NH)PEl?^AH7I->gJ z$nWXtuokF=2xCyWihzl`d~Jo?>g!ILGQA;#O4b3DFy-JXQCBG(w3GR^A#O0|VW+-f+6Mc- zNy&=^q?RhdH|I865bU|(<8jL;4w!`;7CaBPCP3M%#}sPp{O=OwFLCgggd@A8)C85Q z@u%5I;^A;&l*~++RjBGS;${}h++7@kGdd)zzxjj=?2V%4Hm&ZzF5Qw98>8g6+u(b& zWrRPZhOt3p&$@NcaBMqDY^OY3UJF^yr<}Q`tZNDM{7sNLKuCxVXJr0SvVpl}M=G-$ zA~j>-7W=84t_*B64qEt8qN#izAKW&O4;M^tN1hacIOt{xB=G|yq|@`IRNCu{UbtD4 z{HqdH+$~v+B5WQcvQ*W}W?l3dR4eY7PXLShG7pZV6JTpvz!z1OW%D+P{~>U^QpZII z>0d`=P#X4+dq4Hx`rtkl=8lQWgJ5eQn#`JK19*^ml4ni;k+wfuE*Pn8!IdZVp8yLs z>{6jw*he(YUvC zhT5MFq`y&#f9!3&LaW!hw#s7kv_F%`s{u~-(+*YDX+N6ckMlPC%D6LFCbWT!+pgDu z1`mN9=~8j0EJG`{v6|=4|EuQY$qVcKz(r5b&+6FQk&4Je0d0eF}7z%@{yJ98i@ZM%wul>2tG{2(muYD;~ z8vcc~J{R53{?K_#!|)k;0lL!pLqve}XZjBbI&eKrRn6EG4y|=q&u!lJ$f86w!I)A) zss8RlF4c+c3Gg;KhDEV}?e?>f_*CFgT8CW<61aX&m{bshLg=$Vsf=*&SKRtywah$? z_-WNp@}i;$zpUs5k!OvBq_A`68ST%AdXlP}GSH6ZR_l9To~< z!tUTP=Sld4A6%r~hb}c>ma#HNDrH)M>%62pCvl$HqW><)2~0P9|EHjWWqQ5qLo6ve z&v(2Jkj(1F8g2$lU~w1xEv~Cs7DN|ywyQ_u)N-W+8q$@*Di|cTch#<+pdyZqZ_Jlw zV0waFVSqEbkv4lvQ#lhH>Q|h@2rmCD-w;_R=KD`g=V}q(d~68k4PLK+`p^HLv46$> zn#*FElpdBv7-qa2C58#F*g={GU;lQWggc|Jp+i^#PVia_XeHq73^J_u5X%YN95@^( zPZ|u8F9591q2eTw_9At#qDOm82fkhQl`4x96FyS=U}MJD-Bu`u#Q6#E zt8(4@K+WvJ|2g&W^sl`A4L{KS4oD`+uS|8kvHiC0KSEmuX2pBi<{OocO@Dn8r+N*G z6_TgIf^*&1PAFoyytruT7?UjI(B6AD(I-h~J5=$5+ahdXhXj`5BYRv-7y$|?RG{d- z&}jS^L|_W{w9T$dvdUetb5vpAxp_+wdRKSrsS(|;TpK}95UVrNcPlIjHz5pWs+_~D z0|;;eDS>xwu=-ehSeL(d4gq{di#ZKxPy;p1mP^vT{7+R5r!uKm4itbJW*C35&z zK;ePU?%jIVu5$}dArQjTRJxA=Me`Qy@wgkxy?`iT9MHUY5hNEj@!YqCmE^>da?^F; zZZciFGJ%IOwmuQ4;SFg4MZ4*87%f#>5zb_T+;CrTLqoM}Q`yGLkAB=X-GZdoVel(M zq(VLvILQ{McmF>Tyi8{H#MgW z@XJ@#OgY>jRWc}&59bBWsBr>UlxQvRF5q6I*zQBUw-lHjWdBO|g#X$E_7L5MImzY9 z@$*WQSrG~nL$JXm>TBRA$GiJq#v*7J>6xBWJ!q$3JiH)mYH?i^>*_V_nFM5*j;CrT zdC^bLD!Ik%_^*P0VYWH58f>(B>)AIuJu2Z<%YYTiwtiQofp2O>ZP;O+``YHs@MHh* z0wUn&V5I;Dvjz2Uj=beVbg$qDQWXSBCT-g=8_w`VgvS1?d~JaPfJ;PmG|z3txi%Kq z)#wuWqDI&L4rN>l05&NLK1O5@>So&c5mMVZp>x^@!udRt8wTdrq4;R}Cb}2=zqtIV!KwTiNAp@r^KP)v4MRAjo>ASY@@CcU&IW87@p^))XbQCfs=wvquTJQcV zbf-WmZfyCAdMe$udM)|KmUfnM)MCtn* ze{rg+4B2fPt#HE$VtZFl+%vYDt-}ZwP<~ic%Iv`+BEKfCvD|4zHe==hR8*8OSdv~E z0Ej6dX>s$>c8CTV@;^Tj)}c!1kzc(Sq`!mSP^4#-EPL zB$jI3;MN*&7&uxe$%iXQ86zw{3O=k{T3~Z_8zn zb;>sX3~l2r@5P3W%o51%5xFHv!125L(;!?91O%-$=hkf;mw1V;{lw4GtE}aX0~B6` z(d*m(@Jq=ADWDC-#=*j9Auvk#crc45OIQFl28Rw)Y9uQMF{Fb)v^dP7hAXiO)A2bK z`;e#CG%>i^+O>CUzYUaK_cGLDpFq1nkrhw=13jW-KSjYI+bmoL|;X``wpX?80*1Z$xG54a2!J#P&7On)_isV{t_{<6K z=cOeJW)}AiT^!p53*~-DT9N$(^_j9juzTB$E4+c<))isU5t7eVf|)2#b!YC9WhOXL`Q6tI52Z-3&5YESUovF0xm11JEud59fFFS%0_*Hz8=F z91@u$i2#=A1=-%MMJ`90E~72_hx8`F_1F%(-2iHmI&UpD07!-74D0{)(HB**|v z51b9t`YPHVkfUvpHe>JYr_qW$om8A#E?2X2Z4ieFl{bnS4!F-Lxwd;CWeltQmcEl1 z8vrFF$GfEH`ubV`|TACF! zagDbP1s6|vb1!+{4h z$TfPg@H%oG!3hZohr7)JTa5c%^v#$V+EG2FF;J}T0*0wRBN78jSlY%$BPSP+vTAfL z1=#84d#Yj2J^OkD`-5$*26iF`1YK!2E1Q)X5~{=%9~LwU(Y2<5_d@1`(}^yVb1s#X zQBN>B_fhrSF2o`WI7ExSwi;Z1@U(ObBvE=vo}E&#=#EphopIiWDb#!zFq&>;3O`q< zL(j^kHE2R2%*IRZES2e(5TrHCs=KEk|B)-Ej{?1lg=^DoMZQjDh6BFC_2vKtDk&k? z*(qS2=K%hZ?sE9{~ZLi*uzxl$x8}}rh;iwS$qC*gOumH=)eohPiL}5}*!|yvt83@y)Y*ob^Hber@ zlX2L$8K}57Ticlk+~FwLBe`O`i-luFqp>j+Zkhe@jP(b|*a<()WgIH=D5;D%o4HRU zg^-^Ti0M05CR**y#3A=LH$PaLp8q)6`t1-n0rM`mBf{l!?=19457gUJW*>_Gx3Dm@ zibpvv`L1h!iza%1bhf<7k4tu+d8L%JeJ?nAky%Kj>4z5d$)iD$lnw^}3PvaiyFpdB z!t~ zxZg{k?X(7iBO~eY8<5*i`YCz~t@niSW&9XB`4E1c>1ax^{TXZvuIsa z5s^JIf?6=*MXSH+c!EMft?DSDEhW4`l@CHsrNg zwhA~ny|<>SDpN8A*b=s9ln)Eph_k*!7PZj3ay|sdt4a|J+g83j$xP^}r8sV!62EL+ zu6nJ|RxGQ3Ar>BZI>b7bxH*kk2D!z3b zg0@P0_Jqapq;HnYAWMj&PqDnnuDGzcgXh?6|5|^Jq@?;KKhe*`?R>Fr!bSjw1m3@X z_)B&`M7l+)m8A(I4jtAT zwDC(G%j+nfa)SRh!7Rm-0P=FbjC>rxksUM5Zyev_e5+741w?_?gQO&LJ6?=n2ZF+U%V-4*Aao-$5R6-x0 zVHab;i0ry4%wTHQd{R*S<)P}--H7#5;|=afbrXS(X#VS3qvqgOo;hT+pSB$Q;2f7M zjno+vWubq2n~W^9FKqm!P`|*$a_MQ1BZ2`x0la^g(n+xC^;h4cvp|T)2g7R^b}~K- z#W0vmE8}R!Hkk`TB{lJD9Z&XW)$y|rHY{gy7wBeCKSWbEb zzx9EsSCt8(o=upV!a`ju8*djP97s>JwL;_bEt^IvOouQq8}_IgGI`<=wywo(PPfHn z_zHK4xPKMw&H}}9zt#HX?raUSBh=QHi8=`IBIgj8>>0g;&MK1kEMrw3{I{}xWn#XS zwF`#+DE61)0RKM#z;dikQ`9ec(wQ7CW5VXT2NVfRds!!$weX;qJnRjdX1oO#Ah!&N~uL6B4m z@^oxnadVLqVn(F~C$U_94jXCo7pdo7n+${$EZdauUmxXco+WsD3&=M8(Vp((m!dCl zMcgS5-d!V5MVB!Nj`uqx8U&xyV~9t^xsuc#sTV9Q(SUsj1Q1K=ogXgqW^2pnqWGdiX2P=cjNN5$-CGq3c66r(u@PiCLV zYlMMEchV+`^%}oF?5Ab6RLI8)9gJ*j74=hhv#ahH~BJ@1)re+Igh7c>*<*(tIZS_`-n{x1!ZcJD}N2 zhVwvIt-q~y(Y}<*>@jGhnT>gAXu?}&w=`x$dK~HX;Vf+qJ>=Q&!jR=QOL{lMkpa3B zire>8_=lc^l;0Br+$YeRB0RrNSDn10%BObYB@PjuU}WfCm5dP7%~XPIcfH+h+T)1N zW%O*`C&o-`$+YuAP8mCAjc#Qu_lB+qdde0P@KGjI7od)|;HtZczS>rdsx+RedV6+4 z`^iV-X0{1)IR_jM0LA8h*A%Sn+#Q#7cftgwDp&cm%`AM6>;arw_j=0f52Rk5K3JDM z(NY*(epvqK&isq+d~r}_ZFE^;e1I_z>%rDiaAo{-_$H5J!tv2groJ5^3HDL?1D=vk zIkI%;m?_ft@ru{D{eblxSu6Gt3q^9BCfUY^08(63t_oNKm9VPcUIB%BHCHJQF=rcD zpv4DpVLwwaa5bxhTG@bjem8Sj!e*T22W~sbCU9kQR1?*YHbG=5rsQSODr=Fz|9?e{ zZTB$@JmoLIesOJ^QZhT$msdS}UxsNEe7yKUcU!yPhEUA`r-MpGO$xp_Q4F7a@#SOg z4@L`}Y)%LodmG}e%&>~6Z@}hdBb9%PB$Ura0{F>05)@yc@g=1BoNGgqD2^o?dgS%=JP$|{;(`& zuAgdXbW6q&huIqt=ook?-5m?*8_NraMLF(Lj=FLFLgq#Sql9rvb0;}_iKFL`+Re$2 z^P5S4`B)vseE3r|RhfB>86a??_+q`;n(-4S_BDjqFR@Di{}4e*oD6Q>I6X9vxdoSA zxx45%nns@A*GO({STBB@kwk^eLO6zqTHzEQVk-qNb(~X1uh*l9h3ZqS;Lm|8F8__{ zaMO{>)vP#%+q6C8o%CFQT$Ki>+feWgC1(?Ia?5epm!qYL0A}Y)Nh6 zV-Ep1bT2w(-2`lv68PjNZlr{q24H1hgpULKf4F1ntF8>61wQ}m2MDIs0;|A2`eQp8 zK@fSsFybVKS4G?Zmtn|Vre-`Q@ulvI)DI=Stu*MwSv6bxmCC9KDv}KRh=;Zg0s+-` zy$EQ4@#J0XsFlK4%ibf4UN#HrH_n@;3#1e$gY>_FoH1C+U-@|s-(>WBF_R)FAHBE3 znh4IonktO6u;nN(ZY3|W5!m)|4tsIGnvfrFNDnV1ct!SR^V)cN%=}k;UT5|z%Mm+^ zq%qqcj%2oPJL+eNm96;Xdo5jubOrKplU87h`E3QYN-ZZk>~d%J%~vYNw#*Vl0Av?O zuM7TLFZ@j=bjHH)iZ$h#C&m;?ro;7gXa3!00^AUfl>u_&uFrD~@?#uRTxJQ85G!9D zQHfGn+YT_uL3?WiIgKKa%zwWw;*xp0?wDhJfyWyEHn};bwXd%!cNjy4o^Y~)IMB!4 zcHjgiJA+z?+5ZY#kal~zWmj`Kh(dTa2BbNMQVA9SXa z1h`W#35)Z-+ofYzi|}Q4ZSr*-qo%AYqT}x!nr7=|wn<9fvD0#~ocs~kkYoieD0BnV zd;T zO$@9W)J5$1lcc$Mu$07jpQ;#4J2m)oWm0b$wryJK=}bpew@QwaNLv9Eo6geqBV@jXt-XY1|22r=GjeV@HQ60wv|F2sh}BpUx(7g@{I963 ztFc*weJ{c=vjVj1mWjAu2RhV6;}4`{8-qsi_#i9uTyi$lfQ1pf^G6n_Zr>zXx23gr z5vQ@%th0D1^N<;0qU$YP$n8NPb*~SbLOR4;3*Ta1MYwv$Hlm@jMXe4Y`Vf!poE09& zaFG_oo-UTubjY%)4v9!zvL1V!<-mT$gxVx6PD~yb19`MIMbg;g3_)IDIsoS5i)QO| zmZ&HF(*FSqUXf4V`l(iJMqC3UNeT5j+neN)tY@@X5Il{wWdT+X)<&~4*-lhpMT3U> zuvAczODWhw%2Pa5_Yn_n14+BOW_zR10Mri%Qt9^%7*GJS%BA*msc3spq-&b zxw>zA%^!9pOMJuq9*(sT-m)t4G}!Aa=2&#s5Qq`NPM9yPPyO2y+*&LY-!jXwaMIT{+qpFPMS##3)KC z2y4zeVPNkc_%Fq<+prvjCb+kzM#uyqFy++^3`azm)(<=CsF;e$4?gD_rMQ-zJCNfG zi5(CkPp$r1D`sWr&`1?IZK#&`=gb0T##*EpIVLOlqaTKWoj)pG+2XCz{1Fj4^DxRZ zEx4}0y8@|h10-@YS4jprF`!Ut95AiD(}27R0c(d+`>g79%<49V!8Nl*Aj#n_>@F_-Z-?Zo(Uz0f7 ziz^M=P4pzi`?D$U%~(RFJtf^4kCE6AT;poniPwOknq?v6eYS?@MvxS^n;s799GTveMeVZ|#^lM%C;Xv_x`CEah5kOuu7qi&;0;4=Jo);0AWk`AZ zPoM9riA#z)jHFcVrRn&<3a9AUg2w~sO>mZn2{VeoefnbA&0lz|@jedVHzM@jB)puF zb!sSR0qL7(AP4J7JR5lG<9~=YKxI2T1nS_JL*5#W!aT=UIB*@9j#E4olWxhKQ0!w*J@pX}RSlTMhSJj$cn(A$$ z0?;ihl0|52(k0#0FodM8IH|L@r0i`tcBJT+Re@^e^17FE%EIa&linX0Hf0X%)P0yz zp=9w+BJwW<0AXG<-gZ+SKiDcpKq=ls%+O$2YbGA?`o6^{&rW$RMQ!HXn)=U8f zuHP6vGb>Is2C6SZNvzOC$R5(X4t|(*(+B>AT(ZVt6Zm=Dls=3UT*b=&YB(cxNG)Xhnd?x8 zRJ@FKmHMl{H?a9E(iDTb6zcXsbl6s%G(3@+&K|Kne*}-i*Iiv2f)G+^y##U~_#cS{ zSR$jP&!~8l5VL{baJ8Vy1Q}|$R-%6tUL==MhKwZ_ z@W-%)p84hd_t&WtQ zL;w|y68s5Z^XHWx{cjA_#l|JDD#-ukV#Yog`pa?^>sy~SPL|JSapkedKGhUXASXAr zWB8ie+b(-FSEQFk0Il4`jMCUA$F%LIK%YCl+@XE4Jx>N9H~!s&5O@aq!I#kx2<796 z(q539FRaz)-(h#!E8Y>xKuzS6(xTH|+-CyTwVt5I9$Yau?j@j)v2^oN)%xkSK2MF~ z#bnvPQFYTtNqF_A{UwLb{qff_)>5Htx!npFgt>XyvYQ4(nx|H^$4N0)&6rOg5TJf0 zS?dGuz3#ig8HD*Y5yhUIEDX@XUSE^`abWk1ep>CqZuCTRIy*oV9|?=vVatpp33QSI z=1*p+2cyIjM`b3dZ_PC7NX}C8zvlZSIg<*Rjv|JpAP!OUpq2wA@u?*3zvepCn|A)m zg$lu1jC3mQZ~j~!Ih;GFm!|b%6h`d6KyH?s(|X#QNoEo~6kH_SX)#NeTIo2g9o2tM zza+TR-7~F%`WBX*A*tK?3PUxtpuKPJbyuBQ7~`XogLU#~+e<9y0n#mNU9d;9!&Qo} ze}g5e6=*}V3Fl;YV1K-N=na|oIWa+%!vMuvVi)P3U%L3?Ns!Vos(I>&EO?tSbTb+O za9-PI8J{Me&~~P;?I5^CfNC{fwA7NJSzrFkKGJR~h~+vYWGMKBS!xML$*Y_k3u0N_ z8rHZ{McYLWqMn1YWfV%$Qh9Q+EDGYFPTTUpQv^Oj3l^b+2IoDm^x|fDrS{S>q|S%ot??d`Y^S(HQhgV zTwlcuiH1t8@#qzox9n)lIxbMBC{k!EmSK;>P%(m~-)KA+!3pC~!&p zEa?9Kgf@`nxTgMz2J52^l`mYFfaJgIKA!b$%N;{_695}DALnbHwOdR?MVaVM@myc! zfpyD$rhKo1f8poxN^-{_2-Mv;<~x%SCp2YjbeWkpP2<^`ol%3JMG0&1$K4{ZfgdT5 z_qUS6$MAx37}hzh_*KC<*}!g96>Nk!Lhaqas%3^_@;7I~;=7{$B^q4h%2bd}TaR8* zYpqEn9b>uzI%6ls6^|ViBm|?2Zu>JV&~z0%&rDpFwXC0z7h^T-EtJ+iLVtL!Yxwx& z8erOWt4wW}juJ4RTA@0|+EI&d{5@a#t@(`qEkkYE$!a}UayJ+&4w7_?QZ_Ui%4A^n z5c(wb;V*itk4T+KfuJ->ADerbs@NLssE7AWHah{~4fvf*czJa1j)1-zUwLR3)a-XG zbof)M{KayRP%lRhVhRJz-<14}VRR7tvct=^)Wvfs$QLlajbe&YJp|so9*@6D_9emZ z@N$V^4xNVeTpj?~b(B2-gnq_M^*~a<4{89r7b4cEXEBvX^kR9nVlp~4p(1)ldFsZj zszD;$EiL>YT`}-niYZ#br29#@4wr^KT9EG=AgZxswIpoa`QeR)yrCo^@FnyWgY%4Fd3rtoL;s^w?KMkF14D>2u zMzo!AyWL4eFi1{itzbSeC)8rV2Gegdtp6X&P6=OZK5vU@Pb`p%2QSmfTcw$5%Ew-H zk&zr$SLKdQ{87JU_*}Vzu#k<#drr(l@KZuMw~+>@%ha%ZHEjLRffGNRit(m2p!^HmzX1+rEmcvfgemwhb{ z-b+d^Eh<>=J7!~v7-NEWoPp%cHS5=n$h&lAf0vBk@DQWFKhQOJf8?|ri@6xcWlC`3!rnBrV5xT1qT-p=*IdZ3} z3FUEyYAJi-x+^j?of20-g;FIn>aL48u{dp)npLT{hm`Y~(oo^*lj8D0W=-7S2ZSac zIP8#2TEimaInC-4%wb8klr%A)eADr;V&0vZ5*4;H1Ek*3tq$oP9{N7GyG*Q1RHNc38uIGW23 z{FWq=z}@FJ=e4`By>R^#`xVK&)Vy_JYB6n}ry59kC2wrB?0%!P(8{L)3r9QxAX>h<7^E^RMi!d;OyS|hyCc*ZDLZ_WT z$`Sf^B<~di0;%oGbufQ#?=(nnsLU+YRl|wC(FY@U9e}dny&C9fxs#G%qZ}sZ3^`~6 zRNohZ%4q6B!O{87HTyJtdsw4uOAc8-qEGVZRCt82q!O4XJa;E5t|DfSM{(@=uvF*X z^Y(BjW)vcp2D`OLk8URJos`I@(EAnziXn)sy?43E9uVoOXwdc+&-p|vc}uj8z0<`o zp6%?Wc3njKudNDra7>S|6LRb7gPBbYW-5p+G$h*=1jtDTlf4tVv5)tZ$t-9XlNhr} zl->ZalS$bF=`Kp<-z9SeyU-+gx(R14bk<_yvlSh#iL`gj4rEz@Wjhly%wD6ZU%mQ* zY>CQt^LRt?c$Yj|aK^U`kk-FvqRv2y5^=B(>h>>|k4uNjVy@Nr$-`Mh8BHinsC^ei z-YHj@u4+Ok(ymc`$dR{uwkFGG3_Dp(PnrJc#q06Syt_wub7On*3*bbmR4oXA^;srU z2@WpMgiF|MuQX`?-L-rev8jrFuj>dwb-U3)CIQ)=Pt!Ywz4bQAc+MIe5-?<9C1fx! ztp)0t*)r#NSIG(fv|U%h7n7@I$~N_EzuD-(`{A2@s`qS=8jvG&dwms{D)Nmdd!TU0Aww1gF zi7S^anD>@CV=%eX@I7izGKm8=15}6JS+|;$gZ_(x}@1mKaCf{AII5pyYSGh8xFJMus2MCakze(}bmN+BL;kv1S?Eybz zvS0r!>^Hw1%+euMob>kV@5MS2wu(zWqkX z45m%`pg)2M%UFAa8>&+1T?Mk@PoSSgYD1CA^cC^XFStXy3M&Mr!zoBhqSjheA$Mfu)F8?{e6OuaICVQiio28=4Cg7bFY?iH3pRj_lIP#(ksO4d&Q+=xSV9@v6$}D*5>Stc%LXUisSV{CjqZ z881gDE<^$In6_62nxX`YK5w>-W9Nzmhg+iB5{t^$LBGI&5cYt$|#K z4~bD^O^-I=^92t%@4J?|#(!R~Y!{oT8*YqC*~AJ||Ktyq>5C~Uy8S#YOmc4Ek5S83zd+n!*C7a|yVeQ8&QhO9 z(63Sk$S<8@67q(sHFyNKrKe@#`^2Q9%{QK`UdXTTx^zRlC$LfhiaM{8d=)U@CyU4!l_Q(KfZ)7ia}PBfxtrSHASSyOeWxJPhrR{4Vq^#9|6NGS1C1Z-6TNdIkHifQ>mF|$o zE-$#R=Hzs$)b3)94s%p6*_dxc($!l-)ID!_dPZUsduc+hM)LPF zwNYbmnBw)1;}~uv(GeIQmp(ruC2Bv?HS1+S6}FP+_)Moj386p?Q}KBjTqxZu!F1s{ zXSiF`Mvpoa(Hq8*9Jis@{Ha@DU}7yLO7eG@Ey(pNx=WYVe|{^c@n0ss9ZrYMp{7ju zooV;6s;;@yZmkMDx_3bkueC+qbD=plv-EQoJb5`1sdduc`(kqyua3Zz4;QBI)d=B%8^jVm#OU;7w&S17OIyIiS9K=*U7_|2`V2 zeB1@%V$D@6!a*!q0wXS)o!-dLP@$0hfeL1az6Ul5geRzF1}*A?_U_P=Taf%XGWN9} zl~5GN)WqQgw4j#fVtrwJT?LGqRa*RRN1iAiU7oc(zI`%nqC3&e-$yrkNE80jZ5Fw6 z=6Q^KjxYDDP=0~}(eOi>;1%R|j7$cd2a{2_){I6txVycO)D_f%OYKYyhEAB3Z6#G~ zS9L->Xri7CQz9E~1>)lfv(%t4$!i_-iJU@4Tzv2wCc$K6$oi_x{_UWi2(NFG0)&iW zP=bq`7FZg8g%8k1SVL7%bqNffW>^ip%&W+MG2OVcLRi|^erNJ5X|%8_j-lmL4#aWp zb-y}D>;pu_eK%Pyqa1`(+VIj%WCDe{)Rji0aCpS ziNb*3RW3_daLR87_OuMluVtuntvSGcDZ z817-BH^*`@f0l$!qypd7KzhHGG$yoH?I}=u`GjhMk2`ZxDwV%oGjm1)`19xi2=%j3 z5%F}k5-U|Zyw-6KOaLfrc|BuhWqXvU{0xtcT})8zHhKr540cIOUVm=5y{yY4E0}v+ zxDJj*YuE-nrqF@C8A2aH93=ggdmI)#q^UJk`_&-1d~E=#9~UK8?7l?E5*cZHc!Hdo zq?*2P!0K1%PV&B3E94@gTu~Hm;7#P3;UsK`Is+l=wZBhF4Acb@jvmyeq}E;&P*-}n z%_-L8fed!s9z!W?v}Cn2B)gWUUEI&WLG}L^zwX5mQcK@FHUU( zh|R2LF&zXNBz40s1bHl$Ovw3~lB;LK-Rqn@+>?vmU+8?fG{sqO++6rb&O*qJdG*-L z=EK7F+a)~MNK}P8*ROsxre+`FmfhumgPyW^j%I8)xp6ne>!Wb3qtR*-@btx6(Cl` zJ~))hrdslOryM=TF7(yt(2RSGFtz*y%|1|RUE~ckFJ%W<`F1IRmEV1g?EO*-t}8`A zqnQ{o@u}>i^0S{PT`U0k&2Bg}#sZ?nFsTa)oL9&WQ&lb@0Tndn^T_kuBU$O1B@f_n z+nC?j+);Jvh5l$JNfW}Jdk4aAx&_lki-&F={!V;$ERnUGd_q?qjry4uF`P6ffB_9r z1yUfWA!yLY6b!JvhP~m6;N~5O7)LeS12W|lpN2kg%PLYVfT%kZ)E~@;&N@#JY{g7~ zpS!D2qackD5`e>c!8KnUp7<=W8m!o95<5i%6u_jYfXCn zm^D+kMimOj8-~TxJ$lxh)4kgSxM&d2VrA;zU@dL}cqg}sMgAMc% ziHMWZq6UfcXOBW4XHE*l(fcOJnW>|pW|#2ahd7N*zsQfMC?Qa|P?Lu9him~1uZClH z_5)EFlOCyO)7oK@%-qIjN1x)ap=bU6JyqW$w4S1}>{e3{8IP2n0Rld~#@L=k%7QtQ znE`|5p&S*lmXOmS_=8iT7QQn(IWR$(YBY^~xO=zS*@>~zDve5e(~U>4;b7qb zwUXaJjs)S9XE05cf>F;i6hI`Zf&`gRl=?#J(6XLyO&lAY#*pz1`J~pS^mDn=USP~U zu5*yIi}|xP=(S%WlAXco5^^;4!_4|UT00KntgoJLTJT=^sEFv!se1>GN*6(dpXpDI zc^E=|xZ4bWV>htPVNYAODr<);X>A%{$aZYi%_?s4CWNYfh4J)HE5Lk2-fAbiyCQaa z$@T+e5UB8$g1a&VS@FZ$t=ulf!;e`K0qgXAr3*(XCRl>nTS#8XBk$!s#28)&;e*L+ zFXCCkTUAN4D&kt`yOXr+QC^ycq4Ish<_1YJgpomL<_wja(k;9e*-1~L;wG;lAcP*T z3@5?ZR+|(c&phq6IzHi=X%*H<@x0ghQzg+hT!u$C((Ns;8jQaZn$KNzKk|=F=kiVm z6?+4gK(6z7GB>Z)8|EpjC`2&N4edtDh3o#@lBzxgCw|sjO33dbNqe>dbpUPM#9?!k3^ z;L||F!Hr%aFQ9uz6>2ZLj=9kY35Ntz4|c95=9|}Hj8g&*KT372+1+-1?rVh6;Bu?@ z3mLPr`W7t)I_*kt^NI;oW>M`coWC`aP@%*DNxV1GG;wM~wHAyPL=^p#VOWk)5}M5A z)U+T{T}ip)sy~Ks)8lIU$Q9Mn5nnxyJGLizS&l#L-GW(*jobn*p+s`KQ1ZL*0HJr0 zKSJg=+Ib}0e$9G&n&B=COdRz@i%9q>QB$WTzTBHn6{-Mr#9cbEou|mai`09r`T1XJ z%wcHn-QNR!=Zf=Aaz#;mMiGDqyBjZk+HAtn!@h8-8B@|n9Hp- z;cL)JkN&uY?Dn-Fn?>QYa3%<|)Ikff(q)QnD^Gfu6%!EIFu9S@RmMkz(5oJ@(qKI+ zZ%@Z0zDyxGl+1(!FRIW9`hojv9tfB8^%7P$q3qJPv{sCscyW&cK{-T`Ro7PxuVu9O zic%46*Ag^cSoQmlwH!ZeC^z=9Jd0HFX@V{076A+kOMw@HVyWoIY0qqSD)bW0?sW%G zv^iOj_PVwsb6k9AUE0{V0Q!8;dXB6)?kgyCtPAoyGC&7(E^O>_-|<>Fr&h9>n)Odd zs-!t~aa|Ad|@ia(0N;OJn+3AFeRM_<9Uy_bQ({BY# zqS-eOr*8`-S90haPL?sHCvqk5F+tLn6BA9cnHu+2K`BsBf6GEvsSXvru)I9qmr0g?HW?MzQjiqa)wo0T?)8z)^r9N+ z8~Pg+n9ex6z<>8erZ zH(QiGbl2>^onO8wibtG{3V1piG-EjV!ufQ=a-`#UFlK=F_in69+qu#c&P6X+R*lFI zf~|`V(Oh}_oh{>6eV5U-#zF2;6mYR9zOy9Xy>L*U7m zz^>C9xgk#YR6=+vZS`G)MjZD;l0RK4x}NzC*Npj`N8KlJ&8L*+vM%952lsEXv%x*ZM;_OzjOQHWA zu=ZV7_W*jR@OFX@m+`1TuRUs1Pb4Gt5ucX!NI;$0Loi;2qkJzzxZ)XVjcdafO8_t^ z$0}eIT9qpQYsXey+G4cCgH5GpY=LQu;OCQs!32}&9D;!;yR?m}+K}sEO};)!&5GoV z^GKEUM3`rRkDjyQx?MoE6?jF0>zw!SvxAMvlVO2^c?!pS>Z;_j_!QEfaMrM51g7f< zFe#{#W0)SD|2pxt@i=>?vE+;702~t2Vr`L{#SJWOkr+)d-lB*-g94 zoly}EQ3^YF4Z%JZPkS)mpzFP-D-IA8O1mz(V;8kQrBXo@ux+iBm7na-wor}-4K@}l zQ}j_4i#AEoETg{hJP*l_E~s~XO6IUFmnZ$ykW_<4ykB?*Lo1eb;nusuAo8iT)Mw@q z%zsH>*(GmJdjOkHwH?8+9%7i^uCMt#l|VKHF$ufb@*4cV@<14yak(H|*9o6fnPt=)kBEq= zu3l?w93JHmzuKeN+%A&uN4Mj!_zpj@K(H~Pku=pGOX*{xsOEAOjEdz$@yfgNCwY&> zcY>?TDH$@{e809UsHxPgl3`^To1vxLA3*0WJH1S1joUW~{Wl|PWH>$5$`i$A?va|k z!0_M%O*HqHz@N(Ao!mwMghQ2D?b09BKk@8%En#Bi3ofeCU*$k#WI}m-Q!zO5Ru?x zd#OUS9|r!@2EdnQZZ_nr;AeiM^;X*W#}TWqk*e!ec9p_*ZSh`T7?ZNWrIK*i&V3k2qopCDeq$zrHd@g|P`pN z4@3dBFM^3mxT$Y{^r_9zsYH_7l`j!l)&?8x*Z&;B4<{$2sXQXVDhFW(zx(ggYUc@a>tni&CGb+5 zGXe>k>QC3qE(?kV&J37AR<mvP)h#(&8*RXDnKZ{@es0Sb_8%gZAypVsG0l?QmNi&pwFuljV z>P3SnTYx3?Vj_Nj+*@nn#o6qIY9E^iMjCwH6p>X)o{^ z(Ux*mI8R*fYg@T>7nMT)c5{ZN@HUSt1C&KvSZq?8r2A~UsKid821`FmbtM3Ho8-9# z(_AFgz(N+Znme%1mK;hp#jIkvkH$@(vOC)O!J^LhZki9DsvdJhcqh7DTBj~?EH~hx z+W9t^Sh7w*2toMn=p(i3NdIN}3MsKU-a_tIMd>^52t)t+nihE9mOo!sIbqQPE_F#$ z9YAoMP?w7-|F-#L?zQ6KkfFd(^qW_9H$#zDZ7c}*qBU#1O}2^9%DIqF41+IV%#UOX zLRbs(z?Bt5&mwdbn*MaQqw~tt^QW!1MyVvY+ zwtEb~WYzD6@#o${FGVfIRH79!tDTiLd*Nh%H0`Gs)a~R0(KFSDaA51u;snB1oGpks za6g{aod(@hURBPFRe{OgV3p!pzIS;ni-4x7*0phZjNLma7fEI8rC-(Dap6SVMTI9< z5wr5hRpx@5NWj*?Z6NQsnd5L+)j8n`Khfe_F2wte*)D#<#13r$;dZD$Xk^6Nb`Ggz zpvQT0=CADDV#63i8-UjkNILOa(GwzZ(ZD0+^~^O9c?`BrV$$1k$j$ryN4-lcI1&2w zaHA1dm%;@)Dbims4a(nCj1Q~lAEz*rc5REQUPc^ETB^@o+iwTvu}vupi+j60Hz-d7 zA93VUiXUEt*?4|~@NC*>wa81=#Q)c*_4t0?$o^)uOOY|)3*((wi)n7&U~_jZaww0| znbUQC{VS&!B|mttP&w4P)wpQHB^ZVMG}R1j%u=I>3J%hR`=Br2J}z#kY~M%U>Me53 zO)UugQFy^41!HaT>UE-{U|dSVZGcJtmN5JYeF!B zB4(>8v+NpTRg()fD)887gHC7I0;uZ-2Wad6e3R)NX#ob0k{JoG*BY+byWZdA24C2G zhzI>x?17Xk0qGualt^lrFXCDevmX2li|hV)` zVIF=%x(hJdkWEF#7i^CCS(_a1dmCc5qjz@Q?bN2KvGWM>%aG!l?v2{-mxU|l5HBY- z%NI!H#TwVUB&<Rs8s3u4s5Bq?W_!69 zn)2j)7?yRMtFc$AH4qBqC@U^D94%*Xgnns2**}C!Kb&U#wYgNC{p_ghs5pyF=iX13@6EkB7~DTXLo_!Nax$L!aDj4baB(6MRyKfVeB*_#+CRY)meLmY59%;EZdk zL9S(dO(-`+FB21nI{rSK0Cz*mRf+%8Ek59RRv5R*hX#dW7sgOK-+b?TerwPmP?_7o zfa|@+Jjl}>rCC<;{ahBck#`-=R2R#ke5*v3ovLgQmk1?PAOR0{8@QBHwt8618Q`TG0C^&h6Qy z*}s(#?IcCg+CTy!kaj?kyS7V}35U;j5XrFXl2k~6=uZ5G}ocD-T^wMaC(Qr6_ zisp9DHoE8!{tFBg4PD80lep73kPrMHd-Q;=nlso1Ty}AebzL7pS9sW%XrTgBD=wsp zJ?VGqtk*lsGT}RpZlm;OvtfJiaEBRK_sHHOV0UK5{VtGX_dS`8` zXfvQUC-&l=!ciQBwZ{a1o60Bd0@)J`w`&Ds?Y(^s!r;H-n`k(94OuT`}_9TU_J=wXn<02 zJH=keBe!f0uOBX#C@#YlD=f6%Kinrk>A%g>`-y(w8<|Wti^~Roz~r!o2Ms;Oy{dh6 zsI-bv{Vk?YaQ=k^@8p(9Dqh+*x|9&6A@!&$t9C}CI<5YM3$t}kvv+cc>_;nVi%#)s#E>V{ zjnANE%qK{WH7R#fr5zTPs?)}_1M`}~QMu}uZQ{)M9P!T!^#(iyM(Vs&(XGp)uwR_m z%TT~qY|uw%FXHeadlw}&kpDb3BSGm$=G~D)Na44u4jxZfhIUk&@ED z_Q~Cr!4T6vYVi!@Jj9kwH!-zjET9MG3TF7=GjjsuE0+|R7K%$jZHHmC_q@!6$4tdI z-HWw!ei_CW*=|oQUMfxsL*qO^4Z2DESxcx@d9?=?Hf*JlndZP&-{qcz-&Ajq&SUy5 z9k#%bAHC%uEC+t#(cvG#qqGmzwue_e9klw-W&J+5tWf;Cbv{9FLJBfaOcxPEJIW?};tG8#$P?3sWTx23H7wN#DDh?@I$>7Ya4G&}}yT>Xy@*d_ug8Gn7@*A!#- za6|M)lTyXN-nvlniXx>{GltzFVRry^m4b+aUr+VS)KQO7(X5TE{<1q2$Jc`iXi1LK zpiy0V{xh|w+Qaks6xD{2p~ArXUw@2;#7LW3k$XIh*8PHzLtOS2?_>owIV#0m_aQU1 zUKNNXje@p>A679rS3r0lWrei>B0NY{%JnyBn5jM!Ewa-i)mih^i>Pat} zosz;a%v^z#GJ-xn4;=gKvxdG@Pga-9=xQhq!yW?pcl!mWHLwQSmz9zcmU%(ngP!}` zYs1_pLt=JG7tXj52@xZGtoO*{s(yxryOZnGwN`b&c1hwIP|Q zwRd5pB0sqvG9J^pWMZU!PSO-tz(F%j9=LyABpr0gC+tP~L2#4i!!t1d^$X1bwE4dm z?{d&1e?vdNgU#7vCR!9Ky32Oy&(KPwr%;hRKPrsb6Do-XdWSHSgeW*9aeFS2Q_h|$ z6{k6vwE4~vY>Rm^22e-KGoNh_qXi{l#`8r(^>cTP?)5gbQ=@c-9R*w=R<~^BE9*`) z$HeWF&(x$N=W^_QRW*1>0tzDlGM>Ycj4zSm4U}kSOyzV19YP>Jhhy}R?K^=3eH*yT zg*p#4hqV8{^>SPd%IK=N))&L&wS-4^87_K{anHsG9K7aiL5WL2uUOK+0~Gu{%uU=Rw7LY*L6SopyQPFNs9Y zrKvnIbz<}DIq8*urB3CZ2b}?>TI7FFXb%5PP z*RE6x<=d`Hvlqi7GZbT8Km})q1e~1K*xE+R4d+MIv}+hLc5UfuV{uE zCc$_K5rvGJmP$@M^bf5TZk+tEKS|n$9dH{$_i9Xams!PCSkAlQ^FLSA@6SX3pxtql z+VWPia2N%wR}ZiR=xr0I3h?^w+JyNPrWA2$uf}tGd_?J%AIYIf9mwZ#8=5mn5J6#} za#{mh{bhP@)b(mq4Rjm`3QJgs|QUyOTg@`X$@oCH+CgAfs4^PjRE{9?So2G zzHSaE%t*M3j#*6@B~6B+=ed)Du0^WaUkZp0uDqq3YW0`Vyb2|D%+uOxan+&dIAQpX zSbP?Ld(PS8CALOs2spNo`yX^u*D)Ef^=l<4b0DdK%8_fBAJL4{(RD7=-aq87uA=8~ zi40qCHl`O6=~;pAVzrI??Ol|g&T(G0mQ>fzVB{c*aInegQ zrD^XUfWxwek0JJ{PLYw80RKM#z++)nwn0UNmda6j3rK4v#4*8BNL;iG7e^Rw$jjm8 z6C8X`a>&G*9x+#M`KdK0=wX5yxm6E1{r@IW60anbhZFj)uJh&&q3F>#&YgX-5tU-N z2OZB-<$6(TIL^MJURWmQw99mYDrLD8l&`p;L{7dC@7o5vFn9u|RMu^m>PHb?ht=sH znnqwg=4`0m@NZhtRcrf6J#BN^0d>q7k5)=lFeg=8vxm&b%aWLNqui}960!A&&Xv5i zD9O$huZ~0tY8_4`gRwm6Jo33UCI10EOm$y<=5vTiSqWE8VHE@buXO$DPEiBx$TZT} zp<{K2#^Y4P;l+JfA-SSf?Fw09M;;)G; zT%|a)OWH@T>a5ptnqARQzF|^sEI-z*K6`f5#!$idxFDh{?4kMEkyj>kI)9iP2(c$x zrSyCs0c0(wW4DDS_*M@?S<^4Znzk5He|-sTk!`#tZgEu?9{lVBhGGf~2k45=*rAZq z-5rL0@3-}5PuTF5?&4u9922%JXkusA0Q80_TCAx4^%DJ^g_JoAy}t7QO{63$R%M*B zMUX>Xbs42=>*>;OVbZ;`VcSEOpmx`I<@F?l-D>AX=U5gyJ}>4DT0yH! z@2=* zFjeKg_*T7BG>#}KnZJcHIP_e?YmL%){Ufgwepsw2e;FC**T)k0q_@?F1}b0o_Y$Dy z;@d;fbs`+Y^ZalN){nS#U_}2bvY?PDb~BS_`$V7~fwO-WHsRgub{OSW&WYADz2N%K&D-GZy0py$ubsQQAU*B?pBub8B*!S9U+y}+t8!q`R^ zTnNH+q^g<{Cc41t4GW3m6FpU4U!c4*0Ov^Cf}K*)E(Rx)(hEA5s|ZY9oyE_#pzfh( zX#%ADURUN;nbUYDB7-~=*Cb|k)UZ7PTcxa60x#$XdKG(IWT~MKEtsITyG^z~ev#%s zkUq{C(UGo;R{m;yQ6XsdQ=PM&Ghd@qAjd=1!6>*~BNpY^8>Pl>%>_2zzZ90pAqsJ@ z7`7+v%+WtK)GY?1n6p?NtY%+=O8~(7v+de3kAPCc-~8tsFnFh3ysC|+LfGCHWfkjS zfq#7>RXq{N2G&_Com!Llk8BlnR@walCm`1y*-;i}hKfg2D@Dckle78!=Yp8es|vJv zHq~{1gt7EGDbTt;9S^+9DLX^gY#lC@l7uS*C)>f4Q+a4gD%s=K{9RKNUAJ3zC5U%W z@RL-Ooy?)(l)4Vjat_W}?L@`W=d?m0>DU!}bt8PG5fbNwSC8y;$L0MV*7|hWpE>|6 zS!s#Vwlb%hr=z1*WIC!7Q~k)l(Z8U9!^@?OFt-YJ2HhXT5;}?r!Yv<26~UHes#MsP z)Z3^#B9C38bwvs}Rrr?3tsQXprtTzceu5DUXY7`BIhTZ*Mh+GU@v=n@4tI~YopD*T zp5ok-4gh8o^{GB5rM^C$LTkrVB;QOR6@i>_@R)vU0H!zw6r{1V|b?O2^2w&XlT~4H>p3j_wi@pNPLdIQICme>2fAyhto|a&obUelO8 z&VtfSlna>Ou1=EsXldaO%8mH+Ohc_Dt>gQ~@Dc@K1h|+4$$=2wxtuP|m(L5Rl{WO} zwFnj7$GUB(OfLoT^&cPn3>|7oI75RkXJdatuL-3EOx4$Kh1OVt4wQKyZ3*_`!AvyB zt{=m9-=s9(!!O~`TiBKf%>B9VC$tm5&h$Q@Ml0Cj(+l3(0TVibVYG#a9>#bW1-#(M zs8qw`zI&m}8<6uZB<>l+1o>_NhvakzXE@y_W(V4WcOx)WOenyP^^AvnV%W zyQH|9Kt^b<2APB|iJ#kyK?KDx+_407(Sze7vyH6x&u^aohn?XJGUUmF4X)=oN_G9! zAh+L&)>oz~MwfkKl&x(50jfeeYix053qq=60d+(kj^O{q++()FkKFe6j2W3d)HAmf&dM9ii!rCsT1`03$5K*osc6uJA5M0I37%nNZ}KZqF6y-Hg0x87Lvzud zXjd-_-kGpN&QG@&EwkF(d(d$Ob#S^!3yQ6RTc8wNo@|1-H=D4n%L`)%KFg{KrJr-` zDGvIDS%&G1GD&z4n4zJ>60eB;{MTI`FO1>@Mzy3HDiKb-SZ6@Ak5D&{1~Rwua~|%hJA3qg;Dxi)rGFb&a53 zidA8;%}}8IRh2}=_J|GqueN%0a^`FzhJ8RBJ}OUPS?)5oZn>)_)xntK>-9QkWawvS z6<#o_u1a-5-j4-^}ZweQ4Gbj0_9>k1qu>n#erL{0{)Su~w5gfVtNCgaoS`b{Tk zj+@KgePsu9wq!-hVLNt>K7B!R)R4L!VF9`T&vno;K7~~JKhE2656lhI~O&f2Li-SkGbNR)z#2*y5hyr7*MT z7?^d=be3HRxZ0XL*|Vx5YB0t=l9o=#FjE*~naW|zMf}h#Pz(91Vdg5cI(A9Hk83-| zy`2H*Yq-G3e@E@n4!TSQSgFuw6QO90vX~ZKQ~dB+O1$uy`CN1dDPs^_)n6jcn1Tvh z$txuZLxEm@x6&Q}(8C0uo_-5sbape>sd)-0(=jiD{Fsgr#Jn4L*gU~ z5&0J90!=fW;9btnF+aOWLTjWB2M^PGMjTHms90b4I%8=!4m`x(f-=_-R@kgWNSH+* z`?1#!gJ#=~>YsEI24GBRty9uZ6G|CJfZZ0{zxzt%{b?;BOAtNN__0y^1E-t*-Hwz4 zHX~E7td;XN90vn-!KRX?ih8atFA9|;z9v&Uz9=4$5TS#|PO<~AGT&oPX4E8oTi=(r z+IP9VaCv!j*P#SwT+XC7Xz2VE)IsZO(1O+hrTWe6jJx8aJ`!;dk%oU70YF!T_`Oj6 z0FGl0YQ;b*2kUJCZx1AP#wk_#(8}gvMtxecg=N#{xU+;2(_FcaVrTiI$1DFO4-&}e z+D*L#n0dF}!lW@x=Aqey14fkS72;cV*uiA;-+m4OEGcFN1x_BF6!I8qx4gk_akwCB z?a!=&07$a!60NIJEJCS;o~$ko*4`rONXS?DXiYjS`1Y_H5aUdB`jOquMY8-BcM47*0Rn6x`Z6RRrFnUI=6H1J|H44uJxId0?{b*zutTTsqS;&a@R6At? zVA*{8*BUh?i3p9d%GGqIE_c}qDFDe{qym)-1!bi|XV2uLFIEX?q3*HA+GaGyIiE@` zeKXs1P9Mn+EX9S|nA6SfsgWVfy*u%eLN!Yn+1%O>)Z0vvx=wnH;2M09 zO#y8r)U7IcdGWZIX}%*dAuxC3FQbsS?7{_2^F>7#=n|+`)Vh6A1)3YZOW{UrB!($s zDTt&6++Lr=MAv8hQQsezh4_wbK}2*m+o5s>Po@)9Mog@(8UA1A z+_Q3dgWHXKg0qWWUW%Xu9rR99@?AOhy`*rrFEhn9WTqkNav{m`1y-g8jF=zRhnhhzib_R=sg_8#dmWQ!S+}Oy^p+Y_3t#-1 z$23llsHA|G2!n|v)B!-ziaAa=9J8_56s;^etz5rXjcUu;QTRUW?mOE2gsQyYgJ@7q zO#=9Ri<~nPKz5|ac?Wx5=%-|kIVgW^50g4j+l=i}K_4GS>(}z(IB@$g40gF>q|wC^ z(?2U##s$duO9=2rD?OuO>u}=9Axmg=kN;>qWyQk(az8S7U;l35e?@+#u=cZ;Ic1BV zC@3(!@tS`|bDLA>UT*!54Pf5AjR7Mv#aDb&k=^jCn*wQywm*2Iqq9THTmSMFGgvm@ zo}zKb)Iz05yYl;>WzXOwsXF|<`a@4U^xBmIyLAU&SS^IHstHv?k|qbK`Zbv%UZ+e? zVc!6CYo%PYXB^ve!b9)`O8bpf2@LL zC5YTY?jq1`sJVtRS<2Xj8>@g%J=+c z!{PMR?8#(jyUJ6h=9xq9z|pQs3+4~C=xwmj`|53V-Pw-`exJTJXtqZ?DLkUDsw6%g zmGPZ{L&5B8@$$Q*4Q+c!BmXI^+qUipISk9b_vKRS1*U4`J>7ZkPPHsmKWm`5vn?Wo zB$WqA4$h);a1=db0>O9yqYwnQWN*-QTptQ>%T+-u|54`ukUN0BOL>Hk?Xwi)G(K}$ zlK3f)bFr^(?QB zr;!!kn~G}=KI(>oHmM2G)plt_h>4vD$fPYr5z1H9FSZE)8NHn&2-kBw4BzP^nAOjl zM>L)?@JR#08;-0Wpb_OR`yI5i+=lK7ZfT=ANVPdVEY~{p{)Lc9gc)) zgNgW(sNLeDU|^G<31CDHo4~lw2g;1JS>DN!!eftTBYQryw)`m8IPzx{U+|n`PD~<` z8~RAj`jIttR^BCbf(=qx!v(OEi(8v4h~e8Ck#$vW3h_Ce9PeWds|?Lkw%>Z1 zb-a>vlOh;61FJX0inVFiL*?N6sA+5 zDmN6_w2BwDKt!C=m9s==;AT5k|EX7ETxq-dz=zH<^$7OGrcgIZv#@R9VWME#mFWlW zgKL$Yyud)2n4kG1Yk;G|sQY_~LXAE1g*ZtGiC4e_mRnPY`KKp0}fS~uTsQ!-b`f-yW!X z5`q^UD>t%^#%Ou@+%n%6689P-Z2DWB4bU~0X0MafScAucO3V1yT zy8;bnx;`6e4kCV*WFk?q7nCEr4r$64!G=PxN_boY>Ax0*%|^qG+ufPq35~l6t)(5D zk}N-v5R}!>Nnt&XhZDm8-h^>EealJ2S(SsIx z%i2$x$GgMUvne5D85)$^hod_^$xJ)%)T&XFXJv*s?h~G~GiE42HEOqf-8Dk(mkYG+GB=hIuOp#Z_ z!t;enr$X$J1ZMxGarnZJu(K*L>&1HGYx?&>+bX^8=QxWNC+hvoe9=*c_AuY7OLZpCVlVIKJm6vL;*=WN$0b{y5GQ%1XW;y=fg4ib8#uzr*6YnL+kA${D z3sFT+#k61Du#@o8a-iBcn7~n~T4iR80OpFm<@t2;fnWyebB}218w>RDZxO;2pb0~0#B(oSUePeHb8(9 z9TDa~SorDg`PQ64**ExQSRG8Dd&YXAJWT8TA$#0rz*rqZ!C7Y_3<;_&`B(nJ3DN)Z zi<&r^#SP$^9D~gomR1cf%)Q2paQr-b%Zh+?akK8_W*oES-Zx{usvX>qQuOndpX$jC z`Km0W{W3(r&?Yg+1gXinHAjidwHYFTvb1j$pUqupU93;=KNBoBgggZf%L&+orDJIM z?{I(iUOkSYG+NC}%CLNoq~BW+EpwCaLRChSvF%|qB54fa+^7F`IB2r@J%fCAj9c8< z^f(EsZmk3YCO6#Qt8XNf2hHy8O_MdR^d{+;*(`8Dvu|24bh>4m`WFuhT9jZV&tc;n zy{?_w#z4uTft5o9H%X=4?OxYxXj@rd!^W|bFP}9sPsC_Ml z{0wAT$rh$YXn!*!Zx@q@QEx)H>w5WYx6e-`x3&OVdPQAYp;3S`&1X+WIipg~Uqx=s z=Z{pxd_eIfV5ngzv#XR$qnKdNEEJzN9FtuNIk0pMjY@{qb9NOl*jsS!wvE(j=D5&v z0E&nQ;To{J{F}0y6M{l|!A;3d{SJPE(xdPZlN#LbtFoyWT5ExR-^cL4G4kScc@-N#q;kre! zCqu5DT=aa>py@qJ`;H`~3?Fl{z>kfI7FgKaF|nmm;51 ze;3Q`f;Dj}7?Pbk?D7*TLW$1y86; zEj|iuA-u{d%{DQZX?;;4CJfYJlH%!qk*=UaWG>^TmlkH(@MsXp^V8In4LgoxN(Md9 zb-ePhkrCq^wv}{WW2`AEaP}ih{6(7F<^l+mf(O8PGxmjmfF0vg*b`kE{}i5t5pM8B z{}BnZoiwUG0$&Vy36pafo5)`>ki%e>xaYALMfiUtmS<{NKS zYId7SQ;V?iX&y4wUB^4yN3Y;kPB^iQNI3=9!UTDX!f~%zI~#0f=u^1??*-b6Y;S9e z{n=VPUV`=oQ_X;PSO&#~1*kZbgRA@#iSwDkzrW>bgy|g72S*TW1(}%Z!7LHtvy)4M z+f9Vjv><^g0Ms7%Ak<0x^&xEAGCL?)V@~^oI3-X@2uv*rAtDB|>8BUrMlU1zADB0ewmflX;A$Il}kREib zir7>ouzsMaM%_k>MGTrCkbG?_rjDbb<;w898|k3$=D|rDqewsy*SnXCui6q$j-P`+- za*2|#qvJve&YbQl(JG^T@(n!rAhxo}LebjaX_A4X22|>70+Nm9=YWeuQ6QEjVFf@5 zJKa@s_xw&WM;8rS2Otf)@+Ca7p+Ome4stFmL{1v!7_*0kf!{QD z(k~HWYPP+K>)Z2d65c*WMTZ0&^d3X#*}6XXa>e9^e|584gSTjmgObOmtHqf99##~h zL=@O?@6s<*RAe!m5O}T3sKn!<8$}seIp*nS`W?K<1tk61;Cx8J2=%~E%TR*GeyahF z)gVa|c!xmdCB-qg99Q2%68JHJXN z`fPj-$Wf>tlpH2n=fFpVIFl949Bc17(yTDOfql+%L#ubMk^sw07;hn$oq*xxYk83I zvFVb$2_bMdw7KsLwXetg=O16a9LgocoPQn0k!;4v&h5Y>1efAoQVb0{W{Y33Kt zOec&tp?*vqv2Qrx1UU9t`a?azFTttm#p?!T%54j=1bPD}Fq}|LhSQv$c%b2Sy5*UK zZ<+doj37${Khb^4ek^eu9yEyDhoI+mvQKG_$qMlPv6Y|k1mjCN1Pt!;r`Xyfb#Qau z6hZ~jqQ_P+Hkr`7v_-H3J0!!Ud_)FEMdgAq1;SpXO0z$3pJq zv!NQGlcPTuGq5wNCgRst!mAN&WhF7hi>0MD&#ibmdc&DD_^1PxTDS+v0!+=^G0#mu z^nUo*r)F74OW?p9?0REbQ*&#%T_8{W80tcuWovNxiaB)buKF_Kq{>{&EHmb#BSF$;9alyO8m-6Y8M7AMvJ^$$;ZqCZ^ zYrLC=vj9$MY|ixy&7o=pvuF9Oi|T?;^mwlBR!k6(Ht7*vGZznIgFahJni;wJxr0|Q z6C?s#jqWc;>Tng#5h=I{!t<zRZ;oKm@lfl9LjvN2I6OEchoU?r;mLq-0XFx*7^mFZ!I~9aG z+f?XC_J86v%R_No0)+!2*aPk4G$iNgtNI-tAxZ83R`IfDP$jEd2Y@cndw68%T`hNu zj~C~F<2Gfpi}S-bTML3bKE0(@SA)-UVcmPDNPeJj32_-*pk2Q6^GNXK#?`7XyG9*# zKzYt+@JKQU6Al{<7vX_A4-|s4Bia-9tlCUMF-h@heiphpRfa&NVGTKiA^o|>?IYg) z!FwiIek&EAqVaO+Inql*cqHO=)pmmMWgqz?h_xczy0I*bAjepS06EU zE)m|x!|;}{baI%Be1@H`|E=hD<8tRdUthXn<@+mt7_AGYHIT5`MB6Ct%(;e*+?&4I zr(lUUB<3s7`dt2$-U!c0ko+6#&5J!^Z5~g>>_eB7CgGM3EL2cvlRoZbHNZUc;FRtD zktaH#$KhC}junz9y=Liox3pFNSFL1&WBz5#Q8K9gk4a*|Q3-8wbi&KZuEuB%0i{v+ zw@#B2BMC7wDQO@xZf~e4?zjs|4LvPm*B<741Z@U%^w)yXPl2BGY*ke|n%_@%i1W*% zX(Wi6Heyi5i(j4hR&C56)AVBx7`fZ_Y3$Z?83}QpetqdN2rarLozxe{oLPy^J=_=W zJM<*d1NTQ=Mcvrf2dGk+!ySkvJ%&?65$=_Jl5b zoX78Vxu^U=k)kG zwOw2u+P}I%h0DY$H|f##oLIH27dc8Lqq&i?$6=L-a*fSps}~mg2lpv1S3t03{38DI zf7#m7Q!*O2CHllr1$4Dzg(Xq#+yOPNWN~k40|U)9K=`{W>mM%0L~sFv$NQap($^=; zF$IlKq*xUM{A%~e#oyjVPzq1Lz3&T%uLfc~52Cy4eh`7mLgg*j+p{|INo<96ljUac;*qEVu67>N@}0&It+(wAIM4c^Ck0QsK|Oxe2Z5F$;U< zIC!@hD5^TJO(Z<82fa9Lba}OXvSsi@wB_JPrcYfD0`ArHU*n6Zmhz8UeW1{bukyMZ zAxz@zsJ$ty_{xYDj8-Jg>U6+!mKzMRzLSwmXr|fV-piVut1RSQfQ{buAQ(U-@Ix;s z5gX)SW`@Oe-JlO*V}@|K^i_#_2l0FwueV@(df3EE}WU@<9AaIr`C4Fhum30^R0U9nrL8 zp=Zro75q1DK@#s%ix5liqDoH!r$6v*5`DkW+i&eWus3xwC*k$2K>PNmWiPIqRg7KSrr77^^F%ntx+V7EwZMBa@{3kQ;&SPa= zVyN<7;_1P(YPl|TcGvMPeX0EPK|07@z<4{{zLhdK3o{Ow-9YSL3$ zAfB3Dj>7ID&SUEs8v+Qq3GXOtz@L_E^!YK9QGxh1fZS?U!=Ro!x&LJ<@({GcQbp1# z8`upGqtpgtWL%7^k#ua&#)LbFyt+BY*F2DkX}*N6G06vbWt!0u>@Ed~lX5ZLPA)I{ z-JOK9b8j)PvwYH#l>0)=^kz9DnZsmuKK8gPni+FF7IUX4%+{chhOnX@>}W$^cT1mA z3^NAC>y)G{%OSTQdrb)nO79%MBXmAG9DeEc3@djwa-UgdEa-=FA$>W~Xy4lFm86-@ zk4b5$%rw_>?b!Pl6h ziCBY~jdrla?s@2d9Vme0NaKNpQ~F(?Or53GPqM5gT9vbWI8OiTrkNY}J5QLn}p&M9F{>M0GtHC^SM**q`IWKP~`5Hu8{N?`|p| z40WSxr7c!~&e$YnGn)(==`T_*H5uXu@GdczTo+$f&}Sr(jWsYhy#GbTzPIPmOn^v` zFW44ZtXtLzpaqz7PTP7!A;QB6Cp-ETuI)dlLEtHgi1aNZfYya{?^C0b^wKTIt6P09 zW%3-?Lu_Vo_!&a$T0HA3*M~L@tIGNaVt>gK;i|w=&Be?lMh>y};7T6(o#`)QVlV5k zUk~GPUK#mv#b$<=-;5x%=vIi}OV&4q&;n--aWxBE1uowoNwNwAd{=3`Br^M_(?9NS4SwM3sBeB z&9r+BF?P%Kc%1a=-cP4Q8l1P3WDht%k64Ys%Uj7tp0HZtji z7nN&6Buf{q!sY&9z@X0Lh$Svm%WvHSnt1quF5M7AQ0Ykn$~{GR#$5*|mQrPZ4RhYJ zynAH8KSDBC_VYiE;hg7%T+Z$;51KshsM^&w+defSV9rS6n_XhJ=xSIVhamv5Q48c* z?K6q?+P$&3A%wo<>B(A>oFIehE{S1GBhx#p)@qMwNYq|)dM%5rkl-58>_8`6JAR4- z+tE5KT3}N=cJ7jL?a+w>+X;Y8M6Bn71y2z&d=szsEQ>p4Yk zwbJUCQe-dMyZx0fX@uck4jkE30v+%|tLYdwBW5a4?p< z)>~OEB_>rKSUF+Al5C4DrmiNyxy=H~O5&b9oS4^Br8bYag3MhS*y;dHs+l^49v;a* zbRjAuD@f{^Ck|LnJmkp6W@$1JY%u=q-Aem{Qw1U^6-zQo1S;!qE3UM- z(Sn@L&$-Sy3RkjMqno{)HH>qUV9J`MwqV>(73UQcXQ;-4w_?8oNVPnn z=%<&`_q^*b(J0u_GD`kdC7^My7su&{b;9LN2TQ3#zt1)qatO0VIsVr+C@ zDFYhRg%Pv+ha#!Z{2n=7M?VI_0Ul5+#$y?xnCl?9z(XUYP&vzo!l;qRq~$1(9u)4A^!IoP1NScx~w&9`rCu_}PsYTpAm`9$Yq z6A_#CVVJ2wgZ`tRpekS80f$JWo0rSX#A;HJLaf-Nrw(NYH10G$OTOPTx}NJX<5GG4 zip|s}YU$M#VeTM6-y1@MB51T@4e0yEjJ1}B(vS$-a&53&Gg*QBa=1{N=w#Adg`E&x z_SKn*4;3cl((<8b9YbTSg6G~HM%Y4Ev+Z?hl*mg@ZYpTljY7^=`(sEWs*C8+*8Ybg zVxlm)NkoE5;nrSqAR*6kB6mN3>DCKO31C<|S|rmWf2Zdj$~D; zWsaoae{?BYNcl5$CwmE?oe<@^ImK4Km6M zX!?)_;p`4@XP0T_ZzcjzV))xr6r^g6R1!2Wt`AI!7`4>C_J%_9_5z1=dzH#bDvc9M zTAzmk{Qr1XX->r!l^zFmJ(A0rM%2Z^2vK-cS9LVY>UG8|RVcoiL>uas7HKNY%*xAY zE)qSK8;Cw>VQjj}G|@l=VFEMAeO`%Y02S`3-K^La>*l0fYxbW^8Q@}AT3M5E!C=*k ze%JI;0=^_%Z}%nwxSL zJ+i*b(NV8GPcdy0yp;lUxYfN*QS8_&OeC$6a#(?Y{IIk(1tK$A-E>Hfv^usJZwx(E zM&MSyz{~UBSUctFFh%mUjW43)60&Lm;KC?*9kX4fF7KTmK8Lri;O#_jqOWaZM3LK* zzS`YGkZ}VRg*ihsABpN+Z``for{7%foTri^uiw`s)sbxlD@vyez5mRm-6>-$7}}y`4?gx`C*s=RS#d&-SJF&z zx9LRm8aPxTdP@0!YFt{1rD_5k+tu#Mp+{nT7GMiuX*y$jG;s&KsYa_^ZS&6(@Dq5Z zZokjwO4t6vebMFaSb}+tCA+iq5O;;<;I&E+37!-ppWF*PaJ;~+) zGh{cNb{~dgg-|pc&v-M>hvW&}Jl=N38Gmz27LIpTuSZ9Y1m4Iyk6nMJngU{}o&C$o zxD`#shb>}f?mL^YLbvl4%?)2Lxy+2ychrX@LQnsR_y37ryQ zsJT6?C_Rov@?YEK5U*o}I_R%-st-RSnpenQz9CPtmB(_4aBj0|Bdn}?gd;ga#!uCaxvjaOYLPlv1DU8* zKhk-Ohb~>#*}Pa!0(`<~9W9XH{n}P#;zk34Mx@!sCV9-puSb3<#qwoC@#Q5F@_C1x zHw=pq@yge;O1zug@k=z}Xn-+6CAqXAd7`qk)btZ0Tijb3<=99^ec4J3_%N-s=0Fum zdh8!!{ozi6(J>*;ip=RrhUMH7k$pjr<%S~#)BZ~O_PYlksj_fHZ+FeLpL?Bta1&e| z;-p$pBJWv>!?@Y8j2_})^s6!7^;Rvx-*>(G+nVv)-&as3dop-ne?CImw}Grmh&x%k zSHD4#@1|)w-VXnTz)PoeLq{O~!b+s~-l(oh&1rjPMIt-oUK07>nk$DecjId#pZz!@ zRYLButENj{R1T5FxQIdx6f5LG7K<-CxJbjEs`NY|-eKdel3EgIyT}lh#y7aUV&b-+ z`c?+@x&9)R&L>PL6iwu_(}J`A$<-_=>YozeMp9_U%&e%B2FaMm#1GR#*P~9KHiW6# zMXs@|cQUAMl~L0HVV<8}z>Hqy|3H{)6Jc(-u&2l|M$ZtKD+@%g@SSFg)w4%5zDJ8- z3qV}4IKj>59~QyFbH9#-SjmXo&Rx}X1Pbui*E8K=T#?5C5_|< zwKqsDe^aueP;hdOh7ah|ujI`RsP8HDnos=~(NI2+u4H(Z5CIhPR&cufwS7Cs}G`drC|JBMYJ zi-x9cal7O+A}UJ{8t8*K+e)P8`Hg|dVP72k{9x$(Gg~r_I*dyljV73jzf98^PNiL- z!0&Ew1Q$n>i0I-&zp5{uyb<9HkUxQac9Y6Y-&DelnIr$EtM*odOFA82uc>2RAEEgi zr)yF3AMx>nRL%#75FapvKLwP$@{X{0sz;7gL=soSE;Z16W+Uhvpy zMZ+qZRRwAJ8Q!#%0~^>-48%lg!(OJ+vx~#B3zZ7yUJ_SG=V(87q&?53z1f6+hY_UO z`EhtPkoNE)TMn!L6~Y9GFqdP-8aBn$5fvH@%@!1AF2Fn$9U^tU=u8mSS^0KGL*%@s z>0D&!h+Qd#2MUv)QFr8ab2so)# zF+5L+NP_>^);6<^?=WggHKB*(%p+AzMc=%+jFYL}$$TK0tVk&N><$J2jm?pr*WvP`Ob@@qsxr8@# zAUiclkp(Pgq>yT|Zd^z7Qq_o%LA?@Q8}DkBA(~NU`9gP9oAf93)dU)?Sz*6hj@;j= z@lb67wP$8bi(}%}r3|o~=vH8|W=X0@ZWEkg`B-mU8oclV1EC_^J!vZ-L>*1Io|TI5 zP{RoJ-|rL!qZfh0B=c-lSeXuZ@>s?rFCeUH-R|hlt1i;7qWKbZcwsLSI}goAj$?{h z+@#?xjK3RRilPL`&$YzSvy@0aR9Ck($Z^pRW{o1-_bZE;r~!o!-zoaV;dVKgNZqDk zUTnfL{E;ToF^McFz}g6u8FLr6HUA%S`O2TT&vcDVLq@exscDCHwD1^iE(AyK5UV2c4$Z3sZC~1wh-CY`+U`O4Yy!H?Y@RMekJkWL3FArBl3wz?BfyCYX!7F76b%; zLjDc*Uj0;Rjn5gOi&56_A37+SFV_SvJKW6o75;J%-Tb!YTO2ix0%XlV+D&uU59(J( zn~2is{VXYKL3|)8-Y5s#NV$ShW$f+p7mH7oBGou{osWk-35Ad+-w?{S1!U&=6c-y4GdPfLqtiZfLvYHTIY? z=6lz_ITA@Dq9&+(w2!|4hudejf36X-r^kCnl6?ZS)SQ|XmE=xT{3m@t8fk{Fjfk| zyDV`Wm};%+j+xtP=zImcsVpV4>U^L=SRMnApE|?4S#c zLJ%F1(t#1;+1tf7-9Q=GWbDq63mGV$;^9=onq3unys5v;PYK~3gj=6bIE;io3&wpt zhyv$(7Ihf{N~kAryxNpzI_-mM$;;+4E-#K0oM*82Hfi2a6GoqtFCUbIz{{Cgk~^fJ zC{qn-3pcXbU(W1>g}5v~-?E__WLRE(sX#U|x28)LYTS^x2tsfeYvTW9>!Bsk(|*g! zE`?#tvx#X;l_&j~hM;|r^{VzmdoGmP0RKM#z_iuqMC9mkceYYBQa8l@`n=wI(qB_a zyarOeGimWtx{XO6vVh(?s`475?m`~%cKmn3(s3oRv42s+&Kou_eC^bED$uqZ;_LmE z^xidr+%@SC>fd2dlIyWc*c-21fp0IlBLS4e4ZPkPbpG6<135;7wthbalVNl!zfs>6 zP-~liG0k*R=TZ6TdR!aA{2rQBEirtrUg?&19KX+^#wFf|QdOegSq z+k1*3U%?#6Sq-4T82B?KX1|OYp=|~qmn*c+Tp_?7RhYdhP&5-^RU&xo;=lw|RPrktaQsx+|6)7?#)n)fdUI`=S5$t7>t>`=c>s(92jDPTB${OU^ zg%V~pIi5TJ6x1R$!K0z(3uF;6$EfXtt(!xwfZFF923Wkr=ghQ-W1Sv^1L>;JCQ#Qt zj$Dd2(79xbevq*mmZ={X8Lfd(qpjLnOQXXvDGP~|%vYINDL4^xn!GFt)~hn;o2Km$ z(Fose1H?ebUA350&@V_l(}X>e%wr=vNbazSae|0AvI{SjWA;YhdTdC4Daj-2zI||! zfin2o_cB@C76k2eLfJ>hcRWD#x+^V2mh(^oLd^r@Ci-9EyLunh3>EwuIo_V}KuMA4 z)#_2eQ|Kb^IlhzNM)nyi9Yk9+xvimWO=ZoRiF?D}s~Av(eK-)y5L{>t`M~|Hq`WE2 zg#f=bRwlVtC=_@Y%?2@(6196=1zy4Hij-~}bk}3&z4nVbC%b|wBgO|J&I+ph@QBdL z8?v9b9Z+jmCiYWuIQtTNj33M(`hTr|BnRc9OkyI-l`kIybP0|^LiFQRj1RRS)Ybdd zD+H)qzC|#&%)g8~iEpzL=paNkL_NJC1(5v*gC++eh+Q=X0_L4b1UF{l0ZO@d7c*N! zRlqqpG@Z-Oj4-JSMtm{EHZB&zYI>x_)QG9c-h|OU+`I<22wXKTG$) zhi6E9ZCIek`Lq-N3~uPL;^udFf7fx1K7$LhcOHQ%y_R-*0zl_^>(6Z8#xIP9M(-oO;8BfVSQd!{ zmX|_&=@N_v*q=^8ywb5CjO3!@Q)2hR7Rm=QKf}!WtY0B-mrj9p)BAY}9ih0ZqumFK z2MfMB)R~6jH<>>jqOn+5VeaytsI^>XGuv&D4{v6?qm~6U%Z!>;#Wj$8Lg*Mjh~Cg; z%$kl9*|O(d3cgSEVE$7YoAhQK$0Fl_02%JRXO2bKWC|E^EQA;jfsLRD!4A&|;vXbL z07%uXZ@V8sfKCo9LS|3r=FO!|)N6m4pfgzyE`2h86Bpv9qez05+^`Ec#t9h#Avsd& z*n?vp;#j=?Oi7NzTYwNMBgwvy-6iqZM&Ui%6x~kD1Ecg0Go_&K7tS$@wSU{WFGASH zA%tI<-s5oC8tt%3J2?3*)!#`h<1(gSp$^bnoB;Y>`9J6K|I05|^6FhNBP>h_ng=oE zrW*$w?YD1aJ%7tL3LD4@)yUlZn3B#$`kg3Zu81lXbjK}33u2~Xgl#$f0+%=e8idDG z&3k_fjDzTIU+*3#Qs5l680%gu)%UZJ8ybHHKQc>9HLE^|I7Z9D`8lW?9LMiHR+cod zu}(1{;3sB~>$9BY{dG43rbPdHrU9!h?eAeAFeV(c+eXovp@ z(_1A&)>m5C?9R4Gd}xE6^tU@*1hxBFyUe>yG*v)dc=lsPt;&9s;b$zuw4R)k|G|;N z&%0R{NKS8hw|O`jkTYP*o&Kvzw98ihQTfKLG%dhYt=KiT6E26pW9ov;Rcoz7Vx*T= zr{|=Z^--+ssgiYx`CUhfq>XaulAd>aoVbQ`t}Mc|5+%IJIHaj;Vq$QJPhJ1X4E56l zxe1m~kVo_#+dB+8*F_S5ADOB9zXE_xFDf&Ni84XyT=(r4; z{`)g5qvC}#6;S9+T@|7Qk2wTq0OQ;<5%nn-=4M_Im;)={AOts!yadph$3P& z-zl0faL-B37@I?fs-E#`*nT$<0)P}9hd=Ecg2|0^evNEr2{yVX=B+%g4~+}Ht(L;N z!9_wXF0&?${cXz5&hICbxv(-J{a9yW zLWu+UCxwrZ8?5XhtTDBlep>oC`bR~+4b(J2=MeXh4#Rbxn zFUbw~%0Lzizz>cfz84tmcks>?xwfx-MRNmEjdBg86 z46PUjKgY#;XexlV{d*PZ-vP7*Wi{LAokHa?)b*uGH@~`l7pq=~@v_9j=sQFwPj3lz z3s`_Uwch%Fb94L`T1Sy_;O8)U;2Vsw>bK^xWXX-(oaB8V$o8n2@4ni-W12+1fM{w~ z-;wfcvjeW)7qz?UIg1H1{F6a306~P*4P-4EXE$o$i)$f!N7jchgNn#Gm?3%r zilwP~KI{?)C|ya1v=1CD1vf_6Uq^Tn51y;-^o+gI76|| zko2kFFOW+#GHi(eubCDKP5HPtpxyz7;OZsxeX~nU=VdU?dv&6PZMd%Sj5lfPx>O+3 zPdm%u!Q* z7D893-?Wya){U1uhd{ie>Y^?#|L$GCo?!RH?-<{u|4Px?8Rp82ftyQ$Rda;4kq-W` zgglop#^BIZ7nUR61H7x}Tz+u(`z!uYIpJZq)K>xOeD0zN#2Ttq@e&E>3v1Xj=fI*j zbn}@F-~OHBCErOi$s6lt>iMifPfj&mmBxvMrqc+Lteu_OQA!fA(+Oo|jlY6eAU!wM zOZv@t=PbN}hikK)nHL#9GTU*u=yK)vi7!28=xA%*+?=TucWtR*ifI!$5!uHwqHVT| z&??3B#x@nCCE8lki^ZhSeGLeg%Ax=i8+}CN65`#H|HF2uJCUjdlbq#TrnVdwJ$Oa? z>!%DD^7`2085X1z$#>t7bD(p8UGitXV63mCuDVrvj?Q!mnw``eS-d*G*D;fAr? z<9Y>^k9^sUKeEpq&@J|{r7otuBoNxVqlT;Ylg+F^j$@|ZQViS+7IrWeSXMGp=}FyC z;SQOoulYvhpf)x&gJeC$%^h$nccuLvj>D z1#4xA3ojwPTwuV|b61^X`wWt52MMX?r0kgFs|RhFc4|<_pr?59yI^-9!MDcH!F7NO z^122fs_CKp+jy6IYTOR&{Zcp3tr_#GM!v@Ln-K!P<87QhgE_!Bj2`)z)die0tisTxBGZQ;e?fsg9 zC&{a)tcJx=c~QfWA+y%B+N!66czqP3-IH&9U3a#|C8S~(wF9;Kpd9YRv`};>JEe)@ z7zTR5>JL|vPNzd{PXkSiA12egvBKL*Gs9&8q%B6D*A)~NVEcCi{up31 z*_Xf}K?OWxnsR%z+wLda9OH3UT5iQ7AveE4fSj~Kkj`+6)CS76sS zVH~G*>2UKCzjGy;nrY`)7KoV7#xbc`3&nwaXY6GMy?vTdlxy5R0Ksh*Jh#ofN=A)FlxT01+_B9uHDY6Y&Kpq|(WuJn?*UM}dX2Epl|FTPh24d~Jz5 zHC|d=ZU62hGU?ByK2`PFH{&c(nA5DD?!i=lhi>t!{?ilvAgZ4a_ z1-%Po?zoB!81a6p%xN>^?KyA0ENdx%ZpO$|!6>r5o%IyqTsYZOcty1Pl~ChF5Fm1- z;A;>wP6Fr$QYI!U>Tp!x;U^YtbHAEY3V}?wtRo*H5SiaeY%62XoE_3OwL{XY1l-&+ zRRBt=%!L`$bg2|1B10XtXewmpmxG}CKqTL5yt{+eWOd7ETD0T!GJ>%NXS9)aEw@bPwIDJowuCdrD& z67_0Q6=?=rC=KxR*2Mgk2+ZS4Vz14{YOfTpuPHqadmsV|F~A9&acIKEB?e(Ix;v=9 z2~rmuwXfZNI1M7bV@v|I!U|$!TU$bw2CBTKT@#g)0;|Y>y}CCGIT8%Yk;jV;xqeK# zO*Qo!CY0fx%*kxFr3zBJ1yyQfa9r48w*YzMED<>n=!6Yr1xsFuA#a78BBko<;5A}% z&H)OWMq?&DE!{$p&+dgjdNN_`cFB@w1?mK&FH9tdMDi0spaga6_ufJCC~sN@jbKWx z)0sO7J^9e4za}Q`;XdVO>_rn6&5^ zs62`LsSOg;B=HC%V_7!INNp)6DC0*{NAbuk@&AR6l{$%qT6T_Hf?FY%Jxlx3V({R}Q| zL&DwesD=~25KxbvjG0D7nO87JM@N4M z>&(35foAL!>~ zL)-E)Ym}^mFJx0hH4W3I$?F;AwcooaGFIPtzQU(Ztsm8U5!7h-bg_zgt=FVo*7` zyCrXheysi7QAK6UVVGT@K)?JJfiyyM9k4vZP$JdIzDgH{*o=T&Go@J$e}3lOH2s*} zCjbD_5^+H_Rovu+KaIpEO((?%PUB)BxKXsLk7`Pn;(3KE(EF!9_<09o+opgZH2fZNcBH_&DV*y(wwG<~Tw~HFo z({9DCPXCbtiF36jovX;ON=P>rwVupLz8Y-e<9S{12~CFLC$n**P&ke zTe@3{W~Lk?krJ#CaI18&lDoH4B))ygz#)dtvcZ!V8aO0mfVbf}wX}Pz;bZ)3$ z^9NzD6|ER794K|b>%&+dJj1)RIP0s`9#D|=B4at;P)Eyu1Bghx6WkpUyoSzom4;WS zwpshfPvM9#z5>YDmOht#7F50#AWh>jFLd~=8B@s^?M>C|HS1is5jsSpa?eUhyp@V| zKjET->8)ev{fgq8+u=`QU#qOTBt$YDE-ib600OoeOIGzFR^1W@XNR&F{mQwx@*PprNnlObAI)tr1a$ zJAw!~Db~ChVY|t|)sxGdSJZtM7uM+Kmz@^z?!Hb*2AR2TrNY<)2H?kw6`51rv}-j= zoBVTFi3+68D{3d&chudPFK`Ocg)LWan8qw8M-9e^`{X=o&!s_OdtsHW;)VsaZXK@I zEZmg6Bvn4D?DPAE2sa6UvUWAh)vAbins7v?a->GM`YBG`IY#6gYKEJZ#Z#JgMcWx-l(7){>-pU=qL+k`%=>=?k z{DM7iI92@UY_ebN^WEnVi1VchnynF^(|IxS=wNhiM~Cs+D!#Pyjb&wV z4zsI9yHA#$0>?=F{Bap1f}?bGB#T7`2aCxS}|4q+GMjwZok zt02W&aUw=uwRXcNxOu4*qua|`V*UJ|HRwz`Ul*NoB^i2P;h{1XB9)x`%!z_L7;@MM zVbh_Td32nXxs=ybV!*~xl;)O%(p?M2V>g1LO9j1O6ko=!=eU0X_49;CDvCUht!#{j zbHf&7--9sYC!ljK=TrE_d9yeoxDJJz!4b7-QbNY>G?2#p0i3qblUiycP)UADnG*Jq z7aj`#@%kgCC^$>7n#-9J`Qg@HM{$hUWhP33I5(32dfu2RM={cn5e}2OUw;Wi{6`|g zcd2(#(B7bSSW%`Tp}|93CvCw{uxpjJgyP&QurE-U@m7aEs7eipdo%rG&O!X;%=$G>V0Pp_sOz*(X@BsWuZ3c>_v|TiiyFsaf%-H z(z9*J(;V&#iRJ}s-4f3C*%f*QRxy)DsTbd8StLJLUy3r%g3_7`GtA`!WZV6ye-Duz zR%Yu3b#hD1yynca{qLz;v}rti4iVKCOf;3LwijDh2UGodN!CH3^deP%Ib$J8s5kJA zF=}frAb7e{EnuEXwx_S6UK_5dC9qj7r1M_Rtz1MTPsAuhcc{()`4xd=Wr=gqH;id6 z9dE=|jLPZXrtSHIPYKCB1f`rVZ!!-W#XGibsJ^>T?uYCYDw~xF6^%ru>2YtR_ibC` z3t)p00DDVSZJpc6mI3_4W@uZ1`aZIF=PdO0cyjvtGqt1LQ~o>Bg7XX}{r4HScUS&m zvo!1nhS6zDVE}etb~qUxi1|+*ov0Ar|HEmL&aw5TYU6Hhy+@B@!+14du|gbqSw~w4 z-ENvZ{BQ%_lqfD7c_gPE@F$6~7WBYopD8ZuZr|9K0~t`i5U0Kw(vh0Xj!giHq5=e--c)ty zRvvKtN~tY?@i>d!7lmQHn721NH0SelB>|R?m>{zYXb0fN z^m&VO)S~)ku3cz1aspyl)xNUZbDBU5O|D5>bfP*7K3L-=$1X^*pQ)r9{62m*Nevi* z(j17}IlqF)Px3~PBPjDLxNhDMemy!ImPTg1<#U$cxe#UkB&n81ub0-M>jPI|8JvFN zHHyUPBDPHrozfkHX0kRENjJ}j%FAD}B3M=Yrm z+{&7kpx(G9##6Os#?ilta%%f1{Z7?@AuZ6i&4*aVyOEbJ$?S=*Is8aloRuMuW zWe>dW^WOAM57WF1UB8k^JsilHH!LB|>cO8=GRH)Vqh4Km+i|rVsp88QbudZ!-1_9V zIb=dKv5fL~yodKMI){SG&x2<#hXDQ&bRTxU;xyxDsfz9+)>)czf?GaxXSg^e%y4j= z1LB2xl(Z|W;`B@-ooPsMQKx_=`!grCMj5ohfZ&ih)*~Kxtin$WO)&ps&&zI&$;D-6RYe1#fmYu3>%^gutYMHk zH-riB`!c)1`ZER{tQ>pwjEEf5aW2gn0&3wKx@euUC@Em8Bymaxw!v$yst85en*(M- z&<>DILG3Pf8D%U!MopF<{4@v>kn?~ZJ!)i(M#C2BSqDCiiJ!~yVn@PHRt;-Q$exHe zAy0?~7L@aq%5Wsrfm4HG@4?4VQLJxOto%yJn<+}t#2-*b9)b5&55kCC95Nv(iA2z- zPhJbiwN}73=VOqE!r!*&)zq2QSS9XlTCIy^d3`dclb)P8E@}qM%nmm?vo^Pc^g`!5 zngYGZ<;u~~gOPgmQ+nBZW!U)LBCyE6X;cM^WFM+gk(#YrQy&TR>0mf10e7u55Q6U5bIFBOL2`I;O(g zqkXS;(BQcJMz7Fz@YAx3g)sn~ijWxgtuT|CUvH4fuC~6kvLOo`-AENv`&}?uU|xum zHk`L>x6o|!q1u4XbGUMUFz{~@L$<5+QQRO>3~3a*5E|lk8Jn^ZG|sKZH^))v{Tkzt zqiS{hSw~9}F?i~I)rf7WpK!G}uC-U;+5SF({ zgs&-_xG#UaOTJkwn{#bDUb`fKrsR9CMmZHnU9)C+U9+l+PTy@m580UUBbxM1>fZY} zy4MW{BlM!<7aI6ebwarDn8v~P=+SYQD0G`;P3B|Uc`w@}5!|GVA0jLpf=DouQ-ZcET$~aC=)SWtK zn}bGYcY(i_yuIBwz#`it0{BY=n&${jsqRQYEE2^;Zcr{wqtgqR$` zELD8gIdo(E{p){H{Bman;#GK1^J-4MK@F7SuAABsl>dH61^?KmLj6LXP*0*42DIlV z)ZWZuLi@G<85AC`>29Xnl7$yiVIT^n7MU3L zt=z|3Y<}hl5q`z6#lA{Ld%z&Gz(eebM8TU!8=vm49hT}7ypR^a$(L;+MH|xrf*bBS z5^?s6=zxMiF+O$K#@C^2iI~A>cI?NDBwpUF02L&o%wZ&&lxee9n05iQbJCBn5{eqK zY|tOeCT~7@D6rN&Tqm%{*ttIJI4GtKg;4j5%_Qr9 z!V|+Tww|PUWILrTxpaU*gwvrX960`Cvw5wVRoK5}bJ?cPbEepo9cxQXp>^iP8R(=N zD#b7r=U*&Go6f@|;&Ul`BJScuBU1yZTn;7?dt3z;nc;Q}JjfRu3V>ZgETQR7QDdy= z&bs^O&@fH~AK(v$f*kwkLn{jj$!HS|DLBL(Ey>O>eW_TbaJv03+BR=avih-nNoETt z(AV2P^-ZoY3q5N9o7a?D$i^=f9D!O-hXM1k@3nAwP!c`VHbytyz`8_LngU35#a#Id zOQi4~WJjGvytT!E_Fb7uFG(kPtgEFJArIrOi+u7q!--VeuO?Au2zv@okT>ZS=2MWX z^MpRnC*ss_8wrxWHxx%K#A2FE%X~l_Zzo0FSlH9vaJSuN#Gj@@ij;JkOeDoxvM~CP z6-nZY;*hyk97dA}pQkEEa>3V_FK6AzYs%YWR!l1mkOTGlVD_%x^t_TZcDkqG@r^1I zgZ1{iI?YH*5l(}r2bXOh#(^a6d3zA|Uc9IJ#(T2T6S3_OhSUk-j3|AwN=VytIe9%@ z+pcUVCsTApFyYQpTu2j5>tqLa3lvv@aVh+6WVEY3Um0Tb6I~1J8e@yC1lxPD0vJC! zhkIx>Ot~}Cyu~6pN=pY;PIryXr|?*`%rOpB} zcoYCrfB%R7#CQ7{^cLX)hJ3&d$~4GH5G1$6-g>Dmp}I%ZXa)@CA=)s$Pns7Xgp&eW z6xcF@%pDvQ4W3myEGnjv7b=7C%~V0%xly__!JVfG>}R4|NT0crO5VhCE5Jx(Z+znV zMwLlnd$xDERKXK`s=KxSHSmbpoo<{ZvJ*B!?7lJHIH6!Mdb;QAXivsX@K%{L@leC4 zap`P|g5KGE874uFLrjfAC3q4sMe0Lf_F4tveVn+gVZL5_M780bDiX%uf}@_XPQBH9 zo!_cu@=^f;>Fi6y=ipJjY$1PKe=2>jGLN>ajJaL!7m1mYW2W-4sTWJWsh+qN>jvfK z8_6Ks#3nPb@ZVeyuqHs73wl^V2#p+VM#j>T#-|g1we(Jv_4Us&aah{v*#GzcM#uQT zLPz;gS0o}qA%1bmb*XY7_Zh;~l28M@==rPjq2rm4cwI_j?trMzG1!#;>g*Q}ghRq= zV%dpZb(=i1^?m@jbg1=^R_s5DMpZePJ>gPH%YNp!BQ5q`%72Jy_Chj*#Wg?(hhT3` z*7f{Xp+TzbRD7x}dZy518e<@z)?-whSo32&(h4<8t!V1>;5To&7#^1oAjFM9jt{Rw~xI zgV5?cFtDiyHCv$UtzZeD)m|@5{y_3nD>gy`m}lB%g*6v#xefScbvR2s(FYN=CM5Kq zNEtPeA>VPg#5?di?5Z_<6qp_bQ&4~wWHshcp_g6|Z2J=AayTC3Z4EZ29==j`)rSaJ_M{Os?W-ja;!Yn*@n~Ow5CsV<`-Rn zLe+`DELuzX@w%^7{;90@6w{l70QHP`XkSu$F!(hJGeJjI-0+5k2~J<{vP0M>WlY?TBn9{wf252SR% z-3em?H>t{Yn5YWouR;8~qMp<~4 z8G+pVR5_aPn+e^z6+q;#sTE8}3;~VdGNUOXCzNSbAXV4x2v^^9yF?D(zYH$%&|x!q zaT$>f0U!4@XTPow)KylIRrEXBkU1_%lK39yIoM4kCaET2MTb|N`mZrziK6)H;KxAK67?Rc!iO%X&^ ztAvP)2@A3+V!JcN0Kek(MslTKHO*b0KBiBM)UH+Z-lRXJ;ByYxg7~0CCEuPt6N%CV zcpYtX*=W!110vTCE0V05-p|kC-x|C4c7ZAroy$C(ae@8iOy>WJO_#1Rf4>lH%PLzg z2+cMjOBCgKD4j=1%W6;1!d;tJaJ%6Ds>z^$8-Fy9u^*`chMcpfJ>s@~!me+9T~EyZ zXO) z-$hCc{!%oc*SFvTKYoLT0QGTWF00x2{r&-)JwA+P7?0MlKbZ8$MNmwM1Od!7a{%D1 zGe{1w*Gckwu|u_CN?E}2$4DI11;IPAt8VenbBp9+amtqUT!6Pt0=MRrw#bb&OTgak zwdeEUwG9LD>5xaJ4gvqp+z3YmQB6E{e(<{J)MJR8b!)=$6GCjiy$#-)l}>Hba5@+=$)JZdy%$|FyD5o=z|0#1DOuM1fiyoHyZ$9<-o z*EC-k;4;{Wrh}!F82eAgFj8S#cmL6<7!j$=1pej_O7RF6*H68nV zSjs*^XDjU?WzSr+Ihnf`SJ&1wYk|mt3TI}}$Qud=Fgq4ggT<0%rep99{yN$+MfL_S zT7+L>E@*(HpLU)G-tfqqx%k_33I(mSqd?=asZoph+rL__U*uy*o*uaz;BH$k`VCZ6 zNj1lICBq@4Q8rJ(9m7esQ&7d{*9howL@FJfr#xeesD=ZtH$EEZx}M3c9$BkUkJPNs zgJZp-^vmKOStH$F5l*ld0>w_D_tV+4;f~lqgGZt(FpQArLH8vj)F-N(V|{;jWodq? z@3&Q&NE5WGm3Jh@|5x+II*DC52H^l{G&#B+kEhrp+sxy$wtp-tG>B15BtKP<+683E zC|^)DU>@wYG-XjF2H?7esrVtMosw(L%ma;wSG29(vLt|j^`5vFz<)9kNeEBpQ%Yp( z)hA|9gnNbsMihp7fzC@9%aP(9`D#sD6OYyF(ZN6Fp>C4Am(m5RhYpYJFVzr5Wh@)* zDWbtKc=MpER#uVvj>=(`3FyEJnP=Cph+TkzsSLp- zc~JdY-6;qT@NJ2Kc#1@YlFY3 z#`5^|Y+3e`h$%Ve zV$`kOgl>&kX`!bMR)ZHWyY{mz`Q48hOG4By5^eC)CCkTVN6IQCa+GHjOR|Ar3bCF$ z2V9HP(($C+z0LyD&oYS+ftmO1@9S=K?$o>9FW9{T2A}nG3f1OZ@b$J<+!T7ei(s86|4E zd>zTg>fC^+iS5H1L;1Hi+WU=VF6dr|E({;FAVE|fH^AZF+ZK*8W_ANIx8Rj*7C%>{ z#(8!u8S|ASwnRnxc#s#WkYp@Rw=D}_V>CPJI(UBx`h8F*d*mb{Axo~hrj9M(B8pI! zR84)8qM9_637-P|9NtzU=dJ>>x;}j!$oufd~xMTf`lXlZY*MjoKt7G+5phZ4jnA!;oR1MmP z3Qo_!xGSqFo&4PF6_A+A4tH-!Pvuv1FXI(l#8|ZPRp|DL2NYxI=%y7)kV~5exP>bQ zu>9oFO<)GXoYQhofk!h4GS!A&C7LHN+!Gv@AAq7cDbU1w z@T<0t3`)Qxd8u9$!MSa!1SMhSwaOGU7E+C;71n#1@zP$#Fr%5D%EAs&0yy$vdG2C# zpRL4guSJrM`I^#8+0XSPU;D@Y)3#E|vL{b>q7PLePRpJQTaZIq^ebxIoo!o6i??<< zCWesPbhGccx_Kp`&T@L$=`19yDJX*KeMAit!zvGCLEmq-gNoy?b2Hm+fVzce6RV_s z!HL4lFY&iB(35{p+$3=;U?siOcsm&h*MjVK*nN>y_RA;@3dH;nxGUzM5^0#k`J#Bn ziNp25)`jas6k#kfe%gll_DV=#vFFfLbI_H3Y9NswaJkdts0^uJ;{ZuRLp40@PDduo%?FnbrfB+aI3vuZq3e}jcq&V->YAQZY zyhND`$>Rn1?O%$QRBJXRyDrq?z;g5X-VFnpOFWZN`Li_+**nOC9e62j&IFAtPU;7! zK)Dl(6e-0>Bnidul38*~hp6E}?3y65(2>Y6aQTIzV#FT0sgp^>QKxcoA-6?`Pw zrA~4ccO6$8q=mxin%kv#;3p;RzGo*Fxv8AN6;yq)tIxNsD?+;{^ME^EEP@O+T9=Am z33F}}W^66VcUy88VXL;VE;CA8Eq1FyZ@IP&N7pF$=`l`ZMR}7884Ux1N2Ju#K=VBgxOUXc6;K>17>D1wV=NMqhDKyx*f77mqS=QAxh&|$*G8G zKJp*GwjZ8TPodZafJ{c8CH|?B z`UDIHduvtDfhE%pcGQ<`CFS zM%VrE_}dmKij4ZqH~hj>Riq>I3ALn?UTM_&@|vrX+`Y(<^8SsNjo51pd;cIC=4BF* zi73C>_VS#^G=tPGX0SRKjT54T6r>RplnOLas(-M`fy9%)^V+x^TYi&(G&IndM!Gyb ziA+RUG$zg)hGNt-_iDEwX`Gu1eZng;bzEo5vPJHCmUO3&4+ugL4zZILK_Mx%*KS(x z1*t+gjS#rCdqLVPOc*L-4rCdRX)e;B1go}t05+9UK4+b2A24j%c{4S(afLFtbw{4u znoNNghJygRV`RB&(Fg{0i6Cr^L+=Ua>!}jbKP+mLHkCNz;9)UmEH@kY?XC%`Ojn4B zpkWtlLkhUrA;L}|j-tOQ$5BE6+k9tHHc-oyXs;pnVkybB3Drx82YALNCS(vs^QmR> z2K7>mSiL6@py`UWE11(;8ykN3NdwDJEMqiK!IIpg&C>NA-K5e*8BDB542P5+=uMdR zqIG!r8$MY-RbXap7(0|tCw+W=r0cH0WHV4@IpA=gwH73tZqN^)En(bU>-2oBy^H=% zYTq$m{f(ofS0LUV8S=!O`40*O7N^QzW9JHJwwamvrdKSoCjKNm3a~;DLn1avkG~;C zbc05lq4f>Ah$$Xs|0fVDukozARfqoqabk5iR59s~Xji@n?+34~I8-X3o6k-8RIy&h z6JWW`q#c}reX3W9fFmL3qDDd8!03FKQHzd-o$ZJ)_NT(4g|sDS%7{YMQsXz31Y(%K zr8nNQOaUR}Fi&Ff#}AXGG8*}_d(tj$fp}TX(0Nczdsa$L{g4&lT>=Qk{NuPb!WIn3 z0DgjDGL{;uBZrBgnLQa63$Y$*b;}w9!LXmJgB;?-4y&TRtv8WpQ}LDn9(J{nGg=FU zm3I#!;t8znG-B^#Mx^ulLceH;0PX-69jsDl+$7A1AhY$*{@*P>XkLPIol(mj2(gI& zrEODx(tPy1OHl0HlT5l;t~#om&qf3go_!=U2X_M&V`C~89ux$6PzOf$_`)Pg39B}~ zUs@pzNV1nJftAzV#SR*?sJEmj%sTDtp!*n;>}rddcjOiJL{NKPiJBWq_nH-j zQ|>j?p6!NZKQMO;%|R(En}slu_URs*7M>>yp1*B`MJ`xeia<~H)&a_-ts`~KA7FVy zIDj}MvHCp5W%zyjVHbi2`U(Y!0j*ThAgO&HT|KD5Bgq5h7J#12 zN>*;YP8C+@!iQHi-00qR3~1W=IlI}CF9nhW6bVNEIdm!umCFnkP35IoXPMZCMQUX- zD9nZFugT6Mf7m8ycO5knup?vqd;iiuAbklvKF9dQCX@HX@%5W@aU>yrI}3GeC-OxQBU&u3s0lf#Pij zT&js@Aa-|Py_tAGuJrbx$@&5VYjKQp=?(Fa%l7V8txat#HZ||%BvF2-bN-7=RUz-T zaoo#P|Jd!|ldP%H(gi_5J7@7F%bKv>PP>7Lki~hWH55D5wihkrggcww`?m<$ybvRf zSvAJ@sri~chjVgfbV&7@$In8|=U)>vbDez{lNL`a4cpQ%D{W|jxfzmg4;6q$$YLGY z)YVBxZ;Ahfz2zK3m0!VBvQKnQ&K#~5+MVx($>~DUpHh&J+%<`dKGANP=u z;py^ApT|Ke&~O3ptU{sPoMKqhh5uQU=viWjXF-CnKFm@ayJDg8pF*8u%IC$GJT=$@ zuTuUUsN5NTr1GPFV=vt7o+zQAe55o3%8{K% zKh@kvZO4*As?O8mzMOqW1*{UWy>k>=Buw7rt2n%400Kb$za(r|Rc_ZeMz^cJDm(RR zf8+EziWdB20eT0(54nkm3Kj8PNxdp!)($p-)Z4EG5`yz?rix??rXGm^QcQ^9ZJ=pg zyeH@H68v{#8<>1op}oIMl?8NRh|>~dg82}Gv*SRXG3Jy4Ce(_Lr7l!e69dbf&Sv!I zpjfMShERz7qSi}Ro*B~}DaxHzpB{B_rN~alBPu01(p33x2AVO+R$uXWx3Iv1KWQ!L zRHL$*G@_37=9mdFdnsxJI#gbS;^h5%AX>Dd>FFu!;E8 zV!Br*Rh!`+QZ{?HBtOpKqRNye^u5ua2I@-Dvk}{r!;~mhgUNL7DgfFY-q&P$!dls4 z5tU(AnnxKz@0!wg)y6X7Ez&^U^^r5+(|iSB&w39qXmtFO+IjvCy(ZqD*yY^JrJBd_ z;}(Nt$ABXx<*A)CEga&I2FK<#c}VPgiof@>GwRVo7B~KGhN#9GpZ0404)9E`+rkr$ z=p5^r*{dy4P6|omOQ`tKSPzRC`SZ9wJsLZ>%aGSrk&ig}qf}xuUaca|j7M`4lz&~_ zE*=qm8Eg@&{pa0M`^~Vf1rrxi5#qb6iC^5Qg2nMeD}^AAXG*?0XleOfwwwb&1x9rP zp$Ja+nZM}7y7PL>eCVr~zV*2gjb1A|t^v@;SJK1kJzU)TRYdn64KNb<|8T=EgwPYf zi#mgj{M{K(2p0y;*6ecHC=2S1Q4u!RK9@(zI|S(TEcx~;pSnSu^L89Z=Yr1R&1~D) zm_}Ul#bLb?1Gjx#E1mwYufH)TtPj)v(>Dh?69dyr#DAY!BBzHt<%B1 zp^xbQ*{UCyJmy~>A(1!zX_MYDPym!~XM)S3QU+}4hITP8TbI~qrnVIujw04Aon3T+ zLNppj`dcK3r`JMLiOM($*(X$=e+PA+_r3Uj^_|7$U6%~B6AZQ(?7&C-V_K{u;SAI8 zQ&KD&yM;`QO&%K}k>q3`qB1}7U}2kToq#lKB24Gj#V~qBG=G7`_1uP|efa>ld!M9? zrGpsioqp1+BWt)P@6?&Ryac3Q?9ji#H)m@_9OidKFTU>Y#+AUun(^7}Ix_!i?g$Oj za6hlNbxrfSuYFTvp^^9Aul@7BgdMc9(OPhl%Cb?N79Jl|abqZgv|qFsVD)i$2Aa}w zwk2P)Y_Q3_p951?Wo9>V`e{S)A6pA?>L2^r7~%lqhrD(dXcL%jc}&2oPlw#d#Zs1M zBk*{Rn#&d~z#VqkD^KK6cqh$vz*OgxUVU$Mw{LSQ93*eka%Z?nebfowj*}nQG<~F7 zkBpZPU5Nx$boJd!(Pn0o4jUB{fA!}xZbJ`S(o=03mzPYLof8QF|P zm7G)eJ7u)hnS__~_{MTY-pIVS@#0OL^de|M7Q<}+W>7-t%TIp`{7>#iQK1F>3H|=N; zk7-!4K)qMiwv6p4j2C*;4xi17$lK8wQPgp_B$y!;XVE6SB}WM|gy#K&u44hY(Wj0< z_P2sC98`UDeWK_5*R(@m4I-&x!H(gMV^LNMv3d8dPEu<+donQE;3|RGheMWX>VngP zed@d}1@86~4-KTk3Bl>eW@J>9S{^~Rwv2%jzbb4FYtAyKCI9?qXz<1X5Ra0!^+}VoopnzTUk?asIqVJTGKhFEmTq;HWfeSh z+(=ahc&&8fZ>OC?K#kNw7R$kT;1rpIMW`^X=ShLv8M4|&2z)l&876ETK8seYYx!WT zc(TIrt`m=ol&>IC^oUBRnfF=h?Xt|e)zL(x3l9|-cBXKjn)h)l3tiC{71omuUUiFh zFSdf>jNBE3;OH~pp@-$K{+6xG2z78Qt;Bfzdv!z^!$OC0Bo8?7mHRH#J)Q*!?^K>a zYes$L>1Z%s-gYdZ*wmUCn@;Rj3^ez-^wM05(%j}Y?C=mMTc$Pg>W2ZFv1i$n9D33J z33t@qx*EX=9XhzDfmJ|jZ!Q9>1LJLKI`iP+KmCd%PZ`-iqwiniXNCp~SgaC_PeoIS zSoV&-Gwii3(N?KUQ^ckj7=Fe^%i#*|Y8LVnU4?LS_fUvUr%*2FCJ_saoKN}bPfb8r zaClstlp2N1^8A4hE)ubV1^6b4>-18AOh8mUD$C@MZ3J|-57<*hA@$-NTduEPAF0eY ze8Avz^c`xY102M$fq%)-Kkf4m9Z8upVg3LLJFqg2ybo@YG(knmKR~V}U(`OI^(nn5 zx5h2)OW&jWmpqv|pYJaYL}Sa%Q3D%#!ipZlOnQ1^GONz>zsS|dtw;rT%QE0;-rQ+x z?SM(h7iOsP>P&-Ik9KhmF@!BAt5CrNy;fBp8er{D1Jpd92q$_nV2P2@%y*9P?OMoLoX=(Up$_3wIZV_*&pMB|DnK`=7-i;LXKR3}Fa^Ca*=c^S2}-X`Qa- zA9B}1o>fSrkpc@NcYQTNkVF5LjpNTZ^qS%d)4b}`KBa9)OJU##noyc0DXBmd5)9~V z=h(G`*bT5RQf-d+ADpu-P(4>SRI@Tdmp>LoitO;uqzd0@JlMu@3SsRlJbZX?EiV?O zAo%NBb~WCxXxlNzd_giZs;GeQx`khNy^JUJ-edRKI10pO9iPC1(?S*Sl74Tvf>qCOOLVsLgef zTRKGs#tO)FbYHGBn3&EnzW^&I9{(+R9TYV7qp9Sm6*OkE24S&TcS-{e=WBQM-d<#v z!zt???84@(L{$>u<2Ky~{?CDVDD&i8lBOR{Yf)O&i2h6715EFHP&HE4RTazzn5y}0{`<*z zD1TNV6nEeZBYQ^shDnth+DQ;TjdBSiCHX7H5w$2`Vm!d!(9e=usEJ?%nq=^qkdCT5 zGuWe6rodqH9QLgwh*pBAIG4V`4+g7g02%oI-yZeuX|(jGz%!P@jh|ZNMaW^li?r=VsRnj2GPjeqC0mgp<@{ zGYehxtr6}al!7*cuH(?rVGaX~$;_D7U*+6|qZ9XpdA-iZmnS?+1>6xFlo`sK_O z?U~OclXO_BMg+6|^juM`*oBofza%|(^1u+{+gF6sZ1{r{wCh9OtfT?!4O%E*;Zqk1 zH|I2pwQ|U?DAf(QD4fY{g?QKpgp{H!abWp)K&VjarfruJMgg2+%w_H#PXeT2VWKTY zEMw%IE33;|9KdBJ#JRy4tY66Zl8pUwKbV8I1_Q_fEDc>}a)bB;^}U}C2E(gnS^Mm_ z^Y3*!JMT#06>&9@TWWUgsT4?wMA`iiiW~UMyZf5GHfsa~R8q39pzJVj+}R+stDozg zX9;qYx=e?8KXyO{IpFpiY{!9vR2Ae7PFzxM@(SKrkk6?=cjrhXZ=v4V3zHdRlEn=0Ru@&bm`8eG zpq1R3!%rMC#w4u2$xKoBSLj^(ue`y}2SMWR+hPF=qN~>Po@|%~$n&DC=EozTZ9Cie zpwaeXwy4{_;znu>_W&19do zcjl;dt;FOT0Cb>npHEaX{wXS~zc-egbx>cH3{cAYSvXV*X0fE$b+?F}f?5jD7rviN z^iAOQsqEQ6TQ$-SI-0~cnTghF_8s+1AwU+g;*ZP)8F zVE80i)0mU=v9(gF%J97!+ZmOr4EI1V&(-eWC+2SYwq+NIR^?rVu}i#Sj;R*?j=v6? z3L0o@W1GDO6y7NQC?#VpB41s63k-w_}zn{L56qpg7rJCnts2z(uh(biqb*@ROFOgxy18j_iA`8%s*}Abgv~HY(9B zolNK1`QM(moMd&tfr1uNO7-?%)1*U{vrY&PnxDtRg)h2@@)Pbz@bRq_Y?LB3|Hq?B zof|9^rl>pvb(DF`M-Eu-B^&oH2fq)^GSgv7MZPug%L#L}27IIhRv&&t_4a1^q@%we z@9bWcC7nUFlQ#Rr2grR`N}a^y;23!CcuPgpwnCz)SulQlMD3E#9<-ul%|)BKt2az* zs11hV$&i>&AXk=r>Bu6#znP`~Q3Z0DPbEh7VR{Ns8V3fcMf}OLpQ*jmxY}kAR_pXH z>`l)T*Z-J7IckrCUxgzpdH&!Wh?4xHcrKv{a|i#Adl_dKx~hX~OPU0Pi!^X1x$*d! zZH8=(r=99hFK?zez+XimHt>lv;?ERs-~^(UbSCwDhF#i&vkO=dT$JLtB62Zx?Vx+UxnJ5>0ER#KLPzuFahP-OvAeQ8YRD67`jM~S&_;RUl}jn#K5Lt4bDe#Oj>*0k9klO z2(NzBi6}=PE6cFWTc*5a1)0L!x@9&jK%Po`|2po!8Gh(#CDXuPq`*5@>YCu@sMs;M z_q5H(l&qQIZTlUPt{V8MiQCOHxQOzH>}Wt4osEZJcu zTVZgGL}HK@p*n(y%41w{Krhl#*C3cuRc4trmw*~9#2Wa&UJ7)GJh+cCHC&v}q@@tP3>_p=zI?E916O>HXqwD)oKZbQNnujj5;dCqH+Ye;AJiIvs-K*_0G6ZAy_eftd}%X&mB+3=jWK}<+|G`Fh~{TjEl3rOpC%Ka5KT)%`f3^MB2y{2qXxrdj%~8A0g&~{k<>=PdhOWC%I7Ln1UXu! zL*|7_SzXq2f?kLr0HF5fb&6okl1G$JMh6|EkY;0rT2io#gvdsV4=dN_JJxS*9{=db z{c3AyP*1#!HW>QWmFl=Fu-&jVUyO|-K(-TWZXFC`-jOdAm{53XPo?5A0Ta%*GY?aT zJ=gOy75?cu48m{PLyqeBOP~PI;EKgyR!mARH!jEdM-c6N*+H= zyu)AH-vkzv_C;Ddlw$lKM5S+qQA{o7G#uS8q#u|shIhQ-(Af}gCNfJ9L%aWdGRTry z79NRG<@pMZmS zSo?y*?QFJ`rP$cf>xcVaW<;d1!J4Udk^Ytg;LVWUhJuiP>MYR!5gG* z-;tlLn^^W`VRAM*7Sb@mk%T3}F_+FX>1T~S5Ug=GHISJ|xBJwi7F#KZ<$=l6s5VmF zfeuF>OeUPxnaXn?F1?O&{B5c^BbGW+j0C-~;+fXD2gQ&dQZT-C`P$@jl_YL#g7i_M zg-ICR$L4NCsaf-BO04d}Ctp@-HPPoQoLCO!x68+FokRxSh6ye5yL?$9SPh8Opy*-))in#`?jUx>zSX(! ztT9Jn8hHhGdyuUE_KEuZ64sTZmkaIg1H&s4XM^;e_HA2RCC5Kb8%an7w2gGAmEM)S zhcZ{&p|wBq*ihaS_GV@v?LhUo1k-H+az5n;aLZ=(q;gZYLg;LbLZ6!3DFY;AsY)9Vn_Vk0T&Tp)$>QYb#;qGD99WgEwYej0ZM@OgA^ z-xZzfqru(7AYuU&Sw?y|4%eoLG2X&fFw|mJS%y{pHeQZXyGE0=X#=w>Q-Z_e;QlTQ za2kVGWPhkBZG0GaibUBcOQTKl@|s~|SZW}>ahFHYTZAyb_zZ-G;o&{3-`K zG=Ok&B>cDV&Ft2w-Iu52j%^FY-9>TBKxU@3 zB*o^EHj+d?W_dk``xjCYwsZPwW~(`uuZl1E7qjW&Y*YO4e9((Qr|X#H!z(pFJF&SK ziBk0_XY&z^t}Ve&E^#22S^HBz1sGE_zf*orx;oA^87;B`&Iz!+o8HEOC$whjR{G*d zW~S;U_L#CW*Kc!A;(ooLJ3n?8{Cvin6gvOwG+ABA0CX*l5qwGS;x9%68^KAK>;A4I zII-jhoO)GT-l6<4+}5++M(fruH8$S-y+F5rZOMP7NX;@hyoysE3vUl9p3^OLMx4eV zIF-t9Rm%6PfD!Y6$IRuFxvk1FINLgN11b~Sqz3DSjGJTl`qgrIA23ASsQ1PG!9;;Jy z3=8lBNdFPt3HbFLc7ZWqDMA+OX_)$1smpqY;2S*H>d9~UCF~D2sr6)8hE5%y@GfZw zIgzRMVeFZ!S=7Qa z7i*~op_+cIS4GihA8kzA(~ZC=$c_$rhyP`EAXvD_L{t3@g&t%b=Zt<7`<=G!rt);O zuCkZXU;uBUTt#M3Qp;Nf#*YXJ^dyY5IAZLNV)D~JdBY0pli@Af-78PXH=ba} z1m|W7AAIERlRq~NZA1BHi?hLpF&*+2*lNZ}b#1PHK~UEUtT^NVAZhSI{!Jb;T%wXC z<|=OIDTl9#K-WjB5$HuJfkzTCUaCS(`0q;gOjt*b=Vn(g-$nn1yW23@-$QUuxWSnw zX%p~k%=A~T;XF>bggkVI9+%qdvE#GO6fFEUmX*?jP8TuI1XGtxF3S4{d;|htzIUNL z^#cfnJZzL9MVJ=;R$HxIBldm+GLy^+Wmnn6Lyqiq?!pM2Q7#y~#n~;4pNi#y2qx~q zgRk!H)7!dm0{+1?;IL6o?~Gwznd`I`Wz_4wFl~+3YRn_PH=08gJ*WzM=7oo8n%e=p zh3H`Sc4x-=@s5*PEe*YH`9EU@wObWe~W`xBlbS$m6z;yjlJl@WE;%z)}#AQxX5UMBMCQpk)I7 z2@@-`rnmuL-W|Y~kXVv&OFmhhEyJNdKutB56#0?tZ|SG&s%XLJ>Jt~6A|Yql5{}*D z^c;~WT|Fz%@9WnmRxNH^S_nfQ^9Vv=pXS^liaFd*6)qr3RroF0YyL43ua3=8p5=#= zq0ytOEMv5JW?2K|kTiFh@(c}g{ADtrZ7E(t1vnL((5qTX?`>@o^z5##^58+&L^tgU^czpz~T~tb>h5k7Aq<6M3v;fX39~EpZMfBKLS~L{l)s z%y~yBYZpa|#lmS?gRDnCvIO|+EE+C*9hWte)jAkSD9CX+99MRA&fT&%3aG)S<-;jW5GX4;%gq~wi8ITe2HUWud4wMLOb^jIU zI3P?*$xU|sWmPSiTBpd?=1-^GeKS>FwYa&of9WzT(b#M7>!C|>*k-%+98(G6vtTs9 zZ}CF%4!@JMNJ1j!Ng4f)WUeXAT1)MUm4qzPv<}@tm@8@-O$==~0&j;1vtK!$u)6Sb z5bT1l2(|C*4%bQ0on29tm+Yx+9{ieW(A|mtg|RHlxDC{he|H3FV!7xyjMO*o%?RuF zedHN8>#Hwy2_QWV&=J+a>zZo`0u(+ycWCkhuak14otzIf7DpBCuBlZAu4>}vL+4UC zv3|w3k4R7oNx~y3oAUl0e&|i3RcJmKmd$%$Z-TN_HTO_Mk4fQyFaFvj#qFgli&+xqT5l#AVwaggUjW#gAlnys<=Mh?Cxc7X6};oD}& zfO{z8uKRVnKa0{e)^!`j59|YvQ}Gf1Bg!T|zbOvlVuMKdx>HOS5xq%SB$h?Zum{tT z=^_Lr@`=zRebl?~R5h0ogz+_HKPt4WwRtI7>P;VcgR($W-7w(q|8pE~A71FO}{N+F<2tL#x z>d-ysPl06I(`NER4oMD2I%pwfT7>4Z=Q>vX8Fyy}(oLJA5O`k+aMmzFg!jDvt%@X%D~oR*(!$ z)a>7~;$^9#3Ol%)aLGJHW^& zac-O~yLrj0JV?7jAPk;V>#=m`-;OpIEom#Hmm! zAc@n`YKJt})aDIg4r&(^jnvJB<7G`nWOzjjMbO)tq05_B=uSDphV8IQJAdL<5oP@s z**h+4Ws`1#?kGo?uY|$MpwrTiFWOM9B%M1_7~%Q5_AH*I7DgO`2{i>Pzw@||usC;? zjP~+_WUCL$?3m6VT8GPqs?b*cgM#S$!j}t*2)D8~N~8QBw$uOA0K9(#w*!AdBVZ@d z@39&QgFSjDt-D5&+9ku~-b9n17JVX;NR-Lm6gzpS^5;U*4F*jz^I{f1Q9t~g&P)T9 zXa*WkGb#%2;f)#1N4co&xGq!Fd9St~;C-Y^lg`1bUO+&npY~u}j2hyGyDOy|$`t%_ z$7~o>jUD+)G8gpQdB%%6yZ%*H<&Uw19o(jT56Ya1VpH!+2=ZO+nr&e{OXrL%Y&E+# zcSyorXBscm=&6N1dRt@fccf-O#8v)wfJsPt0oCF?&3GPmRUt56)z2&>hwQ7rMDCZn z8Y(riicxwfI@JbaU(u=3&eU;`%fd8X9-=FzDmsg+myYy-KS1OCw-1NvC$6vaTD4ZQE^~-9Ii5 zT|`KW-+_5ODD}MR&je+QP&Fca<@h|CeNN z@|h_-Qe=&msd?)YtnB}wbh6kx##0!MbNmb#>*7(|bUTo^Z&olI$bJsCq9fCQ)jFDs z7R7GMyKu;RM!b>Q93lx=;q5+&yOa+aO55hWM?c2k7Ot*a2k9|wR~@3)sQG7lYO)>d z)8qzc-ZM9VM;g0!8vUQD6R0|r#uKVGuW17wCLeheU4qDEvqHmvDAd8E++d@^41A)n zaW$WcE&8k}0PuTq@3wc-NP|9GBV@lBu!}b)Jb=tffVHw!baJ+X`D_07D0u z5Sn8ktvB*xW=){$%OcY4kJT$(pYG>8SQCN3hQ7ueO*QF>UR*t4;(n$Vx~oNGw1Dl5 zf46xrgUA6Ii5*C083fZru2qeli5Lb>K)m>^9_Ky7Du-xbgPHectggh@(*gitt2KvC z=J&)J>XUPh-?C%M z;+nBlxG;D$i2hb&}rLw#gl!B&aMWEC@nHOHi8ZJdxNQ zr)@d#k4M*M>wmYdU;;2mDOkivYNb-yl!Lwbk;D(ga;iy&>j4F6tr6~z4eB~Y zhhQbH0wG;*&z)$4a=?TurQ#rP+*{H9QBSf@i_@7E2ZJ*vSdr#!efQEURC-nCl{l6v zzObNT)x6Pt7Z_dg>{$d{8kYtOqz;;rAkly8^3WqgMZfE+H*tl+n}Ygzn_XAtos8N^ z6cjz-n=;?l;O?3CJjM1f2#X!A4)HK|c6BjE%o;&Aj_79Y_(1mw-s|r0z_p5MIaY(H zLW{ehMx=Y9x%a~8!b_Kh!kA^2X*St-%<6b zMF1DRIcanYlXIq$HK5wPb?$?P?oIALos+vqBtdj=LMLb-x_2EfGFvGn8JPND%L|nl zYj}3OP2c91eV!ef{#$8NBJW}lqt>eIC1!kW1+60AXe^iM1fG`P7O>)XsU*aa`NvygnKZX=Bys#n96NJx9~8| zoTNbfd0HIJ0BlUrm~RBBMcAE-Dy?@?*Wv1@iFB;US#MS5<#7$-K#3fUl=0YH8Q>bM zg5~M4O?!VrKKZ33Xup1mXDO&EF;^pp#LL3Edk+}@719rQRG<+VlI>1F{_v@F31Cw+ zh0A;o624w3Xa@ix#)q1%e`8?yJ;@5N8>3|VH|kW8=@BW7FVc=flzt{O0t$XH=&j&2 zBk(!7ggjiR!~QaK^kt6+C{6~&*JidzPq*=YH_7F%)OA!2JCNz~z`8|k($%pqa0JR> z8^|Esm_)ISe~3B`RKw{*G8D8F{u1;1Z{MVcoxV#1Qga;qK7_2VA^GW@Of8V^Hdj`v zmd~Z-ls|xbTkb#|Bp6U*R5fer6rJ=7}{%=37TBh3TX*I ztbFPxgVp!(IE%~{Su|2R=y*piOcB6kve@^LN{Nuva+gGcvOM_%Fy8S45%%~9Y02VU z#gEAs<*{NQLwV(?w8TpL{;-JR1(>T_K`9p0c_-zcTU$WKXI4FUf7bWISN1C2Cvx#n z&?ns3SIvsnX^F$PO#d*gdYf58*mmZZtl{MRx}4;8T;b+AkR6psVYCyA;>U4j?2Z3o z2f!R5SoSY$Lt9$R%LS<-6rTEtf ze9U_f`dI6nErdUzQO}#*Xmcg^X#^fAeuoGdnW9>oZHY>$VTE((UMJLpJFaAKsV9Wb z(zYHpD%C+k?TIh>79a^LIaiBkcaOpz3Cju|-DH*g17Tn>jFENob(DXMxFtyr)Iz?e zbW3;-&-0zfppLDZX6iza!q4Xpd-0l)kz70oK(BJTX|6AgKS(Dg1SyJHzHn-+iDqxo zNyqFJCVSuVbbgX{N%wlY8q<4(h#1bxhuJ3rm)zi?`U$DRe$2H?BIHt4$i~2iPaHRQ zenQHXes}zzbpmAfkF>Cx?;g6F?xEGK?BC*eW(;u#1qo0W46Ko9BNVA6D`05}-U$HZN|{~4oDyiktiOzF~ZzR*vh~t z{quxb_Yin2+ZqEJmbuj*q7BP_sEQn)hm=0H`p zHGl^J*gY4{Vn1UXc*7ZOwhu7XGgXYtHby`7xE{x>ydSaXG`bMBv z6T}Lhjd!hzff}G7*1c`5#3Y>8`a|Yge3;s$M{4II;<<_}dDL%vVS~#4!0JbEe3MH_ z?uF~kes)x$#r_`vDGZcVHO`18L11`27Lr~ZQ&Q-GOIgOEmzVOesfcbqNj&L*`07i5 zQR7s4!7Kt&1pI40-N$tjrJw|!oRnlnLBJkHJK}LTKR`F>UFO!Un9nOjDruYRC2m-T z`^1sgE-JVt`24+pZ?g?DlS_H~!fQg=vj-@0WUSOpngEQ(C)$s33<5cSc^MSt0F*=36iK6w^h*yQC#V?EBbUazLyx;pt7&wnop#Sq~;7i?{< z+UN?$QgrsGm;c~&)xDn3cVMoE4YEe67r{^A%ZgcxtJYC5BPyxREfJk3pXGAuzHXve z=Ws5G;vF9V?_DmBT=OQy>`}LnWtqsa)0s~pRr=~7PiZ>A`5qoQoJ^zfYBrvxdS3t) zvVYR?!!#IEGNTJ(1d_(^)F-R{blCeNQ;&ghrG{+_qqL&%1tv(bgoR#0Qw^cN`Iv|#=PB2%*|JqP7tLWcEbmb@lJ^?4`PI$q|Q z)*BfRW|gccF*#8~&&oQ_`(iMb^S{3^J?cmrvSoAQRvYy$r1nGCaX2LZ z@OFt5F{DnX+rledrJDo}`3uB~3K_jOD6CYe;FZ3xo%rI3)C3n}BmCy;JwuY@50?KX z(a?|29yx2tY^}*!a@Bxj%J2H^(wW$t7TCQGU{PeQy8=21)+Az0#hi-cJdVGLGHdQo z&Lzbkj*Q6}AH%(B9kQq!;4rRf-g*#e65D%z?} zboHHb-#j~S;AGu8tb8+|liL*g9F;zy54hg&|K!C?Oy#!lg9SUzH%%+2Ang>0j9{A;)@1 zgMxg}ZehRP!LmxnX@Nn{(&IgLc{BT47^#+EKe?#Ay@|$M!L65#qUl)z)FmP#e%>^_ z82l3RYqV$(^=mJocq7_Gx2etfgm;6gt`a|k5Yrz42VEGu*0tqswI3WQXJE!8mtE}o zI?J|3vL-=1;F*xMO{QOS*d3PikB$RdyGC1rDz=r1@o|C=G+C}FQ3&T$>Ldq0>aGoH zlodbno-z$@axYVQn?+H+A+*{&z#YfAyyB-daJi4lkYKJJ9(^9 z856t-FxQaWvYQYvvmQS7(;1%%8zhd5(~E#gB{`qGqAT*3NUrD8w8CyBevzS*$`NPy zMZs=&F3F7VfJg&BFMxRwJIWJsIw0NfKgO%%07u0iN{b`I&^@2p;~MtyK;~*z=FVFK zo6QKa#lNr7W1CjR#p{4F>&Xk4VKXrGzqwf@huy&bL|hgkpdjWwLU!@ZPcq>HeoLrp z*p9L$U)jE|2&3;bjiWn+u{+?yoSa)IWj;pW!M|qP%mIQWFz!s-bI<6Yfv{ri< zuTjg5G0o?7cpgSx8)+_+xH;ekO&M|d8LI_VJbIk;<)#>MCIo>?mw$DvZ)PE@lot9C zjbBGVK$3O;Eqnk>S>rwmb1jj=DvqDUYUQYbaoEyfzBgk|nXU(X#f%=UYg~k?AO;$psM>X()9+Yw?wXXZp(%GOJU9-A zwL4vgo=j0qcs>#vV8RyH@g(pL#NZql!k5XI{SA63ut4W4kB) zpEcvn2vzA|9T@4|Gf@Qut8~?sa{oPX!F8m^_U*Wo`n`j#A-e7|4r z9g&Kc{)GBYv?obW!z8|v_aT*)n>v{$Ny`s1}g-SjD#00I}Huj2uhyWnu zwINH@pKvuS4ySszfmjnn`bQDds9+0%MKM9q=IWU=>WU~Xx4u++Zu|r<>Xi`tQeYqX za$ll5{^0J-RBYvJfLQDQ%RtuLc~bsNQ>Q z%UMbU3jjFlC%&Gav$XLJFO&l`C46tX6-3LdE#lJMq#sw>67!vr{M;n=q;tTG6H;j^ zac(>Nm#4YJGM5a^Vu3cnt1Y}bULO?=Nwaj-QU*n0;W$s#k6aA0x;)aG0ky-J@(}l( zFKfDZ`ucI76(Nq4GRc8EC{`QJ0y__8Sk8hiDdIk5@#weJb5}v@D2}c_f^4ISyjC zjabvXr!w*Oq|u?qMgmN(dM?t&2Jg#ziNDcWsTZj7m*9z==#kd5gkcT|Ht@WQB7EW)9kx5b5q<_Zz!lQ7yip#X$Bk@HOdkQ6vQ5 z{M;FB7%0VS2bvlH&=t&LUoa~FD54ngXgoC0 z{8pSe1SrYU!*v>Q?9*j?M#}MV-`9@qjTP9+pg-##GHwOr9V4A3tU}kkLnGc2Vb=3n z1YXj4sTDLifG?n8q^!XR9_^AY$id*b1kxFLoKFfMW)6enmu{0N zzFesf;(t;FF9H7XSx=~C40w4BM7%CQJ>DB&@I|XFVI!gNJauUJspcTWusTFA8J;~E z!qL1$#`pM%tvZHOCDmso0Z$rbsQ{&JH1yvP?|0>ro_eFD5L&tW+XxbwpfSGJe4_Mg zGIFyRWSCxOvGldJkjhsuc&m=yx6(0N3+(9v(P>*hL)eOO*q4!m7!#KGGpGqnch7lP z_>O}y9xQM`pHvm`hkFGLbC>35%xAzdZ#ve_^s<0_sM*4}SEV(w{3F?&{;t1dsd*tP zcSzazbDQPD^)H0G(MTm+RRqOjej7;yNbB7A7Q!2=H3T1MQtko^crOnG)TOR@^Hckiz z`H?Yr&-F;Wng7eKVz zHR1pL2!he6q1xlRV%&q3fj?e*Okp_NJG8m#>>8y)=mWPT;}cq~8^NyRbOB&qf2 zS2atgc1<$>q=&`$qk8K?IiZ@I<-H2?>o}H1q(RU<*pe5IH%kUzuzwM zFkTM{INx3rQWhHs2--A=NCE#Jep(a5FJA=JA;2 zQ$2o{$usuUzDPZ~2L>+8pz>3Nohwpd2+3-so2}n3?9?9^3x`C^F8*~mau3VY$%FhF zC_jG-^jtHWykN!X8J-b+bPDJ_m2G$+#N%u~Qs?G!<{44$8@y;n@&%!=ivhwaANT44 zyBUl+n_LN+erkrS&AwklC=Mrub5hoRHk|uiqc1AO_Cp4>$wasgw3|_?B)p4^R>2yX z>V6(Aj_tb^%bJazO&B9n(E|d@{cm33gkTY3yL9QlIF1|&^c<#s-_x<6Es137+NzZJ zI^d`^3BWyl$pDAJ$!Z(zz97Ct3qTN%7pSkMeY>7~AB^E!uffj8CQ+fPTySjJLbaih zH;U`h2+e^?omp;x*6#tWH*@aJ9gA_u1-bM!r|Hn=p9)WbV)J=Sm#}<0<&C2nmJCZ= z($dgfwF9$1Soigzsk7*z^4Ja0kTk*Y5%Jw{wvG;M{ASFvK%tXjErxIj(1$(3PoXD~ zs?N0`P|`?|KO`)+qF9Jblp6CGoq!=)dzKm$kKO}|gLNFo@d&M8ENTj%Etxos4~}k- zg!xRVp*#vf0Ck3hpPFghdyur}58yttUqQ5=5PYa-csHv?%FJtDW2_=dsl5GZ023Tm z6k|kp%Y+nt{)65cqzwIi#z$nA=-Kap?P2j}Q;cupY_BS6cl4q zU%2YfOiD#m&(6O=&H!54s67ta?VNy$pT6Vw%1_(?Cc=)iol8bXh6$1?X0TK47`~|@ z9h20N2M~$!)^W3HkRl~;;lu6ywOzxCD2=ONR;*#5WECAf?)726OXulh;Cq?O1-QzQ zBp)i9(s2wI{{elPuf|*-!}QgF&a4rB&R?J%5L-^Um!XFENZwxgSWr(ier~;sBA9TS zXWuUaBW0s2-fN3MW1VgaY#nrukijr3SbPHt7>}RsRKMDsN1T>$&EU_3D(wf?G#C?f zla~zEFoGtzFKpya9&Zly>wu>k;Zl+D%~=VLuXmJC?H5=HTO=DeXoq}u8z3r!kHNb_ zGy9?lmoR91-FSGg#mmKsSuVwWix)~5PomwGAGB5)wk@DpGiFCbAyNebQJXz9@y_?y zX;0(~g0UPD;Tm~aDfm%(y1EA=o_MOerpYXgtcZ{Kwdi6^n>jGT&`d*4b;lAv*X!iA zLtxR1%(kOR9}+u_VD%v*l$tZc_Txvr>FK&pR;O60B?894JXp|Z*Cnk{K_P#5aFlMP zum<`^*898Z?g6<0neO8Ud|px3KS|D4zi|IP$Lr9hKo&ka-S7s#$k)mxTlK=8vBr4e z6O;3{-inDcr6qe8BN$D$i!(n#kn z5ta1VNbsq@0XEJ=(c{!_A9W|%8#aY>UX4S0F(CgSdU>pzw1ndBwKIreJM8^$SrP}( zNb%{krpX0nL@Q9_T46q(BZYM>TOR{Ch`};WTBDl9%JMrh_6>>7HanDAx~ti_Cz4Dd zz{%F2mi=k1Di8KCY9GpgcqAXIu<-$si3%sydXff*D);?mBtE+MfEMR+tDZ$~%Go*k89g!ohH6T;O~u=mBAf z{^lgt8@%Ytm9~$nVs62p6&eMgW4Ae^AHxf5t=V#F^+A=iJ@!6VB{Hb`gQY>0XLLjW z{Y;Y-6gk_-62+{@^rfQ>sEQjmof6b0vcB5$m;po)-kZ3OKgD&>+3A)WvdwuP-e3mm zCWgsVJVn3P9b^YJjldPnlwypJoh47p}mWW11U$%Ujo zdD6qCFJM}G5(5gXm2fFbFQw%)(xo*MByiL+Jn^!!)CVAn98(7|{3c1N_&$V2qUyH1 z+6sv~41#lCiE;6{v|IhO!0ui9f@fjOH3fWXsZE5c=RuReDeaumB_y%jh`_~MdN3}< zg>DJMG-z24a%nyXlPf>8*$nenMdOaFt{2D#y&Sit38 zu^%-}-vSGM-X_AN^@2_?d@fIc#C*)q0od&|xW~mUO^f8C>`SE`rs@0NC(R(nT(|}q zT8e`~Yz2>_vUNMqoh>o(Aa!%kM7Iz;qQEBXw98Cdvi^E6vJZLwR3oa9Sbgsh@*An# zmYbU<4BpC9vl?+R`Kjm&hk=lXQaqM>Q1fYfX!Wo$W6JC zM;wlgSQ51{AbVv0j-;~cS@iGP?zv>17(;(;o7iF(2&q~A;qr?HG8~=9wF|#E&7(Pw8FCr2zh?kUR5N= zQlO~6Q%G2=7Rv<5<2(fQdNK6%@>`lUtLbeu~ zuPJuGw$P!ufWz{bd77g4)h%g__4$NBKy^85J{)Sng%3(btIFRpCxOfsp>`EC1+7W% z=Fg>w=yISr-1^itl^ZyAl_b7pv=H8*J!dMj*Kh^D?|T_Lp3hrYuWx)lpgy|3y(SGs z1^tHw;}nQ2jNK6?UZCEUpnn7Pq;Cw;gYyQ5b<|8`O1@Td^h2v{`3S<^84aXno3Y(= z_8J;8Gwn~u*hx*C&Fv3aE)NjPKAfZQB6-+*3S}}TvpBL2?!qcksf|z7wSdq`ZVozz z3V|xVNIc6wLAttk!Va`AfAOv{MW_zo4iA)dy?`soxbNBaR5x00W4(`9Myf6{FZ(y} zyccbQ7y@~pN;y4H5f}UCHREw&B`h#zz*w)yDf`C$`gR#1J35ICf8aM+3*SzDJv2ZQ zqEa6683EnW`cSiskQT^@S+(KzvZXiqUlUB2j5 zwH4DgDY*0xkXC=IaUmK+@x?|FPwm*Y<|&+xN5sLLM%${TMC& zNEUhy#cTeWJ7n>5@f0Vt=)%pJIK#Dm zFN_W9-QNhV=u_hY-&u?PY??6S7RM$1Cqp{6-{ z^0yn9s%xu}H5gU6X0k&=N5UeZ^Kgqr$XzvRl632y-Xaf#z-bjBtd=CaQ}N5DFJB{b zy%=#tXQ1QlJ6+@~)NaOVnOnd8aK+}b^g2-HoekkOkmL(2(Ck~DtI^x>Ay6MsqQ`6U zLDU=dNi;o+XXR!&acncnlr5nUfOHkG&ZFEsZBxEM4w?aipTWIMwNLLmjz;S};95WN zF9#LG7M_Cu5p!7a32ZJc>rR}U;&&NfBf4A~BJ%^94=ULR>TNYB7*!cEuJeXj5tshI zNGfUbYV{NRpyRx6TQiO_+%(p--utTbi7nI@=}Ts10O!d5)!19KI0&Ds4S)bj6)OIw>rSj%F{Mkg({U6!n%Z8_5ge=UA6n&! z06EW_7b|;CC_ofuuz5{K>YIjw+(VJ19 z(~j4-riMBl&lB-ntnJx zSUSmK{Wa=wn;Vb9QRL9_)Z?M1zWQ9eMHrPOIr6ISn7Jrt*keBP=yF@3cBq!v^ewf& z#N_YIGLRU>5QzeZQvkaPG<$?+i#N_18j71qY~~f)eF_6lO)Iko@w2qWjXz+CAPmF%;EdSt)Nw@}Xy^_w3#_#q zJg-s?j*i*2$hVUCFJtIulL8eL(RWsJ_Mc?y`0J~@ zbj`H60^}Zsc2gy;u6bvdm}d+pvbcnKvg$L+d}Vh%WDXhF(Ify$or)h6%k)nVXOl3N zq=vySz2kR44|d-%GT^{6vl|jjj<}K{cA;Nr;(rmrPYu||w0$oo7MF+rfK2u4*86Z9 z_0drE_IkF_HbK9e?6<&#ww6A4IlfTfav7u;wmiSBcu^N^KVth2-JdDlZU!~+_)n~Y z@Eq7oAuKjx>`~iHuCB5c5^MJMA9J1X`oR!Rg*Sqx-gycZBZ`~CB7Q~q(DF;h6LOqwQuTpCVX&{^9!J+> zm&ro(aqk^6=2t{iPt7Ln;hC=9*imqR7rkv2f8+L$IZl6T9PmT1pWa z*0Nysq!xbiDFLS`(#eWXy{-i|9B~upeFp*~%Eo}MD~83jMR+x5;+@9IRVQI6I+hl^ zVS{E8-ewOvCowVpeQh75MC^IBe7+%#{eLF;I8&CF!QZd`ZzoFlo;R6M-mbOb?mKgf zs80?M08t(8pj!vrT^8X&9E7lo)CBk3Ydt}%C#0S7D}2GH_gOUZx6Gp(NYvbe_=vn1 ze_pkEhEPH1FA;G2*_V{mXxiE8@US5P^=20ymk@|kBOF3pjgx}*4H}W5hSkqHBYWWD zd5wh^*wh?oCk;!n5o;N2Tk`818V%=$c0`W+P5F9Wi-(b)xFYxIV!#ZdzHe=kUOFnJ zsp44D&Ya-IhocK2kd>pjRTqSyBD^%g@9T}p@~t31|3yx;NaR~j+0$sug$DD12#0$a zM$aeshNqw-%JO0QNvgIRtMJPB&_TbK0AkP*jdf!+Hc*>kNqjG*1aaVM3MM7(5Si&7_zn3iNLHwONkT0-_oS^1c&SjSffKwZ*P^r3r8fisGT`t`}r{j0`tZ!7rbLQjWaWjN)g9~09)^Q zCzKa+{eX!xkYsZiM}mN%QpVbMP4*6bIupEpbPEa0XWz{!z! z8cRghTr-dEZ%sj}a{8GN)9fRZ+N_-DK`n5pJ~2!Xwpl|BJZg->JimiB!sNUDO*US} z1F6dP6KpEUr$jh0f1H5FX$xsMYAvFj_u!0Td)in*21SZr6C1dk48Bj)xl&&=g$Vh~ zgu;>H^DiBJts^XC_e6_6e`hRJKZa8R164t`s*c83Mv~~qdV&i6GnOL7SqQzA{kbAv zqQ-v0*km=4(B%To`CZ@cddqfl0?Qn1=rxnx`tv~y#`3GAS;%0wFyAcAcp9T^|4Nm% z@nP?MNe4nrt?ri1{H`v&-snTW)OC(+3@Cb=7$OjqU#F~T64Ga29 zJhSy3isUW7j7##-m@D(`hJVD$U6vRO=}kODGHL}pFHcVja<9iBa<6{Z8ckN$@&~sG zwj&h(RGT-KK&=uCop}pAA<834`e@ezZIl6w7d8ting|{5>J_b+{tdt|jQA&Q$2!hhwqNpkC4bp?)uS!Jimkdb*QUnKl4-;v}=60>wa zVriWC_xGD9L=SHMhGSTv@b{wC=L2ROXq=)07l|bjkLF=Jq}pNwrQc+b<^LYf6Fg>Pe`M0NtxUKFpdh ztfi-p*h|3P^08!8@Dw5Tsp&P)PKq^)QCnU@D~!p`K9pzVfbB7iS}f(T4tM6jUH`Nd zAyi!$Lq zHyiTkO-|MDv3F4nQTLs}=9MP=6Nz%`KaYb&nRXYKwBD|jUQ~V=Se4ptjygD}eqkEA z9c-O#=k1h`q^q7u=_S7qZ}%@RBozU!LLJ$=gE6mWuTi|Q^cE9mLmv~N5v9T6_)q0h zf`e0Gjas8}F^7jaMT6E|5sQ}e9#i)k%i3mNH(PhcFPep>N9e1;$C;rWL4U=cHjxlk zQJQ;sTXl3RPl-bKf82`>KM{nZUR!JGy9n*mS5JN2_~CRi-M+DZVQ%V=^}XfLR9-F> zyvadcf*(DtS4;+zo@(xzH~a)?2o_@G(V(oGwBA8IF2MB!Ql!wU#VCwx3?&zuN}^g3 z1+7avwHauM`Dhi2t$uGKhxcd0W9>cL{` zbg!4TbA3Ba1WHO;Rv5DD4=~8_-#9~_W!xN{ju4{CM0bOv5uedRfYL~Oj1`=#I3n~e zR`YY0OkE}n{L`6b2>^7>TLgn~-E6(h&LO zYP>UEU3S zMrW-f-*!J$huB0box)9u3>zSgrveM2CUiMC0>MY-=trURF72E`X#b@!s2_KL$9Ry| z+b}~&mH#|H2=H5cq>QR>YitHwFyDup=1iua>JHFi!}BC6?e2<7W@vY&#p^Ip_o&*43&dk|u&_c+75Zpk`&a);gzB?gN!yvK1t?Wds|E zVE=_zUd2G?k8oQ#~m`|KQK_=-~vOyzOKQ*R-QFWXZ3*JCqGwI?IjN<0e-Ugg;Q0wm6XyHifd?Anirjf{guc&d^>?Y@DlBEz3;7 zBI?x?X?)SadZt}zADokF#9QJ9n7l1jjj2uK+=hV*n4Ug#kSiF83@23BfJ>9ZBwdx@ zf=Rh@YAqX$^?%MrQF5lJJg-Lq`x*e-xrC`%1Wst?x0q%3IdJk629?siVnK5%GAC2|vU(}1#-cQ64p8)m zuylaCrE0KS#k-oH{bQq2496>eg2SFOnbZYb5Th z>iTUshn!qhR6f9aN^BjtHQPwUGj=-{J%CQvLmY^jEejr^o+7@?p9Ore(o`QHGu+m; zJltOj%ROtms}7DkPAPWf+hR7in~&2TA`N2NR~iE(6d!OnW(C2K?BA_xCcrLWIS;f`4)#TMCTp(FDl<_dIFwrW>@OOlPkHh8;=HJ(YP)$ zB%vI|jlVAQh-q$qrI!)jp6EaVq;?#``9QOYAh|Gj-+W15vS9Qy#*D1O={pO#Fyw`N z^?BH z){bP(^s+TEMp$kM7+DkC<-@-4UnYRlW?$7{yd(Rqm1~pcLlf{fRtmeBhVoZ+!mYB% zi`h3+UPbzV22y*UH^HOgUU-!I3XgMieZIbdibTMvue=4QF zurb`DkYi0i`KeR25>B96HxNwU5E0+=CVk1ggxdjDt8Bu7pb*oD;Q(=j$##+^@JtZe zJIzPDuL=X{F!31aEh*Qge5^WT2#kf60<@WS_^8TRAztoxaV{)n`^U4al=mgKk{hLE z_0P7w5_JJ%5Jdf)^z{W%*&db%!Gmrcx$c})522VwKfb$}=GT?AsvQ|i*nI^ny7&ib zhK9uLL$g~C|Gz1sSjVqdY9=AH!UF(^r8;?@d=fiHD=Vy;z!qUrlI;I@+DK*ugyn16 zSuZ|WHnZe~;78KkW2PAS~KDGCw7 zV#_TYX-yMksE;Y6hzdaHcwk{KD*}#$m#;QM-#%3~Y`U?4l!~io>{H(40}pePN>2e> zJ6F8dP!u^nLk_A$;NbiJj%1X;C_dDSgJT=1qStxB;5{dXYq3L zX}iXT`Dw9W){I0g3`?vCk6E9Y(SAzhguTDz9+t9E!CK5MVah`Jc};6fN#4`_EvZLc ziZc;WsIFMLhw{pU*37dL|3HO$&^|kK>apg-9jxs0+sBiGEAyJm)ex+~zZbz)X1myxQ>yBd18=aw1-- zoO%1VG{uo+p-$|TXkcu6~kcP(@btp>o zB)_Y_3ig+h?Q&)E_Y-xvVzv=VY=Lls4Q2v9@ju*Ts@FmTO?!)5;-W?sNmRC=v6G)c zo;3R~1XA}AnY6dW(cB%nQc)mSiW0|!-s!sSwPgT|-J$522OOYqgdJczE%$!8rk9-! z3IQ|KH-fd}ddF1pr3)XzFePyi9l4MefBfEUcXkpy;wtYAM)(G;|1?Xt1a!%Qr<&=smwMH-gp<$KC zvp6|UyoRiuXtcB8xWa!lL6JZTY6%KMmv#~#Obac{QmQQdjeVn%DDTdJrS^XKT2Cu} zR^zv;<>P=e_lmfLGd@neD_od#durLF`T)7@#6a(O7{Xo%nLbMN`Akcz#Dsqs&Tp+#Qdr+&hT9iJGdN%wvzEtnM|qHF`f6T1@|+fyy^3^xp)#BB&<*6Np&mfTvRdORl|zN%oD+?bKe~C=f7e zn}#`$?|MfpyJ~QA;y*G;qwFS2N;u1gLkOQrW`E+hxGVt}hEzX>y~ZQwc5XtFs7{_X z?psYzpRk|n?E4qBer zKQS_I@Tar7XrT#~inU!#7=>4{dj1sp*z$n6WLzn@&*etxx4>)Si;#&LUVw>{n(Dt* zY-mw(x+bzWRqpNmXJ6R^B-|aW*@w%^l@MeoP7V~jz*s(Q0zD+fQJvEY$?7T-Zd%OV$pCx#)OZbmb8b$f z{GZ_ojL$o`5PkBYG08RCfqD7it&f9$)%*U$dcyq{pbHY_#Nm}UtGQWf>%nh0)0BBW zRO;JdDGnY-<>OPms14Ol2u43H?ws2)rBGb;0q!?Nho5H=dQ>2Kmm>-Bnhj}S-`w1G z>mE>e+%%{eNBZ-TIB`1MFxdnBXhQyQ0%BJT_HtN~t3HOt-= zNl6}^Llu`DQhU9!itf-*6>!AFv}YRDER}!J&9WEhnk9=}Zwi@^^&0Yj@Bx9xQ+!Do zqFGl6sW0G_lb>xA<^PVm>CwQk&cgkA8NaCV7YgrmlBOHR9&;y!@Fp5-MgXC=WSqG# z2=wOJ3V)|n4-;!Pp9NFyLm)!NndS1;@KYaw{LbW++IEE&z$Sj8bywfU4d!IO;hIUQ z6J`ig)Y*0`n)u@)?Y-;)$wdLAz;xi1hr3x9NWLSh_hz}8*oT~G@e zvF>d804RDs`G`iui&=+RlK>b)H4hrrq}L){5{c=i4HYpt=1Deb|-j5{m`4?xkb8`ca)bl)KxcRxWx6JLi+!zM-N85e2i zN}#QWuyVWGC1FHldQh6yLhj~&CQoDHe#c5x3iAkP6$NESV(GRl@kA4>k6_Mp*On`e zkWtF5!rJN>N%}fzpA0(q)Rn9g^C{ZWJKvUfnYI=Zi(m8d`^04zZ{=Dw(h)MpffM*z zxvV0wW43qGfD>jC@{GH;p|p;61Wwnl>O3%)IM{YJ)4T7K{bYns&gj&3&nExI+7kKa zJsz+H;>C&R2i%c11@?dsY5ZQ_1_V&2*7TsJ2jysKLLcMQF-6`BtnFw3;0+5VC?fK3FpMc4QzSn_)Ilu8 z{!)*Hnw9~uV%nDrzM+fQOQzqa_0y){v=BY7TIIAgY*{tl63DqU66Jg<1A(u#)9Erb zn|7VIl)Mli*P@2hy#V1**Z7P5z_k`AV_c zwX0t1angh1>3g_DF7EZLy*}OF2ene1!8Sd4Ns60FcbQbnDZtkVAnp=2NuKMy&esJY zvkwnQZW(Z?B*(j;-KS5#6+qG44n)lFAu?sIzBhxhaJ%p3RJP@vQ`fx{=J3n=GT5!4 zX==Dyu=ms`T2aU`+Q5HC%ct=`mggZzEOA5_@Kz^6Y}xaxnvJ!+6Nw}ZSn%U>IjT=< zoy%LzK=q1-hFB$Hds-1RZItbDlI@_}m%mA8gHK!}D~0S@uEUV_O_Zij*e;;tm#iDp zYj;d3&2UnwrbjLt1DdWGZBb%^4Vu`8M!9?#q+C@n@{j8hbHHV4Xpf<*z@lM)7c2jV5eqAYuO zonMpDBKDLb3im7C1jRaz>(Bj?CluG;7Ribg%kBi1G(9s%M&naDUozcuHMU?p=dt&0 zhh-@Dkbh}<#xo@N%VvcG3Iiu%AjxkE({wFloJ=k>QoW7XQLZb)Qd+iXiw8J^;CiZh zH|Z%CEhg;CPe(p!a8vUNX#jt36Iw7u{Awr)e>1>tO!ZW~Za#`JdsaK(MDNOqn~Ndg zib@Bd#`le1*ymtq%m$H9&<^YBjG*+XNdGzpCUMV?@u4(yOcYWfz3FsRSG`q&(ciyB z^c3*NXy7;jwNNN!ED2T$@gcJiO06upd-r6mKdVs;3a9Az{zMlBws<_-bDL+hq0`>U zB1|@a=7I{}qhkTAN8{NILTM%{L_OMMX<^7yLSt_m~4EBX|k29l%EH1}wS7<-W)s*^mI zLfk$xxi-f!!^xJAM*f_o+)gc*q6c6lvTv^?cz;;I&Hk;Rl-H9I59jAI2mQVHhq>*E zFyo}GoK68+Kpr&$IxpJ{HAjD|?{G>lJz9b{NrS>O_Qyr|wmy89u2!_%Rvo(F+V! z(1J@v3)GYnjA<}hPGZo^V=m(GCzFpl_NtCmePiDx>4&^j$_ln-o+f!CrtflZf@=foSzT{o_IJ2q=VM9|jchQnj0K2RCqv6+f+=aEOj5 zMMO;7K7B`6QH0$&uH3fEWe~eSS+n1ruK!;b#dS&O^ps<7^)Ak7|9V)SypiiEfr@=ZRSm>ofJ93mfAVaXN}iaukz<0`45I4#YCalHjl(}{;TwM-p!>*`7qqpA z)34=vsAP%E>Hlq57Q_3*^%Ovi=@SoUFv?oZkd&M2gndsfYqCyp8F&rm$=^}idRTcS zA6Q|@Jj;XRcSe5KBW~s{zLb)=>=(+5`37r8m~MHjOkSZt`Q zd}}yF&52!wmr2L!L_D*2drn~+wHN4>LQ+$R1{>x*iD=QG5Kd=vmZ!z>jzq5i^O^$e zFnoJ1RYUL521Cqal9T*b)&`R4I5jekv$m|s=FAB*4Yrdv)?1Hym9#p@f^9-S1^HNjhxt>5IeQP(nq1MOXbW>+G0&vlXH#WJj z{CtVo3E0A{207q+onvO346l!+=u*IU;Cs4(l)i(B0FFrXL10;!w!S-i2oo#<$75;IIWeCf%K@ ziuKd?g%OQL5RkJlHS;#}P zINfG1)svF~7$C{)ypA0;SHKsu25=L4P+y7s$;qZ!&E9PAt#1-MFkHsolImL_hzJ*W z!&<-nD$}Q_Xe|)e(dFS^6@4`E`$VYh7t**^6xy zTC(o%>R%$d%7}L2jT%Myqbc}fWL%yAEe=w^y;s(jh6d8B-45<0VNVa|5!s!2&lwP2 zaV-qx2!RB_8JbeQ(5WC$-JX*cg3XFPN1|wY-5Bd_0sn3@b^|3VBariVcGZ56U@ZzK zP(+!A6!UR%Tmchdj+K*cv5|5BQUV|&EffS(>z2Prbh9?b$cE^!+0I%QFZ>+3#6+W8 zX_5&0G`dR&c-o^g|C|sXep-HIVtEsFV|_h-A%YLqjsB1O+t{J9%)I*1CCih9qnIxV za7lO*L8{*ewd-|<#{Nuwi92DIqkM{c2P}{v z%w`jSzT%6dwMxM9N7|6$8nJEuK0dB^yq{S^Gp=-Jb{)H{+Ap)=Gs~^-wX8+g}QWLzM{cN1u7((04mUqCKsqF{iI)KQk;%C;kXS#v&Aw@Y)! z_VSuUCr;8Eo$XiSPm8%2V68+;7e<^RJ(yH8Ez#m!>gqepgRG3Zg0X zr1p)mZ3!R_D#9Gt;*1o#II>P-)GwAw7=2y6 zFnY^_rPGP+G-*`(^G_cDRLS=iw%UDvutzKZ0(WGeJ)4PrIh{^ zpNoKdD3(fVz|cu!loryHs^CLX0E(6X?&?mtJZ~imro(5EC4^92IVHaNp!{jRnREZ- zIz7hL<#1D3DJ|b{y-Psq&6)amL{zeQxnd=r_8DMks(SdJaf{T^7x`~BO~sEn4H9&* zAR%6GcV!j<&;jhXK{p^cRl8QeX52G`m~ls%FeAO2|LWJgNEKW49Timln>q=rfYIO4 zH2tOpkiU=s*23i!5KdZEYV&8%_H+zj4Qw#9_b6PKOGbP3R(DKQAl$w@#8x(rpZ-&+ z#>O{>*n|*x9#q+SQE7NUkx%(VCmP5h`UgQFj{tZC3Q|pFK+c(#&C6_$`?*+gfSqju zuIaG5jJUTK-zW|TWrleWfUyD8S+950Tk+(qO#(t#h|Rkn=wStNVI~esadPH!lx*X< zI90Ke319U4rUjHYatJ#04XMXCYU12^I4^ywFOi6a9V}el#ecAQo@ZLYbccOGkg@9{ zbj+6r>nd6Gym6yC+B0^0R&d;Nb(eQKb$n~{uV?c+FDj|m<6 zD~IfviJMwkzH3oP+GlNTjR`xQkYkJMmhu7X)3h633@XFIyIijyE4iQ2IH zziPjCgCVi(qO4Ed^PJo%t6lijv(G${z=G*CrnnT%l^@1f2rQO3i>aZavXUf~-pE9D zEtn%gHoR$%R@l9vFCe8OjpVcT2I#fJx8L_3qcuODq|sUpul;D))*~*`SXLy=CDX zjl;_Bozl6+n-s~UdFZ>|Yp$KCO>h`U0#D(+c;ERfmkGTHi+K@Rh6B>9;ZVkWjRrY< zHebcxN8Ad&*+Sw08hSb*C!I+OL_J`>6i$t*wU1+5lb*Tx0Kp2?%=c0`9Fj4V@{iF=22(OqYk`mbik9fCkB#m>J zvInf`lZoq6Dg zl5Qq$K!mk8ysv2htosKUxT-HJ4I5&s%Hy&;f@}Y@y)KH*tsO6JV#JGb0YEMo@gxC$ zy#p5RZKL=YLDw7;`O>zYijVv_(@Ac+lENA_w0cZA@(b2Cv{qGiv2nn>D)@+LvRI5I zW?LU50Q(Q?lRc;GtTwSY5WG<{u%)Nn%fHM8zqk+TN7uBota!Z+t+DwMXGb+Nofeqn z1zgw1U0IK&W`59F!@eY5)#F_2C+pTr?yAJ2K>8fSh63V6qYBB(jUhos4x8gXy}mj6 zR5v;lx-g>~Pj0{U&|&+E*~;(;iugyXUI&%^MNxG|WiV2HTu_;(s<2LN; zps6)C2ok>LjIucQ*TE@!RMeQIdAy`>I_iE5W z2EzJ$SC%A`?{JNWM+2K+8j<@tmf4s5x3E3_4uJ=Z9hTT7w`qWIeEbboUPjK#*n&KwXz(1uY#2o!-}hEz_PC>{y7y!_y=`>^nODTrhc0E~@d+ z+m;9;9Eb9+#`w<(Gkg-HlvosgYf~~}d@54qxahoB8$Huyc+n9dQd08RJn49Whu%vB zKK{!Ob~FZ+7e;~@DcIiQq7nI6?Q10Gr(&GtwO{qgh4qetlO9myzyJLzeh4J4js{Ua zPL9mNv^i$nBsbCcC4x< z*Xy)62VTgmVi1o)z!hf3fJv+N5G{@uSSP3Vp0~+*h^@R&m@gNSPq}jd{P`T&YMSl= zAr0R0U-%xV?sIjZzn-cKAea&Y?fK}ywL|fqSOrkIu)5}HUEPaBeHYV8hnKz!IY8Ec zKTa)*bCRJfiUsrSktHs9c;+9S%!&M9MIij^{={{4-_!4S!vKGPDhBJ|{*9Y~dx0$H z79!8(L<(2XmuitoUXjb1e{o`Cqh}Ra`7a!6I2ZcSbq7l=yggRdu5dcomtB^q@2z$3 zn;Y`zlyCmdYotcl+uVm#S2?1{!BzEDDtarkbmOy`cZyjfepFE%Te6)|P|YFfdnbvz z3)c@2WMM8I>RD!FLf>{*`xK3g(X6vDq2#LS=_r}AWcO|e*2qWxS3WX^ze0H_St~yB zge}|vr1~gWZ*%1M(t|IC=Hoe5eEX0zKV(qoq zOe6?!#^1bwqO!phRMzGj%UJ!~WEeadU3AxCz&^X8sO|mj_JP|jXGGaLyWj>B*WOwY z@?v^T2r$6zfSPta5oXaA{wgAEO(3+49|N$0)XgNdV8^&AL)7+y61Gy(=cb=H0?@N4 zwE3(=r>Og#qDWFGHZN7K9u?yq-KMX;B?hP8IKK)^EOkdl^RkdLG2;jb-CyE*wa>XC zLcexLf6X@>ro@wnil!JgH$7bb)a|6nqg!IKmKL$+yxPaRGUa@Kz+u;e3>b^?71cUD zSYBdKSyTmmwd4=g^)n^b+PX1ZbNk#VmU=;=Cu|mab29BsWvW$?j!N(`%lX19&Ikh< zd+Th?0N39PO0L|-QfE)>&q`0?STSTEQ2qdywt9RyGiTXF2wem(kF;iTbHYZizRM+; zi_IGNQ1^iP?{d&(Fo679+FWpztFyxdNMuPXbnc% z>2*;_#ZOa1>I#KzoxNxpeL)bpM!h#&8tBDy;JtIYBM!jOc#_`?p?g96mXJjaztnhk zEqV=^bQO9&t%3U-E9Pa$NsM}o0_n0YYefFFp?cA(9;^)lQV1;i0$i66OMlGerNI^P zffh8Cp5IeYN@8^!k&P(4;m>Li+H5Z&L5in%akw=pa8wTuSAYaCz=NVxq>OJSJU71G z?_oD;G}{IHied>l->|cHHDDe{;~Y8o{b_+wN8|=Lw;CS9TS)+nLXkGHSs@ANZ!dR8 zoyV;`Z5LYR#yFM$#&qW@o{l2o8m)V%EREl^d1X}Uredt6V5rey(bB{F0{zw!WtIan zu3`wVC$bex`8Fz~*n|lC@FQ5+6fG-`>}S;Ou)5|uEwnZzXeI3G#DsL^oye@tfzBfxQloQS<>+({q5-}mJCGDr z>(t$BQFJ@Lh}(nWd32i}vWM=(0ylra&||~CHyc^usCGdje=ob?2O5^-p;gqJXmlLE zmxguQ{Ry}{i@N{9W2~jYMZr86!cNt9e8}mZOvjpS<&nkD<~n28mmMujZSHnv z3ZHxn!OV!IlW@FHUyM)KG3F%7uXD40v*I3!oV?wEEpgLD=*DVOaI}S~8r9ky*asjB z#2f_t>v~XV&Wa?SP9M#6@puIZHjEm|S@}w<&M!91nz1R?j3xIuXC9q)d5`hubCr(o zOTy%Hzw}yn}hV{8jat1U^7I5}rs_x=kxaHbBjvJ*+0w!(8w z*?VPEx-jHGOxhKEjs{GSN*J@bKCyM`oo$LoAQ{1_JPK& z1>|0yE?;?2wGQ>wBt#wkk15BWV8RS3Y|C_!EL>JxDYJF!UPj-%%f1>$BEC9c-~ z)7gW;Z2)OE7!09ZNI6u31^bm(9?Nq%l=12oCFzdv79AW{>t>o6l~m?UTVv&wHs)0c zNQzdg+hf1;Ti6xk63QL3CrLeXcUgK1S@;E$CL*PKm81F_42FJ6c63jn%CgwE_I}-_ zNp*nEip>04k^tpMQ1Ma|bu1}77;CPJu&8;^<@0L(#Ea~KsiHs=r-sVN$I%plmRRZ= zzhY0N>*m2P$hvCho`c}Tsc<@Q3TCo!;Fs8&5IoZ!-xI?WF)?<47&WTRCLhA3`%;lU zVv!deNnUMI`>j44xM>k@6J2W%v}=L$l=>t6Hh|F_=8t~yxR1CrZ3 zhO?8@arv=Y2b5PVW2o=OLTXbx{H@)CH<5c}&+a&7;S+vaiATZ}dbDJ2YRt=5F#upW z30CBbq=im&A9w$Mi{pS;X1jyQ2=(g|#w*X&-ux)&HEU|r`OfkSvDN^FzwT>3(tujG z&^bY|Tl3c&H%TOjYqb8fkS>&iFV+bI5Gyq~rI(njGp6nhqCIrvv82BAH8x;W8oC#j zLd)Cn)I<@x7_fm*C2(sT+Z|u^LJ{HI$k*4rr%)Vng0j=qFG1fywh*{R8#s!GW_RfC z_~#NM=y-Y3KYq(DC zih3#NN>5mT5#)9qGg|jlr}Ob-3v&<(I=K*calJ^Z5J=49@{(^>?p!U?%}Z$9G+f(6 z87RNJ*eky#X7ZY*N)yBI*vuO4m9ZaKM|0{cDTp{)=8fd&lmA47q4;{}jCTSq`DC1; z%lZsm`IrQlSq;rpl&x8yrCDz51l77g>AN24FMl*SJ*yadk>5Z=mF82^G@B{U3IJpx zGtzq(Zfq~ej(>%J=oeyEf`FWyix^FW7wFO16N=qSfGFMC$sqVMP_a{A!Hl4PZwUXk zTVFDz9r|F-mU5EzB}hZUaTQQ}XMVMGQqZWn-eG_-9o`hIyvp}4I`jmq4AA?O^VZfN z;!(H>)nX9WNY}ef7_rWJN#q-}q*>8Qs@xg26npc8l=C?ULCqeWwRx(?pFd~;hN9l6OMxmw6Orzp z(F*bPBBJrTycqU7dEq%Er#u|z8XqW5V{En@p5E)HY>I%|&TOz|Q(o^s z{oH)#bYHPBHvdLx9uy{P^&LtyL>k3sxMuy-S}GletGN#LEKF@3cnt0Vp20%elZDL{ zRZ&Fv19x&n;aTUm3+TpKLr$;7{3ALjDYR~mXT!fd%=c(Q~R&_J(+5hYA5a_~b+uxX;T<-?JT{uZy|779S@`o3?O6Yn$ zCvM_yWmI7t!>(z`_hCUWN%B`y_TmH5Cc39|e?pd_ti@3r`oV_=$?IOARo)#|Tzbv z!oXk>|fxU9*M3(@{WI34s9_4P9|RmNso}bVTK-S8w|neYyn_VxNF=l z-1U-fxHFA9P8l;Lq*!(hd3m9Yeg|E09Y2Td-<#fwrauJ5N7G^y`oOu*12ReL%G~k7 zz{6rCFvU&0pPw_GLi)dLoY?tyajF^6K7K(jiBGVy2>OZ47M*aIhVxm+e$<2{bNSCu z-q)3?MG$0&hdjVwn$son@z4$*1_ofpsQtk%%|sF)w}HXhOHY#ZF$>O-EU9iBObdf$ z8}^%YNPDD6GHzA39>Fe**%%9FXkww`@!8}aC24u-V%)#fz{qFs?N$t_^Z=a7dqI{V z?B73K_qKNV-*6TJ`Bh+}Qhlm?^$4}&FUhR!@G_*CO3V=HGFPIuIlm;?Y oIF>WEuzjMZjuWrZ@1gBK>grA5ePozCu_iUtw_0fH!KP*IN7}L2!T\"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 +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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 +/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" 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!!!! disabled=yes 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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.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=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" 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 check-gateway=ping 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 +/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 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/20260509/20260509022002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509022002-Diff-Config.rsc new file mode 100644 index 0000000..9cd926c --- /dev/null +++ b/MikroMaster/history/20260509/20260509022002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4293d4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN -- 2.52.0