From 1562884371241b81ddfd419ece07b364a3f0d544 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 16:20:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 16:20:42. --- .../20260508/20260508162002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508162002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508162002-Diff-Config.rsc | 4 + 3 files changed, 4644 insertions(+) create mode 100644 MikroMaster/20260508/20260508162002-Binary.backup create mode 100644 MikroMaster/20260508/20260508162002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508162002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508162002-Binary.backup b/MikroMaster/20260508/20260508162002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6a7793ea61161009a6e7c5a8299af5882aa5e972 GIT binary patch literal 298264 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⩔0xuWw7`n1&ed9vQAl2GC zYX?Df&IB`Fr)xdS$uTj+{PO1*C{1h8eR|S;{aCKYF2)bQ^-K|2fQRN>I0mfBqZ(tF zH>eE0DldRGV3<$D0COE5ZP{%=kWVWRoL{G?xSTW!Z#w_M7G(oTs5;fUI+W0}ZEH?| zCa0oK&h*F#&K^qF-JdJnK*h7u$GP72{UsIakF2PA4C<*+NXRlz6Le*JqO_%Ppn0=w zAP7T0N2?99MiGvce6Cu+AKu)cUM9M3J@EOgCg0J*TK}}`9MSSqOwN^fkVr(hsRQoh zKsyw<#bxMb%qVq9E$SoA=z{%DZLDd?DPXAfLpNB?Hft6wzjHL+dhKq}Pp!4aA&juk zD-F8!a>q0bB^{!qT$x?OAz6-|Nhh0nh;oNaGaLK=P-a`nglv26GYPk-rS!*kZB{nTU9ALH6S zLyn(nX;2_Atj|1I`TS`}ViF*DREQ(7Z$)sOD3dIk1@wmS_kZSz53i?k|M4plKr?*p z&H=wH+_vILE7h{pxXr2p`9o>(6+(Dmfa2Z#aHa_(x+c0;UgcG{(IhLrVo`Mpt4Co> zBZa(cGoJ5RJn2PL<~*V%9-TAW7RK+%J=kTu;IpKQrx*=R9kP|9fE0_(8VcaDZAi%I zXe3w8$nhV%P`uoy;3#z|DS8Oh7P&0$l$?ZF6)h02A_$(NH=lK#B!KPw2qQ2#wGK|2 zUJ*!?My?&Rm=oHXXpo3yNACMdy}4m>3eRydezPapk`+RWE@2ijDmH+^Kl-_QPqUX; z3Jicua49R^A9gkw!uX!Rhx$5gN6l;q-$0Xz_Iy^+bI##vp-yj98>dGAKDYcG9Lv$G zfj;hn=>TJIc5_NYIs{@c0uISMye$at`}@E2E6GNW07F*#7NYQ3u#`jF3!3!yToECd z!1>Y75G|j|%%Bvylo3alkIoKET~c0;M5!oL>O&77W$+;x5xQ{T9(@rpIxa9$c!Xl* z$xms<%5}{A{Hea!MA0cYo4!Qu*Z3BNNx`5I7&*lu|nSugIl!-q~sjV@s` zNCKjozxC}tH3Alq9epZ5rtuoMo@@u)w=v708BzF5c8b)|`J4t>AN3$m5zG6LKYBm~@l#$GvYY!}As zelbbWv?>E(ho)hz=Pm2-q%XP-iFxKnmbVRv)U`3>Q4d0h77;!ZjWK;1G<~atO8m=% zjSfr(u;UGCBEk{ag?~+bxSft#x~B!n8@QnvHK0@PM)VObE1P{-l*jz5h7O`d8DGNis|14n>{Jrg0jimL1J5!I4JiWbIy%}U$cRV%D%^J?XI z98eLO`xyiN-i9hmkx$f5$@Uq>u}FL0$BW=Ek!m?p`w*sW)2t{+e`Vs&KEBj{Q9ph4 zLj?>r@|1I{@rVA2z{^JXt&l|_Xhoy(vax!v28RO7SGYNu)Lb{-=SYGfIcZLxfZYk< zo5w0t^jCn4=N?f7k+xzL2&<;#8V+LD(xT$*NI2spPZk^7O7jFumXoEFk7tkAzBKMU z_x5Mb0h!M>9p;%;zZhAnp}1h6Q_+!0zjv7|7AATX>gufIWT-|>+}pRYRRWmMiyzY~ zOyJ^EnBwt!!(W+lXiJNlVy7Uy9Z6LYEMU8z9(p%ui z=!;A+DmUi7_m-@yQw9oMaAS5tc!i+F%#>bocG}~6T%-e21U=uy)E4c98d!*erXX9F zUaPqmZc!zYMY2kV7ymh@mdc6g&oBsRnJs4`rXXEmdTVe}P6#Gt zdJWewh0arj(#*deX1J}k_|~CkbwV&tYD3@6NS_EvVCPa4B-ZU#SVl+sHHj=H%IpDl zE5Xx>*kp?>dTtt{g(0b^p`#FXgzR=D(e-=HOoyBq1Ue(49R!%S8Wq0$I59A`Vb2q*=wA$Jm?B5G zf98jlnM2#Ut&TpyreZ6q>BTSX7*vQ#twYnll3Li6FH(g*HnfS5tiG20PQG^Hy6@w>5^ z1LRTKA>^mEDIc}}DbRt?Q6P2#GA!Wzsg6{BN+Lz{2MBvh+pl4xh$Y9;`H7!_eQlN+ zBkB-#JYuSxnNssUT{H;`Kv>dy#eU)-LTCFo9FMr+n2-k}{Hw|VhB_u>$&pfB_aonK zb4+hf*H<&&8u|4A;m&WMI)aA%Nxn}?a@APBU+W+M-TZTY{zDa)IG|~j?Z$_1!Iky; zUnPf3+v3gIKp%O3JA95vlC)|{pe(uW1H~(H5fdA3iC>5aU8|8O!n?B}=nGsUk{TJ2!twJv0&w1d z$ws-IQhGiTpA!LL>wepJbM7zc!#ahibI27z{@FNz^@1;s3?&=KsH6u=PINI$Ik+;0 z=krWYs7kc^7#fGw?*6(-=MGRjcw6ASRr>M|HEIT`@1>B=*FjxuO|IQ;gz{mqKQM`7r3Cdd4 zE+i|?>}4l`Z@TOKRtf{+0nu$7+5TZQGYEJw_rVrnYg|gRC%ZJNO>OCS<(Y-J16rsh zt3v1K%L4;D$85MQfBwR-A)d!eA(T(yLFs|Y`;swJ0hHNi@GJ@}Z%rLCJgQ0u`ZDd$ z&2M@%J@(`sgFtfCULTjkE@Aj^zF z!A`D(o85-+2}{y?UMPulZfE`u-ycNVLI?Bfy0jEX-8GIQPgCRc@yVh= zrGPpgB(*g?zMAy-sape%IdEH4uWPm_BN3gqERWVu!eC7TT2{BS@S% z5S_$a^PJfhhs6!9Y`woy%VDhM_rQ&8;cE$2K5KuKr(2>YbB5Po(OF;lbn}(HwlA_V zM+avR9ZRW5Qy36*H(bE{l2xK?DW7R)H(U(S(^cmlr!K-?3I;e9!uJrr2DQZ2#sJJGg_ zSz)V7HXx@bj&_lFIft<2Rkr0A`shZK`?7G$Gea1RegvjOQLs&vQ7B3vvsU(P3%5lH zC8#v!8$`fX`6o<8g;!RrDi;QsclCC0?xn@J1Wsb4?%?u+GT3NNTaE;2l#MYg7u#&` z8@Zb6NWw`8ul;J4yMneR{*PKmbq(E8qbL6;DDeIkJ`Pt`M=8tJbE?Y&H6H8tj|H`!v)8~Q1xiin8Hj6Ist)t2Gx@)r8P!!rz3s;QT^EaQaua%_VxROLKJ5w{17-yS zG9t7nf|xMt?K2z#*X9N@v(c}Fh?Go=!_t_IMdo29(EH)ahL0K6cKi{X=ONLoLhrWC zZ;iaBTxSJLFKwt9Rni!Ve|UJ2X!}ZGI%aNjkbl9yy;X5mR`+r8P#k#&T9ZO=C{$qT z>O7)BL&y=H~=X>Pfp3_|_oZ+*haVi6UpE4w^Il^+_@P_SU1V$c^3 zEi%I4`|a}?`VLP|#hg4G7#=6h*T-Z)(Tx*fA~kycgJK&uF?thPYUe>|4!y$xEElXp zt|3c@7|&iNAtIze$byl_(bBjOjA-4^^JBi{!C0rZc;ar1+Pa`A;-wsZ4yBNEpU9C^ zgMJtTzvN%Rcb!!vs^}$IT-9PwHy&bA)a=3S#8~H9cKeWX{affF-53j}vf$Akgs|~b zrLm%-Cx?AY060R5zG=8Aby5@M@)KLl?+3BjesdZnB-9N*M+o9TBE05#+MR_X(DhiX zo56^e6j_BD2LgQTLk|NGl!(ynAvT?h@^pAjfyo%Ju5}Zo8R>luR<*dGA1OnxL5Rh| zoRvLrI>LaEJE?{|GWccLKq}*$nJrHxdd-3Z^=tY^WMDniyjk2%Sm#|9X(#BGcaJ1Xlv) zxW!h1;h+2cIb2Z1F2Gjf51L3yGs@@k3a@l4|NXO~`kw$;_w_Z;-8!&KO{%R0dfp#9 zG0y_qLmN9@NpnKAt*Dq7-X^Gb)3Yudsk_uyQLo1dUl5xX~%y~AY$ssk8v(GW%r?bD*HS!I@8LR~+@*SA0 zP7`X(haieA`j8UR>HujCT9ndswz|J=Fp}X8WaBDZS4D7-lFM7}}L7C~~ZUt*vB{@hAvJxO(tVdPqqtf;dJx5 zhHp`eEE0wcpC#aWRdUvBD|=TIY;*}a+JD>k~Z1WJ;2^uQt6T0ij;S*rT?V2B07LW?=9#8&CWuV$mzu7+}%_cghi{} zB*os=$a|gdU+`2j4;llmkg_q7RQr7UKgnlu&0@h>-dohF7hWJE3eKBDJpJD30STfT$8?5n!x)PfMs1D{MbnLsGzf0p! zWl0X1@9S5~bBR^Y5n(7TQ8yTQjt1Dz8!3g&<;ePtyaUnym%8f9yQKNqkUJy91Ab*3 zHnY8>x{p%mg4)UW&u)dOzEWzCNU`@V{IPByfwFllrH=PhgY{y#PnyT~jMAWGJ}?Le z(#>{eA2EkUxDgSX0UU*k^2%L<4lAs0Mo6 zqdg(`ZnRovp*N!gItfYjsUGE>+L0SN-yidt37B7heq;>BJMa-S)%l~iC|RAOW3F|& zEwzuZW1Ubcisaa((-{rz(x{p-Ky_a-5vY@W0$ zoWB`GC|WVKL4J87%Q%QX29FL`wl+qTPFLcr-e{VUO{CYwkL+)p3y}7meYVOD*)rn1 z{}IHzwKZWXSFBQ-=o9Weyu4dFH!*#_rn4H6?$M$>6IC63!~9~3r>ok|tx~A{y*J#! z2S|$N)&7!iipI(6tw7v%PK0)9P_qf_{S>%4BC5A#WI%{uE%_g$POW|vhGjSYlN2tI ze^f7DLL(I)2alm)Og%r5KvVnCU%4*G)=(px4GJ{nX@x%!M4=@E3M8Ca<-dnvqaoED zg|M0HK@_l(=g@9sS&G!b@t8;+>E=}u&Up|o15Fyd6u8>I9Nw9~F)q)5FMpLHPm4fi zj@O=Mqzwj9P$7@Y3~YPAUg-|ra;`sSdi_=9T_Hfq%fbd43oxMk%Mcpv;kkXe91?u(^2+Jg z#WESM0`CPW9miDoz}f8Ht#eQXW;kAye>M)SCe2L7NabB!Hw$yK&eCq>_H4OPx_yVVu~Ej_BdAeZ z5$sU2Ajx@EmX|>|WakJO%Bj4Dy71i|KkQU#-G>*~EuW!9v+OXWxd0>8>)9PeM4scl z9u5`Y{KFrNUw6#ipHiXR^p23?&5riT10SxaY2_9|nisyci#2eLn0u9q)_G$27g)$p zfsO1HG<4H$dbIg_r>pl!xFk&M)mSf7z(hcTi^fS*B4Eu=Mc6M6qcNqa`wFyO3$c>!rrHnn53b$mcf1p1P6 zj~;F*Z+82>T7&CD3N_cRDWQJ5&G^*!qi*J?D1_0gb88%i2=E$LpcRQi=|o(iGszwO z|892yvqYb%ZGKrG`nht^YuZJ+1Hfoq5Up=*AL8KBgID6(SbQ#p9hSMK<&qKuW4G_1(BsC~!}J ziw2>42#FKo67_$khcVk*pdA=sy_`}-G`9I>66hxpZ}cbFWb>40Y=u(1qeL?&<2LPZ z!>3p-8~zBRn=G`#k9`={Et;V36D3t0+)(Q+n7{lXTpP94-vw3yA@#uRNsi#bvRm!= zFm216&oSk!xE|b$34<@ii1ol$x#{E#5#FSX%&SnuP`9TJ%~^)5wfPcevA0#eE`Mkc zYenY#tsTD1ahl*MbC-S#pQbpTmvg_BC%oK_ z%pu;Rb$xyu*#fhM^%)84?PAHMFw6#@sQ zhYptC##g}H;Ql`;j8$9E!rr?Bhum>BhRa*(yrNuubEeP;Q8xDX8(xz3J0ejbYpEQB z4I4v^El&#LvIW?AYECQKWC_sFn%rIP&h3#w@zRQ3K%j5oMvvAB06i42=&^0ymZV#p z2$d|^@~al`0EB?FZN^DbT{y0iJJjgw3V3kd=Ytj{^* zh5P!zIRzX0*D|W4=Oe9rLYb+bI`c9rtiMFlQo5Z{sHaiYnbIz~%Wgj%)=iwETRof6 zg~HU-IoFwOORx$4|EFqi)i7(yUDCQTVs<56N8Md$l208C;BP>VFkURFk$r27Yng*q z%q6Keuv)oF5^C{uyw!;x8)?zWc=Onn=wxmX9YQiGb*y9J zh*7R&bM7-!*)hU@d&1W>6La5V^$06?JxWAJbXMi2r}1ycLlSXe4LrXO&J z#CvLs^JY&yEWbE5wIjm_`iN6sp)PRXeN=@4QQcfJ;V@hvL86ur1=}WDX^SbsID)z&d}1Ulxd{&J zrJnD65DX2E^0wk5hhBmg{JIsxtl3Q713>b# z>yM~IYq-YTl=cF?LHtaDDt~NI21%g0D*C-LQn_$#teXwL8#woJX78ph>reWB^hx_w zqo0d4wmf|{UyI6^wkrTdWqCfCp+_<4YlV*A$FI@d)iXb;t3lCX@XFifm@WPoERI zJb-tw)1-U(A<)N3R~>xdz=%(eLo)2#T$<~|24+Q3V?`V}qnI-{x`9~5Qf6NQu_ys? z%nk-OowG(KyDG?q_C+cizt+X9M^n=9e6u`$24LWnGdrA)YVguC&Y116-`gUT_SytF zlbJKf5gVe@N5A9_2!~!%#H$^*$a^rI98*k%`)-LTeSLe<1}4P%$#6MB-@}VJC`+bx zuyB>{wN+P&9#x$??Zs(jK>M)F$0!cG9rFhnS17 z7Z4qty+7usv3qe!2JWTUx z3!#&{nj{1YheT`wX%P?)I$NUzI&3PU@w){Gx2SHyp2%36Zs=;yxGn*UCd44g}muU`-@8ZOjip->_3@n7$uU~9l$obFURzGUlX_C1g{WM;eBE3HXFdg z_9g*pG;qujjal)pbAX-W$hf=Tz!9jdGm5Y^?w!-$CaA*jFRBrekl z*bftVk6?qzFpit1C${wNss-cntMYzJXtawGDj6LhUd9>-q-K5Ig8~*I%UFe_%JJZE#JN(`UQnwm9w!SfewrSG z6#vA7rsI^V{)fWPtqhnoh2}bLZvt=b-xL2Py&H#rkq!c!(2T#Wpx^~3L(gX8lU|5!nwRIer&bYt#5^M`2d89 zljD2WLQk7B&9Af`7RT*cLT;IlHUQb8Ofe~30E04pD(?N$b7>Gao6nUJJ)MU?f3j00 z&_H^xs%cb_pvp&wgx^}}%My#Er2_8&C3i~WBL`*ohc^r;&P4yF2nc4>8#T&@|Cbwy zQRWXQ=+H6&a37Ntj?I4kS4M7lzTGIl6ngR&=4y*Zw;@ibdCpZ_DFEA|+IR3NiXa|_B5Tu+N1>nWabsRsswpr%$cy|P>E zv<3(b-?Ij97O2CmkpOZnLt1zZ&sB!Vy zpSnigkND8U2}MU4!t*0c51jNhQnbcWno0riNY$_dQ7XBr(q;M+rM{;L`_x|f>(X3m zCT|b(gVi_B*YeSyZZJ^fhEa}$R;_is^?w~UU0(CCcAgX0UlMwfIEPDm8j9Y7!$~jf zyz~>1Op~A0Z%Ci4EoPYI?ZI(+!k$XnOQHLny*V98lib`eoVO`us|hVrlBBvfXmIH{ zLI7^VKsq2_i@QI$#cDA;7b$cB;f-RV+D&M6Kg5`s3V=+c4a-succM#_(Xu{raC@QE zvL{jkCnm8dCeD}wwJT!}jGGb&AAy7D`*yHh*d=gz{2rTQXbI5sM#OPLhPmCW_t{zE z)l#pr`MGfUu70n7Ud54+Vs8=2Tb}MSiC%~T#O=yg^|SoGJ7&v-vb81I3-EWg= zh0WQGBBXNKN}k=_;S;zpX;x>?XRRK-SUPZ6cIS7>c7WonW^da$>-tJJB?#XUj(# zK5&=-dob3x9Akxue|+6X`qTM>90Djd!&^l1rN4~m8_pK9{)Ob%D0a)w{U@E(1+)Bb zqx^I19>UOAZ7(||jIu@D(aSiW&%G70ou$;-s~s!Mcp;T%aax$EJw!Ge{m*cqR>-N( zp_F^+X7{ZTz;WCG&%BN;mkC|e;?sd9pE*@+jip^Lws8?ZLi@)rpdok4w8$S!fpY(z zk@*v=ChU!ZPwS;nmsdv*C6N7q)EDHi?r?@{O#&Bl+g)kxKqLZ9Q>8SO?>4tdsUEaM6*l={t zSfOJ8J}Qv15SG&t4zqdwM7sKJ)YoU*Gav}Qc8io^Y$rDNyzIlUj(YyEGg!KSg;s3c zDZKW632HWkrFY#2g{xiKzda?1N*)X<)Rek}f`YG$5c2^z`#Si!y1p;daIVXEk$Nh9 zI41&aMCa=+)E1w$XqKwA>0}-Mol0tY?XM7^{>IgU{0FH|7ZN&pDG0)5%FDPO_Qnzr zp)qX37I3D=;-XLwxbf=s5zjlxVXffo8rI+}Vu9+z9|bHRE+HK|j<2>tv+Ehag>Af& z3hps-7(^3p*1n=DZ!)FAg{k|Xk0mdp`eQ1`&Oy>kE%|VUv=kkz%bn&0yrz)GeTg6& z_cysSK(gnQ_dFj`GzZ4aD2INf&|gke*hE|k?rEjJR3bU#)-D*igx|0I1d$Ch$47l# z+k_3#=ULchD#k;kiJ7dY{Uee1($i~kJ!SE4@+fB2Ic}Cjj&7z!PaZiq+_<1aWn$i~ z0|y!tge~`ID_*d?eCm{j5iHzK^f66mg9J|mWW*fiu9J<-CpO9Z#vH#c`l&4bDbiW! zPwEwcJWh8*235wJlAhrXE)hGbq}!^&n8s6DS1SG07$O+w&lKK(_L%(}o=0Fb=J8=I z>1s3XLdEbkPcqF$q(}!j%flGxm&@Q%Zn)g@H{&II{7uNuQ!wKJpvJE?yNm}J%}LOI zXb~zPg#SJx23@8mkg1!RJ)5$PleK!!zm?%R^ir=i`b#qOee5-n*cTKX;k|wryn=`t##! z4HbZK9vQv2_A(u?1##z>A~?QU1JX|s1975yD1K44`pYe8opn7`&x4$Y|Li~lPtE=7 z$2Bq2$aP2#5Cf8^OBiec0e6#)k5~Rkeo1>+8sz*$Wc^Rybj37*$F-u`(EqBK|E?E2VvAXDVGGtfB2TzRJ`qS!0# z7u~-}-cS^2Pw^7hi*=OiB!KbmE_tB!t2MVV5NhqwUYO1NYnej?`P6!?mPt^p%EQnq zITCbWB3&tV@e_a?y!++EIgIckj^8+S&Eh2v3%rWEl3G&!)paUzylfiYrYQTnEYQo? z!A0PeTO&dnFt_s@%e$W|5CpIr_v>U?j;d{1?NiHwl7Bu$02MSb+$Ps`szBggGNb~C zJO}93LH`D~rW+!``&BGwveioC!rmgVpW|A4_I55A-=KL7m0l|&0t;+mYZ*#IVPo`W*t)U2MrJm%J+5Ju z1-TE&#d~%5jrqNvp9lK6SQ?A#s~sGmqa8k+#sp|RdOxs!pv?uPX!EnWyT3L98`wtz zDJnzqc+!$DworuEQp{3TN{aZ7lX1g9U&@6n17fnV`h%bM#9zqb52{&)0_jlX2dtE( z%2zO9D-r%B5CfZ;e9~0j$s@q}3pby`OHzQ4<(PBP#Qa_?gfwtK|n;vqXRW<3G`%v!ZI#xKjSWxldOPol#}ZXkyQ}YatwyfNaaYGhclP)|=!^T8#a9gFCbP4yQo3M!SEDAm zL|Kt5on0%zKkX%te0Bj$S@LeZLf17B9HV(anY_*X;P|ub!&M9G-kM%)spE)Y6vS)l-lmY5F-6jCTgVB<$*T8~SELsf3n)QRv{D-uf2m z7VhcxE5XD}nXfu`ulB(yu#*AL973v75G3(ktXDm$$Ag=;{E?vx{fjgDECU4vLcQX= zS^!giq5J^`$&t})Q47fqwZoqj>o{pzZyZTz40K0%#koTgPYyn&%%%n@F>ycgw_A@! zG;IcszE0f{JRJc-G4)j&Q2(~nKFaqeN;ezY7gERQoIgdl2R!T;nuTDP@i7=y2A&%^ z{W|hRPT}Q*zA;PB+;~A^roX?3^8Aj{B=X?HU7;nxqm-L-R+dKTdGif4P7%k6Hr>4h zS>R^b|JtG_9rLk+O&&=#fMt5bsHqm>bp#mJqc2}5|9nlMw{XAWJtwDl9M5O>u7{3Y zAc!=F+2WOazoQ|Ch=M}?^wt8e4)g0J2u;|NGl+^qI~aCgt35c1om9WJ5P9O=MBD@A z8IN3h;X+`nV7%*o#IoO!2%-R9B<$1Gb0`;SOC1>)iMf#X`Il%xaABEfDj}N$^=?J% zbc#=vd`1O{wFq0XN zj`2Yq8U>NwMFr<+A+;6MtWTKz@-VmP4q6`xNJ2x{iY5WlOs9P+oTh#&-qnxTnwH@Q z_x(U!t8cdT1+u=}wgl`u_3T4pA@qgyfH0iCpZ8=b>=T@4C|ztuEg`EbYBlTx5O$BM z6ulLSO&?@Wn|bv!!!4AMIO5ciRT=R!qrNlBY?d|H|LYE{Oa#X4zuS6Th<+}+m4-g|lxhxyg-b~ti?qJn+>dBu$5U(L?=aE|GRLz{tP zigs$R^b#eV3#($DqX^4RZ{a$<4K(~nnVMEk^|Uipnph0PwDSEl6L zxC2x(I(-LY$npyK-T1eO{J?7#8k@C0_~6vV3qMqDX3wQQ5=qX|ZkmylbNcJI0jZft zDf7D%A|vijL>1~H+(?ZFxzt}{j}@8C-cMJ4{LY!Q`haYi;A_7+`_-Hr@Ou#DfIRlNw%Te-`{I)V9vS38qUvV#h!`sG2P( zBks94l%oFhtPN}**XJnt-kKT>5 z&}fB>e-m@QBPvqhQUfa|abB0t=`ZCa%D}44@^1u8N7-nAs^;`}AAmznj+h@aMb2N) z<5iX8ll#by30vl>dmTw#lf%&KMP*>#EtklG^wQPtGtiu$jc3QuDAJDPZcm~%F=Z5e z72GbFT(GM>?(4X|7xw)QH6?B{SiRp|v@r1qUqQXg5nPEO-(irrS+hxZ`4Gm%!427Q z#dJ8H#xvJM@Zonf8i*u<=+@?CN$ttp>pJ9qqaClQiFzdqQ{X^oc@xeS$sLa0=ckEB zgGKlr$j*qn%1C46zu%nTw=W}MWDFRz68T;MNBr*>$2?@-l2O~5i@AbQHs2b8`g91{ z+elUeZ-NzqSoO{9sWwubDX*YIYLm4vo@KDLHsNv9Z^{SBmJ+5|hyG&Za&V|vTHT#l zUv5z}>gY3erH5aUe$Sv<)AYP3Z#rL56M1s^_>VD1Xq|zMvaxh}VL<_BVE!P2ZpB9! zq_3I>hJ`i=K%A?7MueERfdvpi)XtVqjQTT3fOMp!fq|t2Cw|%J8)NTSf@;T5UgSJ~ zZI^s$G8V?SiIt0Q##6>JD^z*JAE8}M?1iBg=9BBJ$%#zqcVaW3Pm_Gj5_?rsElu-M zLHPUik}e12v02AoA&M8kX_(k`xnU{IhPue*9#RVd)grCqXw3rghtDoFSL2m&D+m)g zE<;B9g-Jh!g+9&k;Nj@L6NqL&Z`m|Fp7X>!CIC3<0lk694MjqD4}}Wv7^!)s;y-3v z>JcMQ54M!7R<1WJd^u7xnuGep!JVaNzd+(9A5xJpycmpYNhD1X+DL7=0 zK}M&esN6I+zQSk{c87)S=^P>&>;qC(I%a7j`48D-x6@aETxPqI^xS>J!Shv9d+$GK z4le1K&Osmab)%3+7+2b2Lt(S1_hLE?S0fFnpx2ioxP7~_2Jb78p~dbXHD06?`|CM{ z(k1(fYi=o>iF^aLB_!!~%&v*;$D|&*#pe>CxM2(UE$SuazaQ$s(V%qOh;T^+UWbtu zE%5pCqNFRu9q0Q>DU;$7#0LTIG;fqO7;SxJHP!P?k{D7W^M6*NfQWVRh5YGW=Su;Q zX(shItr`k1G7VR7-%Q%0x|@a`<_;t&x{dU@ujYkGru~m96tJrlU;^tW^Vc1y)WV?@ zazs8yb)o{8q>AuOf_ews`?u!5ZiVJm2sQ45M-I@Fm{YQpiwq^fA@`yMbeeXILHPA0 zxmN^oJR-bL9b80^C{bpSepqzpZYU$$4{QALH01Ti^_UB6B{~bfY@0sm7XHj->}3zuT}+aw#-_;m z5R8!EBUb;mLP2+B1+!nybC*&uZ4jEK8z`WIyPbK_&@*X#I`r}B+6P`$Y}imVw`z`fmY zaamV-!2VTyp!5DXHfqIXaXv6EF$D=~qNxw*uG@H6Z|}QC&q{?E2~XR`Po>FSj&(-Hm2DiQk|Z1iBdd zE8oy4s&vqTRw`xQjyqpW<@>HE1X#v&I!il2&i^&eGrfwL@XjfC#?@XAdGHqo+3p#{4l-fSD(qn0l!|5NlJtvwO8sQS@<^?;9CI2>KuroU? zO+guD^uN(T6|5-x--X9YRn&05TMtBG>H#(0B6Hh%fpg}aWT0!@YS}^#j)u$sAD?3-V<0jQpTuCnf4%}3{1+(c`ZE;q^ZSLuQ>WjkI8uo~Q zrr@k)hkCqHMz*niY7_JZysK8GuIrTW$b>dn1#y7O1A_y_tOfh7lieC{9J^_$Bu9pY}^gwY8%c3%xI?D5^vwW$~ zcP+NvoP%L$UJ&@X2qw(JP-TQ&VhGwjKpjm4@U{f8^~%qgqZqrMQhjB|mDi9njyw^v zW54^dR96D~@1R9GYIEd-2n1L9bs1urEuD(Azl4DE{lQk&;j8L|Rg?4WTC~PF@?o;? zH@qN_fBeSacMy?AK?X5Fc_icANUzjZioe42jGRoj*c^+QM2QeIkJ@6@#%K#;aLyZD zH6iaqyTe|K`*b+H{u_*Yb0{3%&1~tr4`05>r&hDp!|u#Pi5__;2!=;xzwL)oC(DsZ zu|_Y{JGsK_@Gnx{K3TbcjBdCvdi8#MAibZ&kf8r;Pu@5|G*~!%ei@5!wYFGvtJT;8 zCB26#E8L#{5ELr~-bRya_W6)aaZs`rlZP{T+7v2a(!IZY5k(WY=4$6n#gW97diV#nysD@rKn-woA9*n zZGQ@W?SF84sadVoR0gKYyichi;YqJ9R7iiQLaeo+gT?J_i{^D4oX_cBtN`#8>%21~2uJawDfUZa{pnhF^Uu;A5f`Wg0=oJK0Nqz! zQW#=4njL=!66*R#fxq_SZO04u3ZSWC4YkqCQuJS)Q5vwYkxW0`Ltf>4H)$5J)MZ+2tvdx_z*iWrsYvh=`%B&TpbU(s052 zR?S%59KKcV@rR+!O9AVprWAgWCj&N$+BYxuhmu#%b97RJ(Q)L&2_?M*4o*Km)!1iC zX_)m|OOO~bB`_K%x)c>0n`Ha1Zb@A|6{2_YQc3Ece?m60rH5bP?YEr6Sc)LlVp3t- zBJrM9C-P^}$7k%%rqmO-%)y>Ylt6)qtF=Vrta+BzT(+#M!h~S^+U+^PIJn*0EKsnM zNrQm14}7F`e)!vNw@v%~om}Fs;ZLMn>)&MyODePz&O<|YZd>HOR zXPMXEPa4=DzY9*xi3+OTWFtP924nmnv_d6Gu&nuU997{rKuBU!%Kspil~Ol_Ca`vu zevmFwGCa-4D_;KuYhMzZMmK=>+Y>#a75e=`b+i@hJ#ENB96Wm!fYaQv?}D#))8 z0@)1-8=!?}JNGcw8NH8}A(PqoQcE#MQ#(;JC780jCY#LQIb`}oivNI$g-P(|sF5V`)t(UoH0I6?N_`*a9#iKG@1rU0>}qv=K!Kt)aA? zH+(nuy662__Mg3*=XzN8=HVH1De1r*)e(jUX|yTd4+5muw0)qmg7)l|s||}$Vi#+i z)S0J}A#EtGsrwAe*##KUI42A}UYJrYfp2y!)sGVZMgx=3yG|9o7wIY?}TmOW?&JLSzv9 zLXneC37GfmHm;KUNNAvl9rp+hSsfeDLS2Ia1Y$tT=^Ax*0yI9UWBQMLO{rDCCZZdrgFH zrN$6wzmLz&@OfTG8DttG{x%jbM@cJ1h{j-}Cf!Kq!Ruy7Xp31>&1&5rdey2F*fRik zd0km#g2%qysa?qS_fJmIU1tsnj=dozdy9|yAc;ATGoQYw-&Vg(;g z#ajvzVy0xUYo%ScNzbDPe0f<8yC87KqSx%Sy+d`(e((k-A4Qpw~TIu|yo z4lQ9hUaf_1hp zUnopEri7Yy`CA(!sdMK|lmo2wcxMMXrYA&Q7;2dOJ3?S?2b7a+ zA^Zmlgqh}Zjha(Abbz&gZ(C!$w{k`;=^bm7xHRkDkmvk6KP%O;)W-c(Q!l2A{I1G; z7Q9;pA=m!qyutOhe$#vDl}5j1@%P=IH%@420A}2|Su2Nh=$^!Izl-&UoW zW_;T7>kY^CGpLWAk6lOCtbCluvNwv|UVj6Pch4%N0vG@q@ABk9&akRp??}=CfU2!E zHce4{^%-Zl%aA*a_W;i+WQk~AL}VAZzQPwsm;Dk6cx)zxAd_(+v9r-;$A^x~W;iYo z#g#2o%woE2Ow~r-yktJIYbo^b%N%Lx1R2Ody{&u0*lg20Wg>O6w(~F_4q;o9npx{$ zhHCRQ3C}q52WBQ?onOT*l$X_(CfdB}o0Gz>^X@s*7x&bjoGQF}lFjI^9z@MHjkMP# z6U%JiZ8;PA@`S(k!1~2_>ulW{o834KF~JL^w+?S;x9oH-B@XGnKlG)lk}kvf&(lIR z3yjcCL?UtGP`r~?R|snMq7sKkpo-U%iRPuhu~M8pE|ao=jFd^M5$Y(Cy(^zg+njFC zYV#%yBpHUsMIH^o3B*hYCpW)jpEpFYEP_a~wGU z^+*H^hCUYbI-8k*SD!fHmIO-7QwdJM6G!{dBWTZZ3Qtq-Az}IM9tWxOncBL1-suNnL27^k7lNHd^)9-h0_~lf~ z92ad=KqMo*IN=9AzSG%hAVPiJzRa#Q(Ts|Ate5tb*BTk#Ll`E}VViD!*`_@{jho1%d_5-Q&Y148?kqTX=M;Ho|LU^1HfoMCH%PH-;B5&B zcIGHNRSPdl`|Jav7qlWV1NH^aBNhg_jWPZ?4G*X76udSgBi7XAhQAg8_kQ`|uB1cx z*)-$C7rG5uk?&*m?+Ps_GyDc4Q|VEBF6 zB)*_>cOFr5pLZr@vRa%YAM=0T^V)9GF^f0C(O{i`_Slyu%4DFZD6t_QUS;R1ZKu$Y{RhnFK zlE(bC5&K-x=~T!HSU?eFO-8W&YedztLcmaz=^LF*bdE@z4@CF%#QQ1(-MM={% z;brH}U!d4g%K5L{_*mB~)@F3C_d8ro)A|>ALz|5UGXMqI_45UYW(8g-R-V`JVi}y- z6akZky(NZ;K41pFhy0F<0v5cKB`-vfJp>{w3||Lfb&3qJ=NSAjwH<_Os-Qrpi>*B` z@)A=kc2NZTSWu@gV)Ex=lD>tmT$h_?6tu} zc)u~I$RuY{$83izs5keAqohgv(h2HL3~`4cin>?5*h|z&6~;WmIBa-JD)9li*N34= zV?m~69!X3N4{*ZXd(yP&lKC?dRGvIJ5@aYcyF>9& z-;K<#-kgp5A3l>RP%IQ-U%56+ZI867$+cmcZq)a!Ll!ZMilX5;K(L&-wLI=*{e;OD z9(0+6d5JXJz9nsev%?ty8AQ=Tp|$K#l?{Z@%3=BO+>~$5a75~^kAs^BW0zKAuS)iX zZJO3Q;V|^iorRmrj_mag!}s9H=J3UP2WmHABn)|K6pPM!ylk0dDUUZU`d@6#8p`I1 z6lV$-yqJ%u8F7iSMiXczR<6}Elw0Q6!8`O&?OxNo?!X>CzvK=%Be<%JkFEDkE1ZuE z2P`uk3LwTsyoM=*iZ;xfCI?H)v4b;)N~55@ZAsyOcoBk~@y-)8V%PMSrmF*{lHF`O zI(9?9L|2=j30#?veJePNTUEKG1n{cM9!;8ZnEfdhiTIZ6sE&N;StfnaLuHh_G4^YZ}KdxoQs&cxeIn3a0)(gk?Q@I>%7i#fW){rn|Kt!o* znNn)PaHcHo4-g5@*ng*cmlZ&a3%C|*xXmwp5p#4^Cz9=+u@ABUbKfL3|EPc}!(|N! z`Z8%xG3aDxoHQglxmfZ^;3L{s=sOS2lTyH}ObjUSPNYL@MLfL@!&Wubj&)>#o1D(U zfyZ2Bz63g}_=#GC#WB_C+w@%nB7MAO27s2xFb>v?t~$bvipL0UA6gD)e-h^}>uj9+ z!{&KJ09i^k=!}Uib*^2_fh_`yOqA1YA;}W;;NNa!mB4#aX=z)sB4y8BFp!k;a>TO$ zKCz<7hH>Px5o~(MB3YC>pyU!daT+Hruz9dX8H%@QVeMe_@1l?R&);|&l1!JKvF3L_ ze@QF=ptXKg6y@qlTeXb_?2x)SymC`pXr825=4Cm}YiLGZ)t{*VRxz^y^)xh%U8;&* z66D}xy=mR>?lr8DA?vlM9QpDXcV!GI;$lPLv)!6k0*2mi23nEeJ^+l(7j6e$8*E~w zJ1uUExGcSVx5n@TrOr_pE1$OQK*J7^MV%r?_94avZQ>dhZ)W0cv+ zQS-O@=cG9@x}$Ppiab#v2O<``KT zWRgXenJw4GWGGeTYclk*ZcGSAi3y|+8J8yc^3_?tN!HLI$iweF8%Zy-aXWFsiDYKsC;;t<5^AQtdTd63Ij*DUjqKcEAzP>o6_G zqS*f0)IsB2mWe;rpW1a`p7Rb9X~bcL&XpG~Y2JrUTnmd*=1(cIBUS^bQSzdW*5c1b z7d-QZyavgqyl&6M!~gq#j~tfDfHxP3DmYpftUhV1+>|V@z|!o6I~H_!x|W9?-Rdvn z&V4!%<(ADkr*{=B1>A+}ERaRn8dHe-RaW zPA5fgy9+jeE3O6#hL+e2o~ zvdNppLE_R*>6F?03uuRq*2j@;LxHFpu=d+CbNt>9ZNTnznCk@5$0lyq3&-CSgwb3MZJi|4ko(717J zBw!5vNhC+goAuU=lZ@5S5^&3|j@(e_F)Sv)z9iy_*%A`jn8F9b{)DWEdbDD;L53yY z94k^TDSGRiyu$l4eK)uF6ds%`PWFK*YoP6#X%o=#lUj&1k#LDU9c}4<8Gjy$0i5nd zr*`D(ZfCY>B|pU^0Gd6;(Oujb-mRC_XdxK!R(%7)yvBc{oXmk1sS z=dmqvI|Ea>AtEWy(kZ%LkLo_`U^xc~Be@wfXaLI1pHpevJ4ri@X&b5~Xdn3OU_&NV zVc`KGZdzvk`U(qx#YSGOUTN(l(zIkk%PuK8`nep$i$D{+C?uc~ z$JtoB1HmGEwZFDtfPyLc6c(*-j}1pCKO++x(1JmqIg)l?=gz!$LkBiVvsK0W8y6t5BKr-tH{Q&*bu$+ z{#Nh$ySUV?wG3EmWPd^Nj9i>eUGx?wF?`yX1tCXsB*^5~I_RqGwPlxW*w?=(>RRK>Z*_p2-ONBlmqQFi6=s>gl<#>4yx>I02K$a!|#0JAQqSs{o0`_-m2 zxh$uh`0dz-HKDFxuwT0_teminBBp)Gqz=Q6WmI9pS0NeEIGll1{}RBh=Bnty!s2Bw zO*SmOA*Z^CRDch^MH~=z>^)~Og zY6|gjQ}T9{{nXP9=8dM3$nj(#jE?r7@Fpxd3!S^ug1m2_j0`K7gz4u)uyqlC zzznUYAsYr~U@$E!os5bo;h}>oUp@0@BRi5l;4GF~lLw&~5mCJ>g60M~Sd^&?65kH%STjz7?GyiUrvDW}jWx!#l2f_+h1i0-&9- z<-c=`@qL$6<_V z#}cepY+?R_J2Oegbc2z%oM6QMzK#lyKFfglV*U1PJhXH09>SRP9ep$z>Xm;oN!M(U zQ;^b4;F+ag#!rDvCLRIF3_QKQYL7BKR^HGwr0+7O_&)#~v!a3{g$2bLdbLiv9DkdR zx=Xvz+9QW-&?KQtmg`6E1`ncB@Q)G%p9G(v@v;3I@G0+noKLam72nWaR$R_1qvW%l z+5&?XmHhm8#%*z>rc$q*s+>;{)n(>;#pg zr{b|_t$%cP3GZaa7H>)itZ(@Vfc`cuSs`#+Rv&W6CN!}Q=M|MfVj`vcIKHz{$Xh@S ze@q|}Ai0~tW=SV7|7ei}*0UK*4^srp&w)Q+_`|msE1_wzvCS1&Fa`Y-_U8pX1r?}M zsJ=LerB?;YcyJE4UyFJ19gDaRv~A+V3LguoP8d3z(aWkMkia)Z)Sb}a6J>uUGoGV_ zq_iSiT2KL)VxVYnynDm)i1=+z2Y3qR`NfuLir?FXmM6o$Z}@{G(J(mTh{*`$`MFAr z3F!L9aW<(dM-Zvs08mfA-&4Z*fT50NY%l9Y%N)%=-%u177);MVa4PcN7rb3i2NA|# zkQ6sPtY%C*q0Z_IP7z%tLG0-*b8SR%*On11cKo7!Lchs-Vr}K6X8poqZH2Hx8JsSq zn#3V^F|!5DYuds1NW#!(&PF-asx+vTP zx#dS*Fvy<7dPG&T>jh_R+lkF5W<6AW7b&M-;sW zc#fj}B%hb3W=)zhP}BZ@{LdZt;33R=avf(kl)$(7+Z%EVvF`fxE=2f;s&D0am?8=A=GFc_@pm!dT) zsRa^HKu7h)YX?O;9qX7rv)!S3gq7=Fx2g*mh$Yjt5MX!t!q<%|FY;#`cE&(B&zI7y zHB50L0n81)V9>Ara!K{WoOV0j6T+OL2SBBLsUbSg)HDnc=*Jc$qmqexHf(V;zV?1Q|;_Url zkd>Ual?JfaU?tN9N#7$GMl}ChHM8G%%6|lTjSLOkn7URGWOol8z(0l>y$@8$rmHH` zTp|HIRt3r#XyEvEP{FsB%qD+VzCH=rkjExFC8q@o?-eLJ%IJX?2e-C4i$m9N$Fn+! z$eJAr+#V(wgT~&5zzg4VhhJRxB+xH|W?9-iKPM^oP%>m3ZRQ44;gZNdzskSe-#|m~ zMUal%xc5_MVcMR^{x#dxH1{d;4s3=4c#aYiQLiM}gAuPK!|mVWYyVBqcPc`>`N^oZ zFZm>+vO-u#!7*^WI<*jCrCdoAIQFK6iC&)R z@Gb^%uR8o4Ibc&NE5~j4eP<+?A3MVHa0F5RAE$JS5*6@P6r`t+I{b44OAPK=aHHO5 z9)m)S`!lnqA<}7h4IF#O%`r7AzW{0Q z8zmg@*&waOlrkM6?<7+z?Rn>x;Rl=wrC@|q0;O%Qj9uCabX^}Sd({q$m~@r^LK2FO zTBuDM%1U9BQ`F3Y%Dlanv#3>_^07;w>taKt!0YmxhcRm{YMUymWq&75Aibm<6vJ3a zhKlr(Z+)_l{>@vkN06k=%^M#(5zC(gF#O;5@&gCZOR%oMu*m&#nVpmnY*{+i)Xakb z5OEL9#b^$RFdL(@XgPVFFguvB#YiHrV1XheFG>>ngS*6Ssn#d4OHZbKJStkN)64LHFJf zTjS%K%FKN^_&pL3ZZCK=?JDrG3rHkML?DX-TFZ(g+mL;WMqDRYf?b~p+aWtqL~gEe z^)mP7Ut)vaOM-1!wR{a$puc4ib1ENBcb9GaU>+su4Zpn@wJbzjhm6RMdql>`3oK+PW;0ArvpW6lw*r|Px_>ftxD_7|zqvis~7 zCk7a0=k&J#N97G=7i&pS3nqwH|H~gov?eX~RK-OqiK2NSe{nwzZ0*}dvlYI#A#Z#; zwBksUEi-%Ng0l;6N5qM%@dt;^i{Kww+|QV_t5?tm1;S(dg7BSO#OeEG#JPBK$~6t; zaUE*f`b#Heeu9*NNX5e&u}~#+@N8#;T7AHWb6==o|Na=ne=%O{o|k^8M(Q7jr=^m*-k>{c+p=S%|CY3a^WJ z#^on5%Kk#`6WhxJEmggUt`5{pqdb6EZvrosXLuSOxD0V_D?rc_Ur&-vjX@fzvtoRR zM>VdO+3OK){97mN#&64*WIM@T=VMK>-ru_3#|+n&5Eqn@P#$UDiZ4mosLKHyPL=Hb#^9FQ~2`S!~cKmQQ`Iz?!_ zachRbT|v*;R!yZRAIe}?QY4voW&~59G(k<$Xj1<}N^DT~jp2lax2bmlD z1U?HE-kpMira@I8z6EyBZ#bDxolI7D8@v))!JY2qZ3I0>nb#UWs4^zUsCM?@p(O5n z&}!1o@miXI7iJk-gc-c~el}J|uXbTg{u+=4CWI||Ms=77@ZI1~p}DGk)svv)a*o^z zj!mCZHZX0d(m_V}4qrRk_L;H((2_Ih2Z_z1b1l;0E15?J8gj=BO3RO28T3m@O5v&HPB;QO6UEeU4Yl+hkPAV8)t^RZffLzUhoQj!m~#dd&`1W5EHlCtv7ovdo&2oNEY`vjHw*2W_|2{3$hZCHzQ{~{2Om%_=F6)@1 zc_U9^;_6!_r*x=Jv6B5bjD<4wwiF0*Sz1YlKDNin{*w3U_01P>PNdcF-X?*=2N6U%C3&@BcuHRATuV_`Q2b zUv9IzQL>?sgf9dxc=a_^Za0hOQ}$Y=foa?i@ONM@0GYJYzd^w!?<8EC)i6r< zHT3vBti|k-M`(&omH44oU+*qisTi#HlB6cp6ELJcMS~ZxftQg&^#d00=io#p$yETNHMT44vnSfd24y}BF21G(HiJs z=%2CAh~e|#z1W`%YQ1AW4P9%cq!e0zmVI1asaX;qERJEEp=(?vo#UexVEhr>pV- zluoAX`rPcQbMvDyj4F`zZL3Hvj>|E{HZ2SX2%!pq@lqnFXN}@&t7voJ9K=}IQO{pe zqCcUl(fS4W5>Yvi{@H0r>leNEhD9a}vvZN94x6I^rd#+?xX<1PK=33A}u0y7&vcrvPT<70)A#Ycv< z$w3Ri$!%`R{maZq8O2CG6w%daFZ`k1>+LJz=^Cy?;oKDU#!^+Lt~LdzJD|H|3P``* z#)K8^A8Bgx^q>(Tj>x(?6yHpME10pb#dvZ}ogLdlx5A5ildmWfd>oLy@cHbRG<9pi zL>b^ND^;0!@CZtKvYzDP5Ja>+U`naO&QbpM()n(0D>XMc+i^@+%09&~;=5|}F-l_Oi$UVmT zgt*(p8v-v4n{fbFb}xAszB>#x^gslI!rwW6&!>A5vgMs-QQ0GZ3#kI>DShL*=;%iD zQ*{A>h$G(I=U|6}6q;Z;C%Q`r$&?N8%=fs|FZ-)It#){o!I{4#kWRhJeZ@h**h^@X zo$)efM+(4>r=nCQuEDEq0YUTQ?E0w0J^G0e9yW#&CMZVL#W3eu2jo!eG-(@)nYw=h zZ$Z8uqnisQvmy$`7QL;{gi+BAj@el$W?fBj#93LWX34rWNPeBBd^(T-*cQuci?G#x z3f;9a?kP($@t(f)118+;<*k4f0A5EenJB_JvC<7t^}*k`q;}oTwyWuE!kT6W2GXw( zFoCwpj7Wr=R{?)WbP;6~`Ox4t=rHXX5sAz^J%UkdxJ8KwQVIz#o$<&mT#*nPc2+wH zUjK`Rreqe%xI3Hn*}#c`Z~BF@MG_Cefnh}_R>qze%Z@YMOmCcc1AEwb1DHPc{9Ei@ zIRaTJ;2sGNTeP0zQc4?1HRlBlz>$pi_6+vnPJ0o1z2>3o85nBQ@0V&nWgw*}YE9G} zA)v1=8d(rE2u)BB8k5%npk$i$I#Tn6;Y8%P0TjQTbw{krZ<9)+`eLO1RUYs^%rW8Q zJ5junp)&cGUwSIHw`2r;Z`_7A_DXR01Zn=0Ha!b2yZ5Vfc#D|Y%rx%YpBTg+WcVJv z(J)zWaflw#Hz$Cy>`hCYO5c?fGUDbUY#Z2JXHC^QKfli=&|)?JA*b$*t{rTt1u2u>nWmmNx2~J)w|ynE8`3BwlXfA9r!}pnpT#cOdpf7 z=^bO(<7WI3sAhFjrbt0oc(oQjbkcuGYbwsa=e4Iw5ADm_LOL2IDLDv@V(RMn9Hgt*h2$~OG&81W;zo0O^3z#N=zzG+1Y_YOdj6vn=qg$( z0{40)WOzlgX7IXCbKYOiPIk3(C-Bl2!AcR&Z6*(fN^CX7>p+%j`1>_{ho{p^^7DM3 zGkqiY2>*q7dJ(k$+1;NEb~nV!dy7a%TTHXGoFk_p?k7wd;;mRmci*ny?Wnpv5Y#Qo z?Cwbbg@&C58#{mtUqb{rZrno|P_P2HIU0Fjn6QCe^t&BC)5CV{aa7_=cbA{|$q4#n zqBPdi(*zIe$PHQnPM670uc33x(XEkelDIt{Fn+aKUKwQ@Cj_b=4Lzzsx9MqoDuNOL zmm5Sd3E#L)V#@qFW>q)At|Qj1CWqrXIO>>L?S9+Oy~;AuPfc$e*h(m0;CS>b2W+_* zKy4V*60HhwaMU>wk;n;Y%$e@-6g!B-2c@^C^pu}I!7@bJtf7`Nc5_T)&+HfV+Mkz7 z1=cs{V33>I!@-iL&Kct9c)Y}-9JEV$J|`7BN=tD@Kj!^ zh**ePXjsxhku2X1SrMBGRHJ`c^wIykJ58dvicOyitVFO{%7;dd6AF?tS)wAD?nom5 zr26CNS(sKxEDYQC4!#Hu{9(#S=jIXJ*$^OI$58SHRmraJTg8%fy~5?}k{H#-9K0@8 zaE+WXW*&WG^4tx}NoAUUGtDgojB}sQ07w7%>#l6E7F^uLS?d+J{ljs9PE_NzkWQ~j z8cYh^E%}Z3S2QK$nE*nQ@MIwDYqHUF8b@0?FPGc=P1Z8i?VP2PFF5Mmgahupl_A_9 zcaD`K=c3X_E?5KZJ`R_@QWOgrv<++|@-Ae*q+MMgDS*SQ%dsaw=qOEouW(FO!Q^5kQpHlK2BKoK?i(Gc{>D z8c1$Tr|J2ARseV;?ks+_`a6hc6t9`2DUq!hXO1Ifr}ra( zTlR*X&>+{SrXZlJmv=;urH7N?;`15)?z8f}vFPEP{~v&XiAURxHNM|?WOy;hKY zX^wg=7$M)JA2_k0vFch#0&~&Sm0j@$#m&|$Rgi3n&qOJm4^bTRKREI+isV%W@8c#1 zFB}{ zT#UKsN~dgoN(wR^QSZau+96}An-Qk=9x~gWdew*~KDmQ2#of@@H2N^mq$-qvvApkp7q;!gf`BWko;bJi< zeGe1EXTn_7%c-rm^U--`@})i|McS^BkD#coNF!1c+~eQeXTQ8uZe-y!Q}+Eu5o6h$njTo zrkwXj%Jm8;B-v&QtK;jlxURr8s*l5b{&5rc$Su`jkG z$Z^^jmh~jnulV=n&ymX$ybe}weP&Q!^eTZQ^MF1t*5*bieEmT;vi(TV{%ZE(kn;0Gk}LgYi#heFu@d_`qF8DK%FAUdq#`W~|B%dE zMu|^}TqE)MIBc2&xymz+xzCT7l#Q~mG*3%_CQgh#J8K|=4L`>BCo&l4JlAgK?t53) zMK#)T890C*+Lny)o#ck2nv!-|Z5u$X14tjc#s&98lN%p3|4=q`SJaES_>Mo;0R`Yn zWi_l6xQ2;i;iZ@Qq^-%3%%K$(?3dY`SK z6}3ftvXDti5cWy)e(&`sAjh=vP|$OINE=EsKRiqXX_Cgb{6{xki)qQ*Qbsf@D;ho_ zJ!KFHM#lDi9>?S*=@Xf?>?*77d_$RKVcRK_Wb|CS)$rJ+M;xkxk zfxG>(Zs3jWTFfg-%xwa6^-aO?t4|?{q0u+Nwe=}Fmr#OMFr=ymImYLl&##q}EP0He z?ddo#Ie>fWAiP+sPH@yASWK46((P_-@{)&;Bu_BBv8S*suncjg zu+Y+I^Ts0iYS`u^Y-QW-;Fy-`HQd5`v`0@JM(V+6r|75~ZYrw=sJk1u;Fe6dx!$ep zNN#Ij`42r)R2yy<_n`zNc}X*n@1&CcwBRbzkm_x!s`NQjuvZ~|<(aP*oQBZ?e1N7k z**MITu?z_x}a#BUU?WEhXw%2l{Fc;wggR8+d&Bv?Id_&8VcvB77T!L&APP zqA-ilmZ9L?QMSGr2TwCI(JBJjaZd{jKlq-1?CP+b9xrE|)rsHed_lDi6H0yh{e5}S zxOY6Dk$!Da;OE2hJavqZmX)f*ad?0Gx0@7=r9r~m#@WOBW`s@C$^XNvn0$@t3*jQL4# zm(crI3s{9rhFm2cRSB_rnBeWP4m7*kIKQ9mb@zR!9l1$S`cLAA^y|JA&}k5y70%`; z9rY59mx`5HQ59UO&zQ=9akeG*1L|H-+q=Em0{lHc5$tRtgQaBU8N^u>U%_G~i=;-` zMe|Y(gt5O(osT3v;GK`?ufa`by6k)6aMs3LGuUhvx^=3u5l(92Ln70<3hNh^O8v31 z6`EMP68akECC?`=BURv?Ph>zQ|6^;bzp=E8r@NB*Z4QL!xH?+(Gk?2_=^Dz;tr3m) zw~yDTAqzK{wjHa#O&fEjp(W`LoF!Uf{WAngW$d1-PSbNfy}C@KwdODh3yq&fbJ44O zOd`WNyzX_ep=}riD2n_zd#avHdx~cV`bBl$9qFIh%<KL@%IEiwYN^-FTxZ<+18C>Y5gDosfumKa17u+q_Kkt>9HmlG!{M=Ldm!= z$E__1uVdOuO1~3JbhYer|35TMEQ<()#S;E!rtC0Pzr}ES{)FU;RTm7`U`C`f7YR4_ zL@~BRAhQfF*hbYW+14zFp-K!%lI1XdGD&OuH=2HxyY=({URt4t?|*BDWY*Ca1YbPY+Y{|v54pATI#Q7|bZq&4zF(FoA*SEW)BhS#s9@Gq z$d$8kCx+ZVj65*oiMhW+s2k|N61Q+J`{B^zwY~coI`=ScenM8fddEQ;qh*N7M$IywPc#fcCc1LXK_VnMU)5uK!%=Nr&GtP`nuzUc3wt9DTJF z#}8Wfsh|^(3CAKK{#AMrt&TX3b_cLN*$|q}_oT3GJuXA>TaRY69T=I!d9$&IgKq5S zANj}M`F{ule33p`O1rn zS0TO;M!BH&a>rH2wJ}j3G@^xUsJMXSBN*^R_1hcC#dme0NY2LqfYbZHO}iW1`>Mi?Zn>%; z*4GA7&Rcgm$EDE}tg1cd&kRJ(v*(dW-wm=*nR4xbMhTn|rK!iecd5c!iAZT<+K#b= zA9t?^;_zFrQ!a7*7=lq7^u%8kszUIW8V9hma-THrlk;cc0XRfx&8b zU#%PoKWOiHDdeM?n$v3gJj8w8eHatBj_G`}=8(fbvPdhSZZksT-l~1lqNWYVJW$ahEQ4%kZ zQ|om*`)C!BdtDI{uRgBmfRZH51CAOWymGe4gihV;)Teb?(&uttrrBsPh=5GDdCt7f zoaYQ_j4zEZuxx3@-^}#8@^>o6k2kB~J?YdoQC%|cL-TB1Uib{a90VhQP8pIXlcbUu zo(zK%oHaEM<}6}LsA3WSXeNEA3krAM1)WV2pk zp#`BGGBJ`OzED{7@7X&(n{k#Hh*TOz7~nC;W3945ws2{Caviy&e$W~jcvkQiB!nT+ zow$;6+^15dbpbdqC)lD=ocA*p!=HuShA4@4t($m&r#FNjD>J=0&{P3D%)!+FxDI3+ z{Q3f6k$-$7rdJ~5D5qGE;Uu7?$$lu46FFsvUU~g2k@>VDh_zIGqms5V%^|3=@J73s zdik29N+qb67)w$a&%>H|WyJ?5c5ypvNvz9^Y+*E|;r?;@EId-&!$1BMsaAtrW~&Va z(n=`#C|MC2o%u~>(Q$kdYlx&1=#CJytT+j%Bg*V_r(Oouc(<6GA-3v{S;I)5_`yj> zT{E(KoHp16N7uun@D5Q8n`;gjeGWk9X z!$1*o@nXEp+q`N_&&x_obituOxu)z zYeXfqhLhPYvSefV{CD5)T~o(LxOm%F192g%ZQFe` zEHz5!mCaB|Q$5F`v;_D${lcQ5xO)(Eqkt*xy=(Xx7lnsSE zNi{t!8@#3y+5ToVZ0kk*r>IrBDkjtrQbTuq;uS)x7HwgVMNgXA)Jq$Q_S}!4$xbn} z7^mo!+y9~xyu+5soaV3a6~HEM{)$(j3J2qbt4y&8GAf9wNUZXXsp#qc@R}to;x(G0 zH#52s0m&X!HK4uqqy`W|+X6+zpK$7Y3Xea=7}Hus zWI6sc`=Ih>Du$IcG$R65{|!n+zaw5LgV?lh$GWXIe%on9I2R*&OAHjSFW>h%k}U)S z8<>$)onSnZ+d77iy&g`{;)-oCt#S1XxzEndiJ;ht)S80 zzHC5h?&hTh0gT=2EkUTz7ZzEa9Zn1fNahF`a%c6EWIL$zqRIf;|6K{`7Ibg48UGiZH+J zPbvA`cLs{vLrF=lYCE-6)UbuG(C7=jF@BL13XIVMihU#zH@6wefSB92nVA%HG7h_; zy)0dCyRjW%r|At5uf2%DNKXQ(q93TX`QFl;?%horG)25@L}AJ+N0+%pe&`RWwS0+= z@u6i8P`TxPqR+-obJxM^uZOx>u(v+3&IjBL_Pa7Id~;^$YC-aUPXwS8JjWS=#?p&R zk*2=QfAV-Xo?EhHnQ)XjPs+wLYGBT>`%r|$)Jm4c1c)5_8)+Zmohg?1%YRo=isHNk z9-^X|KO3H}sw`Y!NW{D$nJGve3lpoYl<`G~WQBO#66&LEpxykYxd?>L$B1kIUP4*N zm)xTD@~nM9D@dH1b~-$!LTJPjLAu`)kO^t2bZeN_Zow}tec;@IvI!|C>QlH708X&f zJtbpGON9wzTdsvRM8P^DESet1e`G_1Vp~+n zGBZW3$iA_y<~?i`NB0{>%h_1WKGZs7hkBme{c}(`4hpiy*~``evL|dRrY*vl+U3|= zDUviC5w}^)IFVc0p_(JiYXX!?l#!;Ot=-| zn4+NyK)CaN&O&6`-pnHU?6#qCDm|+VRx81i@Pg;u5>=`Pt^F+1lLlZB=n#qbb4Smb zp+GmX`G=M@A?7W)_eVd80MS#e$oFmrBY9v?ezJM!78vEK_Z&(R;h;400!@BrY#LYi z=V^@;&0~{GuMy&noNJb@{!&s0N=`U*;8jdy5N2avR=JXQ@-21)4a%f##eys$!QyOo zqW})G49U!Wa>lLF(Bz(596VwWb7vIYQ7zt1xZtN<#}m)6-QT};blh?6d~B_RYAhI} zz6hjjoDW-#c7wl4t*-<4>*?6`@^Tl~meJ|)bjtU@jW6c8D+f8ZYcMA!8AQ< zep#8(m=9T_RD0@pZ3ZY*#72)EV$mjAS0017jMgu0y{-S>x>`d5023NeW(7;y?MJm2 zqt@r&8QV0D0dBAkGX@GSLl*`r=VTNzTiMuU@O#MJ%qY;SXFBV~9+Y^oflhOft0T%< zOQJg-d@f_N1Xe7XYEIr)Z-03YpOn>Y)SpEuv5e*)O$S>YjdY)J?6hzfw_<4_GkoO=s34qKH&F7xzWV183D zGVmWVNPaNq-3R0hte_7#nT_hQF;q^gqZMqgE4}wEu3mq2;aWB!&aK?#=u^XxU{U99 zh@&ymuo~#QGy7N&nQ)L@d4V*pmV1lYd~7#*vmJ}U4*}dkuU*pb=t0-p9#<}*6)$XX zC=WrKLV27&%2iYauK*%Wd#xz{9u3_8o;qxIWdUsRztu}NU>Ol+G zo7vkM?-Xb-0FDnJD=go)IvO6G75UQ}5RbL7O9rc;ck52?^$p7*+P8y{7h^p@UeMVk zFm_)FQ{U1-fGT5cQAizR!#C-f73AR&KkBN9)78$P^lsr*?Tz37`767&eM(l;*Y$84 z+iItLcZ+H+zcjDE*zbylP|{0QhtHysi>qS%-X ziD;T;)9Il?dI7f`e(1EEY^E=OR_~X<_H(M`=soz`22WeDdQ+C4UxB4M4=o7f5l2>M z5__-1-0FHug~orF96mAXE#S0;`aB(1%2Chhrc%zv=2n{L0d|eYf6K=go-h!X-6k8i z)#)*rPTVe;0bhsVw8fhw&Bm&E?_(@;&y z5>_1C1L0!cYCBBPJ|07sDas@gEWNPItizQ@rxa)V>riwxS~7P}xyo`}UnB^%`SGPA z)bC0JytVPED&?lVD?GU-k-G5_c~u!s_;)>V#!~{8sC5 zPT9@YjWB|QhH~fvw6lHhbD`5RQd#Mma2U^18mC9U@BlXK;pBnM=c}Ahj~Cx4d!$<6g6b^NE3vB2ImT5I zVpkxe&tG+*X0PkgZ}k!G4;BwIZ@W6Q8HLEo7gdGa4>wY|XGbVhTATcYqwbMMRBX|CBw7y|)HHUodp?jaxIL;$sKNiW_E2g@~& zO?snTlg7>Eq5KB^edy+Uc2%eAR3)K1h$&-jEANA`s)pp2YG?;9M9kzxl`zss2hzA* zv6;N)?<9>km;#55YaxRbLM4S0lMg?EVR1*CWm?0}*MC#;XvvT6(`oWT$p4_B&fV_a zcnF)i6||nkfd48rPsI1;>~a|5r67Asx%g=^DgwQwAfyWi+xu9FF)Cl@KH_JgQz# z?WgX-T+aaL_!wa^v(CR8Q~QPx%owHy2?ZS$>|s073a zLQoVa$ZyG#IRx}0gl#e7xy$)Qg8OPat-S?pZmo%V^Y~DaI;b`0QH4^)2F(tE3NyQH z?Xiav#U&I4j?-A*nMd5+?Dh#tKuS1Rl9=C8U~=tHj|}IgM9JuI*YMVDOqrn!8@-Wz%Hw{Rb458+iZ%GALCLxeh%K7A+?J37P3 zjy^OIiIvI z8Kbuiw;0tXdn@Qk&pB08@Z$%fi}{R<#dl)_7U;2U`bk#JKG0k1**1iuu{MI5>@S`DFrRw$)Xhp%3!~; zXY$@ULJAY}IbXvKF3%E9dVPpZG)}ykj?|1nuuG+o)9KFZ#gzAhvx?w^M2ac7(8O>wZ1xt8M0_^nbHwwKAXV8t4xdxtXd}aWjd}6wi2QIs~%k z=_=XHtO0AKx#uf>e=Y`nn3pwkU!gU*?n7*Z0?QEZrUo@Q4`+RN`1lWE#m9AdprPRh z$axp$_pQX9s8!TNz%W~c!!y)O|2PWJia=y2ZeKR7&474%9#WWh(>3D94r?sK=IR`e z$Askj?dU;Qu!pK{>Y!7=QibnaqfETJf>83ppJ;2{psQ?Im|@oB6rk7i=TS=^`tzpW z=uV5gb52VFW2*{Yo9@3$KU6EvCdKlV@tWc{=@I|?R0JG)6QBk_gJ#EaCNItV@y3=+ zc7O4t^$T`;<+z*Mb(A+&UkHr%8s7K`e>UezSHSTDA<$azl4tVZE`Dr=|1uKOW_?OV8MaU1MQabel-u#gD)V*0AC^Yvwxp9urzaKCxi$ z6OF{GbPmN|q_7v6Vimw5##1+BBs0rzTRJ3igjvaLA!DCsi~{19eXfIl+j;g@1OWCirzcrt61MYu#Mu-Q$@D z1w{~)?pi852yq4nUhXm$%CQoVZ-(1ys(GO|+dHpn-+*G?XQXqmXfG`Mjl^xGuF%Lm zi=@wq%$YP0pAfr6>KC^L*artF+7`2IMThGL7wMRR<<};{f>RV+gz&cq8yqcR1%Q+0 z@5zTsBi5IF<}&&S9VmMT9N``g#saAb;cfT(wQy~O_+2y^yPYXqnlZM?$XTMNy;xIS zq~Os8rn)0C|Bv92&GB4w@E6R?mFU+&Wv}!Uj-dX%YS&4G1{OM3ahpGmD7r3RNz)Dt zF8ngc2ZyQ8b-M&Lrhk7p5Un$S3#052swnJlk}tm&pZ+r8r^C1M;xu+$YQ_lH-_GB*_~xNqZFuyK%^?Ui5G;fc{jy1 zKFq2DX|W0IZkHU(La=O*&aSMaDT*~Ws6eVgk2FhCKESQ?mv)4a@>ap_Ny1O;Vr3Yx zorNzQXKI4Y_ue$>%SGpRVtzf_s_(>KC7+F`(iD0D@e<*mC|b^OH%nbA{k%~uRZVN# zyTvFX2mhuGscNmVkubZ$Xv{qI2eg21i5s7+0vL6?sHMI`;s&MCfD*bO`c+Xbu+j76} zY~B5^kLipb+Rsez`Zz|p)m?5?$ju8$l`9%C=3n8PJ5t!X{GpS3iYX!B{Iry-h4IZ- zXTbNwHz~*7&1Jsbri*;>F-y(B(fpc!78XeW(rT8+V zE$iWP*&_m{n(b@t3DsL^j=}jSK(<5Hum`tz!sT4bu*}KN{9k$hog&&<|3=N0{}xE{ zc1LR46ZT8}L>pIBzHolNSZXe~DnXz@J*Z-^JDF~0pYwlDpxi-s2JH9?gw^Cu&#fk_ z8Zo0{5=~^l0;Y&FK85ed5t{k3*43I~84{n`LCi%m67NZB-wuughWoN#yopxl-%SW5 zkAudXSxf@KXl{i56%Pir^0y=zFmQph;*)oseJBoC}^FRG(z zvTH(p|0IEcWcku42>CYIYxu}RS=`tgq{Km2RW~FYp5ktIvHQAhLfc1_i4UUfE$CBp ztrGk>LyQJNe}g)Qb>(lp>a-D+2#W}Dj{Ib};cj^Cl9w6=^ecmkxEo!;?Fl<{+FL!} zFqg(^!g*lV5@&9QS1ZjWuaQ4$h}O1>`0mC<(|hFm5w`dXzYD=2F?A~Pj2Rqrx^Tg` zz~rIKfnnNbU~b{s?*sYlo(+@K12~q?_oSSF&+aL)((FVMzwL~!M&<3}3g`&TCCr06jtCGS&8p-KCk!BqKv^tx(AH)`*Tu0=RI*Yq<$>alx^SyWzAKcxWq4CBapJ+b& zMf2?%&p;!=5{M0nI};4R4%qxlH@0H6e&5O{t2O|NO({7q+hUo zSz6|5EYL5*K!F;+A3hhxCwK$m^+r#=vn1oa*kvp3@?m$p6wg?HsiG5sJE7RGiD;Jv zdMiZ)NKMIX3!*vMBPvk~L^rOWrhYR+{WC0W7c4A69#WJYbh7L&yBBKxzt3e-_+gA4 zkdpJBD5WTJZ)3UPgaz>q1Zk#&d7!4rk}i2A6qX~;rA#@M+ns@86ZPrZasf{4bR5)! zUzId$wOZGpM9_L?WXF{GK4DGowJ26sJQ%C(%@jqWJ~tn{efE~bT;q7 ztROqSiL$NzK=sQSh|>sPwx-szUTByv}SU0F9M zo%^l6fBUy|WXE>i@|pW%hPTdSQ~O{g0V*6HkI0TqYY>;G&onmBwidfH~hvw!SqJ~^b*K)UO;xv;FW9nNPLr_cK@b;sily25N1bT<$ zJN@`Aene~(m@DB@K52yx40}!EQZeF_;e3*^8$D%KrGg)Uibv{(Kd@F!JA^a7h;#gy z++s|!gMgVn8QZa!yd4%_BiBI&t&suB=srnw;rlUuy9&-j^Rz>L7D6>YWvauM75y0Z zFT{Tk$x6?&8y$)1(Uz&NA60t5W7){!tr%*HpkUR(8wLL>IFQACiKzlnMJ$^RijXK>eU z-IXsuVgm2(?*{4hw}uesy=79S5{E2|CdEP_-B!Os%R_cW0weMY{-SeB`4hJ%Bhe~z zpD_jbnWhx_Z0W|j2WCYk;QOYxAMZL3=&z|X_1iZOA`QD)v!uMg6lYrQJe3X~gCSP~ z8{4*&!hT>S7q?sLCDwp+JEoMJS=uRQN<2gP7{##cYW99@L$#L7X<+`8L@y0gL&Hoi zb2O}zzWVM$uUPMwwV_v#UNGOqRvtm2p^e3&KuMnC=FG@N%5NY!_lQO|gPYgtpQUPX zOPW=BsE7wBO;rhPDP2{Ug>UQVf79{>8Fw3kX5<1h#T=F_X`!hkINXsKsok>=?^ZJA zmDy_jWfx}8Q|W=b;cMT-wsNCbTt<_RBpo<|KYV2ViigUtHyiAaIn>5K2pQ0S&ocTD@D^m>)PR4$Z>Lf}hJutDg&0KWQ>8Z_XxdSD%-!=RN^gL@; z>B^KK@}Jc9;K?XL7s0=B_f+eXUS=L`+0*Xe&Dewb;dwH*ibu~hRD*(W68F|0P;*P^ z2>Po7m@oqCoIr4blIq`^TSL8MbkP$jYeepX7^lMjf#Uk(BOoX8<U#Y$-11ka5>Ie-bc{uLB(lq}Tv+PmKB+zNTn zIOl8miXCAW@PEa+OJz&(H-dm`3p0~nfYDXeniiM+|o&RK&yH#(te+XT7w7dON zfeJ0GrGtvJcgYrGVETiP%;5%1+Y}MqX}`bQCWAym$VaC8GB<2nw17OZ{771F&u2y{ zPB;XS!%$WeQtmwARv_99KxMG-%_|-83sw^L(aXu0x{^0{y-$x{eoA=?qNdP{karf> zp+KE$7Eg&W3chK`Ln~SN(F!*(RM;>TC+f)zsdnB~09;ZOWa1+TE*j4fa8e8@D?nN3 zPSx{YrqkM*>OfGFtf~;6lBPZKi0DbQS^;z}#cMZm~Nq@RQLY-Q!(lEwx6U)@IUNK(#Inu#ea|Ut>8p{|OS`?^_g53XD?0_`>%zx$Nu zJGI2t`akdt48OFML}F?mhB&Ln#ZyRFA3^prw*XG&aH7JYrciAbtVFseu6kHgBf2Z_ zC*C5Sw73!M$su0wN22^MUl0|Aq8&~zP5Ajtf!qR{mg@|&bikKj*r!|-QcWMnMR_AD zL!w%*A>w?wV|eO6Np)#dWj7eKj&TqWr64%V&-_%7;Xvis^{V+f?+-YsW#2q z-(+o%X7VPqM8Qm=rqq9fX=0MX|5WqPJdJsi*8-=ab*ZLW{v881er>1701%ki5>8s8 z^~g0IDY+g}n*-T79HYQdR7kyWR$>M|4P=}4n8~e2(|j3&EL=z3RcW_|Vn|Dx%|61Jzth3~WsEQt#h@Tz>bdV}GSlqTF1GSre}R870& z)v)J&ODTgya&BJtZuD!_nsxZ5_#>OAL)=5}$7j33#j(i2DazecnU%zo3C+EWo7lCp zbDbqtjEl7dgkSV#w3`uXPyz<{n+GfEq~1e6CO{;Ol-!Kb65}`6U?M`=sqDcBy;}V{ zk+|PiqT#c)<^I&7pK7Vd_ zh`QkVEh9NxOx=j2s|wv^3R~nuojwR;2I>jf&4;0L?iCx2Ny$T1k9`h2jW_|CBq7M)8d>@(T=?!nwKQCDjS<{< zeF|?^fO)Ykd8&LB(6(TLkOeWeEBc#n%)t07gE&&q0B@VQJ*Q>T*(W2fZbzDtuRXwMQ6agr)7l&L{mdZ)nP@Y8K=0xa58~dP`JLDjpp3 za{8x=b8i;QpFz=onUA{6fhEnqcR_GP{Y$(s-t6Dui~FEU=NS0i{eLig%vJ=$ikG6)y|$ZZk-}gPa8p zUT7CB>aC!J!4O5>ruJHGMF?JQs@VikRHr&B$Xl~qukJ@qS)JB`iN+5FkvTwAVD?W@ z_A)`_ziUHq!!wbNwgfCES?HtgTAKt;_-KHe*0l`wImZIh?1 zltin6xBD>6)O`oBs8-cTJTeLk?#!-DEFNm!x%Z}6%Yl0}gUF7hSm_dKD?w$Fj#+TO z>NTt1vJZ;trBXgy*c`*)d%51_V(JiLm^-fXvvNXfj3jqlzXRVnBnN*=Hl7^BW0M-) zN8?Jt^M-!^DZ=%X`B%+jllao22mtGENe5yU?@SRJE;jqd&ymE&W6=`{hTK&J>-OHA z4Mg5YT9bP-?E~3*E!08BT)W(K72InF9hw5ww*BZ0`GqMb`h?~Q&UWQZV&*SlH~BnA z5<1Q+!k#3*reO4(OT03BdYL;7=ERu^M2b;{^9<%E?0hZ4!53rw8a$irFPEmu)J2;H zltI3|KT^sd!Uqw4kX%nLiNHkIkoWqTXF`N3#;5xkx-&WRgJ&AHw0c4f6Gd;|z*rMp zd8Kl>H=sYO3Avex$vT(Vfg{Vs{sxjE)B?MR3+B?I%^@|Byl?17J$LR0tF6tl$TOe) zvq)RPXwmM{6CB|->uldsqr^F*INsr9qd2$t09Pfkz;JapXW}Ds05QA%*g+iEY?{f* zP<>CK&J(e)J-K;?i=IA@H?9mnZWe5k`U}0eg;{|RL{~Zf{s{nHT(Ld}F$~l5PGGzK zd|G>DMqNSx!jatTsQPW-2KH>M-z*m~&#na5}(D z2^RB^Us$?Ep-#wf!u=Y<|4#;8Poq|P84`Bx**RZ`wi2Q{3%6$br!kPgvTs@tfD~l5 zb{rSZk#`Fn zuPtUqpMT&;UA{+pVS*#B;24F2SDRYMXUZQ3>o@eARstA%w9@$~G2rvRI5 zU=EGRs(M?tqCxW*h!7kDK|T_JxG@>~>-P54q{Z2QE6B22x~jkX&X|7ty?~EV34ZO% zTTy@8yp>E5#zJ;49IEd;FGva^;)mA+_=TAcUM6T*%EsC#+Y8dNi{`C!#;XDp#+vAl zRH2e2;`mfzh`h5g_rF#0&&3et)@dg<8YbVI5mlp#A?d8(9y3f z00ih(B|IEQ-X2+}c!{8UlViD@9t%TtAK;Qlqe~P#Fy-vOq%84^1K*;@n$Wb1%5tX6 z=@})k1RvO?!N||Zv1_v|tFU zSj5)+BC{zTzT0>ZAk?NV(FIgWnx#1y2{Wm~|pu<{2P;**E{M!reR^H)h zf$x@k*5lU(e)2|LusOeKp+@T5_MFrY^Xvbn$8W(?f!31fWi>V3FXX84~3n3LkSm(KKOkSzmV=Gg0~B1 zho-Tn(=;{ZI(;%$SW4?hLk{DCH%sR;O@L>;IiWChaDlh5hF3g!mXF%Gci<;8W^u zte##9xMcF!ZY!Gpz%UFw*pfD4bFyl5#`Up7Q6{QQ1?_E+Kbr}%BLRRRu|OYBx_h2U z9RKgFaXg|yR^3`Ae=O*h;FNKSO+iwF3lMogX(YV|2>V#~_A0Kl-4EqjT-r1PR040&g3TA-lt2GrHVE>Icrfy`vc8JtAY)8 z0Oq!P_p~Q8p)|5 zRJE#<8hl}d2hd(B`O>Sffn6|#BFom$cr-+A?{>Txe-n@;VwR`*if?K69LRG$2W1L> z29Yk(?7J`?!Snfni3lQFiU$oEs94(jJ4lrskks@;HO4OsiEuAz;oc;0j%vUUOZ`ZA zG`7GUzhNuLFuU_fd^Rq9Q{sgQ5j1+7?@ z7kC-5jP@OuG{OQgDTZE@r%4*vb(dwmeNti@-L8wO*`uXRAsGbXc(SKIvXc`!@x{zV zy#ksqetfNamgWD|*UM>QAF8g-ZFU2nzcm75PH6i7Udgp4ao``80I1fa2yF(m5So-R zW>MuX-vPM1ko70UHldT#(()V}^UZGp-xg3@r)-NCHXQ7btO#!QN(N}#1qi3R8m%{A zWxPm`P>%@XgNp0M17y{VAagA#unQGRIGph-qrx$zIU^p)iBXeo6vzcuI20T;IIcK>^+Nm)&~3T>zrzIyE13ncUgf!c(w?X8S12zT<-s*Vc)F%YSfIeRfT;y=pfzlvaAc znl4^_jk?bAupp6yT zgMi&@SbY?;U~|B{UXpyb4j(Z35_uy7I`3DlZtS!C{o|!zKUi)b$ew zWGg{gj~`*s_^r9R zDuRUgjngfq(FHZUo6@xpi{#<-5ht_wy>x_75n~kKN0A{2`|G}y6Xv^PHK#uOZzS-Z z4N6fK&78H#@YmwiL(mMZS7@y5T-Ah5^H_{V>rn4O(`Q@IY0L`n);Zg>vI!_R=MJ6V z4%X%@ZD$xeJafwLdQlF2CVgZFX+YC00ipY@m9Xd#3^q5M_gwK35jZni`( zgL^rIY>5Be6?8>(%Uqo61Eg9AMC$U(1{IBHkg1pdiEn86^izpi`pA(27kb1|RA6i> zDT5{h5~MNpPS6}eB(`ellZcy_pdbW6<)o`WVK)zxf*T; z5SoDl4nDa97{s_!8igLiPr@tO)>mwdC2X(ej1d&F8fRm=>bmi0X;?N zj}8Krmiv(d&B&kG3 zSYjW|r`2Vtog<{IZ^y0Xj|2J?e7!CUiLAR9(AmwEof6~jcpo;ct~S;toGT=zxJ^q) zY_26lSdH3X7${q=-@H^icDWvj^^rud-e4%*bJZm=63njFR=Q-HewPArf0LpLm?O6q z^c6s#>`oWa$p@HS_oJpSFjY20mj?D7XX=iu!|3fLBd?6rJi7a?&D6l{)PK-3`njOp zH&!{cI~e$OB&dktf4~w;jdv8TPSCFer|~t*5%d{UR&d=Zj?KqsSN9~NG^T&=o+??} zu7J)_B07+3m#EEXgR&r7u!5Y~l6 z_v^{Dv-H__1K(~J*V0UAUK1G5Q7-ue9En8G1)T6p_J?FUDUs44Y>q*#jKK~8#VBiBr5Bk6swJCUTI=Sp^ z?P-Z(28~xYo7f=E5vb}DhjX5r+?BxL`Ka-<>{Xm^9YT*hvPwQ1-Ik<_#g{H4n#(^tk<2jLK z(!6^%*rl%!dCiv#!DcrIf%}z~NnKf!aX1=7R`c31cRmUalw33g+lqvojY6t}=N#pc z_xdwu)57(=rZA9le%V@|1yXbKGh$r>_5=)w05=>si;t!3b~!XRjfMJe?ru1XeTKf(`g9V7(_EBW@>u!4mUYe z7eu-l^uX4@JOF55Y(axwIE3rENOCMmfo3S#hiKUFVV!ye>a#vZ2`s!$Go@(_enyv+ z078I#_cE6#%cG32D687E7QNr*p)Tdp4jXSkr8v#FZ?FyHhH#>sr4QWM<(^>2X9C0H zL6YIiu!9xbeik18B>*CD~u|&WHgvkj7pJjnYdnpa=B*}hMT`NQ8b>_2hD-aLlAEHvDn44PWgjD{oy%?uh z^H4#2q6-X{=VAO;FNZZ%*EoK}u=ej_X8vEro-CIWKDDoBn~`6QW)?Ty5T@V3o_f0n zM570>^z9J`_dRphpn`mwxP%A;kmZpLpw~NG(^q*xMV}Tdg{lsgZ+I|M&GfLGyN5C7 z3#c?gUP*mC7jGD;n22dY<-b(T^Ox%At;ps|U>!y+>$hn#PoQP;%Xxr9 zPP>9RADfD!Lm%IV2$;Sz;)e@EPy)%aCnR1+Oi~0LXOa{7k$oeSxjlSI(>C&PtL~^Y z$1y%%G+isI4%{pAyZWBTjto$FLVv7i)^GT-bdu*U7)eE!2o4C}4!g!`#yZ{vkQoD? z%V{o6l>h6*`;paY8^E&rl%*lYMqz}HjhRHhL{8mq6JULc-Y{1AqG0s5pU|Wat>K%| zkVRJremI-h%Ze3eWjmL$dhSIFGtqq;=6+%2DHgP=4xzuFj~lFiJK?)w-~50Z4>KMTLE_i^l+ z)d4`#X?9m-KWS#nK=0VV@uA(rs-7>8l?beup_w%#m z?BgO1{`9GGdN($CO7#l0KMiTZw+l0CZx;qpUHWSSj)tjb^ZE?W*OTU+&ta=4RfjO% zwdxb=A~~P!%A0>P>o0QUM3=Bj^`Zqo<_?JLB$dU6V@0EwvO~0Ypxx8}r;^||vGKb2 zsi-h(mR5J9eckFJDQc!QN`%A+U67f_BREL5RP=Q!FoodLxMM0q>#`ORIj67vX@VFEIK(HJ_BFKH zhF5iCAXO$WKbthCoIZNAUj4n54a>fZ$16G?cp7dn9cXR+IM20@mkvf?4Q=D~{@29| zUt?eoTJ;yLIe*Ac_AF1S6=myvd@_9wQp-8MguVNb%}5Nz-MXk@OD~{-t;P#GB9-f^ zu!vt4_z0&`XD7uOxT=XOvBcAhMyN;!8vv1Ddmz9+>kl0T!a|bFyVDnz2BsRI?Fm(W zYyWc>-_3Gu{`RdS+fe)WzxyZSl`V>=#)jjD%!Oqqeg|3OB?{al)PPEzn#DC9eHEGi z`wDMUjjPZ_CA`0A!<2&U+n}>6>ybvNyx|i6kNv^;2FCEL_cC z8S(h3Nj4C#1RVVCA`+Z2GTa@(f}2f(m^k#s9TBK+@ja(KXTRA54Vx>=_NJ26uH2(M zgxU>S zC0EDwQGyjKtZ%ONPsRr;`|Siju~DK8+s~v1Myq5cJfF=NGby_nK$rcpVejg=h6+th zyUd5{z5dS)|FL;%16*HmEQ7Xbd{p84)hP^Kj@BlUVTCSC*2ek|;d!v|PhcdoUr>#`1cV~R<5sEfNN?+* zZX53uj(38vfaw<`6^ris-jjV71&GdsiM0U#KLEg5B>thTk$h=j!VH9B7WK#`E0M1z zH>z%fC~J+7Jx4rNMjapwre>-L0rPo4jvYxxtU-a4NOxbb>RTe(8>J$J zhTsQ2vJ|BKPSNCLMtTN%ABD%yMkXwP)xE|!5efeQ)p?ynHMS`KDSp%gW3P7Y=~M+~ zo~#o#^~N<6?Ihn{V_#xJ7VFg&bVz>x)_@u|^QBz)fXnFY&)o*ghWs2z-{c$2(2N>B z8Yn@Z|EU3VE65nV6beo&OlxSS>6n3MXyzExp!DdQDM}@V7znUU9XYhCMeN$w8Z5UU zvw2MQXOylONR=v;=X4}u5m?od{7K=N*Kw<2MOi?ZULIFK@Ph;)j8ynPpNZSt*lPFV ziZbBM5~nb!HDZt!L0|_Vy}l;18f2r>EUN_}l=QG+;~nZJcbuM74*<&3vQD;^SltP( zOC-sZuwTysHQ*fU?hM;Ox;`DIgM9W?8n_=q>gw0EsHnXYytAs!4Z@?w5?-wwODHIv zP4EEhnEd()kH*CJye=Y~k)}en{oEHL*0BoNS1!!Kera;U7^V=DhKv0jtXyPYxjT+K+|J@hmn*f;k0Ee zz%xAYdn~Zo`7#pszwtu!WmOkF*PVt|;uYzxiq9KvlS#!G7sT56V=m&U`!nMMO)Di< zyWScDbIDr-<y8nRm4O#N5 z#_t^&ibYbPLco3zJ7)Z=yh^>uQ@9qcEui4hRO1Nn)V3$n#RDeb59m_OU z)+gT)0U!mbddLdoWZz;S8=rcG8-%&4WatW(42~2vjBrKT=_`lmEB!yC;Z7tLnSA>V zseasHfko(+<}w8*gTaauok@KTehU8xTi?} zW{9*>3H>uSIb;=n5Df{I>yi=iD=LV(7k4?K5rcov=S&F6?fqJ`=bADMP&>`6uq{7?v$( ziR13LU^=}%^SZ{o%Els&e>0VXfTLXjhlx$=As35x+2xluYtyYYmM)Jg*}bdxTd)si+`5mT}_Bd4%2(` zAy$5JdBq!^v>(Upn6Sa?Ts}+p;Jd$T*Hyykgdr{|aoXgFZM;{J^;PNEaJ{xcs06_+ zmu#W@D%w&QgNo7t2enkdakVj{RfiE}_49OTuNXYi|2w6qLF(6OYa)W^*_R5+xh(f?QzoVyl~Zwk5cBMK=u5dORFqDj3*}VGbYbPtiW+N~7g>1WumHgq(!qhA8=;Kuov2Tn8I!D`0nK;=F9qU2xAGSAbzzu>fB4c%GF5VMDOpPuhNE z&c1Q)0_LV~NOaWQcukHsa~HOS)rnc(s{-Kj#3Re(f2~5DY+*N~JPmJ(06JES7UKBF z=QO#!GLn@qnwM)nGJk}P?AR-)rB+6U%;@bL`(Vn^5;3PXETvB3p@1;{o?dz=7VL>e zV-dXX)g>h#Shm^iyHD%fMfUgN5Y3S|B8*IXoRV;0h`5I=1y$d=_#%3#+lq#TQxem>^H!c8j`1OsQPAVgX?m7&H}k{8#u|3y$cB`Hmm1oz2fZ$ zVh?S0=Mxy_h}REl!w&pCjjgf-+&KEhu~pBczAeVMeE8z!yB_|BueJ!{L`&E8_@6;S zWgR%Sh!T;iyR!x62HgQf{U4a_y^~274!>z6a`uf#iK2G{n0sgJRSVm9XhUK)XFt|< zTHv^r&8L_Vx&V}~6;o;m3NtMIysUO9r9hvy{&1w9M;y9It&s6m`%=QlMr#F@<*tEZ z3|18D(8}U`K{|kIk#zmg(ifY)W0|@d80QBX-B7TCZB6H(>wtPRgOI-@6@ZfQmt~6# zrlhK~=md-?7Oj#t?W1)QFOjxlD%GBZEtY45$IzE9fITF|t+klv*5#J$K#_)}l- zaD~@^uvSPJL2hHW4c<$eeH-NZ3c6y@OSGnm-Tmxm*nKyWt`oYwagI`{SpTsmQhnZ| z_Xo-fp9UkXr0%T(|5Qj@P;u%|LUklMmzPJEDAH_k`sDDs3Jm?Ca`GS8f*Y$@$9q$y z-DiSrExvJ@ygi(2FENv4(((hi^9t^Yjm?A5U z$0?s z1f6OF_5sN6^_Y*T=GMi{G9$Y4waX~*Qq0rC$wQIOF}EQO|4$iw(5KS7`g0L5mu!Dq z0J@0r*E_~JsWcar3-;XYMlGxa7y+}0|9Vlv{ zC;nd{NEaYhI$$qBW;5F(Ah(?Uh9*`uqDEgDSH_>2U57GTaW4AOtsmlcpqqcV_|r^^ z(zKPfPWT%!ep;nVa?4xbgRRk5AXqd7IoJ~s2gyhm)k8~heyk3aNo-kWs97Kmf1*#Y zRlnaG-a=fshP&4;S=(M2A1D0acx&(&!>j{SB9iI96uY&cQMWkm}T3 zozobT4yb6(vk^(HI#$NH!23n8gR}h1I{n+|y*h;U4_#yc)3i!AM+%!#13+;0T)gs& zR~^5pj`G7U>Htyw57z3y4|X$ z#BZi!Gh;#BJ1Vp!q}rz}Q@8IxoN0z@O7e#wt{~w5V0YH0T@fFaJ22S3vViXVLgB^E zCh3ao&0_V1UJRx zivpdn>DR#5s!7l`j^96}L5>;h!W%;~uj6*{we4}J09SDH5?3-e$r8xy=++o?zi!S4 z^fPtF=MqqEA2Y*lC2=-7_9ZP#!;m$vdW*^ zgPbAGHPUZPg)_SLeDm`04H+siu@**laI^~mr97U5BHxMO=XYR_zyl3O{rcmRD@?Pv z)qRnI4yW}&l$>88FwR-Tv}LHhY*Bo{y~R)4Gqw&hZL?(k6se=)WH@sGrJ1;;bgRcm z3ifuQF~Xn|u9MMWzPRH%1TAMu7f-S-n*X@Nh?98bF^VBemsA1cV!!J0{gH@(OT^i;5s< z6qb&sH_Y>_QtcknAZh8;vjoQ$uF;4(>(uTi!S8-;kG1GEZP`mn2lNs+L;Q-G;U8cMHf(n9{1v{M1MTe};4$ym_ZEmB1t`yBodpNWhyR*~KNoP) z&|;#t-n1E^DDmAqP7U_{B3#_*~WLnPf2U zKo0MCoQuhcuI_)6wy+V9@e=@77GCsS#3!E3yrtySLZd-Pb5l-T6}BvYHXUS7u)k3u zD1R!@67M+~GLkV>JR=mglfhiDN0I2iGHyvZYqEl5$MO@Nufs)bT%1(}CwZhbm1Tk# zb*NII1ZT&Z2}maJEtm<{Yniiik?X5CXzO5(FDE;yrR9^t=7$%jh{S0JP(aGumyhJ{ z)HNO@1O&6mdpqkh!fIGtvH>ojuQCbRo+LXBBy_d*+L09f8WfT0{oaj%M|G6cy<3@? zuQ5+KA^!t-!%T{_%f45f;^0Y8WD~E|YO^EM2_o}ND-{+{K}$0)PWwV$vh+r2PT9?B z8A7I@ynSsN0=C!_j}tL+{}LBsZtMI^@Q#lxG|gx#kEGrO=G{QoCelJDO>dW} zgqaHpVzNrM8s-#|veZa0AHnfruH(X6CQlyXVsdCNaUvqy@_M8GT#1+U^0shkgCPRo z+~@J>NvU|N=I5`7i(kjZ{>1B0h24OeOhTDYy!%9{Xy-2cgBy?#rq-fa9sh_9W*uQ6 z3JrBjo*9lS+fyLL>TA8gm=|1Y8>l&M4VKBE^OIP6EQ&RfFBpU7ql(dM3|bG3+Z%SO z)TOYLDrbL2YvmnM`WMb(|VDgE`do(Dhb1;CrC`-nRj!pE!qnfx(M5 zBNK}!3_!BAZD1lefFD^Sd5%YoW3K(I_v|X6D#V`6D%+6=t7mr?IBRoL?4}wvj@mMZ zEZ~|Fj;vDhd)k&RUhKgC%!JzH&vZL@>aB9M6ZWDE{p@Q%@T8%pk_7GhPK7M{s6m-%S}FjZ)D|#FuMFy2o;^Wo5NsNX{yT^GTz+Tzl6_^fx?{#$ zeK9z-5()mgCw1{A<3JFlE;(G6NVil@zeU#xVLs4FXZyica9v3+&o?T?X^&;<7A$5b zbQSc4Esw#{y$@leqIY8|satnNlN|NDB?tqL<~E^a{6B@u`GVu{%15PCu=o~H#v?YE z`Qu8~pHJa8xI(YVzy%MawxpB}^bLF1-(h3>q}gUIhf?B&pAwr5j=zk*ba}ita3Ny_ zbsCDXWHB_()$^AZ|Be=A0)wPQEwkEjy2nZwWF+Y!Xhe9Z=xh^B;kUfvVRgtqoc) zmGMHSCz=G)42~@UZEZ;6zkslSpn-X|0u|!M9fO#uHu&{~`4OQB*nCHExKNZ(!EITX zFVWD_^Q*&J6=L;1x6Rn!vCFxLGp>rA>#)g>+qKHn_&Xd>JKpt@|N4&IVBi+833;1z z1s+mhNCBzjsz^59_Mlf6q$HrfoRXPGT)+NcNE}@UA!AWFEwy?eKX(DsN)-=M((h0^ zO$@?K%doh3PS?PGHQWEvnKgpZn@Z zv(WdRh*t-r+(4p2cqm|vbLN2YhBkR$KTMZz{Sdjf0v>8y!Sk?3X-f*89%>-2T)dZA zCouijwaYl4SB0}6QZF?IkYelS?vxd&bL9N`L91V0mlHVwOQc0UoX#0Q9iX<|uGI+e z67cq#@ z0eMtj_uXl9Lqc}vk|m?5qlam@GZyx>LZW%GUz5cUNP&PuyEJkmka?*M@9OxjEBTEx zD=17kG+@%SE%T@DGMcTSR!$a|PJxuVyY>SbFgP{qqS5G(%ux@6IWbXE6ZWT@-kEd82q`tYRw8_~-V#7P zPXCD9n@vQpz=1)&{kfFgD!Zlkm2@@qXUNn=4&tE`gB>}$tXcAkeggSy-y(f4i#$-& zN5@JeFY}Ago*Z`7C3Y$5>CC6@kNws*#?`zVM&0LI@ViM~orN^%3YNCO-|g&N+QuD_ zttRC#Dg)SAb5M>E<@tsGy4^{uIf?n5ElY45YQt#=T2?8-ZEJ)^9@`&1bx?6W$?piPd&L6n& zn9yRMThtCsYepLaI0*M$8;1TP<9^t%_ty&Ph^RdvtkSa|PIii(Rwt%0$%f@snamTp z2>p1qhNK)l0^E08$Ml;U1Q=^Av$Kw33@Q;?QXv~iB^C$ODe!o~D4Va-GZW7LbX0+q zdGpGC|M|2OW7?w^_E(YiCyQAGcsEVK-_|-tEx;p`ev)c`kvAS9iG?D72CL@>Y=~qxkMHBG$-;x@;_^dA#c9i*Z zA5Qqn;L%E)aFzd`!>IxS{{c9WrFHhi2E+zlWbF3Z2E*neM#i7<d?KhRdxL$6G1|Lr7zWP*$NuOGD-_=6** z;E^8|y>qH)R(?OaW2=?BPbo9cO+i$!(ToN^vY^S)&vCS$mEG{45nB>z5>evM{#D!7#5R5T6)uY# z1kuwJC>ix-{~eKjW?}a<$LJ}UiRCNWz0h<2t}Lwu2Q_|0*djNi%=Y@``-7&!5i!o$ zWD3?gsM_@u*~2=j@?X4T*yv_r+n2d*RiP9h^p6)Q-j2*Cl66e{b9@i;Ek6N3c53Bj zC?1+5=K|9wrD-PLk{0u{#Em8OCncrSJ)itl(QPa`B`8Y6i=QKny7a zLE}rBWo7qR1`c$+hbXoLSr;G87`x-T`>Was^=UzSNOKzWjhT1%GG6-*UbpPt9XA9b zO$Vm(GYy7Cz<6(VR!Sp+NBcXX{QXdOHfPLvef4Cu|Rn zCV+{~cjq7-7~)oeTK}5iMM;c2kQR#5+(}cG+9eBuT;H-%R>`H8YQgeT!>Yh%7=Z?o zBmugZq7Ce;jF3|VIM31G7a8*T*lz~Nk^zvJ<{wofiElcvE8?plS@N8Sz>EG z_qscHf&KezH!j}Ej?Lg=lBJNBV(vg#0}e=)PccJR-#Z~(3ut*I1|o#tAAM=@`y0Za zc@SFZ&JFfqbcq426c_jd1mUTH@w$1sNS=DK4=ciNH2$lkO7Zmw^#P;o&NV({y;$UCHq;VCcgk(xjU9>i|In< zyaBCTAGYcoQ)b$5(5f4|Tcj8K(>B3hi{f*9(CCZN{o5|EnD$2TU z?r;X!f(sdz%Z}*gw7Yno2yJuqux#A#ZOF{{HAy~7L_8+my@e}?IwFPzL{Ibzp}>;E z7{P@H@$h%Czsqjr7b|QdQ!faVJ^R3FC{yFwqv{&C0fi6tX9)gR{T>sPo`4y^d6w8W z#&v)1%Ras0X>KNdP-gGNa%3oQ|OlwqI<{tf0YtwNc^R_ zbgAAcXrSR`U{8&(hwZ|bDFxJ!0V1Gi#0U%$PL)l6;ApQ~OL$r>TlgcZbmP5pOWLRo zYe0UsUPQv$|Mll2*~lk*LNa!|ri{?`Ee?5|0jLz~n^Yk++?#FR^!R2-@uC8W30gU| zSds{{k#Ivyo-Z4|#l&6T0MOkJ-*=(8CAh%d8-O7Mn)QkvEK;%D8v6H=7AdGSd&NLz z!qU72`Q9bzE&`mX(LU%3&(_VdD^x4aSnZON6Pi2x1jD2xbi7XJ+g`I1b_8Nqz{gUW zab3G%eVtVHSOn;IINU=Cpwo`7>qYY(RCSU!1z`_`0Y7H0cs)o3^keXl-J}v%(BE+T zs2P`BxZP$V;f!&;q?J0Kw+K!ySPMdU85B-2ev)H(DCxD}tb;H5ZciU4>}=#f6l$X3 ziam^_uMu+%`D#pS=r$OqFH@pE;MMCcs`KAPYoYs2{LUe%oK6)fM|2%~(mH)RvJ`9U z+&u2&@;G0{9c+TB>&Y1tc!}Yiaf~!>i-W8lI3Th~ymPyhpkLVBQNDDBZtO>@3OGMZ zxf6tdT#TQd9rb;$gI7a?aO4}ibkFz-{tT)-WSt-(=Syq{&Xx0dk)B$QKC$Ax57&OX zS85R?C4E(~@-lxOt?*I{yHl=T($HLl4z(O(3yYHcd*`>dz*$~5{Oflet;uB4y!j87 z*sIg?KugR5hwdKB$-}}F4-3fJMX_w>Ms(E<#wNqdVzW(t)ujKOL?KsB1+Pw&tb?uw zo|mGn{F*jJ%vPEw=gLpZ0r9i&UyRY)KSmUlC5dAKiG(pfCeszpGTguc_%`q>Q5X1* zU@ef7Fc#c>VBv~csF61OPS%(gtY$Sea!}8^rO%rN7D+>&E^C@=qxT(!ApepAW`kMe zDYVZT`lhNEwfHyw*(ZSWWY7?7@OWY;aWposy>SlIP(WYgS}p9tYH7xvB+oVqQiVS+ zLS&tW#v#EYKunAz6Dp%_pisly_6z5K=gF3%6meASoCX-FC7q=7`HTIglRZ-?PFToj zguX}_@rXC4*;G3q?ZLnI;LIj{_y!eG_TY~RtGBP5Qf9{vlV|32Yv~i;WNR7YD zk9o&cxJie z6T0UT;1pUHyBPn(+M(MWomW#2Cv41gF=xNA!w@Cv!DvP}P@jECckmi#h`x&)k&&{M z4DQz1*J-m)DWs8RRXm&X4y6K@rhTO*T7MKaH(K z#^4wd#T!^FUQBDt`ErV6--#IMRM6=~<}BXoJS@9t=U#KDM1HS7h)3|Z;yh3S{T}52_srS{|OL| z!-a%u*|oAP+4mIHRmxB<(c4B8GYI3Gn*Unh5g3PiEr9k`840R|J;%!?b@HmUlt=kj zK^m764G7`SdIKx^4{eZjpM!64q7W7}gbU6Os_I zl0rO$EEHA5W``{klU#)A6+5Z^{AKJaaG-06lqSNqjH(a${t#XD5x>p!QVeTXLX-RF zM<5ybn(TSFN5*>Ylj=+yXKw^ka~gFL&vf12d3zr&G7CFSg^lm- z>6ATEi_et-ELSH!e$xTfEOBdJ!sHX;=M6-=IoGF6R#D#5kg{2XZy1 zlyjEJ)V2W*b=O$!j_tZNEf$FVW;F<-Dre1va=_`)O1x5SrAr@MiN>n-{Qj|pjk2z| zD^UDiz-=~IqXdeuf&;xGmRb>WHj0(50T?;H8nc*-lJkk?zgM* zk&Lo`H&NlEBF^Y4DS1^Z6gaqN^WG zRPRdik-oeK-F#W*MRdkAqfiVf=jgC%^NDy-iqyM1p!af!PL!xC>M1>w5*nLJH4qDy zTKpn>q-$a;6MtZOf6Y+iVYm8FSc0@!4$HUJub;PeC2VG@39m#{oVKVt^==L0R-Hl` zH?3)Rr1>JP0b$s!X3*YNU5oXI;kn(hYKnHOZJerOj*Q5oQmZ$8Bs!Qo>K(t{Fj;ai zg~cR_0#5`tJC~M(dG%V)jYO|i^XWJKLGHU=^?j`(UjR47|1C+MijVnm@~>9{p7J;- z@&YzUCMU%!5D0YXcS<-1v0)NbxGE;Q{Z}hK7GXk{)y>fbW;bd7XqNGsv8$9R-o#j^ zK+o7CF=UC=@-JDs*QTEs*p(&bqYbCdV^oDpG*YOAbSgRw?=zXD%R;OH6A#g$}&- zC$~;muh;6MBOBgacd!h58%o%tIAnnEX5^lG(So_@;3;31`fH(2Sgaz$sPmj@yTv9Hj8tYkp65xvr`!e8J5yXC?w z45JUa3W}HO;4=5R*6?B-<^mz+hjQ}KB5$FoomIYZc^X{tl7=Kwb}IuVHO1nX%wjpj z8dxON`vYDr6%1`B3vZA`|4JepoigSCHxixR4iEZdDdA|+_Et`uA-Ee@%vM#L)%9ObVnLF*p?1+9s z1jF316RUhPPiqT_?ZX(kjLOx3_lPBQ?+0Lq5Sn{+{GadwPspeA^>;~Uz@VYGq>v7_ z08}UcTS0OK&bM{IQN>CK$za;HOBIQ*q;>D3xH?N+aBWOCp0t9#qW8FbUTlZ~HtG^y z?2k8rN~+;=l&l{lptlg<{q)HO&un{`c{J|T*}70$Hn5+478D@po~4KA0HlC;{nKz0 z8krWy0V0h9H|cW4^O#-#^j|?8|JppMwAwb9(mGaHo(4n7Es_!@WhvSCRA<*PGrbO{ z$%-!b^7NUB21TRks9edA7Cq5oMI{YzO4*;_PkQ-sJM+Z=6oYRJDWiti;fjM89&^7R z`1bCT9!J2~j3lcrxoabjy)`6dckUj7arr4EsE#iQNzFAVwKWdaWTK*_1R7T?5NWJS zk#F-@K|Sc38L`0419A!kaOb7B!op1d!pxfNtFSgB_^uY){~8G`l7w0Y~;P0R_6U1-lS?w$@C_!lY{Z{{BLR^g*l~no8xIGwLn! z%SZYYgg~0b`$^aFGN0caGa-A5wjcc{+aw=&?5^lo-LGx<5^FbUTo=Z|aH|42mZW#w zwtv=HuC0|e9MH3p*PewguAEXbX=46X>L5LT$2yv=_VN*5`JE=}eb;r8)&c!bS_8<> z;W`O=myLC$fH1YXGkg;j<$8&f-K}PFnTkJ>{q&3dS~mOSJq*g240e!GW~|l=P0aNbD34nv=_!O?E4hh9xrWz6 ztn+gD0L!074zFzwNyq0m!eKky0DCnbvVpvzgL-RtC~G_xvkCZDrl&{qrIglSg$=qpij z|AH+@T7&$Y&dw8W5Rp|ovbM0L{l z_nRj<>L(pO0S79J5uojSRS8ntgF@fr>%Wyc;CF_eiIX z;q;T%XRPh?nO)7Wn&fcD1f?;NB?M9pt7L)?-KKPItkK<}mXtgP6|ix5RJP_r%$-X= zxlq0^%s&>Y9v&21!jv8Xix<$#g2%%yUW2)s3H*9b3PZF_vXr3F)&F`+oMaCdEqu26 z&(oYaVJ`DJ4Ze;P*5QI(%0R?hGL#r3-4$M?ceAqx3G@HMCyJtqfxa%>e>q(shg?lW zF=?JV6w&i_-`LPg7^F1ka`7C9|xwXT0WAT5bPPIty z7xYu6@m-V3c5L?KA-k?zDbTU-gf8Ce!lS;_z~ovsN0}hMsohn>t|?NwZct=ayvyU@ zydB&~gj=b!L&xG`-pU?dXAAdL!IvTMz(h7#>t~+Fhm*MiW^exKZ|6Wq4l3$H5w8@> zUFM#zY0Y3)s(sYTtJ}6VV-!5Ka>|bQUV42HNY-9lfts=Nze@rR$QDoiK&B}tDpIQp3lYf4h(%;YPEBi%i1j6WALwsY`64Gs z4|9;Lu&^?nRMqcRm!Lz8=vT<{x+d~HKd@)eL<1L1|NBdotsTOuKfj7=Ld@Jx6fee`do8^Adb@|k`mt)RLZy~ip? z{tIfqRint_iwA_O)d6WFL|DgzFQ-Gq)N6A?ZekTdZHuulUeovy5$Wmu3egdZabk`K zGlx-s20LZdz|M@KyUosb1u=;{b?!mH23I4p??wPrM3avG|CdZndf4Ax=4;aSWIX@;r#-WfYJLuqLV^tFVo;M zK->~hegFh@Q7MMPuEP*M7Pqd($oH?)s=8uH)MeVC83C*=^s_+A=Dc)vdegs-w0GAB z-pZ;(aw%)1W5guR2*l2yy_j|pNcm}_y)UMO|3yY4x2SCo_7VDpiy^lQxvyroibkzi zRUmy(i4U=zd*)5^@F9+=I=-Whi`d8_et2v=TDqJ`Bw@MwJWv9i0|)8Dz?<=3q|Xr{ zjoJz_AWQNATZ|z)>YUFK4#L5O0sy5V z&+X-<2;kh&LgI)L>bV=U*dz1s8L0E(H1^BWPxokGGV4f1_&zw?QXM#|w*ru-faa27 zhM;C;w1<`QCzK1x%<7jc1$Uxmc1qI#*hdZr`J0Gta1#N*bC_Sz;Y8+!EN10KWHao< z>Np?)iA}{03!~H`^xQE5{>|4tkU*ZiYUgAdrEs7}Z4S17m(XJlQ_}cK(H4&AHaJ#d zkM@wmCrgb1h*Sw$_gxZ_s7Y~P>y7>Qys((8rHN1g%+O=#GCd*R@`T{3#nQDY*kXzz zPu|Aq!;-!mi`-8Bqo9cbOm!D+7;2({nrpL)o7!WD1FoJryPeq-lxdlNoHxYpBl;e? z|1!%=D}EU*y)c^`u%LkAO%yd%GSL98WKbO;IJ+Gd>pPtGSQgZ^%64Q|gJ-heb8Mnp zgF8{&%y%$b^8VRg7*!7 zfcM2jegyc)>a)eNu-I|<#!j<$myKl-wsCqu`@6b(zdc~_3;y4ES}T)&p-z^KADdF* zr$gysr}+FJ-b1;=$}X6>x#`LKGT4Vs0$%*jnVjeMmClmO6~L9j1}sHiwb2<7VUU4z z&XvpcF*d%HyoU=}1qQVGszzLmi>=x5m# z0U_GuZ=+O<$PUcqGoGYjV)v{0s>-gNlkp+nR&Bw+4A=E4e3^m1&mI!P^(QrfrK*f# z*7M(xrs`n_J!#13?)UpuE^07$OMni03Vjg{rP(QMyf?|3a6~RXGS~gROty=hyuA|b ztIC5`;9j;J4}EgePS;E|)RqfTtv$+>bMMkk0)q!SV`Z!UJzCH|#!bp-)r@sn6lyhC zg*cF-OH%BAJHV2L2;uK5FQ&8Z6++;qX%&QrL!ABvX^qcN3{Kq;80NH@C|RjWRHI1< zj9Yrp4#z^S_O#R5m%zs2uNOhP|2lszEgyA4OdU8T3uO`tg}Q4_zid1}sE`x^8QL|$ zJ4qZXDkCC7H0)E>$ZxO?SjYHD8y>;k3Tt265=%Mw`)u?cR|Rr6$<>D3>@x)2>xYmI z6pdy@^J-z-6m;{t&S$s%_aX?)e*jsfN05wUGoX6M6B0Gn)E(_jfUUm`A+!Mkr(RaM zru}Q-<{BhWJ8hHM=7l8Wi;!GE{}xATGMwK|)^E-=!q4dOM8C#^TQj2NAWs{z)1}ZB zw%ga*PXBvO6fhDgI%A@m}w))%;G7=!B(^sT=~%>ndj#i!gE@CwLI^taUNliihyD0GE( z;y5+qvuB zUNNoY0T6g(zD=`9y}A`dR+#uQHS$MXehs$Pvag1o6;jw3Hqp`?l*JDbt{;ea=l$rS zJThyJ|7h*~=bz@h98Z0c>4-RWAkHC*X}GC@^=HTlo@}M#g{`3;px%jIc8^f_q{1eB5gUMKbg>3a_|ZHM2EsuOJw zbeNn3d9d4wir5Sz2sZs4E|#bfrHUkSRa(d)9fN15kg1Sh6-XTKK6V1 zI54V@Ilpksj^0-YXOOqNejdmJiw84rCI2|48cXQC@ay2}9LO`J56!2N%5tb;fA}m( z1Fo=u;PG#oWxvCKsHTHoB1Y(;q}2oaJ(8YGnH41&{oAxyQa-C)2Y&-|E!U{Nx8h;< z1*%a10g)O!$B)j1Xm6TXD9p`tCo+ej(Z-hO?|*DXOYspL&1?~6N(XP0mkx7qa|2xg zT@H#XA{m%lFbbLxaP~}Qvkdr@KN;?~#PvpVBVKPD&Uz?}?F-q!O6f;!y#FDzDewkE zC`8IqpH8=~X{7A~aS#Niu5mGs!-veP`%3^;Zxkz2?~j~MgDc>KUATmcI(ase5cJ>I zoLfUuM!c~e-?YOxT>Q5yr=|rHgG0^(yYmcCrW{5cLADuGB`bWGt85TbYJFUxRfEGL zxA1j_sk^a-evFv%Y}lDj8gG@*_Kv!NrMFkq#5IAQnVt_$a3LVjQ|viHo&?8(G&FT5 z97LKyOT@D^A~5vb1LE&!NbCzpL%)ik`T`8+hHzBd*bf-;P2~{HzJxhDFOeflR9iqPEGsvr8@y zshD!)-kL^3o0fNmr|A2V0ivdq?gha^Q+Byw`c8?tXEPrke&Qs1g(!uQJ+GP1Y6?RK zJ4KIRbB22GZgo+daPME{CDl zB}9V9ci^r~N^gmNLKCMKaO0Vgr7*tR=AZ$19hJvzC)zJ*bj zc?onZfj4*6Y_x%f1op=2CO4}>V}%QN{NKxJa>jgKyxKdR(|;qrxe3A2W=; z1V{=9)B)42R4R*Gs(5;EXy0X9F8}3^lci7mU>RcFiGSnE53(@eBX7=LYS6+{7uqU> z;}NA3Wz&9YQ9GVrLfl05WnEHO-1*qj!94k8LsWN#M@NS-2r0U*CYy*BR8Dj^MQWR( z|ItgOf#l>mNx$>CA3-1w*Iumxr#jjn5;@V8YzrU9G@cIs#<;3U`t}URg2D>ZchpW> z>P&_ehSFaBtsQO~s) zdY)`^J!wVjFR!(R$o;yltfnr3ll%p3yuL>O4p?ekb0|dbbvu!QF5#XLkF4c!S>_^t z?@<9T%_HF@HoJ56>`IJos(w8<-&OUWtH|8=_@1?<1Y9ln%d{rK+TW?%+D>^IehOwd z7_v+%feEW9C!fs*&!;YeIJZ4~cV>ULxAr5msr&oA(=Fg|;*atSO&!F%F7xZjMC-p( zr=HSCx^QVvLooMEUExq0iqLe$PzW}hTAiCF>&k@td0RxpncL?~!%rG8d2}I&!`eh~ z*~R<8X(WlkE3>)4K{(M08B8OYjNk7msQ>;2^j3&Eru^mpPjSEqRAokD(jc|4Og?q) zf7*&qQcZ&$m~gpVej0{~(Y#=uwPDWWyg+>#O5aSuSg*(uwP1py*RJOyMXoZq)4UIb zBC1@@Bfh-aihUjRi0L0vu3hj`0=*>PxLY%(aukP!N%JbYA2oJP$QnYAJPxj2w&>es)LQm`(S$chB&_gIY)D}g*Az8{(6_K&qJ7#Y!v>XfEQKN#&(hID4 zUjmoJZ|((EDLb1(LgE?H(1^2B#>>;uw?ELOz;cPghYn}g_1czcZDb4KRt#I3x|E=@ zjxM&C`h;5D>^Ey zFOdOc<%~@Pxi!ROA{(a&TG01b+<3S(=NBvj=(!3@o?BTi=^~+B1?EFwCn3sTfI2f4 z<+*D(;o3(%6r4|0w$0M&->C%&nJzk~&qdrg304$fXNaI^aGm!Vp4kuG4uTZezi9W0 z(7XFltLW^*fQz;|y$+LVW1Fx`6**`s+b&zClNlY?jCiRAjKz$?W$E^R<{GG;@urd) zGpOoKR9lL(l;KPDUy=dL1r!b=33uN9d+m?egBs}@)Qt5Lr5lP=65)IyG?Idh=}_OZ ze%Y@mTeUo!1LWm2b6ODGoP+)_F#0Eos6$~h$6HP4@*@EMKLEge^bL^a9_To@s4^5{ zn8Yzk&5p75(kO?CAyiaL%cqsNK3SY)a9UX0WDW5!>0*x*rR|+4(X!L%tU`pnY3j(E z4&fJb9UFhVXQHP(quwrd>24}d{Zz3Ow;bMih;Ojei7a}VHYL`ho-{(L%7H75H zJB(MHMr8f_XR6N6!u-cysHq!+^(|wRqK*DVw9bs2yz`9&jg|oVp0$WPnPZks7c*Al z4lQ&(W~U69;kX-TaWB#nb2vu)b#O~-saF~Q>BChSJ%i5IM+s`(_WAO(UCO;wgZ2ah zY2;#r8@l!%M~lGsRr|xo0koJ7D`{8C;lM*P2d(WCSj{(gqd2}n zR01huDxYhE;l>z%KzhCQ6hbfZgZ5kozAVc4el9azTBlsi}T61J86OHwl3dX#|J!}n6VcwXZVNKk_GQ#Sou zZBBy^ydNZM4hPY>H~78AY($+ac7nS6cn3Bplu$$1unZeO5LTSQY)Dz+$AF(8{>?E{~y64R7}tsS5up~wTnXcjD_d%gO}n8Ye$}q>ssi0x`x2` zCKJUOAglUSsgKX}3Wf$mBxqE2#-8k%(l1_vBU z|JF^B^AW_SZj{1x#FfOroH>Z7v*H+*km-u`ADU&8AMz%yKO#`emOSVGC(AKht!|im z#fJoArYBjr-D_C{JGeggn#DYr5o%WY2VAkHUVNTzFre7I7K^rUSRI|&=T10IQNq%T zoNyQ}vSL87+_~4VQHW^unJqkp2hRdwcCNdQB~t-_UmtUTgiAGSR-`WYPQuNHeDywL z?&=W0LS?MK+jG)QCM=Fxw|&42FUwyjp!h}DCMTJn;vmgaD;uu9{R+;z&UqMfuaOhVE1aHAu%VDz5ri}4Eje*!bO3}K>v zPyMM{Jo^a3+@`k6J_%txs<0;G^o$@#ILq>``T0F5eCOSnthwd(W}TmrRU}5R{~HjJn(zn>&&=F1H}&qjJ1Cl~Zr0p0$FoApza~^_T=S5eNXG>J;Q# zWfcQil?$c|&?4iye2BkLOM#0aoLP+*!XJ%ku@J=@24bXhlMl}Xq|u4-g{<{sr0PkH zBWUiKgTl1L@|6(a#$AC3u~=BrALnfU>~g#M{pm6`;s7wG!p=y4-_>6e4)pkBAW)y9+vub zz1POm6%As(B6zO%sGPS{=9)EQKR4+6t3#i%x|6HEn1$ciG?OG^H|*3u4Pah>qyf!% zxooNqHVNzzT@ZY44v0<%hHO;Kj;>~iym8=uu=%G#>JGZaOD7{@4Q;JdHcajNK&F)% z_H->$gmGke5ZNC?w+l39^oAH(^$)*Fm%~&qv|HxQevipZ@ZI!H_4cIo!A;fj;UsF} z0TlgFYpu3Onu5|bgudj?I|Ih3Sx1B_j2gW~M3F-oS9v+*5*sE2S=ENnGIY@}biH(9 z8O2WpdejU8Wi}3UQa%@T(b9c31JuQGQc|u3!%}<-Nnwi;MNml%0pp1*vpA0qMX_7& zmQ*A&C^a)e4#OhcW~v&9P~^~B`^w#Eb5Fni@>7)q0z8xvj2r7J4ank$`SsdP%_%_B z?PhV-82rWYz&h^!a!iES<7h?$*3v=4ViWt=t<47zh*3=J=P7tT!(_8*XwPMM{l9R6 z+#or9O#g<>$5aO6TWvNAB7HT^l*jKO#5+@KLA%Qh%jh_42AmagMvfCaI2ZnPyDzt5!=sP2X2zPWg-t%4N^^B)PR5vXd|x zAg&KHJ>+97mgwT6pmZ=kjBMW{eDql7>ji^AVyR^E`A7Ekkr^EQ33*|ZiS*efKB{ie zjf*YE;xY+V33dGtG)m;MdT^vBsizWIz8U=gXB5pHKIE8%R>70^9hil-DYVg6!yFqO zZ}RzTba>RyMT03D#Sq(x8}Gm-ozA2Q2$(toA=^6QQHB^@?g4D}#@d8m5choNS;*V`PJU&c0k?dk z#OIUX^O>{w$~|hrCQ(Cz?Q{&Ty5gQ2z7zFG;d3bsk>Nn@{=gis&A`FRf$^j2OOdN> zx)LQ@wSDm%(?kjx^^?#UlxImyPIXZ`A^KH0yh!2&C*veTAGQ?I=4SKpetbNeIs#p) z%Syz>Wbhp!wqP){+rPD-SH#;p+gH$XQy`nIxL4m%^&UFG5{gWT0mKjruYRy*otn*S zFpv%yY;Vpgef-m;z7)1`vRLZ&B!zy87o!dCl6PT7qNEZ(FBI@C8_#A~CXGKBe=oH* z%^Pf9>5I+?%raGzT%u{ySXG?k&KONr3x5By@i#gdX!y9&zj@ALg;qG?9>A0*^Buc5 z6j`wX2Sc_kbq95)^8TnWJVch^qtFM?;GUczh`lJwKzj%XC$P$ibrCe-TO3)R(EHv_ zED0OUZ?CQ-8(Ali*;6TaLU+fAI;w2%ANug7%dK8I87BnA?T8J-IeHGY7L3VWr1ClZ z+St6V*BKpqgI@VUay~lZdXwI+oblK@fKCg$B+J3WsT{5Q6pE1|_c~{2A>sgVF$y*$ z)OPZZ;aO}1Dtyo89vB`;@oi-I_P?)h%E8Ycm*FQnwrbphUv#RN;E`W~q8FN*xBFvs zY9vv`(t~n>E$D%@P2ua4FLi*2O_Wsifj-lnqS(}|Qg;i`^jo9gby65oP=H^Lh)fJL z^w_}}I-R)m+jK4L^Z#5W7pcR2gJ7ghAwr`rK7~wCY=TG$1PV;;9eI-HLQ;Ti1gFAGb2z(F#dr*GP{X7sx_RDYwtorMfL-se|>$?7K%JZuKWJGrc zp(St#(~ZBkR*w>4k3rTQza}k?$#)8LSVqSl2hlGL0Xx5uqA74zljK|tbI|Q`CR8p2 zzkN(&xRRqN*81c{eUJ5B?QV%igNeRk!9c&=e}kQQ+xOpzi#w0-03$RM1`LGl5#K(y z$Xo$tIElQRdxLY?J>q+@7)-q=AB9eW1g{#1je#4`1DDf@TOsyk))Wt#E0UsS9t07p<)>?tp7kiL z#iKw-c7)Q9=%koPPwumv5rKApROE8?F<)p(41v_Mlm1A#zTw_o>kX4l1-mj~yQ#=a zX#@^~yKmHjab3`I*?~A3Y?~%lq3ymHxp3OtnQvU>;g*uf&&^RPqgFE_|0=J8^;s%e zN-Y{mXi{h)y=$(V2j6xky6nANzdo#Tptgw*X`TE?cHi7+-dw)Ycf~dQMDjfgtl3O5 zb(}^QNCYL!VdBLz`N)&7WiA}Exk_tY;C2B$!v8cwE!4iRHl%;YiYd>i3J2B$sCzDf zR0!qs#I;n?ptOjZ9#p#jkoWp;Q-o^ONjbSBPUbn%S@{sSZcXp(am6b=O%^)$3M>MVNAcR!5gSHP{@b6@@V8NB+@^Nw>ff zVjVrX`F$Ppzn=DG)Gg>R>>&z%r4fi>Os1F5wPjb()%wVnj1>Zy$jPGC!b`2Gh?MNI zzuUa`41-$^!TkaIvLhXJR1s7u*&ni|WD?h&tsz-jDS84wPNnI)Vg>X9NV6-O-l0tB zo^k(G=mXe$rKyzdtHR<`{-%*ZbrYig5t=KP=mx)&0ngacRXpHLyXj+y_|clY|D;Oz zef=43`ED~NDUQ5~$k?}MG7%@Rpq{k*q?m8^`IU~b;s#DGSdUZm^d`SO-%3UjCe|>K z+Wo2LX;`SN3XjyAP@8iDs&tsdB?sh0kX*>+aMd4Ap* zQHz|m@t85o)xMQ}h9&)FTOPm4HbH^5O}LWCfZu#VV>BgVoxPOe6eC(M34#29{q>VD zd2PFA!0F<|&(aeyO;$_mB`E^t?r30lVV8Ro=1-(}F53~T1+Ora$j3l7M~wh*Gyts* za?NE4j7^QA*^|={4uTMkj9@?82C#QMpt1|~QvWFyVbqw&nM<5EGwPno!l?&@$I3M> z=U-by>+G!0%ZU~IKtD-}MJu7j_-AoEW!>a~Vl$&e&*wxkh!IGT8i3zUh2aX48@*^k$a6&5Mt?uZi&nx_6WV- zp0JCuZc9cW{yKl$s>BJ7)mR6ES<`Vk?jabF4o|QCgSVnRO(rSk8X@gp8$LJ}FdIg1 zu`0o;PbSfW#|d9OD|LdiuLmzS2ihj}%Vu6JQt@XgjLr*Vv5rqnFi0PTn^mn2PGEnV zIR_B5!!@m5B3aJ}g+`tc?GYh-|}4-wdTY>qrg0EPO?VZ8ZUhewPVG% z-)4N%mQNHyO9b>0iOh?txv-Z>#AJ<2T^|_kA!D<6VmC5kq(hZ8zef#Jpt4yO3xBrcA~c~2o9B(bL%ecI%quTtqm#s3pV zXJhck2f#;_4hvBr0E4P6@xyl}I&r(>mh`S)MDSpIeF1N9>&L46U@neyt18jEYELnh zm$n0UUR#!5yx0A+9X;SN`0PWkNi=u!3G#)Q*ej5q9s~Bjl#!^6Lh}@W*~oj!?iY7(_Ct;lNK^A(4w6&uAV2YP9=7SpEi=moquYG$PY=0L0;vSW1owSB` zA5@529l0t-&twaQLetPe^E650!aa3Qb0GK}Zmm$kz#$gHiolR=VrH)(5gUanOP6#2 znFOn*D<%aE%Hu`V`J>LjjZu%5Sk_qGsky0V7s;x<)vT5HoI-X+*;B}vdtgmZbBZJ6 z+XPNr7REJQv$Aee`u%ylAH#T9pwR{ZGcfmTGBHy=aAx$-KS{5`AnNx?0siF>_*&iM z$Y=4#U&O6st?qv3n6#nM**V4G`isVAEUl;6hR{@p%r1a>C;PdmR+42k@w@12KV)6#@n zg$;n}alo+9_|AxoPQQ2AINZhM8-f%J)t-V&$%@K#nB6Aa$r8*i7E9)pfxH9^CNva` zgPI2$?msPgKxbxxrHDR{*vr5t@_D;eWhtPj)sSa8CuU&6>I2$D7)OV)YV?>5(gIJR zHNN~bZYEUd7i!dFSKhmw-ZkG&dV>2RxBpA#Bjb01TYfk#Pio;IIV!ow5(ezrHOK93 zc-f=|{bi5hC)%Y=U@(|IMw@o(7a#MZ!Rf?8Ptq02Hzyi?wZe0r>w4BA@aLDPDSC$) zhu3s31U3z`gEqCV#PtizX1%=~90aBF4PH1$jN2)ty~MrF)Mgx zHW&W<&;4kQIh44gVi~1y0v65jww3v*&{eJSOoYOw>ZjQ$#d?6ipAWyO%ER~9^Zgwk;UhlsQ-&k?as%f z0#!vR&aMpk)a5W3#cwl)ys3vnK5JHDAknmGZGf=kk~%bTf^?D_zH(s>K9?f=GF8_b z5n6cpV+}LVRzf}(lPidVGlD>VtXU-FGRbG0!wqFHdqy()U||h>m{^HBdiHXy%l0F_ zv+HkaGMZ?6f5(?-xa-s{PJX?yf5hY&6$-ta2(`fdpa5jR>X{KDm-x76b(Lo~N#9&EZ8+8qMjgNT! zU2YftVY8`VLBO5nI6QYKKF87eUI95~u2}!c#9A;cnSCQSQ(R0J7-(w_Y ztJwq2Zv@&+bcx(7ho7-OpfHy1VQh(J>I-*+m?cHq!4}MIVrg}IUI52NcQj-UtREIn zaAZ*7l@H2lJ#9D2t}{z0^b+rLZem1thH z$0_Cf^Flu-Mmr(PeZharF$D3iip3+JlGImpe?)iXiu)>K2waZAs*Df*D4mrn+AFBe zzO6IsuzTy6zGa^AAjW1pTeyndWw@|H8~zR++COihr3+^tyF#VyxkPJ8X$N;k!DJC4>x@OE-F1I(dZ?@@gX{|o2`+PhhPXb7PElEaCgmvVh-EkO!_Dhs-d-CS9+w5 zbr)SzIZ?}Rb>M;sRnTiufdh_O#fqv%qkG3DZ~^9Jz70y?z@TU9Mi0nG**awL>G|W( zK~1%X4g*f)Z4Wrij>0=?Vk-wy#@&S@Pr z^uw-C5(;57FUcacnTU3HmsVaGLKKw9obhJ^cSlbrH2i>V2JJ)J*|Z*jTAPy1ZV(sA zrI{FM2$18nXpK}woTVtVg4zBt#r`gf<&zS1F}g#KtLgD0J)A@QaWUGS85i}mbL>{C}C`R19$zB?Ht&=v|BKZxE2|idf(#Mq(j1P zG$wj4wA!0PsR4kw;-Xckm4h{HO0mzKj=umhU@h5P>Tnm)(A2OjsN@v9jqKJ4%Q4c| zBo#*lfKw;e^Ese}*;;1%%8?>kLb+*|e2%{a2NziQK_EZw+-J9@oYT{6&~x4sMaWcRrG)R*Vrrui9Gf8lR%kee*W3GcY~C^M4Y)@>}LQE)9sOt4kMlxEY1p$v7! zfj*982HIj2?hEx>vf&}}=7%`Dh#yPUH^#a{Fn(icWl8pB^lt=s4?W=D40znCZA7aq zD&-Gw^=2Lv3b5QObHH-fLMQ&J6VZ>nh|XtEwPo5=AmXb@>$BQ;=;d^J*Jf~$beIku z7kTls^!%#htcphrsr_9kBYZz`j6-yta;V*mSfEpmi`6_$-8VulOx7H!?wdSB@ zQ|f2e`@8EFoi8t!D0w+%tRs-;{2nq8k+e6@P&gf-A)C%OY1>AdHYr$C9vkLqP(s=l zU{sV*0pTXH3dm%jm3OgbjRZf^bF>9e(!|ap+-AvCqmt3kz`9Pci z|4%NGQ0wvSKt42i;{VdbU8}3zTWq1e_KD%;F8fS0sOCra;G`abRWWo`FB)KUYZ@V_ zTg}dXPk%1WDeY~CXYWp69^%UJ2~8^zm?-aAbpJvJF41?Y+Gv*M@_~_pQte3R53f^m z%w^z1r}V%|sEaawWo3s#nNWU8FY@dOs_RoMUt>iYpeM?xynHRitk;0vBOi{k`C%{F z&W9R#3-uB>LNxeE@^QcE7`hX9up~8|KKcsOWG1`|&bKfva2wE&)fi>ARGHuFN|f3R zlaJv(m2}|f3}7T6c>5eTGVB@r*KZE1CJ!gq#qR)=!{(g@jXVWi%rbYso27f*(c)t2 zD9d8MV4ti|z$K^NAHy$@#7Sj3eYwh`2W7lk8JEMu59bqt9tx{Lxs62WfP6`EcK`2$ z%V1wHkgNkV$xz}JA8U0R<02P&!vn}u*|U9o!Ctf=M9vO?El#+Cods>J_aN*V2=44J zq2uB!B{EKR(c$Ar8Xm*FyasxqZ7E?~3=!!I#nud8-<1dF-LiGGc!w`yMXFZj4R7C9 z)-lF!JmGD?_~ydzI~kiV@G&`pZE-}9IQ6PlRvd6?HP+0>1iu$`b`p$Jc7&|3XKifh zlFyT}wignYPnJfQn(PVqw?;vy@QJ^g{l(8vB2~U;p@r3}X^kJ~p=Pr8ucPhQE+v7G zW$VUI_&KGDb44>%vC6$RXLrACF+&P7!$CGZ9YHVK zlsqLWG~fSUa>hq%WTg5@u*zCgTrY*IQU@-4C}45$GZB>D$v7}AIK7a1%1*Z35qg&0 z!qpmAvchR5JXcnVviZEp1RL)PP6|yz7H-~Q8^iK3R>+wOLBH`62|*qLFnb@{f+WXe zrDR_BvshFCJO4E4Ho&j~mJ6{^UxpunHVO`71ETBprSk?8S6*_{OYJ5I&?3MaRz*l& z3rvu9!WH_}mx0kv(M(LaH=wgcu|tGUka|eXgBgB0Fr_kiYHj&u7N+n!ODN7JKX;Ck`nV*KyLDS}j2qI(-gs6Fv3p zeuqW>xv;@}QhNk3j83E1{Jk+^{>tWXtiLRl%%^cxLUwL zf(`UZ^c+sY`lKT)T=d6pu?s!w{*Kg+t~8sr;~qtB>KI;AVO2OfST=Nm9COIYKTlKY z!|kUs8fxs^TG2EbFi(2gR6JRskhN3bE{*PL%G+59X3{IN-HmYcIed3IlqGtzS0}N~ z|Kr zhetFtZF-Le^x+2Q35GSvs`y00f@Bjs(0Psn`z@Pl{bRNjUhrj=ov|=ro5&wcd`MQf z|Nkv$CrI@tx8?{H%qOpZ)LVH<*^vYFkr+$OT8Z<*A(H?O+5WC^qy)^Kb6pg-S z_P{uccbz;mT`=XQcrt2XfB5kDSQW{Q%p+UQF>oFBNR5Ho-xz}AtO9mrEk3qmp_PsS zs{OH1hEE?}X~6JEjKhK3E`9MM5e<~Z)@3$nV@P8zZ|H%*(HjU!fh8*9H-|jV;xrcucw#Iq(Y>rET|Vd@ly2_ zj@kt9t58k@k-up7pS3C}72z~3lde3aQ5oMeLBr_6%W1l>_I;3SX%EP}2Wf|*2hx3> zvUwt{W0ZFFhawr>f$&QJv0f_hB0kSTY7Tp6s=8ja)YNi~JP$}U{MgMd4OclCg>G8( z3>C-H?RNKa0VjW5O5Esb!2eH_P?s~AMSTwX6A6(mq#C z2Db=ya9L-?A!~0D`Z)}>6rI@nwds#mN4~5qvox5*Pjo3hJAI@r8ey_` zg7yV_n)g2ymSzI~DnoJ&IDgqoy4QSMB+BCCSR#Ji9iQ)Jym$H_i{SHD=GP?QPX4cg zc)B+HRKo1A)D?JoTYRW7sYFke9+tY8a_D_r0K*J&=yzXoG57{4K8~epMuj|CD-RJC zT(yPQyBZ zmdB}xVE$Lhu77xk{?37McBj5(zWonH?R2~dv1u078nNVEemih8A^86`c)!}4Ps?vB zbVZ+ACDuPFN^;kW zj0l}uP=+h)!HWqZJvZ)I?P34G?@)noe^D#{m@*$c#h&Av6h?(<0&(HEnWr1GM;qYG z*~h&3R=z}kTbN9{GTEn^aqJFGRp}s?NCI<<{7ZMWV$eU_Kre{D{PR{IRl$OaB3#lF zN2B5GUF7m$Nt7hxOurhe84(a68a`HEi(v2E=LB*3H#w^_yTKi4LBj4cF;4eS1N*2( zIoe(V_iqzWRSYK|{xyke4JV?`2?1_Pb5=hB0!Mr$%j=yfloHh?*bAC`fw~ysMl;Y4 zPl|7GO-K=pC-tZ9JSn)2;j2E`OJi`D(Lk?iUJk2QEmy+uL+IC-HETYdfsKJGZw{5j zP!@SH6l3nV%|oUmv>wq}Ti4|JW+TH5U$`-?N>W-xb}G?X4|YI>P-9ok)t;dl=T)QG zqUW6~31FJ&Ln}SWyKehCw<0Gx5y->&2~F8jSur+utR{N=R|ITZnp7CpzmbmhwV@71 zymll2zfdJ#lNQRmo7l#{Q=4|<5{j!W{>yyv0X@vwa4Wz+q z?Zy+mW>lZzCNT^A-?Y@N|4!bxlQDi>3so61(WJxC_qTgNpKvgQ5hxs8GS!Puf+V#v zvK8p~B8fO}c2Uzq^kL?5hwF0bna{StAQv-|7RYAW&QjhZ z2?4D0OoGf>GOUG{u~`!-f-6EJX508S6Vt2`w}4Q~UC|?2j3%u%QyaZsYxJq-B>kZS z+LdnQ6{J1mf*y!g>()BfZ#>yWI?f}6cP|*8wVBS@WreOA{JE1g>Qx?ioFK)%44k}V z$V^v?;P#wl&f?Wq3{@+xZG+DN6pt|+oVA@gSV^{(T299EZ=V$5+R+A+R1vA^`^ejT z@nUHll5ldb%e5^O5m++TJk#khFe@@;9F#f`e&!o-tlMJ>Wv zpCYe?TOy+?Ubge&q$L_U`E!VyivsK_-)2PUdH0-a!}eCp6|z4|sf*~Z!;g+#Z+)0U zDK>Uix%lL^Kxow(<(+^0a1<`x#CDvh`+By*-cQu6IA|M0EN_zdOxlQB)X?PETI13o zYmuA*lw3lXeC?nQHgtQi#Xc5AYb`_591-ybQS)vSDq{pE_cD~-U;oD1?5xsDC&$Mc zADQG>;YCxsQEx2kG~-+6--An{RhXsXpRQ^(&1kC5t+z9QKH~yezCoFvQYFvE6Bd>( zUr-OhpJff;W0O>9#h+_`+0pn0??hXF%Yqb1b@59Dxma9q{R4P>a~RbS*MGh+Ygm*9 z15}tn`F^<38N>4HjaEQw6M%>zm51lM{>S3AEBq>KV!b>RT>c}v0lS9weAO&!c=X6) zo_G#^j6{*~(|<}EcHdsK(krNu0gB&m7Qkzx&8f|2v~QmyDEud}H4XZH>SSI@~K$NiU+QV?U`W=;_ABXyGDkS<+-i^0`)xs8)} z=^H+9K$Aoek(7M*j{!lM77}(?ztt1Xm9_yKcac|T27o$oCrY@6b*g5B480 zRrZB4`K|oIt430fuPc_`si$~5zFV#vZz)HB&vV5Wz->NpjJy2o3 z`u7OuEMBubkl8$mkM=v2MEIUVL~w`R+z%9DB3~)bnM|0CwFC6xJf!>Js9=U+$$0wG zvi1#k*LU$kspISn?2OUEB7cjq*4j29`k05g5m68sv98{EuC?`L1e6sU5T{;5BYQQ> zh0oL@kanGaz?>Ls=vH3W4VxqN{q@x~ePvTd!O-6V|4JWzyZq=QRw^-BrIAagt( zG?PG}@1QNvdAE&XhPnr>ACVU+if{X}Nx2h&-s+mWZf59Vr?|c{Q1cZF()SvZDN#JG z9mT^+2e7tK7isJOuTgn`IOi*HC-##Y7eXj;ey77y7~3`lyEZXyi(#9b15mm%H24ODFqo|aG#qnAwaS9mvp`NX% zy8#s%0Z0PN%FQ@)PEfAp)$GMMuO7@xV?q=vpcVlySb5^^!18-G;#KgSGi-wGUJD+} znESuC%zxMf&=dA68c7G#s?VbopHhgdCy({o%F2Y)FmDkk2c@08V1tCFzRSkpQ61z{NPX=EAo!LmS9DigwT;szIau{=d=e#>}g7VtsOyzG?~Q&s@Sq#BG_0!-B+;$ z4F<|bp$J3a7hp)5R1`gDD9tLD6q3xaR?E(dKfw6RNOwauQTcqYYKeQ9TZ=&$Q3@_w zGey)ThEa>5dSUYo)&cj#_`PNSvU+lFYhA;?3)=yB+b@Q5$tJabc_--SPDB=usFGuyIy8 z=ODB*O~iul2dPEl6^+;7f3vBCyU@}%F7!xt-pq>```dmp!4#FHFoTCzb1+)WZ5u=w zmShi9HR0`&aoZC-r~VR|!sR(#A7S5rZ-Rj%m!A_-!mgy9`?6C* z!8?$?265fi0w2>sprR~@j0u&eIB!L#FN!D=P#))A!|V?%JOL6?)qv1)z4-g*j+nIE_Z20oQw%3tVWl9t;t;dadPkIT6GeCvVboa}n!b z=q7hJ*61uEw|`5Uxnr^IpOsl{#@MG@5fCf68Qd1%LUN~(iQDg0#s!Zx(GK~fyJzv| zqRTY@r#zI|I=@ru=U`_zt$yu+6Y7X&LMe@y=>D2O71%kXbY$MmPa*}R!B9|L0S z<34Vmv`dO*Q?#n5Ufk#!l7>>QRH|a*G!H;Wnyo);7v#o7-V3!?j83q%3%*i5blZ zcX{?`|7Q|gQ=356`xlvIG8d3K!$p2XqvNMY_Ig9Ign9EPUb62S4j@hzF{n{Wzu5YY z6mFQ+P+N2)=e6XYqA@7-A-b?EEA--kHghk`UFi@PE!O@gG-=3XFfnXKE0efbWPEa++y8(BK#HE#n3jJj5piP&aRgN}`RlLY? zadBSo`@23-QLXOubah_oGM{I1MfoFZGD;Tw5}OFEKOBh9Ni_T4e2FI#O{hp9?i-a>qi?NhmvgzL_@-k zsmNh0``9R0iUN>K$8daH*2=K+unHEeFA5`Zagio$V8y2MaRctFayUJr{=Lr>fERnykFV z@-glA1sE>_@(nOV2q>H33Y;+c10-G`T?OFvPamYbW9x<%fg(lrRg<%LU{@6jK2_sVcXODk=o8 zNByJ`Cg%_A#KtqSRLPcP{!guMBXc&2cegs@WrWWDi4QJDu7j(wuNWed6oRXVO%o_l zUcUy4+OE!-;&d)%%2`s5>O9KFPVjLt(lKL@XRJBvFmjOS7P>hO1wS2ek61Wg?>unC>KB!-2TUclI4EaOlQozL_?wC@6aaQ)eJ%MKpOdwE3^!XzMD zQaJpSU0_v|DqeJW)5#+I0?<}+s@-L1kae&J**e^=;r?uRZ{;Y|t{#@`ielFuEq z&$TPJ1J@-+jyuHXb`=KdSZuJmxudU=9(xdqHD09uu1Lmp%OXb|Pjx^qo|9O+%qSNw{*)wCJehNLgm zM3PhK;;4n5{YjX^&(KnJ%G)~aQ>_VykmYrS_Ed>?c3d?-VDy|(31@TM zHxF0(R}AoF8c2*9AmvIlL!87p|E@L`SX?d7gyMO+FJCi%NZ#T-r)uk}<&jC$4RW}I z!_pQP*3qE)*l|4JfQIDB5jKC)Bz~O^plk0VmOVGo>x)g`E!7i9@fkyS%IeUsDz!lS zHj8qV5WGS-BxvkH_m?dlg4Jz_Sscub!ic4x&n^$?3=s2udNXln7g`}lRy4rpu%f_1 zsADMF$U@;i%fQrqAzPgFk8ksLG{B;LYB{b1oK%6#p%Yy`>}1K*(|)?e2P-3?$R_24 z0EU$DC`hH4`GR08ysERB<~2RS9jXO=KC+b)0d`38Q^s9MO&_z3Ff#vPfKQ296I^QF z`<|Y)XCW!0KGd7j(Wgy3+96zQrZc(AZP+FjR!hPUe-);HLUdIUtZQgmmj@ASl)&(I5ph0fod+^E&FFzODa z5iGKKTEMO~jd!j%cz4-Z92UE_0s6@ViWD%F-v4~tEJt{RA%ZBaPC%amNY7DaR}ob* zS+2rU=2+md)ArksE?ku|YwqsrA(n%7Ox(I6F58A_96#oKE`Cspw!XJ!I*opFG`?U) zFo`d#HQ%_LJYYkw?W^u@vT$HdpHcw&qv2O9YYU0uK-h=LBiv3T6W0Aj`3`zI|4Sgr zz1rW`FtHL6<&T@nOaXAPMX+Zjas=4|0d$fq7)hS(rJlb5qk-45gCUYPLIXST15ljM zb(zwf0~4Jd5~ZLEYNszfavjXTQdnqKLRnu>e+HuDmMOG3WvSdSVV7SksUjYI|ESMjwD2|E9-_C)lpcyER8r`4W`^x1yn7RbC*f)C% zRpUGU6e&?UAFLL7;ZSp$bcUWEo~`~WX1O~1gS<@Zor@#2=*@RChUNVtN99s?5#IM@ zPHi+qKcc38=etq$;u)$`7^(T7&%be76-M)&#b6R)j2ey4*gp?*ZTk#o=#=(=;0tql zi2HyX+e?}IQgk+l2k}FSC4Y;!9l+TGH3A=u@E=EI&E=rvogU1|w}!p8wpbubl5k<=-*EGA0&!liQ0O1M>e4<8i@ zXG|*IEq#!m0vxD&!y$b3DE1P@p~x%$Tj@fM@IvK+Jv6hPyz+aF;6e5QpMgU%maV+U z;tDfwR>-G*OY$Gd!T>jjlj4KkhN61YQd3&})E3(dX-J`hx95?|XAHC}2$*J4O`(x+ z&N*^Kf1zXjH=h@cTsB1QLEuXB6=O=|jx93VFZk4@a+UZNKv}-+1sM~(BCZDOQQGsT zLpgK)toU~aM4>O$8}hhw!r*}#E}VGVsFjom z7vGBDOLqU<5tYfmXbBU@v2NP4E9k8cuLs?1+UX`5V0zO8I7W{~{m6d{L5pZT46m_#Z-U-k#hbvUzPBuDAHtXmo!3Av^;LqH^3`v*I63ZI!BRuw_cmyCpo z5hou3EMC;Kv&o(W4MIs-&ZE1vllx}OQ)lfKjAJ~~B^YGJ)cr)Ttnb0HFj3kRbr9Hk zHXj7D)b?%2X2I(%!AIPZ5H z!YZt-aS#$wH#1_Z%?LBMy#tVzRS1{QL{~ZCMTL69LEWP4>QYylXE;+W*QNi{(!8Il zaUIyBI2EOxCxOeMc;fruiEk$35ErskX1jrLzlF7GoAxj=Q?azzLEoMKz)uDVIZ%X7 zW*#4U{xA-b{nRSj&L@90#8nQ-em$ckV`b}h<)y&#>I!TPhLyWc;Yv7GVU=5Oonr{S z^Fa=N!X=6Xusf)E(tDCny9W_~Z}2Xtfu}L!<+Qi@x^^p}aV2-^shrr?%7&%8rgl$H zk{Cuv7-dihLAtMaY4Q4Pa+Pt!&Sk`D@Buuup4xovz0>xJ5b;s|#bI8E`$HelX`Cgo zYbTGCL~cff)}1!G?79HGpp}!Xf4O5qzmRkhINE+V5^`hfKN9P4>dU=6i=AgIk9vGf zzseqGSSuU(CJ9GwA2_nElg$Y`_{GnPLEgp1g;0e~4}T@nL$bwI=F(uBT&=>s?un~< za?vv7lh|z%0EDt>_*Z5DtdVr4&1fp!hkl{!>gSY`7$yffMw8{=5$?sl%7v9SStm`? zJ$ZlarM~5O9&P#;TX9i@@XG258tx|>xTTZ^%uyK87%@g%F2e!K7gPW59B z1%^<}?K@BomDHrDm>>DtDwV5BCVryC&&od!yP&! zju@foaG?-64{g{x3;z3Qk&Uvtx3d&o7?MwYvO1VZP;7m!b^H?ukWUY@hvI%VNRa3? z0IHq;N26ZMzMx!m`kNtK&Vvu>wcYpBKl7YtFlPX$fa(+q2pXXt0LxHH@J8+O_*gHi zd`or{z4!7$^i%mdA<{r+jItk{^W-C+O-#}*TA*4ewq8d6ZY-}8144t8Gz1cLs#*-{ z8KcaG2R={ZGIw=jkB?aq@Exn$QVdI4Tq5I}nDDg9r3N72NQJ$eI$hfOuF3po_&#pt z3fPs^9e1XE=#s-cFwC%X-NwAnrezo+D$qjj&&lV>2;A%J!nxuH&$-d27P{GfHGd8~3ZNNyD7f@P4T1_7K<{IE;fY zhin*~9D2)pd_u_O(m$%EJ&?lsVTf&N^TtNL&@1tRr-pPvnYxUEFW>8h$njSiv_0R~JT%cE$ryt7z9Fah*X9l+ z+5eT`rJw@zHHm3uSvW2+6h;b;Uxld?0(kwjOys3D`+L$J=8{2C&MKa}!H)3L%X7uh zQ{aU}O?61kTmd&U+?af}a;YGa^3$HL3@}v_y6IQy=yQz28PKt6TP-qjv$>d1oqV!^ z!{^PTBMT_H4B^eZQ@}`J`upmBYKr+}|3HJw0H5$)b7Y~*gD>}Oyhw^erJ)!UF!&v+ zHP)$=+A-4k|7eT^l|H6{nT3*Vkbg40QlWDk z5DsBjL83PQ^)!KPIkbjxYl)Bbb4l7k71K=ynRc}i4VwxRk(Ilw7h%*e1^mpT_k?wL z@KB{8fs$2uSqtLO?I!K@e41NzzGhQ>cXO-GZcp0AMFX|lY_slaJg6(TStJPBM2y>!)5OtBc@_jt&b1pd>z^7%T~ z(NfwjtQ?IRhu)J5BN6RpF8w7$>4ZpR407ehe*ev+T(_l0u~ThB&VG>ZX+T4^bp za#SiX*uDd-_A8=t>0$(O!ycytQ4aF6*6wDy0#|LCNdX z2TS|#I6zUC3?wMLB~|`aPc!X#tKRPizErAkCg2bFZwA$w-c`uJ<&~^$=mF?fKBP0* z>X)0Df$aesYqH&A@=;0^ZO7JF;At(`;?)_<%&t;Yt?p~;c5^sGwcgIKN;G*UmtDTo z79*;Cuv*&Af2gtYJiIbtl;O(2>5WX}ErBP-cbIqXnSV7_0(XYMp+S0=e88bwWVca@_R!$(U#EMk} zW1a}d#pDUwGZGXQ;IgRO&xtZ{LXR|*oY}Y7IqoU{N*BzcVZJi>o5{bpLnz&!m)YFn zppcV+L4=uBAUB@%1*uqwuP8sNpgyf^U6eYjP=0)V{X2*v#OPV0pn8-jk?C#p|$-n6`W67oVrxdC2X z+JCX>TBUKzI-g<=DeYfrXgWy_@z&`Q4RoU3UP)?V*6b9a-Rc!E-nA^&X~b09uhg4hd6tWHj3WOW7J?3)0ahlk#P6_WPz# z7NKmrVeZ>zB!zJm1E3#UIq@FoFmCej?j$saX5`c6JdJmDNw6@H*0sDt-@-RIbIA{D zfr2o}-&&!y&@fo<^Je_^5{t5*ZWs*-Qf-!uy5hid$fuhw66~bzqK|{|+4&FnO?|y# z>R;mS|Jv#&G+gkKQ?c5meyoC_oWiuiNw;^N?`kMeDU{Y(g+OTTW+6RZ3eoZW^u4IEu-k)S{NfK(Y3p1f-=57Yh`WOV+h#0Jb$x5dYl-ojDOXs1 zfR$`9L%Z05R0(@^x1U~HC=$2#P*>xId+kmPi;Ofk<|5+y36j>Tk26&{)Y?y>6+xZb(gPW+=@|4yFSWfxOCsgzE9`(_~7!n z)FP>z5+P>d1T|GWb)^2u^M@cxAaES^wHb!sw4$Yxq;i~FGW4nGxr=lDwSz(M$`<6+ zAd%?o$RS@Ox@5MGgGy!_U2-szNYhjE_Z110>^RCk{1ak%aOenTt=x-orG**4SX(kJ^Wnav1B8DW3F&wlR=@$U5D7j5}vR4y&54-_#U!z}iaAO_}w8f%VF=p7^iYU%M-RF`7R zGnIkfmBhm|7%yeA&B%Q>4~Ww)7I8;_oU%V9JyE5R!2sYw2A&Y1^`}k0Xi@!D;LWM{ zttOM?j>iK*{HOyRS_uckywHB@AKSlk6~_UnfRKvQgBS>ukuN_waiE?oGSJJmKRla% zN0j?pF=sasu_bL0DtWKTL9iueZxSa~UjQ>c`3z>v6PtD9`KzU>(2dinXMVgg;EO(m zTp@W%A$!HB^vM!O(CG)9ac?Zy>_Rj1_KksFN>p!LvC626Sv1y@$$+Plw9o#I{IRNR z20SC0_2;$E--sW4cHM7a6=C=mQ(l?&Sf?V(&2J^T0&36 zM*^2Zzaq57_c~knQz^l{9~$2vTHc{ecmW;1HE;=;wrsYoplTUj;b&-A6}KnoVVr%H zT~GDvlUoym;4=h&{R2?)$Xg)p_mWjA-m_Nlu3M9=Fb=3fy87lR<@4K`zt5xSfjxj8 zz5nAKM3!uCSStey8aF!CT%DI!x}tPw9SB)DaQ+_9IhYoy9Gn;iO?1_D9;iiEP77JQ zb?91+WP^PLCqb=mdD}O-AFNk`=A1fl-Ip|Z9z?I!PQ1y8`?9^;6Y;P~{<2Iu>vEns z6qs?pqaSh?MM(Ng`eGoVmjmPSs9X57-fEXx8&}`Z#v=vcjvJp#&wxsf6m+`c3ZqOb zA`>JhloQ&esLa|o=yTcJIY1kyjToD(U?7h zY+Bbpn8*5xnlaW}MY$Rd3=`r~ho-3Zvd2s*4(m1>sgf3r4B-!n)5?_@85rd!jxn*? z69th+9tXb2KBzvRMsFeNLOfUzPw6xay)`NsGY$vc-rY9xwuR3_&+9Z}hd-uOpy%|Y zE_?KTfercOw@#Vr+a$uh46lg;QpWH%X~O-Ch_r!v6^VeeZ*M-;g#}GAv6zfOiHiR= z6W2RLhPt_w+$2k4*Qm7Ngh#-i(LFTeR7`+7x?6M7D#Sp0l;rv)6Pe|74tjLixuR?A z5y3idk7Wu%SO5o89p2G&>nk-Ajg{F~Zhcm(JoWB1D>x)ck-3@dppHm-a&bDyb;MrQ zs6A{vd?WSrG5k3f43am4jv(^prG>lZV%@i0JDHdKL9fPLHe6pg@cdgl%kXYPo<%Xi?(C z>d4uvEfu$t4U`BPmRJ*){R#TYL7bekko_qSH-v|(&XSr=@VgEV2ib@J-ueHI z063$=;9;Yl5Dx95NURwz!GmL?8$qst%?in_0tY1O^VGV}_nP};_23(fd{P8a+XhoeK*s@yAH+B9(VSc3K!vWHI&Ae(Dwt2ILYKg$ zX|;Z{skM71C?Z`=UvGBOOr4)=Gd6i zExmEP(2hb1Z}Hh?x}e*DCiY=Su(MLSZXvSIh?hK-XK2v++F^-+@yej@i9vabIb@&h zJs6-0uz~ZDC0Tor#^zNpbjSI1P8E{qXfw8byT;1wDY33QD(7%YLi!xl(* z9GY%bAERh#)>dF_x6+UQI2tWT-P&sTbrXPD`#7P-GB>#rE|R2h-FIL>?8x^|SL+N` zXLyl%fgr2kt;mv3hIfgyPOMTTR~C~D@lSPP{g~!Wn0Q#Ba%i*MGOg5?~Oj6q|Fu-q9Sr$%)m!wb^Gs@U(73C z$qL+61Zyq6Aa6?Pw1KPzx1LrzB_l6U!{#HxzE(n3P``q3r0KKUSKss(!US2bWf#P_qv}X*ac#~^-9V8B?YHHwT~w! z!AEjIK~s>Qi3VJ@96LN?t=t%EE8JvPporH>-@Uzq#4*S$e4r7;KGPaLU>-Fmu;)(` zx5{lR?Pu_nT~Lyx&iQF^-@w1*c}#zn$faY>GVyCGR5=$qLCo|%J`P9<-Onkc9`B+> zD&%QTEw_Z5bLqJ6di$+vWAsNi7GSAK6ug8T(kt%MSCx>pcuNJYzaxG+cfKx+N8}w*M4S(rXWXBZ7;wv_-C4@R!Tt>oRt!#aoksxjMzQUAMk}B zPvlUzP!_av^!B)bF2;;1X`YvMz7hObCKBnroEf~BJcd;#`fklL{J`$MQ!*Ey0^opl zj6B%~^B+XJj_IM>o++`nB%xh`vDeF?Mqe_uv;)KS{+2rUOwNY;uHdZSxC=l zUD`NT2Q>-|IS_zvjD)OQYN=$cok!L%Y4)jn4mmOXwSMh>6vVjv#ccUWXz4hD52VM2?{C@A8Mv_)5kZX zfyvuwbNX+0mC2i%K^*tDJm2(F+R@SeV4+(xQU@;}P< zBFa&9`x}5a$$f=0D+Kt0bg~2L3kWqfOa~VV=C>yl_a3?{yY{D%%?Rl$D~M^9A31No~b*&$g{Y=Gw$NC(>CBHSxv;JY@{CQ`0P6(UsQ~ zCCdcz;tQfUw1(Ob|Pp$rn+`|25V;@@cY)htX$$*t0&e}`ajaCsed`u(wyCe zQOJgGxv!PQfN@H>*AQmBn$1lc;Kh9Y+m8_QD!P*=AM=CQtL6BhlJvQo`?|*ABplU| zc?%1m{j`0ew}~(MKF9c3ow9E;hiKVrxmIlWMm><3)XmwGE3hXMK6Nn^sB4T%}=a+h1v8O2lk;M|-E>Xe1=KnF<_7 z43B~^UlOvJi4UQ1;o(1)1I*XH%rHVpYj5{v59W$dH+!~gljC+82c@gjj+%M^r~a@< ziKvjlWs+8YK4oEQ`5&R_#YHzQ93B6yl~{Fp{`h$KROo+qV1!30ibQWxTcYkR`&z4q zr1;Y}bh5XsFgaM&$RsO@bt^^K?Pu}ZQO0LG1k0bZAgk)7GNls-@YrjY^grIr4~8CJ zJn$apb9Y(LR9YZu9vgz&lJy}3>c|L{% zQyX`8s$gk&bQAZ88l)tR0mJC>+vjwE&g)?3fQHro(K&KB%M0M+k$Zxzn6os6a@RL~ zh@7-@8?5{}zRgcx%ZR7v3f>S7C=eJQ{6E>xY6A0Mkrq~pA9JA-Y}q-1*m52srkVbL zbNBVGYFwiOt&-TJ7k}Ma&ec^# z>WdgprF#!RbOEbs0A3Wi8GqN1l2VT(`~Hvs0_Dx1V!SLPcn&19H7HDwoKE^mLb66vihG)h8D+37C}@zLeJA`2QAKaA6X8&t&q{Q^8R z0FnhsReM%otdS-p2YD#2+@*wHyfN$# zx1sFYn=msY;;_i{KUCax4$M6{UF8PoJX-MbjyrSnw;R*xEBTqFdexAEi0gXSmTm06 zeh;vYy=4&NIpItZ4Uaq?OPAssxHzL6UVVU1kEegHy1v($dLwt3!EWnivhV!HJ`wR1 z=93;OM;cdDd`aJF(u!c4=~X~$D8fWJ2alBd^YY1kL+?=*E~IB)n<8xh5Ga!D+kSGE zomaaMO^X`T;4pf`BCvAB^0bL$7j6-DWAJ1swa!{@I;m6xVD4=Cziq_&{SI1_!4Iou zSU4Ji16k%wE|0l=lM zDc7?T7_3us8qi$VZldu#1AG~-u@|@AwfQwzs@2kozKdV?o)X`AFyRUIdlRMqG(4TaQ$ZAyXzI@Pf@+Kg(n+# zUSHahA~lrt+&aiU%PiRBtR?!*h7GF}3W-f~OP4hrzQ6#&ZqsFW)8%3&SUG2D7mzH8 zZ12Ba(F`0%uvEwMf>)`fwggRpu}?MV13T=(j1{2~TFrjssh9~^X4#R&Hk66or5XvU zeAcZH6%cAah1%=?8l|7FWb9X93K{IdNQF@pZu2OzjeScP{Rhk?kG_HxPZ9f*dNHfw zgbE_K-!Y8Tn>WZAxekkBCciXcC@OC%Ar}}bRtpp;vcWn#996r0xj7H1F}vv~&z-u)kYBNFjQHj9CJh|w zGE2+~r!>(O`nMRrA4k7KAOz`j`Gt{-KL$kD>Ivuo*M^8*FJTYbu1FiWGnlZv)Hj#XOT!v{j*|-gP()VSN9EQYh$0t zNPDB5W#Li+B$$lwu{Fs`=kqU*l?ZnE(d1S0(Eg$z5D}$V5X|~db}i(EIqQ898=WYQ zk|FHf(& zMIDtS*ny>FZ6j}@Ae8;%@2*^g+p5Xw^W8$z?}*LnFI(`9KV3o~{XFCt&H8g23FlmZ z)xB&m0V=X!bc-n<^cCpiYj%R5?YPutQDseXzjNi*!@GeXSj)TZ+x#C+Fv!$iZwjIG zz3#MF@6#e8JrAJ(We&n$oj+D~5pn0OBCzrnaJsPpSM418Rut!8tjDqC33w)w@TTqx z-6AfmLiJK0b<`iBPV83h00E-bTZ)vrHfmgQa5U40X(p($9r(Sm$i9hXww!L(e1bXe zo#Zo$C&ovrND}^VbI8`)852T58uX3;jEMuVBP#I(v&nu_Z#b_ey;^@em&z7YJ@_{H zq*MX+XHyv_4-6br_uYGQPgM0{gHul|swF4UvK-(?VJAIgT#>b3Gn*VOgGTRFIT-{R zuU}zJprdu|LZ>OF0>5S2~J+8{YNmG_FA37 zZ9u3FNBW4ir^y~AOS}OY4d8*H&tll9muTVQ5&4et(@oAQ0wB-(p9!ly^IdLS{%ik@ zP-1-jgs@1F?*x7EFoR@hqqxL{4i0TTdKiG<33YeM;}Qe6g3M$4cV>=2e|& zbOySFbuXJ~_*HHtCQLgPAwSC`DA^Q8`VC9uzN`MlD*z+OLJgFqX;4Nh9yY-(5$D;I zTdgR0;k#oRxRk3I&#?(~sXf1(($TvZ@$oSdvL#4+v78W)V}f6|^glWWU=4Ds%Akf# zxY2+3_ji3noFV3%513L3F}>9IbRVDl?%p4sik_hg!aak4B}yr)RV)qjsNOt*elYKUDH=%9$);xWFR#}uPtXN})y zU{x~Yd!D)q8Fd)J4?Z`R=vr-%u${y1p8bQ-^w69P3UFfV^&Jt**G{Z_WZ_k9 z+Zq^RZ^7Z;ZZhS{)3qqgF<+8%4yQBYouR-{r7wl|eo^#2N!fW`KVln%S3{!O!(3ZZ zMP()sEVnQ=RhzaJY+xQCy}SW4ADWx?JM#NtAJLFTh~^v796)cXe|7v;j;#4m9oUG0 z$9gnPR@kUAlA|Z%irISDY7*}gdL`+K;NZR{Hu*SxG|fo()~C7j4xa8}X!smQ`>_}} zO)YscVQ0MT;1!;we>7BhLoJ6r@(t6bF|aX*o2wcnfnLafF{Z8Qw_uy6h%7@_*I(O^sjk zQ2|7s*)VY59WAm&nw4@l|rI(Be#4>Sop`qR|mb0Kf%x=NI{(pslhoV*x+)a#fT<-&Zb%9l6WHnP^I zfJK9WMSkR3@jpn;L{KE?p%>&K)>M+16gLz+J(bMG(L&u9Q9Pg=r3kr!^h$?ou>hdL z-;udb|Ctg9ou!HD82{GmP|-swryZDGG^N-ar=@7kePDLUW(yk4^zp5{A7th42M?j> zY49PIPd^D^oT8($LnNgMO9UhA_7eYW-lcD;hk1IifRVX!M`$V5l!v=qD^uKLd(;aH zcsbuo5P?x4IutYYrH~6I5*`~0!DoUC4C_1uG8F;k2?LHHC0AMJhZ|`{4?LHb`p<7D z$6qrOnbgaB?CvOQTU=tmi^t;onI#Nc=i6`0d=Q}v!}O-mLUv3jU zoxdd!h&~Up%cAkDKuC8O01xy^0j!}_-b)&D>-|C+qyIIJ!x$ho*X?WhS?1| z8Bc{3;U0LibgK(BY>hc_wU4-DaV6p%ksHD@xFavpYe@wM7M2p4ZHjnT9^vsJ5cxCXc&Ml}g0Les=yroe74_2w} zMg@*GHbwWWeztA!Ri|zvf&9qp_Nx~v1JmDTLQ|XMM|a$py&=WhE9(T-OK!$X#VgjO zm4U^V*_ri%J9gTy^RKuY7E=Ef;o|K_P|k^vhf`|cQqe|5JwvCA@iSKvx8*8}QB)x7 z>=|hOvyg#d^tR5&_uugm7625(p;Diw1ykk)r`BBvZ!+BXrl8;LxK66Fit*=Q)xN@? zjQ3nSeje@t$I}CuAU@r03+9FOgCfLp3=X8pz}$gzClsF*MU&n@&P^TfkN5%fbGFnB zL&l+7=UD}9U_vysxk$TlaMQ3}s*)TqjDof~*4c2cNFA4`GYeH>^6^#VrzXG|x6)Ds z)YXq}vE3QuciXEztMaHTYL>u2w#mTg&{Z{;C~U8WPGJ?}e^h2IkFKEzl0x^aJR=`w zbXdn-GnWiv@JIR%8GU2Af`B0y(A>rzA3MP0BP_~QvK;w_6F7xy;Xb-N_L?6ti3H0m zp<{%Bl<&-sHJtA;uAo|BG3xWoW$i~b$s#CNd$JAZ4vbHtT}@a-;6X_4>|Qs*a_|4` zDxMQmq(7@!e)qywMhRkA9WY+>7uik88SI6PdEj&|Y`q10Y6L*cDoXcsA%GLLviFq} zUn-R+bM6K*_{s>PVXzZuauH$N$#wO)!o?VR0a#EQ+6lnu+~a!-k#i4XVE_WRl`qA{ z(dr}!uRsg~UinZv%@SB9kK;C6N?Ri6*V!z7%JaTU;gK`78-7f9c1f9f()7?^l^bBD zVb6PpR%u)={@pMW_(gANVoD>*A;2Z7jyfO{esXPrO2@MMxQj)%x z)k)?(1d3=kiQ$BTzLAZ!(Q{;=&=5t;sg9-#`tPm4@^%2f-y~&%fQ$!8*o9G>dyf2u zP!=1a3@IuK0A2yMjiyiAp{};8t+<=?ydk=1>AU~Ql#VFZc@TF&QI;H%>h7Hph@&9A z_FLXXwb3nVXeukP!p7i`g7h#<%w5fUN(IksBAuJ|FOY?5&L4s!#z|rwgWp9^Ne9x+ z1sdTJLs>eI2<&XE8wC-Q4(B86dkYW4LaQ(nJ&_uXK4@S(p|BRX9BKZq3H*bu^IGpxhImYovqhrnOB?MqU}~YH;G1DqNGAY%+4c-Z z)6ZrT1(Kyj(kYr8em?!DJ2I96j(25gGtbpB)6QhOqfgOt*24T5omK2p&YMG_O^n2Q zrA~nsYMe~tfLMF4>3a&j_Lft|SDT(mws1KK1p&CA)J-I=ljy5BN}-xux;?=rVZvmP zYM&6XWwTyGIFpp83=kY*dfx`X8cUa12@GFGpl+r(Um|(|0!JL6ZNz<0FDEKrIfT{F zPO_*dE_jaBQg~qhm)O2rs55AH70vA+QOcUnw>Jld^1Aa8_gro!4O^GhkF-5~?r9=*)|6Pbo^XBXb%L$1|LdB`*0+Z8t~Q{KKjmG-)1t2+ zgVZ}r4Li3$LAW6qOcwg-kr~4`@f*cNe(q6fsWTJC0TR2H7(|fnk}_3ucKR$H%jY+C ziV8fSdHb0P#~emBOI8R9MI7fzjdJM%@5YBg0}nG66t|FMRzUKLU-1`Hy3t+Y%Y)EmGeW&h^b#)&8gqFL-Q$B- z6(vN^PEWv}b$)GsZhXe>II^X%0$6W!cr!J3QA$nGs_}_Lny?lSizD6AK8rOJbH97( zbsljL)l+0%8=!bQ;*s%j!rt@9=F|3%xOXO8@3#*i>4LP?TOR|)3B(-GkSOmh=j{VE z_=@iS*B)Pz?S8~QL7i@6&M%GgsV%I1`VkGeSpU$4G9RIv1Ybl0^gWtQgPq5x_DZy} zb|UipbI6hbIf+_m3Enz^9xK9nXwFL`f>eJl)I(G0SNlqpwFjYY+}c-*$5A3j-khDM z1&V9JI@$ol%`p&_L%2Q|NOuPy>XL5{E}@v1A)u6dV@rQbj({iJ8;RLtuEu|6SH>iU-QbPW4*%VFW+r(_%mYH{zL>15 zK+o`ngyGI3yx#}IkVmhQ6Q@uzweGX$~P^P(khC$wZxjlQbGSIlZN&p9N?(+fwS4sVLRM9z~~b$0oHVn z-CF2fGPUe%mpu0L6)K5|+;$eQl170jhJT1(IKi@r?hfB+$& zD~Rb+%1J4BAG;xwSG(^$$J`bp$c}h=H(I2YU0wg&q?s^k_tBWESz< zVfT`yH1x;GJ#FyjR)Lid{(or{5%6fH1frY^5WnGYpSEHe`hJO!VqJHL@|u4SQ#vc8 zNMup$6!nBTwj@Jv4~F5iIY_O|iaF2!zF}VIz6qnhw5 zZiJE^fWSIgtsQfs5x@}-HVI00ACEwUyt!c%s>=yxWJ*N0Y%`5Qo&^P$7T#6@b+>pn}ETETg$ zp<@=p7vNR)uZ(M#n&-5{-bnf|tf16jIky{0cjxq&l!8W&o)?5L-R}p!wEwUyu@g@_ z>kf)wAu^Usk4WPXU*aJmsq~`8`{E<22#B$tvs2yh;OoyZO)l|MEcxXz24HOxyTtY;o^Zs{@hFrO{n=VB{9<8?qhyXZ z@zU+>@ck22dq{D>V_+3h?dE%2L39m#+E5?E)E2Z@g~f1oU5UYJj2`Z6pYFp~yvJMqI3 zfst*SxzQNOW0Y?OyE&x9FJV6tmV}oHCooS>n6*x>%^1=uGfyh;JX!j*6 zy@1y>w&Cii^vc@iN--n6!+x#KIYg9KhCsLsJtLwk*7ICD)pVX_+mQHw@FFodlsx|_##zI)hw zVG1H-`0CB+9}0XVSr}J)VWay4M1!h0cUsy=pdSMgEhY~|H9v);r}t|Ka{1McHq?fe z1eYAJ$byL2;#PH;eun-4y_9#bf&|gxP*#6qw+@MLuJ} zLig^bY1T8oETzy4M%GxA-^#=_8q_>G#cB3X>SHFVBsdL}GvK^|diWZXxy5FLBFyc( zs1Waft!TH>9ykc_*L^;}Abq+j5v?*@l51R0;UA*vRyQ6re0c9h)B5~0`qI4nPfgs4 zYMJKxcMN~@z|b}}p_orMJTkg)lYER9!+<(m!@XNa#(H(sbgn3tH~R^fkCIDIlhGtW zy@$7i!5p)D0i{4Ntw#I+A&+RpDh#0=n8)Y7!7_>?bonNjtj*}AA1+hzj_XYW1hC0I zWolio@TNbnbz*V(vw;MGuD$K6O!M9kEtTYN> zS5Um)^KfoYcfqP<^L20}e*zg>%*smt)bPovPV~jvdj^3*AGntnt8n?#1rb_kyz3K@ zNi|LI6aDxV?JHZVCW$Q^cIo}I8Z39x@$SeXT&6mnH`by$-u5sAWRtk1($ zURs|jOkGd8RQ#;`Q8#d2K>GjBxpN3VCYWH~#%_l!m(O2dzrtOEKrZkoG(wtxhFpud zh-C@kHrA#7vz4NG5}Sj#CV5XaGLUl(Uuh%M93Dy2zcREj5?YEsY)KeEb){lUeM)SL z76o-LT9zSKYd*SI+>AopQj4O)$jx|-&yDP|osvhDP8&j@FKI#LrO-%73g?)V)0m+6 zO@r`1uGj+wxNw>qYpmkywqwszb=ejeOC`*c7^?R`&=I-qLX+siGx@*6#%ow#U#|_r1jB>v`*Pi?jrKzey@PUCQ~PSl(*7? zf4R%FM*o`kV|+MP1>xt;1)eg0Nuj?doD34&5z~g0$k&KD)SCMOc<3O@g7q7ajM&^G zJeVn>uakA(U9_Fc>2-Q^5#HiBB)Dxulv|qpYf72N* zY525p7#jvYNcE6ok;hvyAsSEAnI@UdeMpboOH~R2Bz;(vv?C4$H8E7JABjUqj)k>u z;Oin2WQ1mUfZA|^eko$>r`)<0ct-*w81+ma%@?Q+=vMTpnX(q?OM)|=Ffw9vZV+aj zGq%!I_qVTs`0H#V2ac;Cb(cjq&Ez4X%-WsJQgFxaV2n zyL!Bfx`ls_;`$R52}H?e+}TW->&%@Xr_A`0m9JvjhDOQ?iGzIb@$$UqWFV#pL{!f_ z?cfszuemL0kX2m{T~{*rG6ws?75<@D8e~YYFsMSa14vI)!t5_ZQQdb_YSh=I`)LE> zM`tlj?H3k!Y2;3pkC{7#X|d47V3rLkLz`pKCxpIUMaCy6#Txy!)a2~OMlo74^pIb! zTNNSQ;zN(p`Zof>ZrR4v>snODeHs1A0+rlRzXBJql{glr8^>4}3$g|Z0&Es?BymMx zD-z->;#L^=gj+4FwHa(b`FF&K)dDHIQ|2wbw^n6yD9*A6HJs1EAeK5di{b;+v(`W8sN?UVor!>oeD;d6{ zs;MR;IGlF5qb%nkuag2+_G49FUN+Lg?S3?;kT~3qxw0exI93TrqatiltpXgr%3<_0nr z{ZGy$_*@cIYnW_f zqSApsHJ`JGxwI>w94Lco0Zn8grGYj5_m+xKd<5?7a$Dk~#J!f)rw?~XFV~ACwsJ+& z-%ITw<%8mWYdv$BmJqO+Fzq7?N7dw@SQpDnql?zK5%gQ&Mj?NnE2)3elTxCgdT}2- zHoosY-Vk>cUT6-Zo4=g`^rq@jC>U*B97EOW)wLX^T`z_lMnOx3L%}f~RO9=BI~1fk zaq~cw?BgSFKEve(VqEE`he9Xcf^oGTOXs&GXC+t8xlPA7gpa;RNGD?jyC#+-*>OZE zT46cLE1h^NuUOkKn((q?!EekyHt*Mjh?G)5T&^{@5Duo(03J}})ZcMs(cmW ze@IxuxuoybWb*l?2ch7TX*>LgfYos_Ky?95(Sx&~S0} zj76WFk2B_$1ewl6)6*aWLnDF04IRnsXweKE@M;t?RN4V;?}f3#6^;ut1#2Jk zd<^kfUk%j&jZRIMOvN*3I*;{kD(EBR7FRYno5B^;M7)6PF+`@XFvEYOk$mrAXojNC z3egGtLZ*G$-m8^i7`jop@wk9JW2tb1U@ik1u3lGAGoW^jlS8|(eKMP@6wkq8b% zXG}wY>LI&iMc2w97}mwNRq1%t$9B9&=|40n^4?=zI6jFA)IUkj*TD9`TO)LN)uJu` z;*13Ulq^f-qM?Kj=cVI7NQP(m$~Em={m|2 zt`N8FQ?Ox@2|Ot&o-VIMWia@1Z#%GbyE}|MB6{rFPrJ>US5nT|WCT6UM+EVqU~GVS zh`RnVhg;f9*^X|IL}cJ#;08%Iun&7Yj4e-4h}hf z(f#J{!uND@fVc=|o}BfMaMMGU&(Yt@fmK^;9L&sh!UebmA)g2+{5IhQc<`D+%~2Ix z+P_Z#rn|e7HFZeVt{!p4me^qd^##a!Xz_~0@mI~1(^ABm}MjvNx zHUETNo~u6%NtSKD+R!;qV5#YRKoK;9^MZ&9eI)$3m&n^UFUw zX;3-`Xj)br@G-A98vJ(<^4e2O*ixIgtVsO!{l2-u>CdZwf%NlZ z5;3N1ULgg=l=MLyXlt$qAso=*`v{-mLygIMGhmV)P%fbM7u?TqRCXON26f>R%qJ6{ zyZpK#_2oEI%KMZ(-U12@Tb0DXj;q~0s9YKoF63;zCslwz>kLAtZ*cb>o(8~{*n5iO z_AGsJh5^n9H)Ze@gXLq!5qtvBO+S-x52MP@uyLQHIvC{u6AJtZbhm?fN?TXS`V{x_ z((GG3LATZdMUNBH$~s#!m|yX$915NT{DrH36+hZ^6&U^jF2b!^l5}(xze-!#4!{8a zKLEgO6!dNEz~W@niXCLNTvS1dmq+>n+{5wEAEa9Qh97SNhmk-h_2vWD_68*y^H zMn~l}W$umW$Bb6PK}6M1CCGER%0Xgl%qLp-fFfq=IJ&8f#t$HHFtM-2(4^#DH`b1X zn%9~1d}7KxD=^)bEvk>3=%nh~dl#O5Wu>f#>-MFV^s6j8#-zXh7W2p2(^0@qFx$WG zA-9!?>gSnhUapssgs4O&(rU0&1%MtStZ%^wJHtLloSZY=_8%*Pv0e7tP%BFOYySCKW=LsX&S&U40u)s zmxI@Td?)Mh0h@M0D(%v~Yt&#HERHIwb=oaq_)8U@;1-7L1{$zVq;77*+yT4*gz2;b z6jTaT&!g;n0em)OsVcJiX-6>)-B*S9p!y5nwxR^co154X@%ULDIFNz&G?LejMkd`X z`_}v-yuw?`%GC9&hLV_U85UGZ#Me?x+GP-s%!_j_l5c#ZmWe!ey5{HKqc@+aKY%6FMz*ltQnjujIA zB#pa+y6GzAoQiZ5vilBRChmq9G;v8sfYw7^KK3$iuAXg3eAO*f(%nKc+&{`x9~eq| z3eHxMAuJJSy(e^GqKu?61U&UK-Xhsrt`a?~pJmD|9%1V&V%S>$>~|$dWSSawQr`oK zb4Pix|HkXWA&hBQbSb#yoT(&nfnSDlR>UYB8dZvNyMXA)`?*I8C%(3P9eObPOF*5Y zPS0xi2?aFD;mSVhcpTB4Z4q0+teKsP2Sc~?Pbetf7hEZB16^>{6G#DFGU2N)VhZc$ z@KdETgYm%!D%pu2qcWgmvF4Na55O}6{yfMviw)^C9~HAkZ^}?dPIoxeS%MCzM}{hE zXU4&<(T$snqa$+sRB7SwzY!yPQjKZZoT#)VnYBa}eP~|g-{N9qzP{7hn+@-@1(q

fwrPm^BaVecjbriZ^KDKJ%K&&;XlKBk{s+d**bkpR_0iq$0Vl@+L0dE zoayW*Ow5LD*jWrprCZjP+c0BxyLDVeq$;bv;NDSlfG`E$ubyX{iDjstj%ZT)$cx6@ zWp_jeK9CJ==K{_Q`ffC8$P8DLAB%&HRbfwmZ0jO&36tDfqxvUoXhUS++ubEu0}_^G ziE5Tb@-uP0ou->%Y3Z`;<)qd0`_K$+ny!6-=m<$1rNAUy%)L%Toi{Z80V*)z*!W(= zPokwYi{n;liKDYIkd$tmjkkFYUYOx%uIxgeiyaV*>!WZSgl>)>s*J)u83;tNI47)_ zt41Xj>k_1x-&p@2o}T0K^*s*80NvUlb8?&>cDyK5Q030NU_JCZid-twcVPkL0BNS_ zt2VYhB@nPSn=P~pniGQfE36XP{J6eL928YBpxUG(;{3yJ(lJ9$6=WHVVUA$7)P&`s zPtro>5Q{iG?-{;S5f<=A3k4o5wmCHi-%5QEF;PsTe?(HRJbE9?&;S?_=HYDoQ4_Z| z`CvPsy7Hd!LzzkJP&y#$W} z;&FgVWe0KtLz7`x)|p2X8U5jmbyid!)xbE>yKe#smO$tCw&Y;dK9)PUcVs!dutB&M zKa?Q1@@|>1y59k6CPt50@LVskQ#hW`?6$WxQou?qhB;>#zT_E9;Hj@=+?bXlsve@e zHtiFFI9mA{}WTn`H?d zAAWK37+HTw6l4zKx3ynu*cCqmppcEkv|m*G7f~gCC+@viRIp_2QS9!$6nf^LI1nPn zUOP&e2Bc3UjMyS{kN6XOZK;^}rCMU3(7*OpcBaWUe{^{YWq zRUmbMWCft{6s}%>C3y*!>BB&eohP3s@q`Du+~_S^L0I@fK<`nvQGCMN60h6U44g2; zqHU#-Y$0QzgMLoOVAuBZ2}xwjUmO2NPJjD{Tax1NLnb6n=FsSU`9RlDHy*m#De+>L zGt5^#o#Vo8b9jWm`re!<0Ba7n(4jcZx3io}b)U3l0|mGQ5K)F+rQL$3N4K{D1hf)_ z;y2j%ihmCSzQn--OFPA3j8k70=2w;|h$B8=f=pFpxuDP9T8jYw%oulQpQ;L@+y&aC z3o<$|)vKS7_o`5uOp(vL1GF=291Ok@&Uz921_Ryr%~i%=%F`Tc35i!47TACmwtm9z zfvaw^{U0;515j;0)?RA_7r2bZUK1$Q$+;NmrM27iI^S>MGb+K3$Bh8l>MO|;6-MbX z2NS`n%vxx2GLCY!1wvkqq4vE)KQlc)nB4=9qZ5ABIdk8&*`evsv-}PX!hRpG$fGgF z^DPdbWp>lfq@o&qmo!7wkEhw6zFmUfpockC%CXd5HWtf6oK;CT%}-n-T!;C7YL1{j zDSMJ+6;~eEkjL*svg!S~4sp;%efv^);Y4-tq-G`nhqq9z0!Vre^SLJ>v<@E-pu+K1 z6DGn4d7w5Q)LYwjuIV=deY_ z`fE`esWW+*p79YmY2$H$1~Sd#sZ9m1Xixncw(q4Z`hwVaa*PdH+5Z7(5BNRGLHe-u zfls^xSE7KySOW8=_th|nX+?kX*1#7Xhhhte5V#ZW)NJJ$l`MK_PEdG!lP#&&)=;u% zC@w;i50XalUFJG+rxdZ`32Lg_3>B3%kU<|Fx$nQu$s zLY>#;84yd838Sf`vf0yL2+bgr5L4E+FYmaepnCM72XF-{3wy{`b;aDMHUtNoc-2hC zQzT3Oe9j=uP-?lz?$ba!n__Sc4@rE&S&xp9Ew~_xQi+1Tb{K(}-d?_1vU#@8L%g~A zSl{23p=B$oK7N-g_H@yR$anI8(_Z$~!pEGv6&pd~6jsIh5$;|T&+lLMz=ADT z$B@ujpQ@|4mKM0N#l*BA$j%r52Lp@Zsn^*@^;q|@pAPjQvE$3I z#L;jX_n{2zvk@<_1(v_zmq% z%VANuZ+`@5bn(y1giV9tD(nCZVg$v#t(KO5lfAA=*gaoeJV7WhO#2`%s~$>!%b9=^w;$VV2U~Cb0PEBLOL#NGW~qj147~d+#uBp}nQy zUKv7cH=dTVXcmw_!HQxz?LAsN1#}@J9MvwbQKVVmNmCk`5V;?F;c5jp;*D2g+T5YQ-$!rrjw zCrDO9>aTs_z_MvwF~WqX28u*Cit@4Gg1RgEqq{{| zVHv_u(iSWLDwX(=HPHxfR&ZK^kPART(g&GYx6?3u5ic-_`8zg6*?H=*>6Z(G#=1pX z6D)yg02byw=I6>$B2Fd!SF+p@&V?SUh4BKG5hPcrW4k9(@b6&{_YkBsBeGsDT-VYgEjvj zpLyw84H?%EfQx7#hj+>y_^5U21iO3&FBY*N!%LB~h^~U9E`??M%1(1Jw&`S1+0uo| zh)-RZ)_bsgLhhSYY3%yYH^qTTkz~&S0~9|C&O12mKzcHlaM#1BxeZz-8X%2=#niv) z>bXw}UHQk8ogKmmXyOd=e@t09Z?}zIDWynNwGt(-zMfU^9x%;hB$i-GyB@qoRhs!n zyivCcLTg*{6PMd~HK^*vmReWl>5I-{qz6(MUESLKUQUB%37zamiZnMNrSB^s)K+HD z4B7zxcXgK95|PL=e{ldY55ns4M&M^f$y^=#Xn!I(0F-JrD1*4osiE5YeSA>F7XqIuq{IVeUFWbP>pvZ@I3jqcpkbE+#&*90HvEo4 zP=G^pCVO)UiV;}FFs|C+y|`gx|MFh%1b1GkNaL2xmVQbSlCbLB;o4bDT0ffuk2KgA zX99&r$9&j_f@h;P=o?f@69I#}B3)+`wC!yuk=Y4`?}c_XTA!}W2Zj;SN1G(!@p6kL z*Z!-wHrY9+E#u~H?tF=4!cQ?``K}JyOJ|88vW3$mfoHp*!sQkU0+wFuj{o<2Y>OAu zvqpG3ePV0d#Z1sdOlR+WD5?OCQIT|KKkRcpzc&Ec59l$a+4}e*vKGSQ%1lC0cr>A* z$AHn|7iR%9S2O#3?c+UyjV_>$>Hopj2fwF^_epaK+Li?L?$2DA79sA~5j zKklpT-K%F5f`SM-3Z~KCi@dLld-Md&oUX2#f{(9W?oi#Rc}S#j zUh0t6nzSi4n-3v|Ff~_J5IocDakB0`MmHTY7nmw(^{t6gDLP!QzL}Z|?Rbo2r^~oE z@)i8L)Y?-iraodWR;)H+D`fvo= z$!}}{!@Rr_x8p98*{Gsb|8~mbAJ*8_s)g#q#?&DHmq^QGw+J6I@sr38I;R>LwMbmJ z`{)bBo2u2WBr&Df9%BkmgP9k+dI>K~9u?4t0Tuav|H>okOy(J4_e=K`fFP-u%eR+m zcnW?P&102Hc+v)S{kqw`{K(Qce1uYe8Fj=&&`2XA!4{@Kd*ipj7)kp{Pgj?<8@6D! zD>0jrAQv|VxQXj&8E0Sw0EKTtZ(E^NqyU;Bg53G5Im-d4o(RIEc-1Ulj&L8|Ff4!U z_mD>)jeFWW@&N(~x73{Suk-M|^kz(E{p2M~V9RH2(@>C%!^vuU$0DMg%qN=b2ir>O-A*$dy5MMfa380Y18-rrD z^rUED3R;L-Re0WI2=jsES{09pyFq^iLtEsZJxIOc8Yv1f4l8M3x<(z-3ha`X-4p5@}yF!P=hM8XJ(??2-LcYhHYzbsh^Qs zFtlX6eay8wrqW7y^C1Z3$4IAPXFd^ZrAyWm+Kcny(Ca2Tot@YThN(ZGESgD8tPY&O_@O%^UQ^bwvW4ZaU&+m539ZgSH4-cdnC^I_-4ld| z(L(7tjBSp-f$(?#9oj9rxNc0IF^GGm7(9BA4aob4-`|ldE)$kEnCI(W%?sw~g)JwS zP)wRLqa2|!QP{4K{*hvm&2HwSj(Vbai_d?g3SMu13Xi>R3rga^dETmHd5-9<Xd z?I2M^1-P`7NlCe5XVsp=6LHoT3HKg)F+K2jJ!{C7qRU9et5i$Sz zGSCCeUY@cyo&Cd!4imokPu`cZ-vA;%q2DtL43~g0NUc+#vculd42so^NQm_HveYxw z`JU}3t};X=_<&YMi+}y7uj+&>rd#gkn4Fx9^tjj2yw#J@5J1Ih_RmdgXS*4Wdd+Xt zGoTdl&oWqHhymNmOuc*G%-}+ly3eCj(2&bcdjMIzA0N?jzZ3TEudz1X7+X4helqjR z0CB3mheUn7)Rv=s*iP%QQsCFPvdr-H9iLuatP#Qq48014Pb?QiMbN*|x0<=v3~P18 znM?^>sM*Jmbidn*E|kZ;*k#ZLVAVGdjQlG?+D9`y|foM1tFf)WbYPUwlhwG#muwqxFS;RT4NG z9EuEK5t?66M`bUs={3w4&EE{zh1Y_3*ahh!wUZ}<2pPHB{F*Xb+bdx|nE5 zGO4CLhu&4aPwz51E8rJ-a`+947GiuGIh*8j)FjBk+>J0<-h=P@S)TKs#%d<$D!N zl`|M^wfes?vDioBSaD4-5}<` z@;C_}G&^j9-4ZNmB0P^Wkx$(d7!*hH?0$=bjTypw{k0%U&JhV?x_eiJLD8!tBO#=U zY{q^Iv1f1d3h%2BzGD{H-J8qO85C@23;hkDOfw}uD7)!&0fqjLl4z}+jQG)s7N9Y9 zJ*-R8-%aAcl3po-Oy*10Kn~$~N{mn12Ob}B=R)||W{W2m`7!Wn9*%cqR5eX&5JtJM zE|JDN5>3F}fM(CGL5du-&p2Uqz?qs;^`L7RH2}U4f8{Ss_PS!P2E6n4{Z{W#N!*31 z^#~RRbJ<8-VN8GXO4MXdma z00M?{yN`*IRd5oQxI zq}q|Qi^I(rMe2MqXG<>MJ?ti!NqBJD`GAujH2WO{k91V2hxj1$yQO?&7vf5K8yntd zxcZMEyi-o!l!hJFxF=U|pQ}81KWvT(^)Wr>tRM%O{EuO*=bCi41D;yMO~z+lIPfSn z3r$6;5%bm~Pm^IuvLeD8>P@TKtZlxv*HwsaX1%XFSyBALHSm&1eW89_1O>}`7AVpn z(K)2yUM}J-9#1zRNUZ#egVGH+r0gem*wJ0%r%rjm0Hu({;@=M5tt2MLlbp0!sn&RO z_4@D%71%jVWX4t$K*7Obk^NhGd3!jz8mDg-!VuJIH;lDK0l5q7ahaMi1H!V&fvn*t zC1EMpQh$s4-T9lxo;)2c_v29f|17Apewu_+_J?YfMi@21KiV)7SDvi>)rsIJwY5x^Vj zxFR!hbIy#>_;bSU?>yWN{AF<`mv&%PH!8Z&_#%k#7blV9l`w2=h5yn2&w>9mE2Yy& z%7vlc^k}poKprijV0Q(Wr=MN%*x5%o(*~=io$b88f=C%1i`<1nFf=Qe?_Q>Ps=HQi z;qWk0l6_T*8~QH7+$!Y@Fbvy_xLmbU$W4(@V7P`3^co2$l5hUwI4c4fY+TKXUrC6)lQCe8_>E8h!E(N|N)oi}R6M`>Nm(4^3Ttr{NNDu$MqjPKp#jrtK!1SIHTWD-34MM#XZwOxNkQz97%e6VF z@tZX%U>AE9bUJkILSnXC*<%b<&qDWd&2O&TI9`Lh*UyxsV?$T)f$2ooCw&vHY6ZD) zQk%7t6u=(z@-*iN0jU;$5;^=}OZULb9Qzp*#^AEiiSCRlOS!mbfcjAD4T}ctz@gFW zToJT$?qa{>=bigseIdqFh!1Cu=DpUK=Ya1IT5E*izY7!{-dV3kN~9}OcX~Tx`i0U$ z0~ntm&(yJrgjNUW=IoFMeR4iDyD~IBuW0qq>Cp4F$MOO2E)rW%h-Q)vyouZfc##9>rr z1M>Q8vD%HVQgxxgd4?d3qb&4eEcC|M)DS>nG)yMhiqU2@gIaO69&G)KK; zkrG_Wq%4kUhGnJC=Oak80?H>-iEhIOfr@*yop>`BxI4IOcs_ti*(GzaG@2YNPF;*i zO2UK1cmiKy9+eC4LIiS_a{mLcLp0Xj6w*cnqszzo89@z$=zCC1`gpy<+P7n!0F?#y zjVnH2m1wdRMeh#4>!1qYZrHG%BBO!$X6LzL8Sd#cfoskLq0fJGj2Vds0X}PWUjsy2 z*PxEBF4d{BC-4cgb(l5J_{;oz5)ZV@GuzMMz7cK?$Rk*9w*dt~WEbdTLG%}fXqe|= z=U2xkPrDTdcf}j16mU@FAFf+2x$;JZPIJT6sC#esT}H0}jWR#kfFOlE^TUWC7DWfx zlD#|w*FF8TJp>2|kUS1{KD9WUqYkTv*subjY2f373UB7jEJ>x55>_DRdfdo%nr;60 zQ;sTZvg89`o&QXB9xYBo&t45Jn`vK^mu7|tIHIus(l~66YxwwoG{`(?P2q4BY696DQ+B*_Jhs+~n(cGH0Aw$s}@5;M==mMaQfyIfJp%0^yO%wPxUX79%M~ zUd6aoVzOZ3q*_}o%ReVnDEhWXXzQ*>Lip9TvsM9Ej~~LG^?s-z-gTRZdle`VU(NUX zbGb^E5HqZXUU=HwiqM*{ycl>gt$ zio?>yl)OsC4OX*xJ^LRDd@EMENZj2xtbK?2B^w0%MK-c-FVm zPhlE=r5R&G!MFrMF?_*T>B$nsVCAa6g4=hD=af_DJNNYk|6@N0Ah{R z+Cb7YyE#OLI;JlhMnSS@dkIPI5f&0rg-T}|Dfy_gf~8je(HDPnlmVVhTuVdPs6 z%?xwJSTh88(6r}$i<*&O!sVVU$@U(S%-6GE z1nqgoYf`H@>&PA9leFJjUHquML?uM-gfhp#JDM)#12gY+` z^&b|&CF*8Ex~ro;lw(gV9uIiZQMry5P9xHb3>jM{Xaahi=T!^z`%<0%5N?g)dZ zgVVi*SM_+cMn2Va((uT;85}$78KC7e1bF8 zJ4tT5v||r>0XiYREgj|hDJZ~<-g2?mdoKW`RB1-;e1DF;$jtuEAzr5}lKNyaR8F2< z)-q@7PIvAt5LjkP6=IaR+PKWc7Aa)qLATKe`H?jK0L^>W8-`j)|JSTeAMHejmxz-- z0`TW`Hq2O?P1Y~Pu@WDo&SUrOfXJkKFbKbsN-KPDxKPE2V8mS~RVZF7t8wg`)CSeY zYGRat4LE`o&xeA^tU2v8ktG|}<6O`&3cigJQ`Jd)2-EzbiK=60X58$C_?C|-+emsR z2JDGk8$5ZBHV0($bnbH=W?>1#)*Kn55ECi3FgC->{1q}UyO`a#c~%H#7&1fpL@RBo zhmzRpvOt7Mn{^h#1W-ME#wnz5kXQt1D)itMRn&BqblYK0;i@3Sa0ygsQiakAB5=^7 z6Pa1wuAY4-d!;`g(=1swfTn0#kU^B|nX&qO1p%NbG&Hqs=b_78?@SUxx67H@~jA1!Te&_ay6*njfZsHOt*Yl>W9ucS3kE+9eu(M z2SNG1Q`+Dj9RDIBW_1zg%x}p>2BG_XiEmxae$vW=>vek&BnG8@?y1dz-TK=P+?}uN zLcey%bssw@1x%FV;uDSPcV0~FhUf?z-&{OU*3pp%X3@og@1#L$9o$?%0`cuROj{K|lH1AL6ls1E&FgxGI48=h3`fgR4ImN`uKQsvYl(UywF zh9lqZL&Rpy;2$g!b3|s8b@_&JR2oa#q!xsrdmun*7p_haS}&0P7-)J3#Mj3rrJZx7 zaVL$o;M&hOXX7pInDY3R4iH=AW7Q?M>dz?IKteHhQ?_oUm!^SytENU0`k5%Fvw_2* zAhCA8wiwb6!Eca7_S^BH%+IUnS2}VcfUHNPWA;M+j9dQLCT~!ar(9PAX52q|4;yUr zK(sK(&rv7H_nWNe{Jpxz9pqj=q|mkPg4p@YX=3Y_diK=}4>Ig`2vRB%NWW z%-5;z!ep{24P0u(_)(g6G*?u6XnBfsRq0Ae>?EhX=!Z&jsQ7&32!)Ip`b;CnD|mWb zaUJG^pygV1|8K}I^Zc^sL6|^K!@Ghrb~Q(Cj1kHrBVfoT!rtNYpsGsRw?Yn1P`2&_ zZW~;D>W5DPgM3(9%$99IFUjbOZ-&lJ0T#tFgus^!aM2Ms;x@VOu1$I`4J%(5eU9Ii zwgij43v18t3b0qQowP_m55co2GVihdYi}Nn&RV_&PUfRvRML-a)4J-pEb-PYZZNBv zG)RrxQ=xJivR&MvJAGVBLZtV-tqV@e4CyOhKjYbC_aAcHZ+I+M=HEVL+H5#!xN-^; zbM|kwXGxY9_T@0WFmt*?X*)R-F@<$lK@n28?HVR>#`~rp3J8VY~@g_ z7wFLa;b%m9TY4RRi1Di{?)%FMh)%kF1BD?=j)Lk%uiHQt7=p zOWj08pXT4iekiodLq_6Un|Yc*Qf~f-DCMZ-Fd1A`l(yaM7vmuq_nOa)3bGzNbdD=e znsWOZk7dLSOmWs0Gclvp=5bGEj3*k3g`gHPmJ#Pzefl0gCyA)OQ~s&?ld`7lv&4id z%q@c12miUj6FR#4h5Hq?SgvkU6!-DPD;}y=_l+Y$o`>CY*%EDwsJG`d6ixpkr0viz*EH(#~hiN7MD0!VSVd$YSE?#Dp+|4yoYJ@JnH3H4#26Bp4TFa@>v`M~Q zojv}q>`DfZp$uA%5O3EPPa?9A=@RZfsw)Pu#gF0mpioMu^B`e~b5&YA0Aq{!Xz{H( zg#T)ng}5K_D`y3`848NPg{l1wtA}{d?(hVZbLdeZ#!<=AUC=WJKrJ z^(?Bo4Ovn4G1d>_V=acb_f3tfSY;lUu4n}!0%DLdGRb5ko5Es8a%%+w25F7@7M7F8 zskZPtZx3P*6QmJy0H~>f0V4T@tfIJwncD(2n)d1NRVX2UJf>gKj}SRB?Y>o zo~&^WJyQ!HIskgH@m9aa)JDs@C4v)g}}>f6YsI)rI{t9n;TeLa1!`WZEJkCXGen;aK9EAC8+a+HxGIhB>&T zL`};O-LXQbx=}oFW7vb8Wn2aEH-iuY1-=jH5mDHt% zFF#B|jQqAg`!Kfb(Hi!w%^{3sh2tCG#CPb;brFXuR#a-dcI00VM%Xux(+H3>djhqX ziU(3HWCuHgJ`jxRFC*=ycF;LKY$$<|l=#;4z&e1OEaPITD3W#vOP^#54?XzQDXs)W zG)cdf`P^$9q~0)B^K*bP+uEdYoW$-O6O(y;ZD;b@9C+VO_M%R_&E%4o@XW0crfgDD zxJH@Xs-rWJdhFD#p-VH`AY!+&1&?v=NLMglX8iA5SZ;mOh6%Uy_*HwjSi`u7Yy5@$KGm7w#h&hJ_7vGW~-m|Ts@8TEjZgBPlgMe0@F~tl8Pa#ePC^{ z`J60iCbK>nuPq>XFS??cN4QNHo?=^5s$NqWibK)`Ta^(4+x*ZIV>yi5F10?Vgx8XT z&(q63l+j343;Y@CgiQLW%jT~j63u1l(k27IC;_}<>HbDl@!wE4bdCfC`?=Rgx6qmD z{reUbcCF8<`fAXU)rzHUE-yDbg$3=Hah$?z&^oiP0}_AJLMz-i&b+J5mqyF86ovT4 z!H17ch;SOF40J-C6uuy|tcR91mH-|A2#Hn6y^2x!avcK4=Bt=qUzyG-g-m~Z{<#dJ zSZe>TkRfIq9$o`3&yLKmbp_G0G$RxsszH`bD`a&i+im->Kv#c2vhvko;pwh9tR8I@ zM`H!`i!L?2Bo2PE=0*>#aQGQ&I>$WtmUU-pBM_Fiuaqfe`@{dA(Kh5toVN?q zCQYqajWN)tNa-DM768fvbY0;ra;Vw3+C8_s{aP3D;osf47OPGu!lud$)KYlnSsjYV z_J<546Tl0c4h~3Ae};$wF}dH&5sr)d!2!E$RxU*x1|*NusIo@$RrRv3zIc#@aSkSV z&f6!I!zyHyKpx|rKiVZQn^F6i_F4fATQ*29qdx6SFNFT?h zOS_XaLu}+FP3=(koYEJMvGbd&u>W-kOEH;jZ3_~Amh>1veqLOiMxgoQ*6i-WPp*!t z^r2+qVo)KEJE~Byt9-+g%Em!x0qImI4-`zcBxa0A^(go3qBR(ERYb(uf(hV@S8E`W zDy{cjOj6Xa!#lTaG?YX8v~=7zyd6#FgT1Bdb}GfYYH8v@#?Br8hx^coD`AHctCFTu zozbPgPx$Nc=i#(6kkeE)EP$HL^{vX})yQTATHb{Okq~HnPbEEyl{$QOBro9S^>tN! zSYQ8vRlRP%J063mMsCfpSHFrUb<8G{{+WJCzvR7a6J4;4)8jrk^hAxWy~(U~E22uHq)Tjs*AE}*hm@lsBNj$L3uL9bIgGslB$4id-x)1aCuD1?6Sc~Imnk~# zu0TuD*1Rz+Ig1D3;;Iu$4nuwqJbNUYl!zcdNAwawzN3iHo73cv5GoY1k&=q3vJ&N0 z{eD7(QTeMOWjZ3&G4Woito`h0q1#d_?hdrstIAh+qUuwoHqmQug#p5ggV z#cI-LMp?+zJkIxFAWV;<-#9Foq{QBF&Ls+Sr30Z=z8a|%N7NEbOq0%l&`Xq9YX$S{ zX)sizJx?U!@|dlSX%I}V5G+$!gLYHlmAKn6gMnNz4e?z|#2>ZwIn~>=PGUEO;Ht{# zk2vwk@Bgcm8?3Cb?oz9qTB(vEoTK%pX#~~?ra^;OhvSoVGR5q7TsJGUpzR#`@GyTB zJv-mJ1V!7K$yxf-<=428o@^u!Wu>sLv|r<+Ug^wJL^x0Z9`myx(gh_Ie) z0bO!6HAEGJ9?OqLd?dcSwA_4LsQu(o{Z)@!GqRA4)#94qlLaz0CjOvN^2-Ko(+svN zG-sGqYNq=4jwj#W_ZXfNmpyeLkuZk{HxT0 zzaKY=PIb?T5m8nLj1m>SRwz1i+O+0S@sCW`XT&w?#vD|BpbpWgVQ;*gGykR3v~DxD zIl+9Mbo@K*WD_?I$t0Yx)+=yf#&N$h<@^qg%IM{yF#3RWC`ER}{nuBs6|e$I1uWJ` zoVxxkB+Z!Y@CJ;9VhxJIDGndsH^>GH%N|hLgR%Krs(zHx#!QNWqPgf!kfR6C z?QpUTvZD5|bg@3%ua2CN!P3RMYtdFC8C96G%EV=cF9!cxPK^6XU!Jga=Ak1kgf6Gq z6~7puqwJ>)K@fu;C1|eRy;w4tCf@S^uKiIr&xk$wW}Lq}hsO2Fxb{zrXXR^w`dIEQ zgaE5#{q>};#-+nS6!wuP&XK0x0AT{BC8xMznUfBDE z8csXffYV%t(qO7|p<=Cpnx?*#^H^|;Ey8%P!pGVir0FiKEb1ghi0H-Oqu8?Htp)^3 zhBvvjYyb+Al=#*FFSKL4qmQz;F@)F{Is7st`rD^lPnw>@gtFAAEvk&#k#O0RNab@m z9chQ(BMqOSXVPi4#PT&OOqP+GT+>_AV30Z4|(J-(w~`< z`eg`vOOgUrKkyRR7O;Jgry=6C{1T}x-)1Ms*P5+yVH#)P+K9Tc5%Ql=S%Fql&k zq2@lV7(>C~#0O;bJyw_7oLb6j`pSViP_w{pP;N-pqObUz+E64 zbtoeIw$V$g2zyZB9aoxAOg$ifj*)lV;psb^K&wpW;hjp8-Ph&nGFqo)WR!!+>zo5L z#9}|V6Xte(tt?j;K@(lnAw(y9j_o2 z^1yZG{};T%;F|LJKcPGD&^m)$XO{RuC!bjd|K93WamO=IET8!?0SF~w$E*4~M~fl) zaaC!0=?Uis9r5IXdg+)>mytC*!z7YdMXJD6jvq9~=zX>Q3aoq%_BAave;uGMYQtp1 zIcT#k@U!rAyi|RX1o)>UQGq9A z)=-$i9uGO&A)k)w)`C$jT3ih8N#Ms^9$9}t0CJ| zq%;dN&e&7@p%&|{CsHBby^oRmq6TjeWp(%pqiR{-MjhwX%*J)0yTLlQ2Wi?d3&2yz zj_43@bXDkl9i26vCpNr;J?GP)oZ!jDpr=o-b?BBu_);q(`mjB}TEgt0HVj{YCkjjI z-fZ25jDY%EC0v#7%#&5xIK(9Rjy~I|#F?zV|7o5$~F?4j?9eP%{K#2;3q}p3RcQJDAT{)lVcF zu-vx=PuTfZKf7cfX~5H%e)p4|%R)G)LYKVv4*n&kovR zu5-62Auwgp(K$p`jg4oF*X#ZP0YFarVvvy6J+>4-C*or=VT1H0HNU~Fc8fn`?k6AR z80CcGgu5hM5N1`s^~G!6GQ5P9H&Izf6^X)_0THm||J$e*SGaLDs~HDShak+$$EZ<@ z|KFG7am_Uz08m*W{kf^4(7%6SZowS7a@r~zXzY52x+C%(+TozCnNOE+2O)#u1p(J* zZ~z}<&D!f}+_;X@(z)1dsBGm_@S?_Q+eJL0dw_!A%6+6T+P*yMAqQAiF5#RV5Vmau zhCKKq=vGkEC9OK;1{^M7BnC~J8@4Ok#jw1N6+f_{Nx2f7wt(()>yyfVb}FDtTNbuEjVVzQ{kaoj9C7|2>W$5sM*d> zmhUV6F~Rg!hc4#Pepk9bu0U_6ajIHZ<+*_<#0-QCuqJf>+zf4iT^S@evCp6q^?quk`v0$$PDTC=I4Vks!&iv31&i0R0HxM7jnX4J#77v zonMdB;{+xh#*|`4#I{V(v&^&?*9S@1hfK&ik|9yup$J#5%^ybqxGF;~2#EAd#z1&0 z3#0C*@;0WUy6*1eJ|gPjwusZ5G!&O8T$dHnC4|cV55+M+?kHFTRWVr5QbwcP;Ct~5 znsqa|$s|mx7cR{?#Pf)CD|DT2)}q&%Q1!C!Et-?N-W_dNQ2j2?ajS9gaqkDD;|^88 z2pMmYu6*8}1AbWazPYgMfXi7}**FQ}f#W&e-3gWTRJKkneBiR@SA7%I$gV^HMuz0p zd|oiWGEsmS4(TPq#qYPc_d?(x0{>43n(8G!9q_{&&mx>34sI>xTZb#?`yPTP{aA0& z_W@dS2%)oFr5>4*0^UF9`HAykklMb~tiO3bHJ2kjZuaC4jiPqg>?HpLJ8U{lu5l|} zIGl?EL3><9)Jwar-l?o4Os^B)w{hR!YPXf8!@3>tj26|Qf;lA4ir*Wn_D$FwENHzz zZ=pIKw5Jj=EC|@mALsGcznk2>;EvFSnS=ibvr@{eBP~bI&CkCxiL@QYmN-~GF=Yl2 zUNSj*%yMrzN4~k9_f){liWeq8sHBB)cHeJZI(pFmupBkb-R%MWs@>t*wjKTY{d0kA z^fVzuSngd0OBopUA$OC8OTM#C2R46}WW_}w1c|<)C?wSy2oVqO^3i?K2=#t- zA6As46%XyiGtC@)cn;#Lz7HqiG@B(MY-EglYRb9 z$n)J^Q82FKLcOm7`O)EfH=K8eZ%t*Y!t5Q5$ntM_srgk!-z>!TIf3*muGHbsHMEyW zJwF*}EJ6MQ*ou@*NgFWj_u0RFB?l|W-I)JC#9u0a74A<$|DaosrtVhS4lH!+g|xTu z!Nu5U`-Qi?L>N-@IhiFq<`AFE2S=Yc$*!#K2l?=A+diOihN9EdI}bMP3{K~nO5`U5 zJ~lxO$p=vMW1X^=E7{sFU=KGvmQlp!deL?(V}plsQxUoH;n!wTaxz)lK$%X`!J@iG z(xlCdBQOB}KLEf0Np5T-^H(>coJg)kFmERSF+bJNX{QsFoJN-1C}3ka3bpeI94EUn z0zVG!EOz+&2=XBB0f9US9}7q@??JX1Y!}c|wXsS*Ey|~K!6IDi&)@vpl|3m%E8OIHJWJ^83DnreRM=8iR1(>DhFx}>A2>WQ3Q}kYdW=MjOLq05 z08$Ziq$GoaQ4R0=S^ZrZdrZg(Ky5~^Ol^P@T^ewj-4nYtOz6(lS)@d0tpI?Y^^i1AF7&!2)8VHyVz>T`SIZb6wh%$2tE7v zJZb=D)P_6K-s)Oz=?YzISR-8*1~)>B8gs%OOG+4i)EqmLPg@OOrw(ozc2@YhH5b_v-~h!dhyFt%hf z1P;tro7M2P1SBWtE3r1O@g~pJrjrV;u1_IpS)nzUkHYgwac6xJ44&2R?ypX%s{9uI$u>$aHN|CH zHcxlK!l)1p;gM*X64NM5o!AT1{T^LZ3%FJ=T{V{WI#QWLw|WK3#<`zPGL1dTj%Fi> z?Tt^3<(%(u3@j1=*tA32nZAI~U7uaXNO7KQHM+wN=bje(p4BFY4KxC=S4##-Mjf^^ zNoF=qz~uV;ao0~~YpxWPf^%zZsUi59yZ%+Bl3fJ6L6t{5b703$@;tnm89p;Q^FON% z(Wdenn#@AxW5-c>0Nx?MS3tyM>%mG!`IglX6_TUMux79?6Y@IB{MA*)| zuIPc&G%PG*(*0R;e*x(IWq)F}w7pZH1Fx`W_<{K6Vx(Av)I&4{v>jJ~w9~qUBbeVa zR~o~D*u(IuU8?V2>UrSAEpvb-#yip#FCsM*_=}~2q&QRWAHW&JVe5(JuLs1Mw zxwae82=3AGVF6arHLTGEmcSbk>XNRd2UN%;h;CzluJzxW^jABo1Y(+ELGXZW!^h}P zy%M%@_M*9b3$hMfRJ;Dm)rJcsV&~qR9%_yU0cq09hqjj~_;27b;TR+%Ud~H@Z6!Za=PM z^VP96yg*Rg(mqg&3153MJADM2W>OInB$@_HyM06s*f@i>;1M$59dEF`GPh> zXc>*yIi-b{Hf=l|lf!+p)xZWTrr=FnY67DFX2;vbbJ2NNF$8X!6`wklT@H^ui)06D zxHme7it5H!K*g;+5piIVWo_Zx{{)#E#g;ZQE@^aFL*J>s1I5ELY9EfG`dGauqqu1E z>GvmafPWQMT=WAkmzaFee$vTSt1Uwi#M({UmR^j!i_$k9a1K2a{}6Z)Yf{Wh^cH z-GF${irO!i13_lC%)zH<(91kuBcj&jkZIIArGzv)IFqLLWpYu!((j<{j$d(dvtJ2m zHL7%kjI=gpn_-aL99ghZ8`m)$W3WHhLAOson_?(z{!>b6?p7b@Xn?a}E10|-MxQog z{T>mAXU6o})1oF?HWJM5y*86Km1!G3Hh4I67trm@4vIKck)VNH95{TBBJ)p1ofN)m zA>9vBv$IH_2_P&&N6wf16!AI(^=yv9`|jZJVdl^t^MQ%KVhypH|DQ81y@!Mmz$_c< z77#7uME35$9qMnmVQ#KFmBiW4G@U(W3j&-if{+7N6Sd6Zmd;Z@lKK5rSv4a&J%C!A z?SdCr6JK|^&whq>JJ&>>6Y9bYlvm0SKg1IH2!s)e>xL(~=f7U)2rTT6P&Cr9>@VM} zl=nhux=rD;%Rbo&y{gn6MS1BPPeZ@RCC}C3)B~uFg?w<+sFKdfzl{TGXud2hnDpI5$!-Jli&+U2*$% z)=vfpmy`DGb$gB5Hy*mzZzNp zAX>#j`0iU`P)35im3kE;E%lMl`o-tQ#jA^ENcZ}hrzpg}1R@PJNX|XB7YcI}gbMi( zPPUlD-h*r?%nIWWMk@a*^|qT6npp-iGxL=oO&jgYPC&buvNG6!KyXpa%MwQz@cJyY z1rU*l_hc+|+!(!NrA$=K9gP^pcG3IZj|kj@60=E`jju=>SH^E{%__sev67l>(V?q_ z$b}p^B{9U(ehZSG`xP{5VgZdQ&#=d9V}Tge&H+|)y;mTK%7;d0m;Dd_b02!d z1F%!e)e#)mg_lY@wEBo@y*Py3d-B=JxKi{(g4a)6h#9hy7H>A4u8UNqp^cb5Vdhjb zLuLp3eA1}irOb2UuJY+TFljiy5rKH!<1^X=ho-16TzHEtw9%g3Xf^(~wo&AB(9)u~ zFV?^Js#09gZy$iLZ4;sB(ro~^FdlGEbA8S2kbL$VI+Q`J2u6*9!_JgV2^$+xu>DdL zRhI5Eq)CzJmeZ@4c3}o*_vu_TS|Upwo7Hz8MJNDchi7`*50_gAH}icuawRN=5A2{r z_w~<^eWWWVL0mxW3`A(4XeTcedX2^2pHoU0itt|z+{J^r zU*Q5D&?vVZKx+p+6YV<}CSOk9jKtW)r(Q^$GJ&KB=t>RJs?WdxAVmDp!bL?i4*L5` zjq_*$rZ+aHkP>V3pxcT*5GI!LVAJc06;a|wswTe0;uXY~1g6!}GRv(s)Co{L;AP1p z<{t9F20o28eiQKQMvp~mdwg?SPa!*X(bcKq!y?@P^HTI|7jEgK`??wOoeDtzAF7%U z#+!yI`LsP|wEDH;bjAM|IP7?g9;miE_a*m>)a7=9nimTTO!4UmJG}JGd^U+c+qP78 zy_ts`k)LS0Fd85w7Y7OHtZ)nPh2V(Py(!I~KdH>j+w%E;$c^UwO~XHvp$J-zOm<9} zZHFuI(utTv>a0*#SDT*U3GxFw7;(XNf4}>or6Hh?!ZQcBni;8 z1kV9~(k_f(r=g1X##xDFgaknZ>VVj0OISMoPEVv<)`5if*e%qN{BW8?Kas_2-%7&xxTP|%y~MMXL$qD$Gyi-Ozjf`yL)p8 zrOpfs3~tuD{R-GE0HvcOckC?f#Cje1u-oTYJx1rT{oG3VV(HPiNvdL2WGMSCVHMl| zU*}m{;iq`Vk^3}`*PvS}5tEax+54-o!=c?=n-2&dmPq@@RpP_G0B@(nEv#LK|3ySG zm1gbZu9;t@e-_YC;274e7)7=}ciayM`Iq?p0jo(nU6lEROn%9eBNLqOcL-1~-x8Bl z7c6^Cw}?n<{7Cz1`E{njRPQEs_^*j3yN%}Z)H2|>Pla!b2Gu)9rrMZeo?yPy!*~tZ zpo`vPtvz98c_cOpg-X13kP%N;&e#Y0jQxxehHwp2p`X(t0GP#)Mq6tD8`&t0rE|G} z3ubd`~2D<5|;F@a}nCfFX=j^wg^|8v0L;cA}ALyoFCcouA%F$yQ@OFVI}xZt_o$OD&9ffNBM%fv`TWx zenA&*VOhu8|1uun$a7a*qJa73EUQ!GBfwRljAHnMrGi&sQiZm`RManH7#3* zVnG{sTbkN&Jka1wuv9pHo0dJHppc;sn9dY%6zr}8?U2I{V#<%oO=y2ae0_*Hw_n9D zO}G>b_iFjEz)iYw-ESe-KrPC2X7IeK+YwlC(4Mp3rFkPR_$PWa>=2s0H7-1^ z);Ypw1B=rj`jHy0ow@6wlWpMSBVRPJ$9zh8z^^5&S3l%hZ|w%uh@oSXWF{b%fH$L~ zerOWzQ*fKzSmI0Sz1pw?6DT)#(oc77o1)cfj|?8O7v4TEBaatfGaao#@8n>lk_@;F zUYEK)U2aNNAaSSqIUy7r!ur<=;Bh}U;ef*brFxqq5$f%?m(k{4pabllg(Bo>S#21J z5cb^J0leR<8$xgFAY9xAR0*=m)(?q;FLoCevhoe|^EI!Jz_+fNaJK&Tazk9O(rx|= zrkFMDf-5)*eEX2NSL3%TAtW&kkcoPL1hNemA~L;c*}R?dF+0&+0e4RZeqPuL+I#Q^ z=csprO%PSF0NSm5yb`cVDY*|`b05IKLCEY{eRMfAbALU?gn|8r!lP{l^b%*bdr`WV=L-24r5?C+1~c&&jw z$W`jA^h;r)hl$u`w*#Hp2BeFMJCjQKpSq9xtqgn;dT4Nz1wI8EtNH%l3t(w6e4Y6l zP6gYt>wWtrw*QwCa4#dG@jIRSND=xOZ~AhfQRFxJ5Ij;Qh0p?ItoBfJAIJz6oKqR- zRMZk2qtn^PcRh0vh#YBAllPG{1}!Mq%@Dv}(=~oK%v4}_Y(AF;rF@2K8A*+zoQBms zDx8aZ4E1IgDW#jMopA8F$|uKr@;wgLeU$hNR|JLKtROr^5%Tm+Xo{Xvx{VLRpxCT) z;v_2YsY0z{$}9xh-aBLGsRg@ZJghlI@M~eZ1cSZt;OWa|ZBwULoygh%&fd2#f{p{~ z<3@xei1Vy}=uUs}k5bdlIi0_V4G&heWco9C?X6M5$VoKF>QJ2Sd~4N>7#SBJ*q5-> z2%bcmJm=^qquwZoocNuI>~(ORVK~OK7*Zt{je-mpu5yp}{K2I$B*Mr_2E;`ELV~me zy-)s04bacwwQLgo4bK5)7ez{K?2e1w8h;7`#>X*EK!zr}_5O(`XI75oGCmK9gqrcp z?7QF&2q|w4cuB)T(XW>82B%Q>GQ+4SKYv*%e;yPoVMx;tD7vUrSTsFd z4>B9(8K+^7X-J=7`%Q;KnkH<(#TDg0hER{11=Ol=*Bo2mN_V zNxCEfo%A>@u5dLF3M%=U8fAdlXe7mI9D>9C3J-yWd_}bqT-lZ+ctueUaz?b(BJZTj zT-$n{KrUy{XQN5S#sYNsSa2~2#`Q6$P5{o68G0z&x>NwFiS%(ap*P!f?}f5TJs176 zdq0dRcD?MxmB?frD=zYN6NSJWR~qu#BA4KZGc5`}_6Et;Lpq7j$40}=eKkcpBYqWb z-AodWz5xedxK6*JfR-PB#qB?q^ZZzyTAJQkJ2HK}8PQvKtG0mfrzF1X?Ir>$$g<$O zK`G9dM{CNibeV<*%wz#(SYuQ2S!*~^O% zF?2f(AOojISJLO6Hh%RsOTuoUt3m|yZK zEec2~K=$LV3rZ(%Z?FH1e3RW}?v*aw4m=ZGHCQ7Y+KM&b-#*LT`s z*xOB}`Oky&LQxd_U~zr$GE}Sl5C0{LmLqI!@@On{!8WEAVH^lGf+5j39}59d=}c?s zzO*$=F~Iw>(V)kBK+2%(STLNuO!|L}ALOe*4~K#T zwlKCq`b{)SOwhJyXUDVEx&)yzckX6)73~K8Z@6(X_`yq5HVz^xqj}pvR%>sj{43Ea zC~XpDR#xcU@Bxs$6S@i{QM>w{%qMWNhEVF;CV|}D=#Z=tS*9}(n9XG%VCeRUmdb5w z_J9D{+k_bR8c}(W!{dm4m$d`aG~MlU5J}fqXlar6o?J~kD32=(4nIbu9(LEGVq5X5 zwuj5`hdUf9YxuJ0#}`|USY=d6Cf!0KXm#-9Ngk^h!9af-(mqJOW zV%O9mxTcCJ+LtexzpIG9p*?wDsc6I~VWTZ*1v=*fQ%moDKn`B6d!giTG{5v-2xL*;4udM^!|6PWRBJy zo25FtdK+o~)F<=!s1#6q9}W*KcpYw+4iS7XWhadCEE7;o!^gn&0KFTNLjCN5P$HB+ z3{asykMzAht;fErz&r6$QGR`_he)c*!P0>KHE1Q2Giw-|A#H3%bx#HU{1fb`VAWC$ zWKxBps;8@ajSfn5OPH4G*C#6exapwJSy>~aGtBK_hi>S|WjJ+GC(ZAE##J*U9e$oN z<&W%hk;ouC-lt~}hjOFBo1Wt&-N$_J4WrcfpfUSMsk#e1;zCM}IcV2lOZ53|_D@W_ z&}xeS@QGBvn=SOsn8bPD`uEl9x|WSldk`WXZNWkN0+#E5N+-wz0FeQNpj0YBrZnJU z-0oMO2lDLthfK6KES23HpNj@X+qYJhc}gaWiN6m1DM59gsu zzXdstfpcitL}9!Tlq1qUhygL7-hl%fU;m}LCcYarK@}DpQ}T7rnMNPLyx+8xsNJpw zOUFqp%Ab`_HOfps?;E*EQ&A;oEFY$%p1L!L7=SEIseV)BIu|pC`AJ5P@Xv+Y?B2_W znG>@8t8h1P{y8a9ac0?Qs!U1X9GBuH7GC6rR_3uurQgE<_{23snsxLxnOhq!PJzJ~ z$2LCXX#mgnO6X>e#J4t=ds16{QiNf%#!!kqTMIBe-e+Ez#^6&LdxpdsG9UQ0729A0 z0j9R(aJ#e#YjO3;dl-4CFD&vLpgfYiYhhX(e2Y9Z}zGw|nU>|@TW)&3P#vuN7Dls9>MjAvlK2bz17Rp^s z>tMh9-0q|qn(BFiublx^9R(>HxD?_~>F^GBK60_xeR8e zuXvYJM8=n0z=k=LKlJ_PmVsG<02^HNM{2b+c&HYGUrIjAn&2En5?r330Url#VSlSi z8Id(r+F6Cn@{?&fwZSCXH3L?=I#|$~IBZp|D&Mp>yrz1|1}*|)sFH4|daFb#oJ_5q zfp`FioWgjTbs4gPC#~&c_Klqa0wgr}3BO#P1$+YZ2I<43o2+dp0&REUVgovV_|Hvx ztKme|D&8qoMV8J}WU`|C?gLFiV?hs2Vh(_jx3UuQ=GnJ4-UGFi zKh9fwiQ44CAa*tWv3bVAu?!*B!=||qh;MotW31|BDE7GQ>!xtf#qcLnj?3BI^TLdi?J!nkqA)~QR3oKXHmsw4ksl+9HSk> z2GAP>xM6`k5yjt@*%+88WnK;YtmOXSG|CH$zV9_}0Ut^iTr7iP2HHw=s>Rhtqy=X? zS4mY18M>8Pvabdr;pc1TlPi|E4h+9@Mi&&VDt1u2C#?nJCDTo>Xeb%`g;c*+pT&3{ zO9LND2V&Ab_PTD6tOGtW*IU`Zm3hZxTUVwp50`?@nJ93UoyCfn07n)7-;1*E3)M}y4YDEev4_@tkVbQYONnPNmy1TA zfLbXg=vS!SeI-6Plxr2UcSV8}BMC`hq&8AXgGfYhGnbJNkf~~Qb0xk=7 z${5r*13W{>f1C7afb7MftB?&X2|_P&&q~aA+u?06Z)=;~06XYwUQu^vpl5uh@C)pkt!M0<>SB=&0r^6@HC zEc)sw$h)0ehazHPVrirtUtB+O{A(~TxNQqQ#A(0)dD4ev-Lx3^b1TQ=Ra=-C+nD`3 zd`r1o2xDX(KqEoLQ8x|=IHpm(GMjR~@u{)GbMfetma%ffW~9};yaj0M3O6-(2S&6> zi`!_s14h*7Itr*(zSX8(SX`7o75%IXXK)>A{&e@jOxqK5+?%jtq*-vlS{5PIO&;RT znlFYwe6%g+@{WHjL8mHtM%_lZ@*L#_OsO_&s;K{MJ(1!X2ts%O3kzNlw52Co@_A!- zYf(-RxL9&=-gt4Zm+>z#)331|9bYLb#0j5HTs(d9n~xvl6MC*JC|SJGU1_V5Y5}Xj z@ji^kU(Q{$-5C+TZdbZ+A2#;K#cNyAU%-VNj=yfnMl9~Zu#K9KA+s^{svRneuX_C@ z!;td16+7^~Idz30FOGn89hO99DjV1cKtcwbJ7Pi`(@q`dW9z}=I7Pj^>%m6$T^E+Z z<`T25QTYR%^wz=hwo&JI;HHCm=J$gqJX5D)sLLkDnw2xCIpOCA4^l+>Br{3l_7f*p z1!%Kk8X8DV1@!Ok6+f=)vf+>D?;wIcqxk-R>^wAl_f|-B278?#o_`Q@vDHGQ4C=eR zOuGjmdTHmyH9(4?ia9CK+x=IV4Vw_Lsji4!WI&?jS0Zh%>dW5-N$)TiR?p*yrQb{( z)41ibvE|dQdY01~wZkcxgg!43IKFwS0+@+fDp+Ss3xLF?uW8rN$^L$L*qF9#)oC2A zan=W(jYT_n8TB_5aaW%AQ0`hFbjcGm*m>pp&0Kd3VDaX0 zruA(<3Ci2#Dt#n;Ry1UA9<$$s5Lta2@~|^^T%eN5H9S&QC?w3Gl;%{i6NpscU{Nxr zk@dPc#su~q1i$7?X1DNO@gb zCR&wyyxNvx2wb7~zC7*zhhjs*#&JIBF=OyNb&G&yMp#LaxDC-Yc+&(p)T$HB7wl)c z*&zeG84e^Sz5g|ctB?uOym{5?Urf_WLt{qgo?n+H*Ib|tc^>T7BA z5521z44{$pz`gXlO*4%(Xzf9N8p?^nm-xM!rW^{8^z4@b?qw=!4;5MxI_v z44p9*v6BVetlwtTz*Q3kP?HV&mG{C2HU9C%QM8k$+?wV4Y6=$5CQ^`_!#1bOUKis4 zx>*nJRkx0UY_1Y$-9@6#NZ*R>O%)Gk0BZ64A+ZGdyj0`wVlrNiCWy$!imP~>E$}sDm4@RVmLO>W=_g)Zw~+&<&KR1Kbn}JzHAkyYxZ_W2c8tJIzPQ*Zw$sgA$hRoWCw9_^)D1|+1t&oK zYR6_LYl|L}UV;*XbN2zU6ajMRok(vR^RAyK*TwECa!+8t&4t3q|9?OE=wel&vMQtx z1lCx^Pn1S8#%?)zJd0KOp#iN{JTCsMxnhASvl?-H$HCB-B@mNBJFg((dG)PG)jN&O zg}L_`*6g?i*`h}U(N?rD%6}3J=4G@e;LyeBG?lu-W@;40bAaj?*4NtX% z|D~yS&!~%uJj5>bM>!rGJwq>pT(2Zy0EjgCbRTtaRxsITep}Csz^rfy(oH6P4+B;~ z7|5)GZA0=;_v)~PZJXJ42sa%P0lyRki#m<^iLCYA3;-$*NU8|-*LoBY)cHW#^O#B8 zGg@60mCr;hsz_^7gO+jcvS0BLXSD@^CQL3@O^%Eux^?0WygH!Oq4Nvo;u$H*r&3jD zc*J+&ijopG6**Jb-s74+nhJ++ym`(VSBKCWfz3I=J2Bn1xkAPVToL=*PQA!IWbL5h zVJP|rbb@YU2k)Jay>VoZS5IXHp6&U0#SH5xWq?lgjV38amG784mL4kCPQb%^&~iLj z2CSDHpr5m$^n;YUEbmHH7CSi6E&HBc!;H8O^AQW?ihAf+G0@JG+Uqw)SW; zAs^{le^H|q1&Iy^`ssD5$5kFl0cMQ%T&Qw0J*1}sO%vwjrtZG&Q06Mdee6#*vRmmM zOMZho3itXz4qFcH-Avp7dP9slk@wqyFta(S z;(h|niLP^j`BjB|rWyYA8XJsFvVHZpHoqLrH^lKX%fur(x`~HJ_6Up-Sobg-8(>8H z+{~+hdFS|p=3iy;N^An%%6U)5ZO3QW1*`$=vuYI4sZ0>v8hB(xOuRojr$jz%G~pG_ zDu*OeI+450Q#Mnyiz0(fB;;&Iw)Nqv+IW|%mt?G_V!o3=`2VKHaS`OGZXH;eMp z4reItQ&Oc&UeM__HW<)38NJot+Qex1M8*BD<9k8b1b0w?HVkAXAMD)*AbVoJDJZPf z&~1y-55|X{T_k4=?!re^hH)9fuxgf;suDsKG1TO2LQDu974;C~=3HtnHdrf&u3wzQ zX)BvYOvSRRn>ZLw{LneOYg-~Q3f#jS$c<^OGnd965*v1i+Bci$q+V!(yFx&lhfw78 zerYsmi2PzyW~mr94SiuM(M@-=art7=@jq37nDf&mly3_36QEgczIqn^d@m=y=Yt5R)EYmE$L}|^g3ESw6O@~SFSxgsS1foWeL0Yv@99h)$c5AxamWAl0i57m9eUKVJLUnW=?z-H%xQ}S?Z zF@^d@H)&L9%42cNEq67cledED1YQyOop}|y5u|wC8*VQULC6MvO=`6=b#NB&#XmFv z>T<=fF6OORpY6@j{l+Spw^p1s4E)XPITPx9!}%exrKhtuNki|u`QpMv0BpF2)Hq=1 zw4oi6u0ZJvI&o|#Aoe?@k@SXV*3hvZ*j4TU(dU6T&fDe4S~Q%1V0Zy(4i|)D5)C|6 zk6&fP7PmtqCZXjfcXwi>&BthRnAY9~xCml~x|m>Dd_F*Ck&g&Jqr)4_!b zX)xuW9>z5y`N;{|d5|s_$XyLfyqk#?)E1pFSj8n`lFw#;WCFt8Jzqu(3-dGi`C)f4 zA~0Su(yrG-Rf%vl$S!Y+2FdtR6?yWYl6P%nfG$ zO(&Qu_0W)~_LF<_iucuVXc7^J03mXI_;Sv?K1Btq|I85s)sJWaxUacXJqwV>t4SE- zBha?2N&nbajy@nvMAj4;FI<43^a^y$CS2dXl}}{lOLR-nHRgwwg8inI;&RZ#W@T0Y ze}1krXLxlNc;Q+Cumit7hO)M-YkPtqJTIMB#E4lp>gK>GKXC?)9{c{XFr6W@{F! zm{(A{q2FF?P7>Wwh&nELdMx|8wj)0cW*oxMaS^$Nz~!fqz!sHRUd1cJ*<9}o``4B(EhT$7v;Moeh}Ay zvq&Q{alMA*JVI)hFkb^T*3KBRV~AaTfoPzwv-k_oLFviPhLKX2M;|cbPe& zR6Jmjt&7c-kEcyJ{Tq^%e~MYQzBLO4xvW!5w&x0%pbr#}aT-jSFPCOF>zR=n?wSLHb2eGX%29;$jQcgA zV*IOr9q9t3DxFhJdjw$+i$~wEz*Ma)Mz#+(2(ltI^u#(^&z5Sx@MuN}UMJ$fn@Z$$ zU`3o)Nztw9dQy$27;te>QrO3ia7&xaQ1;|RT1f#dECgERy7*fqhHiAiSpyB`alpO6 z9lxt42YPxuGkSJ9<$PYx6Y$Eics_U$yqi8w`$oHb0JEEqWgrukO#Vja{=cR+GOO?{ z_R{38v%WN^7>>0w1wk2iZ@Q(2H$M#3GJ>X~_bWMD>3$v+ z%BSWx#{V9kwFz%3z@Nt1sJ)$_rl!z@p0+GAF3;xDl!qdoZ&6AgY@ox(o{st@s!=u9 zWmBMalm+~B7rx>YJFlsPj737GJc+)Qq)IxClLb$XUhv@)_sPOM z&a^dLoKg5w)+sa(&&gnzM>AI@5Y4A6m2IN>2{xB4GVnit#2~$sSv;p}=TDBTdg-Kv z!Lxi|Kjwgs{Yb4*oIp=c{%C&d2zprOEY-fowsYd&im$ib;wj&$r% zDjFhVG@(D6tV2(n&%d0z;?~h_f)Ttt18u3}gd31_yREvp^xI2goz%Ax)W5WM0I13I zE6=qPV==R@#nwK5%SlTH=1t)^m6~Ff+>5TzPi8NJ1H!=w82}9_x#wl&(`%+3$+hX$ z&zR12z(N;`JH4}9n%=hyeZH0dd&Z}OvB3Iu$n4okKdQ9Dnzg3p0mO%a4q+yjE9H%HUyV;k) zPt~Ocz+I}Nr(k5%GEmSqCs4Fyl8hl%bFgZl#iykVF2t+4SEN_DG3B+)yfaS-zS^o+ zdICqO|0e9O*I7v~1wCbqo&`5T0I?YaX2KFRYZov0)95tin-NL<=5ieGN{MMpw%6g4 zB_rz+hd{D1!XJle#9LsT=I&5ut3X=td*QOKvmEI9@X{T#Mdt>OwNdg}JfljPA3=1y z7_kW1OuPK2%5c}J6oQs99oi!|9I;_L|K{Gh_()q<+d{z?OJ@^Pco2?WPC`!aq&s!R zfp4ck@cJXU27t!=uS+FF+;z4$PtiX%uo=v*%z#~WT;IUb5`W(33$|Yhx-h#uLlTwk zQ?p8oGwr2y5Qm07>i_g$lNtIDk{Iyyw!V8Cq)@Z8%#ev@`Mwy6H-n|y#5ti(Me~?Ct_olm(lZi=C;g_WoyOlYMNnL_ zceYV5L6qAb;|?}#mxB2jgY(l=nvEnn44gxFnecF*5yiuu1fjFgdh2OHKaX6ns5=w8 z&DFwXF~2g~f(q)ZDPFHT!_H&)9(sMf<-)NZZVl6x1AGjYwZ6n<=c4si`JiKKX##PX z>Ve@PeY!j36au)a%YEe+$Uc1(6)xszXkQZqo5gQ+{ID~MEA6x9x4x>yep_-*T$kSD zeFf>u4c2%?uD1%ST5>lvGFPv^cgTQ^$rQc=q6@$381sZy?O}ii!5ctARsKesW!L)kWNrpyexH1Ujq0VMolwN$(>l_>lA9(p+5I4OT7-yaO78D zs?~oz+eZC7iOLD1>Yeh01=FXhcA*BcxL8R*^#*nr;d{H-RtUA*@lULbWrilwx)UOz z9_$6-B3)}x{ArfeP=E+_RaOump>ZR!KEL(;dyL2D$u^$3C-EBx^gIZH@0hJ7;br7Z zxU0lB_bKusA*5QG_krT2zUofLRZB1; zb<{D6kCSn1{|u!3+HIcBIRAf*Xv0IU^GM?Od{e;q6wLYC8Y}L^geD$%Y}svHP*-z`j)JB^1Hw?7{Qc-mfeaw zQ66^sRuALpax=9$vB0zFzjPS}!~BE$*jAdq!5piZ69kQd-|Fv4pAb9yKP)UGEOH?y zQS0%hg@E+{mWau8g+=n!cK+*`ggh9SzEv>yV?65UkkWsA(5T4*VAjWaJ+nOS=pz|c z5MRMFWiKFx$Mi1P6rgB=Ks25UIBryT>E32?R~O0n9HKM&0s?^kxJaG)>E&#M2TKP5ns~Vsl0X+D_raT)5lDYv#X(smBK`kf>4TaG>@@&XN zfmI)%iqf!XYLK}I(OcwU|1FM` z=wU8ZH)7S6B-_wBInZ-YgV!$ug@IL8wtv?54w0}Wh7&_nmo1N7`ux4hAa~MLt4X>V zV9Td$&w3hj{Eq*x0}>MUKD8>=chbiaMxNY!ZeDcgsmh~SH$oZ(8!^#_>zp#rIBy%s zSpf5bXef`)(iBBA)QU;Z?p@s>*qE{T{KbyLXcVq=@M^L5mOo$1ZAk_u(%Dck;;&85 z1<)gvIFepTB6IF;+B=iU{LB+F;a~)H=s!WsaPk<{rl$`A z>PqP;@tn^1zn`51+75R8z!4rA5zjz60z?nAf%9f9(bOsw^mc^e8O|)h>J^L&qRdH!uVr`ug$N&%{1kTmM)=zi>`>biS1c2g)*cpKvj?(T-sz8^VRZ)0lO_|CQy#@T{oYGlLcYA)%OhwaobYoyw5iFllEgD4xz z>(6_b$G6T${0JqhO|rpQaJQ^$RwWOTSBD6S|2F4YwKUnQs!6mWY;iGY=xe@T*+%i- zNa?~{gnZtDz6SF!aw)?Y6UPiBNM~2QZDC+iXT3o1{jdd(m47iQ)I}-kr8PN)HAmR> zyiidYCvvK95a_F!zGn3@0Q+(=DCvoFb&fHW*l46sDZn-s^PgU9vvw5VwLIl?)HjBB zZK&4OY;^k*?E_Fm{rpg4w^wWf66ARMW@>eODkI9?w->>&}2cg3^*s@*$I zr{Y*K2N5GR&LaJe})x95ioLELVj}ffnEuSid(RdrQoGFj9m>V*FeFN zXup_{08eJ?pFo6de!(8<<;)}$59=&rVKas})A`LfAlc7Re z%zgfg1`oTH;ZWHVG2w$YM4!r|o?IclJwRa#-+{jWIKZ85WyrZ$9$I^kEN=%0a|ONq zDJ!(A`h~5ST*6FT*8IjAcrlYJO5Rm&;HFZYKEOVk#sT4pXz;Q@ zsyYo0#_-T_RfIZLooLJI=@^SQp+Usz zs^k~PB#S@T$(htP(H__}ImmDW!f|$N3ut5LWuNH?wbYl?nOk`}oHMUsiKCLr%GPR` z4B+9$J$jg1@oqa*O+hNgYY|~_5@M=X45w(h8+IpIy6a|G5E^nqSKi3LrSW%N zz|U}yk~J~c)telYeN$axq2t)9GfTV1H3&DB6&wXGwov)g9&22v67D=NVo+&Lc=O2S z+TguT!~idVxtp2bN)#CC*9i#czctWH|DPYOb9Kzdp5K4dLJ=r?;ho5VRx%`m1e7@s zL?`upCEawN3OGRO`uqIgFLoH3Vtz>P2^q2J{+9-U9@om#bwTz$PJsxcsXzydZjnoX z@Lojd@{R?#k@Zfl52gx@c)h~8v@f2d0%05;2o<>6a2M|!>Wa>1A0t-CvLRA?D4KCJ zzwDc=VqW`mt77IL+&KT#Q&ZI^>5Um+r*v_liB&u>u6t3`U32@t_JyO^)iPwd^Gm@k z4Uj$&=kTSwL@2V(PA1^v9|zr|xT2`x@@0QH{R`U{$D=n+q-#pBl&<(oV&-$3TH1m) zGW+uRym`yM#pw{G`q;nb?F&h;j+d}dUw}bEZ@ZYeMp^?3L!5x_R4&eHPnwp*@#oq1 z_qBe-T;~e4Vs1u_b)`XpYx!aoN5-iNNR*4C(=%=c4DjE#m{7qgy2LF-H`w}>j2Xu~ zaaEmLZ?jVOd<<05x&T&)Hv6HKXe^`?sTPgMpD}@*y&u^k{>fBeF>C-n`sd?}DvNVWW5}`A{C`TgrJ+{Gz+0gQf3wmDOykrKIi9!z z7P&f2rPx@J0D$pXI8`gx1J%kjvTLs}YXK;ku83&VH~r#Bq`_Ff|0-9m57FsC}qF@o;@y z{Ns(Gn-7o1;rD*W+OWN5oinVeS0-*^2KhJ9bMj)v3AWDc_7@H*!+z9QR&e40+BvW- zUZ-Bkm44g8?Vne>e?o>LCCL}=uJypP`&`y5M8l#+)%5QUurrhu{*J|+?WF3@%WlL; zYcXBs!OpCP1-qV;W1Al{Ac(g`WZuJ!7tN|9?3m zK0;WsKz!JRp? z;Zs8iE`0=X)>!(vt`vb8g2M*y6UXwP{loWn;3z`oIRi`y^OB9F+{{-~_B4K*msm|~ z)f$H4)N*Sb4_0d7AVLg(vYK;Cc3~)-+wgKd$xj&&wf1mILE4e?W z-$_NYactLWQWs#?Kh7TJxtxSw00ghU8YNZL}Z z_6dKJB?+%PsH|W(sme$BE@AzMhxMeFltH2}ExSA$6B;`{4&7GVo3+_Yfar(CcjxJC z$WI}p#QX&!6;L=op1l2~KC`;6&533^6HANoeS{#>Bzp&H`!ccz0Lv+@950oyN>Hl6 z6zqHBD49OX}U#OTgwRp&+grE2veAr?Z$X($W+BH^g>*L+}9 z9J|WoT7Qj3{p{~glwhw`brD~M9%e;GqpPRwhl%{t&GkN4l(1zV7MAMUQqtjDqXTe{ z1PzbOo+ekPxVOCUVSuBpbFP~+A#yPC)*7v~D*~Vl+HW&+-fSKQPydt~D3xS0XLke$ zT6QJ&dVl(GWOfvFzN`c-^PUWt`tT;u*7g3moi38V>a~>w@oxdSje)iD&a@=5V6EM= zVZ`O{I#P677HA#MQk^1s>A&#`qv)9DB7Uh=2W)eiM58KbUR5{^zW`J%qT-Uw{j3v- z@rMPz5+E-gKPE3MfxlMjwuqq zI3Sk+VcaLqD$1G@`O+AGL2Wb8T?Y38RNpQF;kg5kYsQ+z6W9vW#%ddl!gVXF*6&|R zhOAb<7K}<}(x{8y<%-i?DZVP4=Bknqm=Otfa;@AI_qboO8+txLzuVn}!~jV{DI7E+ z3+AQbLkLm`*2WS>}&OuJ-r0d&P7-Y&SBdS|1Q%4Nip0nszT zKuf&5pDiwZ1riy&K(5$)W9G>e$>x@M$u%Rh&SzzMLG2L*9B3C~;L~wYRjPtt@bCRT zr+4A0Mohwr3ll!(zPO_&@BYsXjA48yhD+Ujxc0)X_F@!B3^LQ-+8l9=2gVP=SF+K? zJ78^@@Bk*W|$F?71E#p*elXay{03#=zQTQ2SXM^J+B{pM+--leZPJfK;W8N&#o4sRt#FMM)Q zRYpb)^b$0&=7ZsFwKOTzatDY&88LB!$O-*tYvQd}#T)DY!T2DGdinmc-*eNHxsK-N z-PFt7bN8bcoC_{TpQ*~SDEP3Kkz7cw_Oor9^pOdliw~V@Rd86j31WGI_RM^CGMZh| zuV)>I#kgys?&C#m{m=k@{sD7F#5EIRGRB(Yl}-xI8o+7Wq8Z8eH*^ok!n{3Pwzrt#OY z)U5>*v4>E{_ea;eon!q*Iz+WhWs~Kr!}@=_Aj@xW#lb!5t#>itvmJv$NcHmS$}AMg)W zr#mcdGKzwLduwtPT~Ri?EZ>t-FjZEM1%$apM zQcJ}vKV)aK6j??DA8sKXP#}KN;LT6Y>#N9Kb$5{x94*Bg4(JD?m7C*ai9ZA}aQrB0 z1YeXGJ@kmnj1A(s(Tmn{$uU{4KN+u;S7yfnoEFN8|1a`$&RHwu z!5)dWP(i7GyQbY3=hM1TlHX)@kjr)jo-UI?;x&Apna^9r>~4q@xhv79*~x2i)_7Bi zlmpi&C!*0v`jrfY$GehN!h8W5mX-t`2O&6oypfr8$uL_y0Or_ZaziI!LmOuYX<#0w zlKpd;^LQ^J02A+GGW^c2bBG#xt@3<=!iY_F=~Z32+f*;zGt@8PpPvc zj>L^l?AEiu2zN{S*II)ke(2v;{SKv&A({L`J8x!|)*&IyD#nY}7g z=clRgm<|MQPh?>Lu%~x=+y>c)L(%^XElWKD-Pc|WMYHL|HZkW9uxdizV!A*>6(RRZ z%d&Tg6tfw-Y85h#5l8~+T)2Jomk1(g0AaAe|Mx#fh+De5O6mwt8yb!T?oQ20grTkS zEy-=c%uec}5Ef0H)K9j@Y!gW3x9^lBNowMRNc$?-ikn@fu>Uyq7r^>`VvOS?0S&s` zG+WM`rUmi8!|g|mRZb^5hl^)%y?*Ay*&Q98Qpp=JpsDvI%VUgzt84gjP6?0!GRu+X zS)X~-lh+!`-fDGfUK$uE4lab56`jZ!J3UK+B-(7~*C+(&@DZID-|!M_+dqAptF{5& zKN;f_bjb_}zpqQOuo!?o zqZ1CM=Gwls0j+w>Sqb{T5D@6hm7p}ujeq!x)#<2B*AsPsn2Eb{gTNP`p+-H7qh_LO zl5Iv&OW0r`S-@7Zw&nbBAn{_Pm8RMTNTx}8BE~f-?}t)`wG&Wn{?z7`b6{b0PT$jj zx(X?|toCn=;KSG<&PQPo)vv<&t8^FDbaT4DLz{5vu5{L>-`CRJ!2Ae5`Qvc2CxOyh zTS|{n3uQI-aa^{^Dae05BuI?kO$j1&@+u^GdqU({JVrGtSnZq9HoEOkwCs7OL|lRJUt{$2PxQcknGSrYaWEPsPo^GF;0G&9&?!QMma*`0se&ND#pTSO7)!4PT+Re?i++mkRg$ypEOE?-hCBqJbHNR3Pc;;XMTCtF9u4u5?+Bdp(+!6ll#*Wy}|R?-F8q59?6EspxLW?1rDW}QeG zb_)xH!>R>i7_5>prTtc`Hb+DBdKE=JVbq%twS)k+`hz-c*IPfJeA{Iq_{;Y102y$p zP^azKCTP_wJd>ii-pH}1GC@4hnY1CSz!C`l4O<{*byITX_*KzfZv(9HT!S&P-&Jkb zQgsZ8`GYge=lCeHmE$B(ztz$#B0s$Gxi|IFTuca;wMS^va0blX;GrO3iA_9(2n49X>Cp zPVQ(Yxa`2{Xm$yR=n`oTV1A;_1c<`}k9CM{@bd(zlUfS2s=i&?NF_a@z7Jn|zs%K( zB@s~YyNwNzmpVf_Sg$Ckw{#_1WG@rp(aWa4QGFX(#@FyYth<;iH^*kQIfP1c&l;PW zG})5_c~&A8n@fc0%vDo_9_PUTMvsg9n&BbwBZrP~{>7Z* zoz@BStZk8KbUQb9lf$ev#1iRb4WD><4P7RPr@+hPS1n)5hyqN`@coS{CVyC+uFQ@M zto^NtR#sFRbhgUh3id+fdsn8!H;Zc|yrbc`SWD}9=`jm?1b-HNsb~Q_`iSSo+>(-S^jbF$= zI(ogr4?>~vb(xxtT{|aOFlFZ~3l2eDK$tRw--i@DMs9L1y z@hl(^ZYi@wFRRd)z0LSYma0Y(QL40ef$4g%QeplG+V>d@>AS9ExV+VP4nY`!NquIt zZiUV)bp@@1<>{7bB!|)s1ALByKmT;W_3x9b%4Y#VIZWtgEz1NBe<526eWB)G_~Z#) zA##cMyv`jUW;jyN`!?@=ylD>=mx};e)LI0SMn`eNZ8AQxo$QXKQ9O&Jru?A}WKa4CArcHl9%JOkf9iX~mZW`3dcv5@W0W^fbz72;?~m&azvY{U_tX#K2O9md1@4zcl~ zrXQl=Pk|d!d0q>Q`r4+_*+@7K~5406*uQRx7(liR` zB~A1z!8-I0>;Mt(YTg1;<$Kgt?C&g^$XLkfQPw-rp%AUT4(l%)CvG0-ce*x&!S_*Q zkOuNDkRYyUrBIcPWxkWzO{Oe`wn9QVz5E~J3XrPi)WdNFC<6xxUo?U4EE%p+DFPl` z6E#;QHQ>IIGn?DINt|Ku=mEsu-eH%(7Wm<`$Z7#obuZ9V3&$uC=Jzah=HJ=+Em=PEq)xGX4L* zgg9nv=RdXeK-Ek}8^O2{#S>IDNbV;F&&P1XRs;H7!=P0LEL9pq_1asy!(S0v$_9$rd0KuRhF@(I2t^DK^92|8w57 z&n}h`tl%MJ9EIxnp~)YKX~+(|s5L=i36}1Bz77$bfV=)NW}}UWLv19;x!S~f;J3$Z z?yqSkJ96^vlfwgu>#OVR`3%FomF_yz#PrIgW(=m7ltV6vB)svY7JZXy$KV@_8=+4f$>0XCKAb2=S~Z}jOtm(zs7wl$f6 zSE+NBCK5FQ$U1{D;doW}H_e~19dZd+AjthW7S& zJP`xAOk-~>d4C{%C|O##rKOA>q24Uk^jIL! zbuYJd?W;5hi`z)u6rE99lF|p+tp<9JeJ6;PE5-A^DmXVjz~NGmxJU}4m2W!p}&6A=1qZYRbytqD@|(Y4+pL=8_o%I-&L2&I5OsGDDZC)A{pDjRs82{5B?35@5JM*;7Ea2672p`fD`K7iFI z1-eLOML$I}{_k|KBS%Qqjyh{toaxZ+o--7fILYgtL{D-(e85XJ1r4bx!nJe z*r*arle$fs4)HOJN2EnXWfC>`QrpY!RXS6OYp%>9zD0-t&SPmm3X`2R0!Zvb9NH|XyS?wZuOf_W z$fcaN@Xh|N`mlG3R?&BLCnoJR%=Jd!+27^;PD*SQrNDFCMPxFg7S-Aq2t596>-}0v za!Y}ms7c8+w|0Noje?cB^CmOgkI+lv8&@bvEzK*f46hLJ9{xJf`}2PT!O&pdo)}t4 z!e#%Knya*Dm?TufqaVRzl^`p)zt}S^nO;)n3D$9LJc8|(#pR1&Aea!Q#-btRaWK@pJ} zplwUjYjEjpnJvTr8Jmu@E^0Idj!lntxJP%1@^tSD{0MgLSY!QL()JiQbm>nUWl0nldyCU376>iGUgO=bBlcj<;&~ z2jjd9oKFrmQy(qZaz*#t3~z>w=ta02?^5KDaAd52eCq4QPg2 zk0rrak+fVA69p^rZlFVbeBE!kR?7wcUX=CM%5|;AB5(fFH#t75?(x?Be~}u4NW4$0 z11f~cAUQJXW38Ta3INX)$p#f_w!66alFDNf6IAMv7+y$V9N*QbHzgF3fv}pZ^z48 z&io_-g_St%(dd#9$D{F_1<_T9JP^E3>Ti4eTG#-oup2G+d7Wo#ejRMQPQ<%qLC;d| zL(!Lvgc_T&DMlw&D}UN7Laukv^R^0%jNTcdKMsxfA@4jgUY|1jl^BRm^EJs_30>w}lX2j;NHZm{+IQtu zIl8X62ZEi(4zf>Y{jvpj9FD@oSk(-2y~3ZcFJYI|@BfR-Ow1DklBRC#?TEK?dkMTdaPYjl3*tbvw(RCA1~(=;)JY zBQ;0ZUq^BePQ;m7tPPgs=6H$u=zDQ{_mKyUMnVx`2W9rS?0jCDDNLt@p`bDa=Ulp5 zju!{cYDGoB~h-5Kj-M={k0jj9w znx(6JtVAF-H-l9P>@%aa16j@lz~hjvLuJ|i>*KK866j%umOAFXKc5DZRSI6^)?p+E zu&|9pz;sw=u1#CunB;cAv9{yBU7&&>4{Y07tr+XeA2ZBjnT4vD6w_jikLuxMLEbq& zI;}fXh1dgYxC60HEC)qwZDjQmHe?A8tf(&6biusUe{TL;UeV^|-={f|-kILn^;3hg zKEJzx9^1$PxD9-VMZ76dERj8wDynYC3&*Z&D(!`3{e~cYkc_ z!RnTZO4*x{9c?>dmq;U%yt|>r6t@rv>0j|T!VF15hznz(Jd5i>iGwF!h@>bb0i^Jr zN(NBa><*|)ai}CbCbg++yqlwT#N$HP&v$xOxk%?btEukx&6>dcB&Eg{FvQy&fm~6u z@oWMIB-wL3MHWKqqdfNZuuC6fWoXY$q{RwgnBEf@q+pTUc|!)D%EkanA&b4e`vcrp z7m=wJUAAE+lGbY^ta&jo8e`Hk4(HjsIP1)}dK6cdW3%bBr!FpoL7NEcfECZGxo6J? z+pw|@o|LeC5Xs)f!k1>bh91++#IC`AkKVuyMGj!j+r04d&T!eXGOlP%8YCaDB=nrh z&xFyZ-JuXWf0^KFtZB(R8lI9)e31G7>=+A5Ur38+q4>djIn&?Ta8xS@13E9iPpr7MM4#uN}6L7m`5u=ZJnCH)@ zhDGK23%j5@)3+LHZJuYfDV$DOh3=!?7XScA;e>>SN4`m2Y{$4|cKYZzp zZRh z4%O6t5Ah9}KkAm*RvvJx7rZsO2FQd2J76QI2Wl$*BO7okl?3^Qu&Z*}lDZKBiT3^h zJ2dVnY_6NNgvr&Az6^(yduD6)t?vZtgK`Z+485%EYm|(}&C_J9Aqz=NhGH;_kk&#C zsdU!KS}b?nv?3Twk5iOn{?#U0Dh@NfD{;Bdu#Ytdw%JJ%AK0Oi0aFyUh1Gj6mY4Gd z&y;e@ZVP<$8PrL_YL~I~2GNpu**4k%mO2<`;Z4vVXhuo>yt|*1KIiSd%mcBuK4u2= z*{coE?2VF!guo$=17>g^EaDq=SzXT0c4i(rQOcNy%e!+J%UZOl^~Qy zZyA+|Q~UY%QtAlAJ2oFYmQi}TXOC}J6OX+2GKsxj$+}mgk|AH_yJCA@;o5iG_(Q0f zA?`1O_}+p__11UOIBL{D*>-8qmzEiH@E(8kWkKHI->Q4?ED!iinGCZ;T-B4J;qf94 z)X=iCC0n{NxBM*L1-@RqLPzMY^y}n+ed9$%zC>EsJ=DIVW#jiM$2Pa}C`5q%FR5_i z`A7Z?E7EE-)uS?kq)K^Hs0OvpTT5dozc~)JyrcHI4)@+}+0f2|nCkOslp2!yCUB9eNer3Wz(ncC%H4KuEAnU9uP$GQ~4G zs}^}7Ztgbybs#{{@-+zYJvQWZPjm)?OeM~!3Dnee_=7+~mzG)7-~c)Y>bLPtkG@Jh z;BET7$gDMt6dIaEjZY!FA1N2&GBmDJ*LdyhPUTbKbqXg{?+B$Pb*(BbVK#}~M`Yw0 z)+>tRauCd%=|2)uor*O{%u9%<@_tvDJ$hCtn52e9z4Jh7HiYrCa1T1C6VEjWznl`) zfv#Z;?fg_m#HANq@Msx?UWAgfc=&Ep-@leA6ibc0-xPA*-}Idhp3w>FU~9(My&3ka z8^)~h<;btIcEl;F!>Ad$O-U3IQ%2 zPdKBEY{awQ3hZV>fi8S)3|blEfQ`h=h6q7s+nK^40+Ub6tgZhcgh|)&3{P6-$~IP( zYjKYzlQ{+OK3k!4%=s^fDgWCe^A->p)#FvFAuq%kc!iU@0|y0q*jLIN(VD8Og`@*% z00RM++cE7=+{*H$IXQ)+TL7SLL_6DJBJZHhK&oAI+i`$c*!vW|O&4Mm!5O0Qp%~1h zbWkVEXQ_Ke8fg~E9&3%cp8z5yMIc&Y-7lUsqhdjGkqLI>aE`dhL_|QiQW4w6X%ro6 zcu^bw*`N5!$lybBle`3}X4rCSW%Ea|Z9lsV>ve`SsCSXOg_iVnfYke~@V`r`Z;vcP zu-jbhtbwu=vS6Y@wQ)yyQz@s-AvqZJI1 zk$o2Y7NU|21S*a7^M#63>iP|EOs*SK}Tu$TCEA~>cXym(QZbDK0dTNa(KH$Xxqj$-*Tf5 zkQMgesBeRps4ync7SW)gd{~4jW>_)hxtjJxKUnjuo z^4o(lJidoDrw}X!c!HPRRS^Q=t-}H8j#Gq`EOF%V#H=pDdnk;;Hr&>OKR5Q81+y)j zf9_v$l!9Hy8shFBO<^xl=1sRDIe=T6eHe03E9_T=3hjUB+{f6%1o%S;3;#_H(J6qf}OgL3+2MorI4zT`BFZaW$2s@*q>Fpj*%cNgCO){7pXEZI- zoDRF-5$gM%(&<*T%zQRt8&@9mhua&jBp&H9p>&HFFvgRmfc4N}(z42*){e~4RKsab z6`DkxK)$IqRiR^dPLi>a$63>N%mu16U7~a}Vk>Q#C2Ga|P@hObX+|`3a(71m z)NBEU;tebHWiGr>aGor^8+dC1d@>9uZM2NJ_WS>bmc`V0XxEDpL0>8%KYQOs>E=yx zWHQk0l;SHWhI@&eeDK=X9?pWnog$c0qq|uomq2kL8fJ8X5Vn-BUujq@unj{?257*u zQ!q`?b$B6@?%6ZVi!lGy4(@26)iVvRO7&wb^62XO?$(E7hTeN?=T<)0qw?dqfs9DF z{5LiIaiCu8Zt~IH20raq@Tm5|`Mh5?GuP`>E9%)iJlwi(+$kp%UMN<6OGAQ4K&g(n-O#Z;xw9ZvJ4<_jmKxN#`B)N7lj!3~!W$gE8M<08{qVpcm+>Q)5#**y8|c>j zp)R_8>Lj?~0Q;-;b?4l@g%q9WTZ^Sg$opFJPm1TlCr=kiZ%kr8Lb(5%70OQwn8Ci} z*ZkQ+0yV7fl@-IT2fOsQTUnoe%_~bP(H_S^1|5JYR5mSISvP$$7Y1{EaKgC-dJt})t|n8T4#=dtHf~g_ zGD2RgqsUUubpyTk7$c}(=<>V_WWhCwvY$~#v!@x0JXbAf&xf)bY%kre zgzOIr*L_z1V0~z8h5zTI6pvJ034051n-oh)ls*i%=KEw>)h~~4A5VVu6t;Ki&O4R6&?72vxHhHVJ(a-=AtzR_)3KyLL< z@S0M$)5U=IUOekwxY$1K@if-ZB?eh%h#CT|OOpmJg4Y<%v8l&K4$7BWq(ljFc9P(S z?fy&6x?qyJ!Tz;+U6qf=cI_p!=g^D1lrsiDJKmAmB8Xio*^boYI;XX<5&7ZBF_uk z?I!>}t)S8^#U=jSnC8sNmM!dz^dCsxUB%0r)562{d-@nPL}kRE_E$v1GSO2NV%Y|G z{{Hnn*oc-iz0j_O8p$DOU0Kw!IFehP1g+U(GcnP^P`d^7SWd81*($utVC76(=9IN< z0M94U19*$+6ROADdr&6v(g>6S8sQ>Mq+qUiz2~r$!VzoS(!|U|R3;-o6*h*GCV>!v z!Uigs1F7YyngQdRC4F%qCA+2~l}?ky>4gj+67qCm>|YTD?VX1=DLVy`;2j!%nTT!D zFWuLB0L0yViTL5~Xxg*M*&f##=JoYMuU|@Pu(^WvHGH!VQq=1WT`ufP}- zqt`QQNMmGn<){kUzXRd!HG)aJkrMo$uG%U~rJ_E)>D~t2L)@x#>WKI+t>d}fE4{c` zR~-JNS9ggwF+j|8p3pr|U`yx@-On;faqS;Vk_9UEx96FeF;s4F?Pi`vLc9c+G>yeVrdxK5CP1mqfR zaS$nfb_Gty=#P3v?=Hxak#&}t(~U>_3rx2yYv?~4T6kuySs@UkECc$&AF{+Vh!y1g z(U6%+21DJyyeSiLmVxuR09UVX1J80sb5EUJsp}fnSD9M`s7y}zd_6xwN9pes7JysjQZSa2w23pV#3&XF!c{gIHKRk3q>x~wwDtQQte9AXd}i;T zWk=Z@Mwq=@dB&?Df;g(yUjkd&O=u!m4zaicFg>iIxB?3kn+t)_r1vt_(ulw}M=Zz` zW9JK%{|4bm25z9BMXoWSNE2LYu|3OUJC1s*#>34)X5j3;G@w3fWOPw6lg1S9CLgWR z5gu*I5`O%sO|LjVuJ@0tD05axDuKj$d-t`zb8pv+U7^+iz zFgmn|3OJ#T-bwD6!W-btUa8+>)hFo?y4(-Djc8;|Do0LbL^%)orVGNBrwPf`;@yok6z z?bI40YKwbB26HK5=Y=OVe{Ra97jxQ%7bbdBeh9|6&bcjr@u5kDAA(1HDe-z0Hy{Bu(GgCc)d0JT!eLHvWM-bbr$UD_$I>KxX%pBoc+8QfVjBj zh-t7)!X$DV0G3wk-Fg;)Co02NhP_X*v3=J}4qREreC>4*K;(SGm1M}asRQlwH(d4_ zKj7i&0#vIbYZXTljV+5LE)xsZKd!TJv^#pXr-t)!qtGZwj*UrZ1kes=_3d>_-CX>f zT!Rjl%ij3f;`WZ(*K;ifOSKEX zrA6Zt_Q=3u6#5Fop8HwGgepgY(H;tO8c4%7Ir3snOR<{>158x-8`$2MsdHw8Fw@Uj z%}+)94skt^lP5q9%(WBHf3aVNmd6j{5Dc|{u6Hvu4HqBVs51In_a~%+_}#DV4R^Oc z>_aAf)z(yqh}o`2kNPVEVN|+=Jaoaht&L~aJ1Dr>Cl zoBfD|u2tIpp(9%{ZC~;% z{Rh8k$1Wcwyx(2U)|M&S^3LvYjEzg~%rgY`>DZGMieo@2rH&pXZ9JV}GY)bj!XRf@ z$1a?u^V+lpGPM7(V|(PYtvN<&!A>8(5=QN9cp0W81tjmHStyMNC(q^U{p04n6i4t3 zN-n;$8SY^ePSv*N`u^j*ouLG5@y0ZpDAWSQ&#)cO%#e~brOF-?Ub#Pn_S`#mj+csb zla(xIof)-rGp*$KTv79ixu2u!nncd+o={M>)&gO3!531aOg?O=*=E{DPY@ZDFrM#mIrtAXPd67>`V2fb~q~|w` z=-#Vjg#>$U6wYEz58B{xQS_jaPEU%jsoTsSgQm#ga~?8XhpUsMc_%np*Z=e==`O3) z-$wl`9W8=RqG=0;lmisyon8aOm1TCn|JTn^hX!dJs33wPJy_VSPmbIyKMp%SSV%yP zuS%qVM1BwZfAL$EB&-gbcZvbMx{D0bZ&hkZ6$WrZdHC)aycMB%&4;72j?o@lz#Pk$bV zIQePvH5r{uSFtG!Yo9C%3Ck zmMvBJx;R46@V5;<27E3&$((=4=Bq8 znZ4I06T!oJe6@yYmT4xxajOFOD^o8N@D1xMw`<49U@@x@rT|DXdS_F?kZX{kTZQCu z5#HX%uI9Ak6;w~?Nq-gJVc#~k_+V@zddMCf^_6BPN+z*S#?r3jjX8}|Xol~8vYiqZ zYHSzu-9GI&m0gybe`}M&O17XT@#ZSSb7+l^biygv>uw$_UN<%-0S!h^^OO07z)hoXGD)}j{ zzDl)9J^%j=2(+WgO?lgWxCdgJASA&i{2&L;SktU_d=T%RiYvBeZe2NBIY>)kW(=mb ziW6C13rK1roM8cad&q6+qb(mzpzA$xx{9k}@#Lr1YqEEGwv)b=^CuZD=~iC()i>;L z3vTt3fG4hRVbZ^pJXz@*ns%eTCAVw`^;4a4H+Ql}v|ND~$zI?T4J1!o20XFL$b7<>hK2`W^p!bJK|^?he8b+o z2Y}29T-1dWuV{M00U$;GXM%#!S&A!xZJ%=3wkE}jK2>?>rw{?CWoDAxp44_}A$ z$3K!hus4%AQ4wUr)d|-^CQNE}4QtF&2C1NH33lssiuLmZzk1 zw>5d^9D3nin5w=tEl2(g3~Nt59WOB$GnTuGdlw`ZvzPC%Cvx3YgcvYB3+$E+*PX@~ zyFSGZw2Y@(8}2#0ibx(b7eWvR(=IGODxyiTDTS4F4wO233@QJ9@$qbPP{`~SVDUB_ zCNkg>CQ&s%3{>65GCYh)p7N6Ee#foh<+7b8-M z?#Fzmb4~ZBRTpur>^F-aH{!G8ejjT&n?O^6mV(bduDNZyn+DIPK)E_3WLfDR9>Y5o zY{xvfs@^2}TKT=~XuZ8j>CHbf4u1dwK>fda^<64TzU;HsxZi&O-M_Xaz%({B`_RN7 zCDk77L-jt8vRfgXhHM=rk5C>uh5te;O^%~?%`EG9zQS6mmY3)<6K_D z>y9=)5WPIAN|;~S5Va7Sv?Q<4qU=^m1I{lOL3y<+Os^~ z!b)O2^xDK74VVx{)i^YI@!4Jfcw%C0;j?NVe6-FY(_g3d+zU`{{Avw1}c z@4M_*j8*(NSXIZ}D&=?7Zl)A{cWUmVq*pI*Z?PRGdnS=8)CG1XTZq=$I|n}2jQk;| zG=W)xaYCuaJJ0e^Rvi)yjBAR{62SWQxHaee!XvQWf%g$(wIyI)Y@n5EI_N6Y;yuU0 zv^SD4!uPkR<*T}Y#-_=WJhRHqZta$@4E>5m;V#Kbx-!<|*1Ehe^I|9}JxU)uZZ#YWXu^K0AqIYlWK*Gl3@Z!-IVA)sr}YS9 z@~!jT*Q#tw$D7MQA0L;?a~gPC9_~yZDqV0-Qa7m@I4qV`_9AgXBND5d{%#r@y$LHH zee`$^E(AUM#!@pq3|r%1<1KIm@*$yibv9oH*y;7CHcJ|3MQZEVrAClKnD5PBA4Vr7<3 z*lT!liYk*9uoUJ0xvD##(Tz;bF2@h$q&bKY(?~lfQ z6Q-A#Auc5$+Ef~eT9xe}?hZ%m!A9gDi@9pI8omTO`+-K85H?Hl*iYSIQHE;rtg~!b z0-7?!<$S((Ctsl_!K`12YLtpQ3335k=C6|sC_)uwf66@DR=ZOd}{RKQHV}x;Zn>w1k!v8D97w-fHq6y@oC&22`>ni znftc(CN5R)YH%`I<9kzXTJHHFJ~#|=GN+YBnWi8x$pBP3f!l}YXV+;WQ==YHG0L;( zD~dG1%g{#=QO_ltVq%*%c*T1Z!Fw7vXxbuG)!g*r#2W~V+UvR~kko5sq(l z1dkPQSc60{hoV}AHi%&O>bziDX@LA=axaQLrXYFPT!(M1q7Lg!RtFN3qr*V-f(IEv zGcLZd!<6YZhMpXFB;^q@R7ZYJ?GNlCmNAcKZQva+=a_e#ovJP9(T1E~A8c@8{V$WV zik3UkfKf%4v^cReLLHof{=#(zoZvogh5X}*dhuo=g7|zfS+!=`Emd}6J!|MB$^7-8z-oWQ2lsww)%+cPRIhj(QB8~+)~$ird1XuGq~G%xbU zfd3^e>z523v49$-)WIMRDk!>$QWy3AZ-9VYX)Z*R=J*2;cOM3Ir|Ajr1sNeuxYZo% z(XqfGf5KtKRwW5?Nn zZC$|0{`aONK`-qeu^}QKRl47qnjmDG=Pejx z97dyih5XYrp;kW7NW}~pyrLim)#JbMnrwan=e2m%VJ(&(L{F&;CA1P&66!n2Q=828 zlr2y9+J-BBz|PuRAB_3DkZQJdjFzp+q1_hy$I=O*@LN21zrBG!fh%X+z*tSeVuK>J z-FySR$tL5<*q1o_r(Hl)rvqqZRd{bwb24wxM@ufKeF9lZu@^zIFKAxs= z8Wr!5XWiqVNyrK5G~7ofh=A*@4vr2#H+oN)SjXbI@=3&!B9YKPcDDa(n$k-bANwv0 z0jSG;5$jgK_VP0KEpIEP4jHT;F_`A;aK7xRSY5C)k>9b`J3yLF?#fsbCSIvFx6zJb$hehwN)(0SI%pQ0GFnA44&yd;i zby=M6sOGa>vWL6ZZ!IKqJ$K8j?Mmo;u7^6N*M?BVr`5@E_=cd{teQ-IpB1e{z->rsW zd;oT|xtmOUXFEVDY_|H5Gvg$x8C2^;^e;J@C!h)qS?iL&uXOhJuzIc!pqbBeg z1@3R=_mreurSqATpIOq-g!`&wHWH36RB^7JSZ5y;*Rzcs5#~rP$lUfU=FfdvslC`+ zhBd4m$+9@*r69Hz&&x+)5J%0$${f66-gXd)^i(sg)u7zTdBqzss82Z&4cus7e~wV( zeg*0dD;f;LQ_I4&ZA<^P%VrDUm}2jikOU2nwy`UGe;~wKw&BBNsER{!z_^=&rEG#B z(!tf07PEQ?eaKL}*7^sIKlLcUnB)-DoA>A|)4TXS-`%x1MQ@3$?#@#Ei~* zgq%7B)uN0gDw}Gh``eCJHvBSc7$^bnLJgK{IM?JqZBQdY-A8iNh>W}JzyMD4EUhH3^_Px=}vl;PpDs<<3Eh6=rpfgn|3RC|_(MCvh zX#wal4M6S*=6nj-{;xPo&O}}@@e-91>9`9s)YPC(L~xd3r@=%QRn<8& zMVj8Wd`%4a3JZ~B{yI|FY(Q6 z#Q+PuI7KE~GYV5@Rl@WY99Ce^3S~HCEQQMqXyP8vHMDSj+v&~d_VpPy&jR-6iI*qn zkq6Ffz${ysEbJ{bJ=S6e>?%U=++}%XX}P@*&oUxy{ad}WdjD(3Mf!Nr&a4YVu|I6D z97INgKwCNRhw`=0E}@V?t|b^({fHEV7B0%aRHOdL=A7NGG!_*W3s~i^29&T}npb%- z%5A%C_y5?JTizl-(NLLL&jVNIhS}Vi!@Bne%&t2<#CmUu!X_G*zE{Q6;9YaP;Q5hW zR4B_{qXa~a*I_bIwoIwg%3CfX*G95k{=%Mcn7fK4oah@S0dCbDqbTNsBSWp^- z)4JmLEtblO6lfP^Jpjclz%kj`8lIh4!YAu18+^cfRY3AFf9-w64IJtYH)oieo2=trDEOS5Gcxu)U-RY7(OUjhCJYb zbss|`Uu^}C-7L5YtnMDX1IAkll?1;)eONS7i&WJ1RSvmAvhzA)wGclp>$as}Y$bf+ zXqQE5&0zl~jC>acHer zMBS)9d%1G51ACduHE7A=obr*a&{mqaOsbod2+VZ`)t$Y@>w@tDI;(O=nj>}KqzkkhAFpWylfUk^zS8fi z_^;xq0B|y}^7xxm-i8S*-P2Goh8kx8=8=>IZAl2Lv7gJs)`78N1_-l(ckJM7LT8QA zBzQ<#vLeDW!*k@hvd`|5k#q3Gyu3kHpG{Sc%_`GC(j`u`07Jn}U@-$`^neGHF=xOO z>zU|bnGtWzDST^zq>wkC2Kgb80WBv`aBnMw7XrYz3879r?I9nP)DDX@4zb2z{V0qkJ-(Tm6Ap3_-Mer(keO{a~KeL zDC_HF=aCaVK7uHt6H6P}+Wl}%?oz<(^&2RwF1tvO*Ne8N0crJplMUY4_*rX@I?BhO zW*H4M1BIDT#;eoDuMfBA#JoX2`$s=dp9a@_Lu1ZlkofaBsXm^8z*XiRZ%^nW>)--P zjdCMrlGL9}Dzpg#9m{V4N3PnZ2AZ1dV%kH%w^V-D-X9kE9QqfV6Y2OCa0abt)jcSQ zt25T8MRN|0Mni`}(0bdBLQC^xfnAun9RHWdnii=ri~!n%zr##}W8*>>O~HJaO~_l# z*RRuv^nH8anUc@fhkyxfT377I*@$E6OH2^;4wPS~xt^qus-KRC=ot(nUppvX--Pyt z%7crt7aaEG3c7TLO0WmH@NmWXJu0iqqHzRmi$EQ>&bS`Mj$F`!Yq|rNeGkC*Ky@vO zoi5qFFxWp5sR zK$>auh?3X&Gg|I(?Y|7zJxogdl523y?zs0d6(d~aaX%hG{<}ul-dSh}`4H32Nh~vO z2XFH@2zRWbmQdC1?Dk+-DN{RPYm&VvDpLNG*En$D?nb8IkGR53hhxh0`3{;G4 z@>Hb*=G|y1!+d0%nxlwTq*B0eiWp%_2hvs5v`W|}6VP!#aZgFETieTZ_YCMi8sn|( zZ1z=t$cv-B8%`$sO+ZaCGjas-uAs^U0>F*6M=;EFl=Wc|_x@=*+zL4%@!6)l1f9;R0L>w2&PtjtA4K*B)QNgz2@)ezEUd8eb z>iZBqGHt@svvTlH3&t?+eiAKOSd9@n8Q5S-sqN2K0lq@=B z$zI28D?Hk;BR`Vzb}*M@x0_bl>^5n2vYhc7_z4uy&=exF{MvaqiE0Bf5FF1fqLVZh z0Ad?4A~kyVmySSX`rQo=%L7*tlm~4c?{_@<$TnrIlOVwO&SOCc)01X3^)l5qwLB^N zpqdcXNOWYM?FrSqn)1vhn=Fc%Ex)%S8c6zwJ|$3J7MpER(UK>_n@Snr;XYF)rTP`l zg=(5yiS8cU1%9m~s_mvUA2yb~N>AvWLYb8F&KQrt&fwLK(!zW0OoRO9DG9k61rsoT zIkUrp|Mx-F54XV31S}PB68f6*Jo@yax1FUXDO~J#f0M_<<2MQsYsn?~$Vnqa zlB7bPGUY`;xdfe*#&-y<^62vT$^%b~sZokYmQR)j#WE8syu!m3eC>#&)^c%CS%KT; zH{21DxLWEj7$yWXJ4}BHsp`OPH*A%>vMx&=z4OvIi=6L987qxUT?er-X%a*YVKZU3j4`s&ADvxtw4lW;pKJlx?~->9a{XW#Pt{L zDSk7etZ!s*B!X*jLOHEo>D+e4bBL3!h_i&)(e31}`GOW^HAYe$M2Fp^sKZwk(}TgL ztaYj2MRiwgzI$yl3c5=Bw>XsuXOjsa*Arqy>m6NldL>ahkPCdhbbfsH&B*1r>e@o{ zGCnt`)1rP6dCNyqWt*QE%@j-oCSe zwPxz5{@!9tS9U2R8^~H_~$)w0ZDTECE_kJ{4foC=HHvPR2S^5;SuL~0Q4mLry*JPdNVCdT((wB~cI4cDs0bVaSDz2G*5qQk z@iz$%Kw#$}F^R7IV?nd$N+XfoV@C?#z$Q0Id|R;R;VbTh46HonZPS*}DjnHF81)vo zi}N|QWcG`U``_;tMjwxctv$v7^-tW8lS8~s*5@3uEo$ZJxxZP*e%x38(Y+O+lOc$BzgDiM(ZKNmo;>ogo%+FA&5U5*j7k3KBmWAeuLXM}czlut|yvbD@of=B;{_uu+@oaU_6~AyUMKK4b zvpG+f#EN13schc$IbQ6&!_GZrXXDdxvh^RVA;|gSPuv}V`uk916V@)XCNP%u;n0B! zHG#!_YI<7iPl4i*(i%;fZZfzEfv?#wz}vsPNYUGtB41O`&wg;r5>BYNcshHlM&zT! zfu&cNm_w)hw=&at;(m(@MaT7>#hUW4{VCiGVTwNQI3W1m;xw7CV#WjE6+>iyP@PiE zZ(g61f0g8r}R)UA6>Kg6Mm+Wb*A4O67)3Y7qH1gFN*{7BUZs2qsEk2}SRJnnX;}dkKV1MEIc0{slX4k42xX0-5+n6?Z>QI)}qN>e2w7 zlIEWa641q7A{SjAp_O2gs4?_qWI6z#mU;>kAJ0-lXLEtFVKWsHINhhoLy5qvo!3hxd=decVt*8!B)P{Zb&cal+Zn{4XFAWr zOBnAN$baFxS*4)q_fRM!%h&KqfH-@xWc|i7tBcc9gwOur8~*hLg^PG;C9RfY1c$zL zFZk$WiQy%^pi?z|7jcQ!KrE=>_RfJzRENXj9NAf{J0d1bWux2MlK6mcz*~woxjm?< zPW9&3SL!VkEV7K8s5>~D_bkdOgxV$CltD1o-&s%xXtCVGTiAS{S|<&xAM|)R zuenm>JqYa@aIGAGR(NdTbCB4~s^u<89H&Xa=jL{0b^a2N0FV|CnQ=*i*Em%m&2bu7 z3e8f%s7BycErNYQ%e1tS2BX1}fE=xsxwJpGxWr)yGa^Jw5R1uNs4m|!KnJrPg+G#c z-$ytu4v-sP#uKMvP=FcMc@kN~^6(Ai`sn5K!gmT`&0OhC8T7AwO|~b2??;jkf9LAS53sHX?p}){4N$`3-N<^6=-^;b zNX4DBh9p}^hX~7EDpCK@8L~x;a+^t}+OH=w7$(Rd6TD5zWK41W75EEIG5NfAf*__m z>eB8OB=I8n{Uqan6<}foyV^j;W4_dafNFMkF#=0pWwo^DUna54GI_s4GP|@teWW*> zqQR-P`uFCZpVF-CP1s_+TsIP*bYvx&e3D+z^#(JcbPzoVPMny3ZK7X7`PgnGwGr0_ zu)pzE2uljF-dJ<~0TlraLVF^T$5gW3GdHCX&Nkp-XUnR91;p$3EYYOJKlg98tza*3 zNR@Y4EOJdEfz6#wk=a+Ae@@k-^=Pb;)oZa872Bx59H_y6CY{fGgPPu&lv>ZrLjX~DAH9yI2L1!V##`&PIkQ7S6GWU&Ib?CEjjgju`@?1*q| z#TQ68Y*>}l?L;+C7Uc`_=j+(VUam!ET|!J5O2^)HnK(9|Vd#r#N{2u7ad>1_YJL{} zaWaI)sO|OTCMNvy_hGTu2gYB#V5d?oX|K5D*wIScVtIJK?!?{`5*~-zlz&r?7jgfbaeFKOoQgH)cHQFVh9C%US%k3$fh-EChT7e zhk7Kv*~Pktl03~iE3o_8LbcQrD&Nov*Zk;gyy?76U74w4#-Akem-{$-kpham(iRAB19uBH1NtY7DCl` zd9s#l3PN<;e)$&VlZO539Gv&Saot=TwytoMhMXg81fDaVlv9n3Fqfe%5O7q!BE&^V zirnrl=v3g+>3xU9bSOf?ah|68zx9-|{rc1-j1xxmK^+Q#x7H#k1w0do)+qi5NurGr z*UzPiiC*MQ`O?#ivoZvY_lo@ys#2m5R?^`iG976Og^pBX+Yp9WHm9tg#-7;zUR0-I zDt1ll-$ldi%2^ecvUHjqXUEu97hoI3Rhv5(Sq^gMD5Wmi#@g6XkDs{HQfu!`tTVp| z88#CpSq8@btCrfN4!bjk-NJT_S{X*E%iy4#O!nDADcS^Ja?^LbDW>?HHiV3>tqmen&g+^9LwXw4rHNM zQUy}ExBnAY!JwxV z9(;;^ogD`o&KdYzfH~y7$c>4TRjLr&m2c7T=1b5R%I?S_+`;dw){W&VM{nFZORr~? zqkbjJA?(~LUcN%%BKa3Y=@=`MsYmF(xnP31Y)Bim1H&;=JVe44pl@Wq3O}0jN~tHx z(?*@6Krj79!YG8&>f6`DPf$*rG2~L!N-vGcaB!t-nRTod_Wm2YJ9UwQh>L8o98$!w zM-!~QH>RK9@~M0GXs_MC|c^|UEVlQDvU82A!Bd7Wk~6rI5q-4E3d-lZcm#JB&%<|bw5I#B#vz_k99ga7)!qO zyR^De~jyvcdYB<3)5rW{4-^pKaI-R%cn+WANH#{ z%m~YCV(G<5d)T#3*(#28(SR#7c*SSZ^6JRu8Fb<%&~y)YIePWhB`cX?*R`*aUJ0Gc zX6u~CQWM(3Rr?`sPl?Rcv92yA)3?QkOg%YI&q$5&WtQXfp9t^$}z z!k8a z?SSA1rWMcJUgieQ!`Aqh&wfnHcLCJN1u$6lBHhIW(KOLCx}>q$1#>Z1njqMqA{W#z zkE;dd?Vg6@vS^-7gH>?IO{>T3Lpic=tvem-LhU6p?I+~RAbJyTxNq)Og7*xLWTwr7 zVD+SVt~If@8n9Obz%#nNnAD|&CbmS28}wMBbf0|hTB*CF!xY4GCo(tC)^P%p`{YG_fNitc@T31h$J#A+AqZ2 z5I)#7)ctz`@!l?ja=P!j10(@JW#DDasCl{h&@zywwh^DypLcqQcytTi*3i+&MrlZ$ zB-yDhLM{(}91om_S3r^AdN391b<|4b$kmC`7?IWi1JT0Gk6dryf~uCnl@ONYPd6F0 zrMKEEcsr#8+^W#ocu-lpJW5$2>Dre|1~SIuS&x{ezGsZUgawJk9kw1R&a#cZ@--US z<`J8p-EJk0rg>>Z0$AY(n?5r#F6lX>H0NZCK}d$&9WOM#%4`}e7H}wKLfrb12Mz;Q zfANBCwCc!hu{jjn#FzcWVXu($1v}QC3*0b{)=?+T(m{9BitFNlQ<55)O1VSK=x#F5 zB)@kEym&}kQ(pR6>NqZqxNLrXtJ9C3L|NToFIm%b0=G$Ga}~G5N{&bgrR5Xn^m?al z2+?&Y?%4cw7KcO2;Pc)?&s#HSk!hEUst$|X-oO`BkX6}9m%flTLD7p{f5xgdcj70yfJg!ijSx3UODgo+c&hUC#Qcg2m|(8L`eN2O%eX zsYo~P)pOGz@M%Vj`ft4uuVsK_%>jd5quJKH_;P&n->i`5;g>#TrZM$m>7 zUQIp9P@zZZqh)MWBmUIBB!-=A!14FC+Cg*=Z=kplGzciw7!Sg(XD=J?{=75qX$=7< zUKFPM`=#btwgPciDjHbv*yRz)j%-{%8?&!~aF}Z>Fsu{Y#{zXiuX_Bx=r;UQxjezW zeKwe_3ii7L%hfa?B+sBt-^qQ%4QB9GvxPY*qCGI6xTqKCUDzZ06BLk-b;THO0b^;9 z9;>d|-TC<0Knk&k=}bIA;^1z7g%&M4}N$9n-Qt^njXNimLt2`hmo&26*Ff zZc6J1c$kT6O(SatHS_n@N4U7s*Ic#`1UBXd1YKpXH3?YKE2{xpyZ;+>a|b0O=#@>N zucQgXSeUng@f8jxj6FR*jCp=el{{xphRj^?07~2+b^}FEuG_d#RQs*M!bc;YS^k(X ztt@-s4^|KnqbX4zK;Hc)%_U+?^sE@%B_*S3?OrXGlt}=d@MF8Y8tQ-!xlZfx+t@4s z_iQC=*E;IbXm+3Di9$M`X7Og}TdUB3I*X5yrGxPFg7B>SS*UatF8tD;P*t|!*IC`E ziLnm^8SUJ8M^B1Uq}9$!0&Gf$J}nOQkUo^6An2Iqi6Z{bV28;u(#Y`0YJuUHouncg zjNIyy9=PZI0n`#wgzNFPK+fL8+Rd>!4zY{#34d{auwNpE_v2DOvkdy2109ZMJ_zXP zz}hL|BO6(haX2>CxuavC1O8yWC=+*Fk^guL$115SE544Gp|gbtqd7?IhQ(@_O!LfR z1M!IH`;k(P?$cn0X4S;+w=SL}VB;99CIO%-qW8weI!p5qhB3+uh(CIa0{h_ZRr;8X zg~??xX|<7$DzTJ#8b3dDzc|!-jbt`K)6zr<^L}Kf+k3TDC15!&mph1vH)&1tdEPPP z?Fu|DAnEa`yIiW~O`mp8>lC8~;x!!57ZrQwmR=NS>n1!v9_YRgRlvvhyATJy4U~&- z1G*o+1W=Ii}4Xc zfm`9#xnx;E8<^_Ap825#&7to!Ac{a_pO3hkFwjR}#cn$5k!&&F&W4UYvtkx&5K&BB zOVc>k$fWr^xp*zLBE-aH83X3 z_h>0u568xdefH^X2UChcf{+?5k6Hw=avU`_Ja>E!4MYgJeZ*v5hiW{3ga%q#3G5^`#6Tv?&#D};p;f3M7O zDoTibvmk;D;%;4QdBOwTL8n)mMU}0|PDHR%A7yg+Bl(mBgwF0C&q@s#{|&I>Xc*W7R~PLxH$dBTN6rk-wPJKs>%*5|JADN}@vAs2 z*N9bp8I?O>>8J&kJxk>etxTlNr%Dn&}PRT>tO#Q@(Qj)}O0N4X&6Ww#yn!=w% z*6ejH22vs+|BU4nWlIznWC1pFu*lRA`K*_D#fOIo8uoqAp-T&2D2yzgGrg?aXvW?D z#)Zqey>f3W7?%MpJ>mkutMVrF<1`2Y-Q{BzeUi!3iT(bg&lBFC;7LRUi>hs_T!XPo zESYMHZm(9D%g(>)Mn&EPtieldc?YLtV7cFlXB#6?F-FJy9yw;J2kwmyBR;6hoZ&G3 zi~uX=){9|tzJdw>c+7h0XeZ9%iOr-%;Sdn>y^xL5Oso@~{XF!8AyCFMxc_lSpk_2Q z?0k-G9;cNr8)b|eC+ft>Bwu#*`w1c}=is}^s7fl;H~k!Tbng7tQ6@MMImuT5A+cV9 z{=Yd;*aEb%f!uHin4~V06nZ;BVMY5}T{8vI9T#%b;$9iwP=WV_kwP=8h&rkLaW1;GST(xg@^!SBF5$ZF z+$ElUZ7ZAvv?m<{`3|wOZO<|V#pv%{sc&FbH)@#=0S>DxQV%$(>Wg}`<)5*B`lQH5 zK;-Ta^mX9B8yz2z-(V@SaYDxF#_39BRF+B?ADMa;%r(Ls2ofra&3&DpEh=y`>i`3w zZ8J&ClUW{n>`26o6zH6EkD&!@GKDD&6WEehJ7%eyf!8THMD%S#Z36&~gW>0Pm9*cRN@Y^4bRqG)| zcLwzup8Y{;A-Uzgxe!W<7Tys9fZThHz|b`2#q68Su&5>iy*lJVgg-6u z-%yHTQcjG%sVm%hgwe#7>_=Bi8eK#!Jm9zWkN2ty3l}etF z!Nd;849xVV$(YwAUI7E($8JUd8|AhrcdAG@s_nQu#y*JLIXR4xP5tpS5aloBx|ydV zh#wkOX9w~^dPp?WGAo(Hma8D+WiV48=b{d!x$`8-ATz$YQmX}T%LsqHE2SU6XH!G?{VFG>;ln=sy~}&AE8t+g6#HHWS4ru4CJWFq zG1XOI9oaP0CU{uoY?|z2v~*usf{3qR75u81+|8ll$xj{Xs2S1F=@3eOrD3kKD&FVP zQT@rsw>V9jLe~m-LDISH!e&~1ZLnKlp6Kk#D794DH@pL9g+qFQ05i-aMkGSQW6c7H z^rW?ZMt963yi8HZnwcc&5r^(qZ9*r4OibRgFqS(w0+zw*#tpp?9+}7(OE1GS2nLeX zG_L{q@qw`}9q|O>d`WRor;0HYUai3abId>MJDT{?Ks(AfhUTQb}7PqWA*m)ME;=Sdw8d&NVw^2$Z z7>5Ui-{U{rS z`onId=+X2!u*{gMFQ3P1UOH~czO;$d%4VSsC#;LBvu+>>i=Hz$p>%VW(2<*}nKPEi1x96~u(`T^6-N9M&@%EsPlm)(l_`EW}ddql3FOhYxOT!cOVJOoE5)fw3* zI3;R`*vE=AymPNj169whxXp%-He;l2e98H}TH}5H*%yiq;kdQ(Tk+Nc(R*t(9Gq7y zV}N+#p?hB{2FMfQTsb3qbB0X=`r3%Ee-+3%h33&6p0tefSo@s&g{8;s23(UDwy0{b z{tsIoVY-NqN()9IoyAO=fs=}onJk^j;@mfdj1_%9y}r_Ey@!PLQMoB zH$7;2dRfj+E%7pSEg9>~ zo`x9Tc_|`xIJUHAMdi!3i2SDxT|~D0D&dHkkGe7|5tPb;4uX^z#~GDHNA|nPSJvA| zdzMgi^L)W525#3kEtI`C)UZhu-XAb_svE5&`)I3sMUx!AaT2{)X>~2z&P+ET~1XlFCnQ{q7{P5~ns6Z&0^4mU8$Sp#(PKGdV3E<6a zQm?#^jrF_`)V$}Y@D4F8^u^@u(+v;$z9g=z4_iUfJP1H?F4UAsAiTEYEJ|E|@A&OC zuv?Vp_&DM+o7F^1)`tqtpOK`?1)+aclV4=!X^@4Y;YVzI(%>%t+d9#+&9bLE*KKpW z42%Gzmlt+|f{<6sL5qS!1Ll3-UFrizU{rnVd}mTNfo0z_Cg@*SOMfBuP?Cy;6+hBg zvWki>`qX8EgB`w}M`0*l3l)}U+ss*g{X@D!-D|NR^m z!vXki`7J!5me?~}t2Ww3^*kUvmneCZ&6ZJbjmA|U|EH1ROBe5Z?DV6Xj7JWNjQps= zNRyq5j<$XMX`EEMQ72+({(Pn3ELTieeHg|o{S|pnQC}>pjZ`jC+bt~vG458EmTZA8 zi{#R!fYL6}&#^tdU*ngx!}wLKAIH|O)Dy7_5tk+$(?M7rSdJEc+q?OHPl5H0Ocv$; z4sP_9_LLvn``Ad>c0`{^UcTX;oNe;F0#*8q>NPTc_Md_qN^J`;d!Z~`eLA5-X8{_L z#nw_O*^S@S|1@5~S|==mLqrOSzq@$w-nn4>pMp6Sr=C)vVw5%S_a+OBhIQW6xa6nE zyAJqU=zpib(<<}Pv^y6fm@~lY{c>5ZuBS2Jm&|5&8fv>UiSk|iaLkU+Ln+bi>+>W+ zR#R>P?+1~Wk<}D7zMkfWB^F)OuFPDo8fcekzsC4rklDLHQzZ6T zyzWq2s1a6WPGn0xCj5Ixn@HZansDK*@kpmU^ zEm|g%QBn8f5rbg);Egfd)_wP<_P!%ClUdFx$hLd*OwG;$-3N5ZBNsSR;{|c`Z%vIa z8dtjXu25$Wq+mqs;eugDG%z1}JsGHI$5uh1>XTX~nG2D?hJ!&Ef;TVhHxFg}UNSet z@xTM3dVkuqdK?~sD}2egZR76uKWK%y z%Rz3|^+e>^b(E59VW3%@QFW6Ntd1Y#h2i&bGyYkGq=6u&T)As%G{d2ZH zDQeN)E2YSe_TH3yJfQucx^t@$WD5!f96~7th{KMI*p8YVzbX^nfMZuri-MjsJvv^6 zAFm|z1ldb>UqoCuUbr?$V~Xto_P$93zZW~V|Wer5(f*RB!UYf+tmhikV{I43# zbo4rp;z~{I<>Z8Ea4eId1RmoTZ0W?VAZ!5#lTvyoQrjcM4}C)X+B zv9Nt+&W`DkROpR6yB)sThvm+kl%G?DovVsbMqu-%LuIf0oz=)dyi5Q6>jK+) zrkOz$`8IRjt;G99ck~SKZ<7AR+)n|hl_?Z%D8|k7t)0}xUx<>>$XhILXr_oSN0)IV z)7$Yq$;v4K*zVp$=Zt}(&AlAbNKg;^hw8X=75r&mwVuK7jE_@je5bymPO`H~+2bjN zm0VaH0q708eLK=fRbllWex`s;1Psj6 zK3qT;l!$?SiAs17aV@<_g4o38<9+d2eabbb@*rLhNrcW@_djlLqB;X3Dsz2xp@sLz zlVhNMp1d1@R8|!IW5RhyZ_%t;8aMu|vyEgODSbpVe6s`GIWN?c6V?BP%@AUZYBL7FPkDp|7NT4Ts%_RYs*aZq#=rXzVFPp*cg-0+PFCI_~S z_l-DJQ;;H`n&Yx~1QlwrBIF+6AR5ZHow-{4fkt+py-Q&hZQw@c>eBY|O6W!+sl+5H z2;3k~3YHc&K#xw@t(^h}V4s@P1et>2KdMY3FuAZgL7dUp@I`U7A<shzEjcw=0Y2YvJU(hIeHwbaR@i*fYXj3O zbqJS3=Hpw<0S{-fk;g@l%q^cyzKSP`w#BK}vr;PaSy|491^cCn;Bls^LaOZBh+L}E z5Ec>A2zAzRXO1uKca-1&ZtldZ0LuT{B;*rj7KpVYQLTdSLpT{D8`3y^Wv{Gr8*If> zRQ^NAkdA+aUo|KLnQExYDb&oMg)SzOJAdIB&FDHJGsidTPtt=9>KNKSpp!^uANN3M zc8%;hW;bQ@7M&?y5%g$*D;4})2hzRC`9%$NI)=OGW?-MINc0P_AnV@pplgy7j6hS1 z9-FKKexyldwfHRd53{7@UhM;j97`V4$=I=yhUku@ugKOWJykQ>+@~4k7PDV|)34Fk zn}ftIhS=wwj8jvj23wHYQCr~S#ZH;J0KUyf)vf^kl>h=j{lA(pwD6*A5ElFLncTBB z<;A=}w}QWgYzcC){}_@qG&lx}rpeK^IG9MgOGyHn0_1^?*St!DR>LCACbdc7N!bPXW!;kcS_YlUg;JwSC}h_ zY<&BDaQ{y)-?Y7a<;Jmns(+~8@NVm}R^Kc{g`Z$r)a=MaeN%X$+`(CNK8{2waD#(A z7L`G}vyYugV@c=_qZ!-4>?#TtIFC?;#7Y;zap0K@B;f4Z&# z!r>9?f=fQq)RY!1fwX(wuQeX`@T~v106n>%%Q)uGCHbmTY@M<(@L$~NV zV+F9?{t~sYB$X+}HNo+=F@H_|j8t2t@mUl43+$=ndLT_`PFbax_{)+DRX`an9lY@! z${6%Mkh2|?P;aCHs7DHE(9Q&ReY=Qa%iv|S-9>}@U=oDz$p1kPECHLgorz#2Jjao&b;b=KADsx0*vQ-4Ig}7O8MI!B5 z7&he~D2Y%!z8&xkduvpq(j6ock)CeCl#7DbgzrKH|J_5*ixd^7z8#93M#K!BDE_sF z<6?)DSr$?1U{5keccsPgw)GccEVLQG8vJ?&9?H#8$hC`Y+~@$JynNV-J7WVC4wLPA z@Ho|*vWbM-iC4o%X|96Ovhhs(!`Z#dfCeAC=th5#|FR>=lZJ=b>9?e3Uh^FHp6G{T z^3-)yi|)FMRK%D`BYgypngA%w6qYjQ(Art`!&wcuZp`@g=B=v3Vln?}lkt?zbGen# zgzy(MThVxPEh$;ECRNs_lkUk9e2Q)Kl~14q5DSTgTWfE?UiX9PdhKmP?%mNtT7%`L z$f6IRz+LM-r166xwjr|Xta)4GG=6^{Tw&Wbhxsq1r3kw3EMbIhHhou2^yA2p4p=Fe_@rB-wElF z<|@7k)SZ4}(ZsQlWjAM*v>Z+_!KQb5Uwrl&agX>0DKyYQ>!&IIoz~^oGM?S#vs__McZX;0%c{h zFh-k_a5XBxI)+XP%^E5-35PI`-j4Y%ETnq5gcA8f?dNYe$bExGvCeJD*1sx({o=P7 zq9iP&QC|RIbYJHtNeXE)KS8;?Zt5#qCf%8@(bj(&>Srq}%tQxvD4cE46Y0g{Dsg;> zA*5KUPNJ`7QDR-fsmv`BeID7Q*z}~C0jhbsEU@Lds6|ECOjdfSGQ3lEWZXhCey(mmwblDs$#+=hr$FJ zsxb=3ecWk&>ev;x923!)t7N9X*bXChDk7CUdbsyC%4qzz!QXDYE-H7QH+TFe4d{%t z7?%5hk z52NeyhUEZT5km!;#PUaKJh;>xa+~1pouRL%2iup7m)(p7W>?*6X+{i#1{k6~z4zmn zQ&egik+m;w9sv7ECly=!wY^9cW<)@~+v1f__K#uV*n5dZ&yt@3zi=I73JlvI0v{Uf{lVXE_#=@;5mv?BN$*vxi6exZ?m7D*;}{l!tuxuy zBi!G!6g_eG@OXWYH}SqyCS~wa26Vt#O|6t9^}Cna_|sdnwm_87QBs@Gi zj;-Qs?lfQ$I4vBJI08{AaCs-R?gucLB7N9{0(xei5P`A4Dy^b(sI9gKvnQz|AL;;{ z$$Y%z*n20>BlU>HOi5u;C#MK<>j0)|d;t*Buq;^O-UQJ{u)0zU&EkenDo;rUwu{G) z@|=e;&9vXxj|c^_{S#M*xn&-*`xH@TXh`!a(X+pcjzAbV0L8fr)t1)!Ucs*GVvFvz zEwta)TH#6h1cPt2GVbg(g8q_N6S0%MmT+Cc6``Y5`95yVd{f!vz>K8ASlkXee2wsS zSAc)Lg6wwiQn7X|>vL7E{c#FJ9k=pUjo7|ha5;73?k<*1=F(u>;*ijT(aL9SYfCoB zgS+WUVToiC^9{5Dy_Ekwtm=}-;cxSfhtCD_vYI06f?~J9*FQ#M(5inh$Nk!d_J-l< z&s1?*5dmlBxFaEjH|$Q}*;(9CB2Wv!QO=zB;X<%*f4C?ce|p- zM5^l6FaO=80IQQeqXVTVMJ}pf<+*uo6AX4Hk>L-8R0&6j5h-YhjjNb4Bn_>;`~b!C z6sx-w9+7SIS0EC{zK&zVCJPT(eo33d7!&El2fgI1<5Id%!=Vrf#}?t)5qgO$DG zj2+X}>)Cy##4A6}hr2>lXF@jq&XdgV!_6Z7U(Rm~KEQr0TwJ>vIxt#-&>{XxoF{C{$?oX`y*XhVd$TviMRZ z=8mgI=s?;^$u*+c#2*Wn1OLK`YmMd_>3 zNP*n`)93wv!Hc!|Ess;kof#_pl<)_Xg$M7m6B*Y(Pt19a(A79K`N&fLnu0e4vy-U3 zDe=`gC#*Eu{22YcFJ_RMZGLtt^rANkv3#fZp9*jB^jL~N#o*=-ni(+rZ~C<1NnD#@q!jlIXajG>-&hJC0j7g{8; zi*aj=|DVN`GjG8NU*eQy9>ts77L@K?2JRGQj!}%>sLvZ8+q7o6gOUC=^S}}Y1>%jM z1j5?F6?QHmlTUL{7X&eh>;7aI-PlPY)ln5EbtYb?o&|fzBG*K5A@rffCF)Dn%;v$j zBGVxenF4TI6F2xtCuST*wFz;?yRfa_KS8h>9hoT`qGfLiphBvg;Wp3@YRQm z>`D%lQE}V1b}r7*M$X;$42A0mI{Hv>(L#>x`I(zJqCN{%jgu|qf8GD% z;Y%PiA&Sc&@Mh6GsOG}KU;aprZE(MpppS7p9D?KuorCMo*7kfSlKlZi>?fgk1^M z9S2nxmT@-gd`n%}3LEU-tWF~s5HW9LKjtEqZ=SGi=ePMD0AJx^=?l{y6FNO%P7^F- z5OVNZNCD+I$xelZGpyg_inS#px**>*Z5GY)GKFI1FrR`L$NP7B-M{3}D)SUrN0ja~ zI)hW~bu!i>?#lrl zglgut%Mp{&vzktM+tFcUrk=Mp;L0xcInP|GYTX7_3@|Oa^}m#&MHW{-QD-^B$Laup z{=<^6UxZOWMvbUQ^V_E$rj~PbE_SBe3YyhaaA|eGJNSWt-01x8wBlWTIk4qz+?#nwbG8d*jiTm~IVlkltRf3lO!M2s0G} zo`)>(TkM?W7|F{vj?04!=4`<;QsPir>C#D zSQO_)HJy1v16v8^^MEp^oDZxxzCgoYIo#~6FU46h{AP*5 zqxTPVRMaVE&k*&GqBi50e7;`glh}!@`YAHy*B_A=p+0407LnwPA46rVCW!-8SE3C3 zuOoYw`)8nHb0~Nk_7A~>VcbKM^^~~=466ST+g8qzXx4FL$PC^3AEPBqWQ=G9&T$QSnaiM4kn?@e;^Dz_(rSIm!jV>=H7Yn}j5fvYW8l&qF!vpjU|+hfHTu5%AFAE2QZ}fg88-YusOX-h9qzHzD$E=N}x3@GI~=y z4T1K{DP^<3E5Z6z*&f-TQlL=zRiBUI&DSn0>;!N7le5IFE0lVrZ)4cv|M04B$#+A- ziu0WS;KW|HVS%Ya8_O5nBX%6hW==Mj@o~8U-%`@wh#Yc(o-tSWQ{lG#3@d1imi*e_ z5(v-Se89@es*r@4mo>I{blPU=4pSbO^9wghYM}VVzm-NR{FzN z$un%uIS|QFbR+6!5E1+meaGI`jnz){R(w5i8Jch`h`9^u0P}>8xR@7VKX%uc5$lmbg z>`!w?VAkg=B^5MxG!^^SJd!oDlkok{nztn3Y^W1#oMsO|stUifsqNlE&1P6kHTu28 zI;qg%3l# zm5%W)rVPR6DID&03#e;wOVXA-xk_bI1?3yCo9~A!92SbQ61To?qshe_w3}ENIGo zSfxsBoKT;xj`Y~!E9JqNUdd2*pdX@Se7%T>g0hfuK}T&H%@i^GJohvAZ%^ATP0C6H zk#R@U0$P-YwzY_#PI_K?ylDQtw_OD!jriF7#Z@dlVMX&r;;viHelpDff0!$n1C{Cr z<5y?-`b~{g(&&SF`1D&%ZwvSUL%bNKSQ3ai8aHr zE)Y00!h4Uh8!IUDa#G6h)d)54=Q(mYGv=@ygpnB)Px973OubF`WgW5nC;!IxGao9H zZDZGb7Xbrxe(4`Q^=kDJ_i_9SnowG@CAxUEyl>vOIr}Uf-Db9YDuI2-BQV3zpM*=x zY$2=EBMP#fj1wmMH5e#rd#31#DmOk_8~bcs0$YAm6NcHUB-Jb#N`g@6_k?zTcU$}n zTStjUH&>_|6>9_p(S(JLJ%s$a{0KT$LMr4VQEJiLqTNPKD~G}A5<2XIWj-D=q7jn` zfa_Hmpn1$e;1*0;>Yhl zT}JB>I_$y_nAmw6K#jVKZ|%ahjOhf8z6*n8eNa*GWI#nzE)?`j^Ko`VXL|R|;5jl* zTE$k{r0(RPS>aSXWF{l?v+2FWwOla&$Icxt{f#KrzZya_|Ch6{fEF+yaZ1&Dep@F_ z`^Bf_7k%tnh3o`K7Gp=>E%~R)ZiB1DW1b0Xi|6F!-bw8*Rvn zZNu?cqDz`I9jG^~j^>jMRy7iYj%D(EWq(3&tWqPlQ{7vn78CVZyUYn)@WmdM2b5D3 zSVy)^rJ)Uj(j{0-S)fPTvB@2j8`nz13aF+XV=?JMH9B4<@mnRL82u4^)eOhXv12p=q$qBhJ zaYb5K6LPiUkznJp1wK82l5yaq!t)rm9fC^Kq#=snW0vLgKiX+X8o&y2$pYqSHyn#s zyf1QtI8W8&@*;^HyV_v<;1R=%R5K+oQJt!3p&_${?d5O^o@0vjzSw($iMQ}zG z)jR>BCo-HC4WRpw{&2Ax#1C8G*qD5U0kmPs>D3UCdNxe3t`-b8>?2~ef9rb?te_x6&MiKHjB@`#eP z&p#LCptb`u za{-W-`K7e$^X-w*t-GxeO3fUZ&%xmF28?E-jUGOINF5hedudSMbb3cF{S;@kxZYYN zDG~BcA9*Vi=MJ~~OA!@)ipwd&VKL77po|V!CUh%sMFAbwfj=x0gBppI^wm;em3f1# z5rrs8iv2uMZWdCBuj%laT|IW=S{MxeMy}-{0vmS863!Y|sXw~)AjDcLy%4Y2zke9?`a8$}wNO~>M-E`k1)zbFF- z{eY>(zpb1WK zt;qD&dc089UFe4rc{T1bA3?yVD_R-w8y@5h4Oj<5VQ71)F+Z_BXGj*uELO~rm*M~`juFH|>8W<7!P@~*qrge< zlHg}TFfO^R>Q)Dv7lJk)PqY5 z_>?)(eNHZ>lOp&d@_Ls-Q zTA&$NJ#Ieg_opy~OXcQdoQ9x_U%Lm1XQmlYMB`0O3t9g|MN&+WRhRT zgrx@aFsLWaT;RCM9}~#xm^-@2h4xP6Y4cT-{5_cv@E%QWMnpx~wE>ed!I8G@S3RYi= zMIfNN%DRgWF{&8Fj;=IkB}Y%{;c89vBv=48QI$Il&DGh0n1`0T5w8IE_$#xtr~afO z=m#c&tHFmP@fM|tMA+l22-PWu(%pO_(MQVI-#@Rjb50;AA;E}>TmL(`o1H5`Xd-y(dvDn9Y-B7O? z(*x70X++qVfWDP5dzU9p$;rv;Z=}y9O#KK29lmEkT1vQ!>%CHj4x*YqyqbcHlsDF+ z>m`y?e} zePE028}Gz?B8Ry>B@vtU;GV}{GI~S}EJjVSK7;9~s+Av%VCguWP9sS0IRCy~@PoLk z$O%_UPq>rlHNsUwctypzFK|Yf$AGIWf~@5P%~YW}EFc~jI)X{<(>Mf4KlcM$7K+so zxB91~-a}(T)6u3<9i`C%Aht{K{2cl@A;y`! z`sn?EXS>E!h-2$eeSjnc*hg6&SLfzFHUSD)k}3r-{d5R9Y1CuXa6BNw>uGGl-49}f zJ@$05*6^O0-;hw>e4F9JAc2Q;i_Il;r48)!(X8g@8E+d3Zhdj5o{P|Rn=6awP3JbJ zE!be02{=BT8mWyJ!(-s9Dl4r;k0Gj*GWJ;D8f$*cs_@6ZjAmN0?{4QgMR+(DXkCWh zuY`efQ9+XA0TAA0E$Ix)+NT$sx#&MU+udzJBW3?g7I~pEMf@P&$v%S`Sm?~(;FXov zqL_ulp`+F=r<$TAZ0aP)B3BYW(zi6jUa$|`W&g)b9*R`U?VH2jx-Xa=2$UA*v?@IlTk;58(WZ!oz6fT z^%8C^RUx}_g16>2Rq`~@9!}ugql~PpBJw#~5R3$kj6I+5C1JT3P&0nmjtT3HY+fLf zfxDO6)w@K4v;aIM{@>w@KYsdqUKuVFx(&OHE-~l&-)ckIfrOmY{W0 zYr+m807cLK-@Qe`KwZ5$TKtAL^)3AdUJV;)`R z8g+Y=Uw_u%!wSc{hH?)+(*cNv0gpSiU8Ge0I#|H>%ewo zA7Vv{sIXL+`Fga*}yXxgxgU1Zs zbQhL4!Iua1u;pll44*40U4KS#i2xYS?#;N3Yru40LHd4{?U82KO1Ob4 z(QSvzWuFqQv9Hvig%DdV$4`y}iPZ~{RDch@X>$?AGzc`50Z<910xw1a>VqR&*|y&W`_u-E-LgI)R>Ix^8)D&}XS5YU0L>T12MF)gIbd%NXhp>LR_M z$RKg63lF+!sCr!zU6^SO6O)+{q!541he;gmu#U+uuiv9&b{Cj;u7~Y2HEicvI{J#4 z!DOZ#`K9@ebhfCg^)aC~3;X$hlvz9MV{urdT0G@yrfYKcjYQ_ah$BBD}azpc&;v#lku8~DpC^*TnG)?77x)8a?PA#HAaDX4e0=)nJ5xKlQ^jb?16 z?hI+%-B)q5bA;>(Bl>eqc_w(qKnvXWVUMXz#WoYBG&kc+6v{a##j?e6WNkT)y-3Tr z3Pd#2PR$oz-CClNH_6ANNL(Nh>jxq0rHEgFqs)(#pc}Oc(tT zTiE~oeA?eLX;)jk(CPU--FR;w5%%E8J+)-DJ>0XbH~*eI!6zL<59tZMtXg0d`?JQ( zN?mt-wfUr&dMQSiHpFRr1C7Z;Fq^#DKE~<8d`k7a+C~40buhQ{7iZQs%GeTTe*mcx zvK?yw={rDLjjyP^spgC}&D$(6bFA?C>+(T){Z{E8WE{Y0x}}CmCF+8)>;?IyL_$%} z+vu3Q0=L2n-wY;G_mFjWa>b7f1hn3AbFcTrbh67;KpT8>--!(WopfDE$J8`ILDa5q zR6O^#mNI(QiYIY|5?sBI0>2bIRE7!;ZQR&mjE{Dun``!M%*W@PkE3#{?GbA}U&|As-c}LI+r;2l<7x9_=j|LoJ5k@<7rltFJk8E!RLOf zar<$R*CuCx;W*(RTB6`2TEdURxfWa%QzRK`V!ksQvtQeBW3H*P1Wy&Yvk56E3DqQm z52q6g3EemSFBo`jgiGph;5zrSLwF9o(woMw(orsQ>W&{PY)GcTRj-cU@|?(&%M$gA z<@HolOn#v+XqZtCn`_Ur)!c%}Mx{M^vdj3zHVK^LX%XA3%c?&v{{)2)GFRS^*I(iU zc3l(C*qx?kA?pk;Gm%sw82B%WcZ|bPWmrzDG%ptTX=4c3WARx+gfuE?+*v_$sx9OQ znFle(I}3Dq@6)HdaN+^iG9$}X8YFR52Dje|D|5kVko>L|S;9BiWvIS3mcn_+%q75y zy-=cCd@ExhjhWr~?9y_YV(3`bM{NrBVv3EB@_w=n7(LiCVFUVSrT|nr1oSq0=rHin z;n#PKm*#OP)2E-g6<)ubmWceRo%5U zwH{m2!dK8n-f(fA$BD0BkxLQ>fDBio!|3wwSh=(tVmW`sL2}tJZ(+C6{HRTTvWF&6 z)DTr8$HQhRXM5NFfm!nwhm8MXZNec8kCX{(LLP#UuHpaotx*8L7sYga*AMKok&NoS3yRE4iktnA! z<`WD;MCB&diD*^9EN1tPPKN%`GH#PrI zhpWWNcxfEEu5JqH-U71KwbT*z$T^~6X@$C3qJPF#VXwh#TflBsmq{{m~a+ z3k#4;JT24f8cZYz^$Sp-K!*W2BYN&-u63JwJ2NF_B@em%kt8MV)Xi5OgOeygu3Xry z=g^Sq#1}f*5im{%c0$BRxI^n_d>w{$djQTS!{h7&E6W7Z)vjTCA+jv|R}SR%afrm5 zce>gA&!MX$6(ulH@H|z>i}!qWRV72Ame3EGLj=&qmjvD8e1`Ag z9fLiD5`}VkZ|t65>()3s3@$1QP217XG=ELq$U}yZOe1XIEW*R14V?o5*>4>wSs5iZ zI=+E?>dkMDNO3qceVnUDLTViC{&YySNV48~EQ!Kti&7|01n?Su7f)LSQZj`~n{l#c zEFrB-MkAa9h87jn;{IGS==70gU5hXvt|VWe1aUD54dVPH;r z^_HV@zC(iCF{k$NDUvK$NYvR#Vq&FD(g#+}{IX$2>0tkOrkuMISczw;5(o7V)aP`z znLjGMBPNf2#YZC$J@@-5B}gX@(NhSuQY?GpNRNA$n~(%|>g`zPiwwZuyS$T+lMX9Y zD`;NCkg-Z0IeAc-pIR8Xc?Li9OX(?Q7osX$59{@GH_nXE}dQi*!Cl^zK~g;XUX)CWNA;%RPJpYovy#>v|nU3PI@i zVgzi~sRBqugt)e_i%|F|#G9{3ox`hZgth;%OochO$=<7O1@rmd-cRxTDTAUL4NwwD z5!Q3z%%j_ji#u+-{h3s>A^Si_+i30>cMxKQ#bn&JUS|_M$tWQs1$qsaxpeyWMFC81 zxWp(7rf9d1fkE`E`7Jl__M*x$DO$5vMxXWVrrU`k2K-Z;q1$nZkX=)Tz1`;wH35@^ z+CQa0WG;&up}CZy*XL0ld?Hj~$T!cdQ-QM)a8Ri~pvy|3}5wzTlQ76=^)sX2;d9&KFk3)BrHH$krL|F z1t&d_0VvYS55*i-3NIKq8(~WF?d-~p91G3v zh!_@LE5X56WRZM7fOzE8G(Tdr>*`rNE+*n-!UxSTB z3f$RzS(&9nE=f4tSE!<);O-44IY`ZgMKjmIS)#kXBv!g|u}qq>QkLdiK4YxN z-o>kAu94)VDqrUtpgEVohkZ@?2AaE0fv`KpItzsK2Y@usI&*vf4xYZus>3-rn4`M- z8ZFEM{RZCvjUPKS7_84yg!m471p6Ph|7&cHO8tbW!utt2irB8vv*zMjTX^sb1|l(% zlcCJ9NNrp>)Og}O`*y|(IZiL5B$xz!cdk{s7fXBW0p7x(^096CZlf${sdRS)Z2Sze zK!MR}q0$nD%G!GmD_;3G$>{-rcZ6Sg)_N*26!HzFygW&ZikO7XDS{C7z zheWM5-k#x%>sq?`W}9oDd3h*?Q%nQZS(2~(|7Rr3|3NigXAiA_OA^y+8&;4-;0*MS zC#N&}sbR^-4`_o_(`8<8J0T_!=(b!;t6jjd$Mwn%t?*A(%;2=*yZWPI`DR5YJ(uky z`&r|KPb3N|E@fOj7uT{TJ5^s`CFi%{a z;+xZ9fT7Pjmpeo{HBP~b*D*b|C1*P9tH>zAgP0~EXyoflPxE3<%56}KB$|lwouz21 z0g`o>hQAI~;8*IiCFODp{s`>kWGL4JA#sH~$_G{Vmyvzd)` zkW;uz40>)Ciq&x=Y4t>1G;b+xXI7ZuVJRe_r`dunrRHDzO6Xlz?@fKz5{q!NC%ycE_nd8|Y^YKgM^ z!g*G(DSgcR@PX2z?TE)kH$TA{ugbC0nK!FiGJVM~L^m_IYf|))+?-z*$`>tyxy&%K4#XW@mL!&+V(bx{krUc-E8ls$Hri$us zf_yKj-rMmX`ddXvJho4hz2KY`&T8`HHHpOfM%KD9q>Vst$)q5qWUhEPfKdxot-dIJ zQYInV=(wwx#`V;xJhpEk4Luf_IP>&3b`8fAc|sM07dUAA=!ly`^8>S-W zKi|x8+NpT{4NEZ$M4vpFXB~JSX3zB>Z7bt7T>*mj;UpJ^Q{5QTo?8E&($}e4tca9)0xmFuMLwakYkbG#(jhzVhBII5s1o?6@X3|qkedZ^+MAZ;` z)$Q*%!elw*#YC;<>J?w_?k}!h@1F7JzQu|8)J7oeY*w%T*+b8OlTyp;@Z3wKvW)m< z1u7!}J~8W%7*{g+8F{-%C4AI|f39>)N!8K7Q_4C?h&rGTD9pG0lVKYcxdFigBOu_y zf8-|NIuR(|3$wf=*od-2)5a;X`$}(D27)~<4AH-N=;|Qj2gCB2x^Y7~aI(b7inj`S z?`kRO?y|^DTf>TP>6DIn_I z1<6wF0OcQ0pnlzMSlgE;=N4uY<2eAsT%Ch80Y<*EvnL=S;+P&j6^@3So#xO&$s?Jt zojat_EjN|gJPUvJ;(X^al-)KsmFh}p1QnXEg&$K`r3|JdGm&Zf&!T_pIu)UIy*gch zf2;Jmf{VzX&vw4|`Es^Q4O*E9(f@{Lc^ z>hlEQXE7ToLVDczcZt>!hF@b`bFs$IZ1P8!deHq!{zEsdZT$&(;=CvEIAFyrZvs0z z>1I6#tXVwFE#16tTy>+)cbxH32TF zY{ym?@ylf}18v2d8;T-DKv5t3x4Q{F2&j~;f6E#B=Ob;dyKzVo{1-0Gf684u8UiOL z%A6O7VL!;^1h6ReR6H%SRhf1%Y311}mq9tko}{& z?KGdj+Jg`RRWruYy`CAk3q{uNZfee({TziTZg(!L_2I^<5KEBvP8ei`C5M@pp_!Ej zu1_|`p!-BED$)&XRfb9Ol4xZ1a`dnA4JO)3U492s_HT&$;G^}7@yrbGFPEeFT})uf z26XIf;N_@5N@Vd62+~taE%uDZpk>X3=iQ1>wpq?}+u7)D8`Q7vtwv(m5~wg&5@_0d zAk=W$=z0lQ6NEC1^y3s>9H4OXVuP?DgW5Oh+~?;b@iX@C(V4zsS%)AAL~XV%RE=7#Nh2*k^*4QKc_W-Wx~vK@pHo?hV(Hi5a(>@LeUEu$>uWz(5&aR z@UON;hN>|MBfa|gYh34-cXExo!tg0~Zy5wa)fc;lD?$2JArBnt4?4PRdcdd{An+wV zMUH_F%0Jfh(p|RB0%>0S9c(-Dk`U|&hmJI9wzP z5{2tb>mFUB%L+8Ql#uemh=X%5yidS$a8rx0eX4-Q@Uy>uO*B94F$v1sZ6m3KuI44o zxT^WxmcaA64G%eJF`J=s6t8J!JxQOq?TuwPL9ZU6-sR(ijB2DksXYir{mF5No%jF` zRiN(P%(4?AN#xRS(apAA*K7I>3S5wAQT(2OZ>6qH#`I8y{5ctlNQJ^0Kr}DFVe|?# zkY^iKcN{gWFjQgeZIeO(`9{^FYvvhe(H-Vhf+qJ=1&k#csHkEwSQ z&HN=9L^;Fx)hf12bHwPz{#)RTbw_+_AIc<8pdpy&Kw4CNOG6!$u;0WI2LkN9C4OvG zC@6ywEBno*$AYV|fFpX?SRN3^IQmO)cZgG@<`ea1a0M{9@^95kRf<)^u(k)}@ z+9N!uE0MHUaq^JOPDCE!_Q!U1J`MoeTVwmxtzYV7R{r$kI%j)d z_vso}nzDo;X|wX^5TVIm2lEkwXm;_#l{W|*-!bEBQ5%^oW&aD%Vjl)*y_{(Amo{ST z0*!4i3dYk?*MTa*fQFS}Ft|B>w>sHLDGI-sv;gE+Siw-8SNg^k4IzTrgQQa71l^J0 z&Ye}{bSdIr%XQJS_P1@Wv0|}9)2Ln{$(deG?_)x$N-(Vgf#K~GBk0aqa-FcDmWCOI zl?HrJ@gb?6M0Af`CqJx{Mw+CSj8fzKt~IFL4BBLMUpT?>H;xh#0xQ({)J)?vBVskn zC~OS1l1}Xr-(@IHeZS$y=Kki(gH3ENeGQj3i9$d=akXt7*mIEm$ycpuHxmG2S z7SJ+niEhau^o&Q6=~jK;MEQo2@4JGOKt&Q# z`{X<1sU}{FL*Xk3(p!#WLy{bdyMwSk?Xc6{qUf&ISS^cUY#lW5B!mf)94l1RH7B3g ztx{*YkR~mZ?m6yF+aBU#2s9s!NWDzR}NF}G4-Ds%c@F;fo+d*jh`0kDOPo3 z5e~M@me(@LO*s11j?V*csi|pa@W0rFN2s0(`NAS>9TbpM(Em1u+{nw5;Uv5Rj(N3g zC1U7icRJ7&z#HT(CvDx173|mPXECcRWWDe&6gW@hV!yffzB`ApYfc%+<&zp|Q?FTA z76Y!@m-WT@9hx0@{Dr7G6!tIy{I}nPOO{gf?~Yt`m@{;k(Yy-FDXZP!GT6XSph{vz zJ$>Hl{{rFL2PVCjhiTd3fh=uZG5es1?)K=7mj*y&j|AX#Df7L4AA@M)m75SS=k5zI zRas@ig*7ZMLviNTa~+cA;V2Yt5JCzgK0M+hk4+3r`q_~)Q*^E|b%MH%Rn?-Ssm~>_ zjKT6_T~HvWje;`9q8{EErn0Ydq}AFlQfJ_lk{rLNfgr93lfWgy9t|?ZJ2_Mb8w+LU zOP{|EUIR7}CAmDiveeOfE+S^$sF^tC?Vq8K@Kcqbchw*C6* zHt(xhnXe!@Kf&!~6Y`<&D#&uZay#PM*-dHoAi`&A-bMEYtW#Aw1B9HQeA@(QO??L>hbc*7Z5 z|Dz#vdO|R z^p5dAlFJ^%f*LEKyYBA9%#N38Y0Y+j-{e@#I1tm{)*rU;@c@Rn*q=ap8VZSmE}yOj zB~7*CJqX2ZRsn1~BQiHJ(aT>;5L;IVVGc+C5}to=v*@N^6-qg3e4Lm+B+mK-)KMnI z+by)>hfp`?#c!0qKKK2iOV_fo{K<#??(&F;Nv8x_VigYKK%$IhnXMu6>SuMS=~_cwGobr)M~DNog?@TW&L=A5gpE*<2kQKt3Q|t{ zn1h4s&?6t<0v(>KX#m+xB(^j4&+nQjV%BEl86Z4+Qe4g&RY)F)yg~wjOxaOWq~Uuv zU*I}U#M*?nbBTq3qRB&yCuL^DcQH?2G~X=jhvNtyV-m82XQgP+w940zo8iYdEUIX( z8!LEJ?qAJ;L@vW)@HJUQ>)xCrR5<4eyRp3Cv*NlW!PnMzFso zUG6ef8RZ1j`Rdrux!{JF>23Hn;pZCIuPE7^nyl^UVm>ZFK2&gXNBqk$}3t30Cjpw>V?YUzLJ)CSRPL?8G%m|4%j9rE z?szFpgp(ZDBu9cPKOyE?c|;-+bm8gH0{bkHB~SZ1TZ>|q2|B6G7th!uAU8x&-;#n?6iuIPh_e?$5xq)NW(dA;$1O9<_asJk{l)#=m}%B_OR&eV>~YaRK3 z5Az3`WwX+eGD{jA>tIr!P{&h z=RijGNPM9tqREFJhQTfBUCh?>$@)DfBQQ0npno>D0#5cX{C63g;d5q({E<0;593y8 z4$Iuv?gSds|8(?e5|##Fv0};-cg}Jg|h_EBudprbyAh2)tN8!4HI^rv_qd* z{Z?8{x;%`kfz>`cYH9=vh~Ty@@S| z9a!Ej3D;M)(bGgL|5l#}Zklc9Awug7^j5Kx2W?C`J0}C-s*jmlqxsYa5>C|Z-rI!{ z9QY^yX~C4Um$&_>{(IX-eZhvdx_x4`Ex(f2e5asb4QhF<0A4vD)uRnRUO7yekY*yh z+K4#j0Dg2Bqn@H7YUl<@`P_JmdzH=b8bmUu_7X?VV~>-*AJle6xE{y^qS)wFRDSci z+)j?I#|%J{w;^-|Wtzn8h^t<2KB0t8=aqodpc>!a*V7NP>GFcE;D&iNiCuLRB%RO~ z?MBJ_xoK+bezur_dNhl_FkCHoR@WZD%@>xEZK4IS{(cLxxJ6=XPdW7`zN`@JRzn_C z8lZE0?;vO>o z4GyE}IUUr`X+RKf89;ID&@beypZ_^f;-vf4=7tR0(@?re_;-TUGK#9HkgaHI5Q1!s z*dbCfq3GaQd@l~#Mp-wkCk(|uZ#OwRb)JAbzObXr*<=`>X& ztR3`)T-^yMo!(M-h}g>29Puegksuo-ci^hgs34Fg-}Zxw-DD)34L{roJAAK86#WQt zk15y#G*Z780^CZHP~U&p%2RY74E2UnhMwJ_vD1As&{ z!U=W!ckL<8@Z;WEp@-CXPZnKphq=ZYVwi8w0bMMAealJ3^jt!(&rpSH_>!DNfg~%y zoPqz|I#fUrz49H2BD8OokfA930)sq;U=EjL1FA#27nAxSbA`|2(oOa{Yt0P3f7dBp zN9Js{PZ;9*EBU8UB+BacQ$y?5?O?bq+MSNUm}U*m2o+)Qtm}m^l1>!(c6h7L=*#& z1rzxPXbTXjbjvAz1xy5&=;<%7vaN)}ULEQXEX{QW_)zxwd>m)drWvsC^#P67&}tNG z#w9K2KQr3Y2Q~4by+Fxl?COJY%BH72Ddn4HBAKE#4SzYgIpM=LB)(Z5}*-3|7)FXjQR?P)HfXOHhF zfwVI20y$+Od&Mm%CN~{G9t#$9Lm5QhD0&tWlStQEx?xmn!78x6Wq{8PKm;1`go`5Z zcg&i9lvgKBCq?5MoL2eOz3OY*@puUvz8LS-PN#kqRbV2m5V7yb{k(X%r4>QDx1v4? zA1Q}}NcS8w{u!nDGn^CxQrNV5mou)&D!6acBdFVulz>vaE)Tst#R3MfQnLV1Eh*%5 zvhpEj@i47rZLO^`XZls}S%yTrxp01~t4oz)m7VW(aak6!2o}h>IsFBS)VHb)o-xC` z*dUABzqXbPgJGvi{<+++1;Lf|MEg(NvzaRgUzQJZrrjGo_qY_0jaPB?`>0WRZM zHjv`|-2)UQu$BZTAT_=Cu5wQ_!ThvaWj1y|9-@b7e-XqZhf^CA*RF;%5DI_JvTj<` z=z`Cp3zSYqWn;lOOJ%eAGibL8&g?3DjzR6)fAlFItX55k(boLEA$Rctvv(O?EzUu+ zd6iK&r4W@}FK{LfPx7QR1>m}ZH7Dg?c|WdR8> z9sa`eG#-I}g-c{^ffBFrlW~=u3-jNk%B#zG?9oY9uU_6dKj@@=2Rzl1Gz+B~SUvNU zbZtmZU*o^s?3IT7hWRv-l>zA!si+1DdvMs9n0?Y7PAJIL?f*MT!yR4-&rXuuH{=1B zr{&X%J6a*pk71;3llU+>j~O&wBCivXP0jxblG z4k#E7x(`wcb2)5>mI)_ySLy)Up>ke%Ly2^v$$sV?_3YYw_4q!&$@B*$=-~1V$$Tzv zdc|#XkaA|Hl7+j4%At1olJ2oMNsIUSP)SmkqcK5kU?B$y&g+dAY0WHdL zY=Fh{r^gQR9ychEQ5qYA|A2z$CVOc%x{mU!`v=S})BjEs4D8}q-SLz96;`mt*8nG^ z%7e=pPDSVNLRA#EiuJ$3B(V@T1HSkQpp|@;WHvH3*mC=o@Pl`%`k!TS*`XZSi39NP zf$K?SB$qj;>yuCBsWYKVc+4Du3r3-K?#Uue-_S`R%|@q2qYb2XU+3Yh?g9n2hh|XS zdLo(_a0F!pCz2q{#iYcWb{{yC8Z$uK>`q&SO$HObZwavcC~s#DpM4#B`-k-Kc;0k( z8}|u&h%n6)e*k0>WWUNo$tFvW>B*yeS6V$U7}@=1Wee~}EeiFM4$K>@-|W=cT2oB- zriSGXhIqt-XSD$~`1Yj}1_fiK8IO*j1Y|CV~tkLx*u)N{B! zCbYSvu!(~NkLdHCZJt&4y4crB612hs=m>)!w%+Qp|Dl^fW!-n3!oAGpZ!O85-1_b) z7vd>m2f|n>Y|Nd}5R}QCO^fc^tRK5w;e1~|@;POCBT`x|MWAx}VWEYYJy0TABB=_1CcpuY>(5cz*gV9)1|qX0n(IQd^gzkiiE z!2YF`^mR#3g=eMWuZZ?LC2%_kr8H|To7wf5V=XLgrad%DwSTst-iwP{d5*1q(><5d z?!WUw_Rlk*h@nA5wn))RxHBlTHpSjgtaqp~5NFIG0}O7X8|zIJugDt-fC6b2gOghF z*2{ue{oeC7kybFGFjs|Kt{hF|gEYjI*%9mYLGR@mMfN}&jJFq~CL17hvEkSi@(_$b zNjnSFN`=q*$iuVGMK{OMTQ{sR(DYOQBX#xp= zstXiu8@!qGfN{&8w;g1YF57+0>Ca5e!Li(&_7f2)tDFD3(`2{u_a*q;;w+TAI38dd{UCkCYbuPV=M@s`RVQ%BlK*VhZ zmo8O(we?*~Ntu(WdDyN6i;M(V2fUlYe^jHhL(W%eSC~MQaN~Ob^&vWL6`k}4hs|-; zxnR%c;&mm24PZHd-D}gPH+?4$;+`aR>e)H$TKxkyNUW@?1l?R{-9J(#*B<9$8Pb~JX zBn+~q`I;{jTf3k`>Z3gk2=Gf8BT1S;9VB8gu`Q)!ACY~xmeM05Bo4B1@(!{b=6X~Q z37I#1^sCArMRi4U_(!?}bF6=TAg|5`g!!TOoN`tb;owxNpY^Y*{6+#yPF*BYLOhP) znSF_smpe!VIEF@O&ke@h4W%dMP8q{q=wrw!gSD5*GI2QKjJ6S|qj-en7?50P#}ODj zVWQ5N&s=klFLRPqIwONqzUxf@ zLtIAk6pJj7lyl|vxksmHayRK<1!8b*a6Xq23K>DpHNDG2& z9uGWA{58Hv5P`mzB<_p>S3M9H=hX%8$1V?5DS~so4Du*X+<)?q9B9gO-NeYmX`zEv z7F2{gl#=|6TQNHD&o0wiSTvK)vtL`$3_>$RbYF_}Vve*rw1e>UMxyA1^Hzg?2o+Jz z-f(HTnu|RbBr1RLpa;iejPKwnNceQigIc0*)c~n_2s_}tXUO=SPW>Y8GB{Am1&olN zYH-{Z?^Q>{5S1>p)u;PSq%yY!QYn3Oj02t|{L1IP5C1JL+HSWjQF>Gpl0!!{9h68b zWm`(~mYrND`3-N4e3uHmh-{oE$*;#ePElCFlBouP?~WKZzKDhwU^e7m!H~a%ty?55O#6lpg)|^VX;pOQ4KWjTMz! ze%`_v!G{C~^$>3f{9_L|KD$C7SK=xwo#*DgY>Gt~@XGvY?tjR*>BY?inq%Ln<3QVg zM|S|iQe_V1q+Kn>T^!jcZW;N}t8$qN6cGS|Pc)fWc{rGi(RU$}r`6>)#(1ZuGM83g z&&$DLWE#ur5GsgC{cZ8yh_luvK>y@3<(Yx;^BJQsU(hL_>;oI$@Gbc?j1G- zaX?p!xpcGb@Iu^vDX>tYJ40r9_Fo!Pgg0n3EgB?sdI!Y0-xs>&o}~`L@?Fm#X5(o~ zi8U)EL!0xkm5Et&KACo}`kW-MBk4XL5)6()7ht#`CHxgzLDR%@y?A>F9SA!dG@LN4 zbmfEgMOY#{A9pD_WC%;${fSS=y>R^iqne1{T##zbJ*?#O6#TO>YOvq-b`SVcwJXg!eF zsM+@4oW?g)iIld?Twh}8+Ctq4C5lT_f1!d-Eaw}iP>7Da6FujJC}4yv z#Gc5s{*8ioXEU&6Z=3Y7U+qa{;EfAYd#h@{RXetRpXKC*m!*TBI5m-hT8IT4Cp>(V zR7^fUoc66#T@4gUm4`{QrD)k#VKW}b_TI@KlAkYD6L?Nm8ZI_gWY#6>YcB10!7IM% z1JKYg+Sz{fX;lyLge466NfRwNfD6G_DtYC?(t^mKd{}8dW=(dKyD0 z{9uz_5jrx_QKyA#)Z`A9mSRyMeNF0SQ8Yy|nP2MLFa8~oztRVZ%k^pFhtM!l+Uu-? z-vaZkacOs^oO-jzsId35SPmqdFti-1D#}?SAD5FQh!S=d8{{n^C>UeyZ;%0dewLE~ z#F3q`4J>lFa5}Ibnwr%`Jg+@xIP4*>?;ll>=_U2@2#5nBzn7@Jj(1t z^4`It*#O|GHczZV+S7mtHt``sI)ynr!qN7XTDsxBVBM^=`!(L@@Qb-XJGFdKb>Fz* z_uu?<0d%&Nh3MY z?@CFqzZc{mjK4>;wD8i4e2TgNhDF%ylbl46)^vDv{soHy+!vk@?3b^oy7xO>@6Ir- z)VLiDIviBVH86{%d=vFPGaB%!LZB`})!C!zO}NIe_<$DVn0#~xgX?0*+e(j3Ugz?S z6hi^Epcn1%1=7K}t18(ej%<5iF?tK>R3K}NKSzcf&Npw1-4_@zG95wAW|zlakN zzo=Xn9dv1B7E|NoWwNEiy<3qNseTV}xr2r^$r2C%fvb=p2P!z#r{2ejp; zD={sjZu+mvb%9Nyy8zwaIetJi&vu8U=|?0Y87}QM5H1LX9Y==6XpVZ6IDt(=rwMAH zfH;UAAwuYSk8pctV_rAHT8Sx~E8#v2*M};xVAU-XcX~f8@k21y)rO+3TQJT42x~ff zAKsuvPx`bh!L`TDy92G4>OULZ;YcDkkvpwmyXS?HW35}tx7x#K(B70ucmu76Cxl?7 zrMWTY^zzz=Q{v8KdG>&m;cLqPQ61@nfXjjEs)Y4t;#!ne$(87Nr7%sguY0I*W5u)@m7nc2DLqf|1 z5mO@46--LUjtxb3eGXYWALX#Vq2r5HI_jsl7-+%eRN`i(O!fSm->M|wS>*QY)ks;g z2EYCp_s))$WyM6PV{p$-@1fe8Vu0lCLvTr2Q+w)vj@)DneS1Nh-{IpbRSYUQtt8?gM4C?Ss4DlsFn&}ku&T@g0h43Tql>vXjc zvn+0|E7c*{+r2hZf}d2$9NUSKxVg7O)}XYLlo(f51@$o9e`Q}XPmSb^zd3h+MSJFl z1X#q60B1VA%rRxlDlkg+AK?m)3_7dJ5&*}oa2!=hZnR4-Hyc{0PG=jU-4J1-u?F94 zh55rD`5g#3;LXQtsQRhacwe{s1Q~#p8O`xJ-|fB`Bj;CmOaQ2%|FyuE@=flpUcL+M zbpW93t<0$=n0sLF#^KP}@SYcW2q|8B)t_N;Lv}?(ET!aK{#iXNAQrAR>|Rc0u->luMJKf&B_5hiUfKBz^);X41E6?Coy? zaRW6%>z*^gB|Cml1H(?&GoXB2nq9Kvmy`cu#$4AfCKCOp1S9I($l6qd;gWDqAF?vQ zHD40E8$05b=}63Ad8YZhV|y3JbBzc*3*t%FA-EV=mh2%iK-$}AI6oFmz1|N~HJJ;$ z8$0Ze|P-;P;tiU;@PGne3x#l1@6NnZVC`{hX)6lWYLlCfnqpE zD71`a*nKCrd{(TJgdpP`)t;4u)XrB86FsjKn*JX$g_g70=qp@aM!94{}D_1})b1Nb>8_PW>2(XeNnd z`y}^Om^r6Xqk8@ZgKsXdI<^`ln=wa-()>Mjxi=znMe;W@OChS|QXcaKg;O=mBH?^h zz-PgeW_WQ2eA5)+gnS_HZM5M;WF~wy_d#qJuJ}6lC5F4-K1nwh`me=Y+8>BNfTdt% z@)a==%t;{1S{gHTrIJZ~5Ph25s|vu;na?QzMOo=BP1b**53(kVSFN4|Tp z+6LPgWYt;+NkmCkcSmnuwK`5hgb9iWy2M`aj|Rhge_T|89|evLrw8e(eW9&Fr*kal3NS-e5Rm;9Q-o z^J09n)6nmnbDM6!3!&mAE+w5Mq?ia998PD}u}<=x-}nQ$;fbB9QI}14@UMk$dM9xf zWaV$}$66+Wno@L}s(yTcgJ@qx7i#|^N74l_w1>fj7;S&o^W6~g-eZb=CG-oHHD_Z z78PG33u!8zP{6fk2Q+BNv~li^5fR#-f)X!Bry>}12mHO(-(XnN5wO*aOV&Tf6_e`d z-rnRYoQr}XAtD6=7=)FGQ{}uetFqhv4|=MxB50&&5F|xGc~;IV{X+1znrocpA>W;^ zgFJwB^|QG+m-FD$VC}`z$*kOF?OVs(M*r}Da^2|K?56Pwm2q&oo^{ele)9(H5R^#e zyfo9wS)}E+9*dr>c)@f&Suq2j=2i)<)-k$`a+SOkp3HGPJ(52;A_E4LWMyWxNt=yX z8ACHxD5=PyDrcJO6($p~!Cs?iAXLoImRwPN|0M9#Jn_oZUWeH?+a`2tx<&(aH{d|w z;Icf;i~%vv!-v9io@`J z6`Iz2R*Kk|wF9)yStp25Wdh3cLZuv> z_Vj@ubUzr_o?*mUfrNG828&E0sF!BMBu#%k-PW1(WodO}_#?G{+A)W z^>y#j7-2_P`lNa|u45-qP#C52R&i+=%IujI9!ils9@X);wR&Q$$Ra>$VrlC{(UP{| zArs-J)XSX&>$gH~xB^w&4^~zjvs4Xq zykEixpTIuAL?(L_u#t9&!W%3X$d8ZmQ_vm3y8%V$*}dK1^Zh&nzoTe-Z4c2C;p|CTFGXWilcPQcg|w%a(U#%8~q zc$r8{1E>so3ed85%%zf0$S<@zLJ?8~!dH^LB^Q@9Ifg5qK1!nxWl=%HuvMn^S;T-l zOKt9$7Y2aY0#0#ZbsL3%Cqz}pQ*;1$L8$6{N)N!dK*Iv;mBe^Wusq$J;kW^MqV`awRP40l*!ddPB%EhNp8L99+(+KNBMf?U(gUQE&@okwfuhe9kJ->YrTGbhhJ)ZT!c9z z_m!xNty8zge#xw!FG2SY_?j;E`FTyvnVYrn0=!U$sw5l}@o@1Xddy_oxQ;jS)nR7|cK& z>et;;g{quL7BQKf>sNz@R{C-I&iX+Y3Aoea|Gt>z!{Hea&6S5@tT|s-B6|>}E(Tcl z&v4pitaScSQZ0tF;Z7f`cqzfF;;1f;FDw>-ZEfnue-$RnfeXm0!23qq_?Ka0vSU>! zqls5hSQl6=xj=~7CB0a!qr8(bV5<-f<7JO172(Qr$4BI>1E|akLvCzsEE~y|UU@L1 z_4fAQbU{yrLQQtT(G^Sz!rxm+6aEES*m<|3n>#9(vX}+E_#mM{?z~ZCMC;H<*!{Cq z*dB(Lv8(B_J?v218oP4O7YfoI2v8*kG$KH*i1>2-9VL|t_UpNgtM7+a!l^%Ec=WVK zSj*2l#OW&pg%RvFm6W(G1;&Xy`Kkrt8PSqT=PYz@&;P+`QFLWLcSyqR)7c9$)F!?9 z|IHHd^=qqBB_Yia&*OcWww4~QSZlphBOYQ zzjA&LIvvmz3h;Y4jslnfwwwsu%?+@pgogo-mt)O7O5Tq|XtbxdAo?_R9g$!TDUB7Y zvVt4PB9qM5(lRa1NfO?`FI0m@#|{6FxbEwdKw?tCtoQe>@L&b~o#mHjC(0bYHI!t@ z+YC&(dkh4T;`UcMA#x^!Yt!YeQ_3=o@sosu#f$%{*`u~nQJ%#kq5)z63PMX3%xpp#-&RN1k zL!!L*kQssoJ3DzfpudUS3m8a*9q)!osu;wGbzbRJlV;|AZ*T@81Onc| zeY$Cc2<)J+uDZJ*to{6mFN~Xz7k;YXQxBL+lPE1MBOG{bf}>kXNEHDaFStk{567z4}~VBO>)RxhYGHUhwiq5+)gcbNv&zI zjgE3k0qTArH5qFpvnsEVg`aLTIIG#db7m3jt8jl3eMHKAId!Yjtl|FYQpb-)x=oCvn+H*{xQN5b8(4wJE|F}ktR4m*IPg*Y7Xdj;ZUIB?ePKe$MOL*fCq2EfYGe8@_SY*WDmZrNHC* z&6g1E9I~&?0fH=Akm46WN*57}RFmFagBI$BwPy?B~9o)~GYhnw`?Zer!{iRDW;xLtL zbyz<|#*56$?2Q_%@~DU?fo0Fhrsf%tTFRl~J7bo^R1zEsR6QTPWLPB4JEj?5GFW0u) zld0bS)o6Zo2Cw#bm4A!9%@ZsMjY3`5Qcq7I9HItYaXV?HfDuVoUpqhCX)g}YmU`Z+YxYVAPQ z&K4;KH_zrF+fI0^WZ(Yzje!e!|23SEpri{W7R7_2_)&`=Q4V;=gJ>cGuNlIo0)yy` z3R+worXP+sNaj+9tr>1gf8v?FwQK>@aT+9Grm0!^6xwVrng2}A=;zOCfwsM&3RlrB zutmRUyBn3|nZ&)}EfM}GFi)DzDb%KY?AjY>{(Pzfu298IoQzt>!WmpIh1GcHtO3{` z5LD{4cu9w@^LEh|!uN&-3Np(p#fL8p*2hZ>i<~q(f>ydT)?K;V^pII#34Y*F80fKc zvwIDnqu~KZZUI01`RC!_H)eY2PT|akZk+y};fCt_{Ky{T$kFG%Em3C(vb#LVE9$5y zNr*&t)7=O?qP01)p5G zZ^yT**2jeCVr3*tB0IGT3I~ouPEZ?`yQ%O#sgCfOo^MeRUbX$X%@yq_v-+|Uhwq$E zMm!-tRI&_d9^k`}%P&RflzPz>QMXoNrDxaI%P81=YA{N(6N}9O%622gPLSj9(R@jG z=F{W*_|H0f^U}w8(`_#`WH{3CMS)f5rJ4E%qyo?hwwbp;-^*!t3P%gts1&|KAb8x> ztYFwjc@s-Cn7KOi0VwuPGe7%eA@dt10+^9KQ&0#88sTqFqw}83RueoBL{1O{`CyC?Z=h?dsymd zy4Hfi4%RJ0dlF1R(02)WQ(~qq-R4yS6*@P%aF63lHpLDJL7g4kl?|2)Id5Ij4YoC} zx@uXw{hU0~M%57Y(T@u3kxcjaivDgXxt4I?>na&H@(&Y(ydD^4T70qHBa-gQ(ah-_ z#8!x-lNP>iAx_AxvH+aN2IB{wf- zLPT>OX7wo?Vku5KoMlFSQftrz$t@lXW37xub5#WYZGzE@=ZR|0N13O09k_7cp`4E$ zn&YXu?$hYody}CfgCSCZDbEAa(4GSiyDiOtMEXeCvTsP%$EQN|0She=BdPV2Js|~0 zldL?$`PmyME}n1qnqKAeC-S)veb$nT-n@9(owhU|`cCzytUD_juYvY`9OAP4B*Akm zVP8g#l^Dj$J+e}pJxpw7eWzmKP{c^AAm1KAbz_}NH$Rk=f@w>|duIp=o|rQGTgbN-v=b4XrCr5wg=|g-0nvK{1{pD0C&vNu)lGpji21Lr!X-$&i{GPx z@D@DWoPgUCQty&aelfH!{FYd^)#aV&N>gC?**>ElF!5`(^Z04Sf3prnUE~((xtt=W z5Sz2}F(WgB){9zzc|}BXb3USjtCn-&eyg-f;hw$5<9~F0aB$L6UP#~pkpZadw1CM= zFFQj*WlE~EUAM)FWUW(sU$5%JFTN2cK~S)QabE2?b1$~8NB98+75p zUBEUiEdty@I9Y3;$Ph6}Bw~X^y?O};mmT@IV|Dj`O!_+udZ3{DyEVXwiRx{hx-W+h zi+WUVmlrU1CZZ!udqo&?*shTq;X(P`5bkevOcza5aav^`l0crlC*`a3#@HC2vHD6P zjKVeQamczZ7~$rehXxNIS$6-s5IMiIm_yf&SxKmfHf-QywMNi#%52&e97a)yX)etr zPYrGNBAeg(zWVf1AHO3+(-ipvq}fi3FsnNBE*kssUqS*+;db#k4hg=Ndkw!{dWQ~9 zG?w(I`DU3V!+b=^*C5*}?VQ|+Umz3)`u18r5qYrH{x2HqIO$Qescs_~|CsN0rcym+ zogGW}*Xr4+vh`q@D7^?GGMQ^X6JAfy9qx|~9tOP41+Q?ydM~~q4LVT$1Rg90dguvv zhwUlTpz2&zG72|1R!cF-b|~F4=}1L?c-GtWJ2gQ)zMw7t%Me9im>>E4nOPu<;8{M# zubfkUEqLVU=8(-SbZ9*E-}@~^`*b?i7_yoKm%(dX&u6LE$>JjBS?M5APmhUxnV*}b$Bnb<7Ix|sPYLHtyf!?2+qTBAAM+5DWv)V zD7K{JkoaZfmiMKo{5TW#Bnj~wc0<|wVjYK-QPUpe7$J{o99suI|5Ys6e_=nG3YOTb zvw53fXTiN=x<^pJp3sQTtrii+ZLZj<=dz!b#Fwh-jie+a7-Z0jGwPp7TpF1f2@3zA z`ryT5HGa(tNJ>46Q^ma&MqZ>WIKR?jfE868hJ-CLsZE zNEv8tttK|fvrS5XX+OK2vfyx(H)7ogldrsX+{G<-a-d9;Pw$LA0o{iS8j>~1f3iBc|MTtea+ZCEtugd8R z>8z$ycr%3T(J#s9e)n`2pN0L_=f~n>N0mf}3LR@hE#M%a_LaS(plq#tEvL6T#++|H zCn38;x>L+Q&9F{Z)=ZT0wpkY#NZ6PYhb*79{rAb3_1e{qFvsh|7W7B;pxv3Qjy&zp z?_5*l`a2aql$%3(jG8uFx-lbAL0sRtP>}MxXL3e8g8oox@hP+_zZ0U|ikS~Y@363o zUOWkL1#PF`{unSD?!dSMF(N;g*{_vvR-59|b(*8H&Me0eN62K3Xx&G+kpRE63ae}b z@+ig`d2NBgW>c0Ry-ryZU^s5k&306>F(;#422-5k_(MMjGUYc!&Za>T5Vv}32BKKF$HFN5WolWK^h!1bc-&*Bo0XVXFmfTG zWkO|`G!sIiI3(2DS4oP~=T-KR+w3O%3{^>$F@Z;qAP28RCZbM{|FVLKx%6D%d1?dFrPZiY*~*{l6m z^lt3*+1pFw+<(~CqkA%eL?VA3pjN#eU>pqc;XWkNqVIU3FMIWIA@@{E{1qrR@Dxbh z*0M}3)3J;?W`RC378)h=S`*_HKv{kNz#>eH{!6TkyD=X$Z}UqI_jP0eM0%VV5@{Bc zB7eIr7SGh=0YzN}%gRZ&1HNulGRE@@Mh}A?7fW)I3<`#dVX70?EOIC_NvExk_ zxn@o5&06)_q#@;YPwVhDc)-+j6=VyRvx&?@@OMs0(9p!kS}=PH_mCVKe+Jy2&5mT4 z;MX;I6Vdh@{DMs`0!0=Pd4A1rY#QNijlU?vN8^S%4Bu;ob9oUW zvqi6299>qB6H1wFy`)D+k`_Op6G(j0ByKow{CKHh?b#v!yu4M&UI~??up;?US zDjRTzg3#0fx2eTjBV6=b6JgO89~%K)O{rZCkZL&~W0woqYu;6MU13<&V`U2aUSH+> zDR=K9G;}Te08vRW)0S-=PtVBXqNo-sWZ%0{KW0Vr4!00!4UQA#8R}{iD@}UP`KIPQ zjUtCXldV%p*#(qlwFKP}EvK*P#F{(<$$nnpNx<7YbFucAli;={Yx^W`^t^MdZ@n;r z+-+B!r5?e1w~WusQz^--$hubwT>h3Y-jlZ+3O*A&VwDCtL*#Ln%n*6kkurHwcG_~j z{ADeJ{e+TIq8H>2{&az$Wf%`8ZF}dYgGUe^MJR1b*i*WDX?kiDC|!^ycgUoS1~Oi% zj!X-l13s2_7MhrS6`Ij^Ja?%-WT4m8Ul1W*zq8qXh>aiQT)!+yq5gn8(X&@(l^enQ z5%6S{^hje?4>qm`(i6G;gO-he1|H?7%DdaX@eO>?22Nr4jd|S0E=!~tuRHtGnqCfs zY8H1F(W!WSZSi3WQ1Vn357WWly$+{zyoz1;L0f;xfUrs`%Br|7f)Uhj-D%CxvEIfz zVJ8~K|8TfN{6p7EJJ7Rxx+e>=v}cMu0oT>%mG$^(^Sytz3M;xHu!n{+HdF=5^HTX} z$-+&rhsmSQqA@X(ZSUXwk!{Eh?n!1TW>Dd(4{z9jhvRi>)Ga)F>9P#VMmVG==nD1m zX6XU!`1gnXA?)MA3bKx;-1)y{sZV#FHRqUV5M&z?DeJFPR*fN02Ck zQu#PhYn7u++1dr`a#mpUd*2Nb>Ctq#K~&Fz3%0ymqGX{*SgeEk(z1XKOG+}4={-~~ zggYGihLhzIyCs=^t?T|BlPBI2siQ6s!@>`HELT^rGk6^(;LhOv%2m=*XAOB&ugpRg z#WT<4Y7e2n?t%nbeQE^nZ|~Ofhf1vy=bB+b>&- zow1SLnDz$1=v1;NX|reaZF@@d5r@{>=!8XjeJ+{qO=0d}yiN_5 zR*DO_=+{=i9 zTmYTiVt|g!l@fzph^oBiVr(Kemps(i?lt7IjI_TFkw zG?dQjwF}~lD9jn527n}U)tA|7oP+j&*f$O?ifSTu2kVacY70GH!_$y%!$=?D(&y?@ z0rh2FMR)C0v_nl+pw0rSpD_f4;ZBI7Clkfdhac+h~kd&uIbx2#0E6$e&$qZWnaN^hi zrrZYLM3y%qW{}~rB9-qT2&4_zV`-N?C5r7`Wrdh8&8m}ejv*=*FPk3o8C$ZhFv|J; ze}(@VuPQrJ55YXrv4Nwrag_G7=&1kg`V_1`&CV*!vhf6MF>~U`GcS0Qk&vEkp~+ot zTPgOoWqL*WM_ctUory6V5AtycEAMIget}tHii@-C5w(r-@|}sv!XB-=Fkca%1sT?!k2n812_TxDcU$LOWRgisQS^z-iCCExAUjWSzg^ zqv~<&-f)s704QzWv@awqdcD|s(|RK7rv;&IroG9j)I2L+F_#s@dG-fMcNgIdvP-52 zL23r20+^BYi`{DG=&c$E^7-Jjx<_SfI<7BX5H(6-Pc;?p%TwfL_NT#(7Bm~Z+-d${s9o;_90?B*9JAPM;R}$!S?C z$DCY9C;Ak=*r+m;8G*+POia#8z>22u#^*2^E+^41g6*eg@gd-7G8a+ONcSk{)$>2C zBY!K(7m1qH`3lEjrH+LX96eyNTbn|IhlmZHz)xI{@8N#HApl6Am2FZQ7_=Kf)^F|< zc9?xHlF`kSJE)Nfo(!6_@Frp;ssVdP(;difpe=~?gSXQj$GRr{hLRLPK0_){ z!RDgVdMjJ>zk8`7-(PHeH@8zcc_AuIiTTd$v4w(QCex3?*o`u*7i#-lTdPNGy&ZE0 zbM^9Tb%``Hu&+j&_13~?ewZLe%kqa<2JD{KNZ=^I1THK>O6DlaZUY_QS|@4iXQRj^ zhk$Cm7B~)IdB-ZT1E&5P1IZRLmydh+vJnsn0md;Ouh$)OGx6sJw7xp=$__poYCn|_ zlHobNVanZ+08xU6#}lI@y9#J@!WyjqaIVr}w0q*e6e)zow(R+ZlZ)E4W!WYc%`(oj z;-Qs-4lL;K;}_&`8KcpFU2OyhYbx_(jMSFCF&W(=KpbjISqsHDH7YwPJvH%+@ufnBvPZsZF;qgxA7!W+w-Rn@62m^zfk-lI|0+h zWI|ahs2KdA)p~RrO7f6^-A)9UZ-o7Mgmtq6u`1pqONxKJ-Q7!+%+Uc<50iNWDkNYmKWT3v%j*ADeqe} z2c3%SCI4D>cxVXMGE7B0s7UyQ=p!QXLNn?`(byYKQT!FpwHPO5@e`Oe^1x0?+qQci z-mAA5ofIT^O~ZnZ1o>Fg#v<2@nMO+&`+Lr7XDoZ{0~kQ>HizZaZ9YQB<-fn~TUy+4 z^!^sjECy362}VAiNTR|fpmaARm;63^M#4{g&hKmS2P6;Ek;m%yDsJw#Y(VXyF~;W% zH+r1oxxWiZ@tjlgpVvs^(s#rMyw}Mlyvy%zvtYOB5-#7|B{tdk7pMpCS?22Rk&*iM zl~F|b;aOU$ix$G4v9z_emq6c0loKXj}-Ckur3hqYea{b#bGftV{wp~227 zm`3Ah;+l(EiFPSX8;X-Q-FX}1=j|xuH4q7rh(lOIaj$yQXgx%x%Ty3%^r>!Jwa*PN z_c70L+e?3@gz_CU19To#4g^=DS%1%td%qIFSl)Y2v*C}GT%nI)Z=HN6ta|WnB1iARXQ!!hWa_ndJa>C&> zLJo&hWF!B2g2U-@pK2F}MFP8Mz1%kpvlE7eZynE9N7Fv`tQ07r_HbWyqI@BuuF(S5 zMTG?JABC-xD@s=@))a&~@(WWXcwA-MD&tTHF;!%S$@C=X4F;a-!R?Y-zXbJ6&l&4p z$yGGL)j%wsm?lG_i+GIx;zR2}SJuU@i>@*l6|%$CbSR|!%>E-k$V*Cs{s4)Dt=K}J z8OQyXM@v$fY~o^(U9AHXPV8prAIS1fB`;CN;JLMslN88{CNf#MX0I`ys~GvjTnY3V z&pFQay+&$zl?}?C^>GxYo>9c~?MoQFvS0dp&ju2UrxtoK>!?@>A8M(EPJC8zn;ZfS zewn;ewoE!&vU;)_7*!IrW*dqEH2P#KdFsxK8uo5yBbjx%ioEj$Wv1*K@{@3`N{~Dz zOR1xIzswr3EM2g@44B=~)ANx^=quj`UqeyxH=&pWN|F9SoH3?;v|4&O4xQ_Cd; zx~f&)I!y*S9134K43Sx}LFXckPUo04*b=ZVu9N$vHC0=ylyc?+CewoL5Vao&(-b=I375wBF7Fj@rVzS+1e43cC)QLz;_RA#c|Eki%HHXw$@1v6*-(Q5R@EB^IjH)5`lkn-La8*+g+wPKL6fbHH7#qzDm zAna`Mh$fbTuJSe9mBAZ3(r{YayZlyGmL2g_5}(p0Bh;jZ!y&M)uc_D&GOprjZVZ13 z%79xy5Ps}>YyU8e7VGXaIEp-eV|=Y{f|=hM>rp;oQXGpxyMUtM5xGkTIuQu*~GQj`Dn!5gi>i=H>vs0Nxf1(&CH|17Gy3SjoK#;ZVF$g7TX=cEu361+q*C&x5wd|Wl5JyBf?jiT zA+`qPP$D;A4d*i1Z1V;*7*w$m!Fta}JM)LS-Vz((NYtz-;a(=_8WI4o;mhJ!X59a6 zZ<>832ta=*p$=n?vbxkGQ+Tnrx<18{bL`@I`5x!ff8he1<5f%Ud6=TrxG7tSX7{2l<#zPGWc9`>z@n~& zUTODb3xyZMNV7&O9n;K_|FL=#-6;l%#9`Gi7*SqolsIhvXj8fNzmGQTcJ&>qk+6&| zm51hcy1Z<7)0{%2cQMSR=ZAUMP6(i%I6fw%?6q>4ijIN(SdZ+Z1E?x{y36 zX^Pt0QvM!og|d?cP^-6P526-o@+wOP$3Z(w+dg5m6?O&?rz>0Eln@F2Ta5K_smyv1O?_v_Sa+SXY}C_~F^f2iD^e}(i3m(JVUf>6>AXM``^Ap z+Tz~)eN*b_@-tH4sx8KWFy4PuOE0AK4e4Y2ij>n!{Bu=^U7Iu|%ugoJfsO6B!%92_J2mhS)w#AqB5#hP z{|l$-)PxO0R6xj8BCU7jH-$Ksoe0i`4itM#cf}kCcLB|cqkaR)IUfs zh7i6&Jw!tM!sYfwh<1&Z&|bO4rsQhvP(0b2;!Y$lsP*RpX&6q%ZX z@cO$R<0+0!=*Vk0qyc#^)v^tun;BoReT)N5oq)$B5dox7HP>6o`6?V`S}MR%q6ixLJg{4A8Vh%O1MH*%m-%^XL4JKq)$?%--8wF13+pNuz+Eu)g`MS)Ie#vykDWcj=s`d>bo|9~~b5C?g%TN8p$ZxV2-BKn$*!zsTI7O!l^n16NkY|#h z#&(Yqm=68klCgo9J)5hWy*A=Az(E}L&$1Id?@V!ZpwV#hnP8gfh-5}9qTGJ}KZvlf zsheT-``}^r{Sp)&I_&&Ac#q6H9NpqN@M(gKz?UKNv*%b8 z#-Nv>q8&KoRsNR);72P-SeyQ|zs+!81>A_MmGwjC&SZ=mlX-n^U_Q64<3DJP5NbJA zd1|jwwZ(I^;`&f5d=!^6B7#F(mHVW;wu{i6{yVFFp=xel7<0#HU&!NU#TYY00+jdN-#wb;vU`#EJk<{X28aF+!5MSFI?W>lEY#&~u{eGxEfP+Zm$cu{2C%UrU5 z-sBe{Byj+@C9z9@Z123yk<;crUR*nb-G*V_J4MDHN&IZfZ@lPWgBNIgcwc{=(Zv2R zB@f}MsSe@Hfx&C@7PawZw_tcot@~EpdgwaO_ncOsbx{O^+GgtU!)lU)mU$-1W@u#InW=+ zH&uyBybJ@fuV@70T*m1_Qy!?IJL4XD88A`BH|u!_#C5cTW^5*^o%*dKv{6wTc0haP z*j9AZja@h?WQ`9^19iU^WpKCs>gwfl=N5M5*>u48Nz4I ztflw=%tcSgJLPcyg>d_pMVsVK{ud2U2c!noD$f+iG4OMM=@7q-2?NV!xJT{BBa$FX z!4X(*?%&mV3u8*nvJ1`W4&?01XW?qDAHV)5Ri`M0ge3ZVq1yhpIG05iImWE{kVRL8 zZVMl?EITl!MBfrT{ccvgF_%xp%vjAHC2oHcZC7hbp4bxwa<0?NHy+zsVr*?KQd3;p z-B*H4B(4qT)Y2H^nNhu2nZ0Hjd3ozTGE`s2zvf)h4SRs!wqbRQu?1^5t(HA=3yZ-L z`oOOT;ncrW0HkjUN39`Jf@V75lq3%8bE(fp*xC+v+|glqD8<29zmz96gJLujGD-MY z#?%-w2x!eR9i=G?489=tRUyx`#6OkkaZ?X(I5Vu`6NDqeAkMNN%`p;t@Zfr^M4BIv zAGfF}t1;J!fw{I<{$vB@T$9>^h=v(T7LT(W{rbOn^daKFZ4CY|dD{x)Vpw-;L4sD{ zQisXoPU03V3=H4Y;E8k)+C(4K3PsRXE!c9t>i<7;Y~7V(gQJyy*rBlGuBK&mRY=Rt zRJI62kNQBNaDAb~Ul$taTEAoLiAw-=V0+)xrM&x$J&qF7%OGMjSbtqt!sMC)-#3V~ zeS@zC|IZ|jt=^H6r0VSgeIktdQtoM9Z9lYtuPWs?{|$vk5Ka%|XXEBiwUZvRcZ%Y^ zzJJ;}5JSqCwhXyymX%u&H{Ve?Esg#z(fu%z!?FYimeElLc?UD`&VSGC0+uNlL=aIO zq%=5yra|$_e_Z~l8{k~jo~-1Sjhn#v;4hhfffx+*q>~bvPs(`6` zl_W2d8YaNsMHrKT3G;}cFf8`+Ab2UH>S zM+LU+8q1>&vTI>|pz6*K{*^20lMQ=(18z{YT<^`3?S`}@Pt?-*b~P{SLI&j2 z`asr2m!|f0==LwbEg9Y$_*}q|F8qs*8uM>#7YM8WBTB`9Zjb1az`b$Z`X(ob zLJZ_~aDnX8h-Yy75bt0!&gFQAu>jT)<-rFw+UA4=SKNN zW!sN=kwAe&rCfL=>3OIvo!ThYKIIUiXrb?Po3{bN@3E^tubPGCkCl>_&sK*((8Fo3 z&NMKKy`4-k=@#%W!PV>w@u6mRzf7{B3kbmlIx*}CQbCGiptTNM_Ye)x>r-aFx@&TGLI*W_qM zzJkve$%#E0CHT}%cp`S)+$7KvPD6B{3~Sv+x9r=m&@`rAe#;@H$hcdE#hE5qz_6F0 z z9f|Qi*+8#QBIo~-WoVCyozNPtQ7*{qocEH9{MI$nTvH~(E6q&MJ%_grgCWVWP7-y%9Kd5)L$BmUns1At)<;k+#%nX`~w*no0YIh@~SxZ z9lf z@K^e-yMoYlx@iL*%c^Bynf^~BSM3!7;+=?nmaasFXOI47!!HAH4;SEBBKQ4WFKGzr zy1NJ@(<9gu@L5x|E+=@Cs6-sCGRF{5)@(}iJ4Xx+{f{w^*u0HDF4M(?$QL`x@>Z?r z_b=!f5ctG7yaUpH6B-b1#qYZx^Rib;aUaTH9a%+h-cJTxLm>>u5@$!|vJnWhe6_QJ zxIb{YvHKjFukyYdw*-s3f~;17?aY%?_SS_bE%6x}Lx-@dq);xADtK(cbgj2_GoGz? zTxm@PeZ-|(L?B1VGQ7(>@-0TWLs3i>)vT4KL-cd4IKl(0l-k#(nCd{3-qVy5;Fs$P zIN(?MUdrcqe@%Eo0aOQDP(fvPr&20A?)`P=ae82MWQc0N4KlCz96e)NuZi+?;df*$Ds5nv6J2a{jWT+nnYe+TPx%(k}vizJEr@*qc~+Y_@NW z1mDC3Yl_!!j55bhN%+83gv@jtsI;>lTyIlrN&KD!Lu>)!xRlxFjcssQ9I8iHb=%qt z-a`o_N<;;hhUw<8s)u$mTw8rU{bXeD;T%4>FFFy>HA(_43YyL?0to499F7h{$O1i5 zb)MpHm3z#7w>?;b*0xqvs6R)s1>|~FXB=(Kx}iIY>HOug!I{$|cRoI2NerVVTO+n; zR{RXp?-p?xPHTNm|ITB*O+5KJYwOnyR{j3sVI+OZV$vS!uj1xBAp59yh*O65vmW|A zln@hIO&~=Lyq*6hIHmZZx21~p9=issh&%`0rX_7Zt*OfWV2^(CM}GrxxH*$4f{dohqr5!q4q$SHbo>F^W6J^W@P!nL|=YYgecL)hz z=KSC2)(u%6a~fwIS3@cqK+WlbxCj}`sW+DcMEkrkhl_jwu{g@n;IE2-F zYyXK|#S|ocgM!|esynlHywG{$+Hqodvty;DZ-duLPO;QvgGT(E?#*RUL7K)fe<>&~7)uvTCPkspBHu9dKEbW^E*aa#%1O2CN>tB%U~EG12% zULQg<HwME5JWvoUdDk_P2qgkX8601k#SXLcY$bL(?~|MAE< z+vy-P!Y8JQgOvSoT*@RJffxv_KwCZnwzUg0b%gAVHksRsVyRtJb#aecyRA*1ne94moddk+&mm}ewREc5>>F-l*^Zx+GKoG z{|;?|$$MTZI}b3T!-fv?R1*Gzga7^E3oJlxVZ4;o^!6+vSW+tMkYj8z2zKmfxdXVk zG9_Zn4-XR{X=e=6m#AImZU(Xg)!@738p)LOI-DlIK+Sa7C;F>b;*2@z%yKanxmsVw zUFe{WUcNEJQb7;NE0Jxn6;iVpkRNtW*?ZAYD4mwG^PW=tS!0)PZKvwp!PDC5MBCiVxCmNQ3pC8@oLer;!Y%9wiv zJYN#ddn3=RuViad^!fA1u4{;QTY;_KTU20fE4#o|&3#sN2)sVze!el*n(!^h^Mbd^ zQE1c-lkmsM%1G-`>=n~d(L`leWfLeenp!K|jx71BYdl4n;xkVzO_l63nrZr~a? zTBoZ(o--vB6eJLLh{%f_wP&?E!nK+1A9)qlp<$XXY}a8ox#jXm*8_>J{y`P0(6#dm zW0^c@Z!cstP+0Mbef*m@Nu@u@vVQFJN)25)kdxpv0A9%#sR8tYVlI?w`CpXOMT?%? zU8!ovUJI&n_Gcm-SJ!T?+1Mf}fRvae{T|K_R$7z=4Cg}TdRjx$HEfI|e}(`l>T5~| zl@Uv{JzQ7no}UtR><)kxRGXMbkY5WenQIKq%o}W?ZeVbPLjxgHA&BK#z)Sf8^HNF8 z%9t1b2?~37z!u_RW~(noC`k*$-_vNkn!;ceeg>U59U8WVPC+ypOiRni*08%o2g%fw z(S_0RRQrGg8Q!8Ir4i~8rc`WP{n!+i0hNHmZa1dB$Og|!IcjMi`#f9u6d%qh?-}nI zatg6F0{Iwub~2?V8w{B@Eg5|(R*8$+rJlSlN9!0{J~|5C?vm`0*M9DAE_YqT9>+Zc za96C|ghx5Cs(FNkHi=d~4D4HiWJvbytV%usoy4!T-&Ej`wGvDef}?K3t~kMzF%|p1 zVoW(5Gn>2>qxQPQhzW6D=C#eKe9`Jh6CjkVaYLIxp3G=LW}0*;JSLcM>7mYXoJ!fA z9v&Lk=2l%oO1;lDHQbA9cg)sI?`IKgO6vc}I547-G)ACb`p$5Pnxgzt(=ic6(dxr| zin3l^RsLmUWsXP@h$SzToABi160v%m*(GG(Tn%pZ-)-5P_~cqU^7NTSSGv=pl(^1J zg_|lccsJtWS5Hp{hQtp&c^y;0CPzZc_0%>Tx!%1*x@0^!PN~Q4sIynA@~rgOMlL_6 zk(1+Jd<#?BxaA`yDrO;a(4I*algPJivI(&Z*%O;3e^`CBGX>h%KY}T zjpk#u3=>~#`qU|X=RK7i@?++%bB&mmKr_YIvXs*1bUTvxQQD{noL)1fFjkX zOOL=5Kw;tM!PBhaw|s)B9yF`C6QJgn57o@`$*)CE7@(Gy!U*XG( z#a%=a!$}lr6DfG-#A)>4(^HMefnSmLjpp4{xG19>S8Bc_9%5LFwXqr!ynUtYksB+F z-;yN8#WvhPGh@A^E%Cmr8XPrT(5?5Rz!bhjBvHgX8!^B>PR3q+b|}p8wZNFM^fcfiLK;MY$1x12QwvQ ziP`?U$~f_P54rZ zafEl1W4L}M^RKM7M%1q|=IJkL8N57ys!O#0*1mSF% zOB#nWFH0s4`xrU9fzi=b&uU3tiS67;Q(-W~1LtLdm(r6*Ip{$`nyaUqr;jG;IPyXF zt5YtOF7uPj4ebcs{L%P_PJ`UhmCi5U%IBT5E|97l#42(1As!5_k0~qN+w9ZzyafU< z_CA0xN}xPl;DqqK%8$t=9&L-awA-fI)>)FI79HvunJspjZh6H9yY1~MZQE8oqe}Y5 z!-d3c-+M?aNp8up=Fu+EAtIduBvh^G$X;2*Jxqu2pS^+KFMa-sRLdxtjlji~0Sy}0 zRBNNnC_ojtLBN94G_iLL2YXZQLqcne>-e{>n+E{S|8N~x<%t*$>{i|-4GYbLO>;(2 z8fa_3mi@LmV>Mp=R4d6n09wNdFWVe6F80#!zxJC*2^IR}>PRPCckJH(>19FlUd8qw zhci5{&NNt!E#P<`Y;!)c>W9jJGUOPeF*=#h&3>ZfC%%4a9|c|Eb#RS{UIMSSoVNAM zy@6T+!C~EIj}Sc9IeXP{bqDJC49K0&f!w*1&*v*B@#g@RH8;r^N>0batwR>CmiB_@R7?@>N>!-+Q@P{9 zKtIW5sGEz~jDQ>12Lyki32@weyxSFWZ`?fZOW&G;(jDTs1!Lrl&z_KhysyNSO~JXq z{w0W+8oNk_!2A}Z-EpL-$Hz&3N`K!r2T81M+S(z~Ya;zS8Ty-wDJprhd3aa)e@+Y5 z6XCBJbuj!N4mIsxwvAA^=b&-&RQ9wTtvIYgf5_i1*488^IX!9nOJLSm2os6L$R$AscmLrI`IJ>b&`{I~^@9<~;R7XpYLx%*8%T zITsMpmf&9pHLD-g7`5TqGldac!|e)xD!}o)%>O82Qdj@_TziIQm8DBNmyNipEd9W8 zkxQ9Rm|6Flhresi3vG^ppdV^>7RizpK7UJpiVprhP-OVPSePdReHTQW6*ud}tE*~E z7U`HM!mXOv(CSX&b$!=*E44^0`hJ0wVVt5qw4#^JqCi7}V0cV-<;-wAT8aji3k`EX zj1cX>BOVrGoot6+X}e=aHsK!X>Dm9=Lc-dazuZ={?w9rDGlFkQ^Ru*^V3V%;r3^{{ zDN1R$sOytp<=FR2B{d9a`ttoBO(W16-EY#@=9SlH-hsoAZ^y$nNSeKHmCk=eB+PaA z9f{GQ^z?4zcxwGtw*4d~&60+ymSuU=H4N`U$)b`KVA2tZtXUBkgu75RJwQnZj|@K54rVkx*=yg2Yz) zM>mg&{9>Q-DvQu)vFc|m{mmbO@B`vDmI9Y8c;dU{3Kj}zG4qse~E2rg)o@;#cr>I%wM zE!Ee)q9#tX@qdpVinfkSxH2pcw=*^!8-%DTDfX;Kd2lW9NVL#JlaW+?ZKF@oicEZc z6$M4Qh++gG@A8rwbJbLYUL1eFM}v;280}|50iy?!e&lsgW9Cy2V-lC#OCrlGxSXt0 zxt8t~pG3tVPIi1P57@xum|vxdtz+Q2M`2Ls?Q<{hyl z<%Iza<9D;`Q0lO}x&O({J?%+GSBcNjbW^0hA)E5y1AAh6{KYL(x3#R}eF=;~ zXOE+5gfn&Gm;pkp(E#MTAmK5w)P?#3-#RAVc!)K+_!gM+qLF2kq($&xvnLendT~+i zLo^AAQ%DejiRA@%tqSw@ z27iJ<=dib@Ign6&t@{N5H3{7^`qJm4)vz#uMk$vzIuH6ZB0*=TYd(-x%VCY;dWmiq z6($+30MYoYI$Vb_5jVm=crJF?2kGy%4itp{;9x{p=Cp2O-!91Uxs zOIG7;%ph{{j#fz!1nxc(DCw}kMn66M&q@CEQjLBx>F$yqm#52$c%`w4Rdqft0#UszHRs#&RAMx;iZ&rT_o2~+$8qg_=?$q z?o=Eh5Oz2g7#F|(c!e=zd0zhS)9T>*-%k{Qizy}SY?4e;l3VROft_m2-nZ8d64E=w zTqs)Khtks4ZweL6;Cti%{K5M|w)p5^9C3izYjvy5g{(O#yT9h#aI#)S&RY)MN_b3G$8Ig?+?g8^jFu+R! zY9T>W8qrT*Tl$!O1>^*`520j_M4ow%HbIcx-s^L<)Rn6Rk{PQc-NrZQnuj*2Y|V8X z1N`)(T^&AEy4T^v4#izMxwA46Xw_x2jLbb%L1kvwnu5MJAVM=5BK)7U+G_y$3-i3d z>{PHQ$9g?@5=~pG@c)BX?bnWNbN~2Ts^k6RVr=vfjvdG5k@a}&Tk>d2bkx!Os-A+) z?4Ry&9OicZB$^;YXolhi!=@WwholWh1lBg-K2zM?w6cId)%vBIsR>tr87t~25*Ky^ z^Y~Ij>CXurItPdi#em{-fc3 zgNwrfTORdPK_`5I@Lf?fubT@iRf~S}NUt{&*FJ9zHOOtE$KYq5e1P~wOBH_aVLLfk zhcJzR)ML(GsO)4HUsdvqP(We;%jzjHK^xSX^!N;)xW@B5bd``^=)aMfkclqqF~&Ry zeRV-Gwv6~d9hu}Rw3g9z=2`|rkkXgqSbONlx%WH}tk9F>m(dmih6gyGpd*47bHFhm z!U=eIRtd(xi&vxq%Sy~<8TZkw{qL;_UA9gFk@;8FsG{g#eNzHCGuNEG+!iws2j-ZM zsj~S<#e+Sb`;9`kl0$bpz_eWn3htI)X|=%Qi0s5;eqANiMMrZt>*^D-Qlfhg>fC zB<7n`CQk(AALnvUp7;$7=O29oKBNL(n1Y@Muk(2VNjhaARs^x%*c%1 z%eA=EgCaDL+NK_}4}}}_=J}`@72h?}(5UHyd$AnFImX@J8PU$*JI2lcG=$>`jZul& z|Lm3_tm>y+u-X3+^Z{tCBe{HyTDIp(ATKHm;ix24$Jbty*}@VWKSa>A{^Y?D2k8l* z4OHYBN}jv8BH%%$U13+mj!#IHQ(EU@frk^uyTLy9pdjq11J_oV$IvgM|N!Y zpLNLNn=??OaG#B9dzlv5ItpqSVHZKU2`cTES7c7KyHCnu}hs)!VTj@=pMiV+|`L}ruMVeAsYRXaaAnSW%oPk1i z<+qZ_Ud603h!ttpr=t?L#y!EZyOVVK4-GZi`IIaZm7ym3JCSrE8jM4{4sBG;asvI{w(wq66lYJ@c%3Ko`)$G7{C{rGFPK*Lpf7Vvvl&DCE`E zCt=qdP%~{FD0zms?Ci)+lKdU9+c`-9z`aRF?DR!+5(G`CrnnFIe!$)_s&+(t?h(L1 z5m$4Nu8ule0nA^b{wE5=O>NTU6X#-|Y{i;siVeaLti}^YOuU2ko-^pCZ{PiVvsKI! zwhd<&8r!zhdRXql+_A?;YV zLYM~1;%H5OG+@*&A9a(J(ZX_8r-io;q0Gx&ygk(0a>gsT&S-8~=hexv1`}a%2imP| z_2Elopm;A1&TiJQk+qYnqL|&EVV^N%}b8t^|7*=Dd$>?HUL!FlPk9Yr^9iur=j>vX)k zk)RKkkCg6aP=+VglB#-Xy#G%*WKx`sq%>QEd31WYD6^UWw`COI8Ik+SZuU9!m}R^PR*DRmI>8WP%Q~XZ7sg^XL9xoM8T)H`kPw%- zx1reEAwGc-X`i-ZF`fUnm_N*zjg3nS$kn*SgIbJT%u8S(?yOK&S? zbcD=q#wAcJVf~fqA^DAb9^%fzF=1jRd&S$UxWfsxEkER)3$NzpByg1n9$QUJ{i%y3 zAjgZt3s6>;t+Y$k6SZuQs@BxO0XmA1R_0zcU0NRD;5XuEV$7%ge-30St zGdZ6^(E3Oy)d2*{_1j%ycS1gLqO!epm=U1EmzlC?Xs-_T*S>9fkI;@hZ17=$~xMw#)vUSSJoT@3vq$6$$ z1SHu<7HH5fVYlr*@tC>;Yw6p5C4aLzY|{z=hWUVzFRX4d!pf9XMln0W*PYDI@k$u$ zVEFjTDd(x%f~eu$p#5xjN_!xwna3D@V2CW!nETHVU_OEZ9W9OOZEteDbbUrGE6H?O*a=g z6@;eH)Ka?%$a7M9qkX*Kuvl02@r2os70F)@Wh~4sR4aKlx7qHQri2LVTJ9T`4g91I zq@rm()j^3@rW!-*B!CJNbV6trgO+y5wjFJreb90i{XaJQ@Jyk^uqX5KI-3e*8IZ~N zei$|kK&t3+f>8^J_$(^fthvrk2Hhu7Yf}pGl}k2=`V-e_!nUh-*(2{C)z${>BJ|Td zK+7a!iR0i^L+FPZ2bnum4`_h}s_Z(X=Z$Z<;b=hP)qjCoNrPtcH8EO(0uA&6A{1|T z-5k{jcHGRp-hafcMrxlYzucKS*?4^!5yTSp6DCz<`+ue7QWCAE>>^$9m#Kq+hGb>r zbn)qxu??#P@99}k zL|XJsxUK?CqGEeBqOn%NS4626wK!xY0QYz8Phy9HmF^P%GP=)@AbhFLE2PE^1HkonDDCdqGU#x6lShvM3+~)24vmm@V|ud0eLV6+J=TSnk0kq zs4)|Yjq)p!TjjNC9R^J9dSpI5S(jqWRpN!JD~S4JYR;~jK$`P)xO6G!!*KTv90G6& zmA|6OU@gKYRe~(9x;!q4GXpvz^-nt<^NCrP={V{UX6n;)C$eek?E~}k2ag}!j>q8s ze}*+i07>>ATgZIQW)j!c7}iu}F(R#8S}ZLCC3aAcl_p7^DKRC$zqy~BL_CJ*Er-L@ zM%7Q@{U2rp>4+;C<9t{na)VANWN$$9M4%?spnd^v$Ykf^%{p? z7cW5N9g6WNmlIWTY-Wyhg14E@xn=fgM?$YZEs=+4BpoRRA6@s9?IB(879EpRb(Sz; z?T<3V=je@XK=f>ut?n_N3J`&@iD7eo51?#UfLTIwFqYREdvg>qE+Rf*9S(=gXy;P* zXz9wCs4967^@6tm%NZYIiGn0c8!|YD`3G>~hyK|yOlb^gDCXq$0ZrGDMu(^3vpo=m z%}WE?!RTYwlDYn%Z)BL)t0{Y{XP3J zg=skHoc}bp=qvWs%$D>-H;CF;g7i#{85fNj>r{knX_It|jbq4ciw}}E5Oa)mX_})D zV^<&MNN^r`hY`vy!iOXXfP@A|*y%798Ea3z?~P4=c^7{9DPjDn`{Dp#nahW)gt-d> zI4+D|nK^Z7+W#r<`nEq`UqDVG9KnRHmVDDi6Qrs#IkCm7kN3gASOvV@j_GLi)+uIG z_E44;YLAv#tCTuqZooeDnn12~`gt}9Ece*Is{e-lET5~{!%mutv<3%zYA*Il?Ea%^ zOZH2@g~m~;`VL1;{2qE5p=j=Sw>Ah9j68d_2%q!KD5D;7f8g;v4v+X&DX~KQ3?>{~ z*j5plpXoQGmN1SPR%XPb{QzM14ILNbO3;-~nn=v>p6jaEerf2EU>Tddp6A9KwdP(Q zOaVq9oggYH8~UB`2hSy6*a=GdbRHw#Dgzf@btl;KVyS6j*!2y%^hzMpe#zU?ixYBV zP%Yci{Xj0Z8*vI3!op^0S*{518_X??D5NFSS_d*pomaM+QlY9*b-?RRS5xX5%y9l& zmI!r&Q`itBpW41=oc*o3ky(}m<1;fn=M$$lEtjqN4Re8)6S_t+`$#95lgSzN$uNL5 z%f_qf^2uEGY%CA&8Lbrok%p9;&jpc?W>4Gk?=)^9)VPx!?{!;OA?vhf8bv6h1}{L- zUt1n@nb9P4Di>q}mD*&nBwjk-Ds@ddXr0mA^z|VT!gQ$SYst&xMLPN>*~G-#?g|yI za-5!KghMA6$Cj($Zp0;Fa0<*>FAc`)YO8zv2^<9XV7C?{t_z2mfuMHYYl%3RWoyZn zzxibT-@_EIz|YHN1h&VN?E&Kyc0_VNZ6n7DI+1>JpLzxpu%JN0q4WAyJ(&@S~^w8 ze{*1>8Pks9^qom@3O{%ZlZoKM?Oa|?9~O(ISol7Tq5k<^Pn2L4h1Zno|4MqbFm~7u zg0xLfLWq;*pYw!FnvIGo%G3*t7SM|9VSomKJ8xcDBapoIVO5OHi)#T3s9fTC=Q43PxG&YDMMe_^7hxp;V!|{tj3amW?!DZI__*Z_+ z)^lNxD^slf4NOAfY0&Ze3`XZ`_sK{8n$dRUCt_0o9Emi)A)~mD4Z08how9zM&rs)D zL35+C<9y=`___aqH5yJYhytgKp(RU-I$%$M>{-qfjpbQcAA9_AN{#u*iMypk*)z=u zca~4fkC$?8lnt(Tw(JjbdMix=WXYcS%!Cc+JrbW~*q;?@V8}m9V*FeM%iPJ8xEmW! zvE~@`TyuGUxo?3nXj4q$*mIsKLbGh!@`FENkSknacRAv3Y1LPSm_RIK?gM*f;x|%2 zhrW;y!!-KY4R~S~Z?ly(gu8Rfbr4nyFJ8nL_5~&(rJ^h{z7Ql!msGG`u(D5BtaV;b z0($*%r(4~wNSAeg2@|^LPZ}k~$(U!yA$Cv}ck)R3zHusK-|s2Hf=jZ!1$2?_?|sG> z3_bF9txHr>yyq+}5Hz!4z>;|iX73lPPp4WiJXYUE))!wHa_2;^u!Ci@EKn2C)pZsS zl|Z%Y2135t?}V zZYiZ49Z$3w=)z@5J{rLf5_5{q`tDybPS5yYc;^K$x>X2BLBZEK>S>zb>bbvsjG-p- zTIMFptYs!^ge8FAc47zB_%UlJVOzEm&`<_jTM`=M#9Unk%MUDk#k*Nx96ZK*6yUc! z;gmYepTf|^VsNz|q8)qKkQV0nKzoDIO>9hVV34U;;`cfwVL7*f{n^Tv0h$8kOj4oE zdH19UUd)-lxv>Q$Js&Tyb(wb-KgRTSn92@Xyi-nv{VQ0zU)QOV1Z1PrQ)S)Tpl4f zzqpdv0to2+j}HhA=+t#COsq)HJ6;mZUP7|Qhpcj+8U1ljlk%M`HC(>OqfDhIX?LKJ zTcJr`l=X_S<|Oq#S7}wNVN$89thVJ%m~Iaz?7FS696R!f|WBJ5oUtE*e`^U6MuWM zXFfSBOf=DHeZ~TLTKf#$7CwF{@9wKwWuEt1sK&)ruWiikNP`u&bH<?Smy7a<_ewPyJ5OVFO0O%(+m z+2U8c)iM{&_}8YRVie)fQ|G!vj7o7E7j;<6oUoQn##idgIDA3Ip9R;A=V}X-$3j0u zF$oxI1iZwx6IHlIsn)ir3sjD%M>uIm%O~{&6^OmR6oajMHvh0;YbM?)bk)*IV9Oa5 z95kQg<;MzQ2b#B!l|I8Kz_6rENRT5yCxKOqXGE>6)$2t`({vnI3bC_v7N1T9*%Mc& z;vsq3Q@f+VI&eRaKW@7#WiKj|S}UKO^hMEDjNMZ?$r@ZR;+_E5(M~F1+KmUt1HN4l zOSpsTzLZT5#Q#mEP;2O>c3R8KX7ITCN9O! zTie_5@&Rvlc_<)!v9lhA&84%PC0A3%(X%8e%E_F!r>#-s^OnSG=c4Bf*>yLGt?X7v z;?}f}E>!>wz@ZJFZ3mOy?8AZy5-1J_VIQjK@#SZYcl^Am&eI)sZJS4aZ{LR^s4I}! zxUnYc*FJ0VnosoeLAdwBOM`&jKo)9b^u8|5kCY;?(0Wre_@CpL=DVs(KB9a5SnJPq zPL6*@QaTm{?>1$(!cY!k_8Yc|bnQBEYd4rHZ9-=gZGKqi=@?LH##PmamNLQ^KupcJ z0CH(SUGClR{*o?@xjkeFc9`^GO9B{@nppfRX$@;A&+42KcK#Q{$U9qbAcFE#}f zH~Gu_b)--Lbz!YD*ByIxMMOx|Jm|k9X*^})`>Ww-p+UWMYUs$&9AwH8iBC;%y~7z1&H+I8++?_=aBhM*sxg$? zy4sZSR{ua>?o??vNJgU4F@E)KIqFV3?6dif%b^)uC&Nx zJ>Y{}I#n%mNmryt-*&Jo16oV><@~)SzWk|=Wh84==Z@+zGjr*rgI_J|A1N6aaTb{F z&p^>BGS~e5sJ6=P({Fv|LseT&@?E$8O0yTI-g2{%usNAP^cB?ithM$~pladYR_Cf^ ohcec|+SK}Z*Z6gB8aj0$;*~w>N=lRb`bc2<|KEO(Q)p^$JMos=MF0Q* literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508162002-Config.rsc b/MikroMaster/20260508/20260508162002-Config.rsc new file mode 100644 index 0000000..0e5d2e3 --- /dev/null +++ b/MikroMaster/20260508/20260508162002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 16:20:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\ + \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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 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.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 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" disabled=yes \ + 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" \ + disabled=yes 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/20260508/20260508162002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508162002-Diff-Config.rsc new file mode 100644 index 0000000..33fcbc8 --- /dev/null +++ b/MikroMaster/history/20260508/20260508162002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0