From b7386185a745b636728293b4131e01a7ec5bb353 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 2 Jun 2026 23:40:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 02 23:40:35. --- .../20260602/20260602234002-Binary.backup | Bin 0 -> 255095 bytes .../20260602/20260602234002-Config.rsc | 3411 +++++++++++++++++ .../20260602/20260602234002-Diff-Config.rsc | 74 + 3 files changed, 3485 insertions(+) create mode 100644 MikroMaster/20260602/20260602234002-Binary.backup create mode 100644 MikroMaster/20260602/20260602234002-Config.rsc create mode 100644 MikroMaster/history/20260602/20260602234002-Diff-Config.rsc diff --git a/MikroMaster/20260602/20260602234002-Binary.backup b/MikroMaster/20260602/20260602234002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d136540811a464106f8a80b8e0a5d8ad1ecb8fc4 GIT binary patch literal 255095 zcmV+aKLEh*sF8DbftZvSI4yz@ey-Y0MZdfN000O80004Z`SAPzLv?si7k$Aj zO~kZc%x{HB;x=nXp8A(#n-^h-W4f1mE07OZH$%HW1C=B23I^JizIVPKX@FJd-n=C8 zq~P>K*5mH)FI)O*mYJw1zjZML=dITSJVN5;J{O7#@NVq)6MrumJ zOIMj;Bp;em<`Kqp;-?xt!94eSZnR!&0w-P*69ZxrCTDFuXKX?dOnPQe?9#uEM zsQ2)-Kau0|f){{xwCT>(4`x_&0t%U>DrE&gT3zyX2s*GoC&|H6NdU*GxUWu8SVr0- zUkk)~p>I!}nb(kY*+-r#gN#}PW}_?@wRPDb;k~wXziO7ND{cP?m-a~}ZFX$q$^^#~ zZ?^2ySfe{Oi+}BJ>OIvy3}K%ni-~XuZuYz3Q?p1}lmzpS$<$Wq8q$~Q3*Ro2hSY6w zY;hjQCaD*V_I)+NBMKal4`U+=t2l4JS@VHL(J3|p{4Xsloq>0s1WnGqEs zcfjn7-23LUiEV0ehbgD^KjeAAc;&l$libZ1EWn7R#T42gJ7T#Kf^LVbeRATR%!*2Z z+XSVRX$ZHuWxI4!r1^ z-2Z1rNsx2&M+DOxS=P=Q#@(+!)+c8Lqn7ggLd|Q#g06jA4JkBxqjY+HZ|BNnwzC41 z60KXD$~hz`OKcLnvT2Jy^_c1f`ZrZkJg%thg!n^xWYM6Fq7T=x%O|5&m-;+`x~eG3BbO-57B{%8tJ8LC{IB z@eKw5;Me2;L*5`eobx~eE{aZcK=?&WUTJJqw!xXeB}3tgnguSk2uIJ}6{AYJjpjIZ zH|-QA%%GkDdPqcSpbDri6C-r-9^)o^jvWtse16FR33Z~BuO z9rSGh0=T_QV&L&BZ!R*1uZ_X( zSFx#9F3=>nRPoa-tCQ)OJS}JWh0+nnCqr^=alT}LbKZ_eetKDj?)|xTJx{tkh zoI{E#V}YGTaV$!(EtCGw^=FQN26M)Kml!g2wSArmjglPjo&R^@nDZWBZWr zm;b#Yuu3uF4LoO^7k$73KvuW}g>4~(O}TGh6Wb;&S&+MkMjqO3STYNicjt0a~Bm z!rdB*^m~}s`(HzRBauP*T$l}ajq!^4Ip0)fg4Cng6iuvNTT%vNu(U= zjse{W+>8r~mF(sH_|Fj~D8&i-K$*erU99iHI;=~_MjTdsoB(ZDRonjZ!rL>`YAJOB zl@w~d^E#U6ksYF*U^oPG@?igv@K+gff|o$#k5Q<=%K|g*7K46B4Zp9&vcNpV(*JGD zP%S~JW*U{$ zcyE9M(WQ(OeZzPLPYh44#w070L{z`00oph)*(z%;0Lx#1aV_HPB7oa|MBSFZuQY2s zdrO~n#7?8H>3UA=IID_q&Hm;q+vX+*&f64#@bkA_6YzD1I(4#k<+w84l1H~>Lh!@1 zI~#emO?vev$#3tPyB8mbqBh8%j6lZw{>)Rs*OqnC^zJ+ zV;(usG5l5S?|Ulv?}%v*Sblg?ZLh<*ygCx2n!@LUcYfoHKF_$gcyi`9^j7-C4ZvwV z4vi*QQ$uD*qI_9Hh&TO%yW8}2t`qC1!&1fND@qw1@8zNXh> zvCycbaove$g#IOxIjL(nGoacfC#$8NFUOqC&t$i0z=jk0P&9!uv{91`5w-e`BHamk zyjZvpq#@?b7KRPW-G<-PH0W`aCO68)yeKku30cjAgH1OIrcGc$4SkCSz`k^3n#4>8 z$l;)VV8YVZs$D$t>H#-p`X*45CV5jyj)U&cq-)CkUwFtB5wA5x9QUO7sN-E>FzsaR zWyl`8iBjk{v%NK%(9|H#ha8a;cX%?9z@lp88?H?8DBjH+!>4^Box_@XXuZ|_ zx98tk^$PjwUK~m6Q7q`7y%TgJ+?6QHmlTLlmE&SALKsM~>JF4srJNmE!@zb~E`UGH zM<<0Y_P;hSMvScvhWw1c4&A>+S_D_NtVG*U{C|RoI&+R26r!V5Kc;dKBje?(5GA*x z|5d{U0i_*O!0Ar|Tk|u)r|#4){q$+k{i-@2S;Qk>c~tcBcIHTbK{sukpp=`OQB^}m z7&voB`Yw*1{Lk$bHnPmwePZL}LBFyJ{w7!y55kgS#pt1vQqL4jxHU8V9f?m!_Zil} zJKN1moa-t`9&Dyz(f#I=a5TFO)yIGsPXx zKGr>$OGBm{78XutE7+R<>gxj)Koz|h_)5RRkckZSyy3pD^ASennxYeU5;q9%n;)SO z8d;)DY9ik(k6R4ar_)X4inTuJC1K6!m+3=hL79kyW<;1}h=HmCWAh|o{ zR#D(ykNpQgH~;F!N$T6(irZ@h%}(?P28Tp~0C#xpHzYDXT+NZ_WM{WDC|nPb4qaWb ziypdwYVEfa8*42ncj-Hw(7fWS5p(i+95{6s<199)7%;t8w_67OsQ3^;wvX*5jzGYS z!WMJSY}>VziVemZ^s*r_Oe~O3^S+A6bETP!0p3YcphacA#ANwF$X2dK)2||rNaEAA z{AC0YJ+oEyiS>rO@pZ=4%aKSWwGiKUyyjyU;f;@7MJsM8c-s5_64hCms1b5-@}`NA z`4nG!J@mLUWN4y1XjK7qnD1smb``Z04|`27W7z*knWPPK++R(9e6AAjbm(Gw&6kF9 zyO&RB8GU3b+|VSC!)kFZ&^AM;g+ zB#0hgD;3XaXE^=e?v+I*`3OGXa_pIz1+4Z=Ea{_+>!iG}3S$LuQ%{$&eBBHoXHPn4VfF$k^<4FJ4 z`87^Ma?g4{e7ku3%!6>&BFs+W30`Hc+=DC&!JGAHPr z-8ae}>Wn_Y2@D>jux_J|tUBoSM+eZKgY)Xb^lJI7RMMzzO#goKsG1rDtgY2Pp~{5A z$zg&1Ze*U(Ux?!GMYwwmu@5M)lv-9n>A10AILy+lKVD6ixyCx-<;!aXt?l zQMt~FHkhWeb8~ytM@?c*gQ^|Bz!On~5{+^Hy3?8uwv>*sEP+)e)4+pi#O4Q|e zkmlYj=wr?Y53e6(i}DkxQqLPS?V&Jz|AOIo8YpH*Xx&bwf)+o?8?zp1 zZ*ceAYeM~`!&sJF;j%bvpz0r#paHL@3lb}@Uf%j1!UrQyXj%1q!XBwO@L{r>v2?JS zLnDKdS$WoM)d`S4S< z((7suMCDZ4{YOV>YP(MJFpWT%{9h%Y)`_#K4Pc!9ZFMFHqweuzAJaKUbn0rNURwm zbTyA)6XQawpGb_+{V6Q=QvHlyk11+e6K?@J4^s}~omnTD_M+6i;KuvLA`>OXsbOL9< zaI*u<7Z5v-;`QniDot)@W(L&omHg#Hn)^?~R4VeBYb`Mq*<ps;sgDKQIPXo37pALI1ib+1`r^(c2hG#5Jgt!R-34z`AhL7qWqOZ#O zBvfp{Cps?Z@X6oo@Mvpya~|JD&X#mm5q_I^)d~4stP)JaapMuxK>=(fVNmMOR25%c zu7WU8eHYI+-m8Ms&O?XOCSj2SgTYJdUy@X23Zy zQO>MkV!zzYQMqK&ZNsD9Gv51z>mH&@oE{5xiYTEUi^n1a^&fdsB>i?_39UI3s%fR+ zOM0Kmf34Lr8lMJ=MEM+~i%5dzJMn$+Q2GT9-pM^e4F3Y^7V;IoynEd4|B6Y9e0}*2 z6X!Df@!x1$M+NC#xiGl4IOm;cl2sXfXu{46`~`A(OL9xHL_iFpm{|uUF=pjIw;|z`Qw5?oxwisgLFMWKpz@NDr z$l@QOVTC)h0zxcFUx|HDAE_Wx*04`uvtNuXW)MSC=S0DmAz_0QKxVnA_M@hxCt8hW zsmT{?B9qvV$2$Ckl@i?pT+1}f`LzC*3*uk4s*2kVD)^eXB=X}T<1kZy7TfBRrW>;0 z+8uR~*P8?qA+QXNz|pj$iDf?3qPED@i0#s$#U~z1oqT?D`3~3*XjfzdmhY|`bPvCg zkyNH&6M+9#ACZpY#^|yv^ZnTDedxX+SIZ3=W?&!ZS8+2u&Cshv#YMeuU%4_;w%5au zGL-Aj<#aZk_4_MmV12n4;1k80GE>*46Blo5A1nFvj7qi#_sM7is_jJ>pP_ERs6&364KL?kcjtPC9V< zu5mFyGPPUOp8bd?Nq6PScnobu@DWZWoyR#qjo0>E4XesF$%SG^)seRVC%T1%7nIRt zu;jdt3h~h>!gk(Tx&^ozv-MXbd^#QQmI~di`%8F&Dy?%d8W%>ssl@;}1a=t=+F<`O zc98%N)It}UeHn!(Wx<7e4>rKci?kn!$%v>^?a*e~yLemJAk2x6dyuIq-i)u_CHn?= z1}vjiVnbzB1r|7?E+A>FngT?0 zM7djuheh2&t=@HO;sxs~5S-{L>PQpJx?ZCPirABggpzmF^NM?_&P(G3_qxt{M!;2 zpH#TlSDMCI>Gd7^KKAA+^q0yS`#4C{+AWunX#r2^+P>dw%wW@$C>WCbRzIHHxp0sA zBL1I?LAX|SvX(Yiu+{-D-U`4u+-4s@)dQu##Y_8HHCTM(TTP)$E>}yew^7$|KdVPu zMnB6mwa?-wB-PxUEYNXDYfaSa(BpqMx*kurChtA&ncT`*UytU9-tF*~3g-*ysjzWF zr)|e_b_)w^zb`n%9YYkhvYedKeBbe%vKx<9hqri`^LdERl_?&h;!H}_lr!}5AqRkrZKV-or4Zc}q72QO1%K3!c)azx~LoLzl@BMxY z+q@GDH(TK)HM2%KC4a6^4ciIvRMhonec8e5F@e{t+l-@8Zp$3XYv6^hI|6POs|X>y zzE*x7)Ov~XqJmZLWMzDw(d$gd!?VQ_R`{k3)HD*JP{yXN-36Hl^|VijJ}+jd=s-jE z>XmfnQ^I86Y{~hGc-&fc1J`o5@bU6Q+g+@rxa#;gKSvda2((-7aWKTflzw#NWq9^} zTS1t+TN1M)sp%GziGn=^N^Fhj;uNa(pUG?tstN!D#6-1|lR99dWd}Z#@YxWQJl-^o zkbTykdMf`E|Duf{ooNV#jh+TTMXL{~UVh-CO9(UUN7YIdss*Iz&}s#Qucqq7KN9sS zBC@NxVL3cft@AI;Ffu4*azm<~6bM2djN2=2bT#+`^&%);r3vNyDH;T$r9z=$g z{^c!F=G$1G^67q5cC+t(L3qvBZ3PgnOns33ZEFtO5K7Eb0SHVirh>o^L@0=KdAB$4 z49E;1=r+J9oKO)Zeew$?B<}@BxKYST9G}paV^E2~1p6v@8pwJdx7)|9@x+R*<1k;w&5%ue%Q{= zPz8dgHF#a|3SGRkv#757!>5)1ZpJVoV&<%o?@dh9D~ztn$t@YIXFw5&C} zR`E7$cx;IEe}FEh^X%?u(P#oKSL|bj>@6*8Dx{^!9R|?_fsv~<*Gjh@PZV1ri1(j0 zYvry$3rC1-n1yrrg^`H`V;{~{ zh$a)QeBj`cxHkYfEbEJbR98&U7KQywMgo5HT>Rv>t#a$AIQn^b*#!(PZ+T6g}49GUv*hZH~NAzvXk+S^G{Bh3X zL&toJGsb;*-0j|AK&eO^Fleb zVK`%vqJhrX1%idBHj|0jJW~^Px^#R*2I8jHTxov&DoaZbRd_Z1+tgk^l>7JVA2l0* zh*^-v4X-;hk7a5aTE0hfEnVKmOu;tH1UeuHM~N{CKc`B2>q2KGzgLfr(30$BtUjX6 z$~hZ#F&tdTl&Jkes8#W&SUz$--a0+7{Hsaa$Oa*N-Q9q7sL%{u!9#S=(^ILvfI^9oz{7vV#Fi2Ugw2(L+ajLLmhwn$2=P0azrZp}==Am9 z@)W|xlnkg&Y)hmtyLMUxN5rWjI4D2dSqVo%>32gX3#0GRohAua!9!IO)%89$mV#B# zq^;~M2%Cc&y~)^9s<$$FH(0k#;;Yn>CI-!l9nk9G?*c(1 zyV*6+C~W9^>Rsp}5S!0qv2v{{qfUCHsMbPjttK_KBmYL3xSt0z0Z?C-FaCrDOc$T_ z`TAhGn%qD652NyI9bv((fwr_h*)g8)%diOL%HMs{dDzYNGPb(gZQ8y76@D>}dWu7K zR+G&K3 zRZMIgFeBrYwkeq8Z#m1<9r~z#_90AmDBC@sNDaoZy87Na8FuW6)jy+J<%5~0 zM=Fbjh+o>G$OaX_6=hkDP+%p)KmJ!;k8NG<80tkqrKb+BlDl6`w&%h+REK#6dx&SY zDgu^q5ELo5nQg!)6bYyV>ZvTb5NcQ`Q&myPc`+Wc=t+#3($J*su2C-nP`Nun9fTy7 zUFNnvX&mhm9ryW2EtE)dKy)F9LL->3RcT zqd%zN#My8>{QzD$Zz7cRQ|%J~B&TML4saCxWR2h|QIYh|fj7+79pkPlKCpQQmzs$x zb3*;=zq?I4!PDSInU~Y{E?5Ax)XSj%!Jy$z4_de)jr$5i+JK2p z3G0Ze{6%p+`&5=@2KV({j+I0%FH<2?#)*o2(&~6yeb}Q-K+gU}ZkWEu5ei;0M^q5c z@ImLnijFnTsDk;D`OKD&=_qn{g6%J`e$w92ukyVu{9+~W7h%XX&XiykYf?unns1wh9c6Q*Nx_rWO-W;$D|)zTPjzFBtaLUK-&veUy;L<028U&|`X~s(Y+a?KRbq8X_({p*%2urnYiI z=3m#WV(5>lBYkEl-7oLilKNMLwlUTU%7#);5ek@}|3s|snbvc< zz|f!PbEXz(m~1_w1$3;^CtL=>{mVpgkBTl3T7^An{4nk85)kB@mZAnN6 z?E)BYIGG-{xaxmJc3yorTIGCpsrqA_RY>@lq>hEN)UvkY94FsD4SL7wcl#p`KmCgk1!)l^baKf?zyt)F`1v=B=eO@CbSe?Uf?;r&+IJ;8%|7oV1; zyqcwl(mS^S7yYUr8=}xx-vC_h=lsTfD81*dh7yC>xyuJv+FKLzD;^Gp8jVovH`wCN z)`)H$Sez5seMPkFXz%B($kda!x^NWkRSpX%KMg$y@FYo$yr+q$864U&7 zQ)&jl;n0Wf3KAF?O9#Ya(i_HWmf&&g-#&)ud~cl7V;6CilwJ8U`fT34Xbw3^hI6tg z92i)>VE6n6rhgeti$1j{tRsF;Ju6jHCS-(p^)8!it)nNY4p{{AyfTD%9HlCk5Zw`y zhC)_n*4he`ySj-s(rA8*Lqh2cX?NfyN>Q#Xt^g*Fui(yq_9-;Fp*5;(FQ;W~d`l`k z3hOV0W(TACetfhvq`u?{5IguF51@i%7SzhDrv#C(;&hKYU_0x7<$CTXCw*AxXOKE7 zCo}KC)`x&{Te&S6UkaW2a%d8uC-1KoRF*@Xl^!~z6G@AGSz+wT8z4>uE*CG!C)Hu*IKay z>Z-7c#}^plj2H-vs@_*_i`438_mEh!%*zK&uHsz89iVb9QU@Oy9ft_LRUj;o$^PL) zmi>4@0-v%FRB@nO^t=@-#Tdom1G_~6aj0-nx7!-hG%azcynXN!D;5S%(5)|E01BPW z*pe2TiTF8bjTB&R54Z??DXdpnUJ`T_iEvBB>(gJW${&0%9@O z9bq?t3M8u_rU4LPpYKL~5k6Sc2Cjzjzm<+^^ppT=<893+#+WiqjZ}waH=Jeq&!Nk& z53t1(-M-?LjENQYP^Ys&yzo2){4kq49xhw%)sY=O(WG+OybJGk+TmL`{D^InMsC+U zOu;B7-QN2Ub%B(p2>y9%^aZDq)eE(nz)7(SA5%s4nJ)elWLxku3`hX{`USxK$VbUr zQYdQA#8VB8t7nIyq8QI9Q4N!k=Phk6nX7B274w)!9AQc>{Z|0zpN*j21ONBbLOKnJ z2n~*!`!CQxn>U$X;i1%_0yOw?t>Fh&9W|>G1Mr%z*bQNb&}@TVJjEu2Y+BbziiPuk4dlH~9;8ov&uEyo zwSvCeJrd^oW9BqgxGtQi(PN^a#b;Qh^e`NeG>0+=*N0e6Nhyc!I+gG14;rC+jRf7s zuo9vDs<}YjWYwj(fF*Wnqq#xSF|`U@5x?8slR%OV{arvRvt51@dk z46a|n9C7nF=rQBBs>PCPAR;@UUnbR>R} z+={i&vU!~wPr#olr0?B1qfK79F22XA{A@HYY0@as$>tR=fSQDAVH6A@K^<%z=Mw8^ z{H9362@Ad_^<@Is2~BFgF4qP_<;guRQD^q~dqwLOmRtN9uYu2-)@oA}B-iv%=uD9x zD9nEw{nlvDk}I{DCI2=iVi$z$Lf&0qS%ZrJ0Q?3R;rSE@{P*Ll4&K6`xO0udHteKT zPYvxcU_N>xkYzalK|CB}m)w#~{YxorMI~@?DZBYS*B1<0mpN?$6VYdzWc9g~oNv=H z2W?=a{E<8TqzPDSKlxeGhc-mfu?$)D3fKkiW72J=KrTqnV`TR5Na~0RVno641I01a z+FIMABY`I&HJp70rtna0ZaB8ho&M=f_DTFEsC(Q%CtyAYD;zwIHU|0xnnsT95mT*e z7Q2{FKrkY_6_15rWE)33-}w zfs$2Qlh=Lk&t;M$8Dh~IDSt)7Del5;BcAhjy<5=1WzF8>+7O;ey|l?idoVsNk)i8a zK_RLqqjgWH{Y^}er2j-rB290?{NIlc@~k>N#aP>bIFl+{b+uP>d_*d`6UtJH1(Y72 z^may~G11cFK-ev+FBw6KcF^@rrKbV$M(5_Q2598i7vAW)T$Zr#UpczskSU%I<=cOz zDSL@<1)Ba~PC~*^XhzU8n#0TU$`NU7>&0IjD?e?%>+=8TcjtOp@E{DDaLXtpRT%=_ z+D)k$iqiZPmPNxJpIEHcBzSl-(7-1LRaPIq;DNUI60FsvNf0Sc8(WWr+SUXiDwj^_TR$n z>ws;^OE~7nC%*i4OlK<+)^s;v60GNXLJ*^tdB1V6iuJ;)$N51TV^KDIu;Qn;u&}0Q z2^Xf&pw{P#8bJXO1c>B2l`K47|6|i!DsGqxKDD6<#tX{wo!x|eslPcU4_yqOoP_Kv z14k6vq3qzw7d#cV$ho6LDW)Iy?Vl+Q^kym0xBj~wEpa$8xteVZ2QjGMsMkD-QwBhM zgg{c(Ztv%Le0+W=fgapsIe6E#{6%4A4#CeegdxcDo3~5QY0ZjB)2+n@&{|l@dyb(< zJ@9ehiB-j>5^UrisaY(+rSZ!Y7){qH5_E8sG=bJmQN(E)fi zXGiGagh0E9^?;sd^)+{pgDkKkBPy4iST+DfwlK%4o#H;^i5xhHccL?5j*-_apw+2i zpmA)d&i19{`Q!DYn8gn%mOL*SOqQpj1>JyANYgN$_-sO7i7s}5j@-oz0>l*~4D8(PJX9NT8ZW+cl zvO2=U?uIC;sHS%phK>d`-bwo`v)QY=2D2SBrK(v7_**bX-A)LyPt}OoZP(tJ@p|5> zgG|xdX^-eBGp-JHRm?s?Z?O+RqP`cZL>6w9y^J`nr-79Ea5R$*LJ-jKanHB^T1}3s zOiR7uCA;DpB@DVRIv{YrCFP3HU&D5SYzsq2Dy6oT%_KB^QWpCFqdETqoP+M;_OmzU zZJ!|JP4{d#A^J(l*dCGk$AU{cs!DlhA#mE#;mzp9eG&N}(Me%Ot1e+aF;_lc&*aDU zW+Ilf(nx&#RoB)UnWVWJo& zbG;VOm!i~9R&Koa7?^2I9nh6D2C(~^M-9!!X%DKO0n~zw9L;iBlmqbwbanC?3<4>Vj@b7FpgXY!U0Lp$IhqXtpYEk6zR+EGL z;+e$*HGvfuSHHc%PQ*#9Yk=M))r7pM#G6l& z%ic`zXqzfq3)=@PpcfhMJRPn@f}=aKSyI+MaBZr#((QJk#5%GEX$*NLgb*f9c! zkjS!P!s;Do^So0cZWFTM2%>y&GoxaKP)tx!E?CY3j1CvE0%t(_@Js9Pd>gJU*9UNa z!?ZN)`>BcL?_V)4#;7m1YS4~Egw5m(t6_*Dueq9xRK@oiW$YTrecfE~P^xcIOKKP* zjSy`pDP$$Oa_8R>;_-H>R%pd@`O@RRLUvymkmjo}M@+w_4FHZR7#T8j4U(H~b}|lv z8upd^TrDCc2k`HD>$F>LkvVD3%iWrQ{99m#YowXt1bx`e{5hyx^SUQC$g&>?J||^1 z&?trQnCg8tA5R{n4dRrI`=Wc1ST`w`Bght9j{cJ^L_dk;8gz%gBd_isLgQ{95rU|Uy+tmVhL>`9N)I_v ziN_#L06(C?gFnK@I7Qppk3L44^dn!oOhH$ATkJ6yA&e+-Y8#PQLyM#6B*izscRk8E zGyg1}lrAKi9FB;L4m>vIz(}jzUfv*N39HkG+wP23l4Wh2BZn(aMpo;)`HUV!nitXj~mfp^=Nr87*TFTZf z6F6Le!C(6jb!q*uxBV5J(b~j^B8Je=6ZYX+m;VP%4{SUl-!|sO^MWvj)}UM~gMxEz zn0YTdH|U4e%?DEwfwMLYlA|cc!`!sH?Tnu>U|Ya2C-!z~S0TCsGrySw5Z~yH4AX+? zft1rIM<@xq%S6a#!=@99x7LK7qD969Q+xo0Smdj_c($>~_+UF47bpN46lr@u)uLas!)vwQo11EnixG9Rqx3W7FFFQNYi@t%vs1(kM%WB5_xI`|$i z&97M6fkH@kw)G^EE3H$ZAuMXXoo?I!gp|AGs~$DFwC#uWvvviYIFuZ)(i=j* z6)E2WVHt1HC=41ZeZfWc59qayNhJ0p#BGZ*>;}x zr4v-sb_JZmxxf?{g$oVnv)p9j_mvc7nI9dB7z@~7-$#yf(1x+R{WzUo+A~+1|3Hy% zuSYe(F!NGIW&&>MLFlL?Q@nE`_WTHN) z4CQTWPRb&X{BS!RX45kX=uq7H5>F`Y&Kk|_h?06#?z4%8&S|NCf*cpbxa%w{9rrVf zN}7Rw&Vn@$#6ls=VA`Dar?v36r-kx?K#5nX#Prm4tmA|DS~mqLlX9GmAWkat<~3U> z4nfu;UFMBkRT=%$4P5Uur!L%cTO7jzg(`yQPt>PZ_@6!t6%+)$4F{u3*~dQVZMnQm zom;c+9D9;2qm%}wXKUJtLnHbJ!)~QJ4!1j+NWG8b)_@Y!WOwP(qXPyDdqR? z2kq!!CXS!`G5N7_A#~q1Y$FTDTo>|I-nHppROB0yumrsZ zq^)W|f%~$iG=h%p3IpG#f|Jz*J%*sgU0fn{!(nn8n`;jgj5~a7;}BY;ePAL}k@pk; z+{HEn^K;3dHvkn|4b~~-1*KPb)9kk}o{j;>Msvxm-@(r7AW((z4gTto z2CfA8AHU#w8}E=ruEzRP^IdMc6O|uY_qj2qOg#P5VB(B?zprYqeVdoh8YScJLn1P| zn(0*o-AnS=`5xYI&Z6$I>89YEHzuKQ&DIjT`v|}#K=UlamC)fUuS@Wz;R!)9>-Le&?9IY5*N~r-O)n|C`AEqYK0CQ=K_>whm8LxZT zd(_iw#W(JWcB~rQ$Gnd@P~2hC`7F}*8CSv{zwExP6f2*EIAyS(){+(F>XuJ}@Q%-L zhVFx{rIl?>IO&>$EOmsOWWm2#)M)I#2r8d6E~^Czy!Kf2aVxYoJ4tHuT67}PC-!aEilN8_ME<(4uH+Tpzr3`21Qrr2p_L*6f4kb0LCwbEkmA%vj#^pb?uH+!Wv8eeK#Q@qYn9l_ zdGx%OW(K!QIU=R;Qr27@F^f@jtzc9QxsMY#y*&{!c8}M*@o_Z!MR1}%A81mS;6v>y z2pW12@6#4*EtZ85b|UVf;zWlS@$&5VJMdw#mjz z?r&^pcvXq)7a~Y&I*c-~y}dir;L>0mcVq)Y{$dlDr&l&eartP+`-cq|>u9-7XIgDbbecs}PSHn1J#vjs8c=)iq55yjW9uBS zV2cV9xJD*>!2H2op%^PmOX#MI10u3%n`pMOx_-XVw?Z@&tq?lon=>otPKYlqMYMvv zdR1Y+YraI64qAhU7@-o4Tr~2>j2^Bn3&4c=JkuIWRqZLaAnoU~X9q&}RW(Gzta%JT zyj4I|4qcYEO7_tn3=MfRTvr}Nn?++*>zclRvOM+xsTP4GoSSG_THlknSCJI9GNqZX{mjB*d zZF88f-Z+BznMhlQWWfS>|rxMI^(lr!}=H|4W) z&h{f|VsZ?7E`TRBXR}{hV%FnZ;0U*C4F$v*ID58`Bj#X6KNOAyTUCVXdzJdA8ePY6WNr#?IK)?toFcJlml=r@s zFZ_Dy!l0&H;S``=4T{5{TUnli80nE@!!K$LPl*{i$(^IIlXYLPBFfqcA=NyU zmq)1i3{i?s^7yZ=>y)c$G(B~AJM!QiMw-7@>!i?*W+?EJE2*x@wt{CfAgb1QA{TDX zz!CThv={k4&g`Ebz)~m6I^6DgUX_^#;~E^Uraq!cnIBDK$)hfp=DQ7E^atQEbz|T&`u$H7oj`pjIfQl z>{H%ccyZdp@Rt5d++}A7Hog{5`51R@!#- zzUaw7y^U#+hwLu1+(3q@+HD-Vla{scJd9bNMgOmi&#K4CSQ1GK_NpG*g(a1>uYP9zJt>=&~3Gc!!4C z?|?2Yj&1L8`zA>*Yz76OPtTLWW!f_hgSvaFEqk8Wz4k5+diH$@&rnDaXHNxROYTvG zYx0051BB45=~+T5+|WA&^xWXx5D3%r6M^A%C!d{v?43#Mr-Y#>|Dio2m@47^8L${( zQL{+%Ura*IZ4wOx#U=`87GBgjmmy0PdW>GKV>#{0AAo(3%^(Ds_xwuVzQ2M&4Q&?o zM;hU6G#FmkbNFN4SnkY;0bGePFYJ=Y0l7^Lti+Y(*^)KCU&@K@UAtO*G)}`+GY+cW z?@#8;cnF~KoWB77KLEh_`g}2RE|aoE6?2oSB;0(Hwo(pYl*~Vh1Nh=a#aw92?Zdj+ zGW3S=>wg+cdNvILzB}`|B4P1US8&4I$QNA< zc=!`;*8hC+ayteTU?0S_UE(!3g4`2JD)^1?>=yAL zScZYJz0yXmk~l!6Te{(p$Wv$LiVV^5%O`5j{B`BdB$XJ;r71d(;12(o|MMQZzOl@> ziQ1l(4u{j1tx@Kd_h$`fP4aQu_25l&)Ss!=_K5X^Ai#+5b*1Ixy72p3e;Tv46>=<1 zU+r} znam7=A@Z{3^XEkO(yY-7-Uu2?aJ|gNtD319%q-zS%W+oo>lR~1PZ&uarQFT4dE2Rv z1Z?)6Br;tWl=h;kqt9$=S3IqdeP-m(AZs&f@+dE#aS@Ca`{BmbW!axRNl2GYF&2J8 z%`HRKmo^Ft1^lM3F$pg>0U~=*x~+8}5W?cc-kG@~rCNogUij+;fED{DiMZngVF2;N z9+}4RB|1#X28#QHyR=RWIgz;XgW(&7nN+mUJA1aLdjw$A^7oaJ z(^+-)-VsaV3_6-oOlJU|W8=ipn%Y`=6PU7OT@sVE<%%w5=Cx@K>wT#87wRR^)w!q-@dnF52FcN=uq){a zzcPTX3U$*)`Y-QhEKVB5A$;&J){ZK@guK-qWZzgKiko7b75+4d8eB5tr)_lmT=1Q? z?&Z*V#UF{&)w#o`4@I@IQ{RnkS+=woXoFAGwU=N9Gw-jKLTXhZ_x|}bg%kP1kaT2_ zJ099&!>62k5pw}Uc5&G%Oc`wYHV9MFBgL>JE+9kVh;uFUqDJSWr=h{~?1;Q_FK9SL zdX_Fo=r%pu2y-9!SLNW0A_tKR?ra%>RwgPijBuPPR#tvAMRTTH(oN~Nz!st8*@QL_ z?r&1FQ>*9-+K3w2u>B*g78%1}tB8GX)awm-zM>~tz+FGo!R>zKZ+eA9y4es4K5a+@ zAJx;mWRo7NwUZC%C43h}_zS6I^{k~Jlc=*V625y6M)pYhDOVZux{vB^^S#iP3N)p{ zXZ5Z4L9HQ7@*#$^9`El*)WZL5M$+CLW_5)f_h5F1DQCQWTp$#Pd+&Js6L4r)VDH4u zjYt~9bNd%fbA2N!UBFkH>hFMg$n+#=Fcb0HJm(HUgq}Tk-bK?^+L@FIE@c4grc`YxBK-VqAGBBkxxW9&sb&V8s_7?^^Ksm4yTHg`G5>MFiTQ~ADtXtH)|dZ(nm0g2 z6t&9-Sug-vVja$S^%fPBDS%D!?i}EuwAuR7@c&P6O_q~j zDMwC+-0H->Y$erJ64CPL*NaI}w=6%SP`-G2O_25nb!Xf;-uC$kxU8=qSnz~P#?e|dUH(8k3GOnSDCZr+j9=(hd~;I z3C7-Qa9CYswDic2&Q1cBl$eAs5~GapO|4-!8rKB+i4~{v9Nv+<02kzyv^4Bt1Pxc&8m9FW&Tv*thLeEV+3RB1OuAILivw8eO3#C`@X*z%VeCX z_qS>Xueu)jq_<3crgJJB7&w{JqOwQB1z9^fYaidTVwpTbalE0_L!>arzDw6Nl*{sX zy=~P6Vbn1K#bcwDb)lvn#Dzjupj{JNm{LU`QSaE*hEsA^_vj*>B|vvH8oJSH;`a%* zg4V&M?IRvoAv#%Oc<~wZ+m_*B?*Wi{RXFAZfv|ltmJCzJRt+`o*TQoe&h_3lUX?(| zN6OTDTmT8vabVcf?dxBi%JqmSL#RD8$Us2N8L1X^1%VM9WLt9X#oFfTd?v%>k>0)5 zL!3J==Si!WY&sWHFxxssS94ApnUbTNX9s;Up?K?R=_l%3_%lchVVM^C_N}i#_az-$u#$1n$QS`+u6K<;@DV6#%YbyqAFi2Bp^MB|P{pMauvVnIW0 zW0nfIbHmsMD`Kp;v_6$yvBpNX2Kxt)bYxxj%Gi5lVM&NcfZgRJvaB*V!K(sWB?_Iv zS~b`vA{83ZQic&jjTA7b*%yTEo8M#rC3{!=KXGaX$r?^ymFteY5v6w)AV`Rybox)J zm=6jB{3VbGU_@m-dd5u3>l66XkCr+w`kfHz4VJ15=VGHdm=-hz^#=y-I9LzI1?`{! z%oxFYZZjOs0ds&yG4}4bxt6J9{>DOV+p#RIgMEuD^vkMKmNex8$8?gNX;c(4;IVib!iLX`AUraLZfW;MwB)~ zJg(razT6~(Ci6KK^0c}$#%ytqcP@-@^J7R@$7Z}gz)cr+QL9Y}B(u`J*s=^!F*C5O zi7zFJ7j)G^50RMqhVPv3Jnb>zm`1b%lH8jCg&zHfYy+A9HtfZd%VZ~$qx+G}@O6RQ z7Hq&;+PnkBQzPwQR^m)Cx|buvsG5jg_pPqTZz@9W3`V2QJZ${@j;wIyrjtoopwgYD9OE~m2@s;wxL6=A>gfB;wa*J7URxVZ04WMN# zL1K2IR*#gIx}*S!u&lj_Hj<;UT2XoEc>;rE?4eP-cDZapgFPN#k0ENo1_7q#8uA9+ ze?f;FYd!!)tqtxv`EJ1i=A394OqEjKx7dY)rE$S?r^=d^Ih$%kFRvEuCD@zlFzQ`C z@V6656A^{|R#ARuh(=ZCTC@<^fB=d)!Le+XvT<9_3G6UR}N?Dy-R zmLcG$IO1OS%mTQNusG-R=0|RvR6M7@oQ35U1tiN1;I-(H?oeL#6BG1DD`k2>A9dJY zJrGw1&MB+<8{w(iU#5IB5lL z% zvR8x_B$i^->UsDai=FmZji%XJtlee41H;4Eo*UNE8(b4*8r{f8#OeAet@)>f0Au|E zGnJsH%a#w0Cu%gs?=mdC-UzAs1j4t=x!N5$@2d99 zjB^oZUhmJ-`3XAXP5pbrt^RSDnlT6UCJiS?F??cjehhPl{|gQL zdwKg3lj>F1YV^wslG_vL_D9BOZQfcYdQpJMZY-HA(87CBv;hBiBe3Q)bn>mva~aru zp((krIQ!ri%CRL(Q_i$Odd;fe@DpORq_aU^FYxRlu5HJo3KiJqJNF!11=+SMKwYu+ zKeKv}hG7n@@{k0Tx88l-s9?R=czM0A;__Yn=25+ zL6p92ywPo07=Be$Eu| zK%X{fdX=Xvot{n)nPl&}C3p@ktxTjuW8P5IPz>W&`i|{d3oQ9A%bgk^nyv$nb|rs_ zV`a8~>?>S;T;1~L#593oq3QxRjGZ{!fNB}_zU9{FLC`H66YM1ME;uHux;GlvzV6&Z z|I5xbf?uyd0xm}mfO9ZOHP(D$>iQnj!5?8z*@IJYv3NoPy9cegNjDgxa_$H3z`j$w zEFmRGBce7ocndJO))e!uS!qRk{B4K@Ig%YvY&yR;Q($O_uxI?rjGr`UHhv)B0cCRE z^tIm&Vo{9HPeNFh*diO;k&T{~i-3b^vNnIlz5fD8I)}pQs{V?v_H|G<@3idI59+IB z31DVv*g|YP7hhA=YjpowfAN*Pj@bMuEQr>cNxYw$%tHJz$soa=R9H z<^QRz>|RDqEo*DQ*}23tvOY3?NyEL>sy4%B7n}P9Bld3JwDl%}^TouxyqFa*b(qDS z2f&#f0>R>7g=UE=NaP@?oJV38yRT@+_w2g!A4_5UNyJ3FDzN5jaMemR!uFd7UqSpyfsaqCG6g*wIgY8zof6ar z$s~B$%74t9`UDdtznGzmvi43ZVGUOwYLC-xp3wZ(mvF)gU!Qqj$@uC|%xAM?r`z^ol@g=vF2G?VQCP?BwYIwPrtx)3gURBVK;R@{+vK z3;W`@lL=@fD;&)XE@MwGKzUwnOZ!8xw6MmgxiVC6x*d^LT6N_0j)R`A0t}RMZ!tGs z|3`GA9yiSmo+U>sZv9DoMEkxjikFz@nlu-%H?zj9onI}}7|?|XHKR7n9_Zi+5dZri z4!UE{5|2#yW|q${Wqx)Qh?)Eq0In`d!4i`hA!01djr>uv(nZ$TjeqXPZD()E*cWg( zW5iNn@aSmf9c8u(Z_1_^g_Uz7gI;AN>St>XwioBjsFb^K>BMuV1Yg69pOXDlNCDY; zqjZ3t;5-e?_#1ae48-_8=SgMxV8A;~_OQUy) zB5ntU3Dyx5&nArc8-NSHa{V&0CDOWoNWX*cpM2hKXGREPNL>|y^bh+NpMrW#5f&|7 zqmL&MBs1YmjD2oD(r|R{#5ELfyg=G|SswN(xjVg@*S`ON^%=O?3I_^LFs7VE-n*V- zQeNmpEW#lv&Ty4)v@guO0ZP6Mjx%P#OzVqKIo_8?=4hFL(dnUv@*GaH=;O8DFVIW1 zsGtls9sKD&?0>$DTI;44v(_B)b8N@1FWhCd*@=l9g7v<+LZ7lR#&lw%`&(8-Hidlv ztqj5n9;X1?2cU+z;AoC8JD#9s!M6w>kA}`!565BBtK190Z{?psd*8S$>>O253nl#d z6!5anl$kdqxa$e^z^L#sQFH=??lfJj3Ye3;mGB*CADtvcPN&E}K;Jlq66EB!&GLZ* zfHe}N+>^l?_G_vE<$9}M0s)Grl8X$(wYchL+io5HoBc8(+his59@oDALF zw_ZLeE|v$wyL;%CGrAb~G4P{EtjoQ)@Ce_VvJRMRY@Iu}A?Wr0)HOf85?c!6)&R&G z@lv&S>GO`0o}i46{g3P=scn62NUoXO-jfoXe&VMZFcapxL*LJgCkUR#z?#hHhdb5p z7^^Y(6iuhVa*Ov!)#OI$FeQ?=5Y)djh84iUyCzEf$*o%f=*bigSkQI+nWA39KUnR# zUXSo;=^?F?E>c76@pXf*Q3&@lPt~Ivh-oTvwAD9h;5NbQ67`XxleaR|+4Ik#Q2C<- zdeWX|8(01%G)dw-XLflKl6naSQwN`^kFPSad}k3?z0W(}Ahq5o1mH_gz_5HgueSyf zLwe$)!`r{iThsB=RKG;blWYku1wb@~Azhvc4oB!a1Q*Qi9kz zfq2z>(SGAZWpZrKdYGC^{i*PM^qxnJB>@%Im+dQAE|Gib`uP`N^3b@8Bo}It4`MEC ziM7`^K$%l?IE0i{8zs*f77jvGX=^(+Uk~AiEW-Apw{h7opcUrkWr?LHprI_XYXB&n zZXUuS3vT)zzK}@jwwS+*4ON4|z`L)8G{1800mw$SW5ADrgP)#Imw)1RH_1-f; zL=?fMIQ2$0Xi-zr>r7uk_G50gP6C6WO3R`lRuaG9X7-?VO=;|X_>(4+gj;ld?rXEN z@H5J{HQIN3LMUKj34=Y0)F>&Mg{%E+9k!S$2a_uC$SO&A%{+<)aGyVU84NFmJpSja zm`W>wXT*=Wk6hdnEv|%hpUl)lY*s`{O|-NV92*%Zjo^LjuMrnAzzF0jBS^%_&}*dIiJQG)Yg8?FL+0Xc6P6cx{1UOQ}tiCa}h zB-zQ(*xYLBdjL;u`ohRMKyur1^4UN`R{od|65~Gy0l=(BCndhrcl`GvkcI8@?SlS9 z8n++h|IWVHSYapu(aZax-!3tr;t;u0J3FcM%BnYxypGtT*XPt)7 zT|;NGyLCTAh0Kulc)XNq zaQ2daB0xeXp6?|lgn)_0&JMO_A@{!_IS0;*h_5*f-2nqMp2>`kDP>|J z@gKm+Mp}v2ddS}r`?aO7h7d-BOCIzR+!S)_Ww>OiSi7cZV24Gb<2d(x+EK$L5QmX3 zOcN?Lt12xW^>3p*GI}1i6%ntsc%sb^KqtJm7loX=n)Q1~4K++j5WA8D+Gl{+=oL|~ zLQHn~$pm|nt(i9*sItxNVcK04;3S~PyJ{y z-fsS1`IUcF%7-92eP?mz(VH>Bp1ES_Z8DyIey<}B=XejF?Z`wkJXgqaa=J-7Ilw*J>WN6}Y zs#3FOAG$~?!T8TMu3&%5k~L`R$0j&sz?=rqkc!RwQp;hsF}?9)mD#Gph)tN?>}6f z{;Wdk_#?oYvXJI{>{Pn0#x3{$NMk|I&%04vVW0@m0DR8k=NJ%&0CvCBAFRU{*@RHN ziaHcS{secb_0kh!?CFFm#uOt92cWpELxP_M zQO^zlJPQ(a`(Hx=KA=+^TLaV{>H>oiXTwq%sb}FQuq>{!7R(V}Tpuuji9TP|Up3NF z>)m3hSJ|+(twO|WksP^-rsNGq8;tw>U6q-Le?EFH$cov=wi>IHb<|Dio%ZBuz)hu| ziRFw=DCjg49UJOHSWDNbgaL6c;z$Ay^0KisqV!iqfo1wJ1tkTpN-668@Fd2#Sac&4 zqu-ydYA3>!?02Q2cj}83xcoi7i{;Y6@QRY82qq-f8q<-#{PmKSgSw4O(!CKaKuwnH ztd1;hZIuqK6QCTlmG-%@3SVFm1nasCWr5mZ(F3birE$h6N`Xlc5x??9{nF{^QJh?({J%D2@PQTgkiBB4Zo4|U|$SE%c} zHiP@^xEzMxmFL}xU^VvIh`=e5Vd%u&Q5evzesgYLz(l~%jYY^gwVWJ|q?XXoG5Ve# zmm2JeTEh{f_(C%cPj`Nn?AA?!i~jSJFW`Kg(_-u+qEa48u&`7{5U>;|N}H}6tAvhB zTYtZgxoJ4;9R$Lb@!P@u+GHLQC`>)-$!gxS#S#L*RN{PqZ>^vDm=@Nwt6t*ntrW3L zD+h2!mLP9960>{$S1{x=0R^05Lw_T_@fjz6?a!8 zpADyu&*t@n8CdzMjt%p>ZCyI_8xO|bX;yGbOupSW2dYv`4<`*JJn%whrGg~egASISXRq{>9M6{PMDptH0S0?uw3M~y3DY^u=#QlwX zZ?+5V@&qY#bJ_6b+_LFZ?E+~@4*eYuDG^sQVrwFjtTAF9!gYQqfSKcdfDd~5MRw&L z$vB-TLZs|7a7Qo{fGc;oPq(B;-;3v9KAgZEK?aY_gj5Zhp|_BsHO)oSae>7ZHS7~B zV{8_9K_mj`VcmbsAXM#H3lIaKT{45l?1}P*UuY0hs|c6Ki2A)$JW4Z)MjnppjWtRR zCkILdh389BPMEZ6pIPK)b+DJ|xb9p6&)wc2c!j~(Ie6?uk=#12>+JZ8A+iU)zZ&b^ zaBMu9ct&;LwtU9C-h#nN8`6XMiB^LAJfDK5e5X~ql;hL zfMHro<^OLZO`GW|M7Z^Vl-JW557Oy;mET}2G4crW%nQaFd+yR7s_$w$CDkMv{hEfZ zMv((GbBR*vl^te$x_wKEaeKL2vrVr1h@r7Cq*NhVk3yMy&8A(*Dzk8fN-A#GG&bb~TgKcpA5;Y%|e{cz9tP8EW1X*AfI0!sfq_EEjb6#rA*#MUKqk}Ew zd8Sq`dCxGd(PeTeKNVg!mzi*N+k1&alFr$5bXGcIm$xR%H&rEupU27?@B%(s>cYh= z@k-0NNwq{CRK>VBob?A)M96lM+Cl%3h50pI7%%~{i=M%nCWMJjMdamtm=H9~ovL;u zzKBDE`KJZuf!*hod-WL&ainKg*!!F_Vcm4UdPt&AY_9msvoUG!_S0&`re?-MK%oQn zG!l*YcM7USi!K=be^bdFY$1th)ICZ+jqBGG^g=O#pVJ1H{&dzdgpIs78 z{ypx$JW3qXl+0V;O0H@}+jZ%dTa2J)~gR;#L4=?G1JXdl@b#o z3A@wIYCFn#=yBm>R0Hya^LC1CV{Mx&r(&8A2o%rs-9dvsBHvjZotd|HcP?N#WWZ6I zYQ2kf=ueKn1*P5iHkkAas2BuZtofY3ORN53G#ou- z*_9UHb_KnRqG(O7dL@380##g&R~RD{UxW1P!YMg>Tep*<@TkKjfmHDxTwARU09ocx zJ;XzOg^}Igtr;O#v5$xe9jrAWeG)muV{(D!Yl!3$vFg&Y4_IA=o^DZK2)w@OaSK z)TI^~z`OLh460R$1(jbQ@vjb&BB@77Kr5nOE^I%KR+QfavYzjCq6J(_Cr)~EJAMph z(6h>h?dmNc*to{}YS%-Vn4u3|(ATnyDt9Fvi6JsX6^ycwkq8{73^^_N)!rAb>ORNQD|V ziSwGtr)yvLtDL-nI*JF+Y832-SD)}51P{~&kgG$7axQ1kJZYh?#NSZJmhpY$ zBd?N;O6V}(>luhM!*yJJ>3H*itNNK6(|_Y{b(>4i^<@)$dsAZ2L`6}HiFEVxZI8udbh#u{rmZC4-r8~YE`XFGS9X` zk~-2FN*W$P%ni_wc?D2LfD zmA8a376@Mya|qrOZv&!$E1uoQxAW9|ykStXyjDx{Tc)H4NGSzDV0W)W@zXN#zcgMxtDI$MY0p z66%q-6FGmf6S!ObNqY8Tt^5B3YtP$dWo?p3RXp%ghO6-~gjHfPp}#tc6U|H??1&#` zQjbwFQ*~w#k@d=S>XbgIE+(y*yxD6#&-`wL+d_cCjvt;{0bfbzcX>xLh;;(z7tlm+ z$ERnb6~Vi8c*nj2?qX>cVo?2Vb^rhkdid&fwzgA@g5tziR(r?&7OD;#&d;gXC99N> zR+@n;c_&4jeHe|p#J46Gli-mSX@f$Yijx|!r!dR41^ZO)ryYe8c?Tm%^oM3X=daN) z7&CoUgdn4fJjrQuh}R2N)Ea3{J!$UvU;7eaj$Sl&>#0kemG!@>&O*}vrr3J|9wu>Z zgyA2_xb~b6m+Gutc0;x+YnGRV#M)9o#i#uAB*%(}Hbwj>1Lk?ILdlRrhq#RyxHaYo zBk4oyn9fmLT3<|oKhNTv=hyARWHapZnxO@00Ha@{QE|5>g*3)@>AisCqbC`IgHcJ-HM-4q$&)XvIy4{HPh?C zlg!t$_1K|T#?tKwgjOiEti%apcpRAjoB_Wm@Ij<|o?F+=}^t4@Qe(KG-y{PDmC=y&i5$7S}X9pwC{iPLqH| zLIw5D&p*X@md!|P5aVEq8a_?mS+M57zR3vWAK7T~r9djBszcomV}#4vu$pUoH4K`C z_wX(*3c-wcb|J`c-mJ}&?5glmvf$bLz-mK0Zet;)q@SJ}A+)m)9)#N=F@$G`h>>Z$ zKU~O)lZa~3}OUQPK;L5k1^9hS>K9H6K*ej7K0tU=oXyZLa)V*fepO1d?_2G zkU&DT0`Ow#YL-GYMJZ3fE@O+W9Zw8BcyNK|+1#EzZ7o%~Lax~h zhy{n`Lb&06I|%S@#;+>_^L{43_zBZv_YGOrL>A}Sm7#VM%q0urhS>t;Ykz+f!!K1g zj1~Yn5rV}EfTwIX7Bz=5QFFn41k9FxA|=oi|8bTMYOXKtW)bz9+kN+fVvSJFRp89- zJExtlj+EB`YDe(Z?btJttq!{y`u!)gJ{esKC2TH!{p?7*{)*CS#Lpj#2lM3e#a6ld zomg%IT1SYS>L={NGK0>10xp5%tPPKz$!=HMiHv1x9#u~U1Tf=|)-?4}QvFkmx5gqt zHSP@diHxa zLfh=&l$xA>@IZ)_dYJ6K>x${D&tWjd3PSJ0>o`daJT)T;^Oak2xUyz4{nl!Eh*w!! z8v(ch0un0G>ikCXhZJg$uYTyoZ#`uzbxnzjPavS!X62`jms+R~B`Wl;HSv_=d$Hfw zMV3ng=E{pl|DBU1+37~|Ho4fY>P+`;=f$|lNBx2>Ik(CtM|*mvc+0N637D49T024i;S5!Hi9_u$0Hgk~DKz1wZB_ZLW%9|4AOb@NRX+d&mf(Uo zn_XW|#%(Y~f=@+^PWe~rZ;%NZD96M#>Qbb=NK14=^P!M6&Yih&9U~~ zi4;;azgG@4jL0Cx!Z%OZ7f%N2PE@2%o19A--NkehyBC>!!0i6fyBl+nD)sHD)avqh zr9O+Aecq~F4BBpbk?y8t(Pr-B@#lbEssl3)3v&o?mMigcynLWJ4|aFg(D#KI6*qih zpmFW|&Iz6tt`!+Rd$s8P#()!{7vs*B1;m*Vtlcm3COG!bBqhzp!EtBkj67h}^I;h4 zUyy|awFkf`R_(=mPkW!H4}fPYxYXVjhqzpy%uV)iGP+nob_9g2C?I%)Bcpitu{wri zL`matvxKL7;|l{9(>=aVq5mixJqhAFKgN6vXyRpA{IHjzruFniLNEX7iBdLx^};z1 zQ}){uW0&E6`qy~ImTn&e{(EqFxhgU*Q!!WE^c^|b;qZxB$st>eyQ_NQFy@0QnIxM@ zl&)u7s4E^`0IhQokJ}8(EG6E@KBRaB-s)%Wa@RAOza$VIw0*EV@)qr*vp$jGdL{_Jp_CfOwetWn|DyN-ASpBZ#FeRwc$+zt`G-Wc|#@QNd6iRabo(fy6 zmawE12zGC~CAV;ar3@T<<>%`55Gj1k>0Z`x=4f)T=htqrYzJR6fNJ|^(|ywmre$?y zTM^shDMW-M|BYtjq6@$>K$o{kN%9~GYGQ+5CE3OQ6uq~7k0n0)82+J@G3zh#n9n4g zOi#>hCc#`d@7d7|en6xiMd~ah2r;V}XBY0do}a31_!8(KT4}`f|s5h`5IsRLzBTAJ&~_s$f)kTa$dg;oEY_bwMd~vli`8mC1yJ znz@CLQ4%=L33Ztxie*NmkUVQ61)r5Eu-iNq+5MC*KelVgMo~qe${Fk7XRKjr>mtfV zSl&I$kX9M(4*Kw&mKa;F>)bu!0{LL;+=)=G&3I>tU%lw#ak1Q$;K%$NqdF-|wqjIq z;2?qzzBV+%HAaoaT+4L0A|Yy}Nu~O#&G=n>DhpCVZM(w-*u!^Xr4vJsd&>l<&?@^7 zur6(>p~g6NWz9ZYpA7f`QT6%3Ntg6}rsgccDo6zLly@C~ymb5k&kB`+-X0=9fJnv0 zqMiM511hT!hnoBwd-4Vq+sl=2^rRD9?b0O(xAkuc@eHjfF>V3kkoO-`83xrlTu7Q@ zRREs&JwqDvl}3$dcurkPNl$%5KFG2I-qMLJ5wQiJDT%(H4zWo}(_YJj(_D}Q)l+chP~m2{E<5w+!X+Z%WW&Sr^HB)lT)ID16{k_ArJ7HJtpn`{Nq+zGIf1OFL(Z z6k3(axe^NLGxc}^2(Vn=xt$Z|{Fism<}dp|6PGz0%ogFm!o~gV{RP8aS&bEswe?1$ zs*tKl=Eg|GFoODkI9)SBiweX9BmJMxmN(UMk20yphSxaM83;x)?#>$upm=o_a zCdJNGMaaML{IUQAXN0+sjBtUGjL4#456aMg827IAD$U9~`!8ymF}a;@(vmENGc3)D z`Ai!^cnPdZNpFWtvL#>IL@Z`d%@;G~)}Kj<{q0h3c21z$2dkQ}HQ9meS405rb@o0| z2vzC?oSTV!&l}mxI>3LY;o*q|k;;P!Qm*Qqf@zlXVr@ud?vDT$`wRtd5%hHQDNo71 zF^V@PL%t=0r`Z8Cf@!b^$+io*6_9$IEaHVM$HSn0E;g%SR|ueq{;Wu;+EBJ^i0p@t zSjVhAY0l{@M+1)QtxpOjpHmq!?U+~DZ9zE8?Y-rz7)(7>9@aI15tli#A)nu;Fn- z@xfVbluxnd9%r05+`{%q*@olk>2a$%R%*ex<$c4H{%YYj1jX&hneO%8&oHxY)90a%{!;F7q?{!~n-F3sx5v49onV?xhbhaq_@ zNF*~B*p+5{~r=uDXjZJE=Q zU?Zy`LRRGwj87O4IgR;UFq%P z-E5+c(DrmI*U?@YjvV?u8;5glUs-+DVPKN=uHk|V&Q)PHY6HKh`@| zWo^fx4#31b!krQqZNH4XWX@-sT!x^d1@Wy@CRPAA%=a)a&kfLNoNyX%T`>Dd%ul8y zn;X@nIFWb^nS**|Y47OncTg@DBN^;3oy4Q2S6nRMKj#;W`)B@e6qBiozZ?3j912Yd zjEXFx&SzK$syu9CaO5HHK^6yHQdgfFDok<;)RMi@Lf9$obuti|7`WoMx3*M!kLVsPApQHrRC~ly%(K zylfW%22_I-b$YvrLvhZwMLZ(Hvh?!d^!inU9jd)%h@!_@p(tJlpPK8Ve47m7*lgd= zoKBOEXJKycy;MyQWPyxcD}~RB(zhT|Sa?;rcd$4G^cRO+>ET)OD_l^%B-G92x5enl z*m7a9k=1j}QZu{YOyf$5gc^|oFdSPo!far@KE2xhVZMIK%cXepoR#_akpKIc;M3w@ zJ+WgC>7xV0NU#F1Wp!nXMt-B!c7oC@@+_8s|9l9tz(p7JNj=w6jeOq_uv2}8KM{c! zJD}L!-B#R4!cMncXTwN#=e7TxaH!lawJ(kt8gN}SuBAB1Y4-X6V1D`FHvMa~@|5UJ zd$gQzj&X?Igvw4(;!$4CkGcUeI9j%`eqRUUlbyhz4^!0Jsc!tjs?k2d z;db>o@2GN7%JEjBp9oQTueP!CbaX3?;Z2UA?LO}ZtSP?4DTRH(UbzGMxfKmgMsg)_ zb`wJ183Rs4P7ZKt?C!3(r{j)OV`R*S%P|f7TgNa7zRSf0aDW>EdxNxy3d@ry_{&Iv zfy#65c>gUDvAcCb^m`plQic3o3KLT6-u0}`kwJjZap+$XrF`24_>zH|cY_w)4%u}% z7Wxz)?uTot^l^Z;Xv+avuav-C(DK<<-AXJzUzHw@>mdl(Rq+ELx%Aq}O?Zj5kIpp& zO#t8!tTF&7_Nlvht$j|5&=E=d=nc3RZXlmck(ksxH-ehU0j@*}t-AgFC{w4$udt z)2SA0y#|XYrkR}E5}Kq!8+9svWG3(Yyf`m_Pb;tvuGYn889kbPoYtT8Eh`^9k%QA- zUV%aMB}+CWgUy^ zpTxTRY`!oc*(U&ikmKBrAM>b~l9P;L7C})>(1%}qkOXh*g^0rSS6GJ!F9}qx;OB4t zRSC}Sx62YWhay7X8wjhL-D+Q(3M(o0&-(Ze=Kd57tqQrzfcsNVcWyxT#B8S`4s1%= z05n+0Ib+_W3 zzVTosoJQX9gh<6z+9WDz_8sPhwkCh4+M`VwmZ=1sHWB=tmtg(nB-8>p_qjGu#Rk+nonujit%y^O3(GFYDg#N8ns88fO1uybQ||L;ma@ zG2wR;)jR%Pqo-$+;ev6*oo!PXPcoQtU`g-3_>9m|miA!k;fqnYyd;y;FDgea8T|)# zm?nkY{+Y7FqDEmxEu)LO+D%ChnDPVVA7kH7>ghsGE;9px@;dx{P*SDG z1|^AMO?GFk4jWoZK}{L>cx6`ZpN^7Kmdqca!&OL}peb#w=w(Og#==|6PoY3T$Xt$b z3k^k_b!W7jI%@Ir!M!cE< znPP7TFmlaMfC`Fo6iomKh_%>5>HLQui^?NF6AW#xEAV6E{KM#R6OAxmPm12nVI2)L z0q+v5-iP zKx~W=cLuZb>i$#1zcEZ`R6%n3nruv+g`$>_@uM?+Oejj_u%Dw(#6K0c){IB#2IpX$3EPra0WXd`^y|3J7AmKs)T6 zW^3SSxvBs>9GhZMQ!M~b7q@rWXo#Xpm!7q;VOq3 zEH}o4xkIK@G~$ouqHr}j@@oF&n=ImJkCNljXCIe#Vmcgbs zU~SKu*1{^yWXn+hLQ5sj9VKf@8$!{t^mz(mF3IQwJgtKNRSWC z8$fL3hW*B|yG%MDw=C3y#lUJ;w0{Xmb+=Y|Wqhh+*CZRMt05)keu;CXggyImE+b~k z=z!rxf#I2J+Z3vlQJ=}7!r z{x>A0)I#20Qslk~@8>QiuT*s*{wzFw;FpN6oJC$kESgpz{Nrqm>jK@F7EhIOHHEV9 z7*Jna?EVU!*lDIQ-c&fn=I7%9B`jl?Yn;H1t<+gLlNs3!d@`0 zV`2t`0q!8wib8M|SWXh#YELc#lclW78zI0;+od0uvVd{jn6lgt=k{MezkkncTlbH4 ztZ_xrD7@V|UX$!5nxy+1Eqna>q3?zJg5B}=&%W|ONi%;105NQwt|r{2*WG)IT)Fx( zu$>@qT6X4Y7s*p+K~IpR-9IJD-o9?Lq~GqfxH5BS+NC2!(#z17m4O~2o;-fX2Z&B=nrr|S1R|NDXyhE(Ls zQ4lr>9ULo^0ph!&9%^bXz@Q0m$%#<9Z(1^xAU#4HcmUwAQD*mGK150go=pK%VQPgX zcZGg!&c!)~?Zr?bwg#1-ue<+P;HG^hRm&k_wzH}@wM4GJv*C&!N9g;rgP#Z9P?Xdn zr+R&|0xM7}7m3+m>qGB40J(-JwnN#yhvVdv=h*aO=v4=oJ)w(q%2I2v2E9100KNXj zS5gZk$`GtONtVaQ9*Bm|3F!)f{(bYM#>ad2-kbL|9CU&0GwYePt;8K0*(jaFVg`sIqu?idbeGc*@sdVpU(eT zYE+hAyX0<2n4R~gdYYR^DU#|4_u3T$!YNMn@Yk{p23Rnu6|~bjG{Ha80@WvL`Tpw? zx4lCT*r~sa4*#uf8@bwR?I$U(HD_^Hhqi=OAd_~5SvM%9FjdaB%K9R{akts za;n0J!98&H$S{YZ82Jf3To0f)ItEMnVJVFvWQzi{Re0>>O~a) z0kddkijiAngEha#PNtuiq865m9B#bXe{B3Am6vCSX8iLWid|N5lbTvD)o>^8bs^U6 z={6(BJqt1IrKcn1GbiaL1#H@ zkCErNqY1@U`G#9(hbphRz6>3T>X)(3)iM4KER{X7as@DRzb%>^u`t0Dj z?wK@Fh8_U9Qr(2;5w!_bN`!@h!#@2(_G7a!j6hEr`#FSR!S!Q{6=wxje^MiyCE|H5 zXXL9gSY@=!?I3E!S4;olim3b|C1W@)O2cQhZrFDGs(je$y?@49Ve1mnN|mY?|&_N5K!Udzd3Uo6&4f0-u2fB;DX42m)g_YK=^m7-;*zqC&~O zv0AbIf#8*X2$Ua|}ECR?Vw(>iG?b26a7OXhZ9-3|A9`^h)!Ess7|5x>4z78APCqHs$# zkQZcK+MVPU(iA2;vI$zfZnv?o2N9)2_V5|j3%& z*X~+B|1hUb@rKkOmq3ux*%E22n$9J(=8Z!XPaN zd0CN#8ZhS(aabo_J*_cj+xRu6oq?Q(ye?*dlH~NRU~M#w=KtdwBwE%%W=Q2kzjYLN z;cR^sW85s7FtYNJ--l(cuo*{6XB+Kr1EJG%uAvujJ`@V_-t|b1@&3I! z7ySm{Fv8>QyZ9KwlUn3qDySe9&5s~Ik=bi=ExdY6ix+&y9R41IVsZwEM^<@03G*EE zXt2O%XZk*5NmO<|snvQGGjP_%Idng+C)ffF*xVCAU$H}U*jF8PbRu*5VYr1L3eQdc zX-^&%CEwMOcwgmap=rhDzEsAHO?Bi-_rf$w%iN0e-rY_*kGlvyuO>^>Su#3^!^MW> zo^e?)Nhy59rL1*KP2-bZHQ$@dv%w`yN9^&{4*cql5Y~@PB2O0G*NV(Rew02_00*Y> z%WkJ^Y#m5m2{=GXyqH1HKZ9%Jee!x`%pFcS?yKM*zdIus!jL7t#gqA~H8zin)5k{B zROj9~{U3vnGURp#79FG3Nx9wG65+#()~V2N%VW0 zSP{$LqKuVy>lDWT%%|@_@N7kXbYMT=zV$G>-9D+3zX2C=e6qmqj+kBE+Q#+g;j=C8 z$^-Q%9@ciCl}(dD{j2!+s#M>>*NjnxLl@I1?Ip?4{!A5z0{WO`PL%Zn=tR&RZFwTw zf$?&X6#UZnQ$P#KOLONRksh3k(7Ix(Fu=>)eipfAN(p-$5G1?P3+rGbbL`|WM%tGv?b%ha#jH?=s2pem!67@IUz-d#>6UwF4ivsHd5aq%{zu#OOs zo0XE4ZbnT*)KsR!#8j$fNjh&a*ZRFSZAjvnLyO^mYL#fZmp-bNgLUo!gI{XBI%$;n zt^{^m4HR~lP)%0pV!<~y<5UIXxcSedKOIc0V8_k zi;WNl-y)NZ`XucvZ; zHC(&UTnNy3igh3L4P=uBIkg`{H7hK~2MD+@q+{>XC6|pZV+we+B5`$5I_c04P=TJ1 zo#>{G)`H*N-@XpDZAe$iNf&Y{KlL7<@0vtF<_vK<*2kQX&{%^fxJcicEr#rX_heH7 z;SeVuQE0felcz4^!~NY|MCB6Cb)10OqA5@DCX+6Os_X!y2+I6@=q-pWgMjuNLyrBj z;|kr+y)8v{lE3Qrj4I;?VMX7SV^QtsSAiskfr@r+;tAE0KC(c45;GZ0Al%Jx7{c#a zn>mV#tYxxefAsTZT9t2yKttZ=K-v(X*c%!egB8hx&3M3&lc>7+`K%F=8gHv^wRlZp z_9p@TrvIj|%*0PX!l1@r@l}1Gb;uHoY>!WRJMT>q_D(w>K4)$MWXbxlt;u%6eLhP4 ztq|2Onmc63E(I%`WP3dMP4`q@+oJpyN?UK@ixU;sqOZa*-iIZ4RJd20(KuWsSAj0q zI-Vk)iO zKfhogVS&(cXhYW_G!#bmM*Cg=;U9)yp6lK73u9oE`*%??LnQ?>Aw?%9wo}#O*H{}< zyEi4XUkPr*jLusg%0wd&F~Ke>5W~KAymd+>K;}1JDAs$E-s=XlB%ATN{YA?zZ2C|b zT?~T7DbI9JO?PHU#!P7S0N>ddsSY&w#ntIQ66mHDN_$X8LMJ|o?tHg;_f1?5OK8p= z{c>8)`(hA+QMj>(ykuY;YTQ@Z@23-?a*?SW76&>JB5{tf8vFtw8I0%EMDXit|HBTi z>G??5HAjtRPOk;r7_n-FV)!UQyEI(_qK?Ho?*d0^V=9vJ*~tM?(1bFh%Vq<&eXKxPwWYXUf% z3JoBTwrjLuGmFVObCGho$g$>!$1#C#&YkAn7Z?$A7Kj$&> zxR(BGhpryiDCGGSZ+72~MPK}M0YlU+I1SHNRzUy~a_?SELI>~uyaz6<8u*0Iv6E}| zaMVXDUBDOa232i0NKCCtuwKH*n_HHh6i+|lGi?Bz)Wds=%#5UmgzZ`SD#ETi*;yBz zv*^=O$Mw^yiExaDmAFkag8H54!vH9A;PF<|d1qEC?Mc)^T*|~FT*)&Dr|OMLOR1mK z=G~KI7?diJ`zMRV=!a+;W>q0pN<9Y7=Wwn!Xw#Rxgl964Z*oheQ(()j@x{(f{)?Xa z8iH4fwWS6*#=Rl>-_bp$!T$;shP@I@Egh5xy=y zVZ{%};Sx{EpHb#k$kVf?=wDvaV*OLmNspSZq?=cCa0P^=kf~@j#lis%K|m_($d?}%>3%iWnEh`=P)8@Wj~Gb=y?gItXR!5;9B>J z<@%mhzH5qyVr&!r9t#Kf!PgZ)2sc^TsEUKO5F+>zlYE%v5@ zAcW@(T(Cgh>WUc&SrQ0*%+Rk1UddDFoO={Uv;r3E%hypu?h8|R zeAxr7m|w(R0wd8%e2k9tD>?p7+SGxnKKH@)5sL8g>={rKxDlK8liX>P<&k3(3jS4g7Al&hG1aJ z2?b$*Ass7n(7?PEqH$IxeY)e`&I4rESG~bIhPixU51&Q!MS`VX~T!OOEK0Tv9#4-Po@bs~7(?on7NAIpra83D`glx5#ZZdf3fW=d<%E zvqGw8v7hfb&uP86-BV5!@(@tGHFK4R_HE*xS-xv7oMp!c7Ja{rtYMrU3lu7BH^R0C z&CkNyijHe|<

v%N3!d%f>}U`edkzi)&J-OvysaSXWf9?1C@B>=-JeF#MMb= z1Et$EmV6J1W7c4UQ2kXs!zTOp)>+oBJiTw@$&(Gs<<4LZbqTS-CZ;>4zQ7bgJ5XpD3n^_w6O>}J;H8( zny$rd0sSKexq+&L6bLO;r9=l&m|0)#8~FM&puc$dJbP`yJ?1fZVgTP%E&|jNf7%(q zlVxir0-573&U7%dS{9`L`4N2YE_-?fW#84dU<3qS6weNJ{bD##7lKC#GD*1Y$uWA1 z*Xv+T7CkhIvd~JS`#6DH`u*|kK;SyiCMlV@e5g!($Ly~Z7-FgCj{dWLwOt2I4xhvCCqofvzXnMVs>W7dO- zpE573Ud;5H;WGcXJc^e*>Q^;a)&dUd!_J^~d4X8{`*}*p59mX+p@kCSkPxgCUF^_( z`Z$!j(&Hn4Pt`ddoN|TAnliJdEDd)7)Q{+^HgK8%xaY||lQsQDlxdnN+ntz4qQt;lA6uoc3@WDTT#R+{faA`o-ED5y*|KFo;cRGia}M0aF#DG(Go;1iXJhsZec`=cx@&5 z&i88MK3ty!S*qnm*J2A&@DmI#xwl6$ZJv@NqWxs%*0qXWwcQEv^--TqBqrx%xy||o z_14Y0m^)u=|5irC=f2vW1Sxak3nm7NB=i z07m1@o`l@lj#=_+K!fGxqQ;3cXGCXgH~5Ge&rNuc8od@Qzj0+Jx#;B>LgfvWb%`#z98eM=)@Mf>`8^^$4_%=v_=`sIh{f}Hz>*czH zL(>cxJ>9f``pZ65%tiM8>To$=w{X@CiWQX3;|CQ7ut+T>8GC+IjTw`;mbhOK4LH9( zOow*g|C73>zI&9S0DvKC%S|%#P=OCOn_O9ucAQ6DS3^;D{ym9OE%B!1uD#}%P^a<$ zM@w8R#A3ka(QO4BvBH#u1_&JmIiTI<&B;QV@>H5_JMFyo7@BLCoI^ zr^d`}!NM&W&8kKY%&Gv$P)(gcgtl}iwEJwqe>s}4YeUl^ec(SO65PUggE1^;RBsG; z08Fk|rgwe?rtXXyjI)k+V;4@*`VwDoDEcM0ID(%^JZR)n9nJ_uizt4CV!K6w4GeP?6uegcqTsld4Qgp86~*xPKy*6i}* zV`#dqy7weS7ofNOm&KA_KG@PZyJJlRk!C}l*u}X-O#|`&Oo=pD`TCf8XEWqJ)Y32> z7lYrvCo%_=@G3L9r%A?IwJ-#lA9hczeA?Y6;BK#3xHkBBKqGf*V$L=Yc9LD*Mz@yB z5tKHG!UIcQo$ocy!;^BrDQI|ENDv{=BXus)(zMMfir|^w9MTgV;;XC~1HRn;DY%xt zkq>j!D8xT`@MdB{50^9D!wWL#s_yMoii|H#EPqmI8Z&M`;eM)4gVn{UaC0mXesYRd z@@W?fkw}(xg6YFZF*oricx-6j)`XF9>}T?&(l!y8@{jU0I<+)3f*j-vi=&*Ot@CTv zqJzMuASs(P_xx_r1yFJ~^@|7RjLX12;Dkov`H!@8>ws$oTk-^>5b^!cYJ5Bc$?B01 zyAaC*T#kEhoyB*NI4-T{^l>|&IP>Qx_tg=l06r^ak1XVv$7=1acP%N%umIL)w%MBg7OGZVUA@R$8DlnB z?>-6XS$&Dl3?y!ruSG87LgB+U%&Y$ukuZvLQG8-M(+=Nw&Bv$J0HUAyu=3)NuKgSe zX$lG&NkWVo*A-d65PD}I^+pptay0I#m)EB{UxH$&Cm_5$gu}{X-qjCwjIg~%Sg=nk zBV>aLAHuNHiOywBk(>z*f>4K{*jY{8T#HN#>&MfqeqvgOZXRf`?=lhnuah&!snVWO z_Ox9U2p1#tKF!?bF?oz4b*PVWCKv8FQYYkh&17j!w{pvElDRuP$z`*Ph_YtLB%{|w ziOx!}?M?4b+a&70CvhhV(ipTvlj^-7tUglG9CEUpYJ(;s@Tyk;;U<)RF_BylbU=t- z&}?H)i_1bfzk6rwT82|x1ID9odSrQe;@b55BGXzQ>{aH5zWwbm!cfu{F_M%#b==nh zWC+S6g&n$Y!r~Dz@~2;XQXC3ja&;qV0jxV4kPi|%;XZ`axm1qkm?KdcqamM}2h-0l zF^y}=Z@<&lRAj_T`UI55<4f6SFIvKJOtqZUbod5p1irCYI<$RJv$($DG_Bxx+t$c8 zU9AE}0>MLW^*F_i!uVXsgDWr7dx=%3R4%G1n~Rag`KYr*;8SYdPn$_88pi1u3ttF849O1jXKu`V}b zB#QOj>7;7->KaX2Q}*6r%)_=cku zv6qSv*^fKiF!+U6d7R^9@4D~9W>I1RtrFFIEG($DsS;f?yT`D~TTM(t$dzIEg#E6c z=xY4E zAhk61P8{q7VLZ7~H`RWNcpykAXrx9Ji!hrrpXT&Fi)hfFd%`hcDDDsX32w%CPpL$F z9L2$%`2tmCp--A=ZPo|V4m}M!NO*G)1rC>nR69rduXIqT;y?I@b`mChqNhEE5tM(Y zx2MW2TDsoCPC9j6x*x#yS$J%Iw?WfFSK%aAE3JvNI&S@P-|q}vzTOv*5kjH7ue>{l zkL<9Y1>^lHyr?R;KYobqp$M&O;rVQ1F6)dwKvkZ%W3Iuq%Gv`?PsncCPn@1ACYFjq z)j+na!y+0cm`EsnzbkjwcD~#a!a$SL#BK_u11;FX4JEn~Vbtn4t$m_t2=_sHaK^S4 zlA6;MsQWc6IRe^JI<)7fU%Y{E($~0dA|T7oB+dT28p|HipE(O>#rVH(?X{O*H$8Mt(YHy?_e7dpaA1dm6h*1@p!bozDUY0IMu{)L#yV#AlrqVM zL7%quYav(|d&bMzgOq4LNW6%wL@}weaZ@i=6+Aq=^eyLKxoG0jZ3_|2u8unsAB;s0 zIHOub#l(2-6Vyo2;~%WXw5upoE}SR#Qhd3(Qj+V;dor%Ehv-582*Q#9orfA3@)M~$(l@8Jn~d3+=>>PI;%^ZJ+Ki} zg@2p%ucVvK=<3|HrfdFPpv*uIn}Y^2ZV*4a7IlSkSAeNwI@U>;s%fRthB-7F>A@tA z7hoc~te}xH4VYuD8ZSOMV#J_vq1QvqeoUw>pH2?sGnJC-2dfALlL%|RI75OE^Vb3r zA0R#XhLr1LOkx{0Fzx}*x&n0_4oI|YCu{DEg-eiPp3kLsZr1&?b2IMXxdvfna-g55!Nw^$iT zfX?E@`$V<*E!3I=#I!fWrk?=U#tM>=g^Jzbym+Zd^$@qwC>&Ypup~;N?O0J+>%NH~ zp@{175$`?(fkYeJDzatBw?ZJ+^<`5rdB;MT=aNGovMS)ajr_-xQ5C-Q$MO^W@(a^= z%#RmSsWNA|w7zvdploapylH1U!MsuIKp*x5cg))}q@5yymxG|YkR{V;ay?5v+x|}H`zwT0|1)pJgQf_S^_Q%4_)V{I5gij^L z!hFm&dUJifRJIt274+++N#3SM2{O0a2~WU0<<&;MGUnHYIH{N?Nsc4upNMAZXDpsHTjxO3zBEsx6nm7rMWqE@jzo7X!SE?63zCpKs_%R0gz_cF@LD z0dNbR&|?6HIjjyD=$|H~Ggmz>LR#{5?Xz=pzUVWb`GANRP1_hg1U-{n1be z!_NA>tFeVyMJ4%g=U^uTUk!2#@Q93``GFX{*v6wAig$q}op>+WLmIK_<+LYw>%~l= zt`;vj<2pL-WM+(YaI`zjg`V97fO`hft3pAy{GI9n!LPW>*NDWqQ5}*UBH~gVT4>mC zlk7qvZfO*Au6!(h_`^Ao;XeJXtc^2IN9fr!YPcI+hyn3%n?Fkh3<-kmIY_PIW+rx? z8a5BC8&$S=zI_F}fj(#=9cke?vuydxb%}#Re`0`A7i8n{MK&9Q(QeJe&NtiJC3fNscVU7S(Ge80WhG&&M_ZxAijmEl^ohwR!17x1Xlx2yP*6taQsiyEd8w z&%w|Kv9bZdEnB&dUib9x71_69?epFjKk)nS*(a4FT45iI$91FjPBB}}cvl6uC&SiD zZHE>g?S6cBflVW#9{Gp%ZZ$9ydSo_sOWvWaL2cMN}uhSm^-il(L-VPrAx2ukg>XM~X8QvOP`$ z$oWNjRp{>oi5u4S3&o)69`;7Eu2}A=5h0A+*ak{ySqOv=KBn)b#YUL7o3nCHR7>@V z3vSF-M|5ur{z+$5;0>;0kTbVMf|j@V8h-Can!s{jchfgGVoj@MN3qkBRGt>ajvWd; z#f*s>TMm?ZgtG*etRV~RT*=wuJeY^3@0|RQ(msB=tpp4cR3EME*0+h!o86sx=vyKp zvOo*#7JUzH(?5Q0*$6|0g5}@#MT;(o@lexOA7S%#eewuGH1}h^eKo^JL&mNORX1SvnFb zOehaR_yQoWLgxI%s=%Z5E)lp;@-plV+QTKS!6PaD1Eaf8cCDyp zLZdFj=9Y@}9;@k1vLjUGPzDA{K6M=Y;M+#Er$K+b^m3|BBycBP5(e=80d&e)XCC%= zbG;nBS!=C!c9PCN^98H+Rn0SBa)k|8L~iCq{PUsl{I>HS=eEgQx#%7pPk8M}qx`AT z7R5?seByNtVbmvZe|Rv=Epk%F1n4{ovF{WWVsmN*bz65ahN~(85xT%EP`aUq92`I0 zu1-0FxRQygb?83vPMF%;XjDtO*I(384g*cOSl!;m+W&knh@|w!QXI!3173;95%EQn zk^AFj^T`-*nnyxK#xo$thW!k;!(|e?lL{%zP|}w4s73c)t1bik#qHVN4?79k=nYCU z%JKV=afmKaW6>65zb81FpdMaH7o2dD*_v)j#vm(HP*+S2+LsJO4u*u6}ekLT6U=0TaZ9T{$NhYX(;o}BKI zeZMGCZgZ!AfI7D8R@ay;7wjzXwtQUH$sW24Hp!`#?a?vP@cdRK56>%LMDMbs=%&Oh zuBY+cik}*vy!s~Rg05+Iea-@(+xxAtQ71?1gbpX*M#*p9Lui4X7!=O!NjPt0tvbj! zhjp0Hqr3{9)k*6;v2Gjw78iV-z69Y%g=rmJH8qJ;4*y5fGod2L?KqzeQc{};n6D$a zp!dR~MFPbWf&MnJ%&rNY;F*Bk5JO+gkhdaT;0!Cvkjgy7mMcfjorU}Oc#+VK=za`Y z-@9l9rGYsGrP(-xfrqq?5+A>kqK3&U?I$j)_-{Kk6x37M|JI&FcWo%1%+ID1vY)hS zo;1c(fzi%6vw|ynxx@o&@VaaW53#~T*!dA4Pslo|3Q?n}!PNUF(;uP%JI53K0244* znt>)l!FrUSBSPFV$o8$5Mr{a*jYnDo6RhV2#Gp$)K~cXL9S-V6%EImu<*k(utu zDKP=+Gr0XgP$l%L(U8B1c>tNdE97J-_(MgQh?UHRcwaIKWfAX*VLcdo4R#LCRq?{!L3*L1WO=G(Zj$N5N+$* zN;G%=?=O#(-X(vwV!Tu$rP#0#wucUric4@SuQTDp=}j-ePa|PiL-TApGEvsGq+hU4 zgPmK6YqmoTCNlWW#34K)5%nCO{pJmBhkcf~GF(DUrno*9M$?TyxK5>RZ9Q+2k4IX2 zr0CxY!FCff7G^$ekXQ~f%tM59A#KD2-hUhfr~Y)Ukm>^|`h@Bv6A>a%ucMhmRf`c< zf|Ma>=;LI>j*%5;W%Ao;GLE473YBumP zgMC^mWBqQxr*k#Qfq;uPb73m4beiE|-m388-2x-oFX?_&(A+I`_WB9f1<^6zbsSS2 z0_i>QQjD5Fz#EL~zNP6iHp{b92n>uAf`q5W22qA*E zcL*vSCApyA&sO&_FOhOBSmNq~K(|Ifx@#07<+>hw2?DcBu?vjma_67!q>-9Jd=PMC zn?jSNgLNuazxyeqhBR$%1}=I!K}Rc!!&xdzM@P%-2yp z(_U_?TPzhNUlJ#luZx)alhvt0|4m?Ikrx*i=6N{mq0K^@Z8!4On#4joar;6sU!MDR zZ5HKtxwnYvbZPeE^Lmcu^h3laLCs83KksQ=T4EjLPQX;)@1{=5wdYrw&U?%3g`~V0 z-ed0N;_%+~Oo4CACN zYEUqi!5Cop$AC2HEi(FXY^+5KzzSp-1dfN4J;sInZ`*&d%Y>Q&TV+K?9NYKja_2Ml2}l-2me3UJ2; z1+^gy0@JFNk+JQHNo9eT6ws+RZ+9W#m3=i(h@Q zyFwc7adV|(JT6DsM2EwcgJYu=-MX9;O#69CbD8}x!;Oz$qjX3;#o{w@#jPy3ct=Z; z`LB>2)Rp0{@vS&Om^6mwA2$%qvfp#)zh0Xw;{2jJW!IJE;HIo$xtmLG1myR=>^L;? z0cRzM3rws9yPHj7I|}+Fkx_BzKg>O!!to8$fCI*Mo=cEaM@%gQ42k7gFZ_1P)0>wn z;>w(_0|u}4CPCn;xg8VKzZj%PzKSQ1RRyU0t{lpiHSg@gE(s-$Zux?m?s#wc46azy z3>94&p$02O^rPjp+Mg~gf5mEHWkJ%|M#^qrPGZCFj&n19J?2|b*@d^_OUEt;xvxXp za{6T(dRHYLzlQ57kK#2n0svVc!ZE~Wh%tC2I!JUcpZW4RHO?;fs!2DpYRM~4Ga3@sEzn{i_Fque%G#jOiVN&n z^r{H+U={Qg-kmeFM>>321B2{a`HSB>7vHx_T?t&{auNKb_)y+TK{O_GiRhk2K|F>% z?-JbX$}&!X)rNlIq*s}XWqh2}rtmfL4q1wOr7*_k$6+&`3-8F1%96uty4k8!M6=`mZx-pohrm$A<=gm$s^3cC03d@TQt8`(;b{}u+K5qd%Oi@+KqDidH?WI$ zNQ7F_BaX|YjyPd=v)BA*n2sEv@soPLm63Y#+IxwfpaYsf=M{pCm*48um*I~s>m0G8 ztaZ&bBIayao$gnvDMC<3HRpiCG4>HG@O61oiK?hNQD)7{$@(Kr4r28 zb^AMk**OIfgh(K+O|?%F!J)(nff*()Gnxa%dBY$fB=h)&xwZ*3an{wW!|G?D$Yqzo zH;EZs3XR#`^P)gzZ&)Jk5*>Whr3?UObBpml0}jzM8MOu& zsg);$&)h9{A2p2y?`Fbg{3KSa#ty8NXn89%zsbf)i&EPf^hsj`ysQ_tLMJ#StYW(6 zB4gD&ZwO_)G*r|T3hbf&oMn^v1jql(eRimuRA94gP%)nIgJ`0bg1gk#C%f!%0}A|W z*{fhfH1k=>Bb|)9caiISrDi|Cwz^g~NIr8VN6^|-qLgQSY@R7`YOmWel~cUKk{1{G zuJ7y5n&9^1VJub5+TZ({0bP36qI3Y|qq+8r`HGT#+HP4wS%P z!Xhs`1owU3qhFUg58)ZBGPSZ^XOZ%!jkin$4q8b9Dx#eIuWUUYv&_r)+wei}O*mSN z9QidPz6+6~*0fx>d%e3U%m`%}Injio<0`6po9jT(?eSL4XVd!}LTW5d)z_W4g%(|X zgyVWi-m!31Nrv4`jy7r4X*J=JX6SlN+D7&+G+s_+z#h%^-Ef)C^c2O)5}Z=&i?!nV z82p@Y_14Z@Qr>B&OSD)@FzreA`D>--n%^x5qy?Qn;&(SGKnV+)wWKQdh7|IdxJpk| zj^};T8BD25>nF;R>=*iv{={)6c<=F*W9`tA9`<3JA^j^hYQ>rOtP3?-=t6x5M0iU@ z3|v%{3hXhu&vDa>64C(Yv73AkA46EEfp{jELON;H!5yh}dQ7vGN!98h={d6eqrozs zlQuIEhzk{dFPf|HDC~pp$3p`00CJM~eO$J#-R15udbg(Fui>TY>X!1RO6DLIrkRZS zl(irVFTmY&3PO8o=zec6K1Z2*FB>^LDg45+$P{g6UTPJH}Af-`_b2gqEctk?-Ah1sU>Lun! z(ijt>2X7qiiZ^24ahaq$v30vR`-&w-ud*w)SHc22%5sLR&;c)%;H9S{EmI7XSI2BQ86&VA*$4e*OE72Xh}O+YAcW#GEn=|qXlvh1 zAs<1AcufzV%)l!dmDf8r<^?Ei9BR@1BfnsMBXDY5xJIr4Y2)AzT+n;%Y@<1iR({E- z2Zf_IFd4(|9O||^xp=T6_lnyOejBal_-^Fj3q#&5cHA@1Vg*Gy&w6fM8q0DVrDS0? z?_)M#8MkWrnR)Q0#J$a6gKU=~Rrb;>U4Y^TeMcRd5gfq6nu$%RBwy}f%{#t} z^NplY2BVf~clx*~Gb;?DW8lM`tO@?d|F$j+Ez&WZHyB`>b6=YbwK1=wWy%O@c$xxl zbSX|as&43U5Pth{9^L=#u17<*76_^OL~?bptezL;>qMkWo`H(9%n#dtU@ENvS91}FITw;h;{TB$Cw4iR8kN$nVrgM$7ljiFgTt>sG!mA38#bq(AlLZG1$J2tX=(I+s_;RrKoG3K- z#!2V4n-H2Z88^RRWh*)FC!0ox0bn{B=EC-?Bm$!Xl1$?eXszc`5o`JHr1j$fc-!rH zUNzXge(&(p5obR$7n4A^nNP0gHPXW?-wxL$hGS1l^Qw$Y9oj2ei2C>*>7bv5Hf?%R zuE#D#BZzmvn>OHk)ZvXv`z7qhz&)5eTpk(jv?dNQ`X%K-D<^j_(Oc`0Q-p_$Mvn*^ zc(@uixCGJIG-1eWAs##|pwCUxU#N{YuHl__Tt|0$2#*;K21>-KscYTqZo_pN<@hFH zMDB~lldqBRHT1Acl|tCI-2_Z@$*|w3T1*&se^IqlP(5|XSb=nfEQ9i2FaXvPQqU51 zPR@_{ehmm-ALGWhuS3y3e&J0grb$jn@tuJCu8izTKee)WW9V>QhZfDwuxlOJuFRZ( zg6e@Qt9k0{(J=Q!Bry+h@AMGK9Um}vtbjNdkbV6|!;W=ut8UOugFZL4FE+)gCm@8X z4UjgK`*dQ*&UKGBi-+HN)n4|5ksjR18L+uwEf8dEMfh4 zjw%pnE-b8eJeD3K3S=TWSGNzUxYl_}EhrnKNxa&KTBbSsjyzwcQTe#^M6buMn;U&aaKC+5IwHmiZqW3Gni?gbn=IxFG^Nm#3j>m1`3Ni;FoY@TS=ryDVju02&;yy zQZsk4r3k>eJwL)2yKZbI;WU{tXUcn*`uQ!y+crPjU& zSCp^}LvdI{au2lLia*R-Bh5(Ta0!C_;vPaj=F>J+!L<weLWG2kD*S1Q9W^hkKYf7SCwOH*+ZV*{$XPd#a>-#!ag(^Q~AN9&`*A z`YKs6KFS8DoV)|I_E9i6_<*dKg_}x}!*>72NDqKdj3bu{xWBQ(!OfAil=o_w6}%BC z$el#VQcBi0y_D^2Q`msGOA4^HEcU(#i(lpO8Fi2DrsoNN-gN=6`T`lt#f9iVPuV-O0z|7GA_Xt{+Bvye!nof&7|zo09=|w zikW6qn0?AP4z%gL!KtkWTA8VijR{8P&NSd7;d&VB^RYYDyoWpasFUm_p@<6pVQ#`| zMzo?(jusiDc@61)SGy>m-icpTxHETlO+&&4T7RvrS@Tomtvp95;vJ+CEHh;dS)r}5 zN@d$#uov=qa9oe+CE_0>B*Gb;q6!y$)7*L$3MuJ0kSOqh8V( z0s3v*=LN17IZFb+E?wu(&3lknwWyFS0>-!a6Xz&%kE?rG!FMm3WLeU4NH$|-*e91I zDAh~w_-lVII}BhDnREyISVxUQWSEL^6D)6(Zmti0%+4dFx=_V?1UT*KX5CvFhAVgi zAFH)OmcXGzXHdLAo}hv$cA30jGVgm6a%PkNK4SAb5yH_8msire(1x;q1J+;=o^D3xAqSNP{b7Wj3)U6?~2PhBOa$ z87?w9!%yT>fHUgy(!GQExcltxfRbYriU%Tg@5yFNLSJhr+jEB79PldQ@MmJ@Q|pU7 zR(+&(!u59k!&F1Mz}{lNgxjx*Q5{rOOY7H}Mi?{}d;gyhktF{OInJM&|jHy%3=y9bTYMrI7l>UUz#q zOrjwYAL+nzmPbQ6sJ7R^&+(s+yxEx%b}v@Q81OF#(ah!g6r-uNpb{`}<>@8JlNQEB zcwLI#>*DkY57I|_dn`_<(f{cwtH#d#;}(dT@#JP1Y!mFRv#Uo>v58TO@}OpB9g;a% zcKVc$SEHS^2IX*$KUln@q>jk1<+EO#A&kEMJVQOK_r5rFTaS6Q&~ErlG5@oyn#FWP zrh)y2i<|$<5O4Wwo7K%qLiUs2}F`hT?2dTSWsML73Zn?zD!j7P4@jX{M{gK-lRkNKMpeTRK8%pxiH2Z{b1;`Cz3lSQShsY+hS4zO;q1nEJgs;s0K*gowG$q+|29vS9z* zO;*RXHIP_Q=-`oiK5BNZfMJBl=g7mm-3`$KV2%sAklnjVxm)4OE9 zM6HzaiP}{e8I_igE{3YIwF9HHt45*-h>;t(DV3B_)dJ@nbgvLi1%Hb?8cRHpGWI#M zYBAd4o!Fu0Z&uL*U1}`5Bh!emVia7GWUL~QAFZkGmqQ<})YK!2jTxWY;UAkSu~I;; zw-BJ_Py5~}$`|%2z(Jyeca;i+z*A$C6iC+86i+8K&pf883= z{Kd5@f`mF@$4wz<<0{u_^qxvdU>haV8+#)KlOeTV1u_0GNW7MKEwnqDuOc{lnfjiS z2rzT4F%DoQvlx+lIwznn6n$SPk6g`^Tj{1}-$R$ao-ghv_-d;%0Pif$z-)0+i2_%o z9hFe8V2`$mgB5&Yiva@@GwB{*0p@MKrzUOt)1qsD0=cVO&Yk65i2eiJ zs;=B%cxgwDMpa_Tk+rPy2qXSz1r z&yFHHq8?O>6%lwEz70g=?1*#!nxcL~CAx_5)i<*tT>}psi=sQk+42WhW{ZVIqniYo zOE9L6MBZQ}vE?Kk5lq!@r~0o1?J?fUIe=egsKhE8f%nOS*JHmZ)z^IWEyZGoPpzfb z#|9N@(rEcXitb~9Cc@%Lp2(}FIhjNqKM@>q^l7YV7rI7KCrga}1bq^|4y4%K@Jaq4 z+9-sOlfpGa>LkjJPZyXUNHtXig~N3;d$h=1z6bEO8%~U#qm0^@K+D>naNd;VEN_Cu zCKY=Vg(_ZL7iT0D{J|Br%ZgXQo~0M(-v0Hj$KYWm;G5g>j2iL*YkE9xC}U1OARdo`NA$e32+Ozcakf6yz}8Yd3X99P__AMLd@ivV6F1r(0I(UQEczilD ze5DSUh&^G6`ZD0+Z_|2=tjNg9M2(IWV-`Eb`QqimCbY@ti4jRimA_i^B;~&KV>&x5 zmWv+3!GGI#pF%|lqv*gTGkkjK&pp}>{zx#FR`Vq5m%#D&%U4_cog3ARc=)hyu=GVGy}5prqx-E}v^%R$S~%h)`7Wlm5G#^@4 z@2@cc^t`ZHKEw8h0neJs7wIG!pk-akuCAU11;jV<B-1So6|Khn{bjF%Xh)eZ{Dk4# zt7p@`wXZ0_?z{3^K5mVGZezy=O*K%zc#&k?X3pv1jKaS@kH4}P-V2_C(m;PYIeSxB zYgS<77151Govg)os*m^2$?_T6$Fbg0=$VEV10Xo z!N$&$9>Z_}Z6MDNrp39P_ES>P8tSct%6KyM1EXE3g3{CUp00|J#f=vg?Sec!F#shE zZ=F(?hqW3>*s&GBa089Z4trBMwU+8jzfpDibfHY@@Qv5nu2$2t&++rgeA+!qPZsMp z4QSB2$aA*}&$$;vD0V{eO(S(68Plg#?Dz@GVYl(2Y|uC1yB=;ALYfN$nef~H~O zZab(Go(V?~ds#~1rH(Qr@0o3gz0E{^!Bh3)4}8_0~)RpC$g;IGGO<}3_&g|Z%%^PtxhPt`_C?A= zF}mKmjokSNrNpn|vX9O+3AR3WZ@7sR<4yrA0)!`B!K5y6w7I1FtVJN}u-Z$|n*jc& z9|#>I>SpvYZu)Zm@p$-ayYxCqOaEDyE=~hkLvy?>=WTdQsV4b6=ko7#nPZnph!Bo9 z5k#>LC}WS&49>OgVpu!LLM>~7k|amL{TR}EF~!lc{~q}MazIbn?=#$AUgLaLX-zxt z4o#uEh35LMXtg(QR$#DiNkQqO}%;TtG{``K6&uPhs&m}qY5eqSH< zDrRu}jy2hVKZc1sqf!%wYtO2+Z!0tcWxt~s?ZiL}(g#Jl!~qg98>rc8F42L;XNG-oA>!W-xn=;2JNdhe4ua- z^v;Z`{b*ii+rM(8_q$=(@%Cf(2V6HOpV(1yhAk*qH#xu*#ie^Pq5 zlcui&yNb#0V6qQb5^>DqAei8qJETVuKkUv2k?1|kyMcW1C$e?HCtr(;_VJ);_dYA+ z6XsK^1Gb%_MQ;&8Kkoa`T&5Ugz5U?mN|gmcOJER`_+Wd}RhL))P6reE0ix}#>bS@N^3yl6 z5zu%^rY$2Jh5$5@B-P0bI=^=$LmWI@Cq*|9VU@9?EFrLBk}?8f&ieP?cbxBUBn}4X z*i2gH$2PukC+HH%^Su-Y-Vwgvm>7a-QYA?{S>jVk2syyJ@NhX?uQg^zHq z^bzX8R1Q6;$?pbGtCO(H)t$XciE@A=3~cSvIdWg)S{=Q^Zh0Z7-1dw7eT=Z@nb3e6 zkjXok@-vAAw+nYKs#Sa}$x&wQ(Pv{80f8I>xd)v3rkF*NKT6o=50b6z7gE%e=nGzx zuV4gu_p6hsp;YtFvK?OfQuO!YQYNqu0k^OjSqey@wC%DMyUOm&5UwaBldc+gZ2z+nK2U( za2v%k*($0!*=czViQ+@{oz8--zoqJHHDHYZMN9~ggrFl;vtG}M;|io#Xlid_@ica< zg5_3Ev6>K^7~QOO$o@&!x?*OJ$YAGpJ5q)f>;2sP}K%UL*fu1lvc~V*^Tu3DM&R zm=)Y186M2p=^{{Y!hosWeKobJBwQ3 zdQq4^&JVB=Cp+|LIvwE_gF2a7P&eMN#%sq#Jz*a4$<96X$RSGz;A$-Px$#^iV#q{L<9>-$u<%Op)J|3t_r(9W$tkkQ+J={Z_n1e~Mibry+ zO5Ef2rjFGQBjgDH+Rxe#*%|1iEKyj-Fzv0YDxZ)ILScgtRge>dKtMG0R_aAP9wYOG zN=6T)EpXtbh?4ifw}2io#Gu3K{|$s$aO|&d2ro(|tG9#I78$DMxHkZJi=D$T-gy+N zjWy>XX4Gy!1e2%Ur_OfK8*u|PL>kstWKYT^a;y{o+x zNQ3aQ^==thDkQHSa?YN+$#wDz;z@SCEzNUdi08vS?yOfa4JoE}*t{ykE1s_C!1-$^ zEwT=0?8ytGPXJ*ZUMtaI4a)M*Y{m5wHH9Ob3@f7xbNXgn)uYrEJAPbV_Z#2l6M%1! z>{$#3J1V2DOZ2@wfE5%YY)28ocT!QV5nsvi6<+b+KT+7yRLr+U_9moO&1f745~~}E z;W5Q3Qo3q+J{wQVJcUwINy*5KMsC3Jkamh(JBH65zu;3Uyr~fdYGII|jD zvE6Okg@dOo=oXvd0{=C{g~bWG0A&9hf%ioxXD`m;EjvA`U$2K1yi6#II1Ns;wr^K= zphb4>AQc}nV#?}1Z(u_!sYMiO$zD>(vhyNB60!qH8S4S&zpZqP304Cu@*JC1ZglGN znQ8WBYe>cph@aDT2hyKE5caSFerHxkgZEEi`ROBQ+hjf(@)j%pa=%Gq)H}h>u$|eF zNs(RuJNjcle8bsnjQEw_1{a<$U$u#m#Qp`Cy)#vuD3@<9T|H$SO?Qn5O1bgnM%cK- zLcR7`tb{B&1$RQz$^NXB3kI0E^Tuxo6Y~M0!Y{HYwbf)4aZ zSZkx+%VbjX$5_upT3!}Uk(}6J5(I2%0b)fot@QoDftWG(s=iG6(;WK3%keWRAr@y? zRrnq`oCucPJD#r$#c110G1aWxEtPB#eF`-(l z+fg?%Y${YYB!IuTAFp(VD{{wM$j~i7`a<9SRAp6IEV~%`Q_S=4W7NhS$~ogw=Q>$x z%R1rL9OXpI(37KN@Y4G{+x>52SGb%IX124x?n2BX7-r&7-=W^_q3^YyT>CWATg4q1 zuf#MZRj)EyFpji6vZJ6ED`m40-=#Lvn1!=y!|jo=g8%HgURjVXe&fYg@XDl;3t)(S zSKZ^$xAUNbHVr(ZMtwv4;&ZVO@&g)7L!=N4YQ!t#5(SVWGc8(bsj>;bPgC+QPHqUZ z6k`-yhOA|nmU%&6Yg?Vmv)HP|DB~Tm;49^n7)p$nyRP3C1+mkj8)JYqduQcZb0%4t&-97w#&yB zg>`H)@#u?bC5pYGS7b&2lRa*TZp(&K0uNdb$i1My#2LOcck*hvbML!~ET6P`2=Y71 z;7c5^B(73LN{@u0@fvtij=IW+mJ3pY&GE0@fzbCU2C1#eawiaximg`#g;Z2X5r~SD zj&)|M&V5v0drFeZ7SJ>NdtSJBi8U@RN{SeJ^J%U z`KpjOk%PU~lK04n`wTFjC#M-uG;L2hTi}GWf@FNojCAlyLDbrff(~PyoPZu=%hISD zj$j*j61h}zXbiG{X$;S1i=t@=R&k4Ybl>^WfXKVJbDy;Au-csMN4J;xC;64VT;+GX zKxBDPM{OlbrSo@Z$`s%VAjVH3E;z!8yQCDDym;HhzeYUy?|!Rec#cr|5GfT!ia=Ij zF1Cv(GnOdBygIk?ZTk&kv*6ZsWZxHJUqT+D&l{`o0S7fDElq_5Oy#ko971zKwj{mb zEwgVsy&(&UPOA7KZ`{5};8*uQ(vfkjj^9_p(~9XZ@Cu*4w3xubFuz&AzK~(8tjRA7 z!tHPes(H{=KVR0CkEkr}_fV>_Vb&l!9OX}u;}@A-473mH)8t~&f?^jSTurV*Cu=G6 zSxL7&TlJ-jkLV=kW_i;W&hx*0d)_y0V9DIH&OT%HuUlbNB%zHXHXVuz6qWxN;m$A= zMtlGG<8c)Osq=VLnlcW>#YbY$v2DlFDXw8@o%vkvC12>@BKW8N2mAG;5TbiHb7oJY@OUFI!VX(Jqy5a(BK zZK`0s2~z|#qUQ*}sL_O!W~Co^zr@r0R{JG}@hqqGAo1&koJ4by-e?&Sp!8RUtRA*n z=JE>N{KM>{alEYRo~D7!%bpbGyMTV{(0FI_ z#(KuEgwhJ3vDM z-q&KXL^S4RhOIzd6z1=dUXE(Lt_l{anS-9PFhnMFL1$15rg-u8jsR%vPJdETw{taH zx#gx%eYrX!Oq7>~Dec};rQ4BRJ>yMUXlvwz-bQ?3GcY%a>;9Q141hsx^mjK>Y>{we z<0?VjN?O+A$_d!H9zB{T5};13UE>I|CmUeaQ~jLpHRCwy9uVvQh$slU=;RszR_`6y`a;Q4nw zIC>GPZLWKO8Zl#0%2x3&bJW-=JX=dJ`}bJ&(*Yh1=6|{Jz;tLNwZcLRm*oo_LvAMT zmLk(5Wx6yK6Z6emH*~bIM9X&!yFYwf!#1HN*o+L@o8R`IkD-9nqaMA4 zCBJ~ARbC$k2T5guECPy_rd;@Osr9Tz)k|0~e4s&85KjuWO}~gSZ`b=?%t0&ds+mFQ z!MbS`OR-U!G(?(}?)^MKhjIeGiJ(v7$enj6NUZ0tu(_x6cv;ggQxLA{X7x-6_+F`| z9N9>+&>`P;nzTww#fmB4Xj|i6T(ePI0-6GlYSDNRUt*40_{n_(&@U-qb&m}mdP<>L z<3x|3Q$~7BD_+_1#uNv5cz5M*JjTJeJ8tx{jNN?CFB`wm>@_bXGprjb46cehPZ#E& zI5xv8Gg?^z4UgSDPseFV;fupA=Rezpf?~@K0AwzBy?OVH5v7-^IN!ZWac2v~4L^R5 z9>S@%u8@Hen{7#{!aEJ@dwfRM`@ShSS1JzK`e@L@nS)B2LPdEjDi|8pkYpkTaaG9r zWGS>jE#g!;sA#yd5r4&iF;&XW-4V!al(|hTNyf2R3XzI~=jQr655}$XZybLQKXd?m zD+$X8w9af$0DUHPZn+ul#ACom#s$@0+)dH6rtn6YP?}yMa1L4$HB&SUbv}K?kvy`( z{;$KF3N_#*kvdddnYY?FxA(VmK}#<=|4$-e3rZy|{-l^f@C2EEAG=Wp8Zk5b3{L6g zoXqQyao>j^Jd#3iro5M6gN#UU6GIzvuG7;2KXL%RTkycHz?W)VpLg(`h-SeUh{wgl zII1iW9x3G+0iLg-Mrthnmugx;RK^&JNFZ4g^Pd;m%(68{5vIOe|<7#;-|T zg^Cy>Ys16=M>&Lhj-6`(-V%5OSfdQAsb7=EaXnB~Jp8Kr0)mu}wsK#3`vVE{8MG-7 z0Ml~J&)Xkk$W-4>sQlsh&!cGs*crzCG|2#P!#XMv$o`)-!$(;^1PmCEGns>HQOSVW zF5C)FtcC|a^zK8p5RhwnbJ%glOu>H%P2qXvlvd7?*7=sCt!rT)%bnFrue!!xeUHfR zp!eQ+TixK1&i=Nv*p=L_B1>Da!B)zRYXLUT{;)RL-IQ6i!apR{!iXYJJ1kSWr)dDk z%yZVI0XJR}E95F*Q!M#KO$CvLH5lFwDca^gx08jY^W7KXL2*rdVxB69ZN8yuj-zu% ze52k+ce%S1Nb0%9qj`U1{I@0MAP^agpkPZfFl*lUKR3XSP411);4v)4F!29?40_#s8a@!<`%qRM4v>Gly4(uw=MM?Owei+nfPlz!kn-li+b~ud9ZS z6p9S<_w!&HKJ3$8KD+g<@hLh6k%nJq9O|2QZI{LmL9|fnr-4 z*;)laLhe&1z*zLpSe;6ooz4~{(TGJj?vOn(V5J+oI*gxW!SE_RnF503k3NG>+&#Ls2g}(e zMPivVd$9hYt`)gjoTGR#E@g1J~umTTHElmXYr`QBRo7qb|t1 zyv$O4c^cuV0_Z!{5nb@Vlk)+_>`in##o=pb)g0WLH%s%4!L;;fCM*OChK>_rAnQ-- zuN$k05UdCeqyf$eHJ)_dm4Ze|wV! z7B%7O%w$wJ0Oc5qSdpYctn7RpG7IYasHyk`oaAQdk0Ig4F2>RMH^8{k{R^M#cf>9A z9zX&y@h$Fz6A3!fJfTM(Mcg2f-}(o)Db__R z%`UoKIyRgi-$-F0hcor7|Hpg@NPDAdBfHJR2+IyNAXBwrRYcd4ygJ!=pTD-K8wkR zUXeD}+_)BQ+<2LT+c6mK>dEgak_hX=>a%VgkF--IYSibWG3q+{#;6HnfX!@?&U*LJ z%1l(CZq?34@mU9hJI6rrXcO0moFlUQ5Z;KssoAfwm(rc{4Kp>FeSRn7HA680y15VY z6dg$@R<7({^M0t}vcVB86>|V89f(ch;SMlTQnq7KIG$ghorv>yhLrXU?Iw{pS8&oL zQB!G37g|1dDX$sav-DttX#tKUG-`V!W0FMIMgd=Qs-pHre07!9cywb-i zq`#&Q#;fjB$2jYa&ZSeU*3Gz(KXYCP9GGXBp@7@{D-I0r!_OjSiYS`TfNo8e=3G?+cr{5I?bT!l2e;K*KS2^>K-vC-w#^1q z8bQ%Ue+QBbyH0FWN&pc?;|RT#7v&@G4Y;unOMedMS`LxP>O><-kOhGsO_{Cq;i*|I znh!VKQLhqV9v&bg6l~}H1B(w5)C8bHk7c<7yX>H>1uq7^UykXQd#srnEU3AaNcYmx z7qK2IJ=n5q89Z&1b@rh4z3hn5ZS|bPBk;?>S08fM=0+6Je4ItoDKnHM9okZ6cMetO z!*a~xfb*U1Y36Y|OsWwKG*Ubp<0o&%&z0P&@}!F|xp&l`Rej4UsDa@ur7Mhq#EIvF z8+ZF&l>!=RHJ0u5(7UbFG%EJvpeR!8PCcyGv( zkyTv{I!GVzA6phBTPoa~4(}z9sL0~y(mKXZs7?jY-bmg?IkTNO$y z5dtKah3RL(rh7K+zBzSdhLSOuXe(o3MR%WPH6#`c?kduOLECjb;p_HyLktPHQQa=`7WpK%CM@lta9As$y9 z0A2?Uvks(BcVTJoa*h)vVzo7Mr@%-_7kWywH5d$gM6*EZ@BhB%qJ~ufE+ZZ@qA10| z4{POp{BCc;`$w(MmDb&ki$c8hg$xSS7iVgU--pFCazGHlc9p**jEp9<9m7il)O%Vw zn=e|U76moWGL57GJfgxpO(mj?o1b$aga<^!Xkho6K z-udoF(+s+hdGu~{U-k-j?ghId*J6G;-vzajgFGPNohvZwpDVD+r?&CvOPwc~-xG@l zid#@Pc8~8gg`cMVL2H`@2H_^UbIaHJlT6NznXM>>t1I1_epyr}1@YG6PU9&0wS{lB zPO|f5Wy@xFg8q*59fx>L#;c6n!oxp-O0&3h`kGwa{3NKxq!t= zhQ(vhA!d6RI8Yg%&HzonBHXzc6Z{Es=W#$JMA$$)M(1 z#RRL204t-~(+|BkWkg|qf4S6?xEV<;7M;C5f*&t)`PF69)Mmt-gF9;}$c0;a;5eFr zt5K;$NA}|#WJa1f&*XkN1uzQpE1yO5s<6zB`B`L&L-s2cFP?QZ|p zY!OeySF|(0$lZOWzkNgnTGI+?%=jV??@T)ZJDsDvbmcUw7>KI zNQtH46Aq9OC|p1)X-*;)MRsjZkV}nu`WkQEjZ%1W){q7A$J(l+gGt9Gf=~ zI?i!oRYyhUr^jaG-t^%vOyZ{vN*-Qoa%%;LGP9od*H%m_zdWsLQ5*q*14T$krfnpKdt`{!lUl1o1kTyl2I1RkMe_2>1<%bv zAGr3RS8usE&=z$S|HoP06<@ZeH}|<{x~1>TD$5A1A<29fR8%5SM0q4ZF7I4(aL7Y) zq#G&MXu7G})O_LD!EL;`zy#9h3Nd9+=3<5M*V1(m@K1wQ}6!M zp2b^)7mAm+h?LxqXxZctdxiApcW#XGOmKh)9%CdnXfwGmIcMxLw*Iz~jIr_|Y!KCt z2YuA`m4cYys*X?ncT8|{F-=XO>3Fh5R=n5Qe3PEvwCuNYCo@GzxIaQ(pR|ozaa4u3 zV@D$|K>G=)7ivMl&a~@yimSDDaFoJ5+sd<6$X(+)*OlqbpMD;lMyZ*^SRAd>@7E9b% zz`?daUshMmhEbmAN=LDS1SVucz7 zW>mF7I@!G>m2i79j2CZcGBs^5p10hK!$P&X%)^`O|7Nnb^an>5LGUbPdd zN_A;n^k^Zk1?-!>N|>Fr@^b~Wmjc*by#Vaa1f1`7eOm%T&dy^N5xwxdQ_5UN$kF%W zgy;oB`1ph;K(hS~8YCY*3(^RV(W0C(k5l&)ok_G*P%^`~J{E_uOHP9WjYe0#lzU-S zb)%zYkw-BG#bV4%fORK(d^^0D`A$F*vsbaerTI@*?>WaS!wnLT;=8fZ2<$mIx_s7qs3mA{Nhr}s)4-t@ynB(owRiFU$5)OpvSn%`tuGLxQ-UHg*EEl z+aA`MnHZHRT5kxI%3%<|K9N*PPi?;)#LjC1A-Ii>uBNa4pX4Q~qZ)zyV=;aLIZ}q< zffd(`33VrI9tA6<5IOyp!?Vk?0siLSAq8aCMdPE`b*;vhUJK3n=mQgV%(BvaxcrUS)mg1(w;*jWM^rP<_$MoyNLz;-?--OuB(*n;y)C98j8 z50;$+-^3fY6s6(=Ou?@`a6Q|*JNj1CS_~eNCm_DYc>yaNEUWow~R4RC|`BTd@?Lv+d>(H9(S3%g1-w?wXY!TDuw#*u9#2t+Kw+b;CJ zV(hZg6F`XSkI2+L%hrUpA!#@pz$NUR;&vW32-uTd?KjZlDwuVHpi*P4a=|_N(%AZt ziTjZa;aoi?D>oVr&G9a6$ldzgU6|XnF1YfcM5YD*N+KB?-!C$!FXxfvNLYT!xH$gx zAM3$; zy&xCvLg#l)(-6M>iu#84HYtnIDW3AXj6j_kHD%)N9I6WiT(q*6(jat_C}Vh;L7Q)$ zE>U8pSa~}CgrvM3$u{+UMrWZC#hcm-FtRH7hAg6dmxWyIKg!NKrRFP;I1sKF63Rt^ z!xe{LL>Ab2=7DlHdK0I?8>esn8mi5vdJkzqQK(0e{e(!x8OZVAttoQd<7-x|S&l_< z@48sW; z1#%z^#Uf-@03ftC*MDFhT)m=_n*bQZ5N%tov32`vE~m1YdG63bG8m@l17Hnu@Grlt z{vM%wm&Eb*c9_%n9>Op7;l?=YfOaYdo$4&YMVM0SO(|$=@(oS0-LEhYPwCt-lWK$k zm~xE*5Y&c7#IO4sqNX+bp22f1$7k%=T~8ceyk6Xs_$M!S7p*ulDMRT^1XWqULye^Y zio9SKs&#@Uc%z3Y%fkQ+r(*Qvqr^!m0!*+z4@NMPR9}^C*Z!u>Ucr7`h6U!3=Q84N z5}WFF;sju61s{0_mvb!VEMMuSB6Pg$T*+` z_SOVRZgoI+dw=4%9%tLMKjd0L1=B*F-hmx^b=dm^k>BC_yB%U%$ zc5#^hruoXp95ZXjY4TCom&hk$&v^w8(P4(0hQeBAe7KK%K-))w0zbD%J4>U+8WTqjQWMFl&NnLN`4@cvC)4ogmiwCdx zm)b|Q6Ke%#3a4y}tGX5|p1s3Xl_ODfh(nb0_6%^=iiCo8kihnv7%jzSf(nls>Qcw2 z&C+Djyr-jP&2$Y*oiOfm&N$R-`!fnMAG74Xbm4vF-z*)jN`9qZvXoQQIF3CMsy?rS zjg|Es*syh3lgj^?yiRPR1e{{!!AbjrUniT+TcP%UMK`tHjrh}L5G3^<;4wHF*pF<9 z8np4+8ncIC?$_J)bhkKjUx{=)k*hf`RpQ{T*A`x`tWe zX%ytpuoq@E;d-QP76|lL`H%|~Q}){!f=`M46^2d%k^l|H{2eHq6rYIX+5X8mY-LLm z&`*Zr7r|QgfU%(Tve+d%hDBXefNM68ZSoUP+lmNGwUC;O)v*Zu9G#fb{kES`VOC6 zg4cwGlnt^rCGy&QuVa2z3ugHbKNw@o89`h9sXoxunPh~Ej!8lItOQPe@dV*bFT zlExl1z&FQfE=F!1xJpq-1}R=pAOV0+dA?*#P_E5afl7mH@u+~^`JBalcs=KcIPu@WXy)2(qUGhyzPAhWdp$K-@;l0ZY@URlN}jQl)U0y`-RF3-4!T{> ziB#`Z+D6>^KQu4oXN1J;B)tNWm#}bECpR5tYwpXeCu~nW31>sjt;}uV6DYOMrnGr zH*=sMDYLhj2;r0kinyDXW61w9tg42r%>lg+T9fjeS@RV#1_+>xyeeG(kEF`>voaHH zR|C^&@oYJBGqJb?@|@bC(2*QHX#HlQ!*3xZl&uZl$2uhLEqBze6eL#?@ws-ojcQi` zJmN)}-KeY>{l6N7Ml$yHf%G@&`G5w`!_7Ss&FN^u$)oiyTEDIDN0L?EKG9Di0u-sv z^$MJsXSrHI<+_eOBA>^hhU(OAx!YJ;l%3Fnu%!8`DdxXRCa^M$9C|BUO$5=}>kNqBxo%&*8qEa67!B|_zfCYCisf~|Spyp9|~C_b4^VfSdh3V(-* zFc|Wc>OcJpN}$F^M#mv56f_rwCcD8-7FAR5#OqPTYa+qpn+`}x4^+sWH$>&d0NusJ zNhJ$-gPoOWp<`h{F7l;?U!|f|&dTBEIdg=J5&!ZXQd{r-TbBd2@^0!2w12_Ly?3ha zJKK>50M^6l8bAFd)gh^CoFwoi>U@F2wmbPF&3ew5{N-wF3s~(l(~*Iu8Lv3AU%;RemuU=`Y}MPI)$EWvFGB zY{6oprC7{Uxq4*I>o+Ut%jLz=T8Q2jp2?Nf`UlFGi{FSvE^nF@+m|+-XiaaEzYt{X z$mqS;_xX`(Z(taO03tIq{-Qx-L8IOPN5_SPY4Rzex=0$_55YA!W4F7mRD}4{QPH9X z;TY-7XYH@rVmv-lQznp-SWFFrNLf&INt+_vb6q4Q0-EdS1XGKgj zfGQH@hl)zCA?(>v7~4?{4`ycd%Ndqoh}@JZ+X2?>67Sg;HZ7U0m9-f$)tZ;ahEn04 z3~GKk)*H^|JQCWB3Q0Z!(D{PmrfcWP*plN@&>1BhG2Gs)YHHepi>C8)qTiO@7CRBW z9lLEw#x6}Qo(ncc)pjclPmJPipr;D_P?dZwCW;$F*JtlXbTywo zxLxWy1kO^IVss9hNyy5YV?77p`6D5mD1055-!#lzYAu8K!N4o;{Kqk~d`?tIac|hn zY(GS7#*j$FBN4JZnD&hYFoa@+D?N%PJX}0r%!mk%j#?NN;5Qo$+O!ja0?4Aid2=>M z78>`mQ7vTtwzuGM$(h{@|o!h?eIhd)#luig3>g5F`VH@RD{vFCDy;Q(3z~ev;1so zy~MT`#q}=24kt7<*CYnMn2p_RB9?t7o3-8kVtrY>XFe}3cumR!T`jldN=0n&HsMYR zD4|U&ZU2~9H{rAs+K@Ew(-WZ8b@U6$%~Cff-I0%5NvjV2+ftikL??Kb@iD#KHD%~c3Q%lAH zq2jc>!|$U9gyZL`pG``+tV|1(6oPM=7x;`czUI}_)Ib3LKLEgB@^!TPOLI$sc3Kjl zjRcJEjJJv|uW3eIpDRG!hr$?r>ZYC7G_^}tQ%)F|M#J%D0j z4kj9R2mb8QxileQyg7XPAv1|AHc#;GrFCGYL;jPwsFXitG+%AduZnr9P474suX?Ux zv#pJ^nIn}kdj4$7m~|5IJk=FDFG;vhO7QY7|F9zVq5!AmwE<#>YuTEFcOUFHg2>e? z(X=4!72Y#>8goF1>ypT~Q9$1O0eFvhd{~EnL2o(jo8%fy5>uODY2iFd(!P1DzrS!v z0FX+6shrmfHJrU*wKM70T0}PAEl*x>C-ZFK_PA}(9EoNzqlpPe-j9fnYB9TnRpeZ zDv9eL-119+jip^Voi)80$o5bh0;x$onBL>0HU+s6n7~?r7&+FxaP1T>m&`VIhuoq+ zaZFEc1xJ2=O+E&`ckfa=^!$hDF0zG>RdE5VUJ1t4(^eH7Gw4=EZ01h=27m`;n-mNv z9RLYVHQzo6j0nXk9sQgj0ImaKkLRLSC1$*XhAWkC5n zOO`1|#)-eCG9E@Q_4heeREl0G7D}1s!|E9(sckdnDZ^gTQ+G8r3M~H=hmK?kyr#kw zw+Gi6n+fSt>RqGQRR#hvhbxX%9hV#vM~lsmpICX3fJ&%g8p0#OWma>X(NFNiCp4*p zZ!M76O*zPtoFnNT?q!kW!lC&mdgD_+YS`u_o<2sFVCM{)~HxkM#aV> z4wIC*CxrmC&w2zzC>XKuLo9H8eur40-26d}W33(nR0p|G)ceTIPYDY;ho47vP8Ub* z1xc*TjW~D;@o&-XF}Rb!uPXg0i*wdV>^@wQ-?UZsn=mky4_cyfCUOZpdNVOZQYTFz zH|$ZvMvV}$kWqbVEvmYfa5I->?Ih27Q(!p9=mgkD1=?&%-REnzN1#e@1y3u!rDl1x%>SjfnG~`fFX$eRnRLLCQM|KyL7BhOFExK zH%2ji*xk#BYVsi?TED2A0{G51rNqK-L8HRp-p^YIL zyt4Co4^Du*QCz=oVOYR%2vfwC-V-s4P}{7oq2uHQqwE>n$N}o8-MO(Xdp{CD>Itzm z{Ae^LYia!^_u6+ea8!lt1IUTlk$PcpXTygq)3%H0Big~h1&ae0Y-&LzJ$OZhZm2)y zkk1Sx}lYMOK-s_I&ogh%D&PF zqK`YOhxr>JJnhA@pmCam+rBa!1_x&NaoAc9&J?`hWDp8vdD{-`sp^l8x<&fa)N;Wz zgRBAnujh}LI9L4tfgD};R~8`~36SZ!4@K2YXwD0DK8M3$i6Tk#JEKq!zSgqzP?uuE-_t*;R5AgsSsU+jRoQW zz6_Ek(8)y$gFj)G#s_-G(!7=R($2zYR>Jb3w1S##5*<4govK00`y2`$Aj~ z1^ZB>qS=O(<;%#HJqH;-I99!ovauD%5_t=gnJf+mT_9nYK5au@ zL=*?4)n%+>JuxT!>=~e4^C=DvSpaBB zr9ol?mDL+L%l{mB%NYZr&xQIwBX6q=OP#R@O9tz7ICBvG5SXPbxbytw$0{4l0j94@ zo2+C+`atVJ1VDqaSB-X_DHwvw;d;=e+i7sHWSupRU%+}I&7&S}d{t%{q#o_SAsX*< zvHWVYfsI-kxjrPd6$R_Im|z3g2cQhw5Ls%2i3kF}w@61nR&*#1jYN(zK2~N%?whBc zeg`d1I}#eb%zi3lflAM_AaRQmNCB{o;&(f#_3#q|EZ?Fkm|Z{;y+OA0IVv#O2=6V! zb5tW~Mz8`6J*-NDk0>jAG0gO^{$ik4YT5kh0&V5t7FZvEJJ3BPWs^w*%-j&Pd*Z}` z&_{HYiT838+JbR!h~*qxf^kp100A2D&uHzdVSFQBRi^&+&)&pa8mU+3F`V;_a!LIE2&xE*16eySYbn`3JdZ|e^H;-e6|)wV}*2Ipp#Gj z+Wz?nQcq-#c!=zMY*tO-MLsgL^!VIy?+*ob0gKfL{E12KbHZeeCVB8s(ljT(58Y=R zru4L(&ESXHivEmGlkrgB>g z!U#fnvL$xs>y4ZcSSAS^?T4roYy(_%Kn(4Stb(mlh6Cz1-h?&U$!^6DLWCkZGl$U;DwZQ~?g=E3$>8f%dX?d)y5 z@N^>sn}tiVDm1rqH5LFZ&^{5Ec>6R8dBME(@2DNY6LqCtMK@NVCfetp4`-A@`pDp(br*3VSTAg57ak6Y5&txK8OgFZuET32E*@g%UrhIzJ# zdZs~hTh@&DCuoxBRguCEYGTchZGqIh@Umxii~e5V-o?$AaE(7c%SaHY((aL$wrNvA zE9p(ndxRcG>-wMuKL}yEW(N{~HguAJR12GTs`7=p z&$yH?dgG{tI0%Dyt#N8E%tjiT13M|0(?D$u3w3S}=fsNW9#0fMHvkpqo)a z`wz{w2TxMLIEWam5njviVHZ)x;cw=S&G<8a9v=5UCgKOBy|kyO(x&Y?KnIq4`!Hye z2pWOueF;rfhsGM$(x46Bm0<#vnJK=VsDB?UR7$^%2$loA1U)%l0fzugxk4N5 zje5UL8&$GyQ5?Z72@s041YWE6`7gvc$B!v4Ts!t}$a?N>pas^TLde3-hKiKIapd&5 z3;6y8?R8W{0sPK|D+WM(O43eY3NC;^7i97xTi%0YbwF|0%5!G`wMVJ^5&?5S?-)0l%{-({1GiuOvyov?5Hr&VCyAc_q9R$ zChn1;w0@6jKjdbk2u&nivp_W4kM3Hfn_!Iw_EK>+7wGBUkPv;e9-;Zlr{RE{X02CL zV%Tt+>mx0`1;ALqN~b!fOjecy9}qtiB(l=#!g8k6l58b>C%d=pOqk1v1c#n3cYqSl z9#;8mn@S-hF9@)(=7P`QaO@9t^(8S4asANNL&@`)Nu;*B|ECm~A#7qcA6IyItu}lC z{!jLqCk$t7fo*pBa6?G<7)1Zrk3P%b;-BbvOe~%YV!5MW)9O1X#5cnW z&Q=U*gc{d%FXdHVC0)(cU$Ks<|Gma36k;nL|4$+Yrd9fbVA#0h?t_z3PJtRJsPS6~ zucQ--Is50?b_q2jdcJnKM41F|Q4K&&H)Ub;ypzKT`)ifHJglFZ{57#gOa%#KZLSN5 z@A#T4YAN0{g@ReZb8Oir+Bli@~y1;m#6y}n3{Ro%R)?Gn=(Zjm zu**Kt%ivPWyW@T%)jStDT5jtvAiLWr?l{Kv^GPU?+7lebpp%|_ALdF!=#dFHU<|f5IE#hwI`|%`Fi$@`lDre|ODZumvp>VjH;pI$I6la%R4@MT=*H!WD zh&=FCYyA`t;-`T<{e%iW|_L!@1Rvqge%AEfgff*HnV6m4#F87}M|OcP%WAm5mfU z`lAEn(Y^O;1`vzvlsO>}?Bf1p)P@maM6aI&HQ?$ZX*zjkicWeB_(tS9uQxn%_FnLd z;zQuO)2%kqr3eM|0L82*N!8Xn-Uwz7S}!f)^YKNjIleNyM5xG&fG60=reW)m@px*3C+n2V-sNq5@_b(*_C-%58W{@tu93ID%l17uCJy z#A|GZ(#pl-2D4LmfUNWwI~>F(pPGg2N-J1D=1Loey``m~wQvBM z1@nS!(|66~kE(Q4k`HXZSraX0x1#T=g$64G{pB&MUXU!5{^*4uYg)Lz)5%k>yKUZ)MZ?Fa`u-Z?g7rxsIGpLqQ@Mp{`N|A${RcP*?=JSKArF7W$&Rk6X$XqQqk=) z-A0eOGSB-vJHd6~$Zm_UkEs?a#LX9R`kVww)!H$f8QaGB92zdd&T!rSky_DgA_UWP zPb?F8Tp;2K=KPXi%Iu(ahsYW_vwJ_A!k=8s`%0qGRW86uIqwmP@p+7OYmCc}8ISf$ z=qxRb&158UaJerehC-88w@Pm1yL0uN3I#{$2tyZiiu61#d% z3%nziTLsdsQw@qD;>Oc)mcIEe*ToyhHHnFa_;+X}FfN?O92@qwBmoHU^Z^(@KC2Lf zvhQrZVl)ceK5WrLnRQ+vy9GbJZhm5Km_eqi%w%KNAQxPpnA4I19+r%ddu`W5Y3rim$ zZ6#ppz7#ho1IlyO6CDb=sk-R6F|aNYcFE?KF1(Y(B(D(*6r z;6ntJH+4$R5t?f_B`1u4VxV7O2pbypBMyWOtm4mUs3z0y$gO0NJ5y;m{&X(B%u>QL zRNT{Bue26X=YWd<($*<0JNowIyu*ELD2-4F)nL_Fg6NZ1%EeG+PH#HnBIbOvU#Zl% zCEUYo7u{J?IfT`_55&muH8%yN45YBI=oUMM>Vn5dTBS7{g-~bNOQghVBkW(%vdwKZ z36bo1wnsOl4X`P8Bmi-c*uENb*S+6*fdE!Iz+eH;yUL>|f5|_+TMh^rlw9PyJ8&I< z7D2fR2Y)ncs94m2i>x&#ypf|d<4|kCXS-Ed zOtKx0;|m4<$6G2l%{Fw?4s3h(Hw+3Xs8>kNtD~8^l?PDxw>Dz`sF6&lT8GFAA-9Z1 zWQ{?E5wZ%A5FhY8fQ=uf4Z0F#-U7IMrA`kPG37p0InH?{EZS&;15)$v5e4Cb!GQCr zWjJUC5r$|Oe#ng`676OHKwrdnew@V)l&M<*548Uj)&EA4Qv+OKPE9~9S*_r@q5O$* zdd*Vy_$a)rFaq+2b_W0Wp=n^5_|S~#T3KQ)+1D!Z!iMps`5;)zJ)7gnyiqSL;Yy8P z+Q1l|W#ns+El^K!D>T2Ido`jqv$+HprHxhj0^t}s0gz2JH(o`7uReC8spqP>yHc#J zW)Bf{zBf90ygvbWObryja+3A^vNs_0fR^ z$<2*j&(Dr*a;o;_qoqxq=2UqC+*vdGG8}0ljy}2WB1C1@$0@kEs?J!!S8|eUoFOFL z<@ZLS4ER=l3^f7Y%hjdh&S{!82$nvG`Z}S6Z-utO zxX3!Cfob=kQYmzju>F9W#$t`9dqM<_<{DQD^?b(Hxf(x^*OauC?iZ@)MP=c9cTsu< z1e=2`CwE#MstZv`DJ(kAQ>3G{aIHL|x$(n91RpTmZ9oPFcH(2r^^Jwx2}Ijrwr4!mR1=24+B|^ZMjX|&-)B$On*jhjl-?p66YTV+@v$=Sx1DA z9Iu+SH^l%Mu$kN%a?m@k@rfG6k`obS1B{*oj6y|#Mr@psh9&V75=9FcVIFmdLCmL!LAf%1~(G5zrVz{TM*Gb{%4`(qad~(A`8Z6Pii{A zm%XnA$YO8=08nUo!5}6V@#Hmrkfy+KrRPcK#>eMvmTm-0c1|ShVLzv%tSbD))E5>} z3}BDHm9pcAnve!sxo3Gf267?1f4(!O;EO?xlD2ch_CP}W``_r2j^1kUnkTz>7Aw&& zbb_XRsRtthw80+GxTj*Cb?^@|zb#^neZkXFQk{vow^<(zC7%tzO3Faqd@B6Xf+pg^l-f3duO z*$;x9U62&36pg|o?&u}TCcKG_8ID!QJ}p~!d?5}9E%Z!-^xPy#hv{yuoDS7NZ*u~K z_#RXpEf5?Z&%ROj%>x>Oc+ueN&*@`iY-;6k)I6m6QX+AL9pTcL$$=-L5MvFF;dyo=yuI zSYHySheHlQi5mPIj?o(bjX-i1_R|xVwK=~>qAWtYgyQ`X{zC&KP#>-NZTMs05a%Cf zn47Sh(>1=(@{ra|GB|n@6qRSR*JYIkTHXwrI=E@ic+Mn-F1ry^I^SmXt~N6mN}xQO z#OX(c9$aDed?S#Fg0~1oQMfr(@IOI!8j%1*Fpjh=&HeBS$*xXt;K6((#SyU`whsxQ zD8zSB?fVDi6LmUX6aF1D-bVJ=23L8CM_P)fHdw~}JZB?OXY*@vs5{|z$4Z|t^hdCsa7tMW0ZPNy za)&YAEg=v)%g&%st;9(I#zC&|!~|B(_4M@<#eC1}RJcqn=!j;joBH}V{=|0L%R;(w^SX3{_wFIWr&BSJIBi=zScYB=*sxKU$+*oO`Y z*R5OV&0=mJrT7KYT{#bZROktyY7OvomTUe##gm(ShU!!-D+z%INJ}soUAox|3E~K= zcu1|@Uf9oRh_}u}25hT=XpJ_6E@;1~UVCHeP-39`;y6O;L3dMEjlg7Nr5GpdYTc2J zYN4;14rR()SL5Z|sOTpf7QNy3nO+ariLxtL=V_{-%XC7980fbn9yiPOJ#IRtrhI)V z{e8XI6s;u_&#L|E>Gf3t9P`%4!##q2K4M?}nzn(yTz+8h&#a0YN>97|56016=Ql)u+r z?PTB!zcYepbJaiDeYaEfMF6Ww>IF9KY)EjBfiNpm5+G`e#9l>!I1`3;-e_v`{a2q% zH42WlH+!3soi!8WVEcGdLha@AaP%(7|1Gf(V>q{w40zElxz&&RFZ2%h87F#cc|n}Y zBOdT;!upuQ=P#vE9oSRmK-3O%_B^gPtemVNH==WHJTk-m9OrP|WI}m=Z1C#k=>3ba z^O;LGIcNTv@N%F8I%4hyNorVDdQG5%u8+w zFssE*%YsExoAi_^y0o)JWj-~u7lfe-aLpgw^(0#;3P54C?sXk}`)B0P!H87|G)6z} zOD9i`-14%Olh%CoR7?PvLDPo4wj502B_$yjU-VJ&P}nI`EO&nMNd(l552P?N2$;MXQrWm!@h64dy3B z*=+ziI+Jd9R#|5GL(Ghpep|UJv`B2e*m>|L!3saX2t*|O9* z5}z9A+yzb+=p}RyJbgrAe!Q@cALCL1h$v4=?cY=OCq^YJQfFn&S{_>?5uZBOz- zi~-+TI?iqdQbu$QFHvWTBhI1_raj&_R5v`tJ5dk*o~Af@YcLRsQN^GMD_Am@J!JXs zgBqw^M6{}r%)MOV9XLjM0h9hy_MM7!@y5jNr)3k@lBw01ylcRv>l+@T*EXLlgYRk~ z*h-H4a}2P`PB!5)n8_kqCCv}k3@%k(w6y*f(ji5Px5hD#Tp&XLYL-DRW@s1GptuF5 zDE&3$g^fmTxJ;3V!2guiD}%|ErZg+LP{FDF!jV{aB*YTkc0@vh&gC6^iPI-u9;CF0 zJ@_#TPHv`xn9^{{DH&iC;;l zN(!$tq>baX_%2k5=G7H;#)TeY8}VTq49#nq!JJk>}5)G>~fku*nuob>F`4 zhqa=Gku{qyS>2~@yDpFx@mlUEqI}~<=&8^HGR@W7hOK+7Hn+_V%PjEW;1Ke>JO%V= zAu)B`6QP{{p?}XEe!^a3E-|0;>T(W8|J5OW->}u<9uRX14}2I9b3uGc3u56a@+dy^ z%u-3WSn#9^rddtx2F1uIDlnWxCof>3gg7blbPop6Ix!ALzj72naF3E8HU;PQ3 z0lHR$cfw+l8M1mO{v>-VIWqAhQfgyGgOZ501btCyC(kg%HYo8ju`?K>;svZ;c*kqk<%<3dmX?o#BM@7_qVh=&KCNSiEGHGcU3} zcsIb>QvAkKIPp|bdvq<*f-PiHLI%-^{P}5y=2Z{Le8iy}pG6PG6te$!M5)dfU$Qm$ zC6#~`10+O9rkOe}y!B9}Vv)2)Byu8~?D>1oHE?@ny_$MjZXzkch+l-eLpq1xKP>2N zV!Nf;t;b?q?7dF|-kHmh3*$SS#0s~5?|+aDFR1y;Qgm_qc<0d;>}I#p9UDoIdn zCn0vNQs2*hY>x-Jk2KjT^t$>_6W*Pt&%O}LnA6zU`Mn{m&;Qim@4#f{g~Q8eMEiKg zYQL9;ev53Fw=bJz9sLw{)=hQ0zevS~gY)hHq-6OOGh2)MsTbdf_UtK0d&muEcfUm{ zA4#C5j(3#NWm&zmBE#IaT=r{BJ%@?utb{O5iZ?bX<0dw~_b?doZY*uK>?JSYO5G`M z8q#sOb0imQn-5+wUOyw}w-Y@O5fgLHi2>Xh0mtYY`Q*8|?&!7indcZ;@^zRo^qRLK zDP(z6tdVapQ&X997RNMyv%h}|ssAbWD5f<8etCC8IYT4e&rXpDb`98zq!tmNp4Pb? zn=H=%gpUaC{M?*0qwevRL=IRqg#DzL*mJ);=uDhJrHNt~JRlEBG)AQCaEloW5{PL~ z;I#pOIKd#P;nM16dELqtOPcFX;}k*`VT~_{ZvBG8Utzt+4`sDJl8Twm(hFqk<$u_`5_X{IHe-18%Te@~v3MP)1^20_Uj`GA6 z6&cC=jLiK$YJd1`m6)uSkbL_<2bK1BKH1A#8a9uH?EtJ1qbLILKaeE+81Ind1ahtR z-HyrwSXdDbWr+oLv4L8sj?WR(bM1}tr&}S@L))(!F0@Vmm5wp`&On0TpE)M&?aJN- zD)}KO4Ul89YVTI*qAmO%uX`%&%}4U71cv(BA#15#T7jr(r0cm&0!FP)R3o1MTPl@! zctYi=-H<>~ULzD4@knLtIPPC@HN|nX$(E(Fa3~)RvyEmtQMPE3)fyD4NIkb|?OL%P zv42W@0{O~T_zv(jC0DKGQMEayLFT|>VkNZ*A8Su#J4$*Bp=-5uGkk%Y?QIs)@VaVI zGx!I=Mtti+9=r4Eh+TS$IKnfJ0SjS>lU4u_2e%9mUKXBDSCx8}#u{nWQDt>14fsKA z&70N}!G8O#U1_~dsq0V3iHara-cSeD;lk>EigclWPpmZhd8zoWI<^V*#a};8Yr&Gd zKob0#M67k{AdY+W_xUykCGg{F@Ls8YpW$I(H7&o|XMHt=lQ~ikQz{d^sH4K*>8B?Y zCV)iOu$Bgqfm4`AD7gFEafD^SWtinsoh{gaeQGU5OMV5Q3oMPQSIT{*FP$g;b zdTx`_velzV14aSIyo&INy7pca(}6)*PsF>fl&tN=sI5?=SPj|KYunxs9y|Cm=w$a z>62i1^aOuFPZ_=}d*&CHO}|?zXMF?olY0iQM@N~qs4pCF2CtDzx(adoFcA?x`)qkR zaF)h-7`EJWSmNVVp;oc|Rr3;6G+aU9ExJsX(O>RTcXTJmR)@hu1U=MK3o-y&;PDT* z&PKs-Lobpg+lS%u+M^(E(lz}8_;F6id83hzVa6Wcv_7khU&w|09yq>M39^lE?hJD{ zOf;t(U>LgGi|$@mkN*?vihp&kkw>YRYiDeJOL_~%KyhcPhAIjM4#d=>+fmH$W(L-WBNN^9w55I~h393iOR0BbZHV;{0IGXBwGb_!D?7@|RKou9hdWRDZWE@8;HNIKRuxV7@g=otUQEicVQtiVPXT$M6Ex<5VRQ7nquBVH0~yp2hfBU))Kwu(=Je%fc{UT3+gI zvovt4UgkrWC1J~UyAdZ4)fkbdr6^tPoeCQxLTN0=5VZ%vp@ZtdNZE$d`lvWBgjs|T zL70@4aIhRQ;jB{?q#CvwpVS6}G_jJ8lcWd}Q_{bHbCdOmfcUKqQtOAU1tttojG^9r zn&SM6IGl%(!}*!mqbcB0t;0<2!L>SAVTGhl)D~xklx;OKN{sufECKOS+&(T+Hsfw3%QXWg`n!zRHDNy3-ABg?$>udYjZO6-WK*9ZXc zWf0U=@JBz$7yco1Hv%QDoKvSPiOQFET#o~s4vg97iH*-rv*yq7?Zuu+v=jy#8T#bewc zuly#^W*%TWhih@kM{yB$INDJV2JqbGX;xcmc&K&$@_KX;NBDRMZ^j275vqUfI4d}} zgG^{d73I%8?`fsId3mp7EJtgcw2>yH{RQ|elNH?^H#iy>HiDnMiVmVk zq_7=adFZlGBd93tix)cr6g>Ei0EnxLz-Q~3YdM*xV61=XIAWLX75VY?H^~`|@u|bQ zqX#>WrPIw%pY8UhX?=O4uhBf6u)SoXxqF=@i#uZ`<}N zxN^u!H{xk8JCSPPB&9paP@lFHM=jOKTMF zjnQk5vZ|YTJVl%Lbd|$(A)KyKU^VPzzI}ceVNW-~m&S)kTp^kW#zu(v4eI9m;58=A|X`bIV^6dlM zxojTzDws$7~`v z(hxnq9v>P%m8+6J_QwI4O~HYnnm}@KkNBu(7{sdx$@ZElGH%*w*itFn&+F&9|BS$5 zxPH1#Fo15bU+q`0Lu6?mN0CdPZflwC2bv8L6tir1`N*AHnjr{;vjFczPXUtHRfF)P z3l}~58gGWZdH}vZf``=RH#~xCcQ>evPf>42xdnU?Q1KXS%@i6-Rf#)QEoymf)hjFJ z89su&YM2$9t}&jjAgDo{4ex7qkdSsb&$t?aNM1XdfDgDZ%|IUf`Y@~OLhI{!L*s_L zew>V?sB84X`!_s))8Ca2iO4Z_D?rudqr+gcRnOGG;yJIxdo0HpSd(>Y7c9DH>}B-GyxXWPFYY`|=UA}QMm%eXefqo^ zi*ar<2mJf^IR-+!F`b$XS?_O)?hvbFS6B5Xl*GnLI2N9T;|o_VJpBAkr_V@hbIR`im2vhy znd>{GtA4boCA&H$Ljj+2{2e>DbURr9(kwq;UzL<2J&mtS$%MDq2cMj$0^@lbmkcY5 z*(spkF00pbv;;qu>dcKM{oh?MBxC9mfv_EjzLg$gFXbbNvz(-LKBHV)UiQ6K=M->! zuJe4m2hMC*rdf$S%p;_`gkm%bB{B;?5O{5}hW!8)a3kqhaZ88Ibm|P1l_+xka+e>? zQFQ_pOKBFOUKBtE(9(uYZjl~$gHgZd3mJmJ>XQpRi+C2aOwM=uL`3`yk6eIloy@~V zkZ4ghjouAl+APj0i&@H&f6%hkH)+|!dJ7ej`QckQ7~Nmsi5Rsp!<>P7CL#+lYYIz1 zqDk%0|>e^O3`jt>%Ughu@locgJwrTeJT=Yad*nemW zmgo9$*(`Et%ROw6XtB0wyrRp<0P!^BXcT_j#^s0z&0|lD_C8^4i=0?CVW-XREF)rH zdJI6ERW$Aeoi|gKFdw08+~+ajg_k!*He?&OXAnMWrLTk z=LZ&~NWh}yi#Syhsr`dCYI>lPXLsQ=nqn}3QrIoW0qm>J(a1PzT0^P`lp_aA@ zs2dH64NlOt=e^%z`t4Uxry%%PI+C0hrZ#{-|pD?+L#hr<4RMZBSKfC0l>O_4dwBu zfINGpgzeFGP0^V@ns<7u=SD@0lXBVqWtLGPN0hTDlQkVL5dphpfCRL6f<_1?Yy za^eb;FmdGI@AGLCcem=+`_cg4 zw=$Mcptq{R$sH{WRn`f=12L&xI1uC?Bs5N_@79nunn>3M zQ-n;34XWBBVVc9?6pX)SAhf;z++Ig4PK4>|kcG^2WPz9gj@+rti5R*XJdYKu`73em zF207YlorP^I}8_ht>itVb;!;qt>3Racu1P+ycHznb!s4Y`>j#84EHl8=T76)G0SPm zvYN@b5D%v)ekbA`18xh6riosHZuA|vh$;8%?qP1zs5t(UwN}ef^|%3+G>U^gIk`nD z=!M3e@~?QPJSxC|_nzoS>F z1&q_c+*+oMEr=h_z@y4DSVv$kz$C{kUfRvW`=MgG-y-l%B=ZRbYLi}+hVe{Lo!ZsVrD-{4I-3o2+$~Gc51eu+$xz-V!fYYxC zFA`{knLs#t__sWZCl=G%`0K#+`IT8_k8tYl^(RVA{1#rHWA{4}FrKkcFL&E|<|l44d^bzS+JmqrG5@JU25MrA@A7h1PkWfW?=CyDo&9JlnXy*MDW{6A#!Cp1s9M@{=3 zmPL|M^Dn_8*_Bfqt&84LUCK4czp{{RlOWSI@^?>9i#|b_c|~yccNE^@9UW*-K+McB z=?}~DIP^j@@+G^W zjA0EVEK7~&49N37?bYuQ_nd51UdIvW^+)@1V<`zNvXR!ZOBRQ0TIAJ)M@IyVs0*P6^j|;_*?wL;c{h}36a>Q< zrW-}h^2GUKL~ogjhLSIj*QpWuk52PrkSr97tLV_61gT@%jo-X~agEo(c1 zaWkK68)_RiA1;ZKVxy>jm^I}G2Md5@XvXB+VqPKUlDha2``tQL(2`4|w67g?tO2wM zNI7d7g$-0g#=pB)7J2kDA%lFv=PZn~5`Fs^M*i@7)n3DbXa@g)m|RKIfX!EE=fTkn zQ%<7q09K1L=iRdx!ITfRxJi+T;hXN8fRv|}{b1nFcM~C=<~Fcc4YHW@0A}qY)GAMx z$_cLGNF(WB3*3@taLvickA?^Gsl}pd0ZJQcTBrXc2rY1J!Ig^>zheAGOJZ|RNfi!1 z>wv8%HOByEqoyT_SN&pFs4Ez4haRO?GtHR*&P6?2B?C6~dO8{kIeJF+b}`h`xC&R&;5?A`e%dTKYAi&Z{t)^qYOB?lpPeTRi* zx%YUcR|H)2q^HIX_q=K;H|lUD#-zFzQUn6(sq{O>9oVjK*H_5AS*!*-9y>hY1^_8S>`N=cwsJXq&lj2P&QLX*C@_=(0&@rFg77yZqmpL% zxKccwpP0s5rNoNxpeW)-1LLXM0aq!MW`JKJ=MxtvXczSFzd&XHk5IS*k_zL3&0V(9 zo{AWEjaHo&jONWw^I7&S2y;{{eUlVBC|6#r)|$#y?$+BsiYHF1Ts4Jm(4)qt&2Zn% z%SQFLv{(~s`z)`r`^_|*+LTQRxnM)AS_;osBS!P$BWTxzLbliTi8K z(W+5p+^X{*! zep)M{tM)sU*m{eQzR?yPm(6>uZshsg(??YPa)_y@qb_+EF|dW4D%xx#7lC@bm|T3K zHc|i%*smCY1nJ!Nwmh_06%~})UkamED3_pmo>Xl~HyOB=(H~DidNfQ=q(>@Z%sNpM7hY(u;CQE9*D{o#tK^|U z!A@SG8fhg%Ym+8ipPwHJ98$C#QON*qpzkVm+WtnIzl(goR9aBjHEK-98TR!xyQI{Y zfKn`IeQ6_ZyqgM)t_43yWk|!okp7guIB`&)ObSkm)mzWMXV{B~K6rY4R9yR6TB2vI z6xQrpp~ZZ?oqRm0;GZmD?kU{b)+1RLYkSf|Ae7@>!kN0cG+YHd_%G{&!lV6QWDpkA z$6kelf%L+O@7v-OM??YKI?F(-yy;hbGd&GDSlAcle;R#wx#LTTsf1S^9WT%_#%?w~ z!qsh>bg{JWBjHI2?<`*qVpd3}yoF;|FWw|P7UaPYj!3iB%=k4mt$;I;EQjh*807vZ zud4@sVaODosJM$05;Ux$E4io$w8udSbr6Ps}rB8SJcc^TC+7+mc2 zpe}+)xU<&l?JggK*yC3=F&IpzGDb4DAaksd0E5Paj;y8w_3R2D!`uLEpN8uiG)xW` z7E@>exEJ9&-ZwjMral-PdYnZvJ@?4&tbSX*20+^Ecn^wFtjn-%>f_q5{RpAjtx~cK zH#w_eb|<7F5y=Dn3+K6r=^$~;ek-SCtDtg+E#y!UGmKLvJ((E{nFR(`-Jz&fmsM5E z?C6$>Xv!V|ZH5^Mokyd8Hf8tX0aS5mYkyj)@W6xd+&$U+R)R5wc2!_8d>wPk}Nd~d9QXw+B)?uRh>ar4;1ZwroGL>xJpv=qf9G$A_!158`_}>$F zQL+7zcNPn*On)l|se0l+A@kM+OWa)p6hXla9j+=Q(g0%TLkH;~D(uUkj%?2Bv+(1A zx6E^Wf-c7Echc@Y%al(Hjhn{X+VWbI7KHLinPoD=9SbP)F7a6+|XSJYi$m4=P zm{w}5uY~>@u58Se481WWCD|%Pu$oUo9Uu2u4O<3ab#RMtbEF1TD&6pjLq1Q`zQ{a5 z|Ivs_l2O28PxROkpR2DBfoQVI0;}y0tYwi$N8|pZXFj2?JR%guQq8ehwv&9-1L}t& z!B0KhNGm9dvjn(BX812{{_#4c0Dpjo|fk+cu^T_!~1D;Y34!r~(!C3s~yrt)L zg%w4V_u!L9TCubLGdO49_)92z24A|bY+NVX;K=9TGR2`WHW|?AS&U$P?Nl#?IkM`P zu%Wj*a?-)Gi95T<=Ce5WU@@oHGzjnO%e(DqPIv3ne7*rJ<~MNgS=xobmvN{e)x|;- zP#w-%dwD|?Reu+J&$hE_8QBqOxO5pmF&j-q=4ML5VJWZ}GuTh!64_=`2eifGtUD~_ z+o{{+7r)jkv)RI}s0Tgt)pVjXt@Bd*Ur`1@{WS?qLYP%VK(}m2TAa498qDtM4?Av{ zygyW67PQFTbAOqYn7KM#lTKljN9ddY-9kKZj^wE8L<}Ux{H@S%Tm@bS2$@-;J}^BJ z-`%m22luX!f;?!0Am-Bt3xOK#vh%t;$A!C7oc@e+ zpq4gcs`oRgaRnLV@B|1PNV?D2WvoW?!vGDCvt^rSLRwY!FVor;wSdTVHK)i1!Exo( zKfARu1PqTGZ?$QQnZ9E)O-W@jhpYrr`5mxl^%3V={^rm8lTtfh*s^giT`%E4nX@Cc zQ=e_8x4Y55D~w&lS6K?mTW;>YwLdFarz|LID2!0_Nrj{o437e*#8^&+HcoD``@7r# z<_E|U;!v8VKaE^*>IWz1KPJtfO#Dp!QI;m-optXr)3j9)4Ap1K{G4RTF8&W^ok7s2 zX11I$Ut;dAOFchPxIFuMA!6Ju%T9F!QAv1Y0|X!pGZ9L3+TcK*a_i1^1Y*7LC7E~E zjm%#Ye2rVkz>uk!Llr-Ce>vJNmIvHvQz>0}no`7_3UeU2jy}kFO|%05%#1yn4ah@3 zx~SO55Ji&6M`hI@GHmg_R(zY5%Cc`mn_Ba79PK3B{iCrxH+aEtp`6a7=F5_&it9%tVIWdNb7$yU?jkFwMC#{tT>hR-I8ex9)eRC4O1X`z);}=e#^>JZW@W- z!c#+uPOmO%UY))^*=V{+^47#~P?4 z^q~3)XLnU#T$Cpja9-DJGL&ZAo{|u8q70k6n*W=@t~7T*fyx|Ec%BFcyUjDH?>nS3 zeuRK#748;TU4dJ2&v#6ypwMRc;QpCDBGZ=m3Qd%8~dLE4MGC2Su!vNVO&Z&O7L*Gl}#pr=`u_VIqs7G(vNViOGz zvFCK(J@YAL&U)zQ`Drac{OwB2zh%XCHbt^}V-SEW$ba+Oi?3N(ME>3Qm@kFH{wc;i3- zJw@~d4gW&DpkoU+<}li@Pmm$5KA1bCXQD}VRi!PWZADgzN}PH)4r=~`#nW912S0=>0yzyigmCsK`p0kwh~xsft?q8C*rTDN6G={i%Y&FWvTl^Kbml-%KcoWdN4w22-B_M zP?dxqx^1k99Z;yN00$)lHaotB2M!(>7cgr;OAQ`uo#p$}VQ!$CZ>87MvZW434`*ta z8hR+~pQSy`g*%N5bx3TVFG$zO_1WXok=O*6N47*lF|Q*>W&+Qx!SeKoKO?rdA zn#dp+KzjRwKBnw;q!APSmQ?>o98Vzv4GFppDi`mBIiaet!v&uaSi~U|{>8=wez3#8 z1_uhA7I}NPLcIx8jkw$XyQ3K^UkJ7yi#n0mIpa=(&_v=X+*04TiOlu|as*+U&J-_3 z*GJup0lFa(V7=^LcuB>D@aUY@XA;2YvbEE;o zFG32-K~YJ;%V3rgDSf+3S4Qz%CQdhCZBP9_{{H74f1YldbyNFZpWGf%m*piaWo5y2 z;n-vl5J|_u1kH4@`ui{0z5VwYF5`gEfU4d82bs73i^+O;6K#9h+-OyK7wc9l>~Kh; zwhm96vWu&%AN!z!9Wc=DL?7%RwzW0o<|saS-3}@w$21G$BSjc{#5uvSqNP7|3gnB+ z|B>e+PJBDuToJc^GPaY($ItIe5!+Rq%X*7p59c3@l$W?`|5q=sBt|bI*fD%OkaGsb9==GWsS}o%dX^RisgKq*92?Sfcwt+c9M~n7U1-)yyyupw&usmKEvG`Bv`_S7$L$wPtSre4&Tf`Sqbb-7cvpKc3 zVXZdf6G|Lbfn>s&XPkf$|?uI8)f!QLfdr54=mhrHSndqEjmBM`m^n{!DSpG?mebK1$^o_$N%}WxnO59~1Cd zfs=|#^OdR5`pSBQ$E{awM8))}a-_l1uP;@KJ4=&M4=L$RwQJrMI0s9`#rk(E-^|HM zkT}CZozz=DvZyYmOVFO9uA}S{D&w)hD?O*3=YSO&RPAi6>o_;AcyYSc~ zT~vD=$dD+JRB5ND8BoxTBi!I7?OaE?h@C-lc}H>1Sqa*gT+?uqxH3QK&PstmE>>~) zpd^ma(Bzq6h}vYkD??cpt4%W!F^swsisHLH+)cGWHAbEIivlD`VDq~QjK^4_Hf_2_butYC+M%5WC zv!+~XK&M$xz&`m?`6yvJ<pn>ltK}czv5!mEJKhyn|Pm#HO<)f%}{ksqxBQP!dha zbu+q)0vKv_@WMS84M|0hlmUU(6R0ys=x0|ZPjF9_MEW3>in>9btu}?~#D5n!sln{(cKCkDi>G(oH)|ml9U# zNsof>50KapgXe!;)yw-s9Wfvj1CGo2D2Sl%p!Zvq-BAp2Q6NaMKi5@vCDQzVlT^eE zDB+cJ)~7gs0~kQO6`EM~LlnI%TQ#-B4cLlDc1kZHc%4YmwpSe`Wr-r(eG>V07n%z= zk^aQ>JI(lvNv2;ej?MRA%7Px;f#_s=LU$c1OQwEV%z}Uuw?)LsM#a!EL<*zkCxG7$ z{(lMhy<9(g--#4bGtDhI&KCifymk%&Pd?$EiSFUS=oB9RVSXaubb}d_$?Y_odi+3w z<;2>vZPnktuQo5k>ewV|iXmquj6J`AkvcB0uDWIseXs}nvlFYX9GGPfdfHupqXbZ> z4gV`@QISesu%8<}eg#8lx?qo|O+jGRs}reZtgrgBR@5f+i)JDimtzD{?kh_)MhhWjjYn}B_ieA1avcmwcq206kC^~)X zSlb6lM-PWVL=lU*^xAu0d;6g4^cr-j$$NKcsnUGBO;(M(a$wzBcOtB=a~yPMvfGFq zTXr>fBsdsP_oEpw-4X4mm4xNUtScPxV{V`Njc_8S7t936?zDnZk^d`Q1w#GOKbFiu(9~ATYl*p-uPeRb#EzK z{=LSmwBUJCQ`u;+4-D@R-S=vk){Sgoh@%sqXG7AMejB` z?b*J2H={WD4wm2F-~K*#+Epjf2R!)9?N^a%YQ}l0h~qiZ?T$%u%!6RFZesV*yLek| z2KG!~W3R7^*q5h7$PlKtzc9f$q8_$)A}&#z2^GdkujQE`tQ zv-fq~oK5-IBV`2a(zwfb9{MT;O10I13CzYd>s*psbKaxM8Dgs;`{b6OGeHJ>A}FHe zq4jM!WIMJ;zXczd6RimLu?w22Mq&T~ldVgU*M6d5o($>JqX8gVnoZkecf0`SF5Dk> zBUFuW`nd2pq44jJJzsH)TB`lq_@()}Uj`iOj?ex5MhhJRN`=_NCan1*ZXnj&c&WZe zkA~8)yYiO`x#JfzVON3)*RT)d{EWSZvrsrSb+dHGF956lRsRdMR zr9BFjNeC!oGLkl#TRSNFvmD$?VnDJ`s1X~D&gzAoz_H-x9R-PY#~~X4c=87&0fkuO z+4mvOMz5$B;>4gbnLeh{)mC@T?qr5NJ#*C!q@5=*= zX)K%uN;BoVKI(gXSME-_5TNY3db0>wU=o|_IOc3X=TX47bsgARx8I#4Jji8nLIhtB z?CAz|j65=mnJ@GZniC{dhc%45X#sc)C07$krBWpL%E`S(29pW-Vyi7rBx6MV)uKqW z(F;oWwtjOmD%dy>{y+-B;G-lOK6<_S<>)i z7`B@t7%M$SE}aWRW@aWy z)Kyttjl{z<$(XkD(sGI%(=47>O0q8DeatEn!BJROl4sJc=PI3@dn+aW8)ufo45+H( zlKdBI@n)xnqXmjpbTy#I2~SeElJ8?haqp*6ibsdb9II;v+=O)qKupuUdTR{Zd(yR_ z?s{E+j7NCx336-~fkSiXq+hr$z4NJ1O2O(MwSqW46PH z`n<+a;rMetdslSz$t}G5(01Za1>5Y}-csiGXos2r%$s zVVC;!n$_7pb9!4WHwb5tm#hQJ47L<0e6bEtmnBF^sAT)nxxTC6Y;}9@Gl+FEe(D zrrl9f?)8Yx)^)Ud-?IVi1McWN{xtn3(S-2V&8>pZEj-^g;2Rf(u+6%7vXnxsYL4`# zmeUT5Wnxv%>?0G(+CO&Z#p{M=8#_{xWHavBDhRi+LkSPbCQZYr=fvPm)4$`Xzu+Mt z>j7_npx2}Y^%GDo!FO^ntp1rFZ}PKfE#9!z)#Nebi~{}aU!30K9d$A!?{%^=G}1ca zDRm}b69%~YLts8QtW6&ISAI3P%#`VO=i2P zUu9~$4j`+3Gpvqk}h+8DKh=~*OXruIzFR);PL$M zI*30a@dh2Tev?h`WS*O3CCI5r%5bL**6ISfgES{uGT)pN4>zl+`N?i{X0Hy8bQcc< zYqelcRC>_6}q5MtM#UcTymwE@$R?3$P_O3=$u29fh&QO5Q=x zY%OIQjSXA4J?#iD2RwxmZiq$VGrO=j&=K6KPu10S84S_VQ|0ix;iW$R9K1{8N)9$9 z==3`iHGUIwo^SD~*!nhpEpKjfW2z@cI; z?K>4uQ423RDFvxiH0?b^2xQK?EoNNz%QZ04j`>m7`zXj>(lL5u%Of77rA~h!^~r00 z*DimZJB08$K`we--26ACoRZCctd>5OV`VGW9npU5oZ_Dm#;Txi@fNWC>5dCF?Fp!P zHIMHGmSp|Z77wKQppGB#~y57e2rYIqN#?BmXyNkCF5jV-c!lFN^c7+k5 zFq!d@ zv71|jr538S)v!_s4Pq+zBZTzBB6ZZeEyBbL>EPy<2RQZDP5vFRkzXbt3LrlN!1l6C zFYT#COfc7zDSvJ+~A+ z9}8z~{@zk^F{cLpwNd2J#bcwFF^LSAtJRYDXBzWp$}f(=NP$czmui ziWOnjZ?PmLg-(ZcsQ>SAG$M#=__pF`&DdsGkL1fT_C94s6MFDG;>y@(cNnR+!vAhK zGFeP+&7B%_QTkF?_Z`T{v*I>Mm=YBIL)<>%R^L%%Wn$-&8>IqSMC=#)*+~gf8-oh8 z|99wBI@l_MG#`@do9}?NVh2(4q~7v$e)t^EMP5&jr{=oQdmvSX0qR%{XHnL*{6*s9 z0w#E2<1_xyxl`WbY)AICNM$?bOnf3`&_ife?19KqL(jx0iXG&#u)@9Oj z`&so=j3p)Mp;R85WANCW9~d&kE(POdJHZ|BOt0=|?HMF|pp+dhI2~3|$paIdFPD*6^5@(IFgHjesUrkF<7l!ohgh*6?@S zJLgLwWau;|Dv$i6EOrONUIeH~5T+ElPzRrx{5VbIPYn|{r`ET?4?5o8_(7LXn~#kM zn}eH)&#oBI`it#rWhFs8$`0(P;sU!69{>@2&lj9;RY}bb!@33`D&9FR1@>>f<9KFg zMAm?1)RiEY7 z{qvf%m})$5{B(aM=mE$nzwBCpqiIX%>gK3G64$Mtd{QvDxX48Uu8O3N1#TRc%%ctM z@%1HQSUwDbBQVX)+DW&JDc{C-DT5O}%1F*N$#h(=5#k*Ya!~k)Yf*meVo{r4fI0#r z^c=-BJ0l-?2o((={0?bin}l@X0bIWOW(!z>&Uge-FI$jMe#K4Z1hqGjX`UU&zYG56 z(}x!G-BQHJWd-J((%E&lL;7Vk1DMlF`Mvo$gC3=^#h~<7&m$YZ-*XiQ?$hn`VN#7Nu|M-+NdqZReYPY~Sj`J#fHan0({lXWHB9kSuU?_Gj z`HVT{L)uWB8Ibb$Qn<#$r5vB0-F;@dKNmDQ(!=NHiOCWEGsZ?C2LuA~YD|wwfjpYS zDxPLrgy(b#!XCGeBVO1exoZxopt~EN%anVe1S;`rtti@xlTMz?HTrR!)wXlbA2wkP zgx2B;KY1wt_7-b6ETDiOoMGYvWyE+e3k4(iM_rql9Uax>1q0#ghA_{n9C^C3f4 z8Acgya|;co#mc;fr)-P2H`Yi=OR>t6qtAF?mA;PG03~&u&(=uxX^?G|V#Cxo&Ylkf zA#>GBq~Dwjin9c6vkuWQV~^Z~uTJy>E@Z!(B;gin>K~eG@xN{tUX8Y_V&EruUQb_vmoBwp9~Yc(Uv@0&pz9*V zc#9d&gjrOO9VkHo8rQXh#Ge{Fyxqp8_jVlO4f*D{A} zkg5tsKh3TWKa$@?l*Ec$@_)GRA|ML`W^HiLBa{PQ&@v_-{Pr{+ zh4zC(Kss+22vi&-uF|V6nvVC2^qeNX|JD{>XERW2n9+ISEQR zf@tSdN8bupm}_!UCvO5erHvE3Oj0TfSYy$KW>er$O{SI^q$@g6Drg810g&V!Y{)2m z?sclSOK_zdZmIORs?%zU{mwjZ@0iONZBGpBv0{ECj{HNOLfy)G|C$axrnO&a=;&=q zuHG3>--1-A@~fm<>)p`dUO)RV&T!vwA<$jYJS$+|!0bW-tVU${z%qGC{1NIryreRd z2K(m-n)P@p@hLQD-h@g+Jl%AX4xlGk@`Hlm{BvcKHmWpEsp69x`2JwAK5ct_;8xmkY4W~Cb6ejzuk75$nTs3{iFX8sKGPx-ty3Vv z6CFm?Fdhw|@z_%VjHZ#(9zZP=xZJihh?|swWvC${S$qp5zk)z&Re^Cl7$`1 z?mA@&ZIPfH{~Y%B_`1zw+r*=4*rud_yN4=~?$62Sq>%=(BuwjC=J~u~Y*DOuQ>!w2 zZ#!3RZ>x!PK%xQ|S7&H60`*(j^26$G<#4F7HqL~9(-r&YNHn>lwvlfr)=LR2Vm-Pz zhP?jq)4|AwEzcwH@+X6yFPVTfWRSY%XUgM5QCiKd!^|Hw8QnoejW;SGsBrNTD{@ek zhPH(2ZiNg~kA=cDZr+)ptaB36VzcvflhirY9g4g-qYeI^9ba6f$9IoQcfHP9pLYdv(dEijgk0lHK_v*Jtr zU7Va~E{!!a)#SkJ4c;J?Ecy#o%5re!WIUg$pUuNR}PdYn2 zkF6M`tJl3gpMiOwN`&bUiR*2TCAHpVjlEdI(L*L@ogVKr6!lZle2A_TUx52M_eGA@XtZ`k2H(nV@vs+kr$F$=U~1Hl7{Yy3 zQVN%Er3n+ORfl_&7nz&WMZG}5oN0bN!4r)9z#m*)%H#r>NQeygb`%h2!ofPjm(QjI(*eyIy_Zi%GI20O z6WIUWGQ>7$*OX;;kn*@c>SQxv>@V6}Dsyu$kkVCNTBF!^Ka7z9@cd7k6voQK2;s-8 zXUY|cq}e!@?{$~!asbBhK3%g_+j9~A=f(hgfV|OW9_i&*O232bxQbXyg9*(qB zs2wMaP^}aIh0P?ci>%ZozmGHwE2~%igKFJp`kPY{5(yh=3{4kM{fq^e+>De5G z)J4)87b!~3R@;JNxf^D`1?hm|+8XnqW5Lzdfn$G^OH<}A)H8l*GvepdRhIX25qUtE zFc{QxSaC9{ZZjx3%qF%IqOUcyeb&~{Nav=6M2^GX#(@T$e`K@&YG7sMY{&x4I?Sof zckj_r)XP&1W9VHhCqm#sN057-SQ;!DB_PvRRcJ@^I1x%=0!+-DAFo+}&S<7ETe@BR z2N&R}l{TJ|ecOoVHC~ZfU+hfzH_b^uu$n-qf&haQ@fjj#q;jl08~SLT$kx$dlfTF# zQu`KnVKTB|ued;C%_$Q0&mR5=&1hPhE**Qm~v z;PS3Vo}XFp?DlLR?&AwVU*=lQlsgh+vOEnJ6EtgXLXoM492UjJhakBiZSp+)2>vi@ zZ@-@c5+ue`87G#^=cWtGO@S25v2jx)J6dnjuMj%SiHo;1y$6G*lp(q~QpBF6$wY02 zn>UG&=_PU*Erb%`hJ$F5A?NJKMdmuEy%$tLq{<_n4r=wb!dA2`v|Uye^coDSfVu0? zZHyE;q*oGZ_@k5m2(JXlmd=6nbbkOFZ%W&i1f_*B{1G)xQXfkdMAH|A_q`iBGkx|= zCP}@=w{6A+T)Y%OdmT(FI5dmNqpbZUncU$ow_8BU02}rzcvl!F`NgOLBqO?&t;(?M zkAOYvTHeUoi6XtR`84q^M6tp)kGd4YbV{??%f-Ey|c)Gj%6t#HJU*bq?$h#pPP;Xobmdp$VjWUXz#fy@?$u4!!c}vp7z_bR2%jBg7>0sX_*53UN)Js z;5Z8qDMnP)@|(G~hHKv5S~bXX`c`0$Y_XPT&w&N!WZ-c{5b0o zxY0=(ol+7t%>zEN8#m+8Z|;q8R3@*5%ELL$x#1`PD-^~ZgAD^}n)(2yWecefnl-Iv z{I`_rP@}dVT8$L2mee$H-N?&YYKn@Yx=LzsV(x(#fX-?eH)0;!TtA2sys893&w4wWmauQ<-t;*1Dwdez*>o z>!afX|KU%zMjicIUwJ)!2Wm~LVofIy{enS1WkJ}(%Ub$GnuloAc>?BGv_-QrsmpLd zSl|;!$G+AJ5g~*K_$^AeOO{mpPU0{%NS55Jk(3WrTa(*s$tQG5ZPA%Ln$~;pz|4#&LeOirSb^AO6g)SJIc+m>#AtkQbq4Dlq;g6+ zyDvK+12)}`acjo1prvP!Pf7uTHr`0UEa|dM7bjAw!O#4`iAd?Rx{?r=unYDv^t)`y zKqKYB8D%T)6A2CMs`SWA?1V7JV`8E>Wl9csvt#Y)nn|R1T;D6{;(c2e2XD;{cc;oy z%B*J%)KTjn0%6Y7H9|R>IiEef2dU)<>^7SoP5597%;*caL^duTDlB|!t<1Dc&Cv-g^*f_mSzbU5Tl_wcx4@QT*y2=K#bfNVNjLwod->* z=Z2z0dn|V)5mjkP^X~{c#~q{S7Z}+DL9`Cg?0P*fE459hy5H$W;;U_h*Z@=-c&%Dh z_f|Fg^-Tr9ROvb@m(0-*85_3 zC36WIbt!u+BfwE{N((zKWF^14QhV$cNhFc~k^q;$Sn^;@hEv9n2|nHWi4NQD=YvK1i0X4?OUtZ(lSZe5Q|7nO%1pd5orLN^d=fk0=Cc zk`1=Iy9t?n7%&=SJ)nNx1xgqcB4^pKwf*Vw%XCPY1>Hi0Sh?%&tH$B~b<2)koyPb& zcM2l;-GdBr3?QW};hfRt_RA=@o?sC#*Hw+21(X{rvY&d7XJKo@mRl~Q`r_09#x`de z4{iMM^l*7-D#HTa!D|HOUt)g`kgOok-V$~<2xQjlOEAB~|3U<*xnOyAfD`*JxXda= z2EviNX*gzo2@-0Z==faxE^~LoNkHCreaa3`?GZ~#2lVs^H|4FR9<3doN~yEiPxR$ z;fIu)bt+0lx9sJvU+ufPm$~5$kDv1iu|K2B4O2n+&$p%f;bqmqPAiKpv-Djpkuo|Z z_n0eB&A-oz?*k@X*luEpYPvoTy)Mo$in~sta_Vi14b?h(i&{FD^hfAvUm&sXgTY6M zI+GtT3m4g@@#?9AA|Ye(FbEDJB+6_G<_U`;&kQUN{vT?l{qv9tt zm_VEj#)UsV6F7`b3kHeO5j3(LO{g=clG?~1x9LgvnYJLBUu`L*%=2%_bP(auljFIZ zuw%$AVbTEl;TJTX&-M3DYtrpjy8uUJlNwTzMI&`Qi6xTXaK`FHGh|W|S1<+Z0>FW(hd*%f=^OHjOr=&CMob$qj1|h!TxKZmqiazVJZE2~heJI8x!dypzO**H#il!%S z>zg4WE}*bHbagR_q^&aVd1aLSh03H|Rix9~2%T?E!7fsmx>Bd7D*XIZw-$6CYjeDc zL?ivoG&Nu0(wA~|Hhiel1Z-oKdo-A+^f9dJ7%YI~1qWJmy`u>$+k2w0KO5a#mm-WmYSyAbf0f6I}9}v ze|7hP?vO(5E6V93*!BCSBJJiCYhmzJ0X~9Q;ohs^VgyhMz(Cz##`kmKYgH3yM+viT zMQ;Sw_t7E9nK2nsqmK<%V^Fv=CZ++riSgVv*b6<>^R2O}lpm!U-UI5*TnPDL3kS*||JRA3!%5A1v;Bc+wTUM)2DL{;CV$AB zYzJvII7+>VnNi6)L%gvsT}tXKO8IQ!34z1bAGI|$fNz0Wg(VM|IYgCncED~bN~A5@ zZLwm9H{ms$gjw|R-ryf)Y$hZ$PSN0MNM8XifPAMocGyj|4BCOW2OSPJeva86h=1HW z@n}Dc4IL71@u=rNxz&HdhG15VgA(-`S(T#v(oCleV*@8@1~UJmF!QeeK{*!GgGsm} z6rVhr4mp=0nnoXk~D} zCb3OFx#{~Qe&(g*s4VI>(4H}>a2=x#r4 zd&|!Qb0t91UlG8@V@0Y2n@!I!#4TNxN{g{6#$nJWSH*GsH@L;X=C^V^P(C5tJ1#!}ovRoD(Seja0O8bcjIa#Wiq$b~PdAWKv~*Z5bV|kXM=u zfWy%5Od|w}1>{mCRa9FvIx;*vj(0(zk=8~FOXd7v_fOd zC(}=+*2B`V&73-0-lEYC9Jk;cMTa!KcB&%8ojz)5d6GocQQl%OH4bJ#PU==XwDlmT z)>&RG&l;d1^)~>qoCy_ckO>%2^Xt4sFQp9-#EXAPTM;a@X0orYrg8hO?c9zunFM57_T9A!;B= zeObn7f9j)e$4iLb|LNl%n6~n*a&i)g8hFqo{xozEmK;U_B^s8kh^f9rTgKP=a*i*( zpBnTEkAS{(mARQto(aS@Lr}LYUX%-k?h9NVq8S|AH?l@mKfZ==KDrR4~M zoabAgzN^ti@-L|IJOhbOGKd)|<>tgMjj;A-j`a|H%OTt7DB}sde@Qo@L(6BB) zHYWBRx?+{#gGnJX)uoNi+6kHQlIa*l+VuyT?ybjD7%Z6(hp&z<%NblVba^vJGVQfM6_q{f`_hrq~}ne(vM z)kl%d&(9cy?f6~u%w$$58P~LTCd=+^^*YnmADKEud zVer_Ingj<2R<2vBohA|vXVvYnBRa*5jodL^Q55{!TSrL9>Xmh_ivAN|3zz zKLEfqyJh7Fr6-g?z&s&`d^3}Q6rrxrMb7M2Lifql>H#dQaG_*pf}X2U6-)zW%s5Rk5mz5vOg z{^;*TNtAoA&42#f4hTr~Aw$Xm1ekU?;e;Dykg=bpXE|O zYV13Xoky+3nT*`H#)?{wcol?)Kx#o)cZstcU`PlQ1ok_0Na8;=mD$-9x(GN)PIS}~1Yjbd`e(+HuJ ziKbaeX$HKNkvFS(p;{+6GTE!~n;Gb0@|8%p3~xJrNZn%z(`pHK7Ai3f$1f3tnBX4v zWM+}04_PPU!C&tre8WWJy~M}K=<#6?=MhT^?~GyOjI#<0xqgEMvF5PV>w73@ zy~R9+R8osj65HUpD;rudBcj3ISP)sDepM%ag5UvltKgVs-mZ&DX8Nh#s|3L*JHG|toncG*aVI? zhj`o=H3c)M2Xl0BIpp`pJKrShQ&BbqPTZS&rl56OK=hic6SQZ;Rg@8f=dLwG+g^>r zg@Dd0>KpZyO!Wh__M?yQ%)4?8$a%_X0Uwo1r>qdgd#&TAmgh+MY<-W|mxA`-NHYN@ zuZ_}+>&MqGQ8mOS6wf4^eH~Tl-vK1PV`FrKY*rp-toWL z$9c(Dv-jwQ*wavj^aTGVrljJGZ8_5V<)tv8MU_WVh-yva%+5OxJzFP7EZ~>Y@i=z3b_;8X_d_e_Y|U3DYD11-ug|tPP`6~~)1(#@`Yt(npFsqL*x&tksvR3g zfFWisH6Tx?J)aH(fyEg&Mp~;fFaZ5Bjfh`ZAbX*5lfF`91Pk$o*k{@YOHS53ktn=Y zG~wl2ZD4MIx`vP$3NgT)ZfSD++~@L8TOCedZ`CiUY5T-QUTN-Ir?il=%woPt`q%D->LG z4yvqMt+gAI|1|kAWKZ8bu zabbY2444?d&x3~4bXTxB`OFYc;&L~KI9bX?;f?enB6{eH|9 zI$U%wmT%wX$h#>-YRLptZWZMR>mq~L!FA*W!e;|M-w87lSQVAmae@ampol{eV$KUp zP-?|`E5~^5P=uHVfg7G7YRf;3aD-wN-dONOyIkeg{o7)8TyfSGa;&nWUo)^gr4ue& zt$4pc!J{jt?u>*11&Z|pY4(XE^K15L(OQ{dW6B6w2U(6CJb+@@_&c~=l}MG$QMT25 zL;IP8Lb1Qs*@Ho8$HcCWPm$66q3l}oCS^uhC7RB)MW@S6$YJu2H;8=W5Qc|Gcsdtc z4NVxZkDlfUck?V3x%nQ;CtsA@6We>BE)szP%3{H(NWU8ZA+zmPa$WYB4;)4xaTUPD zJk#ljck%$7JN@@#^@sG6fIlbuytgUexgcfFlKAEPOWz;41v~VSrc&iHHy!~VJGWfZ zbOEVA5f7O1g>ik+Hqh;dc03K3=C4}A?2J@SKm5{`6d_~==RK%52(Rg<3E zUO+I-Qcn0q&jM(CdkheVz zdO}CSEu6a$CTV-B(Q5o}AWa`V(Q9RCL7LpenK#s-pu}CVMR4w99mR=lK zbra&?`YUz|FER9jKyw*9c$KH@!**Y&o+VLx&VRWpa%De?!Q7Yjh&Szi+3lDUzjeUE zg9&FEllTEWI9I#4NTb}pdIMQDW1WWWs$`rIjIY3ysS_BC zvpuR+5bo)KpcL6$-~*NM0#uiPaq%?+|G?w-wv#I7Ddl-s5gv7RNS)He$ZmrApO|dc zW(1YdxH41bHQO|;qT04(X~9q+?8|6+Yq13|tze#v(}h-@8ry+ zjNf+OW7$P;%JKHPK)C@Aby}v``>af-YrQpHvn=!+D&{1P`~vgA%+}C?{bI&&&-GDCagQMiKs>L^}@W8WB2+&CLi{#3t{c(gwHGKn;|XWgN0Los3-r3iyOkEpvEs zmQGC~uS4bSsZrIVB~}b0^(kjLS$R}FVJAzV?UYMgj>-|jKnD&(f&Di{9dZBE%#Ig{ za?t~Hqm>c~=$+1&x{0sbti?>N)Ez_U?PomtmAo{J>6$bl*D% zKufV3{aTtVeJ+PWk_KXqFf1M@7`TGIoGX#>^(3WEq}y3^(=9La%#rXib`Ok^KX^8=gWSR~m_*J2|zJtz5h67YQ1Vu=O z8Sf+?>M?yT)N+o#xAx-aZjzo(;pfDSD_F5I$3XCrcXu$YLfA9xZ2!<_IgpXhha1=O6Ii_r>7P-|2 zWpYECK^qJ0EtrMeECEN;Q`?y?pl#vby2J(+KSk|}i`V5BO z{9{jkaDsrHKMI4u=^=7tv8|C8 z*GRQ19|;W45*0^!7qgBmU|?S~Jl~vkjZfj}x1OM06sVp{zT5l3eZ2e^;q5D<RYFmSmxbd-f?bUODQ6}a=W-7$Wa>AEx$mA=Gla$S z^rZbdzdl?`Fk+nz$4g#540_LK-eKk?6}oXe#Q*>8gxgrwIV;Pk-xWYwevn$hXt-O=0dE0TQbj>ITAEnn>#a^iSL<3_5y`tY~r{aC~7+o*yoN4r4d+ z&mm0nmSiGA%8Z#Dlvfi`MVJ{uzNPLNwB|Gf}h=ln5L(4oR1S%3T}Q(>g<0w{JJu^EI_w_``G=+hzw!Mjp&0uVj@Q` zHg}+jzl*>v_Xyi3THLqho4l>HcRJVT#^8f?nVr9u0;^P8Kg6A$NIUi^_X|)V>c{4j z?Tj_4i55v6u9R9?WGyF>Pb#R`wxb)JFOnDj`vB+^;`;>(l02{zP9lMZp~`7o+N7V4 zKN*-(EY52QG7V|AUWA9Q^HzP0hjz$1k(3faMz}s)2S<-g8;Q=ASC@%AS=_L$Iqoe~ zvs^&knypl@N?Zrt6!g5z;{;>jgz2HRD|>O)?=YsW#9I%9@Do1udd(2Yp6auv&gUU5a$=!1JxH zbobVWw0k=5Vt~1?^9f&qq8{1HvWhF~lQ$s9*J^58Bl^I7y=JVP$Kbw?J9iia4)%_5 zNQ|(n%6Omd6*mf?Y>JX@FDRhQL1`E8TgPdK=Qiqsx4Un%B{zw@8r|lbCdG92=grx$ z{x<1Db=@^jFGgKD-yM38jk)rafhA!bRu5tM3dK--d2MFW<7~U|A@~zN@Da6272F-* zwkN8kUOWJ)ikX~Ak)@2+ZwLL={Jz|A=K&+}6)t1?#`}1S;o!S_7s*%2#U5XtI12At z{kc`jB8~q67oD1AedA@EXLb{xiyO~76~YdOj_ep4Rq;1QdUnO9xp7Wc1pjz%V%=bm z!z*Z?C6rYuoQZ=~iZlbQF|fA`_u*2uu81v^S0(Sa0|VCSfP~k@9Cts{RjmXF1DMBJ z5f*Zf$cGvLS4dey5ltcf#pBMd12~K$BN{v#u-{tM?c@)^E$J|$g&AZVhqtkt7^m+| zW@J72Xez{~>J{t#2i^M#%8aJL#xD}W-TUZ8pQ%|HFqPSDVZ1BY3`)>#p}6#efhkJq zB!|^{dG!3_3B}8TTkVTn4THP9K&~vyHaJ%j>*lkH2|P%qFtt_Tp@Meg=gaVP>A$_7w1dN);&I4k1UT6M*4c0OPG`NebXet^mlJTFo} zGPr^3RJL|uw#K*A@`VxPc9`WPh$y`yunMQf8Ee4&osdbp;0~Rr{y=KIS zX-BU%8GU?b^?i)1I#-WMWMh);%PZDr)Mh|58j$*iR~i#`TS`GHqE-#qVHV2q(5j{M z5+yQ;FOcprNyb-?nYioEvJJN3LL&K|$}_@-ZCQ?O@aZkUw>i~sDX;RTwio;!Z~$WY z1R;V7+PAzj^=PMqcu=5Cau4J{`qnjysL`N-DdZcz~;H1hQ7#i#7|FHb&8pOz9lO0iMIb>nrJwNGUqtII#c-KL~~cfGd$MuyW?{qyTiVXYY=5hi;oZE0 z?-=9KFclvqQBJ{jto2_Yb$Yn79M4Q2yEf9fRlNWC);{C zRFkr;Seuo0Pg3-^yFGyVYL8WW_8L8_ma~{E-D&ji`Da8R`H$T9y=IMA%fh&(Fh!iC z)m*eT0{(L$>khElaBe?TKZC!PAu*Y7Q6j&YOfp)p;>xsjH{?fx%RIt>r;#fcIh8qg z2mQKmAE)ZJHLdzDPoE}api{6-c|5cfr?r+8h=aEZ{%=g2m9%2^+@Pgw zfZ;Zi>mkB2vm5#fn1V{Gf5@1tJS0Lmb{s0f7!BYXkjvc_c^wPRQy?4&g*QL5kk%`N z8OYxA*eLEo_7x`paHIIQ6^E_hZn3$~a2}2FptI(UtkJ%XQ-A+@gR(e5y74{rFyffi z1Jb%+A6vu0AVazR2O_S_rm$eaO7Qia>6We2#XG z2`9a3Xl;JFqo*UNZ9l@q{j*Ijrl-sJ7lAu#T(TQg>QxT&g=D|bcgygYq)z#p z+*iDR`Ypv@>p8lnlP+3hGeKFu+*KUh?Ar3Y7~eO? zFs+E2@lx^Y(KGCa#jyp!oyi&XH86fYw*DO&jkc2VR-ZtSkH;fd+*&Lsveicm!8YH| zL>x%>%+KspBW(u%#Nofzp`Povl=h9t42>;MyX8_f{HQ`oso7wz8rifm`J0Pj9Ef z*V*_sX3XTKNY1#X&_1=6@+W#z9gP4*)>T|S3YlFTDYDMl&JF^v;5O>`m6vN)?5&AS z{3pxlc#V}<45u357PE3xsBDnS$%@5QjTyl`VzT(W*DE7iD?tTX)~BzBLtiLqBS7`} zDG1NiNNc0IGVRu$&0{;37Ubhfbcz*K>xBRxx=DM@WjwAnB;lFu0X@gJOkx*JH0wg` z6n*tmgY`FwQ?5ZQejmv&C1u6Ib~m#Iy9**I0r8J@!Zjk~m$%&ED&kP})^%NY$(`!0W ziDt5t_O)C9n;^i1G(@*xQ?5Te7Z+;7;Psq*?9{4EzU^Q^=7MmkMm9lfiU2->pV9g~ zJt6>jjE|shK+<{Sq%bU-{&Ft6`YD?;f^z94!Z8OQ7&*t15A;BhTWwF3ehq(%Ixz{g z9|(6$LbkqY+RUu0EknMf;9Lv)jtIL&I+W1c!FQCZ?oTYZ?(kk^W0MoT2?FA8c-)1i z02NhK@xKN+DTupMy+2q=R5qq?(vT3PTRXl^bbLB{bitoSc&2d-UVPis_uuga&-4NW1!XG=$ScutCpx(p7j;u%c`cGH+8&BI^ewjdJ!v|^mGz~;xwibkJ2CT9YZ z&Hn^AwMdDl3BF}gkz`9RZ$NO8CgXW)?mBuSuFaN!gx@XgSbP|O7QG-c(%e!$P6*os zyo;BSopqlHD z+|Cm-yCC7h$lkz(tDRM~a)#4{t${!r@u{l$KeU9abgb{<2ga7%PHKXE#kr~luhshx z;3}c2;7!dG%95rWDe~7CT_R-0+dGCi~rLp^9R@hI1oB z3*5<7yl;sg{xjKvUcNEZW^iMf;?Gufz;d84jGJw8N4rgL`BmLkS-Be30Hxi{6I_-f zFef+mZp0%MEZ{(XI$@;k4#Pm1q42qbNx%&Q_Z~3m1xp=4K~?$W!@6!y4q}=tl1wap zb4YtAEOKaC$cF`z*7;DENe8;dX2wEkBqw44uqCQBBh7bPzAS1jR) zztZfp9D5?_Mz^US5GW+NF9+3))0UH>1Z={fD1pH782k6$;ksP^wz>LI^-+BR`q%^b z@)dc(vqdxx=Z4WdlSnk5_N`5ug=C+Z06_#l_{_I3Jzb3mjzab#D+Hyp|3!;faS6cA zFBPUhYWDyL;yACA%FCWE6T$b@QxS@fq98++Cg{)Ga^F;dDjK*vsO}DR&*1w zbX3q3G^l-PpM~SF+JdgyNYae&bv%Xj%7GL5#^q!|K{!)2IR3w_$u+RJp z-6h_W71Rqn41)kg4~EjyD+^RdmV%r{fQq*x$bM$b7x+Cs*OQVEaNwA0zU@QmLuaOt zyRx`g{mi*VF&t{Zi;ZCX_Nd}{-lDGgC>ly2HiEl%pc$=2zZG# zq4UxLnpujr1B@X(TGY>%CHoPcgy0LVjT+W`o{Z_RLBsh)*Nziuvgc8xa zEKOujj!XFM@D=dG3v(2LPapCo2I|_#P|e9eA9~7<;c%{^;1*}|E7jtEmUHPSQv=5u z@kEi8n5#;#LIwk~a%4p8LPy9~oBAr{jZq22MqiIwFkX=y&VT+|;|E8whO1I78Tk03 zMXH-WxdPM%V6Fz@wa%R1%33<;o)iV0CjKR0mA0=fbj!^ ztHjX=++X~m_H z&#}l#6h81hC4A{9h7&OC1H<17bwv>eG{1(#;rS~MqFT+{ksw7?jURHeH8vu@q}$gL zw}GA|5GD~I^;i8-k?Fdo5E;>;zS2b;afWR~AWEgkpG{5hHBz!gF2^kI=tFzl5QYdB zc^7Uw+r?AXc~5n&^=}y%48i1EklE2h_RU`LFA?1t@;0`mb!y3rSKr$32*DE}19SQV zPpup3Fgtifjlfsw#JH8GFJo-QQQv`1mlt0Wsu*FYKu?Lt*2bD=!GBzfApC!DR-~_; zK%>^*35W-D9q(p-TXDmZ@rOHAZD5VjOm7Rwdjl^zGJPDC)7|MYtlf4O1ZN|L{Y*-< zj408RPCQ#v^aq0D4gm4b6k-==*!2e+hH+WFFd@zX=)qPM{ZD_tUs;e7Q{hOS6fW7D z?*w+L9{YeJ>T3AmfWRA$xhuC3^tmG|zm+Y(ZG8}kxI=;jdK;lGo$?(nTeTMhMIh>d z^N+hn1k-|;)B6U+1Kz64F653Zt`N)0q%yOo^0>*&KD5=P7b52--j6QVfiSecSfo`j zfpEd+c|+XNZ0CmN0KLC2z!3>O)za}62WDb<&GU9%p{iq_Div9Qx#wjPC439GX?Iri zzQVriH)YP8+`CL*yTVxko;&CEK6&~hZen_qsB`Vvc~||w^2-GzUT(o+LKtK zZ2r*Z!#GEPLh({c)wT2JxNV^2eQ+wB5sB6dx3fB5Oyxx$-NHZ!Ai2+Mb;XdLfXuf- z>?`QRw9wDy7&Ni0Q-J{YwABOs!yj4Zc;!Dma(0zyH-=PO@y}j*xQCaKtAu7YdiLRD zVJp)J%C$oB7r4D=y{=MOt=Y@OX*g+vWZ>$=p@<_fXYrVU?T!{Gz=?ClkEC=;3pPxx zI_U`Gg=x956O=-8vQ~H{a;Iedn)9UcRnf5Wxvy28KDrgol;_nsvXHT_?QH2$wO2Ze zf&nV#-$}2n6{*mA9A;fS4Qyc(yQQeIEDx(iizvmh`p=}-=B}!yK(7LAa4}`%l*SW2 zhCyc+w@|YNi`aIra($H^B%R}XGmtHkXw71bbnNn`^c63UbS9TwLx{Ah>n>-}b_(SP zqZ4X_QHf|Ar|}aR-toqo=+q#S-^55zBbzd7@7&5{wY@?4D>4kA4lg;`E&5 z{`k^5X%--|ok9`F7#Qm%O;WruVzmUZ?h$F`m`1p{;txgP!LsZiOox<<~70FDc#-dl>PjOXf<8diKtkH2al)q#o! zsMOdNu@)$`xAsJWm^cAs)bKeW%78!N3~`AH#mmPSMpLsqahFbCxAxC7=ESd>FBFoS zi6)Ng%q~q%(FLUnq%BCH<1l9gj91qN5Lbx57(+pwrYMnrj23Il73 z4*jf=V@Tc`w15G34d0**@_=-|z9?XQ8fS?Fs!vFO{`tqZ;L=t7xsN}T6p>qI?I|ph zO7aoTQ%l6x@dapbj@i&qi&;h@wX)dbOyP6=ao%u)yH!r_(;nd|w?>497QU4Uw`C+`(E*zh}O?dgdXZI%Hzx}Ft{C(oJZcp|IH57K& zkzs$Vgrz6K4{kzD3L!!ydS%wyWs{m>Pr)Gz8?TGKH6LociiilTa&mp-(?&FQ`vFgC z3iyDMeIt{=>&xrqk32D~I&|g?aNYL_?8` z+&dk9Aosc$mdTV18)j2$)w@b7VeyJ&{#p73eh;E2pILf2qhZneb~l5D5VtqYP%Y|# z5i`@F=}f){yU+1bb4LL+Qb*eXJ8sLE*L=^zWV3K2;Ir`n88yJ;WzX^6{p!Ug6e#`3 zn-qix-+?G3?RSvz^`s)jgnsPQYK#u*yQan3FNGZ*G!O#OU3p#{Z(548k~4Gx1Jnr@ zbc^Y>_xAg^dfKQih-APo2d53g>$%aCkOPuRdr{YU%o{F!4>rBZ#5QuZyF09HV&+^r z-_hDrX@C!(h{73UIdc8dzZ4d#jm}Ll=)b0|tQcAw8fH_&vD)uRP7{?LXu^H=-yvJd z%gPz#1@*KeqLJFtIsTAB)?l6qRzC)}b=)BeL3TYW4H!&XoHSNk<^9X;n38X-QpVP} zPI98d_*L#si8I(lOSLHC3aPvw*{%bD_YfGCXC*>Y*!y=Z-EBnY?unaii8};|fYagP zZQch?ZzZVt#J}w3-~( z3ZhyBGm~3u?;*n*9&mEhO!=8`aolt<46QFOHw+7rcm4{c$aqwh_j5TfJaFulhO!r0 zTgjv2!TXl*2Tu8VEsU`vZGs$HDj7(lmFLT4@I8k8XJ1Hx%{^=gxES+wfW*WNbLD^5MK2o}-U@Gc6_^F;% z7=rnZipzI#fX;%xOZzO;a!POBKH&aHz@ACdcx`p_3h>qCiT^(GX` zykUq!o51awVA_Ld;r>M(1Z%G#9|a*u_14UaB(uz{i~lB39!MwQTR~$k; zy71_fglE`mTVY0kZj{9|ZmzUTocGd<6@H=r+D;{uL6R_j>Y97nX7KT*D!tD>@#67$ z9vUeeW%~$ts(9mZJxJNfar<-4_XJe4@5M;6GVH1QVMrx7 zSAHTVRot*%91zPJU27cF@y1EN6C4cPVsH~2VJ~%@EP6S{&O;{{>q1TZB6A{R$&uI? zPImuDea~aa2;d7n1G3-7O^r7nCfUOmopvD753Z8OK9#RS9?s<#YhlEDDbma6@+n(z z(iGQdDo8_o6}StiwSR{0e{gdGwTOQ+9}G&G8A9AA|@+2ONEzN3(@2ZG}O5CYpVam92#8 z_67q;>7iF`ssXC(L{CBq|m%r1awS=0H_S?tc}4xbmWSs5ZO_hX5BsuCDXg@ z*jugN)B~Gh0r_4*5&Gf+wEj5eDuUn6_J+phrBehT+^ny-Xb7efVLrZQUc|Q%b z(iLT~xREFY81=UE3mm;!HwA}h;zn%K6i}iXld>e5-#@NJMI|o|4#iEm0ReSO)Rn6X zG`{R~NgjpP!E^GQ11MK2Xf;6#Z$o)&QK2eZ1V~&j#F|cf`$3$?{CU;^vmi1ugJ`IP z8Q_QscfnJiEm5-+Ob?_1*G&bg!L9V}XSQ+*zk!y`R4f5U(th9Uz7Vp5al~F&$PRVN zbX=BjZj7DIhyj8S2U|X!H96jSOld;;Q7I8?d<3+=yFkJM!dr5<(qn2i= zyK-IS%k@fH4}XRBtp^C5Xs*vaDy`v%Xkk73A=blUT)j!b!{o2ILK;L@Oc7k0eIG{y zfjL{0KpTT)f#^mvKsMg(u@a54k4D`d0~W8rV(s&$`(pi-fcE9_8>h3+PU88zU~W(G zwW}NX=nE>xrbD`Q4Jlot0^{?1px-LI0iT1vA`WA(0bMS;NlOCOT0WIR&G@j)=?SUy zVBVD+F6ss)?{!u_5{%heYYIf8FEs*%v(+2yNGDzbthxy}Li%Rvk|b9|Nm+`DjMOo) z94zZQlhr#9{W%EQBdOr@iL`my^-9({KO~x&(juGgn$%g$+Owx#%!WyOIqvnbcd<7R zdEt~KYO2I${W@NE+D6fbuktv3a*U^WTUKH3u!oI_;>uDYk$t5pao40K^{brtRPNhK zZ>V;sO_?`(w9nri;}j&3ZM(42F3t`f_`)_WCZ1l68;-ZD7xm+d*U=Gw1Wd4e2ZSl-=NZGyox$ z?-NAFYF;udEBd5BIc5K8cxdIJOU!&`hh1c&xZx*=Gq4Vl91rv{Fe1{7`!rlryE1j! zTI-Vfk^ib_P;^{?_D`*%0Q%KrOn_{G#q1lwrW@v-*WXG|s~Fhn++?Xc4%xHEFzOdx zS9O5W)>GZH+{+WZ3j`y480u#4$Nk)DDY9v zf|m*=+`*KfhQV@AgmJrJaz*MY^Ew7o!1RG6B8G_ox1tQ-eGnS@<8cl1TWS=P| z6zNy;oEbqOTkXgYdV0hWFs}ueFBsr*dl-3rhOH%L*@`{W4BTWHsS*JKL|7wdb8_dw z-n7YSrR8ne?@ykF7B8>Ju$;zpP+!6J02KEZ8;YVX@%#?eAI}6S0~DVXAxKBUDt!QMK(;;8cZWIv8;YQkBfRdkiY zU>nf^$2hHWk{}|Z$2}C#!kKyUfA(j`8_UpL5}ugLVj=-tDqkt5W^GJ5iRQD0K)r=}LIPNv(jxePkh`F~^t6{*jBo7&N>~x%)~9 z4`h*`|3=-(Yw_4}GxMM?v=v$+SZu0Jq%j!gEI`mx{lmFJ=cJ)_08hD=up~ij;+9yW zM0N5W8ay$}HV3iwYZ}ojb4Andrq9qK*?0dNv1^kWFbL^MT`KmXZljY^4L23?U`E%{ zS!m4$(kw|0x4}o_$EOF@AjxA}Do980NmKDTqb?~+nIrzIC`AOTbVDGU9*jRZspt@u zqK^4i7%s(b?liX+Gdu4jzxWO;cYTTT#mk>bGnQmYSu3`L*MmB#oau+!kh(R6ToFA~ z15F!XkI23I3|a*^bL1ot@<(gB&5Mc2a;0qBR-pEc9I>$bIf=Pgdh4KA{7E2#$wNqL zCrf_^sfQdTrQsYkK^p_>R|_YH_LVsHug$`ZJ>kkRUyAt0^Ofk@O7X#PKO-5M5(Mhv zR0>RcsUdw;p#M~IE1-TXlx--?#-r$$o#*>a*d7WaelrjdV}Tsf_5eG6s~ zB9K&}Jg|oq45_z*2fO4#88XcUHtT}bmYS1(3j~)>m(o%QhFey9kJn?`kO2!}+hQeY zA29Ssj}-3wtj6A9ABbIXEAG?{tq%Cu^j ziP82UxTW_sW9;G`%TQMDM;C`6yV->Ott+a$w(7<#*PqR~^Cm93!%_aL7!Vz`atH+f zG;pKK78c}CnraOo6`}FrzqHOF$>uTeAAfV5hsEEmW2Nc;H`wzNA1r3FD~v*jTR= z%i=!T?4zCp?M41a!n`7ictFD}fH>ZN{v~r+=+-U8IpY`}JH;69WXKgsw2S!vjh5!k zp3ZL%ckoU?EBnq6bbJlO^aFaO&G{kQ4P^@7*?C|X6b4-SzLcB^!x9(yHgD>0$g__N z(##nG)vm&ioGWF^ilcgRN-p>}IQ)xG5i#Hm%V%>KBp&b^as18zw-cbZ`{bIUGJGL7 z5^?nhm|OMFDJY`!8{8bDT!^*nGC;omD>@d~%}a6P+4xNzKeBmG{o#ll5c?L-o1#>M z7Fkm2hoKr1RCa=gQYfa^%Q&t`7aNNHNLfe4gogFJfYsIPaIFmG z1*hWt460TroX0fBE&PPJ0`*{-z1xzE`#iWKP=CNBP@P2E9Qq2V6oL!gQn)-+1Do|= zs?Kn;jVY-zZtdA5l?lu?ZL{+oZIwk6CYuJ32Al~(6wwB(4})@VK7r>-=W6o?26zQrB{}__dcXD-bBpE8+XKXu|Rpm69Fhn=Wrjs0JJd?o|vVpIy z2I;7DEEF|~r*u0JKcM!?2U#BfMKG$jqNA1gFHzjm-tp&CyvDUCFn0t}W`a5aYw%=U zzPKVH&saCU+fkS8PSQtH5^*+FDT#F*KRnc<%FKatd7HtSJFNzvfZZaVhl4=hCw0%} zSb|RA3+WW;|9{Mbx;GTbH;btz^4@MU(H9X%3kuzqCt)=Jm#~|^77iP$W}CFYm-&y( zn8cWpriaCen~gXlul*pUkXqMdeueP+v+l{7-niniXqdpDc6it`l~o=#cINi zk{loqK?A5~jS?A&Z>{@bVAA$swgrV135l#8&L%46KBITSptznTMK>^+%v4zK*fu)s~CKGS@VqxoR&mqbv0di{RdzXk; zYu`A2W@stWGQB&gCaRgLLGgk%u+&${VUXZAWt-JIgZ1tJoleHD03i?)HLX<%NrD?vkv{@r*PNGiwGjq^%D-}P=pd5AaIVIp^sajH&maHKM| zGJH!2mc=@JD1S&G{whlzB6+unzkOO+u{xHesX}s7mUsIV=OEYYuab>ue@J?E4&Bj3d7epPQ!DgSNn5oR zZraJYAgisKv#V)gVX!CzCnxvq5II%}78wwgG=tPuO&-1)FMYU>NNsFR32LOMbN&~5 zg~ThH#ufHmV^}8;5~Ns&op7W*0@fnV7`c3H0h)q__osuLqyBU-i~s>M@K@MtuQI+g z3t6^^VC-sn9CNKJurH`&D#yfsE=pgubXIUcHr8Agprmg$aOlLV&{OJi-!9|G->dr+ zAw3kK?8BtFtW_07Ya}eLM`U4ySlr?wE7X%IX)013#XaO*8@!{Q&&n;Ne$BV_tifhK zBzw3Xk+M`N^naleI_&(8^)R7{FP^faI?3?iK{qq9@a~p1XbfsS)unomV|3`A;Rm|v z(aa*5Gm)4p?6{4R3j=J=z!Me(d>`7f1EBWrU&2}6Us(U3!G?nL0fX@F9j5MA*dstP zd8!#GLS^upm%xH0TfuWhPmCxvEwK6sLgQI^fp=N(iz>nTO} zvsF3%NHaJvi z79L-*dIBz?*JJTtnW2LIL zT@gMzWHp+wd~IpVOC6lp0b5JZ4!hKJ=0)?6cj&yUHE0paK1I@|XV^MX?NY&mrwVV5 zTU`k2z68ozJ&$jmPJX^dkhb8=5^%K~tKX z(0`0pmg9!3A7|27P;uyAtsC4?|FFmP{a%=&?RBFl9Ioz>f%Y8_5sw!6w$IoY zMa>!I4ASupQhfje_zO+R7si^3=@D|%L?9-hsL0x-fWlXc#=|o!y>m?qnE{GFZa&to z`^mK5jw%n%yY5d8?t|p`XzMPKSk(*Vz+FeK8hjWf-N6PXIgJ7*$jgB8XhzyX!r0J@ zrIS731LmIU(1AEDe$**LY4m3{hi=f_Hy9cKT*Dmp%joXls6*GwLq7nZScy~s`>lO& zDz}IA8foq&i_i7IivX~D%ltJSW8o)z0UF0LHCZ{j7!G$rUrBxI@$UxF|2N}@BaSxD zx3i=^LW-(MEb1iY>j6Vob}Eeve~ znM1d`Ij#uP=UzZhErOCSVkJ=5(pOGC%9FU}x|XtWorlWB1=fN!Ap4F1%0TBHF7XHL z55S5ho)`1FA19pRuuSz=@d78)G^5eM8ppIvR?d|Ca{8tePsIaC z<*B^TWf|BKvJW}WcQV~uu!G4)pTDgz0jHRi+X5~6JrzbNt%NjsM7M>{R3*oog>`b? zhH!nIoR*1lO?T`9RAhMM-Apl9xN^5OgY|2Wvg zcuxGNU!TUy#`Il$%*8_^0-CyzOCJ#s!>>_Ve&VnjaZC_%lg3#d2pCSZNvzQD2RjLy zcwqaAO&oD_lDcy}1xzD;3aue_n@28y+|t5k#J&LBR?^69ShLV~52O^k1EDrjWMV;2 zAa^a~5R8;XgbMlV9uVLo`}eA(I*={5?s94X`lmR7sc)NMXFcLUn8Kgp1e{+qSHmJc zOi4%q{XCT6p@j9-pC-8v(mBBQ4MCdJwMh)Y-@vIL`BuktLjuAM1yMe7MfN&7UY}$8 zsdhO#yqq%bi1W#aYTelgb|9^@y}N3K-A|C1O-_=F^Waq}ZcU)pAr0OMoA}E%s4CgX z!+mX6vY{V%-z{v+c2IoabT|x3%e3kuD9q-n>b34Esl`Ds*#JQYKsk!`q8ajaa!n8N zMdnRC*__|!Z{S*4qrP1$5(C=51)mDW;6t!C2R87{I!ag(>tOTw;T*K=Y97_x60uF2 zb?vUFB8XNwaCUQr`dY$F{7Y$WauiM>{70R+`0-c%8$gMC(8p!tw_TZARSZKC?^1)Q z&kw!N6+bf@ekBiK|B5;rK>z2!e59N33i*j*yCrTTt374w)ZTO8dtH&AP5WDuniDGk z(~M;qf6ZXnZ^NwdWi)&1h{3%ufpLeyB(d}yK zeQdx51MMsHHWHetJWi*k2jB%&(#Dwp2X?43z(CZ-yxltfHVrKuRs28}w zL6%ffzBnfRpWTEzJD zEAJeO{d5JtH#AYeFE@fO`{yWpa#vWmvw!|S{_QS?Z;Kz5J}CtT_HT3aINkgOGjO4Yz%n7IKbn<#E4X2Gz8Y0)96HhgZITiC+j$53VN9n zGJ^lOAb+9}vYraB{6Irjsu6TRQ)=u3>4h*e9AdzMyFc3%x#)H3xpqsKTZHJbR<64u z$}V*W$0jzF1kpTn>PYqE3B@B@Z_JnUWq%Zr{f%aYN~#JR7i>5B;kY5(77S&P+njyd zdm}T3LoI*{B8bk&8})QfMJG+#OV2rz^Hs5VbwZM2)h!@oA24t{UW6nG9DG^2xHFTm z5beaX3e7&;#vsubI&+sR%k(^4Z%k`A4(ZwAozeFqiSZh&$0la3ABq_$ypE_OA$z%L z_YS$ze%i%51LDsjv*CR=vxi#Y*n>g&m2&XRZ59a_sAZ^NtYS!89yp_*o&kWZ(S ztvum)0iFQ=KLEhsv}LF8=J=mF9N+I7hOb0OB>>0OjKmLhy^;Uy*twL6pKDLPav*7u z;%CMhf5Z38V!mS(k^O^q_z;;Jm0-VBI5l; zlN4K5_Q}vO0b|^(mtNqLh-|L7)dn6owH=fREKL(KUYk+pbY{!Ot_Rz~0GEGzSwi>y z0XEVUE4!=V?!``gFQVF|>Qey7rLXuCWLuj{Vx8`(m%OI`toRi>J_~IM2H`>!G-SJ3 z0FkD^GC+X9aCCvcW8qi?Rv`1O;L7?-u-;^0PvZfFqUNdY>)c~G>#+mJeQq*i(GsCr zNd>!_X*>uS>Z7vk=R@++^UB;@o%uYOg=+;Ovz$kf%vv?K41Z=pt0(d~iUB`R{<;1U z=e)E{O2zMLGid|Niw+`jVjiDTn3AjV$FGOgwydH9Y_3R>-yGj>y-F<{lPksVSbg4o zTj4w8>vnu&j|eOwYb5A$(nyp7)?_Ou&KNG~`d;Mojdiru1Is}aT7PGvtf|t!=X%&_io-K=Wb@WAqo3X8%h-=?EC#ayE+_iR8IwUjIR|`44lUh zf{c>d`vkf+rI8IbTE+w4)kfQ8V#;;75;?Fjj(XNMchvmn9>BOw$G@qn!^7_zheV+z z=gOvzmp|7`dAEX?@qhoWA*GlK2vzPJ?d%c0PuQX_7Yubk5e_*&33V_3BjB4RU5FK( z8czZ{PNDPIWTBT5IBUx5rwS&=1*6TW$8bL_b@}bOD&unoL4w0a!MNXzl&$kurz~8JM2}J6T#*wwAzWp0sTj(1<3jP1r>Ds!1)3U5@&5odpfK z)vezHrBz1TEP5~*R-pqP%yhoo42orbLXCS;6~MZKLnGFbF5JU2+Oz4XpYcKqispVK z`bU#)8L942+cUH8GW5Vmd#$95M)UAHCww*qBWiWoH0vM08St$qe6P#$mIu7kcdANFSl% zf1~_({Ni)L(jJh~_D_Q>1x~K3*od$j7#VYsSonXA1?vFIXn4@xZPJ@-Dy^fum8wrN z`ipIx4U8s#^>@*V;lSuZ!B^~Sn?QK8sP6vBxyVe59EY=^+^S%EWhtl5UW5b@?>>Oy z=<0JZiN(38RwR zu&i%BkL%lpBMq{GKN6Q3&zuE2yC*}zUN?`d=DUuKq1M@8w#V`H=#cD9sJ#7Cw6fn=mrcyt=L=cR@ zRqkhwl~zFk$TI3Syn{>^ksOB<_fja!nu%lOx?GX3%(^j}rS5iWNg*r};rI;mKb2A4 zIO~#ODB%B(XR$x z0VbwAh*o;6jh(Gj-5lL|{R5x?SzdGB^Y}PmXix=xB)e)o%>bYn#Qqgoo*-WARAeoq z+8`?M7*Z82fstsB%PkG_L8t@?c^BHA&z?G`0Y3WdRNXBX+N)(mufdrwP; zC?a<_W5X&+SU^8K1(J4!MqE&Z6+b5}Nib?j!uX?#ezOx>=k#8?p(j>K*EPpCAc~L^ zEuPNh*5-E1+@59p!eFwPQYRj^LYtH0ux`5cj)TcSQ1pDlg7ss&AUgNjf`|g#y^+Ja z^mB*Dx@O_Z^g!ATIrw|JIaTAf`w?-lY7gLQWEyoFZ|d9)3KxLA4mU1wnVfPUK$?og zSfqeBSF9?$DE6@^?vMxOt+VjYD=Gd+w(<5>)2^;SFOzt2W9Dwn#UCrt1m?+)+}flX zU~^&LLhodmWbvK{2zDo&!eDiy!72SzXK+RKyI`OdmszjYO|$Jb?mx_m8hYmWWbQn; z{4TikI5I#Td+?rbLUCawOKST;(GkjuhL|a1S)=kxU{1rVb#0M2dIGxU1@}w)xDDEM^4PLG393|rjrAJL5_3B8^RQ9MB>-uZWo3)TXWd&!QfR)3=O9T*~T<9*6!_B3w(ppkUFF>%IWMv=S@ zM*)b!|I`Kx)aPDH)fC@S<{uwbSyi|-mcbMuXNmY4)Nhb4q9OAb#>b8^EyB5#gl~@drtG4YI zQ1`B=I7$!`;VQeIGdyo%M`qIo1k5GCZQ)>%hvw&?P3-yBvP?rR7Hx-td{++_y^fa) zo=lz88wY7nbMhZoNEl*DVwxepWWGcV&>@Vh%H`{tR<#mYEEi@mc!GLBaZwYO(BB0c zU!=I@#h+AqFD=RNRVC4n7D{cG5dfy}YZP-xyUK<){{O#mh%-wNs^Iu9Yt51x9pk&c z@g5asc0H`rR%YELDbbKbfqN;#))Nkh$2Xz7EXG&6an$;7@*-SrFA1%EJ$-3z!r zG@}V-OrpBcc;V^)r7(sJ<;Le}nZ^jVVdr^Q4{?ACDW$-%_B&`M9DhpNjiIurB6v;i zZsgNAoWF3D|9JDyPvrKyKu&%Sft-GE(yaFveVQ2e97U#O0o%>drW@mk%e@e$US`zK zF}8-_q_Gu4`^Z2Y|m0419x6$ALp;8B}JrqS*z zG2x^kRkbi@W{w>IYk@vr#i4WQSWYl^*?=jY!a;wHMpv}E`&%t+7MU0uLYJyTmVKt@ z2X0a9)BJ5z&M?n9jT2k#S+TeBcpQ8mDuw)i_dDF%Mb%0srD~-nXP7|kro-@) z30?43l8`@iF>svS!Ch39hZL*hq-;1zufsIuqL*q_f;;X7af=Z<-kB3~TWD*KS+8n5 zZeYJJJa1JvohL>gKw(hk_%)uem?HmdNw{P-#-`dO&8Sc`PoPWh9Ju`naG=FOLj!QT z55h5{tFw}z|Fz*O*m`I*%HC1V+&oYO2kB>7^^5sko1)kCfml|UXf8_LZCoJg-TZF)M|bMDDdCov$!c?D$C90($GqNs9V6tf)qBqusk zuc;j$3K8`S^{EwA&@hxc{QABx<>*eF)0kQjN_vKXSD-AD_#^zGbFB{qc}_#5zjg`L zA;@A_$NmcM(eulN{h?>(9wya|=Y&s&)JqP$Q= zg#}<`#i{>ZL$aybUr5Gy1ApTZ4LX#Q7eZB&+=RcoZDfNv>20k%GSx)RgE61cuKbIs zl-%yJ|4Gw;=5G7~n5Q`L&WmZA#+4#hdHNb-A{e?&($xOekrW$r-uh%YV$S_<^U7r!K5VbXL99=7fR1RhcF+*{EcyOkU3^%@6$_i|X=TU2x86Z~^Dfp;(eV$*mKq`cSnz<@2Q8G2WFM+F=I?6* z6zC+4Sq-s92krB+N*g`C`yX%N^~-TEy=`+z8g5j+$Wp1sVf{l8$sg)|pABPJPrm{B z%tOb!kAQ6kr6d`-w5UIQ+<`2a{oKDOw-9!r%kF8h0X9X#X5>@qxn-h}tJA?+MX1EA z7$8#7wSI=%fGh_G5FaG_B_`O??eeQRbM=C8nmA!9y}Vv_OI*MH#uLRr`Jphd60(S> zT`v`D#-DW}r<*Vmf<>uW6jUI9U^4k9p_K20%^}Gwn@oIV!T*;{UH9L3h-2(HSKg=LAYct*Bq%FW`dI4y9p zwTc4&JE}^ci((H$dzEGL7EPY9QRa>_`(r0Ao-aPc#H&wc8wjqR1Bs41ly?S{B_!WF z5jL1zQn2J}R2Jd!ZpS68b-PP|*n%B2F$%BFBSMUXcLU)S2l1n^d{BU)sEr5`op7Oq z8bhZ39+`3VJM;;RdJh4yKj+45;BP~)5W2OGij`>RlGg3;G8+BM*x$&)FBqt|N*S)N zGEwye$l?$zItG^`a#uuJrttlJa2At0PZ!~&B#3jRo}&mN;IeVTiPSqG$kmSqCe$l( z;V32dxi?}d%_eW8vT|y=fYX#;Vp38Q8xQKv)JsP49a%=o_l78m23lSKh#}$W4Ijz# znBbb=V$10M^2u0L$IxAj&@vvr#niRDU*dM?9C&?khys&i&kw-Hya>ft!WF~nE??_RbDIXlQtv#pO6`73*omQUg?g5- z34>Gp#W;Jg0KmEl^MZN7_p)8v{8BLdR2X5H<ylTy_y1RHF8V?XUnExZ?*Z4b-E z0D~&tC80roAnom+$fzw?_*o)pFw-J8g)F&hRV+?SWo{=I`$w4yT2x@D0(LfUP5?Z_7^ z)lGE6r01D{TmF>i(-bcdu^Ia#G+l-Zw8ExoWwu*;kG_G{Gug8omg9Jj#%3heeA$|# z)~Qhl?ADvS%lFd2KPhXz6d}#ns~9h<3P;;qQ2CzG6-^tfBOmEr+4q+ig{wa^6~`_u zx$hh>w($vvcIk4XSzQBHO&yzbXBOog1A_&Qg-=9;BCf-UP#f);WjhXoI$e><(khUx zYIeDN#`_qe7)BahbXy*>LjqU3Ee8Zeldib1eHRYQIhxZ23cjxVVEH9nHq~c*MT*o- zu2Bsc4l|iOh$iRIVULWF63RHQ6Ti#IIx!qZ+#OsR`GlcT{At|5u@Ed)5}QflQSnJf z)yk9DqX>YGjk2J}f6<1u;-({Dr$4|`ccV-8y>_ zkLME$lAZkRnSlt5>*xr;dIPWH%j_u2Nsf5o0#$xdTVGit;@elllRnTBW4~7`Kxn*5 zxco)WAhh90sz=GmSYsQT_A`rt1Jfhcw&_7|FoITl?kKH6{BV-iss+Gs>D)FqfddDD zo;o~1A`Jmbq&UcEc~xO5fB5H%(vTKW8UL#iy_G~q&br6}xF}ZQ9fT$lfTU;JECQ6> zLeeHEDeGVv!Ootc!J!%tFUa0x(&oIwmAg&A)XI`}L6-{Mu&r(T3-ptD!?=#>5zAmMCuFT&4||>;%J%Yl0Op>fbnIP_$4| zku(c84^*S;o~=>N+v}M3#$^iP;D!gGcwN%~S!J~OZ^ml^lXAs$od(+KyYSCcqkt$_ zv^?=wd(QTB3aq})55?tJjUNaPBjAw*7vZ51EXX=V*P}{Y6qi1L>bEggV(LcuTT4y_ zHrOCS3)^+liC((7#S4?>myI$=qu6RNNyN^|?(UCQ$ZY?+hYMLUhRj;KZtu>LL3-cB zUisxoixyC68cFfm35kO221E9@vl$aZk`^f9aG3!Vqx_V-(CsDAbhu{QfV4BmPh3X_ zATkva`x_xS{i@DYMSJ?ISvVJ#Bfxm9)x-Xyh!Of(EqS`%Ww?kg|KO1gc3`~g)SmCX z&nU>aKG_?Ftb0B#@FkHmU&b&`*i>|yr?h?Ik%f_ghxB}-nfAT~#NzwaeYCEE3b){_X)g80k?s)35%dbK=!1m_5MsBGK|{(`7mM^Ofy zTI8z>zY{B$VkO(tMn%JLt;OgHYd5?c{>-tOe>y9JA}LV}t|w$wI^0-{guV^cPzv-J;Gg1Owyj&3U`@y0wt_3w%xe$t;62TAvzvD zA=f4A#BKhy#$c?fcq4#$p)I&jap4Y0Ly7g}jA)h=;&5FfY5EDZz;I zP1bsW=!5OjC5XVH+xI#~kzOp~&m=>WjwkZ9I_a=XU+n=8<8rN5HmHMKsC`I9jtJQ4 z#)bkxI#74U~~(n{N0Zt&u?ofFT|~kzc;&hW%8wYHipss=zwk(1A;3I% zOs?m7T^5paSV|_Ct`I#&bmzk)*C(duM~`L==JIs=(G+6c9ZXm28j|0cbKW{mFI{L_ zBfKO$?b*F>rZQOHt{wMagu<*0r8HoPaD6n$fW4r$bjcx{zG5!-4gVW8s#$xKh3wby zRXWEFje+#igCtNZrGEb9dtez9~P zp5FoN1e}74!_B3rhj%9Q-GE@m@sS-#wMRw27xc~9{Qw5I;Q2$my(y~j!)`&6U3y{a z9lR=lj^_cmyc$`0n5G#wtMfn@6#UXYI}9towg|=cJ0_$6&P!!@7+m3kLo5gAjE)*6 zo`E(eD<5v>UljDZ_PwIwilVowt-{7Q<;_EV{(~-T(i^*r$}06D&u|4Am=>c-LS|eYhzTFkX{E&1JFIJ z0i#^Uk^g{Pc>xcQq?w)BW&IghaLyWI-E9Z|u{4^>Z=SZ)AdaBLaY7Ff_LwG5M{n2^ zY6}4$Yv(Ag@NM6penLu_WY%n0bMUYWwZ^~N&D*E)ez^SEa4eH%luv`Uai%_`p;DKC z#NdSmu_QCyxqp$bX&Z^4dZz`|I*qex@?=UrFx1IB`}CWOVAt3=@SMM=hrL__?q571 z{vjNnptg@>Cz&~b<$FLs!3=;$_{9V28FDO8 zQn#p?|F7|O={d!NuVmD>nKI@3&HFUZc9^fPc}7zb6jBzo*|gPyl(+7za%3md6Ht>2 zOT_BovYNw<7S^fdZ}d|Yd-j{K*~gCmsf#jZ@UvvRE-F3+7#O>puaYln{x8SS(1qrI zxDzQd-?xmk_}_FTj)a&-f`^Z19E|c{@46{9As+`*SG0R}w30l#qN@QZQo>R4Mx0N`G7H!a39W*|m~Pwah`ccy{Sv{y5kP&w)l?=$CZ3$tDmJ z1Uw5Z=layMVQnCdmiO)8J3yUB9c)9kj)6eFgC&P<9}*eEZ<`HV$jR^E^X!Ol0yWf~?|OZ5uuX3bY3OpI9l1+Wj47Ea2&VG3Xw0tTvM#1j4NTMGlX@u98bkV{?| z5gv_??nYTKo`2JZ8}KVS;Zja-blEO!3+{j-ZE;@fi*=Kv(DlKfiw?9C+3_jAW2_LH z7-!}RoppJ<5=%fe2V0s@>bicRQw0M(uq6W?^gAad42StlkUw{0=fnY1Z4$db%8d0_ zCB)p;_D#g6Y1PC~4EL;ZGR2w>p!b&HcMPlVhM6mB(Y5k&%}$5-K?D?YCL0?dldQ!S{&rFPC0Yn}ohF3sNSS)}WsS-w%rR~;lbF<;+y;I^zI_^xs_E_JUGXpq?}r_z4dl29*RV?=35Stemoj}86R3pX;#Buq59Eym z1C2qln5h)T3;A|{esyqX1?gUb!nGG8=^zTBm5dyEK z7Yw;|?>U#SHd3*}ABd*HT~X`?mZ8^1^Q<6{u#Y-xt#4v_Xm>c1`E8-^2T1dI(nY&) zm=FmDUEYdvXylGXo2P`Ka?_K&uTxvd*;7Zpw5s7j)-yBxL zQk>i#PE)6jcS3DoNK2A-b4o-zn08~q1R@gshz+s~azU`$;rO3&v=<@GWwNlks&qg{ z^=Xwr-~4V^xpd^ngZzKg6GqEA`XJIQo(oU6{FXAmf)HjyBF7#0kwrIS$=PBxYbIIw z``27G^+IcU1)nd!U?#DP!lMmVB5&Ff+o7=@QGK2F(;ZL_lfN|YD0U>hM~p6$?n{~_ z&M7cb-zWk~C@!LDxW23Hi>J?Wg8is(t9EX@ae<8BtnOL!8U9yMZca;JekR@))Zdj@ z&EI0!GC2xbIgRe1*-n=}Ng>G_dM+nvj#s@#0fON4;umNm+Y>{M9xwS*M%JVGKhm14 z!S}bDm@q!vOUxP0Qy)g0?!tpr;$1D4!)BK=0ul(33d$JB##srR%3Y}A6MWFLHulem z6fL@T&(M5{cemRRX?Yoe-VOe3IyCuyT(CDshDuFVa3 z0l-ySEF%y!_A)uf-Nji(#;IakRH51JX&6-Vw`lB+i9GP75$;p|mZ<63_ya;LzC&99 zDN=7-(ZZz#OS>ML zYeE~IkD|XgX1PSYY+zZK*Uf4)v7f#L+Ho%8{|zq`n;DKi%gvOUbwd~NV>EppFBOG` zw`#w2X@>h4WZ*C@y+MKRGVlO6?yh4&*k@eFQwNgV#2Qntj|($UZ`(x|qxI@?*`Nwj zq+5T;IAlbc+DSJ&cuKC;-#89q)tPl{$sZ?UrR%1iZl`aUzO=nS0DU_?v#A>4?Ec!$ z!6e3cm$}4K z-zy2)O4A(~iV3_R#v!icvCMKo@%iMdnuP#uu$R21{hd5!U%c!K)qb6KD2esBl9&Bs zZZ%*E>)7_YPHcf}pAHi)Ky7fIsO97Iumit0H!5`F$h17`e}#ijt?x$OJxrH~7N}dv z3EcjsE8+^>0|43EVvFf|ciGc6T4qBGr;=trC)17zCJSrnsk#)Jdh~dxkB; z5AQAZ%bVi;GR*cPAOT=OMy0eyrBL^>1Zy=WO@D1jZ_EgBoPekNKn~mijF`PpBT-8n zZELhw6Mnk97P&b)@gkLwwIFpftvCzpRk6-3pXnRZ_PZ(?Q7#Q2fN6bM_idwX-YTD9 z7l?kkX|RF)6^&l-HK;%?^o1$1tK$eXBK7g^M4*RbPQ&3DuieW7lHfYu5jc7B1Z0C?cn>9Q<-MfFkyOGS zMhA?gJJHB=zm2_k>;!d-MA$`r5~8V+`|1rtL7<>74jQbSSw6N1A$jC&_*Gw7r*TyE zbh5o46y!`LPsas@=J_eSMP1y*0SEe~W*}qHH~E#FtEY&a=FKk?grX#B7gwFinlU!9 z{Jw1MMEk%W(L7)bITHpX)cNrj9O)Yj28RTH$;yX0ujk=5wB<7|;R>bG zUx2*Q{ElZbJZ@^w`v;V^A|~-GQkyNeqgdT8y0iW~sR`IQ(i@K9GTZ6Lyh@0-4kcB0QV&7>@V0tAde%MSJZvAX{towOIqgM58)^OSV zI?0Ld0&)keWt|9zer}y`qfw99&5Z4QkX~;OAgy&HwMQNa**?=$dNO^3q(=yjTzW@o zLkKqedYfm=$Ht!ix4xY(kFyFu%G^XZpYG=IFi%)+PKP@=ShP45@NjddeuUC~onz)?;+Z5!3ukURd%B-%{N?@YJ5MJjs5S+r z3LhSZVJqDb$JjLs6TS8**o*vpjc;N=omfI0AKuj zS>BZvNAnpP%a~@-PtGwrh5-sgv<?dYOgwiA9RMlxR1lbgUcNtzAYyrw_sY&JMg@9P=Y zhdr7H*Idt*0wtSm?F;?`0ru4SE$+XRJYo{xL2He|jn6R-l-Y~wRh8-Pw1{TAzM-%YC(6Z73T{ZKYpujYy-(Y)hS;;8Kf>b8alc(8UfeP!+6*bie`%SAhe1WsDngDd>eeT(41RP*WBmkP zu!77BZH_>jEikhl+w0lg3d$7m+9$haISPy_(gDzGf@d)OhR$mdZe*Fp>IG1MbsAgp zk(F22+(NGHffLOBw2pS5t|$xfDjjzuQNOWGZp1}C=q6~%HRDx7@I$>r+v(HymK4Ed zZ*H7%`hiSc^QCs)$^8`8a%E5aSn`%B3&Ajkc{x%a%ZS z0!<)^UBwIY(f;I_=(2o$8n4J9o$b9cVQ4(UXkQ~L;*c5o-QIAhF={FOLe!GaFF!-g ziZkYJ8%7*^M%fiKTaPK~d#{2?w!-^EItN_l!;L1YD+8D!yE zfGc~0y|o{IoL>=>RST_!w)78gPAVa~@=RtsNYg;Pn=k;115kZ{sr}V+T|Xt4%HHXlrw}@Q?X-JokX@`D;Mi|ia^)UIlhjiq{hqQ z5>gl4+uhHGnL*J9oM8>7IE7V$&?3?%=Y=?A#EX#z9GXPptYzN1Ta!(*Fi zt>uDeCp7z-6f2o#_AieaI*%H|C>rqq)&t{^0vO5{hs=~}nasXHWnY}nzqrkx#1QUn z4e2aGO$I9Tb>gbT{dqL5vvCB9IN)QI@+c?@_d%XYL;bK zwUQP{0KYbtz_Rx$7f|5r9#*A&Nm*ixJsM&C+aPPl4)E9b0oR#&vU0-+@qMwh6(5@v zFI9FIBS#5fZ(dyn$PY{3>#p*X7QxjfQrwV>#;*o+0cJW%lWnuUbXkP15n&@?rtL&Q z^^DsCPK(`FadS@nQZRj=P^VtdZtu{=IW{nU?GYg|->T^k&Q}|0DwN`Po;;TLIMeh$ zI#!1#J{9vm;`}U&ZeHgF9%ogxB|^3bfm-IotS_x>Bkq*hdXvl^fmtQ{n90YG92PEC zUfA|X59NiD_WnD$Vw1Zwby-x$bt~SC&^&HGdqAGr%8TrB)xWT9;X@h@i%pxY+fKA+ zvq+GC4>+Ynt@_%F8nKSIgCm9owEZgE<1L;t0A>pZduA1vy5z06H;#7D&KyQeZDkam9@KtX3wU)9 z>4H#&8aMB*X(G0ciqii7Q-0|Dpr5K$8OV5xr7G{V${1xFu5ULvr}H+pfVE4ZfXQ4KQG*b;=hFEaZT%uwJ9 zIZl1ofa*v%lQl@H?29KpNw>0WXut(b*O&~w=p8;2e(a<-ovosUvb_4Wo54yOhfV`l z<3fZhF<@m>Emq?uIa=SgQCFhN+9QqAm3*x089m2V&C<+-;Eqf!Dul6+14Oz42FGt-(zrMM;l^vrS zYGY#~2RMQ^qUSJ|Xq?QC+cvxU0@G7%(iKw#92r7aAT1=+W4%A{A!_$+ZONRej&SZ} z#^Fv>Yw2~|`;M9a=C@q~?5%xP^22}mqTE$thN+~SiP4zMzTd+kvErSPbG~}~zJ?~- zR=cN#<7Pq}Mlp^E`bx6`x}aEVd7*8@HvbGoGB=0J5WHy0ly@T7adgL35Z_M)f0?DW zlmhcFg=s)TfrpMoXN zjx%_sXdDhV&`fcyZIzHsSaYPY>S!mfcE3yrOfS~nH1BCg;HdqdSuBw#AhoB{)gv^2 zc&5PF{DnKs(tJ(I!tW97T}-Bg+sde$0+$DxEHH+}#XBZJlH$>cDNRo>12;=+rlE>kBH*gUAmy+MHn>tKI+~Z{1E;7H z&`(e%l}7A}+#ydZ1n7{4XWOlBqyVs*eFUHlbExpS?;a=hBXm;lZy@?116H46%3r^? z9Ue0k*Z*LxtW4C{UY;r!Fq!pwGwf3^1a(N-k7Jlxx!53vV454DY=&6TY5|uT&R=oe z8X&JKIqkTEBEyHEI}6QT=Z~g-#ZrFje=FLs`iMgrh-ziFQnp!n2F$&k=0H3~_ndtM zsI;g*?RgjLy8V!w?<%6C;{Q5P%w5_s^(5OB&h*&&e zz!Wik`DA09Y47X=w^nwT;pR=Rpyy@1(x|iBT6e#)I5F|#%gjI}?Q~a>l2psfh)5PJ zzY6H$QNVz#3tI&C%WV6FM-v)h(!S96_lDw5an!WA28wOk9PLE1Vw9AJXH%4iW2Q+j z&Zg(7-YS0$w0sH(<$96B!dJ7{2GW_QjVAVG0mzk~7@_N3FZ6KH!Yej1RwLtA1>u6* za2fxY4W`}$QN9EXZe3Nd-Tu!6OAdZ(8ea4nNm`k2`%6K#W*P}NqA-!KgZS2Tsc8hv zAHR{<%0Z2a@mW^j?Gd*>7O#bJg07T(pZvFVS>U$jC>V#_WMX3(O-^rOA>lPLFaPU2 z7@iXgbXcisY669hkSL+b#)qo3y+JIgAeLmiq4M8tWQxN~XMp387l3$nK)1HU7f$m|M);_53!(~7Im-9gJ3P#x%frg{$z2%H&r%i6}-HlqGNxPWKD*&onJ)PM~ zqH}TZ_M7ER#K<`JT4<-x1$Fk1~54Dfr?262v+D9b)`5BC5~@y%kI5(q_0$%}H6R9-cj)ffr#cyX1f8UeJ&6u(EoA$-e{ zORf6BOOhuKUPEmr%KLOm?Jf0g1}bP7lDwiF7SDvEv2l_SXC^)0l{ohY=seWnje-5{ zY=~Btx*(qD$`R%wtshov9!JKJA4SUUa>h_1JM2;5jr0JnCj5K|8Rl2(na3dNbsv#9 zq%m1&IPc5TC3v#5UC-tXqytn(BQK}?1;ad_EAVC;ab@c3eBblW(B z5k4@^hKyHNw7|`!8^&Q=X(X`{aUN^a1X0kzx!m)&qdADe3lJ})pPfG8%W_4!r%{kA znrCarlz9U3lFS#A{B{dYw(LsfV^-)&Yf4}q+vyi^?+5$4@-I4u+%9i_~+Zp5Dlq;yv=BvQs;1!3=FefFkqtN+%FFz zo<^BgCjlHGs4?qs?SsO)- zffGWe08IXk3Wo8bwMEo5WZ1bG*-;H9g9J7JKIXvYXKYsH^ml& z0a8MY`L7@;l%^`VJ)NY^_)xZjwwg9YIuq4`IAREO|k zGJbu6-nRb-?-L4rs0nn(H0y3kn8}wTY93wv9%t_~O3R9;xGT#vzWVrzJ8=VS+m|}y z2v0l%Oo1o3&CbXP=RLFW+#G_O_7d*;18z)L z#-Lz8Du=`TqtSaj|n!iP+v%_~DPNn~-U zYr>~eP0=`tbL%iX1U&szLToWMEonTbf3=V3;he7r(LUY^{#?`=>57I-PxRZu^%nDK z-p~k0R}9XKd76po$N(O_N`Xak=7CA|Yx2!BCU^K$#a5+TMFfK!(Qh4Z6$dxld_m!8 zQ(SJb{8B_{FXtvx*fWl-a7GbP(BU<=fCnpEWUs9VU>Oki^c;U2I|?~dr;p?_sE-NME7Phg|hu9%WTaq z^{n7?%@^;RLQxrieOK(gjdZuI@Sa!Id$-5WiudKSX8;gn2lHhI_!^&gPte((WktJI zfH?)4BD$1mSt6(z+WQpc{$)FVeV$f`Yv+YD#1r%$rf1ACH-WD zZo{zw8l)JH5?_|TbB+#*!E)@T+!`)$Vv@Q2#>J+I+ZuMN3ff0@-J=!9sA!**%{txI z>08VF-!+f>3-vM%!^MKq4yNkOmDgVuqoUJy@=P=8*tjeF zLe+6C@!hI}?CdBaU=HT|SDsLnHg|nB98bY1h!j~mVlqV#8q@9SYdIp8LXOdbHHqu2z`lp^%0T^8HC{)EPjSiXL~ z9Oh8Qkz@8NE5B5x#x|HTb;0WRo`jszvgY+xn`>-)s_^7Gz{ zS##=>L_?fL>C{-pDy=WiX+x=w%Hx1saYVz=JzwQksu{P62R%-0LMD4;Kq)Y1Pm+{q z9*lu!;XykU-_Zi0VI}6d{N>KszIA;w<=5Om!XCq>TGNQYuV;!J_an^vTGItQ-2mSQ zxLry+aMi;jfi18XiJ^*V8CnNJU)GlC(alEk7>oe1+HgD53Z(}c(b*3#^9c!q@f0vx zPxC@xD)ms(Ebo_dZAN%*#1&E0eGcrxWoj4p2MA?@R@)s;+6ZmQl-F@mDaTAPJAoG( zaBKqszp~h-((xkvZtWOhG~uS^+-W`!h4wC~v6fcw@rjpie~0dOdv`JZl{M{BbNFB0 zt5q<6#aNoG1X={NHyyADM1Lj&ms(?nioweo1k4&1ni~_ox)*t?G;dPhNJJ&j%~%L< z={O{simpO1m*|^a#I`3Bjr-7lN?Dfc0kzFVW)xkoa5vV>hC}AV4b2;QUxxE}rl;G& zklZ*CXA^ZAS3&nWN6kk4rIW!qu-wW$)$ojJgLrEVMmNOZet^K-F$(w=Njo1@E%YCN zv=(obuWZ4);Lg66W*|q8WZ+k}4B1W#9bGk0gW9&%-F>SzhM07X8q=H-8du{ErN=vVTUcNzZ&R(skq;oaNLyjr zY%;9`)q5}Id&95{yV`d=tlk%#qNC%c0&D}XVXP77iM(xdc^|dm=;G6MKmoaCj zLIZ2Uw+}EAA@i}hqJ0}e4-2){GKKuT9F}@Kc^&=pi>Me5W5(dx3C)4pxd%0BH{ebU z*}7_Xvmn<1*K3;%f9b1&4?mV1d!FmO7<}{Jtz})oTM7kPC2kgMd>AV=f(gV_0BhLt zsT{&ch^$r?gHX4E zK_+|6DT6TVf!us&v(xB0`U%-*NxxfcH3%g(j)hnvR-!Rr6X`^m*sKLEh8ooLi04tfpy)lo}^n-1xSA=dWxmWiuA%hQLSmy2h` z`rf#@tc+2l;W%ob&=4Q{iD%AkGzzvY91C>!c0zK#8Q2g1B5Ajo9yqe=Jy=#bjH)mH z9Tvu;C}J}FnmiP_i3!8TTN%~*j9@^ImrYnK)+T9Iv)5wdpd=bNpGXlCcx0T&NLsfm z=JQ#fKJ*j-6qBKN@H`ACPTFSaq4iO%33Ed_37KR75clXh1>FXexS1Bv#~@D#*_c|Q z+u9IWeEJmT$dgAm-L$6 z9I+^0S&sFX^y#c%iS|cW$I?P(<&Pjb!&8Ahqt=@KushOSBAF%uVJ{N(H?lM-!Sy=~ zN5~dks^_SRManlE!8gMh3eABJy^w=`2>j8$x%x%oC`^K84#P{s?+KX>7{oj^s5IV_ zqS6Et2w2o^M6a7n?^arAWFrIBFhmQ^YPFjkpxeNBfxhe-h6AQnnkp*GiKb=8wBy<4 zj8@QbjE%TM%Iu9xowM7n5+l+>aAn^GciG`yb<80mlAF5g>$Sfk;97VbAiA=!$ZFKm zcE!Uj8we8&%Uv@~iSLd^|HMqaEidiJY^v^5N9Ws^0;y!qC?Q>D={vxWp4q^mYa^G{CLm(K-=n0o!D2pj$bO}i> z4c0dpNzNlQ=T-~Dz7HYzj6Yhu-5-B_RsC5 z2hT>|PR0aVstJh{klEMxS&Y?mpV}|Q#H}UoMX2QKi|VtRo{^l&YJim>k=2$ z&OqudI#2V3r0F=}}XL;6Txlkxt{_54Zj};AFfTly!e!+-)#e-u3@_$5KiBjx+YI_Re zJSL0PF+;HkP(}9X*Nf0;oh!Xo)an2^GGgr+pGvd>MgEE#EP3a0IJT9^SAULkbJtEL z>UR~#?_(T&OFa~6_JVcaN>i3`O+BBWX<<|{8PY&Xxr>=lQj(O!3~J{&3{Q!^#YdQ= z#zPAe>bl6f&KTca5p*9;$d_h3iouzTLXjA9GMB9}HBE_01;Tb|bIfUUp2EQ)&n686 zXSMnyqw7$Yten~wRg^>+#r1U*TCQ4HR~wr^kZ%tXq4=YC%47(QFLJ5?N+Hq(WV2db zS#{t;jb06@OFx1{ z<)J8A9MDFS5sh(Ot z@49@&hVWc^uSbmfcD93a|6QM?q+1DT2QQ@wbFwoKZ)rjq{yMWVqA@QA)*sMTm(*wv zVY(v1@LwDgE{04+rivu7epnrPvY0NnRN1$=VsM<&afJEp3woSigf_-i%agRMHS z17vnd2{Q|ftO?C^tXH3`%4a;zk1(2}62+X;jTC&J_ugYlA0iuF%xXVb0W~GBAg>|1 zLgGj#pBVos_wb#;O}rS)>Q`5*kFU5URS0K4OSl&VO69)|_0!=M8i0@_C_fIUu-KS@ zENs6@zJ{2NeCJ^fVTac#IacGdq2mRRL#|)(@hEWwo90R`95-TaJn>F*2jFqLOQRHf z$M-xA@Njw2;wE;N`?wGR(V+!bjL=jcfC^Il`EHUDmx<}-c~zx$sg_~R*0%U&pb}&> z@eORS*nqv&;@&~ei;v~6YD4=tePsePWbgn0u|T1tz5M5Gt}0|FU6wWnKdBno7cmg3 zUt*y*ZXqdKeTDuNZ+f|fLA&RFQ^6}P+mW^cH`G`ni=u5D8$%!T7lFSchkIqD-k>ct z^c+9FpruU`HcCRZaYHWe#)CH`|ES1SK*|p){6ADi2G&Kn(j&)MF%ALB4m90Zvb?Jp zKk>HYj$L7elDz)t0@~WQf;=BnVI&F0{R}%>`SqIXYbbs&1N41fR$1CJE9OAo-V;Mt zmjGU-7%6-OT$t5EF>g(vC)lH7-gDk)CiA6&VUk&=2t^{JRJ4;_-w<}RgZXi5sF93& zlH;cD%q2>c>etQ|Yi z&a)r7`Tdz&A7UL==8xH1bjL8p(BnE|@4*x?Nd!^87MMmLG-qxE6<@Z>uf2mM^NWG+ zET!UFi#jGT^V)UK{U#U4%Wy;-ZGh+As>x|;)lpj^!MDL{q zCWbPZ&&iD6|1^?_BtGRN@$)inHW75PS?FHK0zEZ;v7pTadaqzoh4HDgt86JaK@cRk zfjqu_S?83WGbT(Pcx~O3>-HRQx#cr7eI@FISH)!k)^9q6pEkZ6sU8#h)zc|IC-WN9 z#9Mo%Jke~^Gwu!aqJh3S2|oX#Zuhvz9MT%FG-@vMW{pMw^7hr^LppV29RQV$`$6hGqO$;}W+(^D_MY)7zzZWI=ws&=i zK-#$H6P#6zbiGtd_}MjXB&#TX4~7)Fg3Y7blMeTysnO6-IE~$1>zSe{PbwEo%Dk)A z6dH|B2?L(T1qq~if+cjJQ%GmLf4dIU|`J=WL(xIRQg%;|vSfLWl_#gHH zNw&po*AXxs&dEdfYQ_UD*fi)aMnA zw=n86v_}bqXY^A5(x+t?`%FUy=jysQ=3r%+{#o@>E0MX!yk%`Kldg6*lYD<~ z9Jj-gzn%)EO?%sbc1|BPP%G8;ei4twJtQn@mf=77aDt@^cgofu8P zM8$?fqQ-j}Fti#pZ1Ztmz;ZAfXSBQ>(ZH#9!`EMzNXEJv@1)zQG~lT8gn_YKh8~Y@ z4;9Cq6$4lVQj!!ecl-#9LA-A=CXNHv$cb;oxQZ+)iPR^_wf}%dhuQv9X_EgTV$&ZwMO=^a)x6gHfE$=L3v4D9RBevm+CJF@Fe~p{2rbr zvEs&^pHkHa+7`iJuCC2SPrAwvQCY^v-}2@bgpKl|f0B=bgpG0&_Fl8#&w!Fo{SJs} z|8+jqZhq(Rd)$m3-q-_U-I-LYKo{3l6;=9969q-GJJpHe|D)M)=A7eM(l(p%Nj!GQH^zYr*uUZ$< zQeK1#d)GDVdogsp_sFp>ISb(KN`t%WzgN6@i*PL0td{@LE93hnv6pA#hW3h z%?_;ZKE5hKIIfT(j`LEgn~aWDrzPLuHrdf3;-WZ57 z4OHQeE;_bJ+f49@XV8#`T5=-yg}Dz2*P7XIGh#fVvDiX0nF%J+YT>`%Qf*P%e`n?C z4d$k(kk{3R#Q4b!O2mDxL7Ds9S!b+{alRTdMQX+e-3}HT2@2Xsoj50jIW(kRA>$Qu zoBX~g131Q>3s(48huc8sX(*_<+}CogD*8wpVntW8dzmMxRB*gm)v9%eKcuJW);|rKKtj3J9KvlN^(JR zQ#e!e6K?iC`9)`48n8}5T1e!zNYbcr1BB%$#X$0ThA1df9(KO=*o`|mUuZ<0j~ET4 z1Bdq1dCzo<7<{~-I^{mrR9Esl(=>Y*rqG!&V_o5Lb=n&wtK<{Ldbt{di{k{r@g%5H zq{=*{-s^b8(;o&ifqW_)3xeIa)FS<=R;kiaU7g~We(QijFAH@+}!Dt+;=~O>qIoo|LCVzjzlgzQ2ogpnJ4NxE@h12vWy3$vn$6z2yz#FTSQPNpqbi%G_jFoB*>#BW-8z)pkOsp9=$ z#%K|;Q7pD5h*HPG)C-cyuPb9PV5u{~r&Xm^0s+d7hIFSQ*-_#usihYv39_~3S8g*R ze@ybZHN^ioPX3ua)6u?B0DbwC$UmTp!suaHwC@6i;$ac^co~Hl^_5&X+j)#W{9FBKX}1ovf~^1PeK_!q7cee3b1zvYi|>~06KH6< zkj8)UCk*q|bI&wFSkEEp_sR4hbG&VVAoBSkN!juS-fGFPqtvtk3~HU+!9QwsE;B}F z+GV;qKt}drgd8^BTNIi-Rwu0`WmZp0l%wmWeE7`%lp7*pf;HCWS8DT1FTO+=zmGYb zJSN(;kei%tgD{{CPA}%hT$mXh*0Et11l_l5i9QT+H|Me}TTz}pSlvV?ts2Ll8K8w9 z$V8VY!GXr|(lUqQc8$1|9tiqQL-Zy(LK8ikNieP=^as?()Rq>`4|;~lhbuS4s=ojh zxO6zn)c!I*a?ZdZyJ}AGY6o75G!HElalKTU!Zg1yzauZ2DrpFGt8&^R1#gHwIVK!E z@!TfQ!TyHjjg=fs(pLWiYJZaIm08M?o)Z9=SEwwbiQ8g%ab7j}1G~b^Tz>G7=9v?( z7j^scOM=V1@Qn75RbgP_3g~%l%~AsLlC5D2rYFwqm1XgB43IkWEF-S0%%V2^Y8lo$ zhFgq1koNxgw%tDdsnV`XpIR3ojJ$g*ZV%Ow<%`*pVmr7I_D%@}nlL!F$igNgc1^}j z`driffmtYxq?6H&yv7rzV94;08}H^E%VKG{DP1|>s1RIL+8O_bff(NHT)=Hz*prb9 z!d}Cv<8NP|tSmBRi_X|tLznR=`c)&G9$3`R@P(Gsp;vWpGWHqBo$6ytzG!;i1Cz5~ z0ftuKZp+JkKrc!G)PKis2k`CKB1lcJbFA6=z3?6n?LtQpk_rG{&~n(1f!8%xSGI@} z!KjY=G!zTuod;!m6Us&wV!3Jncb98p^wF<0Jss-;E$uOoaiHP5V zcgIX>Y5SD-N)oY*ZrOXN9&m?P%Ttr+uS>(b?+d(*oix)NBq*rR;YH_wuKmp|Z^S?{ zLXvYSO&^djk)ffuq#zdCw#w@4R2hqPGF78Maed%8B@#ebg9*czRL&(x2+62q@|FUo zlb$YrhEY@HjH>?yIh=Pdo{)^Q13sWFWJC9e5NxAJjM& zE^h=f@Pec|X3zzaZ0Me{Xx2x-~QY=1XT@+U9#Uj_En@ z9?)R*vl~%4f8V|8!w=|K0y3kVoc2pd`2?(Z6v&%~0Eq{#`BL{;(094a3`y%~EPL#a zDnm;1)D`6D{NmGaMCrR2x(G5l5jAI_>kISGj)acu6weORri_{e4e_;6E7O=8q#p)W z5wjmN9>b{w;5C$-jj|wq=|}skUzkXRPjgMA#ft(NF@{^m^4&boAR0PI#hiQvY@Ow+ zT=~wPyJ*lnLfkSgb9Q9_@iEa0c@9e{AC2`|4PQ|To=ac*J?BT5-{uf(7bdvT<(kC} z35C^`?be%&t`8p~vHHFtec5+*+v+h(gB>!hs4>zge4 z81>FSiVEY5{t=UjO%12~{Gx67Kdr}H@liLTxHxYVeI8cAejirTtpsNuJF;%=m07`@ z&~S9P-tKSV#u76%#K@L$-f)Y?7j~TvlHEr$b>W2Nn4Ac9_JIbb(!fGu7BcD!`XczH zgnCX(udb+9Y$%x(c<5~IEzjQN2+#sZ%<{RS0Sd|}42b(d%&E~;7i`}TLUyNB!1Cy6 z^W<`jfHeM~2DqyWsK~ca;ETAF7)lJ}@zf_d0uC7RY!7F645^nA-oMfE%_9Ie3e2Vg z6S0=k!CErVk^fTfOena!-UM)Y z9^w=hk~qC*5m1c!IFIUpk<)F=cWteC&}(m&*)ahx>zUYo0m%EcInk*KFkRwi^D#Ak zN5qgE8G=v$>lEga0xf(N0U>WK!n}G-ZK*Q`@Vj_we7y7*G-aA=U~SR8XbKUj>D-na zIZK7g+VK}w@=gzA{;B&((nY4Tkk;O!e0ie)fR{B~Qwe8ac((771M?D1RZR%CY{{Gk z0RTzfJOA=SdGsVrO|cf=UcTd9FJ!0!5W){u`-sLR!|+xcj(ZXN)#rx0bq>IhYnt95 zX?o4XwU^G=ZR6h4TD>d5U>tvfyKXXkr8xiPGl=#Ux)j*H!&ErKM)(P>C8pMSeT-)M zAs_c`mawiRj3iYJ3@bHTo>hlo)I@( zvwb&H#BFPJHKL@x`_F63?R&_U<_@!Ykm=U{-2<1hv%70kP+B|$Bbw`p^0v&%q?GiA zadurfs7tZf5=vM%`-*;g?C#sJe_*!dIu zHR`+HQ6rTAcLFk5dn~kH+Xr=Ok@QumrgPR!gYfz2uGvM=g0H8xy*`+I((%zjqtK~$ zn7sDc3^Oqme8o~#5@IzacWIJ7cc1+E>r5oYmwXcC#4)OQWro6~TC=_=#OK6(cSOb| zr8|)AaIhsm4GgXuZJROz*M*jV`eu1M{sjflt`;`#jdfS5!B!&d*6(}cHR4Qi*dCyQ zJJ78F7bu2T@ABx9F#Csza9E!C^5{Fr3T7uu3uTRKf?;)b9PlG(Yptf94po?XYu4{u zy->S%9~h~d|H00+_2IGo{Ky)adJr~V4OpD5&`$P-^F~45Sw9E9_i^^ul3`ek5D#oE z46*^PMXOx_0h96YC>-1vu$Pt!_`#@zhXBY*B!iN#VF+F%Lj3p!5%rJ+V%#1q;&JUG zJ40_|rMR?@oMx=P7u>`E@IJ5A;eH;T3f*+?(Kd%@^0v1e%~1b7Pji_{UI(y zzC5)3d=eg$0at}G#AEnIiphf^$?W-xR@g7so^iUm6PG3X@GM1Cpv~ml?44HaFOgIM zy48`4l56K;Z9Lo*o#TY7b8>ENoCuQ1YOSUxW}1~Cv(3v>35Pd3pLUGJ z?#1V(Z9Csw|F6B_e=Hfr0)5iH27Jw%NHa$S7q07jwMLv@CPSwZCX1SQgRZPze_AHy@E>r~x23CnQ&!fjUZ3AU^Eh}PDOwxnx{MPIb*Plq zU?B$Wv*lb#_?5o#z9DGOsi#`bmRSe~p0W@owER1!~p*ByPC18T;%JUEr-5 z5=l0kC4gZUp$cosnu$gm%qx*%JDL?;Uvk&A!@KAV3iEQ=IyN5PG)80HQWJSKfhd>i zwc}36h!6#ca-2$uYxAlPFv?iqcR1xYL_FbPnh+kk$ViNh1UaMs_+4I@6A(L^CQNLx zfuo=6$!y8QR$a*A+mxxdFcJLpZQ$qUN8*fNXoZ&*RFThLFoL*dXZeR+qo*>=yF|a+ zAfC>2eHWu#gQPfHN{=I0&w*f3|+qCM{cLez|;F)@r4zqFp!- z$vgBQ4i#8G)9`~?w@Yr*{XCD~+Zbkt^34@CJV|?LN8S;eU#QK>q7bf>3+Jf+0|Nm9 z$9%Q#k?8h}GS?h81f#}g9i8Gths>T_q~Xhlrq97LE_LOup$K7)T4>+@^s4bM@64%2 zhZ*J=*0|0r07-q*rQ7W7{hJcM9s$)ic`wC1YO#a;(W1s}Xqj^O^*u4U881zJiZ#0hF;ZDC%7II&muBXvef8thDFNB>?QY393!dHcu3V1)2P|1`Q zgmlrTxxrb^)lJ`IEvMUmif!bchp<^tI!61kqu;N#a1XSrzJL+VcN?ig^Rum=_J+u8v)$*=iX_b(xyUQpA(ff*GZX>BCb>%yyCc&vyIDeOj6QPqpum zT?{U?Q#ZECWN(x0K1$N#^Fv|JU8NT5%|2HiA=Oo8*G!&jbDt(xMIvI=+!wT7qu;1` zhe=4c)hJ%-?7JAes@P&$gd-GYoY_plQM)A6k7HSk2ZmvQEG993z^baqo3y*` zV~HZ;6863R7m`?Q* z1FNC^rTK0Tj8W?9O1yq9fK=WA@_SKi{r?AF4*uY6X$)WhkX)1dye&*a>dqS<9Q&uE8`yHSeuTEFbJH)zVm*w=7>~g#L zZj7Sz?@o4Qi*dY-iM{OsuYI1D41zA@U#NG25Ks-!vmfZOA;)%5Nb&%=A0RwHkU*Wz zFTVpG_OTRL8;-~kd`FB z=1M37mZov7QarQynGrp&&dXq8)-FQpxRkzg(;GkvB%ttFazws!#B4ov7l$s=s;;m_ zNm%n>zi0NQDfX?>XX|je&3xCI?To^niZ!a`?E;h)DzFJ3Uo15CU@uS0{gllJM z(rXi>9Cs#0p&;tJb?`y?#y(RS+|3rfU2hHnj;*?$?3@E%JG!fi{8+vl$OdU4Hu`6B!3eiyW>)@0T6Nmo5Fi9bIF;qN=?7a+H;919>|EqdMDT7xNFf z9AN8Y3h{F$5D@BaQD&;kMSt*+vrhS=z1%DN;Lme_aqT~*!U?vO7PMlzq8&y<|tOedk`y2rJBck9Jg+bjPaWEI(>sjWCh$ogjevO?aV`0R{jTfAj(pV_YjQ%;LybwC-Rxh?6=tFzCFLt;Ms*6`MUU;7>WoZ~q$k@E+5 zM+G6x-^~tH!OO4n@6><+5lg77{w@_7ru4M;|E9#E%jl>PP1|3*zgk(^9n24SSoRu(t3NpeIaJu zGuI)sf~=iRSx4nLu`T#G@LO793H7rvbLknqVLF2Uzd89nnt6HWnZ!{A{JGxGsYX;; zE#lo>1V`^P^du;rrS&p_3k5)HE{Vd*)wH*E9dKt$kO~0RY@S^Cj3DE-1RIENEf_&B zL%!bm7O)AeXa%<=33cD>7Nk z)xsIwhO~qMjX7aSf9N5A(Ks|6AgbeJ476$t_^lM3Yn^_S+i-j2}MM~5`B&y9HO@nONEuoXa#A866OJ3VVX0!87SM4 z8|(Lb#`FoOx^8O#;z8TIg^SNqDQLGc{lA`pLl%d10!KtSXctA*PCX`jF1Nov{01Y4 z34#w?zBIOX4zRu|`ulxF6UL&*z~%%?mDn}n!V4U&&*3X|CrqEOy-sRH2=Hrf>r|VB zXisq37FQ_KZOrXFb0A|A0c6uH_fMZh%TRqaxjv(i!hUJcxN%`cw^ICftG(LhRT?vw zd^^+~4TMgqd!fDT8W3&pM^g2y){-dDlH|H>t2Gg>Kr>deEchW^Gk@4O0*zx{i#dKb-7 zM+{o7d5C}HCvChlhIt3CVi-p<)JMTS{oUd__kV#`RmfllXAJjR%~{?g9?v|BHZK*E z7lJ<31=s0zEGFhH4JYDP00AJ+Nxe=0Oi7sSqE-%NcpQlLkO$jD@qf;{%p(ig5fNV& zHcL4du&&q&OR4$F#lUhAIo3@M54)9W-x5qWy!UASC^nJ(Q2H_`*@!Co@A=}&hP3U- zwUWj5PR?uhs4thM;8a)bgnQp;R6@4+XR~c6GlxTbZhNj`Aca15ng{~tjpCIb66YU` zsyfu8zG-u4$&{V@yUF!~PLO2mI@V#h&sLku%U8)_Qpb*X2@|kw?%h?WiWR3^Fp3PC zltt~38ch_Z+9c7xxlFNh>4oat)r?CpxRAHqYCm*tOg4CfAz}_1m`YFln@My`@Sh_< zBgYvBzUFrwoC4lfJCj#id*H^Yl|r}G=SWa5fb;)&UyzYwlH;*m&orlWgmyz z8WSs?+}Gbd^ruXuQ!9v-9^OZDiv2;nzwvo;VNBVEpaE*8tGNSB3LM}xk)Bl{d8$KFd$ z`WdDQytf;74dfo}&6ZHWx=eq2eNt^Y0V8xcv{_feUWMn*p|^QpHIK*=L!o zYlIxDtny7pPpwNte0Dk!Lcj@ge|VBHrRuoqYc?y^w?IAo2>v;b?eg1sU;nPDofTSX?P9XFIj}V5A~)^K*M|{s{jZEwnEv#EwCz7O$AIx01B`FeH19d-V!L z0-fDK^Y+DCm7py?z?ss4+x8inm#29Q^j!A(|02W1@!z1CevUmh7MY8%Q*df7;!a-` znuI)_bRbPdt$)&%Svz%0zd`bcxi35ct)<(9QV07z2LmeNiM7oK?7=wXk)DAv0v%~X z0)xcmnw?R>Hq`(e;1g+dU%zimWa6#Joiy<%M_O)*SymX@t6&>C!#lb6oBijuFl}3O zw5@tU%=-#3Ad%1TTEgqxaBnflIjo~;S9PCocsHpT^ifARTl!FsQucebJ16^X9$+zi zU?PzGVuocT@`nL`i?lrTp>`7(`&2@nHxk(u$pMpM@8gaCy$_m2N#OTiH}5ft)r{l8 zlzY{BQ=zzxA|1*c)5M*RO$s9P^9WB#JC~#-9whpV)rBLmFNb)n zbZFyiPB7Ri9~H8ef_LOZQ|77DWZn+I4Za2sRdTD;p%IQ190E=Od|msdut@5Mq>5z@ zt@ysgZA0hcTmGxopjcBWZPnUk)}`I|8rln|iu)9Q?5bxsePQekOZv;TPK{a?7Uy(2 z0rg24Vl{iesAhwewUH337T1{hQw|6NZ^b#t zIts-$uJfYm8zZkWSG8p3nhJ@*f%A>fa40CN?y4zoaHuWveE952g6gTCS2!RZY!cU= zt=3)V#`$;BkfOFxJrzWm2_14;lMJ%1*uM~`ElN08bs}$--?ZE$Gkm))4KLKZA4xu7j_uI>pI6=P0kq%E8Db z+SIVYH~dwa=qX%?eH*8dBn#rhiw}#O$VjlsUV;WNPPSfM9O<5cGGtP+pq88IDynim zvVNsOtOaQwcn$Y(RrcxM|T1y>K=kSkAsG?5b+@=egG8MyOcuG&I-kSgxC-y_nmry z7h2UyU&%M+P{C;K@GP33_wHqP3mmPrv;kSu8@#3rpsW;59eg7+y#Z~h*u1AY%q-3kfoj@MA86E99} zzAoP(o|yTZYBTE7=qZ1P%cK^bBfY^F`{8B>6%DZTGEgZ~%}d!v$ZWJEZE4h3qNS-S zs4aR!?)f0_vDQM+T3tZ#b^Mb?8~gzbvNl8HKTI3}uBM;X%B)@B)Io7W0WnqFaYRm3 z_A|j>!WSUThtTIpd6kEj!2zx{=q4M-f$=`{T1Hz@Nt z6`qT(pqH?13{rZM*N=N+R^Je}z+DIGOF!N{)}JQ}e0tRq#H6S!+_a}*WRB~9g0NnC zK1ijbU!&R~MchONXs#?YE-A;mws6HIt|0uY!4{Y1eB$CAT#Tgm@61!RgEe=bMj(P# zfjeOA+lZnh(!Izy8%m&0FNT)=|By9ztdH?;>QccCMAf)pUAL^HjMSIzHSA&1;P5dO zykQZMwZO;biJ1yH#lsQhok1X^et#XDYjQHEhiKjseqTmh;1VTln!O%?2NUiNymhp$ zFT+&v$7&GqGN#4U+7jfJ4!WmE{mxR_p|6hp1L%{hZk5{0)Z{%6vcH^~A+`@A@&D1K zbzCW$oB^JqM@XMiQlvo3Z<`i(th98aU`JZ+5;q8;RjdC}Uw-vJSrOOW$ z(=uYIpFOps6i6=uvk`0GeI|H}3qXCxBB%F(fO`7h8^g(%Z>k~opzH82XKB1 zy5SdfOkRibSuv@;Q)FZSOb5IN#q>jXd*Ym4IqR08%T~ya4cB?ZR;d_OGHd{5*wr}V z1Rv=ak3Xo#QGVL*aE4PdVkY%S0+o+xoQFUCVhdLwx9Q{j6L!7(jNT3>5)ycQ{;FFv zGw;c^@k<1Mbvf$H%1QVYo1Z*%p-vI-dP}Mn78OT{ zZ#^gKnLA;$vjpLm#jz>R@yaH~%}yOSx9*D2BL!l>TuOlRl!N>Fy}q)`K7ztx(ozNk zl)^&sqf(*xE6s^Y^evH!z0yrQc3%Sn68B#J)#j`xU+L>tI=i>%Zr!ka%WWm&t{G1s+TfQLbT8CIHn1HO@jz2hJSCm$^PgmSnx^+H%TLqti9IO|y)S&n7 zwD)HS1dZzhqwQR6ZfFz?bSF~?7Fi<><&cRW2={AzFnyW5Q-=k*W7$_|CFf@?v=&Q?^SHzVTdK+UsDFzIge=To9&sc#P zit6}8jti9CQATx`KSCh*ybs7~e{tmQ4h0Y0{L}B40TB+{ zM=P`z8(?E@0wSLgsPlOz6>6==-Z0-ph4 zaUn`S3<_ImlogN2-^Myoi=mQHTHkN4oxXQJvn&MJo93IUXBMV9{*n&4wD!*I`O>1Z zyQa>8I>+0=Uqzn#KU$lmsVYju5=b>t%_<#Ruj0iBNQ+C*ym)Ur2jvm#5-_V;Rk1Ek zLW*k0?j;aXw|!S-o$0oARC(`TcFV%PAam?Yo$`m*b^79oPddRUWv(K_LH!LJuT9-Q zlI3=7#w0I+E3FCNac4+y%`izKO_4!x(Q4%5IG)m9V);lbD4W=-ornFKQPvGR%9X(# zb}k2tCb8V@jylq&%j$NVnjX*cSWCdbeoMIi;urTd@Z=c|odw&=8yc#q4^ztzoyNqx z-K}V%KJ6JQ)s(cl!#(hHGqE(Z{8&rzWOc`XYm|c=t!KJWz3XoLRpZpNaLh} zG<=gk3c|bXA-@i2h&~xGc)99dL#;3XERYIh#t;}`9?R&x2-N!SM^BLHB8zC;Ci6#o zW9(i*)Ce_bLOhYJ&5}p)l0eWk6uRqw%;r6ih5q*K_EC-IZJGMF)|q!w#Ef&Shhdm- zQ9J*qw-gL-Jh+-n;u}7rn@GLe>%}pRY>AFx^VRN=9M+8nmxmc9Jg^>Hg@T-Id%Lsa$IS0>gz{Jt z#}g*`cLi7)XFYKAbQ8*u8|DDo+P#r-7{j~qj*J2)2XJLZx|#>rJ+9W_&&T;f@zWKJ zsIvlU;sLYY)aMY>G7|I9sS!GZumuKDiS2=QyVAtc_SnD1@?`tUh1`w_vpqHKXneK3 zf4qZ=C|=A0F_CEY9-#iAL9fM?#|8j6KDQHjxvmcLVtwGx=Xyn|I+$9%Yt&JpSko+& zK~pL^6%DlPb~oR3e>Wy^KXw4;?NQj%4GplLX|50A4X7XBLUXPXAu-UgklWo|h8j}L ztSMz`ggy&jVLSLrt#M5eP#XCDo2$FG^FC{XAknXq*G!|;Q+ruUve0!I!>rVDyl8Ydzxtdm@Da55_yyA^M6 zkXG1HLd+wR{8DoT?6l>x$Tk|2mL=H7X5_lOD(gR5B9*|6m<_s(_I&712@q}jLx^n~ zYUtc8`D+A8bmK9?cY|;a4(A5|pG-9FkNN?kFk1@LKW)3;$pXFs3Om2uunxheH{CA& z2?(p_h*mM61ul1*p4fzbBoZX2^Gu%Q!TLf+>8DMzab0gb4_m=p>hg`SV-5B3R?M1# zEtq&gHHN-Ob1O?SFZG0#!NLpW54i-B9#IX94-dly2-%iEbJXMM zmM=nPo+8-}1fZ4(1xR{Fn2RuSZQ(w7RIcm*LLFf2Hn+N;OPhn$-eTlGzi=MTxjo?+ zeeiWIy-U~FP?p3f?RHXzUn-uQ3-b1qj+g}MFZ;mo7)QsE z##q7MCj!ErOJOpkOv@p;2m@VUdK>~eP%uM`m#XHYpC2pszcVwKXc56f9RNjb$&ITu zdTta>P&(ho8tNbe9#9X)pW2}1x@oSk31d`U?KyuKfOLcrSl|QzVSEvu)p0DSr-aT~ zdq$R0p8Maocln8Jto5$xeFZ~D*DhwzZwcd*Tyo%B z_JZX0M5#zt{$WfwPV9}V&u`}w2#A3*_yIGByp1OX3=4yRY5Y?cAsL}Y=g+79Kayi9 zwgAi%z9^(J&*)nXqP9F{5E8d&mMEcI|ZVMYV;UEve2%a9< zNU%`EU~ocIRf_Rla^dzN5h{hB=6}!|B#t<{iWGohmN_(`$!`7BV(him7B0+T0R@qd z%WdsRmr@Y(P4E>Agy<+Ogmsx(Gj}NDx#1p|SS!Vt?%gLhJgWXfO4pB`cDxy~?hunk zo4B6O9~4Cg=Z+1q>*s);3RZE9d)*k>o1MBOJKB8=cL#H)r+aeGSfVxAIH68EJzKsa zB9)Z8UNg$)w3KU#&8LWx143&P6rlkBKLEg#)_6`8^qB+p0=whe=y%nhayy4#&^<~p zuETc~lFbTgVZPv9+v%~m$@LtHVHSIs!I|GE%II4p=9yKW(!(gn&0~r(SVRq57&$%? zT;e8FdraHkgRCi4MyX9mQJedbzHL!a%LPQ53u~k3jpfY7UjzA306e8>H^p$A&jy9aR{y>!8 zshbtDhRr?n6rBc|Z5)3Y)Zg-}(_|@<))}0}$L83W)VD>y$L(c88~> zF?2p&8l(3+$=wQq30MGA2XZ<1QxFtHCsD{HGSTzS&a5B_2v!kTwNd8jvTtHf?@Egx zBEX{NO;L1?d0+h;N=d6;Mpg?_mmZtAbrnWAKNBK3>&zn-HnafU&v?dnN+wI$VBu*v zqmG>=gxOlc(hTA_>TnER{9M&tJus=^yMfjs|Ag*0=95iYd#A_9bv9cd>3**Lpl0&F^++eR z$NQLfvyRg5<{Ug4-p7;CE;~aVVCs-U^B#4Jqk4<_=*q+&R;=*gCm3E+Lc~`LpinHO z-f6~})t*_PhyMfT$xktwVJu_D=AMTCC(QR;zlb4ZJUU@r*b9@(f@Qwc^b&9_j{Z?m7=kQr0 z8tP@3qX9D|*CkO_y4PT*Di?%^fS0!aTFm^0OUO$GWc!byFmwVd{dFnCmMXSo3MbNK zxi106+O;)%!vAagCS`_>qzBY}=a?GxzpQL*(d9 zEUdX9p6%+W!arjAYaAAfwJ}lIZ6Ck$e|bEVw>SO9{aheG!f$Pym@URr9cEGn{v`&+ z>3lN28hJfa!+`c4IB_NB@eYld)%ub$o-23kFUI4~uX%^)z0bwNkhMY<1_Fj`6-{X+ zqE3(Z-wa`XX!Lj;AQh?;DRT}wvc79Gcdy<~-#!i56!RAgUk~v%w7I7UD{-wey*xs? zguAL0LC(0lWT@&k4_!*u>NLv73{d21pYUR3R7_^YJJbydr?L5rxlm@7!#7a-_aF8n z=(@ORPic*vPO%8@i8~aA)S3!_y_($(sCnyY_ZLMbGL_i;M^&(r`858C`j!nj1{|a% z3b4M`ZpUHkeT;@sMt176uVgK*ZsU)>ICL2TP`cwHdU#BH)-R^G7{s%hKx*+@epBJ@ zrut~}d^6RJUX*{Bk2pkW4(8ArnHs~s$TQg53Clvn7Xg|ZWv>-< zv_!k(Ow?(!hGN~GLF`pjE*(?K`=)&-D4vV4K_i~77jTf`1h@Xa$-K|5*TL;#jYo}P zG@v(5Gtbwig78N$#xC<5f*FwFConNmjsB=OT z9kv}L>c1@9o(c~KRqj;Dm7`pBtcu5+D5@NX;NHYoU(Vpj@1#tscU#Pi=F(Ww>T(wc zk;(8{iDl6(CqHTocjg2;ja-7vlVcI~kmiZME(BAQu8rpdBS85VHfT*Vi1vH?-RbzV z{+C6+x>!H{`^PR?$cpC@6&03#S>`SW)AjR+z(;IDKcfj8NU!bQ(X^T^6%-|l&m34$ zYQCXs%me+R3PvoQ3@ZpyU!xqmOJwWf@{ARdbMBOYGdG7ZJ&4@;tq5)4z=RPHcv+AU z0fD$f_}ft=Y|C9z`CV@iZTE(h6#0Eshzvjvka=EWQ{l}4Qo6(%>Ifz>aHMlczTA;Y zN6YAvnuYyiB-?@;>J-Z5kToFHewV-v( za>l@~Rr5oVzKY#iVVEuAw1?_ArdNETauBZ1=%SfJMI#4>cA9|_hb{^M>ze;}*7W+& zbJA-@ajM>8e3|m(>W=AXtLEUur9GepA2>Hg=4XUS9LPNc;`&|XonSg=LE)#+p}}VC znQW-eQf9=AG+x~fX79a`G>ApslL8GV0SR<=-EDbIGNTM2bh-RCC3RPSGZ`RcU#~nR zI12zV%vJQpV=i&Uf>)&G6H&tmIvvTAO72~)!Pc2}p#1pwnpTagHk$^wt>4Nj%Dy!&2NOk*<9#`| znFU4!sD3^P&#t*Do-bYf9}!sJz`d*Wfu*|1N;oS*fYgcqGFg}%li!wBqq{FIRFTHe zX99{tiZ>dBfhBpcU*3!u-n}#I1GkEyov$U0MO-xX|JG=zWJ4z{HCA5u!M+BKPSP*_ReSz&pkS5RD z+NWj)5)N|JwP%vc_&RHA69zw^yEXA5V+x}ier*5^Gow;MU4joP)b$RnidjHVu(pk#g-TV_sz;Me?sna0Cpp2*)(i&`7 zyllba=gX%)--k%#zaV5#xn4I}-Ny#F@T-(I2%fdb zDC|x$`O=d!H{}PJEyOjvD)h@EH^=5l)l5w01++O`F=O70!us4nz+I1(E6s#*Oyv+o zf=h?bgQ_~~&$Sx~(Wv4%N4x$&(N`PKUIp_{Pm}o;mqNiMWqCclX)L&? zp9qRhA=U^l%1bqU-(?hb|A3F~ZtaCMt{LaHilF()PFycs{BL8h0ZbqN?l81}glUE3 zvk(AF+1}QZ6U75s!G{61=`*u9?#-ns-%N0e`(YyNrCBGFiJu>7<=Xu@*r)?KfSi!> zw&HP2bD>gYwqfBO#F#(^8! zurVSy(vqYU%82CDdS0JVgY%W)2cL%joE85`p*sMm+De*sYGdPNoouzzXAC|(y5t0D z+xQSuGeHFmV$Fax7tU$4OvP3^Oz|6_o}*iX4PBOrU)_KZqkADU zbx;Cwcd~nBStc$4vL!3}HcQ;?oI7`Cc4)~odFAT`tr_3m#x#*9kMv;>yw&+TAa+PU zXKE$wcw+_e#&~K-8LFI>)q8XT`=U7cF_wWfVl9?-c|-_DizuWS$^@#TCKXy@Xb*HqrRlayK(9J8ZT{ther7WUPk&)8`*>m*MB$JW`tK(8u}0kx|C+?|$)R{h0H z6!wqPw;0;hlJEoax+g#hd?L_pNWdnc{Zz=E?e3`E(*c1g!uG>R(JWS`ihpmWqFG#8 zRBzeZwKu~KY3Mwd7NrQ|8W_Taj|d{HvIOFf19>b{~7@_y$k`pz%QY#Xi~F+MJzN~d8&~W zzSES#5pZXZ$n@Ps4~3fvstKnd19z*WF@|k!E0`*a9HrR{2Ip%RTy|!IBoesBXahL< z*I{UZKeuml)(NIPXZEoAa-O+5DT(F>cDqL_mvG*q6Etc(`szu#yaeBAKZDom`$%KZ zOAAvI5(jOn#*dcul-Lne?6mBJN0hPRcjLJ)7FPo=SKHOgR60p~Ku#d6q*&7@4*vHjkuqL)?zmq4pPyD;N+R-SI3y65{K%JK{a7S6 zSGFeIe)#@JD;Wt-@%C9w7sp13iQse}Xp2w5bGa-|N-nk+XEYBL){H?|jYC&resvK+ zLh!TS*6-BdF_S(^I=2 zI5tMOh=;dTdrZzrX9SLkh&TI@5_Q*d^eu&{MlDgFCb| z_P2a`j}d7-&&p?5%;oRCFAsBSyxg<2B2^B@wBYNET?$Y1fp?<;Jc^JO8XkW7+1f|v zV6)LgAz=xg6H>#GTy7O}dJoG1AX>&{6Lt(!vb@7>=&kyP9i&FM&#}(F1QIfxq-!XI zk(lv2Nhh}IUuVA%Q)|e**F}=DX%ct=3)!qt9Y9tF=}4?~@K};g|KlV1z)pCyD^QU> zT0gx(aUD`GfLS1dOIt&_QA5mz$_;OHh(1rIb&u~H-U$rYa}b=#tY+npZqYeveOVH^6gtNj)Xiy_L=&E}!%2cFNlIPm;L>|CqNvc#&T)2$TQgOC*DSv`>!USEm+2Ig+ z(!-3f*{VD;<+O*w`{l*;nu_Lfv+4q<@&IC3Jn)nBSA2SU*_bq_uWK+k+;m1ZtRmIzR(AI;h~bSysZ z^F2%HC+_%1lj!pIR4tPFRELoVLlc~_Y-aa#kXxOUq9aTtq(0LO+a)j}5s%X0L5~u4 zit{odq%r*Y?_c? z9duGJeSV(n%z{A_lYZ?VMlwX*l~T9@-Yhes(i^?>TQd1=l#*R_A|(~F{z{R?i~=5d z=6%Qm(qb^x_znwR_+>4da7TIQ!K$;%U^HO!ciLbc5(Iio^MQ*5uv$r!fSzalDu zjE0-o5}m{`I60us3LLy=!bvULuCI$DS~}@jSK~{R{#!Pk|b3sR6FL*FlO< z|6XGOLz`&V7}7(GSHvv#A`B-9!4*4yW5fqic|g$$O2J_&lF%CT%hd$zi|8L(Hx-*t zXC*Sv==-ifSlju#ytU)3_$uWgmda_oRdxEB=hJ8W{+g+<*GM4}s+Xlwd32KEC7~***&27$7hTn4EDwy(VLl#kr&(m6+EGuH+ zMBqeqR*hkvIQpaVvc)iag%1)q~Qh$zIOTliq-6#Eb& z{AtmpdMaWkvL?jKdi4|Z!1#ItzGUWp%1&(-?sr>D!#MDiSB^)nAtT$a`T5X=6IJ^4 zRq=2C|K%TIAl4Cp@#vo#sl!(p^LIQm#SlOJEZu23EL0 zcN(~ar^}J#4OcO$V~c1(^Q@`26UAmgJ(Za)o4%X&?}Dh<#CJD}e}cloRF0rL-Ba`) z7(5xF3T4e`^Hx_#Ms^V_?Qm3LnEvxY4M-d2<5#o3oe}7Ay^5?70H>eExhwcF)T|_n z8a$UVnW~HKvl%`Y85;df8MTPQjUKuD@_jWu8g*R^auA@^UX}B5beQOplRUl&FzSy( zxGoUEl`iqSN2`B{S><7wEYRQz@29bpL-#(UMlsg^O5B|sYQ>K{?mJgfuKXk;T{;iD z?r*|c`cn4Ys>*GN>~5f3yfqxi{aj*@v+~0OSmFKXzuYGe^;5EdLiWq}O5iN`<{C2; zY)N+67{~zPRpG``B5?v;bGqJJ4I8d-pG|u#({X{_C!^`AU-Pa)rVp^BHSQ$@`|J6i zWHp1%0UX?X{&1&pCDI@8S_Fg-OCBXfU=mSrDp3Uqd7FIGAse|wBw=~w%(hFM^4Klb z>1n5@IbDIuJZVhMfuw(xTJ%lJhtPk*_fo?VLda1}JU$RNIU4acW{p3;Vchq}?v0gi zO#uP1^p#<^uH=A^FW|koPg%CYRfrZFu2-m&x?t2ip^BFZ5}?g#a@Rpc&th$?G8z@-M-y&b$0b&Y4yD2rFs z2VtxT8?}ebo(T!(b-VP6ISB6dycV-GHe2y%buWE;g_3-1rLDytNJt34M-wxJ#6?t< z3p9?Mvx(zShQ?oeoX#?L#}eUiG_edKv?`-OO;N%)UnmfRPdUpq3P@k4P6=7;I{;gS zlxXsAQtHIdP=Pn6E<*HI({m$q()skdU9Q z@s9iQl3)Lzf?iX}Ok3n#eMP7N9tL9z>N`0|Jj0!$s7bKDb+Ii&k*_KS9toIN`l=L) z0Nl3IGIDkW3%Y)xnew4GT#Ha^nN$V!?ExSs!PsXu_(F|`d8B;LdsXFFeBrv(JQa;W z=dKl>>>Vy?*vpDBsq$V`yd~H>6jc9(fqWSx<~Fp`&?FJ`DwBg)7IaB=G+y#ZPq-6I zs^`qfQ+pmsq+^|hN))WLtPva?lhUZ4hyag<2N#lVp&tbKL8LubDTOv&;o!b8Bc>Ag z$QrldPMw=YdX-yz;`Op@0H}yVQWMDTkX2}n3ud-q00!>EM+8wM^z~pA%vpR2is)yh z{DdJM>0ARPP)WVB`}!rhbr{1;*ic?-s72~((p@z;3Z|x;FM5#!uH}gb%}L5b1e2CD z!w!*64rEq>sG|-wz2wu2WS0h83ucUN`3CHUK&MLr{wr+9A`*s>?_{SYAQJbtRur{F z&8X38-+EH^oeNJQh5j{t=n((EXu3i}H#M3Nb>^EU4Tz~p@O_5qeNeK&*d1Gpag5k4 z2SDCJwor^RjmP5(sFF`$KXA;|f6ywArLLv;2I${Ptl!8_$Y{h92dbUK{!wwNvoFoR z9A}L<%Gq{68%Ki=GCuRvTuV^trMv<42|d6#PM(%uwj~k^vGhOSc+56b-$nhUd(L6f zx>&)tGP37jmn-?UNo_q-{j~xm!i1Ui6a{aTwlx8Y%k4b3!5}H`3e`;X;QS#I6oNA{ z1~HA+?4>!wyYChD#zeM*B7`N~YaMA0bvGR(3D5`*#S?^-M){MMkvquFHl#+_tA>43 zCGr*uBV_J5O!cMJFuX`yqnJar?5L6g^-0fL%X9E2NEN}dAK7;aMEz{WD>t_GVgYv~ z#W8WZDF~WcTMN7??9w!KPU%$bsAj?;8oE-GfNb4bPiZi%&WSVuP}$4@za1NdDxtsy zSF}&DN&8IiiEsdDXNiC84fGCc;f#2I;{>yGqv<=^Vi1Z`4)(9q`C6U4O7BCcj8~Iz zdN|vtRL<1|Sz$OJcp9cx&6Ca9rwPus0s&t0HJ(|B#EE*MBuQYb5wNb~=)uW+EX;FR zED>NV+Y^`JWn^2qB zn&AP7sXBwdy2!nlLL0hC0x+bSDjjtUo>-5e2AXfzESkp|DS2O@s&tGwBaG(>NNR0_ zR7-VjPJ^>f4>rrt_tT67ED;VCA(xRYO=1j|!d2A97hJS8Kd0(r}>jwAv6we|8~vi0NDCQ&$+k%vw|4c^j$o4yHE>2dFyVkO#csB+rsm<-vKh zob=jZI1iBKG%qr0+?KF=ZrWYQtyd6j4AZ>o3np@v?NM|G#Rx{Dre8e~w;2j}aJAR7 zm##1pd}}wE*)^OXjQ?RW3=`iRQnieT{dN=5E^Cd?5JhQ%;BtuFFjEq6qwGbCRRRf6 z_oG?#CWNC7d;9r#Z*SqS8_VXfKKNiu67XAwDO-)iv zX^OvX;U692PMqpgn3(0Kl5ls|6VkftX_kqpuuBy|ZvoSi;CfyOosgY(PLd@86xrz@ zBf_MM{uA2i12rYAPn^e4J{n4{yo}qBMEB^-0cJDX;cOt9vgUQ%zYuiPcKIE2>id2@ z?U0rEwxbcQW4QH2@rK9^I5yRU)li$t62^_MdW*x)d(%4??!EJkF>(;81Zn*)D(i8=_nH4 zc`({?C|}_M$#=x6+TQP{Qumhle`eG0a(Oth6M24j?Lmy}Hbnlk+LL&jOMky9Nr7_ ze1Dg5nkVn=qHuPd<*o%~tt8Qdm_IciO`Z9Yt}q3}pUvRwO&t~$YuNbjjC4C#$?HO* zf;;2?3-TCwcQ+-8Dreyt1i7)kH`c z%2($2S0Lt%e)BjljoM+3bK_~lk*#)@ zE$RU!?)*h4cX}iyoJ*H)=QiS;))6=%84-$|gUsTh9=EHDSv?*|0T#k~e*6;Yazp00 zCPoq$MV7KkGC5^$bGRz8Vh)!wEF^LQL9S)%tRpdEC;<1rF^v#%{>)WsVxfLE*2raGR!y;CZUwr&TpXcV*69zHDhvU6&3C;W*P2?ye zdD&brb!C@LG*awZ3`m!8_XI5nU&}`MXSrWean#x6Lp_6TL#KtP)y=AWr2jR;mJKfB zl)&I2JrzYefIqb1`;Ho_kfF=Jq*E2BFsiQ|CS_kESxF>c9CAo9WSq`&%i3gMS72@| zx`kO*w#TcSG$$XHQy>;``>azxwBTJ~;YYvTVz^KgO;aIG7|KQQpNJnpd*q@vq&par z#IQKNDd}z2MbZ#CNX?w=DkcBs8b>mTP?Zt#uddUU1EGjkj`qVFokWiHojs6?z8H))>_7 zXPa%cU*@Hhev4k-UddYeUyh_|g~3XLpDOe_&N#prThhMmVgk{M3@nCEAtW6b_-<3- z80U+4ZkBmr!U64eRs_)-_j~vVym(@b*Xmt1|M|TTf$YTZDN^MHnnw|78$Vf<2&#Kx z7x+z@)FRq0`;hidM5?K~;$ZZNCTpnHk8oFQRYKVawEjgbQ}yR~$hljt9h=c)^Q^+tZ`)iTTkC|To+WXv-?1xu|) z!2OHwRKF7S5UOFm0^IOfJ1@f@&45gK)F?^8x16B7A`5oj-Vk<<8=xCoOCWmhkqoLgWKEM)n>r<)&osanHg^YDM z-cpHG4IozjwEyUPbh2Q`a{7oHY|T<`IUiAO_dGWcD79Sh9m&A+-g+--+J3>6xXvk7HWgv^TtDtIGdM40#mZw8O zTaOx16ohz2)f5L0>>GJ-N}7ZxHG_o}vB$z4Tqe%V#PB1450Xk8C$qya=jsuv$x2V7 zWmvT`l+VuMmX>M6*O>e%eXKgD94Szg2mzR6?017wlHfGAr*_9hw#|~?3-lehH(dQF z{PC>6>8A1wX74(RD;0hau0KR7{W7~ad2Xd+brc@9)b5r=W1{fC%T!$wc2nq|1WLSR z*$M7!w(0h}=YWTtTw&A}OT!~~*dN{lk&fqvo2%F5Vbp)8)q9sWkN#5alxu+H7MA>- zh2z6TZXS)=zgt!$mt2o`$VUpJQ|CE~2N_B|3z$iy-7)D1Q>Buj1WeoO6DEKDzXAG8PV|0MUz1hu>bgB_uvr+OWWWVQ<4EGshdi5zcT%p+Ii@qug`B7UxO|CsY z%lG@k{*fDzc*mN<-wM4l(*~+GO{0P;(a3v4pE-)$s{~xhQ!_RO^-FW^g~h{UjtdG_ zldoZ|37;mg2i1~Qj3g7;sp5_CAfXJ%zE5^fAw)fa^%E}tfTB-Vkhs3e?GAfqgo$%l z`tIjLN&cA_oSIDae2-@u2nnE(G_y3>i_q|E2hi|QeJXuCtS1ny(Iz~%>IB3V1_w

#q)Rih*$v!N=ns`^jajH41+a&SEyWU%6-YQmW^~#DEbCs zX3rQ_uoX(W!CvNa{b2W@GNQ-{d5RzkO6WSTYex?Iv!HD*32hq)Uxr8-uZF;~EeNqF`7=SJIDhCl~sqj|G*UiTx4U z?OQZ?y$e#}%PeYD;_%B8H>*NXkMZ2VJZjZ&x%tn<3U+Q3os@FhJ{uyMh`wZu{jCBu zY5NAqHUSUTzZb>e0EP>EIsOvOZSL0`Rby(r`p2K7@Sg7XF+((l#CnLhy-R|!N9)Lh z4bfNGc=p^|shM%{sF@%u{7Rd1SM8rYO7_F3;9IE#XUr#l#_$GQgJU0mwqyUpR{S%S#c ze#kWgzQ=B`gPS*p5v;E|Rb2kL98?7Z0Ig=MfDLy%G`pLod)+oAjA$}j>(XW9xbO7@ z<8%rd>@h&k|YR>R9oimc?Im zjOwcQJ#N_==+cM!$XrWKyVk1q2ZvTF2)&h$OEHS1V#?gJso;1yg(gHQCzogfr_$k9 z=w?9=CGeq=0#GDB?<5;kSDWVB{63tMxyu_Da+mpb;f&Q%kA0{Bot>bbzd%jE0%YH+ z2;*P=)<3G2o`h<{MXBEnILuddOWL(g_v~heS(Jkn)jMg!p?G}h%o@uM^$vrrKd7)s z;kJ$eYpCUEa`0cB{2r4h~$=Vsj5e-G193iGF6x8Rb2x>5_AF(-)s09BOsU=%ejZ(`=njOfdzoVAjtOFtZ+BX9Gd@^=n#lJr}sHu3xO8kBFqq zYc2rN?jaF{E0^t+Hs)7>J#J$|@cebO`F zh)6(2;ACI!Crp%&^s6h=PlIGQxAY=ueDHzhnj%%H;7jgo;aUqNh>%N)lUmsK&(>RN z8Q;S;!O6Iy$vabsVxJNMt{FabNN6i*pJex)xY^E~U?XzicyP!oWwO<;x=q6TaWV}j z@6iuPcppE6Yg^xOBLTEDm&Hw6uC-w@VCba-Q(kpADi!mA`w7(OBghBWKZRiox*}-9 z{yqCzSnos!8CaOl72U~`tBl&if70NT2`5j4-<{2aoV#UkC-QK?eePtxS-TVWh&XP4 z-wd+4r02ye`MkLy3l%g zq0`W%*8O6zTnX3T+9A^#-n0Gp0e*Zz|2>5tYA6gVRr83+S1W7 z4|H2-#VSuWN5^@-om$W)-ln1FS(+g8+blr-_P0y@n5l>jmlm^hU1tmB z8+)*O2cZ-l%GrC!DA|I+xh;G*edreSXHtHR9~#cKIS?n$wx?B=6DHj!WO6+R`;MKp2174 z+X*FS;kf62b4GVpD9(@7r-}Ba{X;EWiZnhm%}w>FVVZTJTo?~9+PhBgmJ+ctO7fMF zko1o6Ejiz%ARyH3BlI-Ip3os{`)0Uwv{Wr+W63%u-K33Q#tAy?Q%;?ro=;7w7Tg0B z`8TocGwi%i`x{-_Q)BB7o+rL1??S|0ANEVQMHf9GlOH*?f5l zMK0B2SGa#j(b~lIY?@EJw-;7j+?pevza}Td+R=1gP%XWFAkP=Hd3JfQSb-LQ!j#q} zz2x2~^pwy^D?7Ldz6@N7FXl;9Y@08+v;RL;BMORHnF4>626V%>Y)UK0;#&98QusoE zI+-L{s7NV0ERlC?&z3XIH#8a)`x|CFl@}2(Ae-hm$Wr>hy1uFr97&v%?BZk|M7zrH zd(qX2xO3Y~jz+MM$*t6G>@Ya=>U|}rjQJ)+RWaZ??>HZG8oHtkeCrL6h`EXj;?{zt z4ehLj;$rTRy+p1pimEiyGNP{#81^YS zp`rFqNVRr?h4a)U8N)|fj7&%+*x(n_ z@b@BHq{Dn2QIkJgA9Ie!!p#>#$y7yPFVmh}SdcRwt9aGov)v3}A}{v1@?(lMdO;Um zZ`WOfJ%QQzTZwMKb!~zIf??3)r`(xj`+7C8jL07z5S$-)=g6Gh&*RX`S8UppXw`+t z$JwPSB*Q+j*sLKAQWW^nYnGPNyNq>XUiP67mvQBTXpiIAc`i@1en+}=Jocmq>eN&| z;Q5Nl%MF}EI8|W)VRZEJVGpepyF0G1JlDw^PqIHL(*jYY(6%m9a;KXcDbO`qpNs0c zGEWv(^dh}dy10ffrP^BNr)SGpTjf_(&f@|K*646VeUTRay3UzMg@Ht^R2hulavEES zv{Vn}ffo9wb*lbJ7!|DMf2CG4L`|kCqQAJ82R0TwBGr4Iv)HT2*G~BQ@Wg-}kI$4Z za%`%{?Hm@2=J(I+nn^B)xx3Pzfep&$;fL@^#Uv$P3u--&4dKfDs z?77q7;xdtAjauqMdhB{X9=msNYEgr@S#SKG3@fc;{|akiFl^3uY4G_dFn(&Z_l1|{ z(El{|_wP&g7YJ^WocAX(P$AJ3)^*x!5GO_dHb7jp zIK^K!z||?5rjs((+oE3jPB2Jc#R|yU4h#T*#Nm=R+MP$;+$WWs=-EROba_9mSMkOX zS^-VqzAC|Tr$8XuCvuN1nS~7PN4>)xU zUPIPg=oA;VRfa*d@6YwaVl#mO$heezK2>eV(IvAPGD@vDBjPaR)AahM6g$nS@RQX% z;XSkS>lyWpYpXMMrILCCB5=X`gFjg)IvJGc*k4iy_X!sKudz1w9~H*#Rk71QmCzp_ z0GAvJrMGYdu4{_F)9;FwKU;c|Y+kT1JSiz_RRSy<$%Z_I1ZUNXSygQa%{=+JKc%2K zQ|Ef^kJL*X8uy3h$UH~$j^DeOwTs2v_c^}1Us^Q@CzqeQo9QzGbEiwS_2+TC*u+(@hZiskacI(@7^4;%s+-IZ+6DehD`k$ zaex!_QPsxOedjnWUbI3f7?20$$#}5$H>Ndb27eUbohoJih09-0rM0yL&Y-P4o#(-1 z)2(%{&Wz4SW-`7G3@3h0ZEs6#%2fUwm+tIz?G7mkY&Jfl>iTzPY|1=Tl)V` z#9@c`)j%0ldUeD-MwT+Mj@)*a8Q#-~icSJk64SBn6iHp_8(B_+*|s`_d0qZCH^K}< zs`GYH_Oue`}0Rb1ZGvj}D(_W+YO~_%sU3XXUfALcqqs8|sMatobIz<|%!+v_diBo$}A? zglRc89jmZ~u|a!F40$Mqo}M}l1vS#VRwwvzI`%C@j@6%`8m;qyIOJ3+64lt%I2o5Z za2_{yCW<6fQ7kVF(i)@2M5gT*>bKn`G{{BOzr151#CQksfLR?9H0imY#={5acgbZ6 zR?L+7yJ6K<=+#hUVW(NvkTs-~b5jHckE^n?N(}aeNr9J^JrBm8B7XjFr{sv{FL@>V zBUpsvvj9z5W5o|ad@d38W48=MwFy4AgvZ&FgIxz6Q!)6*xkANT3d6jfsY)MM7{>7Z%gssT7W z8-FZmwpOT#eH+L-Ih29LZxJC?2w5tsjEUP?snJ-1(t9g(6Bohm)hIU?~r(~HvXJ~B`ry;Ov2vT#0OUuDyGrLVj2{fgN# za3Tw&RLj9)!jwuIQwv>amjDwW3KU<3x;JwlV|Uus(s#NMa2?sH5`o0H*=X!Ed zZ*}^}gtxdjQ|K6_s#&3ewtQPN_~&dJ$#YFKm7#^Z4sS}wElKbGsbnlv+l)LiH3k9M z8+0GpwH6R#X;i~DSS12K+5X74!ns9m7^X3EQZpLO^97lotF(XL0glBt2bA+ztD@V*^PKgK9*ZM^=>5G_ix~ zsxbwlGe{^TeRHIGkvMH$=bDw$uQD4jaY4P z1~(VG^*t9Md5=q$ero17HETaP+jMGS%Kk}j#?5tqxCsBLtzU-^hO2(zy>*x4wOgY# z3c)+l=hlfE0lWZsuw%no4aUx0*}s>HqcxMCg{qHB0cE-P06wuM zEkR3#v?+VZwIXR2eyXe9NTT+u{`ivwETK$+VMNu%P$TL;M?0J7F_@)Q0@ZlH(rVc% zegpL8#559;6Um2L3i-}=`pfSI%d%KSp!SDzo0l#s-kG1zq3NbV1_}^`J|mf(IFcFn zfxSnT>PWmKp|oXEaP}f=GIn)h=rC8^syOgKDO97lN|GkwFg9ReC?)?#BhzF^Hf_j{ z(c&H9fst2mfKo4D1GeCLm{o(bT9gT1`szbDs72)H21-h|y5BxvfgU$53hE@ME+9nA zW7+gGtJaGD*{jTB>6rL2+I`P&cY`cx(SWh{HDwm->XywluxQLVlAWY=i$lJic10mD zRop85{2n0wMfTws8vs9@5lKN>mR-zJwIyOC+_R!!+)asr5iuNk7R3z?ZEA|-;iV4_ z5mD$ywTJUy@+_(;C1NRsu043pqDO!h;?crJ$!;5{s^$1-TWQw;Qm0K`<~&2tH(y-T z0r}s_+4X=z0}j&dGeLLdir??Eb%1CW^6CVNR`Ro`5@h=(ty-wZPXqg=q8CRZ{72I# zi=1^&R;;ROCopX$8917+@HG>9-;GX$o#UJ?>f>G4#@z{0i2U*}=+g-GQ|fglST5;F z=zV^$_BU(T#*m=0-mOG_jtv;os7JJ{a@(Uwt_zc-#-|4@DHFp1muWWcwt#|)zkX7j z-bKpRuGOPZ9 zqnuxBfhpOFXzIo{D;Fw?UVW=YcU4*lzC%Ig^A+bWUvWO6ty%!M@wORyqP}S`v~&g_ zz@0l((w2w<#h~2;c7u8TGHM~kl^Mn}tn&1>?jG7w(tohX@M*inydh6baL#nk$7d#d zc-8HO?f^lzKU5EswMMV7<nYwY!P_1_m~z^i;AytPs&Js(4&}?_y{OBNvkm9*;x|iAu$6KU6 zlIG8l?|+{Fi;r+}jSMy6sj8T->#@y<5P&8XH{`QzhrY$CmoV;KV3`Q2rW-0wNe4?1VlP z8aa|aM}Wjf`!_AV_<4wf7?OtSJ8i3#%l1L}L@qv2NR`p#qfd_yDYx}5gq*1U?t9l= zQ0|j?e^|9bg6}-IpwL)9`NX}D%G*)mV~UgHg1kdP0JfEM^YD*xD%U)5dwvOCHl&Vf6Z45c+tGmZQJ>(!c(3HZKRFG4b7MFaXaB_ zMXe;ZO~<~5(h&s5R67t)9y@H%`>wML_R)9{L@@*D&f~P9fl!b3kS}Z#NR74XZcI7pg8+c2FQk${;@vQv@C|O=zhH zx3tkMF!T1PUy7Wyrd+7wEKl(`ck;~Ei%-m&>|HWrL^(_yMnt#nyCklru=5nV;@K^) zt|;8dqOrq8w^US727?epL9oCCW*0G;4%=hFylWTGJ(7Y?{xj|RKtZ89$RQ2np^BFE4)zl_6_kOtD=YZaz#*G zdsG|P&0jL(S8A;By3?^(0wb$fm7Lb#ne+m|1Pz)*oG7dkOmoGZ;!Mh~IYi_zH6G&fttHIZ*GvC+u^^gm$4r@}J=uin z|3&r@k}pCfPM0#9#{D8R0|LaO)$B=*l?FCFOt=d0u+FRU4>dj3Q`c6Qty!-pVkJVB znI^^Ls2LV+b%@h}rW8;~^%UYxVB~0~3s1Ie`$R&f&;$YKt~lRcO)vq$q_$(%*-`^Y zH!Rqm{kAV!uUjz*7d#lp=eQv~FyZ>vv}%Ym_=`f8NZ*?<|L6$tz=`2uqqehqhjzeK z1ysLtdNo_7_3}9oJ_S|=vkHLklNG2mz!aQV;a7X&;FPhjvSp{1nL3%7TM?$-y(EM9 ztk(`x7L*g(A@d$-P%8hk=P?cWD50o-c(90a4Afp#=#X^y`%kFzV6T;bmtMn_s~ z3h3(k+J+5X?w{7B_Y!XMs#vd?kKNOP{gx^!Y31- zdE2uAAFVu(ad_QX>-!==NL-PUquRy`x6fU{v~`oiQ2j90(L^>cvDnag4w?F&B2b!I z(~nI#fusnv$_k{r~ zJBG19&e0*wSIM5#^F;6G4s5(w*{7tHXCx#5U=ReFa8NnhoffC?(k1M@BDetJ5OFPg zy-m9g->VVegy)CS^pzD!=?Ot>WacRRkc0m9V#!Zr6^dkZcFsE%A1r1hGL+%6o_vUE zEyGi^77}oPqogG7VzL{jl0QH$xU}68-+X3u*UP}eE~V%QdU?kl%tDpe&4Dn}iNL1= zjP{kHeu2})c=lzg2fNnN6?<$tAFyCEK7PEkiX6$NepIx2%5N2;vCo~Ewn5SiQIE47 zii19})K}({!ev-KM%DCk14v9^`hc2gBJ!lRyqMm5$k|w!k1+Q>B$)4>@rpJW(8MG-`Z;D|E7~Xrm4U0)=wAleg1SUXw(Hhj)x> z@4Wr10J*|Vz<`E2$m#R}Y+|TyTj(gu=JK{NsL8w%rOwx@P<*9}hOIeyq$TlOqqC3H zTh+y%wq|+#D0pj`!+!0;eBPpfCL_&iq8CJKRrI$p;Z6V7V%Ob6C;5<}p~60JnbR=^ zVc1?qO#M>g(V14^g|Ztd_IDwHY7OvW?H9z2Hl8U&lpwHJ3Pe!ucpG8hG}acVmN&;P zKIV0_>0CzRGE7^TM9t~p^s5MIxu^{UXNLRUKwa#rp&E>l)Lz3Xbhl)g>(}&>=aTZ& z8q8W%xZ$c^OdT=jvc!!pSojy?t`r4=T?P}j?<{i=Pa&lsE1p5yhHXWFg?dF{p#^r; zc`JnQ9v6+FDc`>02x@JZXrqMdG``jjT8q}`pdcE&t{nfy2i^hMls?BYKn41tgXG{f ztQs!X;J_Ary`=!#D9USt(PQmQXAHG*?WroUQz^qIeJ7gPD`*U(LZIk@!6K1Rx2t>f zA@jXlRL}M{q`Xxdr)enGH!4)Hhu+Vo^CSh;IR|hsaY9DZZzzG<20wo+%@n}U^#FaF zg#%t-_mb&+uJz-v8@C?_cx&;5#ALV1C{$pY-@G_i^6(Q}&U=YDHaI&BzF+E~JUteg zBx?q@3S=xd`DG>iZWONuy|=6NI*^y}uGkvJ z+jjf;oe`LF^Av3s7Ue_qW)4rpJj_8Ewjs|)#=(YQQ&sJt8+FWB(KUxsidBaYnBg0sT0FXRovkJ3hb5q)_{DfGa9OQ0)F z<1*qP@|73?ZIGTD5(DWWL*S+%CxnKwSw?zq>s|1Q`*|^~^E33|>!k2!pCVNFW0S74 z%WBp{oIO47=hVXdh8eEgBbbX#zP`_CNJqyMb`Du=2%STvijPKZ0-FY-pp{z5-Pprd z;K8kvo|p2)MX&Cd0y+_h0-d7dmk=}Kj^CIT-Zl)`9Y44dnwCt6uP-}+9xbBwdG;)( zA7M`@t91}*k%5SKvUlu<0rtyVTMnuN)uwCD&OTMu7Z&wc%i5JhoKn3tFpXCpnH(*y zkH4*UcZKF<&0hs;j3XHm50zQ~8ad~4RZ)4!U7nx|LR_e}` zK&|I0Z)?zd=7qpJp6<5)r}TJN2O7=L(w~S^DLgVyP17O0fYilY_CMgipv|V02kf4# zGGC;YEZ1L`>F+7Mzp8;j|1e)F^uj%_zD{tB7ym;q%&b*jY1;~k*{>{nkO~_}$Eu+T z&`uGE+dqk_@QR-|T3}i=`OG_6z6JaO0VxOT1O#*UA9^#ZH2*Z6b-lD_Af#doUTQau zT5URDLVI7Oc9`j4{1Z}tKPvss5V-_!zw%HgwN;9sE%RX{y#hp398jS-S24^kzY%`8 zuuHX7(%s^51bW^O&%#^pzoRQ>^pvbNqdINYPKO$c?F$90g_*oA<%K9gdu;opS`$au zAiYm54YNl83QC>nDZt2xa}mq@`sGG$z|wrfD3dvA&N`2$neO8gmDWs011ie7Q{A{K zkiZ%JW4EEPS--&#xRde`&c`s|uIBKjP0LoZ!X;eFSR1ix#lPOa3NG-0U)}=|lv2Ki|uZEEBw{(bz?AhG90|fyt2B>?HrTZSR$v zsB+k|VXVCTWDxQ5qjr?+P&=ghZe!Zze1fE@7kk!+gf&2282yFHu$ET^U4F)-F#8&X ztstuDn|?Y|u@(E2rh`MwvEJD!G3>};OXVub0XX1A?thP%R+Me%OmS#Q3~BvR)3sWt zzvSvl8N1>)d9Y!HyMSNL{+0>}5P7xk~N8%>$l99+!#hTcEUdtYF+lASB5sHF* z2mz(hBKB^{!;&tLG`pl;XG5Vxx>Z)qU_zkwRkZBDU2D3_{h6#0>??NptW)pf2&V@D zvwXiyNs-v**C3}2#EW;p3)TAqSBb1{3eyF|@iwVUlqH1`HHB}zY+HL}7JsXsd5yv; z3aD}}b|#NRWl9Kb`!u--??!s@AIbp7mD8QS8aL@bL=BHi#8tk{eZ#C9F8GHzy8QyU zdXXpb%9T|x+tVe(j~w(AhEFsejujDcYLI&q(pq7Y=loaRk$cX2Lk;7Y!WVY2E7c0#5VvMG$8Z1WN-&r z6Ji6ue{)iq-jsL+G`S4Z(4d*jq!F{b;kVr5cp=daQ&W{idX*-AB=#yCmE?9?r z<3yqzv@ek9<)>qbWq%Z-f&ZgRXhlyCiGq=|S2Tjd`{dLNyUMw4F6=TNWCtFv3l(OqH zq>^+$P~gnPobUkRCbciHMC@4;U;%Lr?Ve=4RiEV+y^3REcSVURW66=W zHO(C%1o*TmumP@m#;sOM_M+&MjFWp1G(;3Sm0!%ChZg+ZJUG1PRk z5Qt~Oe4OIe7}oJBxxX}1 zjwuHg=^4Etl6sHj`}_DM5%rAiomfD0$BefTGI)+#B{8_K6?-{KNv{v`f57BGM)&v= zt(H!qZTOeD4grIyX-05i?(16SgJeV&{sgTH9ROq(FLYgUi2@*VIvz-N@H+MGA%T9mrAx~i6|ogq zImRz-?Z2d}_ua&D?Xv8`>(UbJaDXGi+O8V7V_3J^C#bxO%y*#-dTcEl0;$mg;j5`{ zHS|Dkn~LWfGdc<@PMHaWQ;@D8aGd%riBqeoo3s68D88Lec}u3NCa;ZSu0s9C-cdq3 zKpUasl#|zlbO>KX)%}>dRM;7xLmRRt$I{81Gni{=c96|& zX*wu;y+Lqp^=wJo11ChI5$CyN2z}WN52fKdK}su%g|J*c(&a#ieyAHu-J}kamy@+Z z+m`z3K@@m82i`FJS~A`Bm9TCQFhS@A9q?mSBW2TM7>>Fte<1tHs*55_$qC1lhQ!l8 zI#CEjKWu<69x}{>XC7kMht?Nz!Lir}f0{_QeX)fZ0g}@pc{#I671(vuwj^HH^@W>3 zdHd&0IPwy6pX7ezePHiu_+-u(0*ZUk#CtuWKf~qJn&aH%rW1B4}OLG%oo=pJuVI7HM90RRGzt;WLAWsLJ;s5+_#7hCGJuib&(11YH!32KkGAL7jq#_7(LX)L z0JEm&a#ad4DIB?n`MCnMfPkS^x}k1MxKU{riUn~tvqW8nM#mSJk>nygOlHd z>8{e*dbA-3WfL@Uu|APFe*Q)M6e%t3!AfMw8CS$xVw-G6+|Bc|Wuw}DBSY}^&eYi7 zfgf4A(O!Loa_UJN4z>1BGAVdiidLw;!Vhf-B<_l3nM$l`HiP#oZBJ`Z2ce&-?Gmy2 zBt+l$paR=t||s_LGI(oBLuUHSzHNJKaS0h1yb z=RoaL9ORpFu%2w7FaNN4aoWfWlfk76wX*Z@JA!%HB7<`_ms}n^Vv6||!~YQ5GJ{>E z9l&4reRc&to52)OM2@!SGP-6TtTOnU;vK#r@Foe06hN%#`$ni}c(eaZA11ExJi->| zb>E9z%(VKI3x6$#hhOuA2o2hjd;os@7Z+8rq^n+}X$KCSg%yOZb2G(ogsZvwDUoII z{VMsW#w;U>1*iZbq1be-In`tv(DO;<@HsUARTAS91(Mrnnn|Isz)8sl|K1l%^OoMn zwd|kO$WN150L{+J0Spwh+6h^3h6QjPf-BxYe^%nRf)r^TmRt)5g4+J*VmWhi)zITR zjg<<}^vO4%(ISkN8he~j207J++7C9>`A}q$&ZrC?_c%WHLJli9*C$+Qx68F1ElyFW z&%XyK0mH{>ic{gA_%~P(sGovNki||k0h;k{^Nz`98mJKbjWG(R3n+L3sRk+5vv_Z1jLzdVF zP%gz|sf7>}M94?FV|n_p%G&(^7mQVN!Z6ShG0ONW&I3Y(BFA1#H=A%9)yHzDeW_{s z=3;IK0YZ7_*2|7D1U7MF55wu)MZR&9Yc!_*GCU!pKVd(+)e=?5$!}<*By_or;^N}t zH=F@YDltOH&6Tz~7T_|L+;LL^^P4TRHrW=6Mv$`*L-k^W9qsu-#p!Ucf;^gKUnhVR zkqAkz>g67nkGyf82R5JTfbeo(N62? zT~{TO(acT0vktJ-vA?4$135qr`of#J(`t*xuW{x(A=6GkY(V^eNB z--Uv0ym{LjNSF=gRZZcz{hw_?K}iH@-)Y)gN~%UhX9I%}YiMDPz%>W#81XAwQQ9#^ z*-059#d+0vw;ss$_CPqXR}dr7oR88wtJVSKIu`h%XU~jwTb904(PI6FX1~BY zD#{8X)rtW5x|}KWBPe1vNS%SmN*}4aS;V*;upK7%?Fd#8iMXAh)76`7mdOLv9R${Q z5nc_q*B2>lyMkk3L^8yllB5=XDmqOE{0H5 zcpl%;H6Ej2$mt}oDAM}>{dv~6^FDk;vMf&h|F$_+s`8iP=5LpHL)Nu4)>4x^ZcU($ zA4~L+ijG8K!blnid{T+EZZy|s>@b=V;{wgE)RQ78G|EQjbY)w3=*8kgr=C3xWaMGW z=<=#!P`E~Hp{S3k<^QP|zf(@5X_J$CEFr)1nRPYl<`lyZ$Cqg>Cl6;dM!df;(`m`Iu~?U7NuCN#FK1Zhwjej#<6HAm2+i_5u7HmTvaEE<3}Uz^ zGP8U?A_ah*KxhIfCD)OTwWAMwJ=L z=)^N#^GAGksf+)n10O)fu$Nj)%sG$vyz@r1tVJIXFQTpMS=1sN_E8P!|M_Tc+eiVI zyxMq0xLGy5`Enm^ee^=mS{|Z%r99524S*NS9it^vRS58+cN^qM&;0fjKqPO{fmy z8e)`L2P1xr*)<#s(>3c zcD+@~nhOn`2ehFnjp2F*Bx_P4^eC5P=U-3qi;w-;u2HPN4B~|tV$ur{1noUV`9upR zDW;Img7^_e{av@iC+9~=KjC=mzriuVG}Y9|zZk?pf=v7p^{t+4NoacicQ?{P#F-a%`X|cl>qu~~1#+EU8wbZUC_iAC zd+XIsUv>Jv+9M{@@3vByf=qv`Zb06~AZrXK1@r06ZTZ4yybEZhqSZ~W0f%irux2ma zX3|`5VSRvnd4Vvsb*@(Gt+hKJ_)!;t0NNGBL9M0C`VDbhZ+z3jFO;HQp=$><^;w2d z_EXek#1$OSD-RQ9`LWGI+) z-4pXODix5XaE6o85KeU|#3Qq^_ANF1C_yJ-k0PQw;b<4_rYYUP?$rZQ#&PeugTGeR z8;otG+kfv-U$n*mV7F<{uH7){(t(kv1f`u#4UykA+)yh!wOV)D)>flW_kiXzuiq?| zweb#++i|I#zpna=sS#3+@1f}Hzgbm-!6$=IR?L zJ=&&!S{5|{2I`vnX|Pa3t_C|%76 zWpUYZ;Wm92$fUtbXb#kq!XH>096M=-bYkDHXAIpDv@n4QJe`7MAlouaQciSpx74t2 zlI>wD7B3(W?DThRY?S(1cC=_ug1RZ*&5*Q^IJI13RJ?Wk47p0EqrI9Wf|?2-|6v3o z8mdHI29%uM?<#1jcYDhNvJL9zsC%4&DPpDi2x=zmh(u?LpCfwjnifM>-YO$bG;A^Q z*ViHx{b7ZtTs{9>-Bu&}@p!tqkRWWjTSnX8;HH;kr{u*m54j?y{*mu!KfGL8UmFQ` z;1h1~Ar0FqTXLc9S?KpfbO2qsJut6}D|Ilst;XGH&3Do1u=de}LeEOXQJ~VRn@js* zZYeyMqguK}PG|WcrXrM;$4Cd{EJUUmA%29kKp>jQE6x_J21;F$<{`}|z*D60JmbF)`FN?ULuL4_eBmLdo7Gs4HhQbsf3h zyDFRJp*d?I`TP~Es1C9tp+JHP>D4MzztLs>-dKdeDa!`5HVE|f`&Z1@^{LmH=pap7 z+Zftj#3&=J>pkR`%`QI!>&{iW26Xm#Bc99{y7M5~eLpGEd6C21h}SQb%`Zk6lY&uE zy~kJSGsHH4aBL|7qswM#J!mHKJwC>-@THSIgDkA(_%biddoy2ZMtlQjj z1~p35g4CDqY!;%NS=2!M%svpj^(O_|ms5_`f4E;(+Z%DP28z8uD|lk|Sj(^SXF~bA z{+-RwzC=@MLGtPQJafw|$t*%S9Q7Tp^5pyE298c`L0mzOKD0NIN?rQo)kNxKig zzHVUv+E**5s|D6l(lV#d9ctn$t#_#J;EeBF|H8s}Lbo6URtMp_#4>D<`c>ho5s{3H zKtm-P)Gg;GEq_qIQOOH$dRGtK7S0*r36t{}!~8h7DO)qd-x2hN3*0t_2~`f^wn^oh zMVccK;qt&pBQgnltM`m_@Y{gjS}?vLG=#f-)h%_Ms{Oj5}ioSnTl1hr?S^qd(QN0qEQ5(nx6{7iT!|Q{0PYh!q_WXS0$b@Nr5fWyBs=If3)h8kHP9 zoCCoslR;xfQEqg4VaWAw=POi%OD3IaD!Z^8lwgV84b53=P;*1S4)%Ipdtd>$cvPwJ zYY08o*j(!uFX(kS$ygXzO=@eHpZH8EwOn-$!6|kCt){tUrn|^yqkxBGwqipm*Zvh#2!AG%Xq$olRaipY zV-LlU2aU*QDg75^_m%D4w2@kqpxRBudc5D};tJK-${36uW98)70+kXML)GC#GG@C@ z5|65ePAfYad3pjJ-*#Z#e5!lJ8)0PN&aZM!fjS}LRsxEoK&UqsTo-f zB!q#xtftK^t!||3$xnbNbTe%uwwugT+9B3&1}ZaQQ>4+uD^SNy~)R0W+>O&yGJgIgZ>u z+cbKP$Bm#L!deofuFHT4O;fn)HdH*fI#BG(_rd5VLs`_>sMWy3W4TQh-FRN|cQ0d& zb{5G~-~j3NA4UJsxD~D9v8TZoD+joglbQ>jDP%JhSWmPZ3hNr_xhG#3&2X8piB`#6 zH)^pt^e z&A|QJ+GnkuJW|5l1r*M}yXF!GPtWf;Z;-W~bvctf_%-T=?sU)>#4WA`=-RhlQSoAv zl1y;MOZkBtUS~Ov^U8{K0f~|Zd78#rNBoo+<~B~@3=;_kg=(nkTgZbTm~;WUC{!~= zPD`Kf+8Wo=4q;nSv0jV;>|N|k`G;PCAaCf?m>-BKcd^=KCd*}mTx!$H*2 zV}_A~8XKQV^%+W@Viq#CCB6^~(jPe=fEc5iS{6YoRiJ^Rmif8I@+ zbBa9XM{Uar^!O8=#ABDz&x=2m;&~QfG_ZWGhwOmMNJaR@b{m>C+ z{z~VIzXA_Ms~tiw)*^`!Z_HmvUKnJ=9ALpuE4~4nr(E7LQkmL)S9*YMYybzx6{dZa!3lf!*ofXTj4 zDk5o3d8R+)>jJI_W1ruY<3ocTf^gG=EG7tU-#G z8+~Q%cDe1yqjYIC{Ly&>Tx+8N5H;n#4mS=N2qWM>lT~m?6R71CN`|YxL=TXJ!n>@~u&~S3d%ruK# z7lbNOX8`klThe*^9<hb~hD)a=}}EeX-&96iVW@60`FrObJFcdg z7bgi8VX0Mtj$%`mL~9?}rkd^tTv#H*w=_g*VITflvHQk<0P&x}PMKmt*LNe6VArU^ zlo3*#2qmUsw60;Cq1-o{194pQkU7k~RY19~$6zuv7rA~e??1C;dn&sWwwMhnH?E3i z=%SCD2ovZzGY1txho`mK+?KvW+5egm^@%6$V(U*5C_tcF^ zSith-$ZocWrvNIC%20*zp}Btkd^*!pvYJ3=KJ*_F=&kS8hUmGeXAetZqe>4aM9qFv zUo=R4?=8dk(g`S%tN>Q1t@N)Y|F|rlU6+zosC-og`2zQ=6bYGcag!*(?! z?-Y1s9t~auvswS@KD;kO#-QfM3a5?W&9~0+F@TK|$!&y#jo#DI6z?S!MfuB3R`ylT z&+VJV4*ueVx1u9ycv8bUOZi!B>jL)eS+S%Y8GioGgX`>r6UZ9~j}KQNoS=(4YrIz| z3$1xE;+MY_PcQpp<5+o`EGl)Ju2^4m7@Cb3vQ4)I8wX$m}A(z1l~Y@u_bOmOf!TRJy0G%_*tkEJno}B z`*_px)#yAh7TGwMa`D)KMQE)2d6sQT+LRJ8mCNTrcX=shk#4k|BSUDmoaW3aVciHv z^OsrM^jU*Gr;#%W@_q-x1%t>!xI=y##Cjw2@?BVch7AP_udQff5AyPe?XKMR-)Tk#v*x^yvJs@wKr1zmhdW}y1czlH&dR+ zO}64e-|kKb83IqFCZN(VYT6f>?EIE{b7rgUvQ@{Y^KlHR1cY+R%oo{8J$`3_>w}UF zgF59b2VIBWgIgzytXf@ZkW<-5b>mnX2i|xCwEv1}>DbLjbz<%X4EzOiCB`*d)NNc1 zu;nSJnH^5OjWY2>j;DeZUahhY@r2&xY7+A+HF;j~tu5s{>@jLKGCm^HC|oOF(YmFp zJeJ)L1M3)=D8<5cWV6EOkJL;%JOh!0CVfx}VOHV-$UL3g-+R^$x9*cz--D$;WYprew!Gj>1KqAL%?Eh@fHc?LBk1&4<%tdX9ahL_~$3R(rIB<(a!MQ2y&cBf8@c z%2`1GCm!4m`DYocR7rcQoH^KS*FL$bzH?8e1YSXi1zo=?_5e4zDB{`XcksS=eu<9p zgOJ?OAKz`=CP(^iR{=KEkCUT>PIP>{_{gP~JZqF+Jhqap2BF;GpF_Q&{$;kO#xt8W zCWq80VL)%i!d`q4dsC^`GtE~gYP0nLo8nHMwYl`y<=V73XuD%2i7Zz^;Z-|_gHczh z>_!|v{QFg8|Ix7P1%Mo>!Ml{?n-A4&o=iqF#y*2ISIGLY^nKCxgvY&IUyRx1l zQlyiM4`}D%Y3k=FA>ck`pi8;hDANMLB_6h~HOZ^!@wo#gZI#N62Aaz+op&1~tT|b& zvw`SDbsXOF{4+hZDy*+JHwOJu-aR|9S-~Hb`b6E3NC5L@vYHO~yL;!L14L;!$+iQf zbgm8LCqC>3udGqDNqIecAH&V8yAp89vP$fSWBkrk9p0F(m);)q-W;e=66EWIWW`_q zk@%_Ke~yspqJG-M?{C(};Ggc3$uClq+l(graXeyJ2oO zY8k+}G@K;>`di5hbiGE;PpWxX(caxSbA{!=ndAQk87B7;x2N7Cdw-0Y$E^|_WR-+< z;1qPF{=u}=^ybl!MdE(FTtIW^6!%%Xk=5GNCt`t4?-GZ^n6C#_c<@Uga?ekl+Iwv& z+!6yCzmhH?pC6fD2Y&Y^Uf7*v&4i{tv9dSs9zRf5Uv^)&hLUY>DT}{LbQVKSMhtkd zep6Xy?`EB57--s|$)$F%z%JL_HTl4l!KSUAQj3`u8MB_M@fAcrwIDKu!vw9z!u-mE zP-1Wp4)HST^{gw0X}6j#!=l-E(AxRz|N%!jB-8I8d4yQ(Iz~g$=`zrA~50lYxs@ zT16`pPdojY-gfuJq?8k^e#6w$jrjGf4fb)T`udp9Mqdr&+xcl?0{U0hX?iC)WZzPF z89>;+1a9v8y#a`!+Tj61;47>AZ7I~G&V|U@xYV^%Bw_5Dl8rZ>V`4)FbSRY17?7IvpQ&r5upU%a; z)j6KXU{YE>Dl`&knnGVh+syFc^_2e7n~Cy$v4M6mfAA6lWp>WV34Frj`+|ko^@xNs z_?YZ%eOxlqMIW?B`4?VseJ09pJ}hGJ7+b|kCNy$xl5a==vifmigTblaY38n6EszXL zLWVS#Dj%WYT|5kP=5yC1mUcCyRJYd{F0uW^Jwt zhzc4`UKxlRX!}YS7=+;3ygD6Ir|o$Vj)!X`1q>by4?4_}JNZcI+1!Nh|4+Z?uo-@uMai)<*LiooPH*?SbqNS&k|T zX;R{uoI|Fqy+O8@NoB*NVv7@e#@i30kY_3(6?`}w`x(~f7FHlX2}y{Y^1pf3DFS|A z%5?h%qeY5vjj{t~PFuYsK>!JYHEn(>0uLfqee>NV`g5CRy1(r9d{}J@BDWEK3N1v`CuYM;eU_t0awnq;#dQjCJ~&C5td7D{%iSAb~(s z{fZ`4xleam16U%^N9wd27s0=;x8G4<~ze3`7)Hg$&)3em4Y3p|tP8 z!JpUcF%oaj9(x%|h3~)KzKjk7ouW^SB!W7_(hFQmLhSCO$KwQboNbw3$ltP=Ij0!+ z3n^v4IXJnWxd#aEv3xsW^Y!>fCKx6~g?1V!Dr50sz2l>qmft=noZSv)RM++42m$eO z{T}{F*_jmzmw95VM%h;icy>ssi`(C5ESl~1e9wjY!Lq~}ke@XOn)!dmw6PuOGZi#1 z21jt1vw^qmqfdC%RUgS18V*{nl>d~)W0g??EEgIvRvbjq{@dwbH;=q2 zlp&jD=6!b8J)3sSf!-f8C^*0t3&R&Q8^r zIE@`E69!S?sD+Ub&azTb*jyl);MB}gF*J+nQ_Xf@+1_BRLXKdau_Ps(&UxZ+p1rgc z8L!40K9>L+h3#^Kzy~LzJ@ufZWt{6qgU@Qe#y{S=F5nB&cC-w4Vjk?K_B`<>kj2np zkAFXhPHP!;ciyT72~45XOZ#bM=fjYvSPY`OHwk}ph!4L-^J4NJan^;myC|SjlnN$S z^aK}o#RRoTRQCqJsP3 zY;0EA<#0i0Vx%vtgnsIn{mY(fBf^A2@M-B}juDw71x0Oz`0{?<3fLVIMY74B<<6io z$yTH0!1I9FCFpb?Ed=QN`sh+{obueTQPs%2akL>{hRGWULvi!*_x1F@;T0lQs$(dISm zm55W)l#NOPR}!a0L&!mk3Z17KBG=DfSAgnzxaL#ftQnpyk&sKV0+7~Dm;0Z8_Bj5oc8&kki@alQzm^SJJe1i57%(l`7)>A_suD zeI&MJ+F>IbZ7aglkUD(v>?t9Q-A?Y6rkCwemdB_-;uHPq^%%7SYL@^sY2-=4_}|FA z<`=51=?yS4(ZiGHXkkL4K>Go%6$LE9NK#zh)u?&gMLC44p|i2ptp!VD`-4ZkBIPcc z=yjIFhZ7xkO??c;8I9&mJ0j=_ra@w+gDnUj@Yp(YiCYL6C{INsgQ+vhSCHvU5|mDd~R zs0}g=aX@l$fCV!34v9_}%FKFvOwH~{!pr^b7b^QtF|K`N`}s4EouaTCpx~ALqhByD>VV?B;|x&$C(@;OUd#|{#Fihajsj102e;J{|IE3 zdrUz18ofveyJ~Kn9N!&}`j(uj+ z97LeU0HfsHnINebV=?Ws{`jkmqolVE9MF*FRh+Z87SrVErtyZw3M9v$&_iL$N zAp7)5oUXH_CP_E{vLG!?;vhjPg$vAq;sRNHO+x3ftJxzfub%`C;>yG=;~&WmAYq(= zEvSlM2IR_3nHbd_)K&N+$&*0>gFYf5rB!*%)OXE?JftdPDLLZp-J?u~!_xynha(2O zeIJx6s3Av#b`no7QLBAG`{f_O6jMGk(~!z{63PTsgx^X)=6SSY2HE}ogv)OM6Q7X4 zi0X`;1~PrKjan-47#9O>=^~!cX?N>^q^+yr=iC`tTO>W9-(jxicC8q269z>D2LXRz zouPtR3%8k?VA?SsGq&Y?yB zmT0P|^vll={6412x6xw?tSA5`gTx-zBpwx#(Ch`EdathgYndmEc3JLvj1xF5^2DJW zidzgdVInpX@O)q&o??b*1cKJDd2np)Wx6`73dx^OS%>F{kyY7|Jj}fc^v7E_TA<7k zH-)xF6P>dxb+9zMAa|6DM>{>ZWe;o^M{oix6=GPqIboxh*ApfxMZXpaozJk79tD53 ztPR+vv7kjn4-GxWjB>WVTs?vloI*WoR)PPuNoxe~yrP}sM3LB5TiQu2@b@v#OsfUP>E7Ba7FgI+5XjAlCz!x_}Ue_uiD@Mq_2K0BH za5DRY3VhiK4Qq?~8X@^n1<7urm}r!U6RC8y$24H`*?UYYR2`Jak1UOQ^`5`oOt1WU zdIwI!K{{g`$>GOP^;0@rK3T+J7r(Uiz!8FyLWO7ZASbIVl{O8iTLb>3GmJTmOy?O= z>%1bPu48$A!oh<}DV5IgEk@ZJ(?AV{P$(%9yR#ChJc{B?3if6G^E0rnJ4Q4ax49tO z;>ky|V0nu&zM+#UAk2EPfP7LP0s(w~yXNa(TloG}*UZYAWl?Ai4@|?F9+PoXS1mZW zff}cH^GfS+p7*t$o)*oLlyr@*X8`bBT8L-z>D9G0h&qX_O`8r?xtlg5tgSxC7aKc@ z9ZOYUL-qRVVbvmW({^`f^pxJgV64b7j$rQ-$Ku&6UH0d^LsWTRL)nm=2dJk~o`2Tr z<-4P!K%j?&9w}|8twV<1O-wBqO?yIl%n;=zII>hbhx(^pF%qeIel^^{12+ok6UE)c zAwuWDTv!tIB#cN#z-Sp6gq$Al+T#4^FKg>~k{KDSCn25xu*+fCGtrjGhJ&^JYlK;# zm{Z-={C~{YFiB#XknbebVMj0~V!C<8vu@St2M7DPp+i9f>{!50s0oi*J>c{k)&B;u z8%wmCzWxfZ`Ww>+_8)daGo=Z4?0IlW@{VnmN?}l;lDI6B+_^krugQmfu%&%-Hr~WE+QZImgh`WwUq@E*tlE7^;QI&Ml;@%BCk`aD*Xq_qw73W!0Q1w<9z6|1H==n zL^eprXxdO@c_n)*B)L&On#niJKC9Qc8wtdGPiX(!N0KG)#WXa%T+wvwUb8=o_h7w@ zOr@Se%uL&)!uY9H8~7KZ30z0#4X$8yig-}`;2_VNOz5HWLvlhpQFypgS&9h~21q)$ zQge0xye0VC2I2jw?V7bYGq_TuGWZ!P3cVb}%jk-7?3IFhiA<)?Bv{_{TExPG8CWPQ`xIe1H(Uqu=6=jb>^4o?(b%}C@#ax`y4WBD+=JfS3tD=qt^ z`?|1@!&kx7P=5qNlwoBFt`(^nzS`J~T6FWuqqMJqo{#fI2)6fU>XH!*aFZ6#!IG>M zXFrBv2fEVsoV|LO8ZQ{|PG)55;r=|m`iV0qVmp_y9s%~8YexyyY8#I`WX!)uqq2H$ z??a)ulJ%e_L`Gp57GwQVq;oct*+hjrOe z2GJIDjh}2OnjNgGahf80WmPVtgIXJqmESZrMs8z*ASbPSiV(VD$kzgWz7p$Z5|~Kppmo1L zpZmk{HtTKLv4eRtm;2?Pv2uT^qk?EXF;Ic<39bGy4}qT9u+$1xVG!m&bv6q#w-5 zoY#9u@AByCU?CJ&9ST;w~qLQGIcZ;m6V z_|5lCrM=5~C?(@6dg5d6jQ&)xqg{6IFU89u+j#Y551n5pGX2rb`Ea7yg{}iT^_(if z8mgq6rvwIb3I>NL3u1~-j-TC^b+|-1ILN;=y^ju~;_#hSgG20#D0f5PztXCCm+Z57 zi>)I#x}|YO-y2;u*ZWxnoRnASC{jHI&I!FKB~f4+)4f4=Hc*~)LzQtT%P|qWim)o$ z9S_dsv_Al_e!#ZRMUo|XJsGJKan8kNxnoD%pQk-*z8+*dQjpi1yfD31r_iL za2l8ZIa)eoT*1xQZRDQBH%w}5M?p4CpD-!&ncpGFOb;F&xHXGT20^^gT+VcAC6OxD zYXq{kJlN|1NUmm;n`(L-*?KeR95j{t;wW!!vo;aS(KN#rIBY3rUhyxZ)Ncxo9+P@< zgf9V!#g)UAEejS&9Q^eX-hhKmwEk&w?HPs#o#u`$&K{9S>krOl+0YC<6+ptCLn;NE z^nh9bqI5N6)ZR~}LZ{=Kof8uIjvu#c1S|MCk4^{*mZIbfY6dQ-CC%nO+H-V9)qh>+ zG41iMXfC+$?e=PL0^kAa^E-D(>uD*p*wh5O>JXPh^Ro0~VgoQ89ZXQ?&|b%ABhaRDkpmBVy8+`w6slxMmXrFj)Xha|;q9 zDAFH?zN>6Y{!M2nj0pQ-vBvR4inkY7k;p*Z_f*W@Qub&BebfJDlO`gmoNq|a+vO&^ z1q6*5Z=c)G27{k4nQSs^Uj80R8(`6mk2mad-%w8@Z;Y~f$qLt(nHYCvr?A0?AmqIU zlG}`bX3j#w<2?-L3|gM$nkX?ih=$m4PP@0Njm+Ixy?D*$(5m5B2vOWPO~s=P&=jTI zKlgk+j}kfiH9q8>wxO;?>V@IcuUjN8-3wQ^xay>difeF{cOcypQBwb#o@1d-PQE1M zmE=P8Yx!u{ZZJ>FE-sVQPvMXOPx1LwB;@-0h?6G{IjQ;0194emb|(}2vd-6)nvM__ z=Nh#KHC2Rcmf;`#SthCqODh^dYujtj)cA7fCT5(0EdFBf}-H$^`0n6)B4@hzLT_M*}VqLjXZXRhsQNOo*t=G2vF zF_2hzyOdzEX3rv^sxsj>Jao$>6J-Gsah6FX-j<&|wQn zzd=!VzWP5RaFKn0#O&5e7g`!P($+T;l&|Rj%UL^J>k|reGhwD|F;F8yYZ=6>#yAmpsemQKZ9~!ctiYa#btr?WVGw1ANE;oo z?_K<@T~Whqd4^xMQ^()VfP6MQq|N-4uG!ThHcy7%hIeuSYqwG(LR5e`;@Q>VYzL;mPd#YPg$pJSn4W=jx7+lBS<;niLH7} zm|u@WEH(I#F!TFhvwkvkgp6s|mTbN^1b~=qD!*@W&7#;>FD(8D!=YyL!T48Yv#Y>M|?EWy7K3@&zs`N`r10%@JosBO(769wNl&L-fB7> z?AC%*sQ91+){=0c%RwGMKw<-G`=q>vRw?zsK+Rzx2fv@(j0&{y?c@JX}<&ROHoLHb_{t;6^v7x~5d zk;v}=z%eaHb>~ZURl4DxEcY^Io682cr;~b!)CLcM<#P#U;3sLYj}c#d>K?30nBHDw z^C$?xt0)fVp^-(t9U?f|ne`tshu?VNHe%uPSl-$ex1)cvWzU=>$PGb{Kv{3C?)_{| zmYpNa)bI25o4t19^=?8&3oP^z?i$IHBCU`=FBceiKtQPlG5T8QhD&u57WHM=6Wr~} z)oJORa={|W;H(YQMNi_4%o$TovoRUJ!RcYh)A&{7nz%Za(z{D?5 z=)%PSj>axUqWK@9_l}dN+BI;Y*ye*ikz&=G0!fjhXxh&m^B%kUwTWn6kEQ1Yn^u)r zsvOWILeSe5#C4`*+UTbGyD9$3!Mp^jbO3&XB>R&4hSy0XC};dqV=U9u2nDg%K7ut) z;kE%`Au<--Lk$?P{>7S7LCDmxj>;3C!hHkb+|n4{wOE?0wmKhPdUfE(nDDVp`Wf-Z zoOB`Q4w4zw6w_1tV3pUZ$TCL%(xGkt_(toiWp&}VqJvk*MQU9DFod-vB7c9S!eBc) zXaa-0UzCa`3I925ILpF^%jA4444C7wI*l3K)Do4OTOdR{CJfk@uf z>xs6NSTV3gNw)&tEP0t;5x>w`+-*0LfO~n*N)qlG&WhRY%zbM1q*jrYii>$`+-MVg z`s1H&C5dnqCou6ttCGzEi)utGyCdlIs36?e1f-9R`sfTc#ng1=g3Jjf7{1z<7@YcN zlQKDEKVgKNr?`9cne0C|2zC79A*I$5fRQnL=2PR8r(37w;-X&s$tYU0WPpgIBSskU zu*k$VW`>3{Fy>9o({Pwf4e2OxkhFh>PXVE19wO`KgR4XeGQr7t)F?b0ue5;YV#)-U&G) z>=2=RvXnf7L_-EJT&Q^`S-w7H6MBXi6#^Tc3~_pk=1W5Ko^|Ma8HdkufA4Jxi1D0M zzs%PO0c(0rk!1(V`w^5!%qoKAPs%<%DnE?rvWY`8j`x_d3*`&|ua zYwD!}L^z<)vOI_dXEgpMu$Pg>e*6`7rfR6h^S-CnugsU{asH0xXE_SCt|L=!2l*52 z*>t#Cd1OY*m17Q4M+SLjxniySV0mWiW)(2j!$Yabp9KN4GiS^)#ju>F)j6WQC56L* zC=HHG+)8)Ffr@wU|)%IV%-qt|0#+Tf<2gmozIb-Hhx(DdCu}+3lj(fzXhp7u=cr2Wo(H-Aho!ufa=+rCFMq$N+=x^5 zHYv|eU{l=d#i+v+BHqvS@P)s=F+QW+Hzx?bw_E6|7Quc7}ljuK$p$cyx=% zp5ZI4_YM84qB;OQ3}qM4$RKB?7m8 z4W~=+lZJJh(uPX44tlWJ)DPnmQ|8?>ET}GBy}2h+1e_`Yinz_G_>Qp;r2YTH3u7=( zmG02*fi^lV0sCkH>e*MgoboNKM(Nkfm!kW;^DD=@wb-VPiT$_V?uJz63EC^-Q6Jb9@B2MT`g#74J@p4F6eOBTVAN4=Y16)%63LEiSRxR!tgnGhQhej&Jsh^VTp{)IP=~p0gOmdRi|Pd&-rf+Khjy<5(6SYJsXYcGq?Lw zgKR0`_QQ*Zw$l97%RF5MT%mi*Kz9rhG1wQ0h;f1~>-=|kp*>tYS;51b{_|9)Ba(*4 zL;(qPmhr)8Ag~Xrvr-?nUMy*bIN|_l(uZWh9J9@(|VN(Ui_A8!m z6M>$h8M}VlBWbl#k*nAoPbwQx!_)F=XtfgcKW`lCajK`Y#|`y~4eIznBE2YH+2p<; z5vS^-d^=?1yVuF%;Qo@IE{gqb`TvItQ-#gdx44vw_6}9n67dCxo-&f|Mp2&&DPd<7 ztom^a53T1+WYVKk1GCEwc0bwCKro209R!IpUYs6)eT(rng%#h{XtRTWLjh`uN!|>o;ZBJ@;a*j#VUn5wq-%#1eAbsP68Za4Y z#~BTJxD~_hR`&f?*yYKgn&HJSU3pj1bOJ_p>)ufwka7t8o#y$dF{_=&96foNK80~d zha7I{N2#065`*lSSm5CBGu%MlOyyjrzR2L~`O0e4lb_vS7}~=Vjye^t=t0iG&_BKE z5wlR{w?yvW$cBSG`~DxGeWh{avJ0@}Jud&}Of7S+Pz5qpF|xQVNpHZ}rDTHAZ+GK{ z^s+4b(-bq`8*FA~IXN0K%YRNf_?P-gHNky(-#Gip)67>2_ynVq8!JGT)hh^FW_2fK zmOko3oj}vp}M6H{>Y;+60RF>EB>RdNN&g!w1U!RA>*#I&-br0S&9Ue<`+hC*Hn#+ zQ!VZJ?cv>1pg7yGwbNMAs#wmo#LUsHCxfAAR2FMHH%L1__6j$jVRdrHhDShV*}|vf z>9V1=yKB-SWg@O2W8%$shjb&@Mim``smSH!o3qKCh#1c#k%+CDXJ__JOhoPtdt^r9 zRE$z)M)sf1x9;TSyugV!&D85%-*Gs2@d(aNIdf-3!k}%^jW@(mw>FtfuB{X=;yE-x zpx<*0XS2A&j=wKI8VLk67u*u2m4le|VA#c0a>rAp-K7lwC!A;Snvm`WD-*6@`MVgP zVD_JP8US9n%(5>rs3C~O=vih=PoL2GOe?bL_3w`;<@><5Y_2~2O0QQ&G-`~yng@2d zo{pSfeQo~waCb3S`>4%=TmF{<76&~I0w+_!_<4m<8kg-%wjQIdwFL98ipL*GTKD0% z&Z_?t@o?Gq?@i^guSJ|zl)X}yj+3#Sbsao6cJEnkEvVUGLs zAL<<~F0T_~y2d!O1P50Kz;O0soM$>uvh!>^;irS$G`YIlT@9FUCB675ho;afpV)8% zjAw-kztCw4p}(6h8+y zuvB}#fO|1bI?_aCcoD~_Xb@JlW112}F+w6yXy>jm4wlOi!CZ~_IG;a?Ou-NCPNxfD zEZ@YrE65a#m+FJeWE3=hN`5E5!P07jB6s&@lCe$}`5Q$8LAU=Z)&3_(aG-B&3@O|C zlGCPzZp8o12r|PmNgj|^2u;Dr(khh1;5H>o?_%)r8w5h|xAzhvT2E^B7sS=$=#aGV zhU`XP;GQq1(bMktRd?ghR6`doZlML#q$qkQG9n&mkxCh}UOm39-5nHsT)-HoYL%t! zOji?LK~{0c$(g0wAhh;0<#F4U;Upj&glaaBP7a>7;W^8T_q&oA+^9r&EHaIYQFprI zpwR$`55jg*bKD5-$>x`lH~6-Zy`X8%n{~$$)C%=PW)nzxvi6O3fxZ9-Tm7C42rPkN=(*@|_vIB?qI%XFLr#bu^(|27F$ie%kfQbD zY}F5+$to~R{4*5^zP|+TQM9q!o#ygcij6Wh(m!Sniw_>)d(DI`Fjf5`iXbzTcliy$4uk7GvImGH`5 z?ax=4TbJsNxr>|tSzfVlRrweFyHEb%9stN+i+>n}lf-L&SXm~mPAlO;*qLSYFDGlP z2xDufK!GC;{zD93#aS@E8`EU=E~oRfaN((sLM9TZ#-3>$64hNdI96RK5Za7O0+}qBU z*aq8#ETTBw0hlRJkg{Dq#!D*I6s`AP5}t5Ngaabs>mfgzS2+GOnTPkbObI_pBRd)T zx%CEeMMSJYz96aqL1R5h?t(UWW=Nsdz|7mlXkWXS6OERNP!3X_@ECXzg}7r+ZAwZd zf@~(LA?%qkGRFYC)q!>NnCN*qZOitgD{_s}YMAQR9()#AS)0e;w`6GAY&Qr(dXjw< zQl6xx-vX%+USsv6?$IAX7R1_=YsFzwp|^1^#7a!2mbKrE99ljm<%|)bMeoDPQOV82 zI3}2<2;}jU5>*-juU050Ua>J#r5f68#`A(|zNOY9089xFp6b|g| z>n}h+`WFXxw{@|`ZSa4}b zw@b~!m0clnB@RL=-mcwMFFQqDb8WI#)p#aVu^5BA`BEI=z5q-hvn#b{B;ev^_nsmA zQcSvRt01Do{Bg)122G1jv6TiL`1#W1>bC6U3dHw-%4-klY>fkVuADnJ7=YfcW5!M^ zf9ZFS?DQN};B-vN7RZ{$!HmxJCV@vQr*nNg_@3YX1Y&{#Dn6l`<#HHo`icE*_;Z{g zhcEuVQ%c z_X74^Z?=9d#Zc%T2(EEc^@)FdhfQKtlu8eOv10g==yj59ty1k$;i%$%=?JT((kU*^ z)s4~M^cVVdN;LnYLMa=a2;ZZH(TZbCLO`>{@GV^hAZ>B@Wb0Vycy?cO)|<;48wK>B z9`fa{hN-I@8B{HWwQkZVbZ$mEp{x}_dgwhdQj*M64HlzN&lrRW^; zF!`t%d+nw57FpVipeFaoC(sfdT96NuRdMCa!p-k~u~g^j#Q4dp9UTbaz9^KEPLd!O zjN&%sD|dNY3Vs**PcbDPo!4cCb5xP~T~JbSN&QJdd0o7j`76N~8c@rU8mg72 zJA&1R|95WblxZ`2!7fqiT&y>dtK?-fODmQu3TF!O?CRupCR~!SRirK|6(x+7zW)%` zB!VLpsBuZiMU&A#%BlWxK!LsMrV3MvnQGUw^ixfumwz#5_T0VEE8DLro@*xTW>+H4 zr9ITm>BO-{6+4f08x(2`wwxa5eq&>uD#))JD8c9QgQ5>VRaS`vX8&MU$gYqs`$m>1 zk`#dfQhiZLq7l$|p>GvIFC6?$<>>0KUiPNz5#?8OxpWX+;*?~rX-yyKg=K&3N;0(^ z<)X+&X>d@b#X(PL^bofNXlW0``IbZ*zuep?-F`m(3at+M0b9d&G60(3AWcO$1QIw(iW8P)cL*!=5W>Hp zbJgozW+q-vrQhbbP8S2KA;uKIS@-CaKxx4Uc|lSTgWRgX zYbWOz<~~7I8%tdq&TG&T6n=B@ezZ95V%Ta#Eo+)y?IoA?yz~lrsP+m6mEEAgvK*Q)q}3WY>#Tx06WXGphEgLU`> zI^v53=Vl-$T=WRb-2uh?c^h{i0g>u5-x#HIp0bWR65*P99(e>~ThBnU=pdNJJ=>eN z6^J?qc0Ts+yzNLCs=`sS#$>eVL!i>~XhtG5ZvT!j1eY@xMF27*$sw{MSNF@*fw)y4 z$QU8?O&o1OS9atgRThjGbJWPV6tW|o4BaF-4EUD-x2RWad~vjh}`+c8bvU!=Y1pC|2=#D|wZoI?eN#fJFK`L4iWuC%K*(OJ5L#3~gYTjceG#pK0G00YXW*c? zY)Vnn&7N)Z3U^3}$BN#zo+#iSiXqmS<6}=hFadf44S&{S^O4mi^1~Q)FX^U&uA0?l zaZfp~!NRw78Z-($P|WsrgzO<{l zo5LFHJEp$G&FWfdqo<=I9xT8332~F!spCYB)h;*oqaqKl)mBKdJl1_JpgU#l(PX@< zC4?TPT+~}a6OGw{d0--CbXnAH+@P1q)E5W4V~CnZ1!!(wLuf4^3=hf#J6Vv#M`5gd z=^d3?^2Sie0~l1uzZ4U^UNd{|A}&XL;mMsO>guPl=gQ^d^XgRBDYEEEIT7dB>p%1_W}@h-BN{!MQMxa{a{w(T7u z-(zEH9f5}JaMB6oE|HuGI&^PuFk8cO*=j7NsDqSSYIJw3QXH4V41S{iG&@WIb-4Nu z!%Y%lK-X!{BagN12XeNnYMSPSjd^=~5d?Sp4-xZhZt6%w*-s~5?WPfz znR$NR9E|9|zDV>zD|^@^1z zbCkn^gLo%x1(OICYF*oK;e1Ooy-gTA155ZytD`)@2Awl0P+Ld(y;traqL2)NOCzs# z@wrW{7c2K>j(3d9Gdf)2xeo)FliQtTlu-5G53UV8zBFpMPZ~C3QpyA=|B!_VT+b<` zKo_Jm-KB-MJG38)zV8ia3)r2OE@c4MDoYb{k5-Hyx!$--m*vRF07m$YQY2cP&zqRt zx?V#mKA&$H=n;&H6&9_}O0qVxC7#gu3M)chqIB3^Nm;vxA!LSJUWg6y)Dnos(}(hg zw2Cj?X9ZhQl<&Ey_3QA9ELXMp9BRE`?}7o|P~Y9mV~ZA{q?dIK1i&dwgm7nd7lCfr zPoDZ*H{saoaj)dkO`6uU0XwA@yf43s|NSV5Im zDjNk8zQj;;CGfy{a9A5Mtcc`8lWz7D-1z)V_R>YJ00t6~KI&CAYXcd}lhCZz+hT5VAuhSh!O-y?Qc5ncCd zMDjhuTN@i$3YzSq|I6ma@wG~QJBNq$UnnI08I-8j4irngI5z=Y;5Lh)BvZW=q_K|Smu?wq=(f?~fZ5BZ z3h(`~$l_N3y%oT%M`z`@b1PB`D*k3Q?Ai8<@6Kb*ozI4s)_GqObwp+t`JY9s5lf!&{HB<00~unmNCUj zsH@GHgaui5vxO6-NU4K7#itvBCRg`%XVflP{!%+Nmz{T%)W5QG+coERybW;CH2PG2 z?UK@c|IMW@x@#>vWZ3nrx^q>P3a)N9ax6|z0w&Al(RDs5$*(9A?!b#{qwz?lD8c9K zgxxwSsnA4*ZxHDL<=g9-xk;=qtg8+Oe-$=ljcSZ($UZqD|(L6uv}?4Ct_!~5aPg1Ciix* zDRW6v;sO~AH=4A_daOt1Ji z=Xx$K>My4tQu;`jhyDx&y;R00EBhQ{^ry&H)0~ikAIcxA9^qws^rZS7xR?SZN&YI$ z*cniU#zbA|597H9j^BXBnw__Xjt?mWSYTZ|XPb6OY9uL>f~K7s5Z^EWKNk&v`sC_s z!+<7RzPlN5k={rU)6oom_1SbNU5BJg!$jpRcJsgp2Xl=B3Oi7@H0y^=qR%38G|{pd zT`~>OIsS?^L#ZXG%RsQu;MB`gw>``b?jYnJ9E4t3bG7n!SS+&Mg)~4eN;QIc+JL?e zalobBIACdQ1I09Ux|T>2IFU++K&ErxB@Z!hw^@;H0V11`JnE`Jg)D%G>Bv@jY|P5u zPesIb>;Flm2LJP-Fe!%>f<=-SbVl;_M}2zVLDyKeCD5f1ss4G zZblNcuf;)u$OdX-9wkpO0$5(YN~kU!e05Oq7UO}-R6|NUV?=cSz@TZM;?ey!K2(-h{#u|&KBI1M5Q&j zGrnV+?UJYk@XLO{cFZCIPiRK+C4Rq#?<#0jKWLiOi36YJU1VHah|ItH5Hh5~6r40$ zM|l5clKUQjM0WtdO`y&79G{Bx?*A*lHT*ztQL4Sb!w5Ng^UW(MA%+R(HKDE!s<@-{ zN^J|&X-p0<$BSXfyoj1KG@riY2Xo%g4arX0 z3#ISEp}>!P&;htKin&C8MhCc}`ASViOj`~>p=7P*(PAEV8OJ%bG6$(4YGRY3E>=Dq z^6!BUfs~!RT~&JTx;GzG?!W~mysH_RtgEpyfT;}pF10LZCIjqzRSBGaR3H#c(FzQ% z@YHVf7ciGzOV50mt1`Hh;lSeW#hNG#HmNLn7>qpxyM!qXIcP&er&0ZEttnH@AgDi~^YW_5?gs9j#zHkf3hm(uQAN@2VrB%#aSB0aum!XM-W9kTILlYc{ z?uuKlbIw3KwPjxhYsIV=_21ExxeiIaA{G;J*vfc7Dubi%PLKgOw;~h^XY-(|Z{{@_ z1!y0CJlb4ue$f|v*xha}{h}cArIymOHnDv+E6~LLLyb;4HeT%BPrWPcz1I~qd@qdb zl857v4l>{jEQM;=S{$-YP?+Ew8e*DJK|xBIe382OodGS<%bz75wUEHvuqTQOu0WY7 zHSI;*AJvH7F$YtaLUh?kIzz{TZh~?#S)S}fLouWN97L@`&JFOliffX_Kn!Kna)W_^ zxomAINVL5=0HIchG!tY@zVR@=xsqdiPdf88T1ROK0PL@7Cm`hYU-4mdw_;0sN8r z$CdQ49b;_QL+C(h9@-u`RWFXjnoyFj%4Ve*2pvi?b*u3D$ZNt~>1|Uk&4o53s_U zxw{k9t#(Tp>z>I4qPuchKm(0&;USGLQv(r`fbWrAR+)o}AWI@!$*yMx;E{rs^c z)PdSvE3Cp1s^S;?=$epey}CZ*@R2l_A=(T}aurj(hGvMo71KiHqSjs? zH1MemLjeV{!|iz8E)amB1!*0XgmDN%lKO@&m82>`e7?_Y`~a-$>hFp75HN$U5EZKMLt(Cwu~giZ zY%^#yHeA(4;AkVPw~P>Cz&9%h&!qlNqL;P=1qa52a#sXfQh-B&-cFw_CEm5-ypY-J z-U>}qSv>9uzUHXP;zNj%jESsS=LdTHoz&Uk4IAUfpo-{TCx1T;Hm0@%;vW1pBTwkO zoVfdTA_SvX-JV4!8rXS&)jJ2u8#V}|DbCr#WfRHME3Cd_w3?Vj^F{k`<0thG zKdSaTOTT}cqq2kgG){cLFEZ(1^>a8f;AD492*7sEJuQ+SorHX0>XfO4i0eS10kGLO zK3oT#MP51{1jr2wjy($_H#U(QsD3vb#9vW?QIn}ljWEoY9{M=5%uW78XUd$lKst}z z@*^4^t5L6@2;)CzAA$8O%;SIbMCp&K;c}`Xz$*m#Xxd+MQ{IS``5xC588A2!c`bC3 zkrE?9#Zw1YvH?v}WP3G{M z7Q7^eH(1vk-+xo{qU&E~|6*DpTG|A2{pBApKqCFD^(8XgybT2<3=Rwo!zevzU1dGO z*NjZye|;4jZ|fudSaAS^?eF1CUkbdDL^*LjVZeF$Gi!VPm=+_p@&?D#`7=VRx_74S zXFtE#!)m<*rp8cBM-Kp!C*8;Z?KOB;DdZ=?}}bbim5`Dc1Qtv%_;GwVwz@S z6>a%)#>nHwdTE;OIz?5?`jvO!jyEUC;Z9T@lr|Wt0_^dev^UCgrWA!{>Nn#0D-L!w z?`Wbv--ttGuI5yuS9$cnnnogVOC|uL>~pZQKrzWM^UZ`*BmZc&RXy|=uk^%9D>a52s;_>W;oTq6xz>MyZ7Zb9z01q z1Et9NLZ|(VAEru@A&vKBUH^l}aqK7%iJ7mi67g4Q3N9fP*}sY2_M6^d#D`^`#5p#V z00!yz0DxJ3y%^B5{cZU4j%MMQEFX@1w!Rdsg7CBs8*M11_@eHD5s0vaKazb~>!Lpd z{xmc;@W#oxx^(rNP~~;C!?TvA9-KpBFt#o#zP}-}Ar$H?zm=VOVX>EStC_;dBopI{ zbyer5R_I+r{(Gc-IQF55cv4AI7LWecNdQIU-Mxse2ml z8K385l0JVEvDgsu+b&G2;|10TBK=`H88>Qd6Q12<=cjkX(I$->wFo9LAK6ocSdrk2 ziWBYt|53~?KPb>i{f;8)z&%mte^XZTcJ5upWjX<}K#Xn`LB0?F-symYB?8ttpoU60#Q!L6oJ?p}?62IBJf%zOH=uh>;j-R};DU*GsTkmlnJTM2^ z7Jn~rG0I3Mz_%d3-SemQJiISUTCKagi34LWYoRd}G95L6462C*Q_kmL<6)KB%G_Am zut7E|fd1ZLwMuYLZU)2e0aZ7_Waz2f@I^5w9!@7Idc5tqdZUWJ$@KyRxFZh$u9FMf zV3;LL+2I@7F1fd>AFRGJU1S1C8FMQFvtS8)LXu^f({PZfCVDF@ZWFhupHccO=?s;T zX_+_Xeg!rLnt=bRjXK^&{n>|8qS?VSf$ortA*;ck>GmWboOR-%+0FDGW5@v8$TQ0 zY)De7GP}#)Bd~pBLHhd4b}iV-Qx02k*uC>5I>^!uc7S2l2(}5szMjvcHRC?KX^_Mg?eoP>lqYoDO-1Tvhi5mcuUek_ z!qE1}01shd*ZUTJ{Gzn)lsPWx`SjjtN*3jH#X4TJhA@FDO6TS;xf`?vMLM z9!$j$(S4RCh}R6i#M?HdX7k*}68{LV&O6qYguE$D2B#iPH{-_Rji#aVw!&EOL1*A1 z0R$+5FVYK(q=5+6V9ap{7WeN517cxC2*}zvq6*=KSHno-j2LqHAcfi_(m-skJ*q=}Pt7=^?8j~`t?Mo)*I@hGu z%A@h*s>`-K6d(s&jgslY1b29mJg5#={0;sCE0(vmD@PfFGzJbP)lK>b$2R6~t)2&L zE;&dXP!BnjC!RbX}H*yPCBz}{A1vV29R-tH*_$7sLx)PYw!WXQ`2p1n(ziV$JlJ@3{hx?yy( zrN((NMC?e`MKtFm7U+u0jJaz|faGq~4Sh&JEhz&p$ICzAY%o(z@ZLCCmPTB0kQOiJ zyu90;#`)(3lqDFZsq+`_pMokzYT;+^JCGgXMLXD({sIW$BwFenZ^87uk60x;&dlMZ z%4880J88tlG{TvYH2;lZpPWJc5)5k(7hNcVHT5g?RFvWzCs@qzW-UhG#niNMQfjmu zWB}HA5{vkGcM@-BehCT#&Z?R}=R7&bh4hDoiufXRPS<8Jt)@;gw4yXJcreyKtqiSY zN3_Tb<;=?jBUkfceiCS;>Fy#Oxi-;lH5}9)CiO+LkI%!JaHkCNZCweno0mgAK7=Ak zO1DG_~ZPB>A(84+?o|fpR!dxQyk(5uSqHigFUi5?#d4?Vtms zwBTK9eg1#Z%4syl5`PRcdParfc2`4n5uVshGX(n=zRM;jY;;gJvum-x(c$v|%`6q- z98T1#_iiryl`If&L}%xs%y+&YNg?0NO7y^8`cA46n77e^0^42U+fcHTyTQf&0d=EN zz%`Ln&*6yFI4`|+$W2QeL9j?F4|J7F1;`bNSVEJaGEz1@%l1kmza-1agvclG_b`;bZ=PD*?(vnx~j0`YAsYvwRTT1#w zQ)=!4lO8C}$b0!;)wwgWc{Po|da1=Wz}40^Tls6=^e_2M=`9Oce71@kx}cl7K&Y~0 zz1GbR$7!}7Am!hOW}*%u!WV+t{qO=Now4Od7!JltfDm1+joKGo*C3N6`MbN?-*jJopNII$zIL+`7!j*=uc22Ul;83oh?lu(MO%8TxZbg#9icyF_hdn$I zvMeQr$;kpo4tUfnS4k;Q%WD48xZt%D;)J!kD8tOte`Vl-by`EOy%z?{apxG5t0)V0 zu;K^u!_r--!k4A^s3TB(1vIo9MucMO%IO)}vwr6Pp9oVY1WvwY@kPvBs6wo_TNK2L zc}=+krZn{53c>QB&s{!+wGVVeai#^_H@0~GtU}G`rTs);pM39pZ*m{AUBmtNbn>ZX z3JYBK6I@Ny-N`U|^G0t=SmBf<8u;#X53FGX7!cfluSe3bf@)ODl?U>nreH@Bb=xgP z3AIytVXE<)yl-ib7Qg8m&UQ|LX@h%t;g4_Dk$!eqJ^D&P)p_WX)JG6w13M!jzh*p} zTwEP*%_b8}7y2&RlQxiE_2uLIHf)uR>p zB`-uaN@iodP7JNj{eyuuPlgM*EJIsyKh*1)T9d05HYp$sjW$`%>&M2(S+-NrV4;$k z7&&&euKxyX{?B_J*$E(e68u!(J*|{MrsHZRtRgY;tg(I#SJ*OnlKDFfjR1SK9Wb8A z9VOcvUkOV&jhAAVsQ;CZ;Nhl zPCcN72BBr4j9?Z;ou!j53;-FqIK7lszhqh356#;1qwg~|TdBG76Q;?IdWF%Ct>lHKOVOj^znY=KA1`fPa3C>(E`P8A0GE1Tl%SVF<%hQhH!(swApKjn+hn# z%|9{>N7NIcT+Q-9 zCb($eg0%+Y@0C`;X-l6svE6h-jPi(fO^0O^YveUBDI`iUa44_c?y8b!OMt+eS9l{!866APqY)N&r?d~n1D`5B;DwNAH{oxm(2i* zV&a5fq13tTMU9fW4y$C8gB}5&aXZ(4}9FZFBaF&qujoX$afu zR0=I^PHB6D(f4&VVi_)^z6>qz9jZK7;FQUhog}^?p2V)fvHFZ`veN^h?LF# z@6AJLy?d;_XQ8y+~I& zA?XXT{gsiE*@(#^(UdQzS?zQy5>EN+revIiOy^0uw>XXYv)IO2UtFb+3kmxNvUx&G zQ}izO;!3QC?8M~qcikpD^#!$_O11*8K*SHi7HbJSaL6;{{RkO|^=79GF1 zwzCZ1Wx+=Bp*V$j&_$0_6Lmq;0^gs3BL0;zk(u{$WT%93%%a@-fgeVd^+Rq(p?##_ z@Ep?D=ZQka0Wh};veq;iyC=XL2zu3^pu%u*@>)B8rl~v;tQ7`0x7EQb-&J z!8|VYguT_KlgoluuEd(>`MRZ@p!z}6s1-ztjFk{w!*Tves^3(beQ)FJC7&_Vf}2v7 z{hsXIy$sl9q#I6Qc%q^AVFMA%eo(~633lBTImUOduztICwB|hWSTMQ{B}Y2D+bc6| zRvb(YHAQLpDX=4Q6hCU7GXR;7fESi9Mg;JM$gz?7p-`IVxgH1yNdukODj@9pmjC23 z!*d8gPtdCmgr8RiJ_z0b&bD4W;yqZW-gJO*r?wrqBxCOwfZzWPGA53OfLjL`YK?Bp zpyBDz$JMXnqq~z2cOdJ6iE~VyslxU2WJd!?9Hg9OA!i)h-ooUl<)zCNd8vxxKu@)z z(eC{@_ZsFWUBtdSA;HSrzGT(Rm#!le@$WAT*zG3TP7_#Yth8p8H>m$i%ZTsVo%3!);+{}?kK)k0j% z$B6m&=ZG5sFNzb7X145-!$9+FDE>^p75G+9@y-b0!hocr`UT7|RL8_xZ@1Vu`}jA@OdE!K*(w^H1T z;~QieT6r$TnHZF${M?Ep5u(oG*9gGr1$_oqtv3FcO8GU}p0cd8@W424oK(BdLT8;t zi-nAT4@_7FYzqfe(H7K2`PJuzFrE;gw}0}Ke?~E`_S#TtLyZI}HqwowLs!I73o{a; zbGZAu41H z5E2#r4S;?aSOWbV3Tj~2wfF3kgLc{mc{IRXj*vR%HbW)@x+yh7ZOk>(Z{f003MU+0 zoDsQ>Sc7)_7B%k8I5WBc3vC?Aj|V^UjfsrNF$AK0(!Kn&%#Eaq7a181wG0s*@sFg{ zhKN_PT=#tmMl{e~B9q5Kw^U7@phH&fIFseHH?@NG;L{fG8wzlQ1Y3L02<*}_Ix~vA zuQQ2fgX8!ryWpv?%dh7$Uv6U2dUWt%GnQ@eI*gVg+Lx-_1>)lFa;G)%k|-rNE!*e@ zxPXfY9^f8F9{}m>&$P>N*sPM{)Z<;y&eFtH&dlmPm4yXOSBsr}7L`0hPBr-PwWzuu zihE$x2fsYeNu;pR;vIYMcqLnLRb$s30q$9S`VVD zYZXEbod5K0f)7~5!7hEE-~96Q7%k~1iyZ;jkEUYcRFeY#BFY26a{rGFZhn=yEr+($&I)SH(6iX1E~k)`uxakM4PSHO zFm4Krf67!2U;a?r0!W2H45HL;Tky4T{}p=J;IUO`&7Fj#RsZ#QZK2=wb%rY{SNPp0 z(``e&C3m=zAQBy$RcJvYe1jEa_+)X{5oL(?l^F}LdaW6EmYYso6Rw{Xi90fRMID#1H-WQ9x71MY zjit5O{8@>ki_N;dQj+8()7H7npE0|7Deq$cfE5MwX}=M(Mb^|{lOkOQ{2%JXiP>-hyaVpy1+4@M05zAKiPJO5Yb_P#IxlV&*kGLgpD_uWr`sd~ zo_Nvl+M?u@f9vEIAxX`!B*C6LH}41|C$zQXnet}W6)=-9Uvca;!ib44xAkx{jPs;N zz7$wlBoH1t#kAJ=xfehQpS~7XV)6^xq1Z=tf{&B#WZLA9t+w@-cX!op~B<=P}inPR5&iCxboUKKc^G|j_%z9Tss78BY*D*bD>1Q;1^+e zu|B{Y-+*6#5&^$(OFTN?+_Wcs3WQ&;p0^h7vLx0JhR0=Vf6oqxRhC#;!(&4B^`O!( zZBEK_m*9?4XyhtEDmwVmDx+Bf2&H7*4XZvx=2Kmp5OTjAUV{qEJ+n+ok)wBr2h?mA zaLC3}I6BYZ(sINvTL&sez9oK5(RD!CGj9r1Y1|Tv(#5Y3`u2P`lz`OkF152f-MA~O zKpO(Sd!j%LhD~X>yP6<`trhYj)GK$r@#Sa-+dF2I^jG8(pmPf!=~W_X&!1#HsKtcu zBtn-;Tvg+CN=c$DHfK=SE2benj++oG@ae`$xtsffmvOlD{7M(A;9l?J2S%uezk7K` z9{?J{^O}T?S1K%lZ1hjRP^S!udr`z2gt^djh}Q( z6>RBG%LU8UVgMOWnprCbY$z#@IofqRam^IF2QNB8s*t$aEE^1WveG=6>L5;S*`pNb zKVqR7wJR9xK=LE{e-^UpFjd{4b|j&fo6T`^3t zT%)Fgws!KR;71ey;K5NrbplZY`em=iW?Q~NRjVaq!8x)-3-;VJV6wKieV*D6q`L*g z_f9AtJ08|EB}>=$lWB_ul~K1yrx0}xA%eLx?PSe8{pjj~VEv7oD8hJjw2PfQ+yRYD zX#RvvfMZXDai;G`OjuZL$ZT0uTHBN_IoTR}3cd*w^T{dt_xi$f7FMgq77pi?>t-Yw zTk~-oYH?moHZnk1#jd8f8yjTmfl5c^07n=j8xDK1t0IoU|29{-F!$^CWt+xe)s2*` zfqV={Yaa(!IBpDN2sFy#7CEuMhI^1Bhk*6snyns-3~Jr3MfJNxhhgd9C^a;I@cY0A@zq}(equD6xD`M z?8f7Ay}PEK-c#5V0dSSpn04D57uBW-#8O;@jf~Bce*<&waTUSj!3OyJiNw@EO(|fU zDaIX_>s|_5lt>YswL;t> zAZtlC{_7$%qP+;zS^d;%xMRS8OS)~sFWJo8!D?A2Ko^y)9`YDamKiNPM08siZD>pc z|86F^5@w*iM7eZ&6-eGgv#a0vxX0FSOdz2|dqR#9<*2wH*SxCe=t=k(uh!9^S}o4+=Vsjlfan}3_a2WI#M5{#_67Qo>Yz(lIb@`={^!NTT2)h_hRSEq1B+ z{@F94Q6a=gh+z2BAJuwh;hbWUQQ*_eROr+L7UsMuc{Wg0t3U$%aK@qdyIqR4>888< z8Xq_u$XI)AsN*&(warl1D7&Nqs$l7eemG6b4e1r2&R_>gZeji_Ch$)K?(0V%T|ZP6 zYacmdvi9@Gkph}q)%MlL8X6NWp`+9OyM=9Z<^;4dXYH3hphB1-v-gpisjg@qY;b&Q z>Vx-O`m^XbR|aYrRKjM+E6~mvRsCfuy5+6oT+x-wLBv8IIXQHk0i5(l2vzI1e190A zqOuc-a}g2mKfz4sj1^jfXFex4YPRzgq{yVC16i)My9GJMIJ5Vzt}bXA0ipg+a$kIX zOu3>B7`@^=@BWs7`hHbCUe!q8RNXO7{K}>^>YdLur*c5O zaW(O0#@x?f zKA9G!D;~HybEo59k|(xb%fyB0_rijzb{8mH{48D`o2PjC6J9Evc4ie%6ZMucwKub9 zLtNgmv-RY3(w{f7rTgDNX2*#`BEfyov1Tjwd`&)F<% z9~_6g&wk)`z69Y~6koJ?);|vlN(9)#pi&$DP{5%OHmk7wlJplv~dwq(FhsK(rKdw z^3C)s?@ZB88cb9&ICgqgqH@rR2pA9)ZBLWb3(aaDrw+n+z{PrU=T3d_XHY1g5PLL9 zC*}yZ%+R;lgx92FJ~}R?tZf3y`ihGRF$%q)INxwq7CZHJe2V!?J)!$sr~(o{l!1nQ z^-j=*zJ?=mRG^G&zSxMHzH^$>EvKIjLvVoBv8%Mbz8?(lP#&BYD4t-UI?d<&GgI*YrnU*VaZTV$`J>Z0ch2I(eA{Xxe*Y1PCz! z2@uul|0^b|#o#6*oE8NI%h<@j+dsx=!IB6#eKTDh_La%|Su%@!0jZSFdE6++Xe+VB zp}85R=^{l7(r=4O)=d7IrA6S+$c`{H?vvf<^k6_rpi691jhVz*wz_WAuPc>DeGH_dh8vC(rw z{ZN}7!PJs#U6_tzBqXID^)hm3hEUcJZNM`KrlTyU7=MJ#+{^aL`sDCs2LU(aV=M(6 z1tRcg`itE^JT_1{n}kMd)=1$jD}GNA?o_~69s?sEHzT=e13(cy^eW`V$>=_pNw?3B z|EeZBH~=bL)=qcKqG2}?n;nN?l$qgUei1C*C)o#}UlzLR{b0pT@TB~Orm8X41;J-r zq)(wE-#)(=y$TQ;)M{MnE6b_venTX~YOE-a@1RoY26aAA^I|wIWBS`W+Cvcu)k;e9 zcR(I^{B~z%AcSa^8>}J3SuCSH-#MVJ26~3(o_4vDi+wy#9?=}8Jfq_Mnn<<&*(%Q8 zJfr7YIE+nhR5H6ksDr0k@mF;U zh?9)eLTcZ7M@Z%ty#zow%SONR5-}$t4|j*s#X@wjY}Q6pL;Z#3;`)$28*YQP!6(}gt^!<@f0-6sEGnk__+;L7BdAD(2%$iKcU zdXB6F;-+%2!efXQIgT0`XB=m3e(Hnplan6=T_LZ<5JuTOXr?D@j98Fjz;qV7Po+HL zbpOW-q7^JK!<`wW*x`L#ZDnInSG+ucO10&o&!ZIY90~P(_N*p`s2n{6%4AW+Gh6vm z59sXE)t~MM?eBlb5EhkhA#%@{Sb*D)ou61YtRTKD(3bjhlnODrgvyMX7M_E#ZB3C)BB;p^%6H=$~O;Y+8vS{4O8 zicRAN&w;UxR5;r{1b{?<_-VIw$x#SSz=IxPkL#04o-{0)-hz4WX(kyJ0V8tsdmo7z z3wOta)f-bkFT#za3dv|*1nEd~g6Po^J6k+hYjWZHr9fiL=Z2ko7h*|UEpx7j2k#69 z7TIP$5_MM(IBid|-TV~YUKFoLUeJny zMCS`)T}3S2N;~ZtrNx>>U>rAl@H+}vQM5Nz`o<8zn#S{kybe1*y$71I-t*SsG!X7b z)lazsgw@sD>cH--&U%d5Owv6+#Zj8q{ciMYiMmCQrGd=zyY3YR8z*ctWA2F-QZTU* zIwdE)MFkSGhVN#ZqszgGnd}*}dGjAN7UEHjniKOnZlKejijux^C%7)(9to(Y)^#E2 zG|T;+7dV?GJj;ShO7u2aL`wmKRNBaO8AS!B6hnE6x6?a9Om5t%hjVXe>h|(!g%Kau z%Mo_$V$eR9y!1Uca~kf7#O5L^%DTWS1nchzC##a$QbGx^6!yBy)y)0g*oJS$hzgnX zzdiLa;O1k3L{K4!b2shWE79ulXI?if;yHjh(M5UW_V=gVIhf&0=9W{tH5SC- z6!7V1Xp_vAm|8{q(HG!F`GE1MspZSvJgXIO2V{6GvE+Ko^lk+P zr?i5)DcB0Zw(El(eDsZL;*${4`{#_e2s7xj0`SJYawgYyqIGjI5kV~~ax+Y))mipk zYktGWhmgF;dWj9ZoM;wQ!YElfDkUI#GUKv2;7Z&>x0ffJ0(7NbEPw@h60Ro7@jj*V z%8>+O#T=+1U%{FYR*I^{qb@1#G-?lWKB3C-@bsR*9ica2cS{R99yY3~vlRQjXs+Er z03QngI+IgL1g{QP-cQk{!wT1hTa&FS`|i@=Q^F8JKE#idY+Z1g_z^C9 za)+SLF`92|d0y9+XLcNfcZ9gMIhB@X4i#pR&v_c5m{6jyeIP8%17b<91rm-gVtF;V zA|dI|5L;;JZS&Wre&&kZEWj)Q79ApgFCzg&)}+i27t@S1`#8lgAG7iR(%@R%|D0U(s~5nr@56q8TlnEj&PnMH2u8jqt|y60sF_A z7_QtjfZX31uxn!`4~DYXfd`{mlSU=?Oc|}tVKp^y^D9b^zaHfB3jTATxp#dK&^WH3 zU;}n-BRYPh(&`dW4CSfnl)AIhQKxLgj#+t7;!TuJl^_F zlUDTA5`DOE;@wRIpS*tzu0u`vQt<{9{KVJ&r~<}MqJMUVcqZ&qgdTcfl;u7oYA(Ej zlkG@imQZiC!TrN65tYGD+s)a~a9xU;x)LU546B$$xxlP^tXM-bXQbZYBvebZ{>D%O z5``37v{aRips3Y(9}eyzMsK6QXCaWSvF_axZ=af_qH<{;t&uHDB4;5uZy&NE-CeB! z2F=ZQmY(c1y^zJK>yhIL8?av7^m^_(T%QPzzcA@%7t3a8C2wSTG&5jKB?6He7n~mG zLp~ZyKJo>Joy5CG-fC79fJ*AM6ZBb)iO}TKO|=Qdd|)7wP$SZe?<#`)$Y1bQfqSe? zbcYeZd#rxNUVUOch&$9)!YDL!L0{0;eK5BcuEM?7GdyaI-#zvbw1a5*ZLx*Ni<{=$ zcXMASU52om9`0Yq9TZf$u}TF$@B^(m=jetToljc>OE?qCU6e`;#kz?y)X%)0X1L^Ml@Hc6}mM55f>b zXwDR3O5w>-WgE;PBYx}13N1|hG1g$Z8F zW*3!@EXy>*KPse9z7NO9lJsv^rNM=NHvUvSGARPD$tvoOz=$XqJ~c&`DAIM)aW&rB zezU7#uHcL+jnx=!vX z8*V*BW0TZd_is#_uUU{ZmU6MdKu`vdWj%+Iqy%ty4CpxYXpB&E;vH6&&tjQ{}<*_@SpxB)BjhJ z*bBs4&xV2UNxuYDGWew$kMdukvoVH@xTyIJnay|fSFM`w&L$w4eExQPst&ix;AS37stvzb+l5=p5fSP4+>Sboa#xWL6O9UO^|vE8 zab2&V&B2Y$M3`Clnu0eGA$aXhvmWf*1m$0k4~BqXW7fJ(rITDB5eK>v9MggB3S;CDQ7VhPZ`W29x~~80SDc41sJ~T{m$YRYGZ#8nxCdFmI+Mz6-E@ zz>C5 zBEx<4RjvUG*g!6r(vQs#sXroeFH%5<=~Fi1u6M4b1Qltsn$|I6`PF*6DWKT2H6_UV z1A1hcMn(L6pk#qU2u`wM(y)V&N024Q+Lt@ndWqzI-n->H9$P6)4VLu3`n+F58)>YX z!1!G*Y@x`A0rX<9ZAZ0{FS&n1XVH*1*tZ`i&JXCJ>(oEWa^O!2^Kyjxs9RAkBN(-pd6RDGM&|)?W9Qq-lA{TMsAQbjn!4oC5^Y6`#w|*uw z)oVwFi91KlC?G45vX^{8Obbq4A%q4fu|ToMiD4}#G;QhDz2Gdsr9D$8gf>5bw3E-w zPTbU;9@mMV4#-?3gX`~^LXsu%wWj*uAHbk$Ue--u(xh2!|kT`H>Gl+~IXB z>mL${R37jZ198-(Km&!txlV+CW#f)(m~+1Ym$q_plLJ6+XN`7U?Gvv$#Tetw2+jMJ zRmwEqpUk<310?pY9TDvFX6$0c{WuoM3Q+wNI2{>9-xA*y0IdHoEMN599jE_f7o)uo ze8-wp(81&grcH2y$4lImph={KphKhz{~1*vU+qhdOOb$VK;ct3c3(pwowjv*EZiwg zn-PIh2#(+oEm%2We3)LY10h(!Bx-c&5iCX^0l<>db^O z`H9RVGk$gDatCi1Y*Pl6W}77z8JcW)|0>_9Qe+6(dk_3U%_V<16FVCSZ?hSNMq${w z=akqkEEpSevwSgAAp=D~yohm7uJB!JhT<>#k9i-u#)xw2*9W?9bx^|L&n0v&%s@sg zClYiw#=!V8O00y__uEtP02tHDF-n`g!fi!Lb3Dj!78<&@l_?usfEenvQ|o=-kXv9N zUQA|nM%g}7jmk^%T~N5W!ktq?7Yv(B%hn&wS&Dpq~kx45PXwMu#h=T0+lj0|q#g&WHiHxOp&`^OwAbmB3EqW{=K? z;UJc1bUzo~Y!@+&0hR9gWNtN}6n!&;nSj zjDN)e1nZ?eq}SO(3ouB$?NCwda*OtOJ?%Gyqf5N;@!%=|8hOQYajE+h9L6}30i-}V zpwa%GqI6WcNG|Y%3Q{Pb#B3rqwG*n_NdbMiBby&WfHvr3LFGCCby4af{FEs3Hijw0 z=UebutwxVVKU08$5p0B97?j$(Uma#vsoDx_FmK|h18&FF%mUJS3tbT#{)GXya%x); z%R;;72BS+h^;0@s7-IcTeKd6D6SCaf6p;(T?R%hz>5k5!D+anh8>@AJ9Jh=m{AAzM zm!1QF#-gv@wLy9nBL9n(lJ{V|TY!T5>Ue$PtlRZ0b{y zksAjnI@Q%>jzmm)oRrzmHaM9UQ_W9^yb&wtH|y{|tKeHyXcXdOEVy#i>OwMv{~nUn zx(u9Bbr82$yMBYqj!b897rUE)3*A{e^hirA51E9V1p^(?t$v9>`Hp1YeR%BXWraRE z!c<3czw^GPv@4T-=hEHLK5r`d?R$4t8Z~CQ-k}|! zp76@C4VVeYvil3loqt{Ib5XlC|^#!Oojb%PReU-(igiB*%-S0Nd3wV zA@p$h4!qHuiR~n%iM-*1F4%=~NeO-@U`hBr3@83&7;5~`Q85Y+uyxnW9jZlO2=PH& ziTiueO7<|+;i5H5{2kG@cNOW2hUj(y(+M9-$VDoI$${@>-K@-D@NJ6#$}kB)-dI0V z`?zp`A4jO5SA4Ortiv^*EJr1Fv^_NNp+nr)E^XlKI?^OL{H||LSxw5{)7z6ZGeTTq z*zlj>D}Y&zO8>~X>i|-ZuTm!o5@AQRuGkF8f(xa1OSwt#$62Fi3*G+B9sq*=$$`Zy zSM;64z8!pHprdPS>NtLkWn{(qHRBqf?pUPuK0cG_tBzG`mnLPvtGrF*nT`t&W&#-t zI@(5!8VLb12j@lvwB~qCV`TdK1la_t_G;?_cMLpg`pGYeIDsp3z^i~q{$dCpflw=Y zQw)}oN4pNT-29?3k2m|3iI#|j^tq&HQQOfj+x8DZ&pbEX+(VZUeYripc#j-cLEZ#`gT3lAgcY6DK7C zka_h2t;kCjK|TIh`9~#3y8OwM0RVJ$H?LK>6^TO--%6+?mXx~ zidd94Y0<-;A;+d8O^}kaaUH0SiHM_9#Gbkyh=HZWMDt8aA5CSFVbEDcSWQR_jtvpA zTD~{cox~##M5a}(OO*`j4k;6#&wfmxAR}F>Fc$=Xl;ixUEjjV0V?$lEk9;)|ro;2b zL+wsLmG8b@WpNfiY{7y1F&iVpM27D|;@AbGLy+Vwirw8*Ji3H;_ra<$#{;ZbTYDfC zXgOc|2zoX4cn=OhD6A-{3|h6dcDzCvPABGT_i$B|bfO{sm%s1M>XHO@|d@$Ct|?tyTTZ|hY}P~~ZHlU+ ztl3G>*tpSDX%R)TaoI-k!uto~6!Fa$-v6X*@OEszB9KU8iK_oTrCzA7Kl;BIYTq5X ziWtJ(60n5BUx}ast!EKB-11w|LMcnZS6(1f#5W+iS3bfn9!6$ldydEfd^!x$id|E#WvUWD=)*r@)1yl&02Z5o zU9h4bHyr*e`z7r|_@{Ev zxFfmYjA2nbO7J7;y%Wh)Kx3e|&xK^iDSZ+G;K0d3MtqzMm60|ef%Pha>9+lBgJ-E< ztS5DrTL=Z5dtsO}pG%c+@gB*a2D`SPEs#9*kNi+sa(c-&0vdLh$M)^B(_0y-bE)=O z1|H}s6zBo(imCf!h6x0z7tnR{?NMA%itC|Zw732bSimJ?7kPTBZ^v0(d%!d_1b!$*Ph|${3gt;xmnD#3xY%8OL_7=VrP35Pe;QF%y(z-&(ieUpKpl{2m zhZY1}Uuo+!3dh*n=ClaqGE`;P#N@xJ*lZsMaTR}%1#E1j2SWn?no({N?dGiz1-wr3 zUk~7KD|SUuOy|D3VR>bW*47R&ppVascC`NZy*Vh#S6*+s8avYLwEr91Wo6HOnQ?wI z8>SmHs_ORx$^va-4o(w#Q>OF3k+BZK`XO_&L>XY6txpZGD{{8hsX5gj%k^hhI}!!e ze&}Z!;JZE+swMNamvfVy`SjQHw~%KMcmdpAfJv}myhLej>8-RLZed)HB9DgV`X}mX zv!B!EwG&YJgBlE>ElB$O5>dYo(mh| z0JOrSL0ZHfl4VA9eHI*vX&Y*%3-qR`Ljm?ZTgEB1z-d-;|Ag8I9}U4nFipJW<5mp8 zbYx6e4k2Ex>$72x;7d6Yo1__$2(7Q2O6jBZuG_B_VV;(+Oc6yd>wxq-V2EnMy|-^4 z_q(Rn>}dc|(#4)chWR}Zi8XbL{e48Jx#WqZ@d~!&g6k681P2`0Cg4s|)WLmr^yr+W zOS_kZUSm5{f$j6kK2Wi-M`e8(KTlr|uI?Q*t>txFyh^N3y#$BSKED0|V{-T4LuTCh z&gg@Y`LZlxS6zCger|d=*6QkT4KKzkgQN7uu%ZYY$Ffxg3OxS614{7#rcLjP5%Jk8 zJ1j17CZRq+TJ22v0fU6J6nwfxUNwUG6YI_^bAEx=-py6yVja_g)=aWgc4(V{v%GUq z#_pmqDy0hd0L5aLW%+$8(JEP1hiv9+A&yb;+W#Rvth!4a`!b3!h=nYZm)CwmHRsav z_x}l3G_#5MaOx|W{jQM~i#QR!^5eut&??e2)Pw$PE({?p(UbNi$V8>;qonG&(?l}w zf_K7eJ6iO1+2fK|IZ5VX=KhN92RpGCa4edSycsYVxSiRjOIjuMkn;FC5eF!bfzM-U zI^kO0-+XYu?dj!l#`dP~UJ<@CoEBe;d!hI*nYZ1wfKhbb|NWDK zg1RNosIc=OcXffTWI`Rv80>#w39zh6!+~#-W$Oc^y=(BjbKlab|Ll8`6I*x(!?(|| z%TXIXG%#mjTfaEw(d_U%cWHBpFr>x%!pkyk@Qbz36O%!RTxRRc(F4hn{ls7_! z9g;B2G0ap#&fR&EA;G4Se~3@JYwPzw1k$8c$e@7|?y49E%hAK|IM0Drl@gNpD&Jt& z$FZe$%}#p4$UwC)#0xpaSuCZ*WvzTGz4sA6VAR=?X3B zwL*C#>(u$BT$_wYX$Lbw&N_wT+IxNHFUC>;B>8p)bH0Fxv*{m3f|Du&XydodemJ7b z@@y|;WIqj;vo)&Y?^kFo!uos+Ravunw#vO5bD+LmasX^-(MtX`n zdK45b5oY8m?5z?sNg^O0mC7bhmJa*yOSs|;)|O-sL1kwqN^jU`Z2mkJ+O0{_1xmV1 zu1>xBdldK5WI~3w%Ik|Y;RGftG*(NU@JQL=lxv^uve-+cAnL9$zBT^gib!n z;KUG}p)!M$euPu+Vq=B$h)M3PwK(iS$y+p&y?9z_q|qvadtXu$Qe8@1=w@tE9VB;E z`QY7EuT_B^6>8Ak7YldBzC2^hlRIpRP4T{K86XxR>+zYaG?qkRBftNUPeH=+1^*f5 z#AAzzp=by3JpT%(SM>h-0qX`$#^%Ii<_C4mugYjf6l87=y%%x92vv#G+1D$i-VDqg;*3AexK7ftPz?!IjEI-kR@V(<;&c3hfA}l+ zJFtDquF(b661phX_LTR5R}TtP+lHV22c&M{&!5moiFoHBKkNFQ4s<`lRD}c z^s(M;>Rr7?j%t+|7t_}a-0xYgg{h1{EhI4K!;n&nUR`(1)X%z=N0LSE2I;e4ZOMWC zYhV%PwelQgUoPQn`n~bJ%wV7DIzS@bwLfOgP&=(xqg72d>1yXNI)W`c|I~;K6<4Hz z8z>t2{Y6UnxS#=A53gRtY9B}Od?WE(<*`D)@v1!KY7;;Kv?!q0tF`baj{3JTfQ?G6 zLs|ueY1-t(^qYdYLWH|1=US{G-q~~-i>}CgF+Q{d1S_#pYRV1GKQ;|m+wl?VQkz9aZ z^6fXG5nzPLS5hYAC$I~sHSsw7UVMyvDSt4R;3%5LbBEJ5x0pV(z{8vlp|TVLzXk;O zep@r)t$Ed!aOOH2*zG3#;}5IKr+2DEbr;Nqzn*-O^~A8U|+&MO^~fM5H_w~ zC16;h3i6kPF<>UW|Ai;|7?l|=$NA(T zyV(8`Jt)ErKpfV~bN1`r)w^gm9RRT$buF=vOX8m{hL=}YgKe#}6{QiWcSS+RRQ8Om zEH^B~1^7QSYDhPxuEsAIU6=i5MtF9U+2IzhjXbG-6Z{c!JM}x+mS7Y>CIVS8n7Cuo zHdc{vmTi+!xYL4J7pemoj~DjjmvN7+#2v4k%u9k-gn}UyIh%ki+hCw5z!Wg5{OllXz~hi(r~FsZ0^JNEf!I;%8G=+CbiBz;Rq|o$ z3>raYAK@HJlb9cPI%MBcv0Hc|Y8n#~MjX+kTlo;oy)WQ+Y|87&7nHtOZh?@{IC2VS zju#G+8LkFMalgn(#|K|cMTI|nz#uc48J32p7(UVU%`igaYA*=huAgLji@zSAVZiV*o2m3pb5C`yWh?0oJpvE3h=ZiqXdK ze*xZfOLr!;-l9w4imY{G7{kg7E5-!OL4!&RIHR=0+F2?Y@RN^&i>zXhO|X+&7Gmuw z4?kuD>FHUSx^p;gx8cf)XM$jx*Zm6yF2oYnN0r}-f+BL9cnN{uwUlTvb1| zu$FWoXca5eMT41h-=}3WZ2PDXNX0J&t0q~kB;l%dt+s=?)#3^xcHN+2-_JT zO^cZwoc9#)c&T^B_%T@i#3ZM$f!%3SPeL>mqY;X=Y*28h`5QqoPH7f+Tm(tDo0I$*Hw4u9n?mbc*|HxFiTgEN?6=T`EJ|nuYqa{LeN!O=^4O? zqv{P!2|P;6^oMHK&P6b9z2BdJ$gmq<@_V+w+M|DWVoH6hV{RiOf*boHGu8-l_HrH6 z9MbAv)T8^Pm7_#e73{;@*XnPGA>KOgWefcIpg<4=)omD*5!+d8pp8k7S=EZPTJLTx z27nD9#T<7nqXCn^xIh+yUi^$7zJ;^7mnmVgf#+miE~Y6rQ)rez=!6p>7H7=YVLY`u z3N&8IFvRF;7>)B*|6<>!altJOif=~w%|tae+1rr6+-N|3x2g-)e6lbJ;^9spK&as0 z;ul&}GMoK6kkD?uh6a;9%p>$ZOggzbbX`|Sj}?%juKWZOB$1gzZl+q2KdYy1ymJ3pwdgZ6a5=8)b3kTTLQiT1_uZ3Vr2LPx=rYH=00jE^lRi>8;V zRz1Td=+gwanDLlMXAa9US|VfEFPG?-7%e!Cj!M3D5nDf>N9=TdK$J3wZ2cA#wr`nN zfX7B-$`(3dWrzm@EiwJg-8N zbp+U`N@?zGIY(zNNB^PKjFNv3;U%XzOC=GmRe{PDWg+1`HgB(2AnKAh%^-Jy;!3_B=Xo)fz+U@^@Q@2 zt3BMJ+&h})6$f82j72@=KQUnUZ7)xns&u?Ww$G6TE99~o< zDpn*9a%TVeDPPwH_skB?V+EkLQ5U=EU@YWx+l|0TC=Wse4!F%9&>E zXwsPhLE^!z_h+qs!tChs6{bQK+5fe?hr5}5A%2TDtO@>05^}A)8e3}mjBo?MsuPVy z?;fvN{rpDcQv&K zl&(v?p7f<|loX0)h13}d(y%%6R;TGp4iH*l(4}UH>bIT^vH$g-MLzQ4>p33iECSfy z%HY%scYVVyZra~-;;J^4K~{z&c(q-@8S==vlU-EoQ#}hpd z^n{A$fD3^r%1aM=#uoujPkcZaR2orE21y(=YnZGH)|+Y$;T5m&x!a%#KDSkD_0+KP zR3=Hne*7vS1rl*^*mD}AID(TA=pdbe}J?@{g_3xd0Y+o8n#t?*}b18&6roqTQ-G1rm9vvJZAJf@X#C94|K zT{#c|L?#~)ED~W%V+s5Uw#@r#y7ADuOqBUIOSx28z-z4(I$?Dnr`A zDghHf5Eb`CBzXWF$#)OXOZwDGPvU~g4jRjUzz?_xo(*p8CjO~Y;TwW@F(kTg{IixGC+LJ7Wg7DU` zMs8p!m6PD)+A$IGYL5)mr^+2n0j%apm9TtYCEWg&d7z-JN@UG+tkx#OrH_j@ZornT zk=P|Y=t&CU(_7m&h+LxPWiR-=nDT=MD?%%4C{hGx{e3!l5KCsYxuQ%$56(F;#c<_r zm$8&g@2cA{6n~igQj1T?s~iV>qwE;!D5=JYY&d8ty9UEM#m}Qd?9i=KW_`aPjR&|G z{2c`SKzvL-XVt!npvThP`T~i8$$Q`DisCGz-Xe&!@M#MB0PNd?gthE`Kin*$5HpJ% z7FAg`Dl*p2e#kOVo8iC5uMcb&E_|!dvNchl*!xo@meuqVe%dI)e=@M`?O6|Fe8|I^ zDyIRSgU!(oh@ai0vm9D~UCfJ}&~Fr?X)rlITgU+;>J;{bQ1!CfOj`XnH=b{35gZbd zcqzgk9dGky36Nuek}{Mt%F6qkrl~$0eniiOgP8Z`)5|OUu z-q@2E!*rYSPl?ZBTKwudzcdiL(R@H&9wwkeML&&$D3#!JQ?>>9ox6;C8`w(vkua%@ zfmGB3>6&k%J>Uq3O%*ib+J_A!P{)zG1F0@;3{D0jn#njsIyQ7^t>afGm%K?8rNM|V z7r8@lA>|;Av!yV4G=MZ>6G#8aUqKrFCZd;!L_M^+J0z)oM6wq58T6EPU@ANmNBLC^ zB3X2m19JnnQZ>&xSdBa8QD370<%~G(FCx9>;|3ezwGgu~!^WLZ?!k^$-{m6LlV`JUdMz5XHKqHY1PvogRZ#d7WEaFWoAB<6 zJ6jaD!A&EnI$QySTE^FeH&pQ64PcA4A4b|U2k`?lnjZql?$Lbsv`TgZjNM*1E{rc*oOF`s0krekxC{ zSbW7&^Cud`5mM0dze@v;sX|9dOlGYk9(hVGaCPF6BlWDB>_FJJHVI6+q(9zNa2EXf z?5IixCJ8dOUOP7U-YImMV}F(@y{(lep$R6~fXz3t$NJeXKk_8^Go5pOaZrd2t1%A< zWNT4kh3{sR1QD0{24QEQ{-kt-$yvYZ6;<_mCEDUoVLN|h96n2BMLytCMPPLk>#p%? znZ!bl=QtjF;^OBr4H6ZJ9%H43F!n!4nI)2rntf7pai&AH!^UfjNAjPyr(;A9tB1k$ zYFOM6?1-gk%tS`^#!E_q*k*dd3Q0I#j|O|L5oZPw8y||B>&V~*q=X#R(*5vYkmsn! z*E3fT!{oTDR%oc9HbtX2#C*^Hn6^(;RM`G@2)}o#d`My&h8iGx@P-Tb9i#-Xu=cRn zKKOMOO$bu;Z%c|iXLH#{H3B6J8n6dz&kW6iXNcy(ESa9|GyiH6! za~E}UbAFoTKxjpqpVjUKyM4z9)rn(L}~NKgY(Q=mOM zyuBBYSw56TtU@lt5CYYAREA@e9iupVgBU~O)@ganG|Zvy`3c1NqADgzbW;&Y%%$0;Uc1h~zg=R$lgU{LM$ z^hVmn3HE_0SN6HG10L;@lbkrANj9h|=6lvlf<>pT?MT)Yj(cEK&{)A`4{ z!B4LLK!u_#-Ft6MMsR8qbgunp_-FYgY(H*_l))xB(jDfDZP9(C2n<9%p zJXI;dLU4izcWuRvM#iBRZ!hmX5;jSm(M_yHZBWBanFFRGy46CnCvKeU$hx@H^Rd@i zD1}wmW2L1|bi&-02O{SSq?<}sm-VA;F9lJN121qBx+BkIzsYzsPd^9cf>e{<1>)Tf z`LDQU;oYwW#3`)G16-@H)|vdKKkt)ke(pZTFljHkW53CMtiBK!Oh03USG%KCXLZuqPxonIfYpu zBp28?`Kq0@y+|%O!t|9=9B3JSPo%c;dEg9S_>6fFXz@BC8()D>Y?9FlVu>}AxZ9dr z1~U|7m{CC1Y~kyU3x~?xktHSBBvq|y@wC=k_94lexQ=+T`?F_?E>C{QB}CRU@kDm} zTtwRODo2UApX%NkpEtV_*g^oL7Eo^r`WvJuGOB`f&zyYLF@6x~nW-!5*G1MCK;S#0 zmo5B?236mZT&22lINyC;lYAKS6|AJPmi*UDb=G<$f%lX;p5bL(u6C|Ek%vu`xw|q; zyQg|1bPU997FNQec@H#cWRhS<-@L!;*4tYO!{w*tm^)ZV zRw=v)nSgfi6}E>OwCJnYv(xL%S-(FEO?zDkY(gAmC1MlKcWqb^Gp<>2IH{Unjw-t) zay5C`fF;Cgjm>=aB=ayKRcfR@ozd?6fYk8Y*tW9XCkIGJZQh*uLxV(KhXN^~-9&Iui*h9Lk&$pPY z!Z(`%CGl-&I$=b#6T=Pt@rQ0Ue(7|;H@AEdiBIez4{R|W?94|NkNt&=p$j?$ZJn(W zPJEYsKH=bMhuReYv>NrHJ+KwW8AyBugYm#AC#kN(q2$oA3KgI7P<^PZSYOv7ApVnj zPB2zgvJ31-Qf7xLzVgL9BN%m1zK|5pu0c9+N&i*r^^Z)u&6vNM%PmiZIo}&P*LT*$ zyh6l@2>G&b!~NLNS5Qrk_53GD_=`G43eDOq)oLWmyyF`gT4yMV~|!{xQBr|wiQ#D)gzP2m$^JX~4OD-6$9oWkn;etn zC-nQ9yiu`X-Y*(iVJ#RBz{F1U9syRD@mtl1Fuzp0I5puc2;cPtpT3>D z7K!1JVY=G`pBLV=uh11$j$Vr2s&;YygXP_Ycvrq5*if3+Eym>S?#n=!|FF0xz)|x^ z<2(uL87vEDLvq%x3K@dObQQ+o#=y1_-+91_J0B%mKr|^}C&H_Em(rk&)OrBTcH4t5 zWhHeYS(@^tu!f;Swr27cS zQA~q80}!;Ptb3>fWrYPPrDRnNrF*lV^YI5#=;>+l!80 zFawr1-MhK#JMe`#?fUVO<3wjacU+d`XWn(mt0Pbd96(}u=zk`hgy^BPEA1%Jw*gxkp-ahmcD3!I%BS+Xr*c$rbR}m~AO1 zUq6+-QMZrzb z`exWq=*vm5iGGTt#_oX7ftLNVy()6!ict*&BVLWy$B?{`@|P7Shs0W>Y^vGxbe~Nv zhRA_{HPYkcEg1OkkLMX|6JqSxbjD5OQeTA9IT2Qwt#5HC1gOiCusW}X6`3WG6bH1g zESi>D9Z8My!u(tgM-`&MDN%VB^wJ~4ef9QkU-w)k!bnz7vwef(Isq(#xowg^pW}o@ zB;lABK@hS5b}L^><``ZWFq!eGJeYTP>|*F--_$%)f|2xlif`&ch>QQEHUHjKae=UE zcbLVzJ&R4WE`5L=-tb(Sr=Sr&>5;bZX$LlRKuiMhKj7%o6)R$p)O1r$w^Vg^6OFKsKBq9 z5dm0g0=*nrXmy?>cd#&YFC@efeg~^&*dVvthM$F5{=-XiWR4tn4Evc~$$e%SNh^SM zwD+W|BdFfI%cU)2sj>>ZYPtk@mrWy~o5lBvxuA~REdl)=#lkO3~b z=kL1~Bws^`11RG5RyKDg17(?Tpx#|2!`Jx!3Gq^%W&@Tik276|z?oV(af~PjX%@Zy z^CxOMp_pHUJg*ikjlXc58^}Y5XnhL}NZKXVX2^9CW*;@@r@=1RcDwjMQRgZHGOE@r z3)xmv3aL?nR&t;& zLP7)6(c=wF--PP0a|t82e08UX?UzBl^j`oRK6?L9IGx=>#KVQX<_pV2vzm2ynxye3 z1s=M!N5-|%%c+7P(==Z*h~@_1h6@*rrCr4-&U-+XrSHD6NU7s?AU0i#9zuBi0R=eQ zEScxCxnxo4*npUF7d3IDD zx05H@c5@HvaDZr6&Ue&fGqa_V!|3kJ`dy&3$RyaWBV#%r0Q9ccWF9j$5Q6DSsGmV4 z7cHQ#=-n0u;zllD75uks-+ft_LLW0A*3(9&0t?7&ozhyTF@GClIKf=1^qausD_c(@e^LG zwT9VQ_SUdwoz=4$=>rW8IUfOGLsGboy0J-5gYmQoRcL&J=xrQLyZ=1M=ca3DJ8Ved zYx46w%Gc7%ZnCNhSbs>@idnF^f!4j7W*b~&UMuX%{!M7n0X&5QGCq9!|Ar}K35N4$ z5CO95{sE$u1?|x&31tH?I+bfM61!mn*cML;61P+WnnwmB)1TIS6SlYd@XbAzC#|r} z@_tO)-ZaZ3UQD3g*CD%-)u@Y-;dG9&j|OmJWQ`+4KjjieVJ9mgntr|TYdJO2``To@ zpll7h6wG_XrZuRU(a(3Uo!o^J<<%jm2mwV&Y}pcmdC%WQN=$^@%UIQ35cQgCXL9$z z)?ZW(?mJy+Gm%=%eSmtsiI31oqK^a|57d!QxKcp^2|_V*11Hn8WKPP1e+P_FasVyx z=he(T0#mNaqzK`pYRCGDF6`SeYQOX=1`J^J{<1shG(ZhUkii%18Si`z7Y^YbwnduL z?I~0*EuryAle3d33BKStViURL1oWc(A%^_auloF-w=G0UMO~e_FQ^*ar5s;B&ii_8 zB-+e!gl`{5b3LGBS1LO2T}zN!rDzm?rtkM~M98aKh3AYeJ`lcZhMcQ1(8A_kAv`;X zmIqD|{Y5_+3%yNW;@h@$mN|Y)-dhos&K*#twq>fGxF#c1a}4 zrVAiGT5=UOz)YsfM7Q9^4~N+4hCV-+j9jH_diM{Rzga0GQ@Ua3uZZ%v6V1K)SAV3z)P3Y`C0`xBFn@ye6fSxMBZD*0U>i{6Bm7N_yg4XXcRf z1rmJF&0rL;gKzsls}x3xsWtCLr=J&y@M?NstODGzCnhKskukG?r`(Hj44ueVGC&9W zXr}7H1`QzrxBqX; z@Wht!@Tmb#xo9u;UU)Zu=eZ#^?Q^u`!e4 z0il&Q?4v|ZOwF!q=gQ0d`&lpE!U+J=Bf>lS_CE_+9|#JJi`1(girqIY|Mih=ZAecj z<7p@WbiR}{e~?!#Y_`Gtq<_RQElmI$8Zm^euP#3b0NS-T~Acdcp} z$k|5xtX-(%>Ka#gN_+2r=Cu z-0AK85pD$3@^X)!HW7R_C?JQJ&(PneVxbtp1qNFEeqebZtn!zlSd7%!IBmr~Zr5g- zZUvo+MV<7&nHAUTKu}P-HEL3jpwVoU%Vt%bJPp9RB$7ssE_rOTgLOaPD|GU6`7RQa zFU(QI0+XYC6|tw#u@7U+w@8YuYQV!FE?&!P1(Ck{4x5L^Q)C14@}^SZ(aYH=-4%$g zzg5Ac%y455(|&_AIK_`05HHWQ?3k2eCQhv#$0w9^$@&K$#zA#Y2xRl5iQ}HuJHbN8 z0{m=|F@3pro}?(&yc>Q^VjxvaLRk4&M(J8XRI8aGLIN$xtS@5n5LdQk3D4}8dw){|qdUMepTQAoJ%z^l6l9;ab2TkpAM{U};$X?YPr%zu{^!0}mi5!qBwFWX?L| zdR5igVzGoJm=_sKYvGi5Ui7g$){0kwjEh#H1M&hoNveT|fJpQ&l8V*U$8zTEmU($A zWKTRq)beQ4V6gmFAcA!>u<*3fE%-Z;jDj+`%MH1+@dr_XCD4*r{PP>&yCXiRe~4s$ z#t^*EpqnZNvxTmh&6u%B%8@u3y<^YDr6;VX^KP+i#h?gO#5ovaxz1Qfnq+d5ZTR}* z+MSJ$;h(BV4%~F#i^KZCM`G!&NRay8vdZqUPl;f zcTi2+1f!#1-`yr0^l5SlB)$2{r^m!Qn^sn|G2FaIr8b4zgbX(Dt?&0dn#k$_fW^zoTA`_fwCQ%N~q3cE{}RGz)tMO8Gj7)zt8 z&1q^rCKG6z-S0?~@oJnX0<@Bq5wfG|)Mj85kqFyb-j<^wU@2GGSW_JE23loYDpu1V z1@~*`$7RntNHkLngo`CR=g=>&xb2dQUCB2U zO681LZQ>@Vv~JqZZeCQEDY`qFfdxur48JISlhqgq=a;hNoQBJaM}W+k2@EFxgid&x zdP6>isdZg(SlAp{lPL9{dAoOEm7M!ZdZD~ja}x%t_0M9seL}gYDQP63ZD9HvpUvhZ zl)%Mr=_niridf%bH`@$78}l6$Bu#6O6r5yJBCg}9$c)Vh0#%)bhyRxPcEw#BWmY}D zr`*9+A!eP7xZR_jl?eq(t(cS^`@7~3R;>pXN?=xx`B3=O{oU(`fR3Tn^QJ88-2Wn@ zr};q$RJWX^I<9%KOh{EZ$M}?D*04|&WdlALXnwe|@#+jRHtIRff_WA&0LJ1K)KLtB z`$(~)_fZ#`&I%R;l~RYMB4f9_C7{K5+>Ykg{sO%}ga)k!%CcTAdL^5&ZOsGP4eRP|%{AVuHkZKC zUdX1Nh%s^a%#-TF&{RTlS&>ljHXitF=Sn0c^cZNQQ zjk=2gk+Lcs1?RHMKq;MkJttapWc7VmC7uq2YL5@J*$qCJQ)`yszkvFn6)Zi-w%713 z4NplT)U6?EjDD61a@T$9476+4B}5!1P|{Zso_?5LTX1C0GFnCUCMmG*pb**^&35)S zz2on*kTFQ_7I^;M03{43C~acFX$pd=eOxhPL?6`nf%j20Q5K}<0`eFda~4IM=cua! z{m5D?knX7481-)r$+g^p9wb=y1bhR^s}ycFXh$qoETRnrML-(T(nTi&4L1Q~m*eS( z6zuf<2NwyoFh_K(#g4l$y7>li@r_(2x*~5H0e*go3UHb!&tCB!SB^cxcT0?nRkf_M z7vL{Ye+1`V7@|kbg72L_RQ>nc9BbF@zqGjzx9{`}qfH{Dufv%$h}=BUaP2v<)dPb9 zdv~rsgPRsqN)aA?Uf$g*STbCz6P9a$iHixFi_FT+@JxoNsdJWSaD}-FN$5~l?cpq_ zd*4k@mVEZUvP?Y%3=AM3@X(3N*VfRVXA&;3-k1ywr&l=DVHkk9O{&tyMDMqP&(TWA zeC#`>OeG1=sipFG&|<$8CC%Z__lIU4t1M}CI114xZxRVf#!wHf*gu1s=m|mxvv&9A zW=*-w1O|iH@}q3i;bM7S@Fk*$(KO`$w)hny)T(>^i>HYA{@@9x7E^{5O)JG}xW4OV z`;$~87rm5#>d5QLHM@^V+qSY+p#F|)-iDSo++4y;ILrK@xA6V9x(0B4OfOOWlSs6q zd10B!eCVn&jN1&IHrs$+vV`pR-uiDJzJj6i$qC(T9d;SYcTA=RL`2~(zqm;fO#eR~ZQtF)EmM@D z{)mX~Jyas46%Y`z0_bn&>jg|eP(|O|zm#tBN=L2-95;WpDpsZ?O$Tqc=^DV{`rnrY zZ@s^+UyHz&SVlv3`n};{t$bH&lf)MJ?#g<`!VG3{*_|jL+kkacCADlR%2&LS-Gqvd z=o@A3O(EbB%gOfMMMKBo74Udi;seK?K*w=0`PpWy=)_RD_=Lq=PC9fN6x z4sj%Xfg9xLy!;SX?)0w61jav=ZsvF6< z1iz(YTBEV2MPQZai; z5B=z7f9HsJPsExkNsK!`m4Y&))KwWlFU^-;H&4;F?=beAtoTswx{CM&pZtvxf#|#p zkH|iiW+h)+AIM-mxlh2pF?29i@Z+)hLyJ`q-07-vGuwV0c@t*}8HRmjwBCr(I59cm~alqwgnGuB`{2rgwALt2tK2nvEjo6TWQ*2ZUk zb15zH{o?kSu8Z&9)U zIB^^Nw_O!zAkUkL z4qtY3vueqnTQk(niThYhny*ap^CWDDij{s$+S9}jK@JxwQTaxYW|u4~P+xf1v-{Nc z73b*Kkz`o*Gj+(&Hi-49alf;iI_-iyU)Bje6Q*^RsQA#yI3N~K>a?XYI~AKpi+CO&}!Rvgo% z3}CMmD?TdwpZVe@Te4R|w@OmIosT)=54vy|3yG@_4f1xMBGe|9Ze*g9@_)>~7(`q2 z_}5%glX;-$@f2ZJw&%Dd!S5Nazax6Bb4Um$|#fdZ16lM*{Y%Jl5 z?Y@u%RzBSoe4>^m%J5dz3aT#M}KT!E_tTt|N+)isFzO^me z3gdX>{U#Ohd^9d_H_`;;wb^?c2jx+IX$7u)rC-lL40;)lm$D}~w?4^6Fk3rniLx1D zXM*6(JqoN-(%;anp7>O3B}xCu^&;Q*rBHuXKHXLZ1dh3kk@7qIs_gR*UB0iWJJemq&4BxB{Tg^( z2uZkg1P${|xd>CrVB6fqZBJkpFh_fer%e!h_p14~)wTj9xwPYn{nTXznQ_cx6zJxy90%9)efBl0eRYmwrYb>zJ~k`nP=CChYE>;WC_ z7$ko36hH+3Dd@r`h$q5PK<@^Nm~5fGQQmALgk%)6cf1i|Svz%K-z>fJ>ZrS% z%s|utbEg;dx^mb`lPcIJn}YN3fSkm;@1YHBP@~=A)`v_4`%?)PH4sp zZxKw2Z zUv7wkP}xJ=1t z1N+IG!u}9FIJ|N$PRt_xSEioKbZc^$+(Q#TlFPa1IqA$y1}(sugsj?38jXG!dd3J5 z6RYRZw8yqJ%QozKTK*{=q3RI|0{Fm+Jq#88mLpTh_Y+{!WsMwrIvMU6iW_-Hla)xiNZJ}ZInwht)4TBAa z$F*ITijH;;aFn@=WvQg!c%O%FGek;vag~rf%}hID2XN1iLK^Q~77sjw`x?kFb9{{c zmZ@dT*M6oj1+TvP7yS3!bv~VYAL+k~so_b(`(gM=7B4V z4c!K699M?pdC?b0uV}fOT&7BnyJV19`Y^@arRrHejQADE4gq5zyA%%ynrVUD__MZD z)Pz`S1@`Z|(0~kBV9Y2Yxxqx%6;j}D_1%aJc>&a7p)b*=WtK27 z4k->@6WCN{=^!0gkal58e2Blv_Jm-!=*G#5WR16UrDxzrMJ!e^1FhMcMd!rE!BLB_ zQYYPlMSyHJzW3_a-ka9Tp$BYWLTudiEk7jZ@LHy%y(;sGAuN!+^!#O&}XLk909Ze79tqIq^2 zlmqc_It%MN0cd^yr#%?uxcn9@_W6o&=qA->Jbw%|FSLixe}Ip??R^5J+tAlgV1`%7yc3KFp; z*$=JDSYT7c+9!LY188i0*ufvVDpRu+{%R7<(|dKqawvy(PC^?Z^3i5~bck!rqfHkR zl5)q8g0KR-p^njMz|IY5BxN>Zhwz9r4*b?}g+PFQAES#C`6dYW{cel{#nxV#D$3eqDPzxIhN6s}G&}r4ET`3qb{Dhna&LHYg`4S*`zwP7xRlNT>?9wO0n>>j^YJ`B_621F$iogaggFaFDPlj(LwE z7bXR2ZVik&>=nXB+TNOs<0gySLg5)W7wl8YB=i?$JQ-)@aWSL$pz4;{jU7(1d*JUH_S9j8pK zVHrHDK=dw~NGQ5q8onL`B5quFso%(u$9H$91OwBWi6tuGl>g|m0z~AoU8{4Nw3$sE z$uS-4VO;4Z!)9B0_t?i=8aJCE3GpQsYSt|yJqZzI8sftH@Oc4u^%9K&+l#`hfclFF zW%lZ#vBx1c3t-d0NNYF88(Y+U*99d5_kN@=v$<*`%`Q8-HTScisw*0-uBq-Fc2#T% z8-5{1KQ>ZTo!Enjc-_QEH^M@5=}QYPHsV(R|4jP%WDLgl;(Y4K+bnm9$pCU%PHI?9 z@N#UvglJgZ9LnfNW=*x!XhSi9OWRToWJy`VLdSG&tpZ|9x2=!i)myGxX9{nPtz)?_ zRpAW(vE=g| z#>vq7gCD$iD3R@$_DU8Q%-m9uTy=O&IkQk&AP@#bkDLBsW|Zjy-dThTKJ`9_`?(aht)>@N(PR6e04QMJ*G+|K`ew z;S+<<` z(lH=%nP4tVWvBHSg+m#!SEW5MS(VW3ChNAd%Xe`FR<1l{>fC4YBC?Q%8hZHCvNJz& z!3If?Uo8)%Ay$>TML>a!A~5h$=4Q!ML})<|GpVkHSZL(D6p_p5fMDd#KfJ(lp*xvA z2}ABM)%FqTU$rBCwtjeqN2c2geCvtgfbC8*J9*W?>FhVc)*@`Wptqn2IDFufHKxcK z(B`vt{OuFAYrOC$T>UYf7wOp;FupCNl9pj*hi6**ZZmc*eZY0$=0N<3DV5z*&;3-R zn8bcf2B&*UeXv>25!Rfpk!(~yoa2LcdNi&TdeagW{?xsxFhn!XSq50#P;^Q`{kBK%m86?FSL_i>B?Dge>$FBt(&#mt zlNV#foJTYdq=4^?FUP;6(N@)-4!0bJ)fLD#-xwJy(u(c7*jCCXJ)@?Yo!Q|rI?}=> zLOg-`dt=h1l;1oJ<4ehi{qUlmeHx&-pJ4tTD8A( z4Ej=pJAt~6@%Kw zCx`YjU`#=5Y+R;9zIr~;LT}J(0Be`S&ep9NGv%17e=j@BrUVSz4Rc9Dbw*bH zhT2+vJfUhx37YY9B$OTm)Ycy`H}e$t1n(}}A1-lV5{mFLS*gsTdvh6faE>Lp4R5|h z)r2d&%$t&3!xTnA0d4Axiniv0>C=q-A{9IFVSo|mvjZE(1OIxgkrxXgNe8F>Dq6|z z$&OJ=d2F}G)I=)*eR9A@=T{`6bdjbrrmFdEGT92NGpG2$mA8IpX z(-6d<$o}=k;C3$wljZsC21TxL-W{GO^|`v=^ce~PDxZRvYCVQMMaqzm4=KD+m_yPG zn~aC9(vK$JH~}%`6{Ssbc-^LQv4}1_h-ps()|2CW!6_Knst2p5SF6d55S~}l&aAV8c}s* z$&EW9CN7mY_BY-u%bICcPq{ zMH?+1VK69wuoE$^F=ao)Bwo=OG}eEHSE)*&2B;G#EHO!@Laa6l(L5udUXcR&gov&e zb>djSagu}3B1PrL*+ZD+gOEyoxcX~(jrAK;yPv(N0-KA_?$iegBv)6&*^c~}cGqLx zwAkNh7H{^5TOY8B>L~2@1XwVO=IT%g%lBBXiro zNQBlI`N^QJTd1L!{J;U3`k3cZzCOGQ{ND8TvbQ%z`|_QjZI5 z)NDZ6?_2U5T(oI!?BR5>tZ-Oy1#EyyHrwJkZRx9KM$AfyAE}=1T|Y3=9pB;dtC2a{ zoEN3EMy5`-2eB}#xsNQ6!lU}qqANgCE-)9!z-I~e-4>%F-Gea?1l*;m(@6Dzn*zk@tPh>> zJr6~XY@gr2D*_aN(CXVonZG&YH|*z}m`ZEpYZ#2o&a9tiA?7k-0-?8+5-NZ^Yd=6n zD+bN4bbvqKll&UfaV@J_KN6wh0Z7_ekAfY8@ z0Q0}-Ch3xXCnR0aG6VaxK8bhD4w@x#4@O7%=z`P==0mQZ=@0x~0?FsHA?$dai|n=Q z>g?vLnp9Y+BL9g)u;9qS+>1zjj_*-Y3C>^--pGB9cuUX_X&7C7(Z2EIzaKuH)Ri^F zNLh<~61Fm|l$K1uCFkK?Aq9`U))2n)S8XrCSJ1f>>{WPsDm&K4$K{I=LWvXoxoaZU zI*Kr?2Y8R()6Y;ePq*^ANzDF{rQeHj%HYSAjXEXb<$T)x%- z(8dWH3XQyslp#MYLa_>D4Cz);NmyEpS=qGa7p$aV=PCqY>k)(xGF=hmE#~yYF)PnU z2MjF~V6~GC5z+UgJa_U0!^N1dZ@NuSv@9crSraP3=5Oushk6cy@F_N;E>;kbT*+1F zKQY@ccDA1cbHJyP94sU{pNLJX4L6%N2yFmdtYznAGp zl|#010p3>UHK;Zi-R_I13Y60{d?RRc8E;_H(aN5iQM@WvL4-2~WT9zzU=6^OldMke zJB1am#2EtTm`yX1tT)rhL28Jl?I~(aHpBIxhrn^TdG~6;sOdyyImZ6r#I>InT)8EX zBl{+EiAy{iXS3?ocuYs`+oExTUGz$w>*8V#aFMLRM+i3}t*H4Jto651cbwBD^_wQ9 zTdxR@rpQ+jQZK;Y;??J1%8~h#Xi2hFHF#5PvX*C;58Ixzb*x=;s#^l4u5D92F!0~o z{D_(c8?KUXJ&sgizW=+~W}I^#y23VTBJJt&7unbE%kbED&SA@i|{odBEK5CIQuI&-!Ux_Pp@V8dnZBgz(^nV5a2UAINO?E4?N&f z8P!fPVz*_uRih&3wMb%&Qt>qt~V$f3*?mneHirL|5P5vWVdOUO&Y+aG6sx)o^g+|jhUUiDE$*kfd#nag}LCXUj;;~W#lxm*Fd6WbT$QN{Yzec_rd6~Oczl0kQLoepsUk$kPU71=lxy=#d?fSb8L&07yoAQUqT zw&SQRlaLozV+G?w?)ZO}W@+)}TxwvY3b()^*99#a2cI91+EoNi$r&fN)+7@DUCQz% zg`*3-zbXbg>;Jc>W}jZN-GkJZ95>c~bVBfvZMh0iwr+aV*oElW)#Zy|ND|c|V;04C z7JsU1Y_}gmN&7ei_ZFWRzE^n|#5KriScEZNISv!zlphud9I^1C8e=GJSuv>fj+W?+ z{FIq+-();pTsqBV-pMWAVHiI4?69SrG&V-@Aw!AU>FkmDHqMXDNX=*NvBdRmTop@* zu`oh`Uf^^+ygX7AX2}El3P7*zK6&lwj2T;f)9HQxH4gGJ_G@ilt2;uamx@ihPYcy^ z#yA0_C!=bVRhzQ#?+t6oratH@N@Vt|HY8uY1kTYUT=S%5UUR3{Vp!LnqUFZNz|oqx z*XZAuoHz3v5%$1!Apghdes`yl8gxq*C2%j@O11^F-#;JKffE};nA685pJ7}x4yUPH{T2-d`~PwA!&{8{?%`hawlXsRuwfHsD! zO4?7Gd~OidR)6-~{rPS_X6b*XG&tPVswbn8$l=)FaA=%NI)*cq!CZa8%+T-gLqQAp z23Ln-Vt+8n+P<5O2#mMc+jrz*`WZF#@~@CE|Nb?FDY5BSgxgijPb1;Km&t{O``3Ii zrn~WDIb$o+tC=-CRKedV4kUVJ?$;0x#tRh~%4Yrc3R_Q7mzQbOR|Hk`D6SQ0s^%v1 zWE=|u9B@Z8t9Yz}XXy38XG8+k!ke`Fo}3Egvs;eVuL{>WM~5vXE%@m+(n$7IRozh1 z`PTz9SY6bq|4xG^IS~ze7BAJ$E!BKJeP_0WTw5`Fp$1M+#7($AI zs7#d*m}c>B$sUyV!uu<3s`TdKbs!AyC`pMS6wM&Gn*q zBX1KG=7@jdgqS+>GX}j28kMR^ICr zIKtE74RCU(4JqaUg6_!qKlwa>6iT9Y2!7`{GFU4b9}^D8ythm(#Gx-tz@s{U3)Y{tCb%ub72HLV zCc@ngjEEEJy(Da-;ftV2NqoYBvBX{8D$s#shzBQMg}LBd--PCu zvBnRR))3r0@}ko-aWW3o&q%Iuq<*S%XL+wJ+o0!VJH}Z8lL4y8x4VbZ%Q&g1hl4kf8j==Wfowje3)*b#_fwHc zlY=t`U^Z*9D|!F^_g}!Q-J7EfmO1V_u*dRmsj|0stYyrd3ob%bNt0B-OCt*rjWE?x zW|td_&}uu&bM60pd_Vj*`3HBg58*lFLcV=_SZLGg>Pd_OPO44SVQ>PIT9*r(>8=W9 zpHexOMq{K%Smav?Oa6Cf*YL5gCSex?a)ToZG!(Lit= z{eu%=4S4ll9~C{@C^=f4)A`^QdkOHwfeDuD3R30f4d9ZQc@V=aQP;I#l7Wy9#6}?~fW8KFY zx>iOBkutHW8B(0h%(SbHe^tUpdqx(T$A_XJ;$d_5mPM=Nhv01qX5L$7i(j+T9MwoS z4m+QrDO$ntL%5{(&=wk^)XH* z^$r2)#yGclGb7ZM1J^o^mopG*8}GU&P&m-^_8FC##HsuhSQjn;%8_mSZA_$MNK+5vuI+?LqzA<|k!>SM~$ zD5}&x>_79z{Zww(!0cf%ODlqZ0oM<`pQ_ajw|^0P7uhZd%35s72SicwRO@P zCbLkA9q)|)idz~{3(?v=a^Ys$EolwFM%bUgv2-}awHiEwxKrHe2Z{aIY)}Dve0vn= zr;7t)J{@d-D_#ZOprgRoiYCvIoh8LToh>DGC_i1_y#!_Q>c~yNHDTK=Jkc>U7HeRL zS*ud{%L8>&*WKdYs0a42=uB@76e#>>V6h$027SJi(rrv%8qlE5_Zt;CB@2&{`7EOTKHW zP#vLB&k5!=9(Ryyv)b*hHo~-_@QrBr{Oqp}2nx!q<9X>(naIak-z^5{m}Ga*3uYKn zQSOMLA$6>L)sTnvMt{f@q~tyW9Rp3OSE`~lXkEZb9IJMx*jdwp_(FdpIbsdZe-t*_ zN5NMMW|lWT`>%Z` zcw5Pw9ftx@+rS!k%*WSnR4Uxew8lVD7!?bb}yNp%jfRP&o9MWE(;C}bN!3DXd(osj( z&b}_XD{J&ys1It@(9#{-%I-!$VG4X~8&GdZ&S$40?tsaV&*i84SF^Lk8KC3qK5xlo zuSk+T@FL@$xneb@OJY5}kG#Q9vP-@5lu_vFh_nA4w9KC}S7;6&FxuAzju^uWyAh(W zC&bL)IazJ&PmgYXIYIPwm+so{^;JnA_((@ddyjK~kbc;#bTfkuM$)lH_-ID(-^0me zXPYmyMHWqR!F=v#TCD%j4S0}>2UqBoO12+sb@IP`At8pq&#ST~KoPjhkDt3jio?sO zVO@l^P7+_lpXL%6WS>`?b8|CS?$C3O`;69EPY_l0| zX~+aLZ#)KQu$1bS1|I#xo^LfRTX^OpR3G0UKw%-=mWVE*; zF*DPUcI9woFuJx(Q!q1RPuyaLSxCbZIbhp#=F`S(7|MWd-5%3tMM{kx`f4`^bojwv zC3&Fs7g|pH9Sc(>V8MK3bi!}pV@?CJoGr*1MAOr2#=pP!cW-I(_mzG*A7j|OTcM64R1i}gvly;*Ra9!gAXjbjMm=?k? zUYKNB$h)nOfA$q4%l1; zU{^)x$*KGxhc`tL7;DTA5m>%IjM+0+Q$W^Ez6F30%W~TJYow{eB5UwP-v@!F2oFfq z*j2nJlVnCfU*cNy8Z&ZPE@H>6G*DjzHRetD2>G|&1`?hR0T@?aOGdVyVG(U_srrTP zf7R({j2&nF^MOye8~`65(@J9Aua{L3Yd+psP`u_EGn+;DrA?_H;{g)+JDs-S&JmLk zHjNufvdj#!w~4p`?+O!(eWPXR?paj~7f8bY_s#pueCmF4pI?di?P z16}Jb=hXOPn;k{809XQir^x*@2@|p_+N4XvbWd}9UF6M)Oj>2gwlwh6ujKVV50FYr zFBEbL28@{y8rgx{1~=jyc6sF#>Exu<*>pmFw0CuEl(pgzOGF1TA5;(_m}N($K9en? z^1XYVgtUMzGX2fOGf;NGZ`ho->J-$4c6$LI1eG-O*?19YZjnTmv)W$mQzwc;escEO z9h%R=m?xP!0iPan#JP-B1Q?Y{KD4~_I^Ps})O&+-LP}yyvm!C{Hwjn$%|@ObBL?gMDX`f0>kzUygw_V?yJMpqFF}{~FEWWA?NV`}A zz>gRc1!nb!h7*gbgf6@$ zUY(!#5+69>A1WG1I23DF0%{% z3Lxrv&)A{=lOiVv<3(em#{p+N=6EuJt0uZLvUdS&E2|@Gj6a$mu|s^3|EHvx(?#t` z$l6(nPDv9@$&0rQClJw7f$;~@59)3JpcIMF&ly|o)U(a2xq(3q0$r-Z;fVI19>xj0 zRKNOk0>kGfW(2kVVy5RciO$-da(>ubM#VyPzZ>)`$$P4 zhBYGwuvLW{V?SNDg|bt+XS`Lt|=b7krO=S-I0 z?S&k`h)RUV?RvKpJir7+6yF+(7=51(%WbANsJ^W`ADy_dMEfMcSODOA9k?BDrz|^= zu;<bTq{v9_a3_J8$5QX+BCt{ARfb7N_@kwWRD$5AzxQj+ zg&|K_NFlbC)AcpKbT&w*>H`|E9kUHN`R;xwh`Xc8i(0j}YpXwZ7H`Y;H!jjbL2pa- zb>QGbQE?+m@`bFjV29XXbzl5#7QjSqF+pF zUQ|G}KYG-yo60EVnFI%tC1M)re?Jc%igQM zGxj55oe+4^}}|c`K!=EGbT- z>|#5ciF@FzG{gX88$EEGH`){}mc8tyUseu$DnnMOVH2BrkNi=$%0cHIknzeY7Gl z49iMC?Mp9E54di-r{O{Q9wEl=gF0fLOE|tC22e ziwq?d3cL;A3%V-i>}xTn`H+}K?+y@_Nkg1j=fyS@K6ldt|R~vNHyj?6_c+55zhn_hujrz z;Fa$}F-oVjO8FP0SZpBId@B6aev|XdMMD}nq6uUT43ZX6 z1M88)c3fTws{Q#lk2IhMH?pLXc&q{7SYhiHZ4&6?ao4@(hw4UhF|K92P-72XV!aE2 zlc+oJ?govJRFp()2J9qun19y9Tz$A3R=5Ww=;?mEt=G)~i65d-D}DLK<_v?Kxy_8y zq=^(KD&yFdx&2G6;1g^WRl78*y4$3=47g6E*7Za;EBI5; z8bf_2%F6;-95~e;-@-Id8Dvk?of(?`2M!c?rmSmsNe6uuR0${;>7IV7-z_Z#OODN5 zo0pvk!s>GQivV3P=G3+68+YoAFOEV))p(f4+USj+c9SBNgj)t^{AWFIewo?SU=k5? zTC;EbV)L3dC%_zlOE@BH;S|=}#VV*K${!IiBOn%07$AdGrBnBJuOEIQ6(QKr-&&#P zEapuyl&WNW>^qt$Vn#r(rCObKre)wCjN)wk^OmvTqi(ua5z1bX7;UGR9(>mSw@TxK z5A9W@9nLt6Hbu)R-%Z4C1TZe8en4?oTBZ>VBM-%R`1MjB^tgW@T~YNud~fT>QqvbS zLet~L$)uHa)HG;kr97qzxY`@(O$TcLr^#q94_fEJ@VN@FX-}94+{q^{jqeTO2^;G^aL&Ga66as#2GOny=6YR#N~d>RA-$Q*EtY!uw&t6`ja< zYrhcK&bW#YUZP{Ic}%6&`xjVzH4$leBaa}hpJ)?@wL2g^DXO2?tJNx)?56ZY&@H>x z=Uyr8;InrV;fo6(Sw5qPqEiaqRxLF)Fb^cz~*38RNXCA?F4XA)4cA1q@OdGuhtzSv%p=k!v{sEV8fTrP%f-!n>bD zWkE^6i2Zy9hPMz&~7eJrMOtN7lyP-5e4 zEyDu7`de#18qZ}bNE$_6!vN^4iD4j--oa#^OtkuIO8h=R+Hxh*zQqB@O;*;WJj|x( zfHOYeq1|K2lEN}KtuT&aclOT+7PiSHsRma802yrqzbbE44})0|Q~9POt=bHUX7{v)@TZepUsu|T?0pI7q`wy~$-k(bTXdds-nvXw` z+mq>cna(3{l72mK5s*SIF@O9;eNG8T&m8Bu)UsU7zMOx`V16>{QoY4?<9`Ma3bJY* z5)>l79E0Z`a!%cXuKkp;Oe%Dgz8HGC{!w96+9i*8-spIC|6853CDj|lASiXcY8Jk3 zx%B{>^LHWt;>R>%Fz6QqkA^Wo*Um7dQCLt_9{6mAS0+Nv+G!$gpay))0{Cpo;M!y| z!W+gkG&koEa(F*q2|Y0!MNA6%K~#chufDp~zQ5qPM_?^1((h#5!n=)Fthc{QC+W{A zwI3Ui2suupFzC1!?4ZEo&R4qJ8b;OI)tP@<7{@p#dcOYk3r5y-Okw0~;h?I<6>wO< zjy)odi71{JnR2j=&?BjOt*}V7RACmcYaaxUQ2B-2JLTNj^a(n#jax>L^7c?yd??RJ z2(GS+#mu*luV8fNa``ezsTQ;$20$`4a%?H|Vf{t6GXY@S^AR%OAFe+$0dMPT8^5+U zgKUUOQ@m+ljf2JdmSf8I$8toAcFtdw;hUv!9emb>6BV{dN7MhU2c1gkv<;ppr56QE zy@z%+oJoLk^z)xaWQv3>!y-RYMQYDASz$ynQg3&idtmgp4?Z}W?0D;M$&h4N(fBuP z9l@{DY>}6;T}pOiZxRQbQ2bvDI!b7I0T2aWrECsJDDX(8ZOH=EQc(O4e%?OPL~LnW zi{g?k7t2b-%+IH3c*eXkxPXVtY=QQ0dOuE1f@Uf0 zokP{uUHytawo)!nPI+}O`{Vu<+UVOr#cwDtm~tLF)vH2i5J`Fi2?ymj!V&24S?St; zwuO%<|7~-bSo_b)x*0sM9~FbHeoRg(p4#s&@iO6;Z!0`^zi!!t#SuT>5dt1_mQEUP z{g0YVPKlu@hxfOCFWO+-11Dj@qBoe=;GCKk83X%)Ad0Vb?E^3)siV1=P%irkUqAnm zF1Y`6o+%Sm9aIhNv^3YhHwQR}4|`BBMN)@_9gz6dz)-jwd|;gbXw585s%)H*g^coN zYDK87eD71zWXOvURq=dV!h5s}lqRMyL)0iQqURO|dS$sD-0WtfkU!SU!ND>M@fCOW z-+BMKpGiC5KpQt5CMke#Kp+*v`&q%PpH&Rb^EW(kOJS zcQeo*seB}EONBekJjtkHn?u64M&|F+D0q0Nqdz9_P8A|1Ef|X-PuTwc?z%%x`!`; znH|?Q>_!fB%9?6Uft>dn@)#Dje%0_)c!Y}bl?4M}v{&GG<%-Iteg$f@>v5GK8Wwp+ zsTAcMo{_kS37al|=)*J+Y-PrV@iznVPhB{UpJ>!|WHKLpt^}2_=^a`meGhly1(Eu@ zR+0|apJq(cYFV=c>{J`%uwsc8iAuqLVE83_xFXlRK=;g%bdZbxz;T)k03uXv+bTa2 zF@x!qnfuaj$pusf?A20H0^DJU%Fr}kGd*b^$?50%ZJai5vp6*AYqt$ZlP-Y}ceE;v z^Q_cZgN3fD`zjn-78c@gn4Xu4GS2-e9>^jl2Pyv!0nnK&``TmU&wj1Ts}u_iR`i{l zAESIeWC`?zaSHwga`RK`jW&AB(R$iw(&k!^+?W)_FMhiRpM=5#sM2arKrbmLY!V_g z7T`uQE$LESmJKV zs%nEmiYz`Kc*A^0oLbUa&$M)m=_d!1K(!dRlqQ*jBmW2{!rWWj+0s9%Emz#Yidd$X zFI(0e0dTl$hM%= zq{bl7le9$@f7JMKw^)iE=6%2l)aID`G~OR}fq%=$kS@^B@{DEEGdc66Y}ShRRuoRF z-93?Pb9*S1A+Yp(J~jwiUn}9(pTc5Aj3sKN%_uqOLT?}KV?o>PZ$RbmP>zD`@)s|~ zTn6fRNA@y7SS&PoWTA|xbZCzi(CnQQJ<4$x{LGNJ7jpX%G1gtq;Sl3;Q_3@He!fDF z_`M{kc(&Y_`tbyw%ww9%^G1lFP;YJmub_G0Za2cud+2RQHNgQYxIl-4MHM)pn#!z_ zsvCde+abh%=57Tt6&Kx2KZsyGk+dkUFdKraJaW(|OfI$2tZ~)lhdvQoOEY zLymE}wS<>0_k%?_;k3M%Ci==-P#~ec1QlgK@(wO5{H4S@T!c478|3z>b7=^GK4i?p zF2yuK6cgpk_$aH(n9K|>-huryOW>CHolt_z_UrN=K2-h@u|WAN6;O-tHm~@FVL|hP z%iHPtL)#jqph}cKhNU9c8H-Tr)_)%Q+W74|YZ79u&;GcaS>vx_WL1$94r=mXpU%gh z3r%~ZbunJPrq|(Tp^_*3I9i za4WeY64Ia(04-Tna}ut40m|ZgJ)VAFvsGD6{eKK`dG<-fNl;om-kwX8qjk;k^hB`U zTPjGb=V+$Yx>5UO=T*{m0a^sq-lK^h;N{9eP4wUAabp8SV#BHEbuNz}L+uL2HCwlh z8P^Vj(&!2g+oU5i6@$=s3>zU%gs3hwa?PQjK8=dLgA~6(Zv?DvDY_OS!-vIPG7#Rr zKg#r@X5#QKRVPKTJ;dMyym3g&uoX_HJIr-LB?pkm?!fv8R^7WJ2+SL71KlXP8X0#Q zbNoID1A>XKrXs&c%Ol|XS0vPQv?)-P55Z7m!_0I*&=!UPjMB$LMdn_yq2=+?@@2Cz zyleBnQlUCcyW*JmVbjE}jR0a{0>A@ZakAqZOC?AdkUaov56F(I?4=UsOyH{6%l zvfJ>(LMa|0<)DdHPFe2={L;t=j|+BO|!jclWI zlFo9mWpO?nlJo37_I_8B%reeAYf_{!MIX7_u3-n30G}Q=BFA%=!sqv2g|A|FB`o% zT{RwNVWNHEfsvjSeJO)OyEaap6PMCgRZr=n^&W6Rj}tEooLZGUaAJPAC&*E1-YUHp z#!nBZ73m5OG-695fkAeii$?^ta6JoM^ zeF_ySSy;NdF;p^N_qP&l=s};){L`L6)a1lq$!@P^|Kzo9NM&@}cM_U~DykgjP%vtc z?ytzzWsM5=dxTM{F}zp1Mh>U3lHmmKQ(Z-ltnm`_F;ywDq%d&TyR_|u`9RUDlvi%< zw_z6hs05q^$JzeI*g`%$p=K+x+6o$MrSc%0k>0Xl(#Zuwg;Y5nR`^^Sc?}9LO~6XA zuNCfT#+1$lpq^P0pK8UUJQ*pj%Gc;!(mDp=v6@RxdFh1I*>z%=Cug+3GQ%RcwWm!& z&W1o_pV0q_%FKWQ9_z`mP+1f!RV%c>hbWS-lT~&M#;gcV>%%#nMOlig2@Qyr66!X7 zguTA)(Mz(hCFQ1fNg*0^a|nn8=j>;+mZyn#R)kv%0^$)n9SO^! z+9EUqziH1*s$~mE_19S1iQ$(h#-ZE~7Sd|@(wfdXwY6OPl4f)>F7*k)0q7ULK%&9P z+qPmMMW<$h)u`2dMC=|Yb>W3d8!}@=*ErpFa7Z2;2k(|YD@+n6z46?cFV%+$3Jx>7 zfMr{pCC=S+F@H(37)CWn6}odPITWqSziRjA<+Kjq_A2tG7?Yo(Kz!Kq)^dfpfk082 z{g4}el&18yNfD+8==tNyvJ2BbjtQ&nLlRxDqLo=0?yn`>{1je9fX>_cqXOj_=`Qep zwvTz}5~>i%9YF)siK_Orba>}rY|3}X))*8><;C9xZYL+r6$f zr)uhN{lms6>qw6%P#SO?L(iKM$mj@^<_3!JcBTa}Ym)cdwadvQMJHi!QdG{9&JSJy zi#m~*X{n1ylNdLFg{ZY|bZB~&v*yyknLW$Ni zh60vX<@myfR>Ngz%t)2MLzdXvhOzv63AhKD-Z4#}%G3Fo2S6fW~UK1Cuv-jixux5G97vv7) zVCSLH8IGRUKEjKR+7Q!Cu@X=j@f^v~meJ&8ev*eBvVl1Xt(#@*sHlS#x$!{af+D6p z`yih`cxklj?eT>?)UqN1;9s|1EUyboZ=P_H$?Mk16nvb8@ltZXUS@FWSDiAfF(-u ztiTYvNki{Pta3CYof2zn`>e5)6LX+G+E|TD5WU06g6W^6MLC)@i=h4AnDBNUEX%Y^ zsA3pVb~}MCJ{?y<;z_9bD-$3@KHHz&*ed}bf_C>JuOOej^v#^ z1->bo;+ugHmXwP$Uk{^(mgV>e9R?(jaw(Eo@r>YmA1W z_!L~NC+b1Voq>fVQ~Eq^G+BSyYAQ~Bi3^rM2}W3Jf7(eYLgbr6@;v=7MpUyE6Q=}Y z4W7wG@{NSHY}B2{1GrXjiJ}{00{NHVVgGp8#qr0ax{#=>YLDp6wDm0gmz-E-fDM*w zFC--^TZH)O*yj_<;IeuOT0hIT)vF*qZ`aCZQS4i-XyToijsC5OX7?U1JGfE)QD;dh zj&e7HFUHR3@7>aHS{zR_BiF>>;eJVN)HS9wEZ9{q?>%dr!}&z_8SEYzF^52s6A-Ga z&2~pj?(a|t5~6K3eQ;Eo8K|STf?^BNhuVia{Y(|p%bfl-@FMs^6?u5EqVis`^Pwpg z&qKGT=Bp8pLRG`W16L3=ge40P%4Ftw3Hy}gMt|4Mmbp!@?WrIt7;%5;mQe_djPrd_ zr-)|aC~fNPHEROB_ufBDzGmiPE>WN8`6fG4VGzsuh;Wf%$-qZs7Q0SNC&>HT(#OOi z0%PQknv%`iOTDu~}y z`8?uoW6$`tzW`!)2Ti5(Sp#^?lpk3ce{6J;(KK$a_`Sc8eC!cFk zf27k8wQ^3U`CI_?%`pdWIL+!8>I=tL5~nC0N7AMAeUpuB$Ijez8m8Wv%3ec*vO41& zy5e)WQcG?{_NW>9$OZ?Dwr}ZhHJomjmM@~T3ni|c1o#b7Zxq#gV;P1eY*Le(D>cb) zCfQU{Poy{|_Y&m&hNpOuBFunM3a*D?@70sqk}A6>6|%ixr&Sh$81>2B8M4X(hcxpR z9dM$SyGP`s$a&w|e2Pto@S`6tuYNsDQy!Wm0|x;LFRx&qbb2(>_4_#!I1QFX`yr)>V`3Z{>*VcBSYJg3#fDtgGGxw3vWosbN@!I5it7fDUG0^i4WA!N7f8{ICiKyw zWwQL5lGi8;)j=$yK3y4J4$pWpZus2n6h2%k7hUIp3oyaZLmXuPz;V%8tsgNIM;_A(S`5x41eBKJ3IV~b|N6mJ4S5(vVyK&Q~l zoy-Kl1yI`))=O5ci!6Tcuk8tBn&lk@Gm< zBc0y1J12uu3CM}%U~{W1PS#z>nLG0>_{1O>fRdEa3VK+&WVd{@?iX)MQcd1MyYcVdFwhDAF8~vSKM-gRVw1Ya;QP(v5NzmjB zkd0S{u^-XwUvX1MxiD2lvQ5xCj3W#CxxDAt0q_&^JoM51;F?xYI46E#^)D7vww)wM zy^a19+BHNF$dy*bo)Ey0%Oq*2X}B7^=6x|v!ZV9c$(Hu2^4lCa9k2L$GE4lIS#~p_9u}M7s9G0||O_rD1=A(a=BDADf3!$a$Y=v75zUfsnKu@FbFuJM-+vNLb7xj&BQ?qKyL`HyG$Ow_^5y_n^!6UT zLt$X6E;y9dYzHy*x>?5N9aTGcsV*VSbaKjTVf>lbmL-~0&@Rxp+j$6 zO!_)Gr7dqwb1*5~=}$-;JF2x&!-H^A?pl*4_5fZFXqUi|xKwgw3spjkp|L^Y)E%$? zMdxR0LOmMzkQIYlarl@h+$RlDm8LY?+nddby_72c!!yv5+%pUYzi?sJFNt znw+8>LRhWe1U6n)LoK@FF08PUzt`PcLfuoyFpxTG%?9KGokjYjel&2cQRF{@xs*xb z1eRm9f^(<-7#zuy7gy^iK$4WZ^A4avH(mNG5@%|sPC~2hvSA+-n=sF+KI~mEcZtpi zP&YC_>7ATADTg+U#XW7`>h+z317Z(=a6SS@WWl8jXFQzvMYh9`gF+bc>TzL7d4$V3 z4(>?a;>o)MpQHNr!_rN%jEMSAh#+gWz$C8gMpOxjd5bOlAC8G4t+hydl58ll2;i{8 zJPKPgOu8QsHk%Gd@V8mxrRR|TBh*shPhnksPsz_qm=;K+PqtvFj zYo%Qk=~@Y3S=oDdwxuaiy4Jz)LjEYHdyW*ZFD$x6dj8+xr8UzyI>44c{qO|Ok6$#m zzlH-HdbwM30@5&87iVt4+VS&2ZrnFplwgU>rZ&!4XsTMZ_F>;P_)A1`g85uWq`$5N zW1v(nRHxJfVqHO6n{;THA3J+%^E8sA?14-_a8=rPD)VV}zo%Hu> zsF!x?u5glOD`lj@w#~g?lvXENP4mPopcelo;A}%b^lNV)@NBs*9j0vVlL1^VYa_#` z_IYgWl%b626I1;gkxGl69eo1pdD808{xT3L1}?PkDH1;?*r&!X;z;LD3EdZeUUF7=GL{k6&23kUdYbHtndc>ZOz`_*=B+lxKozF zRh;v#H*USOCKQa8{K57QQjbqh!P4`g zVATI^ZMV)Dp~p|TkvqVDg!4?xlv5?$Ug>*cZHT>?0@b^NZ{?Ft^5pM~%xf7M>ITz` zPHLRht6mjt(w%u(RUpiWC-q2t=p09NK~*Azw@6VZ5`ihd!3p1r9pe@Dx-iW#`aAXM zl;n-}7~MYmx|lf&cm%sSdsL=7?M-%!=n}JK-V_be6G^7?&r-|LJk|C-%PDs(^_7%55iloYZgV=^OO0ze1#xE5H z5>q|*7XqoFqonQI+i+hLGEjl$|LC4O8)E16;SGUs;eQU%IkBIAu9KIqp2aMk6r1w= z)0rn*SOF5NyE-~{PP(?Hsx~~)XZ-3*|KtMOt2NvI|K}&uD9Fv`ZijcB(kB}z6w`^t zxfjTbE(?^kfvOB`Z;2|e)y!1NVIo+}oU0AiA&~YwqldPa{w4SNTQ$mmWz^k7oFAmfYoMTm)lA#tU(FpB+MwK@lJT1yeTwdkVrNZ_yVub`xF zJ3a1vv-YZs?hnEvojrnY3V#Jn0Ht3VoW|0&v=T;ahS{S`bkz8kLtx<4=!9}^CRO2I z1@f>6uVtojY+K0omT=uB(D}prD(UU{2KcwWfLbjFqolr|SjPHXuSZ!d_J2$oDYt*7 z<2WWdPEh|G*X=x#u$Kl+99P&-jU4gIy84MQH;LYF=s{%ISRZR2M3jL;jYM7khn~Jy zR5ktZLtB3MRCcT}v7G7suLS}-;qCqW?Kqd^VA`<~1u&QwZ2>ekn{?dp!NhkWzh>_d zUqf|co%oY(7}n(=&+-YKv6~0KY*pT}4TfXhJm>)~T*;$u+dowk3M#ABn*eGK@sfs6 z(|33NZ)f#(%XU!P=S%b-!Q_4;6B zm?hZ-S#w(p7f0G{+I$N`kq(za{@)qfg|JXT&-O>UpjCM_jm1!H-?G{9d6lZTCwZhEJg zGPs#E9$4vVEPM7?$w5^gKtF-rOxZ#DjXHi4{tdZ|{hU?@lAgX;XjM)XIh=|&x0Wdw z0!P72uYfa^R^+pAd2u%+)oBk1Sdb#62miv`qf@mrbvst7y)F$Uj!7m(Lm_qieboi) zx9hO@lS%~(lu4?N+w~Fkw1LVk@G3MbtTGVwJH9tHmC>mfTrX4MNgGNGS2u7T6|11P zGegsMm9cr`VljKGqRwbo8TVjYMz+Op0ojEB;h$zjQR1av%kYox&e@2Bd4#o`=+R$Fp&YHz+~Po5>Gt2b z>(}K+v^+kh1}f6{QK579BFC@g>d85V$?3Q9F@9b6~$d@yXyE7DLF}D)X zYLFi#8z$W^I|hn`Xd;+9t|A&v6VVP1IqsPXok}&gSzgj8+BZCMo3vDA1|zqCOSh+P z2jK^1<@({uF0f)75y5G_Ga?g$4^b$zK4SKkyy-av2hj*h16xzcF&kiZ8|kxMswR(h(ZB;u=zayco6yN zEFBls42S0<>n#wfg&91);O%3cpkT$} zd4F5-jy(>-pS5|-TN6L>2QVZykk8!eth>_u}` zDHM2u8!iZJ_FGgPmURBiRjB2E;%%TXVl^;~G!g)ctkOmEGP945p)XJX8hsQ(c;03w zMC7g{x-!F*v*YIJ^C zx@Td-F}cE~^Oo`*VG4{XcOrTm^f`UJ&8yGi9 zNl_mWTr42kwBkV?*CUEYkHf{-=iRlZUKn5bcikop3@KhxdK&K~lQB}|MDefP%sHX! ztqBcfzm}zJOt0uc;|KRWw49G}=iE$I$;JAC>83IA`0xw5g39PCylqHH16Fy-b zT3M!bw7sqdMF;>3m~cUmui|y#)bx@%QMMyK5O>|M^}LgZ3RBk#t5(ab;MUc80}u9% zB;@76{~?lHwKP-H*+UVX0tC03s0kmGyXjeps3OAO$FsdD_uL?Ls#I0V^%KW zWX2_WEx+!4%t|){;|rnW9B7lx0%S^NGPvOIWo*VJ)C6j!irW!HPQ@>ja8OLdquA}O zC$HTuEVGV~$H=Mh3G0Mm<=9~Hb3*P%`hvKw2?_D9HjFNO+x-IM--nmiY_{5J{k61|T4J{KvDjSA*i zM#?HqeWCzP^mC*``Po>qEG6V&-cKXXcfc0CPH$qqYi~reim{Jt{u?Nn&oUy+K1T^! z_QR$ZYol3j*&!4p@+(qxCTo{Nwb^QsA82V-T67<^qe8P7N=h8=+xzAOuE<8&9#H0I zCBd_>q_{9!OeL%JH$pp?0KegzPc-Dn1aBeV$!zswB`I9@B+n`&c$gD_qJaI?FmdObaBNn|n=3}OJZn_E>XElEj%Fo1LaJt#LQ z4v0bIuAR9RF#`_5u%90F^F6zaskYaV(qIr3-kQZXTnQ-$#tmb5PRz#{$Fy$%FB}mH z2>S96*>h*1b!qg1e~DAb6#(9xMOwNQq+Dk@+shESU~Qfo^%w=b)Ko#30!&Iy_-K7+ zw-7OpDi5lyqbV7NB4qFZE`oqWFYS}M$-eqIW=*u2t*KUCmdJ6bPp}d! zPH(>#K9sBdQ$f+~zeq>0p~w7;fzk^8W^aB=OD zkP-Hg428179LHk_G+)IXY(r=MCX=VFy>ixQ#3Nec0p>9 zPb@RB>5BTXBL&ln#kEl%pyPn;<#=g(Z2?cw7N*Lx;Ast2J2*Q=vNdOy^^3J;CXh5Z zE}VG=-R~Su!bOgBA$vZe7a)0uJ(~v zZjEKFu|TPtm^U7QRS#B&Jh7z5!@!&;&4(0SXlYv)N*N=Rfu9!1%q0PTB0Y05FI!f; zBbQU+SpVtzb4;6fG7RLvXIHJEoR?J1E7jA^^gOgjxtrLyE zhwe>4ED;*=)9@a_EZbly0@UYVz;aU9e?IM=7pUf>%gr1@QdZir&4!cjcb-X8ddG2g z+(s+;{>Q8f$y-G6*gYt%vAkb~x*+9>fnn$Mmz~F&zBFK@Q;PP9KCQmgNI)q9o$W$C z0z2y72c2rTO@4-;L# z9B;tErW+i)pzjqcfYcGkn-!+z)`&L%2*iEw4nzat%fVUH#?$PBhvYHstcfd!5G+|{ zp&`k-%TB_qU#ywYN(&f3h2sur4bKVwCsB|IN!~hqaEe)d9xD^NEXz^*)h8f_;R0_6 zqo}q32eYX2i>=lK=brjh!f0)5xBl-T}x z#!8jR1)4TF^yku2drtlg_tyDv(mW2uV4J7gAs{??b8}sUZv3&L_Yu;mwH78I7k z6WgtN``WdtzHPE+LajJ~l(;q1r1%}$TmAE6kHLgS6)j#TGC4;JX?D zcz7|4A-?CbR4EsFd=BsWMy+df@Ij$PL5Si3rGOJO%!D^*!B8H>@F}n_P`Fz{_4)mDSiO zj<+j3sS=CIIeji+dA&tnwWiC<@J)<=3F*Gm*(qB{Olq4Cn@(wqrq<0Mwx_sxa?%(v z)iZbbwK9jWS!he{X?%H3{)^B4JfX1ku{SXUld%qxugZLAlct@3bT7n$E;n$r-8%1e z=`8_Uh}iK7-_kKp1!K-CFF9~Yprr+X%f}BnP9ETl)DHQg%Z!VQ;J4SaVv}Xvg-_96UOjC-6tZv zq}vAkqEh&}i|=Lzg)zj1T;(MoHW&x<)mAsY(9Aa&FIVo0Sw zb%u*HQv9x16`#1i8UG?yfA_ot0^KGi{51-(pEDlxnm1CA)FEI~>In^5F3Z1WolZ@Ld{@_O&gkRe$iB{lJXw^9XjH($+X-65IY9$Mc2~ENDF|5sU3~E~`0Sx! z@soL!Eu|}yLlp5@4XQHXmn_q;w421WYDkK*L^eM>6?%EsM_ugC>Adf4?Av@E3&L>@ z(sIQ!4;=q-B>eu!a|EK-^F}7##0%CE%1@NVI>+K@(*xJFY8zKGCH%Z^o0EZDx|P*Y z@z%8od%Flh*`rIQT!j#-=3Er-EvFd}h-s{8slNrE!~~Kwsw2hW!*h5&I!zWRC`F#v zS7w26$(!u(8KX=%i>MX?#u+;_TQJ6+20G6L2CSC<8?y^s@)Sd2B*UXv4eT~6BBr_C zPW_Ce6w}?BY}R4wM&zW>-_Pl%%}KiSidW;B4be5C!wS~^3}YSa+Gz*z^=s^5Oax9Q zvuOB(D^|igkB<@uFlRkdtFQzm0b>OC76!oH{RMW{ihyr9I&YA55zZCa{^>q5u!<(@ zm6y({4k?cwE7u`PPVZF*^HU7)TqTy<5&nl#HkLI=>Awn-Cx-(Ttcd!l za914u(alh^nCF#>S$xbG1s4d|Kj1%F_T97S{QJ+{J9{dopUVJUw71+K$IvYsU7`P8 zPV)C6t#x}`wPAxlkY2t)cNumjA3?^vegmt9ZWvnN^*X#b@xd(%?GQI5>*I&R$uZ=R zZGmjQyP(yb8DydN<4nMA$byIsaf0s})JPMxPXI_-;kiYQH|$E`ZSZD>6o>F}Vp-CN zke)y4E>d^THMt+q+V!q=9g-F-(p0VMkPCDt67GrTPZ+n*@RGhph=nd@p$MqXU&yOg z>*6~eaLnq7qWh9yk+N5;oL>S{?~h}EOS^ieHSCE5kB1Nz_G#i4Z{GWqt-c;eL+|d2 za+mAiPcXcN{ZN|c=kf#gXQ=@(c$)mA8H7GyM$G8-yOMT?{$%xuPA&#UTk3P;7OU^C ztDMi}z{DG2R*g`V>X;T{gGm4>?q47_{o@5C@*j!Es9>vd{FdKV0YN>!iG)l{O4vl z%lc!ev^hb;v7~Bw%%HL|N3V7u5%p}&MTF)Fo1>C2l{+(a(Y-}AC4`{Jk;6;#H5)ZW zE&KmBVjz=nf2w6nBzW)+IX|DYC3CIx5jP!^ypLPqvbpxeosapN`^M!==&4uTuO&8S zZ=n(4ePV^MunYd!X#Z?omZV>9=4uIdKZG*{zK^ZBfcsqoTdJ+OfcYVr z>UnlkN1Y@P5F=Ok4Or}wlimqD>pRTi`)ISN>-OhYNKX)~Q4m+wZB!h$jfqp^fPLJg zu~GPnU3euyD1!@Kvfs@oNedK#)O1GDZ%8f1$hm<8utwX63cPzopo*!jm)km`Jt00m zjsQ9MTW=$k_5>4hVG9`V$uBdfWvq^6lyxLdrkYjZ6qIysMr(AQ(MyjjY3z>ipI4Cv zkoG4EHm`R`*9n@ipOBhR!TU1H(zPeZ8rOU^>UEEA#FIZp8=4cl1Az^K0N3De_WgLx zV%_~RLJcd}z}r^Iz2D7Lzb1*%;p-o~m={~8#^Ci}7h~jIgsThchE-Z&pc?yDn?NN% z(+1l99Ae;Q*?CCXD4^yWZ}YRaVlux2&Tly&G1AlxXkv~weI>{rOduV>@}zZ7EA(ke zW9=N~@Yh9r6NwEv>KVO5&J6SFW!B8iv}J;;Zx+SQ|3-1S2qtqdeVrUL9UY6738*E`q%54WpC zSM@IM0Pz?oNz+pRopL5E3b=@h{MVEim;lVRfAEwV#P>my5!kE;^vlDh9n{q9d! zY&s{xM(=ZZQVLywTPn0C2TzAWAbfxDX+vH>LAE6&YM-#=FmHh7**~wVdS87?Lm*~4 z{EK5!F)39=4}=U+f7(cVw3=JT9Wh_u(wlC&Gb+lhFmXy-DIF@`cRxCP`p=iyEA3 zh_sX<+Vfl@UN)+f9gEiPRc{} zYOa_26KTv}wR}1L=>whZN$yq%NHm7VyW5uqj77gTC%+Elgbfozl=Z!yw@34Y zFct%!wz9QbzkWYnL7!-d;gbQGfD2+=cRrX2JV|3d@?8~*^(hng$TG8yH`r+HyZz$VgP7&j-_6YFA-6(Y#KU(jr5Ach zFJ@$8861sH$F&e8GT*uk)PW^f`CL!1s-cG-6AWEIs!*;h3eMdaH*EuF-kc$L(gJ<{ zz{{Nu(vv~}_rTT7H?59;^Vi z@vu$w6Nzq8O7lO2qQxYd*ZXGuv{`GeDpk${(mKfGSiS#*+5<202L#Xb?&M4%M>L3t z-~hT1^(kw0W{1SIU$m|Y_cLV8XpJh%ndPDm@{#b;o_g*H&K=SfB{Fl4S98dHB}7Tf zjBhz$tAblC!qQO;upjGByTw=^sPkT~;w@!KAAR\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \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\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.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 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=\ + "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 \"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 \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\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 :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - 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=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\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 :local cnameAddress;\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 :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\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:30: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 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/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 \ + 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=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN 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 cloud +set update-time=no +/ip dhcp-client +add add-default-route=special-classless allow-reconfigure=yes check-gateway=\ + bfd default-route-tables=main:2 dhcp-options=clientid,clientid_duid \ + disabled=yes interface="ether1 - Unet" name=client1 use-peer-dns=no \ + use-peer-ntp=no +/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.8.8 verify-doh-cert=yes +/ip dns static +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ + 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage 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=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-IP +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-IP +add address=geoip.co list=NoVdsina +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=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=VDSina +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!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=!*400 +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked disabled=yes +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new disabled=yes in-interface="ether1 - Unet" \ + src-address-list=!VDSina +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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=*400 \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=*400 passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main 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 new-routing-mark=*400 src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=*400 tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=*400 \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 fragment=no in-interface="ether1 - Unet" protocol=tcp \ + src-address=!10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=*400 to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!*400 to-addresses=10.30.30.33 \ + to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/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 ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway="(unknown)" disabled=no distance=2 dst-address=0.0.0.0/0 \ + gateway=146.120.64.209 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 certificate=Root-YE 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 interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set 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 ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set check-certificate=yes-without-crl +/system scheduler +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 certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" name="Cuad9-DOH IPv4" 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="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260602/20260602234002-Diff-Config.rsc b/MikroMaster/history/20260602/20260602234002-Diff-Config.rsc new file mode 100644 index 0000000..cce6737 --- /dev/null +++ b/MikroMaster/history/20260602/20260602234002-Diff-Config.rsc @@ -0,0 +1,74 @@ +23c23 +< add listen-port=13231 mtu=1280 name=WG +--- +> add disabled=yes listen-port=13231 mtu=1280 name=WG +73c73 +< add disabled=no name=To-VPN +--- +> add disabled=no fib name=To-VPN +2440c2440 +< add address=10.8.0.2/24 interface=WG network=10.8.0.0 +--- +> add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.1 +2444,2447c2444,2446 +< add add-default-route=special-classless allow-reconfigure=yes check-gateway=\ +< bfd default-route-tables=main:2 dhcp-options=clientid,clientid_duid \ +< disabled=yes interface="ether1 - Unet" name=client1 use-peer-dns=no \ +< use-peer-ntp=no +--- +> add add-default-route=special-classless check-gateway=arp \ +> default-route-tables=main:1 dhcp-options=clientid,clientid_duid \ +> interface="ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +2505c2504 +< doh-max-server-connections=20 servers=8.8.8.8 verify-doh-cert=yes +--- +> doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 verify-doh-cert=yes +3130c3129,3130 +< connection-state=established,related,new disabled=yes routing-mark=!*400 +--- +> connection-state=established,related,new disabled=yes routing-mark=\ +> !To-VPN +3169,3170c3169,3170 +< dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=*400 \ +< src-address=10.30.30.0/24 +--- +> dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ +> To-VPN src-address=10.30.30.0/24 +3173c3173 +< new-routing-mark=*400 passthrough=no src-address=10.30.30.0/24 +--- +> new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +3178c3178 +< disabled=yes new-routing-mark=*400 src-address=10.30.30.0/24 \ +--- +> disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +3184c3184 +< 1380 out-interface=WG protocol=tcp routing-mark=*400 tcp-flags=syn \ +--- +> 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ +3187c3187 +< dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=*400 \ +--- +> dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ +3210c3210 +< "ether1 - Unet" protocol=tcp routing-mark=*400 to-addresses=10.30.30.33 \ +--- +> "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ +3223,3224c3223,3224 +< "ether1 - Unet" protocol=tcp routing-mark=!*400 to-addresses=10.30.30.33 \ +< to-ports=22 +--- +> "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ +> 10.30.30.33 to-ports=22 +3311,3312c3311,3315 +< add check-gateway="(unknown)" disabled=no distance=2 dst-address=0.0.0.0/0 \ +< gateway=146.120.64.209 routing-table=To-VPN scope=30 target-scope=10 +--- +> add disabled=no distance=3 dst-address=192.168.0.0/24 gateway="" +> add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ +> To-VPN scope=30 target-scope=10 +> add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ +> routing-table=main scope=30 target-scope=10 +3329a3333,3334 +> /ip upnp +> set enabled=yes -- 2.52.0