From 4895fe8bc902d0ab946be1b225863caa6bf0c85a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 11:21:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 11:21:18. --- .../20260507/20260507112002-Binary.backup | Bin 0 -> 295254 bytes .../20260507/20260507112002-Config.rsc | 4613 +++++++++++++++++ .../20260507/20260507112002-Diff-Config.rsc | 18 + 3 files changed, 4631 insertions(+) create mode 100644 MikroMaster/20260507/20260507112002-Binary.backup create mode 100644 MikroMaster/20260507/20260507112002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507112002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507112002-Binary.backup b/MikroMaster/20260507/20260507112002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1c730007bd93e10e2a14adb30d92faa3a03f5f52 GIT binary patch literal 295254 zcmV+aKLEh*sF8D4fdl{s7FY`tN8O!cK;hm-Kk+pH000O80004Z`T(2&Lur`uXVaV| zNQf9Bf6L1B0$pmBP$VhG&v8z8MIDHK7e>3(N~USN!yn%+J^qIfF0rjtj)99^MVXz$ zTesx7Cl|Efdrjg$3s4SwV6u{6V)0meqW1Sh6q|H!cpib_1s!)54D90}1xX+SpI@ zEs#p|7oH@DP)*g4R8vI}+HKXiY4;zB$Wu0P$zv7nsX9mShRkV(@9c?6a_wSUW@-LT z1Au9i{@j4|k_{^W^+MwCCI6BTC&dH&UJeMGgW8j(Tl?G<9xq+kG>{7vGjh7EL6vF% z3-yg}(jHZTD^r*TygDN<)Ml?6KT@r<1N=-1)+Qp?E4JA6sc;`5b>x3pZ8Pv*%K;>p zAvgk8nQoT@!ngdJ=&3#tE#%gk0Dc#Hs0X)(avC63!@w_~<1cQL@5rhcgO&;AHN~$z zqoKD~UEw85N0LBc(n%j7dVg(3O#?BB$bt=4Vxl+Mzuu_9@9v%`+bBgnYAZf6g(E4L z+s^i>zzxv_U#*&jezYWsQGWCG%5Z3rNGIWkIjRqFImQh{N)O5+&SEj0Q3byy4@J8@-^&n3%)ZUuK zbTAlktJ;kVF|*c9f4k6l!0Fq)=N3y!F=c7E8-LMv<7zhENAPP}R#VUB4`H8Rul9I% zEaZ{f+6Oz$$EE2_PRp>}$ssn~fEh}khrr3|5%dbvI$A=oDDK?B50Ieis5CswO~_Tv z8A{u#xicEn2OcU|s|nIbQ5yez{sP z>JV7ZiL-Nn(5mKj)>c&bcW(NlbF@BDa?8w%Ok)NVBfx-bG}*BU>TOVi;#lHgKzMCh z?`pRu;nKS^3tPDKM-t&{d()J!vb;}DH(i!n91_ZOlB5A;dO%d2{OtQuu#~RhMsoR_ z9{damslN;+8oAKDY#>JoURu!{uxTQ6T5VwVP#psZV?D)U1Sh<+tCtP|&P29EuNhW#VbBK+}IykFENNjUkei%4}rR51^FZ88DY&sXr z^)u8RN+r71f+%ForPGvgL^7D0A}BZ@O5$uB`2T@e;b2$+6RN{qf%Lg2@trkG&)>aN zj~?@}^dOY}{9grwr~T}N?LD7ueCgq?tPU2qFA*%iKup3$N>}r(kcMYb!XzHa5!avQJRTo+e)7Fux;eZ}F-bcTI24n*e-uq@(wTl8jK&DP8(rhzlP-jS3Ff!BoPq8|QKARvT zc5<9l&J%E9$LYlwb1m03lU0vi|DSxH8YM>!i1Tg09Q*u!$IhB<>{92}<3WBkimqlU ztM9HiiR5!9*-)Gs!ZP#>!Jg9nX1ftWujI~~jO>wOBCgQmQS%O`&QYQYgCZS-H1RjI z?2%bp3ZxK>o$~+<1E8#VJoZpBk}e1^Ny}8b$2xTK`_**{WVhVKN|}o;`*KXba=iKJ z#?z7)Z+nd8nO?&J3N=7gRfm#jTKiuHXj1_$%^2QEO2o72A8=iOjEc%f<%Zu9y(lIH zhN3QhTrdhi5StWfCFsz#Q!(XKja%8$3nxDu z!+YQ|`i*!$G2`|4Ua%dVABryB;W2j@TqkL83}Zo*7{Rnvh@O*3U54*7 z+&&a)%BTL*vUa|cb?LDkHi+?i&M3-nd9OJsx|^Q#L@XQWgkh~ZNA=7Mujyra)E(@W z3OeAs_$L}ssw8F+1aPw&G+O{@9(wwyRYE5pf;7hj{m@oF;CYhkxp_fvW zpLG@l1-3IhE0~trcn6v~%xVT{A^5i~bbNjWGa)~+Q zDdDOPCz%g)7^AK-c7NC)g*^pXLNqw4`UQ~I&8CRbi4mBZ{?H0f7`UX}%oqjrPW=k& zVbyUAS_ley59e-$?QtFAg_md= zdg$0e&fL%pPNq;ThcZViI!u?4*nt6k5h4C7?wWv91TEv7m06i0MN8{_k}ryKOzb1|WGLXlZbe_oTn{Fw^aLFzpx6R-uNwOarX*HW

C#ORWKt%o8AOrc&owF1c)^dXNjgx+VAhs8T1*Ie%Yv5n*8S)Y=e=qN%=2CF2~UoVm8MK*eZk zzQaAO*;}#1iPRFO>W3WRqUwdSpWikq5^s6sm=z{_rbylYA|2`*mrp;rbK3-_?DINW z>$hB!9?6u^20>M^Y=Ly_B%5X!(;Dk$T1v0MA+VaTZI*y$oixxf3Jjb}F z-5J=tGIrQ>wF*6ZWKth@d&;$cOc-e<`Gt(+E3&(==XD6sE1gwX66u*hr4|6GDa~NV zgG)t#tgUHiW}o4mz89d>Qvc#N9e*TlyGWhB7Q!8{?h1+B;3KqoI_~ES=@w4+pBy8L0emWm16)8V*v(K=cdt9~Hi=J+RgPeA?-OVOcKio>+ zZtzjkHZKr(pGa4KoGyb(qpN~zCeb^onSRX(= zZUdSJv6@!(4CW8J0Z>kU!+FcQ7e;7=c|U0ZCgzzJ#ViG(PZCj5^is)ElC%iMTIr)H zTzlrU20o!q26Bn%!PCppnxS`p>Itc4#qxs#OyGzB+QtO4k#^fbq1S5pC;HK0{ZI{wi1?nCO@s6+t>V3&jp}nhaRKqT@$>Q86Rgz2gOql&OE*J8 zRC2}7XN1^s>3FmeY`nJYc17OxDpQE{4>Y;?Om1cPVxSJi4t7?M|K0;ru~{MNVllts zw|aFi-J;*84mXDCt(tk$@hsa_&|;maXg%Ti1RdCxl`#i_=B0d@kMJ^!hH40A*8BEF z!_p9EjdAs;=Wn&?O7J>LWr9iU$CGou+0~r(DEwE+Vc>}AAug=O9Bc_xok2@AOn2B< zd%^Xy7R{0}M#)y;$ZVqVz~xi*z^hqy;{cdY47k8KJVN&zTp=rX7%9ZR&*`77Gagun znkv%bLqF3xKHhF}Arm$? zOT*q+(tG(=FQCN$iG)Is6UX}px&aK=BxORG%b3^=a>ap}bZ!mY+g+UI;`Y;NvyM3T zmr6=a!V|G9LtVzEq9_}QA|z=EbX6^DvFYwyV=6S)?>(_=7_JojSr75Ng{VXz^u=NG@o4wC?-IQvo*|HL+pN(X zxEj6Ue_BuOGq@Wkbj&cD&)&N2!CECXz;P?3JjVCy1Ie(c>5?>>(Q8A~vnWYOjRc^A zwl4ZW!iXs5=VY>*3;AsxSIV4iV-o%;OZd@tp$Dq>YE)27|C z#3X+-hYW67ztyCxkdMNmkDN1HWv^wj!vUk3`ZO4D2|9FCbInQTmY)~*G1m7atl_?m z-q$@=$t2y>BAazrfN_yOYxkh zky5}O9?W`EjM%2B5^*0Dhjc|&Yuaj{8QffrK6F`pSP5cELBC*-K*7+2t5xWWm}d`O zA({hEIf}{J`SPTOADY)Khkp+%Bs`WTeh3M{V)3}Ju@^TfY(8*`dvB_AJ}nZio#69< z=Z=D=VbfTu?Fn7i=kKAzz<1{#4o+}{+X5F$&{t_w3nDaoPGrdcOk?? zmnC)>T^z2Q3oSP45QyE_JbsF;=ui>PXdfGW2E#F3`G!8g8i&hHMuJ}j2H}E?Ky*n` ze_R4WXJh?jIUA0c3^A$1*gF!fDmG-09(}fts(L#m>>cPFpq0l!g^Jzs?rPcL`(q9e z_+$mZ@2DGfzxa$IqlxVAqQtiJeY=j|=iJ{GzRDFl@!aA$Jg1PYZ!PZ4G2e0+NGx_HMPMp9Z93fhCE|c4y3UoZ-z=smC5Kl}o;rU=V$F z%T{J>X9(vo^_F$(-Tg!gi;m}7BI^@Fn`!}q)ABC7tMAhz{9FPkkev!sHW|02b?r|JJxZ{e_@@hpH22|uLCy+lATLz&%}ck$=^TA92nIzhHj`x?uxUqks5QT zn)|5s2~~-BqLUy@x{oNEaybTNlYWx1RDGvcw)#qM_g8#Y6(|GN{)ZoG;DM4q_!Yp` zBuZ}T<^_|=>CYlGGb{YLrFfaU{Jlmv09-jqs?iWwk*k?^;APV95wav;0j8D*l3S&G zTGS5IM?0PZBDJN$c*1BJM(yo}s?IwxbW*O>k0dK}&c_;@Qa0rhtX0iefwVF;=Z~;3 zC)3e`KYxGuja0nEa!WF$x44}y)vbgut_>|Smv}g~T*iPvCdO-y+gn(sL(~$>J`gkF zB2YYOS=NY~am;3#N%(gxR0i0AjmLPYi6aJNWUwBx>*P;BUh*i+7+4qSzq@#Mtt*OU zj~T|pfH3z7F6S{D-?wyRV(#+fOTLwSNqV6svRYJS5{lh6K7$^;hER1=v}Lw*f|`xE z;Z>T&483i{KTW}sSJ$;HJk9AO*Pv0sbkHF`&o7Yk z-X5y|LF6zgHO0v|Tqo=tagF7Q-i7=eeTpt(c1BwOjyQ7D?y|cTco3 zGM<@WwwWHlx?DR$>3HgJtUY=E9a%m@5xVq9_6vxVsiqs9GF=}jJI{RRU%cAxjgrHf zYu5PC_QCdM5}mKhp^ue9wK0WP^k8TpxU(~Xx(qxayBVl3A>Tlnrq}>Z^_RKIC{!`9 zD%e1>nr+(};LxUxRKg6|pMk4 z5@WD&z=xYzr3vl=`FrG|M^Tc70T_+1bUk^P9-h8b+PK6)#A~A@A~vA2d$#P&?ZVa( z#t_DVO_HY_)oKDsIZs7lyWwTV-rJ}tA_O5Gg?*)Ty6dQK+IVPM6bx|z%K`Kf5ig~P zTj@t)1CFim4@EkBN{EGwv0|p-WVeR|wCOc4UOXdp5%O9lQNVfUNkBOB%82!~1dqG* zQ{q6;@p7ym@s}ZGojhZAsgl?4dw={O^SPjGbI%)$p zahxbgSJT5No7%pSkkzP$?^%Y+Zmy+d;qxozK%@sbBY0_wRAaPHY^ijO*{tlq>K{=^ zH$1wNHBCvQH^vX#L&;Gf_eoBvMWq9kZMf#v4u98T1DBX{_+?pBZ-T{0pH*+;^)^wVurgi}WcTzeWFL|-DVgOKzD>LbR% z>X9Ri#<(`gw^pMC61%2$6f~+lrMha9cDPJ)C>2nY${J~V)Ui5lQSm`2+N#%2U^-)S zI`6fXb`}7#k=$SI8Va-Vsfg*&qvpIJIn~SU0wG<>{3lBa=F&>18buu&7?0Om{8;tJ zpRsdVPC84`l$C%+fWG0%XYeKj(zOA$2Cqd1XTv=nE2|6vw?1erE$ZDl+MNwB7>>*g z7GUKBbkN2$bZv3M4Cyd^y!Ca{bQZsG7}L%(*|;$fC$2%hq+l#DvT+I7i@uS-hsjGX zE0gzud3Q#RsbkQ(u^R;+QEs!uou!BN8LJR*i6rX+Fp|qHi`_))OPWG&kaL+uFmXWPrq2T3f0ufUh6}F; z?@-Z8a}suH^5xA@ylfAW6+uBdC*ZeZ1UHSV&1Yn8=9sFWk<2;~u)8R~gJj1+S)U%Z zm7k{un!cIS->;$O36OR%-uJ=^Lb2==LgTkIv{Y$;ONPj_G>6}(mC2&^M*ka3h|9d; z)*MBMd##eoo~IFVfK%j)Y!k>V!ZSJmB;AWPDsNF*y3Ym7{pGzf1TcDx z*pvkqzrFaFmuYTAJAj97(04uuomb?C(MBEVo zK7bJfah7;%MBAHcUuZWyl58T&{&07P_=KdP8qoV}xEb(Y46V{-bRKSuxI~o&j_?81Q+OC{r`;d{ECt7|Gn%ac4-2fmw$|t|CY6h8#9gWs$LN@4>Yneyd1U^!Y>8U+R~m>D=n1 zrLU@wy^SbOtRyjW&ACj0*9bP4vk7YOOhB(Q(=Kq9#Kq~!xaTKN6-M@Q2c>`UG>9UB zmrW;}q!0am4Pco$yX=d3<5wV`H3hbW~;dxveNA-Z#_iCzjC zUe!<2PVvgi^$XDjZ;1yx?Km)3Ap6L-0PV2D>E>QoGghl|6z-)ck`V|x~Q60`qKI%jEat*c07xyGC3-;D!@Ta=ya$$JC zjELmMye6gJMmX0_R=WhSfQ55;()$56p*Q?Ejs@(5B20ZWX$;%8pJj?&%||$B1|Bhn zbhRhHJ{Mz4W^b~)vAgSXtTG@wpXH$Kt%CNPkRahOrnXFUN^MO!e%uWWpTUN((09a^qNWRcovr#@XcaP*HmE|KmpQ~%^ivGB0qYb#5d<_;Ycf#kdA|hX!0;p;NX@= zDSR(KlWq8*p0?mSW|NALu7+47kB%0!;z2V#!~E$B`+i0?baj#Ua$?Y&e-1L zUi7$Mpa@)I6~9c>oE6Vpy<~xWtwQX%WTE-9x5E10_aE^~frol@bW24hB^FZRqIQoF zDZYJJ?0>lGYZ&)o{SCk-)|6@5kpe<~Zc+wr(ecimn~IQ93|u8CE|~}(s#32p3<

n6h=jAtrLlA%cV#{Z+kn;kS>2(Hax>pc<=wyuq%hh3ck06-*?e z101OSymksyVJ0W@yx$UjKG#^B$eZqAT=BHVk8Gh(18d8m><}_V*&o zyY4zj{*!H!pVS&Mv8!|?6?FVR+uBZm3x#d|Q*YK?>de#tx6xARiQ;0-`c=Vw8rHYw ze9TFeKUWSHV7UF_bz*=V!|jVPb+RF}&}i_UoE6=j4GHp8f%EF0qt0bQ11O{aQqSUPb}XerJ2tN`T|s~%(?G?uh1zM4T|$i&#y!vu#gp8 zn!0*hjneEpad4*7y%_^u`ZKxk@`((*YS3booPY;%ISy+^8CQc~!k-*EL(zf{zH*qW zY=un&(-iX5z6V+-Lej&-z3>tGM52|@rg|X}lsGy!veN(KcMWWLebtR2vnvNsS?Dfm zvEQT70&v%=;HML(TN8BKj$}!aHjbzNg#kJqx%<>3%4Jx)`+ZzI%iud?dFk+HRQ})&=FsOl2TXb&D?_%8%s|-q8PQvFfrKGg= zFR5&^yuQdSPXry1Y4=NT;q5A7N3dG!iHA1fHC-}+N~G22uTWH~pRo;p;9sE%TGd(NWYDgMt` z+3WTBs1`n9dHopIGAdN|7xTY(CEPn!tWlgjD=I*y409+uE4Z}7co~OLgYxrYcqsOo zD;Q0HGgl|Oy7`FQdhp;^KR=5dE3ZVG@)bH?CLy>dUeI@^RsylW35|iV3|%cgFzSPK zBD)wWt&?Be!bh8(@0;$xb zA>+z6C&*;OkI2b>>xxt}5_&eQ*CLSWm>RlJ&H;2zpIDSU;2YG^^uENXOW9%cD$3UQGbb+Uujc{Kw$UMk?+hpmgWR0BKT-A`1gV#SQ+MtF;i0ed`*R zTeLfIW$xzES(|yo1rFk9ND4xao>KhZe?F4ak>|(;@VRD%?s7}ptKLTF>T-uSjF*h?zXRwPDun%A|w9m!};0urXUxwue?h_KoJg2C5 z6VHoKn5Jp&4=cd)a#O~@ebX4nRZXim4VC;YcG-+*`Kt@dDWYqXewd$X8d96@B}IFnrt)p!>zA`+-HL) z-PsKeMB!W#{Ty@hR`D?Jaq;ZD5<}#g{+VR{p}CDfeBoq~r+*boY*Kc6*mOoHv0;md zI)zu<8%I*eRO{pI_>{R?7)t4LT~VG+dv|Js&OIZMxi;Pnw|I)fv;x^}8;0ZU^-4^U z0Jg&W|G(Lp52seI&wjc^&a2^KltDC;GTC)v;KJMescqdx=&vHK)K8sJ{(Q_x5S2?x z&Y^xfm8UrNb;tj5rstXDKOGz7a>ETKRSncPOE;uXy`C$%B?|iU%;3f zKkxhUj9-Zpxj;I!_|O>uvEkVh04jkE7ufL%>czstW~Icr&8_0t83NdGwnyL`qK77J zPAV9@{-?jdzy)7>0s3lsI(90rqR#htt;~Rkk#c2RDwwmM?PqhiA!#p#tn28oyD(Du z#6oOpWiaPszqx;I278DO_d$lOB2K>COuI)L0UJJLSUax#m`_;Bv64nz%%VGBeomE~ zV4FHHyV~`69Bf7O1Yg);uGUrP$V63O73JZXd;X_#&?!{)&c9@_t4ShzGA<}(Ut4x33Z#CmiwWxZJ6aJTSGx#X;*RO5 z9_m$>$6+u3iMajef{8@Uph0)A^FPJH{})zb6$rXnIRSxYhLH~JQ&RgORm9c1z%>6RW#X(7qnR?E{maoO@{+nRby4>3~CFZSiBLHG|40Pbg67&j8Xc z2%gZ&C0hZQeGoe`U~r6VtJ)&$*eY$TsNxINFj2i$Z0HE%t}%Lf-g#EQfBqoM;EKt- z%B}aC>>Km@HdCsYY-&>MHJS=R9)Y>{42TMUWBwp8s<6h4-b;-YR9=YVsMcs*|2yv) zr|dt-;F<-3`=MhE0|{kR{y0~cHp(dC7|dvc_J$w9cM65Q1~ii1N|x+LvPq*mr*CH* z9zVWE9<}E;)riGW@dFD!bVH-FRgX8*DUhT=(g*WNM`?5xO@*V*(Ke>r!JuKLV^=ke zO2~E1bfa3RUZRWoS6n+zxLH04_Hu!4$W}dh3Tr<5t&#=K9uQ(dyH=(I6S}x?sAzE9 z3tx-!jVYKH-du_L8uHF^Df-Qnt&>8)th3O$l?Zg~#i=b)zYw9cd_iA8e+tBUAL0}k zY+i-;KzkKeMNrjr6DSt;!f=f;dTBh!TQm_KxEjIQIxSc(n@6<>@G77<1%}~L$25wd z$R?W6Cp+?0*_U&sfOmrpxAfUpC`-&4Yi#7gR3;pof$1aXO=cCUszFPRYBE9A+Ph4Q3_;^s1!c}vbu%FkFxsq6k8SFyU5NF9~ z+ZNwqcQ*v{P=Q7w)ROg!@$lJ#l(MD4dx#sY#&D$MPUH zR85@EtHxdMQO@K2I|AdGT?!0-O|tPre%kiX!kbhh1I zluTJXplsAI2s$r9RKoXzEUbvROP=D?Lacaxs)$c8Y{_$NF|H4ImQjdXVT!j77SIId z6OIv$7uPRWsF+%b4RTc*4roRrz%@BW*}Ll?CH$6d^`8nqi$An3t^M6E9x6Sx>}D!M z_kT$G@17NAig6PVMwA}a+1wrc7ShN*w%}li?c7G>7Wm_8?lK%Ia)@{Vw}?iwkl*;6 zSx$Zh^)KwJofHmrSaaus`;*|~2+)M>dbs6YHUbRdJpJXV+Lz5=xI_7c)0mweF|i70 zU2?2ycIqNVv<;Gex_eqRCdn^3tOPZ1w-4<9nYSp1_G4=~Q&)_s z^dCYTL{!b<{OdH3?_5MZle4I2dafWb+5#P+Umc7>A#uds_Zw8mdd*XL3~{+@HCXP1 z99p|V0kW>w%rc89=#JeG8@Ee3r&piYw&Ua{fDzicq3yWr3E%bbg#%c8rZLQdQDBpe zv{P=*L$kVantssV%cG5)zJZQBY27ajgF+cmeFzP) ztK@+mlipVXZC0S9AoM-I2!HeEb7B;N4R{pW?2!MH(#o!so6lOhiTKjJQz^yhIpZXold)-=K!zK1A||W9xk|0=p+^q{ln%Tys13~JSVNTG zMDVBL9-tad0;xyng7_n^RC=8-G6u2PaiwKP3ZQeDdX(IY_=_jhtI;fT30(9sTkSKZ zo-gL%??gLr#U2UVAM27$k)$~g#&eS7BBrB>IPqYIcWK6+V=u`omyAE~2WkpaILU}r zBuNn9FXJ#^h21!fe~$kTyWi`~A=5gwAQe6^BG36N-OXxGQQhk4l5K1WM^ak(;MS8x}n0cB7`JG1Z{L+Py%+++!v7%CaA%XTT` z=JK-(H=-j5V%D9dHLww|V_Yw{o|XUAd!NM4Q9|J8(1jW?^(ZL&@C~fI_sH5lNwJc@7ygb7B5$|HOd*;QlB^@urp-<0kq0? zi;PK4LSY?hiv6+BBm1HkHtI)kq4gmMkD0$IlzBsiqJ>jUoTP)cegF3X+IC%Tn#|Xz zSc6?x_Wv3e-basQee+#_k9BdPIF-(Ov{nnP=i>za+_sNx2{{Tw{c@}IsJ_kdM!)=L zqPTO@Dw}zyACUcjQtdy8JKS+xqM&(w3w;^YMw#qq!_NqwEQn_FJAv>ZdbStLzaVR@ zsJCiiHgZqc)^H=MvnA0>t|22hK53(cz%6Cu>}m;8+{z4c>{yhG#|PD)@T=~WQ>CBt zQK(>YU4C)ulr}7Mm~mfz!VWOF>BI10{9i?|4@dVVGM@6v&xvDWpkQ3-OCd1l&KB$cG=Z zV|QPK^Oi?JJzGc%y;IL~UB}XZ1~-UVcAxX`y+Z6=E5h2*j{8)jwvKyI;>nnrzC@b$ z-Uu*oMR6s2!48mEMtk1}A)UiC1Bd7^zox?&xcu&+uS_Rd2}y~hd^SlwO75{RPHRk| zZq7(OPlXWH4COF3uBGFOQ+sLV6~UGk*OXaa81?BlGFx|0`Z^7?ad~ZKwhHWAX&7K! z=>zkcW{ezO#QAONp{A-9$5A)Qbbrn4c*|plH_77u@RV5BfT6|Cn7!89xKK6MRw%!x z#LN$#!CBpZk$2C!7b8Zso5}P8ga!LdFpt1Hdjd?s+Ji90e!TL!VY8xYzS0h@FS30% z@#4s2t8c;H@{z?%Gz8CmXKWhzHVLH$JPd07k$$RO0Wh`t4;~r8r)8g@ng>f59w7%C zo$WC>OuoFuM`5vhdD*PoiRwu`C=R4w^EID3x&B8c!|0)Tvqi|2Ry0Jl~I z+lj9Q7`qv^XJ{qy28&o7k6Yg{v-lO8 z|9;+4gy$6%_?1|0n<5JW$eR@C5?2;p0PWWLdzC#P_m|mx=F7}P8-!Dv(4fX5eEemHXGkcb8 zvWD3uS;D9kHVn_op3R0tp&?C&O?B<9*(CIsCfzIq*TdP(7L!S-O%{{enGmjR$y+Xs z9VjN`i%-g}nezLNo>#wA0o^RdbYbL^0k)rr*cFL*auy}1|uUwWG{rgtzuVpO8A(&IgPFW&6vjD?f=>;IE)_}*a zAI0e7ja+QaVT)ZAgoy%k_|LeG_ypF>R#%CRz06=t=E_GbyGEPRb4{%4uL`Ce@$-jM z(~wbGLTeOa9fWca52CL)+F9<7T`nQlM|0E$VyOYuNGit<^|j zf4_2Yx}t4;rYYlQz5cf}A(2V_?NAsP9>5%QUq7?9ScEtG*P!5X3xran2*Cf9iQ0EA zk#|7z8w2)66sMS}(aSVv$1`|kY`})W@Do^`(Rp*wLg6f}x%U9p=(WbhEbIj{yaWFL zbN+Ix`ALDe`bk!UrCUe#mSzPLeCK&<*NZOvIxJe7MqT%_b1bAr4i`1Qu#4Zl`1bBC zq2WolRvzyA(lD{C(syAW`Q|+O*5wRGeOrmC5h5)1XP<&(?rsJs57VaCu1L+e;g26%@gw!G)@X&tGD?vdc0m-Tmr=Xz%N<}c7pQ-IGg2!SI#tQ2a5K zYm-sCB{1gUdS1bOW_{nWRLjM@c=&9=3-HwA>_rL}_c?HA?nyLKC=$G9!CZ5U_?jky zSs(Aut>(6V^s3F&WlC<#iN%Ia?gU6D@ln6p|2m7eQ3=@K4FtjJ(DTC;ZwvnyF**3m z?8RH&Wnh4A?V__!|48YCE+E%e>%~0^Mckse&sU_bMe{(i(GSJ3gTI6LKNMq z@f8NTX5rQK1)BJ0iT@-&(g!p9wugBM&rC4?oCO5@LlZB$XY9DyihBc$=-8kP@*0eS zQuj%{&)fFLZ0qu2YS+nBd-`8CGX;O|N-I=r})NH)>`^#%>L%NvB-E{CvWc3Lj7~ zL`nbe^+)I$GT^`G!2E2&Ima^n#BvDi(Qsfr2-QevYRmnyN{DQg_n0jQWXbd=&dP80 zPAiGeUgVrES^S>Ly_4Mya)9Xln^47Qw{g-HmdGdebqmNR2;SZ=s8m_#%q==o&9e!v zf?CYqdX=~2+k9&gp{}Z^kpRwd=K1O9gn`r*gkS)OjM(5ORE&&m%EdN}oDLOAc>@nA zK+Q=wHumg@DAIQ?PHEgy0SXPultfNrQR~vw*kWhGE+TC8yTk)!^zTXSrLSv~ zqv>H>-jBP@mC>4$>bnpU+o!5XJC;mk@?SJCLrR$}x9Ue)p2^A}XGm5fR+i(Y&G@j@ zuD@?4z@D1S>ynrP(B|ssRn+UI; zjMn~HqiqG&teQniD>0nMvF?_*0K_}wK{~9D;>g}7mxVBP6>CII0whk*uRO5zwSaj6h4s zTWI1&5^J2Xc7%8xVd2`Wk#~k~Vr2BlczBxj)H^|qSk7$#m1zchbX53^%n_2q z)aJi@WyPkK7t#7W=L&`j%B!!A;I3JX?%ByiIhj~V|^Q(a*|`OLq(f;3|)S$be#C{WwA&C zoPfm(-X7-^vMra!hXh-*+i&t}c=kzb^uu!C18gR35oNq0L4a!VAsaOoPyEgtZQMT| z1A_8HT@9EyJ8n7V{-7RU?C*`h$a;zEoAfx(F$Q`}q;;g+hN{?9K>hag#Uyb-_&zrE ze<0Rd&)SA$d%z{9X@JiXLmUw4ZT0Jtq|V$& zGf}YNuDhBiDrqYKM11s7aDdB57o3TS+Qmpz+%Gv`Ua&(Hp@d2^^Gnd$v`G1O^A~-= za)?@S97(itQJ3pB%zN;K22J`UGm>rw{#0v-KQ@My@$Z4I*90*+bIX*!fjdndHK zp}@G01g#M@!OMKws*`fr0(iLVSxO2-{Vh4-SP|Xpzh+%}LeTz+P}~EdpPcSc*d$h) z_UHJ=RvV5XZ(1yG5R<4X0MQnpslUsKFgc(0?!W(bYdx+GS39OkKGPLZy}-lu1J5Na zelY+Jj8*Tec$^>1VsE|Fs50bu=+ZHlT$Nhss2*@=JEF&S@aIVE>3g;MxQ^CWddq^&*D7!n}9C-G@>p|GN#nSxM~! z^$Yr)4z^7Jr9)~?uRKMOh=gmSz}hMRjd9cVb>KilK~}RFUq1t?Kfv(;Tow4+cpIhp8c)z z00>mOt~97s6uD44$%x8Jl0SI5)>QHkNWL1+KF~L}`Tud`nG~9twmK#Tz3y-&t%-8A zfoCkD?x3$~KCr2ljWCBGARqehnV@OWeK%hgqZWf%6Ui$$jc2|BScz!4lN2t;KKp?qizo3!RDAb=Ojna7*dD*P9?Z@%Z*JQEGQ{hWf&U{XDTU!8tO15z4(Fc^w2rmeY`d5KXB%sANB-Kg^ zQ{5nA>A=i;R6D2&i1nD>z4|h2PGk$#4?4K{X-*3HG^pej!}+27!_~HAoX0}`At3(8 zwv!V*5H8)rXPiK;_8Ib^I#Cn3zT$Vh*XCe>K!j%;>{ z^4jh>9J(nH^WB;U%V|CB>0TD3YVf(1zS{}OmMEC`XRH*8Oy(xz)2uEH>?qTKmO~?# ztrN!M2U5LL`#V1aEq*j3fTF*0FoAM@zakA$lT|yUd#v^+s zdr9teFH)nOWZq8!s^ynXJ}+m&5nAF11IwJ=foL|LatA*(A-l9Zo9?3xR>heO^l;CR zJd_y=G7f7rd94lwCW(8-H{~(sePG$Y4k8t@s=}aB00XFd>{~O{LFmR!w35#Zis3%Yry;o?$iC8|3|zQ5dl^05D(lKZ-!FkQ{-K0SPF4cn<^#=6a=Pf-jvWRhEZ zyzH_z;#bWE2%R9U@@*9o6gJ@}XOZbGv<1C9@Y3_+JPS1)_v7Li1NE5_TEn7rwo)JnHJ* zm#_P}ZIKDzK50?pS|V2gNln387wOL@9V5LxnDl(Q4)odPF$hEj@(G{>)nhB~IMa6|4F<0HQ`| zgFb7!HmK>3U-2}HnDSA7OjA5`7!;3wTGWMl7@rEzNp>TR8 zdj0Q-xCpssdSxV16x1e;K)f9htRC9`Sp~{}{8U(bg*43bzc>Vh1)MV4v<8SQ{W1E@6gj-c^F??Ddv*$@ms9~*sGid$1Z*jT4CVZSuVOQ; zarzSL8IW+3mAKaoWP}ntSn8gYhIK6smT8HIj${5MQVB;``g4Ob?7KL|_*-FSQ)R~< z1S_M9;@2dUXJE0*j>^b3j_Ja$v3CE87|>Rt$ijzv0yRA1?*ioLtd$97fwlQp0anu_ zayHwAWC!zHSI+?dKLEfJ9~d8WC}CR!&+;Qa{<(j(_;ZvJYa`}aqME6onSuB!g!R{? z=_l3P|9Y`Q_k#vy<=LV)JA;-ga(8}TUM8kBA47V(+ml3z{V%~EAXu}fBT&Jqmv>DEpxg$Ylx)5jC@lj71_4&s@ zl*2)q1Q~9`=*-|_wl4e$5kMQIQ&~iW4iHBdlmNfYNIxQ#UO_kJY^&Y9CbM!~SVZdq zF5y`cjo2)Rk7_z@M4~nca)z}I1WKSvEr96V*qGLXY-4)V3sA*g>H2_46;O^lTJ>{I z8Y13cnD82U^p=9hnO@Sd>FU5SLij8!(rUOmhTU)q!4uNH`k261qeAE;px&RX1a5b1 zPrqnDK?)VlHxB-B^cn&h<_?@@hn>xtPF#=Ur*d;7f5)8-S0^0j}wm_R2TQ^LWq`vVuI$F0V z(xH$P*JyuP#z7p@V3BUOb{PZ&=9mg|Ie-v-2rX_WChy#6IipK?^B;&zR+|vgmE@Yr z;y4^w!_Y0+9XouIA<|J2E1v~pk*V_t`;77?89?83)hPvEC7Vm=!0%}PGxLWW#c!hh zXkJ}My@*)wRv*tt=)OTK7gl1vF0VK8i;8V`{a)^eNe{tVb_f{RY~p@=#*95h-1q$T zPI6oHTkXePbI5b92-oOPY)_#pAtu{&*}1THMH9NABe8a!w7R9~NPrppRizK|CEzqf zPWSOo3YDr5+q2(9d+Zu1aRh&wA^M2*Dy7`T$RCLaBVR~MViKyzS%DV5yX-eD_6>5@ zB}5vg6q9vD?0MI2IBeQjlaN|aPM68d&a@s((jhrz+z zEtqr_(d}vg!-o~@zeO96W*_YHw&LX8REb8r)))Xk9h#by_VmGk3_ei5(S)9BNrg23 zXTW3eA%bz{tW#|?(`gp2D6Y~BLv`@wfd89vKsSqRX-3T+_wo#}1q$6XJD_zVxCxK6 zL-aTx#e^6%>FDnmI{oEh>odffL>oEA>wr9obth~2=dh4Bi;Nxnsg+b@7&g&anQ_`q zRe;1vo73A-xV{Px5$38x68ryfqfXt1vB<1dF9(@{al9xJ3yx4!)#KxPgov#Mod+DPsIM3&2312B8Gp&CQ#4d>dXSp-CA=6!jrE zp1D8-qFkTPtL8AGCiETsprTqCIb9#J;511LL}hbS z9Z_AO308$Mb+<4HcJSG}IuO)TZ{#>vrJ#1D(-cSOE2nitzba1thsjNe&-+aLq=>H^i~KVH$qim2C`Ly+Oc>5t z&ieGDx)QhEG>^fwl<*S2-pAPMG;0H9{5cX(4XX&KOL--nL_Lef) z!7~qV*-c7iHI?*khRD1;=kP518Acp$rRY`C%=~bVfeCfyqRy(E-s_8~rHco7Bg?(; z%J~x(F%M`5km@wIj;d}IpCJ1l4%}ap$3}N`^q}jOipwsi9u|?JTio}Wyy?~a49-`F zA6lk@8v$bGbj0c>{!Q(LNk+tSswBOqYhZg^8w7AT^V+`@jq;(uR^1yY%3u^2+TJ7F z&%tD~79ERUhWxN--`idk2Nr8WJUNeD1v6IL+(O<1s{O0Dpb0=}QrEjS4&0q7DeNGE zPgmlFOOZLbs;uBFESC$DgKq?4r`vgluJ&}OaM$?JHF$RZ80AxC0!iYmMWL$~t|3pv z8m6Lac^xmkwVgO~6Ye1gdLkWdG;?u=&TDZm2>Z-g=6@IxKrM$aeZrQLDz6(o&6xRn znu)B=;Ad?itp#iD`c?+eSxdPs1@w`?B9m6a3k<@gBTHLe4Is#xS9X*Q0BC~^!kfFc zC}@+U8uVq)41PS1{whziZpTeyqM#wj6y%Yo{5{k88_1m-fVgpBlkp3#Orw1Pkex5| zBI+?-t)5lwz3x*DElpojyh%o^sOv+|OoJ^+@!~J3cA`|es*ncD6_y6jE#^zoWBBHS zM?k(1q~9IzM8AK+>u95NZ6IQlycap|!d%gE3}5-SAMc2~)E?yxc1N9`9WL1caEV2+5|5|ZKDnzT zGF`Z&o`(5={z$%smRIKGd1w^`>l=7Xfi_g!>Pgf07oQt08X>DMEVEv9+P);?s>rp` z1xEVsO&c;)T9I+B1_7hCC?2^q?$O+yo44bu>{0}R!gjZJ!7t!Ry^|lQuLhSA6hb zb}GoE^+*5MI}%a~e_%gvUV~biA3I4Wm~9maWaCJ}cyK*xqtRVL^D#t@_-GgJ&ZTdA zIPc`x8PFT&Vrt>-#^6SK>tODeeD_a31|l&n3m0ylK<- zqRmqNko5Tl?A>4Xk^cMG_i$)M^Ymb(MTAwaf}QK4cd-}-rOi5lEIyy8OOLA)FJMhg zZv{;aMToRP`r1KOz2C6YD5hBRn?ypzs?R>8dcXOP{VPXx7Pn`hCj(Xx^k;Din(xR1 z)|`qtB2v)Um^Yz75 zoIGeS4&|3G-C1cEp8lT&simQVZ+jAI>W)&&h?Tn`7S(QWTCv{SF&J(UoaSe$Le1~2 z;l0!GzbfhcTK6tWWPuOZEm@0CG>-orep;(_1dc;W{t%v}#IReyKgRvjl#jf?Bzct?aB66lB{ z1sS`A1jkQ=_^+oTdP5wgdwx^luj|lfAkG;i(+G|}rinM7swrzoUeLIBF?})KQR^z9 z$hK?f&pa+H#yo&agqM$Ot%2EZJkz+YN!r<*ldRK$lEsj7hKg3~X!k#3oR9ubYZ8Q( z;C5#4@g;H3Jr^*LwC>`AL(N<{V$Fb&OKSJRVA?d@>1AibOmg6`)pcG&oA&YfqaOp) z;Hv;9Ic&h2$Z_QiT72PVrvHTRRN->&D68X7B_J~=#aWVj7v#gH*NZ|;ulA@bazaaK zzU;2=6em}3Xmymr&CMK-7Vv9DIR(^U`(l`+yAfxV3=dbg}3C)rb}B%0M-p2$p0Rn*q$okOJ3LN<2^-nvfckCD+|Z1b;P7&s|hO!VO1qWpcXWegIol zE+6d1{{rxiY+NmYT9p9g>H{r0zw~p|f$f-bNh$+WQ!sj3^d!x00kiqNEDhi$h6E{G z%GzR+MyX!1n4x7HZSz;?c36m^$~crd+`<{-b*}42)P6bRp1&$ypD-7N##)ZQ>YvW! za@&3zt(IUga2Yg6c^&^%mW~v=ywF9XWM4K&3y!!SUrjdH76CQoa7fvsM`b~19e1c& zG3lD6DYBv)H3!+cGM>4caL^X9AZ~bf!+#$I@uGhSPKgS!S}8A1OHM}=dGcsPt`DO4a4CRD_ubi`!KZ4MdrAa>vRm(bac9}P@=Pi;S305RFiVy}t)D=dz0^VR9 zp7?#q<*}*9z@tG}idsr}fW#MV%e5M{$<|r1J(p>edws+NlVMT}@>pedVUF5AB+pF{ zcNIX~eaSIA*RsGNbX?a=VmwvqjHC?-7B=34yk<-sidh+%FMRfv;r)yTP=BuOx78Ls z;4)x3H=OJ)%70)jsta{3zz*B%DBY~xEFm|^HtP}?8b)`hR`~R%dKCAfoqG0$eyc6t zZc?Jpsxd~k!WM(I#OsmcS1F*F75f^}O$$KrFtR_#EV>cwT|B9clj5^JuUh+P?3hma z@Lrl3&X*%s!jaX64<*$0OJvh&h7YuhUVm;kmMWS5NmklYVVSWw6b0A#HgCm0&MGJI zFj7CufI~rnE{z@pu7Q(7iTV^h369jG*TvmgQS#V1^RW&N$Q(`})szOTc7$ zh?b1iIbWEYuKGd)VbR^d$`gj^b=_jTw)S4Dmn@B!h#5j6&#sJ^5rT^|H zwlsfqQa%#6%#r_uzwGSa?-9UEuZ2#45jscoz4k3RrXc`F1G{{%Im&6#<%8_5ks!2B zGAB0eEVcfY7l7FEXyUhe{F_U39|vqU zp`rFjY7*Xm=OYnvluN<)+@yrU%b^f>BY35@s%Kqnl$uR}s$=4d*u40{#{qVMeMy() z_?`c7!S6=nf37kl>g0nSBRU5Rs~`8x1Qg|Bpo5|YmNcI({Ddatno+=nj+<=O7?*lw z#-|AeFIkjl1ge60%~|I^;|IyInxgl}$#I?awhJOr%7HBa+!t+4*y$o7Q67lztE`lI zY7x0T@VEV}BD3oBEhvJP)VeeM7|tJru`ZjZD_hU5P%0Qfv-VgDsk12nQ}yfq%V@(A zFG?NUB-oMrfldv<8l475U6<`9KH^Q0iDd8~%FhsM7u{UHX-Gw4QI_i46QLs)YZAWS zyV{vKdP~$iHI~}E-}xh`7N<=nI83pCJ4Y;Y+J8pl=r&W~3uaM&4XexvF)A{C6}MWE zLxY9ZT)Jfkaa+BdTKQLW*V5x;DNE!eHyh@`U^qDgE>4{$cX=qW<5@8(_T2(3bTBEX zwtFF9gqXyI7eU@wSO4X0BB{a`B;g=QdWMQJJ;4UgKK=Vq0V869cp?3rag~oKatfWAYJ3XV-YI)oo0#oGI=nAb!JGE?r2fguQid7MQ-6 z(rH@xbAibB3`7GG=ADm~g?9%+(o0yOvyQ$ZbCLCGece?p!>KnI&yjIVx9=&=n014U z*fAX0(w%t+nl+p1Nn>11%il>jE<^;3cjKncKk|;c@;#*2JOh}} z+i;vyR7_{L22Z(HKA5zK%;&SBqMR6{Ngf?2}UtG@V|9ZSGKB zpPZ!a0-!vQeph^%3%^bU3>(_q%W3sjYCLUfirnoL_vA9gJW!4%!bK;c+vU%-sZdbg z79*QRnxJ6S|A=EL@v48^xR3G0qx@bo3G_u(01FzTdRU(H(jQ&iIp9SLb%oZ*`ckn~U2GK& zpq=DxwcamS5G`hn0sE{y)lvj&2B=IVCsVGgJ9}%H8D|=x7wh?U;tMmeyw=dposA2V zZ)j|5cS^|1^7e`Z{7LsUR@V14$zD|;L0xiZk(;7o{js9iD~O$sAz$uoh&d3J;)!c{ z5oqzLFKSznw%p*G8#gHuarLQ}j(w%~NO3rB@1KpMG(6G9Q_sC(UeCokaY#?^?V3#% zI=2s#rUj~Y;$nAPWpGQ=EXx7pX<^Sc1s~0VO~Uu7r0Pil7#OjgJEB*` z?)Gie{tH5iAqs|=gHEq7Heu96xC?UAau^;zbh6AK3*IzUxxnEXb&^_xC+w~I6Pumd zjjEHIgI5K5Y0|Xm+FGnD8$_-gHNat@%T2Og)^#4tb_5IDCsl7cVb*%WFIi$M&M!)! zh-TDLyAVW!U{`pHzr+&mTl^Kt6mP2r?Gv1=^|F$kkn_N&Hg{(M`V@EUpY6iv&5i{| zm!y45;Bu30qB0uvWQ;6E6dti}hM4nS%yd^MhSgmdxZuht!4wvV`+ ztzG7cIuH349I_7?t{JQPZm*3Cc1=|>1x}dztS<4-;6VMVm```6j$Pn8w|O|M8sm~% zK^xPi|6k9z__kqtFQ$LA#mb!eZQz$%@a2G=1w;x#aMf=yUpSct!wz=R3xWqNDT6hZW`V`onuRNh9rU(p4o0p#Ojul#Q- z*eD$rqh>X*72g?Vk6EKx0~$Z6>=aXun0#t8Py{PD!UKhpxTk09r2M#-(v8Ywg37L< z^q*nyXG@_feZTRL9vOw`10N^hr}zgD3R3e)QwT1>bD?} z?v={id{W%CZSAMQUn|2j+jck%r5FGKziwC_F|Rh}>T+DP&}XxNrdgBT%n!eU@>ev$ zGSEHo1zF%y<#w)f)oaZFDjdQZ+C@rUPdIW^ap)4N8Q12`lB=6YNDeQ2&hDY6Fd z8@ujBq#aK7rE(Dx$OUC3H8M}F>M3fXQw##wvD8+?XpvDi%sg>EVzxQSCQx01oY`qX zRyH=?}Y`474N4Jc`jJ4f_CbhLQ0kJuz*sZ_f(4)x>80)V)9PuZM^Ti}r2;DrC|R*lq>BBXixI)ZAK!%-U^S4icz})9LKLmE#;=_9FUu9QPLH zlC$ZzHK2BD+S36qacFZ~bB8Flm^7Zp@EV{SvqUba{0v;1z(_LwuGr<8T1X2ISU#P1 zaCVj8&Tsx35%V;Zrc_0BU>Q!EhYUY+nGblh&+UMs6)DlZvUH*JDk%54 zLz@b~vP{Y3~)MO?}nK%rcQGmW2s*0%(@G&9gq2xD0$KJdsXt zHr6tyLM=t&lEP|5RFYE^uj;tPcjrk~|JBuuC_`PN7bqSpu<8idjEp&?#Hc%EN6!cx zS(EN(#h}!3+X4VBR^?{60Q(Hg$L`!2Z-u~O)*yJwV_JHJUDldY5AzlG1XhVC8G3CO zKJe2xY^XPDS?gJt6XJ!t4SXvo6zqWAwx)mSxc4jNIl(?GlwCe~U7Ap5aM^hp;aXIQ z4rLeV4nvzEYd)PX0+ZAs7$PgupS@ewSOS zeDU1+@U1sB(S_~b_7J{lf-PCZ`^=2IM3Qb_Rt;u#pE&!bW3fx-=T`5t1MZ9IUHLo0 zaK{9&ItZS5*%s%m|XV0~`U?G`R6_Y!pV`x>p7lHJ8Gbt%1 zLuDsu*iVsWQ}7ug%25qeA2`5{mwZ9@0;0zb1#2W9wvKWJI|tvB?sbiFk1jvsdTZ#$6{p+vj@TiD=m2*nGRodbxU$lDPy zZuv*MTkMwzHj&RMeG~|8)a$$AR};y1nKvXnGgwEb7w?2iBJcH7{aM=ZZOW9iE-@s2%M4YUaAE-WHWQt-3)F;+*O) zJ<4!bTTL%xwe)ivO-NAcVf?fu@6FpYn_CmY)oK#79VHssvbkBd+OQB)8AkuxKlU}7 zL++h@WLFxCyU%%(UOQLkIHm(Vdal6q4I$|-+@HxhF@lIq9Xbc<4|0*wf!#cIVsDUr z7fC9Hox@DFTETgqrNR2MmYKvCuN5jsVLMM2<0JkZX<6;0E84_}`Cg4edVineWwDlhI2>CC?5TZyqLa{l>azkKy1wN$|~0!8bmM zQuWM(dj*ZpOUeUI4t+bH94S%ay=c#fuHaB>3T!yLehejIu zXk$T(r-7K!sX{o1W=cAqf||$=gAj$!(sVGnMmRo|4X)3jDYNaU=!FFS`ji1C-IWSZ*(jt2aBFZ^QOxQSXX;%4)fJ2 zHMS=uBxw)WOI-tawM9uUZZ%ish@4NHXm1x=<$FjUUO~W)a;-ZUOH*$gVagBZZhvkU zBs#t*P``8EmoS&Q1I%T#Q{GNWbA>}-LcnbT=)Y~2T1%G31}NljN|wlXQ)LFgB>*Lg z_#}M%1LhksQDUnmTcHuCBO2R%hJnopcSvDYoJDt8}yVk;C!P6W6=K>t>TtslSJ)o_M{w&N1P z6Fk@_DTWhohj)AyiqCc$zV@W*gQgYf(RN6o)9c+vE!aEvjr7sy@|s3`uQ-bj(Q3?- zO=MU+P-J^R$I%LUDh+4$9u{Yu>hj+EyR04)8NisdfNQ!Wm4X)cZLm;1vrb?&kn|O_-Q)Y3zT{NKg4zR)S3uKxOUbX>W6!M#DiT0cP=~KgY z%8BPPhkfX>4a>`>#-Q9S13cIBB!5m*q;C)tJJ8p-nF4HN%4Tb;DqUUI$#CtXPy2kT zVPdgFj>FpbB>86Q^9*oi8cj{~Yrp2Y#p1pDhgAR z^DQIJ!ynXj;AQ~-mISk2|38`Nvx3;J8s^2fhAiD)k zCem3Av$uzV=b;bxqX#`-*H1qKLppyGm$xDTv4zQR9CX^Np7#S;+5fQSxZsXqiR%%R zytP4=iR-vj0AP?L9@NgMgVu z%-_5?LiqXwGd4F&BJ1sq^Jz(o_iDXiSf7sp!Fzi{S$>t}E8nY!Th-OAG?0(!fE$;S z_9o(L(=(67YCykxIZp9AgO@^XlKh+LW`l0YEDZW5`+gOec9)5&J89<3S^tZ<*xys|KjMis6;_~#f z2|G%Qzz2Pay>NJ{&P%+o{iJMH-qgo;q8PGy?3uTo&_8-Bo}qJsB?t7#qO9^g1AMfu`^B#S9*mRoGwo?o z$!!nLzd5rCYV?G$!~TKi3|HIV16bs@fQISTtHIo4xXEfe?E_2eX+Dr{vq?S*2u$pS zE)58iySTuF19T!Mx`S8q=7Wz%SfLsw2UnQDsrJc;dkhxP4A>^UJ4IzlVq*iy6i?Uh z96cJkNn@+!TC0!yN!Rhr>NZ&sa&n#EkmdDHnnkTmF!9tH*ZG22d8^GRMb#os-Dqkd zNq({D)*%2}!;i%E71__>D+=hBoRmepW4XF*P;nTmQzHC-e68bXlFz6#Fo7ou9~td# z(=r1>qb8V$kyt86xK)a&VHMK+3+ZoJ4qBm}#<01S`Ld>$%ceUI_&I7r=B(}#Ir>wb zn?&z_@(c#)jU}Gp@Z8GQn8Ch83IJ)clPE@^R}j%8cr;#5&Qd>|_>qJf zpCJ9i)f+-B(Jp4df7nQ76~Rd&>Z@Gv2Dm5Q`#Aqu@Y zt4?NK?CbG9*~WPEs)Q1#2=LXoCk5E9a{c;Px)`FZyL~nRqyle=y0T;bB0LDqPLtwS z%r>=sh3i{uE7?UDeui`6d_owK&-FFJS9FH8EsZUi{~Iy+DzV?jr2X?k%pw_gSlyBi zPKose=5u#I7uhdgi*M0mBaq=?1G--i?v%@API-w)9u^&0Q+I}LW@Nw-nv8_uS5eM) zJ^O+tChm(B-N%(a^nGtGzvX}MSv{#o!#EcQ;MAe+%IU$C3wrjmR^CaO)H{09`b~6+ zIA(vvdT``w0Wq*m_eGO}WQf1?nNt1YRTRTheJ%bnZc_**omM)BP30TQ&WpmD9LRp@ zU!pYc4-}IaFK9}_GQx@3+#={W&N5EkLc1`w&=1f**ifUJzP?%)Qo724)C%=I;R{ok z!wE~L?^Xw((VAcHu78FePo+V*Gp02+ReRyj?zD39d@o58(W0>ZIa}bxkJA-NbS_Lv z1*{TMbs&&j#JLkYQO9}Wk);;(Gi|4CLH`R>;ccu1UDx^vLgOO7yoz%rC>MdrrBT8_omPJ{Dh1Vrves))h4S|EJwq;;e z-zptAqEEM+=qDWnY}~ikm;*U$hB(uSqL%wt4mon^nG{Cqcg~SMMFea<;6RD6;gTq& zgO%wBajqg;IkExky@S`QG;JT zyvUuEuS$~vNQOVuJ9RxnH#J-_b9t^#7h94`9H4K?N*N2(5*`6s4-ZaI3_u}mqcLrP zj*1M@wxEu6Dc2anu`pLdpwFmmYESd61)FXzRN|J!4i^xRYdn+l=2?F}dqsZw3*0X!2|PO$vN)c(^n3D_NrA8t8D* zm4+6}+ay9RpAzxrA+3;(vgW$A&0cJnvdUMYua!=}v+{(0xXYfRf18yROwQ)K8v)y- zD?sl>dr~VYT?S5@Er=WmmLtxdLa(t-ujo-Vkb8HzhvVE(=Q=+6~?2U zM%KNgJhbBmx~U-4dHDK5uzPPjd?u%h_7X&G#eG4skq8KIY((}wB8PYl8ERg(#Y^b~ zuRsg}AYS(Ir4G+k^AWP8Vxym(nTUDN>5K@bN2Ai;Q zlkNNZh%)ryO721lklCd6JmOyK%L@NBK7kbYVK%%SumAu2Y>W5diH}#txE3MZq{LTd z>lC|!VHY%5CxGSq5VhJ|9Xwn48sU3|$o;6I$0&Ij8)sRFnv zFMA+wrXfntC0m*zS^)eW@5j-XArtLHJ|+k#+k6VBVoo%AaO*eNX9wdmR#oW8nRJ%zfRfvaM=QJNEm6`t?~tliBW>ufVtBe)qDG zp?2PV*m@B8`KX-Q&Fcx@#8vh}4`))3w+bGDK1>%b!AZ!I@qkR82DzwlWhVA%yZO9N z#$_rk1l5r?Az5>YhCqZJnmOCT`5=D#Czd)!o3 zG6xXDtpFA!HU4-#!jc!JTv*eY5d%=k9@4w(9ctp4m@Y4)i2p()YaYsHQOjrJ z5pYTFa1|6#z~#_DTz)jw!9+=&YZMjXCm)f)iqHaP5AjRl{h1k$1Ru5wM|2)Kr;BiH(?c6p^kAfK#R%qJ_0v3bYnzPL7KCD5`V+e) zWk@GX&|2%t&0{5lz(gJY{5vhHc;?Kjxc3h2m8J<)&PeLLn^(L}?YfUoULu99!WHzs z1pM#eHmg?pi=yR1k!X->6{~dhVFb@HN8_nOjKf{j)v34}%lqJ2YlFc~?Lpp;sK?0P z^=iReWu-ANbJdYd}6~eSqT=Y)l~v@dd<-X|8IxQ>?3>1uugb$+nt}ru4|!X z!eyBMU+zK=@FTh%T{syzx0f}6U@d}fC_u1-51e^-q3!y#4P?nojyY9G0TJL%Al-ue@+>x-qdO`9)a=959;+zl)bu36E(XuF zR_O+uElYe1C-_bfILEyHKS%g6+r-K=m0feQBB!8i?PV?9%AR*=WQ!>|WF3?_k*c8^%RdR(mFrYjVJ$ACc$C zW?j*sWKI!yi%$y}Oil)syqOJG@IQXv+*?qxi;yrSF(?G5G?o!Ey9$bDdGE7y1pYs; z<#I9e&ak(8->zjR-Mi7})P9j3hnVD_mS;o!gbvk*Q;nHtnj68l>1Gj|#6bv$3YP82 zgAU>3px{b08@GQorh|uh@KuG(s>#HNuc==Q<9R<9^Dy9_(RgwvW~6T~j1nO|#I5_& zlzPpG72L}sT!1nX8}$A*dab7#McE9GHm*h-3=neyM^pBDyG+sPhmXr_!Ck)@{&9Xe z%7lrUdJ$)YJKR>H1mD3U#+<|5)QM=-s@nLFCcR7txs*z^#}u{lukHoY!DYnsbVGv= zn0c=uMkraQ|A-AVR_!a=b+!8alK_xD8Y?1DU4*Xi7CWjaU4D5<&JOL*$LTB)$AD6P zS@#`J%GO^ms3U;A&{#qh=ubk=0<-7E6>T=0xC-6k!odCZWdkjuLuUL2yq3Rk9 zmy(iBZM%d$0&opIs(N%XO2HKvthVgFE zDJo$nyqh$f$(~S@`G?2nhphcl;45xvUN?UNffM)vY;CED3d3zHE4maGy{75BSU)gN zipwI@=*~k9;raP&lcWs$Wr#$*-kZj9F)21g;-XWf5vhtng2YXL?~&p7r92%%mEr{V zD;$$|`^WcIw-uTq?8ARh{qxI-y-E}cBAYQ`{Z3K4Qr%%yTE z5(7D;{wTawi8(s|rE$5tu*tZ%#0-AF$&Q8!jd8vdc6`J5l@l`!u`^SI4uU$kuA-j0 z8%u?o1tbvhMThr4r?8is4Sqnopcx>WIVktEeUx*VoBK#xY)N27hoxZ$LE9FD|7M?d ztALK3SPBV^L!so(TpG(V(t`EN9)|Ar)JZT_E*cMvathzQ%9aWApCxCd z&OMzR0J?ne+g)TyFi}CH|0k@+OR?WX?*aV~a%Mnlq0QR4O&DlQAW3RU;S1Fz7Ym7h zBp7-u!a@d-qJC;^UPOG|;`?$s7pD%z2da)?)fGwsam{O*6nH5_F=}WJF*)a-9Iu?( z4a-d@6@&COn&)z>a8Ka?Kkb)kj6G%*YQ{0j>YtO~bq+mitLJ;^$0XwR0Ji=e8o7x< zG&Hg4*4$8?sA_xI5oLreB_iiJ5PQPfloB_ApyV6LGt&#TP2m_a|k zN;r?2xcDfn^q*6oNX8DcxqUC65_5Iul+x3a>LSCJJ+tboZ3P$2`qWAWKUTNs`fY2c ze<<2-R~?`(D00_%WZE_D7UN#$9=kI(fr=>{#tqx@@3t zFZMv9Tc5!vEfYN36+xw2QBjI+knrio{|$2pmdmr`00#>b=VF|G8tY~9`mB-J(bujt zv*_`qotUYPUZV(`?jm?p4+Dbg&1<044_1H|OLcjeXuFk^PX^QQfohO!3!SZId9 zH75u-VkL)Sxxf;ly28P(a06eD#>xUvZ8~9N`V1K%Ds5j$4Pg(-sw=s+TXkl+6vFr4 zpHug@GT#s-X$A|_xjQoUtYw%V{19m9rrb$!7J;3-dk8KJMC|n!NMEE0g$w*wwGb*rI9eM-yj57i2A8)ueo?~nJG_xCQS(HN$mA%f zYiT^m<^#<*|1b5Rj*V(yF^=_^=c`&i4kz~NpPCMB>RhRg{aI&kC*$h1tGd1>7=4eaJ>mIY1W-;je3?lZjCo1L`}0cr2t2zh9; zXpF8g-k=teqCT!>#1&PeA)%nf%h+XieLrRN1h7^p7Q?4!u>LpYdSU+4DXoiM@MN3~ z@r+@vp}@&0nFP`5z_S}aLxh945~4<7{Wz8fbQh)q!rz;oqHas#UT7NDAKdfispu&q z(5c_RHp_B%4*CLiAv=|i+U*_?Nniad@g?|N0EcfQrYYqfgRr>^54u)HCfGkiRteIX zvvvx1&rnb+tNrLQePpG8H&QcmJR!0Nte8$ z@iRn=EJPr63iBlk)ej|rwQc;O(6CR~y($kkJMd@hqsOb08M5>yu3&tsDvaRb_mveV z!w9xl#zcyoQTN*eLJ3Tb$$T$4@~zRHR)g>Rd3?US8)Xmhqg>a(O@kzca_ce-{KUCA zr(WSp9gZiu2#TW-QXqI3-`?=FrWL6f#STzi7-C8;kqX!v;(R{)K{1i30Oh8h?8-k) z*-%k)2KrJQ&1NKc{En8v`6DM@m6%P(?fA6|>S780C!#UEUl#|m-U zy%8BgTDm}w{tqESuqi>qlB#~CT!+Eo?2>8qY^-bY7dqgxHR;PWK-+$5I`~vrm_!gK z-B8UR2*ODgHwF9`;?h{qO5BP8zcjbjhoW>y0V)V?$MhHzNmV)oeHY5jyg#QrhMS@H z)uPeodQW5U%XoaMqC|rkA%)`e!s^;xu;6IE1!es9C=lIU>@5VUDSBXd!u8)sg41%( z(4qhZTq1b$TviNYQD>Mn+Mlot?Aoh9hPFY4dV$i38gOX*F-ez-0eG*WjUiKAEo>y6 zy{>ZYX~9+O^yPV{P^nKe*|X(UQQtTn5BJb%zNIWjxAd=7?i|Q&Xkif*z36&^1@>Q_ zmY*1Mn&hvUWIl4+MNPd~uJ7u_#{*Y&QC!CLY5Oamsz2S<+PZ7A1!SQDp$Wnv(@HdV z6AaW#=vuPaBa^m;nNhui7xo8R!32xaB!BUaHsVJ}f)g&6n*W(K{sHjN+0;OyjkNXKkSjNaA zvr((5)=w~_nW=low$u8-NvJICC0@zg)~~#ju42SFbo4^9h%=-g99-jm{oFL3OWR6M z+68uK2bUx$z*uNu?}Cj=A}dNexS>^x%NqdX7)pkt2iKcvwk1+H zt^6e;mKQH=j9Gba2LU$b7B?Ov#mpC1r5)7mmo{mlk<8clZ>_jLn%Gm%|H0mrPt+IG zpHYWG$~&Uh9_GB&3Pm16F3QIl6#I%*46TK*Q&l6gcm$fsQHul)@5F|V%=J3UzUR#A z%C}3alt;OWBt0X=^k$RjcyCge?wUQEi`~Rd2hGm|e|~Qf|6i{wDM- zD7FG!KO-Id{ICI06Kwo!koGU^FZGqi{2p1_x{Q$5znn~a`tpInC_j zHP9$`mTkfDGRyGX^kF0vR^6R7Zp7Lnt;Zp_&_z&{*T6VFcvE>a9ifmt<848+GVyzI z5LfQ7{fd)6=Ugy?s0=wor2?yI`LPAs1vJ`!qn%#0r#k7ady4t`HKe9dkh8OM@(*_$~pa75jp$I`z3Cls}>fk)x8nDs$00)0$vkm zem(6_<-=`m%bx1pPr=3PL1I88V|>P^jqDOwkv&*DbO9leHFB8$J}aVzb}7qZj_Q%X z$+=O=`TF&;q0G0NT74{%K`tVb>8)5xn0ZOamFg%&-`#vVN1d%1awwqxCH?Mx2WjfP zIZba$um@C3_nVtaG%AwpQ#jQAELvTah3;pyh1sE^M3Pt#@Z$jgKLEf4(n(k)u8=a@^)8A=wKo&@1j~fSB>k@N6Yf>2 ze|Wd=1Ju9ZxbO=xW;)0iMnaEN{1GK@pIp(UV}pYb7HitA6oMvzO+xhH*kcbg zddP=a*P0_^lOef18fdSl6H?6eJpsguD9+%q9lO$n~I|7c^#~i8aOD*7*PngcAXkYmvFWx27}!#RVG%PCd0h z>()8$-F+jMAMVfO``rEhGG1B^1g;5@xia%=V$e|sNdYHx)1|$k9`B5XYq@uAO8~O` zw2(xE8l%;^t^J7meKYh#4pNsI*<@JnaKDg}n{wW>Z!F_50ndq<(Uwv5mV9uG_{10G zl8?EgJdc{k*ysqDXURw?_-qJ+zo0E8qEyUZ5;qRYYt{C?V_$)FX`s2Vcw?s2R6Meu zA*2i`M@sP1839ho@7nq&|ZOIdeS!W7nF=oAK4<6IFo z^e4)+t=gU}x5=T<`+mTUrZ;r99_wvC^$w0EgU z|4m~LZVC3$b;|cxn?X9GmVaSFm)84iB~&=y5H1WS{RzvsNyK`BQsVMz%vD2ycn>N~ zTh&Fo0hP$&s1j%%fd8`Nx>$Gd%h^S+(0wKPn7X~q@iMh^kW;w6n^WfVNK{xTr+09%9++bslcH~O_5tUY7mlHd9a=eSID3Y z*C&Naa)Jc4`J8eziwOP0FGhGV7Z&P6N!!lmy`j3_#HO*EH-E6Gmuv*g9mBINDT9(2 z>TW8Pc2w0z7tvIq-c4Uuzi`SQIWO@I=t#Z?tW1s8f}WnDGrP;azNV{_aMLCFEIh%L z6IR(9F^cNc6qHqgt4ToUE|ja)&CY}zg@=wqs5Yf4__d@g*C=ca-h@%nB~X%%wMm{8 z8R1DPcSg-dGE`pd&PpqxyJT4&Ry3<@BvLX;nl8A=fZnT&XytiE0O={-YCrWGUf;JG zP0sZcAFlta1Xg2uIc~<{tqj3P{!<1?(#xN`L;7B3EbHb*rdTjASW5c%e!eh5viC)o2ZV)}m!cFX6;Izv-CBqRHUsR4gLSme~csf@Rh zYr|eeVuh)!CmcfI2FrTO#s=5&^O`|0L5$L%Y64Ksov>>FxZ)nb<04{St1SkL#vxq8 zLPwYAZWE4+QcR4-x)dA;PsY#*9StQ`*maGqyxX$gid4@F=Y-B~(41<< zzaIyI3!V9i%c|8Qc@ro{`1XK+X!LH2^KCMxt1SY}V88!&e7bj?VRd!nfp8`4E3z5_ zd@tIOO&&R9cJy!b2dMb++n4psi%7cccH5&6-C}a?R!~Z39WmQ*2LksJg@TYrxjLEv zp}Tnzu2^No%mR)I5`WOGC8D>j$%!=dQ1{H^QvbN#?R`AYx(~0&Z;akbl)!Y@`Fppn z`dKzZp`7E9mx`nIo2GD%*VWo#?)eJq41*aaa8%HRY$1d=R_ok+b`F+0U$Cuw7$ZWH zf%RYl2Pi>O&JSifz0K0GkTn#hZ)%rUQ1rK7o z`>#9nrnAPm>B}zt4hv)Lvq}r9o~6KB2Sp0jP>oCMZ+^obluYvrX|A3r=4CICo>9eY z;*KE=vv)0! z;zV_oZ+P5JXx?z1&R(S85QO&e6&98t?~VYYEsgxm%Tq^q)@C392ssp+hJxW zgcUIgGt;N-4gr=ZSQB#mDb1dUgo&lQSxPHz4RS%S93L=DqNG7eJ{=6G8;Vf-lM#?- zg{lEp_y5JUHy?r3)1Se6VElx3AA%B`IRmp=H;Y(!=$ROvvvKainIxWydy)oOZGwlK zMXlXy#T>{d^-IUo&NcU8?8q*YntNs_v9(uE>y8z5=66$=;?sy@|72e;rpVgMPC#O4 z#1$+*S=MzpTXfKIjBUW#umB)i&v2MT_BVs^fO1;__PeK(|9al|Gs&l@$8axs)=ixr zuezY~gyHhENfFMDJ=p$;6?Go0~w#|N;9)}{BRg4QUlFNS^TjK z7JUy#?L2RVJwv-B?X`P_owt8E+5JF-5WHbB*=MqA@J-B8iS7n9T}AxI&-=dLx6wFp z5a+3~NDJxH>S2R>Jl*Ad3R_7_h*P}2buzB7OwDWv1J5x@3GebH@O-;q?(?QXyiO9t z&;;Fx7(hL*(t~Rq1qYG13G1QwTen(E*VVGCDwCAwrxptk?DYwe(+vggjkfFZ zuVMfk{c#16%kznP^XJflP!B{)Zz}#l)BvF-Qm7A2ypYWwPO^TwSx$w*AG7m~MEV%Z{wfd+v z$-*K95L%w;rWF~aschHKVWv2W1HUUq-1CBiP#OhAMj;++foU!v6T}8X7kDWwY`7;? z-__NSf&TJokywuvE{CRSEiv3!h`tuJ}$z9$dGLLF&c%sk9BbU3uRCgqUfcS5?xDG zryrO5An@sHOH`;EO8cIiE+2o89ijfpXng}DD8Mi94wOm6?wJkZ)1jdB|oi9Q%MsbZWy``mGMid>IH02hxeu2{*Ir?zNd?}?qP zqg(e?`yX9+YpUqrSYv0Sklwd(*R@V;fizqQy;f@LQ{9~4KOOBIG5Mt+$gE2a zW@W%zP36?;hYy8=?Q*R#GP1(qMz5B9b6?i_G<(X(NBP|rDv^d;XKwm4;Ipxh1d=jlpqjV$7Aul~va!0Nc@|aM-YPt<1=o!bXx7nHZpn|wKN}hN z&L4gD1$Z^yH`+;^;hARQIsAB*iNRoewFCeN@59i3`+^0aVgX7e9f8b2nql}ICGT_| z@+set$H5QLJq2H+iF6!O)P6>N_qA&OUGml6DEX7AY;g!h`SEEdgOn{zFY53h=}VF_ z$;0#^OQ)6qOck-QcL)>*;qkZBn`p+s<9;rO%Q9+{|HY<#bwSLGWzBQJlC*mU!!q=< zJu6|#dnz?RXcWxAiOlz7>`HEaN*iIcdLRvOo4j2IfO)$!#ItqR+7>P?i{p)X5sVwR z1$It}5WS~5O__lMEXMOoq}8poZj{?e409rdFx2(unMaKh1n^b_lMU9RZzXIxSIa@V zn~(N9-6nM?o{`-33m7&b2{&)qXU;?W;{`2rA$-a-v%5SP2s~L1sKD=2&Rg`PF-YwN z8SRTuy>IZ2d*A5W$s281eNd-xHdImuv##eJ1%t zM9To1hvhWsKF4Wjtn-m0dX!+c{fu)fLlXJ56Yy?A{Zc+{xCCg)FeYPdV=S8F1}QH2 zSkHK^B37(esF-vqni7*rKTk(uZWQTh*}0+9_ecN-qYim-YXGdS_?~bCfyZli9JBZ# zTmt;p4R^j3cwV}o-~dx5x1GLSXeg`f0^m^W!rX59%ghLB<%2K@V^~s*Sc9&Y z2JQjMVL`Jrjto>axj)l1nl1rX_i6)7I?U?IBmkoZYIG1pHeM1KU3QK&xRhYFz+>4@ z@}SCYc2Eb(u-E16i=J8V^RlF+xK+P#&2H+ThYXmE;te%O zwU7OE?cizx@dwuIt2Oq~(9AH57DGJ+Ner~)8aR>?*nStgjw*tx$kc^xSHQ3aE+_7V z!PY-zCO76d!P2M4`ixamlS!ek!(Jd;Q5i_+K}7G{bcLj!FTd0ZxVhY6S)c?;A_CdU zoqp_){=M|)#?T?DqP6YD^c_NQ;azVUt8zc9^V$;IRG=%&hukiKi$t71J_H8+5wGA4 z)u}beq{j`rxiclzv@`=b+V49A!WtGxZ4e@)e20^XYJxfi=$Idiu1gg>F@yi`?dH0D_&?sIQQPcUwqS$uBo#up+G9YJpYsm!662<879FxAFkV&Ua#jIFT=FF} zrH=J(*RbD6(jpSs`GK|Gsv=_Z000Tip*=a=ZUCd^dW|HsLYF=DpObiB{DSM<9e3Ae z^9))RUu!PyVtp!Q#EqgeKPAJPUMH?7dtqbkB1IDFCWnkZAJml;^~D>G&zD*W0fF0u zlXmQ@W!r=8Gr`NPig@UmYfV|Sy?+yu<_i(`xN2bI2G!0{sCnf|r$B6n5$CwG14#Oz z5k0X0K|Hk9utDVO7JUE%evz1NrWVV-7m+B-ig@KtUH5Wp+yy7)|E%;%;wKDw-=yQ} z=K+XCgg|_nj`Q|}uH?$dOp0U7Rh{(PzvR;|!o`xlbU4LYK9d*F34sZ!W~44BDtxZe z`js90#%uMSXpBQY0Pje5<>~v=F(~w+;-UuXQDxi1I(Vm%8@&}Ycp3sWh7y%c4tRBH zva`58@=p4u`$1aX65uDqgdUudywSkfW%$$?h&H8prI5QBCjH%oPncYr=f<`SP7mxTEzRFTx07 z!AEzHsqeUaZv!&Ans%_Hac^_E)d%8ShC_s^hs##~zg8ypc+(3+w z$H;nF5{Yd)(V1wryp8jPTVCmL1MCV%caKbWT|L5o+Ic{7dy=xF2D{1%A>20)%(|zJ zx%e^cYmk1V;5}XP(L!gewThga>MK(`JWv?wb2T=i0xeL=(`uVpdIR5@hR^T@r9p^ zl-<67Eit72Gg3=(qI7Y5v!slV9|1~a-)z@RM;RzJmK*CSyZ0%S1z9t2IJ`ESL<%KS zZ|Bwz%^)Mx+}<{5VMn(Z)aQ<+NKjJiW<$|ZB~jde$tMk2UU6-1Ds_F+J0?)dkXwdM z4YNZwzfPi%z}WgpN01y`p`F?O(PHEIT611DMAyy+bi$tYKkQlt{pb#C3o_%_k{fKE z%dCUbSJJGJraX5MN~wv=Lzd{sd}nWY1y=kC!eU!%dR7qPXC?@h+b@%WS!76ACR8`Uc*I41799y5& z*mA{0(=JUIXSA;KOGaroT(OQ4Y4GFCJG;ZJ|H+x$f)K+d)`~|b)!97x)cJ{R*6&`f zqQ36SQ(F}xhRBoM6xe$J=>fxv&}L8bt<%bvOVx@qSqb+N&%#V?yR-K-c->S|P+D!W zJ#Ax`{g0-ic&e4=>}S;f-~V9D85fd97x{tyi}BCJNCqUr4K2`#>-(sD7HWia;}-d< zb3zlEnLHql1P}SH%4i6zpv=nPGD2P{BHS75nVY!cc3j3B8KugoM?BAw*dj}q zwhZEUyt=gd<bXpHDRnj zP|nRdj4ZxMJ^naKExaqQ|%mN|XW}vo3Cgj9Pf#pjVA*Gnz=dr&;@Q0moQ2LM>>51XU7wimUGT7F7GOZnGU{B*153m(0T#lh$xu}J za%iX;G#Fp~++x82?mqPIm+=qSHh*&RD6St^W zar$}gnx^z>&PVnJ{vp2p5d>fZ8b6-_>kMLgfDH^+I>@V%LcvLbIG{!*sX)wq=~wwyI-dD7(InP(lqb?>hIN?}yn9Z>ZYdWfyvqHM zCF=9%z{15wF)Iz9c?&$!NF(EqTP|AIeAC=`uuoq$sy{$GI6jxhr;Yjx_4gl{Y%dqo zRP`Qn`NvB`?@d85pFPKS>xxlY94c%uR%td(jp$?G>w$QDG6)32oe52#Y7#$~B|BDI4>Qjk_Y4rPtpJxJ)r8R;C@Qvz2ZCF+pn%p?a+&W#_m2wKz zgYk!b_9BmTX=gY{a66-|_LD15j}A;_DqmbSdIU=w)M*OEEt&S|7xPRAA*OiAPNyMF zd64u5#_V3-0~^emD!wZX$7-|;<$;hwRecFVr9Ov<`LG{G72ukWl+6J(s zUnHs`=L!RbGx{-#-}ncf5ha5%5`YNz5e);V(S-}vGR;_sluV^d$Jbby@{7DjLRJBl zU+}XRc*4$+%CyW-(G?jT^5k-B4F|rre!Qg7q!O!K&!Y}UXNxz0x z!FPm0!>uzzaE$l`ElAM*u{fZf^CX*D4!A*b=rT*6=v`6f&9 z2yX`kJlM&8UFfcArH%nSxAFbm9r;i-E7aYjT4dQ-rTg-Zr+6c%o2r+Jbs&Iy_fd8)#s#0o$qY!j zMAy`@>_O`xC7(YLH0ntK(FLy6O|B<*&=tK!5LN&2#?0m-3*TPg;x-!H{nLPS&9-7y zv}M^g>rhEa-Yoez&*Q_{L#sFUNe=KX3mLL^`_pFhf*Vhu4h>zMUP|+j=d#JpjreE zXx;-h1-ah7Lq$}~%mGVR(n!&MuxKr1`G`-*vA&71D!ME}t9)}TTe^&3>2t#pChb=i z!QKiscOR5&!W7C=QAKDMc&&BBUV_a*O7Or;>q)UJdxRhMv-Be)QP zz?rY`Vi{tE!c}1_D)1UqDoIvqA5}AB1C=qg4P2{?sK@2*C_K@jAX!jpmrylYx#l0J zin*r9lbZy3uKDGuc{)6{A+8(YNt={8eX7%W5>mOGw&8l-J|32h5llNec)L(WR zD#~v{+q()fWK!-;UzfJt6K2i<9UrCHcKDg))ZD(6hq(9TXOyZP=IOL4L5(<+2tkK{(CHIbqE1#uEvBzK12 zDrUNEO5bMmGEgJR_1*NH^G8JL2_?UNY7_d!#YGEUAPbuwHk^)3@GS>-&sVWyf93ta zOjpv^d{3L)9k}nnyIm+!G^tf!NN=x;|IPE2sw?}N9}9HQkM?i#vsN>IDiGe{J0mz~ zKU|L@FHGh&{|x)FjIsfL$Mh4s<$CKN>ut$@W+GONaVWK)Au~t!4|Yn1pV)Z8nPl?A zIR2j zko+S&x$|L+q$ktX@sq#z44c%>zDVebgY5xMK3+1;Wb;`We4wyJ%V(YdPz=8S14@F- zmbx`fYld8lE*N+#@GF86L?_(yIE{e98Yq#knpZvw2`QJe2e8 zawycL4W>Kaw99~t6PEq-1k~HEL$nh71QZbxH4Q2?D_?2k{PKU~oBv0-coL_Kfi$~B z@M5+L($z3))C!=xE0D3i9Ic|~PaF_#IrRm(K#q$hW{iXr|5n`4@L)e0zRdrcPe0-Q z*`TqtzeJSo0bob3vf5jnK_nKRfIb3&L(YF#OoX~cK^oR;mJjHkSB~Vsln~OzLqVHd~h(wej+eh!3MqLh$eN=MXe5q;v2n! zZDFFOb86-VBo=T$Y-{R1A5+p(&pCC1^EE!<)o-_gY3i5oW4<^n4pG^?+NHL$fp@4; z>=DQ2ddmt|@c_3Bb_)>5`>onRSF&y2!DjDevu%{TdforT2sM*y%)};v<#U6dzYRFJ z)o>0=-A_?G_hIB;C8t9`06s}(GOW(+wLqu6R)m*@UdIdHLn_CHk3YohZ*HR7pU;dX zJCdH6KaaG<@LMYg!ZyEgeEkVC)`fH_QAIA(xa4g5j`Za$MbF04;zLySr&Hv&c5eyR z!kSJdJPaKh)GV8tb{q@x&oHgM>xnJ>jk2(&88aH*DWBBwKi!>K6|s0k;uS@tpzT0J z)AoPr_W(c3H|x462uS6OeuY;I%oq$jX~%8BF5xdGX;fazzVUc=ev9YiO|2Z|9i*ul zMsCe(#W`hoKi#J46*`h|PFl@10zUe;k?~PkRn2YWhOfF8kJVP1HHgq$$WnKmme6C& z=&>1QEYr%J6UV|VSqT8ar0d#cbe!nGfd&M3hc7F+ z>Pz(x#Xkp%-2tNtt=utEg$7f=?ivSNR4$7ZyP z)X5SSOqD}Q9kiBVCHpXrlGZR`ZSnZ$94pMdK2Y#Nhh9+xyoA@)ckZam$&$TUbO`AI z-5hxN`pxruLvn;l(1P^8+27dOpv7vD7xqj!n*s(QQ-IbnGpQ~TouQT=&<|^6LsTeo zsUPr!p}V$EJUUJ%-^K8e;nt5sWxqW3MedBcLRR)=U|>Qyp4olaO0p$TA*8{Y04u$br&CN?VgeV>XH`eX z1{&+y-OdfX`P@>+St7wb=g;0Bds57al4jq?UXB1P zF9odq`i!8yVcc(o4`%V~G!PA?EdYTDz^z%3=-pF`l5CxeU zrj4U+{JK&xY!H=1upr-4?Nj=M5r&lEG{eJ*TJ)5wYdcO0YHGNC`vV-}r@>YbduehR zkr+8`xh#`L2C;gq`YmsLy4$7pAfAkAi-Dj!{(9YS)sXIz|)jn6Q#P1|4sK+z9Xg zcxDI`Egy9?4iB1d3!^WU;Z)_1-Q8-Yolq@ijUa)kEd_It4>BVX#z$prNt!!M1sRZD zD>l;(Bt=1^7ncf{ev(G|2f2{PD(0au5yOT67os+em9Up_0Vt!^8Mn*lG%kCr?Qqr_ z^wWiNoYUNtgFRn`%l-( z0m3`>SQ-67fz@TU5&6}dbtQf`ig&QwN(0mg>M!Cl5e@X9J1m`ncGZ5#nI^Srj2Rb= zo|@p>{OyOkz=6}Z=sj}G-++@iTfIb-V!G2lND+hs^k3X-q_qjsA{#~ATMb`DyPNF7 z!4~YE3Q5Z2|Je}Ui*i{Y5H$B{hIgesUJ*knD&{*1!m9o(>&aEG)Ns|dB<~?4ZQ9~4 zaZLjBo(y2x2(23<7s|2{=P4DMAPEUmz3M-_PZhsJ8IJFPOSKj65MC?KCdKe< zc9ImAH%JOlRzH>OuVo0km#kP9X^B zJ#8eT&@|`w{&?8Lvb>5s)rH^!ZX3Epf&J>cm)tz#WixH?5Z7gkHv+cbG(K0r2LSit zcGCXHCc&4?ye=TdLP$~m-}OukHSTpxOZ2!0eT0Zg%eRk6{~mN%!edD z`>ETp2jA^aP`R)jK@h1q&rQJJdJ;8*c&As5#T(?*Ycrpn{B4WZY+A&mhUl1Rjv@ihtGDpF60I zO1cn<-l2EzM4}B(J8(bqV?+c^gbh-`<08_!+J)Q+U(I{<8pQNkWYVdj!sQmarTQ$k z5N3xERN3Hg)|**XLPG<0;r~HmZ~{w@@~=tc6tk{iJfi+r>`9y|2B?hXvq++g)t~-O z@iViP2--j|qd0b8ehF(;=KoAgPNQr2*Y5{L=dbv8|1<+-{Q&8#Jq+yenQ_-fX(ZIhqfLTLg0V9x zh)f^FFCcGUUk{5&1S%y~g#Bt@dh1ImZ5IzW9o4xdT zxJ+UWrYIge4V3`C9y9`qlBhs{tZRP{BdvTPst!(|jmX{l-6Rb1X}LG3n55C8$&2al{RY1+~BKwQc^0 zj`Yz1_+8fHp+xAe?25G6#wPuMpt_?8P(N75q_?gA#{3~eSoKh&zac6*Zdu0Rr^tCS zV9T4u=bj&LSt=UX4_l`>aeKi!-_<)Mr=XLw>J0~vi$WgB5Av(IomsH^qX^GniqyJN zk~Z%i3Ukq>U&DJ#2~VP9$!`q8;+;(*9yV| zrsi%_HW4A{%!^TidG~LrIcTnESC1C3tz!0CKT`mZ!WMINRtiuB?-q@X3LZBj%fwCA z*Z{P3_(D;}{1;boQHOxQiS|S_MHRcfT3#Y}N>+`2Qsu8uZkh)vj`7Zf( zRtkTtlPS;7hiz(|r}TU(89KErHdpeoX9_qdj6PB#s_xOer$8{1HoZOjPicb4ZxBs+ zOf*lW{ng`(+yPlgU1F*&UN1YBT(BlJ9q`MF`4uqlkYB?Hs9mzRh?`ej9Qjlv8y3_j5kYecvt$yg3J z2LW2TMVbO+yf3_LEW!FviUs$5r?EDK)U;ysA#b0)IP&W?#HOr-satamFW8}F$^x># zNLXi}95h6AqSs(pK)xXp$&7fnu3MLCtOCLOz=#uAM(IJ7n{t z%NPZ268DJf;LRQhsmvei)C$Eq5l6T!@8uXG}&D#AdmwiD5?;7e2cUe;>)Za+W*O=}nh@Y?v zfOC+Svm8jZ15R>f&sExu@OqjvLvMXawNN!y6H(EX$!X+B{%FOPnnsTvQwJu-e{254MFIOT!@L;3@`w#GC5 zu<(04{s)-ZcKqH@S;cMAVPneCtYUs>4j!hBZa#d@^! z#k18%>9--s!pgdd%}0#Q{99Q&Ib=@?qP`*UvVeY3G(MvaBX|2kc=nFXFc$u-=d-^S zK_%SoPBocE`jv*`EL0s`=2a35_zmHB&+AYVxV6mM!KuDDDILpnjMD_%3<{&YT)OB0 z%WskE`~YJsQkq5uX`-qx-`V2YL51;<^cm|xh>YH*M=CA0znqtnKv7jXh(!1#4!4ks z!RsMz_)(m`+&=+GXprfvVd}qybxEGe<$Ypa#YqZTCt=B$^bjF!xjd)w%)g$&6ecUl zka=it+78nfH*6z!{@meC6x>CHe_3$n5965zk8RkYEJ|+4*>591rm2ix(7-lBo|a_+6mf*3 zn1?Ep_i``=a`MdgwNupJqAl^O3Y-pVUk-Wt@iCjt71_AccwawyU<-(w@P7Px+5DC) ztYgbh&Yw+iU<4}LB-eEzQZTcv(>20(q+SI86~cIfg|tK9dp!Ah2sDc_=Fbbig+Re> zl>-#i`jejjH2Ymq8RAIJ@Bv};mr^q5%(XaHOF^qb^;Oi@!8$^8unzYsv0?*Lx8 zV^TF*V9ORUNv>2Q1*4)7fqzu1UMGldl@6>K;V=Jh!vamyG*M9n$lO5ytDoF+HDH4BYcl}l{JuGH$i-U zR%*de;fr&4G-g(2z!_4CE7=J$>5rXACb$dyDCH)c#dRL%OH3Uy_Yy0FIQR1R=BZTt z$4(KXU!oa;K~N!vMq#P$%^Q1Gns(F`W#%#wv(r@esE$v({9p;7K%U?YJ|}BcCsmUkVbN`%wU5}HoFpO71ETsitP4jE0W0m?4cLd0VaSfM zu1AaAgif5!V^hL)Cix{8twTgWRVi@Tz8KvZZUi)>#6v5_(D@q%5`OQTUF# zjR)<-OEo6Jxo}3O7rCM3q7Vl3HJm-wC@!~HYad=R+q2ACI!KCM4f&4D@Qt|T#Ch`u z0zOV6zLLYjA>KgxsdUxiAJ|u2*@$n=IR{NlvSi*A zO{b9dlvSrM@z;%EPx*A(-8BKpL4bZPR7z_#8}wH8*@?_pzuB}3v*2M$_=sX>FBt{% z&8F72FVzvo;aI_+00fQzxPKY+a$IrHMqLPXC+<>IeJcHahUTeyhDqF7x%&QFb&nC~ zm0c%oXp?Gy+S->pK7(SK%XDgH<2es2#t_^saDp@4C#3Tz{EaaSWq~~@L$S|Q0p;(; z)A_57*YD5-qq=7j05O5+Ej4XU+4G6;?X+VZg2lpd>ox z9C>2?l)kB~W6JNk7iYL6`H0t~qwx-0@^AVNH3!--#wL6NI}_L38gN}3=4ml^Xd@it zuPaAAD%|X3z+phptCU%xpoxFA;_sdZcY7rw_v1PBK9W3xsSuPuiRd1kldTNB{V0_! zi=z1`Wv$S1u8yGBZ4o4q;&KI9g!f%G96BrEDmM6*Ssj8ohc~=xq-u5>oAo``!*vt` zjufnY7VEI_=hrsi3%RXe1)c*e*#cGLs)xgwXQ*Yk!O{kzYc7q|+m&#UW*TZ`bfBKi z9V`c(E==8un=*=ybwUjibA9+A6gkZ_ulnDODT|d?iQ3uhecMx#@VsFfVgP7Pjx@CV z=)8<(z6Yp;!6w~_wM>u7Ak3(6jWYGx`V_B6yZm*s_bT{E*+}rYk5%cp)tov6l7d|j zC=%3MpMP;dgvtvPW%VBUTJb9cb;+eLAp+Vac3jkjj0RZ87nX}#MaqpnVvLe{#RB*R zp`A+9YGnLM`!bbk#Cx*ZLu}$9i&Xu4lVnC10Em zFteMR^wMheZ{`TF8snho*ki6@(Zvct=m&vY1b^MWJuPJXy}v_eQ=F@GSjAwA?iFd* zHx34J9%6}3pSJSdcMOH}P(2W6>Bw%Ba)IQWkwbx`WtJvlQply2>I#vLj4hem8@%Xs zk)~2iXt*7xGP~H6V=u!>gyQab0{n6VaIeP4ph$P&WSLk!fnP{j3@5Ub3*YfP;ebH& z&6E~f=9wnybS8^jD(SlW@Zq&m#^mHXMd|rqY0&lRTOZnkJC1KAU?z|Dtj6Iw%;d1$ zmP53~tajw%WRO@?wTQeFIevTNHeCX4AgPg@66)1D;4Y5WH$4S8g)$Ca*_%R3hzNA2 z^=&c|&x8l%=DJQmAjj)T%W*|Ert+vaVIyydbvNQa5FoAr$JPUyvgm9C>^sx?*aP(# zpyDOJ+~Gvq9O?(=?8?C;w8qipUOeCA1MNZD*QnOVa`Kdn@HX9r7A1zw9lguZVsjN# z8lG64hz1JCL?cJ!{2+u|+SN3G$T?tnE+GS!v9%fZJxAHyA>*etda0M>sqU5Z@Rx>l z-47>2iFx_X(kv?_fh?UUer+7;nEGt3LYJ07rAzyVnS>wo2wkj^>V0g!NhKsYzO8npSzpwu? z_D^=4HMYh1pGp89@i9$~a6WtvCtu8L5~O%%Kt8$s0{y96T@y~My&Vkcc<54XzL>e_NL_52ytnVt6MJ1Qn_kFi_}CVsoZ3B7d$LNU04kE2YOhU4RwMPbJ9MiH5|EYpK2pn(%D;17AxUIfwH$T> zzDXHLqaA zd0*Wh3v8;DY72H3Ce{QFNTOyj>oAIYa_5Dkh;Z8(!}##iwz5ztyeAT*;dRJ+v)StN zjF_Am{>ZEnxKx}Vc1-&YyuaOM!*6`xjvmaL*jZEU-E77Zv=ws2(pnlbnM#iPS1lc8 zynHs6!=}gjz=4cweumUZs zp+J)ZRYd2SCt- zEC!{g(M?HKvK>0zFa5*nk z$9u0^qPNF;v>wZYDM8a<&JngDvl5+3sxV`N$nY(~d3hQkz4t}+p9z)_ReHH@M%Ky; zI}9pJX>tNGj`n^)G)x`PDNUqd(KKdByPJlRyS7*s6UHueigCG3S~E{V5U?tWRJQ-f z40ht5apm<;&z&L@d21Y$s;H$r!Z5PZBQ8W_EO4tzEXyR@-KUD@cw$f8L%K z;d`#!a8&s5M)hDsC_mf3aMVq&J%rEKepdkhKLEf5Lx4VHUSJnGy9_cVWZJ2*+s(jC+@9nDr`yd zT91h}G&>lwcg^>gG3}i~yqm9|acG#Hn`u)F1=?WbeTT`@(iG$eol`qs& z@pvT-kEMgP!zL@H+B%`trMTKyf-gGD{g4L$xWMMnu-Tw39FyyZmC|te<j_zHqF?(joSUI5m;56HXyaGdzsMoF6lxq{&<5td$-!4KzuV)EZ%Js=I8s>!qGKA$HK>kW4DrAub0!+BS}3%j$jdh(@E=wHWv^<^PM|w zMKp+6`FZ?r5ZE_W=`q@q#4vMk6?+ruo}%cm{Y%c!>-CelCMBz=y2 zAjqfC7Tuo!O2FMs6-g&hNd|*u#jK&VwpEjZ#90L2^G(pDX3ND)vL3@pa&{KQEUn7LH zsZx1zXRAu#=6#Fp@M49WGWH68&~ZmAY{5BbsA5l%((;nD28EhQX~VQGk?RT6A~74t z&=MLP?zsH2U&v*V0aV#If>Tz9UxKuP|2MYj7P7znVG7;#G!N4$rFGj|Bod{Hu>h`< z{we%l1zuuH2|e-b{rRCba_0FYD&K&Q!K$J~C2~D(G`B z1M;$Mpa+(vc}hJ0P?pn}?h6~1hox`gGrmnGxM*I`nGk;8eXdV*3l1Cy($BydB}$t;Rmfy);=G*|GB8O*|>CD^AV zI;ht0N@W|f9lr;7cenQ`H>L7Khl;a_u+6VkSklGTHh$5ecc>9OL5_X^V6A0|oy_ew zk9lmrIg552cLT%g{69J$LNwgr9+ZSVz|PgbDI^2Rb#6*T8XaFRB5FZNW(K?%sc2?FB56!OnwS?sn@l_(mw?NS>v)=fyUfl};#xJXE z77je(XkK?M+1J-12#kKv1v&4zFUBCH8Wj9x@Od8evO>96$9sF6drX{1eR9(@ye+*# z9TJZ)H`4Z_VWbf0NuAiTy@X5Oej#*q*yoP3My3~q2H@hUIP7k_y@*w;D|pI;50N$= zQm9x$C3*BL{4hz9eSx-%EE5i1Tk9kcKm$2y-9ztg&ajn3ux(8%^T2yiJ6d4~O~3C?tQWx^Jm|f6N>o z2RlN28C}P{mTsEX#3cGLc$ox9D$RyvfCZ>2bqE3DXV>n+Jq)4m-hKCWIbuZKn_1w9 zT#8jm9?Rfnl;QQ^T-RcocRbT@L3S%=*4q616#k>aoVsu>lMFwuYMq&ng*UC9?qzFK zH8kIVJo zKSb+8!SIVn<~E+$K~+pV?y()FED4C$vFrNbW@8huV1Em^v~PWR2CLfz0c3~f$qo^w zISG~Oj!0|WoPUau8ZTw>7f51zJL~WjR%*!#FYu8uT333_Ow_hSX%6UrAg$^P}lM%y!utRF}GVng@`{B{8bFEwuWQL z7<)9g<@ps|tv?(0g5|Ni+hDeD|S1noK4!-I-V!=Y#o;Q_In_tR$3D=t#p;+lH zDl|IAlQOAUBcW@Rk(y=BzJhmaaYyk1A2?EjX`QVz?#-+uY8+|Kp0@k%k~ z7@-mn5L^8Ly|08Pb%W1iOtypR2%(1_LbPI6l)j#IlR;gyg96)yF-o~G60BCLb6x!2 z<5Rr3CXW^bMZ&hs;619*~D z0vy!jrWyu1zjR4Mw|st@F(}S2gNE!qIeKU!znGzV_RUYABp8G3Sc?H2W!kGuX5+rg zOls_{e4M|;G!(Fvja$~D-C4WydE#SiE=&sGjY&}3@8xu5benY_UiWl5F$=-hR5X@c zJcIllPdbz2L03%d;*IR!Oz@+rJ)0H4)Fap*j}n?%M!s_TS1-U;YKqA%|97n_n02h=#?qV##a zJ%=((dsnPKR7@ZTPJ|e8EkJ;cOo{wV?S;hbVk{OIlB88DPXjNe00dj~(N=A?5XFO5 z682~Hn7CuHN2_Kz*(}mkbHJXLJ?q&Fo3l zuuP?g4B!M}E5Wf1Rf@PNP|R}pFk%J{I`th_jO$KnM<%CQkt8`+eK>u!Gl z^C38pdaKo)C(S3{CB*3M307_t?X;iyy5gA zPaw^HZ{Nb`W6;Il`8|RYuA;a6wUrUI2=16nfMa{dJ(lz6*YKg|5h(~ye>56xHl7XI zqW)hgP(f-pXO41%`W*VPbKWl6^pVeS^%5%)tE^sj&-glZ&6BeR@hD?AHlRB)5)$+d z*F9#?K#JT8-&em&&PU~JjQD`}n5^!DEatf4jJF|YpuUn|-)ZlG{;E6oPf*52io6;A zuIKHbH$asrd3vDQ1I?$}|4_~J@a0n#5=af!Qu~MdZZpTP7xWgd=U@ziJPuC?SbhUd zQaMjK7(``47igOYE0Wq1^6ht!EcaawHcFwOHj79V_ci&)4wCOu$X+MReV(KqrT;M- zxyMT0$W4)HYGzYp*+P*$C@@jg3T-`?D-$pD^PTjaHWWvgv7cy-iI3TM3!AmtB!#QR zA=|)YXQ3%VSwu6SZ?SoIx|186oW@3Rzw%+^rZpN{+4Y(oE(dl4ZZf`Gqay(og?bB3 zloL1VC{Y#Uz?T`IB->L4EVsSx)J--Att*1`F~IrJK7P-nFycmgknp~_ zU5)#!G33AtutlY`x(>{jDk8mXe^t{otFdprB4DRq39_(X0GmWj_`5=q7}1-2+Uvd` zqoO5ig-$OvLD6N7eFt@JsDDPS+e7A`^e(8K;JO`+=jh&3ESHhgm_kF#yQmtz#&JmI zS;ckwH=PA2^SbLHzE4N?TBg<}1$D5S_WsQiwL9}bi)ToR1cP(%GZ}$bm#TiC3R%@X zLfPY_f(DtTLw)`-AMgq+N}r^`F9peF$Mp=B<5Y5*3&lPzmSUwNj2^^O2#f1LyJ@T~ z+zWahVc5?ejG1==*#R<7yFd-w7Sy;G$zP&c2?I$n=4fd!zw6uq*{^bh#=CgL`Uh@u zPM``(+sSfgHIZX%Dn-q_`6Z>~Tv*j7I}VasA?%H)t}+@?QRM=*1;Y0{)Q>+Zr83ah z)J$#ILNwvqIMC^dd3!!cVTy70lYm!JmT?`#mTsBgNZopQ9BxN3;_e@$j}8bV z6F^plF9Yq3HTIpiKf<2oe(#(B`;XVSUQ9>ENO8}T*!-nCouzu zQxeW$AwB<_!kgVE4mlG7LPr#JV>Ru8m0;edwj=4PRUCm!6xHak zk3UBTRM*q#KT=DMZDaJn-Ns%UL4b$8#V9m2-uFFB4(i8gLJ%T?+icNh3gZPlVE#Y@ zzm9#w)W2G$v_6EwI&=DALt$|HL4Dy zhD&1mEM*&(ivWG-+ovDS4qYk4Rhf+afRr(0)eXkR(@YVtQC#UD?PST;zQ->ITW(iY zHWsQTXgPr`djE&q(xe=XlMz^@=zGyPgt9a>DciZGGC}92ga|Ccc!_TN?^-jKcoH;! z67^^9Sm;xSvL#^9#=_3J=>cakiJ(F1th=w^JjCcM2wxlS#p0^tQXcLnjhKVja0atW z4Nf-; ztY@GG(Vo`tq1hStM*=?4soEg!VrzjVe30=rAYaaybee(X^6M{~rVu(FZ-+c@`gmb} zRLjD_Nrrkdxd+^?t3g%#4w-n9HPcaCVJCySIIv8o_K`&-BO>f?A}qFMXS=uOXcxpN zd`d&IwnQ^bU<)IMGdM~6cm;pHygJ86Y8plpF~sozq(wLwq#cl0q{+zso;XN#Gp1r; z5|Of0b@d8!k6$gjDB5MDGeHQt%la(KM?)z>|n9xd$zJ1Paa3{f?tR(Vz ziA1oG1?)bs<}lh!pMMH(2qzNdgk17p3x2SE2)_iPPn9zEMhM3h4oYz;iy^}NdkN4b z`iiZZXsiwJU#US-@)TYW$`do_yi3Z2EwoHZz$TUdE`8T8$>_!B6jku2i6Tmd83O3L`$5qW>L%_!dFxw=%pbH;Qr z<&SfV4yc29&_=*tL6^|lJ=M;%(3fK)#AmQ(BtJir35z8r@3_v$m2M_eS`Ot|kKJvu zN&IC#OMnz(Rn(r?)(%}tP;^age)A{*-V^Gx(8-t;GJCv4=cKFP{k{Q@t?D5xX}-V~ zFF{0D{I@VoFH+@lrZU4kt-PQ?5G=GjmGhEXw^h;fWHf9e)%u9Y19IH+$ZOC>l79T& zYWz5TY=#%HJ{&;njEz4Pos5s_5$2Nv-4} za0O5(NUf6yP$`-CZ3<*w&`Ya7`4g+V>`QpD!?dgRgFuc@aT;A7Q7yudeuaU~uUotEdUJ5D36HzjU{Tdn@@=9L&6?dX} zNkI!udmnj>{!b>j`Vx*46du=qANIa4u$5fjH5|W0lGJUvy^pc%Lw6l)aHU zF`O!3q<5sK54>)aq~oQKxL}O5QDS%V+ks#e(yX85{8#C?H>0(l{2<}p>$r$9#LTr* z8#1xnulNgrhd!~OT;?3m^W*K9@0DV!xNe3u!uABbmJ?`UUA>PH zyOCtZLYa(98=#;2bv3wa0lk>iWrSKLfaEu4BOJK-Ej2$31nKR5i6d*kp5l+Lw3lrw z8_7YvoZ8H)^RN|*j=%V_0k*;AxfBFT04oiMGD;{KR=2$$@n9&&-afG;<4!vPsecDM z)DR;oyXh;7x;$BO@$e6cA!GzQ{c26bSP2SIT;xL+cF9#3gaIz}+uaiObYqKc%?YJHdd&WsKuA>Ikh z?R5+xS&?q>`?1h?+vcstr^uuW`Z3#TwVjOWnD)1QfF|qLvn5XuM#i?@v6w z#)s+%&}dV&0a#~X)-oto?xiDAh5)o?%RI%~fRvvov-%}ij$*)XznQIjpObdDTkuBb z(4kddNKFaUHchiX<>mh=4HY<5Xa0L{vC%nb6)Ozgk$F`=^hzQBOc1D1f_}WCy^gCb zsZXQGCjvPTB38H8Z(dS(yFvi=lNfWt-lxqSp7wHejXZy8cAtY8M{K7M1+Za$sM)$A zv0;zxSEvdySiDh<|7)J)A{%jTC%oqsAzwY1}uvN5MXOqS~QM`3J<4S$ECG1i1mV9e3kuWemZc?sGIx7&{)1Zyl{~gk8Frv6`LG6 z-gMD#FKIS$Gu5K5h*0NQ?*1yJjKfsYng2AAtGmlPfzT!gbKNz56;lHu0jm(15i*s+ z;kP_{0CyfpZBe8n_^U+j0<_TOZVZ`NE2PGy_?}?y5+QX3?p3HYK+ZKmSPr)`y{wGq zxJU1S)kJYIqK~IA<_q|XNS27UJ^(&03aW6dB|61qhED1H{)v%YWjUp<5hp(v#i&C( zU>daDDrr*%axnw*58JRhbSuPKGdmK7J?H(X5}q(}E^5#mPkhQ>yhD+W0=M&~I)j zCXmy9cifKyXy1aFlV*hT7HLH~ZQZ%;N9 z$I|iKHOo`X?2v*Q-$w!7yCtiYJN+5p1%Pq<&5-{pF3t?w3q)IGyp{=9?gucYod7Y_ ztSr+v;cJ~K0#v@nK&+n+h-kX;f47o>}c zZ^bvFRk;suc$ow;d4N=EN3CGW_Y~nm*q6H+dWU3BCCmWmd*E0YR|K(T3&t!1JmW}n zNn?-};;yNpF(=oaUS8?7J|*oB4;2u}P{*ZQz=P?yxoN;w~*j#1B-jpDJ{B|VM(d4TQJPU+;Q1@E)Y_}xJg z2Eg}+Kz~|c=H{v4@^Qx*WpfQG_lf;0krXIteVCrukCR12iWZ|>na z%d|JTc`@F1)#f4uE_VKqF=oae{VMJ!!3j>00J+H=55_8$A^$Gl3zCR21{jdbJ(lZd z`XU)*l{yYY=+p#+@D^YnL%M`I@ahIw2I*+JdeRVR1+dE;DjEOBker6EZEgnMzMR6J za{Qb7y8+AHb;YI#p1>HYaQSsGzO~k0b~1%W`J2b}OU-SSpx~aznNkGzqkxCS29skM zgX|~_b9rWy6JggW&PBW}Eli{RY7Tx1rMdb`59oa47Fpn@3KNG4w3}48_9L^P_M5b_ zK93W@w*Wy>QviL6h~Q0KHrf7+q!xVtNGVn0(6C_W?$7~i)e@Z%#>M12Dx-t}%NmzoTQpSI zJ_y-;YPE=l2NeNeoIbC#cQIv3s7*Mh?cM({ZRxasCoU@C2#Nb~0A^VMWul-xSe}!Z z19nA@WF~zDy7{_mOEnG3UU0Z!fr1Y+%nUw-{eFuo?ti8zNKkWAX$OHBf6auxehgbM zdHMgVK?NiaqQj(7##1GgEi3;L=x6i4FqP%<7R9af8#{4uqo^AZf*KK+BpPeKU16~T ziS{0|j2ePkd?U<^oQV1{gCdAwYty9c@h>=56|9RJmi0PGR>~XvsKF5XwZy11gLfXG zHmJXN1_~;zi62UMlWb=e<$|)^{Lk;U{_B~(Y$D2vQe+@&a}_<0TDjNSh*cvt$L*=V z#it+p@EU1Y${tMcOUhhy8W^H|D`g!dwsktcR zhQGS+uO(Kz2(4ddPf?}n&$-QC92X_ zrZ1gBLrOo77`YI9vD+6bX=dRadTd1W9IDHfurs4y&$lg0>yKm8WgDv&kGtSYJr*GorlSQ@1d@+F z%fm9!D^6KuX?>7}RmM<4S7suR^LFw(Y)!U7)#u^=#GaU9&UVWJ`SU@%zrgV zaD9CnaAt8HIziPK;eyTPZH3IgCm>NMZcIV}-*we!_1RQ+HbX-Tt+jgE3YxTCz4jxR zBpW_4NywMTl{w)i48qZ*^py(ImdQU>hp2O@!#N&@dBUGI2eu8fu0m*2eNbNQ-Ccy* z>BPKv&oKeY*VSd*PU{b^QcL@=>Pn@GhKdsW==wC7|BGxoX+X&Yp#{PBufb3?Kz5G2 z)xpiP|Cc$nd-7i2{)krq7zZZm3DHA;JR^R5vHQa#{#Hv$imQCk1{Z;%)aBocD;_8p zLcJ!6h;s(L6gntJ8B&`M35OVbdE5*C4qr-F7-uP9eLxMB?I8rJ*~}hMQ?DHW(B3lY zdR8q=T;|Y2Az5+=euV2W3*f$2aQ5|DYCFI9GitPB8NjZu9z**vE1reaOv6B(HftHfW$5`Mb4{$$Qqnx+c)F%n#pFKoZ@8hQd~E5VTVS! zOb3qGCPYQctsT~USwKZ21Ufcd`~UxtA|uHwS-U2e2ys6_Kqnc;#-vv{)(5Nclk3#P7&=_>-KfFw7E|KNsTM$_wB{drg34F zm`HQ4mmfNE&5^Kp;QmJ;e?byqig*{5#IkJk{~SWA%J-^3s?;76H?qaiic}am%#B9+ zgQV5__nE)b%gKq=zfvsvaQJH*FexHV?5CqMcxL=+>R&Zv3dLGYH#I%0Iosm4wMvrq z!GecU_PhnjPULITz~gvUHL#Ibs$qvj!W!;~Qg|cJL`C7!C>-}vlQ*0hP1EJT(?kM# zmeV5O^fiTB8B;V;b`8hRFap#_Vn9LS{vt?{;X|ddP7ki5D#air!=iqm9P?+KRn2R+ z!)$l3`KwRBslMaFg-Fah@TbNSqx_Wg%FX7mhyjX@b?S#{Q-i55EVI5L}DN z2drb|lvPSnEqEF=EiWsr@p6F;5mIsPTn5SV+(q{MWp)4gO4=%oRZ_~O$v;2cyc|j;>0lT9yQ7_Nz?H=*j zUABs5j`M125jsu>565GRXoWTW#GE9dj`n;ZjC-wE` zaZ+@DJH0BaJ2~B|d244H6t2ytUW4QS71*?bZMx+BE#J4~$CxpJw@>C6Q39tdGS-l5 z^nUmDzza{NH!y4qMj|IjEH}n1ijn2j2L!Wo&P(Oi(%Y*$3 z78>T&-M*J8eoh3K+&RK&#hcwx$#^M6YH2HVVqqgfSI-WW2de>=bfKVPgG;{-xZ3hFn%;$ z37+bc3S2NBkX?tyIl!;MoBBhD?n$#u^6AeEw(tUn33tNK$$9#g*2yZ6{opAW=F%V? zH_p2o3Ge$qpkqg4w014P*DJWgrSoYk7ai%Tq0*P_AheGeJS<>DuZ*!0644VGQwfmP zn$oGsNfL%86oon^pS(iG#DCv*G7&w?yDy?!uQgJGZ#m%(YD>k>FdqJj*)4#UGF`cJQAWUP>K45-8Q^1CIeXy@ zXqx@XMID}x_h_xa=CSc7e#i}3QlwlVm%xe9{FnNC0Q+Rw++%t#J2)JKY&PLj-9_k2 zBRYtY-~?p)3<%24HX^)skiXQdcO)UT7?3;$6F1D#fR`$ztP;XKjEAE)eE>DYvZ-QIwnu&{F@gg368UrJcMgabxFBOCwa9(T-< zOp5%tEuOv3xj*~`E3>!^BZbskXP~!a> ztuEo6*?enHm0<3Z+q5#XwoMYGM9UH1@zOH^_=9IOP$RJqOlnD);wQ_$z9B?K#hf~< z)z(5Dr$Qv_7#pzqA^IeYd7#kFT!nPzU3M|986k_WzJ#@LR zW+k^OC!X_O?!>T znR0&PDtwYbv7-cmHS&_>h%p~8+!tBPk?QwIa;Qsqrq6;f3Xm>vU9e9__oef7U7wcd zi4q0F11TeTyCz_HSrCe`fs3(U-Jqrmt#bdewNw(feSnoZ-hQ^Ujq48*hr_{<8{<=AS_i6Xp6z3k$57XKKnTmH% z)ewQ--3$XD;rK!J@%tq;h8tlQ8HU41AmRL)!bFQ1PBW^|`j62)FoEySrT^BL*%NkF`_29jZQdoXfk~kjvDB*bIlOMKnI6 zL=dO+idd}0` zTr&3D%A~{-A2C%W*=fwu?uj$f|3$Wd)A?b{j!YQ)XlHkXryV2sB1@Z$0+O(j@QG$G z?kKVTZunjQi8o7N#0%O|Mp*BU#@}pm|BBlny9|&vq3nUv_ft-zJdsQuGT2#44xh{U zR*xK1{G_1TQCIn$>>dHW6?udrqO6m;CS6K#8}Bc>$0%u1{YVykGW*Z?@MbU&Z>dLy z^cPD!+uAiynt|y8^i;tAeY%6t1i!q%O>1a#P3&fG1O&&@^KaAKskg`HT9^7GRPXRN zY;l_Z65}y$t;X8zPDzzLXi|$(T|*u6LZsWCF3DY0olk&*fAp^=fhjrT&PR_-7BAz6 zX+5Xdr~0!1qS8)u89L2KLbk$O@Lz>N>#b3nP3>kaXE!EVvvX2`H%+;zbP`bBDsEDq zkC!{9_CC(arr`3XK7AA)3@l<}WZ|^j_B0+CBa`EKrN5Y^=~~VlEeW=I%am%rTYhM2UUTusB#EwmlPDQ( zXf-PqZGRlY|0h@@4oWx-SO_mZpW7uokq{fx>m!+BL>&_jo~)!0p($L-f%GOf$N(*< zPwpNNapPR-UfLv^zn=7{&Lhzx*>P@%1%5mdQVTzP3mamaD}ppf_d^LE_dr(+V?N2@ z%%p?SnCP2oLqjJ^$&4aM%xBfu-?4HGZzQ8^&_9#4m>^J~YK5nKrPUpvhTRwBxt0cS zg7ZSpGmVEC?rgc~g7^e$&1_Gi((D&^uu6h?o?z^YW%8dg5Ju`hOT;L7u-`t4oG<+& zaU%cN>z=-rpz$9ue4@(-H$+FKf-d00;yt}jQ)st6nftY<8G03}=il;w{4zh(zbQ_^ zAPOoZGuc)z{;2-!n&a%L?Vr7<^5uGD#lkkGB~!!ti{_0sKwZ`Vp#p1LLyX; zZz;-NuaV(=ju7mYNc=o$cE>1JHg+IZcrX`q(lC>yd(KxLVBb9}Atzf@)@u;=;t06| zS7bF}wzE(C7I^#Y=ME9*1AL-}LkTutyNw4?fw|x-4%+4WJUKJ~={B8y90LMZK?DvT zg%Cp25&-Wp5|v+8XYX;@n3BG78;8L0oc{y+Q$F?~ww)s@s;fvQk8z?T;nBqdlV-cX zhwviyDOC=d^^+uEmr$LAgbcf!4Y#N|LP3@V4aOUJ`I#Su;h%6-+yk<&c@KZE zBfRvM{j^=9E?&1yHTTs$s9&HQTTZs09R+C{*^^WCJh`~qW5-lCl&+DM#_`50Y1XFl zTSkob>sepB8ggBM`hCz6d!exVuTC=<#RMPZYomN$`uXm^T0+mF`t$AWcwXcCE?AAc zw;j)&*O_$b{iN4+gQV=OsD+o@r1FkzdmRM2 zOqRugE8OwAJK4Omvh~?=@+5%OLwX&+S%HF680c{}Hq_-JxFR9)${3d>g)}mXC3Ne2j)r;X4oPO)xf_a823WVzS(N00Keyghct6<^w_N%I6~vEp=F7 zy8#je7xTy00|0Q#`*ZcBatsY0?)gQE^1wNVZ<>wB(VT4@S|@kl0cjc#Iy(3SzS-70`Y{iFglsexNberREJz>O+-;pua-r4^#k(}S|=Qk<>v9zvqv0p$lK)U zl-H*IJ<-9G6Bg$ho$Ap%#TgR~u+#WuUCe7!o{!`EtrtQ4N7U75q`dbqEN=Hbl%>M7 z5-$xxQRo@OWX&wrZQRjShp2uYWG+vmyqinH#w7wcpMg4CpvvjW$}GEBE&NImvgPzC zOkCZbB2i3KEbTVd{y3FyM}eY%cmPiXr^ekFWWPHRIv0(7_S>ym@->Q~iQu87?=Um; zpO0$`4}RcvI`ggo={pIdfduRM=Fi!Rl!OMd`UQm#OmTE5IWQ@?Mq*YM?47YcxXaeD zL{uche}u4w;>i>eLhh3JA?$!sH=1}ks0H2bMaB27>vjPnvKZ0;0AVBJO5{q>IRbXT zL$n-qYS#v4KYEWX)6W^ypl*j1|G&HSK?ZBGP@r~^8$$#ik2P3e1jU)Py(QiO`dvNJ z?05D1&JO;uu~ylm-%JjDQ6d&pZui@d+O_dBzQl*2ZJbeWvm%#C*1f)EEwjoyjl7l* z_k+#pKisr$PZY|nT2tmK6t|l}zp?EP6cSdMIWn&&@CMSWQ93sB+ICUU)0$nhm^@LK zmxJ6pvgXzEyh8sdCXluu3)a$iE)KHD|GaUZ-_9M4##Hi*`ClZi!Z%m(zAGWXf!Q~= zf}(J2;13l>$P7aASoYZ<1|UyHZ%+T7QET_Dzh5&l%Hc*v!=zPx`{V&VB=KT+-kqy!1$;eMbD4zgyRsmr8Mj#! zTw}-@l$WG;&c6IwR1^+q8zdW2~jjP`^`wUU0g_nE57{D<+} zVKoPASdNT?x5J8lCuBaeTZH0ndIJX=&i3_{K~(HhsCEA)u4BxY^wA?%-#HDj%(PDj zO&3Cy+RK$)awM!E3HllH6vYY%xCxzQf>{Z{{p7L3<&^752h%&n>G4dV>&TGM@|FTh z^pQkF_Fh%RQO>t4-3@s0UNt`o>pY58d~`*c051)-PR<63OJw_F#U7_!)}hEr{@|L~ zwKw4dMO4i;BO7C)iEY^B)ms5;4ZraHXQdnTBJOBA0`7R+4xCm-iQ(-|!6TVnvtA6V z;+7+C^S_hTYmK%+Y42Jq+y4t{=jnMK{@Y+8DQ51FfcRr<}Frg*{+XU6!5}z zZVD@UzgQIU2#-)eYq>b8fR@j4-^#pEQfCJCzMfuyH+C4}^4U(y)CtD(Dx-bj{fh}r;I-57#dw#f zFSiU6K1g8C-7Np0J>Ju&rJ!Ewg~N0|RX_M|HTR`aF(TXT66rQ?mSDYrnqEjUoEp4_ zviVvQ?wGHm00>r_=yPsppzbv?St9Bz!a|)weY1rY`Q~ld$Ir*HE+!&>0x3oU}HhM zD#3PJ0cncICZ~q$ZdLm3XIJ%`yK-2(#Cf z%0s9g=mk00n);UJHAjuhGHQ5T;pqhkMYP;VFH|1z9)`+c#oxQcZ>`H&@&y{RCOYb= z^ahwo%%X(=3IuhYgncM*2^XgV`klLqO=!Hh_G)Tm;l`mn1WdGlGx$6Xlh~90+#zcK zYVVgS03$m4()Xb)e6$Wr@b;IgzskR0JOKvhF~0fdbxJZioJ+cB*F+rPc7ToGz51ktxIsazFLQLN^i2JajIbg)ML$0sl>itx#FdP-toA z4R8E0CRe-KG%0Lf?2uY}$8>ky9_4SlMGiu8T%w!K5X-CXe3TIFe5;7QKd=hJj2DrE zx`efV)zbi*j0PhGjjw0=tk`kR<^^r{QZ7JT3oCrynBe4zuZjNMm)2f{;vS zUMpe~_*uKAMS0W!!)EsD#0Ec4ZTg3ykm!G{qNn>@JoB1hOPY!go$>~WyCjj^Nho|z z?K)lM29Pw7EIuGDL|3*4!!e1+ahGRVZ5m|_Vp9DAzsQL#^*D=kL^$UX;pegQ5+F%k`a7pn&p*t+*6C1*jUq=m2%9K82!vm$8xYe>m+ryOCJi zc>oh^CVo7@S2qM4W(#T=5FNm>VtJ5}W~W!7!h{?Ts|WZ@m5t=pj=OnC1n)v$4y`Uoi!W3m3N3#yJ_ zw^xEA3a}aul$(V$GFR0BJPx^0L)4CtuV0Ilu)^>Lbc>-{Oz`??GgWo!($?3C#7RtW z7n8Yu|45sIfm!;RjaUe!uiS@8`?DYE#Nf$AMDD<`^e77bT3Y!oV;8fbBsfSb$=RCS z8lTJnP6nJK#S*@f->S&3;oDtn>uIidt~?u-PI(T8R-P*H(h}^hS;xjtAsX{e{@D}; zs>13qi6|%39g(UA)!Kra7<(pK@?_dP;C%9b30uP6fdacTvl4~or!Ax2c+H#Bpqf&2 zM*rSm`TY!NLjHyi{|i9mT7yY8)(#ZEy7H03Qa!wxh9aS-u2iVJUrH$Jw$w~0ca zpJ(3JH-iAdC2_dUm1$=Y9SkF2fOFZUl@0rgcUZUGkgsy0?dhPDg$xJRY1UV$AzYOu zV|Vr}2K;_m-E*n;WznNoFz0}AlM=YmA(WJK1x=aK?3(rN?$+O;lqWvWREWZ9>-Q3r zdnOS9js-H9px@rAI#G5>$&!h@97>{?4!Sh|c6rI(8-**sMjI}RpLqgoNb#T?i*uxg zD=IY+450Y`&c)K_J^udRr;^kJQ#pA;f>?Kze#A_6xxVF&i$-3ki#uKWj7e-tA{Vmr z*}+Yal&Y92`g^^rQ3skFXI3itAvwW-Fz>m~&wRhOR|8*IkjwPDKv2Qu>2{mZrMm@a zsrqJKU-23S_Hmo8F{fx{tv{`jV_%y-IY|XS9{)k}!>@uXS0kBTejX>$qw)YGaRL;J z8XU6OsL0&UFV3aJoSt|8;1n&O+e!n~u7-4+|T7_~k|y&u=Ag(1U5<{+#Yd=-!sOM&y;Fen2-6aGSBJ z9j&iR(t`9o>#*r-M}|*)WyJoHIHflu3uci!+H*p@5Hhuxv}$*B{vnhc_SL7a{G)>Z z8LYzMl~YdMzc~d(`4-=>CsC#=B*%)&C%{o)P*D$dX_=b=m}4o=31;`$N|QaL?j9Z4 z3 zNsFik>7VsWXsa!N+=^|gUVw-}inG#7(rth`(Ib6qOVp^+oRSG zQj)-*CqBFe^ZP#kS}pF(eTzav7C1sTZq(%tP&lcqwK=aG+f_IDgHdyOsn&f**VBdl zxdtrHdc%~3H64cL0pdk%G>JroSN4z#P5?? zWI;54Eggme*OZge^j2_wTJPS`@i)ZYROUv~hftFj(g1+1U-vGoCjx>oD=%8dNrW{> zu{4vhliDQOE{s@4WS^v_&vAryqa_VzO$ZVC1;l-J4_pBMKLEhJ5jNFojoj4IQI<(* z0p3@Cyzb+c_^Y1oM7g~j+*kx(hHsM->6}tu&=A3mh!T0yU6c=iel8)Og0syjANCjU z&L6G}@Ii^I9b_DO7U@@KXoj@e2o=vmZd-~^qX31s>`jd1M>gF>3VPHQvR`eB%fxuI!bc^PBNp~uhYYtwPs z7+5eQSbS8JM&IAZ-D1QIc6u4ckn6FuUt>FHc`?dfgW#6UoN@?5M&{)^oett+YwC#S zpCuM!rF#U9S8vMDT7qt!^ho%`BjGw=`%2e2=Bp2eKD$PUL_*TfktlzEF0qboHE!Hk zF!sU#dIFMl=Vi&^OE@t(y|FKojq`41B$ zk+Lvv`+Vfp6OJ;dLeAfCovq`Jv}04}@Br2uOB|h`6odI?J-k}8)>(*>$$N=RJo2tw zB}s+w5?$;n!MPYu1;i15@Oc&ozFeTuj$HWoA+m^aMr8||!M(@i8d~#S!piR5uePx{&6fVhALr^~WSfM- z^_N~9s+W1qystVV(Zc3 zZ~?S{!33rcUae4;{)&LJLrtqi?odW=EMPDGWM6$~`Ho$*$Z=Eaoaj=ym~v-TSktrT zZwNC@y^q1*a0GbrO+={Dtu@U6v(w`M74=Oa0b5Y8-KYZsd%lC$OvtsD*)Fp!(Ufk5q77=Wn4tz04q+)AMfb+aZBlTRR(A8C#QhO$^=>U^19Mrb zZ?(B6t$8VpQJ*PbV?*%0Rs3T;cNGslGSg_U!*4aSv#6dlId#@4549*^2PLRJ%Nd}X zDdgSh0h*+kub^-EnMxY%I@pB<)UJ|L2I2W!5u6BlN*Py!+z)q&G01r3<4_xTbSCG$ zn6b8k_z1QKmAuPw!^`C7s@6ACGjhD*XoV!OqlEn{CN>-bF@z zukP%>r4+t*LDXnZg44)veNM*;Z32-J5q+04Pk<5j;G_I(`syMwn&)3ILx%(BtFH0V z$ro1tErZfp89r0zbR49+w2g?n@U$+FjRh8sT=b&@*nt?N_pom_TOL@y*;#HsoeRsf7%N@i|5Gh7;sI|C5m zaKgSO;c=5F;X$rg_ciJ>-N@^|_?}%5SU%k*fxF4RRuH0M zI}ly6G%*x~5-Mh?$Yv7`c+5^g=%|dn^?xw$EHSkShHR$yrdqS>HXveSV7{z&dieJr z$_Rw3;S`QQ)Txy7XEvnhcbVuWy4*ffPSx7nE1M_a(S~v)ur4m_BVn;E1?oZHh@A7 zJDtF~L}S>;BjSC{u^hREb3$y5x#L{`r=lO>!rgBrn+8{$LKw_M*H%^Rc)Omy$uTN> zqRyHK^xT}#xCfG6QVDpt67WkXIaa-{wBZ4>_fzs|XtY)k$HxW_NY0#KY2@NX)fl#; z$;Sa2rM$JbO-ypZbBZQ8@ThqKXXI_pShZx6Kc&)*-13Bk>&uL-zpPYlZgUHGv`xMM zO+V^k(j4zv9)|m8O@c`h48ZuFMq&~38Cb8(TKbrWFrK9YcjNn+&BO~7mnX3@|9}uy zLfAxo`aB+B=QC3egFCsdUE*kU7UqU-|B3sQM)nkjvJc3cR7kF|Dq%oZAV}JIICfux zj!VMET{sBRm~ea4`rtOTKO9zbz_}FGvSmoWEPY)jg@La6)FHOUW(0P3Z-H4`XwU-8 z#>@?{?B9}e@?B1a4vcMt363pn8O)#46#%cSz9A-8dG@w#K3@vgRGi!-f3Et%TEXIO zE*&k9$+$Pq{1LwW22+mJfzx{GV_nP(<-XURN%7hn*iM8XW_@ukd8@0bPK6|*1{a`c za)|32z5e_jz2M~;e1Pf7qJ3AJQC81wHdTOGDXx)S`}iVBb|J;aqwa~Y0F~g_Xy3cM z9~gH0QPdjambxv%WnF#4~aC zNAfsOD9%=*^1q$-M!9t1(nHbJE=>cbGs>6bbZDZD^(~nZ zazpW=)lxuKOr^Z{wCF}YMmK)br3)JO$+ z;yu!pb~gkrVojRP^&D5ybk$j-m!xk8DO3T?_o8&@S&N!D{x`W@QAzeDv3avfosO$k#{c7wCkWff#4PKGr{GtYt1P6 z#?ZrTS;MHY=U+?F3;GusA}FYW7E;}~j;~?(+3MTMi%7_jmEO~1C{;P0Syai~!PYrb z>i66ZgpRqP)5{OM)6L?+vqg5xs~qcT3($@vg3{@hhj1Z6)aT*p9ooT}sLXYs6q|a# zAUv=(<+z-}o0HCxoDBecAj?(RiWE~_*@(t_0+JU&tf4%kp?NXPS+EaayrV`%Fy zo(}rfQEa`-D~>T;Bp_{(qEJ~XQhNhLoQO*zU_ejiW(E$m<@v{fkss^5qNj@gcz)=y zJ$V}q{yEvL!M)dCgwrc0;O75Xf*zZlk(!K44}tgY=Fp?jnkYT=tA5l=dBt2~fSBUb z!}8Ijal^{Gf>Ct`r(?00ncXVJ*Kd{9EiyZ>DNV@cQRppc;LTMiP&N1A-P z3arL_xzZ>Q8x*hC*D6xyKvEY2NG|n$U?#{^8P#gMB#`8u7r?vAkrtp=wxTrS;bBLS z`=eAuR$2muh;hd7MLCu3lnMIxc;&I*s8;nFh3%8(mhgH-XBR18c*l|ed5-9hOv1y| zPTy=-JMj3T2ukIAL-+9LiHu?}W>{n3J%p>BfO1d(K zFWC}27R-*)>n%qu(4292M3v~V!xMyneJo2JCyI`EMD@dRt9-CjM*LoueU-V0Kw{ua z7b~Q8o6%XA`{n*@%ehNio#|LofuR8cUz9078bsMI5`5SMc}#bbUV_A^Bsuo11j3nq z((^HPzdP2AB};r25V7lPfd~4K1vIBewg3ZKnml((8r0i|Czz7rh_<0P*a%k0L8sk} zGTAG-2mXvsMtj|Nfv$fHmGy|=L*`zRauj3kirEL#j#Dwr#e&fH^|90&Q`2Fz=Co+~ z+{%#*aQ|qSSJS)$Q*f|(9QF~HFt!{BHy~=@hnMp;<^_>;LMf3kR6_EyO zWMLm|iZYw!fYqRdfe9&{1sz8j`elzrlYtz>8h@?3Cpd3{Auo! zoq2$*XoO?Ku$omqn&NMk6R6+AK<#P($sOI_^uM2|8IS~K^Z?uJjR@rdyA=jZ=VpJR zY0Tqa&Pp0qX`D~b5dR|!o@RwAXby{wPSH&oG~AxAwXA+`_7xi@_r|y6#jJ|Iv7_oV z^bzSuYPq}R6(9hNY{@~X!Vzfal}s>*S!B0EctTqx_jHs1N6PXPe$IPaTm(D1r6hA2 zRb$GRN36d*+ITW`J!P90;NXP2twRq^e${)lT4HSrv2IWg{WyEP5b1xHC=^{G7Dw2E zdQfoz!FLTk@74t%65_0%Ca}Add|L^+*h>+wmrZM}8Is1Ns|DE)D?Qsy9o}|G?!Ck< z#i+35xb7G)KE-e87H?A1a+TVj6pLteU(94+IJ=PTSLq9GofwuCPG8Mg@NCjCtOTjAM<7z_NWBBPy@5z{XsI;jyqZ-w7B@oa zM`hCgVv*!8`s^ON?izyv9Tg%G2r!+-=15Gpk6r@1$r-jL{$3Pn64WJ2J~9bWzY)8^ z^{DPkUW4T_CP7jobswKvIL`Jl@6`1r%l<+NJUmdV#Fa}7n%?5HTPT04VB6A(0cQh= zY8*o7Qqk~i5i?Lqk4Y5@^s%a~;^R#5I$HNpIt}7n!cPuMRn3}w}yZ5vo+*_SWH-wd`lk#J7r5E z-Y0SL6A5#k_`~JMCj7p?Xpn8g-Z>E@h~n8>)mU38Eav{e4ua`;Fi_Y0Ja%?Wp6!M* z@`hw!_q~MMmKJVQJ$*vTi43t?kg!z3HL1g)zfa5ora-}5)??pVdPKxP?oD+@2A6|P zQ4L?79&+g4ZjK90h}#XqRD0o43I;O`LAkr4zuvYk*nj#fRX`K8xwk0y078I;$HnNQ z5*Mr*u4*2Lh(CR9)ygeqK-L$YQrqZ3%sehX%4fsvENMEs=^?dH4KWy zDW6%yfS#UN%_B}7mALUeHgfqMyCBCnDwkjtpY?6}PB6c4iiL7uYrAr&v_uF-QwH~27&fhmRl>ern z+=DHoAzjTGZ6+G`+fvT0Sm=x5HLU<(*_EGy*MlD~2L#N=W%Wqa6(R>xy=6Y@n}|-V zX2yy%-6+UN{X*__QJDQ^8Foh#aVLV3Rke$f*Nsz|uEKkZZUqflPsd+g>Q<*WflN!9=L|Fs4vKT<-+bt^~#L6#57JT&ZtR%Ge zp7Wtlm_LfYkhUaLE3u++I8eq;%jjx%JTOi-OVxlp406LIdXZ;p1txKDJ4UX1t~}It zPc|UtWAc?G*ourmq(}2Z4T7PR3TG;D8r4qYEf8Q7O@sxtnrOZRMwl0KUGiROEvRfY z5R@v(vBK0G%Le}*p1&6d!t8(P?;U2K7t9SM$B#oGG4W$4c$9e}nIA~v!yZxr{g55N zNwN4JE3gK0#6>h#Y{U!q0+zi-7}ZGk6Ft&~9gs;4%n9!6YL&y!8+_r_Sbd5(;`0$Q zZ_X59iT;Wg!*!#h;H3;#CoWp`(p7@qPvb^QWFd!L%L3140)%MHEhVx?g)W z+I*UOB(<_Qf!1ZRgmd8amP-LD`P?XJ1OfdbWMH*INwSlA**U!@F1OKsg!b?D?1di$ z*R6&*ku01;0aoI!yru>M<2HQa2&&kVn;`^n)N(CxmfUen6Rf(XPIqZ_Wre0C7Dn>B z*p9o)?6u`@#T<9Um)Kjkf4mwP)_~0>Za(bFIjkTHmJz@$Gn>9k#(XA1cXbyCP)D)y!_4v9371Gl``@Mg@Q-?;*A#+83Bw0#mF~7iv!tyIpX-_=Zk-9D~2CVEAMV&)xQjg zFTin+TOeD(ti!k}(DMRFIA6yDhhiG>kx8s{u5M9=qfwK>(iDy43{D~9THtRj@vPS8 zJw1lFB9V%PjKeR5jz6LgI;@xrUk~cCH}*IE>mF{G{r-VzC)S-SNHh&*z3F5*l^V!> z+pY7ulDeu&2EU|$ydg5?SD5Gnav|Qf(W|pb-R5@De3s|La2E4ICR4$87>O7sdZPH9 zBEc1S^R&q!LzA|9=p~0LFMiaZl|CPjpo6JAl)m!)jW1%iiYW&ac8UVGb>9)*(uv^E zgjs_!?x-dscxQ)k{^66H&733aupcJ=A93VE_I{_GFW-rZ+!D1#bj3N)RyY0D>R!6^}wv!;V6 zx18UAhV&dI7N5;>apHQeP@Nc0!@}{iPCLVnoy0Hs0AtP6wmN@3Wmpz_7|w%L_bBra z{G)$1uJp1%?~m6Cn^md%?Wqn>XCzUO)yVLmCeKTI-sl^qd{Qa?8_DXTwZM+nPD~s6 z7Z801JBRN(ov?;+NhD^khalKQxERCG=_BO;Dl>BI=@{tojsAHy1T^2;LPrK#_LUq% z=>SZsPIRvSkYp(?BIcpcfwhTysMM=~4HVE9%Pm}Wm|NWckE!b)7%79)ataDv#i7$? z4&*2@;DQZ-)vSr| z(smUXrAW3=b7X`c35$3mT~xsaXMNE&lsWS=BM;6TR>*9mFCc1xgbA(t!}l?L#^nLi zN)Q{eiqx*>BFPzN+JPb7padS5h1RPm$DRMGe_!W3wk;MmXMCf-T*B%L-^Txn_GBnS zvaj0qxac}acIwBBjN8#m>a$&eB1`<-UshL0(|k< zIPT{q3DLeWUvQ-VYvK!>G3v8H_w__(-uV@4B#!rI^tPKm>1liJDmbmk{tvyd6gWc{ z`TybvhWC|MsP7s$b9KfwJ2k!|X-o7TNBEA|)d-+0{rYT>11ApCsr@`B_d_xjNLlJG zn&e4S&dOT%agB#Q*3~%Zjakqh3b2pHAd31|Ah-U{nFIu%A58S9@{YgCFG%--V}s9j zNef>yNS`2XAt_it0{1VsphZYYX``+&wT`!tu2_dips6+!jMrczJ%YHmgUy#pr;%Ko z&N8K?&Mx8AFCLWp@w>8nU(tG#z@>GMWBgq}eZ^~!e;}$y68SK~0ANE(SMgw)iYL*P z1l%^?GjxaP9|UI}gU@yvA$Vq+4B<}ae0ZhMPd3x2IR3@)og#KyiIUFU*6%B`CempX zEU*>PevXGo1=#c)YF=$5G?ljq_IQr(DQ z$p^`d%F3GYN1jS)ieRg`8Xz2OkW4_qW!o>UWDMihSun-On?Ly>}cx zH9WfuhUtS%TV4fFl$8BSaWIqcTT}=JBiP9y3 zw!Hfp-v6b#w|%opjaa_pL7@}=?2qAMn^XHH8F-d$Ug~MK+@(`9=_Bju?Oyfv7-0L* z4-K!7+875Rmn=`G?oSUGNR&9Jhd!*1B;(zZ{3pkOmgd00KbhClO^Ufp_+)>DZD8QX z1&3s1-w{UDVUtGZ2X=PEY1N9>3$CE{^m-rVSd}BrIB(Vfdxt*pJNq9{_xNQHiu7vZ9I%W}n|KvP0ZCHrT?>J67j0;e_ z31_%FZVkX_P%O$x;*;<75F#OQ!b7^`5sGH*<+F)XP2sE6b)b!nfE8jNl3V8Vd*`9? z57uIv{0>5etFrBs#^?fUBjx)qi3s5?WcI6Xz@E%;zxjaAKr<#sjIyWqfK#4YtIP)y z&C-b`=d6bMz_7Fpl02rEtFp4>U=zy{t;p|qMelA;F7PK1t7H4fMr({5G^^qnUqUW8 zZdmv0q~zJpQ0zLY($8KS{LB*lNVX(~!sE_cm}s+f=UET#L$z-|X6_sJaYnWhJei0$ z(=71mkR7+u`HxHp%lXp>4ojhj%fBMpyh%{8K$^C_B#cgi3&0bq@SEfOOQ079v@D0P zvHDD1_2>%eP^On}1cO^|-&RE@B&m5gQ>Hw%FZow~4a))gG>#cV>A`hcM`a+GEuS0%(8#b-lkrcKS? zoI60FO?5xH7$rU|CLx_uNI2(FdIrhO%(60N$9vozULW5xp{k%_E|*B9NH3VFR_cU_jX4y6Md1L~Pf!G@UI zA;f$`-nJJkp*m6em(|%z6}S?+21|8FX8X(d@#6VSV^*?7ljvx=^61U^4_I|luR~dJ zj@m0Fbd=l!XmYcLetBtA=zi>nz*0}e6oDm*)uP0n#i^lxuJf2t6DLV zxO&|rN{7Iw$agz+Q9cMcc|WLJ>~$X^wF`YDoqKp)Rn@Z$WV1EHqwJi7h1zHW+9VPZ z9X%s`sR~7gExe5gd8FuR=mZGmojZHhTCO%nrmIXXt$QWHGV#7R_70Y_7@&&Kx$!Ve zf%KzBzJMQJa%g-6pC^LrNsq*v&I9)Nm|7;hJyLk?^}0UDfVgEuBJ9p&K?u)T{+8RO zc|<3qY^S_=>qdO{H;xsaN!@)X<^7V;ytd@^NW{focR3N%TztgP7uqNBiv`Cda-4xE zUCl0I?*=s|jSTn0HeLiWc@2)Ag|gbK4ld!F=Yc6J!a|a4a>THWcgH z)HQp-4~ou>A#ab;F{O7X%O~Q7KNIm?;sC8T>xedUq47MUQ>#nF4~8YcCnk%deAhlH^O}Fi_-J}E?tMf8}{+5r!c!dgO=lH&D88i1Rqhhof6s*SJDm+7E90wF$ zTF5Re_C$-jbHo4T(Fp$Qkv6ktw+?ho;Q2n=9(_e@hj;&f!*=Rt$FOq6NVS6}Weh+E zRFT(2q&clV$!z?S(1KR@cUvXI0yG{Rx;ul3XEhSynliX66L_Eb>2%&jJYtYfLf)RT zX%WW*ObIP%Tt=Z)g`lYxf)>f;M>_1dI-c+zu)2iI3JtZwLmPc5$3N{~Yxgy*ZvoF$ z&9G((-mk1_FbHqf@eV=-AMhe8O*G2$=bZoeFec3YfP|Nir-mO||LvTvC~^%s1-^rq`&=SBlITnt+((7L>6f*kPqSEait7WhQ!5IXin1i^2gw&1e=V zS*?@z#*1B+azj^*lct;NcL-2MrJ-{ntD#PDn9i@=@a>4;vF__E7fMIE(Ou@A1G?6V zseix%FLb?2eIN1vPYwzL1Sie2c}aNu*CDT^tG~EQ_^iK9Q8o7}nSYV}efBpDh-IS) zT*<;fF_QAa--aoEXL1c^neU@IUd9pEhVZH-H(1f;j_J;5fO2>o`XfQ6mXjO42>J+M)%1WNny@uj;8#PbjtaY+WWGO-kYP z%>|+;gYwGaI~Qyw64zJIB0=3_UH%EqV>~?M2{7L+vAm%Y+o4P{faZ&G4wijP37u5X zp-n8r9Ru>F(t|2n1Ia)w1PRb_Vp_)(>X(Y(@QT5rn;GV5c{EdJ{Ba5w%!<+b7xjM-k_VCUWI732jndcmFCc@+flk2n zp0myY4ek+lkJNGB>zd+Z3eqp&ud!&4OD#ydJ>2?AVcu-d^0+wN+3#i0eqdiz;v{Cn zO2ycNb(~yG)$3+wvBA_B?Xr_8XRfVlDrE!>Y)zS0F(ONT(}&l_>vX{}frs z@(U=qd_LPTp>EWzN#v6R2zesK66zi(a~w%cp>yb8FDlz3%-f-to{*rSnd#+I5%yQY z5r{ik*VHujmVD2f+^yQHJP9Xezn(VIDF1~P>yBpe@Vc*+r-N5FkvpS%Q`c0JuGX%k zU5uD-yozfG+jOF1OMJK=>^$Y zxbT^)V-RjM<*Fn(L5m7|+6A3xH|!t>wHrQH$<{7aG}U|GId+lo9e};WTXEShynzf$ zJn&bI^FG?#rm;<>zt*Gn)Wx9UF_8?D*C@;Km5MIFXR(opFiq6t9$ea*ZFm-%6Yy*T zT92d{(`My?+^p5VX?88PYq3zTaXCUUY7w%wj*E+s9sJY=bNo8GL<<-D#YPwOVvkUq z_vqzAT*c@>6NTh(9D7j@kRzrg3Xc|vRF?PMdF5qp$tJ^wDMgv6f0s1@-ApKndwa?0 zP;_7~G-prxIV$U~(m9=-Y#6@4C(~hTKn9?v5&o!$%ztV-f=pFEC>NiurB_oIWGZ-ah$Y29#2^u7SX60NBlwvET zo#I18XS+*wd#QL`eugKL)yzZKC>{Q1>Wc~YhEg1u;f9*v&GP2XF`P5RlR0jfx*!67AKi602P$P0ElDp4zPi( zWBb~&tU=ZAb7nfte)-x%^CzqSLh$B!rrrs*B9a^|&j;6pb_4APv83zz!$ z+27hYtR@%%q$Jm3eyPx>Pibw;|)U(mF5J64*~2-qbM z_NG^r4#%ymRX|vH(;NRkOJIbH?x&0oK%6sBb6Nx4!40)C#dVuet(Jy8sMy4z=h{^| zr5z$CH!YHyW?w9bKEQBr?RY&Y{))6?N{mX59Z9?$D(tJ@ktM^?ADGa34jp{_3?s{T zW%efH*pkAwn#+~5>|HVs1BF_ z$gc;_7|6Q?;6dJB2=Qld=iGT_EGDa}EKV>EChk*E4(pFoo%AB2xrYgC(~Fl+JA{m; zoehoOA&-Fm4o~Va+cj=mH+F9-z?QV{3LLaN)xvu)p!rUz!2jxXLUJdrtRpN^kP`jL ze)(fhtu@kLjsXQfXpBa?%w2}}ZqaUg7R78;zAb#^-a>&e7HANdT?r;ZJ7m(JL8Ax7 z-FVUtv8Oclu>UNQWje$@Yq5TKpH81zwU!mqw7;~Gn=@9Jo}^doU6vn-e|q&{k^b%h zt3FbdiLx_&dk{SY)DZEVy!j2#)AGe8 zGiPX?=I@FrMDaI_(d|;gW*eSyLudBTYMHu_IXhD*Z36=Ju6hxSv4e_Hx@1i&N4L$S zxYkwoqCG0m<{VvFK!b{s4#Fsy}A#zP~yBhpoo|wiO>pN#9$afk1D^|0MbpCRMZ z-?*HuNQEC9Jj4cFA8qohj>&DfH3+AsRi)V^I2HXknQTK(rJm;F&BLv#7}hCp+Ie)C zK{DqFyO%Tj%x`ul>A;xI{imCo6=A0y#VhrUEB2Gs3(Ff0&nl zz4MQ(oKEPG^4fr0>anImOmjV_4mG+7cIrz_pXx>Z@A~ezd=@4c#b9fQS22p|0fZ~Z zrME|3$ruKC?Z&ONdSPJUQk@Io%$2mpH#&rX7I;%@0fZhK%qAAn!_^Jx5~tJ3Vk>gV9bclX&xKLRRz3cNl+AZFd5av+Q=dqXKL0Q$&{APImTFc(3gk zkO$PgeVIwCQn#j2QV5UWUL_H;0R571QJ-QNucKR^^avEW&&i{5;f-Xdrb z-cr<4wrF)+X=jZ6SK`r%7omVJ)pvQsdY8_$3tS;vV)b1`I<%sQpK{ffZ(@k%k(gr_ zo+wLZ1UGF6G)W#JVq+6r80$;W^I(MJlg;54BNBJ*pLAaJx_HP9ICVMAsQOrZfmq@3 zpy0_m%*B@oWpTg}$S|!{k|ezuLldbg(k9nN`ZFnw+3J+AG8$m_Qzk;;|J4DwZdeWJ zA|e=;t?#DQy} zfEmGm+eT2{5x0|cgvb)0QYaugl5X7Ex**#vBXQG?8h}LIrrxa3!au>Eq(3WdY9kk~HA8wfLY%5$z1?d6rcyZ2#k+S1v zp%|#op;<>=Wo2j=wY_Yt%owRQ!<@rVKLx}Z{VBh_WMF^(c3>vDC-*is)k#XqJC$3e zn-7$Y*nR=H(Hc9SVLcsu-LO8Q*Y2bMi!T|uoQtK1tnI5eCvIO*^<)iTA0&wTk2A^& zrUX8&u%Q@3a=d-d_AK5%hn08l*;N7_`C{M?KPVx!wP~A$qJCgWsQ4=*nLzL~N}5RA z@a$wvSathIQ^u?Df4V=)XkMpR*K#MIi?P@jTjQ&i=kNe$=ao*t2!n$)IJe8TD)`2R=>ur?8SQs9BOa-LL>^Mi^WUtL8 zVly3`JJ`7VwEpTG!Ur+;ZLxxNcFqi^f?a#6@+R#X=@d8`9>}^rxI$C%kpN1YVg}z~ z!=A!#CElXLcRWMQpereJ38zxocHK__Dt|Bx*oi_LTyoVz2#QeGVHX+IYjBJR`n=k2 zB39Apmlhup^lG+s(zJ8TviQmdP`sH*t|3wAtH!}AE#KTc$TL?52@JEtub_W?8%Dgi z?kVW76Cob()D*3KJt#=2(-C{Q&4xN=)`~xag4d2Zu)paf7jH8>cnyj~ni!oox`*6H zQ{P!1fRN)}eHZ9LdKzFkV?r(`)#Gsv4Z+H^*!tMrEyq~eb2OxS$zVZ9=@8kfCo;4? ztt=kvXk`bodq0xE_(aw$))p`NH$HovDl?lQh=OkCS0xgT zOGC?uH9No|Dlq%rHj_j++)m0>4(Co_|E&ZGisUDBFq)~38t3vnuzL(U_nFT1KL^;p zYnQ=r`X3-fQ`F6QbBvf6L*(qo#@0>J)phyR0jbbSGSuR!3zxbcL3TIN4fX^Cq9Jv3 zz;zT0LDA}pEk$%R?$5glOIa*1E7-Mi7t72q;CZisypSeBwmCevJ&=cLZE)+4ZTk7k zPA{houM@S>bs*UZ-e(bNN-m!C*Vkw1z^aqr+gJ=90i=W{65@Pz0Fl55AUtKAkI2!< zLf<8SyUQ{pZdic@vMsLG{_ICTe@J5|^sSS7=_I%p6*CFF1cjnlNO7gDhiND(ZMRn>6?ko8K~Qq=XmqIf?f_eW z%`#Bdqj9fJg!aeNeQE=KJ7mlmJ{aK(s>N`xt^?UoRoe5I2D9L33dYEkX&hykkFpu!V#RqECb~qK3aHCoOvFrL)?^m%5sYBuinxmm z!Y7k*;oCKXOc_GqJBxmY``);nVx08y5K;6==j+E*#R9yZd41+ATGA zfBRi?=zTPHoh9uV0sAt@2wlw!`4DRrN7T;}O?RrkUJun)?{_?i@VBSWp!uf5n=8bh z+5^fNVRS(vkQR5*r8uiV19dhJ?4a>iox$YkV+AmlfZ`wsP57(PZ_%!?|r-{bj4x{nQ8FeBN8Czpd z`?Ha(hFBpjY5p5GwF|)O#&B8eNr||KKYA3!InH={*0n57KkjjMN|T#fN35BWLYBAG zxG}a#1fl8LfSu>ClEp{zi{@cPZ3tEFMGmP=#HLFB&5HSJi!&IXQTUDE(O3v(*Jpvb z#(`5Z8PWLf$dOV6Z5fgqQH`y(5F2ReMx#KJzoQEjiKMzlF|+o7qU+6_uAK?tR-Obq z7GIr|i^{P4S%tUh2K4V>AYY^@U_*zI6cp<&XzRepKa&`P77N)0w)YGf&(xK5cefc(I zJ*s11I6Xp@-agD>aJH3vp-ge~-x?`lL@(NKz5GSWG~BlZK1bBe#BC|L1qh1pOXwjg z`|*^+yg8IF_bbqtBjON^) z0&m>=qPG_QDx@JAL7Dv0m0Wg8Yru8LbN#4JdB;(t;Wp(J) zfCx(I=iEr5pP%VA=Y>C)gL3Lz2o|RLC+ME5az4Sd+a)+4Qy0WTLN}W}He>4-gX-2g zGB=v3{SnP{YJFimF(DwjeDqxMOv4s=<>tM=D6<7zrh~#X^23Fl2c8C=hSIeX$JL5T z$iCrLh2$!CFlXuVLjG77|6^RX2W&v(D%esJ3)C`$*GB=lH|}B6?QbR__f0?e?!tS_ za1bkh+GW8#^wcf8g7V;_?2$^;U@gVmej#qBpEGuRSFiwc0X|d zma`FNm)z@#Pa!SgFaLFlp$pWnhl`BqrL0^v6ew8Imwn8v*|H8zY_%He$TQ{pGZ-Js zTV8Z&Ofi{x7lvb#?E!dm_NE{^ghMAycv|@}VQiw_jm8+g9)-hd`==Tu%qW2ctq7Q@87z)6?PS(de43Q{D_hl=Z>U zh=S!%wK27<+os&$!CNbz9LNF>KYSwR^bmdCOY}iH(tkSH6~{SCuB#A~xpD(H+}Md> zO<2cPvHHXh8G;jRsfnYgZsk0kPuu&jK!v}!X! zzj$PB$Z11A7^ysrCF%NHC3n{Bx*3rvVoB^ zRQf+x?dsM5B1-bnXrYwgp)G|+G)BM5H^LyG9W=f)Q}7E227%v=)T%H=$!uqVObj*V zh_H$W7{oLjSq7KmLawL}BbkrlqqJ>-E{v2@cLDIf7MbVN7z2~U_lY{Uz4CfTun5@S z-l@r>dbBRD$z%{&g?`EuHwG0=f31U*Ew%dG6V(n!;MA=8`x9itpamML^77SaMxO}d z@gk0a%NY5zZ_Z&b4bzI~Q9xuhRCYNov&_X9mMV)y|NAb#yfjsW4UmmE0s!5Kl;V+h z=okr^=$aOHo`eVYvVN~gFmhMq^LRWU=L7#%H_2||$1lH08_&wwC;V9)j&~;)ipqe> zjBz=HwybcZS)dg*L$qiLZq)vw)16QPl+P;bjL!&4m9auMxRi|iWq#+U2?8DIkHali z`SkV^{xl9=iU+*ckXYo|e!3|qRHyjZ9xS4`VuUK#D)>tH8ndFooVTv{E+{yaga zhQJTJkf?g$m&rO^^Tq=lx!i8{`}Yt7U9WL*K=h(xTn{s2&ceRtA8J5qY_r+7QnkY6-jf35maC@He*kN{$U8uEY;D~Vaoo!?i6&_bMMzIU~DIj4DQd+m9E z@^V%spP5oi;La<(%>fl?-Np@+{=p({1f5R#Xy6upw@d)r*JCMi1Q4%NiRwO`8ME=0 zHV%u@?J(>7BZ`aCB7U0$!Y1ePmvo$Y*I?ldg zK`p2VgF3a5j_(!GjVpxo=fVY4iJsqi z|7c*H^>9CDT=RZ2f-hOELq$}INal6}`&rE{II0Dzz~g+b?1=p&Cnmg<-EpV9E0|HZ z*2&BY)br-dM#GLz$ZRzw-D<~-pO-~tV0aoye5{OKifq-W&VS}9HjW>GSY|om)EAZ; zOeT>r)WonNi~VjWx*a^A>nvP9(ayMS`cu)%Vf`|v%VPn^eqomo@{}O^+0e`zRR;e&m&>ZWaYCs*<(=;P zfXPks?xi@pgnPeT+fk||Tz1W51ZF^lE_kk0pc7pWUmiRRzbs8pg2AWLY{YCglhkq2 zX(2k@I8fSiM4>r6yYx<{S{7C^Wg`QPwzy9mDYFwUSYt|%2gJzdl9qzu zzsaO0+gQF~GxJ}V%I!3xN-sf_EY60Hl5UH}qn7k1`-9{!d%Of2495M1| z7zE*$m!}dJIiso^X3z;8nSb_>;I88xJ>GfBtI_yHsivXj+EVcI@NKQbwciIuM~6xB zgTJOa!P)XJdvmDf5wHaSn;vM!Zc#mgXkY*v6QVr`bk1Ro?}VO|J>>HMdMIb^?Lp#cDjA9M_VotD!=Lx?B{c-DctOJ#Onja}X$ zaVJC60>UuwnU0{Muh7=b^Zya38I-n3oGJNphMA zC4`*hc>4FZ0qwuapSfeB|J{c4a+!4nszj+A5tzWaD5n9eL)@_`rO*KXKLEgZ9=`m` z1ghrAui8Y$NJ{wXBVKDGHrA5-4Z>(?#KmyfpH09M|O(i{83WF1EZ!{Hd^Li%7B{jEoq4Tr9j^LZ-N%Uv#!SBX|vHr zP(k~?70v;w9&b}q`%wSgTovZntnDRUF6<$c20lY`{;m1v`S;NS)x@&2xRNC{<%w=+ z`RP@Af^Ox6-u7Dj6B4%OH&vxC(%f)_#!|iEovYyHkfFpWB<%Z8@%d3L+F@_;cU~3W zAgthxZBf>^W{KkOV68iHg8x z3mg=d!5ri!SU9yiIgStjY%8{^`^jintjeX_(uF5_&3KIWu%g2+yw;)k%f4s4IYtEq zd;tCR@)`}^P~(3X)C#|(>QCXw>tnP4k{bBoWhtq*fo&9aO7)t&>X8=GBd-u#yG>Qg&8w3C(fXeH=8wu)Sr~BWOH;NDuXH|;_@%! zEk+X7L~ALJ<1UsomU&%a2QCi!EoUk?!Ptqh8o+|r z*LU%i_#jyk{+%)q-@|^0XWTSyF1XyG#-(>DhwjECTWQ%4$+tw^OJme3BgxQJA~ut| ze(y_a{RQ(cGhpOOp}EaAq~8SXgH>>_(MR}lu0#yY3-D|UCZ$TjG3qjpxHj;s zZ9ZSdL4h?5#3qt*8if<42;4|Y?i7racgm+S@_jjoBfq(oin!dQRX(iPA$e;Zk(5`~ zz;VhL!a0T;B=Ku??GI_kO8gNR>vIScuen9P$(f#f{e-iCoQ@e(|J_uu zGn&A|34B7pGy&8C(!KgbN?Iy`G>&QprmP%%TK0dYP~Y@kNXNGHvIXjP&F(-09q(sL zxh!@UT`6q520j3uw*A)c*Oez+*$kGxc0kY6A5A980S$qMv`LMoK#a<-9mqHV>Fu!? zAtS<2Sev|W8IBC+|JQ2|8Ki%v-EP^?KhIu9FspmB#}aR;zW=T8kIhTf5L9SBUnJ@h zC7^;N?!Oqe;NeaeH*pgd+|{EV-+^>-ejxBKdj`^6N!97UC2kvyo3AdBEh&%&= z@!KTvPXE#wDb^W(R6^TcTOn(*zz|N$hA->ttd^y_fw!Y+AO95p&oj8K#wo<9Ma^$) zmCczmfrPH*@oQ3+h+tUp+ZN&ci^}fac6;U6L4}fBlIq;#;{dWeb&KvnW2hm#m6K4$WY9@Q z=sR=K4!5t>k7_{7Vt5Wd4ahrxMZALoryiSU?d96qqowm!chn7~Fp=||X;af50}xDk#hR@M zHhOAfatd>x6@Tmr-&~`?h9lt7kGt|on2thP$ejXsSjD5P)T%s&XM^>3T<P-X4GM z6LMgiq1a1;?JB6_Z<-U&xE}jXKmOtb#`bG=ylW?X`#dG(5)L|_=q@)m9AEr$&ek4O zldavA*#`Ft!m-aI3LUA%5|9(GDzpe2^e;LJjQ5i_W-bg7^{`b*DTnLyJI@OwanNd= zqW|#nthB}@232rCpmBu2gm&?^ccq*st{BjZXWEqqD`YZ(6J?P$SE^XT$_Rs41T_mL zVxB%hJ>+OC!g4hd;k0moGly~@mg2*bLqfoZ zr<5afKZwG+Bi9D(S_wxpGn;354>8P5TWv96Qp7NuzGp6fy%1?;SkOrnZW}h%HtWK^6)YXA0fggnnMM-t50A)vrXi7n7`dQ&lXp?cQb=89F?C zrFArQ>*}}Ifs}fmWZ{6|_ZJCczj(e4B!q7?T%hcl5O2pUu+DTLVFRcvLj>HsZxudo zjLo_i1OkW`Beohw+E+u)GL!^Z?IsH zqP<5SLuOl~1>6BEH65A~DRLo3(2gpHjGT?`lDv?lYgetv`?OW!%lb7vQad%A*odyn zR5Y8~q#!fJImB>?QCE0)Vi`9>%dTI_FCnxY^LtjtFxP-(8LU_sjXBfl890E%}GG=~mnA358Li486FV+Q^WTa)YrC z?!HW`fvn|)Yb%uSsi=~`$Hzd0&du?4!q+#K!KIEYbgciaBp_Zp;XCkrK&&_U%q zUYd_e_wzyE3$b?*gNM_fGjAC3_iK>8C z1;Z=D-K&F<6^a%lJMrz83^o~n$^LKn{x8|ZEVL%!1VzX4diB)uCXP{#cuE9<9XJ#X zms8IWq-S9PK3Dar=kOb?yp2?ruI%03#IMY~WE6TDd`o#8=xRAgbJxHI(0dM8a>Jz?Z65*7(D?gJyfDsY9 zg+^d@1%|bYxTNaS7b?d_-oM!@l<)oDF4pn72^kMYm(xoe1(Gh;#1?YhG_HCqq&uek zAI@TLUZLphkdbl4jqN;J`TQ!dqAruy7>r02x9gLXWGR&MKT-%41m0DhJaa$s#}kGK z$);;QI@x_pBF~U7_iVGpr$l*Hg!w8XKa6wLVPbRtP@KVU%}j$oOR!;C5gXAAe-@NP z*Q6PS?hK^JEom$g(Ypz*7&;UxtD$l>Ev^+r;?3%*V=rGpP454)6-#%ev;Z`6kar=7 zZJPG2Yl!Q2Ms0qPlCs>x^NgR3k-EuT>1Fjnjp$!fV(07E1{!00yYJot$<}QWpqa1S zNP*%znH;B`)L8hqHcG7^`6h=emT3U^>lGe=R4#iy+qGT+U?-E?MIHl^a#kt@>tuA^ zxf;U|{OM_E-CJ|7YEn)DadDMqH=Kx-m9yWoS3WxdlzD^@8V$A6q_CIvLN4m@_5X6D zuT|28jTYGW?Do`QvA+_dnWJuDxd5I9?r5gN$O0BC z77bH&GekRH6Zi+;wn3$SZ5N6FghK(t-0h|xDa*oVcT12Xi4yF0B7wTC2pyIva4pQj zi0;Da7^eem$7s}%lk2A`W2+2IrdF_j zi9~eqg~Y#xSaSq2-wh(cq&&T4!ol&`>_VWXs%#-wJPB&Q%(F6JiM{{t-o{y$fgrs^ znU#(z+KMfY+!2jII9kA=EFg+7o0Z893?E=UO}>XYKw3A=>&IPFVPstggVC>${yL71 zp?PrNogkQAJT(fXY?ZOd@Mq3fNL|`F^6Xu2f6r{EFOSYqXq_u=Nyaxsq-(P1;XW8u zzm+TOh~#1y!v6`TyqzUvC_PJQvVY2xrzfs{c_CC)TRG;G(1MU1?A`^DDj3#p_x*wZ zZJzIUTi;0>ZIFPwxK58r^@Bq+xs$L!L5?*>pITA@Ha$sEoBR0MI|KbRgu((+-x`ch zy@iVZVHGi=Vg{%z*$;ps7`wvef7LH83r@%8VXzaSoQJyiJR$>rc-L(z*8v7!oJt&^ zv~^SUn@!(@a8_8@}cX|gq{G} z9AfLrNi(TQa%z45&sp$e_1E0VF*gsRX|yme zQb`$t`wY+4BZSzfsFyGIr953|d(0rfnh?XBb9D}O5X&R08yc2w&1n3IA*QQ*e_D_M zhpBTRMWQ!h{xAW$8yH*A8mIbgPRjE9H-3J| zl94>rifB5T@|kvYHJ`s#0KYQ+|$aFiFE}=#yc_{1!hEBJDiCGkk%6 zZ>-nOZV|^3aw|iouT6|_up6)qE1{IQU#|YT>=p;-DyHbm0UW!Xj+i=t&i=6d*=9dM zAsg*!yuv8aDi6J%f4K`SHvOp}Nl|27Iu+4cN#UH6S6npw;DFS_a=5UbJVYGo3qqouy5YmjyRqy{oDx#B>S*UaZUug24*c&{9vvtI~GNzxb;_TP{>1<0gQyZ7qy z_!MLYj_h!`c{C({{d3Ob;PD|3)5Y2%9PA0nCU+s!pQbp6f95k&*IWTJ#QsWHq3F3h>v`zOD@qq)foRrI0M~HWoL&u~rec=)bHv zEggH}gJNU(F|=<^62I24DJuIPh5R0`-^1(ck-tCQAb(CtpUTWYIberMF~zO};@C;j z-Kc?&`~#h#3VE^e7%gBi0H9*W)x9IzvdOimv#8O{(EbN}*?}cX z4ngpKB-s6tu1sm0<)>5&o4G9uwcaS6q#V5@Cd!wowoKnGPr=mX7d;(0qAqkY3QW0Q zLO9R8uNoWVYWvGYUSZCbUum;hd}e!acQfxOnWnkh0Fkpk46~J=QLN$AaY*ELCnDDH zhs9_DlW0yHn`P?`^w-;LzdemMhK)H3P7-4D&~6B$7iHS$lQQ8i8OqbT2!~KtqH}Qs67n2kw5}HK zmQzva6CmX4Gb*%ug+u(>$nnm$R*KN7t$FD7i9k))W*ou+wlnU2nTD8;4vQl1aVM zj(qrw@+|Qq2UrpCnnqq{$mw9*3_Y<9Lp^uE8+zdU_FywDyyB%$~V z?mPhf^}|i-uMFpyJ!CzOvVVtowcc4SE+s(VPzhQk+D+iul719m+*Kq)j8Xovcpig3 zGhT1#)NZzQP9-~d)*^Uy@L?Si!aZH~jeU>Mew=An8PW^W|K>OxygF2Zni{GcEq`?l zl%$i!j#j9_^-Q-!gNY9Em~xZuwSw6{^*DgZHs3vQP5y>t=}1e{vge-`_D543iTM0z zGh(z}Z4>@qSmgFz2U1o!c7$ljIK{R}PeCU0!=iwpuiBSv=Qx5*--Cpw!Zr|SG8Xvb zuw}ystx8JA6Q^VG zM~&!lL@EBd>FH{tXnGFB4y2K6-i>}xb7YHd%g?*a5n&q0t;062!rOnj;N&G7xC;?X z^7M<$)DOczh;&hDGbkbd|I-#jXaWmJEs&!Er@J4Hj8xh(&2m_kVdm>WB>Jy@ja=Ro z>WcnXFiCmO0TYufOcMo6Pz6gwTZD>-EK7D0ClLQEAd_Nr9rjpvOO8tw$QVeHv=-4TV!(?^ z9&Edx+Tf)6|84x^)(S;_DDi9yw?6PYv*KUzaVXZyU7y!rF`pRdKF6A0upfdRFe4uk zDh-@R+pIVVAm)x(3F@&e(7R`v7>IC zLI3oHD`X=kJ+kHdrbBtWw0M04X`NCisiY(n4=T>KzVu(WJ%sX(%GMV?lZn%7JF z+bfwjtT8B(rt9YyA7ZA@+EP^*S_!8zX94IW%8WP7kB@P(uV9?)wo98AVe5C^XLSm6 zfW0^1$-d1pUNcR7`5cZX=r1_m8gNaHR>gd0fQq{kUd_wH&`d!L#Vxrq{Irx!(xlLBT#zcyY@45Ogsze02#NV!9V4gD z(3DN*aau2>ubx^Eb@Ae_k9(`F)dID}G2)qOTb;04a9U>cY->sn~3U;{Zk3ti07c#Q-&Jxc(1CI&G1J zbx%=E?VmIx@mlyGr}?H9AxS7t({+MVxO&BF!KfEvH<*omGr;)cALIBFj{R?pHAT>F zMKivk#NS%Wwu2jR<0Y9Zorw@^meo=Y z#0X6&HT;X0M#WQm@rl(REX>T?(5tK`HMB7J0F=amgR(nK&_eT4DZ3XDtjy|c&=$@o z|BY-Ao+IgPzZl~jtftD**h)c$I(1dt#vtw2brN8R{P7|5vXxM(6bm8R^SNvDz4NLg zD270{aT3a-tQ29nPGi&*Ei}EkMFf05Kw%k^VZ=JicGeWK7YMB*r;s@8k?Q@+rgnE# z0b4|; z0_;soVzUqW`f@#)9dQqXIg{l_vM%Ck2clP2RSnUw^w6p#y{%HI!}w*h1&WRMZpkxc z0o^{;lwh9!Q3 zE4hd$TS5#(-fPJ{Vio!&aya}hh2QXz2s=6X#%Y= zDR*!RSolepf9O9E@oV5aUor~9!_yNvHH3f5I+}NV|L1Iop`M%63)R3^v2UMAU5AGy z8FfJT7PD+h9fjKEto!R0b5ITCK8`3aedjfrQGP;d){j&f{N{5u8#v6pYvF>VC%@uh z@?u4}qKjf&*@t$S!*1{89eh4zB@@1oG_T(Tz%ldiRSjrV8XUgJIS@Sj76&YlOD$1` z^gwbU4S4AZ2n$U+KJYwda+^4IEnVe@GLDw3-5O4CY+_A)t3i=fiI||pdBEEN5va(B z5DO`hKGzA3GQN(7sbuW;_+-c?r}8K1DtsNkMAw4}pBaY?z_eDKW072ZYyDt)lPtMg z_O!8uL+ZnH%tRNXgl;+#%@L!jRRA+8&jglN9K(l5Et;{?X2Y1|6u1x`uOXZ+o?ys1 zbJKBGD84JmS{}c%tj;CQUvY)ZXjTVXdRy3-DjDcZnN$T(ou3|=FiUaP7HR=SUrP+N z0@k0}hg#!7zKq=VqLqNWa+PoD32yzMbY7-Hl#BR;ie_At!^b+#SmW5R7~@XUAKF=P zmNWZS3yy$}%<^|K=T=+Wpl)0<#rQPD6>Gt) zq2t{aEH550QKL7q+5ik+nWMsDVpim(ICj*+La!MYrF1W{G(*Ufi&POodo_L$fiHdV|V!ZE=f@; zxGL2nGSB2)AildGXT`P_%E?GpAfMq-6#-=(XORB89xpdzrc%7Ajj_%c_DPh`MVqae z>=779-~--dKl*E^dGO*CTNXljqnhRllzv?K%btyve3HIZ$_>hmW`aX*Y1&3=kz@me zirXZ(Nj4d)=dQDJh;;M+*Bj1fa#J(=ycdZYkEQ6|buQ#KD<^lDxd^;Fo?;?D8eK=d zdi5~FKpWuJirX?D&(0GCB46uTE%Gu6Yh}_hF47!@5P_rH#WDkB)`>y3zQr;^q^jgJ z7{;6r8af5Afp2}ziXYbFE095SO!9eEb-IOQXSH$-_G9zXf%x$U z!NoEv>!{v~A@F3U(J1t$Q0+R{Yt$Rnl7({lLcJNgAEdzcyE@SW8%p911GNnVsjv&h z-{g-7&ry4sNjJ=C6Rwou4a7MAo(G~0S0o;!rOgAFppluHG^70k?Z`cZKT3~IvG~K? z+%Cypn)Dl3M9x}neoQ&L(*+h9a6$WiJ9CnM{HvVMtgzu7Mg|Kzc#Bd1wA)NvVOrBH zjbpd_9M5nO`Duz?nRPdm*jsXGHsTGJ0Z}`{tQIrOH}(!TEPKZUH{v@+k6)IB^N zjU2RnzcF6qj$57*4ywJm=mnNC(iYH(Sbz!_&yqWpz~rp+a%sO}Vv``pPKqm^{iHra z?eI1CMu;U6*1xnXuwa zr9hTg;vj;G`c+sq?J=L4?Y)m=?SzyoNGV0>#kcYt9WA?V4~FgK_m_+x8AlBmw>)^d z3q6pJ+onuoMYPRZhH!h`SPNNeOP{s{lt zC}qRbK+g~!MSKRyuj0p_3B(LelC5$1P z6QFr;qaY-JF$b5ImJyt7 zuyZ0l_OnH9rkXQmzVl>*nZMc91np6JMXL0U-}VUP+222KF2tcc^Xj9+MMk{VffD%# zjw<+g-Zm)~CNMifwoYPqgbAhM&ziF%Bi`Ze@GDaeNmgza;*8}+!p}H;5?2mnh4(CX z?dB|r?_d2ReK@Om>T=T@5!YkAsK@Nlfjv9(!|wODaRf<-j`ae(NXY(-w+1{yfw7r^ zpIM=E75*d)S=;hzRV527-6T9b)ghI*Dx9IWT|vF>lX6Hj)E4mVI9{(fT5e6aZnVdR zpWO0IwY3#!C56{jo=$rlC5s?7*`$1A-x_Ff_4nrf4#@d0{X57X%Q}2iZ=J$$_ZP!A zsjk?&6$ZgW`fgzmR%*5Kx#v7^66*6PlXQ_G&9QMPiwMYSbN&tvn66eR_-q9(BMY(R zYSm3;`V&*CalO2FO4RceV<{cUpZBi9kM*E|6I{X1e^}zT{ddnH@(SFZ7%D|MX7$G( zKi5PznKgyC`Hz;SQvOtuxF5V#xCR)oclKRFkd0=&kqT-;b)bZ~hB}oCNolVV2gqq8 zqGOjO6ji=6gf0(>z;)_lxq{}PsC46lh`BOMVP$#`II#N7fUkDT%M&6=5rV;H0zdgw z=O&JO-Q#I~Vxb3k#nU#yIPTpWY2}IBJHkcQpd9Ktc3x#?_gUb?ZfDp)U-elbPBNF2 zC|-gftIMZN19D7_tW7d4oUprXt#vz=t^F-@Y`sJ{FZ;ON8IUVCO>lGZO6E zgY@%q1LU3~k`B}#iZIiv@Ej;h*8h9G7`B;}4G4`crICg1U zSkM^0jE9WUtQ;ER>=+JH?o}7gaJ3~4dX`XF(YqXt8zaj!5N){{PQ8kFTG267lTBYJ zYm94kA+1aeE`>(_^b;IR@*bB|s->F0t|NX?+sf#WT#BU_y-X>@r3W^2NLIc%j zTLz@&fRphc-o|adk-pbiKtkyFNs^5KUGDB40AX}KHDs%71d2eD@pyfmf3 zx5z40scv0zO4yPcsvFGTeXj1-Qg^XqisdV*Aq#s992tFEg}(p5H8nSXieeT*K217q zD0o1t+cx#4Y3e51#F?vUg6)a*jQuOqugR(XF0H@&2#b=pF+rDu2G>Jv1`ipSto2`Yp$i>79l zJ>K1&a5+W=FyvYv(H!W~7QnsMQlXBVN-@q)Ckj#8rccx+p&k0TQe#m)ehe&~K9M2j zk%S*iu=uub89T;wO>j_ZJp<8#dc|DMQ!wRI13#9a8RgXl*R z=Z!#K9+9sLkC1~@ykd!Y*>zMIy@IDs&V#tpfX=#(XOj&TTNmMd63QH`7o#k@?b&Y_ zB>Qcj+e6PcM?Uk~gwKnKOpo5yHBt*=7QTX{FBsFoZJ{zX|8Hw3GP9U?bh9-3Sy-4)K@6If?lB#t{7U* z)jlx819UUaFq~-LPbj;HN6(TB?;7QU{2_tyL(8Cw_MO1Bj6vvMqepf1nKmdu3iF3C zB$E9|imERcuT3H-GN{0!l?J6ml_3AS$^Qn&N11j7{7Yi+K`tZ*&iTSmP#`2h%$?_& zRePw&8O_BEJcZ*Y|oOeRjafwpK{s7PYP;x7ZV+1KtvT}U2$3EYSFVR zsngd3ZAgwJ3*{=A$g(9QUCEwRQ;D-dN`&RS#+*msfG;*0>l~l$HKi%k@@+EMqjcx#U2rviiKHO~dN zNFt7g4Es627SOk8zH(ameuKR#aO0_|ntr>kvBqgYP$FWN4w*_-aPn@tFM)BXoph!% z(L73E4^p*wiV-s{cC7I_aTBM2#@<4uY&^wyy%9B*K8gYN(=4b4@7m-KQl{X5Uo@8k zKg|QSvO2BpPN+YY^vPC@f_O+fwG%poSBke2IuRU@TH z-MRNLMSgK=fUxpfWFF`~?bHZ@dqjvg-RL;9cE>+a#@&|J;iAco?v|QY%+5fEfUj7X zT$_U|>tgB*EGtD1J32JLUN_PCY&{q%ZsnODx)(m7a-$lxD*&pe1b^-LPH6odXVVs* zXj$b_`GiiVtmS1uaK3h~_>3-Hp^SnjvK4)u0-%iW#>>D!2s7Ui$(JG`X@$EoSPqTD z?8HJ6hVT4AH#pOEKqRlEe29cLsSva=`a$tu2J%=uFbA%^n%Dp~h$`>QFlIiR!U5Ec zYyCQ7N>aB~`26tXIosqQl|%}*WHU2eD;Z(ev}q0EDH4paDLf(jW~KvpglHJfDHfFw z6^;{D4kx|(KH*|CktK^UDv4iERD-$qllh*;`@rm##m<0jcatAlhrEEe+P<7tH6x*F zz7ZeyTsB+Q5elCk&cw~w0;Ej4BbT6I&8Odse8^U@O%iYaDEf6_%eDCZ+EJt(>=NEo zB2#7U(I zzVN=bdPWVRJbZuZLut(8l*{J6AcW3CX0zOVnhgPCU{Q1Z@5^yMx@I#nfkO`}TJQ8Oej zPI@6G^BH(#AJ?a;E^NKDtF*WL5ykDM;@V|h?HI%_Wvt5MQ|cX?oX`8}{Cia71@YWP zAg4QtpJtj5?Y<0Y00e9kpG>(fSTN^HPPLL*070^HZb_p&IV32immuniE%hgvW$A+f zB^jPfq4O^t>L8&J%rVZI7zaaG@-IUDw+u;6Vny_n<1 zS{V*oTAM+0L>1EkiGm?3GHzga;d&KT;9wi_+-%3y9 zk&(Y?Ct9>yQR(2g;GMQn#t=26?kFBmQbalxiPvY&YVSzOeh90fGRGYB!M6z*2v%eq zQpF?Q1)$dkF0Q`wfb9R>-ATksbnwvzl-|#&t^8CX!H+URt&#Y3 z(cCKHVN_0xRN8k&~}Iy??3?$`8KKs*Q0D1w@If3}Ktd6Uq5vp5Ou`&TOv885WKt8ezh z7B>8(s14l39=&v$lvZ;Hn{ks3W(DW8(C?$>rSc%G0|e4*6d9mlFUWu`(lRF|@>HkY zBlZ4TY*o5_zk1GL6LWPHfMUg&$WBje3eP3!3~X9CWoRV~C} zZeA4|8bi;pE!AbOA_W;4f|3-COtr>dff)xxud7Cg^%bUqyQ_XZepo z(@*eQ2!R3jhz3!VyF!H|!Uj+6bqS_uv~^tDdle?@j_CdWxSm95khiXmo_`xiickPS zjMAf!I*lN;tA{NwQyv6|n%+jcEEU!_^+#Kr6O{HLphtnzH>k`H4 zlQVo&EnuBQFuWb*$z!mU9!0|v0PF0xw0yvEooQbgNyV;}>U+H^4JzfEDGYE?u~KoW zf)sXozhF~O<-tFYn%21$Y%itkxmpos8B4(S1C|FVbPMy=14L_O<%}r}UR5>+85CTh zVVmFhP$By|`WheKK~a54(KTJKp*P+HeL0KO)Xbfe5L?dyF~s3-*#G=o)qKQ9N?4tj z%om*bE(fT6nl0DLiBs#T#Qxsux{Mg?&1(DS;>uQ@;lyh`orq_fjY%?WdlC6^4!kcX zfS))^;sqKPJ`oTT_&^E5K1m}i4^)=Yb(^1eVVo^|c2MD}Z$MEj4Wc-q-dXNvCYgI; zNq1Vw_>kMP0M~Gil-UM40KsqKr6_=*yGD$DCP86Zf{(u{G}JD&bV3Ps9a(vssiTxS zFVDkOUW6NuFIz0E$$}76kfq7mu<4yG*I|T@keuf7ngU@1*l1&fg4J5mtzK%u#P8)? zkyH%HYTYnZg7DY*0OfHOZd=gd$5rRDqzO*csbMs@d$w;%pz7)(6KYBlQUDFPP46If zyM9ZP3;z-_miw}aoGY6gICM{lH(tFaIqe`sE)O(WbZ$yWIL;=+Oh*K>N&um9!=?20 zPN`l@+t~`Bpx!xf2D~C|t^p0}-J@l93*fj;T+(Yp6G{AwzldbM1qEzV=nOlT`lx+_ z+0d%Gqi5>e4nOwie`ORR-x@K29mZ>Ly8r|Gio5H;56fd0B%r#==kwwS#O4Z{4lowz zP;9?M;#X8>t@>NLAIpyLa8;qDF(7I3Qg1`-P%ZoC!^tmm)~&@b$zTFqaOB~+4xZuW zh^kqX>TC1_#0ioi$8j!m;pe#a^gExv2pXOu2eIIXW4jh6#J|&);Zn zbmyX;Cc|NlqoBKlb=kwoWh=SRvCWZwyR(i<@-Gjb}bqR-|{$%YS6L8Fap1IYo z0;l-_4QFD<0iYO*#~vhk4SU#E{p8Ht zx_as5i}5W@QoiJPM*|yj5cgYF{7A0>hf}eC!mPyd=d`Inj%HKbQW-)1IeZc}?j3DT z7%$5d2L{y}{!n(8zGE0Mn_b?(!0Wahu40i9>mB)cHLx?ftSqpbTP;ng`34eOUqaK? zrP^t1&kgHXgPY->^cgnZR5s4Ris6-Jddx_`3s)+%sqk9?mPay_R_Chv`{cpKA$>!| z;vaM7W(?ujaHQW0GI7lJPOIQ`J#sGOJoXt!<%!5Q+@sfo`G;h zOyZ#ln@NNMppkNNbF~lzwa$5lwCA=2xrvuJJSckiLZ<@*3kQ9=%?(qy{t>3}wGD26 zo)5kcux(?rEfTUut!gi=2&8rsr)-UYuT@a2M&yW)j%$qN&|ET{D(gldcDg4dE2Ld>2EF`$qyI9Nj zmYvFP)XViMHY(jXuUpIy~{PQnfN)P;|I=dQyyQ?xMrV z((u(XW;;lm&JiKD&!{~maS7gVup>GmgBe(dpq~>HPI8odbKIyJ4NU@`R6m(99#0do zJK7eSuGMQW_&w6sFtRcr9PM)x>Coat%zT=CjxCt86R$~`@W{CeMW^rD|N3Y=v#DeCYk}${8mXJ>_VBn7D_yu^>V8roLIkoy z*e1f|aaj=E-Njk?D-DoBG9QWQ>YyYO}H7(%!1>nlcIuYLu2m5Ia`F^|s9r=8FYF?gBY7Fm< zDCCnSqKwGt&Mg7UWAK+td-sesDh$}j*v~*rOVO79>Ia^Xk(5G2%$Yl*g5Fl)UG5Rn zxl^4#v7p4hJxXhmeK_7A>q+Q`le(4O{&#R>jRzx}@J8U^U#s9k!QkO=6sPFNtY5s7=3p7nG52s<(QI;ci5)o^)N4QID-DXd7Fpn5vT(j7GUAuDI)00PfrPskCCr_mscAZf9KJvh}xW;pGmh(=NL%&t<}=@CD)b&Kw9E zt<^RGGmFm&lw+RtbqiH;#m@H-QKd1g)K+J`TquD?n{Nslp@(BVa!uprqMkH+Y4uK3 zj-2v`rSC-Yk>`8;_sOfQS%h|0lWgsr^(id`I(dr)(58Bt0F`H-yznt_KeB{u>&sJ9uywA%x|?1 zr9)TvK@*1g30O=D{S_>&l+2thp{M(R<)_k#;#kAux*Z>ce4op(#UT8%jX_H+ngWU$ zslv>=J1?HJzb(HO{(-^B1R5}k%n?PtDV&Ep9agVXS1F{!GYq2Al*Kry9}Re(3yeu$ zg1a7Ix5@C5W=%f|rtKE}QXisXS13HH_O$Gs=wrabB$q$P5jvBtZj#nX*T|P6&H~{p zr8N}ph)n=3eQq1a7D?wTOx8YHlm|*drgsW@aLU@J4bfoT$WkzIUVEvT_iD0#%tgZz zCtKr`tfQG4U|-^cO@+}5Tb1kP7U(JbQYx@pR|We8hYfqq(-HO+)c;-jP5 z*kdh9LHuM?vooU}<<@3c4sXtIk+IIturLp~DVdK`Kx`GN(N;E;8hVylH9y(>86r=8 zV%3*8=iayd6bJynoMDvt1a?#M7$g=gz>VnVX5fn7?-QbQL?7-qpSlZ#l1YzX5WKAi zdu4sr@8lGZg3H=s%Jt7}}uSB1rY835^YiaJLS;0p?FOQ2SjsEPM zQV<^lVX*u``2plcg)jT+sO%T8h$3u*1^CA^^aHy5-KT%wfPvLovX4%6j-U-yh5Mje zcPg_zy|>gMxMu$B7bXYT7?Fj=0WG{me=$hknPyp$0ySJ;F()d0^eTKjAoO8_P&5Gl zKLEf(QBGwpIUMwhW2=u9(0Yv$zFo#N`_CS=U#;ITueXafb+O4q6)j zI9!4QyWG_&yppJoe`nuJVY3S)HIn)_K4hCx*IAZKQ*N3Zv0xP&D!6dzj+L|(iKrO* zewqeM)4_A88$h zv?`*ht0J(%|v{2{!^mm4qeHRiDgl!~nu0b9zz*9}TtRuG9T1YF3ipO zl4C>+f=7)@8Dt3Bso4LAng~S~>^}ZFT@&)L5Ky&7x(ZY$#0G$-sNm&!@`3M-8-f6S z_`rEj7#BrK?I|QE-i6L>*4H2Ys?8EY6MUMXd4qw87y&WM10BuqV|@6R+4(K^P#a*@ zRC6n(@oG1a)4fl~1RXAF6K#sg4U+`vW`B@#q{WwSP?jZ697ajive_AU zFKM$X)-&eu{eFm~juut%>4+J08&p-vqbp+uR9W55?;lu3Uke}vzr5#7KVub`eq9xi zH9qyF`pidV&B545w`DDJ<|gIR*q7IE9Xo1o$rH9t`(rrqMMkhM!^`%QNq)Gj--b~4 zT5+D@B#7>fpuVT7EB&9;%|k;w2<)7mlUdtc(cBzq?(u}74YhT5UB!rcdAAGLz+Bnd zHM4r^!V4z`5lwA-^CHwF0Jk(QOeW$4i29Szwv|`i{iPqcYrwdRhMJto_nl*{5}+QQ zPF;Xqo7Y!;kW^G?2n^j-P%VjmX{6z4r7&Byq-z`30O6~Zh;IA{SE?Dm<7i%`>G5!n zs($IGAuhJeE)-1}OTVJCvp)&<46tUmvty{1cD8w8uYQq=3r&*BC{R$JKKZ5Ys(}$b zk;BZS!#;dmgj)M%OZHuEfW?zW>Bt4$o5~0@_?$K^t2VHyi#o&lT!ooid*p%V=BO6x zrK5_Enc=DIO;Q%l3{64(4F(5^jyhT^0)Z+pVPtTP!Q5rNy6xGJ167G$SMH6fwckM% z6mt_(Xnt_jOAV5A=w{hj8=Dte$O`^gwTS9a(UsgQjdkd`uTH_?4kCaV2rN1B^|u|7 zj1bpIM7@;9XYj_-D)eU(5oJ-*@{LyC1#n$Ak!|?F_qSze#?b*p*G)F8+174;tU?te zwD4O8S3FC(BQ8TE&0T9~-l`@ zO}o#79=6(X|Dqi)F7jXs{>^<=Z)C&SP29C=7t(>Mp!S+4*T&;A|y9@HOh8ppecU1*`7RG5zQ8I zS2;#Y)Y#&=rwVL$<>-OFVaAMdn-keH3!LtT2AzkxlUdKVLOT4#rl;5UWu@kf=H4@6j*;q1IBz4mqSA11?#EO2T3nIap7Jrl5QIju>GIu z65uDL5{M*g`Z1Yz31mW`vlDeCdB)folU2oak!dds<3b=$6iYKtjB0|aD1P6eWFb>U z1e~hpen^I}urmu!xMz*S3cn+G{7dOt{p4dQmplAgCcp|8IJJ*LnHBX?VZPieNeXCM zwE+upQnd0!LY_!1LNUN#NyZ7XrHEz4gHuM8!VvO=xUxabIZ(0aY$<`{4N?-TS1IjOnq};mvmm}UavzUYQcs6?u8m31tn>NqOs)CObMb<3 z3MF!+zEhcN_m?L2yolC01Y|rZh-reG5=v9@FaFG&{+5^yE=5#%?|f;qWTsqx2}xL# zc7mO^ehw?8cJVuuG4!{Q$Kb1>sOpOlwMl2j;^2eA*N3DzRG8@r>7iO(sLYc|;P*4a zhDa$CJUi$9p!Wc;u!MspqirU=@feEIbv0uY&cvoHeTDL7iTY65-va;4nFQcO@_sh( z0jpogZi`-oB~qg*S&Mj!Y;a@A&;Y7-2ty5(DGW&lNu#;F_jifaHi$YkxihKz=|Nh9 zYD1D6nlf7};4mB2DFSRA;#+vhsT(D|Ta{!~(Mwecn>r^`s8!Lo*N#UjGy$j8{nCk# zI_ER3#zc;x3TCZt9(KiAW!pSR_V<;&M0v^q5rt27yzATb@;|63g+4gS$FT6@gzbYFhOvtf|6_i@C-okVX1x48Btx9tZsJs`02$qt6f#< z_;$uif|-mBo16}Y^>VFWd%y1pv=Pex=qlb-u6cPy+)3qf%U7nFIcLq`c+>V0;Q-Nh$xi_h!uV!=}GN=Ux^`q(nodPiN1DqczS^hD2w^~G)b~rTFn!CDjW$XESf=3h( zYQH+(V&EoKvaq^$!HFM-k+S)wjSt_G8}J$r)eYe5px3>y1s!5yIlFfGqW&dkEoYx_ z67Z&&=xY#NXj&lo+lMN(-yZ8%V9rX2+3`J$K*R5TM+8!SfZ#F*WyHXMk8(+-a{c)D z+qe6^ie-EN=#EQ;+)`iznh44&C$H)ysz|;y9rh>T^UL zErbe!zNv~>nZI3|rMOesN~_j$7){iKSAR(pR=li z@dS%7EU90FKT7S)BBh7Bn*IsTMpL{t(^Ga6dDXiXp8QrJSPGl zG;$bm`U!_u{aPDj)gdrf#%Fv&iIOX2#-uC$oPe8lM(zM6mfP z*ZQfydaHtCPvn|l3<(@I2cs=)7<@4c9gK+>6C%TMky zAbia0b7%ZOub3ubR7t;*?rg|UusYjNNiq}^W&N^0t;P324c-8>329u6#=QBG=ynu% z`-|0g_}|sc-M?c93VLksUTXl;OkNR;b=3{xAd7F#jM=B5)blZ;`JCz4xlAm?C49em zZxJ24?w>T)wz7K>y&IPk-g$(QSTwxaV{kQw8pI=N4um|$!Z!`~liH7ed!A3!THU!m*H)Y)F;QN*QoH2b(a;qwFTVd z|2Bnvp59hRabf*t2nd`fu|feOKo$aw_bB0DiA_-HC9h|?G^}0&&I}r04+mnh3d` ze~zdI4)22}MC!vrjOqm~xJ@-_p`5kzla5xpq9&SQKyPpqep2@)yJsy{w9dPR0sEs; zsrVP*E~g9~H=KGn{=}!)Yfbe6_2FwZJq6&2$+#GbK+e<4u0(u!j%G{3jF2@0Vr$xa z0`){tE3b1rq9dd*FKHbFwC0J%EGS^&GOQ7@(!eWG?-tUugVW`aHMNw@GnG`d^|lIp z;}uY!?0Aw7+o{wQDn3_=cwEoF1NiLNK^YN!i0#A;auCo=Fv4T9-h1(7a_h=BwGy<| z&x3Osc%BGxk~G1~PFTve#C&#!h!6_2JL=5VwD6T*k*ox#Q8y~qh7?y_C(hfbr&!df z|IiO!wPy#We9Y`Md`BuaLds-rw4pNa#4@evkN`42WG5XT_3geL`z+J}c7$wLp4KU{{PkHLF}<*_4D6vtNz-6MXM zG>&8>zhWOKjx>W#a30akJ@Prh8<25~C*lu4H94WJINw@KZ^s7jVsX~5npt{!mVwiT z0sJy!$9H=`0(++B@Hm!(9u7_e3NiLp!VLF~oK=wlgi#+frBJE2bI0#z>Q2y(35M+O zHT&G+|GP0!|7v2|7VXOiC4gkG}}Cu)Mh4<|w8)UET6AEfaw1EGM~Qr?f)`i@B@ z{Y+RSE&uW!Vuc~zO1{(8u;-CV5PF=+9)!?~y{!lm6mcHF<&oNC6@+Za%4T;KLZ^@k zk`*1O&kMS>PWYlUv}a6!I_=tH`qIzndrDov{(k>l&#-b4Lx>HR0F&%<^rz;CGAE`RbB|npn0$S}pa1<~|9L@-w$Sn8(8UEB*`NRV6 z|Hx|d@(7+lgB!d}-oU`Xwa4S`g^`NOzuPRsxZZeSwW0kh62qY?A?vmCcbl&G~bz( z_SmkQqyjK(4d>qg_4I;tnB@YSI<*6U-|X#J`hcRU#?d+YWkDk)H#TMnQo#^#?%J|j0&BwG3bR(a@178+ z@>w_k@XgS@xz06vwQFR5(xG#m{}=|w^@ln_?lEyV?l~%qX$Cd67*m1*NitRcy=s+6 z=N(F!AjNRVv#1y{puh)YX02+DDrTdEYgz{NSCmA^k(p2~4J7Lc4T~>tUx!h7xJQab z*gSmsdpmtg&_1~4!+lDdAs){;o#8YHNUK#|l%2^vKU#!IH>3>( z9hplmeJ!E@eNCuku~Ez~2YSA7R`I5H%K;6JWkr*<*x-cw5I+NIyYXi(bED7_yV%Qqk z;5<;k>7IowA+`XfobOQcj3}fs5lXR2l8kD$iT^!*Mj8t0D47-Xd7%G=mU;FG~UT{lr<8NFS@)>IORU&-7Ap51b8ZH!M0lB_}-R zA4MJ469gk`z9W@8uJXcDn8S_e&ha4A#^e|I9~Jl&cij@*%vC$u4JmbTmne(uVE(0P z?FM-%QXimn8gOa4rfR4w-SG;zqxrE9Xv07p6_#15^iLckH8jN_uGbgS3>u_WwcKF# zz1>rPe1^}1+G0isbxuc>V8oOJq(`*wR$mbEM+btk3+vi)&~1TO1WJrd+U+ZvW*gy_W?se(RI{dK zBLXYQu{}OxCj=gEFBMUx0{dFlDX%U!7TRbyc^EcZa9#zQ56+PpY+SV#6A-S7aAm_# z*1%i_ur$f7s#xhqB<(UXRQ+@QTr!>MgA#{Yfy@Vm&?jiEE*E^k@6bu#!*cIlbFet+ z*u#F6w%I3HQ`V*TCPAtB3#s-K8AW*6oE^&5d{?JBS1KNrbk`c(Ls80wqZf^aDwUeU z6890h29_1kp#AAoH6Ic{_YAyphaT}cs2-wQ_5-ulf4S3ITq(_Tb#DVog7Ag}y@=hz zC`bD3&>WmTThT``yaO$LUa4`F)XnkKaKZlF2(!7nGU8)KLDmVB{ul_gGl&Y2mL2U4 zJZr@$rUuB^$2>#c$e~Oi1M8M&@Wvd#yd)OAWl>K>b#of%ct1GKJAhl3;PwZNJDiM<~%@Htf=GZ z#op>r3z6%Vj0CRaR?lr7xF0u!*HX>p`C=c?fQU>Us}!`UO7k6gx56%YA}*q6`#iBiRCV!)XSXqd+sU=t^) zRbN}?nhD*onNJ=QO;ata0B`F~cBgfGTYV0X;^X+#NkcdnkLA`9Sw?MW#-Q%JiHaZd z@iMI?Yi6mXY#TzUqgClN&>u9gb9v3O7$yEaeZ-5g`inHk_N01M(y;LOB&kyPpg*W1 z0c8^;0i??I9i;Y7?x}=rHDQCGkWrrAU?TjykInaEj6WS(mltw?)%t`oIN`HX984<+ z!mVL7x&FaPrpxQ=0wIFD3RrG|WsDJdmeZQv6C(&aW*b>PU0rw8K*8Gq7gGt$XgOp1 z$$e0DO#b1=0__)LphQCh9;YtR#A-)cgi_~i+civ!^S@F9F{l1Ei=@HuM2J|=NBf#= zvGI91N#r3~e)MBI7)^v2b44tjCWX3V82a2fTl`bIr*8VEw?h`^>y$8n{Uz%t$uuWj z6kK$vGen;|Eu2vOq}w?3dJ5~;(FgZ}%HCv)}S}*oI{l(mg5nXd++dwF5fg_ zrsmIeB93ZJ?0)s}iRJ%)nDI1oek|OnvwL-;4l#<1P*qV|VJx^u3(V>J0amOmkoS(r zZuNrtLSp$^)4v@tDYAqbjxo84`IP#%Ho4s8mZx%xVcZiq^SH?7JS=0V$aY}h}CGj6YBptFWg>sySrURu@eA4PEQ5&r#nYX$b|qLgQKV@#|LOx z7C$Z=gG4MW+_isn_>7u2V!mDs(k*QIGbix{BJ@dRRVqU-ga2k-i}@>dt${^y)xL~~ zRGE4v*fJ$nP);cbO&J(!L@7qVmIEC~^usC?;hpd8U&jENi?W(51X(8PUHQr{KXp#d(_dv1EaGox25OxiA9`V}Om6=@ zmmFV7hksEDli5?i`I5^Pi4>UuazV_zSzRd^HC77dErXQlx`fJo2`@=f<1oe?_DJpa z(P-k3iT(ii%OEaFK_Zkz8VRV$4T9%=?gq%&P?eyg`G#xWOx8Ou<)8_PC;&I^1VS3> z$Crh8_c}?j)I==Y%#sKF3Jt*mp1`d!NbfmhHlz&n#ppFYH`dHHe(Gm zMP5HVOEv}#sfC3}bG4zn%QKR7&5T!}xDh+M$@rL7Uz$FXV{4N@ydU>>1G3f4 z%z1gW@OD1EjS|N@O-AR;FjV3FDmtyr8~;-EfQAIK*(WuFE5o)^Pmt`>v3vN$eW5CInk^9k{5QEu#aK7!E`a;dYl874|yiM$+izoc=Ga*i2^Rq>?{_F z1G6)Z?2D1)E=u9WuWm{M8Oj2tTL2*$Sai<_O&$z@Q_4!pAOhn6WS})H8u$nkfhh3; zoPvY`-C;xN+^XmbVFqsCb8^6NO0kD1D5Q=0A>t@Gz718C_OJGvQdWMDD7-Gy62OJG zzpDOt^p<)mMp49`)3B$&(G|ro4(%d%zqaL^y3W(0D+b#V;vj`cP1p-H@7yg5%}nnP zMw7phd1viw}_b+G3Hv!l^>T z0~1HuQW2M$OSsJdnxuEjt}%mZP4eaW>O?jZ!Sq_79U3KC)H>UntnYrNP$KSn>r@X& zmNTE)H*(`u|C-^LH*6TzLf(lTLQ$H=+{aw$o&xMU;U-`*sb5{geu){FZ`SMMETRB zz{Z}&?Q?@Phn7L?79EL*_V-L|wWH=ZPdq=#x5p`oXQ_Fn)uWl&vQ-4MF!e7RsPkIb zOuU%7){8@R=fR)wL_37JM?S;O^h*6UGbGq#7SkAFJ=iqcas;5sk)j&j%30MLJ4Jd3 zR*|5oNCj%(H!X2-*!Uzp#s8s{ieNXt+%0O)RR!db`~EHs!(DkdX@3eis8P<3&U%=& z7yzt0L;$X~}A?>+K-tY#duUh#&vz#%<4U+JsZWE{lSE6=XsGyIwdHX_vxx*0I;_QV0xV4 z4$-WB>E7)&<4H9(n2Q$wl{iUD3-k{!#>WA=Ea0pobzgyK!C_tDtTl?p9WKn>3$(yX zV6RDzweJVQE|5X1A9g+w^Hi1gfhwYXV}#(0&_LvJjZ6sv!+lf{F&p_=y?f6F9So2e z_Hj0G&1gkh{G?FI=b{v&X6MJwpVeN^4=5Y314_deor(`0BloDWc|2gK{70> zmF`b3Lc+I<&}~WzNUQz1kJ*0gcR~SL&7oSC-@5ltC2MPdB*^__KC_TyXlJu#)vMxE zOjo^6;EB!jiyp1s3IfteVz1-T*8`^ii#t{}XUp{7yIRec6Y=*QU4ye91QE_WaQ&tm zb<+}5<6$Npc}rrsiB#;}s^!~zPu^I+b%Q*XxJ2bE9TN&HDT(rD82=>*MHkWb*x8++ zhc>KdPq#gcgc?I<6H(*6b@tD;$^mSF}Ge%F%;kyaZxbVNpkmx(7pkXm1` ziGwahSKJJ|s9~474N#O&zl;BeJ`&4JPjzA~jL>Pc zAW!{c{enq3#DQ7m6%sX&lb0EQYb)4m%Y7ni17r1$h}u4N&7l&ijd*J^Oa|k%u?rb3 z(y@Z=3C@&xc#t~9te0RE@SJU;A8<2}WVlFa{Z3w57lDmL?-%3ZLtp)^iPcN8_J)IF zSXQFJaltyw+wDkvP2|ExucD@gQy0@^Wl>`n9_HHBR9$WdL)`O*sQ(Dh6glVT>J6)o z4Tb#+juP&cb`e~8M|1bN#Uo%mk6`Se+b;C0DBzv~N({_%zJx9$855E?yR9uvEU&;s z{DYyyERXbqP$Zcpg{$4IJUR25rGY610`%~Il{?ezIQ!{0!l-jJfIDu|YlR{6FY3nc zZ2IO3(fr&$dmaUe&wCV*+ejzLcABga_6{~ zP#dJ@R+h8#y_%HqZ_FHDk?RXN%<2kxDC2hHnhs#u*<5w6q*TbnU0I(FBQv28QNY(f zg99^9MZY|5!aEA2td3{zj7RwD6v@dq-VCWL?YLw8v8b6!IayNI6);668=30soOB*P zGf{iVbQ-p;h>0s&PiS8%;ZgxT@b{`~5ArVvK0`0$cq+6zzHujvv8Y<|MUxc|j!lqX#{ZxNP~3~c zjEjc&1)r|$;Nxb+wIf^j`)!RGDRL|(Jb&VFHHLFgcB^{E!6HPB0j`#-X5V-+b;}&H z{q?vs_L^|!;RBj+{xn^jIR|?XT_TGY>WmTNh{k$9DO}4 zcosA*ki4?>a$~pIT69k+boOnQC9aqBI z>^-vIrwz9$f)D(%O+^M-qB-TC_Ge8(OMvkj?sjTtv1+nq(!?0-VK z9JW-#D^)zc&WCN0k+$No-3q(+K$?~g@uv2(vz~DYWh!4159j6UCOQqE^+#z@7Qhya(horEwEch;c%cK4&=-8`Eq?PcAn*lu(aetjs&3G6yG!W~pq+xFJG(l0V})rH-F5g~$M zolKyz6gVFbAza>~&0UXOpGSCEv~%9jGDk@NSh+Srs^=D zsy{yyL3;W;1y{}AUD_D3^&cw9fP5kb6GzSJQ>yjgkPjz<(|yJ!UPyiZg*vSHF9d7d z2J-rR{Ar+NP^jQ&OiqOZu&0H-g!1;O8ChmL6M6ub6+i=X+sBc({s+>BR?#Ba>sg? z@)GCi&9;NE<{Ls=QiN^+cmqCUq0*Y;&Zh$b`>yTGK;&vO$OY8y=e8-`3?o~F+Dc#q ze-y8X%*i)_GH(%_-EKO%z`}Ro&kaDAc*emH%h%5s@pnp1Ewf+^IS#IBeUkkndAoPv zQpazLMknN~v9#Bc15ytw872PUyvYDoc!8ifXe9EfXN<<1rD_^Ae;1K}NCo`RoY1Ny z-pb@LmDa*b<{faoM3uE0LTL#SLG3RpATa$~1>GZEoyYJgG~?hC3oCbrVYsD1q*m+y znok80#oJ-MBlDYks0Fo&z))+S%-{AC?hw{`i<{OF-h&Lx(;b#(lHBoowJlJ(-D-UKkeVJi{)L3R`U1;OdJ@;s;6;XS39hR+|a&}Qd8-1>5(Lej<+ zAz0#_fB-nASG;kKTV$3>S>}9LW6p(TiB+tQI5G1{tg%D+*_SvQn!KDFp&t6TVumytI`3Y zGT#UPJUBmFhObVp2I_9BT0n7V=#ye?nq8HBzj@l_3&!iSdjtE-@z>F1hX&=OlZPn^(@2=Z5V zddHloEDZRn$L!>x=?R=_uNL z9Af+JSL+q5lZ9Q^fwSEDem#(lDNkI~89^OuqB6CIyls1eJ7!eDz<#(XaPTBUH>k`H zW=G+Y@Jqu6v5b%}z42Udic`Bu=<@&(aFTJ#n6xRwi%D3mna0Gd2Ct*P4AeZibfGFy zo_it<({EE!+|u@Wx4NZW{G#eb^;es$>XB_L0D!Ho7{ZvpeJTQf7$d_qdBepUcgk}Y zQT5DL#yeMDll?t8z(7g^07YO7vnm+b_hEJ3HO~iii)@!Mog*=yLVr<@F%LrMiZ7Vp znh$|bIz3-;&qS9ZC_-<>F#{s?hM!sp`kIs3#SV7F6?a#W0!w%(l?mr&Up&)&yIry7 zy3GMn*h?({mL__au-IfjD1++Ont~m7D62ft1CN`9%zw4TDkdU6h8*93Y$L0-f2m1I zJb3Qk-CgG0==xM*mvJntt!7J-U`M`oHW6=Cuv7f3qW4tD)uF{zF2u#|z$d;#;r+Ga z?7G^27H`iSCW&Hzei4JM5lt-th zy%GLQywmM~haO&!i%ciRo0BqEY_@ND%hG6*P3e0ua94fFowAYI2)4L#-+;9ctVw(a zFx{ODCvv!ojWt|~o^$uRpzWu{!<8E(2qOBY1(+m@>?Nc7TRPEj>46^SAJ0&fO3mmmxJpmTs9ri50GEcT%a^k2Gs2nUdWvfG z%taA=`(z3>RQ(bT)9=C;MD%m!c&YYUfRkKc0&`L6VMB+sdFlA7lhYBqJ4}{7_Ur$M z;43l2KeORat>5 z#_3Z+9xA4uvmD9xU*$HUd12hAQK5+ng9anJ#cB<-LhJdr(t)oQOGOtzVRk9$cX)xy4V;#>OG z$RfaD)VyZRTw%g$9?x{9(r2-CL^Gw}MLun~RB}*vEy#wg**q(%Fs`2mF zf|G@2>H6&4zepB5)&_J~c<3m*%=7}`=orieB8B(u$h~Rzrdlez;W+?B?TXxGwmD?P z{+aHJV>9E5L0Xqnmj_C-SUBvwyOhnL&vSMbHk<4`E|gS;L+-A+*?}<&Vd)o3#P6#< zeUvuI*E~|J&Ha)=8hJ>U*kN14Mni0oq&)JywN)fanu8p!vJXXAfH_Jdm{vz2;aelq z)-Z|zvEi0V;zd<%$~h08xCj0vqjn)tq!e!O3{&zYCJDHxZr->9qbw9RCAV``h~fR6 zbFI1oeJJb{L^42G_kec*7E3ouW&9Y$=4x}qQ3LgkZlKc={l4hP8PDT!t{08DmiziH z(;>7xZvT@d!+t8m9)j4Qt4RX(w-C%kpJbS%CKwU7)!7R37@)8p1?X?7Tp0#|flip% zRcrZd%1ADZ1|~Y)6f)zOumult-cah5vSBuEN6RU1(H<$m1>Jm>-dnrJQp0OOZR8G0 zA2l%U81ZNiErheW6i%A5^UU9P#2rX=>A+sR@^)G&@}yj?$nTk#s3^pyUlp7C)4}m& z0u8dg3h!5E*WL0;e*Y(oEu&YFRSREcuZza|66Dspa#*r^cjkI&V23vc%Up%}df+77 z-TR}MCJCINtBYV7?K{T$9gg2Sq+fpx`Vcg693q)^d`>!4A)v$cF8%z$ASPvY%$~kf zEkdj|Bm%+rE#FdYF{&+@YdbBO4v^wYT;^w;Li;!#?`<#TVGLcE7A=_hPDInCd;}zj z-yJ8Y;m%+&8Te1!>^8qNjk08yABFw77y^t7pMByAW_O$7)N9+P*cSkt3flBGDr4snEHysMfKoVh5ue5WU{G2k^n)6 zz}P$L#$Mx}f=+v&3cu|~=7g0Ot)9gtGn)l(wcP0Za>~1=I5LwRbdE=ka9Na5#TLVChIV^@V^LQ)YqlC?~CO0V`Ft8!(M)wPbL zgGbv)RZgd;arO5Ya3a>oT7C72F2769ETMSvTyo$eS!cMmV{*DLx$VrT&V*Qfuq7-~ z{QRedJO^1OH5Jn6dcHInWE)8{Y>2Q*q6vcqGX#@8>8+rTU|c_X=6v}X9oiG$3|(8{ zrRSe^%)kpgFXE-GfuS0A&HA&$g+9fUYwpuTi>=0c6w8wWOuw}=0^uU&wzt||DRP^s zaiYSUC$ejKmK1AU2u%1o;iVQ*X6twoXkgA_42T#$L;W~>dqq4WP5LTq)CXse`sYFS zs#fq`PUcR=YK||1Lm#6WbImg>(lDZaDLgYc6a~DXS-7U!0ZV0yT^A|O?m}PtJe@LV z3J`F&=%aE;n*|#0;>sQ!S%K9jz5!nYD=ft?R~X%ysTKYyR{W`K4zJ&KFmr) zh~_me;)Cct9rri%xXu33!}&e+k3C$3R22h_z1z-do54ZjWM*0tE9d)Cjlvx_!udBf zma3Qdx4iM|@uq{B-Z-k+HYf7Ll5)6TRWW}2#n@9w0v)foDN$np==l%s0*G<{(nLz<4NjR4<+{n z|EtSGv!`_t-*o6AB9(w>&kY>to#z>2O;Q-W8x`EXWP!ByQu^0OV|MU}-=R4M&qboS zk{E-6?gQJN%BPdclb}afir;lnB)Omt0K2H6<9o4?`$IO6=-sGb(tf#k)a->kf$y>C zr~GPkcd^+fY9oqk)P-_VPY%_fH7|YQ=&RsAIT_-lNHr5#AfJ*rB&EZHaTj7>S{D#G zxaAjEt`;;;CnV#GKsV%6JIYyX>-!Rf9E91LDt!UcaoW*B!_rncygqX(&A+;N2!YWs z0Hk^5wr7~fibC$r5X}IpJAw7o&|~{7ztH(SB|>x7O(vA@kc^A9ylGyZ0Vx?CX5Br( z1lM6Dcdx~E>o}uXbuVK>&vRyY=;?vjVNg?G29$&y@W`P1j-|^}m@zx~0}^7*Djd3( z7i<+xHMa*q#>G{L8UfshZ!GepSR10!@~4H;Vmd}KDL4(=klQcAaB=5?E+`^;b=ZDY zv(ijeqGQ(uPW+UOxt6_z?lN-j-oabL!jjz^q>U9}eHWEdeLrd@F9r!-D>gCo{}G2f z5$=-bBfi?-i2X$*=B`#&=nT7Su$hG?(QsESVH*kFte>YF{vUNKZ&2by>H@HHiC6;IlmLWTVd=OCIY)OvM2jmmRnE zc=-8oEwqRonplqFwoJF&O=_-mG*D+6A$b-6aZoa{H*HUT*rB`a@HZBy*1n*sjwt zp9S-iQ{xw;AxLY{^GTxjRGo-s=|8Y|PR3&|Z993Mt$cZGrcRcEls(cEpp&dRrk8jjRcZ2`-!cv_0(EfR6WmwSLD#uAsSjBtb`*$IgD(??xX2r;lTbcYuYq0D z732qISf)Zh9tKR_0g>K0i5NA#|7V3BpXYaH@t(~TB_RK3lwJG)Eq9Eh-vo-VaUyvm zmJ=&G#+*>WzsYSr3sfX(>y4L~i2#B!E-Zm%mSZ?Yj86bW_p@5_U762vkL(MmO-|+; z1#(a-J0PWmPeAyjlo5C8cKk=MWu#jR+ia59_?--u0I$UNLo&{1660jeWHRNxXj5^3 zcw)ratW3irt1!uy$N9H>68zFYCWcd!Xz4Q?sICdVpfH$X+n3x^R;zFw4e5u3#+x() zfticiPMe7{-$Q*NSwhK0RZX9$!Q2=rGsBgGXd*I-~2?XHwKGWep`k1YM#Y-?|w z99h?kc~QGoFuCF9RlS9jq{av@%fkU$kG-BY)#x$ufE*wSZeMUy;Y)J294hz=@GROR zD)nx}_#X=b@1nIZ6*s%*r_GMWPzTo{6X@!fX((Y1ynQO*WQF0CY8TVn8h;DX3qNXy z(6ooF8b8H5!#pSy6@;&=(t`xZwZwHt{SusH(l~getfvj~y&PsC(SuLM)Vj379O<)% zN^5{ti02Z~83F<*1*H%ISI&pJo4g9v9UdzT`mTWEiLHf=YL(v1Ekqj(ZHAjtE|yYA zf#a--ui_H!=19?A=v49mDRR6{rP#tHpY<)GOdpY5&C(L=(GmnHoGq9NK!4R!j!kRj z%AjP5wuC-zC5UWGMQbUp)ovYbC{Z7-ti3lKr+cn8>L z;;H`H)$ag;L_o5R!{0Kq;mpeNz#Ag&^Q72s$JqcvnYT3KXuktJ|o4tMt4oJ^{EBf})?YP;pB<(RrDlw}ycCa{xwAD(b55_Tb$Rb&a1 z>^C!CMmdDES0GCFS-JW;qsI@L;~iV>k6Y=t)w2sPi=@06no4utpEPj)7Lt~yLA;;X zG8S!!AeE}>`r4y4N#4Yvo?EfmjvS5dBwwR$1wfWg+yU^bFJ@x2y@?e+74yhWGJbK|vQU*u^Ib%w-UC16)<&|AKeuORR9j z%5pJXDU12cmJz(49CX%)jh-Ggfv8rLt%LQVB9b$viJ;JDZzVp^##)wEJ_(^}JOFR%iWZARCkG>(u?lX|Z*S3X&*=Ta=b1(k5fRqo! z>6=BR5hSSmL6$9}KjT2h**ktr_k%ndupz-74Y{v{KiN{}Ths6(=rx;fi7}RKc{6Zz z`?g5ps94R(s;M^rv9Ef7Oa#$Yvf@&vR%Rt}Z$uiu)M;c4F=A9;|5e@b!B?@bGtg(7 zF215Y6E@YcFu_|4@{syG>n&Jk(pm@|`ZhHISy-ijc%*Eo@qTd;12`Xm?|WQGDWcu} zB;GPDW6#ej$xcV~bUxkl#HPmiJw{+q-@!g@2DPq87E%@}do7B#+y@1>X-HLlo8{9y zF%@z?bZP+qKLEfr<%gHKkF7MI+-Jon&RB%*>H(Y_cX88^faSlrn+pC!UZ^Ln^?6np zzK&zr9E-B|knN7rt4`!#IFsdw$4n9fOsFI`D3ERYj`p-cmQ3aCo?}hB5`QC0Z8eHOd9$NHB-oPwAA^qqK4J$gd>7W zNnb(r`xwk1A$}(*YcKv(pXfbY-E(lzrK7 z-BRG)MSVVyWKK$9{0MSX5I+#p09b5JL+WJj&lX!XOp6_Avg5&;d_*cLXLxf7s}A31 zF&*P-R0QlqGU>)y+wrQEUCvjFPPmlvh5zwe+o+mCeAn!)C3)=J8IrmL&rEX6pj!!3 z4D_@RQyj|r;o`7-iEiX}=D%vni6oIjFB+--dn87&Uf9L(J)*4MLQVh9Gh;JFXj`ju z;p0_AA&SX-rde1BdRT5M^^O1Yh0`o6qww|v`VuLbfcph(eEWeuL5FkF z_f!>Z@j7d}0a;nTIxO5!9s>=-NL&J@Pl*-UY&PVB3mocScW@RgCDM@y*8eXM*$|lkvvg8` z|5Ny`ogX#4dKJK?ZJ3xZ0JdjE7ivotYUtv@6gjZUNxry2i*6s*5e7HbjfV}+MFHCjSmR^Jo3)?`rAMI<51j)K%{1*JlDT45Rrb6a-l&r=JdHo6=xX8puW z_v*@mm$TGY-YbJdD+3vyBIs8PBm5nj1ToklyFxHis(ipsf zfL4MOaow+41n`wp+pa71VPdK)L4qWn7hI`E0s_0FIY%hZ8h`wjo2h~Oe5dh6FwFHc z68agzI_^*n0swx)$b<&j-oN4Tcq_1r-M)0=2~dWsZ?(uO@UY6C63#6itT@#m-FQYR zWg;i-c0?h4IdN=m9jMo|y!;bKuho(;Ht;efUSjqzQnWfOoV;1+K_06l8I=k&z`p0^ z>O{iI3EtzdlSy04hks`&;Epok~&PgSuaLcPd9cLihPM6rVoGlrhVI;GgNGY98P*>nq@~v!&UoRW@+FNN8)OQhr zu_m*LJGoLSB_BjGRa44htvqFJ9&oXdW>*SoJ&anV6H$R=TP@6g?;770dzisNLMTQshQ5SUT{ zxp+tZACo!tDe2$8Y;`-U&}COemXsNW9sRygIf~GRdz@r|CY2)Fw`V+dcME7E3{#ZI zs-3?)RJVDBy?qMab<=VjOrE7}bOOkPLjCkgEH>86$7U{3`lvJsZ*fh-yTp@U7Atx6 zqF+fZ;kku%1zpw+a=xw8_C(d9k(5w5ldlH`rfLsyO9l^bl!!VtVMD3V{7x|~vKZt^ z9F0&5n~@s&^Dim&q2Z`*{1)*K0=qKsVtc4ZaROG%Ue+u|!7gL^y$B?ahnB>089^r6g-gB(Omy$m2iJ)mk)>6~`Dy zX_fSH!=EIrH<<(ePQH|TsJYO5tmrlDWv`g0=QnrjrKSc)uBoEp$q!ORKQRW86m|sK z#+J{s#aC!a7<=W?3tJOPC6@p2vWAClRDP(-Qx!kVZ?yj2=C9oGS9>7~4!*d9J1Xb? z=S~qL5KsKv=b#RJBEi|t1c5@_;m|GivQM3H+O@ZK!4Nk*5sUBfkUfUgLg;f|Q@1J) zu68Zvm9O;iC-#w8&c#zp53$Uy0DXK6$`0eg*qIk5J@4DvGIRBu8_}iBvz>~z;zygk zP8;*%tzrhe@lkt1DtCEZV`68cNkD9V_(-U1h8%zwT$Dg9&Y54IXLBFaC3p0r6K2nx8j(rN=s67n|08Fy#HF_E>0maeO`w8Os#13o&{B#Q?VL`Z@KW=?Xw zeQ@;PYWzm4C0nDdL@Ro*PDIneRMRq&OGIFuDM$C-5|#g1z;K^wDv}8gIKS;@uj0|X zc5z@3Q<={I=dN^UUxz{a4>1m!PlsfP<>fywSe~hC%Q5?h3B0o#&dMWK+x=%v&C`5?4Hts3Oamm%MP2= za!6dvTuS zHQ0ol-7ikP20rr~4=TdztHf0?(NJuU0kBY%(TF8up6hr6Utm*eU-4rWq-T?+Za8!9 zkrRkfJr0VL>k7${rKrm?($wj=y*n_^?!FglKu0tzF@>iH18ekZ#M`oS6oKQZvY`9G z;wgH<=`a`c;IP177~17~0jn%_nHAf!iK5gx9PG?f-p;KM%*{`=faG`G_9>P-!Kk=+ zf}E22786 z(yU8l>X}K1y!q|5^ImA>YPUx9a`wAoOaD+!EJ?Z|mh7yEia6N!Q{~rdU4AYhbJ5Z3 zL?Qf(z^5OQDkrm5Wo_k?<}!7YuPeAs4Q z!uO(ru`E^LXiy_;L@Xa2jJ14`XnF7CqCw0en?5&L-Y7i|Jhu z4GhhN)q^b%Oc9dCc=^56Auq1tQ5-WnT6-u*lyV?wO2 zg@1Tx*+Q_LLLk_G{OOUc_hYz|pD4NI7Hag9RvT!RRwgWUil{7;GyTYZ$hoV=s)J$n z&kXdM>cbYSX4WC^iEpeI+F95>XQ1^kmVJL=L`jIhC%ikTJI)EsdK?~rK?bNi?>GPC zP_?jPF6d&C7vxPmky%16WXyl#7Ey!JOyeOkBJa=5_ChVs9!jniKTLGR;lMiK@D-~n zotIL|FGa?Qs;S{hzQl2{vjDVCQknUeQca2yZ#y@Idv%Ss*k*g9SuIQy27ISXxqXxM znR_srIJX6%Z2hhkS>Kpmd86iD{2N_GrMdk~ae0>(@e){li&j z+-B_t+Pg@P!$?3lf3;baC$T5jSIbY6ygmHGRp8IFM;51si{B-SoA@g{XD&wDSM6Bh z4`fX%yZX=Dov%Z)$K!Y-ajg_k5nU80IoM4-*nu+L!l(a7d$kDX)qpZn14}w}8Q4C) z?Js+T!d)tcrPS6n6D}%@uIss-n~3LP{9?~4T3%Rkc>K?C)%4t-WtFcE_&f`8`il8| zKq*vM@7Ff+UaStzYdRWxvQD~tef^&M8T}pcYdL{1-1^lu(fB!lO3FVCO80IPN#zy@ zV_4)fK~#y0H_(&5wutyG7^@U%D_b%{%qPL5%X$z^2%;@1raHhCw@kz?y7RmRUJ|c0 ztEJ1(cgbD09*Z9h%jC!q7Oybogc=%>J(njaT_fv?kppz=AS$)d?U39}&N}L$GI``I zqHx!rMM84p@Qtpq3V2O*I8C8G`tK!6<=VHd_YxZkuosz}G-tNu`H!_sV>qg=>aWj_ z7nv(jE_Yl^^{9?xS_ev+!IsFOfgGX=r8iY?l}J;Q_vphId6;D5C^N&FkIYYwm6aOF zV^k;tn;MVK$5x}G%L>$YCT2Hk4i4Uh^3$iZwM3)r%wk$00#0d2-u4nrQ=B^zXS);BWwW9o+PrAU&1i2PhARr11LmY1!xE&HV;cIx>F({tj3oX zQ-cOJ_1*sz+WUkYo?;T zC{}tqnBy>F4JS*C`swKiiIV6S+p^F}p&tUX!kD93O@8}A3iIqj$wXcoEZsPO;4%E6 zdce1#FUBSpH@`Oy?T~yDX8D>;YHuiy?)eMEPThD+Ym4&AX1y8ZtkgV0Hn^r)zl8YP zf5RmEdt;e2@5FY|F}*gx6#j$@^8Ac`1Jo;SpOM{W2Jj6mvY-qz+>hvi`@~9GFwDH9 zbAv(`GsVZw(*z-as((B3cd0E>4rtX$VKyEz;TG)ptR%?%FR86T_IY<(@oo{0Gg_%M zwbi#><(t-ji7X1)N%$q!yJOd^uE{`k*B}bPaj8`4zC3RXJOQ{48941a>T>%YruiPl zy2i$~{nsD++3Ts59QU%8FZFw;$3Qf#$;zBmQXUX5k4t>e`xq6vt1oUQYFNwLy3%9x zloM}}xrD1$C51boj8-F~7-v+n8Hr;_euCFRwqO-*Gfhd~DtlWYGMsfQfU^REq(Zec zhb>93YrTc?Y_a4BocDQ9T#?gQ+v=z@a#>&G=-qiY*;3@LV)uZ2eU_>TL_GtG6VuYQ zSn2bW;+80BwjA{NmL>jA1|0(XB|4e?c90pH_?mMxm=%PyL?>$@KYml2^U>*T ztQ2&Bca>vxXVC*GeOy^8+xub!&X12~T5-3QVO`K0*2(9HQqu`dtLwm-29UE_gMH^) zo#dX`fK76bUz=At0@)|Lpo`-Yaoz4qV2AcRM%Gow?5hP)#uXCQpH^UD=qB#)c5l`_ zcCJf8-mzAdJ$Ka7aE>TZa3)6bdu9)(+rnfwxe_@RIcb`jlH?i^!rHsacQTUHs{-Zg z%AUdbp$6FA59^`dvd(%PMvIiMlY|NpiBLiHyKn`m)XI}FO4Vt4S{85Uc{Wfo`hCma zQgXp2+-2YRP%U1O$GV?uDUC>2D&pY!e-5X}duf$M;J#gIpE(`cuD&;;aghFyYs_~F zoMG~oNW334+e>OCxBkz_uvTwbSURpqm#Q9TcI-KtqKhI5$y28$KDgs1_Tz=L9r%(l z71k~ID%0J&kjinhT$^i0$7Dww?HjD0!mLoqootcYLU;j2k;3lDJn za|=$;RP9mBA4_mUk9=F)^9+ED(edySyS9nvLFyJca_x-9gU63G9B{vuUq$2!H~(J0=9;l%ro4y9<`QT=NYTsh zfcsc*6Mou6hiCX-fRza}s-1jT+q6XUiN&g`S8`LkEjjx4`*cIHG>9^7@@Y^S%Mi0c zDa6w>A=;Zwe`iD|#q!a>zvo&<%5t~i=ZaK+o2#SmiP!1|Urn9kE4C`H79!lEW0Bu1BJNl{5Ne3_ot@!Xe_ z3}ZVqH)zeTSijl66SkCY_F1&?e17u)d}VWD5D^oU^vTGp*;+o1pt?XDl`cx*O^b`Q z_^mw*Gn}yEit9QL+AH*Y$K|e9&|p9beYGIR`f7vr64c3mN_nyPI9VlwT*%)9+gLZu6ywhNda4RXHqyuWUh$ZmDPt zs|q;+g4OTeRP6IdoK7EguZfLJ23KRcm96VKl#VsA2c-{<+9w_=_-m7##7_MR*f0Lq zvI@WyOMkVW#$MREz~X9F%JtTqFiu1@R|%x2t2ff?UyQ(skyL6$kiX71$=Azmg4d@w zB>bj>Zkv)1Od4U0N1_2rB8Jx~)253v4?C|`+A^$T3x&u9j4I!*fEw7N?_S)2cE1xH zRD8+R2nfEa!(KgJyov_qpw3Fie6+l*B~~n7@z)iC6tLrkq&owbF{p|kd5?qJ3gRZV zblp1amY>UIITm-kALh57QboAR|5Dt3%TX{KX2@Vf^M-T?j9<^bBl9eltd})%SvEwr z#?XNKX=f?$PN3^cPmmN{bsOk+X*Chv$aUcd5Z^e*eB)F{_kPe0m^aY1Z_UKg$JDaw z0Gv-$q?V(1itDVtj7cC8Eh@mC4;yKSP|Db4@!j^j_k{!CdR@+Jl92~aom?osdl@{i zWm6#Uz|ZL^&J!<Ad_+eNqVzmx3e{D1Lj#XNI z?0+vH5jOGxP*f{jC8?|ba!i$u*l}a%^flU1x{8?^)W)75XrF4KyTtDAxeCRVMgTFS zh+JAohV=VP`Mrdf?5k+(U*%ck)f1&FkuRZuUv|cX|C($>-|yp||GXv_-hKX@kNiz|pqLY>s?YvBeJ?g)xv z8qdL=eHm97PFVMf8AB{pYn$1XwJH;29q@q(wlEX zKT|ULZ%~<%%y-{xq*`0>&he8IbWd`*&-=Xzyl1>Egp-Oikr{`tRkmbJZrinn+IKcV z3dFA$(`Qt)FlBV>?fpJ2FBg=c-h-}YkdH4Tk-E)3s?k_VHtOEq z)T;yK@o1-}iiNp+4__ERq!5hw>VVG-(-m*eK{`J;sgtvC`mu-HQ5>x!h9dX;F3i73 z)_HZs$G^$eDveuD@1oQunxh{r9(`WD9R#L)0hH_*zI7cpe0|RyouSFsOC`8JdT<9J zb~F~p_7zFpYU+Jr=3oD&^LvF9W%sZ@P{jCVGb=sof(lXt4KtK|0w`M zG|9B_6UgdOv{C9*<$#FH8CuvO0BI(JPgTnZX+}I(_}3|&FYb*fRyf+~B3 z$C#S8p}8Yi%1SjE#+kwj#($TUX$e;;-2!QyHI*l~JW;RKn}_?=3%o5(`I@7ShIJ$+ zQrMQBf}0@a1C__}%OxdPTu71hhp1Jo+1@za_Rv#60WO}wntjJIFrxJABtINdAgwQ@ zL`VYP1T2%#a9zD6xG}1J^eAlD=USFJO*Oi^!6mNK6^}j(L~- z@xM|RR@6vhfCbRz%K!_XMZ9|HX?0N~EuboDaTkVwA4cN0{Rm;S}UeDgsrBGadxv*FtZ zj&|QwNLqJt+NWVE#upAxNcka0Gkrf>?L88Gplg5rz(8a$^D^!D$fM)#3a)J->CXt)~A)^o!3@zQyq6GA!8c*%kE z($uQ)9dhXwAuo&kNcDzg<}f!5QYH{gZ7mjG*VT)VTfy8+0rT3xWvFWIY3^bX!QnCD zBbhwsa(sA@Lhw#jozoNwOTO>-j>eXZM4E%n=Nw^cJ$a?iVB{8oh7tl=-YqJiLfU-m zd%&XMH#;FCgaxjxD@KaYTU6O$)%kr-6l&k4e*b zfZ0BXusF3s=xmw9W*hR+dJVWykOmBe=q_T%_cMaLGpBA*UGAJ1??=u(r1_)Xf`?nZ&7vyUpYtlJx5Vn!4x*Sh z`u{ALZu7r)Gm?KJ#c>-+GVZdx&;W!WTXqXzFoqMP)-3Fp^l6VZ7DwAN7Gy*f&vSY{ zrEO3RvijxJgOcU+duD({ZjpmeyC_T=SyO=Z1HAtzZpc8H713ch8$f@lxH+|>Lxd5t zo?ga{N5H=^`EN)_ink21>q`_^&^{0#qo9)RV;_I6SZfMD1&@U$N1csY53ko6Q zT-1yrabKvSopLIA#~Kw717q@EUS~P!N1(x(R2J-HXROJd2#d{P zG!CzcHK?a&+>pEAE|?)Ra}^puE}FQ;7qqLmb|st5p!){fze84cnomiipD@xk-_WX^ z%=K(Y(0l3qj&oz3jxxc^UIo7m2DI=%XvWsQGyXQA~_+Y8tm zJiFpUjc*RoSmE0e@R32MT@WkxA49Or{>=*YuN3HZS9k?4KX$7=fT6xiSfpWFk$mIV zclmixJG2S#uam}ChhGl8*qtafu(t$JOSAlGYW#YNV)YUlvoY0EFD3Q=A19BW`PXOv zUf|6hHC{9Vgi&hw!z9^XoEih5yjzw8yMWmsZS-vliymj)c-eD~j&nn+CFLZ_9yCOQW;UUtOtlzMy z>wYlR#XDSOfsaqv0u|AV!SjE+VDD`tw`)DMgMV^AwuV3ZeaHbRg8bb(y3l~2T0qJh05Ft-u!%Fq*VOsV@iV z4Jok~FR|a&DX6L6s$!KdhT4b8R0=;O`O#cdnWy*lj62Sl8xF5u*Fjc98#(v@AIZ9v zwfGfJa<=>o`me~7BtKz!dhwEP<32%{K_?k-Mb&7r+3^SVvx6eTFG#+xOCEo6n;Dg= zhGR5vg6m-6kGpT7IXMwZ*q2HT44fQVt+hog1k*IwQ@I+vY-6){d6*DYyF&W<I4(oPo1AI+AX$po~+}*^Y$|I#KlrrF~=2YGyP}s$PCmFY0AtF9t zfO5^p3OQw`5W6XWN3%*GO*5D>0x!e1{sqQhOIA%Zl)j~8nn?|T6|Z!e_w|gI;28ra zzQ$L~)OZh~o-Y8z@h!hThKPTd!#G*bX$+GxhWh<}qN#`yNztsO*ul{)r(9 ze34wWPw?fsU&*hbKkgUzrgS>WZ?%t@^`@j2WU7u(!iwbpW>pLDnTGFwyZW|SqbA0n z;s(pyhtd+BZ66lUa23DrNh}z2T`z7z--G zdVUOAl(}*2*2)24O!=KjM@@Ce3rE+>*9r%KAykC$@zxpXG61|>Ac4pCM>U;xAWa*3 zG0rJ2=!^x0B64>G7sj_3vSZC&3@+&`5JOG|n7~#^!?)S(ouefsl>qmNWXfa(`oe20 z^{o{f#W4{H%}k9D6--amI$W{K6O&xHBIj)U@A@oymhrYF`5QuKWKv<=_G*+_I(AKf z=3#C%$ZEQ?bQCS`aPxdk36W_)KlbCuY32#{d^2oo^(7BH*Z?{Hk9erJ?RY&R`I&qexj#;ORL{?G=z^#pr4PhSNFK zTzdy>gKCrmS5oUyw`IQn(pOU{t1G_Dd?c4-g^#NrYdRK|qI8Xk9OS>+745GA1W9 z8YexWkf3icS#|a{iM1d9f(w*&N;;~{o5LAT79Sm^oe7BLT@;JQ3M)R8l=AcVs0>eo zj`@h{83~Btg%oRlo`V#lz5*98F@!aAwGO#>JBXKWwGo6Sx3yMGZHU z0Mg>k9?%iQ6oV@P7i8@Fx zPP>xd)(ORP0jhu&$FR9ekjt2REQVIsh6}yMSIbGcS;w$pnEZd>5fRe=ZN<20GI<_qRlFW>YlhVZT`t#UaHGQKV<<95 zMnI-|Cp9}xAuOmzifE)5CCnZVT=F%O;3?E;t5qeT98cstq=PDJz**?16OTvC;k2lS4-}(d3u}Cu7 zo-m(4hxf-h9!scfdv^HS=I54Cad_5HWW?D#nYJ7q;NRS;z-_}^q)L~vfW>9naIB&5 zjaROY_aewS#PfU5SGJ0$cU=uBP6Gk0n8$l^bDgk^<`{mkdk$tn*;t?uA%Z=piBEd0 z5$gOPkVRAqFCH>KYH*60oI&4H2cApWDS$wv$ZJV|&gLVvs?&WVmD5%fY;LYYNH&}L zQK2cxh<=VzjS8b4#qJ0C)@dZtEn;WON0K^^LGP;4DUTU11qvvbxkQR2D)gnkUrre? z!$Bxz5B-CI5_W+TR|S&&X{4T9oDEP3(Q+`FrOkVSHPA=`>RsQ^kX;z`b=0x_^qYjp zEZup1@`VW&G+!bRG*G1t=X|GGoY0r!>{O;9YQ=>eJoAj9vFfLP2=hUU;$#z|W}tAV z_cA&ZqblYWPhC{kbaGJ8g)lS<$J=f(_N=ZI`oPM3^p=0)!2rTciP|U?D;8yTrzqd; z9Eo_je_~R9``sO0fO#ZmxdA`f+IuYZ>SJ`|F2=)HOt5G{k4 zR4^AXrF`w$oYf9euQ0yd)O$AtId0=TIgE{n&7i^j&%q9@=nIS zbJ==Mg?QA(u#TR?uTqBktZ#3WXBj&Dc-ZoEMUX*dGogd};oV%992kHCeKiT>gKj}1 z1XECefNebFa45QRjVChf!BzG~+7j1C5XuT(LggZ7Hps8w9r^3!NLmcxT6C8W(;3F^ z7qX9r>H)yW#}EK<1C!JcZ&TH)$7jw!kgW5D9sBUJdIypMff#3O;L0)|u@cVP+5g?% zx47%DtkGoK;X#r0_pbCu`@rCqWDc9v;K6S}KOj{k?ic#)7{xuk4Nzi=YG476{__xX zGfL*QywOd;lC249mvlb|gkMq25V1oNSLuGpapcp%Zci}i`r<9?3$g;$(ULEXBFh8)hHF9eTI zQvo3vXUo&`l&A`L*BtVhF0mDycn2_D*55^I@p%tHCG_7QT4;e@_xo3jH3 z-&ktpPo~gOx(JG6B#0~R=+zVz=O88phhbGqk-?*zNd*~*m?=uFHV6lLeTh-_S%XVZ zPxNAHQ~|pE77=xkykaitFH48}-`!VB#5;HU-8-Mq(rVa66=Rzs-BKg7EuB&J#wa~( z3I;tK5<0677~7CU368K!9sp(|vVS(LzQ(-H>aWc&s9JRQ@ECSW#J18M3%l`c08DK; z^#Lm&B4xcoo_QM>{*Ca#K-p@naXH^d^ zQCpp+S;>iY{|Zx@h8=J?1}r8;0X2R)yt}o?%PBWBkH?$taNU-OSaEUDn>_x|l|?~v9E z5~!{DALQT7yiv#Z50AH|*n-x-fNb^eb=I3&oqn^e|gGhO%} zF9P>Lf`^kvL8!N@`*lw2vw40Q;4pEdMB{totJq^NUp^2`nCfZiSUIHP{FTtl5P~;h zA?r$gJe6n1`axBFqoa=7u7ZdF?o+2YVvvZ;oc^O4XaS4@e0`%mvDYVVkAPAm)GF!R zpOQ)D+@BUUpB#??k%x#a1t<+|7$B`!AgeMLHQo1Oh4i7vW#FH1ZuG1Y6??#mRGspK znr2E|(V)L}Qzj!66E)L9oKZ>L%DOb{GONL148vlvBgtBy>BC7QyBY-~mBg~^m8 zJblnnlkrZrZGj7992cD&OS=IR{|yL82DxFkkSmj><8hKj+Afm?QZI5a)2z2I^NJ+f zyMsUw65k}+cmS5z49XRjT*K}8HjSkHx`ogu7pc$v{i)nznizwc>1IiY9w9MQNBJs7 z2;bG+!*kTEGk^x1J2Pm)SfO*qcZ%PD9#_+{ekcz7g~xUnA+SYOnPOS-`Q-qg84)Ek zj9U4hdV+dSf_uCb!TvX!vvEdET^frWi3C{2BI&h)6c#{|O9q*vmSj*{N!H78jhRFX?cZ92aFD9ILElu^hzD}2d{_>gU}hmdX&bSaL!QxE;c{^=E_ zi=GtP2*|f|WfF_gQwE0X{vTUHP+14NuT5FS0qCVwSH?l-MQtBB46}mp6PAd9b*j3h zvtj#vb*1G<*I~4JaacR&y6r4l*O6{G7=%raST<=zv(zVZE2ThkFa))7A?bUg@P?Tz z5~5NIJI0v}Hv!Vnve6{L?!-?vgEF7W%xKJWfkkmd>kB%pl?<5%j)t#A<%3lksie%O zq{n;@vG^5W5Y%xGjOiHxf0>ohj0s8S#BGf??T(;>l8%jEwqDcJH91@3oVF-_Fl z6G-EbZTq&QV`y*Ta7ZJ3+H(zofW|2L7^s0K>4C{Hyz?w|o4b{b{0J?%0R-@;T{HU` zPPG&uj^c}AcCo@9uPik^7Kw&v!g0E=Wc|;}s3wnLZ>E<;BWlYJ%`)0$*a@=~*Jppz zq7utYr=A(3WmjdgtDl!Li3FZx^RJA-zf!N^&v^esHFv5d4Hsa+|E^Wx$fP7X*O%3i zw>~s0`UAkxdMFa0%X^?8Ebmc0T*H%x$4um!Y2^^A7H0}{s(?o$x(MW<>uC#fL2J4* z_VQ#O=TX__RN>_;a_B9x90vHl8W&4j8d^^V&+Yp*e;Ktdq9?brB~|l=3VI4?>PC!G z@r$rily}4etZI@Gz%SlAGcl6cW2%kdWn~8twOCmn)H{_oQ}D0o9kd3AQ2%sjmmUV+iKsap@z~0D&Y+5brmB1__G}=+8 zO2OImDB6XO9%o0@aPqmMTrCOIzevd*{kg0cLLTjeFl0;}*ec&}7a_SuIJ8j?nH2^& zS@%5anMb=4=I^UBZfE`z_xt$ky%r0&oBVAK#S=SNK zj80UkgAy-}y)xrCrpJCKTwP{w0viDD1xYWEvVx+Y1%*x^D8@g5w~4n8rlOdnyzDal zkDEX-+Ct+4R`Qk7poY=WT#X}<+{yWsfN~#&Hbu{8oIogrTy?j?7l$(w@G>>QF_`+U_iQ~h+EE?*^&MoGJElI5lQaqMXFEu9jx^&KVlk@Rk- zLF5n2ynK!9FUt_a%+sf19_mmhr)f>%G{bu-it3}4XNC8xq2RuXLh-(wZpdk})%lmT zK)X+=N$4~c^5}zc66yS&$F>8c0bmxXW|x}Pdn@}=(Pb}}ZUSZ4PWwj@fLmwupWRTq z3Ij>&U)6ev{_dLA`rzU&KBS@`Q2ExD+A9AqzH%bOv;aeRg=a7lJn3N;SNf8HD#EnW zQd`3WV|%)RVdKEAXKHlzvD6xP;(_9-tsXyA-8(ON1WBkmB7%{EejV9uBF(<$2oHP2 z#j(e|<36u+P)+pFu!RjU7BlnIaQB>@GAIV;w1Yox3tHVIWleexT(lJ$?#J9D!U`1z z&@o>8S7}_$;04M3;^w6ugzr~_wARW3=|O4jm&XC24yb<_;Z;Y0K2Trvhv9+#5=5cl zU@Y{`TUe+kUuxX#0F+T7;ZV7l=g%ZUh~Y4WNrp}S3WT&_s6%H%)M1d-L_z*RyZqX1e?48_bzX zl%P^0BbH1#R$Y^RJ$B^G8qZKGPXYgqK49$rgvY&Irafdf;ouHw#+vNA4#;rK+~23l z*yUns(PzY1i9Bn=@hIG|gBi_4j176p1l3&9yH~QXY=8h!797M|C{+T{C5s0Y^hJ}~ z{!(E9?{|(d=Jae&<4A$95hIUk>&}_)sZfHDU-}8DSJvgXlC?PBtEP@PzMa3KsVdtQ1 z^j6NTxYq!$YLn<`!l_hQZ=qc&+Kdujy^#x`21Ok!Ys@fVy!-ds8e&^}gJQP{GKf?t ziKTs1^`c7BGczqG5VjQCduRUl94RZsw>fVULq5W4TOWWtepvmm$u__JfGvTgVY^=Z zQtvcV9RiOWnzm(EQQ0#*pb}t?Bv+;v4QjgI46@G(=#WW6(+!yjPFp8cNdwLoI+DK* z*CvwAXIx%`z-;;p>XI~Duseq;X@0z3uTa+B@6++!E%IQ}+Wz@oMy!y&eeR z)Q)N`=9p3Lu5IoD+*=MEdOk|&5hPAqpjxDPEjhOq)--dCI9)|*Jy47v9Aeus}*D@TlJB#>c&fQ~&jf+t~nK?bj zjPYoYo5~hk5X-_tQSx-=XVZ0#(g*P*~i@S z*8Z|0d6I2RwV@>S%@KEd>P8GFR6PDw{D>luftuwWUT=*qnc(tsag&KDnsm~LxYalq z7;5&Fa#Tb9fpr9&D}q#Q&;y*RBf^N)R%qv*|NEz~Iw@IX5o_rEvl#V_3U$w&iCyDp z57YSnW>+;B8%6_chO~Bt?GI=4`5g){W%UJmPEN>Ztx^k?()en=AN^e^_%&qM zX8}m5prjh6`Gho07nyABGQbM2l4;+m@wZuucUrcHwy-=^e#H`sqb>eFO(LYi21rq% z=f_;7k|LP(xF2>I^jN{ta|9{r;gmPmK?1G54Gg$}ml&|BiSC?k$g~SiZS9YXC zpD8)jFeX{?-D$PIs8Im_KLEgGaIaRXP`QOylXE_)s3Ct0Qron0^Fl@|sCkV}A_0ht z*%JUE>92p;fQ8M_G35uc8kdvbTG;k@1$clnOnidX-OVSn@B+94Z- zzLyBpG$}^!XVwJ96$++R>eU{W;@cpov$=_ria*%3v57xbnP^kBH>x^&%UE^N_B*!O z;VhD`E=-48YzL9TSN5<~BjlYTUK6J-5VdF;10@lJK*Tp&WA!V*MI|k+!+(0;aMDhk zF80J;oN8qYeC(7ci9sZWtFl)jmpfRfvNLx&kD~ainK)Ek)k9-y4Fm zjiBeH;V^w8WY~06##~ptk%aaU+X*6aQ(kv-dLZx_W&OL)?~|4eS)S}s)-+xr1Xr!s zl0jLfo4)WXytzrO#|Q`;7B;5F8s)Lk=_|Dd5JAj5;Q@U2Pa!q3-I%b2FH%cppn30y zpxEUo)AzipYvCrrq}u@gKWM7&Xz%JS0gc;b>R>AYRGIjz!rZGHX|;e9NT_b+dVCU| zh3>fsR|H>Z&Iv#sPt`E2Ii?#Erc$PRjMI*dS<`w!{&l^IaH(qJ4fE6z_f_UzB5;@6 z{gnigKB|D;lLTR=Q3yx1@*E-2kzj6CVlakEWe9OmIO00*DzI9zEuMHJ^LB`75>I&; zWmkZOAlST|=jj7YlfF?lJGOn29Fhvu7&nUK)Ha9#zfY~DtU&_9IsAGh5!#o~=HQg4 zPJoo9QQMKT?mjYS%+>eN3KT3_bs|H7A*#EjY=j90HQ01lkpl@CLYg7Uh+?LCw#Zfc z7FMa_5oZuB`lAN)!&#x!&}Dtdf^tCfSkDyi9+m3o#Ii#Aij%o8d6Hq#|3hEpn?ALZ z)$jAR5Eht*Ftk0|vs>>%OKJUnI|}~@%g;J|!pzAG2-rjq+L+VUhB5jlOQs)vxAMlB zF>)nFQHtS5Xc~6;j4b<8w+a||!A9Q4cfq0Lcvj~eF*YswefNqURo%raT95$EnP6V9Z>{F^ z$B=bk4g3m_fT1zUX{PhlkUR<-rZcQ+2Y06$m{U9;6%wfbfr)yV+#y;e8GG1xaqy=`&TAmuG~I; zQ`H|Tl7@&M%ADrqdv>{~)DOI9KbK7#$?%F_!}ddTw~i=#2h?o;jFKdQ0XJ`=D66}6 za-aT{+R-v2_2p{7I0AQ+AgjoT3jJe_x?cQoa6Wg7p_|bkD5e#O=r3Sk!a9p!9+KYD zO-6owyPBHq(1m0GMG#kPZ{(Pa2qx4+&6hAH!6ZHve-_K?3WpMKmHpJ)$Rbm-qkdBn z{9d+$2Tazbq|UXSr^mAi+FV9KZ{dL$B7B4xX-gp16Z`_%$_>KsqH+(v4h^(!D3o>n z-105x&BBU*omy;lG}I;CyoF!+w1XIyXKJ@?4J&@F18Q!xm&;q z-al0Xd%L?>EZS)2tkhl5uxtgX5>0_1LNV%nBrov=3NW^yz5i7c+wwsq(>0Z!{wqv& zZ#!+T61aM9(J#K$PX;pLfqiADd@*<QZqr>t~lgm;Nm)|(Yx2$cZqX*ul~?+@C9JfO}z<)r6DtUTEL<+BuNVng!GR@HE! zF)*|e7LNJRJZ-2|98G9A*CC#{MV_Q4!-P};9{V#MhvRjc%q+Myec?LTOvwQ=$9rQa zA^_2w=uc z$hpQ!8%N4K4Lg*G+9w29jl8tdg3uf>By0P_Ss*b0f;q}eTuFBr!GszV%v1E?$iMAk z6)9*zE0()-v!D^u2o6CYOEedT*tC|3q3}y;rsZ(q&zJic4GbHU*2m^UMn9iPJbQFT zyID31?w5Icr5-D-rf9b`=M7o9=bA^!2PUGQRB+wpG$0#3<)4-L-c!o(PT_O8gJ0BY z?8PbMW%_W3@sZ?+Z$Qi}vWlVwneKir4WdnSA^TNpt89JnYlP4k??SoLju}*Z&80f$>Zt1JGalWn>P(BcQk?xk6^nRY-$3XoyZnaKup5j-NV4pC$&Kmf;0 zz27Sz*S8QdrIUE`W382S;>7O8>3qx&h95r{Qr}pTt_;3MQ)B$c`WXrUf`f88{5e!> z{-na&TFwwYJ>3TxZi%G=rOBz|xUu7alGM3KWyn9zbRm8XUm(0p5FBAe9=ku$nbnY>=-*fmRpp_cH_WEGd&=!#YPve>U`^| z&x-+IiUn&5Bk`WSx76f{e>C{MGHcmxCT6u`#*y#BB`MQDBu;|P1b1K3VJP5!LS3Ol z-{hy7>}rT^j^*vbM}H|Y8;a8YLX@nHko+Endq;)Vw_&@S3ve);9lNRpFfYybjv|^; zL5uv>?~yWcR$%^+J%6^<{6Yl0RgkRXd{6z1;4+q{Gn4nF7~aG;O}4>j^SGyIX#s)3t8`r z7)R8#gb4253s6WdEn}=d^J{`qS3rc+&p20KxK?k9Vu=!t*i9?XIaE}~tjrb6WwWx+ zJM`La5XOAxc&I17_ngqOYdJLxSHwt^aKQZ$Ep$Mk6ji}lCHXH3VQ?P@=d zaeNZ9IbV-htw)p44x4Q2006)pCGQyp4upgGt)KcqhrR!E3lRLXHR$W9TV5qiioQ~J4} zdyRKfKR?M4KXpYo{2`4+|I9aOH^9KsFKJ_T1m*tOkR0v(cBs%mlM}?;+DK`%PH@f*W?YRA=i4+R4jwA zH@0~y@6Jeq?K{fW8oZMJ?oUXlo;b#WPk{D`*|Jvw5^|4WHDfl+1X7jn&Vf)9p2-R;;YZX0JSGKEN2P$k|GXs za~F>>Kh)F(@gpe&G)-iwxcy_+Ug(O48eMA_ZiW8Jyx)dagPq)2Lu@DknfYTXu}4Fb z+)fLTT@5GKvN>SV6I_^9noNk+b7`P2zun~Ro}#b>adNhx6Le&v<5G!nW+Ro&#B z!O6|(JbEY;b;$b^=L*OIcR_~5y%hGC%h|l;J$yG?2&jneVSDH9?4Fk5u116R0W;`8 zE=kzRf3q~dxp0y%?^}=NDD_2MzHEFzzw)8Q5%T?-DahchtxtD}2(!wCcrbMDkQmjt zS9bHIK>Lc%Cbemgbp9+r{Ai{q_2kZLG`-Jk?2^@qi?FP)Yj5mQp+DrW@b_9k1?eMT(oA1I5z6krC@DIHIOcSNpAm zg}nKvl)Wl@!nPE_Oat-NK-s;ZbgA|5_hN{k(ZpY8_a?UVJ_D<2BV!!^0seSbE*{ks z)x47xe2JabKeD9+LY&6TC}w&cJ0u?{SDj^Cn|(m+Y%)Ge`SNA@e}6dGePz$UqyTf_ zdW_Fz&1YW>VejP~#^_0IDeiCKttrg%q3sY9yp9wAf*>-`yB-=NQk6}q*+Y5z&*hl* zQo8?~sT?CM2r%gLJ5o%3YR{e>Lq)m0tEFg{W3wweje6|FNjXLKFA>$|3#fco?fMD( zl^JSNEgq7kP}%G<7*%9LP?-7~)F%FD-7H(gw`>Qo+xBL=`+i;9&MmK9r66_boj^AQCNiC(Nlf5DBWXkO3hHz(qs+0)QoHH+@Ab zoK}-d&Nkk5Qi@Yv(fWxwRpr_DDX+tPu zfGSP#8OahE-u2B5rF%u!h?5pZb}a9CaA{Q_Ysn8U$)7%aVrfsGjee(h(J^MHZG3?Z;!bRxTGAsJ?tTvxYPyo1;%-Qla1q=nu$E0n z`%@15@RH_V!pZXxl1*TqT=i|J1dS}4a5SwdY;l7X4RJ$Oi4@m&YQ+i`jmIO1jAS(8 zSOA*#CR|?uzvt|{!TKsPB|C_m<1%)}7V?xdF&KGBslgbSwR~o&Cgrv6B4d77xEbZkE z`M{78ZMfabVnU`BUw7V)&wYkshts)=ZA(?kAPJbDm9hRN=iSz=BO}aPIYw#m6#v;|;YHjY%kEb|6v()wH%hR{)qxvy?qKKK(3GH<$5PtY8DThSeHr zuN}Eo&V(kCYA0p}zQi>dsTN@D&c)2D_q`{Yumuw809Jq9BU#EOhfP$HR41 zn2w~r`gt4dt6b`LMdQ@z*FTSx@XeM6#sNyA*i~NAA3%();)fI~=8PL$yM_q2oWGf! z`({Z>$kp@vdY!_3bnx3}o5xx9JoNk?(DDlqMKEGZAenC6bWehUlE709(DqJZj-1lX zVQp6HROk|pnONtBBPD%p_#bb=P*&@Twz3VcQWi8|r&KrGXeR&raEC^VfT4$ID3?A; zd4yPGG0tVonv=`^mxBD7Lkb74%|l$5&XX&^assZHc9Yh zQKqRYtoJ3V8Xf3fMa_d_t@(w3LDMyGhMQuXakXRCNEC1Asd?q(Gk-zpY=U*U zI-=OiKeknVM+lOxO1gEat}%W1DI(O7H+^5+QocW?*MWN&G52dc61)>VCNnj0AogzL zD8!%s;m{)F{9vKl{qI5myu7m6CX2NwZEYif`4l6fTu-cRbJe5zGNx|5u9$Io`8mK0 z)#&Ox?U))ifdXYXAC0u7T6zQc40e>|fq4qbRKwW)&yc5`eItC1|6eso$#cI=XfgbZ zhDP=wEN^W4e$*Pe`lzdQGV1e2tcAQ05F0P`|DHd7C@2dl8lX|!SV|v)a7jsz7NT-X zWPk|w8sc=kCB6uo~S8J&6-0+}x$e(_o}AW@%Jzh1?{mH274#!u{O4$DzgHaQOLYwPq<#SWUS9Uz;vYbJQb`@^X8PVJMGZX?o~osm0}`aK#OLT zc4I6)QnQ96?4#MPT6>RSm{j27L7PbytkD;d5z4A;9(!F5nqs4-!34(%Q%Zm(ntj)jQ|tXG>9+F@!YIv!msH zU5plUp=gHGObK~?HUyH=ey0ETd8DggBKTlfqAgQwOWLwn`^ux9=;LGmH*_RymDGtw zQAjmZZ6jGFas630`OK}iE5yWI9a6stRF)c~bT$=6g_Tcrq%dTr!d`otA>Eb@{e( z(2dDz5Qkz_W{)lV-EFrQ0m&2*S1F-QG zc(7{;ThCCC8ZR!T+(b8{+uGiIZXHNOq%HjN=Rj|wA&XggE9@iIAOEQRzh7(Amaxqd z3#-;w@XZOYn|Km-F*`f7&XPLSt2Afks2`rawp@vJR^`XP;rJeju(zaH7UT}AfqCEF{tPfe^`_f z$AQIC&SKgaG((ZY9mr?l*tOI!zvD90b0VF8+8ssAebqq+}uYdi2pUES)mp@+H_jcpvPHrqS8k=VIBns))N0=Tef{1h5_0!xal z%1ms)T4$iXz(kn3vrX?A@&BdLH9i1G-%O~zd39!9L*}PST0!fD+5F*bPFv766Iw=M z*SLSH;MnY{bN{`YiK#wPI zn`K9N6~lAfmjr~0Z@tFgFSH}PLIsEy-W*@rNJRo zk-D)qJf2A~4jBS`UCk-W4zXS!b2S3XMUn{Msh5yne!Dt{;BC=l&<@^{8s1CwOXoeK z736T;?z%3~febM1B5ejRm)(71w|O0X$oJ_uWQu$#DolO^RwRsr9ZjXY)mH_Shjxb+ z(oI^$`3s2-i0FFnkqB~xePuxhF+I7rWW;s3*=x5#>q7K>c?JtYC@PZx^yGuR{%V18 z7!81%U7L9+fFN#;u%)~@vZT5R=ok*>hEmXWD=h#XqD`yo$Wn*eVh>kvrO9XrVV>eF3a{Uw*yaB1!FxJk zf;Es|QKQ*KR}$VGk^;}662lN^_KvLY&x?8{zS8-o0>@)u*1V=cuOXQXoGLZ(QsZP{ zNJ8Vh!z<$HA3@#*Pjo>*JW5{ff-40)@BLw7@I!Lfm#z$=&9)ATdSd@ysncCt?|3az z=#I^#9sI}|EMwN&j?bQN+WTnf1C7~&t{PJs4pMzsL^5>j~^Z zV0g!f0Kx7?wUku~B8d-o5mjAbWA*df?a#~lb3}896r%@SNvbK~=IiL$mnLRN6b20Y z8;~q}C#!=|4o9+pnPyGY-v$3E%%|?waU#>+JozE`WR6W`aW?uBZ$Z^1T;2r=o=XK( zzFIsE7(?>7BUNE_1vhRNgjXuPn`4vm{D$rwl|=Ru9`SW6teqIH^8ht^x05OU0IwTTw-Z)p{txQG-XmHdfDvSXQ$zx2PrnG`%Hw3KWs}uKqAiMXI^Q5|_Ez!idAP+3EB1YO}D55DBD_p}PZ@ z#nD-#JqTWdkFi&L>K43uZVGHD)QR53T5#}e`ed!>-esNu79X)s?-Fa|{$EH#R=ML* zT(Nx6cpC&3QKY4GTthKDR+Mnk2?qXC&Dx1c;-iha<4~!9gT`GzYQ*~y;{0iBIx6pJ^gw!a{Wzts&NRTyfa_{qYl?7Y z-q`hMZawa1Uoc!BX)}aTjkcciPq4mZs<*&yrxXmJ2o}eD*N5m>%eT5lsuu*F7DI3> z04F`yxQ+~Kp1jUv$f}keEQIRt@(hX=sb9a7-x^l|?rs-0iJ+E&O7mL;qxu%|7=E#O zYr_HJr|oduuf%bK2JyItY3zfJyr=|;WNZtjRSWy3+@z}k+hk~k_~1T9(h_7^rZ%ZDE~j9U^Ko-eSnKm8@P9K}BeUZu zIX26hhN(b%9-<3Vp^hH}RS=o@5X{$Q#MlLn`q4Y-0BJM+^kLJu^c}DW6<4ak|F}!c zuU3rD1Kz!xSAeRb#ER&)i(16wxzZJYe=na?4-&-!>gzmYt%17p-}{IGJMr= zlIu7SW6xS`+kSpuxnt#rgb&6#IRtMm&=6umE=1AfOsTtrmV4b|ryHlOn`Z2Z92K`kLoSob^CWC&c01rXm{;7B?MD znd|LEvN(011D_pu3dbCmLt=&6m^X=P;aFh8^&*-m>>M{30{;jxIW9Bc_R^1 zoW>*>a{^3`w9hx1_}qd36g+=gzWV+!?b{5ZdJ!1!y=)ltX-<&)2k1r!YoeEw8#aNB zE2(13Unz(+bFhkbMWAJ9%}NsMvM+-QnBxB&@+mltmkPWbIky=hu@^&-I*lSBX8zN#(2Q-b%pVDubP}kj zSpJbQ4SPN_i4pm{FkIb-+Oj7)f@l}v=b5S3D}$KO&rd-M5sxK!y5Ne5CjR%TyBlLG8VLJ>#v6|X%?hTf+|SKF-=pgFKxME)o5=B0 z_0TFS2Y8u~F^Biacip-MC+4Q{Ld+Jrm<*&7^lZDYTWBQSaTXDVg$&lp>^{VYK?Pe^ zy~F{nWW3;h23CDh^^C-J|3`@{p8hp^yVr?Ek14xEDTgZwa_O&n9^CQ`-PqWv-i_`9 z;MO_4oVGE>6vymc5g?ET5tMn9?SS?#fUK@}B3ZqC>K{c!LypsG#iIjciGwj(h0(ki zuoqw#$>(D@Hz+B$o^!bV{3H5m4Zb~+bKd~63@x696~dVJ!38^foquwC5T7OEva89C zt+%5Cyneyu`I{jiQhof2-46}%$Pmi*WArsM`7w@{V6SL=yXoUc{Y4oirqf`L3NG<42ZG;($H})GqrW2oIpD_%KIE~V zG~+bapY;u za1F$r*5jT~^v1mD4tM}=)gh(s${cdliS)blm+7mB!~wgbNQ~6BuP-_M9&4nN;X~^G z!R}u+Z0Q=?1YqJ(T&!;<>*tMVR_G$pge#3oi%#$n?ju(+|C!DKPaq3%X$AAk$#{~x zh<&^BE>c2wnq(WK!i%kU~3G*-+U&2N>*VG7?mziSS*SE9x1?3C~+y zqh?to67Zfu0kl6Gh9Wt^A8msQXADF?1E@X0Ya=2*@ln!4_Bs`sgnc_M%WT*-5w@5s z=V3h^?sRZRj*R(z`w@-J94akFbNt>2>gvN=27Re&o04cFw@nXj@x-;^x6vd&?RGz? zTTC&Q0S>4GblRq&Z_uVt5Xb$Od)=sM?Zc;Sfjr(g@Y+j)h$RR|PCP$P9f(;6@V3`V-M@n3+Ss%R@|pmac0vuh=mAZx#HGZ(0;%3`KhIPV}+vOlussG z)Y2rpM-Vap$MVZ$E8!moxw+ZuU3#foY=Rq1qYcPj#3b9@-6RC^rQjjuNTl7lXYc+o zi1jSIerSZi40&rvF};yv1AY`SW<}Rg^3z&YFQ8oPs5Ft*z{&^9$q?*21ty_}vQ94R zrxG;2fdU`moqdtXAu5D+g)4|!9hX8J{5(S{wJLal)J*HcgtH!>7Zvi+Y$iY^1k{+3 zP?ctmGmC4I`ZvNdUrR5mW7-Q8vJT&$#K+R+AsUdE0e^=0R{r79&h$m+r^FqbnJfU0=dJ9cLe!l=#L8Ey9jSz(-+X4GA0JFggTsb(vttX#pT9g1pf^6jEEw-%#ZJmr% zE|M&^E32@!Owa#p1skmtYuebvJp+C7m8Onh-z!0QoYW26vQg*h*inr2zicr)z#H}j z+lvhwNbT9OU<&5lC6+)JO}7-|@FdtV40=)K^cuG3JGIj$W|~v4H*~&5wjY z58DQx!0{^m2)UwrMN~HP_^0UhS^VpIJ`HcOZZlnaVs#v^UGO-=3HR?EJCor|JFS63 z0u0P+vYXX{uSI{N31k_io6W`4x;xTU^^we3_U&!~X2fCpUI@M4w(v_KtKuR*zM&;F z?c*nK0ZliguKHGOyggA~5*qgqm+J+7joPq_v-3w75GcvOw2bJw7%5A!p<>2`D*}lO zCgwm%oHakCQ=ZcEA}aLcZ-QtHnjP1Yw94nN(sApT8p{4Sx0yJVy_{pa(u}K+8FD!g z`7PAF>=5dT4JK#%#XLfPKzt3}L&VtHy!3y4bF~HZAB4Z%cGpIv<_p*o^uy^sWoX;0 zGj&)|OQ&oUb6L#fckG;YC%dQPeK(s!4fez_g$%P*CpXewC|r7Z7T;?{4*)KQa&_6SGCX*b>}V34=nSJuFt4ttt#fn~z5%L~Oz>wLa_FH2RIpYtGp-X8 zGWr%>VL>=aVY=JCJ+i=k7b-F$D9FmS0NRTBTSSdRs*$5@-5RuddZAyKy9501RFVy5 z3?*J2KUAT(4`QV5&jS=r_VF>_neo>dF&B2~iFIMOR01LXl^O zArcAc7JCZA0x7_x151`oFMd^*pMwGL2b~nsKPD8x09qb%RS4EX=jb{8fDHM`J+Zvf z%i>{Dkuqmg{z?^4bQ#}shHd`nDh1Vx97LZr9jbYJO$e6!yW68ij~TL)z=PiEn%2Y_ zFj#c;948A1j|+Av2}kq|T4r=!-7HfB7gBIgNZm=`?El&ahypAz0v+&SSPz70x~S&p z$Jw~==Rfo-SyWh1?>Mh$jR@mV5z{Ixl^r00&f2#0L89@!=suXWUoVqw@+LB=4{AzI z)`5(_GjivpbDHE=qx)TzaVr0kp9-a}ig135IIVAy>P6RR1t|Kt-aJo^OL=>LnKtiP ziEk6r&=|R;V^DzSSe^1Ql(TOEv4g2 zU-;M#-LxmVo~Yi9`RQ0GuE50R!B&I^2}7T^CZ}Bh7;d$gz$aE)rrl(-4YL9$}UNLQBemiM>+Yb-5&;W{A`T6Nh$@10YFe?kr4=T7*M5 zC9xBIO0if?cxKe{DLC1yE{v(67ag0SPb@3iDRM}W>KILDy{G2kZ*@i#iFVfOXXzv% z&mJ>K2*jz7wt!4M|7Cr2?7BW`)K_)R7jvvJ`k52Pq#)=DD~Gs;7X6Ucb9^>y(a4oy z>zP+xxu9yB&yFc?r03I#F)e9H7XB zpb)q9`nFlL^cepcsSg}i3E9V-l^ZprC;~HzmpUxY{macEm@ZS|Ga!_ePO=gMg}+Qy z-FsWlFAqJ>wgp0QAA=DWoCGapq!+QEDI*q;jrtY2rRy()G;$^OB)$0W6qswGT4MP= z&zv;wUJ4UBSyc>)wYI3@UZAis=Y$ENHP#NQAB7W>@A*1qDAQZF_h!~{@bX0R;`3_z zm{YD965J*@q$rmdLVC;Sn9=`b?6FLLvhFCWvgtjtN$idLQyB=%*lDrV(0GRPsf{nE z|FFnQDk>>0?iFHkAmSvY+sPqgyGj}bqyu>2B^DasQzf{p8AJ@(nh~j*5cZ=d5~ux1 zmQ;n?s^;RPdWnvF0&S>E8~ec zT9p9{Wa-!VfZ_VD0%xmUJG`#_(uO()u1P~wHIx_b`LFO4+_dM!oklZ^iX-pe=7cWB zfTT^R`9+8Ri%4rTbD7dKMC9#4B(RWSvsCKj@gxKykhi!9 z@ZZgrYAxNFHnn*(vwd?#>c_0WT9kIA9_{>*lZI_kGjV%|AB=wlPc?VFaD?uIkmZ_u zCiTpaf?79BV5WSW{*Ty&EwzSb(Iu@xbI;U6wmIDKs6S) z*Yj#j9RZ|r=IyoyQ&Fn2Kul%w!gRK>ctt0- z!3B1eS9x5Z`J!=y5R7%Cio~Vu2>gC#QOtEZgxn9V#R*JLCx6vNT#IbZI>gY?!=B@v zD&xj@(zkZ9Gr@MZ313g7n)#U(3>K$OcsO6VILtL@T~=zA1w#PE^2og5Y|I@C^sd_N z-m&1xh*w~s$Z zeEBJ|(t~+76&hIUgaAhv(x==lM6}_8K=8+K(I&t^_Tsh~{2CF}6+!&{>+A(TI?FYm z-dCFDdH}4J4hz}Vrdgq3%jV+LzYE%9ZnVwcJ`?+?2@Z^k6?ST( z;HTUYqE>7|;kKuQQv6*S!&^jsy zIZ>qtIsPs-&X_CSmoz5l`Sbq8{b$E)z#ze$SljU_7TtsR)fAhFFa7P6G&RDa zuJlj~J-X}Z`xVT8z!UB+_k7nA0;zZ$sort0NW#Z?`_4(xr~=)e^y@-qyb0?Ub)8A6 zN&!_IPmAnflk$M)yR{T ztFb`bCB2jpui4(!2Pq5_!nxm)Bu>6uuQb1fND{R*X1r6^c0N2>iarPIrIA8GSqdDn zkAW(dhi5pru#*EVuQS{Q4Npq-`GsQUIVht|tg79`;$rJvF;3hnTkC8#1x!9UDC~r0 zDgz)sZ!t5ShB9o_-y-#yL|wwOW^E&Y(ZdR;KZ@cJt*|Mdh_`cx8nB@Bvm(6aqn z;E7Ll09|uvpGoZ>FI=c|?bwjH)~ICPBx0T+Dm0*Pok<&+le2DD-W;Yly~`oRcQuSC z>>rO%@@^qh$Tfv#-WMDToWFse#V0B$TV<7(0U?k@{@D{cKdpD9HBC@j>}hUnku-Wq zC0oS~%;;?F_<=IyZgf_ zzcd@u_OA27Q5tUdXQAM{Mh=u{Cy`G*?vNck9?3dfuZ@RdfIa*fZDf-+Yb-f`{@_;O}&nZ~AV~@eSsd zkdjig+U7x;-enx_@FbIfiE`9h+0*2oQ`#SXrDFv-wql<2`AI+WW~2Q^LVldio6!^h zE%)DaIf|qQ(1c98P6-mggCfo{2tO(4K$53Q#GC#qrEGe8S{5gzec_B@Wd9JjbS;#e zh5`~g=0(R9vy(OJHeDdlReink)5)Y$GV$2JOuL!10PjA&f0tGTRiXz8waNQ-21k0wNz z7a5sE(8*Y8`3`x;vtFqag(>JU?$ihF#W)8H>Zm|D?Oj(!h;`Sl+sW1@n?k>43EiC! zlyYTV*Zr4OnW;~lhltSRgJXH8Nd$>F`I2nEEz3_xddVrY^6jP7jlEoov!>aLs!XG+ z($-xESvo&b<5yC$-t(6|F$Tk}H;Npa8OZKL&cEcVS8Nkjc(cCik(J!bS>vzN@YaoY zph2qP^D-spFG&O+5%kwPuCUF)tHe*rb+#qME$jKckg8~Sh1II(wszP z4@019qvJw7v@RsR_oObV-XH{R*u{%#J0C;0u|fB*UjJ&9Z4iroS2A(d1!JwTL(Ul% z@Pd9DY(+ZU6s_9mcGkWog36y($8;?XT(o($h8&tbSB~)%WAkX19cTo1ELabQ>5^7Z}|Dw*--| z^V7?fe)PKz(!22p9&)5_*cl!D<-S+P$Ic z>M;?9)T!x{9e5f+vqwffZ)W64^T3oCHVl>|qvIpV9 zVg$*fTp+qDyujAyw{Gw`V}{2k5%%7qYcrKDXy?|5SIS;bzX>b2=^NbzM=B*RCON-({zH0uBXUMAf8=f+Sk-L?= z1ZY4BMHV9egC~4emR^h&CH{ejcOb`Fn;ncLs6YKiKiCHqllSX93Tdl^R-@F6-5>~^ zrbX4!=`)b)#mRMta$q;08X(bL?fn6GF0z4a)qT#H$AY{V3|JloBem zXhi}Ge)Sg5(fi-J z($U-?8I%WADG(uRb>0%(etq3ksA*TfVfVQaG<}yfgdkf6_iB+I2U2l=hiPr$WFm6! zA09EYxb>K_0X+34QgHgEqlJV#xR_Fz8XQ+gd#&LG=GwWy=YF4webH>FXPqk?^3=zC za{}$YhGn~aNR*c$YTfslm&@t5c0;-vBX*DwL@AGBK2kz|$4^vF(T!h5q1$CxPPqT; zsT}$JhiC_MH)ZlJFcK_N$*w{GZ%=KyKy>V+h!Htar3P`j1aU&9XJrI00WX& zcstg%gmQGGkcnc1rQ2z$o8?82t?{HfHrrK;2*uF+c*C91L*3S*CQ?wTPfMi^;%6^Y5u5s|Y@N;R%mTuvoQxc)q4_}`p6 zxl;ICXZ+=Ynm)!Ru}JlqILM6`_zG(QhQ=k3c|*gfObpEdyK)0{?Id*~&c&WEgxKg5 zB*-XhINh+1rlIsGJGfyTQp;Tbp%j80qn+&S43YWU4)#?m67S4js!d3>sZ<~5w;t8d zzSk=0lpU)2ST!5-Vw1gAd*>3Uy8RXQ!Sw}2N0#;J+2fjFEAAAeAL9D1+ai5RkJi3j@;oxd$jR(RoUtA*L(2eAip$==j%`Eco{90g)T%DbUZUP<( z+eMCW>iSw0YwB=jx3de&$2(60C%IU7SWmkS1tgHNY@Ko{3Or{8q^-!_aY?xxb18bS zL*vWk=f=W{i!njsL-12Z|jSTQCI(WMmA@K1XqI{V!$YSYZCNW&$v;nGT zqbRT&EQ|)8yRMS#_4+{-RD1T+aU8?ZUeCK*TRu`%h*ZJ`e)3Qz&%BvVvxD^M>R%Mc zQ?HyCuakO@yodIPg0hxb%OTfOi(P2}MO@c7NLhPNNSJC9PPsg0^0L8=gFjRO!3tES z=Us%&g&Pqo$MW=g6G?e^J~3H4i%tEDI)#PA?BbU+NqSNOS_%WNR#7sWGl&1c40-ie z1ZCf__YkkF6z_Aj4ibxgw2WiYzCT}a&W8b(o(T*=F1r5UD2IT67m)W_}3>v zqF`N=vr-l2p-m?nf@f;NW&-@FbNR#g^43D;&N~aa{P3Z7C(|}6r1e>QdbT?;vjF{D zVu0(Vn9aK9pqf>QVT zCRLG>Slk-x+E7ehRFmW8c^SOfwK`DAHLyexAqT`}@{x1Pxyq|PfAJv=UVz2_TtOHs z9?*N=wp!41qIX#D0CV0Tl1ecZihV)KpgO`9QSY8p@ggKwvjyGA@NfgdpI62g$OLaV3GdXF40`ZoTeHR+6xF}((7~&^Q zzP7GqZIo$F5g<{-iP8(Ua$a`@M<>eD`5?mFvjE5D)J=NruNSY+H{5G>Vwc`yR7=X$AkK&Q5*f0UX7}nn|m%YBkasT)A ziH+f+!@w;;M{Y&rHd%7pv1rZY4DRcCZwLCUh+$lKhB3K(=I~v{THl0s9vz{=t3T&e z&4j=Eu|;jNN{2pY%WwVM|2i`6#X-Kh_e;HRnET9WZGBQ0aBV@Tmk-KDS*|#Q2KKD3 z){_aE$r#p4Pn;|;j;qFJ4fk0&?Qk{xTCHrt-g1a+m|9ge|NGyJ|DBgCHL*%!VjTcw z6e@h~a4Q+ts_%NP_r(OS0h;H*E}u^eAAl_4c|pSIxebt*iK=|lV?(SrRUY~42URGU9Kqj&7(Japk% z*HAC4(w6gujv!q z;pjNAtqEyXGm(p3V2IoHyN%wQvDf6)(1TO6!w~tyAO}LHBD?J-C4==t`d&YkoB-~} zsFkb~$NrJR5&yw|3!#e{5}DSK(Y|oU5r*gsoFPlbn1h)dl`@)mO599n9hU+d=$ph zD>g~1zKb>JX(`dL%6SM`EppyBjN=r5RxL?$wi5sa8I)?F{llwGHR1Q4P~ykn@vMbr zS^YA9DrYma#ixGWK8~R1X^~6F$B29{j7sn`G{9KZW1DUR?Cf4=6Rh&8gNPdYT}e)1R=?<;TzJ~+%YcxugFOpsl8k2G=4>P z;*CU{`prs{e2h2G+1`9_`>k>E*o2ZybcpUNvf_6FsxRN z91Ba71LHn%2BS9R-~o$>TYXx2U^3)pxJ~;+Ffu2!;Zi(5aE7hJ5iC8EDUd$(YlpyJ zw<59YqmCP>WkUR8eRs2+rL+QQncM*XKLEfp{$5lTr(gn>5Codq0_`oLj=pU?IqcLB z-G-qVSw-5dDtgj}cUnx-m>j9}?`rx3Yf!%UeE_AyAuZLgDzWz@%ar1h^E;mE?bm{{ zftU*B_aiI*YSP+SEpykGgURj|R-n>kvmyo!U%VU80vjII>!S;Pa7wyG_oN?=BAc!Q zHcKVVwg*O`qeR>ouE@OLKt8M4=ZtEIz@JYv)M^natMG6O)0hNH=ZfhWsSaz?`u(*p ztOadhW+gcf*9b^~Tftt${tZ9*6G~3T5N>f~3O((~wPaGjERpA@>6kRF)U0IC z^tNySjbaS`+4{4sH~R)2qLLn;R`wpqg_REpYl$U~1oNB>m{$kt7U0g2lO|+wY%)1?U*HYdS)79Dy=45E<_w1BH=^l~vT& zT`tFxLky=#v|$OHDa_n;@|%)m2G^2QapnJ5dnL27tN?s`ZuVz1#_@cR{*PnKruyolCS{!g5YMFuTjQJ z9EnApU+5>sz~0@%ibK#`#c1bP5*Mni9F71Z;?&dMMba(a%vvoTp(dQK@E2OkbAUtL zzomt^-zbP^nrt(baY^pMGW}?9-|@S=;bv|{|DA>d3xbJhA|%Q$6~Q|Xq2_Zq&zorM z=iQyivf(Fh*=V+k2a?N|{Dk0!$nT!6q)%;a>umlKK88s3evtLwYYo`J_o4WI+8wP^ zw^2HW<>-&@$@gT+F;bxJD#MOGmdw1$GhujZI`bYy$n_?VN478Tckms}zyJw&*b3i> zFG&=Y;GCW8C3cp9Bz_hkOS7bd)0p#kcNC@|xxaY4^45O;hbFuPO`)1A4Wjde%Cnyb zO+r=-=-NIwUy*i6tkM$|W|&(1$rv;mCpqxQaA(r%(di6Jz}?xAAqZn zU68kY=4!D(x3y?44vXr=qOsQP7r=FDOWcj9Z{kU}5=C0sPm~X;CvHZ9G?-7uYfZFk zwYDmpmyzbh)aSb!e=E};&H+EGtJVMGuc2Dg_TYnRz&+?;8lexOE5MdO6YsH2k zun_9!v&u9`ec8$4)x_uuAEV|4+lo>31w-kV*zBYkZJ(AH9;Nl5ITR9#_sG{Sly~(M zx!vrB@8eY{;u6vhSjAlqAfKp@$BZAK_0+yDeON_3Ol;oD+zEw(lyGb)b{fY2R}bZ@ z!zSUPasPQdgcvdmXX%Ta{i41C*c3I(HLv$gr260?0Vv$LzwSp;sN zh<_kfUv%hlBscWp>9lv6L-=@F$sf#IB;49Tny)B9qhBEDhZ9b-ndI?(4b(OPb96?TjgJxjlyV+jupM)+VD`V3n$43;j^%e)QsXmd1uve624g5b3BB5>bii7w!0u^I zY(e}~#~p#VB;)_Mlr>Ar70)by;I!nIC(AkOjCe(995n0#&EQt(@?e|hudCLp(%348 z(wMqn8>JKHuQIQehe4e%N<9t5{s)(L-f`(EK>1Aph{U;34m<`Y3H*nSH(dwn%^1n+ z@dW@edXDmPpr+fy^6WXu-(UsXfK^>ucyl5E>KW2R)U}*6#-x@i*KCo%D-Wvs)io%( zbQ`TskA)I}p_fFw$SG&=yV0BG@|x;P=V{*~DjtSWpGb}y02_fGyF9S*2zi-!7VSZi zr;_N2Xx6Vk9++PJ6Jku1e#aO274RsLrxX_i*KkL)ko*j*MASP+^t?LWzCNmYsY*#$ zFjdr4VX<_;9{p3fKHcyWdApI!%8o!3np2(CwDq-oHN^yYzf+IsW>ZT>m#f~Pg*-v< zKZ;RzR=ttSZ6q+u^ebkLx33F&Ooypmc%^i@xIzV{9EQx3xG*uR2^PQM`=iuCVIa49 z#&Lo2kIahCuwnZyIL`@kyikxoE8AB!=w=vIf|jdU0mvmfOF_bUOxwWer@sBP(^w5Lup!f9!^F&u{(f(1TqGoa$XGbG>ej5Iz80 z#O*3R+s5d_^+F_(;3^&@#B)uvb(89Bi2c518yO_Sk0{d_kcbME*$#&kQ&J9w4k#Tx z$fv2xYV78j#lW!npnX^D-bUE4i%B2s<2wu+k_6{|_?=@&m7Mr_mB81wY|Z6QMJU)( zr|}Bfib&5DTAt~n^NK1Ij%)>)&T#PO7l&Uh2x>c{_-04qUGb~Qb{49bAdf#Z7CHb> zht|9-9J(^Q{Jh7`C=KQGt@0H|fp_+u~lWvAQGMUZQeOpYV?I~-H+{fVK z0EvaWEOKX@AK93{c1%!<<_s%!$(DXGPsAPGz}wbxy>?u8ezlIm*aMbxonZylz|dpq zhf>Y?i;@~Z#+kyJWJ{X9?Dk`q7&lkK_hP_aG(&vo|1jOM?E-ocwt7W2H%HM!Jo32x+TzjjAH6=CAn0?E-Q5U?I9GXbH$ zt2u|Xt^YAsG^jTb{-Mf#aD;0D>(|0C=e7fI7lJdozgdPU%hZrqyhKB+LHbCG0syP% za>5Vd(tCHoXZCz5{5WQiAAvxwiTxmb=?&$O+$Ibx zKy^yF4b=boCWpA8&BR~WE1i{BDKTj^IX%OaW8^+A&SakWdMkt=4>~7llATOn0wwcz zM5?mP8qvS)$(ZW7R2Z^@)0MY=hoRK`F69ulcryu-!!K*b;Mm z&k9X=6(%ywyl{7Hfg(A9sS_0`A1cX|ID0rq21H&<2aoxVI$^~90DlfLju(P`83VEQ zO0vrip)@jgD7QyuSB971{=30Z@48jQJTA5Sz*?9EFSm5X#$t%7OkmmpK7g!u_Djd8 zZ8rvMGb>DSN%Wbie-zIFqOH%m30FW@5qyJ+Yc|8zneXF`gcqoQz3zsm8?2W|d{gop z0`TbFAhR}ZSSf&@&P7Py%=C#$8JLz?2OPhcO@Id}u6YO_(kO>l|M~!AYI&~-uH9SC ziC&_2ri0LBJo%jU6KxS84={6(SZJbikyhv0X}U)7ptETWeo=qXi`n6}!J9XU#evvU z3sPt`1@&qX=*E0`7MqZLjO;7)r?WlVyE&@syA)tl4&f`dR$cv>N=^*xK1~bz zppVl;G4^{~-*ujQn&!J2@^NZD!t4H7h8G$AjS1L$G1CvPH>)4@y_ypQ4G;ZX_$3po z*~z`re0+Qe6h{K<3Wc&X(XpOifI43g@nK1=X$3TY8UVYky6CZmrv&JyXGWA>=O-Q| zp)$u$K(uqs@5O)1lB^R)nGIBjlp6?7mwQ8A3?iqdMblu<5NkR?Rl%bmv~PwqaSmmS zp205RVj8Xh<+3HL>b?6U%KP#RX5~~E^IM=YeTya;T8}a%of~`bt`$Z*=BRun<^A&dG%zHvpLhBg92Iw~mL?pFV8QFmT=fOHK|nr4=ypXz8}}{$Xg$fOQ8! z^EL6m-59iK{RHZBxzxX>QpwWNS>2W*ydeqYK<*r4dq{#+uy4v9FTVjJQm>ks<@li_ zCxn;jjQZ+Qp-?|Y*0O%$)UB!`b<=&YWHjW3NDnJqfMV^v<(~GlQDfO;oDtLb8d}Q8 z1mU3f5QU%pv$M8W`A=GdJXZv?=0`N3&CJS|usLP)kr`Ioe-ba`E$$vmxf`86-N$ds z;7zCu^dl!oA&(V%z1(a;&gxMWSqXp8HR|YzIs{B9NPyk@5)wWD#raj{k=9rH#&d9< z!K~oWIY}>(GQAiV%e=*qOi#0B5!<2FDfZ)1-fJ)GmzL8HfYQSS`_{kg~z7cw1)^p58aO6y8i9w*hxC zISDZ*>BKBof@XP4inN4L_y%21`$E==@bT0b5It55>43~qQjTQtq155Hl=2N`_IrDv zL-)NBu+IyJ(Kwm+s!c+R{?Vd&ck+q@HM>~eCx6sm>wLh@r4eMbjd?Tm1pZhy;CO9q zpZN*hKYiNW!}?e5$d01*AY37o(K-;|muEjN=)c(l;&E;~*xC$pL^!g3bmyH_LrSte zGToSe2IHMxlka$r6`2Fl-9kkFme(S?)d%Nh(N979D4bgkoXD}WcY%4%S`HH3p5E)C zI^1HjUXf~#>Nnw#y4AqR)lh2>*pyj3go7&z`Xu^}insH(0mypFg_|J+fUY0z^xnpl z`3P?VE6I&}obrGoAvLn81bF->;F5Y?j~0~wem@5A0c`!M><`cu_;;{g0?lDZt-0qS za_-{fI_hvP^Hpkco5}XTBu~9wnwS7Cna-mjFwp*m9B+S!EAziI&}n0WW(e4We!Rj* z-tF&7A`5w5QYKt7pZoY|O10V?_UGwe1AGUJqsv8cojIOVb~-xmq`s}v24wDufC!Y< z@f2+iV$q(g4ZFQ|4kh@kwlCR}J0EmP^u9OAKsg_(pu4}qsC-x84Umjo9yZpZ(YR}v z7KukCHh0am`g*U(i(|~m^Ijr^o$Bvb{x6ole4>K?&kxJ#kh}^&A1bMFpF?V0_aVL8 z-*;jTKvFju8n|G{V$8H<(f*mPSg04|y`8f#f1Ndw0E3pVvX(PMEzWjMGrfE=xg7Uf z$y~R6K-&#Q?yI8up^3~sod`iDPZ^A`&QQf@WZ~i=k^(O&*$zbJiWi*uJD#Pp#cNPo z51vQRW@{<S>=5pSD{s?n1P z20tl40rJEsKq<*_Lx_EUNr_ULkd$!H(cbFCiVVhCpTF00X@ma3N)h=m`@1_W7LuhK z?{_>>eGfy7 z(KQ*^RJr_29_-^qaYkVQK)ZZZfO*2X826LQ?M%_ZlDGS5<>Ck_KF=sDtk)R+;u8Ik zi#)nvRJaJ!V*-Fz(oOoq;@G7}+f+`*{i1l&1E+noD5ekE1F#WP(zN?iEznkIk$SP7 zZD>gL-;FB7{RDTEn;1wQE^5^|niSapPDjJdjpUsMv|q3M@0c)ITgjE<*iZvsv&X6< zoRj;@+$b6=F~TheYO|6IzZW$-`*HO%=7T$S1%EE6C*XIHr$dNsF_$uDp%Rn0ne8yz z&Rcjka<;S8qk5Bjc0H~B!I*dLJA>dTfL=_e0m}zLYMfC(3OP#!yNqct?1~sH7L$hH zlX^#(Fv!L!@!wHX&{-Fx!gG$)>%bmA@WtGDIMJRACrj7QzbjoXCf(#XDc8rq4G?tE6*z~l4IKsqnJ2xND8ikqe2(`jY9Zc` zIEj|H8vRtI(GL5ZuVIqbcLctifL*RTmx9wyQFER|Sb9KW+1-m1BK&$#j>e%6G~#f4 zCi?LO+iBpy)Pa};9Yg^Q6zTm|U;_axNDyIT)6zwCj@<3)z?#^pLBzz2B4w<6XA`_3 z%(czJSJ{34l;ET`>H`aDVE!l2vZ8IioAA{(e1N^_G;jGHyG+YAz17*(ms*>uU9W#F zu?t)^IRyXRkUcGE_*m}Kr-q@NX4N@Mfe|kRe`t?FIuRkx2vpA)qY$|-q83f)VEo~s zamp552hOY1TZ03@YPeBHLin<=^=)0S0{$E)7mDjJ@>L;q+%}YMYk>4H%7-SJjKA#I z;?G&~^Gi!3jbijEnlWFH4;liQA_eS>8axVTq2`Z(`)O=Kq3aEtk!^nQ3!OuUL<_G# z!ro7_BpwE$LU2}a5FtvuM)Zm~cRjIAFGU(=GF-8w?W~k?XshX&-&bBOolM|Rw0$32 zdi{bAPF=)mFQ=2nAnOzGz!77Uy?5|$AUaK$wKKp?@=gmG+0vProdT*){d^mM;}vAU zwjn7n@xtrxP!0KV7;})j^q^FJD?>w8nX@0lSd&;@%kyn(bE}Syo-pfi1;gM#M3YbQ z%{Bi^dQs2KJg;^z@l{bM{pMBT&-JUnpH zP=_9o&4^un8UIk$)}L!@xK-?J*TUT*N!f6D(Ps>D<&Z=ejxXrUP`;(;A+Leeq~T6+ z`B22gH-3ns7gmDbTr&FqkgKyJXCZ}&A*Gu8QDjlm>*551aPq?h4MlB(L zsNNRs2}fKo;pr`{%8f0;f4Sa=)Q`CFIjVz9?>uu@W&*7t&DKF_G9Bewu83`Bbjwbs zEfl#G3=KmkfyFQeyZN~XiF+~SUQd5#GbrNDo(`)15JcfO&en*J%_t93q=3K+zvW8d z^@bp72*Tgqn4}?W1l`?@t}ry#XYE}xp~hNx;PYU<#AGqBQnAa+@`MQSghBK8Fvu;1 z|8CtnSc2{l(^uV*kver?{vmbpPC?+0O>f=74||3>LzMm=-k=k7uP`n4cMnBgIqKER zSCiltIuznZp?Y-h*yF7yg|d1i2@A`vwm-JzRF;xjAv$0?E2YHT&HU0{_g$Q~7s5V*mrA+X}%FYD) zd6Lfta`PsJk-4-o`I^*gvK2ZQ3;$w?v|&1bIJ|oCIaqOs;$5sj?T7Tc^HWD)Cf@wC zB|(+o`&U+io#No&rBAFAY8ghR#=@;^UC3Qf_dW$KdrBNbo&#U`A>t6Q_eE z;XwUG;4toiQUBPXsO=2!tS|1B}Bq0lBH*CF5gv&E8wX_3EB& z?pnYgxp0T*^^=UWFG!&KOYg-W$NxSdk%a5~V&Qp^AM*5V6VjxCvbwSGz14D%{4r;a zztItdt@nQ;1Okr)S#8zNS;3fPVr>=lG>L`(bu%;qqZJF1xNT#lJv|$DeX?3Y0(D2K z1x_u%DBnVlip5jtMu%<@{LAOLhKRy)Z+aV-C|`M7sERC$(}W9vnm4&0d4Ppv_Xv!g z>IVxov+B2^rZ0?aoaw`K~$e?~|W zs`e^+QSuZm(#TnMa-dgo8CVKw<_`(`trb9qBHI zu`Rn23O=l6D&RTjykbF!0I)M77DLIUO=RtGgYkt(cTU5m&yA`^6k2xSJiB>og-F?t zyd)`$8anB+=jfZMi_sQ4$jqIy;7ezYhTZ=Wpc>VWkP!dqa*qM!szZ00mL8Hdk-oOn z$(0;9X%I{0jXF7-|J_#81KA&1RQi%~ROKMlwlY;D!O~+YJzy_u&%mc_it|BM)mtv2Y|y#bxGI7 z^WxYnBw#XvLI$tA9YF&k=Ut0*kQiMi`OE_Wj-ZSL6+;dnm7x4MfgDHW^ye){e!oos z&&q%}Q$Zm#;MjjyIrd)F>S4uqT#hpcw@-iGSKj0=7q0(oZ}jlstwZB`K|f6hy?)?2 z_KeupBnjl*uiDg8de_})*LWt`#1$hS5-cSWSZDdy`x;W`WYLNXfeyz&fQm02Z_D2? zO-672;2Zmg9L^*(BSu(|i6;gGf%Ur``h_nWk zW<6(8HQ08pgrc)$g@JdY+j>xZH;$YQ8&Ci)u?rm&mXNo1K_a6gXM_*kIa04bl}B8< zUE27YpR6fr(k!bE&2B8yOB*?*+nY5vh_FJNxgX9Z9(>t@kC5Rm9h294u=`X%^F6UV zWgCs3!zM+$IaiW2DK3oki`EJnaJ<7uAz+uzOug|*v2I9AR>Xo!+tOTU_8qCe?A1I) z9_^*bQE8#-XMaUC^+#O&>WB#^Y{>IAVh**7Kj8~YgX6UZD~x;$%KZPlc#pCTZ+x-B z&#g=#d{~GFsM~%iwX%FS{TcX*DdRW~`yG;kc6J#d%KHw-@N$EY@GHwksI~=iMM)!A zzJnGs1iY!8{3U?N@Z_aMlMGaAY#rX3L9u)i7PQAQrc`*kRI;Y1vjWoU{)zNLai(+8 z+}Vf-G6X`AUDw9;Ov3RRp>+ixSoA%PIZrr%_3o}cl~%-Pc&2iN!0Z;5F(T+lEj zjboAE!zZxZFg6OGzm|0iEd_W#xgsv0gj#d6Mzv}V!2`2L&q2zP^X>bo6f%A&vk62Z zb*uE1*(Sgx?}fg1Cx_1~^qH$c(7WvZd|w;RdFRmq)n&`z^e9s9b=-Q(XBc2bBWziC(B9)b1? zKIhuXcF}oDMh+gr*pSe&`YS5z zC6TLQremK&S%$E)6`PS$3rO1Bn%FIc@MB~YMDeM^XC$vNll$ov82qgDSIZdbAG>Dq4FIbFU(O?C<`$m>rRa&{;{sK`K5UKwR(h*|>8 zJg^^B@}-W|oCcr(+Y`*1nDot5EyUnEb>S9|yzTnVBvAss8pB|-w3-buUu3S$>tH_P z;oj-aE*v!7g>{UVZ7Eb})Ks5e_k^Jq&u5xafo8M^T~ZxT0-13^ zCXe7B)oA>y%~X`}ZlYwh-k~3gIFGM|QVgSRn9{&vG9a{oqm{VT%KdwtrwPd_SZKge zZ>M^$_X?0pV?7|I-mf>5`aS$AVHslOY9|PgSHzi(e z?q6UDzbQj|yRJPbYj>EuL7*cKfBM$AE{?7F`qoF@WQ2p~_+1Vij_xLGX|2`ANF60OHgD?;bYhcWI z;QdEVO?7(P95rz+rh=be9F>C=`eSv#8t78H@hkur-q?4l7n{KrPVq1nb3s(Y)G}xN zI3|!43V{fkZjx#12P9ce6MPD`X>=K`ML=NfGG7~ALL=^&rVnul?PRxcqqQLmQN&ow zJ$*7dbb#k1?M{;CQ5P+{U(d-xbZ%o&3SUpZ=p)Uv+)?$1lG?X*U9O8SV09 zto2l(clQuwo02{4wfqL-{;|rufp`GUZHtQ>DmQ-ua=`R;E;noi$2(}9uIiF0B*L`_ zp1es`k8eratm{-%Sn`@X-4~)8=5W0(01nvwsqw3fz|-AFiCzD3cKip$*|`b|Mhnu( zKqdlmcJ_~bB$@3u8q~&%$hn&z8iyRdm%p=c1P^oMms8>v&AMRxn`~E zazFv!3$J5@f3JkQzo7Lcf~erMfE%qCtssD#k71~qpYR*)#J8H|g@F)6PJ52aa&L!Lt1t9H~mAU0Ep z{wJ`03TB4cyiFpMTJLd3?awo+sTo&Vy??G5l7l^*;a&zwgm1uKvPNC~fs^Kz4$vd1 zk==cP-QXlDfdW~$9MtnCR%`sDf=e@P-;QKX24Y)Lf*CFDJYl!HS-R3%X;|r67T94P z#FTUh=a2?(1{YTqM-g?10a>85L4Ti*1}PoeGtCRK2I z?m;TAH_x+{hSB!kjvE*QtfMew6R4H9bO{2RI-y?dcBh(n&+mm+CAN8S)C5T8503uk z->5ir|FWI1I!{g-mpLj9Ql_5*;GI5GN#`2#b5US4bI{$bc2RsDDIoMW?(Zh<&OFcLwuUtHci5#L|ypt&^xW##uVU#FMqDmGU z{gLz91|i1r(y{p4k}Yiu^xRm_HcieG#YVN@#HC^*0;=%pwSJ3m(YGU`&lrkoiJcmG z3+TT7Qb1GGMr%88xW$Tuo)u@fX6x#t7@Nftk{6L1nB$hF^xO%@`#7FQjC6j6ZOSVA zlTibknGyr;Lh75pHJrg$A167V%FvK-BZ99}d zbyS&13sAMCqwgk+$Vguk7P1u%Rj(&`l7D}txSPJlGCR*yZ&(Qor(ou?+lR$G#iw@h zl6~=>_%Ad1L65+)W<{92C zNxv)SV!7qBw~2RH9dgQa=ZrN0Q-IvHQ>d)D_==EaWKVSIy25NiR)5B38Y~C;-Rb`G z#I@5@{BiX*c_)_YeHZ}3U)v+m2>2Z_Gz69@VL$5{5_>E!OXcr;kOKoXp!ee-9=*+0 zc@FoYfV0ZhCi!M2+bwOA`AwC?G?X%8l#`_Ysv5oJ-RYirj7iA0wfK^O;)YoPSzIUc zn@<2^-)l1lAS$-(j^7~h-trI&WOZuqB`kZ%3^m1DCcTs#t@qk2dp6=ST?W%$WB zZ6ZtLzK~e#VkvCf?ZB$@JEIwK3-vr!+E{zh*H)S_y_O&JU*ZJsW#|=T#e?UV49Zgh z#1tf_c@ZRqN`IGR&@ZOZnCRcZll^A;HO3u%(x+{We2~_oQ~>Poe03pBZd0#fMXm-B zC~#(PPz!iGh*CN6@BJ(Y>DlaXmSRHDH5&&Pc@YX~Q#Hy0)Xnl4@awFz?pNU~Io>dTlf@=Otn}&bWc$3!}fV%*ryzK847L zEJ$-UP7%hi6|l+M0|SNl2o-Gx&BE|;^<0Q9u6sP~*g8^nwKDZ}&Mt@`_GIFgE(=YW zL%`Tp3Q{BnKs2p)RwlHAbj3~B_z1ueHWjiRzUd@fs)a;o%fy>5s9<=%fUF|XJowB#yN3QykHCf@&9Z84exWbUszW|KA2-GX2TXPQ7@DWtt0-dZslg157W- zq^JER^rn3mUT_3I$;utk10Wp_kGRHIE-M6ew0&F%Yy4CUdvMg^&JBP6R&H(p$2qRy zzoNBrWOtWOOzK@QT*2I7>E_Uw@z_l)ya6f8jDCsEem@GeG2dVNe6RO@!04N+jZG&G z9kD=Pc2oUR|Hx()durvG4lFxHsx4ct59%8~&(Qvkr6uOOpFu>Cb`AMjza0=#WW^6X z9{}XZ8TijrKyIb1IKl{&F!QJ+#!#g99FSBXi?pkhMqn* z`1oG2n;b(*tD-wH-^jrEK3Ee87A}Wn%D}ir)&^LUa@oY9du!LF9Nox19{f-wyx1kn zOSBja_~bLf&Bfy~BZ^!RRNwseQ3dU-U1%-G0|7PK1K&+xcWG0dpcDcS>xLS=hU=w* zmm)2W=idn#3#r6rC5Gx}r*&gUOAM@Bgxb$`spiRK4`9v`Xn|9ijO*!}nQeRW1Ut=WZY zy@$Gt_n9`k`uZl4OFAHI)(y7&)n}g{81PNF(owj4+-} z9*k;WU#k>+_+?ftsHeYSAr(@2mQ5!jpR;J5k%2~&Z_lcB#naX1RqQ{#4vmh7|NX=TQ`Cf^>B_Wp{xVxRP5_m#+SxIC0ekq4S9ECdVdZsJoDJyY$g zJuufL1w@Af*0|^>vx$S%N5J+G9!#$u;qfy)!5^3Iv=p)1VR4>_A+(Whdjm2M*2}vP z?^hAwA}c?!m^NEZubQh%$x)T(&e(o2Yl%H$^$^zB=L#LIo*sO@hmpj6YRnl`CX&Xh zQfr^*15720vC;n$0`-g1@`b>2)WtVyw2#kh<5tou#{5ORd0?yaG1IzMXxDhpSu=5; zo1;a*OE7Az6;+}WpuT^w@(@)BRAOVyNnHFxhFK)gZ zZU{?@ADr)tBrE1E_tDTyFn&n`e0=92r?NNE%1(KM3PSnQb6nzj?p_VKURT|YhK6CI z;L*YN>U>_6=glRFYHJqq;Vh9f`$qX03e+;z4`kw-dz1Q<39FBUTrpuvw*Hz;@x37L zw#GMh-<2YtK*vD#NVQQXX`afA5=SubVw5^k)E5J1g8slERc}D$lfCj6vFPu-mp&zL z7$DPwUwNSW7rC;(yXem!-$ZfAyU>cjute-nDxd=4vSKp0-+f{CdVkHgiadCGeIopi zD}YvT5R_B_am?2ZtOLaNU)NM#_%;0Pp&*OG^DJuPU9zm{ zWt28UKyr8|u+E0Z90a6?HOg#p|7J%YqrwsmQzWSWcPV^`LBOp;EVIaPCl%~rU8e2# z>IZZ^CB%Yw_eiGm!w+gGP)8{RVpVrC3$N_mMm8zT2A@Gy`4M^k7BJhcbd>TJzRK@0c<-qqUr00X{i(leb$kpqX}LPkeO9~D z@24S8Rw|4KntC;cAxjS44G$slC=5dMIPZ#lA*_a5zmkxVWs$TT4)8mAuOx*Ii4Um- zHDW}@LH#vuDh$1pjO}9Q(4|_c7dWQfRTash;6pQCNVqSR`k7Ywca6E_SQHmWssc`> zVpiJ9fw3fUs3wb@oB%6GEPcuc^ zdjHKlIwJ}`UZmz3x|`z-=jYe;K}L?IH5(|#4}6ShTpnNQ76J1JLLpkRB@+{;d?-wp zJ?aE$+pI1U+Z@$6_GlNUq!(z&RoD>1B%Ol}GRkFsiv)cIi2MCT-rxq#3=+ z+XAT7eWjq1h>IsFwr(6Te*tHGO{A~kYmgNF!I0k=!1&1ztvt&N_#v5-S3+~9Dz$l7 zz&Qr}7uuPw6uFl{{kWl!XN!B!=)V7fEO|Z(nIa;##}3#A2dzdCxy}G)0)_CBNY||) zm@s(P)|1Sp`R}tgY)bB*mmx%LTMiRZdt?Pl!jY9J1-?cJ`J3EuZG(9=o`&3DWc@wR z3+`6rFQ9G?Et5YOU6d+>v|U+$>j5DM5^1*YwASVT-#ZS0E{+wZYhH_xIm-sH*DT;B z1@}Rpq1q@?GQXK9&^b(h|0?2qzOW+8wf<*By;c1e!YJu}IMG~HEpBJ-$D@qp4R)0| z>QIU>vJGJrMp$0~Gh;cVxbYj%VfJ{v3{Lxt#{h~t3drP1C-8;G&G`1yLY1VS+%n&j zv8bmH^TWP4Q(0|6*Wa4rUHXhlVtu6z{_Kf9!(dw05I$C=>`=8KdhlEtK4VvZSY2< zN^$|fLuB|XjW7=7HA9TX@m+iMH{f5(*4^{|8T+-Z>=Y7G zhOefA;S!$FD|-Z|QIgNo3bmmg8)wOjlIlC|1tB*wh*+@6EIFSENh9`QWL2ZJ2QWpD zr1aD=*j>Bp8bP|E05%?LXc1KTVv-`Qw|7%{KQ<`1io>H;uY>HhQ66{VXR1Y%;|ELB z8r6Z9q4XKOLw(g7zNW8-!3ra{lsKYEYGwa7Dy@D~z#~)*(CGI@8#zt6g}Q))Isk#o z*R9apWzE`rjf{;zJF^pAV1*+!@y(<*~8Qsb#fI!m&vOW#(B?y7D)qYgqd@(sSRfB?-Rsnfg z!wKjHmx<#lW?Q%&K?mNk5r6c4OIY-C+Ex<;;r6FJTQq@Vpi+Q7A%v>EUApez3f1U;yJEc^n z6rrX0DDLdaebn!adAGR&a@{>!OMU!`DG0-N&W2(;;;_tUjFMgbHwg*=>us2o@VA?& zA$X3xW0GM|wBc>j8_?~jkK<3Gno!%QoEiXT^$rG4i6;K5kdg}p5!&azeV87Q`+#e1 z|7v(iOrAslZ-+k8ed0I8-HGfsn`U`~#3qqMY1NxL z8;DuoEUE8QwK$)cr=a6H9vj#$B{Sd`$2&+8R(>{5*NmsfU;I**CCAji2dXWDFhY+Yb@DT9lFIV1PMh-0#uq_Zf7bAd#9Ysc58Ux6<$J*s+rApYZk57Adi%ee+L#E z`G@Za^=zO$c6SH6HErYl8i_Pqf29Vpjdm8XuCe~f+5r< zbJ`_<@}sm)CT$%d5*ZmG&~zrIN8`}6jK0prU>xe8X4PPr+)u{oyN%+*z8w~- zUmij%2uGUVI{kZ1_*o)(cInPO{dTahg?*rKhhs7iHB85yqvwa>vjXQh3x5e8b>N5o>IWqqP1g*G4BWYUpSU1VUvj1_+#2SnK(H9^t95JsJF9e!!tAiw73 zEaNm*{@h_*1xgN|v7)E}@MOtVoJBil{qwU0X%mlqH2X~ST@)zNc><;+L-bfnxUyP` zjv`n6Kavh@TbfV;p;S*?bEXzGW>ga6cQs07EwE3-a2lz_JsC_AWU4oR0yA26bR>|g z&K4sNkD6Hm6IZ$LrcXu{skjcPs?5tXrqYWF?EeeM@)V4f#`cp(s483BBAHX^7)xAP zTn`@d+m7s;GM}5rAYjgZ!e$$JW*Rb5HnyXXKj;F}N zx1kHQGWE_|nd4($1S^l4RZ|7o!}i*w$Rcf|l}wg6B4Lh4kwKywhSqQ*M_Wa;rZmNatofhe-#(TMqD9sp!)#{O;b$$k&f%(+|^tS zMAT6z+)FGnQ(@Pjp;D@t58{omxgXy{*nA{^0?^KTq0XR>nQkM^7=^}}f^C9>{Y3TO zUcp=YJq{YcPyDDQ2y#+Jq1f2TcePZqJg)}hk}=(dsnJW>V)lvQt=mvD+WO?15Q;kF zs(9(4d#`3g{q5t=DJh=_k(MclpJcuyjPFflrZ*XHKDbVT2s{5Pz5u`Td; zOe|uYg8uSJ?_3I-g#q%o3jIPB(F-yL$9VsZwvK7z`3Pk~a@|U$D83xTX_QKmY_27- ztwRnRyim#Bw(J%&)(i}H0I;xHI@}iX7+P^re2hr3b2ouzaUN~}r)3BW`v<-(7#exY zVcy#tzr<5XU&{ET@8!~xBRYz`giz07T~si#xL#qz$k*2CH1hRcBF?PabkW|T`aKgd z&phL;llWKnykidM6CRnI#NoD7M@1%|fhpWw%vAPr&rWAZe`ARbu5`^aU)r-A8-@;C z#c-D#B83oUc{3^{yjix8za+3Y%cKeolbQ2~GFmfW=f;x59QJRhAC`%8B9kOZNjq|* z6$K`~c5R|vCG{*io}jk_SfC4wluSjh6SlSn(l8TaIX{Tn-9s>uxJZmX2cw}8nh5s8 zqu9*vi5vfl<|qNn-Rs27xoJ?H!#2SwdpP{u$zl`AQ@|)FR64gehA5Sx!@<<{{3Kla z(Zc|d4s#sIyqQ(QCEiqLt-n6~h)Cr*iE6xf6Y!MHok2-0xjW@X8F~HNOxU9&xMduW zh0luReBqNf{}}>hKpMg1p-?_9A67Q|lbwx9;DeI|QZsf$8+)@6Ni8!wPJg}#7!z3R zWOG)m4W)QZ0^pyRGOiBgZw4dVob3q)>vK)-cy;K?DS9Gnb7s8=7WIUQqpDij3*v)R0CUjUR4;E?~hQ#KSv?;ZW0f{&o%s-JAy z<-I@fczj56;{`@IvNwtmfbGi8u5+(1*>zO5 zj5`x8TPIjz243+>AIUb#zmbm7zi}F=!8`1$pHvmjMt^r*>|&886=vqPN}cTF_|~&i zf#e{eAAK-A4`+!)rteUt4%HplSVbl#BS=Y4tynpUNc5>FI59d$0Ta`i1^Sj}xT7+zva@((H ze@&B=n}_QvMz6W6%clxYx3i1qcGazMCE1Cb%dZft_Lgd=O)Imhn8ixP^K>fde+J_W`;!h3#H>>LZK9p_H z86m&sYU800lQEYOA0Ix_fbn3c7q_$lX?gM+**#jM3d1py7AGtyxAB>L+0A1(kG%=zlMM^d!%lM;- zkSE?RfDp&R$4c%a?){uD|E;$ijuUUw69XBe9GYh~fL12b5dv~H8&aVB4j+CYrVT5G#uuq`r1iaPs6M8r5!8NU}lS(~B3 zJJ<;p>RVjuN}fhz3jCyW1*lnk*>`Mi35sFefsVP}Oc|lhVfpM&dScGwtpz&++iuy# zUxL%S(2t{E72Re;6T%E{)23hz!2e&x6cB)qPLp8gj1mfq)ETdove1xY7s=|kGdx*Q zpK|jwNGxAuAt5vk+DWN>P|NHN(Vncc;Wf7(U(W5jRM8}YzUGIb^i`Q~v&l}lo2&-HS1hY1|WQ0>}LEQUg#)@`w@6$$2 zpNjCY=Otz@$=%ausoxuW_qU{)a=efmhdH|`hN6}Q2F2Jq1ujl%g8I}Zp-4!2HrOQU zRwsARRvI;2?PDB_Fb7)3YcNZJ8*8 zlErW?%`{sH?oh<>L1GccRHre^6-G=N>{6vR%K>)mSPQzHq6~E`N-o3fwuC7n;$4S4 ziXywsoyyzhC4@5)Gr}7j&!_1`B3S-bIH@0v+XrC8-VQk54bi3IG5(?_Q=Tgj;Pd z9I(UBjm?}yT+>ndu^Sp>Y0_e*^X2rNqH&`nHi%I-GIB5PNSPL{u5YTwbpD0YrA`cy zbgt_&w*IPeH=7bNavm3Fckb48&|Jq*<5m9JVkt}4L2<EJ?Pwq1AG z6n|Lv8hU^FA?}^E!apBlZc@S>Ye9L<@vreJH|1b=Hk>I}sU-ua#d7{{LA7Sn=BWo% zMuFrua$@l_mqT8cGN&0vrM^&f8O|s-a8_-*^smAg^ruc=Q;?{zp5$!C7z#&U>5mZO zcAyqSlPKr{?5VQ2*>51J?C-!Q;c89sRwe_u!xW8c;O)jynWm+WCoZ7J)79|c0JlI{ z5l5vzv86KDu=1|X>knsP^AA~+WQUu;L}ZU;)Z^kMoASCM8l(YC?x|t}E)CoVg@oG_ zwNk+sQko`4ELgeD)tK~}sUAlC9wl7!tXJ{&54Ca4e%1vf;Nz%kACFbcCVO}yZU3Dd zQMhazEhJD~K1@K!2o7fQ*7Fj^wZeRe3*k*1HdM#Cbm{U1R6lZpSdP>yg%Cz{bT~ku zz+8eS)Q7e&chM-^#9T8EX`92w^-psB+0Z;TmXJ%djaciEVYB9$W`AhwFSeA}SI0KW zv8+BqXM9Xt&Ug?WK!EbrebV~O2T(s5L$OeU&sfNc0g0>jD2=*Rtl!EJH0eSs{#=6x zJP}y->XCaW^(Czc;ZhMLInj5DK~#2U=vQn)0fQM7GpnPGn)Hf`WcdtWmPVl9HE z`joNYG?o25T?PS|{|Y<}@m-X~P%Mr-Yi=PqvF<({2Dp}Ij?NXM`P*d=4d_b-V0X6V zG;lc?pI@DJNY}e7FE7MJw?fait3>h;MZna`kAHRYT07Wy=`O|e?VHh03=SLU-$%Hn ztp((pHJ!X9V{ttY1O4UvFXgu73ogC!i!?l5T<$}&W zDCYpX5JKh#cmCEbKzzG({qI-FQx^A$_IAMS%cb*TPdMTGq-Y5Md}PI|FH4{5ol$!* z|1XE!9Ta?xXdnY2G*sdflwOUYNUMh0??#8E=>*5fV^+rSblEZZU=As&ihoSX@r+nK z>8ROX!))GS5(U1Z*@!-1Qd7fbuMvzXhyS$$??7O9!2d;6ECB%Mn!UYG_=;3<-16N0YNAX}Y_1y7Th z8|$>d_VaC)K7t57g!|jek-FPS1>{Gc*8pyip7nXBw(Q8@;6*pPYF9=4Ge?5qY<)=e zV5KsUd<*JP^QpFoP>TIG342He(W$%x3B6R|EG$PD_`84OXMTIV{|88bA!8~C*vZdx zbOxAIZ5aB*^UN%izfcq?p#}1C0F%#cjDxMOYmAnkc*Y~KcW4Eiw20JnvvW#WuQ$Qm zP&X6f62C1yxy4+%z~$$E`rGMSA!D_GEQgsM9c$Odjhq^z-&0|LxxjO;XABb|(RAFl zJwOYJYkMTovTe!jhI+mdl-QeWwh35v)U>mN;y2=)IUcwV6bDnR;}e>EGdzB>nH6?b z0IrRK;KKq{QH_~T43E>Nr0QB519jBd&PjOVtceV>M|aHJ_D$LtomzspA=vVnR4h!i##uIRkq9j8!$e#_oE94?-jTm4%~)R31IT1qI%H){5u?IHcI@j!kZWBc(c=SD!s4W^4Zgb zYKEqd6;aXN*b0P<5@SJqV!IMUugvNNtsWa@@Ahtq_>xuDV?QeTMbAkoZot>q+iRtB z3S7F3`MX$!(bEhS?TNKD`b0UYw~(FByZf4eGasmPZ^i!>eiakO(;~{FZ(?NP5>n~L zFO}KX^Ja=tz&iTK9k6`@4^29Au=>NAamdm+;4#ezqfLHM_v5eSH924CcCeR8FupU$ zJsucAMWNr~-3YVT-c_cv<&5xA3nTi>0_Bfr*QZmhW3YmpiNk-de@A%Sp9yY$ zX_mXbL#K1pl=GF9dNWIqs?vGdI5z z^O!X?e0b@UVBa0J;!M4`LgvFXB{I9|fT`FWw>-T0q?lZD{r%b(B4xgi+-_M+P+Jo3 z_;GZnf+CL9%<5Cm8cCOiJ%^h87$@KSjy5fUVi}(|&@&5@9!q|or{dPv7!ynU5MJno z+DOw3lrCv}t*2m{=sd+gPX1!ijwu#cmc76(IqwK>UGlwN2TMGY3WGh7jV-4hCS9p^ z6A!pxc?!}ysXa_vZa0C11%6=_OY>;xHHrA1;#f2P^ReQsTRFC~Fti#cxNn&?ns`8_7eIGXY_m0Tun?d=2O6;A9Nx8-=e#PmjC1XInm%vV@J<{=rHy zz%*)yNK=zDq{UuFU##VonC%gHxZBOT-$%rL60@TBtO7k&{O=6>tVVGr{eZM=leMBh zwb%&RoTZDHX-xz}SXu0xz--oGSh=I@ELHKauiAT)utb$tiISjN@sqyiyUKFhOWngVJN=;`t`wCDeELcEKO{{i^!zbr`VAltORs z2;cwvsZL82jMQo2?H(ozT{gcR%ED zgpWz{ELEr1nIgG^41TcJQZ~O}%=m+EV+G$#aBW8W-X;=rno79Ffs&uSy5&V7ZKb!P zsONy2N4)~6$JFZbZ${+r5~e;<8M=-Kt${x`9Fi0sNF7?CaQ(iLsCgN2ywDKe!DK>s?G7El)* z>+?k=-=R>ZHippgkdBNiNkDj)%^#7c#EM?Z-GK@JAGq;4)6K5zyd@2nj4j(`q?HyR z#dD>ieU}*2#W;%5@5am>KPViu;iU7BdUezq+*nTdh{jjGuE$MW^q|C9546j?bDjOP z(Lsd|b^mp8KHq&p$a9PiTtz37K=!PK{t|jt%rUb5`Bll(Qc3&AQgBt?`Rx(o!bAjq zIL%XjRuNk*IwpN7Lr<$qf^RIVu_rs^xTLuoH}v^?s5IZ+7Lft=tk&F2r0Zv!9g2`g zGjU8AH*{AbjZc`b9z^#aq!LjqCZn+(><{3ZmZdK5Ka6G7Tc;kH6Lw^x{-26sRDCgk zF{|sVX;L!<%1T3SIi-wi=;?*y%trf8;r68J%{=_PWr|xELrz zHM4NYZvLeO;NPuhEqcH?e&zS}jrVg@GVIDe;1}g8d{jRdgLJ?}S*!Y9;_-!9>Z&%b zEaI#JSxHn2RxIfDK$|IDL{TLXQ#oU3LV)_Mm9Ei!^27#Uy*^2bEsIhlFmF`*GS+$B%`^3m?!hrCXx+oXaqYa0BbNLMDpyr>!Ev_5Pb>0ooL>QsZ zSD1D-FejZrku?9iV2TdC;+KM{_ONJY_N?X=WgOB?vOr)0q8HALh8{k3mRK?8G#t6Z zY1YJ*qfL|`iN5ssIz_pN{;%Ocp{XR8*=>x)vq}RHd{W){PbaOi{gNHx!^xQRGq>7# zg@pWyQ+oS7olPx>KB3ZOF#zf+0-XIjmaXU0=4V2wlB}UfH3sopG9EROCppe^D*?7Z z2HNE#)frAKuVmZW4AVche%XI@-xk3qJCl2)z z3R`4Uwk`vxV`>NvE>h}Pj*NL?8iU~GL4?miMRhO+(7P)x1wNL{?;$zFRHH8kBlD!* zgh#N8n5LewO~f3WNJ-r}Wh7hXXMCdfki+GlCb3%zgz=xDv8eC`j8S;x0d6sigokHE zJPh|zO@vV!4jV@&hdl2fe8)*7+wjr=EAg6)r>S$Al(HEp=?mb~RBa-iq5832ue*rV zSW=kJpP1xYg{a9d!q8Zc<0H9SGu(S2Y@Ah2a`v<$PrMoEM_KM2@C~Ju=>L4IH}@)4 zvPshdDwuE}pJ%O79B6=+j5{LhS zh;sVJQYofxi+_p5+Zg*&jsmYERQ{an>M-mqsxlt)p=b&U4Xy;~@C5L&y|4*ALNx$4 zRrUhq9ag7XJ=@gRp$*45g7);M%=;P(?k+^IZ{JoCOLWT09gO1>CvINQi}yZQhg?hQQB{ zWc#0Nb7-c2An3V@wZRrD06%UYEiwy`d6mN8g(X?% z`~pmT!b=3^isheKRX6p7C|RDRZg<(I(MGp`Iphd6&v(KJzX4T?hh~iw2Ty?37lSk5 z2{iY1q$Ps_QN*m>G5JBTYtDf8;Zg&}_4w3^O&n{0vsAMk%a^lW z*U#$>qE!Ae=N%lbfZ;u1(}W(1tk=4%CaX$bWg11QqT+p9_zXfVPNVk7WK-4*FD%K3Apvm?wl*k1)%R|6+uChbSU# z^|GpGV$WqUwn^k>oqge>Jc3>|ctxm-{L6OtTm*$j3m07Av;>KgO&cxxy>+(rMy|{> z(=`Yz8p4@_J=bC~&tKeA3(v>isoyE6@CYhikvt)GgC0(o@}i0;rcHAxX>r%t@%@3p zIvU*Ar_*^%AMkJ|m6W#tAEqh|0Gxa-(2_k7DJnTI!(wwl@)vJ&)-vjq{8?l|y=3iM zG88;ym}Qt?{R7U}beA&F@7<(%C2IFuf7<7(#X3{ty2ig~u zCb!`!@*P*7AS)`3BxLv#>|&6vk*4|K7*Bo3H~^hxgDgkWjxJJ11vdcR6JsTC?Zyam z2XLt|KYkK2lI@}}i*H_3awNjk;BstAO{ zphSVd?SztrFOVh2VW0h6D+1?#^k%NaqyVlEd)k2lB zCFo{+gH4t8#aSjw8pSLgI02SKy{H_EAJSvg&-o`5=0T&zv z$=wQAnF)KwOtR5_OmOZ8XqV=gB=14c0pnavS4Cwjdd08wmHglMSLrHIol`Z9O)1(r z$Fps{?!&bJaA_?+%vRyX!I3{jsw{&K$x4oK#7%sCK?Nu)0O^ZuAUAT`+y77YTIDg2kGXC*HG*(-nE(PVh7qW|rSGY!mZr8)r9YQ<|AfU?e zwydj>mtI>6OM=quuP{j~RL{L+Nkg}~d9`4)en@Qw{Si<(W8a_w}{NHsYMj8V0;t=IZGM}XFlGyG4pr^Qs9d*8xSxX)4maWmz@XWe&>~M};&vEh!&xK~PS&_s@Rg);#V=vfZcf z%7V-RB4Vpld_Q|^Ll=61s+r1bRsgt)lz{Qc@i z;6z)gmhDwN+<>Z2sV*k-06yq*)N%xAmYcsd36+wRg0AYMEM>~6bnJ{5CcPYjMKuz1KK)3a)<7NM7Ck~m>QH3?XWj(=x{x61?!$Ol38KNe@L|a zMrLh5iePr{KiECbyq! z;j#kcq_FUdjlZ3Ff1S{1Te;@6qz}T|wFSs1(noe>`q{z;zD>9#MV=>x>s26l;m}rW z+VUqC7q%k6G{a*#X&91#mT3E_w4ROCPh{fuPwi_5s_&Xo3kFG0K^T#xqOh$ZL3EWZ z>!LX~{+c0!bG4L&W@wZ*VK#=Ltd%iHg3Za0AUfZX4|k-prjN!XAwGk`vC4?;?!7!G zt!`X=n7Z$M8$li-7R`(K>Y!QgBXw0NUe^NY44=wgOt}{r`Q-6KdizHikgWt<_pNaK zV0WY%gK5Uglbg!#Sd2d*E=-VnC5fcj+G4^>Z7=YcU57*cy0`s$ z)kJa7WejIP;?5aLkg2STBen%uLEbYim;WYNe=IdwFR>6&z*qA3wC}MG?T&?#YlbC} zXntMzNlT~R7PDM?@&h`;Q(+kH-Nbvt(AZrC(_#R~+$(Z~Cm-dQn8eV~aQx;`>+5F6 zxfAKaMb248=$U_ri;d!8UIp$Y5MlTE-h`!1DyI}YM_A{#kk@{7T z^Xr+qbA3el-twwl>j4K}$#H$rGX@2Gho#=SdTrXn?0&@)X!>6{khmK;W6vLVBo&FV zR~dbBjnp2lA(YqiqJIGIKl$mvG#50wm)py%)n*bL^jAH5iLh@CfbZ4mIBJEe3aPXF zlnfve9g~ykF|7z~1B*$>Wz%H2{Of?v$>lJLuWeSrS&UV+he)7scwM78L561I)jkom z%Y~gd4w@dvF*l7z+DCKJqR$H84E!E8f2K}W^MZfWCWRul=|-z+ z(07P^mg8VVE_s(nK8gM3EdfH1jAed^&@D8FCQ~mINRn|RD*#$<+-B@SMml=P`9w{y zNmIGTA6JbML()K59_`r3N-pYv<`b_L99bh}k8}(Vf1S2lz_teQK<_)FBO?g+eRo0z)->R1r&C&7sY>UXaxE_iI66D zTQ7i0S6VY}csGv-(fZ*x@6&ryXco`O?$rio{rA>zkl(+!@sblo?8Gw>AZh9SK{0PS zZCcf!Y8C(W*ML`uZ9viU%ra}FV6JpTS)EGg_Kj};dNj@wzHpvt^&Npsco9m;f8P`U zuet*GI66}$NDx#0?n24v{d%;}3gETAgBn4;hH$n6jw*7883}HsjBBnd2}(7;(wliNrXjraP>uNC`Bz{K9U9Be^F)WW4toiWKnP$QJyB*0zsRI(pN zchPHOnQyOs4~b+Pi8KjMM>l>(IrEdrt^wSy&rJ>I45`(IfAN3gVPwuO=M*_h0{{j^ zYJ zKD&Gu2*2yKSfKoKuE@wra{>}7v7LV{$}udIQ|E`cz1=02kc&xk2{Sa>U=m;3(C3vi_wNnGxGuecmEOC z7ls3i?H@Lp1@Xk&b(8O{8xPQQLy=0IinllXvH4C|pV(28BqKGJhrAOgHjc`^7bImw zryxNtpFt-j9i|+f6==(p)x%!OPQsMtm%!TMb)a%p^kgByk;T@WE-6+ud~OQVpb-Uo zA9;M^k-_<)6$yWGY9}^mD+;qnt<#v^kuj~(pUV-u4uN-pV*6H^_l5+k^7_^CP`ki7 z3H_S>@t`orKrD}Q_2;S^d_^Led=>uqq=LUnhaE9OU0RSv#~hxh0rNZ-G5tLvHO87h zPH#D=YTbx1p4@bS*tqyi63)~euyt&$CM3&g>_F;nbua~ri~vo~zx{z+)sW;sv?7B$ zr(Kf*LsNTAfSDZ#a15};5TXIWN8luj$x)wgz!jg}?CWC@J@43esAXLqpRgMw?Q?9E zQjnrLo(a5IV2M~BUHV9|N2^e#)r*rm9c>s3Ls-GEZ=K5p(WnBtU$ZBjp*+FKhBnR$ z1dyrpFlA(v^tres_K=CYym)m4XZq%a3&~qeO~V^gI#l)=pZEpV`;AfE z|5q{jzI5xEr56tQ?6?Rsu#WP6d7_XCDVPJjF2)WkSR{4Z&%@R<2nup>O@dzS6CBZ~ zQ4Nw&>a$gIeYnNdM6-(w7)Kxv=b;~o5U-ttkzbD}mUgdmuG~ZLfX{0_O{QL+Z2SV6 z$S4X36QAcPP3r3o4mxY>|DZY7P@k5g3ppBu6r7|jIHdXL4W3kbkR|MunU+EbM=_a4 zWwgWUpmoShQx1fG$RYl(RcEfgxD&Uq*Z~*u6*m5sQF05PX$2UtYQI2!_~3aNlZkx5 z*ZJ#Y-7U^j<`ff@t7mttXoohRSgH`Grd0q|HRI{yf1?>Tqq|Smpms)1vK{?-SQyrK zkefnQ43In%)Rej&azC$fo|FI5B>6zJ8W;a(4+_DU=W4_VWQsSL4C9>Hl&7o&a4LP`6_1s> zUMVx+1yNhoWzXLnO4I^-8VmE6s=~V~D)+51gvB4L`~5VBw&sOe07k zRdE5RSaGkR_lD#hjSTfX`FmDD+z3iEL2d|&`>GH^ za8Ylwv{sm`kd%5{urX9i#n!mHU*+XBZD&1aW!D!;Pw+3BtZNrX6^%!k@Ax>j-&QmC z?tG$Vo~SnPx8i4XW-~A;)_qNDU(W#=ObZKL8BSg+2-(0=AA@?t%j*2!9)a{Z!8vA)-_i(*g@ zSw5oLU@Kzgc!3}tsher47kxKq%=0iZg2xd&^->@tPxo!RRan`1arq)EK^{@tfgsN? zSqwG=(7h5=?{`H#mUCIQBxbJT<%V$oqKW5 ze%BU&+REw5TGH+cEEQB;&x)Ofjvp92ATLt}8QrU299hZsUEgqP@(9Se>dMsYasY|) zp6Pm8GUr&8JC9fTDB50Y$y1;-ka6y?7L^_A4lq@%2@qeg7~K0xSQPZAC&*8O#)Xd=*y zxAO7GwfEHU{X4(&J|3FVkFpo(vd%C`2W_c1LwgFR+5Fu|i}@{8JU#is|8Q?qMbmb6 zw9NfyS>=l{V|$x9h-`Oqfq($kx1xwNt+)ZGx}yRgs8vP;z}Dj1Jc@j_bQ6I#nrQsK z@qeo`lwh8Ns8bkwF9=XGw5LZFyF*%D-v>ovKIVbGxvKI%JZ%3*Nu^EO4Wte9C>sQB z)G2Z73hUNypOv!WctdL4{B_$I&=yx;>TAFPh?XOY=_X_+SwFzl{ho<-2+NfAF^y%VZ!Cw1;E@iq9u1#5fM{jGU+#?nML% z(kmG3Aj=9|#QsWk=N*9Fr2ue5gi>0Ox7%J8B{7TPHz%rU)@F_k{|Ut$ zI(6+XdrGf7`!LKqp0>p5cABjNXZpyf`MonZMTOmfX)nIW{aDE#Rlv&S;zwAmt>Dme z;IXc49y)8KMXpT1?B;TL^ByK7!?f>FGrudfCaGe-1d(2)bpKjf+^gUC!IKMM?zx zD37njW>uHIq86-KVh>fcW0sK4A03BiqK5lHG*24edV8o^qzZ+set!K=LqB>nVC+p| zkr1Uh2I)J;(5(k=*mNO3@Y+w^P;NFG6`v^&9G87P zmS7meF0OEo zq}NxjmGRA7K^V{L9c9nCCETM$Zwb)nSxr@-Gt4ry_SaL^G``T$yE01`Gyu4lh2sX? z!$sltwv?mBl(+aK>K{Yxol%TRdl{{^)_LvE%dMU3r!*kU0eoZ=S*8fj=I{kJLflo=>q~5P2ZHR zH+88 zBVg+C!nY#2xK5bOVr$(}nfL_rKZ76pQl`*KTiGYgl=sYyo93p}p%I_ab>#-S*TwVs zIma5AU;^x9OSR*KWr{+t|j|-Q?}gjXyh3NR!Lr6*|u2 zykVpRKBnW(Ow!#fP#t67rGi^eqU~>5aR^&F3}|rWAG|c)=V24B;D-p#C6H(QbiKL} z;4@`O0{ZG4t6R}tS1)ld! zzH@z`aW6ejcHEXXPUKi67W#7HPmdsv)Jv`o$t;QXuN0~76*Gek2$Pryz>qKD4CH{R zxq0c{4g_Idk#<-T?VO(Uq+PrT0#NLTOD*kxO$2@P zi<%kkc9Xbc=x9urnMce&Z7e3BH}hBG;dRp$u6WE9vM9Zj(aQ&pSC`w>&gU@Zq}3;A z&{ie(n}rmo9iue~ZHYHC?VmUT5whaxHb?Bh?P$N7$QE740Y#eGT(IVHCD$oaNfysm zcS9;v)@n}=!C8<8Uiv_kIqjJ`03%%qro*rY-$_{HGxpt07XrN)a`EjCJ>iNGDMSsi zBI&&VabczZzR76yno>40G~}(THnd0lN)`K7qb-b+MWcMybcfG%D8)AzqN>j@SJRGK z7anUCQM+5UuY7Zny7f`JlphG^hGbUUH}E6{;xXa1)Jy=C4`-?aqp~SN)rfTU8QaOA zbD#?7&NOl9A#5lS%hy~e4lw52h@L{!caNN>F(ghm>B*b#<0rkI;%h78VhVNvQ@K7% z`tmCHsb6v3nS7ejT^1trn}p?3-GbD9TAcrA_S5prBBH*z>y47$J9{fPY-Ls$M(u2Y z5ija%a)j9`q=UQ1iuag-(tCoR@EUCXmze4a)sm7U=SUMFH`PgH8OAw4jU8qE-6@8W z@nKL(LpmfEvEpvG?aDi+)|5#yMzXwJc+U+UwxBkBh0W4vOIRs;t3D~6bYed8qPJbL zD}=yvF^_xldGQ@4wHm5*0d^Uhk6DlOd{OMZ<>^BLeF`jAq+f=<2GuG;yE^_?UzSbG z@p1Hk{so3bd8Xl~CP{gHR2BERuN$OfI1 z(KjA#AzSH1lqS+2qeZSq?EUaBjmFPICT32RgMr|tdhCL0KsSIJ_1T$g zJ>*=bCG*BHMsVt-iMY-;z7+ya`0ZmES~tzBF@NXM$ar>zJLX>Z?{joXd!kmzF$QHb zA5z|*zex0Y?$`3JCH)eBpOPhCZ0f%@SMa5KkPl1?%^KKs@LF|!HET9w+fwfN@-?A8 zqXZuvr_gC>dbGeqFgJKkR-TgYq^wCm7cp{n>pSa3@m}Slj9~!u!82CGEqy}94>d{O z`QIThg9y4mHHD}ILm8OnN(_Y?gRAn&X&bmA8BF{>kI=pduUG61f^1>?&Rm(}kr_>n zi^=K+xck7^w{nMSQV~RdXqCr?Nz6s$bPSd9I&=yXKiZSjrNSe=NOwztmyaPTZpf=d zWXx=H6>c??L_N2bKhvp@VSGduwkmz|uW|8wy98k1DDMpY-u^-pck z_$L_B{wvPgs>-Nt3bYxdij4u{vPf<%vP?4t7SPQXiV4?KSN*rPhU?*>kV|_j%oDXN zN_?64TYZtr<7pQ!%`FD8MGqmT$n?+j4%`ElM|8(|&sQm18Te=|GI(=49m9)ZYGr7V zpb$=l|3wOTZV5ogUU9{!pCeL6v`JZ`U17Rw-kl4z;38xA&ao8KPGY75UUVojD{H6>JtzlbIivCl09A$_ZCtI@Q(~ z_iB_Qv2Vf%V53MNKzX(3y^dQ^pG(YfzZx!Woy?e z@u@ue(2hmLYcWWxzA|k&<$`52T59(U0b(L^O$)tK?J7r}j?3Ow_0G>CF$E`WXuBcm zT=DM=ULgMxngYrDdnbF%+ys)&o=`4yMKAw*=80yW^d`l|+dY=31UhJ=Qb2Tru@Jms zuGMK~W0ZIuW|r@Nu}lXy>@mv7(WOo3PCXEw*M}%;n1$ zmvm!rcwKm#=IZ_vTD;g%1VyhKuYpJ>ISTA{@$rshD1Q`RMQ{AJV}-lMNP^+iE`LMN zN|}FyTmzW(2b+7EYO}P6^s|A)z4)JQP;{Y$o#&0CAb#ZU94xXX-l<$9{ zLFg%IaIWEdL|338Y@{=yM)^j3UW*61H}@dctU-6k;MFO0mt@Jw%Lg_+b4)j6y3j{R zmox8Vi=s(j(s^7O%qGuy^QQl|RLi-2OGAZBdUZ??!Pejp8CDHH-v=VUj{L~j!2Jit zgB64%j#k~9^7chgEXLU#j5uGI_7ROCt>JBd!RD7_u>!QU=L5P`oX)@cdf}(gp`4{H z56zE{c)upEcGa1Ik=u6XU&au2F%hP^+BMH=`Wer_;GM^iQccjicbUMssy3sjH49KZ z@w)CIq$7X=w_~~CUoYm3?>0dF8FN=e+EEiiPdayadY39t{;2M=6fGSL$tkuFSsAXe ze&*E1YJDT%(FP8OC(x~~pf>PMPDZzg*|p1Fm7KlV`c#?0o!*fzC-rJSg?AL1z!Dql zfzYVrl<)ST8g8`t^?qvF+}%*TlUFZ0o=kJ!u8q0mU1unZ@a&$I@0lc6B`EL3;FY9U z^q+=7)Jljg07z(08^5dNf*>N6nMhj_4gSI_XW1@QVt4t4?JlD;!+7qq$UVA~(!wo1 z>M}2o2x&N2&fly~jd~3Do4K#gZfLtm4<0n}Pc!QQqy^LzGHd)B*Mft^>ir@NSLe1r zXuAAMfu1Qlov+=z1reRRF_>fdV@eZ#us~#*x#x_i&y-%)Frx0lHRS0eM?nC>TjfTN z^K`D7iIww%{=2Y|b-+JLcj1Pq(n6?z+#hPHEt$i$rs{0TsW-0ySyKaA4H}U5FE~X9 zm&^NZBdZ)vOmM+PB!8}n)#RSE>&PGKo>RPg6TQuaL)6INuNd_2eG;8UoT8t@N|sR_ z;aEl)o2eMwFU1Dp--MRs|M>Rh7aNd?ptwq+3WjJlkK z-Z2HqS~h^e6TeR-h(Y{WYNvlWBl+TH9K7P`(VK3Oi&N-n{)@_AE_n5cILED=z)>(ML%rrxj+!GL z4glh-Nr0)-%LJNGtV}8v3@JY7d=E%glTroqwC6Zbc{8?XJD?4y`c9 z3MyzIFJPArLO_(YY?TY)(hL<#vP-X{u_qPu*N?xl8B6#3j)wNP5(|Jn)6cTFIxf+J zAVppuUAUYC`hh8_yhWCFXv481nB6J&lxnCCOdld^#pGMqEx~AQN=|=?F~GEJj*;t1 zW`v>n%_?%eP7Bh`kAcjuf?PYd8!OeI*xhM8`uU$T`bFYW(jh*;8r+1^i}39iGisu4 zT{WUQJW+{^-#}aNUoIJ{ZM#DJYkwVBLNB$j-;c&WC5tu!03$)H2-FiMh1G6vm|wCTZC_BOJaRy-DVhtggpuS}u{^QbX?I^2Pve=$l{< z*uI-qSbXW8$q~jTVQw12Hu*R+H1fH$alNUV^;>UBN$|bQ1V$T&ZthZ}4x^Z3hd2L? z4%)dyT6)T5T@A(nuNFhprqj<=VyZ+qYuXWb>siEprkmhu>{W3o-%Ip+uIB9o2xAJY z8QahqD##(EHJ9$4YZIhWj-B-x7#6VZ`f&<~2e`iVOhx#Z`}xxRxskBKNS14&l|;sp z@U9V?1jn5c`}g#)KDgfeOwX1YlSc=4SjkED)|>}L<@Yt#A zjoM}vmxTDdU7mj^lY= z`e*er9?0=2f44R9m@jAN9+-R_tk*@L13QlPwjpe)v!{*{Wp2p*O4**W@>I!0)z-=h z{w-I~sz`u|0Vhh0{(vL-;Y@pKUVN`(n+RFk+c`M{hg?KE)hI5nv!RrZS-GO=z9aX* ztYxOdsqAWYO_xN>79wu{<>X{AU$>BX;YH&9^m)zcSjJ6|?q|9Hyy9*{q(Nsds&I-< zo4I~5^V9i4`^j#AB}DeagpK!y5ubV90|!r0A$b3Tr#0m8rO)15`-uZTwldu3L~8-e zKyZwu0k1;#T$m^ZhhH6DjO5AYeocqlF&tuVMd{N^8iRAqo5^N~GT`Kd3Pa=;vBVow z5x5@NZgNipRayrHg7p962&O^zYRU|z3 zL9d^*{AM_Xd56lJU82_+%(-59)ICKWeyUN&j!e=C$HX&1^r&{lcNvjPup5J_JRl^n zCxzCM?~|lPt#C8F8jw8Nt$6OSp$zbnxiqbePoGj+&%*SodNzG9yY)qB%|69^<*Fvb zD?98D&Wwy#H4b$4hn%H982hZVBS2-UBr#FTanj1hetG+dz7GN&=!$jNFk7HLApFC- z9z%-e`aDwN4waGn=G>Luc?u!Uy%(Mn?>e=;RJ9cSler+$z$8D_;z0TgQa{+ARPrPi zg1nKspoV=ljzII7%moHGLa?`7UhY?i|8zFbTNxy!Av(q#H1yEwEdc*N0Kk;z0R#jy zUhbGeLm7V zcSyJU?Dj+cE2x;DrdCR>4My}&<=9^1dCItJpwu)=#%)q5RUJ0>cb&GWx%e{Gb<~X! z;MKU_PvFV5Z&8E*{Ug^Nhcclq{+v?y0CcMTapalHQCs$T)F5gXuTaH~5%3U`Ehbp_ zPXFwC)PVbf5_!Sqshw32qxX~Ar=Uq`yuuM$e+wS--#ydX znZB=DB=j}426!u?A;*TQ6jG{pipAD410c+p<8Q95di{9YZdqug@@m@Lmq|c7^M!9q}6<;F{5#6qF zFo5hU#RO&*1mF7LSXx{cHS*2XQcj#fkD$zGJNn(Q?dda!@@&7Wil2C8n4<67ZE6de@O zh($juOL*D5)GuVZOeLncPc#k~P*w25P|d=d9;gFT-C`%acwofBNingz6x3X54}ll> z8cuA2eY0;FHn5*BkKA`Xl8BP;s=3=^g0uhK1LIk+59qhEGb#B4CcAdm(B=gWAQ@iF zv;kwJLyvgqKGULI4c}e$?b~4<1un+C8?%wph+1@|Ko$ew`FX%7=`31blYo&VX|kGnwpH*7I2ZCV*pY2Lo=ZA=d;P=+NEM-bAGrG zC|-)M@}Hh7wldLDM>)mSEUTtRst?S?*kEf@Lf6q_pzUF^kLJVl{A&o3AXhg@iMFlk zIia8JVn$LICt{Uboj^ zqh21c0pfR4xK&9HpBG}joj`;c@m0z|w8OwTTEC%xaG`NoZ(uutV_ha;qiSv=Zi!ah z@8ILt7J0FF=p8N8HVa`vMn$+Pf79yfp<6i(Km-?56)7I5D_bg?Km%|OZzMR(2XW?o zVFwK%7+40x)6f+$;9Mllfr}XZi5}bgr!8O~B%P^yys*~DN$ee6mVN-M8YYRYUv4W% z+-6_+uBR@Yu=@RAA%cNo`W=hM6|pGW##)=((c)_nl#^kHV(x70hxzv3r4Npe-zo9d zOVBO!AOHwwm#N;mO1hlUu51HBL|lglQJk=bBMm7n$yb{L6BlTLo)773h8)RD&fX@2 zarZ3Zps|uX6wio78Y0jNXkz5LhZ$>zM!}+T=P8vEI47I`#LK&|q51)A`BL4e zVSC^8FCCqCpmo6OGWK$8%X?qZ)-j(f%_}mT7yxNDFO^Q}UNphUnjTj;qS(sSq!7&E zkJ7Abb74)fpdxY;!dRnj&&z0uJN}HS#^?>a_+S`_9p#QFAR>xko&DWxnM*K0OAA8Z zbV;Uvh)NpJ8U#%in)^x?@RP4G6FgZ}Cvk?q&dycHUAtZ8ChXTT1p8G4_yx7VWc>Wa z$hfJb)*je>(-58(|J5>ln4};+*hObf{PZ;GXSiSc&B}R*^`rUOUOV74#J3>_g&uV> z(J0$wx1hM^)BCb^pC9u?Gfl^PVf9GYAe!7g;hS45<%FwdO&tNc;+_d5uJ=_Ft&x0R z`;(?x!5=ahEga^{`B_?fC&<(-s_MYpvT>#`Y%5qw^^bR!72o1_2kpe^!*@r+unJZy z0~1%G;0)0J5nJDZjTS~j^KRr+(~)n0J_|es9Qx~uj3|f^<^Z$E{U>c_uUn@o)&}ep zN>uTFZ)uma@Sv3(5(VeYo^>#)8o8ATKMHK_E-$104cVTMS%O<>#K4#|JK`RSK-Y#Q z$UeJf;)Uy$0JtgAhnN%7w;jy%=ZZ;@@UWzMHkbPN7w_rkKF}D&3L8wV9Aor>s}|xs z(--iK*ONdfk&%F;R-W@s47iGC?gJoubWWfsezOXlA&ZCW@pqz61YTl=j3>x7c=QRc zn-sacH~ug2mReGOH&6`RJ#{X;9@Ib_AcyJ9=)R#b6@+p=4ujD zm#VR?&~Bevqri>Z)VJO!UJEEO{z@IgJ&ZG(53TfC%y;Yc&IX!cr&YdPsr7Ktp0GP0 z_?i*ydoNhrVWd8}y$B)Au;=NZSxHo9uSdx)zwO;&&)&p1)DEL|G!3O#7M@bW!sos* zJ{{VQjly8(AFBaG^e2hL{!eS0%ljz+gyVqF(fyE&r!vfGq@HnMf(ZTB8!YEtLn`*)$FJ1)I^3`;C0;xd}@5DTK4y4U~Mh(`L9(a(YFf z^AJSURjmb+x!l5E;Nz60Q@!0646Btvocj>^;>?!j zF_hMNvclCs?|hOr0cJYkyZahtX9i(C(`-_t62?P)>7fYdJ(yYDEtN{7hYGc|BAI$9 zQ1PJ;3)&oqPe#HF<?^SMf+0;f~(y{?g@YIw@+XZ88RNoH^_hwlqOvDOWbKhh0d>U2C}MJe=hl-?UaF

!f1%Jx6QM&T7EUB59Y88iG_ZHLg6L4Dd+nVdqHfE zwbkoQ&o3bdZTDpG6(mW)i8|<iI_#vN7YJ6&&AiP~lfInNJE|1bd zhYf(fU#mOCGYF6cw_iW9@*jiC_45EK|CCmNqi)ow=%I5w99 zW7@6{9hrIqR|rKCLfkW@nZ&Lbfv^D`YksBZ0JLn`wILHghjy%CZ&zf6dy)1fcPr!3 zm51TalAdIC5?v`)UCYR}ffu?&eL*yX$32#+8Cx1h(CR9f3RAaHU|Cp-YyqA3*CUBm z(F}ZZEC2EqZ-s#*E_+h-2HhzE_e~6}<mD!^iD&w+rUpWx_5`#X=o7`KgIYV_TP6%4q~ ze2*j9bI_1@KU0T6-1uORdJRBCPi)R5Ego%7u5UmqL{&PBj)_FhC{0SaWk9Jt-(s<} z%$@vM*XC1T@0+c-yl4-cp?fg!mv#j1Y&x2bWsM_h*rW!R{?t%b*7>a8nJM+J;c}x) zFoTXYs%$I!CJsi+D&zyW;{IG4kyGv}O7@q>+xiIxj+(2~(o}Ne*H~Ud2&3)GpsB5h=Z_%uFcJ>4V3zpz*2{Z7oG1$4zEh-{sJ0InMM-S z81!za`D>XiUBDE?tWt6yJOEmwLENyY**EKkTmx|f(o+304$jpYlKt`e}~cU8ZLQCXXrPLJ#U;G$XvpU^o&Kr2UB z5iwJgevYKg`?TH)YnxF)p+wf1A`Hn1(W}GEIJs7pi|JQsBDk(P3Sju>_wm5^K_^69Vn`)hY4t91=9w|Q) zi#;fXedwyA0VpO8UH7DY2`+_Em@8O#ICWD5zDJhNoniVCG2DC=QA{kwDwz*E5fu?a zIzQ=2#?9{o3ofIh0L!t9@F&+Oau#JjU5ruBr1bn>zZ{QJ0L!TU3KlGkIS1i7a{$+s zwjx#GFE}4xQ*uL!&?%b-JHl$))sVH~R05;{j{eoP0re0B!RH?nYX5t)=T-vLyWhhZ|Zer_*YT|XC z5};PWQijBgEi_H(g-h6%SLca;2dx@#`%9cy^)scCC)o`F$_4zTaBd2nU_`2b@jMin zkwxH1AF}+OgZO1x<^At54hQ|@d_qjFZf7jL%AROjm0ve`Uo?S&Kn9YBDkCy{EK z7HZXHGrjQZ{@pV6-IYN zJdy6*Xh`{+@UBrh_DbP4E4)zo+RZe_e&WZrgI}IIBBB9T>h@__f={y{zz`Ei5?CYl zoJWuwj}9+yXCUX5m+po;Nui4~N6O}$qs>fASW?|RGIOua$b4tA7EJav<)({h7F7dA zC5)g^Q;)&rW7vm1#@n0nLI3sA9AfcLIRE&C%4IN~!SPlfL>Ld{7r&qI`R*r0^VKz0 zYh}yOZ2pZS4DYJR5^l?{$aD!di3JioVk^z3ci+oV>nRhKI|xRdn;#l->?AHRx60Le z>vDJO0SFR76{oQ0&4F2z2x86^w~^?$10dr6@|Sq3YFLes`t$o2&D9qNkT` z9%`XO^H*Ou6!IO{G9I2Js{st?{{5PWN*qWIoK@c-*VS(b{Qw>AC(exX(P+Vh!fx|Q z_>-=3s9=?3Ky|qkn$jP)CYQIVgCJU}UyjlGZobUwRl+L_=ku1meQb?q#&5H1;(Jq# zogdCWDqPMle?Hxbi`j2V4q&|=Xubiv_*@q}r=mI=;cKu)M#qh!MiyAjPeZ%>rz1#t zooKK+myW23E3WhUzG7F})E0%44Bc)ZM&F*Rq}FgSpp^lR(eI~nbQKAcHn|wGoP}0M z5@r;V`-prIv(iHG&ga$Hmm~ik%kIX`ktt9Z)mj4ZIF0R2^B#oRSY&h0#~22FLHfuE ztm;15SxJxgrc(HZI-x8k#)eo#BHfCByjp2j*@>d*LRKn$8EGQ^!5Z<_%ciDxenxb1 zt7EiX@7A^VRFi96j^$CBe1vdY2uW)FW=Hnl-7whh+NS|vUKn=IQ{R_kd`xGzQ6iq4 zzL4EWFW5mg87EtJaDyiFjW9%r1bD@QHy$vQ)fqfKQJ$>(p zkVe`4@|92T0@R^2r!5(|HG?)B@i6@7C=rR`T-MLn5RB`P>jApoQbC4-oOEVnCqz+P{$^r_lUvX)ZX)VXzVnyUVUhnaR*_;lt$$CWap6~#B zsp+JJo{i-F+23X(RReil{G^lGcj__9sMR8yV7W9&zDwq-p6Q`mW5uFBJk@fqs9}ul zf+DQ_fj#X2tp5ZG?sB>MWZ=+We{5HlGY;Fx> zi?9uA8uVSujeuClR8rJ2PvA4yN7)I@wXp<%xX?d>4@X`3@lz|nEuSs zcZUHX7UQN#2~&xf24yOHH9T6+1tZKR4Z6(iO3MEswk@TX3vd6bR#V0{w$4ein9S`) zwQaY)C5%S4t1h!@PYdbCzU)ci%*PXwBO5fjca~S39Sn;AAGr{3G17{kBzqx_V5wIf z(K(!kwUajf65jX=jh$v%?IE`IRr<$>#cAFbTv6QbN}sNia75&!dWut+s(p=63BBs_ z(OY?kf!(L~wpOqD1R7%aUIv~i35cuEsOh7?KKLy_qDJ+pNmU%w$cNKS7c*5oj#(Z`=i>iDk=a(SYIGmOrADYAY#%W=*> z9v*0c_2h*58t$f`u@FWNn>Ek{EMPk^ETHS(1cUKR739_A(aB z&Faa|7m1=JHjSM|v}+{`v}4p9yYeX$#!+nN_@b7*ZRu)z>a#mnwjj^~p7|~3XIa5AF)5*9nf1TRXs!?ZK%k4ePW<5rhx5zN_9-Huo4HdRHAVZwpW5s<8)*i8lz@CUN z^a9RHLxke|uEeeZD00HPu_27k)cHbs%`;Qc%6$8=)iGH1BY@Qxkk0#@PY}E{IGu}2 zE#;jk|Ip_us8=bebq0(wXuV52l;WA-P;5aG>F4WZp|7oY=`vaR3_5$L_LB$Hux6gi zVGEV5Z`=A@&(lTn;UROC5*{z?HGSG#@F~<=f`qy!jK12Z2IPP`zR*XW84RSZI$(R9 z`z8VT>z{=p#Xw!VetlcXhj!w0y(5hxz$@|^yn#XmFaF|ldD>F>U7|qarng%k{+uqF z@!$L@fDV>D4>+=Whr^~nNqYs&EQQC#LRZe$06v)=4n9AZ#Kb85_dKVhk4 znI&BK3}lsANTrY;K_$PhMS=%}n<3vtCMBipyHeTyR)*=sT2=DSNoj~uUBb$4gkF7x z<%4DF#W`Gzu`HkN?Bi*T^Oyx-kaodnbj;Q`VGfN82etHKy#qMVFrpMW$a(+C(XU_# zho6H=?6bjpT#ce9fOQwwrwvA=>Jr zQ%mK+R`EKhQU+pIOaF+^=T)5vA~1bbSe8utN&~@QLN7RQO0| zP6O}_yEZ8&fONZ{EJoN!BNUt7atJV(g`VyFGFDJ3nBL^ZX_%5u=1hs?OaBvCbP-VC z=s8PGXd-(4HKh=mL<08XL2_HH5($Gv z1x7i#4sS8`e2ml;HxTdnBf|2IrGE3Y>}0~5;{Zl>wgtx$99VUjPSb$iUfYg42>*7> zG~`X6;M{1I9p;l#BkLqKiAoy!3{v_II`T2b1^gO|Oi2;woE%t5!B67%+0j^@d6pL> zK*gcghaJrK4u*<8kZ`-Mqm(wxDaVHdO%Yet4wY?QaKK987NOVi)R@o#t@Ie%F|UG< zY%_giwBv0-oSh1>vNQ4h8 zqFunK9H#V@fQ5#iS&ig@(Vehk6R@2V4Bsi)`a#f3#q*bw`4AM;*INHX8xCi3*Mh{; z;H^_{R?0Ae6!&xZHp7Y#&S~X>NVK=42V>FbJ7I4f#x9iKZ>qyCS{MI`Zy*G&2p=mRQr#eU@85`#NawP2~lqC@XCg zgd<C?dH zH3H=^DK$Eq4npSZDyV+u>lO5k5P*1J;-C1jBXqWhs4Hx23ySxlEs~D;|4{NGqGA=AAx580?fFPFud%8_l4OnBvW>^!ybVB4(-R6b z_S?yGt97Y>9D}})B#`EXon5Z@edJFybFw_XaY#P)444dMx-!${0PTM#7Xzpn+;$Ck z+xI&;nj=>z`N{Rx`NY&AD~SCcxW-#ULa3}?1YbgybXW6&12@6{l#UqEzWE3WXshKk z^RiH`*5d5qm_VJ@JIJMb2z%BwwD?3P1UoU^l4{2-$Jf1mnqo93j0p)MH_lYP=5&-n z?NoT()rBaNz-|M!5n1ZV)OiSpyV^slBHb7x@x|c@I#$LDcr3GGlz`|w_s!La@QWi} zJfK^ITS)d{DO_AhHi>CWY(LlMni>yjZ9RE_MjaT+TAHzS=Y}nI0?KSc8#%ck>#|f0vGVdH_kJ-#e7B2H%F-k zVTF4@ta{n@^KR|H*eBjK+s0&0J;3T0aBA-UxKOe_z!(seJ98Ort+uO^IKXAPFavJkGja;nMxOJ1DDfm%17Y2SMJX_JM1_8xo(qCa*e@YNAEKHe6T)`2MNy z#51YqYC3WaDh$D92$AtUs#ast>uy^d zn9pH=|MsfF$p=TBq9PEtQgNSa*0_VM*ab*-+l$tQaOVuPiSwxwosau-*Z;l<$ya4y z80<~>?UNhgwht@_ab|#FXct-3ND8`+N{r?cn^bztm5(8I-e2;z2gkb3c>@v zjr%{X(;{kx8E&f^CU3Ho!3uokk?r?NGF^N0qNQU@D+J^~zryf%3?us0*Kt8wY8*zu z49weZ+Ig&_v_*o!kPUsX$iE-|x`mSs%GHwe5FB}do|!fe>fnEO*uE|kG+xBq-23_4 z!UX5}%SrQPo{M`fMotvpOQ8lWlNMl$w zRR2>|9AC7Vx7H!*;_Nx}c%Z^X^`nBy5ha3M6^Vw%EuP`)!+^pC1V&>xI!%jxtg1$i zn+`Qc;%t9>Z!)`kl-^UJYoqqQ7ZUv5qJ+PJYSbOqJsx+uC zQ*W?R?pERkS0QdnI*EwJ#>dMpa__tX-xxmqH;oB876Pg!xqk7UXQ^|I@yw6@Atn6G zqj+QoY+>W2J5^U6GRYtUp<*Tgbp3XTN&uJo*U6Z*TxL$aciKp*n1y6)4Tj5lIMBBG%u8_e;21^5X;M~=ud=5@?0_f zfIi}N!;+P2$6M?AjF`$IG)Os2%#x|X@L1z81B{GL5L!5^Rp0H_(sK@Z?u>_5)?bKM zY)f0%YQR3UG@LEbwNBPyXqU zK~fN^y6(D5>HS9RBg2W>Jn5(2eQ9%uK)3x6mYBdsuzQ`Ab6x3_37>fRViCg_xMAZV?7_m;s;B&o?2rn* zV6*EZ!u$N+qN(hWO3dTUMeEql*f+ljz4B8}%fR)pa>!K<9{dt_*p6qmM*@)47d?u#W!0#%l`7DW zcj?HbR>Sh@@mr(jD2{o9e#7kBhiWS{*fWY%Mq@FONwyx0qzVI<~kL?Ky zO0LgJADsc)79V(?sdJhRo1Xlbr7-%pdk!t^-!Ges;;IE}Fs=YdObTpgupZ%K$>g-& zpTJZ98alY5L~MsDVj_xZ-d4rOj5#g?=YtT*238A3HGVm7Pi@=-0-pxZ0>YBNB+5+sDG zaRMgpJZ>;d2ZekXED)UNE;25XP{5j`w5}CN%~|bg1>GEGIg+JuaJi%OBr@sT2dO15X165p=DC zI#?zG#L}C9wj0~u#z0jt4g%CCBbb0;C}K`Su(Hz}68{f97md}9)_Dt>N0paV>0n=P z&=lV%Adu2P&>D?5_++9muv5*pul#YcKTa5MxQ(@BraUhIwV9k(f*1RZatfPg*hn>f z#k(z!4bbEB%>VQGK$mG;m0}m*MvlJ+i2#|6D^I9@ymyGo$PxMv@goDSv4Ice)~Eg> zS-cPu(=atsu9!57iM|-IPom$+%`_6k#ZW7gRgRb7PR!k8awY(4Df9fd)(zP~#@I~_vkqbSt z?`t1K^^^-|koc@rBBlB8d&hgK%9x2_`Pa?uu5$b&!VUnhyj&+LT2|_huQn|L7l&Sd zW`FVUhF_nl+^W>TX|*nwBYtDXtQ~h98g<(j0V(Hr)a8yMPKmnRbaYM}EiRNx+l~AH3)GRZ2%JEIW7RBK= zHgLgH`5pPvP(&f#Dw6X?33rOPAdFVCd{+J`32TaIdL_&1G3j(hi+v)+rAsJ`UE<|} zw-*p823(}KijI_to5=NHTPzWKxZS<`@k+YOZn#fkyE&V%yQR)}kakS_XkWt=KGN}{ zgfu64NELcxsv7ReJblO8>BeEm!YQU3ngdGoAsae=H{`9+d9N&Hv%)Tx5Q5RRb~Sr% zk9y2DSr&}1{1gNS)P&OBp0Hb-z>gNrmxnREePLu0@icp|&ruaq?Mnl!!u=~?+>)h$R0JV^+!V>Zo|VGKMINqkN=7s+{}N<=kHbGpJd0Cd zA4p(+++;#-@2{4m&R>7G^sD;H1=qb+%+4{mEMy!<)DodeN_cuu zim0xd&{CikD>UV-P@}^RS__`}k#9D^Kd#8;#|RTPv7xa4RD zdAUPu6kxfG)(m^|`%;`K9kQ*N7UR2$P_WA zbb9uPvfoxrws;&Zjd`AUB$ZdCM6tq|9l4i|1Na1K>DddJBD5?^C_dcmP#|1fYRUXs zrD1K=m>2v8uZMVm%T9r`{p;IAZAdWFr`sr^KRdY`NB3-Xe+8-h5<(fU-2)6Lq%@-U zscl0voJpp5HJNZG3EM@IhD6i08xK~Lu`oLX7b~^ui*<;ak+~YCU7&JI{@q{K+|(lO zaOnxG*K6X&5TD(I^|*M3P8XJLQS;X%kxY$!PIORH4UG5h0dW%yF2`##XjOAnB3*uo zUDz5oPPq{ZiW|@5f*1Al6w+#)AO!1@AQLkOzypT5T0K$-t?<05vvdr&U+Z~u?-JsT+)u+DUc}#OapQDCxLTbB(b~2r?6RjMk z4v4By>LV(*_uah$+^^tDiSxjs0UM}mGEhdC8_Usa>)hj|`oD;O*axcwHlAP!R~H#< zQS1~s>qYOnq?tHE7}LD5(;}TcVec#4xQtFzS)3UeR(LXQ3T70Etqfvrm`(2zj&TxVoV^F0 zYHz@Q`_QFrQ?%FnhlQ^JAsX*Bi6B z5Vd0h*6anZG<~P@)DIgSpswBDY!ZiOn{!jTT9t*x?l&$xOfRn`isbCGjxfJD+MPy`8i zhu@T@qKOT1C(E~wsGu*LRS>bux`Qfmj*tF@+kj45jD{XGGRU z58ykY53^`5buhq2Lopjxr5o%7wirH?m7!-Or%lA~ET_$8sMOrE%YEx?0J_co+oD40 zzTxx+!&cLd_q_}?5z^R((ZF+zu;M~@^0m3Goa)X%~YO=74bzSlHq-w;LXmV#!T~-G zw?0b^QSeVnS;_c6RajYgof|1KuY)LLu>5sn5BR-*4J>CIWp3k5{{W;*h&Jn0DsTO-7XfL0xUck7R=jKa4&2C zNV!4uvQ2|87SFw8M_&?CVJKd!v(KhRB%}+&(PLK82%1$~ai6qw(?>@ak@i1ZTHr^( ziWP9W)>^Z%15JQ|svs)d_kCarNc6}N$#Nybz3n**L8VFq$bS?LP%}{YS3a>mtFYE_{N$AwQ;5;(;22yc2MG)KQN1G+{okht5yWf&_)gO z9Fu@i6QL-=><;|(ml&&Pz@(g=T1sW`B^+%>qo#7E1K1@g)=*O5C+m&Mnq5exI-=mJ zMg6=g8)HfQTj_qn<+!Effxd7#Yw;HpYU#LG`^&KCTp4P1eSZ-Ws&P{|6HjG6J7|Eu zIRz`pQoC1nGTas~42q{wweOG3+#H?YGuLUN8|foeORDYBu4uFcU9uI5C%b<^yW}PN zf7|JnWM+IzsAbNPh)1d686blQg_c9mf)Sxgstmw$wFRqj$uSbP3N7==s~2VIlbc)x zd>3T}c4wbsfX`>rh{;!`0qQ$XswJ^kfy)2XaFJ&Sef9XHOcALRnq6PTQ8$cb94k(V z3aA``*uwtSJA65yx>jcbb$hAX?!D<&_rMfDThG>`JeqfPK~;e>hf0q(hNnzRuI`vM zN3Ba_0I1GMg?T$_WG}K0K0Z0#-q(wU1P%;!Wq*L7UxL0Hb%x)4(UrGJaaU@RGd{^V z{W+`pNWpUqc7r`P;h{tMMGCT)IpC*g&MN@}$oN_oKG>U>=!ePDX`)mMvJGrNJ0g}X zl)QB&&M4DdN*|V6Vflhvn2CwhMTNe#_sOg534KctvW`-@lrAm}Y@tpDpJBI7#>0NZ zq4Nf1PC-*PLYr-1a2bL+P8(6>7xxLs9JSl!ssF;9!kim`rb&mx6>{_0d!hEVK!2{S z8&;{inQMMuEshoQRE!FY5gZ?kM(Da8u5uI)(j;7nNg{td!WIj^0X=mo z$yWU~mNyHGHRav)jab?27=Sj-xK&lSV-s%VZvA z;ax49Iq6C^Awhwk+v!vXE-0O@fyz8PI|<2pZ)ModIDGI6#&R3m^O|Fotu%P_I38UqosR9Zvr(Wd zM9R|U^3Dk`w1AwqX)R;~lQ`6r#CN)B;q|~NOfDi_TU0t< zSrdqOK`Y~=#(6S`DjWpe8XgcYqbM#f>bdmK!`=#~+>4_el4=7;jW!EIwg+|JvMH(; zjbngkC}9*=Zt@_%#w=+(bOOL_Fs3-Pwb#i&Z$@ir*|CS1Q^F?T zOZ6*U0X}C98>G2%qlU_KAGjlk5iSJg6mn6n)=grI_5~Ar&pHyMcO18 z|HfK4Zju%qc500Y^?Rsv(?!V+*~HHu9AB8`L5pi!q1$lrOdpRbCS}Z!kAyU^OxRXT z<&)ho<8I>*8Aw^&{mL>yj@WyXLeldZjkORTk6p0GSyt%DMQGEm`a>Tyf6nNXKKw>l ztW~B3*MfRHE(Q+AoQ*MrYjo~Dv82|E1wyK;|0O`kAvLHiv(pe^8f0SOAHXbc@dsVf zjSS`)a}lDD6MyQ}l&@*CpjUx+x|Brf;XMd|Nd0gbC4=kP% z{+nHUzRmNx;wp9I3bW*j<{+!KJ42b)jfb3w&3G739Ij~HQ0rGy-1$m1IcumPN8AHy z7vIWytY9X*2F$&4n}PVdHdLtc(zqBj}eRN!&!W_vZzpt;gWrAVteAhBR#D^Zg)=eh5vh3T0v12p@ahP7Pc~^ zn&#B!bilC{Grk{J`SIi)h=-%eZqE;yJSJE{HN2g4{qP6_os!LK&52C)E_UTemTbkr zJIWTXa`FXt>c4}}$M6z?%dVf&81X7eK=Qj)pYgNiQ9)n6BmV#(*1MYbsrk~L1ypL zuZKfXZh6(LH6^jUE~u3r>ROzB8Ktn9@rOszEiSO=?H@tc;yC02;;9GNj1ffN=YqUR zr(_GpQp#H06U@i}5=HL_o5s~*L5xiZ?(=*)3)ebvYi3z=`Cxo>iH+0KiZ>yS{n7g= zT5)kWs{^^9S1qol?tK8-c1ouu^jJY0iI%O5OUbD}Xcy93@fDNhqS+uE5PFELcJxXy zf{dk?CLNCjW(mQfSewZXK_ ztsP_aVfFN+hn1Icg@p2uv_j`{Jb4D*4KXMk=5LPaQ{nOIa?{?E?ii&2ZlwuKr3R|V z?R!Sq5bHhSy?wMcS$Z47Qq8Ed6edq%URX_u7=$up zGt|Lb&0*|+IkIuhDfbtMtE}EbSSLcw+h_LsV6GaxQGdr^9!X=-Q^vita6eV_cMRo-T7t!6?Q+H@Qu~p@vcnfklW@gF1$hY=@L?*-9We( z?pjAk-WswgXM5L*py)f3ND&#vKwRLIV~$#I+R#YrZYc1ASb1N^?bp6Hx==l_zu@y~ z*mYf-7c?JE;^S~WT8BPf0NeKQ5n8u(`I%lk==$|iB z0B3Qv8Rk&(zk)C?_PaC7Y|gq~5zs-V_*8?h_Ffa=f^$H9Sr60vLfp%PYXS@GZdafWM$}&^*tW zqB{Lt!a3Tbz$85UQ^1j?nW4&!U!gQf?YqOi+KuGFPxuf`lYTXlSu`D@a;5|1)KulY zGm)cMZ$cDexFa3QIg%yWX!yBZasTJu*fCe(*Z3UESrMjz86VI6P6B%WtCqUcZ_mS_ zVQRDjlq{R-EMq61%Q(<$6dNsP1Ht3$^weT^zgZ>Ja$O_pj+5-pt(vWgJ1accZ|3*n zM&S5k@(OjPOKUF?^uV@QXgG_+f;rrXghrbywzhEjn5PnzaS1oIxBG#kT}P7>{}reO ze08ypw39h5QrS-(tkcv@+{k$O8cfm^IQ)z7g(|{!(4JghbqAx$bmv{{QlpW(tRbbv zpV9LPc|VOi1kAo!Z*eoEU+8H&0P1HJJ!lcz42E^Yy83Ar!= zgcI8uni|27MerK;1YdNOY+_JAPV8(UK_sS7Zf_eTLe~lXj83!MoG08fusP(K9guaU z=g|U*=y9_iBP`i%$TmP*OvPNwB>lDOV2O4tDqmy~+u~>!jep$hDcHH~9LC{?OT#BCAdn}RHf(`iq zf`0sT)9v1_TQ_VTsCbk1sYXYjCvi4&X2b%7AP6Ax5>xzhO%;0;0o*mVJMhErX1})v zXTg?@)o(n?HLIwqhuBh4Q72@KW#b^lD!p~!`r6w8iT+Z&gmB7E9*3Q(D4Dq|F6ck=~HAd;F0yFZd$lqtu|Y53;?{axcEtNansZiXvR< zJ_n2+BH4FRp8;Tf>dus3$AhbFbW`pz@7)>T*TK?ViD88qjy7Zacm2q<0?IsO+fGS9 zen*Bco=Pf*7H;jA(p0=Eg-TvbWN+K01QII<^*FNNHm_)F@{h)g#k|)L4uO|)Nb~7t zZYHrK6;i}@lU~)pxEV0&^&!}Zu+Y57sTAag27x8n_Xs}{nDsYfQjo6&5u$wd1nD2I zhi>+LF&n;KZL+rL`x2Ra3S(ywV%(k<=kM%5jqSDd=VxB=QKDS8-}pe>Bleq21`nFS2!iPzcb+7k|3H$%nX;|GelC9jdmeqGhM}!vzuTN}3U|Z{Q=g`^-ep|! zLQnXzMwFTgNq(7-YPC!9Mcu(Ygln`4`cGOc70V!^+$4y_L&UA|#4`{tX*pCxY5U2U z3k%3L#+)mqe0>)!+7RFhO`3t2(o~vYeFfIsNmDo?u(Gr4a$x}Ts@ZjAFa&g`$>&5b z29w(&CiI&e1v$ocrTr}IxQh*Wr`_o^K~;)4_S==%cxXC)D^&5z)E z0f<}j+jQw8#7U8U3%fIhUdYeC1v)ho=*zLdK3LZz~d^OL>x=0UiFNwA2!$8 zo;i5SFG+U{^pU`6V?j$0K`d$Y!1gJ()QD*_9q%RjGz7DskNT#Wn$i?eSJ@G(K&n)Z zsJNjGH0420crWAeGs(N=@>#4a#tw9Z~-qX^Y}EnUC%8CzGiA#zp- zH=)A|(Xa}NdGs;cPn~&83GcN*{;MYK^vtwjuG|7IFGf9gmWp4eSNnM=?IJrfDpZtgd@F(ti3~oSap_2_fGaMBy*#Id*ED83q=w3Qk7r3 z#5AUc^jh0)hwzv7cLh0ivL0Kj%|^9zstVK=PAYzfv>4V;4AfeKD0q_}y4=LB_0hO$ zSBe4~R5nlwnkHf7OF#K{w3mSg`-#_VA3O{$ir^m|g{JCv05aKFDGpGO5Em+fZ0F#m z$%*wM)6h600VFmt;S|Z`U+h9eS=8`fn_FqR`$9qOGlvRNo@E*mu zO&P8^#00!R%UCf8*fYFofrai$9%j370TzxkHJv$AwK@tpPV<^i{v0`M!Xtm7W&Vy1 zL(r7P8L9e6TXV5m6C)$_0VAtf>7W9lA!oXhV~s|*0UjP|%<^)}~{$ELE?=@Z5F*|8_U}EiwRHsGpLO zW^aah6Egcl1bY4j6(vCGRk8{y(_BixI`2B4ARk zwJDoy38<)GU-rWOe-}bCwB?aN!CxAg&O>+e)mAg+!nRt>3D|GnqMFznK)$Y#J@~cw z?bE$yQ;^!8rjSRcIV<-wD3-d}@zd#;uV-PVBQ{c4&i#53jnZ@l-ODJ+DpU>urs&%S z;2Ug9xhLV;SchEs(MIa~8mjyUqfNB1@BH(WndE`U%HEXVXILqfDl!$qa7k1}dqN3g z-r*i;S>bgl{UK8QsX-x|+ZPa6U)ya%!XusVk+-Tza@*7b)5|UjGS?_P(jYkoD%txr zpd<-XOToiY_Tv)d-uY|{qp#0$5F*_SftK+m@qL$RQ^FxWW%>;Hqp+Y1w77@sUa6S+ z>|v8P)hMpAKe z-l9VTQ`?slwnxJyga}DZ#^R@_`qhoX!o9r&H3BR(phH82b;^#wN+3ZTod{5ECCBY< z-7%|F)?t)|g^8NHPZfdIM8{)d-mN8c^trFpp5K*ZvekmZN4mc35gKw>nO8I$kWY>R zm*BEk(pFg8eDRDc2k+xu0t!}+?BF^+F-)1IMF-4fz`?x6-Hg{0@ms|xU;#C67Vb{2 z{z0$LgG)x!LX`o1(xjuP&5eV8y942ah%Ly_-cXFyifM^%qH~!YiPQ$IhET0WXpD%u z`UZ3bcpFYHh8Xe;imt&KPJvzHoGhRcMKLz3V|v} zH^F{ERg2V>_fP{HD2!rQk-*8`YgPz!j5cO21c&AtQcy{XyJA%P-U3V(u$~sP(v#O$ zmCbt#zvDdnd|HHf&Im#G2$#G0c4pGg4MU81g>ITag+m7bYYjVcE|et#5nv^GxKc2T z-2i^+u+_4`NUf+~y$&6{g8r?_0!`jKAg;}r!Q!utv+V3j&Hg2oerThf3r6A12>1YDwOPn8U?ZIO_3piscF4kD_ly zm`TmKI%`RzGJ#%=brO}**D9dAdiemvP3+QV2y?b!DZIfx`vvaiU<9}S0(2MJTC)d1 zQwShpBJB^ZX_S|c6jU3(A(dE`c&FH(&H-BB9->| zwJf!}n5wOE~02~M5Od@Cw`%Kjy#Pj3)|+9<`jmqLlQM$i4Z+ z^EK!jk}bs6A|W*S?&Uga#~VWvv17;StuMd%;Fi z;u1g!O^ChN#3NIgx(&decB8y;&xhDn`oRqg_8eqc`%+y&M0Bpv9BRWfq81JBNdTbP z=N%M#B}M-j*ek#%ZIa&eSp|7~73B2U@kMJy&<`sl%0K zLL%TtJxdbW9RcP^CzG1#WgCgaLVE2-s3}GZ4-@~Jdsp60(D5Vr?38JiaxxA|rV3C~*x8@6cwvJ#T5P1nJiOo_W9c$ts?gEBQuEZUF_&gG zbnTEO26izzzTSCVlAy-f^dd1<0d0~v>6p!yswXa{KOwvfp#~V0+!GBjpoY> z0DZY~bt5B=+T%amI&9^YD zkepXhPrVi+x^S<%$q`J2iU?V)hUGn@Sb9|K{YjOabyQ^;fSBvzrz&3Oz;!A}O!4RJ z4@lZYqo-KP{X&x}2zSVEDabMP3F2x3B*YupR#^`5l(2vdt9C$7&(h~pRR5*#FP z*kcbNybxbR%{2Z{@%pp3yQ8`-Q;P9I#X7ab?1q1TD%#(v(2r0TUswz~23O&r$KtgC zqm7_q!!basL@K+cp3>7OCD#-UPQuFi)D1Rt)6X1zM@b4_GCdw1%6UJ81OV1 zt()a$LlCHyR8L+@@2mSh+MT|a&p)K^*J?6tkcI~SXB-*K!(g0HooMj3$@E~Isd7P5 zwYI67SBrz?)lP0H$Om4s9~(iA4S;ktaBxIOWaVg}+;Kj!y88LNaQk+oVz~HNs7w;7 zZ2V&c5I+u@?i|;(iTw<1ew=T<+_g>=DW`z-Y~D0{ws=bu+=d= zkJ+E0KlkUYMM9fSE_COND@#F&b=9R{8$+W)n-CJX>e6Z))i1BKA_E+Y5{}#y&&Er= zH{!9|Wf6R7rD>ew^FTcygO)YCl%C^|!YoiP%r+g10?T1Ne6()P_lMl(SnM@x8NyvH z>VV!HU3zQ1E;OKGM9uso%IK4HL-H0Cfu8wsx0MSLF*>l zk~F{7^rZ=UQT(Z`4XnLVUYVhXnT>;-$0Ro!a7>>lK#UGS?Q_BpTwi5EN@KxGlCu~U zdP%pwV;j+*mzOaA8nFEqa>^q}{AXDY^xwJ&M=TT^H2hil>?Br`BOu&g$RKEVLYr#x zHZj;m840wmCmEU}ApGQ`t(FR5K&d(*FPZqQxB)slT*j$YEBIcKkUXV=LJ*wdd=NZW zo*~Bj@1SU%IJ-7hwLFDF;BFoMS7HbmHG}Owmit06O!Zw7{mlI}qZh}PB?qk%<5zD| zc_W|3_v6Ygz~jxdk9(+?lRgUs2#H7$!9Cze$R{=|T$kV>+df4k_UdC9DIWa@m~Zq& zR0uY1c(5SI-Ah?|f+G`kKUUk@DfoOpN0a$(;>OgAB`l(~jRkui)#@xN$m(3KXP=Dd z@123*d&V5qq+I!ck8yhb z%*34Zr|YiT3ZzsR+0fb%E9nN0?oHvsCSzzvVX)09b&SlDcBSjXg5%b()!J_OhOmd4 z-!^Ax=)$3(+-X^kYdTd5>6OhN1!C#;^u&T+NpLS&JzzNjvp`pp|45LI48~|A94Mgl z(t&N$yQw;KFEyxCbP2bN^gRf!nh`a+vd+r+!gE39Llvwn>a3*SK~5s2N64npYXRN? zA)F&AF-Zs46;LN8J_h$jwk-3_sS>M}HOIrvrlUNZC1%rV!fvq_`#6hpjPt}!nCN;d zd;$XV4sGQB?byYCsLW^MRl_g+3Dj`MK~jW5w4nF%eJ(k2_BjAXj5 zE!l)KQiT*4E}2OQu=tNzpiNDgP>Um>4x{b+Cy2L;Bf)`)STxVhJI1LBN2i*Sapq4;`#o1N zAI)2)TW6}3#&*rY^1+Ca(n0E?{1SJ$xd&FnQa$UnxEg#jCVl(VwKN;m9mq2aBK6Kp zUHtSYgf*s#G6BG6EbX1Ar{wF1)h`_w#fUND2Lwm8F7^Kkcju-^iZ$sIJH?QC;Af8% zKOxF(W3d@gz+z?#<0Dem$M|jKGzL+_p8P6%&tH5CN4w_#y>UBBAu! zLtP>SNk_9YISrK-pdUD*`)3>@o3+L2E8gn^4sLMWOk-AYZ7RP0#IV=cvaxuL`V0Il zRJYfBJLC5zob{z4Ce3mjE~v-PjUjeNtp9PMo3u0ZqH8FHx~yIQYs<%#QEH)|?lMLHWc?5J3gs5FiK5eOu;>HweC$Ja{zz zkEB!?rKp+yE(obvoxS&8!T3~b4A*|Z!lub}0#jgB9TD1%CcJz!Z97;oeKbsFpMj;4 zUQPAzRG`WRm3o6vPAOtbjE1|z@NM4Qj$Mm_95t-sB{|v6^PA; zRkz7<3JccpTw2Wwu}Th(i2Zn%(+B0j@aS7%4=7_THiF#e(WUpw%n9YPYBtTmCA!J!yunQTtHsY> zg3yBVo4`RMuJ0bk?iImrMcpo>joSNN^Hsss4{P^>8FB0o`rq6zg(76hLhHR4?~0O_ zlX*3#xTZHeRAEE7)O(2oLUBg_3s`huY7GOvTrDN~7fCM+LYa7R?aTBtkeY?lO#^P+ zeEP4^U3MUw;0Nxx(SzXWo%V9fgYWJrIAr z{Ii=mN0s%pwg`1<59Y1XTteg2UuIGutFB+9EvnB44QXcqVGTreHR_Qs>!4CX5D-(i zg_n$|7C$-ReenN)ZfrEwM2Y}3e6ndoLn5?!AyE2uds5V+_*p@JooDqXUCvn>@a7=< zDX+;VI;!_Mf_@yVd-ZE9$t)@^kqf?_vi^SdeDvAVk8Vnl!M$}k+=deW6xwx`5Wq?l z{SlTjuZQp8jK6q8A2gCS%UD#@is24-NukEahvITpyT>OuAYcv8@SId24D$sDGGS^t zSSl$ZwfY%}5rMl^G*Er5uz)z1vkp$r6~r=HK`B^rhNlp%>b+Bb*6Du$#pxOZTV@)g zHimnDQV&r*GF!;b7UWbiM7D8;_PQTl<;(7~5@C9Guf`o`hbe#|*G5e83Dz;LMONeC zf#tUQ8gB9AQ8*&-1fooM`H!E84Z7VR>QkDrAWxw?E1-xT?*BC%a@Noazq&troi{fT{TJx<)3Z@D+&Nw z4GE#J&5+i8&;@SXx!68=1A-q1sjxItQRTCp`ucv|MU-x%93;vHd)j;8G7EOXh*ahi z*@(NwX)i=g1ML(t0)^hVJ7(~}#(VNU1O$Mc)~h0O|IyvSX6ch^Fro(s3p9)Fcve+D z^BE{Y)i;U>G0=c@(Jhf^Nv(!Yt|rn^_vKlty5QYqN(?s|Eh#9ZM{r92ZCavS%6iXt()%V4#~dG z#i!(m(Gr(9x!ZR*4VCtI=!Y-ExA-UJU4rY4SX3*V>nDh33p{2WAqlam&zZB~A3e6= zomnBPK8}uSK+;6p#@@_9+d|Ef;83HF^Awv>H}15~13d2>c9@CFQzhzygr;107~*Qy z!FqS(WF6(-4A%H*LaHgp(S^T_ar9F=s;%|&pq6ZAC)x19O<)b!&1FkZ`>kwiGvEnS zx3-3i9JyhP1Ek7OjU9(7X{*eCA>|#V8HjMNksWF74>-S*mi$z6LB@sw#nx_VUC#B9 zPK6*R-GZg^P}Jw4P9M2?Vuy_rMeIM~-k}^i=iK2`qgSq>FCHCGE9S!k_0ZlT2I1V! zL+v5f#*ZBWn9!G|5lhtk1kMXGw9;m}590!{FQ9OsNhwgd2TIofMFt%L?;)j=kEJ+m zLh@St^_c&pn~H4oC!!|x6N8SNX14F!;sn(yiv1T_kazM@xFrP%zSzsYo<;th8iR8)_6%c|Re)#*l8!?UgDU>YdqmNN5 zuw2B)+^&LX?vhoQz5uOp$X+4{1zmQxBOA@R-hIe5UmuG!y*0|^&z}!wR1GLI4FMUt zhUEc5RuLl%s!e%e;+PqdDY6s_oVA;F36Ak=e}3uRHb6+1zzyT}__=IOKB?Mq9yt>9 zs7w=uGO{%EfqWr;-f`IINPeq_j|^j%qP1k&8r$6bn>8Iy^-B$Ob|aawXksu~qs+sV zhwq^2xnn;C@N1$&n*>8k7-%`Yn}vJi9?Qo|JY;C;+c6GHhgDP>I07$R4NA8)t?0(S z1*l*h70dACqMnFF5M)ga#l4;v3VNlBoZg0LCqQ&gjJVn5vkEE)g}6$MqdJcFCOm{o z3%)Ktl^fxV2EB&ew*c52{$OL2svaivR!MU0!md%UIOU(?{=sVGblCGb3iztcb5ou|3xsr!t4~1` z$fsp)iRO( zq|C8<;)|WEz}QmM)Kr#rYAleD0SadLArKum@-PD}IilLjHBwXH2W2uNJL&ZX8O?6& zvF?Kl0`2Y^=(y%6ff`GfxM3@EP zG4Ed~wT%z5Bj(paiVA2T!Sd*pIo-q{KqV-98zC@*Eu)^+0(%H<5Y|3BP0fq^I1)zL zJk&;4^g5iD$VunWCrF!69)uGqe|2i9Nk3A6Haxly_Jg1Xg$k8>$gIjzE8_#jZS|DQ zYg$i=XA_=|8fM_=29rKJfsCSZU@JETwQYzdx>z<}du(yQqNJ(6Ba$^7S7Lz+x+0(L=jEM{mYQZ+bp1Ew-F5B z71?4P;CCgYw`n`S0(u2UWFmM6qVIOZE80I^F7d_zDA@aQhahNG54r^Q*a0jf=GoS6 ziU}pw?C~bJ`F_z*JY)>vdW*6Mnh&SIekHm``(K}j8mv{ufEW`qx*feQRezEv9(Dx= zhiJ=5D_-UrkvspUkP5{sg~}%(b9&CxF-x9qP}nBg^^9;UagyU&#i2&7|GRs?oYVXf zABgwLhK5nYX+73c5!vAOunrgf5VQrvi5u%MLI*9}NIIm~a)GSqZ3gO1sVx=a&IG5B zM1`;}19l$oi3=X`dG%q?9n|+H+Z3@C2J=d-?C;$Lv+ds@7eVt79Pw|^%c9iyy5U~I zpBXT?q69ZW?8K>z!dOkP9m6gr8eQ6vz{h!hRxbj#z+81>KM|A4+G z=3~J;H4%?Cc}($jfxRek*Ri!nU*Pt-@N!nY9u)zYlwl5}ZhAn)fSqr1p1;+_{Yi*H zi(7$CVDRpfV12E?N7>3r3VeNea?1gWB6qu)i$M8M%! zSH$`EOgn&aj5*{fM3@v*G3(}_gT0u968o#zRjxnQOpT)|36L3~Ge%N7IfyfN2itVgVxbyeoU|JoWpJ5;p|8e z`U+4C%mo;Oe5gCHmc^|Ws5 z>s6&H1fLTjQUlP5WCL1Fz={rl8_`V`FD`u@C|F)Yn{6EUB@!GV%vCx)cc~sj$)BS}#NL%ix$*N0 z-I3Ms1$r*#xgI%sP(Z1|8bQ4a{|(-y$omRhkUFqsJ1cBu7`wXI3Fn*?!y+{X{J_=N zdC*r~viG<4l-4&QF`WQ{j4@6iO@L-` z!?Mv^{f51DIet&!S(zC^W2*Vq_tO<-wnI{|mJ0!5x%YtEYpj5gPA@fGmQP9kTH|WJ zX7`K?pCl(14^Fq2>mkQ+yn#s3F`?ae^ey#?_Lc6y?Daq*rh&UnM;Ov%}ee@=KjGl zq}l83ncQxV0B8}ZLD0vX2!6W zqisK2IqWp&6oBB}LtItrDXt~mjUqgm6o2o`z>F^WC2qQGt?m0x@Hz1EjU$f*p#BLh zM=)AA`}8m3J5rxKI0lso<$BR0kS;)=;hS`KW8L&3he92QwQFBFQI4Ko-+dZZNF${s zc1lo5QAw{v{;{!4_lyvNRlYNfDuqyKkx7McTa?9bm5*Gk)wQBbG2e|R&O z!9Ko^oQb>Kd0)RC7(KwzpUwR8&Ar>zd=A8=dCOkRqX%#lU4yE70VO&gDrtG$Q594w zz)OtfBD0iv2M&YPQs{)gbON0Yau*vIp9)v;7XJYtL3DNJ3n^mIwS%{-!|-yG!UFZ3 z>NDW^f^`A96p>go+Rj!6WZCzEmvRfd)3yBHiwUqp?v@wBlE|ewSNue4Oh&2D0v)-A z-W8V)!5Vzb4N_#HAb*E5Zj1VjC}o+0?DahpaiPRHaz?!LHoAAKtN3}|^z&0}Em4{EO6&(K6f=Z%02JZ4=~W8 zMG~>*r9E$r$Ao7>{t;yqzN11<>;U)7#En!}US8O-M2r)aqWrHTs6AZ-HwJHC}@ zZlL&nXY*-ldytPy`xxXOz)`iaxPFdBcbMAnXWvcPzy0l${I^Z4Z5!}CT)s-XqXQ@J zVGeBiz^t=izueW6R*&N5{nC#PlQrc+hIuKcX<<}fRjS92^ak`y<>#Z=Q9Qj-GGzz8MOK@_yeSv8OQ_^mANBvFvjPiA5MT>zb zZE6L%ixQh)e9xlvV^?t4jw|{UP)nsse-yVX#Heo5KCI)qZ&7o`V|kKlQ}sbM>A6PS zr%q+4nQ@82U}FV`-gtbSQjUyxhBk_1AwkjsE`G9QzHH7CTM{HF`nfX1r(B(Pbsz@` z=^!WiDXhv7yK(t{O#dqo1B^`)6C&+Ee`ejDkpncl=_BnQG3|h*!V@0zj+Wsp{wth{ znH;~JwD3(uvNZy(pvFpJw;oi3EMp$Gsnmj%W_iTaS32A?r&E}{omwrfk?z1lHyi4WdUvl;OqBUs) z#ngJ3PGJhHZU!S_;Og2pNKS815Y;%`Q2?M`gR`7ALzB9E(}i)QqgENJ5F!XxvI-~+ z-t~1kea8~v$(A1{vNu$JRqDghPlm>0w_a+}q1R%$7#6b+W=?tKwChSXfL473V|jku znqKH@V-Q7Hz-0%#|BqQrTnn{@{2%a&h=FD#=?f%Ra4$iAA1)jLu%3kYySvS5qDSc| zX<)}Sy!a-TtpKn}4HJ1~f%NHZlSxd^H4E8?^1R_C`#Kp5n{gD7SHifSnQtgm76XjJ z-xB28IV(1WMR`RDvM}}SKcTG=a*Hy)xu?~hukdq`G}$tdLlKDqx*k#Gyp&sioT8hS z`lz5G6fPh$yKY7NuBM^pd6*2t@NAvpLMWM)>WQrU4OUT=EGanR*=p{C;o$yz43u&7lFf#poLt&2(9QnecxtBa28f%cv| zs2-m`(FFIiod(@14(*N|bz~1!DOfMTgQUL)+XIsqw8_4RLvGCQnAxiSDM%w^xZ-rs zrOMbhx8Ep8v?+{KnarB@Ji-$A9wjs5DHsVuwUHB2BuS^RIWN&NQ*{DS{fvJV^zbWB z_Ag8d+2(Nid=TDjOPkc4AOzOVxhSWxgtZDPk-kM~C$9Lio$zG<5vaR<#ffXhtO0d_ zLWDFqi7NiJnw_#0#(7JJ;L}ilb5k2j;7ZmXQY8vD+Ja6o2^-g6ppIAt(paIq=qU!sA~V$u z8=o#FIVl3y5+OxrbWG|l_9n5^&W#Zo2)<&x_(E{{M%p{SCD=h_Epu`0lIB9e?^4bi zi!LU728(0A+ZwIoeE~=ErwU&OAPrt-!^9Nq(;VtvWySvD6G79;JscK9){>Yqbi3zr zJhWr)f1P?ivbhSEJtx^0%x3xX7VV#=f$b;E!ix19`xtWY!JSyad{sTkO~&ssZhLq! z$6b1A392GfWO>;=J+AG~$Ohf5gQrH7@sNTKthTs<#zbw9qI-eFMwQOMZrzwiJCcte z@)Pme`IcOhDER-mjiDoZT$?SPDan3m*(9(mt`fN#Pd)7Q?LxShZEztyQot=v!hWON zlh?-}9_&TuSJ4GF%9`fIt+1Jzr8FkDleZE(6(J^-iq8#&w(hnqmF57Fo34P>_9$hL z)UqW*H6@QL-Cb2~sYN_{yyZrI&I}@@;kI%LB6T#37O`Me`DXb8Sn0>mu@#L92tz(z@66g!ZQ-#mlo&#!D!dmtPeC{ zmkX}Q-EL-*++xtP_%CBZ9f-gyPqjx&wK$qQxpoo7)+>yy$WXY}Ses{0#)6in9 zx{^?_L`mH#Y1fMeI?lWH)UJl+I=f&be+g4dt1LN}T~6>y)EKAJs)s0xXoLYgkfo8= z;ZS>mK!a?fKiUy0>79nM0$o2+smwhqvT7qMWqsb9gqn%s%a1uOD)hR${Cb+2%0W+v z2(%@$o?ms}f2?D=*}}LUPDqyT;L??)LjDqA=QZ{N`vV~Q6|8bioqUay#~n>AnGN{Q z+W(|N-E!P#>X-~Ki%+ptvm%yb^>N{Y+Koe(Y9QpvH~80sgL8hrD~Q4nq>+Wi|3e!w z>R}?`njo6$=E~a}s9a5Iw6!P@L#tqNIbvw{A=@ zl!Xx~6w5|;r)L-@ZNk@+WsgARxPuc+*^O^DmfVKkjvtB=W~v@`(d>&Xfs?{wUy_u; z!stM1yJ+H2Va{!ol2dyCz7y)=Q`hogJQ7iAEwgg9rwS`~?}~k!cR5j7{3A!DAE9T% zPX)69Opqc7xyW+t?ajSPKFnN!#~C~vamuh%D9T>jAnan~Vi#FM>CSz9)!EsK#X=EQ1T46)lTTk*?AJkH`G`7D9 zx67EFWXFL+?_yE_yc;iO$55sVru<6(PThxl7}%cXRUPRQZ*X^|B?#v}Ysq7YKgZu; zYMos^=t4Amv&4Ar)@vqV-Bz!i**L71zSs?C>A@+PI)6bxB z0TYDMWh~k#*y|ii?B|E}P7ZdB7 zY>I##sK+X)20wQpwdUWZ+;#Y9H_CnU7F(^=uo3iIEi{<(8WT*u z&h%+^Zn&J_JZ%v*d|X1>>VtTZ1bfrQOVlwMBSiQKV4|=RT%#%zHGgjd@8qCTCt*Q! zmg64idTK+#htA;T+n=e5<$W8egGv58nSk{tv z*o`BE(?VL41uHY-NK-p08QU3U_GtFg)dZY4Uu*oMb&W&TC)*VOe+@w9R#>6If@jdQ zn|=}FLjPM9oDA-ubw0T$6B8rOznn~a#phuCxdmtZkReA-N#Jw0)Qr<8uf4khEF^S) zih76&6uY1mGj`O3fSIoM-l9`0-#Gw{>~E~pp`2NOU5OZcW*|2y7#lXe9W06s6tj*+2Kf38~_qfIx?>~C&s&JibV z^I!27VR7^&od?lt^ncNkO6OBp?i%~><$ip-u@WAzF9WG_ioJL=I`p>uhBDnPccTE( zDe0K%*AMlDt|<|D|B0(7TsJa{v73-SBDH;ySa3eg)|~FGNq8DINC7EpVnmBevwCgQq2%(E(7GH+@qQOY`$w5^&t8 ztkN~DrcS35SWw)pI;qr%D*Oe$3^ICpW zBA%JF%v9>*JLkuBzXN6-JC~K903x2e&D6zU*YDO4g%idwrvd}zJiawnB*@ZCalPHD zKK3U1Od|KF&K8o@@gOU8G;0MEX^EWsRfDAztbu+c zCAUW2Ns@%8^5DmmlIoXZ_Wo=!SosUkNSx;ZAJO>(IkB+=?tDr#(qdf5f5TtYdM+mW z){HazJLiw-b;6xVuZ3g`GQ4OpZD2LTNdn*(J2uxfW)RH+s(j9(yymbcZfzeM5L z-G&n8Cc#Rk9AGe5Oc%0MG^VY^DiW@H))Ethi<%J3E}{_D57bIrvL}|xK0-@YDx5Wl z$%+8Oo~-V*<#H?wii&0o=dhH-C!r0kT(FRYUZc$k>j2Kn!hsHcRm^(qaweRl0@xAn z4F2!BhV$a98t>yHTY&k*kdvE78IFHUFEVuq?jJGeo2->6xFaILAWjaBfyyEff|1=Vq>o{4sq%zHAWwRVkU8={wa-5-=qOBTPgK8A7Rvl?{6K<(RSh$ zex*C~QjYCg!N9%ga-ZEf*I5ig9cv-6FFs;>b>D1AXKDRB z7?GXZ(c&|#-R77jic$k*;?)62*)Zcm)@+H4quh5m@ zY!)e6PemEjrpml;flgD1j}Yd3MlAIIZ~HME*}{dQn83(PP3U`~?r{P$D@o)9bBD@S z|M-Fojw(OShtrH>Ed#Tnw1IYf*<37qCLNkj!IWy?gBL!w8X1m(K>v))XR8?q7@6*{ z$O2^wGoxhxY#IUoNxvPb*^77fpU~@kXQ)hZ-q69tcF14tHm7b+3|^vv@q$ zPGW6@jC(G%*Mtinc#viFF9KOEDDA38LFQ_t(}CnW?J|BXju}IcT`31O$Iw>>XncIB zMR&NlIpwExE|b%cuK<88mPEv6(?o>L+i1Rlz&q4vq9RZ{imt9iNHMKbXy8j49wBc8 z7@LxHBYa3Zjv=*w`Tw`>r`sUaH!zu!vg6H%PNK>nmW;;=#;9_Ux4%j(X>NZc(u#td zags|+270<^hwk9&Vh}A$)w+FABC7oznqzARaNSlk^9@3(2m7XI8Q~IeKxOW+#lQf7 z@t$+9TncOoUmg$rQYF2{BN}@Zprbqjy>EjX;h#q=0qpCf>?y_@2tY?;Va2MlF#TcR|%|fwMBO1cV%;7WucNjN4mD7T!au6uoG!guT4*9?Lr4GmfL`mnBK=WQJa0z&!^ zymn@z@qxG>zW`R6Sx;s_HZe=9co))x5owdbW5`<`suhRWFvFiT_HvTRZcZ%~F%kw@ z?{7~xrENyVO-x(Zuoyzyl!uL{Kq{kq>(0*zc27%k#zm;qimg`;rOixALCENFkk?sh zg%y0Titt8d@wtix*B!^PxfM^$MmE9R-FeKnIC2l+CRzzv8;zYLFo zGj)i>*sREOX)=fR>R6oDb}una=OC7D5u~BAUjh^04%^|vZd0pwJa?4eacRvHy>LF5 zH_vM4lUr0>y?c%TC4<{UsU$!WowLo2k8TM5Je`d?^(sGm`Nm+d3XaVN(hH}xoz)Gh zC@>yTBaYO@EKgBc&vQr2lNm2*_cM%tBf!S*-R1V=!fb|6=^A9;92|=jxKP?0{XHSF zYp|6dNL+)M&&DjL%9{AE(Ed*ga%)tooX`NET7%Xh8`(22KJ^sU{KslnE@4<$Xcwg` z$?Bu?9RUA70Kl0|HVR%@L69x+PlIZ?CFg|D;TxA-E7N#?86sO0E*J?W(fFWqEkAQM z9V=)uUjJQ2NO{X1w%=#5^tb;ZbUJb~U@K}z8#DYf% zl>p-BcNGy@mHv46<>G46Yt@?=3Wd6A+<+E62W)UQT#4;&uWlifNUx!HbhI{@#%%>` zWlKm7ZLT=WIB&`@AD92~SqJa&202DKyHJdz;(SjSraMob4OJWbMFEk|pHw%!*P|0R z)3j*@ugk|SV3LzRuPIxgkQ|SKmJ@8pNrE>6B3cBrZkO(g;wvfweV&H%_$&F1Y0K8P*&%NMt7(ZxjMSE&WbDoHPT+ya6v! zlI_W)CR1?#ukNgw(L^%_Iq+y$wBhiO_^mYPYL5qW?4l*r94 z!U6`~2~=g7a*#pslUofdgX@C>S-S+XSei8|r)5~FnXkC62Mand6x7F}4sr6*FT8_X9_}SL( zN*MuQc~shG6lEZ9q)A_LY<_nDY}mg6Fi1{gGvQ;bs;mflFcM86x^urHhI~m2J7EK%W4OVY+K=?$}@TIOZR2GIjjEa2e7Ip zSQrn}ZP@?vlF_L`v=#qG{}^K?l-gW*?Ln+GAl`+PU{t=}Z^g-@>-EFv7wMH_N@SJi zJ{fE>Fo>Yj1Hk%nN>2&OVO-Y7nk1MzbJkw%@4dzKsHF&k{OI;t%=E0VWsDRpL5GN{ zVFMn&?9`zEzfnw6pXtAs6Nad~oUJPXc}-Az%hH(d`CY;ArYlL$VITO5Oj2{MvSWs^ zjyW|uq7410>*ks@zHsUT+bef1kwIkIBdVj2srcWb*-Q$p*B zkX7Ngm6f`ui?kk3( zY!^H8n2XeOEIp(r08|D`x9iuUX4Hvjg3;(j*Hx}hDR$4zQ0xcmMU^}a*E@897Z(Eg zfYh!Ryz7r$hH->gEgW=7_K8)y*0r_MgMIRUE~dk1TN8|VphrS>rAr8!0$xJ9YIHd5 zXF^MKvf!&Gzx)~i6=nAnR}nu#2EWymDF!*l+cvNQWMpUtk@ZQ`_ys%12@R)SaMOZ+ zpliLEQ@oTrU4=MSP6waz1+vyv=BlFZPzYOqK>bD_39$EPJc>sl>$~gru5WH2Dbl7^ zXI>rUL!ET!0mVQ^q;Z$lxM4B0ikJ0c&D%B)ja@(i^v~+_ zcbu6rb?`f~75QS+{GL=`MY}|nW>YYvcAeqp+KxY6CczyZ^rb*GlS8K?C#jCvjPY(> ze{88LMDSjgr26ns9#%Q%__4+WSx8bIN(x&s$)CuQEJy%PhV%?j_4Iq1UqjPSEST=e0}>5T!r(IKoHbHMg6W2DvUBkHmcJ0}k?RxN(MH9b4b5*a5XGKA!EG z?6kf~BC6yc#=+&T-N$G&zyfIz9Yi z+KT{2R%&tr)~&MDkJa(@3r#wjmD`}$TY_i#pBL;-K%cxbdcuU0@KEaW*17H|4qhRz zg#x`&$WET;+6-V9LJx_2h-%adSosDkI?27Ht7YW%|MB|F3NRv&_10HM{ z{4zm{$(Y=1$40%9n%~re{pK%yoY8vbMI#!yX4^Ih6PNwO{da>^Oq5@QtxlF;NE(Vf zN&S>U?l>GhGTbuzJj*r+vj)PZEz6jlp|a+`3ISWM&dRl$VgLYHfxBMm=vW{x6Nhrf z7d-n<3+{pc4+^8v+gDYKnFZF+n;8lnFdCftxSR(oAUxMSh!k0(uQ@XGW-S zogV*)Xw^^Rj<_C|9hp!vUE5O1LL+x+^@AHF(V`jkA;}ZQ z5VHH~vq2aaUoG$VZ|6sN*d0l5rP+;|LKFlLGY`pS^nK-)q4t{8$#tz#b{*`}$;XgD zEW`Q*zs9ucYGdTQdg7sU*Y06QdRxRnOVn`~C7GUP`CH!?trlnbUz%%B5oHo12`6&V)+SqUSUO=QkmIib3T^Q{r5y)m$KKr30 zI`9}(B_X|TInh`k0%F#tvt2v~PFla2+U8xQDhm6>zcJfvmH=q2M-XfUPwHAxWuE4g zuXW!w$IwOIhXwtDWMOK{n=5)G!Q&^bGHAtPXrI@Tte-0=5%C&0$GG(S6$z5YTZPZ; zk@&0w5*k95j7SfiN)Q=#>Pi^_l%}#)yfQWaC8=1&5i1`rYU5sg!>dAr9U9BHCtJ5( zYG!JOYpuxgC&Qo@N}azj&hnPD{%xy*|5~Z19wG?2u@(^TBjq5S^%hROo>XM`#-@wj z(6ZE9)-p#w$MoCxpoD<41caCXODyaEZ2*b9`OVL%i9<1Pg@(~TCy4-O%WXv7s)i^c z^ZAQL$Q9oBmBTEs3QVQA;y8ppL$?EM2;Bb7@%(&G1wHN`>{`@yLMR_B5@v=khC_O# zVbgBzwd&g~S;V3BOORPoU%QOQmci5y1?bE4?iXAjP+C%^kXl21i$pAAeCn5j02i!- zTp*f6zK3~1A-aE$ihct>>RcEr1oqDoP*Jx8H;ZWNdNL^Ke0svPAV?r+4BR;u;%vT` zI$90Hhv%MeD1&I%VEHO#$S;7^H5&|;6=SA~eO;+U-)iq6e7aXg2!QTI{0+rHM z(JNQoJij1e%Q$3RI6L{u%233XNg@6IRuJ2J{-iX_I_hW?Uh^Z@Lg!H;)gX~n z|j9~%>-r~!ftjpIkK+~I!Hihcv$mpXQVx{ zX}|vZrwpg5`Q0#$!O;&s2pj-QLW|GlI4U7m$1pqumvNBstAe2?BB0Lz0LMoy1M)&l z?2xS~SrOpH3Vz3N%G?r+V zO(5QTzLXhY9vt8(eJ8E=a64GFq=)ikl^WP_f&h)~27OZ<0v0o=n@paO@$fImSKLQL z_=`cl93H@XxYp4rAxCj4x*O7j77xyPv5$)P@FOzpX2)rCmd0@!(8pm4pkBu1?e`5EPEx(Bm zPz*^@tQOvtCL_)1Gj-B1I%Y+c`KD86z7{jJv!z6+G@x-IvD{+@LvFz~AMZ;!fK1@$ zleYeHrn4zl3ieE1e=gzUkT)WBPzNGJ!2~tR8n5gpZw~sbEH5`suK~g?ut&R|HivVy zCNXK{B#)wS*X?!@6tWnq}DVGAwB`WA=be1;Lxe z$mQXUnD=|i&>~CKYpc%=^x`SFjevpDDqoi*>$32La@Ur6`APf;+YI=TuNT7PkLcj~ zOi7AE9_vsbPw5|(R%^>3Q9!pp|JuM9H3m1dwbSzB;Q2)K1yUX(P0*rjgp&$Uiib`G z`>B~Xcdosz)b)Noh#~^9V|eLVf!|__W*!2ve0b|q^Ry^#8Ryc`NedndQ5MGF+XHFL zRcFS%SFJuMi_F1UW6J80h!8q;ofaL=W3NqEHd$cI!tIq3jHvSC3W~CwubnDnNXo|R zjV7F!9s%6&eWVSr>|m;Baz5uscNm~3;kFG|(UQ8^Ehk&q)VkM3QQ%mxLk7$K?{?8s zb`ud{#PcWwSR$e8z;?V!yEjf|vm~>(Kc;R+CZo~_jdm|fkzTbE?|^dQ!TcIWtjl|gK02?Rc`1} z8gWpiKh@&Sat7nl3&OzC7_sEJ*}J7Ea?vQd9WWsmHDjQ; zy>W0px_K$F=e^|`-n1<=XepvnSEAXa3pmYVoNL^JrZ06gI$qL)VF0o9LI zDzNs@K`Ed$;T<$5Q%O#~l|P`g6=ZBfzPWSDxv9aFyh>p`T06gR*v(i11EIAYhOgg; zSvQ8+Hu3QR+9k+Nmv>rHRNF7Wg&X+*2Ys9CZF7W|8g$7xE3*HS7j@2)ZQhRI%i z19Li@eaSNTTU_`B@7v!l*P5|DY6Rvw5*j>#H)LN0b=kRlXdctMv+3} zKkl0hbGnrDL`htPe-)dG4ef99*9BR^NP&Bklh_S3ZFMkbI~_~g7;>!5?AzQbUN*HMMGWf>9Z~{#?#qlixz*w=wk-26cNyu?@aqJ#=CvE^wpUj&-DEQn-rU~nOp}O4H zkzVaq;!}$-aBoh;Bmd6_qFOL?m{{rv*0j^)Ir_e`OgrC>luqS<4`)$dnDpUF-EKVtEf0W$cB znP!Bc!LSAi3Z^a0v~q$>J@aEiA^Y%Wmc6W7W2y?y9EvO zX=mrw4()hcrX#?^^Z|i0$PyeJ$Wmn+uGF;54Y8yJdDJsxVLA;2%T(*(+$tT9!*67$ zbaUAf#*J>a(}b(V@HYVs1@dP{3=QRnCJ_|$>K|;7FhUk5R2Gw0P%o&)Crmr^;;|Zd zK$oz@AVfL`B_hNO#;Od8M_7c$3(*rK8?-g>YFnG0&NFsn|A}>;XjGIYwC}nRrkN?n zKPdEj16FAm<;z-2U(>vui`W#+PS3M~{ zR;o}mnR4Wp#F!MA|5*)0dDgxFta@_WE)K$z(30`yTfx@I!lETVmG2ekHeEq~W5-JQ#vEY+0q0_5b92MZcb;jw$kZPidvaCO1JMAS|uc z?Z%~eVb{8<#7#_se-tyLw64X8OPm;nOFeoX)6al6sA$F*Lf;wNx+Hly);vDO?sPY;#3fGSo<)F5-@BBo|93i z*()2|tuH7pYZIj)68~+Z*#;KrLM;LF9uH$6bHdv%) ziu&Ts?!6cRh8_DPlfC?chfX*vIfj-FH*XEkGHcdcfc9`*gjW^H^Prdv_ZR~iH#2$a z&EZ>qor&Q71|9(#JlIM`9C}q6byR72$6~Nj`)bNPS@l+y{I~$5w;U!Rlze#(6+jw z(dI!&KU#V7FeHxq((R{yRsxL2OOQO#>^O7gi5RtkwF}%+@rl?d#DrpB$r%4S-E?Zn zAb`%PN7tBxZ?7VtV) zu(J;1J91W&KBz#1r}1=kb+isX?%UZuVxZL*-+fFM=inrOioTJu$fO*jU8_!1khU&V zlIY;ap>+g9r#=t{oHsM~%zVB)>ZuBSpC&t9x0}Af=i}n!2Ib?p=EF&W=E>sSish!) zA#ZF2uwtd8+*X}>K?Gm9CNy!lgHrGB+;~;(yodhy_J9jkA@4$PPco9QeHLU3-1Xi^>GE{GyJ1KPy2wsfdiND9e>7l}i zO*s<-!bY0xjyrAHp(i`LY?XOHWkx{Qu{Ihpmm)JvEK;~>8sed9=Uk0rEVV>P+ZzryI}l7DBvm?&4K29feU*f zbC$;1&#fEWG^<*jcn0dc)})bb6}vZM`~~A=Yw}GT1S%Gd$8?>q*Nc}rM}w(>>9A&} z!qL=O2k!fMRN#*w9_7NTH_l8V5dWzcz&ua_Ph$2vP^Z%va|M?djz%{#!uxT|asGx( z(>fDp2--Qy*bT|~aX>vk+=3ihJyFvdKiP|kEU?X9rU?D__xnWj*m4_<_OjG-DCys8 z&$x%zS~Ux5(fdTV@^`uW)MJ-8?tDmVui&q%Eec32{ZT%ye}6Ba7Ss?$5(JM6+AMC5 za{?7g)$gdFHeSkQ7bVpK%p<_SO%f{JwQj?1Iw}4m<5Hc1l-JdfYjKf`HO1ZB7S6S`!M2WqG--(oB_q!*^I|pVmNeY3AKR_O_Y_w zdR~D0#^(LJ%{?g+IF|IEj>Dq-v$o7r zfoq*t)Z>cmBX3RVdEKDVPqVE$jgNF4`pYhhix|4?uNi#jo0_Zs6t1wQkMBhJV=gi! zburBBo2l+aCL0~;G(lwS%<33Sb@U=?@|WMmNSJIBYCe(@&ZggU|KxY%IF$d!Ogq@L z1Ue9P#+TBH_)R_zrG%tR1n^@EZsEEpRw|d3gYr0aS{zrZosa8>Vtf6A>Z*jBsiL7J z)5a^TGBDWnE2P%ORO8FSoCDafkyO(@B%U$FScZ;5^L%n6ixKSrJCFR5zNz>#)5nvm zHcBg%18_(&oGAPMH{I_!M6~LHjI;qkjrn}+-(#v$35E-F6xB`jVM2{>$e6?|Xid`7 zw*uWrku8%oa0jK`-I!mmTqwCZRA99+{JS{~{E;w(CMZ?Bye2BBA$(FBLla51@c?&)3}! zypqEBo>pE$MPbV~@>9U2k?I{fO=K6W^?*p9aACI_PY16Fpd?_E=Dg=dYp+8}c{k5> zKc%dwH{Iw=?#u=`hJR;M&9)tW-*CO=nxE+AmTLy=!Eb#s+X#dgQCVvl!rX_OzZk_2 z0#3pbO+G!oFt(j&Jiw)7ebyXBY)4^pm+%hcS= z&-OZRj+o=gC+R^#Mu~R)yR)kr>POXBBe`V33Dlq_uaT6(R-vF0`%v9SdZ8D-{65+V ze*apBd?=b+(^!mR1f{Ex1Mk;w6N{2n>VBzbObDAGfq!FA#aQn%#p3?L^<1d!S_$$}&L3J}a)4VS{>KgkF*YaM;kp&MT8OYGS30}x@mQar= z5-j43Pw~WJQ*!<@&!T^@1+c~hz%2eE%u4^>s6?!wJbB;;Kc#n6?+}?HAX+63!LFl& z>I`}IG`M-U%<{W^;|El_O{a-sR1x$By}5ScLl8vPy6A=4vg45d)-mnN(=d;NjHm~G zWvfVjBc0UbB#=a_$<&%@1knX=9J!ZDn3G}M7vZf!Cy?P0m?<@eD6OPsYnWUxej%!m z!j>{eq>o~sy5bK!6nN zL>S`hK`G+6RLY(2TPD---FH({oGrCFX>Eg(u%8n>Bd5ECzj-*@63!4nsUm_EK#%lo zEyxX=i59D)rnGLQu*dO>+v9(j4svP3NBTu%iPC@Ra7UFa5pIUVx@K)65&VWu zY$=*r0|;RHJVbv+n6$W;4w!4xGO02c_&==YzNb8K-ab!uPqgOhwe_E)7@Z+oI z9;X|VBpEwac!3X>_kdvnj(TE~zU7njR!7yAvFG+I#!Rwp`ovUM#4u+$H#t+#!UcYJ z$P``tC1mX}IrR1e`S{&_bt)3e(OisXYAc|i?>xc^B>z@TR*~KRp+99*=+Sc13)5S> zpq*RYMX!?nc?hXqn3`KxL3qRr-r^?MeKoI(+??ETPNE7=b1Ng$z|Nt`C}+y zD2>+HJT?q&^SU7lj*$ z35c`}uof|YNJZ7*d5-cOncYcjkNTSgue1w+P)E;@)6=gp0vJSw0BgI>A7pCR_>x;G zW4L5sJA>e>MQ-YHD?8E>Ojd64&F}Vzi>J0@8O7*b0WlxlI5;B7dU*qae@sf&lgpb- z@0gzWy!3pM4I@}<2`F=SuH^vQorl4N=e*0D1?$S}BiWD#L$tX_J4YBQLC+G#nPf5Y zW%EtwjN~Z*7JMBgfzs+>h-x3>l)+LYnrS#6Hc`Tv7vm|LRpjMT! z-0Tor@Fx-xtlORY=+V;}qS}*qP}>?g9Rz6>oOfEMprxk$*>0$7RKAh4#&N=oh10_j z=tn>YXe1lcO89Qjt$!Ienq{c@x~l|q8Hm#%&N!2eB5_ZxGw@BZQj(O9lSx%#xzG#( z-y1M0=8Aisk7eZv9*2X{rmp88YQ}UO2udO0=4Md6UN7q0X6l0Im4os?VgP#d^f1ynvOy)5u&b4xc6fs$E?UJI*2m@4Xs zh^?nh1z9oUV>GX#umA*^LzZ(zZcpbyH=ySO%T1db^k^zHfu=M^1Fb~!syXpM{TjXc z40D0B1*z{RmM1yGUs$)d_4q{0G>p)wGF;XK->FN%u z1YzM6-)%K3Pb=>bi3SqF{mRUVOW@}2yZaeE!yNn`=_9B66U5sR$xEf z5-k8F7)%7o!F+zaRlyExLW6LUA?MQgO1>(uGUNXn#-0FGBcAHgSq* z%iWc5{z=7NSP{&l&CynFsUEeyi+eO}`gk~ILSGvbK((tsf0PL2=_~cOl=dpJ#(sX4 zWASelcaRR`s8=<9QP9GD1z_5!z`tKlzy?-Ik+gr(Hn_vAxODc zA+vhoYihWgkfOJ`L^pEd2f#O&7BJW|9uj`B_6M$0(N zI<*DxuN>2~fbb@gI2KVx!6uuA9;l6!Ql$TC((zD+2m(vn8DdxdhpR?imQ%gr&a#tq zJoRlN5Fr2LAp!6f?%BpmW)H~ee87ShUpfKcj7H0n-Vo=!YNmE8$46ANJ&J99Q}mP6 zIADO>QRyC22c@3}JxN}Th{v;-|8!g9p{{#-EKSV>kTC}10;y(-_$HPjjz^@+q`0qY zK7n(k!!3-i4A{6|Z|+tEYncNgyhvEt*e<9~rwQHdq=65z!?PySobD9|r@NeMR{0TB zt|=<%V@58&N5T4A!$j^ooIZyyRBxg%M1#77G=mfz^kkEwGp@U}$GW78_>I zw}rTt5$hT+Mq2+CGf89?3TH1Y|AU69p4Ww|<-1?+^DSiXBh{hPu|6#fr{qS;o=BXv z|C}hUA&&x%@q3>ZLY)KPG39+ly2o1sdRq6`AtG zCYPfaI&I@{$kivq(?UVpQ9>b?KnQtq!-U zUwI_%Bck{18K;F=um~-@i#z@#gmn}l;*AlajRgLP_1Yb@)MGw0nqR&e-6kTsz#!^= z+)}uB(8JQl#&o`cFu}S-M%vS|l^iHAwzPsk6$u1Rx<jrnFTN zdCdqHy8|i3Kp=*Kz(c(lJ7L_tOCW}PQy{G8$;n_j8Z3qTxXe4<;a_(|TtXH(oR`&; zM+&4!6Tn11UR&=noMp@o{jKvbX@6=8R&VhBv~Uu_=82UY+7ATo_1Z32A%R+O@<&&5 zgq>!@)URJj;C2eL#xocSJxyI%h-3a#O>VY9d+>t+ARff-zg~?D)ta)AWqu->RU1fe zE(9WE?Sr4o#GQR#1g`^xnV80gu1Z@qnrE*9WS1T4uvYGS$Z2JYi}sZkx*&1yYpOvl zU7sP>s#r083EJNJKZUAPmTqH++M*O9M75Pmc-iIJcGxF(q2xJ`ry{3j_SFb@Hkjl{ zI)h^+U?XkG{hirYW1&p<;crwMbTb8}(Fu(T74k>@4y;$eqWGp?+f$_g0E;(5DSNc% zDjsyTr@4e1DV$#$=@1+44(F`oEG+xZrUs2T{7Kxe;AP)P=7!80rjqC~6A2~AN9&@< zWC|g5MA0Z#P6@Te6Mscfz3lo1T^jTE={C(j4*Bb;eEH4G_3j!nqSU(OX2r-Mv) zl4Og9v_r;emLyBB(M(A}AX+{0%PW&CJIWYnNmz6rhbm*o#w>_APj8X4K8W*@R%9Xx zGEn%Iz}aoI^h}zLZrP3QvzS`2*@4yDnm&pqTKdaKnABO9fM*2#-R3VwTZG!ql5ms+ z(I{hSw~$WdtCU45ip`7vS$h^@90}C+ZzG2%&dcdgG!L)Uv!_V(teSq%5irdqQ<*QV zk7e{}sRsqDYCZL6GA%t?d1*B6A3=;6h`Pc39U#P9taP9C4Oo67u-PyigLLtlB*p9( zDW$kHE1Ua8L3nd&*!7;oY2S4Mz@F%)tZ9=5rag3+6As=Y4S{G>fQ9*T`#l z1^x=dl3To^U&(GaMYU>5{&9o=^j5fdKusLvbXXL2P%WA5Okr40V&#-=_?(%~imV;6 zXVZX&J>EWiFIbEUL-lassV++!kEi-s0i8OO(+om~A3X7y5SM7;ksrXl9(`FpMxp3@ zv0TfxHW$`tf@|(y0*kcd(t*p@Xmp^k+;#o>p+;Nf+>|(T=@CrYgPY;ZQSdLtt2y~` zWD1Te*c*6acCc)Gii5z59H(x!0^WXSr@sg{X?4T+1MwO1ju!Na3?Gey8G}8zO&@WZ zd@H9)!JiVcWS!-_{b_yu{Y@+~cToTo*mMXldBVpF7C@er=Du$i zSUP&9)7*lF$LB&!TqjmxHH#;4P-92=Dsfj(6MEZWbWHdcm`n|Va_*9o%`2f1T(i9i zsyeBz5R0(vAO1>UfpML#J`NE+XYWXR`u_hYaLREb0^>(C5$YV_V>Jq)rjG$bUKKe| z#XZp2&>G6~;A7SykbYHO=&sQzMrO8T5d8 z#g}-Swp1wED(AE%D}GY~*%N_7=n(e-%4Ul|p!ev^wRVVu>IBV)s372m4Z5vJH~W8{ z_K1udN?OboezKEH4-R9mWDp*|`YU(ty=+ZRb5!prpkSR%6>3r9B^%1)npzbn!YsTf zSDyLNOo%c$x-S-{pzf2LOGjal^fq>h3BlZly@vK4PkDA2Y~_3!*=)4q1G!LDtNKW8 zOD+WfW`B(s)!O2iogH-!gN@c>U-B#0;_Bs3yJp{|e^ay$309Mf{o#zL)1GI$*hzJt zEN_f-u`y@**)cxQ=AaFnRq*aj3dy9|6Mk?CD{NX|jICs1t<_M7$p~AGK#0B|(lNvl zFG(nI%Esl2=2PrMuE{3R^=#Nw)s@6ls{AY_crJ^=x7st9sLId|a^agvE7JZ8kXz5vdD0iGBpv?YPwIPu{Z_kd4^JT2(7rHh^CnTLqm|Wsj z$lNJroM0aE!Yz0SitpH2R7(BoP|RqXMVQA$9p(Pt0oSwvDit{KTwM>EUgDJISUBY9 zTb10~V|w>Sg>O3Oxu14)Nu`7EX#1p>lC9G@tS{5z0P5ZER0DwFa=cbh8GHwa;6Tx+5`r21~u)DU|>JAU#TUsr%Ug%P?8{n}Cfos-k zPmsd7bcKC@wg6d}JN9d3wy~JPPkf9BB!{90+l%2ZRSC?4vWGf8S5GiM*E%2r)P{74 z2abiTEe>cEOr=sEK=0_Z%_ryG_vW6T`(X<@lm%e5jK_dY`h~E?VIu>?44xPb_HTEr zjCUxTX~HUP3CmWUx=btM;|&^J0zn~^PV_e&&}c_F6qdv#;u-464hccmLT(}`j%#jm zJpP!yW6vGiqXb z=5!j)A@52Lt+cdn8jg=n{{ne{POkD*S-B=vh;~Q+N|7-2-n96lW6cPJaGHL-I%-eT zrLisLc4AN-j;p=Lwkpn41w4;WymGGF<+|NXx2`fKc%A-&@-X9R{XF~&d4BR4EvP&V z)I&~$&=H=j6TR~2F1@2&RTZ=jv}U*56X^2V+koZyv^E$Or070oX}xq0w34^#`OF{v zc%&nUJczkC$8Oq3);HK4(S1VDjMNQdM{)?cM6ld0m6N9(0!YB5A_c~1gE@OLdRY#} zVMG8M6TtCu2Q=UNejZobJNSPhoU(_v%U4ye1A}Ns`7sc~e(V`5RGM(9@PEw`HdcqE z*q4F5X0SB`^2vG_^6zj48|5xkGncTj3$HQV2$R@O7hfD!Y_q$YN%ibj0RLlN&Mk@U?4r4%^K=*rIGs2(PBh<(qQV2|SYJDY>VK_$!?af7P@y zijI3Fnjv}R8d0nAyN(D=YY4*kzzc`h;c2fvynx#5y30qKg3BUc@6-vRmMQOW#E(I> z_sq1{C?WU|;&&@rWjitJu2@>TvIQcNWRSM6b9}Bv9_&;5pL>dr_;-sKf06omoc)pB zx*@7^XNfWCQqP5n1lVq~nuC3%rwClLBV%#lZ^2K00plQGtH>)6Bd178LdHt8Kjx9u z(mY1c0%+pKHQ6>OD=a+{sx~rcpHExzv9alWjb<`3FTq?e0=LIuf;**>v*n{x86t;>9YPhzmJHXbQVZ@j0v&XKz&6(V*y%}LBR&4G+($1__V1RK6_YRmi-6g zw>U(>XX~&EUX`oT;{CQqEu0&TU^!86z$oxt;24^1<@qP`u53Vag7)_Dy(=lo3}1Lo+G#yKeVsjxxk5VVm%St@ zsxq|n7xPRm$^vbc_ybX^#gERCNeULBwlD8Ve-Ou8!rF*=P?9oe2#530O@a9zD8>;n zpF+ZI%2|QY?^@RF0_2#-)HsyLyoO0Yd=i8DIh$Z`Jjt=x3*frDcW(>uz7GhBj<|t! zABD%wQYjOLfqjo|YO!0Sd=gb?6w+8jF=sjJ!7ZzIRSkPd{+`EH^1^kSpe75_7jaE& z95FI^6wXh?-+iWGZ|2*5k5(a>R*c;N%#lF(*v{){0K`!KvSh9bD`opXN&^APH*;`G z&e4U3wZvPm&O+&sv8sbZo?-2=hHj@_9xeP7^s^iVfo>biiSx;iD`OirkS21m@Ozor zQV=Macojz=+_Xj>GqF{lM> zMp9aDLWs&m%|m)lczbppmn4WwH6DdYWD-xoUKG`?H)OVaPiqp}$AqUNlXQ`lMLPaH z&J>!0WqV7G@+MmJOLS?(RrJi$u#(=fakhZ-<78oUASbAeWB-QK%hH?deWvd(f_wGl zD?IZADT=UF68P!yU+hTzPlop^Ej~f*<>?OQ_~tGW*>xiyVUlIqy77b7R#I-}H02rYu2XC?GMpq(&?C<;r2iPOyXP$_s}n zS-|kS-d#!y^q=9GG=fGlXW$Xw=8=(wlpbp84X|mVS>I}68YcDk?R8LAr<(guMDH&? zy|QB|3*(reM5o0XCVrZ~P|=_@9NS1SWz7&9b)78aO!%Pt)+F(e$^v znedWR&<8%y4;^E2wVv0phT<*y;z<=29Nyb6va7oUAlvF@Mx2~~F(;qby z50ns)I=uK4gD7#RngV~N8CYYLDug8<@klA=Jl^y&<*tqhsRN~V)J>4oarw}&aUxEu zWrstP1cCmQNAMon1r|I~#}-As->#;p5Um+t(@D`3+XV+4h7)ohz}HnZz#pu4?0=66 zI3Mfv5vm|s(FZ$Z?nXTpaD2Kfl9Mb2NaOkah2!Aa$|=>NkAz__udTki7v2pBj=@pI7u6HmrOdT}xs?jfMhDrR~vjp=g)JF_R0>hC;L1t^y35D39 zif4)L`)>m%6Gl&usr1^M;X&v#3C37BI&xU@8Z*7s^@~>=F;Pk?J0M_ubQdjv@IYg z&+3E8*}w3_L_!ve)!lLn+U5j`1AxSS6SLsG|aSf33R8p{Ezyt*3Vx0D-js{Wt4uz1%i zrDX--Hh%@(Aec6#E1J_N7xE)D%;vNhIwru06M05dA>_vi#rhj>+K&O34H;@-BMn%I zamgtGkPg!glG8Rfbk#YI5c?9^ZZaMIVQZDJHjPZ9Cq9J5aV1M4F=Nx$JesENXNqWN z0sA*I|Nbq0gFId;5*|zl9eIfD+lVBaj53$D#dU3@ODFj+QGKCkj}Hi;wGYr@Q~vT& z;o9uC^FfU72?4O3l8Gq#HA{}FR9jUp3mLZz{?!Ja9<&cWS?u(cK&qz#HQtFBK>TG1<_&*>NS zx>|`HbUJxjgfzHBFwjrP&_YRA$z%bmmFaJi<>al44MYEli18|5*y~$cxC+V><|2yM z?Zp1AE|rL+8^-6aL+?qWNGF?cYP>OOrzT{czdVD~t7Jv`z;3@16bW_A=s1i6rOYEp z1^^`Ks75;x9^qFZml)>D8~p38FO1(mjUS<=cViN(%KX`AM$DrXGYj2^WcVynt(YB3 zW`Rq__L_uTyOB1!40Po??p!CGged9U#-Ju}gX4pljjokf}Su_OEx3xMSp|AEi zp3}6MeDlQtvw5o65=5+s*hw1VcW~HuIs{0|P0i>eqX#)Jc=}T-<=KU~S~9ZZ4gaQx zPpx%ger+kUrTXuN?)PoSPfNgT6XB4lFKbl4;xZr$(dPvhnmH}7q;jKh-omlF z=j248uynP4drGYo^f}BCL&lIC4>0kq$q}F|;7y+^wJE;5e@PY9u4PuXNJIag^$vi#f%|DMQL?3p33*>nnN^*& z(`g5%(=)NpZ!G?*mAVRJp+{FvYw%d#^48nDN0z<#dIqQRwv}#DV!Wx8l3=C}9C}86 z2-2^ZcJltYIfayo*&=k~7$2G*RW%)tA-(`i6p@I0cz+yj4Dwobo#jkN-M&v9?I&S( zxrNl&u|ZH;4U(e$#iNdgv8$_;6Ua5cf>?i z{*}kYxSpVFV^HYU*GceU8f2RO3)qB!BLQhr*WqzV=EBLyIAv%kO#EysRcstl=BKq* zBh1kllW^^*Fgy}hqnGy6GUOIG7e%G;tk(kn2Leu5tfM)@Xt?jS-sJRzDNN#ZatAzX zgCzLt0U+Y!f(koM3;j#;M~tTJ6uWt}{;*;;$YUuOz5EDh^pQk)2~6ttaq@otFpMFa0^LN)<&pLB+m z)c2U}UlmLrT(c_ux=LD5HPhzokyE9?nFALK7YH9q5J<X`LP7CANYXD95-%c;7hjs?Q`l2s9s8c7U>Ep-8mqD zG4uABfmLP~36hc^g(Q$1x10%uj~48I0Lyb{2cn0 zlNTdFD~QcI0z{?)F9~T(au4`gc==Bg6u0#)J$ygNGxOzRI6CCePsu#aXVGYvm2anj z8u}t)?@eV|N*!?5y}Gcx_Mq*z?+QK#Y#)NA%uZ4!&7i*bfk=h(pd)rQOpeW zVaXPEYMMu*u95}R*UuQAWAy3?d5blB0@9G5Nwh{z*d8a0djawyVpMyw{56eW57u zJ4zcChiy$oIv=xn;``~8Le_lNq;=N0pPEp-~#jT9+$u0lHI9uk>&vm zy?F8&M8x1T%2hBvC|q+y58-65+@UJ^o7gr9%4Hg+RNqqQxkNu_&Y^+J?o@Oh27YN+ z=9-XCW@M-AWU~kktOIyyM7E2YdwPh#&Q?T;!1Qbo(M`=1i(w2mDxJxb$EVW!$Zv!} zvS&Ca)j(O_Ks9d>4WM+(c^D1njUMmw+S^>9$=9NtrbljiSEp`y-W!{_$?`syrV7iv zvu|MWW^iw{66_tBx?poyqo%km?j7;#A%ppI#+K}Xni*)3BV)Lt@v78$I;2v~G&&L{ zG2fU*;;IN@v;=ag{)+evp4P8y5|~`6bw`J)L4io$Vo~x7xk;dONcJdE&NYU~{&Npt zKBrKJ(0PFN22Bi4FcSs|<#~TV0rLE4AXRl}lUEdhhNq7mSBRcXx2W)H%YmXdGQttR z1`~pz((z<*kU>TDV8`JW@}(3?=C1o)uURJfGrgUO&^_wt{~Ymc)hL@zzB*ox7;vh` zh27`}*@3JF4Ng&v=kRB5E9IfU-=EH7dNlp9-LA$g3%&)Bw!;CCe?v{!tXcp#Bg9L( z+AWxu?LwR~^|9h-fv3BMX9eQ&gogEDF>Krzo^|RE$8J@T@SM*}krsj0oAjt`rm!oy zFpKc5(t5jJc??YgGj!=05!32o#a!cAZZ{6#spJR+F8GTI$DsE^bnN*L_;<8oSlkB! z%CObAh^;}6^kdYd*gQCvIx8XxVddcqyZ@8dx98Dc(-4Ln3LTCD%6b}H+Q&U&vp6K%{j*E%Z&K5^PYed{o$XQsDyLC%+B{9nJVZ9qFme`nu=bEyz|@?MpbK$`#!ngEWD{J zT;?3Yeif*JbNMLjK&LK2?oa`}(LqHu%6UQm9CUU_uEdA|y39y^k{u<9%t;jw(e0ni zk&3LtT7ZC#J-CXBesX2ztZJI+BZTY61du8lqP@B>;jG0Fy{*rn%XGGvk5LaTOWe_I1%&dRK57y!vjnmhnIILKqE?1`3 z$88wP>R1F`X}d_W1WzCWW0iJ@G)R-h`6x7%H?!oAQ9)EjhA%vYb4RFf!O|vvD@M(~ zP@C}N6T5j=MDnzFXlgMiAK>K?DxKWVH%SO>h#2;ZD{mRRTt;*l<$Rj(7bA>feItq+ z>m1!R4!X2DCAiiCMq}rP7QH=FXCE?d}&ujOC0WqqEkDnmh3pg$J2RuNq1u^eGo3Ag^X2J75EyC z>(V{aPzvdSA3)<}+(BH8rOpT`2KF{eR;lhDVn7CO3l#VGR?esrz#qoV5LJth`{Q)@ z&o4noC)%By*2iOKUHkb}$60bABDmrR0o*lj6#F;4kI%QRtAdKW*jdcmsO+u1Vi4yen}j7@I3mYGtocw69lrah_^VXV>LX zne?QbV_-Sx#M&A{A@9B7J4a0x@5+aaM+5`FG4Q%64uLE`ZNKnaCn@A8hPu?Vit7Tu zw*jmxPP&)R2xJy=jkatQY{Zu=N_?)nm!QXeZId5oiydiH0kXkCUw(Rti`*-wl9@2H z7qCD!!OQyQxX2qWoNsY@nHUN*BHr{S z=thsgqix~@;qA&?GFqLX_G5xfx`DKB^CoOvF2NG?gx?)d5`pi?@1ROAPW867ep;eBK59VU}e;ElJ&i&c<45=kS$G{3te9xPuRj_h}%kPv+h%!N&+Ak4OHg z0eFqquMl3Z{`ifD8%Hbda=XELKHs*H7J}+jsh^P{Hx3>m80I3aF%D@daOd)pXjJZd6b_0H0u#lRTEq@9XuqsX`{s zZXO9~N#hIE)d4J$)}hqR8Q~`MQnGV>L;dI-`73X;QT#ZcESSc917vV9Bnyc)ezxg;R)_S%Do=Cz-6QlglEZUATXq;quE_W9@XYD;tPhL1%0A z%2F(ud-0mSI+h>iut(^??nCt1ieK~573G;#F87=*H$6Rnx znDQJ^Ngg*v7|~t;v~P#N?=_HA+E(z&Ss_i8m)O0m>l~ZxS$>m02~CvsrKMQ3 zKBK?THytMe_WUIw8n>xX$0sqBMy-F2u&N9Ok&e?9pz^k#7k-yPfms}l8zjoF^ZM<3 z2d!q(ooo;2Jv!7b0`3hy|Chq)P1^$NjHjJHKHt9V45~U&r2l;dpFbp0%+oxhY{G~W zsqsu>q^i?w2|cyY#iADw(xI1Q>mVB}SDJ_!!P-7*TqJTM^R?3;AIIck%`-{(ZTdK6 z<&tX9MWqI^RxU=>p+?5#R_f0w@f)}&K^D;q!kb&xZB1~}{ADhwiJ^J8qlaOTSva6G2?4PwC34dz8<%hIO zE()+Jc>MMhb^a<+vw1P{f!06{1ZqxY^67ka6x}nG?!pONYO5BbQO1-~tuf)a>QJaj z@Ka#VF~a3Do{up=zbN`tj?UOlnLdtY-QUE8bLcD7@BBMUv{w6HvmJqg~@< zo65zk@&aKxS75YRu0n| z;%rQA!-NGm8hKZU2g--qC(hXvuqV#2!Bbv;#g^beXpANV!`66SCt2c_?9a z%2ghJM%85Xw$EQrtyncAQT#Jms7HMii8(R(sQDyQ@{}x_&$&9|Q>^=#T4Hk_@|$uU zVIJ;`fc3CUF@EQ1e)THPJYYTidOG9KfC3!13D=5DEby1nmyq6=;37WtQ!N+{(cnpe=sXz&25jLgYKQWI1H%QnA1u<()ksM9j_ z$Z~z79-icq(lGEac!Q)hg_-KXi2NRJTwl?4dsuG#qlk>tx6{N#-^kbcKu#xfW6X_G zmYD>?O1DlF$*X^ildo6}FqNS!&`2++V*Hq61nLg{dYQ%cU>ZG&K-3tlbP;9Y{SQHl z4Pt1!Z-}Zy{Hg6&?Qtk_pEx9b0#z~?5&yc4rJ)xfZAkDnf+_K26UVI;6@0p_xGHfB zN?WF#2gp2eizN+e@9Scuyh>x8J`wMk0M|}K@;%po{v`aS6N>&lj!+&%PfH56nz5gC zMhWm_qrlVVFs>sKA!SO6$@Q`f^rV5nfjzC4Mg%P})-a0LR!j_#e)8|_Y8lA}uMYcb z(|w`Cm0W0lWL!=`o(vU|tJmRZnVQvTCdJ55n3zZTsyz2J$(PujrlX>itg=*Vr$z($ z(6I(l>usSeoPpSCNH4sR`Ioj#l4buGUHJ7BJBY6-z@k#=r%F7zpA~`}RV5!4dnx-f zat^~iu+Z($U10YgZCN;aF z^|{<=%RFovI;lqPoP!RK8!*J!6<0=ih){=Pkq@;?vLqP;{*LwzA_ot+t@SXk$)p2a8X7}X7ub9*a(6H~gFsACKjVCvT68f3z10KD ziwAA3*`%oPAK5)qjs|-MV?+0T9)nc`hcr_hgSS)=_}D3NE#gtysG2!{@N_*4!Y`vf z16seazMZAa@4^LKP3e${zd=7U`Y@X!vu>y)r()$Jr#wIXiwCEb$7petD8M93aA%<_OOaIz(_ z#De<@A9b;t#neF9-W#gX|K5N;(-gySgC8R!_H8kQih0kCGIc|T3ShC^^_i%UlBO`T z;Vtoeo!=UDzn0J^W&S>(zrStBf`T6aN>Q!+=Ml*!Uu@#k&zGh!DSNg&?1xvmXX}~Y zfy4Y@Jq1BS*Du;alfYpAs`uspz0B1<4 z&E&pC_~BfRJ!4jWv<9oYlf(`vaL!cNidFxXaMv>`^VMXt;qKqHhZLV~FLu?b;Nbru ziDQq%IFO-3eLgu7JGjx_>gSvG76zXHDH0r~{;MR5nqrZum+F?zBVW0oyMx;-Ia0sN zet?XR8s&w0dkc!M?$${FpBk;ctY>s5dE`vU;Hc9QkGnjiV@?NLjS{vG!+BpCXT)?; zx5WyBOwNY)8d*qH{L9{#i-!b9m02#tm>)8664*MVA}39%4k@4S!cG;GX54Zm0 zN=xnG@U5ix8R!u}@~o8)1z_(9LF&9F``tv=e&hR)o=>`|!MZvnY&9hO5Hiu0ey4I7 z!YD30(@s}ATF81YjYXC~!N5v(H00JXYLBZ%<7R@+WIZPVi5a9zBXYcLfgCdTXxMPa z$rTf5LZWgra%I|D*B5c+snMIKa;Q%LRI zet!W4vTZ%8N97P~nR(;2ToJx+4B<+x3Q7<4ggw^G#uqm-b~;azwZ>%ehk5}>bzu~W z6I9R^N_PP=?2Z%jdqnI|Y++0eoP}T{lF` zWxQI7QXEyqlL{v#P~+IaF8zV)M&~vAYN)+r#FaHe%B2VWr`WpYj6}X+Vq#>ko}i*o zlXXjKJSmFO&|q2o6GHyA_}xH=G33A@YbmRAxiH29rb{5}BS)=ON;F}gFHE$!py0`@mMV>!hQs&+ca$m9 z2!WVwVH!ixW_+g_$oj{|DMKqqNuFtfXag!nVQcr`vwkT$V$HEs3F#|<3(dJ6bh0+? zusTdecNE%xnw8l9G+hhfN1J^+ZP*WgM4!fCi-E!jqT^zgA*ph#+y%dW05tll+98>A z6}?;RbEPoTfT3sB(Z$1i6KgwwX`;c-T`FnmBKVijW1h~&daPh`rY&Ug%iC0vTC8h| z-pjVxUXl2;Ys>NT7t;-bCxi}jrYBX zI1HZaPS{io)gKfN-${X-Fae4tl3%F%MJ;b!fL?0a?C~j>8xZw^FO%7sli(G%Ub^Yi0l$jj{HkPe7* z%am||sSbW6YkqUY+gbe-2j0uq1%s|9x38}2s?@7SwGC%_8_WL*z!b+Nl;Ob4V)Bgx zFByF_W^kcuw(h*lBzy;+tq@vRbbB=__`a zEKrR!gOAZ)L1#3AfFa)7G}?`(xwzmUU5Ywc&GkK?H+>AZ{YGDPD4ljufhaDZ1LJ&d z(m1?n@&PeRBjjjk_yg8oQ@nuJU_Vn*x4^&Z2_!5I^q5t1f#Sq-QSRBq*1wnNdaWmF3X zp3k+gK&UrdD2Qmif&hct<4lm#Xx4-fqm7>qXvfq~qn-E?-sF68ddcHX5j~RP+yFuK zo(-co60H>RSA)2+kG!(X|7AdYnHTJs{MDe;t-NE?ll;(ir42PUCNHvK<^TV_7%a?m&bQzKc01ar6+iNS@~rh>MdNr%Bs}{=1>ZiIJr7zm zCLEdGwb8ku+zv+s`K75n?Q>wIw(2kYaBAfv)t~w$eb`DbIaT+IN5Tl9sOJ5=1_c!K)&MZj0v=`@59EGKD5HHCt-Op75x0Ki_z zTG)>2tR#_X`V$>ey&oLoY{TFQ2(_*h;<*!f46k9AmO4C-xv)ZEwiu3$xn3NgL^J_= zF7*>=?V5?pI(AD^ip`T{wPcsDQ%al=$vvxyD`dQSdzpcre`<^*c?*PS#IJ?_`@1 zN&qICKEfzP&F#-%Hh%>cP@GW&c{U0OphXB7$@nRP$Xwzi?Q0pWFi0OM zh%w>|{ytU|rfw*LbNuX9GS?*ONRp};Pz}@`_6_+vnMVX{8wl$b|ExD76bTwX z*U<&ps1bxeI1}Ka0}%RstQrrFd6@anqRsTh0S+sbGhAw!zYDGmAP|3cab!A$7V-vsf__tMZxJ&V_}sUCluw92aeivl zjcPQ798F^1M&I(35Q=3Ggx~4gLaQBQ?O>SYXf%poq8DMNkDTE4lLg`#i|v{{!~Nrb zA&gq?EkOV=LO$Di;!A*faFk~Q+TlnGF;z2`pobH~2I{jO2)UHvn^Fu*F>4uDw1r5>r`-C!>qSsRhd_2BJ>2leOA zJ%TT&k*@RZyQgfW-td7GKk_&id_a`GxH>hNruNR(%Ej1FZVSG>DY!Bt;gc(;>w7sF z`LC!+u8Z8HHaWDl^FPUh+6dRNlrUjXj?oiyzytOM6rp_CMq_Vde|TmZTFs5^S;W%%bRp!h3pUA?2~uk#=I^4g%?4 zKab8ZqVUD05<~}H0rUedY(s+~&S@`a!pd8fW~lf7rl8>vM=|#J@;!!Tp_9HZomT_g z7l+Srd!!OkB_^L=vCoC%5!Fm$S;A0P_yu@j>2LR(nMR=g6rK2OKIYcVx!s`H18S z&j~{byL|Q|vmZ*z*oilXg1(cI@e^_ZY2U?BTbGd~>-M&S*oT-hA44RmWG+EK#hcp! z!13GwwTBhF=5{nuW`qJPHMmjdYT2j2`4z;vSwGaV7f94S9_~qFlc`VrUwOXjji?KW zZi9YbRp~5@lvXK26><)w5gW%S%iN%!6_EILOghndVt-O?c;}M-So4iAU($a1X~wpI=L&zv5ZQB<|fe92c^SDF?pIKn^G$EG!OtUF(-@k zEun1LEDMT(FIUQQl(Iu4_t$~o%NfQ~Lf&exa+=U|ko5`^;WHR4@{RrLIpDC^}fMc6V zyJVYz7w$imLXvxJ4xD5cfMENwD{s4kJu zUxdNwG`G=6EV4ZS@HxM(qP8*sSh|`=aC>{2JbGa!qlJi=>Na4BBhnmK_K@FWMFDWk zq#-WZsg(t*$<{EpZ8bIPx3%FAr+9x~nnWI>%eo3v2&x=Ps|?b;vrZ@{C$5I_f{GD) z3`(AW^nQi_?Vmhh$zCBE`c-e`jU)N?MJu#~T0vP%^(XGhxw-HJs>hU6A?w;d$7ZJa z-fvkNf1r8rmy+_7RukGGqs!nPoh;cM;N4aIpJgBYysv~H;fwOH*vV6Hk@8wN?hwXZ zk}%Oh(sFFLiBgD@0RaytpW)*-1Zy%8e+~ndWGqy{mYmtxm)+oYjkpQG=0|LI!eGs3+R51WBNxM}vf1(lljeHBU0V2455fcbcCf=HSMS_3R` zx-doO6k-cKY8@0vif}g0;=UGaUc4ww>y%Gk@1OC;seZV6=6E3Yn1mk%Aj;NN;4qKO zdF+hD;!v{spU_77J>qUEt}sx3Ucb3%qoW&gCzfu)v=%g*OR%6%crvu&RM0ye)s)_` znqV_f!+h#ougqFbTBUW>nWA6i>Cc{DFqTm&{^_B*;hI2MxJY-|EyRN0TFi{5i(&4L zp+n;LB$O=hK!DNn9_ERB_k5!X#ovLhZpV47EiyD#TadEoKLvcZ5yJj9*zqU#IJk6@ zZ@NC%sfwSLe~(nl`w>pQnBNz?xtm2vjXYwiZz6U5FbuG>=U53{^ynuYE(4vr)h^wM zZj#{BVSAmJ#CgzQ_*MFYl^F@3X#Co}sKwNEn!fX$Fq^KVAIEl==*`oES8q?%XQGlz%_2&yn9nT8HlW||6qbWZ49_v*>=Q8D9 z2d)$*PaA4&BfW0K%kd)@1}visfTDwMOQ|f zElJwG3h1*~v+iw*CKOg0HU#KvZ z6hbD;wJf*P1L+k2YS!KRJ_FE!}aL^F{~1Jz`Kp z*fRo@g6{pfrQMn8U0an1hB|RyoOl)&LqVjB7H?LRGoQ`PISdPIbBpngGJ)2^QHT!t zl{mpwEHf9O2XfADJM%2zceYpo81;Xr&vx!jf}5WE!UzgOSCy+`sZNNqw*=d3Mi5{^ z*K}gEox26u<>5qA&O>5tEBK>Fk5|@qQk!b`dX1$F9 zhb?B&7R+2xEq*23rf6+x2@`Yvv)oLEq=wkJT=L^eRpWEPT;elR5LC1jM1DdzU{x&4 zTF@eMLM%p&FI7FwFeL3ls}R~g_AR(n3)0@4;sDm+suzO|X=f6fCCbjX%wQ>0)HSjq z5q&zch<07)6PPcS|7sz0)BDgeTx|d!l)qexH(|{yP)S9I!^WvV(y=J7^#r=>pl#-V zgjC(`xAsIPLN1u)Zld&iIx zh|c`t$E=LcHo|&W;+ZxD@=di!>clU;K6E!BmRc?SkL54+x!?5;?dy9`cN#bpxGZ=a zI!dP`h&9|BDH2B~HZqMOsoQ;H4ObaBI}61ucPvYHf51%?mBlFRnCH`iatD9HuJ%*J zQ93R-e*bp3p(mlVBd=9)y)4=@G@saylhUKOcJRsNkYNFtz@UMoA}YWU#?VB&bQxQB z+-;fMo2+#AjeV?dWg?1=g}_2-VIxq%$|wfeiGiWYG3w@zZ zTKJ>3ENJS)HDTizg>a8Vgu^Y*{zN!Vu>i=5s|iwbas2N38AE!ue{x?!5lWXV^?3*a zf7XEbB67-fbuRRy>a68o;b^*G9WfQN|vkg zXV$1x{z@be4n|1PRovRM6lt^VtQv5^=Y}r$yp>ge0f;?$eT<_p@{E-&7*6mFz?H~b zKaOeup7!1L-Ji1@4J`&5T?m_ygrcPNI(S^4!vc;#O-^_vK1S1Fj+_ssc7v_%&BAQ* z->p1#B&iL{rNTVG#VXAbecsmlu8nO51=ESIO`u8zswOGiq(JIv8*RB!ipC$GdXWNV ztY<5i>LybHj@Kc*k69R7Z>;{sn3@Qk8$M)7nJMwBb7vUR8>#>i6hn21ZEqt+?6eAK z0@m5_n<@JWu)Uicq7^%s#&v=$JLsThddP=;{ULIEyP|K_+6SCKp6^s4s7-gNK(Xn6 zu!FY_XI#o7HwHo4s3m*3E?juO;94z~T{d?Y_6EADb%Gi!Z| z{E9c9>a@KY&pYDJdaMKA(P(RUjj)m0ow+CNB0J`K#d3ky6yyJ8HTj=Q4xf~4$PQV)4IS7RE-e5;M7(SH5M&!KBx|HB_(Lx0JHxj z&D2wl?!xDbJ-&&wHzIf>%HN(!=34pjZ+td`Q*mXj4bM|ipz2%kKrpIJO`hI@Ia%j1 zA;E&q_}aaGc@q?!C7gn01ZixNY03PAo@4komATI+=YT&_`A48K<53AU>Q4iT>Nvo0 z27)!H!4-$9id+kCq8tg8+=M(iCqpx5wA6eR+aeg+J`+`o`N4$+ax5)C|DHEj?**=` z{q2*)hag1d2JMel?x6K;HH3v{T4geirQFi|$>5)o3)xm$nlQRW_k-kgH-hF=Rj{#n ztSQCpS;<>P^oO6i=rA+0u{~QgAoj3Uk&g)AKng6tVWkZ3>DrRr=#|@i#XkwX*;M|i zU#sk`tu*9=3B08petTi++!oh8j`ME0hQ>Gzb2)u?7eps4W?}t2(V+e1|TkN4*R|_sOelV zh~U^8?MoudxY<;XdJ28T0W!))>};4;P4Jn%di?yBRTMq9En{bwl6>V$7K;rr($wc~ zQx6?{8F=Q|U_bu#6$sKNO70BQ)G+agvHf$9842C3)7&Il30jr{bf6oPT&e6*L(YLXbb36X}D1N{P)KOO>~+1D)i{0(vSnKl0o^g zDT(=L>xFchHy#*BogYdrJFm!k(P#q5?Wr>G2_AW^h1XTz^qB|*!_Zw7g1a^4k3MH5 z4dB@N=${NVr45uR*s$|ZZrduGC<#Jhxrh2N9R-7owVas5Q2^b~V<^JPwNhD+F9R+B z#Xls)Fxsl&l_F(_*ZysGmm7cKTe;VYSLdJe!-xnm;%vP%*S}goD8oHsSC&rTe_p4G zQ6_-kSO#S)v)`9l%N`7qi)y2L>@ZnyAg$%?q3Ml?YAF&CO}s#?V;@Fp6?4I8onVYc z%*HEI zR2V{vvw}>~s~I8uPn;ep+?QphEA$91=nbghh)cx&S}_fNon@qF8`|=(@I#b(M6=Sz zMNY~B9re$0G*&Y_enaUQ_U>34W8vM*O$X{1)%(ZgO#^Tpc%9ohT5&A2#xQaFymS5;O@64$av_oh!{^;5e+|WyB!RCOn%SrA9Xjmk zP_6SJ8Ne`*2x3oQSJ;m~F#^TUtP*EeH^HzbrH#@zg);v+*z}Vejq>`s0CTDi>@n8i zJ_{(F~RYB(Jm^9A%$`uO(iRXP`d?o_P07zhXi`!sayko}FPD3lCszNb1f934|}eVF%zh z0On-0vA|DmAk3lC(S)PW?%RbaeIPfsaS4!4!rEwUVRb%TZuz9?kFLu{7zj5lq*tmT zj`>? zWPh@wDs6{n9Q)Z<+5o>epA1}Q8dwyOjh0QM#1}sybA17-Q3p7dqi029`#a(JEbJxZ zzd@ohX>K13kCF%Fy0GHNn*n%GTSY_L3m!xuNImvKT=!+5It{O<1lj?kHUnZC5=5ye z9ZDAXANuY$yy)m>J8*KXJ$QT>W%9fGPw1rzm0P=228j$Z=2!?u?>+!grnN;-Pbl7y zQ$C4O-$wnt^XL)_6jOGa)3#QsvRtYHaT zxX_^@?No<+3Q>a@{!enGo-rn1-al&&ipWzq&Z8rAHI_|!Zg&nN?iHC@P&m$On)BOo zy8PH=ne#HcPyup-C0vcK__kejw%kiTRpb-A%=CrOf00K)M4nA@wl3i`v|rPT)utV_ zbqThi$0i*1)ZEfnvNZFhOHUGM&OUH5GZ0C-HGGzXp3~N~-Zlm{3!3{ql zc-v!2==GlA!UjdxElMP8rohT0XYa-s^`fH6|+#;=oi2+-E&dSU|@SE{8h@F z0WvVmVwV)G*r9#~Qe*_WUJuC}R#_VYNJz({f9F1oO@I{fIj5HP&Anc;3mep6C>31+;>uu#h)vc<`91y~)Z_o>>B@*z zF+3uXJ-8WD3K3W&Z<$=|L&l^elO1EGetdRcOOG&vg_6xH3<@c^XO95mym-VBz;?eB z46J}JTSKaVi2OBmzB(IbP{ECM^<>ct0)fwv9n?zC&WGLveai~mUI_u|5HTFD9Cj*% z5Bn=JxHuT_cWbCZJUUvZ@16s}zugaX>B}6O_~XDAjmm%fYMn<@IC8zeh_nAQKXl3& zJXHVZ{DEWrWDUldF&Sod%t36Y0Y0N=A5iZ~peurrq1{&PgLF+UKsjbd$)+Zpz(X`} z%H)ErK4||9GMQ$Z9s&1x*4mH9z&I?u*3uF|sm;dRP6es%Vny-um7`)8}+sbbm{pr_tj*>B8Y z1w?ZC<*DqJvD+*91iy51i^V5k7$&rL^XbpKjp!@mq*4ODMU4Al`UW$a3;}Rmd0g>n z{doHLtLWbv>R}CO3v%trW!&~?l~d}U%uSrN&ex}+uxBI?H9<~b%VQt?`m`&bFFEQ0 zT%3`ZXv&blnk|QTUcYNov8hL(=S4d@B%ReRj@UV_R2XB2zDbyA;~K5L$T%jsKyoJj z8fPj3`^z27(4hep9g;<|BzhBd$m$nT_Td|RQqV?_wUfPr?R|74H1(NG3lq8>B%xVx zi{3_^B)79rMl8%4`PML3`=mUU<8dxKB!jz|0ud++r0z!%oU|<>Ciuq`dR%dIwT71yarym zqW`PJWTMD=vx-V!Yrxp+I3S$GL@+XmX_rw3ak2~A#5Mg=0XR&sqpv^)@6KEWhscN>b! zTZ9M2dC@8w5=#>rtzT7ERK+GoY@_JyEM!cVS<_~ zY=e#q;1iEaut&__?!eN9WIw2SF9`z}agvQIXt16h=SeqU#vgnGYKEQi+TCl(xXG^C z5BQo@{*(Ceom<9%@OnMOT4JM!TR5b{u*rkDts}@Oo0-OO34F@ zb-Ib$4YYC4G+IpL)w#E*To5ZnNGUeYI=2`Yd6W{l>+2Ido^nvwO(93uS7-wS8ZcJC zHAcfZ)yMhlcj+p$k1ei~n?B3SS7gTL87C18q&a!UDqPeXVE_gxe@A}#@p4Nf;=d4a z(M*O)}6by4(-s=(yLOE#yxx_(jb& zDX*5!6!ljw%9&G4Wi~GBEcBkI^x4#lu;mqOZ-itZmJ<4(l8G=$hmKS?_EeJrbpI5f zP$)9HT{LH#05WqeMs0JKltM{RdF}O_$%7%F#k4bfLRz<^SQLm==Pk@C&T6S&Gx{YN zDu{L|l8s^;^;tz*n#7xG8GiEQtF-#AF1mF&T$ZN{Z7|#&<8DdTdkFW+YLW{$o%1{S z2UyZKx5oJepUz_JwvBv@E^>x0ygQ8k$Mc~h@W*OKsLt!@+S!l_UkI)QLfxuiKhPlB z%FnXh_26a^*Eii`utW%BNdI+O${=UX zH(K%4lw~-bq$&ve6%r1iFnK-;+(_^37e;8CiR+iyZ zVQi);DTHOeqs$Jk8WF(HFRHW*Fkl`76(->#qP5z;lp(S>mRX#Q-c71P^f@P5~&3i|KrcESKxBrVbv7xsUxT3|T!R1@n`uQnjX6 zX8U3$Y^+o0EGz(BhC)tgOaN+@Jqz8Sw`ij=8rS(kaM$m{8@DjP9-eE(+d~)J)CDYy zv#BZ7%Sny^;@Zc=s#a+D=QO?t+XZ34A?CozdXg3{V2Bog!ZulD`0GWhc*B8L{uA+^ zZV(|+!5|ftWwSdqGjPT7g;f*Bt3pFHesu+nFDXXpz=0+lstD#qBmzn(6>SeKU}O3N2#C5DU}g# zn15xIQ)iKceN(*T4=rKIkS2|)?<)61{iH{&%nZ6iyM>4uiRw4^ZgSlh&dz26$}-dX zP7ZM20Vy%E-O*hFso!fUWq5pRO`epaZ_`Koty`>tkkltlwh_x_+vsWv_z#5&`qnT> zbXhbH8%I?<<{8&MrBo`hL5(!6KFsP;1&Z6oXpaluBT#_i9HoG1sT%v^DoVduNP=8p zYuQ$@xkU`0zzASWw3En~_g|`?WK%f19JYzu&C8jm``lv>6`QA;^npW4*<{mXm?SzT zYrh&!@UPap?V;_z30JAO#INCB^DnNXWKJ_G=U-mfF#?dEob`U4tgi?G2sPHSP1|yfXz&p;L zlSM^MIc9halEGIFayh9#iXJU$(b9dUER54=3Al`b z08f%T9ciCIKIZRV1M-w-oj#>8q2+9XA3e3(sy|S3drgXu0PkjcZmj9&MLq4^$riJI zl3|EJ0p0-!Qa24GY4fMXW=OZNX*0wjQ<;&Q*5A;$Bn%259vQ;jK%y3CRKIf7#td&+px+u%V5hKO z2pO`c>Mj7cUoC%B=BmHrH;u2%{3-a>Vy&YQJg1ZstKuK3l4jYZc=-v%?HQ(IYB5LfmELI;fS(~&ul))+$97UUTXg@+4p#1yYy&+ za%tiZBSq)_)|Tp7a~UnJB32WzX4yxjOk&T8H?hjWgAI^wS}N+jUaD|{r3xYNK^3E^ zZs}(64KD*>2G+9K4R~mOU?aSP3!Cv{$URor$!nuSUT#(PsM!P=;F0HpkHBj{QPIk* zHpf%+dBg^PT33@w9a3m?39UUex9NWxrmw@_Z1S80DRa!>U^@iK_TA_1m7&^Dy{vEV zmbERh6tW`LP}#=+I^3LzhmLjyTz>?sv#P8We<(9kB2j4WNl(sP!v`18cR|GpP&Cnp zPk_e9XSV&t7(((*Mj%z{``AG#3Kb0}YIy0Zret&^bB|r1e%-msZ8=RYo>l`KC7NR1|19^OYK&!WxG>3RJ;30ZDSd0>#D4NIW=IUV z1W0Ki#87U&X|E-G-c?r}YE{Tj_7Avpj9IIb1be<6O7rd>Eo2)DBo_gsin5J+=zAQ( z_D18ea@?f4OwvT)kXaSa10*t&hQmLd3}kvTIKm{q;jxL)NZZ`vJ& zj}&Iyk%4>+d-9w?yc>&{ACJo>gqFk3)wkrQW_my`B@Z8*yfMIDJ)AEebE|OlY`t(} z;M!$Xg69Y73Cw~GW~lE`8=p)gFKIymX}v1n7t+jj7F zFpBc8>X=x))Lc;*`Z}Hy^?73zy;G&yft{;{M-H;&mI}2$=eZ+a=vFj*%dIieZ4=Yg zxrDeMor51y%eHXwE_pkwJ>@3=0qD-Sj3@n1q@X^3_4ey-OMU&E9FtMO4*KtDyl!aC zX7JV-5w5_ZM>!Hwkr*j1rur$92LP=xq*f0SawWR zvbF}Hy)LqajGF3I&)vN| zReOWu;Xxh8HI-x{;x$-R7$J4w9-M92Z*(bhn}uF$v%>V6r*Lw5{sr7q&vAl(=n~0M zLB#d#&#y-Fd^mDktMTU6yB4P~^je|Yva(R!0|${`Z;Ih)iZSSg>qwi;<4fQBn)Xlb zQIx2~7AhzXUI~}u9y6TciGJ&AJKaV}`QDJcsRaZ(r`NJZYG}XJA&JNoD4chc?^5s= z_|@$Q8hSAS-tx~_$&%0wunpXGrOr88w}SqSp^@`215|hdKyAa9<>7Z2PUej8pJXSwD@OZZ1w*7Q@_ORdNsd6DhXE)aJs{C60@*S zvwbry0rOnvd3TUDSGHw5IF!p2+xY5R>$~sryC}`Xwj#+!&DCeV8bX$X4+Q=FeRSANI7U(?g9fd7KDPKB--Ne^xmV#~@P(*w=)ba(85{uUGUu%B+ z9$!E;uI*wkU_3>&rEdbj;_3>f2VVVPaJ4Z`=JMy6Z+8To5Lq$0+j&Qq(;(YZtY}Wq zEdW^1`+NblV6wQ*YbYLYK?TC30Tvdx{S$pS8EFk@nQxjc>(8pT1~u%PFv5Ph}zm zR;o0^dR&^hPg9S2m4lL_s?9)ag?%zNi-syNqK=>!DUfvuk>cL+@7V<+zR-?vl70!^ zgZI~@qj7XU1DJc{ST0yU6BlsR715+1eVt!uV#W*6|3n$ed-?$aPXD({4@xhXRVUgV zVEHGHtjl4T~p-^ByvX%q#gX=s|$o2eG2s(jQ$DSeybZ0hId*`t|Tv{A|dC}GQRvFQA z)u{r=I}3=1g^q)qxyy5t+=& ztX@;7=O}jaaxkXuuqKBRr)-BCiz{{awB4r!TjDr0JI>r|gM+Dts{#U~K8}47tnR-Z z>YWF?{pEZe3L^`UCoZ z<;wXvZzI37_|=@$0VZFHJFmV4{Dc**p3WZfYTwH8@9GcANZ1fO1xVe`rTX3CeIyS0 zRbp&nn(Ympp7YDx;1?cWFcId4@I6sPM6Y?7AhE{UqeLT2b#da5jH`q%Udy(|h9nD{ zR(|9JR`>gAAZ}9cuO?!8n!ARma!S^J^gvn@CX0TNh0HdQvzZWqhRKc!++lL2`AhS< z(9cwHcqbA3Nq0LrE->0htn^s@vj~CsX}N+(FIJjAg5~+`aY!QCchU*ZCsmgm;|2ozPw$58IU55au$5T9PiQsW@jfRcvi zWD~T0pv%J;tQ@BQ{hx*17oj_z`GJ%6sBZRlDC9zP^Y*4J(BrZg(konq=T-o$ejJqO z;x7~@b?ZZ2;eNX`nD?`<^J{?&R8xRd_-$AT8N{lJ{g&Id!*QT4aRPA#d-?bu+Nk;% zKe)`m{fqJG-ZgQGIs&TJ)}87BW1eNCLe0pi&;`lug!G(yf^d=AGI|GJYu-X8#UuY= zIsA)J!zs$RsX7$oE{tgg4RsrIim9ej#!A8ctN!`_$pCTqge+ zDrFv$E0&qc5H}4TdySrBLP3KcLd%eM6VkZfAfjTD&5$TX^NclIcWah`K5Z84^_wAz z1X93q;bP7xr|dgIu?$}AwQjO6*eU5Ni8|_?vWAz*wyGpbN`shSbfVWiVWW>>7chFX zzyMK92*a~1?*QGSS4IRbonWW*o++I9w9hdMi=(Px_pjIY=)!_i0E3y70I!fCpmL-O zxK?NCaoLBfQ(&%(;+ekpRxp*uq?AxLi_j^mKtO~V4$0c2+m}5e$yWyOq(@mqWDEil%SjQ~#oE^{Va9?%x#<7OhT6Q77r9qe!y2S zxrrxe(Elluf7^MJS>SO7XpPeJ!m7jLrx8rp>9Yya8?|PWpFYvYoKLj|=jRKhyOcfe z>k3Y>rpr6^klqCci2g{R&OBpPiX&p=N=)Mxd1R^$HPnf5@S?#Xz6-X@yiW&fgM(zq zdN3?u>}uA8@PEE#i3B}a5(SK~Q@RkO~zg z|4JXlm8(i$IyF!XHJnRL7Yvsyb(8DW*y)ABQq)T(6q5BPn^bxg&Hk>=HBXEstF2lL zO2n=lvA&(8ZGwi<8+i(ny^lH*E6+{DC4oS4bFsbt#ne@nSwc!HIw@p zN}*QMIS1ov$t{-5F^)5k1M*tTzOH7@49_wIr|09#>X5irpsw5&HUZI;lHHyEbQk}I z{ryGM^rxL|rbizSeY6x2}2`P>1tIUt(hSTlF6HPQGPuJt&cI!A|}3 zX|yu|%?(@=vxVATJw--lZY~bl{2*zRQYW`N7sNWC00SpZ>NHdP(&gfx0GWj(n+H!k z11wqh8@xfAFHpo`I!k%wd)X8Z$7CLMAo59^i|R~KqUj1$|A~uf^rBiGLEf9ZUZqG^l)kte6Tm$_7={7#}`iM2+u@NfF5lRV1OCQYAZDX6;U?<%bswPh4fg4 zH;|L=4uTkob3sNj?%@;nXlmO1s~8O7cGV08iPm#lmcmZI;J0H@j5bGt-I;Q&CsQEmvCkNyK1mu;?YFE@GEcf3O$X zWwS|y0qVCJJwnp+Ry`bx*lTBBToS((0+FCb|FD9m)T2E_3h9A`(HffUnur%#Ehg z+pOD!YImZ46_ZsAx5}YPivjY*VyLi$L(KkvlbkPgftY_^a4 z%kWYvZ0q^NO$pHteR>md?`MM6U2(97|CUYQZ*qJz=1AL|Pfj#!3!`SMkwfMibAGa) zQ<7*c!@7`3dWuh!2DI;%u66BY-F*?rb1(E%_QrpkP>WS>0!?+C;!K@zsa4GQx6-++ z+^5X9_E2ZDR;eP)C-m}7wnM`l7J@{QH=NAK9>_MLjAfE*oCs?5c(?hiA{EqjVbe`d)kG>2@O~WKSvB|v z1;CYvkfLhSJ%d#kPqtr|5a-yM#lz=uwrYw9e? zBwhX&``1xs|D84?6fPriefb6)QR~YCk4$1ZSAtDvyzmT9*47(0ZbG{xAtYw{c%h`f zFMH`MvO0{qz%_M73x&j-S8*U>4tj_N2VXQUd+m*uWuJk`EndQUa$Zo!Kz(K229VUN zOk>kfP$+3Y2p!?QVW!iUe-P12*WaWY%yXuS3+tv@vi*ru)mdfhnW1CX2A8aYwbWpf zibY|NorttVY3$d80!>QTJ#o|QoO_TK-iiUF=0T62cHU72<^T4GRa(-y3`YfjzY+wZ zNCP)?pM?(B@9+VtsXZuS(qj81oMh-jnqj1nIAgxomty)J#5ND7{8u{RRsPbiTjY%> z*Yx=%xC7?(2!Znl@tV#qYd-Qh+W1Lfi*)Xw2u)NL(B(5cLwxCf^hX%&)$4~Zf=ry@ zEYlT6q8-|dNnUcr9r!fOYhy12!!%;3ZbgGQoxOxJ6V~lr_nC@W%>YNXbCE7=l=ml> zF$&pFqgIr89~`E~Awqk7T&KNA_ddViOYX7ziB5BY>CT_MRk%ic5^4)Er_>A=wQKxT zmUBAF(cQ|D;abjpiR`f8|H~;&iZ=f+>?^AxzmDL!R?=j*8V9Fg?tlX*BH%yU@#t>u z0m!O%80X!9j8Z?bx1#UH=<@p^#rTA*GWt*4^=#uUI(n$O%kCYr7jP68v4F*S1veLZ zP%N!O3-$@n^wE)aLLMMFZ|Aq1BVG0gveZ&o zH0e*(NbzW9Nm?u$m0d?)0%b#w-6s*mh_)I*r-zB2X`*B4f!l&o5<0+Kf@gE%k*5wH zINUTSy>G6;cul!PDc)R7n`_(i@p`A@D$=MvvMlq0$;%y!|G$k=ZBITBrKLfh!d9}e zN)0h{*)HDtvb{gphu%A`5DB0*e?uD7nj%Y)-T$usH^9B9b0msf?lTk-!$a}j`3!WP zxA`X5MVQ$gmE4|traP9I?JIrkc}IkqNqscww^wBRe>4{vw!6y4j>exqFZ*AsrN5|Y z)$Et-ugWD)CSz_uK;{=MDp(jfGC?ox5UiWw0{wIDADg%=?)V!fiDB!}F3miHVQuWT z@_(k3{D!fcc=;oUkFljF)t{eQoeJ&?o)>>m&Tu7+)mc9Fj}$5e<$XW6fKoria^ab% z^%oD4X>06tslJGgPVRDu@*s;|7fh5#Q56i`IWhrZ8Bb1n97;UP_8gMu& zOx(-a!`j_UYw`wh$rB>{VP#n#=h&~_Tv3wR34I=_)6~wv|^n1ZP&GDYKOQO6v;6r+zAt-XC`SO-okIPbh zk-=Z`lw%xh0CqhZ^nTIDa*j?#@~lqbTY54&R}#=9HPsa+RYaDwRJ2oX6>#mD#!)}& z9S@-+W@MmADysJTS!*<`zpdrh**8OZS5ck9_bYSbNd(#tKHTY>QkjdCKP#(IP4y8| z?O}pd_Zj6w;Kn5EP>L}(rcwMZ4Y#CP-&#vZ)6Zh(p_TBG&6ROZN3 z>J!6bW}Vk2 zbuFQ~UVPR)=8t6q!QwOhKgX_yKte6P)+~!RE%-;%*0}S+dRRK`2_H=C$Sks4wybT- z7rgWst!!{RWdqo+!-+SF$;M(y8tMgeAd1_h7|6ok;9-W`ldE^1$wEV=b(Xc+msk%dF2WW| z!BKutJdn3srZ8uaR8z{wiY>i9eQ80Zz= z$$H&;=4$hKikyx8sFBc94$_?Xcw!x3(0d-nq}7w~_kL7v`*0;^HhAaH*9OdYN~En# zQ+8--)cy|+fvs<%#gyeK31IvPCV>My%%J&uXu}dCl9T`5WHt;-#*XkiVW}>uwLg2* z558L;Yu8K%w19QML%AW`kE;RGb0(Oa-Ud`{Sp@+tx%oEplwkpfJmr0W4Y9F#Te%n^ z577u%zMBf`mhKp=v9=1;%U3Cop$c-^EB5~bSf|TBw0iqHXzxn;95s5cWw`2l(ciA? zHdv^a!yi7pQY3Lm0eJ6ik`x40R^OSj!G2)WO5}=@;#RgAsX5f$wWM@~P(@fsjC3?V?mf98vt{! zmr=8oI4RQxH|wgvGj$HB$iCE668?3V3tEqz8o}E8@Xp@C*$}7c2{~Zl93IGJ zBkD3584kdA`CcL@%%rP6cU}W6!a>qj$@uIWsFrNR!WYj|_=0FbCdgUdxY3n28aA1+ zlNXKGu&H5u=%`WfNBjUIFgSn&mvQc=N98uL*CBFj@x1_@c+Q~8VMFKl$4{k(r24gj zz@KJ@fQ)G{GIP(isX&O=44#_}|nz5%t{m=|+8npSJsmF0Beq0OBPNSowkZ?EDEWYG@Lq+(4p z$BxB(gH?Tvs#)58T(!k@-9x7f`G$hM+wb`EyXWnmW0O5rTR3URTLk7KlmTI33G)Cp zZfD+mzgw2|0L-+7qD{c`n_VVWXuE64^!N_4|&0>Js_Ab=xNNV`Yai9>TjJ(MKNv+Xx6dr>rdoVEKCA^>qvDRdo@1 zmcr8W=$%AQ;jO3%tK2ce(imSv(3+vHy-AF$Bo+M=V{6gw(}?Me%x^?>cFvHd5OAkb zlmZLadwIbL4{(-9N5bojWR6$p={i&qPvFeXUdxrk7WvaA#%K+w@SXKRFNTX!wO}Wy zDS?Fq2&y&wV}h!{u~m&P-RwH0E)%N$Fy-5KiELUPlxkc(eiz3?a-13u_*@-mYYW{K ztzL%q$oNm3A~DT&1uck;Pacg)Eb(({G9&Ct#BS9PB1SNN$Rqa}6}8l%o2~@O>j5Vo z>a!qS)Mw*;)R$mojPg@$^sSb-MN~&eUjrUa8a=HaPz;VbNm)5~xJeMD(iYLQqR^C? z;5mq;B3HQm2x1o_7DLE7r0AwDL#W77^<{wBdk6>l710IA1Kp|;Ze1J)cWILf`)vgJ zhxm|~KDxC$&-Q6vTtOYK_{p95}%vXVXSy(ZS+7VP-gE8g(*t3IkFn3bAca`O*< zA(|p!x;h)OSLywh&zYZ2QlgTd@=}-foWr^~5$sW!R=2)QG83-sb(un{Be2OtqNrP5 zRe<}$XOZ^kd?+z6Zac6+7JQm|YM-;=Nt6Ec&1UCPFoY!BrN8XMQL0uqb2G6z5PO3M ziNUnWn(u0RZj!?Zux6#)PA0`;MkBsO55ADh4Q8f5LwsZZWIWfL<6T(baTu$Ug3k7y zU+E6lwDzJyk);T7J`IaUO$B}CtrUCw{jXdo$q0C&JnqHA3czog?)n&|gL~x%Ec$ORdq=n$Qa+9%7ssA%a67bJogjnDVn_&d?yyAr{I9?ru5~>m)#9KKld9V zSvt=#(|=hnt?`F{&W@4o2DH>~0`=(5+4lwO0E0|PDfi^>trcv&y2DE1Mfv8xl=W%5 z`noQKXH7M^1`37!Ta}a_yuWkbgms z%?!vgL}D-5k(7}aYNkxg@Q}eE_`pd5sW*%af!Pf*5^|GBHo`?UnK-+Mm)liL=(iv- zsgAw6;3?j^xDiA|@KPzTYp)J(5G~!AK6;~Q;Bfh2JKpsd*>#DAuAtr=O4%(o+k?u; zKuHx!!OTi@imTM2*?*`S*e&uD&=cC-W<17APxH)VF$n6J^qUlYLA4Q-4~^2!szD1F zvkQM-Y26YPslNTcS5X9;wA^GH6F3&DG!fO$b`WjUv0Z3Jp9ppUy-ch>>th)SOHr z62>tDg;={RHpos&GuB17G8gxkK zR_|Plrn{~RnVB-Ka}CA`7WS>DU=`f`3a*tc1P)*Vx3*ObTpeTaIHz&Q&GKSQ->YA1 z9=DRR`S3j$?I#O^*ww=zscCo; zZEj}3%llAHFctbky_oQNFGQBef)Ik@s42?Im2Ug`_2~tG2*;nOP_vo}- ztTiJeQf{NjV{_Cy=lT{yqC57j=gYBr?EW`alJ@H%pEEGiYI&q2w=)NG#QD_4uFg{2!=rZKWl!Pc^6=da+3zfg-hq zl!Wz?UYfMR+_UXjO`wGCv*Nr_)@1}6Eg(as+V*q0e>$8f3*2G2pF^$K@Txb6HFWc<7po$fD$Fg!DMNDO~bh- z$kxtFL~4p+XfrJ{Pe#i}FJgd%TV`9p-w5Z1%X;RQ9xBbfbE~B zt7cSdSK=hj{~4yJe*Q6gaPiaA6fp^&2|RkfuC@Y-4Th)N z%I%c0J+_i^=XYYbUM?v!X=`M0=o-MZ1VA76ajOj`{$(a=9poiK0q#uC`p&n-7T~v( z@)1oJopelJcwta@#CQNw)D$AuHwaPpB*9~ySb>HWdmA&_3lXR?4y~+6yp^rghT^)A z2{)yx35lzvar8)jxuQ?>cth~WHZQ<;tLAFywX2Lbr6aYtLDM- zHcSgpp{*L;q|nS>D-VD3d^40QUNv{}csB^;J4mjC6m z?bawj`gOizBDx!(j3`Q(Gt3 zi+?cx#molC3bBJAa}pGgni&?8@dKxKR81+lzHc^CvJU9_%lysNzLr1*GmzgE1yb#% z<>*Hy^JNngDDC4*g>m~1!`YkPVGwc!dtXmt#=cwnaH^|$4@rtMG*ALqux*7 z%B;-jJ50sT>W7#fgPL&mDFsRK&ZBr2XFM{iW;>Ax?h!ojWRE%~AYn=qZNq1*O<41# zbI;eO9#$k+Cj>?HTnBZGlqKdGUB+#Jsn;$ z{vGh8ZKBcgsfq8Hr}Mz+jeosQDs!bAH%<2Eu5mw^jmGN!a-Hu>#q$C%>jt8UshdNt zXoo_&=x!UYBIfh@qs^isNvhKUv~9C9RSkz$+44a=4V8_%TeL!H>1cLkvo=2lW^BIc zljd8D6flJ4Ouj7K?Me#(5bOqd3;*}a0GEDkWCmfM6_#!cbJ6 zphT^OvHpqu{1Cl)s=MiCw+9P-F?X7z!X&V6vD2lfUmQBe+Yx8wsP3%uc)GUF8zvyb zBV+x2O^7Kqsuaa85Ddu!;LM(Se_Xj@FCYaO_P4qQ8=26N_Hxm#^@uabfh|RzGsg0> z?jxdW@Ae<~Z}(<9ucQIf1O>sZEw9RNrmWP*t2}bUOxCY!V5}FNY-UvYX9c}e>naLPElAD~D0QkB`Bb$ZuB_-CRr}e8DxZ{C4 z79ft6t5*e~>tq4AK%Q=xCCAQiS{ZQZN|i6oly|~+`UXfEM7%O9aI153G6Pt7IrBGE zzGll-{zcqGW!vh8RuoxZQ<&-=ouW zmPaBTi=4Te;qc4lEQfE|^3;&~MLZP)sAIq_oL`i8JZ_Jq=XNo;oH~6o9^^@8 za~+)+y_Rpz-*&T>wa0mqlqB@dVx3-ni1Sf_n@i(GAG#G2C2?jENI`ta$BZ+95)xxs z*}4s__7${Jda!)|MQ-j9h`9A}=O2~j`IpA{b<#_P8}I9SJZikav8)iU$_0TkSiaR+ zHOGGH!j9(9^2huVCp4ri+Za8-uSbUW449Cea=Ldol9Ni-CQOyz1o^m8YAy_?<}Ti8 zuna8%F65p2z^@BI(eq$ZpbI;LA`Et%*7A|p@f#+bUnolMT48ny^MxL;tt9`9!>8e4DbGnB( zssON&UZ2{jZT9X*+#+p$o;7M@_C@LXXV&bMErT(Rk%jv{bjoS@@_nG0Q<#skDVc!(;D;k45k zW?*QWp~#UZvtJRc1a&B}loStBv2{-&?W9CeghfNZ6wWXHttAa5DM~?yDN>SWDk-BB zynR3Ai>OO-S#L0F+C>Ao_km(DxE6Ig2x<8*m6|z}0fs??q3<|qi?@%a#GIKO-A)j# zg?Tkqg~*1mm0wG9o7mhmg3%a&mC?Gij37i&IHDSd2hzU-qSepDgsNr2NUIpE#_(E_WdTU##!qkA=2mt-wdb*K|N1?Kggx zEN(!nn*=j;ceySKn_q2rS}87OX+VaOqA@6Yo5~}+^wI03M<9p{>VSsw0{bMg$mG6G zjH@PiVR8NgMAsETz~>pnMb{*+AXMRx!B=G&@Xv8i_3rDg<15z}Io|=T)AD&o`0fr5 z>LsCMv7$xk3rE=jsGKA|&uV;#w?D}KvQmU#El(?VPt0&Ak~8>p%^o3%a(5}VPlfwY zM9MCi`WVR`>c8QYAfhIKEcFnkC{K`dR zf#}OLe<}OPcj4?t2u<8M)sgEv^O0uAMA@yPV8;)2*@|nn!+3q?MMcqr=kyDU13OiE zR97C_n)}p)`wWhVM!%Gn$gi)@)tWgP6bMfC(Uzo0-`VN_mOJBJ>(Zut$Emv3*S!&f z1(+kNF5zeHs`)h4!hTq~BdJ3;+VfuCfPmSy z(EdqXnOTb6?HA{#a_wA?IY0OWQN8bcPPCs<1zaNG!=xSX(NBI=9A1iLpAjkK_>!s$ zSDsPj{>Cksz5GV^q$VBkNhl&+Mk0?4Ix`Wa^XzpKfou#9=5 zLHr)obJ#I50AByp1MIFQ%n(Seau6W$+(b$S)1;n6vW4#hC0o@q0kfQwS4 zML3S`R^#5n)+O!nl#lro??1C7*Q{q0fA{_|jErsW7;qXDCLr)Mb3=DH5% z!p)q5v>9R(!t6gldVf#Iwz%Db<{+^{UvRvMbSj~{X~ri5;T8eZ35sVD#9L5nv*Mpp zVDs|S2LVs~5`;3?WnnHv6S2>phIk!>(}RGLz~!h{&fQFq1WIubt2|z=oL6LMw)30l ziv1}1egAjD_23z~NmUZo+bN){N79+!$eLW#0YF#FK;$|%gT^)O5BYUYxo{wmK#&vN zDz1%<`Fn||b8%)=P```q8`xjNqnOFxcB~x#WC|AUgBkY3Z%CqP%e~mz#?4ijipquy zOv}#H*ClAU^E%&wy5Kkk&+sK-Qc>Z}taWEsE(08m-ozL4Qh7nwWFlMwi!C(~zGZE+ zgbU37qie`W{9#X^7Sx!`Tg`vA><>aXR4Xd78`jP71&pF3u82O}ir>|Z z#U0H&I^c@%DXjsw{+qOB3sEiBTi|O+%aWOdRxj7A^Sp|7{cV9*m(;V8;W@h0ch>j@-##zQ6`aI$b}9xTrRu z*R*^~s7P}s6n+06-7Gjkl_UUM3ADMW?4J_kj2{8B~|asY0IEG6g1Vo z5L{j?cBVho-{Sh4jh%G~S=_T^T&rG%cR68?_gX*^7*{Pfr$sT3j#EDAH62kdH2mvB z7gs`TTBCMg=*wkC>4!x^AZ?H@rVT55<)p1-zE@eYqP!DE0|xXLuQwZSFQd; z1z!2)Cg6+w+-4z^DKSn7CXC6cSe}XPj$KhZ0`wIia~rnne)nOxF&RtUM|5Nr{RzsPP+kD-GmYYpQz!(&W{PN|Fm|aD&)V6HU<;CY>3{mz=d$fPA*2RSuzH ztD!vn8Y%5MNV_UOK{Kewf4~HCg(%u>oV)vajrsy|BuH6?y>o(ANFtn$x-0^xDh`PpJTf6^M$NEC?Wz+NE6VkU6#~Ygo$t#wx91wkCELZa) z#UuWJq&i>rSanQMC6keH%TckH>4Y;zX(i$*nlYHG-6uZ&%ewX3aB#xvc zdtu}Ng1xf=3h=w?wcDe&j%%}?3IV82gC74bXrse{5s{H#z342<{i2GeI`LT4J=i=B z?ukAF*_{z{x$oZCd~^G=2@eS);7J{?vse-PMd;T+@o(yUUyw9>Zd^FQKb5<-CBa%I z(pQ~X}*gQX6E6A-Eu^r1)^ zvZ4(ArqlE1Yq&9veH?v{w2y1lGK65lCDnr@sK*{eF6l! zZ!8VYGAPh7S6BJFj$QHE)@g{A-5(Zhqv@q5=J^UbUYO^3to!p%_i9Bj)kV*>4g24C z|2^GXs+`2gerG7WKpyV9M&;s8oGVUB`a54>2G6-OpH@NCbB_&?#%Ulvpz9sI&7Ek) z4ZDu<>uH?A21~Cq$S3pbz||-tvw;V>V@>$E=WalBU9-N05OWGq^D4iteUC$$VOdH( zDjpv{%T}6z@i-?z_}EvhW_i>2Jz&6nEdokA2eeUx^_S9QoWbjt@CeaEs31l2C9Py> z>uTym*s?4h2zF<}`oTCj_P!KZh&3XS_Dur}cL4uC0Klol$N@jLi7igk>1}vS*uCfV z-O(Tu{cw$Bx09)8)kA&!`47#iy|j7FB1d4v1{bY_3vHuD=zc0yAGd1}<-N#Vsq3n6 zIH@I7A&$Ne6yQrVCvo1e&sUpKotS=iwu7>2OwdebY)AXHG9@*F(FQed2yeOu2l_Y{ z1A{uV@GN&1bkI>a+)!uXs*-9;lE{tyOa={-k+hIq0-J;kEFb8tLJ*Qt^PwZ6e3-L~ zyv!6VxGxgR9W*^EK}a`U>S+)acM#dw@m@tNM?zRIF5BkC;Ux>z84%)1Rw;d!Fpsi9 z3`RdI|Mt+1Zg)j=~CpZU?OFh45HMqj_FW4jLfF99u<*~1|73HrCW30+ z8BK|c*r|7miA>xudAE#yzv&yBUCcknvyOb4rtKDq^V1;u3&R8XSi!cV2=&AA3W!=H zGqT>eOb3a*TBk)tCI>s9^?_{n2wlGZ5&zTT!%695+bKX4Y~-pWk{y6n19<8422)Cg zs+NeOt&Mos$5XRsCK$E3 z>sX|fRbSd?0fsae1C=i0{k0jH`wn+4bA6pk^#8y%@)x`_?(W;_3usU7RlrUL&Nzsm z6182Qm%V9}Mpf(UH@G>;A1|2Kr;vCq{3s|YJ>Fl-IC{;47hvXX``)j+4ro06#M7|W z)BSB(a@e|BK&~Fmr=_)HCAc|Nwzxz@jNcTL^L2er)BgR*4**Y#b5<_yfqV%5gzwBs z?kfQ(5T5c@vP?v%M771LM{|qS^uSEK4V4IU(ESUDPjGD6WhCwFE?5n#!MOXHl$2GF z7!vCxT9lyY*LY*+j4p{DZB^+0}wp^86kIS4}g|80fD&XtG7FyC*=JrvnU zBSa{MdUi`nWU}NpZ)+0UfLXN3M|+A=e=mGwKu?l%SHP-~7zqJ|wE(*Sv~7mNv)ql& zP>^3&i#Wn)l@9N3McHz)O_6USB%!Wv*SfkBUz4$w10g|fdg0<|Y&@BW|nZ?;m-TS#(V zlZ798*vPxKQbK4TlaoZ6e~+=dNqqNN`(XoBQFLR8HmzVn*Kj7O$?oSTGe0SoN|>@a)2WiIe23@mS?m+rDYCq$wDevdsg#%NFvR6%V?33j9L7+yfQ6S*pNzIp zXq*^~2CPxpWI~TJ)N@y&WeJhi`Uv8bm*`lsD&trKRD5M|im5Sb9=o!eu>nRao#8&GArZ;qa0Da1>aH;fr@%v+w%0q7#S|&RUPUJUu{gax$}ky(sZK%w7aNM zZu(cAnrtVtP8=XA4^aYcocYaMeRRKJZb_h9fL-Y#&L7YP&egw^5d| zG5(?h8k?ypbeE((ky*L!#D`ucjt7RK{`J_&Vz05c1jqk6C<2~pVLOk~rn+a8vN?+4 zw!*=Xg)=UC^yuCo@T;o*I4| zkAajop~l;mAwa{zTZs|zNe!j<+2SPzq2JkY8bK#ZD74;R?Wh}M;Z99;i|)8KnAu39 zoacvKspvh*rC6qd7M#88xO%d*@R;)QjIOa8m;pC^(}d?H{;=#aD+6nYYF_|Yr}({# z4Zjm@NsG~jm_&8XiZD2DyOQjd2JLg7ndSOu8xOuMwUd%#9WynaEqa~@>gFFDd!_=9 zeU|I!LFm8Z2oZZGs~VB_MueTAq{Qa3u#Gxb4Dk}%{dq3X6OvOf0@52DyoHj<9*>~D zDGwyTA;PcrYt1 zqc~SjQ-sWBxG{&t(|zw&Z^Nm|sGDV35r7hWE4DytGGCv|uK%(O!X$aVq-D67-+T)E zO}6OJz&AEEH=<_MI*iiqtmmtBmWlvSX5~>Vvn$>AwR@S}1{OETHB zQJJKYo2|NIXW{^^Xvzv)*)X7gyi2mzM6>)fgd&}i&277YM_K3bz7|MJwbQ1AhGn<# z8|4JGAtQ%Pv&xN`eOl7Ic5oYDvl}tX+u#(SGCBrp6Sx>%;VGGf)QRv^IPPxZ6A!I0 z9-oqnz}glLxXb)yn#ttwYo1l|Nx`7g6hk0$i8bkj?9SAJoG%gj%8}InrRIBZ-LZmx zU0kvqbx0Yt3U7MNy>^bhsN@7`DGF2S?IP^UfCL{EoE^_v5Mhs(K2{h-JpVyhs^_KK zQ%UickZPfo1_A_~IHg@o++#RAh%BvHQ?$qj-Zs-SEJKJSnt9&5-sSo$vT1~tE$OM4 z;?)M0SAqJ|+@D}?UmY6zPkPRr3fM& zgTire@N~g){dX{BrHtp_7+eEN`mttP)qZk*@FoI)b)TBP@n=1IrH`*=bQ{#&8Bzb~$g+bysf`6E zfaex0Z%LlSfv6e`h|98UYX7PsaAuqYAMMR(p|tu8h*Ds+AeXsWw4vl~nB+?;zFj?l z(f1Y8YBgU|l#v;%DywX^>Y<6itx$Xzegyk*b8t^J7IWdsr4u3?aUQNUaNmYTk7*X_ zRros|z8Nb1-}_om`-`Zq$}~AEuUs^Ug@oxO-H1lvjV)-U$-4rjhVxel3|e`QP`=*o zJvG#HWldjoB^9Y0CD?!190L8Q%YUMWLt2RxwQxx>`^pyRqPT^BOFOFT!+i0lQ65;; zk$yA&hS^tOwaPQnN@2*jINLN2U)4h|VS{Z!9LogE&Xix~4TDnA3}z$lU^f@c+iKSLJIq)p`7piSwJbiWAS4_+p$PvhrcFNmb#=NIyK zsw;c!0C-8y*{^DIQdye_1_zHM(L%|F9jHv&6XXt>5hr6Q`-39h6o?~pa1iPD_tQ1k z`oO!Qa!Wtx67WKSlc*24T7j#;a0v;h1K3znmqH!B0>%c@cks)Lp~&CQI_{Xbo{kQ0 z2=T#+v;AdMqq2ZZ1A!Z)QDvQc*jT1zW_H^{CkSL(TH@PnNg}lUu5(D$yqgP6#@6oY z7-oHzj(TtII_rtVpu(4|TH0tJ4BL@J+6E#!ok_JHxxEyV)P@N8emR4t`rGi}r^ zJ`HXi0^?2ntv`XY&6=6Sms6;&->k;k)G#*a+_X8$4mhE2CPPTZgp!F5*V(0*^o~+X zI2WX7kO(Y2w3f4Ifb*iR);nF`P#z{QZ0r(-Jf=Ny2MA@F7g@^WGA#yducMM zu^H*^*Kr%mZ{Fn6#rEJ+DHy{6?ZOJh-U38fN)O>_dD1UsX54PfO5QgQ!tx?8TPdXb5(nZJ4HF}q&h1k7d0;VV6n8%$ za6OZ}rp*5ntQWTYO`19|AKO8yW^b8V!*tFWop5eQ(YOLebH3Zm3?06;B3-~%16O($ zV&HS1X@;?C58p?$7wtIYcPoHm^gFVcBq>x`hxm|@0d_svi?*uYKv>-EkD6c!R4u?lzWvFL1QXzdH5q{}7p;hWTT$g6(5BsN0E4#)IGDw~kyF9C#J+CN z3$DS20-|wY$nlVo6jT6y(*snJlrNdxjOM3rLE63F$KDi7;~xy;MI8<#^8ey}6|KFj zBQYnKP7#9oFO+-Sy|tNza!JEIjFg|v=g|U6IDNs}8}9x~U38=0k6^1bz3!#_*ZCVD z17SheRstl_%W%fiQdsv#tBwP;`vyjNF>r`i90X!Vh$)lBNcw;P<|&w+rle$mAw&#( zK3oU@R0GYejD}vg2O-HwrD-#m-s11j`=RN?YaSF51(7xoimR+uxlF6C4cV7{i%jm< zVwlVD3Il}=!EReT`}}6w`sU2+Jw4-}*y#oR=mqey!Dek$M0UQ8*%u zPnG+JON)(1cML0mA>)q}HOwbB#eP)+D-pog>Q5#G)BS*UDM+W&Z$WkAxD^akV$Q!OdRmR%#R(8KxHl77sN`Og zEtAfKzGZ9T;oE=K-n3g;zcQb~|Mj@`wN0oBrty9&xmrrs7n;fY)Q2kEsbywwAeJvN zQ*pSwSVU=@Wo9Ng8$!TdF~y_TfuS|`i0Zm3T!wTd@yDYaufOgq}^D}^g|l-&rAQ91wyEAf*2 z`$2xokJglnHAwvT;mIzNj?tZHgf10SY)}*(D^DX)Q=AMAStFEJy9b+QeL<0XtC2YBD2LZqE;z-5hi-QyQY8HaMNayZ{Deqt)@C}HT zj3gnphwY&^RC+nP{6w4wdjx9%|o z(tz%rnBU?pyMfB3)DSg)XvC=;fYi!kXAGnWUFLEu)r}3Y+feQ%E6RtEvlOgx=5>4y z{bBp^rjPX+xF{>f8tB3cRgcyVV&Myb3}HhKfwOx84n#%J zJLKn=cq8Kc2;^JldzfC;9$g9gP>#l-yls)lp8InUd&e!Cru|KC3F@QG{YG{K%jx_+ zrLj(EGxfWrxqE+<+^s+D(H~m8$wNKJ64*GTvcb9;X@3sB{(%Uwi3#Es3NZ&RnZZmH zZRdJl?#%g3)d~~(ZogW4J_UboKII+B;-s^Fw^JPnm23dk^L68%BWuKY(i+>z=$*{D zJP5s=R`95Y{4`{

zO73o)esAXU++of;z%1-dTHQ0PU7-Up$V?e3ZgygBBy<&1g0 zw`gh3^+Bzk6wL9xki7nRF_zOBqXPW+6s_UQrp#AOF#X|EuzraNBw;b8c(L9?9Dg)W z8dAEua*Q%doB)r&S5*9ueCCHU+T_@^@_tRCqh}%F*3tl+$|i1qEb;#AA@8cg$U`Vt zAQlM=63;;jc^$$gbwOV5Y-g?qcO-3Q&dMT-fX2x93QxX5m@E&jHMdh(&y z`3;<@yrwtNNgUYHemtHkQZ8=n$Id#sHF`b?3Psoxgh6JjX;KH@9#`S64rtWbG77&2 zf`n`9F*~-%E6jIBo?F8$>?v$fDnQ!|#ss7)>kNmk%?O(|;!D2+@fC98J7ikZR!&D3 z8Mq(bvYhDFqux`77;D=y>lAK@nAvGfR0~W@6}xUts~<9#Q+hDDq>+wQ3V@F&MZF7> z`LwjNnfn3jcB_*!8YbNLn{*1=;2L#a*+*}$En3>+0voXu zi}A8>taVb?Wo_Y_AM_+(B>T3Z4h)_A|#Op+iElORYDO)8r`y&S;zu;5~yt=3<#0I z`?2Jjo5LF=7T2IwdibT*hTWW;o_L4Go-rjiYu3zM^l zs7?dGyvf{0OyS#;b7NZmHX^$O z>D6lVBW{b9Mlu^^Y(=e+(bGYDL@n6|@=7HW^p+97!ou3=5(SL($B8Wms_Cnj98OKCL&y)|B+-m4H+ZnJ-iI|s-kDH|* zheT>X!Ep3j@SHI#oWZw)%KJFBqOvei9+Q1JiHT&I&Yqz<54=Fh&@9Z9zz5P3-{90+Wc9#mOo_08I=qE7)0ts%U59*31LV=OPf z$5J=Hn#G^hR($6PF=?c|mZhQvzyUI87$>QBXP7N0Q+pYWSUDx8W}3}2Q3TEm#xG~vlP7>?vA z#io_xDZlX*)fBb9l#19V0?Jc}xso69OmYqf;I*(h+89?{D70`$M5(7;I4f?wXrE?y zn^A?T>mX>*ZRZYTwuhsk#vi_5@lG+$5$l2PV58i7(axme+BO zj5HPAKkwTevB6O@_;5co z7vsB+6UyD8py4RQbr&ns@)4-#^EYew!kb8&i0p0#|+I-&*SHThd97*L)oK=#<)Lr2A3K! z>NA#}Qo=|E_@1{Ofp|5Y%KXC$2MV6zLxTf?N@TR^<1wYKy74x%NCU}53EstLt%o#k z{W~M8hMWu> zKkz4XiMcfU^t7bbm|i*~IwF6? z*vz$GTVxGPvQL%?qQ1!Bkt!C}QuK|>463?tpoBq>97rTjp2)BPzru|Mp|%|I10QZedi?<;0mx&_Z%QAQw*^Hj;HC z9P`~qzvoy~T*5p}N1gn!*iJz293&XTL}u{H6JZTabSde`Y zeN&o>`BZo0liYm9wtl|E8(@@Uj7g!Z?WIUuJ{WWc&w>xh6uzi$YDKzY4?wh$9@NxQ zfj96qy)FUq`5VRj^WH;ObaLSRWR>SbGU&$_n2C&KTf|RhoZr|HXad`k4LEQ~DD-H- zOh|pd1K>tf`|0_FWS!UOP*N@&kf1^BezsY9++b{zZMCM0c6SZ7LCezBv<1T*q+bXY z50}iV@3a&UnC547B$hj3y8EHGnY_8R^d8`>FBwAHgJkNsPp-y6ZyPcSCj ztN^vo(HYUtrk11Y9Ed&d2|+S`9?wk1rmh{0__ejQ_h(xU6o2ph%2H67TsfMIC$^9d zl79igHrpueEr-q8LB@^|vcc+v2z7$|VMoTTONjnfFjHM}kM<5(>XoKXqOO$dmx+8q z&u1!_0sgFVhfu@*)ssUH#_No4;Nz*XOd>40ocy?mH zOWckr7Z?9~@jw>`fd+Et)mMr5*Qp*fV}p$X`mRzT^I3LXBYPJ zC&X>Go;=<~n^S{+o-w?U9468k7u%5PGw`yOhxCF45*#w(>iY+fVy?L`H`#vT+rt49| z(HOVrzbtz5psfM=l>!x0LXjkD9Jfg4wF#9*M2@JcgxDwUfG*G}NYfHMsi7M$@mUcK z$tM5YlQ~<2XwIV}ch&yE!p%l?5{Scbj$eK4A46$+g2x|9_{rGww~@*V){3W#mkZBFX*gk!62g zkb7{<2z~QYP#*Yw%QtCUatUNEGJKmYDj6`@9y@EYW^+0Am_PJr)=FR?`t)82kzww+ zg>HcSJ5r3OppQj#9z?pzM^=OmNmMR#;+8hho1~Iq_eJ;NI>H89A!HQEq_J-2t7!2^ zftmh?uVXl4P-3T5r>pwWi@#607%~QMN#rJVU8rh3;D-({*jh3vuozs3jwibZEAEhv zqam)`zV*9Obwq8v++F#`zBmk?EFUyWijtcw-RY3rFZ&)`odJ0l8Xa5?@Bo0bzi7#k z%#F@_81=;B>UHx^ig}Q{QLLi}3Y&K(lE zwIkk>Yq~fP$fDa+=i{n zD}u*kwzxL1ZORe%yroRn_pffVJeQl)0+>LIr)f)^f*8z&dVv^8&EktJ#e1`F=Wn%| znFks?pDHTlmWA1eVh>KII16wt56?m;mN`Zq5F=BXO7^fW1TvCfU4>gfa1uO3lgD6s zg$WY2OwlzPe?q|}q1G8Q%|6(-z$MnKg~29^mFaciqtK;| zr@4Q|HuO^GAKOqqjcx^k6=gt%XX*(_v8&4ngqRxL=BoE((d9{VoI=e_V4b*&)6Nwe z$W)wP^Ey2ZJ)+JgeP=xfmwUx6Hn~rzgJ?Sf#7$L+XNf@?=0LI$2>=G*K4)$yv5kAc zgL2v37>*?=a>_xQ)UFWM*XK`!Gh1XhxcfB+zN$*Pdal^&<{Kpu$yuEIBc2Vw!^we* z5tpQCU1oM`K?P3@B#e2hnJWJK@5jFrTjnd$Ro}z~bZU*pWvKjLEmNNoPnO&?CpI0m zWMaiu6G~X;b6lqIFk`g{e8!2)K*chB<4ByiiT0%s!)1W$fJ3nL7^N!lX z;$BEL|F<$@UCI$bO;`iW%H+}hgK08}B2ySIn|T?dG51eGrF4<;2+%n>wfF8Cb3upF+p9Q;*id)a4Dpab=z_CqxjLck7yrKDiTXQ6HVr z%#dU`I(nsdwm;oXcas$N(U+)fTZf!VWX9X=cAPT2XyMksGys=B+cb$);S{^@KlMXR zqZ}E&aGSX)K`A2(%x753&?yk(`y!$XbZ?tpZV2aH1~k@B_Y^m`LmA|El|=lX{hVa$ zfyhfF&8LRK_cM>_E1;YBWd*k~@9yq1n43a)q^vw(n~yyphjyJP1r_xnHe$GSP-+`r zZN?gs+X6sc%LA<2q+4gp-RHH?lCSZ59{8#q`+n+DOFyVV-RLV1)lnr0oXa6fk0&Sf zHsE+0v2+I(mjG>wnW@$b-q%bOq|FJI{laqG;j$dr#o${Tj);sBIp-%7{%4=zC#XQz z+Eeke4_Gkddev_Xg8mitx()qX>duYo#9Q;VDOUgXB&h0qKxt>=lG8qHUp+uVOzXWEtc;|(xT-~{8K>Hx|FV6M7BzDQw6a5|1kneXvV-Y9gvD_-dG1nWyXMmW_$Uj5g?$U8#3HB6 z%!d z^6HBEFR!K2ERf+3Y#eP}YT;dGv8h|S&ulPMd{l4V5nXrcQe#{b{n=?dwQxOwY$SM6i*U+MBl6zaa2J%YmRR+cW+Y)w7?@sg%bgk?2H?~OFcp=VPO8lLALc*r-fCZ$qf-n6J0i%Ih~(_Ir2jaq1nWhrv!vXU{Wm--YoTjOYn05K+XwnC(GZ+P!i(PS6tkE?Y>$zBHt}|nI8PB zNsj}m&QSx;eG5va(Ksqgu7{{&?y_HXi-mYY(prMTvPUwR&gKRw1U#QL`^(Imp2J|h zRemV-qCK<8lG22foRK#?9jB{{W1&`V4f6c}ETGt-TmK}NZV#<_tJeBSpU1tyq54MhnIVHKp@NLzK5<~d29 zodDye!TJcFfVQ~()Xj8nm*0XNMq|G;Z;D+X*4BY_n%DL-|2O#>Kjf6Xf$#|C;6^gE zr;p`@Gu>maFU5DwijVRN`Isd9S*B~_Pe$Df#QgmdcB4{Q1+U^zAn^j9E>v}tBg93{ z1?u0>%0yvpv#+k^#aw&hy-^n51ufJ2%ZYz)38gzQ#NYuab_4!xrB6jTxgf?%)9nn> zOylrJ#rn+m$I;NmjJcREqDDp}r*;@U6Ifz_mbcImgc!m=d@|FyXah?QndA!_6OCd$ z-Ro+mBE^?~i!>gX_hu89+kc#Bkmvxe4aKy}OwO7X1lS2Ak+s+?AokNXL>tVk`+zGC zgzfo*!PJoR)p2EEjb@h&0SrSb6A%_~}A1n!mZ+aZ=$89@o2EST%Gw}$g7 zJsEKv6&UBpk?>0>Lb}`*$MHFKI}&}PBv1{t)9K@{dfSexrc(m-i!?C+ zNtSHcpMkkowW{FfzdgR7uJ=E56Z-ryV83OeYkrUte|8K0OjKubKKNkck#uk}?OyF| zJ%wzT1Szs*E4-b3iO-UQLfIaxyAv?Bg7u%uOdx}*9W-lz`zSftp>bSPaU1aam~FD> z>}$dKr6J9CE-F1vvQq&YN~Mfu4jL{38>aqct2x7NURFa0PD{vpu^Xyb@)WHr=UhjEP}zz z^k#gjVCU*X@`yD^PyGO77@ZyGjp$0wEHuYj{H(}NqFArLS%5fh3*^;0>Iu6ada^4V zJ7R2EXIOY#e`2e3vVF@|!9ipy4mg0fhHl&#eUM_hEWItOhhrS@HRo3@CpJPO=|V4z zfOcX;22=1Rb~t!_w`?2*Z1BhCkyHVa`F}da@M>vAa}rn6aKV|2R^urc#C9dFp~euF zin5aLaxD2shJbmCb^$-Sq*^-9zOJ(J(qip|hIesuv9qb+`b(3e>G}uLvIw)i#5Unm zvLi@+KlC}%JN>(^>3mG{Iro^o8h82evOQ=q4|u8 zh=4LwsvHADzMtXf_DZHjcNkUS7dlUewFtm7)zk2Oi;Gc17bI(_2NdJ_7yzl=S;3D2 z?;)yE?G>_X3sO;007KS87g(b67Q8-zyqI)fwM{G(>C~$WB@Y|?Z!Vn3o0^=2|2zXs zZluI3q0Wy!I;3cFacY{>n!+=h#hw!+wD!t+zt*=K^N4=H1L}+Sxjd{ej-^twqKs7@ zBHe^4hiyB%+=fDNkH=Pxi$DneVYupt=UGT7xK$>bbIDoJz+aR7RRt989_#GqoywPH zedL5MnNn9Xe1$dJgflLYwUlf$bxKlo>r>kLwv znp4|v3YQ@@w6|wJV80IyHYht&#!_R!a7i5$z8P=Mm65a(glP(QxA$ z9G06edk?^g>4BxI7Hb!OjYc*pcl)|bOxc*^4q?6Dxc?jKB_`k3+bhbX=HG_CMyN0# zV=gj%vJYjTpa&#M3XzAfAULk7G>2MK8S>AfZ~5s!1pK3%(t_C-k1V>WcTt-8bg-8+ zPbs~B@#NG0otJbEUlXIhsW1{i?poQmAgdE0gutljgep!8FBsF{3O(g74$=%pKJv@6 zRRE|_mC;)`O?8;)6=o5wt)W{^eBK`fZ-yY`+z13k0Va?0C#}y|5-kauw|zGI0&IS| zcwiTWVDNOlKz%1$I4_bgiP3)pFu8=`;oMx60`1Xo#yB6*0m+?YgTUkow4(+8$j!Wv zjC*djUVa>vT}~0!aKQY&+K!Ub?T+OQd77fw0gGpxPAK$w!1N3FUMqyILYcD!F_z8? z=dD8Is{pm2h*iu2>p334Z^}g#{=T3N*c=FvIIM-KY7)9Ok75KgGq2lG&UQ!{wInQG zh;#!jZQbCT#A)B(`fhULbp!nr8eqH5{rxV1#7Nkks%@j-;oLkS9IFbtTD93l7JRt0 za-9iDDW#WY8wG@ve-rSfB92s=Q83>bf=KvR`=^ zB|aJu#)+(c9npHGq)rJP{`5=oJ!@MsEOcqx!5A=u_BpG)_QX^vhT_2D4WK>e2Y~a+ z1Kjj~3)2I}Dy=#e;dG(zvtj@H3iR{a=hR8WvGg8PEPsvw-IyETqr4-wVQUH9#h2>( zGt2ZAFp#?qs9fEUIMDekiQ~L6czd)@ZE{$Ue6--ZB&7HgcE{Sl4VS+!^o)w|PEDGg z{j-KfSkP}-naIrB`CQLm12zjB#$vgqpI)o>B^B~hY+;7|qhm;OH z8N=IMa&S3~Y_Sc-qcg4h5n<4p1i@!gEm)sU4vLmTK>DxX7Nk{LSZm3}MM3vvg?4L7 zpNh};!0X1kBEm%_)OHb>Y3Dylp>gF{wuZ(^4z-JFMsHw;Rcc_p2nnd{mMDJSR#X5wCg1r?QIG0!kFjHW}HVc3I5%BYS~Zggd5t?WnECfl^fk^GQ-N zis`fFGtF#nwe2gaLWV~IiwSeX+5SGGXOuBdhR2qV4btiJaFho7X9Iiu&wg#XJWz|3$We6~fCuz{8n{K2>89a0daZ8=Xq2phO``ksore#&YaNl|9QB z&SRn^qW>L9Uc={^dQ9XmgM(OfQD;a_)GDR+{JG9u*7x`DOY!$E7pgHBXk?P$=zV_C zYI1HrSHdY0y9+SZX8qfNTtWs*McFu(kVje0kk7k zxpjubB)77MqZ|pG%Yq+9w)4Aa4!D!4td)Jt#?U`Qjv}OCk;t=evQQdnytVuaf7bO} zA4^L0v2S7B(SFphyrE!=IAVqr(~e{1XBXNM+9%RG*)>mO_A%P!X^s|XG+ZChtti4t zM_E3h{^g$tES|W3aGreiK~h@7Z(eT2vXDJ{1S98m+{vBI>LsaQ%|7Q%P1nJJi})#G zinHAa`^Z<;K)37t&Uqa67;bW9pu>=B!$-8#!$R6kC$WsaWC`0^lrg~-BM5W7ytepU zFCS+fT2gkPRB&Hnw((>a4?4@F3QA3EYY_BMX5yI%K~BqsXvJm4@UdQz`_|MZ_IKin zD_`sarE>BPbz_keWf?`(=I~B)XW{8e-i*Pc~Y~j*$5Yw2VG$E7ByF`GH zC-kMNbj$761$qAlt-D)H&s#s<ll$dXHC;5xb_-8_ zN7+MJJ<_eD%4kw8=O$Li7E)`{f$}1Q{!ho}qRO{>C^T|&LJuR@7370FEGFI%Cmt%# z&lv9%VVtu*1{K&V;bG%5w4tz_*Dx;j3iYo(ol`5JeZQ!HoG;P-(LH>17(d#d_98!! zibr|ue#deBs|A;gdL|}%y^-a(`_^4sIrb}))0Vd< zY0!O_#5?I5lc8y6SlsARo9dVykH#@w?^+B>PvvhV4EXQgyxIM;!yynRp~F9=04lJU z-Rm)3wH2z<_!8?Mu9$|Re}4=dR>h;5no)&>anqJjvqbsD%H~GerLsQA{SEOJh9fHb zbs?MW4ck-`GPeujVbg29)mD_xH?pw zu|TV)T$*%QK9RHgD7!}C3 z?<=%R8I~&rzm_Ej%^3$HpbMiwE7)p%zDyA6`yzgw_@97wD160e?RsH`#J_9$1a04Z zf~Io0NtLHAJ_#pwoH+nP2h9pes4fNaOU`1xXICy*jYo$x1Tdatju=u9u7x#Apo36Y zM&}9nvB(GP1IzkG13aAj`L4!5cG7E$X;D*+Q65n(aVY{-xYbB-(hgjMk(K@AKnVAl zV@vcO(%g46_dSs)C-j4*R&&TeGDHob~(Wixw%Vr+Bfq z&V3DI_NVedR z8Kz~i;nVT>li2x1qApeX`p4!b9`HHX5EvJhSv|YG3ZZ(<{IRozo>VF5i6rDf4O%g< zX1r}XmJbpuyt)T~Qz5oNUbhJGO);mLh6iFnEBLG=xltFA>ET|H2mXUHif>o4B$%?F zv|TL|*PP?~$$`JVcVKX4rtcBR8~vIOpAmDp^oay;@HbzF{mQaKZP>o-T`P0E9->(m zhTo+=T@7(@JuOR}n=FEahHyM#JR7TuPk=KVPgT08vb~ur(>52N;7nu_LZ;=6H?UNm z`J?Q(9r+1S#Ea;5Fev$=1yB*MA)c3k+=Mk=kLx=g{KkYKT)#!Pt4P|l^DwD>S92O4 zt;%FY4HG6w79J0kxp6Mv!3{E#=;L4W_WhmPcg7$2)j$mLkO7Y2hB~EA1TT;<0%7<9 zGD84*B==t;#xFn75eqt^MuY0f*h^i$pqJi&OH{|{ZbKC&n5D=UK!mC`?LANg{SPpq zk&;!@2`x7<0ck^EE{HEU{Av8Xi9^Q?s0@BB%0`C(cMlxyi~#>X0KgBF2Zw{%v!=~0 zF#cSNAfz;Jvg|> zYprRxo})WPdNm5P(WOYVVOUR0M{tUWuLR-+eLdUORuAPT2qV$IV2rQmfoR?ceE}8) zH;=z%b(BHxuL^=rn$fV>l|Sa0>z#5?DU*>_q3R@S86?}39DHn6 zR{m-qRA0V~+7$u~z+ zCfc4EYANu~3DbiZNVroJ0X?Of^u?ic+~qVWgUFmbTf0dg8ln`n1;7P%PY&b3dMYm` zgdGJ?@Pdmh(Ax=~VfXZOf0`EVK0M>YQuwo7Ywgnf(6&4b$CVv5)9i>7Sw*6oR?{~ysD~GS5%s-B{jPfUJLBBDv@;=S?hq|Ts^nQe>JAaxPQ9eo6nyEZqkGV5S9YfgmwA_SBrdw z5jQv{QBXka6v$=%y_L`4TsZUma_C8#z^j_8qVm5pFs(mN9vctv@`W3 zJrniv|7cTdjK5>=z&K07B4W|cm8PnCyLxh|O|vJ{J$jgFYH>35EI`ieoAN~umPAtz zTQU`{?wo6yvw#6W>=?$G3u_oX;J9hb3799NHh`*$DEJ#(A2S zJ!95Pvt3#A%ev6Jm$iAFrW|*8`>g6CjE$fQ8&_)r3QTX{$~{2C>CoG; z3Hg=}y&EXKhCl-SW(=`cF7oaO z+pJ7}D7FL?PLQ+33<+;7!}Z>?Ryv~=l4qoXwsyUvT!?*7b*bk)l^G=Bbn3)=+*Xr8 zY1Ci7`Q4JP2z`U4kn>gB7~Wt4j`qTHauDi`$hq>D`dKi{WrIK;`meQkRXgiJ!4t{3 z3WX}YN1oX5kY0Vem}D&n8mtC#u5Q~WH=nLx*{1-w0Vc~{!ic{;IrHznk0oDeLutL` zjPM4hgV?Q@dp85oZ}Ip~>T-~SM@iUPv;%J?=0u|mnYYB7QWLFEW1b%491tc+iY#uD zSFWkwup6aaPpFty1 zkVAw(XMWhn>~M}50|O3Ra7A=iR~}>)4eQ$7eizaaU*ge+Af<+{@9S5hx+-Xj zQV9(995C=oXQ20ILn7AjIcw4%nu?|b#A7xw0jp}NP*j5|*EsSzI4q%U+isOGBOcJq9_3x#7|<_lM+?jAYjym!tkIqZue)_Zg>8c8Z6V>Px>)@mw$sR zwRG$!$CD0aGd68rx%{bg*f_;I;d2We$w30Mtf$>fzh-TM_vh-7&X!l#jdL(BU}dcu z9WU;}0%RAW1l~6BbQHX{c07xpeH%jvS*?}-ItW__32k_*eFHbbR@WI*Z)&t$3U4m}xJW&MiJm-Vfmssjf6cTNKXNkDJ(G|2-%STe~#(8+KjZN^M zE-(J#<5w6s!2rmLMD_fu#Ie!~#h`=T;B z@aE}8b4hqPsWMhmJ)JE*&l!>zqCp$uIssid%+hxX4p!Pq$(QPWsnK`7KkN}Zt;R3k z&FD%FUay?Pjw4_Eu^4sB+kC++a^no<63_b{g zuG`P$hq*0v;69J$YkZ?~L%hHk*+G!80$D8txcH<>iW&CWlYy;>Xv$Ps?dCTG4w}I;FOK2o9-ZM^^{2zIt9u!S65j$O@n`M^2HYC>ap}dkLzq^OMV-$*GCsi2$KQIgE(&o!UYik0?R~5j2ABgdY(T(*I%k zY)by*Nl+3jBqmEbA0;mSgTY8rohJreAlJ)S)`ZioQN#9`9BE)xR?{A{op%pC+EED{ zS_(-o35sDD!zfl#U>$1V0Dw=kDjDWrs?_TJ1&HdUqZsNed`df#4J`rOD8Xx_tRUDl z3woH@yf%P;7y;4bnP)(SquOu#MRa|m4<`{RV2TwO!Cw<99(-hAzy;@dH_gz-v5~lJc~{?x!?CkRv=``WR1-o(EkaD& z#KEPRMJfu?5hkFh0dTh7ArBB{My>O$gs=vNDsuqfV5_G!MM;FIw7d{>1sgId)<;-9 z)_^awU~&aZ`B%J!!uwgqjX1DEWosV~CLpDwyEbcwRU=)Xfd@nPd!_6MF%|Q$nvHBB z^_K<2VUY2Y@COo+;GT1JY^V@+N;EuGCN+L)2vc4OzHHpLqRyhzB!kF?*umt4if~Ps zm5_Lz!}X4s-5nLaJ7bp)0&m>Q-yHbgqC^7(4Wbea#&}<1In62mQXZpj2Y7Y+qNFw2PwECDrj0pop+63vPG+~-$(zkbU|cR=p&tqmdkc?H55nWkF{1G z0sMTXzFqN1pEBf}Tz$ham9L>qUKD^2iEWKI+O~l4tsX--IO4GFVbV z5hL_e`lKP_UM59LZMDx#qci(@;4)0~EMqFi`22bxB)MhVqgAu~9;<I(s@w*5A- zPG=UMjNi1*aQe2Z0*S~AIP;4CeY8@*KJbvhSWQC$_6?-%hk@;{NG#+!i#2_m#nLLn z-IjZa3>TX!iogfz$SK1sTUZr^8dck?=ltO$$3w4^4YRU}XwJozJ+(XSpct+mUL3eO zLDsa;3at4{vAIeumSy!5GzpjttOc5*nWGCe0DjN+Qj5S=lq%k$4rPP_?N)#0N?GAv zW~;L$8R8_`uX&v<>x@UmnbubU*bG-cUVVx9qu4+`2~Hk`=xCzeEK;DhcL z;Q=>jpvEgI)6EHu78FD;3UfVpW+NTDN@4OqCIp6weI8{(y;Pf^qSuOy3~IC5xJwV! z_5L0v3b8UKfcy%QDc@C0%XJ8T`8mS8wk$*Hs>3`L*R&V?yue*#s?UG%FkxlLqHcTX&ec@C9Qwyeh;KCa+mpO9q{+bK zNs>SPDTPCG4?See^~lrB!4Cp{aAoZ(`C~fc<;z6hhhl!4D^8s8F^zkL^#=S~lx(uMFbkWE3HuYn3L{2hf#Dwx}q|D-MW(b;?l1uo%=d%K)Yi@!-H0 ziW}8jw(qb~vL?aHbT|eq7zlv!^Od)ty-|<8C}O1+;~?GczzBljj@pUb`d;$U)_0ol z^Rua0F{A^s;Rvl%HB9t?D9X{JKz>`W4)v0UF!;sSFAmui)cPUs^5g_@ufhgg?yh`C{QDT%6X>5~(YJBQ>7xdBwsu6I z^5$cHS`vl<6$;GvqX}d2dsDHz+$DG(>jOe}i3w}EO=$G+I~u%z)5#dEp|8P~<`Ps5 zra?*_itY1j!n*^+)fRds~eoMz& z|MgZ0Km2+Us`^}59VBtt`o-&8?4PK3FUAvUrb#1zkbF%=%erKyLfvgJ8dRI@SD+_D zX8-yFk#559{VTZ{UEk0g|L6mYZR5)u`N6$z7mG#2 z+KL}=!{r?%-|~0F?i>{#ov126KiJoX(I$XK2e=drn=yp;d8RBzz69+m!>IT|Y3Ad7;R9dq9Bdr4yrJCoyqR1` zt|P>gDJ~m@ZRyQQ1Pi%@6I%Z*{ZguRMya>@z&sJYeNaA1c*uXnr@plhYIUsV+rosk zcXF?@$cmXR=8N%^6O6La5H)hJRx^Z|lH(($SKGL%wHPS_uNpjk#Np0q{~Ni_+tDYG zm7qL<$mo6!1>xP^#wg30Ug+ulmF24yXlzgrKI4Dryya82!o6c)&LQ*mRqPS7;gzpx zIb&u|<81Zw{rbtgJDmOT^kw=3XGLBdx2O%VbG>Kk%)k>02yo5i4QwH5{APdS1X~Aj z*Dg+|1{6GC@0)v)UOp*3T)F{weV8&Hn&MXQlzCMI(UQx7yaS- zz9=Op!NKsE55$bVzF?50Z%u~-+=XFd{$N!vos?46*hU(YK$hicWCJaoYRrICuSMRB zSecly3Mf<nY6&6kCnDNM_6`z7wpu z2N0kCdE`b7yX>qR$~y(>WI={ou{3DWWKHI=gg%*>iGlY$-2yd+)JEW!<9uqwh-NYeO!|0>JQ`YK^3A8we|1b0#A8AoJ( zZRLopxM-52Cg^cDP%%~DdSgmpP;`xKnPD8r>>;%}8M}o(S)p5p9+1}NA1l-SI@^!ntCGi!XtCQj!D(hS zs8(NrW0|U?PjnE#UEov7F4dr1GgclcXBaoMgv!jR&{Gfww@8voZEg740ncGPD9U09 zq%1tZ0uq~r@HZI*P`}V;*aYZj*`{7JT+8z5S*(h}b+z*(R^-v#Q;fSPFk*9tAGM#W z*S9wk>F&mcFAm)_$7kCSouIBn0w+EEC*J&2sq;CR!<+DoRVy*@L66s@q z60~)Xamea}X2|iqNB6e~^8o|dH#@&3pNz!LEs}NQJHzCqk6!TOA19=ZVw$$>5q9m( z+M$}h2{XN%pB*2C@+M8N6^Op>_Sn_qfu2p&PU9NrswK+5psh|nnFXAWVI8q_1t@w9 z8#rBR$fW^M*GN#zZ@<8BIHoT1DgDN8$vuNAov~evD;ZRJ-H>6=+Db9DK3f%V`#?(?U05uaHfY;;dgNTvW{4yN?&+4@Gu?3yZ zacsFDlR`Ay@S<0Eu)58Hh#zmoXQ3Y|ocKdPruZv|2D2UJV=gjU{5Z>KvS!(fwk;2c zEyPOJ&TCUJqU!O_&LuaG>r!v-R=b};*)Hmpz}PAmV;H$G12X4&74NhC@Ibs;4DLOp z?DuEH&|8C)NoABpd;Qz_c--md@irYkBuOLF8OL(f9B0L76;{jgm#Z?zpCF-(y45+K(r8=rog&fbWdC_ImWp zPal2O^Fp-q)V1H!%8CM{z;T1h%hR73Kn8>g>@gxFm{5!$`&1QepL+#r=sn_>?r?z) ze}b;DOl2_8*r(!P$~Su#;EGeX#|3)?eXqKmel*n(`5bGPik1~p)sunl;}{wMq5k%O zCWr9&a007U2>Ym2|~b4-`3zguGaaCX=@xyp`xD0Y>^90NoJC`o1iSJ24Dp>whvq z@#?jPobHCmOXOBxp=RyDrG2T1-f-RvNQ2jl1!L=bhwsP}I(6>!+^uZ8Zbvj=Yco~S z;&q)v2BmVAouL#Zl!Hs!E>()DWdY0brR>tZ}d~|JcY6_QC@`zPHOlGx6+@mE*b$x24Sau@&;kp{--UKI~O3LqAt=Ny>pi2$M5 z&*g`2eWlMUttvcI^)Nod1w&q^`F%miy@_No|9PBjYApIfg%Qh19pY^NuuO7R$DSeLM*S6-+Bc+Tbmef1DYz??v4hVnT zkDa@K*TFkcVqRaQLQjm}qE7;=E9hZH%v*0D#FEu8cc<~bF!%ptwDAYqGP75NrAr@O za;>zS{x&s?R4UFRzb}u2%kVNcEM!bFUQW|;ySHa~Cg&*C;miDdP>$qd(WP2#t^0K0 z1zl9MA@l>gIbWZIiOaRiZF{`xd$%wWXZCc}3ZFL=-~q^<3`okMCR4HrwFwy@vJj0f zGIO!1lC$>0bvgy}EWE#tZkZ8kMpF1t_N&)?tFE}tdDiJir5{!OtnS;N(L&h(oCa=v z1Wa)K)C(I3Lnaybz;d_i$CTsGmj#;>8MylyLuUyD5j@d2qLGKY;Q+-g*Fb1jhSO4|wCQ?^PIP_9gM!MzyHS)xN|+_f@~Dat(_J{466VV~T# z;kT1@D%Ak;IrCO7ooOs&g}aU!2&ngJqqwonL=QzTwc#$RZYtE%Y6a8R!bs#Jnt{2Ts%?aOv!M-@BuWk)PUaUh- zk`+8Bx3?cMPR2eQ=VVnJJjUAr@pDR6$lc+0@z#5?ti17!JmcwOKzh0$L0ptk7z0D@ z6&F~`_NHy5V1GXP?y4*OOuFysKJko@&0^bV zA<}W8`J2DJ>dJOjcYf-WO~!aq)&5D*Iu{(Cmz;v}#K55mLcT^C@6V|nZnTCY^TYDt zn}prK`MY0aSvcZ_XllZcMBac!D~>T)M-#=t{crT^X5Vx8S@-S}=HfPXDH<~VSt5Hc zdib}g3h}r|u>{ah_Dnk&J=eR7YIgDX<*p)TSVZT6y<_Mqz0>6(M$hv1N(biGl;qvJ zhW;zVS#0kkTU{T}TtHyuQPwi2JYoNgqn_by9Fo!|*_Xr{4VL6%)91Ar{ZxDQKKgItjTa-2+EV~^SHJs9KW5+qlu=X4;jLT+C%z7)EXlmmyRV%fE(sTy+MPLw-VwXFgR-@2Om11$ z$+BRks3ZeSg3D7iaZFt~s923V25RTmCyTOH_!0E#ga%UlBXT59YWShcUc*NFM`LYd zI1spXEzy)kz64iFPTXPWz8vKtSwqvFj@_l*v)`c2j?y4%z5Q?F@&zH6&Az)2 z72Nd`o0ely#LcbiEWh#aMbavj6Yr-%B~6JFAvw!&??dNAPm76c;hvXDXbZyr z>frd$Oa-ftf)4=AmdVNyyNy&SWT#ftZB-3MHLRQmKv>ls%8URw5%xJ#()&v<>U=oZ zeEOmA2e))T1VyGJtC1{Ih;8gc0|h~Rv=r$HgHEuP7R7a7fI{4vJ?zlOkvCzhIm~rQ zKPnxF86s$Ff__MKcEjHT%@ip7(}$vhV9*sox?mqaaDgLc%`$fbfwJHxr9@)OC-oFs z05bD*;9#7Mzf{W{bv2B9>4cmNSK*eU_hf-$T9FqxMRU{{z)Dcwm9C1$13=MhvGT8JVbEv&J?h) zQrDVj+vZlFHHm6BRY-XA1T0t837 z@7}$ejfVM~hOk9z1A^{?CBhRffaB+_ni-xZJ2YXUHwzi9l(@&r5Up;mM?Y>hJQkAl zXG32e_#mk>ZY|!QyeFL3U?mnzp77`H+7u_^W*;I5>kO;2u*w4V-zBH(;-`ZESiC~i zruF?YjQklX+o&XQ$Cd;BZ2m!9Z%Zn}2ln&T^)X^$#QErcSjL5xxjI94 zylK{Worylc=S2~()DgG&ssVaT(O4UEDpNq-j+D7Glxu=^t_!Xm#F>GbRiI4 z)jl6;GT~cY_I`$BsUo4CXDj1hZi+K-F%_YVE)SCxa3iXy(^0C9`0=BxxHUzj(nt`= z9d#5!=snJ)i3(c`%F5TI8jJiw&M~nHUz1P0TU{i$>x5W=+ z7~}TH8GkKZ5n*VW-G{E>dXX~#A0+%ZnKyB6Z&p`Y^b60KunECN>QYKfg>xCfm9oA% z3pPyXy2xBn_J~~e7&?5lJtcrT9BZ+d5wJ=k3=;q88)!~?i4!vo<9K|F^$Uci25DhB zB?X8DWQ#F zR2ZwkgVrHY8U+}>HGdu_y>}`K=}>g3X?Ue$W(my(CwJU^3Bv`^c=XcUv82OTsqr@R zUck;Fsr*WD%)@>X8ftB(gar9DIbqz1>;jaKkM56>?x-cNp%xZ3F4YE4QCw!$MhAx`tq!AOQGz8&y zr>7qZKV0~8FI-A#Y1I5MJyiIZpRi+8#!ZT(la?<^35UZICCxY!34Sr>Z+l!Kvqs4JDGl-V6-=p;{! z&MSaaEhwRUA5J~7z4{qr84Q*C}T&y#rO3dLNUy{)1vrev!Re7ugXJJI=gtMmUnRYFQNLVzM!S ze~=6qORDw4#wmmLjeQ!S(FB}UmBJ>0ttHlWG3Eoh;~7*$JVEE2hXDa(r+NjfS6?ag6a~ALg%~JX?>iXnZH-P-E{5>*N(G3UB!7lI42U{RJ1~-?uSi z4r3iNVWSB~akVMNsQeW~eIl206sI5jTB>Z>Z$E)tPX-HUO(tf9CJ2#&8>pnK6QTOP zp_~N!)_TvH8cmc9WSNhVUU%HDls$x@%+xauvJ0cLACpz9!6?9s-uCcv)wMIEdqxDM&3wkWfvZi}b@dZW2s*k-dkEe^Wxz{AyF zZpn)6XDbcp$|`|B`!}K*)wjw20{&n@bvwt5rm<`iR}~{WGj+V%0pWco3N+}lSr$d4 z3H^v$X#?=br?3`O8SpAF^tTdDTzel&hW9b^zbnsSXgztmlh3JPf_4gJoZ`j><^of4 z4=>=7B zy5uG2Ix*_7AI-lVbE^RPXQ)ONsuLD4$D)Ooovow@5BfZ8HnjRt$8v%_^3Kv+$;%Q} zZS*a=*e;Ln3A`$%bN^5-E&?`#@kav@mIc_og(dX7{Zs1b9igIJ!B4;)C)xK0r&m7{ zeRORheu0n4C7UJYeT!FTa0ve`1xu84DCdsRv^h&F`u5-4<5nzA#lN*3ss#u<1(bow ztSVe=e@_>U!miniy#Si>D`J^qgaWXBfOGQ5z0#pzu$j9AUiP0hj?z5#1cPY3zAU|~ zbf+BQDGA=+Z~77yKne&I*HigZ-b;efTdzzJ4FXj{4zvTw~e^z!02|F3}h+)7u zQT;)B302|q(RQMbJnf#_pw&PE^^~y)Dr`!{2c4cPJ?cf=KdaAv#ORaBH^Pp(ldZgN z17e>?OqQGaU$cL{78OkG+lt<6;7P`!jCJH{fytE=`vnbBPGL8M*X0Pjc{y5Cq5&WY zOeXIuWTGod(|Db{R#`PYff63vx|^6Evla8JO(l7HLNpoz{eq#?bkS`7JbuZ> zB~k<`lpd-Du}IJ4q@R4vAL%Bv-{xMhSt;_>rFxztky+&Bhi1{7P83cHGl6I_f$v@p zeTW{MBeCuj0Fm~NFZ@#u6vR+RuM%B1T*lsWdDP3=4lRdZ$Rewq@FoKgGmR9{;~b@> zzIt5R8OsSv1N1W=Sz?Vg8gL&q2zt!|n?U#n#<>gsWe-)#VOfz~;v}`c2yOrxHZW-_ zY4n%>uHEENHFi6eQp;%9$tRY~v-35pLw1r#<_ajwy&A;94KgZ(3RxDHpEMMh+ir#< zvvsRkD9ZC$n_z_eiD~H+%x&&(O*KK3-jPW;Z4sB{SJ1MVK1c^(gW&;7%3Am-YFUqQ zLM-ZDtnjz;Xtudn_7uA%v&>7W*cETCJk4Lk3pnbfeSWKm9zZ8db07+<02!F%lo47! zW`^yB1A_JR4r~k%7OqJa(10KSqKdD~*Ep6~8BGWN4+(zF(EKln-b%~bF; zouyQeSjP7m5d#pWN$`B4G}0nGHTe~obnh{{jA##BptY9!iUip0Ue3fTN-OVZ8yw!k zdIHG$5ZJ1`ND5`KMvj=_g)g*I*_o}s*{<;&Vi=Z3CmMu<79ALTZ&WR*&`~J+`CS%C z?Mf8w;SW(I%TaCU&EjoT>09q+zaK@3!~xZU1f+f9OwFTzNxC8tcQ9v|=cSh2 z)Gw1Ow$Uorva%!+xwm)H@B&Xi+Dod;!+P%K=ybLYm-?M6*MVSz?7zytRD(AK3^D!@ zl?g=~kLQSTdCe!RDpwB8MP^l-CvNkyhaPa+-rp#3FK&}})qH+9=(bpXf0h4muI4H* zT3|SemO87@DIDfO8MEqQa5kIR3@yn&#p;_WG12;YWSMZk-)bM`6I7g7<1NnwY66LT8;wwsC(<9_rXtOUydf+=$Ls&I1jnpVP%Sa5~yI|U}d(|*4tO`2l z$_mtsUrbz*bX{bGfwQ#d|1WfT!dPM2y?o>>bnf!a|RYu8QM zogAGQPCBCVH!CP+d?W~)-q#?TE%N`A^pKWHDbj3I$ItG*Xh_C-05*EDZSIVjZS?=fM%vA?c1M{7+o$( zGbInh+uEc1!rhMaxJ_lwC-1`*GskcDTqul%4Cn#ae82^SClRY~#zv}VJ!5RSc{NYvSuM*apoxn@s6xop zM)7=%97f#M_af@`cPIcCTPkiuF^_yhhW4C!@7>P5AfY^&!z5>wJNb@rc)0ici{gcf z`EAxc54%BCOsercDX4yz<|Uk%Iz9+)pzBiQ_S!i1J@i`TM~5m`Ix>(O_J#Z4T{vm* zkfW#QX#@jb);Tl_D%WBZH{czzod*Xn41UtdmVaisU_MD~UW5x-e4&d#t}`@mieZm) z4iQE1A5k$QQzQ0s61B2EpWH~o%0C_!r)ZKpvG!UNLW)?~BlU@?(4&w9uPW!1j8K~e zD!%NoahEra^zhM}qCAqALbA{@5`0#rQnU|A-k_H2PZt;Zi|(Ze%BF9oLt+doJ}Mpt zh0I`qRuQl`MEIj|sku1-TQvd0fgh({hlr9wicLAn0m_JqWitiUUa>L$j5b=Grw@~z z3&TVq-?z51{i94?`my_4R+Eo#|5b^G>5_Cu_RY)cK8q^6YJ=>=-H6md6I)lUq#~h< zw$=_UN;^Y!!}cw8Q(PT{Ro9;rP0*;XPKA{j7hQd)u^}S>geZwOI6O1#aad`^Bhm~axX@g8-d|;?GyhX6KLhWYWqaMc-&ddq##Vt=2md% z#sK*Z55iDTE;J`@S*FH6t*t4`$T1FJfgLq%F1C)ylJJj?d}2clk{oqn!F_I5R|YnOq_3B=p~arMMlh zxE}i5$9;aD>??E%j`e^DPenPtT3|}daE$r2!kt!>Nw%ym$`revVg~piPp1hbcA-Aj zYjec%AD3E2|NO?9MF~LEwBqJ`)8}|X!Hg1Ty%JFtnw~Z?9&S2H3NO@lLSJ!HsH~N3 zhE2jh$Q=sF*dy#IZSsd)lzdMxQviRg3wVUq9I(>Do;(!^9P^+_jA&?(SUuXM1F{T0q#iNB~~Nuf;T!Rw`K2?m*7Qrs|IGJv8u9Y*2)yjQaM z1b%E*vV^UIxhVg5Ne~&Y9H;e9_utfZgh|A8cDK=rw|>g;ilvCVs zT8nNtwsY9=jR_PVCwNuzEg>4{;L9v^oRrk{#R(&5@p0^|YAVr}qm?S@7@3;s9^Ihk zN)Yhw1XnNJ1)S-yv22~KLyv(p;TgeGQ&{a5RJ4U_f^F}ZtWE}*cmFI^~U5|GEUPQaXF%k#2j&I}L zLX=9w0_V5>D~qm93&CnX_#6X7IcAH9pHc5wncvb49zPFi-hiipmwu1K_XJTr!O$_w zg$1~#wy)Hs+BMhu63yxy0|C5A665=!PHkKpj;1a)|EXqZRh|tqev)eRUo`-()lK=P zHzCmEG$}F7hyRH}!+^WA!fMtyy?dX>7pEoY@)(Y0vM&o>E1HTLqRAUDP##NH`F!M4EkEbI(Rzokk3 z`4CJWvaH|gXfj3xs89XH$!tn8U=sX;(U|Bct|X5+VKpaNGa*1tVqz6r|~t|UN_)3yx`i?w4G z8pi9HN>Y2Jf%$6rm?~Zw_nDY(_fAl|wk&oOp30Hit+|KSSB@-rLtlpfrW80I z%q%r4;|XRqZ8o~g{Z4Vz!wPXeoX9A_RK0yffG4!kM&SAs=j(uX74q%Eu}Y1pyYcam#cg$XAJ>U3wy&i%AY;7=& zn|h@TM>?9_JN5;P<)VO*gQ--WkPazFlMr`;n+gmHb1K2|H6dk{+~CaW>U7H5g%FH4Cz_bTOqhtFky>-h3O315%pvTHb;5u>4lqKb#2csfg?I0Z0!km+lAS_tEbJ7}+DE7BG3)%qyuP)U=Nn zvGqQd_bD^QmY6b?^;4{eqOg``DY_-1$7JWcW(0%#ue~G0wlnYziWegm5By;kJ?p(` z%K@1~=cTN>jK{?cefEiv4`dnrIXw$9emG7YRXz<&%LCt{jI8Jlr z-|5;0>i{%Nn%eJP2fZ0kuctAycG$D3*_vLAq|*Hz9VZ%L?&jWJEusbto8i3YrSeq_ zbYxWx&W31#RWK4l4|b$&oH_`wm~`fmmDJ)K_pt+|559zDzUBE!ly=^gA=!16Oa6tX z#_~7~u52B7V>DuKul^m)zuct;nd3ds(hfs5g~GpgWu)#F&%A zuJt+W*D$vz4Sj7KPKG2heSRv-5>AKrt;TELb|MrwU6vj_WZ z=1`nes7e{4|FsZGw86X}$V2H_WXu2GnLQ}ZnILBdD1l4CjOb8CWJQhqWAqrM`9Zt@ z_@4KnZCccG7)PaEP{o@>PLpqcgkg!$NXt7&?#J8XaPpA7~WNpbH2^; z+}K|oZQE7c#7ZG?PdUZS8Y^?_wFkAz6Stz1GL=N!pI-xqj5+drg1}8Zh^*8ul_qld z1S-H}6}lgM=Qw?)WR@i&n^iHgVu>M>Lmyb_*>ioIh^sR_lE>g;#X#tQIZa{K`%bZU z=_VN0zq@;#CD*7==Q1`9NF_i-djQFH=5P{7BBAI7DIVx#?|D#nU1>MikY0X|l|7`a z)lhxtjMPwtYws)foVYsNViZD=)VAF(4~8}pjHGJORi|w4n4&F$1eFVaw9iWVaVtXQ zE_BavibE~NWr_sT^;I5v6UN;f+!z%+34ZrtMY7-95{S<=-Ah{Y!;2_z(?MzWddF?X zjcxg~P)CPw(zrMH_4{EB2I4-KiOOLekd|XRRyM<#e&tztFD3*(I8P?Vh z!xGNP8490Y@dMmzZt{Xj<3LeEM(@88?gKb7jOL-9zULrQB)ZD^b+G$aZ!CW7!4No) zEba%v^S+QJmU!O2Qq-bm9X(x&cJI(5lqXtBVOG-bv#K_b7&JqP0C*n{OWvU!3dCar zzLHFG*)fxa{Us&H<(tyrc!H1$$`~$Qc;>a+?pAA=!~|2M4v4Tt?@gvPY+1VErSHxh zD}H?J+qX|&bIlj^!!;_G&gsG;<7qp^{ELhI%s5;<%C1Nx+Fb10~zX}W6Xs2lvd_UzQT$_l-U7a;tb&w z>QdGksfFfJ7whTD4vPsQfd1 zE-lkeAa#U*0~}860iir@A33>sMFx}Gpi6R(Y^PCO=gd`KAWQ}~7MMjijJGGf#@$p9 zBsA4+SMs<6ou^SES{mzDpuC2y53*Z?r8lPoCh8Ytswe3|B!{WkKz55k%^s#j*+XNJ zRaV+_Rs7rbrJ<44PS-%h`2yF^hyT-fVl?N0M*@Bm?0Ste%=&JpZ-szC4~&`~d+{`l zC0BOj5gnUBm@{M%0+^An-J@4S{BylQ`KiJDApVFnIn;#__eL{\"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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=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 comment=AMSTER name=amster.vados.ru 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=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.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" name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" 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 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 list=Trusted-NTP +add address=1.ru.pool.ntp.org list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org list=Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org list=Trusted-NTP +add address=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 +/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" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 log-prefix=VPN-all \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole 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" disabled=yes 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/20260507/20260507112002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507112002-Diff-Config.rsc new file mode 100644 index 0000000..537227f --- /dev/null +++ b/MikroMaster/history/20260507/20260507112002-Diff-Config.rsc @@ -0,0 +1,18 @@ +4259c4259 +< add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +--- +> add address=89.110.101.17 comment=VDSina-vpn list=Trusted-VPN +4279,4280d4278 +< add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +< add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +4412a4411,4417 +> add action=add-dst-to-address-list address-list=Trusted-VPN \ +> address-list-timeout=none-dynamic chain=prerouting comment=VDSina-vpn \ +> content=*.vdsina.com +> add action=add-dst-to-address-list address-list=Trusted-VPN \ +> address-list-timeout=none-dynamic chain=output content=vdsina.vados.ru +> add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ +> WAN src-address-list=Trusted-DNS +4419,4420d4423 +< add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ +< WAN src-address-list=Trusted-DNS -- 2.52.0