From 5ce83eab095bf123bf8a35d1f86d29f922670adb Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 17:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 17:00:19. --- .../20260512/20260512170002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512170002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512170002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512170002-Binary.backup create mode 100644 MikroMaster/20260512/20260512170002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512170002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512170002-Binary.backup b/MikroMaster/20260512/20260512170002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..344dee4e4f340efd0424acf1e2cb6a043698c1bf GIT binary patch literal 302653 zcmV+aKLEh*sF8C$o&*4Nz@rgtxy4Uh*p!Q0buD!O000O80004Z`SAPzLud%=6v>`0 z%&$Dr@dyIn+m<7#Yi4fsZY&K@Ah#><}mT9ieydRSBpT!&y8#_s~ zv1N#UqET+Y<)at?1jz`R&j~W$VOeuxOw*dCMYORKiRhy4KleY*q<)EIY6h&vFn*>g z&=xfXoKAr(tlc2jC~@*F8laxRV$ z%jtsTq_gw!NqqB7j*PSS=BJ%cY>?z1PsH1SX>Z~lPXF+(vzuS8#iyS7o_>a4G;lR< z6riU4Oy>gsa_*r#^3zP4&O7BA3i0}=a63r3av<0qQFle@qKlySasD3M#O;i<09D(KT<$^X2#0RfA(4mW5)fM() zKl%C`744!ARv;8b0?Fb#eKM*f%wUDeo@ll?F(#T_~Svi zELz{J=S@-1srPMX#DO*0&TV!&!^MKW9rTp`*x^B5{#m1W$& zgEj-G%ZGrzs1u7M%EuTqOFZH@b&8JU%*6y#IQ{9cIB`qF6MpcfZ&p<}PogG7<)bO{ zcNIfXuxPG2t&qy9U_ZbUC6*rSLzCgyKUHq&C}Xh9=aQcrQBR0Y{`wU@J+e_V9&9r0 zt)5R{bJ2ph6cy58L%QnV55=Z;{L<_h3@U4F^tv*I6%9PE%?t`nnOydal%9H=QfCC= z^YrXK0$vO1^o&Mb%AjM?Dw!T*8osA;!y#wfA)D1C+uPhPfv(^1_06YY_h=ty#XBN77$gbB*tCkBSSqRZ}p#Qn_G>D>M)@BrR)rO&cH@;HF0Lq9{NWI~O z|L+hqPYgU@)saZy|7+9ft_l_BHBlf zdC!En)jlPB23&@avcxVlusBA5_I!%yT$Sh;FN=-LZ&0v$o!>-ndaHzd{^@_AAkRtm z;t)^OQhy$6;fpCj{a3z`dR%@6ED@^L*O|XwA1W~(LV6|0jU4n+ykvkqtu_Cl2ba2E zM35JS>yO?=%}1ULgbmv8p$|PuDFSKAB!Chw(RL1|(R=T-h)@H(czcx0S;b+LU%kxba|jl8?|!4X3b-h@{OwE zt~Hc{`I-ibp+n#(+H60+@a^FVrkh9O$%N?vG%#t?rmX7fA6hBJO#9%TF&4^YQd*?G zL4s-{V=sTP)7{MAl$b9(xp_VUNz%l+P@o2G^k9C{yds3jaDvDZ+W{qk`zRCob|x;< zNqP2`K0tk_cMOVYy7D=)~QlvRq7l0Cby@J(E z!Ck90h8X{()&{md2ujU6nVM8V;goA)WAaai{Q?CEJ_mR{ZI8G%Yal-^P2GnW0eV}^ zWunVAR)HZcsrap>D2+2KOkwmUU=Wtx4gk;#LX1qb+E9$={@|oJg40`w{MlFuhWYeK zopIIuS2+sCY@Kh2AG{mSrhHvl5iF48!1ECpNUZt&jIdh4$t8#d{cXQZYuW-4RTfwM z``|_9vo4P)N$&@xndmFFR|wr-Zb}?(iQ?Y2>hQULUfEN6k@zbKJ&Ij&kRKT0*KvfP zxyuPYl@nS;04B@M>28wLsNUs$-gGMGv8uam&ZDSl;=*lBgLkZj^!~*mu8qZK-jR=G0b7Jy0Tzv3HKnR@VP<2pq1+>QmV);&JVX{j^V_y{v0-&+MNV^l z_aE9X2DXbx>=0U0`I;>r$ZbhRa=}q*?MB(Lh8h@{lR67p-MzQWS_1z_1YBLDx|4h& zsDeMljq1xqTSuxHB!AYsSlE4n278WfoljZ3d_M;NX?4K;9yh09C4hpqML@!rwT@6f z=-;4ckHXiJ_w?Pe?s3{q42D zmmNcOHicM6R?zR5_+Kw1?JOr?A`w~YE=YB+CUBqye=(x@C+Z?rqc?aN+#0Qc*p;R( z#N%$jZP%dhvMjQX3kiT}CH)ZkodEir5u;0tz8D&G_jZr^a%FQKCKzlsqtY%1kJb#Q zO-K*h6(|Jj+?|1Ax84k>Fu)q>L)P z3d-a{5mcUKqOok_i!z3wvd*9#a{@~8yuo%EkL@d6tnEO`7n3wyB zBkU5vLUV{K3y`Zbbrq#;RkFr%h5j9x8S>sie4w?Mh|R>iER}G<2ZIs9~{e*|p_dJ5_?zzVLC)prWu2qMix+UG|AWu>;M@vinCMSUMWLUeu#l*>F1-^wjUWWE1AjY-~Z^$ zV(^{>Z9Tbuw=+2c?GuS9xhs3JhkngDrP}GBdJqI>DuC`zSYI<{j3X&HDR-EH4;%f# z4`t}4$e#-C0{VCARc1{UA3*T-nN?M^C5eX2&Lq5<*1ZsPK#{D>KlrEYGFZ_$5PO5U zdf2j|W3l~bjlGi>m>d>5wL2N1H^l3zJj8_zVn*Ox&%`^JWFFF*nri0c? z^(Pl6Jg4bcwx2>3SR(wj53280$b!bX#pS%9oB=mq<&1wkPNOKty{6HYgRbZXxK$j_ zuO}EyZ^lBBVbA#BCkZokUP{lYm`s0+(QL+%_d}V(0!*4e$iMUA$%EAd&}D%mY*jJ3 z%+zHCfAG)yEdT+5o+Vp7rAnW=xsY3}c{4CTtBoGzUGo+yM%lpbtEC>(t6TU6mD2&m z0m03p3Yy#0rgGpVa0{y%z+y}#u>~y=kZA6$^%c3XQMLz|E@h+To3aBk<&bozEJ^)} zV!^oLTvw!3pjp%xJuOM!X3rdKiM0qq1*lg(ExSgtzt*uJr?>EKnP37raD`me=aeGFr68P@HgcO!I_iS?K!KkK>k2CHGiI>MGj6s z{o9peO!51g_O3xrT2De}#k~*(oGe8nx~_1;h_*a#69Pg!_8MTJg_vGsQb9!`QN(K= z=#VE>B<&y^;e>z_sLiTJ#pc%at-zhU9O1{nfQ={`;QHvP^n`)xb9YK+@gOZY3Z;CDFadN3^}KDa+umq}E{FNLBNbT&$7j%fH(&bF z{Nj%A7h9ZYemn*gZ_)z*wKj>b6;n&+(L;?+?BRSsE5RmA9Y$Po-P8l!0LIM=^eBwA@actL5W%c`4RA z+lJpIqCnkt<*0(#boEb_csDO=cvl_CDK*8v29-O{to9jk=4arC6T*j+jVlJ;QhX0n zWS}%YH_jomQvmYq0yXnrF1W++jaD<4Ivf=R^ANgOX z`Ik&X^QVcRb#<0g0mG5UlQln50Gd4DUUE{=o2o@0G0!S|eOUv*!GU z;O|;7%1U7>{eImHMZk(mLF818hvY;VlSeUR9P(3%FXZ)k?3)ondWKqJ6h{b>%I)BG z#w=TLp(AZ<`0$kmz&C#kU0vCZC!B2-i!shqG?m`4%csI4I1%ssPtz|45UDEK!zwndFWQ2|?+^xV_n_na#ITMO-yL}jjye`6<3ui{T=$Y=LN2G^&S6M+0VU4?+KrL%jW7+~;&STRYGfCHCPVNgY1>|xG zikJV3x-oLRW*FY)+p%kh-6Ag+`vJOhJoC$depG>Fk$(qx@C{!~BA2ck(^sA&U?e>HS1j%B5 zfLVRxO8IE!*b5+}!m;?$Y!%?O2G8Wlb_L1lq+JaQC=_BeQO(L>UN*07nP8x)QhA)> z5TjZpZy-!*0BuHh@Q$s8&e404!ONKJbwyV2{vMg{=w49FHyu@dzp`a5@?|OgRwIpP zp)VaMMHd?z3RuOugt4*Dm*cGx7=ayo)ZA1gA+w(3m_m&1ZsF-BI+*`$WLX&ESwIXN z9L7_uUirR$pe;ebCOt8Xja$%gb_TG81X~8Hw=Dtn*eBHnF!zcovsJfp&h*s$jxG|` zFZla|Tc5zYijWVa3FKlO`&Mnbk6c_zeWV^#6bz@@+eKidVx49w(RVLrddr|HLxh@; zdF7A)fRb?zo%r!2$kh;}{74rR(Tq!|Ql%_{cRLoCJq{DL^rM}j!nYg?=?CsQ6AJG_ z5;@XtCxFB%$XjpSYlW&cGW6soaQfXviCn7P+iMI?M7AO<3$(>AzW0N$YF)Hjo4aOUf91H}dRd52XJnBoxfIE0Ui8mkLizs_1ZI>F zI*4W6%(~U!%!JhzV0A#jtW|!7X57sS(#@meTn_B5pu{sdI)ESB^9*>=cKJo8&hzXSQEcc!W-_xgEIcjBwYXgC zoc=C@h;1-9T~tE$mziPRblIdfn<}&wN|p>)vDquR;8GbRkYJzuE8%}XIn0zmUkv(! zUSZcA!_?u~vWqiEcYyh}6L1QDj`FUOZNzRNY)?WaIaem&5-sP{d;cuwc;*|vqabcU z^Rd}mP5^R_4jpgPF?C`y0J>q;k2}>@ zZVt$H9!B+Y>oU8zfcfIr>FavO5xZP5em=yp>lo8nQdl!WpX6w}VRx%;y=b9csKoGo zf@h0ld^DM3Iwri3XSw>|h&zJibqr6^20T!NSp{qFG(t9nZOsMfj_*7rDo-pB@~*6x-JRC*WF$crnlqBjq;%BBpINdcP5h+k2o4PRLsnwcCIrAG@} zF}pG%i5)8FW_o#~nbXZ&%p}ME_aTR5(DtT6l;{EDEU_j&tIN-raFcB-hMu~Y`Atqg z=!z^=NeiMsCyVAi)X3@&$pU6?!Dl$_PW9)MHlCv*o+lKCpo+7&!Dbp_iTjzj5q*Rs zF^$GCLLZXSJfRwHeUNZZhbr9O9;b-(h!x!*$ZD<2wF<8Ux9ESM=vMJAlEi4McJ^b@ z=u}GU=)xi~P?GKte95@3){eX`9sQW^<`>72)UAD3JbKS^}Xa0PD712P++ zU{Vz`(S0rxy1_SKRw!=0&>@E=5ziT9dth^F(-DvZR<6us6uPFnMa$~Pi%6dCFoWl$ z*(|Mf!7tU6J6WZ?JmO#L!teJRxnT0KhQ-`>!;*}^FS(YQ*BYPQ@iNN7Ig&MHsxj)8 zS26+8d~;eE8dJeRMOpEInE=#Z3S+$1g3q(U642(%>{lVK6^?ljqpFnp z*b?BTH!3dy&PRX*Y7iLO))`ID#6Fl|1)?kf=}|26u^3J`vA#bvMZX+ipIiFY%)44jbi4m=X6Um z*mRll!g!v$Q*q(b0yK96OGh#sc;)K9+HO*2?AMcs$X$2pWxBr$84T|^!xI-`L2G)V z#*wGqBKf^Iyiy5cEE>5S+`pXnuv5DK)P3V&B9eyf9c(;I`(-=N4lSqaaVgoPK&dtp z!Y)d>Y5er7zc^R<%1eLp=+n!wtpumyCr4`p&1XZh!@c$vNq2w81 zHTP^fa`=}-O+cpYTkt}SC*^F6ifoCmC`*vGV&*|Ny<)zau)8g1!qlfrUKRD*2^>Yy z(;6dV19nF;>qx$F5)i^piXQAkMx5H5+0mR-?Uj#!Wc_D_EuavIyE z2K8qR4br}_xN@CAVD?-$G#JSrMr0c-VSGB{JyzwWA8=z-_bvA>5=XFV%WtM!DO}Z? zl!7`OqPy`B+qio=UHOFtyLONus0fKB-{be}mp8qQv2gQ(0NNYSkIEos`LaEo z;btR}SQV;RWMB~jiszPvd{#X8*BSR%iIz&hR1jvkdy*PQB7p*)RG}xur|Kelopl3_ zdN5HayGN*UCBMMV1g!wm=yRP$BFp%CrxR07=?+Q#DPU>~>rKi>oGkMV$l9HE2!5=lh_hh(Dy4XC*0#?;C)@|^9TfQgk7Y>g2=V$TYQle zda^ih(AF9Pjv~LHp&>*e{)SjIh(+^Jf-yZFU`RlupE39_yr>+o`I=bXd62Z=Mnu8H>>};~JhJtNl4bPj`qjaHFD?>jiDo^&`xKOGe4|el3h2{X)fl+=5;Rmz z7vJ9Yl21kF5{*5WNP-&%lFB_<*3d*!S2rZS+>4-1x>IN3C{+RZzeEj%glF!D6WS6D zt0-0{@_ZP-w!q`fKxv*QK*e!8*($?LNKwm?81z(1i}R zXH(c1Q9`1Tl|Ua52&150%7u-BS3J{c;w;VI>PQ5Am}Lk&>7G#D-q5-jgJ9o%HJXHcf(>3e{p1s<_G)al4JkiAWt&Qk z-%XlkDmjSu#YJqe)7upzM1Ha7bL5~UmcV?$d-%Y=R=3;nCK2$ZBdqMOd#i%AGlaGJ z_lk4O_Z^X_E;q^ISYFWRk3wRtA(*|f^V>2|2~46d_ZJI9Yc~*~%f%j4>3G?HlKw6v z9Sk_ke`|p(J-y;^gk&s;oxU=88fgWi_e6)|7x08wM=%oT73)u-Mlq}mV|kxONI&W{ z_L>Al1M4EH!FPFf8gUvtEH7cv+T-25>xXq8whTf5dx~$ll)!0cG&WI74kEIJAR)?F z`y-ZumT>hm|N6} zpsqk|BA#vCqz#AiKCx}8DZl*_{$7d{#=^80*)WB(ep1i(nS9&c#V|^Q-6Yp-J5Y@i zPf!m2HXj$VwRfZPSJ*18AA>QG>?_uQ<_n2rW8reWuU2!dJ)N57 z$L@=gvg-Cn6kSbQZGGlL?NN#;Fr%y|8+xlc9?55LyC=Sa)n})Rr;0iW17YlZQWK!r~`| z&{6807NeMFj5H+NY-i~U&-n0kuvnCC_O^)A=GvQ9+8Jmj>JhNG7e#XkA}w5%29r1% zAP|jM;dopWYn%u%kh>XZP;K!lh8Jx(;OP>F?U-9nMc8_BLyqVr``rZBJqZp1Wc(5E zvCKWzJVI?_UkToIz<^VUTJ9h;k}qJ?-FdQbr>7hH5hXI8l7ZZ|P6n9AUBmxl;I`*- z))BOcJdKX2S-ezL4FE{RG=4JCTyKUjDqSc0(0Zccpr5NN8LFEbI`=Ds|^5-+gW$-kL3?4L2&pE%pMU>42GaDc!(+X$S z&0=(;^Gh8fH&?Ze;$LsLFQTPZ10>fxTN#$SV1$nViVg8`72KTDg4?V@mmk$>#MZMa zk#ZKO{6RMgbD}zo_Q-er7ZTm`Kd`x9gZn9OXygAs-^oS{e- z^a{qH{rt%kZOtI*c|qII?=I`>(w-)NO(ugMqcXzFhP_0>b!`wz)#vyV5cU`p|t5oKZ1$e2{y-$ zMm++bZau}&XabbFpeLt{s)dMe# z4gjDd=kRzd=($t8DPw-qXII2o&h8*!MM0>v(oJsZ##w*s{42s(LN25s>0Nz4UUsp5 z1n_|LZoIUN8qq4cpO?P4p}MyvLe;1aH}&`I`G;N|ZEU+LUt%nEho8iux?Jc~0GUa; zYyzrx>KZ}K!;rIUL8BvA>mWYQ{6`xF2DlQ57Hi>3%-Qs&=naD|3IMoY+pdJKl%sV^@|9TYf)T%IQ z$vRaHO5VL-Y{tnaZi>2;9&=34sL}JiGa=?IQbpC$HU6ZH?~PmWogFd{tpJz8y77wB zgnEIb;(duqGcX5Yw0m}wESvG&X35cP=^l{mX6*w7FiZ4u16~uzyC&KMZBLdQT9gT* zNX|t5!%&|;VUyPNAIJ&LWsZzqd;7J{4s`t%!iPFRP$qnZ+?@`0u(zi$CI*FmGzWf> zrX(Q&-MVLljbfnakVU}VuWtl_HNujABUTC%v`}#F2kL#vt=1s5$yt!2N#ooEwoCPE6kNwt+8rVcMz{N&hSopAd)2uVySVbF!7!jDHr4 z7xya2BsWhV`k+(BbBs;&-=*G#-JDXB;w^(`d9bVr!rQ59pZxyD0^wQW6YXIC3pB`k zhPR_`E%I_t;EA}dla$7p5^_2|#q(gJ(s07X92qhObvpF7F}*K1Xfb?E03_LKjQnHw z{^HxVP72_*depVaw6LCzLU*)IF?#X>Kb8)x>kBBLm@9m5l|?B09|W5LKt)?3D0IfH zwx<#k;Q0g?*$kL}a`gwUAU=yEA&pE*!n<)UJ5I_Lb(>A0Vxnf>x z2So1Yo>6T7Z5&Rbm%#sJ7@Ct#uSn*pS2KGO+|;(HhE7Up)LF=Qj!hvd zuH5UMUy3|W{j57=DG}vZvd6XlTonjA+V2xI>q$kXaFcuT5bdPQ(!NOUwD0MjisCJk9Ri=HDLAY4lWMOfEkUnE2%OctiCjtw^Cu;n>ZMlXKc4@KCn3e;7^Q5 z4wEAzodxGCQ>vw`868Ud!C_+(#vt`->1rTP5qs<@&_B>=x4t1~$27>p2(C=XO z#?*%Awwf@llPKs+9+R9^qZw@pZ z3MJe&m0@wmt)#;ayfx2gKeAS889iq&t675sUwn}T#y@ayn`C~ zhr;1O0io(7qJ~clRp?9D@eH3u$@5 zuu|e^5-+cN(D$3@3G2@EQP{Y)v1XAOU*95lOPat#WCIV_oS--;J=^>|8W%RVKssAx6RSs$SS`3{6gcBM zB=Dp})qt;6ppGv!KP+RAu=HpI@{wUf6?1tq6P%`1H8^rKM&j=!8-~1*zwdrb0oJ07 z=w7K)#o@Rdd&R*mOVgtV-9~f7Ceey*eLBbMP|KM`17gz=oij%(Hu^>7bWh)(fDHLw z8)*?wKIj8L)0NYZ3>;M^p5_X}zL-S`2FjZg)E{j7dOUuQL^=_wmY8aV?Z*hzrs^ zYa~2vCIwg$hE~_X*kUt@@zg*Aos@}%bn&DxoR_M5sPK3pE)~^pYQ%Zg!FjE#BJymT zLjwbKpMXfkuH`&iyCO?k`%eMpIWQ_me~2H}*kP^y1}KsmfN{zvzBSCc5ZB%XM4VDM zxfae&?w2nnSo*5@3|a*X@p&jRx^`4Z#DpaGAbi;I_DG7h?RY$|_&ckk*S#wR3U4NyR4OalC^AzbXIO&F)?m{;IWQI@#FOp;gzfqW?C;6x-{%aDx&~=?;21gT*7GZ`%d)9)OTep|6Ba|`#VAOuL4!(Eg9w3wzD+V@Q_< z_7l8N=hoLkc)HvWO;1ZN-eH(VIWA2yFalq*;4_%Xr@+d+$Jni#(4rC?1=5+DyzU`R zyIs84CsJ%HWva0@U&_kLODA^X@cP+J>J<7z_7{0n<2!Q>PP$ax!LN zGm1zri2zS5a*$NQ7m_QdS1uDZ;cmk;%~_g&i=-E^$EH6c5+DJAw^Ox7)tN%&U8ZX2 z& zn9V?hVn(65K}~tiRM}7Dg3}E=47zjPMsDQP@P>D*7t!d;(`O}?v=UyksOorl`Hh^1 zcVG@>VBBKDIvn`teXpHtLIYfUxq$*qeCu*O1m8)M-9TdY>m#YsE;j`*A0wA3$JUNd`s zh9bY}sE*+ale}2=wzPU^!XY($%$6vTl#}wx1n)p7K0>Lsu!U~eIxTHR3h-ZOdASr zjK2aoY*uQr1U6@ncfF2~t9vH6!3k@>X5=1-E~!YcsE*o|=UwfD+}%!UpkoMI#m#wOQ>H0EgC`SRe z5OTtzgWP}1Or01-EE=}*m+WsJw}I(--Dp7L7EA4sAc@3@RKqo)F0Paigksth^r zCbI|Q{L7^Dyz=XYYr{1oeOgBUGyK zkqMUYbZB;!0&;-8mGuq`d{I@`uwd?HqZ3lN&30p?LtYaPimiRS&$c#k&?68G?q_Re z_f3)g#?@;Z3cK&|X){kkiZ;W6lM-44m!8lHrNC&{;V zC$QacD`T!U#P{9YL`=Qe;tRFO%uOjxQQkbUA2v%eAdG$8Lw;hn-gkJ;_lfQi1ZL~z z6{L-cj}@IwXcZF)@jx=Gdn5;2RhE&V4fK(UXFm8QapOs!E|H$-r|kV@vx^R|Ugy~D z%Emcxl_5y|Li<2)@t9HGLI5s~s#OeM7-Y&_QDHI%jdj+tjz2h9v9r}z3h+uH^@we@A-l6+4mz6 zj}2%_>n5X~rL3*4IH);)UN0DzckG%L+m{APvoJR6!f0(>;QqgyHwB5M4U{tJqx1Gi zJTb16L~}jyUvEb5;VLw=IDh!~*~39FkN|dD>Ea=Gdj?ZyvuBEw?Ii;yCC4p$h=9{> zjPKu$i>Cje?UJ#zfnQRria11gHO)KxR;4&fx3@G=0<7ZA54H*eR)#?M!2+w&1j!BN z#-k4Cau8gmYWDe3;uz0Oq7?RrEA;gAH8cHc4Je!vpL9I-CKRG7A=m|pw`a2kq}SFs zpb3Fa9Xi(`44Q}ckVNWtz*|VHlmiz}H5DN!#Up6OzTrYI^+!g-OT-dQ0GqP|dkBgx_5MHb zv~jKs&gP{nsV_0gP!X|;f|0Iyh=*XGHBj^_`P@H3$F9>#IC-@c_*=!j2M`=hhp&v) zJmZTn*9y{mN+W(6KbL`&bn}_7Yo~3V`X!G(U5#tPGkIbF3`FS>XS3los~wvKWNN#L zH;J?byiKMJ_l&F?iFSko9Ns2~uQ%;I@N_2fg*J0S-_#UgVLk+ee%AsKH{OwA1r2Y_ zs@M!s*L+v<7ZbRtw8XZ|syhRDs+6dxyDekiBpXsae908k8zBeZpWICj`q)8TTj%FFC_f2#oULS2jONL`K=69@P~8=5FO7%gWX11O@WPf4t(eV$;&-Ip3O*hX_B} zM-ClC=)nLZ{+JwsbJ5rsckBQf_~}qF8-UXH?>KPp@pS!oMfGgM0V32A30aQN7<`Ke zP38_UcMifQ#y#rzNAX<=;;Q<;whJ7lG|&`K{H3-GUjjYCTwLa51i{o=MGWoNrR4o? zGAl=q7SckfNNyFX1U=k@x6!*Kf+N>NT$x}2gT~5`;K7bsKe@YfwdxZADtujqmn7^- zB8i`D{Mh&_hV84Bg%?pyM}YbwKo~f@t1U^VGU96FqZRKHS7-8WM5bm@*V6Y^{s4>k zCd&hxfI37T0ExC7H_~P1i`xZ6t=HT@VzZMnf|3HO{+DTsRX9*%2d*bA``*G7?5ty` z14RqSGzi?anPIj>&hC^Z?Rd%jy}0*`>rkNx7h5`vpqNPv2VR9nag~cl7zl+AiwU}9q)7`OMBU;w=B)IRs*?nPQf9}^KwI8&x2v`?zUhcOHePj}5<$?`5jFZ|u=&>~`Vb58VIb$&j<|F!R~Ksy zyY!nh%yS@X-7d}?KRW)qL7^V;xB53J#XqjJGCEDSdfeFR$>Y-xohiVz-01Aw5;Up8~p$9{T zYC^E}?HdfTo>{t@gS=MTfzB)FLje+V;!32G{aq^#f%WZ);(7`PwtuCGD-C7XAK>KR zEa}+a71gX8>Z{UA{&%dcm2LazYbcd?89|E@Th7(#TV8kXq>bm2XM}xLbT;ZdfX+VPFq2_Imh zP~%)@KH9q^&P$~|xW=hp^{L2QYs9FPm>@R_QX_nC&GE>dk)y~4U3v}Pkk#u!)3_rfG#Fl18TR3B=X9%4j|1b_lyh!1q+iwm@0h(Y{~LmXg8Ga7Y^qZXaTvJWse%g za4LtqGCaATh#s(-eWI8{E_4sOV`LOSLaYuKR#9)P3+#1%mIN2CqMS2Igyvj}D@dX+ z$({no90Muc&1|)X^UW2EDbN{eHfr>)C@qaT)zuzHL77;B& z<1xp35+N-|Z_0FBWG$xTyXz)uG^IUpQ~w~8DJSz}dexAl9WfOP<!pd&^)V&S` z!4~V(67UUB7`b0Tj`8=~yEI5DUyDV(jAPY7B=JP~_LhJxkWJsgN}%dW_qf%uU8(@u z6vsnW@jX)TZ$HT0kQ7&(dJ@*&3IH-xu5?$VZe;6yV|nsvC-~Cn{m%p@B$XKh8?(1V z2t_303R|W)MV>{WrulvIEDEa7{AJQ%P~C*PE+ne8*KiozbfKIi`~Vq*;91d-Zj&;W z%)=@?zUUTcJS*%MQbf;R)ka1@KMI7a=<`HgHC@Vu3~Tb8 zx_;x*VHN<8HsNvJ(LT*!x+0Q|l*aK&hKB{Sy3b2k$M(e}g9D+RF569+Y#w<`odTWY zurx_r!<{$=1Ac=7${xP`>Q;iH1y0*d$HiljhO5tu`*pnyEysx#juE6CVzUNd>o7QQHKzUr ziW9ISJJyOETIECO~<>n$Q4N3Jj?%R!ze+Hw(rh*+>?^b z#WDjhqne7;f4h9sbNNk7rf^nPX4@@?LD(X)*5TfIuBj)R+LQqQO>#0SAIL2Cb|~CW z74>L3Vvy6)n%vFi)gv`0{b;duwgE_vI>hx<^Y(^>r5UJax< z%fl_T7dY85v1Yf`!jXtp5?hF`i<;E@;8m+%>(>4}Jlu~&p;)$hRL>V*YFAICx|h~s zk{hE66Y;xc_|g(Am_9%3(a~y&eKN?&1Zkjy=Ng%_HHXc;BWAIBTv(qfRW=N(s3lT{ zSi<5|KT~f4_uLLh)HQa8lnrBI|J$I2v|n22tCl#xw^^wxGgp6Mdb7V_Wh)2kZO`JX z0v4DZ)bDIyD!ApFND#UlZ9PKiOG$3GM{ z7X(U{tU|%R4_)n5oprTwSmB?I@NSw;5|Vn!9Va%I0msz>rx%6AHao1}L(1Jus?zou zQYSN{543>&UMQ_r=*pZ*5iYUBurnArBExyBU~>RCzk9F0cEu#YmpR@Q0^Kn-GJ~9* zbff;pX|H|^913et51qu|fk7aDqb*sQ@#{Z%Cq}p}=bq4LpYrN*mz^;%cy@6q>NFiS zSxSncSoJCLGNu6kKLEfca!Zd>hXjDyCTvj;al&dib!xG3nX7$lXx050N-Z?a!fIjv z8LNTVnpGXXV@kGtr=ipRRimvWKW6*^(3lQ3DlQ#h&c3N41Ab&9$kJDqXAvXto2u2FbGx7o}o@d~l%xNTl?Q$nTUF zdch>K7M{i7QUJe?%PmlNg};fW31O&$#XWXQE3DSqjxMbkbtj6x_AhxW7&r}MVW=} zNwoTgz91^nW_DOLwk|uYpcb&7Q`S-WaqK;(ELf7)uV*_&ZMYO-ftpx51e&kNW0+Qd z+aTm{`uSHH>C}@c&(3C~veD`evghioAgF~Eo=eLRW=i=~do7Wj(z!tr6Nqr@4ajDf z82+5L%{ZIr#L(&pfE=dKVTd_^&PVZ*ORdYpZa*}?=1gD!b&Egc31)_Z>E1D(5nqr; z`Q2n_{-wP|&+*!Y8PwQ_os#u)#UKJLT;+V?SmZ{No=#{ciwydT8@2vh&&o=MB9!jl zL){hCdM0$;U|?XHE?6A3WZWB?!v4slNZ{wwd3Z_>&^6^|>+t!|UD-|XU)w}?yM5Rp zdG!ICI;XCOx~fpMW>f9bAB)vUd5ClhC?^tk5tz+MNDYE6&XjAM^((+RulF9$m+U1& zzQa-UQ=U7Hdvz(?!6uMV&{KQqo>9n1oi4xiV0}@EI}%!e`uFh7{vb(UQ!#WpDnEl zw`U94=6~A<77ptEf?{#~>90!E<2%Siidq%xXo+W}s*}V9fhFyZ6yuyl-NY#n)w>>X zFoQ=G2qEV&o$Zia|$^|o&8y@Fh4gf$>QC}nRuIbSL*Zoe|m(ulsW@;PUs)$L$f~t)$dIO z=c)nO@uT3J5(LnMk~p`*nTe)-`##+=cXDi{;W4J22Jo__=Vej#yxRS+$mRz{+DO&* zV;=rL>cE;UeZAe_(zP6$xW(A0+rLC`EvcWQ>Qa6<_ z-N+}q;urzI4>B3q<=zT9#ab=gs~H_fp4{LS5!>tA>XF?JZ-TOCpiR&poA1cT!i~8x zhn*D5s*^T(l(8TulZh67HnqwwXP3uVk87?Oyl1j zL^gHBtiN1ylz*Yjmpl&Ya*c9(H1N!@>o7A8}z<1s37#Fy@r_~Or$jJyy^d1##?>K2?7g6r+uF?2BG1m zpz~O()V+U#FT(sNLu$aK%H!l?fM!K35-;Q9bGvS8>zl-N5oEJNmA}o7HUTA1yy)2W zH@1wAajGB76%}liPN+UL1G8bJ-|q$?+3og#U!YgwO>qg@!4o-1*Ws4BlV*o%iR?;J zfNM>elpFQ~PRlr=7?$Ue_qG3jDrx{4scqJ(RojEqvi|P*%7O3+)Z_8^Fs;7kz@sJeU_~Lz_#AtA(n1_Q{CFa(}1TJ@cZ(`&IMi_SpH|(m`u*E-ENR z2xI%F9}DPy*?YJ{`4K+5NoEl$IoB?*4BC+c_!%2-9uZNV- zJqW<cI{!eM4Mut{5M zEmNzlqhkTp_xqP!iaRYI$d2<9pD2N?X~J^kI$iEdtOONZ6t!2!2gq#|ymqJiwhrEk z3~^B|$l%wE>gu^SUQ{sh9!@ccUBI^x>UTf+1d zK~Mi?5lK;8??%@2Ghy2dyk@c5w^Ncrc0Q4Y4qP*aj8qb~9c51j%S#;ddG_=XGJ~iZ zOe$}A8tnV`IpPzrsygqprjUI4oQijD&%pFD{A7wZ4P?*LwE)B$&zDJgJI5$WGYwDt zQ0q)bjM4TJ8c((#qXwF_A+h(`4*4FLAqcgi%4p7)Xw*t919Y@6PBmy9znMVy-Qh=z z*vBi6V;Dt>0xA)bPMKY^*Xw=%F;x{#EP|-B3T_SDoi>m|3aC1saUJauvsYG)VT}+> zAx6rX5^fN~ymcXr=&Q$hAp~Y17v}CVWW7;QxK74-rd)#XP)I@@VCnO=E~vcn@dBP0 z<;a3#p$q+w2yj8xc*?srXBn}Bg1b|I=gD`n&Cy22LkOce=6P`g1tV4 zUK2E^g04DdZ&u{*`ZyzsbBP(|W=Rg^z_u>TXwixH?Bv@V$#q4R5j^U-i@k#VWwFty zj4M;zD&Bc&Z=IHacQ-vSfi;q5%IhyLlrWK}?f&Qef5c^k_D*eylZ{JV)|AAS5)Hvm zS5qTLC2_9I?Wovg)%I^4%8^5zfTsGH6G<7(aE7--c&MjX6L_gv1-hu`!1e+|ujqw& zLM8hqe+1b?CH-9DrZS?=;Zgrg_;Ezv7`j(%WQf^^=L&Ro@@1(>-q^p-h8nVts^|-l z=i7izG03bZK>oN`2_1f@u4IVt|mo-ds;!W2th`7-m4{3&RF>l0Y;L1h+nD-#qTDQxdAnmXyO=s0Y|=$iz^V z%{b@lI33`=juO=lhCm*OcW3I>&K6<#k+jqM* zw`(V4rF8ifnHp!Yj3Htbl+9vsl2_a)`B^>VbDretTT8SVQgxg*G^o7G3v$@m27)qg zf_|U}u+A!fsJZ%8<(^CU2vUWkyT_1OLbCc(C{hB*MipZhj{|Y#58VyPCWB+Z4{5aN zW!Y_LA)4=t=tdM;JOQRMB~?*%K_)X}GylKMEwW`|BsU{4#{dbqs>>I-w2%1UTDiZ= z%D2q9viy+D-VS#y^~)r;|E{$nitOj!jfr;5P@Y&n7UX560qYk=MGW_HWrUWbk!0FAPDx9BYl}K?@%{Zk+zLLV?h- zG>9vKX25By5Q1{!VP_4>*^^p!gL?3rR%aXcVavJP|Ly-!+n=!$pT!z;PB9D4xfg4^ z*glHero}saVKCaM{x4RJWQL73Ey{<4ytFLCQPQTWK{>&@OBomD~!zo||3N1D1lN8gNO1P~_M+BsrzjMad}`IwEaBie;%KbfrN zeHV>X4;_?-hf!X9w~R*lGBOC*o4Fs`a>R!XbX8^|R32`Q#U9{WE$RW-!;R+tnxakrzfH=Zf8sz7n3C!}m?n0bOX-UVW z+ghL5&qhIzxk?+wHk-M7)gnj^&2erffpWzNQE^yL&IO_O)~bYkRQ?st%J4mbYWS2G z2MJ_Ls^aV<`;z+VL{Fb^37}lzoW>7>ou*9razsqjwk#s7o9lnL%NF2na_r(9(wsLF z`0kJ-6&?()c>}Ifg#%UCUD}*FLyRyqb%Y_QaZ-1KJr_35Z{|_CmA%HYiZ!UyE?#Be zOhcU;t8S_SA+S5q5oqqcT3Gh?ZQX<&=)mnK1#XwZOclthD;~`NXm5MB=5a7&9vR&*^e-W! z7)EMJFjjD;TF zaR>NhS+in$m;Nkk@!DT|hY!}7d_Ib}<=23i2#>D?gfS*f$Pu8am%LCSaoUfDj!w|% zX8FK*BIWR)8AjjhbV{5M^fx^3cSi2$aF0dEV>UktJB`hT<7~V-O1tb7lR~j4qA+j7 z80s6lRZl_YK>JjyqU5S6k#cxPzW3FCR!uuF+=;2Qs7J+dt6`p5?vLGl|6CyD^bEeR zBAaHOiSdpJ5}ZbAo@^*0Nmvl-wc`~G-B2vRN_`vp>Cw>(r{Gzo2zhd>(w~ZNM@j`d z48lUf+95Z{*fom?TCkD`HCmnz%;>%ryU;e1{8b!THu0i9e-XaXl9wt%U7EZAZHxA9 zC!;4&VWTOm93FX%5`DNx#yrE^W$1EKKC4UEWb%iUV9GP04b*W0{oeLg*)gn-6L za3XK-gDNkJW~!DVWNbmhICZf#P4L$?$Fd;`0nR zWZJ^+_))+%-N=?hFk+B3rC( zrp204LjTj+4JKB+z7xSGa=6!dpat}De=J;u@$hTh_7>O{p!zFaNrY(KIF^~yY<30h z@5Naw% zxgFkKjzZG6ZW>5uBeJ8nv;z(NZ9eT>^BdFIZ;ZyhFYC=joLNfOfo=|#YA}L5loqfmE=I@;+bl26vZ85s8 zfNRs(mXv(;Ep{$SveM)A-^ZgyQZ@ZopICj(y=<$iU*;jwMtgnp>Mf4gG09xzDC`#kGu|suhzt1i3rkddnH)vdmgAR@_i)tK-6=BCiYGB;82S3aYF!dVyEZWTW%+2^(EB+)U z8)4-mvcU0+cl$A3_K}%Ap0>|ecq#shq;) zj@I_}xp9rYm;m|HS5DW00vg#^P9g(9phWn=^on}vBE#+-qQS~T+EN6OV`v^nXz#)y zoga{69^#MhhG=`q(nTF)OvY5e9WCBYV|PP&#<*dcN!pBuCAv{3|-*0OcBs=Jr>IURES#oQ1g5!O+Y& z9+rtY@pIX$^+B3UbVHx;Zz%khiO+FIXQ1b(1V~PR+2U#87EBFqy?5VbXB1ZBN_9rY!RWqkOiEOz z(O6=FH^*7TQx;X=)P@Hv#W#GtAo5U7j*k2E3-O6KdO8J#!4h+Uj zqV!T3db-ZY@nR0>=SD}YRoIB|g@n-$^KS;&s64z-IxeDDpHHhfHjdGa$^VH&fs&uv)RO>T%#$$pjbL|HKuv?a5@wqpRtA2!msJ+co z3z=2!B*H&D8ivU&21GQ5I9T$BHSp4wNefv5&wZKT9>do7={&roGOL=vYmL--xa%Hi zB#)tpy-Zy&%=v+Wlh0gfCaEgM-oIW35J(PQZ_D2i^Fn}dhzbSQff7jrXL58?!#|Ns zXc`s%+H79S@|`94Bv@h{q;URYAw)Ek?lxJJipBHE8)LNld z7SjG&y_=fNU}}>8$*};xKc)oJm1-=RZVM_qzUU7x2gs9_0wVw5jV*UI$UecQ(!IE| zd;`IF{pcY9<@oz$+mrz0ZNHa-%!CV~2HKmzud=p~-eG=ww2g(9orMbBA$7R9J6~9W zBhKXr+v&sz$O&VB#H3nWo*nl@$1#s3U!AUkjs8uwl!vI&Ib2FL9R|9wt%U;k|$G)t@qOc+3ZW9O$Q@`>22gMHZ zbJIWcsQGYivx8}X94_xYua2=vzq$IWtB^Pk4@4wF)-%^9h9p0T zC#WBA410Y6ri<42NJ88uXyFm7Wd<@%3`8RC4Si$S)viZSYg+6JGZsq{xoj8A%*!FE z7e)U83_1Xu04|8vAv28Xr4Tv1$$(TuPJgFo`F|IPYil|lY5%ApB>+8n{R=uU%D1*Y zd@vYYHgBy2CTz00y(R0bBX3CW0UsxVVQCUO^gFW5q0KO1f zn^eMGoLQ|x25Jc=qj|Uewq<(Mc%2KAvC#w;`t(~_&ZITKznG)HF81s|#IU)G^B(iy zZ5(T`vF&cwskWhviI@4fjiyJ_v_p5%70y)(IuS%BK&pz;sUUVM3AwrNsdk7gyY6xZ z85bgIgSBHXapu70H^u$^@Y3~dQ8Q*KmM8h(MnykYA!St#1{!76*M_Q172m{13Rbg1$||tx^+!CUiM)Pm_JwnD z00V-3&bc)7Y$poNO`*2rh;WvU4f*6$-NkD=E**|`4Dr5IJPdtfB4H)Hk*7yV-Hc zU|I+|MTPVS1uMzekSPLzD54T_v!Ad;f56DXNbxdq7o>)->@g-D4SbgqS>k#-7Hk_ZYTDtJQdY-6?I|twsoYX%YIR$@8ya z!DKP54PIwd3t?Yzr{|=sBQ5Bg^kDtNB+$ltI+|0^l_HWsB<}~I@u-t9sOz9ihFWVy zZ)tQ}*)hMKM;c&hTykp{R-L(3*7v{1Wt#8X?(&`q`E5PeN z=nq<>S022z;E2Eh=>=U7J=ue))8TxC)Z7#Fm?SN>9%FOlM+n@C37V{gIMOW&zePoPZiF_!`aihX08?-uheO9@qK<|pu*lDvpl8wQDs=W$i$z+?Yvjgo ze|!0@qey1`%e)-(gX*hD4=qvIYaPfz&L7G<*aV@Bp`eSwmwk_v*!KYs zRL0p*MHFu=XkxVUREorC&Y4hJj3cFXh3`WVGc<&R!UJy|i(uZB84rjI{!IEe{a%0g zg@e!zM#SiNp(p0_39^^s^o$c-pSBiD8UllQEyRAl>y0RtU}*Yx0h5RvSHXiQ){ zzhrg}2%`zKx?yB`)erws84pd{B=zx^xaqb8xG{Z0hgLkG^@yKN0PSP0b1GMx0Vgpa zQ#}x5nB%q9{xr~pnB$)g;TQ}yuTPD|Pb}yq#`T}?UZ9V331pfax|Uf$E)yQ-bDr2> zaC8JzonGpwY9SqOJ^1?vP$9Vr+(7w%M{R(XbIM^lvwN`{)3jE~n7+wn5GxJ35Tsx; zH#H}c>qlp^Ru9T^ba=}r>;SrYofh5LW4^4qk*mUo3NZKmBzSevIad4uNaiwYBPshT z2mmD-7n2;w>svW!d6Fb{KLT)Br!cF7CVX_te{*9YPENUh}7toq++j@C<&XVcP5G zDZN3^EM_*4g=OhugRZL9mF{WSaPNU61F2pIHhkWq)wx&zu)0@W2z-h?ypTeD=3Wh`1{8#Q{a7Xd&3=I)m~iMEw`d>A~rO3|S6EeF?635ucz z@*4s0lFBQo@vX0~b z!M~`cgvx>=(Oi8DnJdWb5rvKN0>5_3tXjUhvldtEjETQn!1F!n-Me~6sF+2OP9fu| z8|0U^iaL*8*%$PyF(#oPc=q2gmC8xP+0j8rGrqt+PPye5Ne>k%pn||jx*k&ygE-?j zbBWezdSa26*f;^jkY+o&0Xu0t^Vnf;hIsJiTGsaL2E|-it6&sNm+9LO7{@OO6wdpc z0})znFZ&Co=d|im9#>fR_)<@LR4on6!u-f+2Fh$THOnZh27ptnjX#>sbUzf8ZctCQ zv0kD_@*&9;GVuDk^=$0J`o8(<{JnAvtAAAepf`FfsljmJgr^}%B6Upxup#P2)UAcA zJd|zBfzoOiE(;VjsPHYZ4o)s@uIHG7+u)7Sn~h0spq6?46l&7uF4<|CW$W_GC(` z$Tl*=O24C3D1RP8`v}-W>`TETn}AlOwW5KQ?4xL$)~vn7s_Orz0jr_#5hpcC}P^x&Kxhm8S>H zjC*6Yb%>@@?sT>5U*oR3h4#(W-fer(R*M z;i!b@5fx>1_V9DIjrT9a3aq|6k~}LH{+lv0l!0`4^S4Vy{UisDrZJ7?PCxj=;u{@>j4s+u}Xc96$r{e?% zXI^T^!yw#hw&u7>?`zkZWa+!Ul|7 zV643cF*I*+gTq4q-HKOuSNjdM&ZuCX`MNO`@ox(EfaJ0LuOw7iqkE_&MwPrOv8VAW zSXcfT`MOd-Gv#d^9~o=cy&yvbU&5S0%vUZAyMirOIW|+RV&$jSZU_Bx6XwaqkF*CX z3jXA0ClUCgk9px^qR2y&kmA=&u);dB8c?kPQ=`K_LzTou%u#l2wzlXw&rfCH#=4}t z4h)@4qi<7c=_?iJI!l2n7lm%h$Gcw!WIb^3P>s$Xj9&16r*p`?co@w|?B=X3iPFsq z@4*@%1K_CtIIW3^GpE@vevMdx6F{uO#VB(BaonCZ+9L2uvyF@-!v){8+!~+}yhz4Z zw@o?#S8TA!7W7om96hHav6EBa5hKmR!fIy~7{X=`LI-I9rO1cQ`OfV>{4`D-J_~OT<>jy{#~c zqpBk3a(wJCKqZU~BsG5T-sKQlF#=BORCRC zOt%)%;xY~%-14f1z=_76VUz=aB2-Cfhqb}xQ4>M($h(6IBH1UOxH9{M9gR=aXe}}U zQ>p!Hp#3zQo0yw-`+xzBPo29zEp}uPM_T=y^jRL@h*!Oava95|~tKao44#gVm?zYRbum=pl@K%vv8$nWUYhE9X`dbMMRNs2jcB3 zOJyPMMGyk95t<*QNkO3?3&u5f_Am@DbH+N)DPxhh;E_!)9*CLjnqJYrBY0V`6@QC| z>6{KwIOrdlJ9p{WYe17Pv3AbRbVQm7XX)>+klKa|!`ER707oBe(_#YpLDgfEEL03( zZ$kB`?vzf5_1Lw<-YwI`$70a|V;C4&`IQV*M5YCp=K3sl%4=Ra{;IlJC_P(?jKL;u z0%ApYm@HzH<*3}IO=$Ku2B(eLI)Fi#k0$swd0;9g7Ng4Qu*H8v)%TK{=ub9pKoTc! zQjxBbXM8=;hCb`E3`)dlLMV{_wbKN0g@aj|q~=#wrkCh%RNiE(XAQVVs3zvzDza)f z9Cly^LexJWTkTWM^ycD4anfei6xa%mIuXxh5~g;FM~xNg9@Huk$53_i{6xCUA6ACrS!e`M=F=yI@XchNW+l%^1gm|vit@ZzOJQw&?07gKt%KgeShzH z8A!keUf_WN_lFpJi-FKT>Q$fJzKkS@nVesx!GxA&6C-VopMy|xq@Pw&PA?!uWlVjyYjrW0=)6hqF%@Y1Upm5}Sz*Pg5Xrv;G7t|VH7BX)}K*iR3f-=BLLjSy&ZIb~reum#1`r#r9annm) zM4>*9ooEHxvZ)<6E9)rfnbl+S0gWG78~2E63Vehg8SG%yZs?iwt@p1aTDT9fq_RpN z4(`z^id6`0sLD*5fz=C!1^OaJZAKsSY~jc{&a2tkPu;0zEtZAe8g9X3#+--~U>b=y z9U^_3i$ghh(*<7KTZ`a0{i$DdoU+%r>Q(g!5-2D zX(t>wTRbaour3GGSPlyZ0yc~VEWYD^D#<1uhq;EROY@kA`JFE!6CAW^M5{T|^a7dN z*0C!wQn25mT&rEVL~zCHG6Vp0wP^p3vUqUUPoO1C=`qiRyeEXI6?IUgge3V{?ZNM+ z*5>cHst+)L`TT-$vXuOgkEZV6+HKXP!Yjw$k!v613Ff)Xf}X-rMxMscN&Nv!v)>e< z?yC#4keZYC6M2F8VpFl7Ec!hM31fi=zfksG(wYyxgDK;z%6& z{EKxIS4nHyK%Q?F)6mKptsNQpyT&@7C|;`qEy**_GDR_4dBP`X#U+VY6ST<3&V;(` zn{0*!Kd1KFa&<@(|?(+Kn znTc^6Mke7+KtMBoxwR5ID=T|T9O{fH)5j4N#NydajTl`UeOm3RV*mv_ zcq%f$7A4}dKYgBZvBOO3eITlB4ZroRv{BA9Jo&9paRFQ6zXPpvYj6C}9zw#X*@i;N zApRF6m9Fstr`n<}dmr|AFWC3Du*d7!b4M6Ywc4Gja@1zbu(K0@g<;o4q*4)o%Wwxg zeM`i=s{6r8-~I~mLR~-;>Y^m!L3c2EpSstmlD~ft&Vmvmas}b5uWEe6`(g^RK zN432-#$|rVM36oTwh_YvINyMWA}?OCaXRC`k15U(JX1p5sa--5P+rpHhZiBf2JtDu(uX>WvKehU`vwtH^pc4yOQgwX&bkaCDBfSHb1(M6LnW%M=JnV1b36_LSxQ@ zn-8$`1tX2)@GI|fiU_joSSn?`xBp^^76bjxA9-7mwQ4ryBdqiF?xsbWQB6~}rOV@G zt~(1g36C`wT0^2!N{cC&11SG3oSQYwN~A)br2x|NHrO*sOq?Md?svx&_BP@-RxD+k zg%6)+O->$VbJzq8@Ri}E>l`6{Mpr1A#u#B_Y1DIdUH&}I7^X5ccoT*-Ofp2-&mgDC z^?qEbyJ$`&6(b0S$?wpg;-D`4J0&~unW7ENu~M4-yL8Xd27?;h)o zUM03?D0p&Ok>no-`RynPp7ng;Oi4?8Na!3+g(*Y%tzOb7P%7cbeV>9P6`65}KO5)+l7nxMdjHcA0Y#lRsj zGcx>~uLo*O3Mk5jSL9_<3H(_sztQd#H*@VZ>wMHf4VGRVeriYeyl^Jp~{2-y<;Ppa@q#6;pR(i?lMXJBSv*av#EF)D*Lj__^Q6J$$Jt` zbK~64?}Hw{$HhG}oATYJfm`wZm8Ti_dy-BjU79N)7YR#4`E@(&N&5tRMh4O%Pkfl) z16|B*v59C((}A1NqUHNF)WNcNR~eQ02kq3S!3Y{;)a8>D{`FotmUUi|I_EkxN32jh zXg}PV&@oz!-8i4XX?M~enUU6i);2b@_GOd^1LCt!=;h@Wvjw^iJTf=?#16IQ=oI!H zJAN$*sVyjJ*{vs+C@q!fJ$(pB$BQpz!{84;M@??z=|nB~sj`o2lD>^{{8D)1vDdv| z4Bh65KPdnO5e%~5yY&zc0bN5gktT3KCP$I8HGRs*_p0=xKt-i?E)dtrG6=bcH6Ysf zV#JEsE0hy@|TuHW&2HEwWe`R7*40^Ab=7(&h=_0B(EO5){8YrGA zXh1%hAhWrytwzFd!F>LK)4&G18;V458yo%4xUwctH|>DR5&UZP^9c4l`=k%)$IvWb zL+q=BclTdqHI46%TLYB{F%>eWHaynp>YCJ*8Wv&}a%_VI&RxPD8~0Vf$ud_|C=7o?L^Y9P`oQdtBcd(rOSjO7=PN9uZKTwrIc)Dz9wm zTFsasV;D`wq-)fszcwbRe(#gieFI309oaIX@z@j6{`1a_iI_o@Tn8_M z?VJ9!q@8QOd^VJnnX{?LWFD>lc3$wC!f%S-&aOpHO7g{a;I>;{*i4u?^`6_~hX%>u z06l(_Nw)#-p#OeY*epL0*c|aBrtp~LhDc(a*MS?UdkPbO%v1{6mjb0>E(?ZORD*d7n0;C$C78Y0LlyX)*u|^@3sP+5@ zGtST2*0A`DD6};nyDwhvFe`Ylq6uZ{vb2r%UMP{F;C73J@-N^(Xj;ac$<1ebk@71q zc}=!eegx+Fvn9JgvWQhtD z_VQ2l`)r#>y8USLOF8v`_P3__?jwPNcx;u-K20a`r> zWqthG|E%V;hK$>(?u_J&(TgIc&N|D*1s%qz;cP!{ACbH`Yagtsp(C?hfP9&0E4VrP zT{cRAv@UTNIpGcQw$N52_1FO&MU2c)TSS?A2uJj8U*6cMKx@1i%Vv>wC(N$lhy(j; z%Es~N1MzJzTh3LRbLP+RH@+Lw1{ioad>r50H%WWn=f4WojYfy`)ONsia%r+k@%Q>5 z^CGWzF){U_MK!bG^1$n3I2&bhMg!y~dm-B*H_^DwA~58e}Sql z7{%xLq8_BKK>&}1n-!T)-ufLzuT>taD#?_bk#c^;h3xu;J+)9uw^gmjd>vFL_3T7g-1J+-k;qvhW(4cqI zPPtPY>f&DBIJUa#G!8G6?p7AH^O?+^=W5Ht2FA%U#32YgA?T&p>#@lWndKc_S)0=icbW*yqa`u5A?3527MW$#lp%kJu;n?VAz% zh$U^ikr=P(e2&6(q;-|x`uRWX%(3s!4I4dRE-bGq54xbuGX7Srw9A6-&Y8sd%aYG; zn;kshiE!!#NGIMP4zXpqPg`A`F3I|ViP3}Gb-)XG({|DTz1n#%p$J4qA7*pG9 zc5%~i(?xc35WTHurs=JWV?;QA`Y&nJ(}fYnN;S!$rkM$nDPd&@^E+Yao<3^WFu^-r zcx$k#TdCI}b9;rHd6F%P!*H`8g@?^TVw>+YD{RO6<1@wp)pg1jUMNfg_Oc z1G8NWX;RQu#JF(k)T^q24$vi2<5tcC zStWzQOd?=@R`7$_urO672{>95CYpk=hKGl&EKJMjWYf zn>yUvul6ioPd(O|E4m+v*qUK`eHgk+63$S9N2@<1ED5cjF0{ns3M^nH-#KaQ1HBM@ z($D&k7`&XwB}@?pY?Xm=!M71r^UsY;?+9Y{{gM(Og2&d>CyhZVo9%9 zjEM3&toGwZ|!rPOQFPp$wYm3>kC(98owBu#Dc`h zR$*bGKA5ibL_shWlMG6xx{$aG4s?9N9OU&>#I6HIvi_($A8ALcgDzxs2X)6uK)j^= z+WY*pnn~ciVo{3X{RtLS`Wj?Q8Bw!gs4#gej;sfuu)<#K1S!XUW`974y9;1ZBkDP? zbP*ihk*c|3dWW*-NfD)Sv;J3r&#KQl!7U3?;8 z!G5Ui#O$pS<;nhpu>`1h!GF*Ud1jjEy{K1?h2*&8#>Cl#H5>lO;I=GmkT1V>y_!$G zf{tO3N5$o4R;RW3^tyuClwI~yTxTWZRIyCW!=$eACJ2)>`djR>B=CK(v$lYY^5829 zoEEcvG+Ffc#}0S~k&Ho3w6O6vpO!qtL-F}?&bivl%a-WK`O?t5HelT)w%Aq_Q~OH? zNIsm-3R&FE*-rE#x%?<=w{xIsBs@d-R1RfQgjWWZ*N2D9Ao&EM5M>qgnhO=EhLpML zJeQ5wpRammnRrpw0IA-phq{TI9CEpz%l3AVYXC<{0EeH{>0Dk1*v5sc0T_=P)Bd8& zR76&Md4$&kFqz)yhGe5G%zns2LeH7kWqSZxJ9_*Xkp5DkSaF4z*)Gv&WFpYke^*7> zK1N{}jvOC~NjoNcV0p(ZYh*OHFa2cbzZ`Qz9^irEiwoc{c#O@SxtiAnO7Sn6c4nFy zn#wLcg!9%$?~r5BeyNB_Le;ElLNu{{QXLmCv;>>RN1bL>3gFi~4v#!_>hHP+0;rRz zL)^Pj0H4b15R)q#RIUx}<@VRY4$wiZ4*Z6Zg^aL?Mv5iyr^9q4UPW`EG1$%+7ZEA$ zo-7Ma5B<&Qmg!aVDU26{WdKiYW*n^dFwFWuYqR)JZ3GVLUe|6{b`g6%C+{uxC0}1Rw5Xes~hMrI#2c!waE!_cHX3OjO*8qV%G$)uYIvWD=EMunwNUNDdvKu|yhI0^DZNQCe`=;sws+hA}BOTSDGOEg8kS=JTt zYhwbKta@8Xpb7AzcMrmQP9*F4YDkARD8@W#1pGwsZO0DybFSb>Y;6jCFK$vGXbWey z{wY3HtT)m?A4nyOFteX_b?E3097>FH?0LLHC=TPpR~&D(M7_sl zK$k^ObN7I}pjlZ1JeV))4nF@;;8+5kxbXR<>+b6CQ66Ve`rIs^#|1Gr7L#^RuBLU-}Lf*rT3d#L;X1YC>_5>Ai?ElC zZ~Y1xIk{5xr@DjJJ$5r!TKrI6-cEnYHne?4zm)JE#V^hX2eS|sgOrH~AMRqjMr+h< z3?w~25reQCZ>H~y59)yEUp1izw*WJOs!S~MhDWku_vu_>0%>Bbs?)-U3Sc7xHEKC~ z_&^#4oiW-1WS(zJ*k{?GKf}}9|1xiO zjc;MrLFR8+`arYoyi5$TK{o+i^=9g(Cc4M0Q8g6);7ZCk%ir1x19s;sEy>BQTOz<4 zb~*{*rSd446c3}N_2T5YNEq561~AtE(bg&|3`1rr@as&}7Dw`VZ`z)F?YeQsC1LhG ztmE@Fi>nD^!54Dq>qwHn_zyotXRFPA#D)@R-L0d%YQIT?9jyg@Bug8wwQYLUGx2_s z5EBXoNny;-#>e_8#X%})4Ue?CfN-WrFa%5Zhlnr_NL3$` z*dY*7lF|@+r@=)2;8UHwLuvweQkV;Q?i6qHZP|j;ZNbjgCDuu15Hsv8TeX z-1ju@-49JdrYiT{VqlCStD;NW-YoyiR<&gefqe;N!QZSLUm0kGQQ0OMEGCXi@Vk%w z(*^;8cU|5v;&!v4`)Ma;k#G!ph4qRb&O72&^TK zN8O07Pk_x2QNEMtTpnoGuN#3DGag+zZ=TVlqcTED24Z8uA|?=xpDRdD`8~QII559y z-*+D2baRa7;OvPlKcE)dg2$81XVLiqP;Q8StO;+j85SP+Garc~wWV+bK)yhJ_Qo+$ zZ}=Q(^E3Kt_$4*%swsfJhPF}pjl$mWvZ1z7q|GIb5I3d&Qnen&b1*-q0d_S2_sxBq z1#8Yc{GO|+>8Wb)(e@azBcS}d_XJtP;#0eZgj*U76u6KNBW*vTlDkA;PT}{`Lm3o$ z-S5ZRj|z{c!oum+CRXb2`7k9AqnnTbMbdNb=hVA2b$U4{MzwV|8)Lc4RfrtUu@jSl z$y`I~;RL;t3%e_uuRKz2hE9KEiGO4i_guknO-vSY>ao&~PKuK6s=G|rd)0;`S_@ve z13DtZq5S>_wc5-7c`x!w2^0IX^G3>D@S@1dU^hv-N0@rUZ>x{bCm!2yC|#-H&~vm5)1(ItIAPVtJn%e=HMeE-lX{suZare`mlM!DF)5ZxMdn>VMIf)x zS3B=CDxTw84T8dNigp(PT#dXeUOfltu%#R2Hk!LNq!&em7LaV@qF!Ze!Bi+IOYM@c~vog6PPpI#V)SLa5|^?a3S3%P(60pbOTbt&VmsV`z_V?Bb+7JHM^6qyO@A;)VD*gCJdqR;~aFNlx6 z0po|C`u`jsVA>Bm$5Lv6rEPZ2+I=DNe*w)YhKt;f$|aw|U2AkmwyZ!cq@qE8v9h{* z$6e(9)ukGT{5K45tm3dW9*o9z*luE)Of()7-M6LPWX{o(u4vU>^aNl~ZjRc*Vxt7* z-33#@P5O-uL;$CUa&t=8x)%|mhtep4ildLbU5OxZV7w%~sM_Ui*Gh-SjRuxykwc9w6`xS7$yw4L9O%0`9p$GuVr#t(UAIL|r>TRcYM zkAf*Rvvl`*Qzz?)s-m4k{&MZkWMVdh1a?A_CDKGw-o4Xjd!eJZQTa%ev_vj~;N!MJm zwR62^DG@+^(%71YqP10HfikyojcibZ%FS=x{29sfon~{MwmUboKxAX5VHfgWqdqi^ z`-{q_r}6(TPQK<;)dJ^8pN%fb`^WuBQi!>&$8yN|`8G|}#2-d><3LW>B`@TBzc?Ma znBDO|Gj*s;phc6JlvMfpU^e}D5Qm5WmW*uv_d5McaFFHT64M7+D3*1XW20p8fWpMO zXh`pB#E)5hQLa3leo2{Aulc<0SE}b{>y`#WYqO~c&Ns9&M7tNXf8EFiN2WtD>Y|Ci zSXGJTt&AtYt$dGk;l@iV(LAq^LX~$`>YAZ|8F`%{M&) zm(VtuOBS7n+rMRQ9-0h&ZyN@M5run#9>^+- zrVo$VHKizumq5!b(DT|)CxPP#rl;`bV7XO6JMexWRYZ_t+Dg#pI3?a>xI~BCzjx94 z&W>ME;q19H7}HBcWb=JV=)QgD)muFSgjCG=I8N z#vnV-l=oS8`D8Rd4NAnG+H`$SU+c~+_ff}(viFRXQ6F!9b_o4dYgy3SpGczmqseEi zTpl!SPCPnUjcfT{)^x|mF98CwPs(M5cTb{;StqG%K~Wex{G_XpTI?}G8wl$5=}SMt zVtx79V(&Zn3>gOJWAiU*idNZ$%t1?;H9e0czgWot<-N);O_7hyjBp`w1vdxPpG|1Y zCm+RXfuli*S%G+nML0gDFDst7=oc8I|8Bhwm16(G--enF1Q^KACK)3lB7#a1Yh^L{ zs-8+UzbPx_w*!$qs%c{~Bo$v@QJdocRnqi9Q%1-eP3O zY6Tn9_i|9NA&&Of%IINJL1W_zT-LeIV|}?5XkcpETKew03# zU$Z4Y;ALbB`zV$|O}Y>#tQl07i)vq^=L=_D7&MIy!Isc=SerfX-WS4Gv=O{AQ5Y|+ zIHT8NSV4>v>uJvDfeM^}9s>3FoqQ!+ZMOeZJ?6(F_3y`CE)kfhxRCEg(q8@4>i?Tq zC>AbSc>EHPG!UE>$cdkyo;a6}Gp2lTYDV6?7>Mo4=C$qn{~BAWPWQ0L@$D0`=uAy| zc$Qs_8b+(AB?OTEh#in!Du4Eoh>9Bx@&^XJz1y`q^j)C|%0Y==1mjV*+s!q0F8p_( zDUeg#*$BGf6zFC!puB+FKia$D+uT!tRWl9l0awHMpE|S8T`~4(ryn|C8tUJh6oBEC zJ^mxwOb9l|6c~#L;bE_1p&M*m@FG&xwGB6nSh@l$p9$outd%szhi(3+(VsXChi*M8 z|Cwm#mkiiB(l-};tJeZoPqpkKYy%*Rv!mui@KwFUrPsU-jZkWa5ka8e3+>@9z( zO62{L*`QWK$QgbWoAQ_jClo6sC;O!affr1A@|mFbTz@;lkq$TK>v;9{LdUm?sE(Ju>2wy760LcMl9t|07i%MBY7aY2Q2Lla{y00+b2)3V zP6Vf!Uu@Xn`TQfuq+V-~XkMA$P9d5em9@T-{!{p;)y^rRPwfBfOyMH5vujDxJECUr zhMuTvAlTY^g9I5`m@WnMMklX(K&#$I{9w!q5HB1F`4OFjn~-g}tl)fEY{6z<%};Bq zhVHBa_zmc8t{KN`C|%)d^7Dz|M9}8WT0h$)d5L+iAKMdXe5_CXhRSs{nrxd|N;<(^ z&X=tF-{M8C(|M6z?*bTMSw*bk-JL3J%im34FjJ$o{#M3NgW!b!AT+BvE$$ik5X4n= zIHc(w2P2>ZKW>84gvn*AQ-SZI;?OGflo$u5qcT zHZDvxeHr>5D0e$32b}d`#f65UlL0yGRhAi}sq!pe(y!WRq=L0zQEyvLS4FNrloT55Q|9MzpIq=EFi#xxe#f>03p&mubRu&<6JUH*%{#6gr%$B@;-E<*~FS*fF8x zZ0Fcov z=+xJOxAQi;A9{Jg!loXapuMY741v3{C9Wa$4L8xklMcJ#l= zXNu~dZntIdJ+UbyIYG+479Ge0iz#zLKj0bDKWEfk@l z@_y?fCtF!wC9U&Q8&R!il_+iFl=I~mwIfQuuWI+7LZ1F!y2a&=BiXjm8gmf)jvUm9 z=q`&M`Hf6>k>4?&3Y0y$YK_=f@t7}yB^_SCwdWL)$2y~yT%J7T!l$3wH;yg4Q#5Jv zT}HN=j?1vRR9(vN^lLT%Pe$qYvJb zo!I?5bG3p0)S}?pL<5<)`-qfu>Xcaza_BO_xPyQNn4ovw(JzY|O7W<)R+~9`X~F`V zv0$FmdTT4Gk6gmGaE2FE%Gc;7-hGEb8svh66>F=iHNDOb+X| zIJBRwJr`1+-`4|B&*8?z$mya4&1S*9pd3=O&2I<`hKI22S{8>wW#U zW|zNU@LinAZsZ}QzVfNc7O`{LfD>%|&!>pfk$$e^9-miHIn-eW>PC6@sL$Tr%QHIa zn2p5Wf!$*p=wVWI-a$}xm(P~~lYhi8Vwd{}8GLL}!rAVLsP~B3u@&1Yi5d@4?X^~^ zqeEs&WC7(V1{^wQBp?lSlji9`i`fjZ79?hVX>gI79v(*0z7Tt!tz(u$)dWbk62ugk z#vDzizEW$J-<+aKCVAvB?rI_UXL-jO9S)|*Ng#-EFDQcVCj~&h6b>7{nZi3>2S6q! z>oyc^*tGxZQl%lyH>|p1;SH=}U4t9FPkqi9b>5uwVr?CBpHiE)lXaoINR(-NTnT0# zHN6#0--a=X-j5FvzGaoNM6|whQl8YZ(`3EbaD|KZaZ@Ih z6#?1d05~Lql?NIPAHXJC92$h@%!$dIH(}|cc8CdwT8EWvTLlxh$2$RP~5bu zVa)P~_AUejwXVbX|4^!m%l9Ud=Tlw^MU{_+P)(+>E2`!H6cQqNZ|ZGN>!OdwKV2Ki zo;*nG=&Gc}yxfainY90*hPQ#T@^4Z3Hy=>wfgg>iBQ*qH3kT;{{y$Jeb;`-m^YTtz z4SYv|ZPSMyVrW>i(U=6IBC6sfEUPGgJ-*qVt^`}t;T+hNbx`U8s_6&QnG;abw3`Hb zrQN-mm)pw{iAtHL7MxCq8;($?5-F2MpfuwwA6ftY;>xH$G_PSpc0isRfzD{e^$G$` zCrl{aWBC;+JZ9iJQ!Mc9;MF1F#eV|XNAB(08#eMDQYyfUGAejIdCxhD8JGq}Rcys) zO|RWYD5knA19*Vx{>1F3Eg=ly3AtXZsNmuFOs^#|#})L%$2^)i5y_}6t!Tq9s~L6$ zauCSZow|%70yvSD&K5njkAKf)>hwlPKkpV0(1XLQq;nCI;5!Lu_GFqj+BL&AZQayi4pbK zE&51U>liz_6MV{^+};iD6_xQ5bB*Uc`;B{=>VT*|Qu2OIy2_$!A9;j{;y^)KNsU8G z>K~N>gL?ROP;-pjSJ0B^|5g#wSm;S(n%i$9f~h7aHrsF$+nSm#4dpA0-H`(OO}=#9 z@7YjXHnj@Gw+gOhGIID5;Qo9@a_ad?GaCd!)|n=PxMRL$C|YRB_K{vr32-kZ0_i=R zLb`x-B_WduSsNdpv#dsuAPJZeuV7i+v&U$jQa&L<=5lHrxL;HWzca@D&5){l_udul zBo#lhYLzzxivz*(f}YOAAbkAW$p)n!C8H>rHHl#2LI(tJZHIfM(HxBEx+4+Z{5lEGQjCO{Tydszoh{&1FEl+Pg-w+H~=vC9@@-iEJ{o=`bQ$f3M zurhAoypEN?i0db!G@1~aG>T`DqZD2W5$9;PeoBU~cjC$S>jo4{t*&Dn5}bVB8Hfz6 zb3q|&oV>g{(fs+r%XdQ`*vDF;A5;?7=MF246xQN_AoI&hak0Z~=jSXGWKn(Nm62H*@c~N-S2q;+ynA)vJ<0}SZrir*$Tv`8=Hl#YB6{77TXq&H+020eOUKQSVMq%-gk)c)hM z-;Qvf`czKIGM}-A|lWfkK2b16*YK*EJ4# z(Y1Dt$ctlJ9xPc&&2_GjZ4ic6)w4`m1+{qR)h-{-Bo%}5>?XwfYwr$~#|~OSvmv5; zYJo)XjwIQ>m7i%}el?r~HToky%Unq)!!fiMG>RUUy~8;&zYYA zAOu3wZP^8VkP$;@QMw{sMZQfjLY;!OeaTItn#eMNkWjE8j)y;eG~XIg-)O*wka=mt z$pI-C$-=v`Aw6X$L>>S2%R21w91HR!93YPvYv-aFQ*GZYvkr5R`5-yma(V%U??&`% zd-$VyFz4#m8_EV3rPFb06$rV1HaN@^np*&@RVfBhp32xVPYdgx;&%F6IFsQ?N)%lZ z)$lpr4ZENk{6J9WUr0@IY@rb{88Nf4hSR?m`1g%wWbRR_K6)|8v{iWev?;0uFZe9% zWeFeP`Xpmqm7tlmnvvp%5-&on?DE&2=^uJigw@mRZM`bAlo}THIh|1A5n==fukk^c zr)xT6lwIM`^09?=8&$0g3uYgey^9OjX}9BQy*HLerkjp)`N471=d_uSMGo-{RTg}h zg|5vQb#pOqFv9S&QQ9?@(iw=G`K16Vyy@4CkB>XGeQeK_9$Ex6|4vhgY z@zO$tjpozRrx(A zcbJ{Vd6zxglF&#i4!<->-Oe9~881MrOn>FEY{8;J2)X2OGCq3=O zN;QZHMjIahPN`yP`NpyTC_RFk_IpN&w4b~_#?rBF2{F*mR<`oMY|TOfw-Us{CsBv54n`-RC`WMq4)B01 zW;T#@X?qL1oeAwn7zd(gV&j@yW`L`PgxUPsn7gsA4x7VFg2oUl00$)c$nBdOh3U7v zJXi*r*=YoBFN`e=FXP)yx*Pjf%VU~D^|%?ZP?jyvAkt>Vb{-o$*|d3&23oN$)e3g) zI+qX!sv)IHddt71BTy68rZkoCpZ`O4IQb1h@ST?z7k}qW9LX#pRMp<_zX6(Aw>R6qM+~Z(_=2E14gGD`dvn%Lwl3tjy)aj`2k=RSyGr$zA$gd1u$e)tR_WXJ|#o~+ULZwO?AZ>s55=Z}7U!7T~XhtRS zgTGxlc?_E|)K=s%ZJ5#8p4!!fY~xMqXD#*cCkMX7@~XT$brMGGeSg2O{6$^|vgyyK zi6az!xVT7hFD2b6=Bl2Ro(mr<_n{U5y?05{ff${<*<3^s<8YQ6{Lt`-E&e3;&*z=O z_H68L*5a+7rExG&w!Gn*r?bzVlLgo&2oGhKVZ$vg){Y2&D>MS8ueCKgT-?8`Q-P0- zL5&ydO5JOzJqPSXW~1C3o_TF-0{dKsbQFI_UB7aX{1OslN*Y;S&4c-fIVPacI`JDN zX@DrKG|jdz`{ZDEEHSuowu*cZlOpuCY$qyjT6utH86yA4a|i61>>H$r;9xElZx9N% z^J1H-#4XskP>RiHA!o-AA~%AjY{>f(U1*Dmt}5wq6zAF_?6=`t7$EIKHozjDT_nDn}fB;f+wKsnU!6@;|21 z#3@~bLCM!TrQtk#r27Gz01<^jZ7q+*xCh*i?BfX{rF&DM2~T6;!6VNBf;#v|-(FD* zK1Q`!8C`EVaVKdx8%>zub_IoxObK#LqzCN)x|A8rmYcYA&)KG5Lc8Za8hG1cE}{)P z={xbv`YU+YF)37VKJ@><=7toT6^)?uZ4?WSu~~uJ5lqC1V*2gorh@wW8aCMRfA5lX0^1CVHy@ zc|*@2!sxGM)SJi6mGZR)o_yl*16Pz}?boAx9ABT1e8St!R@8Ia`*NJ4{{r|WH|PD< z*qT=o&v3Ewc#0!G+@fshw{W+du*@=5+_8##d-E1i(S>tAagcPs=DvXR;U0n(hm0MX#i(h1lvmyIhJi4N0 z1&!n9rM3%$U*rOd`|~fY4u0>0FNj#H;g`NH3@NZ*tp5YmB0+U%Awv+#@7PgBV-yT` z`lXeoez>$Hw`1n#!`7k50k|DCLB9n(B&Z>*xI~$Vk{_c0jOj_>vqOxoqWqEs_}*QI zYUcrWG>DC%gVgQlWD~!26@A1hEjqY|&@KJz3&m*n%cZy4!BQ~A6K77d4SxI>!>N{K zh8tDjvSHAND0x?k`~t?LJ@L{q$E)_H_QC7nJ~3V83C(l2c&UVlDbd%bp-=a!U(91Z zGknJY>kp^DNpnlvb@5}SLlFVngG zxm4g83<6;1O%FOtOc~89DxKU21NyYb)Be>^Q-HkSrhNo^z~&a+a-8&24f_eWsRiXM zzQ9L22n@D2SMNn^hH@(~A~BlBgs=XjW2h=SeE_-4mm90+@t6FWwR6z0yrS_;>dhcm zu>wA-V*0OskvH3+iA6*>W z(lv{Dw6Ko=>kOwb*`i1FK{26EWe~Q=JEK}#R4J-ee?iNgaySRtZL6EwEJ@MnJL8yk zv;Q}v#t%(!)rk_AIcmPMthq#ZqD1^E^C!Zu9TIRSUkxiJB8; z5HJ?I8i<414|{i-UePov za94F0LPCH-?D?55%Y+^anzQM1I5M-|J0p@%Jy?=aW1+Ewu=6$(*TqT9mMc_DoA(rN& z7v?A__xh=ibja|NYJt+F;-`)Pj9euFQ^3S^=-})xCXPh80fct#0j2f3W4&_1fMSR3 zf~3nMOitBm_xcC?(EeGQ^>_U1cZZTgOO;(9)Cm5u6GWVX=Oww!@~?U(?FX(`+Fe>}$4>-usZuB-#f`0$ zz8~35F0=cII1NSzB3J?V8o;@1Skyrqen3NMRZ%iVf-n0V1%y27- zwVJjTT&&=1FN7K0YIzm6+JHOYv!Z5;>ShtZPS$O-Q_!3O2*ct1AWD*94E-Ib)0#2n zufogFX>IVpN&!{|D_RiePWsTh`JkkMgRsP|=^PWP05?bL1xrt@bKx3tH@kE(brg)RT$~nwy4F zo)X48{oh6*yAH>5fXikjl_244Zh~qd3C@XWq)_w;wVs|PMla#($~;Vj*2?oxdZQYt z5T0{XZb0p5G9Vhz^e{gH%X9k7JudlzA|oIHZ@YY93Q)%FgQ@I;#YP&wmzh zi?{8_DBSZ8eZSAz{Ma@e?DYc=>-kp2bq;i4C4}Mt-hXc1DQ%Xl(O|jq{noh?aM`FnMrc0`A&J|qwITh8Qn)qq%%ASO_#R~Ue| z9~0`&-5Qs(!`%9yco!7_8VDIl5L1s4TR;8gW+&Pir-~TGP7D3u=+=hUhQKx)CbHCO z84z=mB#J8RJo#rWUS1-mxbd1 zb--!|0;kCwaDKAm`x1DDgB+Lt&V`1 zrzt`#4Xs{nL-YQcG=gy|NS`H7U#RxhI8#-0-)0(n;ZT|rWTA+`I&uaHc&N{U1O$BU zNPWzGf9olR-tCV}6EBLTzXe3_HY_d5jB-XCL)VG7S&zylEx970a)2Us!<=kx4mZ*v zT5IEmepxA2EW>>fQc)uA>z4r%VHfc`jgGe&f1Jp^EY1w#eXvLmHSS#K%?Vwy>1Ily zX+f5EX`QOnGUG* zxG}%3O}dS1T+{RiF^0DX(u$yz`!2elYvY=Z*Tyw|?Ki@2pn~Mq#d~Ye_%Kv4Ir+RJ z7xsoibItk*#=SoEBj@sZt)}g{EhmvqnqTVy`&43&XsZ+L7V3FF8uU9*BAJL6nYpJM z2P;-;+}sdY01u6WrwzkI4b{Hb&6F>+SCz&Ancml)gYTSAWMU>ig-v}}MQMYmUl=Nc z%sGWb27&3v4JmY<&TC1CTbPRU?OZM%!Ubsfu6D1*toiaywZzN?~)yYCGmA|s)I#^ zcvTOnSG^o`wH$2VLiC7x(S0bg2yggEW^nq*Y>7d<`bOIHNr2+AZ44_;LTZ2o$0YE2O~Mtz&lua! zl8Om&nVkILjp5W*VAW8R>T6$(U8mna0dZGloRnEd$4au@?*=RaJ8&l;w1u}KN-y;S zA-r5`olzL2u2Z0ImlRlwpDBEH`Ek%G=z)Fb)}pq+h@TCA7ufmedn^guKm|3p`#`SE zvBK=`)3fO<1C~}ZQ)-rgQiq5~TIuPEgY*?Amnt_zziU0)Pu)1}%RQdnSGVHXQ5|Kv zbR!6am-cY7G5TvdM%*ddx22KE*J=45kiqvAOlDaM}M9c2dYWBwN!4G`!uIY)fi;G`j)}a@aPLDCK6^ zIV4oB5}8&CXtSKA#}D#=uJL=hup!VfXS#h8=P&{sgrCRNJXzYF@0(~RK@J2#jT)p{ ztt&H=yaa!7*j_OGDX$i9$m}5Or~nP{PpK7$2%ObZX+3$Jh`@4A`t4abTeF`Wr6c2)9i;sMf>y9{zpa1Iq95ggDz<<>fndgG{8DpP{Dwj#$&ORtYTM$kWiLd{qL0j zcSSsyH>v~0Y%6n zKQwO6`(XM|=v(NC)DNnLsNfXt@o(<#i13t2Jrxph;KC`+nK_90OV$^W(EvV+TvBBQ z<=QpOON~h$HZO&V8qMN+R}W&;Bzg!{DvbNclyaQLrN?xN-}=!Y+%DGIaUBNlBNJg0 z0`F|3q;cm#rJJ5fiU{$}17q!Xls#Rs*W=IZtJpQtT6`Ts@ptP5b@~6#6c=St=t$(f zR@NG^R={ySSCduKC+=_lAFiSN*}CX|LcZrH5{-evRU7Io);N+tX7+G06}_F?B%|Vj z+c(++hskyqlaJr*F8Q`D&=% zCr26_;xi{QP+ToMvanLDv1AHHh6ZJ#KVDnW;Yog@1V zo$3l_3WOmz3BdyyGgGSaH}S%cuxZGNYoKN2&hF2EN>pxQBt0yWjTx;D3kP(+u}lXe z0ECqCCb2$lM*abY(2y%av)fnfzHKO+hjV4g%!=%S+y2&%v`m;YZVN<_-EI_V)SGi4$!#J@g1)m1(y%? zFF*f@HeHzcuC`%Fn8i)Dhm_DGEHYzCdvlj6`#?|q;ZVg;ejL3<(7}qW6y)P)UAK%| zX)dY|%t`5#;IH^y+TnR+lv-j;7M_6Z2V%KPsn?G)&!NtSfmQOri4DTA2)jIT0X(Tp z9%9aRF}-6{G5nWj-r33EEnli~w^VgiygjYQAEg-lk76TBb2ZYDu!>oa1f)5wY7{%2 zm_j=LX|2k;?Eq;1olI?xb0$tDzdjpBCT2l@3oSvzVcLJX)XHuP(1nl%u$YI8C zewnmn`8ywe#Zh6+Tffsw5JXq0lfHX05GFfonTo9b%FG$xdk;Z@87}1jftffmux3l= z1J1v(H}UpRj-eXZYJ^QcRk`=Viu7w#qak2H_YDKj{ldopMPW#T@Tc;ZGdpr2f!V0# z4Pxw+0Hg}XxOo6?`d4?^&{-QhqlPs5Y6pt?A3`-IoS>d(_j;T4JC^SJdarKv{e0RT z#wHA>49Bhe^rk+iQW!iewarQ*Y0$c>_7AM9?Ek>100Kb$zlmM%^h4&3;~@8Y#{}Ce zU#2tsxh+Yx)v;xVWA5B zCO^<#Or`Zx`zl%b3*oBB?W*hgj0tLdR%NG3Wj_i^geL?|-e36_LoQh1KbinB>K9+Z z_g5QmPX=0c;UtK=F$iK{au64}7qV`lMOp30^qt>dz>QAX5A(iFg3u}JC8igSYc8>S zx<>*l?Zktsx5Lw#E3ywMu&uP#ObODvwLSfH2&~IyDe4~dHabBe>V!4YwJ80}j&wXL z6H3GJjUSNjXb~RW*FL#Czupw#`#J1s;b``sZ(5A#`P&p#!`gs0P4Ut5e%pT$lZiB{ z=YcLVFpX1NaD=EP|BJ{cBZ0GTgmZn4#Z}R&{#-E5ror`kz%OJ6TS*+>vmpbDUk>O` z-JRm=_I}A~>gQwP(D%XoqI5Mx+%pfYZfx;+TJrn5dYu|=mS>x{~7um~1 zR_9(;O`;MN5V9WpB1AtZ6N5STC2)<>Oy1<1B_}NBkljmo(Bx~7lNuFz_mWEqdF)1^ zn0CUc@eJ`bQ0XE*1526Dek3hS;fSP{$S&4iQTbVR6+N=-HA=k~NPx+mo$Wx-R zZ3C$2jfamf05y;DC^IxO5^HU=#&k#o;_L{5-_cj8$&KA^YFk!Z7WdY!EAZK*;C;3k zIJ@rn1_L@mD?#$AN+mZJVpH!N)xBO6Vs12~oT9io;$LqzOBG^Iy4c`fk1hR7sRYH{ zZ)a%%#M=nH8aK8>u;bw*6G{;(Dp1yYuc7CI=jj|jqA~)bx+TmHAnA2gAw`h zyFOgqu=RF2C`Ds_7kZN)eWp|5_Xs*m4ay4HSJXMl*S7Z}$CdfHyWvj2?~;K)iU`vZ zBjaL4Fq~wr^~LoZ2J2d^QUmFZS~~IfX8exIS*`zE?tFRz|H$@uh7G?1E%vaNxP(gI^e`sH5rYJA`FX=$=IWno3xkDcF zX$#k_B2o6I!Sj96`G!+S87LvD910Be^=zQnKtqG!`*3Zchg{a|)&^0snrn-bIM@A< zVr^cQ`ZB}^IKamMt1FM()wH|e@Dt6OhuRdU9K^zme2nOTiU@+egjIg_^zr>=Cui~i zoufu~urHy~`ng0=Y0;A(Fn}*70rNRxyqFVMARyC!?Wa>)VxUH-+sY#T&rCSF>Bi;z zDKX2PCtvS#0P&mXDYpiBh3%By;|Ker4D^1Ukp2~Tfk~f>GcZ(4_dSFV83;`hgLNvP zc2s8t+4u~{yoVz&9F(^kRm-A-21OV7mPWv2ZiX|6K~_eTC&JO*9`?0iHBXGO;ww_R zpbo&F36wgh-JvxUtYn9H#@Necs;*7AROBZ1+|Davx%9t0KwEq$;o)LvkLw}U# z-@7Z~ocvW(#As-kg>|@_$tUuW6driKxRF`=D0dD^&)LPkwk|1a_NfmUGb}eXlFJWk zj?hlR_q4v0u)}f_xw57~fT6|^%o`tUtI}tiYKvqoh`ZI#>wzBWnPy<_# z!YN-v_=vyHnT~LbSOH;m+)B;-wIzGHFb2vWT}Z%om|E@FVsq$Z+8^>`=XNYOTF*VEupEi1~afs>zn$NdviM zU47}a`4zfmAXJxhmY3wcZsVeV-28;IjMA*4sMt#ENb0ap{4DpQQZ|o93@2tKavA1P zI6}**&L~5@_XH1BVK#u);ssF@3xfkCNuK^51arDlamr3p=z(wg2Rgi+>M)hvoEtLH zB_tWbR2v;?f-yk)HsIY@kDF%!rIhgeWJ!eaoOl3_@W#NtR%;lvZ%{3?an7Mg6ME5% zN9-U&UgE^(d~@?XhcWOL>|?z0NADP4I-gwLcA}J*bIn3+xjB-6rpGcRjV(hW)ujnI z){SL`8bRZ$50RjI4yEA5#!o9zi3uM*R(J$~&UTKXxUH`XDhgD_aoYGLm<w=CG<5^ zS{X7+i2apH*|c&DYsm}|M@C!6kym;s!skHync&l5y?e0sXi8mMpF{5B@3a}EwmP>?7_ix|(rGeaW7peGF+aIUTFC6B7aew7 zwDkZ?DJ3>|*qf*x@A-pY4QM=XcRPaDhwe1C?LdkiZHM5AL{N)$>^;hO;+`Zxv>Hvd zE8lr+>dNn|SyKP(xV+AoXdn?`-49XQF3TB7yy7B%urCjd&*e~11IullrE1*K#ZJeM z|B|;p!|NM9C;}e{j0<&KQ9ZC|YKp_g*PxqXq}lrx_cbi^No2lrTY$U~tcBo*1S?4k zc|x3yF(bFK_H(HCF$%QY0Delj-dHF3kJkaBW`41WbS5pRQ%BR9W89tz<62t|Tryr!KV11Mc_HDuDH+lUO5h9xD%N=lb ziL6nl9sizSGFOw6hpWADMk2w*UKu@8rP|Em4SXGn_#f-UwC(ED$8U{(V`e~#vju?I zg7Owwmn^I6o_Q}@jr4Nh!V|<~$ zbLZ$QU5MX}>-dEW{*=;75wx9su&biMWM3V73|Q!|6&!2NK6ngI1rniJ$)Vvd^vgc+ zmUx2DeR9VUPJH-lSuZ;ohfB;*qRj3y4mqk;^c&-}-=O*GOHBj%cwIGLZ?}(n4TSV7 zjjN;&j2#qz&$sy$W?4@)A5DM$U&?ebY?(V6;jyj6lu(=n31bg1G@?LoP9je-S@Xbi z-BPO`G)nlOCa$}PK1>CFTcyU4`+0{5WQ#|H*TpM>~INjSF*a;hKr)kBO z{dcR3v_H|GD#ywvi0d?7_ zdT!Z*Q@RkPM--Um8~fv4bz9oaaDt2#kPGVXv*WljZ`^%R#x2xFf$)SnJ}Z{aGkP9m zcvgrFQRFuy}1A-t+6H7tA6 zCcLlnB7v1wCV7e}C#X%*7&561L&dyS-6va&KLXHCez(OLK_W;RXVVq4QQh&iLKOv* z;F}aj-LjecIDpa>V^SE#U5qw6v&7zX6y`Z&_>SX1X|fr&gR_P!nH$*)V$0|Ul#C@k zS)=a9ZDP84n&a1hd+2)su{6ZC{OD$`knP|Z)rt~m)mN)&s7l4urCBEbbtX_Py=xGt zE+Bh6ksqd>`--X}kp^ZS)b?GCkA-EyHN@QhdpBTZwZ(dgMrB|FOQYhbi^I9I$m3%n zN-Khxf@xG1P=a+A_RzOCwa9tm4&;!vOA~u$j(G!ncK{b((}daP?it=}UgLqmD*;K{ zfnea6?j`O7Iu+EqGQ;AuKV<8v6DhUq25V)%cT7cJz37*C3bF?Vt!F|MqKnaIML4nC zjZnfzeZPfy+sC_5c*6(y+=59ix6Th4^d3lO_=Xu27jY~u4VAMP2SyJhm|t|)&ny<3 zi_`+^5@{bMDeu^4eH4CYU3W1&kN}tLr$vRkg~~=v*fr;Rpam5rar8vn&!C<{JGFv! z-|uaa=zoI`fM%yd4pUHc=GjeZS)6->uwldbMcJHt5;$--kpPH*Wtm&B1p)(bUlYxs z<)?d-%GlAeH*`CB=KD9>e?$NCK8vzt@jAU!RkM!%dd(szAxESgLQetjl(NxBxVI<^ zdR69VbDEy{ID{OD!|Gy1Op!RV!h*9h^%s5~u7i;`y$Bh;yJKbTx}l&e$E>R29sM-} zv>*&Ap5+$Q8B&B$gD8i^od|8ZSh+2x(3Dfs&=QRD{QzI4^^`PNfZlGESlRL}x6rkm z8KO@hI*^d8Gg-9DIe-pmjK-*WBd`+8_)rCk1w_QIZ;%BkBiAUsunhm1P_%gp&Ym~{ zznDzO>9vqPc7ggZD@ZI)eT9S7DRC)lw!jGOAl`9U*gAiq#2y(h4-1npwmSAn0BwgE zMT(D=exf&Nn*)5pfDTMridazUd7lFo+YW}+i|7nD1Hv6f>^V;7LjO3kBN1isxsg%k z$N=hvyH90Yco6PCxA?XM|0{IzM_OCZOwGq2FdG#+-7Pdt*9`HZX5h|>@uTXF9uzLE z4x^z9LOE?q0aXXN8;5<=RH^8+A60 zGF`19aAjc0Vq}e%Pc)=yEVKpLL4Wn$;$I!9{&**rJ*iQz102)rcyQ1XUHV@g!fi|> z1c=tI)=adVBb^WWedBt-5%kfo9gH-`WR4l_9O{~I{XP4|{CUlcj9)jfVobf|*dw~7 z{-r%6Ppr-fe^R5$d)-IX(YSS~jXVVSY-dQzQ{iqXs%p>2xQFVWBLYW_9~R9?&%oH? zF~JUuTl^Vzf2pP*4!CwY;gBlcykQ%^ep59dH8aw8! zwwh6L83=&6F%B-1c3RA%;xX8Bn2ck1z+)G6k3V?Y#N>N^{P-DB?C_MFpU9}Z@g)F9 zkhKDg|LM~7dbNm=RuhUMZlAbj?SYO4*)YfxqXe!|!q4n_(dL&ER4^k8OTdKxs2) z81mfLeL+0FA?FY>!!8QG)zDUnTvSQLRySOBi@sl4vVZ#R_z!_f!O5FGI;o<(plUAz zSro_phr`PBprNCy8sWy}g3upbr$JT$Nv#&Z|Bd5mbDwn*jx|~tE3*+%KtR#SRJa?x z*#jFqy~#SZ)R58?M1vr41^@{ zEV@>v)3kM`pb_VU$uu|Poyj!Z4-Yf}7CVN@S5gDIHC*{0m zsUt=^*S@_mkv7?R`T0@JQFyg-`=F zQ{5Y>OX%|Ms9e%I(W8o?f^`$BL2e}WD^7P0hn3T{c0)8z7nz9o*llI^r7NCm?O9T1 zlK*zCt^N`0RDYj1bA~tM2u462@m56MF-8eCNF1(*Kl$C!%wkct9V)k`%U3}_Z|!yG zaQ_8;mfz91xT@SichwT6P1b-F-V79PzqP&P_+Q)%g0CRy?xtZ)=x)k5`KTU!ydbr> zXYMHz?PhCAslsq5I0+I!u)pVv*#t1(QBJkQG9O;YUkg+8Z{uM6oIlz|Oz0^3of+iC zJWacc3L3SVpBjyyrQx|N{_)dBkizsaC+ij4+z*#aozuKc%@$Cmrh0S%Gkir69ZpU; z^^n;N_|!mvhrOCNYzZg>f{b|X_q7%4KlW(NPEb0KYo=Jon%rVsE?KCqX>l6&L%U~L zY6#gYpY~7!`n#Z%|7Udsi>0$?*_W{FR&T@b{|%(k)~Jg;=Yh(!Gr$wvj;sVqJ7oz- zqqKfXx76Q~E1E`<%2_rf=*tI-s95h}&Tz;zc#8bJxNVEU?A>^FO`~nri_d-$!HArI zia=rbw5T}mGJdOelYvX6!WWfN(oaEK%<0*VCVD@EKkK~>yki4=dTv}Bv2{icT3jQeyY=NBYvw)2#RUcVhK;?OiqHMoEMxR)6dStEix^+O?d$&Ga%Gj(VfoIRcMuoEi0DPR2a+eeyXQ{21vq<%%ktp9k*k1eA} zXS?N#seDwyO}HiaWulc}$ZgR<5BBz|gaQ&68MimDvOTh$@U5xDy@VJBS~bR3I9hGg zTvqDEA{om^v1Hq9RtVT&I@U3Uo%t9deJp7-9CA^!qY%tLCq># z)nF&b4Nt+`{mfix)kEjwkb{IT3wSCM{yS+;I%4sqK1y|7Aj~+q!vpTHKBtq&zn|EA z9(K7S1pZ2y%o)^JD6Xjg%URNFrxy9E44ou8V~)!q6oomHkfv|ti|b_iV||~eyW$QD9!zxU*WoQ?5&Of{EA-4eKosSoRe(gyCbX?3{BT_N$nG^Y zWgBXe`@u&q4tXQ(#`eGzg?1-ZykRS_`JNV~SXoQ9mAMd9$Ovgs>l-tLq=8ZF?`jbU ziv`|mmQFLIhS=J;mo=3@=`b`n-7}ivz{0SkX?_Y2sic^A%W9YdgPzK=)N8+Kt2#^r z@-QNB&CQJyon}!9H*B?nz21l#&-*~Wb0UnxD!igbxO5_HoWLFS`_BUOOa&|h_9Sxx z7~`^A-SW-&@e3E)8ID?bZyhT?ji3dI{l%v2WcV;3v{Sr{vTIs3bpPOw#Z-gr69TKm z=XP}orP2VW3Gjds_UpHN5xq2D*t)l~9zfqTT@QZCmf!F*%})!xz|D|{x9r^O zqq#%KkK?5rg_nQK{wAoBFXH^o$WJM?JHJ*p>}Jj&B|P+O`!AXZI3;mj3hMjUqwON_ zKh(KEIM3vbG1q0p2~}}3Ezjf>eH~o5z{d%pA?t$pIlX|OuUF=upnAq^wXK+E2}xjd zRepL#Iew=cDU3%H9SX3SCaEL;;s*Y5@@2JX+-=7o9jXGN_pr0&IwUOC#7ksv_?4EY znKmu^_ijo1P*4%RJF*y`kuevPy4o7k3GkS(pCKlAti_jlb>AO?96?ZOYQ14S=5XM= zan0$3qK9O;B-%$`)gQ9?9x!^|*J0(ZA?HvR)Q$#XOOA|ExEs-A*`qI8Z#RRf$nV7q zrz$A{XH|b`Ffu_VZ|xRt6Stv?+8t7|?QpDb{+CtG_mCPFd)!aD}7 z5g_xwic6yIujN(2+C5fD?q~Oy^hmcQ3-|&=qA!#XT&4P)0#3*%nGoQ65m>8c^a{t) ze1ImMAVqFzEB-vVijP}bmbMUyhqH}^`nI|J`=P~~RBV+aiQr+Y9UZ?J>Q*8s)$iZw zK!Wm~3}KOF6DYL3VTa-VnY@zZHiolPXn$+ww&#z(q9`P3!|K! z-QU3aYIm*?^6BT2Xf(|ym1B}Uy2vrd7m(sZ#p1=q?y|1HYH@qiwW{a?f>CD`Eloch z7wV2X9uFel)ge{6Ify!zVrY>N?+;!1rUm5s5RQ3R9;{KR-PlFS^$mka&R%eJAaIzV+hDR;hzkhF6(p5ZC&+>^~;ygC5nb?&bZX>|({Ob&M2C(%98q5fd(t^TohEMy}tu!Qy_)~Yv#8xT{?e0cc+waE-s#5mh zDA?ojgJPef-{r_v2KwUs^3C=;e>g#os|SLIoWKFRJnxieD)-7@k|a-emR&wu+fKrB zeU8P+?I0VQTx1dOFxE&fD58ozo$PwpqjAlF6@=gu5PMDK4 z#Kjo*0YE+#zuT?5?JqeIe&Gi+)Wxrhi$fI*eoi;0z}sNy38(GnpsGEZw*iF&d-)MM z2R4+cX(t&vqf zD;{BPzW?*A4Y(`KOKg9Xb55iSjKbU<*F>a@;)*2PN1(lMr6yH+Vv% zm-6mHJUB8TG?*mq2Q(H^Ar>`NWg(ls_?La|7d9rC?_orf@{py}>(Jbib}#GM^d*2) zR%q8Z>l*UfD=Gy4gGsUAvfs{znzIoyv~)gveI&z&2OBxo(es@YGY@=?Enl&(_N<+4 zA0Jg*rxt_6dPF?z)lW4HhTMa*yUXfr;B3#rnB`}C!Q-W200D8y#Y^-;#T!|uX*T1? zZI9NDOms7^+GTmBWyD8t4E~5|q~&C2iZahp|EGm)28XWQ9hy=j-=MT+9tx&CF~-=v zEHWs6U{YiauFp2?;;gkEJCu7=2F&imBz#YUcjD&sy2wqbKZGI~_v+T!>mk!kH+^0l zo0B+7j!<-AjSbMkl7aGAc1*Vm8+T`u9(HPGsn&GvI+}!csV6ah={3POj_&D!tN%olhgD2&6`V7X#jM9A9{TRWDNw&m$x4oZS% zeWo$n;qw2SZBV?%NdavC2kM2Z&qhfmZ6WNOQ!8o#n|#4ioJX;NWnXt_(C8t;;f~MN zVT6G37TCsb)A_ z`>I3C={h;)lGHF@VG>i4$AQ8tXdZ*q1PS^}t8`hI$`@d1mEvLnA|hgWjVXFF@zb>1 z=L4zh*Uj#b6Nbop7-B6BtcJ3Qn>T3MP1y;2Q+dXSe5&IA#9%T8+H;iYt?QoHW<%-O z-t9URG8yya^hq7jaW^$NaxqvM&6B}43acp;K&MoNrC`h3xk7<~&pAjyz>KOI%Naf_ z5+mH@8PR%K!8R#>LI6xquDb)QQ4<#$rR)3Q2gtVnP^ot(wDY!$OS@te)?!E{U_!;G z*-)VRTOsg83C9!5*M~Dc@|R@>kw5&b1WbzfL5_I%O$Skf+fDbo z^p}&Yt=+5zMK|fkdOk@#Burp!52{$mwxK{B^ReKNX;K)0Sd=J7Fr_Lil&(i^@jr?i ztPnyup{^Agf6k=@&+V}VMNp1_lh6a^m*_QB-1f|gRUMmHC{_^~bJc=laO7h?$#Xqu zI!Uj58%bkYve=S2MMwtk3G5~a<|*jjH?8<&cp!tf*R=%F5<$6uz(HdqQq-R;<+*9Y z|0UZBv8l${)AxLYTPJ=t+d*;9GL0&E>rE7C0lZe4IQn87sA2ADZ48k{cPv(I4s2%5 z9L%*t{frE_RvgGM>Z>_li>%6itlS1rnN%vsC|~N|xUJy)BIigHmL()7$9P!qEjC`= zYzFRefAZp~X ztdz_hHRm3<>p;4HKF@KLJgml>uoy;Z&aN16D*(MhPsp(PV_>XtwKADE@1F1t+ml+O zbf;2T|Gi}~=gcN>MZm~`ZnruOkHCCSg^;MKic;DrJtrE7>4f_^BY)tq!?c+u0#_)t zoPtY*buD7=%d~qVp$rn>HSPYjR5_`9y4W975xKks&HKj#Jen~pB|)Yv4`i4fR<9Mt zl9wv}M*>6$FCGV!r53%3e!fuX<=kb=#;6zbpdv_6-);1N;10p29Js8kU~-Yjys~1X z&V0GLIz+lg%R43_B8Odh#l-*cD%yE0Ih$QqWimgU$XwWKjS{G+DVf;uBE%>k;8Mn`j6MY4o(?ImJ-Juc-C7nZ125}q_C_yNiq-`1Gak0uIr@t zo6?(@<-jZ4*1UfSKY`4Bzl>`8yi-{qdYYw_llS?o3L}S`z<4ZKhqY(wBk7h+zsBTW^%yZ-oVf36Xvw&E%o> zh>S8Mwc?XA;qc-Aa2Bk+B#erTQtIeFZ;{Yrx`%+Sk+$FbnUxatys{!HUGPQGyHH^q zdSi?G9oJT-G;2+gW4NM`(2ahIonwNi9Smx}>Li(ve-Xys^`6fst7# z5$>y(V*tt+yb}GaJnN=@_^hRp>HUe#h|L$(gRNdCd{5hE(fOu zSC;m-t6n{$-$&-vHIg}(RHaNe%fs)Zaw|Q;fn?r1sejhLt+o%VE-|euiaX2T)$gBotKMNj2VXswySn>dIUvu zpV)A-_l2YH7e`dJQ|LcTZ76wux_{7gpn$V3+3D2;wdt26Ko$%jEN9^q*Wj#&?DFh05;&(;>3L~ryW={c;#AVeD86X^7cT_e%NussSz>9y zXunU?f4MmkuX-{_U|-qW@b0h%rr7vQqFUZeb%ABikAf8ubB9fTk^-_@IQ+&iN>R)H z#9~sAM|CMZYQ_UEZE#NOzXNt-BYKfU#EX^ve|mlt9+D8ZDx&<`CSzk%H%NE=2561D z$u?vNt^+G31d7P9N0YUYm>k)71DEBPTaH*MDDOjw_NW2qz9HFe78` zrsEE*_0eJ6qea21jLSt?2&o=VXFa!6ku>@n^Q-11=PsPAoT4dHH4zu;?M}l(Jp(+A zcKn}xn4T}q>SAF+zk%G5X#Is_BUk+`l*1mlm+OATYh{MNnv{8etTdE~nPbC=;9W2i zXvM?8`Rvr~&WHFFA7A#XXFaxKdJYN$2AAvj8%{gkQ|iT)u1+=Jrw+ znU&wR`a|<*1l@8A?6LV(!t#_(4Suoosf}9UtM9zN3@11GnZZa!1K|g{@m(z}2N+C~ zUT?xS_3Rk(S~LwDsVZo+B#f~yKOuCf8a35uj0M64>WvZh|4y1LQaM?WP1oB58Uq~d zCzd`SpIiRz+t~5!E@;A!0JGEy@@{gxMmeQawEdwXX4N&Zmz{_isWk!Is2w?+jpB|& zvLptFOJAHQgd!ZT-HnMM>ld6Ks%*q$JE{MFck->xEJimk{T?qHq@cHitl1wg*5NqU zP6_8F*W3O_!(E+Hjc(Q+-4=3X*YQEJQLA~XZvfi-f^~m1S#Oc_cOxRwDNQTl(o>>? z64^5yyToL+5h!z1hlU5Eo;HyCsiG!td0Jh$RZinS@SplLo0;#R{j-AILyt?^;|6tS$bWuICZ)L8J>~L|4Za8R3D~qvS zW*6gIVN@v2`wBZ*-5u4dtZYg4<0RSjp{9-zpF^V;;}SGa5U??OUBKHjPXzwL9QlBj zJR5S;NXlv|_)7gtJ+gq3Csd=Y*QBxW?cXc^NeJV8#I1Q!UMZw6&$!n2TTAZ-c_0LO z>e>=_nv=dT6X%E7mb_8-&F3yPBIS?gt&-YUiya3pElPzsF39!^@+^8RZpsvFqzRy7-Do^WPNn@MadfY`Eud0U2Fo>@i2=K9BPRwTmg)BO_aDi5 zg1qVF{Gkjmh;Ch$>w9bQTv_d}0sq=oM`cZm@f72~YpDZCR#14P7jc~%mVV&B>g?(Y zunW}n&F5{XAk#b+(^@I~wx4!&TT)FPbvj{4Fvk+J7OlIQ*qjIvINqig&=tONH&^n? zNQm=9E_k!UBDrIw%nRr0d6HVp=VOd=JqDoCuF{hP&7@!GPeB?!|7i=v7VSp9YGE%K z%F}7RdlvF@Yk(d3dn162YdZIht-1bl0gQ_ZWHnpxh zh_%UXJC+w0@AXW~v>v$=*vTYN)i%91Go;w-=Sv$ZeKc}u;(<^R<;n$3Ngby{JJ8qX za4KRTe7j9^JFtUo5b5=E+vZ`SFO{-`$t1_#go*KI-iDpXB=Gt?K*2Uy;Qm&o;BZFV zJYCwv5LEK(XG+PT%`Of@ejQL9SOMR@wg4S?glrt=|K{1mLnaWvxe1<|bOl_S=+uP) z>^ktLL_LV9vb7(242GV4Z)>$&wdL92N-kHl;>2O+gbaKF|n$u5uL^yICm}MN)H+x96s)^>F)~sgu)>xl$bsySlwJQPX&-=$CV(y_EkFp}ZzIjyqH70aWGx z2KBi|iJj_SH%#750GZR08tzI~{*9tV^E4P@-B_QL>1q&`?WyJ|C7bGG_V`>PhK0a7 zN57})YL#_!DG<*mJM4|ej>&ZBz@+AA%uNqWMb_{5{8lRET(_x=QSZYMvoT;{Qp`Lc zxFm+8iUvi|4Ho9%bm)`YC>B+kK%SgiJ>z(#zODM%f~JYfd6u9^RZSr}FSM1svibUG z3OkeTu@1Zl(It*vd^t3=kZh}-PvVj?Z$9WD+M)06*?B$10sWaNyevgrf0El3&KM1V>+ z&D>ez`iq_^k+H@g{o^J2aTZ9^)Kd*ExQ~A=(>YBnj^4(S)rY8bH3?yZ`~=+}$h9-v z1rV?5)u4%#ksE4>mmrA5>u{CbBq%EKLum6F%T;cbYHo0C@vp1mC1;sLEP@_s#4PBb zs_+q6@Q-pO&|{UiOGU5N522bondj$*WrrifK;DH+H$cW8bzU3VGecR>Onh6!MJGgT z%OvuDl+yxKjI`5o&>iXL5B|E*gevRk!i|hm4^u0#3eeE}C;#;0F+hYZ7bToM$eVgK zg+fLT5YN4=xKoy3@S+3+P)}A(Fo`rWMDAnZd{$`Xi{q1LeT;>2iddP?`X-vsOUs}6 z{47(43#qr0Dk3RErFX^3Zlpib$jPI_0S@j#ooylqobW!7`X(S{xNwB8_$DEL{#PU2-m@U8gd&ocrBg0m7`tK9GQ@-@l z&(rb17x>VN#4u%Y7)UKo{%PlG-tLEWaU|vlA|iHV;{X^jJ3NawSt6}oph)yOXEVy zvg3?fNukp)o41nM$e@-BxRe#!ncu&JXnsS3cDL0(D=}=g1(~Z;Ho~rj`8kmvgkX3A zqdo^b*;iNBLhrqs4T7O}^2`D|ytv8FXSAj)` zKU%LMsrrcDzwO&U-vz}iGve^JCprGzx^(baDAS?8{8-(&GXbu3Zuu2sAFwo(W45aG z<{fMhiB2}$%bW*AiKDaj1|bo5DF{K_B&Se?G5cLuCEl%ti_|nK;I$yt*mg_3xg(C6 z-Wx%6xp5nto_zV&E!@7tG8AL8 z!|crU8gldcWJUf$mKH8cD%nnSa4IOND_G3yZ&M1hbtBmJiiC+=1#O5i$S9DMVUW~{ zFAnUk?*eknOdP4ehh;MitA_ZVU#{)o$csUyM{aEChy_E)!V1Ro9+@?Gc6lcn(Gf;N(;KzRYgaf7DJ)wgf+ zyT;0Xk=0EEdE%#-75S;|v>e2xwVl!m&tz|nJ)dwup2KNYlX(TOH6)vM;a3!AyN;dJ z$JyHa=;yuPhfNEbyp5ggP%%sC5kDuCpAS6udkO95BqOkC<+7?Kx@J2&exDQe-|isb zXkRqh>coet5VlTHqaYErnNx$Iuw*F;>J@AeuW%&=t}sBC4Oj;7y0@W9Lhi>w z`y9TrR51tfiZuD2Sn^$LjD7)uGtW;Q!{R_Zm`TMs<+=*gpLPrX`;2W7yUt1Iz|5J% zb=p4=LZ_4qMn}qLWs_YF-Xkug?BpJ_Tjb~a=uSGs5tuJ&5=Xeh{X)7&VrhG!&?xA-~)Dw%L1+_VM!<`ns*Q;NY)Z` zb_zI<$-C)13#Dy#WAOG*vF%^Y6k$}#Tyn60RtuD^??*%)3ex!AxIA4oBj-*IJ1dml zV7sz<4=1#IxN=TIAsmrJ-s6wXRRBgb2RYDD>+kDZOcQKJtrVLjmUJ;AqRj|-HYLwo zwh}bF(Yj%$MST%NokG-ro+#VzBYBNn=yTnOxPGes33h+o-5_xgK~~mN^5ARhPIiXB zdoWPje4sSO{b!Nhx*i4b=z&m0C4Ls~orCDn;58wIIY9-*9hF& z`)lyANVr{7r720{>Np!H$bSZJTZPB04B4x&6y_Taa%EVwaarHaB3G2`>@gD8^4^W< zW~ck54c|WCn9G_c0{W5{ZoJZ>RMh~!_OwreUm^=Lm~YIK4wtYWp+j`9sF0%L=wvzzHTAqoaAIsp@{->#|5@6{V$AAAI_XzFtc_hRXmP85Y zIP_ZHf2?FX+zm?^*EX2!;`u54=vf_WPeiLgnLZL8SXIqlsPn*zRvt{yV;R;c?^hmq zws03_+%dV(qemnM0~R;(vb?jUE#9VO8W|{MR7}pQM@`JGe={7v84`TU_>)8+BkNcf z^?I7ZYzTAq>&eS?lngp7z}h6~=_9&*^|p%Yn}1$44izbuD2QOCf19%zj{>TD2*P(q z_=HeoXaImdu`6-BJ|}e$VxEZQFLjEyF<^g*%yF7Zf9+Rsmvx` zUHZC$cLDIki61FhP{jcsqt@b;6C;&U7Fnn58Olui_vg^uDr^dBGS1kceCIixM_)GF zI5%hOwX+gv`*ilnB$wViv<_9ukH+fpEBg@zU&Ph0WUCoD?ZQe*L)d+FtKVU|xH z$!#l*nTRXq_``FeMyAmVcoVbdwo>xbkr~Q8uMu`{TWYK12(&&p~yJ5%pzkYI4BB<~kt5aYKWvaccd8yhey0 z;MR$lDx4ZkGvL1tr!VyV^derK9*}q+lNq){L*uhod(K9MKPepZGQ)P;v9-cWSn*l^ z6T)e^{KO0q&2(_l0s$K8NE2|V4)#2#JeP)KH!c&c_KQ10=->Z&fedN*P)67Wsvb3F zZ6wZpU|K>CI#S~@@W;tD{IrtTTQlkpU?(BQmKp~XN&106%^k61MSq*@^XtWukO{Ex zSJCC2xJaWORgV8ya>GSI;SPyC;}G!)wFVuN?UljMoJ#})ET8}WndgrRCSkd(A@ z)t7~!_I09=T>O9x_LcL^5#xrS;Qpqe6cw@csUx#bPZ4# zZU*lJzMB0+Nfn<)McyEqCmy#q8FIRqQzHNva~7JB0{dRFZP;PuqJE`%oIy$yx=h#8 zap%Rnj%Xr_Epz=2mWgPs7wT0(Ux(?$v&7446Hn)^B1g}TC(_RzIy>3gCIgd_ym)D~ zCql5|(rA^ba|;ZMnc2u^VnYn99sxTI|FfM;d>oNhKh`T6nl*1l;S9w1; zNq9$w95)bdR8i(b5Rq00Bb6x=t7P;@s4i%iOoxSjB`aL&PK(%r+6R7` z+R+QZ5Z={9RYyH1ln>qC>z|L=InCj4K64F7d3)*xuv(vrVJ&^v+e;;oyyjVB5@Z`} z91>@yQHLUQNjJUJ4T3GS94WF;)~KVSViiQcFgd&N1R4?PsOk&wHl{c1(dFPES0L66iOF|ijpjeTD6)Vh^m^8n$%T_%m^6!+U()eJX=6$9O)j63 z;^cAZs{N=um3-#^BeG3GJ~r@sm4`SlgV_iGzEv zRUO#~1DYbAixplsI5*p>SlCSIQJ7W@T+u872A9(LH@UW>UJ)d&N@NsnoE;Hq_R49MYJQAlc4=7HhL0PN2%MO;(qfQ$Px*Al zuS?%lLmvhB|46Dg6!WGAKjjs01;kSm<295FAP*I?X_x9~c=G;YGUqM3fie%ZO>?CJ z_IPhymMlhoz}?Aa!a;}Pr?AA!?H5rCF%=_bcuByYDpQ(ONOu=&;x1$^UU7l>%%s)x znaX#=Gd&?+G9F;=4hyIl1EwY*??B;@-%@-ZNo>03c~x0$jRYK8AJewGQse*A>>?|g zT!YaYv;pzY;q|2O|CBy>s8REpkYz;!tQGJ3GUb}i9P-#YEeOsScF@$R6fFUTVLhtu z%)GW4w=Po?b#uJlw@dqrU6cxG)y ze>a(uhXoP!%-8PG9+yLkL}4R>f3v84*|A=s2fzDdZ>b*VLgNBi^)Y#gvHSM$R#QboON1J8k2R^6T;dd}VKFxBef% zLIHzdB?V)YQbUQg(8CaL&eH{@S{zl|i!pjqML1(gwFG>Yc+ATLNrBN5>}hvmX%b66 zU-C=uDfLQ!sRx!^&zFp80MlFl;J|el5;i8g zbRRTn{aCb9u2Q3GMycpKc?8fR@G2J*P^+7e%&5g&=xt4TS^ zWoL&K^rJv&+tscJ?v`z7S~H1SG2Ghvk1n4##A(NLC7v02~dM!*%!=x zF0cjSdJe}^qyG5n^s@6<_tiQ8+GmyEkswx^7um>F(X91hini!zE6pq#g0i*1UZ}E2 zo+$FwbXL&QqCZE_XkS0&-J*f*(G&`U*Ie-iIpsrkBBZ#9_$BuN!(iHE*i_(ER{_!bh;lMFjz z!|n{VKGl9UF9Ei73VBwhVJgI5BIsUOLkC_?2fonS`Al3R+>nU(TxynU{(jfCTH$|eZzWLYjR?a-C?mTB&p95 z_dvh8W$~mM4+S6WaFKWB^=to?hZ%-bG3_9S6MlCmy;XgJ5qQE@=*QXw!|ilgkD7uW z+!uLx0?tP$L?0~AJe%gFtZq-ft(pTr2<#OUY6QgJ%XOM8{MkdT>7RhuvqsNK#3;F7 ziA|`i=t}exI?iHqPrhRCjrff92$6{N|0dAC>^XLDS+lSP31hs5m0kn;_bJ1)_Yn}< z%Wb&NzUc!wvE=fGfAH$`rd)7p6t?eICzX0i+=Pd3{Xk#g#%H18{mk^xw$}@_;vP`1 z-p`&@rl>XLH>6De&_q53a%1~FARs{_9Nc-q=-N+BD*YXk8astZjy8Tl_{RvRAi;L~ z8OL}Z{Oaqy;Q4?BqliTI^nTl>Ix8okTRpFHO}hp*g?}XaS9uyPb!yqsfaocaBaBl*%SB-o*9^h5u^4R99~FfS6(FHG@xKa(T3HnU zwydV%T6`o_IDL#}ACsRKBn8IWzm{_{B^uRPp_f2xTPUoD0E1c2>5G>fAnL8Vv83S0f^bl$%l7a+a2y&U-DqiqW)!d=%D~xYDc7Cs^#GTR0B?! zRh!EpfJ}ZwJTb`3AgbN{^wR^?n^#5p1lf(c?6<-PmG(y9-HUZ2QHsdv8E>oksFoU@ zVm^Bj^n)iON=Am>&TttrzbKG_IGhF!i0Qe;9v_Nu5N2fl@@~@_ONjU1HsT7NQXNrL zIl4fw@%_>HZ}JHsSLKoysp;5&DYR^_RS)?>03Hx6XD;Y8X*AEQ&(P@hs^??B$Y)n zuS&pSX>JYMNQ|*Vnn#0y>KXXlGwJt+w)(t@UME|_m~5-F7PA;tgE@O#uo>VdnWo1a ziWd^9zB?WXzlbQk5ObCj(s>vW;XtedITd|g$AZzfChIFsSu_w41k=G2g=iY`GUlPk zGDS_zA*z&dm0A0g>R<^9*tPTuOw_3Aq-bkoaWIZCXs91WDDhF+9ZXj4Ns{2e?-B8% z02o8U+l~suDU9J0t|dHvyuVMUb=(jtBIupw#6Ya1FEkN_Z09-UoGC1S!3J|X`)G&w zzICW*=9*uoOU4`q+lx^LxCO?0VKQZA35K`q<1+om)96ryKRh7Df&km$6~P9%FHfz> z0p1-J?CfXOXu)l;M}Jl!PHtLAQ4P11!8!kd;Rm-ZZCtE-4d=))qq|EzekWCN! zC+qyw-hW*hGpJp2v$%2W^|LTSI4s@=dqyQAN~kuhCvGjTX$Z13wB>Fk&W}rQA8Nd- z3$WKz^3k-pjor6dVk^7ID-7D0@~q6h!GN{sZRiC@0>PZR|0y)QTQNkmFL_?bc~h;N z5&N4jL1dXAjzfeiOu}MIOx&<1-`0U@HKgohC>0*KPLU?%C*>xj zMx}1@=dqc-Q!XVIVIm8U_8~WUdR>vMpVzQyKYW7&-}df4R9Ah~4ZBnLH_uh`a?VaM z$gA1Ux*K%p4zxOP_-Qi1bkParXul7M%A#pita>PFVeii7Sv#9HB6v&QI18d5Yh&K8o!{ib9(HV_0HA`xa|Zz}k)- zw?D&iJ0M9zsyHA9>SelXPR*P$U~wdi19Eq`{{laLMqf|5;pCNWEk6?e?hlnS)6WwN z5vzHkga)%4XlfaIuOy5v>lC7a;Bp!t@tx7bu`J62M~!JU|5Ed6y84-N*6%U1&f-Q! zYpkQoN4AmzM6erXY~W2*(#)^nclO^2&xg<|^(i+7*eG(c#xtPiR&B^k{(f9l&`{Xp z{x)pXr^T-%<`z~oExVlGgt?D{b?q{uc*!(B5?F=ZP}(3fg&i}Qa{%TQwtbA=NvWlA z&EE+M_&*UU@eSM{ka}tH;xH5CUkmIc9MRSDo|Z|u6n4V)yWyLWX^ci!gMrzy-MFrv z`^oZJi1n`YpD+w5Vv5wl#J@mHz0wVf;vLH_L6?K@cNXJ*2jQUj(ALOv zN02hG0U(_hjKjTPcH;bZszg&R4J(Uiwk%7yWX^E3E)n$63m@noAz|_TL55Cn(-_Lk z>&jysG_l)bvu>pc9U}#l?Z}wMd|U2+2Gj3Hv|fWXB3hQQz@^PO^rr@bRij8VU&Dvq zMX?I+rCHO5h0e}4>W3@uN9lRi`9R6;eLh~ErN=ZZSrgm3H%v1xKw?5fKOz#mlWo75 zoK7VzXt9#&i=#zu3OL|~aK+X%Db|#gRKhQ^aks?}s8I64*0^W)2`~&6Ne5x7VZnBw z(-mDb+k2`mQX<&S4gd}5k5kb&Li#s+bgiaRvAvtopU*Zbs;vILMjAd=$>iXa`-DJ` z7f(rb(SZbGPm%1QZLz)HDn#Ry;NH$*Ly1~JXusq__#eTE)`>~opS%TNwfubh;3D;g zsso%X267u=5KhB9x(Fueh^Y;syhH)?+hsWjv}{KN8rt>%1JH2+F4c{xyk&;+jG zFJ6Ztf`unVHtJ15(|SE5)ORCU_#feFS@%Aik*fpFe#Dij=C7Gl_ldtE zT5XKwm`jo=(PYp}@=iH_oB00QWYen&kXfL7yFxhiA1@y|O=o&s)bj{dnPikK9a5o) zx3Z({nOki9LBjWA!S+KXoXjJ(l+A~Y-p*|l1^6+M(0BXyk74dFJEdU#sOK=M$vb)! z+x1_SpwYPmNkaCJ5M>!{mbc0z3@1j~-SGrVsgcO}GJ^xQHI4Q(k8%oq{Cv;=R~>Ll zQ1MC9s{B@{b|feicFIxj>p|=qqa4-4)uEA}O3(J-SZ%KT+fPk+K ze(rq#e-7!LmW;o_DG&ULIS`boP;zRYO%Xt3=6$xvn#o?d5Z!+9jZUP`N>M1~Sou+N z0s~&Yzl62g(4hEk-6OJG1F8n1_spRBeP94l%G3kTflOLCu3uk}WhA5)TzVR7CwU!e z(HHvk-V%f<6si*zK+6`?m|OEHe-4!yQLO;5h+uV;X#%E`qe383P1c1B~04 z($tCSF9sm}mkQG4MYCsfa*7}gMOyLK+(n$!$EnWlz1^wCUgbXuF}5ALZu5=kl>0|V zuiJa8YQ+`T^T0Nt>nT|qEk1F@q?;RDL1#r=?A!B{67kK!nW^;UnG`3+fj~aa7bk1+ zeki2Zu@oz|-0=ePqe z$DUwk7Q0otp&6jeOB*7eyt;Z+n@2ImzhM3oY>9MpY|0L$cg`;KwC)V9=*{C_f*c2f zg1$hrAoOmH(-oo(v%3N}MGqrcK}~Q60}XZkT&Wc=)+-q>BkXCH_s2@B?CmI}Ej+%X za*kaguJ@^bhJo3mr}Jm%H`1V7BPa6MuCTpX*2n4A=!Pj10^VGj7_+6AQTtF#V z@l0D;>JXzd7tn|~A3dJ!Top&TLM1FF9$Xc+fUcWD#Fr>t4UVIq=BNU6Fe{V0F{(JP zntRfR=P?mWDY`7c2N5kW$&s!F)fgC<4iEm7D?^))?QVvXr3;_d4rX@brDJy{W1P(w z<9R|WGs#3gRJWnd)=rTTY5ccen$8Gp0Gj3ee5p0)r{ z!C+SpxgRR|Vl^D=>9#z>83PW%gre;T<3*jKfX#Hf<10er0c}PGU?wyXY0EM3wD(Ej zKG{Hriu+zxUKycxJ)QT25u_ekvaNC8HBb+)Ymj9_TIlOsMCYdj+Zwj~T<~W<>uY@~ zcOu(f`l_k)g!@KeJlxiSDEbErB>`9ISy41raYTWGyvwm=Y@(xlnY~EY%z-Fv(EXTz zM5xfYKY(JQuP!cd6#M>0Dgjz7a5r|GxSPy;N3W;T%rl9Or5RkHK5x;}E2y0=q!W)o z_a-E3z3fR)~Zq zgCAF3XFop)wLKFxaLja7j_@G=f{N6g`jE0N1dh*bo)M8d3FXy|aUf_lq{Byp)2z_Q z}MJTgj)9PV%XiK<2+}owh51~1S%6c8~ z*isAbPa^)(`pJdDmNpZ!EHC+aR1b_3QKF+paA-t1eTi0HG-Ya3(=4AhtlPQ{JG zp8z<^JePQ(_ZzT^ZC?83x>Sm4()0u7sqKs(n#AlCX8q+>S@EM1s}uX!I6bUjenjs3 zo{*pnzl}G)%A@ylMw}(;+6|$31ZSZwL3z~sGn>+qpDxZs`-ZXWkjxJcyQpR(MPBHB z+P5Eu34n_6Lxabje~9whT3qkaLqnmC)7wwwuut{B)YWApi7)ISD3^!1&UJr;<>{kh zY@;YKq|T_2L4KC>pMeflTpp<^sH7d2=`e*5@RfVDutP(X_zhFwHTprtsSIt_DMV{J znm91Vh`d5s1Uz2%@w`-m5G%{^R~aD*?R+~@BOiITDU6ASxE^{#r~lF*Q3D4;J^@u;2;IE%wR4`!{aQ z6+ImUl7|fb6byMjq&KT8&j=wg37*!Q7Q8Ffh22 z$AhA}5~@5%GqDf3X%1q({)6Z{1=Ydd0vL2)OiJ_pT)1lI$Bk{wj5_}ppOx?@^ig2w zVN`B_dtVli(H+O+_;OhYm6feakXY1P*^n(##zrpd5e3|r3imPL4n2xhWYz%sq)MX& z4JNzJa*a}^+#kI7MTSgB?o~ZQjxrrXO+aB*iLxwD7)qSbd~av&GJTBp-4HdorY+wW z&*kP}%4C}%htt#Liu1-5svwu(A`DTj#1d*dYO48KEm~C+?e8$7PcoW&iJ%i7ctbDzC(Y>9W z4w|g+A`*K2wTW_+C#cybXOY*zE|9M7dD6u>S~-xXH-4IcBqXD+`^bGBu*4}Qicg1@ z4vob`P=rdB{!|HTd=q}1Pl3olFpaJP1&??QKR<#w6&?zQZpFB5aLJ}P&0OHiLpGrF z!%dqh$;cAUH0Qsmc=Z~53}ycAC^~2w6du0h99-?edPl*?<7oRBKQYrUyUT@tvO$c= z*f#eYf*l6oTg8jU-W+EWP!lXzib;)+>0<-~;xi-+4Z|(l1!VK23Jw-gG6D-&sart6 zXG}8oViC2#jx_5ggkCWioimf%mTW6bkA|^IBeceP*`hgM@Q|M+uz)T;m5;w>r581g zb9e<~fm*Gy8>-p!n6(mEc*q8b_IQ1hW<=K?U+`M%ycU-UDA0vyP%7xowZ4?A*3EFq z0094eZu3i?F_$!;npwHwloKAjdxs>FkwZPIz5g4m=`zV;F5<71b;PiF0C49q02Ey{?9p2N;gZExgBcG34}D zP`x3P%@t0^Qc}-|?Z8rnxGY)-+z4VL8y4!gm#dP%aqJtAjn--H@w?Q)1Su3SmfJDC z>~Aktjo$YaT5X7QfWA~@A$gPg4$(np4-^ouc1MpAqMpi`uy$8Ks)cyS0Ze~Xh#4eP@%+#BRh3E%N z3Q^Y&1$UQP+ut!DQmY2V_+xM&a7#yW8GX&|9Euq%bgf*Fm&U)8eWNaJf?mVm8qpX- zm_59vNF|1)AkDL&65Gmrxh&wC(Q!8mnJk?Eyy$`D?;$)O08gLcD^x5dAGBH| zq0`zcu-nBLK=pTMIeu?k$Lp|-)_vuwhQ-;y(P0hK0Vp9u9hQ1_C8w%U%+ znKiVM4x^9-X|ApH=Ut*qx`h(1t|5|OZzw~u1}iFT=S+l&+cB~j#jRVOj`m}Pa_qq& z58A}N(t>VzM`8qzcJ>azuYsM>BZ6k0pvvxdKeAajSUa1Hlpu+a32(;}^ijm%&L-KJ z=3FV?!j=yX6(>8V>k-lbOEMAkN_xJ^a-U{6Q$6=Ex=SFxcxijqH@^@KtZFvCW4K=+ zLW{vqDh6c?tYN3P73+UAtiWbvFUSyNEv->zQ2HNQvOI!$=SP$K-?JPUN(Th87lNK0 z94=P;z9LQ)I4LIRo!gD>mlxcn17&4CC44D3WJ3^970uAjH*!{vfKB58u7_f5dEr`Z zL?dHKtvN1Sv`UH&xm{b6glVGUf~TrBuqKmo+;2?5Qj5GZf^`S1?6yXor>!(CVV(6W zOfDLkz!>}+bNykTo-<=yyyAz8-C;r_qqpdtNRwL>ZmQa2%52Ew`vj&xZT%zHOU>wm z;5cct*87(+|EWl`QQ-F}^)1;*wiL~S%`;GUlnRm0)iFCX-WdCx7GLqm`u-5s=H*WW zb{0B=BCyaBiQe3dJRr>Xi2Qx^GO#sq#uXruw1k;Ttlm`HcWBj9qxgrC191++HIF7# z?l|+Ao-r>3b`*d8r3bQ^DNrI82s@y)rHAie9IzbdkcmtJ3Z|NTp;m(|>^JwiIQlg~ zG_US_@LVmzO5{m6)iC~_2|m&F3k7#N26ki^xzh^$m|T}4h7TmzG*ejl&WJ)l0+OP; z;i?(Lm$tW& zVY3GYuFNQ1$0(tVRt;jw7(`(y1t2Y)Kbmp;nFEmC3JeV>lB$klu5S;*lN=aAtf{Z_WFYHrj#?YoItvXVMP?Zy1)goDL6;LR$vYCr? zC-YAx@ef@FEFvK-NjvuVz`qijc3n`VzdF%}o_f7?RK9^w^gPKuF+h7a5*7~5rw>x1 z@SfHUp1?$n%-$w7wHRUhgz~ripCpK=xARCnIpxt!P;|K4(SLM020r=7c@X$u8YVWP zHO~rv_!h=`x0hOMf_#2mD-w{3CndfoDvid0uzwLL?!z04H!%T6w-l;9ej|UNh=XSq z`$ueB8xLdqSBVFIaV+!wU zp9(D(98(4;q)nJTF3~earKZ|j4qHjKX0|{4%IX7G?$>%@{=WMcbTbItp?2`PvleNT zO=8Q8V(X-m1LBu;r}cPcskHxQa|7@tA!VX@Hp+}Wf66g}>YvX0 zRHh6ks}-=XvX{l-N@~>&VC+ihi10R#3ID1`vbzK#CN&GDuFYYRhbmd`lE9eLN%H2NKooPWSK@0CXUYBr-%)t$c6Qh*3XvPK?l}2rKcwBpn;`0UA3dP5k^w8V$WS&E;ccdwVCy{sqkvT4j!qIB0bN{nTouF$oD z4fjc#YgHI*`XC@4y zN#)Lp^DHU)+}c=@!;{A`K*J6*6UNIAs+@%UjsI0VH9I4iQx0pl{D9i?39fta?(6}X z7?|THKXtAs*p}&QX8|!~`BCI`V65h6YLi8>U?1!i)Q4M)<&60^L6VP3Do_Mbem;n( zwCt^G!Q3WlH!+^F(oi<3(j0?$iJ;cix5nJt>yM{V%*fHudjICKo(@MX*5JUtX8Fze zI<1#{u9FSKe>7H7k})=#JaFz_-QC^H;PV;EL|`VKR)q}8^yl2;fCLpYR*Nf zdNy+Yt9E~@hu>%8OG#TfYwIWY|4r`Y<=%){w(kOwuhc=xTPlOcPRP7`XR;A)s)Ctz zAQD1TbJMfmd(*?;wr)|dZ0DzS32{hto8 z|2NeZ#HJdw2}jmHP6)`XA{RE`24zxXMAonK7OMuCWR_d1|Mob0BI9-vV(ICID6YKeOt0Sca7{j)$B=1}w{fwH2d_MzQ;dJsotpMJoAQn;b}SQTZB!r2$F?Fp zPbo9&*J>D$Y1Mow*Zx@%?5LYb(|_X082LcFvoZIenwtb_FPM>VV(Kc8?jeP{hxCO9 zxrGcV4aw2WArU>?;qyvV4O%W1Hql;1t0ai4h!pyH>q5GtP^Rh_kY-@&!)O!fDNM4X z!k~o(nt$0}Ijt|ftRonhEna0dsT)nDVu2+9aA&n&`uvEO#P=$AH2lb*(7a zqgeVq2M|T{c?H6r30ibC?^E%5CwdV=aO1 z0qW92S|Sv+#B&3=a97TxV?j4+Wcc2ZrZbxYivHl;A8U)G&e)S|Ogz~#6(km4&n4b{ z&7Q4fSm=H1Lu1fi*t*>c#R%|KZ6@HbVU9EFU(y=iR-pkM+z9d2fvx0=FuhY7QZnKD zhZfQbxZJ%9^j9Behs)Q(DzY`=G9GcN;#E~@${PfXY&{q?nk-KaxFMBm$%zm zw&>UtJe|Jb~VtJZeJ#yJVmaf6LUinE)CDCSK{6N99Oru;`w$pd7+W@ zyJEU#sKnW9X#d#*8YLk5IM10IFSEWgPnC#<#+f} zXtR}(u>=~A*AHP$caQ>E=-+->xr4L=_(DPI2xVEkZh{*%k5?qu@Q=|;gf#V;We%dD z>mHV9NYK@R}EB|s4rtH(Dq`QsDNLzS?`?RNQ4vP-Ku9^ZSqkKGh8IakMg6JgBf!!D=Y z-Gc{jS=^vlHTbHT%T=Ep{5b}b5EBk?jIQ0a?tR-VnNZaW9nj^rd{Lj2A|2`#bWyID zi}Vnp3~1BvKYodSO%|b6L;Tj*0ef-#E+CCj0Ze6E)df6S%5b&Ybyx~uDzc2t@#Gr4 z)VHQ5kG4+KL$k?^?KO<=MJ)S08JWJW<{R8!aPlTa1CTo+G-v+IV!f>Yz5H*;3njX0mO`2JK>T>N+2*p6;&r;5JIfs!WNZSc$8jncJsR9b4(_yB z3&henY1k`RlM5XNPc)t=Hp#sIK2i*k;&oeWM30#}J}@`SNj5}C9!wTZY+g2`x_}T8 zO6?p!pxqVV*S!_OqkQRLe_X5GapbWBa>}uMy3s7M<`)CE zflEO7tLvZmV3cQ&K{j&KK1``j#7@|Pc(^$*ytY>sH~I6$2TJ_Qyj~qpzhceqg%J%l z*50>tmruDe2sKn@Dv^DXk*7>P-x&5e3v`aNW?CX+XZ4YPqkCm(SlH=X471efF?gNB&pJhg>6vr@k z1!gUM{Zptuc?|{2&gy{hZmacZb-SKZ>!|6N=hhlbRnSnVPsVF7mZ;Xf(g& zj?e4ps#$wj5@A?k3IXr_)}a3>)6A|dAXx=F zM2N*O7E_Shl{9cl)%3aH1AyBaN+CHA}7SIo2y*zsAQ{Lyu+^KpMB4lU5J;zU~`-^rhP9cr7jc+ zg7L)LA^?e4J54BjKNgq_?Wd-aKF)~)Cl{&+*5ux#BNGCNkY#5Fy@PTvwmCvEsQ4hl zIhXa`OQ1~nV5z`!B|5(pq?+3a4yEabStps8+HtytoX-&8Uqo-RzkS&{J!#lhF%8=q z@hthAFD3jD`6nB=UjWK2qT9LFMvYML*?QT3yvU#_$0j7{z_F~$G%>U3+Y zbAv9MX2tJ?7>7h?!liGCum)J(3Z`s!xz;?$76e+$ZE1D4%$uRM_E8VA134QpfB8pP zTc9-^FsAJXJ>G-eW%)#JHcYOZWlh$;DSR@ zd1p(-hwuJV!$Qrx{msy=v9?&7;iXQtSo?yJNXHS$c8-qB3N&r%w*{HhA50!mjH61E zGuy5w3dy$pkad}G@Vyms09M#p58O6lkpFT#acztdb2xM$=2g)LV z5R|jyn#tS2EsnbIFPni#aPWt`5yfVc<`km2Z6W2AGB7O&1NDE3c-?6a|6l4;%B;R& z=+xcPML&Ml0gT?4Fk{JHsl(3{S{PLa!Pt1YN=M)#w5D}57x`Ea92NxoEIRHj0=j~6 zOB3g8>7RA}-G;t=sZ$v)XF|P)G=;d+S>B`{w+FPB`ISB9!dahh0S-E9tJ@k5l zH$&Us<}w0i$!KROD(^Nof9maVL92IG>Uw7G(k95G!+x-4DnRp`$mQ|*H?Mwk`v*bY zOujLzg=hYPs4*uofA)-CE-qe>Vk6ZL;N<#LowmLllO(>pB0x) zLo@q|>Ub?NuQEiNP|)*RH#L`V&uxgq0$kY;!9~uXe;KpX`luo)s0h&_PLTyW04S@{ zsr)9v3>46z)Y~7HNniW)S~o{Lwi;Ea2fIBKw%O-unD<4~{MLZ$)Khi~Y;U{Wb_l*r z{!#(<&tRXfl)s!w-@#lEZYQ!0*l^qsfX zMp(o4^2}uyPQkncsOC9lkS>KVB{ne9kjEuu;4skXkxk+!^QjrciMcVF0{o`e>o?D^f@U`21#3fPvD5WTDcieU4A5O~-(>hL zRC3*%&Q83+wZv4IYsNiPmMtr+tfmN>uyT3Kr$%h)R77VjzEWU{yVIG0LCp(Gn*MOOTTZ4DnyvIQp@4QrW|<$igM+pe^X-_y2qvaJXms z=X4|&!ENUjTrRYTfN?&N431@DY~5#E4`c*^5kTU;hXFSm0oJTn8(4|i+4E$Zk9kqu z^$);f^W>j*PztdpL+Amu69G#mGsX#%qC_X4G7a= zTw+>MN;6vKevNy;(@0I2et_6_8XU=-1K{m zEZNb?0O{eohJu{~HG?R1N;+HCjRTZeFElEa=eDz_ggIFy1pFJ8Zq9C ztKBy-NFFgH3eo!9?{mKcYz6-zkxGs)2eDB62bI>C1yg97n`y$zR6lPO4BjujC;TQb z2SbLxNF8vX9{HL7`j-wj)g4l7_YmXDRn1b@!2N2c+{GM4fC&p^n&Az@Dhh#o_c0S7 z>4iVDOG&iPjhh__jwu3}f=!4ZZZXZzithv&E&wcc&%NF}K$|O)FATz#e+)>8K)uzR(|ZcuBY} z?^J+h#;$$R(32zy11moFiT+O3AjjI-8hg(NmyN4 zY1R7`&?gyW+TR=L1UX00>>(cUzUe(G!GwfdfD{j;?;;-gOV)#x%&03I4#XL+Z!g?}RTF0C5OT(V7&x0cCxLPNkEcoic%uwF^vyE@I)W~viOH@wapmvZ&Hx%i zIO`Oy%Gx(YZ` zY6Kr*g-a4bC|8ph$NlTuYqIheWiyXUnjbq;ALK-4yp*P_(W@)$#q zQ|tojO~f^&fwwEGW*LRhmVC-}Ixx;vR=3M{SX4@&mU{P9Ib=S4lmPF7T~X!yK8GH$ z6AGxnfI`IZ#rxb_#cMgvF|wZ-b`jR?YKBLo!JI~Fw-JYM&Q~isr6x`%K)IfK9lnf4 zzzOHrIhznJa|$WK=UGa8-9ycKFOw=!=Tz;F4W452K})BbMUv>8XZd_nx` zX{ms|lcrGP*X6&ti-L`3(v8Zb2x)eTPbsE?Mo!6AR+p#%Ni4jv=em%ZJ)j4%iA1FD zX4MVQ!uRX)siIpdzt$fGI^@;sjf)?oyGo5)$zbltTHhgrG(CrHMRD!K0dQa|So&6_ ztCyVmhg>cv!{)Jjk&H4ABj{jxiJ%f#Y_0GPJP@=Ol*-=wTO0~kNh<6Rm1q_xWc8*^OJT7_z$5BQCq{Np&0X`L^1tC;AnAs2pe$hTHhLVsu_h8f5 zGsNfFf#|cdgAiklq7CB#K2VG;{ZKl59*|xM6Z6$DOgBuV7VjMNJ~;I}y!gQ)#bX4I zML_0pbCHpnGlzDn(bwM8n|>E%FpjFS)ndRogHG~`FlxJq_iZd(l>rrF3n5FHKQxW5d2 z8#x8jjoDXE;mq#U+?bUqHH{K82I(cqNJR)oHU22wkkK&2Lmgs()!LQ(cz_Hx3xhk0 z8{2iz*UuWQ^imbXsrr9U6KPIRyx1{*Ip`*p1DTk#4~TnLhxHFat>_F{I)gom zo6$yc>fnGzGX+SC5r0-wy*_$qNdf1rrVSSyL*4$D^?oEl+hC`G=)mZd>7Xg- zBieISq^2T+>jhn+1=c4si-mSc67KHcw%o)0Q~@U#2(>PvqiTbY7=~I6O3=hCM4SrC zVjoDzu44+amGy_2u-S(K1fU0IFPq1gr4~r_MO0^myg{yW&!%sWlCs0L zXapvE{&oKBMcIWpucCA4un zn5K3@VdG>OdVLJygy2SNxl;&FDKqi!5@*}=?dPtl|M&CR&evRo`C{3cMxy$54VMFZ zh?*iMIQN>AHjR7e7s((RLL8nP{0pfVmB$d{#n3MFIo*H89JSxM8jN4e9J=NFZk@K^ z`3G$*cw>bqtSc(3YzuylAX21>-ci2e^SkbF?LE#Xv?5B;7QdV?C^U4xt~6)Ev`g=n z^@<7y!k)~9VP~ZtCLDUY={CJ!S{dnkySh=ZbSKZ71h8DQmtmk!Jk%(7j32Z4VoBcP zvOXLVPoB-dL4{uGZ!{Orm}eKQKI}n5+qwPez#`hbMFX|de$Wo{IM+CHcdyumcrM9r z1u|5$raw{lZAo|@ZQ``mnCEZk$meEo${%<^ENLNqu&?c&*T2)rEusa>L`YLdZYBvf zv(Ld8#APsm$+usGh7gLr&Ocm$R5xTJGT~hUh>0V%V!S06jr1YIp#yjCCL;`)GW||N zK)-TlHq)o1D(8%t>GzR}QuM8v$ankdgV_rv8daIs;^742Z1H(6b#LD2nfx<21*(5x zE%Yf+OWvb^?EE`Mtf36pE3r%jSEt}uNL^5quV}X6I7xqBPnO@o#h8riqGKdH-tKIe zXc~|rtpjp;E*=RrZjB<-{4aHJ3X=(fKn@7LJcxrNoe(5K?RkyQxPLcbrHPE80hC$d z2MG+I9*a6c%6oL`bMLEmNF|Y(QL-uB$*@Q=W!L6hJo8^utoOlb?u_lYTcl3+=dW9aK zrl*vyjb-P3SM6THRq`|au?TVYt}hBryffMz z^NnTKiNpdl>JhJz^fXOQOecGEY#IlZ%d@(gwGf|I*xxujaC>{le58S8wTozfWn~zq zF{2KfG|5ZV<9z6osBmz)Zy5cSduV{lh}!IZ7l5ys)n@PHb(R8}yP)f;88hzl+gdCi zAd)wO(x5%xt}?JJTjgr#?3&~fzitX?p?gW_VISo`?301CLB$OhLAy|m?)cewT=Z9E z>dm?l_me(Wi42kOXCiNOCXb|P4E`VgmJ5niW_d(%CbFJ&T9~g=ysT#&tK&d+@RTn6 zP7gXu2b#?e)(?zGlYC@H*83|DBjE3r#r(AhhNaH2e$-(|)ZZ_{kF_FP2Nks+qj7YI z8|Hw5B)vG%ziL=GmxKbn=SX`}8et?(I4suHd&QnV`y0}@yNRB$){0koENiR^=i z&B%f^5uBSbPWWrU(Dvk2K9Y@<>}9x>`pkVrGXoGIz0e7GGcGp*>Gc1D$r}h{=<~M_lr93)ZO?3m zmU5@DM(&O#gW1(9%3 z9GB2GfgW_36UM$VtWRo#@9fJABRa4{wRmq!on59MdAG(6`8WQ z3~U_##WlC(XxQG)&ssOTlue$<%a@7?WJW}HzBBJ4@RR5oZ5McB=ng zAlCO(AEDe$-FX-R#|Xxzz1PII>A|jq%JkJuFoZK~AR+DbJl~u`A7?>fi&=x4%drhw z<-S;^;uqyhFuGkjB$q6{jYN8{y+bV}FBct5Y4WjoVn%Ok^*}tVDCO?Twyf6`6U3Ir zDuQbtq8djLRWYyI>k;S;+lBY)V#)WRocQjx6;6IpeJn7g24w=EqGEdxZoj(4_pn8W zq@iS|B9=S3+cdF%OSnfP*VuTv02ny-JfJDmG?oZW+yNF1ClcE)feN^tHZ!3 zlv%J|mD7xST;zFC-fsTF0(-d{6g(La-t}3Dd3W`FUWrcVl^c4hvC1Thx^*32>o|eMA_fB!CILQ9rOL5DJZDbWSe5H9x9K_fS6Fm3_HGKq5kNC2*%lBw!OYAl zmAJ7{+$p!4hN~V9ILNbQzI&J(+&M(|-LfAgW(USw>#;1haqzlR!)mV5yO0}IcOY`q zdpvA&9aj0%`@t`!7PLpkxzeG@4u#a;_%rh4!OM7eRI<`JyN6Wi&OE=3CHtJ3+Y+^r zAr3Mzkzm}V;;f#Kfhs|@vXUrc z-u154RdYU71i1NY`~yry3CQu&%V6T}kPuwKp?csu)4_Sgrs6zXjRC?DRKW_VJGM$3fu|=@m#CE%!X3G`!Zvu`jI>|MgBKQUM;!j@qDs_gBlx-<@ z6C4=WKV!tB`Z&FJDs?geiN3%#;Z<$8{@_|SIXACMy`ywZ)m+fRVKkU$m3wAcfoQ1+ zbp57)C^pv?`=hVA>^)JL_(e3PV(KMr#!ZU}1&?=jUTE8jNfx;Zz^P=()M(A`}(r;sBdaqJSm!u}EbAgbNm-*eF2=uQwho-Amr_sZF2Yh*nF zEf434kb;dlO2bEhjLRl}vkX{<9;>cfCLG@tPEI?s>Y`#Y9B$#@ZpPd2n!90VBsk({ z)Bvyjy$Hw%b!=7nJIkwy!c%0V*K9l&oi!u{Qs!m4mlGv_!u$B5bi2M{68T*1pz(Q& z_QOb*PGsHG=tGY7**2nj`o+lp!YU^|F}USst5)BpJyz#h~$TYxO_oFh)+8`1*%qT;S(NV-omZa527+_ zFJ;LrR<8f_-jpkoBY0Xt*Yc(fxMEinlbwhutR&&(zAebYv=8?hFgmL{Q8fFqX`;FziJOer}`?9Nsa>Gm_2NtS%hd+X~L^JdVF7)NGf(@#if7%XS55J_wnA z?1KUfRQam_#Ukv%gP`i2<^B3AXE}00{u%olo}yWNSu%?BWnlc+&FRUyK6K;EISBpd z#pD{hhoyJEd#hR!z&nTgg83)>qYzc5rxxE@8C?pbp6yE3oLU2pKbo+BEfCvs18v~cG= zSiSvpK_w`;M1e1pecA8}qO&^NKidW?G@Y&YwxGgi-@l|gY4H9pCAgGV%iimCp@gjf z!6ba`IkE4+kE&Obc9_xDgIpc~UR!T$=6mv?*4TT9bM#Ww>k~N4!b8243O-i<_Z1#s zHs31;+`3)ANZ@|Ganylo6_GLh2jGo$xsXjGf|#zs)v@VeB0iaLUbpg|9vq-?cb6rx zVb0f=kQyn#2{JDbOl0)p-5~3=PfsxCI;R7BZ=vmoUj3eht8_Z4?93n_2XEmw_yvu; zbrpR}`t#N*e>1uT`DHJ7o!4>xBPx$$_>iHWt017p&&XuE8C*&~@+njJj+$ z-Pj2yxJT?Zrj^%@+PlCiuRc#f(`jVIRhZhN=v4^eyCwhU3P z<-E|7IQEG8Fey*2)Xjc39FtRIk=8+|DFL`;g|Hdl(U<$iri1N-1>AhsRzzszd%q^_L(rjz&{|+&fEa=oACe9rr^e{7S1eXPX?xaT9g?4IB z3_zU3raIRsx-~$A#ZC|kHh7nl)ZMs;NY0SS3cTX*6zLHP6hOI5O=nsGus)N2mTO`q zfFd0cc7Yh`CI_sQNU)^?eq~Qk`~4K93?IkS88b~aTBC_|IYDz|L?mYaYX33E`ex6O zSKM~8hM#zS$*qp50!SLlL8v2$&u@p9PL7cYXN=;m6jteaCMcO1n;9zVZdr;}$fSl@ zqs>zJdc3Mb^29QM+|1aG?>`%d7h^9HAx=;z13YlAkYVe;f(+|Kv6Nn6_f?s1#_b$+ z^{f_iVkHfy|4j-p{(L9n-fYgP zzVpIE4%xW_yrcz@*xCn~tB1rQ>K@ir*!?WqxWhzK%g#GExuI{NddZVtDFNqQ1LMt@ z`Zdqo{o}ve4NVDepw3D6zS;vjA`Z?W$<)lPSAZ;9{k-Lyf6oKq*1^Sl57ewIm}UBx zyuKGy1tdupZ3;iXFih~Jb#+)R%idO_Lb;$-Z1QKXtbq;>+Hv(kQp?`L=j7P6DI$AB zZ|p#Cg1tOOi@{DIpb=(Sj6-@{QL7-QQ_t4P1tmV+8I*!A27tpemYX?l=06dfbvaQISGu~`Mx#OLPB^DoD&78X=eH8%ULXDZiRkojo(9cjr5k8 z9m3GBOqSf}%~==Fv)(L){mO}qVW`5! zUnBR*>&%aORi<$IE&Haprl}+NX!BcCX^&BkFLBBiQSwCoc(d1U#`ms-D~{=%r=Pm| z+Bl|o87H;o(5V#h$l$GYB&OxpcR#6W=}nA&%*uYB3|G)DJf_fXzY6l@0CE-(;seqb z3!u4kaIJ0owJ zVKm^JHd~3(64#-TKU_F@ zfvNq&OGc^Vdg2`h+IzB^7Epgbwd>VKo3pSPA1mV`;!i&H=QdG!X@FH8Bgr>daE4ZJ zoNH4Ov-SQUy=5o+-Ouv1T3~0QP(Yx}CLx|+Tfajr*sTs@l^d!sSgCnv@ygD6I(1*8 zJoaHr#eb9_Kct%t@dB5;)miW{B)wEvNgthgil4foFfM%8ftM_ah%xdV=%Cc!em&on z3bt9Pb$dNABc?kk2~dl~W;KVPs|#vQlY50>gDd^3PjVi&JlFL61>(Xs$`CW@SeP0; z5jS&v0Gf%6)3kHiltO90Zbjcw3}t!A^#Dn3qu#>49iK6|YVg6)R^{$ALhbql$sxir zTja{mYX5jIt?lyr6Xb*P=C_5x5I=KHWzle)kPirHf;AVBmH!Q3q?77Rod8@BV@%D; zQ5qH9IWpG07}_Xw1&?ro+HF@AX)vYu%jhf|(PL6-)M5CjWw%z{>3H+M52FSfY^h_NN^u(F zMsJeW`53Ifha*H#%|)phR3)4-VxnUfa=&5STvlj`sWMLlh#v9u63;N5`Mq^>mh6md zW1MaTgJ%w;#yAyGoA}ln`ed${UYzF=q5Oys+{vzzz%36{p{oWWPIxpVsuZEP6kLm~ z(0xi@bkAGlvmnTugC)J)=m812)v}q@@W6EU~gYGE}2)vU5`iho{4{lO~*ut z&{%a=0Q>kdP%2Pb%B*`a&$6Lyg^D+~OF8?=ibqP6u~! zcbF8rn)iJs!^-dBhBC+$IT4QS8wV4A1YWG z6jFyvT^{O%3&D+N(pf7=VJk>mnRL)Eg6cI!&Eb2)I|@HA8@g6w!O`^D>M-eOakLZG zxiL4Q_Hs}i}E zqvU~_plh>@*M#Hy&T$5g=3!_?HW&9sIxY;e&N zs@O79?D7BEoLj%{8z<(Yi~0jVN&G6?zTy=vzU^prvcAC?gyUt#?8HQ5yO^}TOso;^ zGa^uLS`_d@YJhaT)d@Y=W2Z+70B8ZgKwc4#v})h5LTgHF&CDi1@LNR8bAT>ZBp;q* zMbiF)1Z{ZiPjfHEm8QzlC>!Iyur7B7iHP#V1|IOx0SLMy&!@-SjCLBi*bG8(-Et0k zy_K;K-m862TM-Q2O+X|}_@<)TF|ekK8A*>h@B1^!Cnu1A_)H^I&A^>uu7 z|LJh!$$%OGSmBo}vB*dWL?ncpKC!7ks#Pgm#oSx3ww!&kL9Q$bzJ(KvBc}^_c6)4? zdZLs_Y;YK*Xh2K?G!%w1Yvacb;ZAq+;%B#EJdZNx zk{&N&q|KgOBxxs7*k*6P7RwuUrgVPP)yD=gHEQ>xwCqt;rq}b{_kojh?9ufUa{l8! zfhQ7ZMp8M*XQe+BagUd9$y@witN$(-#Yf>&A7Le1zwjxv8|cm}N~8=f+<&-py+IvNNBBwe#d{Vib1ZyRPN$SwY1R0)3wJ zAhF^}wP{L)*16BTSjge5-nfoP^`$s(=tsY+##-&~Sr2V!yE0hkKjA4m0XxNFSq3{2 z-W1~oz}7#O6QLe=5y$_q2sjeVi~l*D<3b>hHI)2VoD2L}-&7cUJ!A2`Yb6?0xh?WA z-70A?x_FtilMTzVVNXG)l4@6R{K$&R8NRswSg$-1WCwrW%@N_&~A41InoqLwTE)Q`$b%mLwJx=h((Y+HTJvadCe0E-*02~3-S}zXt_l! zE`0zt?;RFCoHBL^ACR70P9SD${KruY?*rQE%s@vfCCKX zU_^%_YPBYo-AA&Fl%Nx8o&N-xk8e*lUICFwKs|E zc*Re$bI>^sGj)ys$MH)2NbkU8$d2QJ5dm80;GVx$<&YsEYR2HWaf$Xa(t%^`lL3egd^eHcVN`m5fQRhU#nP0ZA7 ze9jAH%f{jC@*QI^nyf6EyvnVvI815xhV^v!G24`lTu=%qyz7^nvUZx_vJA`<49dCe z^}+ADMm6)ICFKYWmvVAZu-qP#Zo>_*&YS&)4AIU`hmqhMZvEQ#XIDaLx2-5?q&=Zi zOinj1wgl?BsT+$!C*lT+;?dwcM|DPq!`HU55%FCWn_+-cp$3w>Bzm{i4S3 zS126+u0fe9K7hEs{tmfgh-kL;Uj5If&~@^?g5c6GJ4$yT9%sf6*vx!e9)^To4{xxz zPjcB0m|Jv7Xty8rPHnzUu}D~4&MLH9*m)ZWyT4RL{ID9R#Hg3*^ZdJ`>Nd=$Jz$Mt zQYc&XA}CrzSv#qmE4e zflJi_D_s=;YZ5A{Q0Q&#fMG+l6+qEp4mjdMLPeHgnyWPwYu0f$qRkVvWh%wcHtPIxkD zPyVm-H`rhe&w3?9EB5Q#)&|kFL;?w0QOTM(u#hW%^?A#*IUdZ*Q_5wFjCFF@8zb+O z#T;^w9#T>Uj2WcO4+wxcnbI!JBY)0jNx*DV5}{s@w;PEg;_R79^*u*n1?Z$22>EHP z*Z*WGK?fCbz+|C97@Tv=_-S?n%ynI2pJmz5NQk-2D~z;E(h{Hwx-)(18^u(2mYeX% zHh?_~wb+P;mzqU4KQR_Up-${9BWt%l z^1DmFHtfFOuJYrFFPy)fQ7^R|F1R5|0L)P$wbMQV<-5+1CWC30r0B4JI(4j*DBi*V*{nb^m``<8u?ez zvVG8_%>UB2=Liumk&FYJ2caskuDFlodtef!cOTZgOQc5b6zO|?k%u&#et&SKDKn^F zP-?8Sn?kTprZ}tx0!H2|2@&IJA^B24hpc>Ar=Ff5au%Ek6Tm%mn4%)%;zJ)H^7NEn z5@1MVmPvD4Mx$ETq@IxT&>&)F1C!eCjL>P+v*CAWq zo-V+jDi!Z_li!{>LLh|jHcZ;-4<65be5Wc}vn%t~etQhftAD;Y zq=>Ej{wQA=G>N3`PghqpfK%(`v;ZeZ>Z8>9`CT0%Zgw`*kAjk`z60mYz|Xx7`5?SuA2hAEx=|Dlft}Jc+h1qgd(4V>++O&1$j;p7^PVGVA0}8F%Kr@8Nw^YTkzL0s zi!|ukn;asI#{hh!waqIr$?_zM$IZ*Lj_)coQ5keG^(xFCDVW31>hIUOJ0^ z%7+m+N3HT=dzkj+TyOG$g{shDQ1wW0di)lc{m4&KbZ~8p*9u1*9JcO?0jl3bI@2n6 z_GOhI;MAxs98YGC$m7|RTJQmgFbl#J|;LWcQo0h zFmw4c6Xfa%5lqt}XdJokg&Q#vf?h<2RpN3e0=Wk2!iVg{zC&uOzk`!;)W}$yWIni_ zhhQ{LelrsYID}L{l@XO`HoYQ)!4kY|a#@uXDhxtpGBq(;QB%S`do_(D3CsN_Tk3r4 z*F$(X}czb2flFiZqQqNovrx|ji`SrU~=U9P>U<+hGm5T=BiBgfX zD~k6vZ~eX(c*k6u`v2M{GObL;&F(k@V4}0ADt6V=?0K{hoypoa!6a_9zw7Hnnr%4L zT#7+NCH-kz$4wK#u>zII*ik7mLFqOP<=?t|2Py>AXIsY z`??-AyfOa|YnV{Ys8Ija*@Gdu%s%`*t@DUwRRcpacG4(7EKUrAX(?*}C}z$J7AVqM z&`9|{t1n{X+DSNc-c%@ZXIt5h8q0zXAx)Eh)9$5{DZBmO_ZoIr$cZP4-B+s;>I~gY ze|gfqW>;xZSVACUEXMvH(imZ(kp-|_&KtdxiWQPa#VDE=wXg%JE-Wc=H zmI9xiT2T|BbqabA&syVfZm)<2IN&5v!BRV zDoW1NndP-6X26JTjW&S5`z8#b*b5Q-1QTWoiC4c~B2Vh<9wIKGec>I9R)Hx11r^KDBVm%j71kDMQN#;v@>oPvpwg;H~Pm28`+j6Tb28 zz)x|dl40ABk$xsB=!lN{Jbo)B$m|A?YUt!kT&I({Q9Z;qop)-xM;E8dSnEVQ_mxA{Qm^f^M!v zNQX9$J*Evb{=dH5W!DnCEXF3kVHlYgpCswy6ahHarF;sY$5A zB5jl9_{OvX?WO-VVz1XMmx@#@Ye5p0%BR=K!X|C5^CRA zxv?`%QoE*967W&m;ookTj?)u1+V;|Q7g@rgkyh07{qXkh{(Y!#0fKP9S{cQ992QxX z3&CthDgzZ*2qDe0pBWc*k#!gYA}%K>7J3_5hSB569aQd;1DVaugV~W#_aM6jO6o>)Eh? z*KyyLY{D@ZfcvkIR@21h#xzxVKNF_3h#skstVJVPJgn+;7fU*(;n{g2tE4ODFX$_8D>bv~#|k;dmQ?AtR&H!6~H9B{lP&C`h~4u2OMo3I^6U z5h{Uxlev`Iu#co&sCmgYcL}cZ!tE zo_DE!6XJH>=g2i8IZ3k_5CCBWFa?*)jMRM|q7m-2;0_e`u&INpxJtRh-l5u>PY7fg z5Y=#z99Z?2afqTF54l0)e4i8AO!ohN!G4F!i>xOD5M7=1kZ@Br)?WLzpF`Us1Ee_z zvwI-Prn56dPT`9+1%fvEIa9kcMk~*sQC)WzrX*|4&?a#$a{h^Sga*eu0;*WUqrpB< z9aW0b>QaN}rlND(Us0~5*xK(m?H#L=hFg%}5hh$R+lK6l+8B}?L_mhX}~PXcO* zXo2fXqaP#Pll&|OSn%;0@mUnFK;dWR=}elPDQu3Dz<^_bW`3|Bo(*KzM_EJbQ~=q0oS+JcNy~)t zsI&DU|{KMIRCm#l}ay5BHga+Qm{VA)v!Nbx_% zC&m-?HW(#6o%7H+8$-9wPI&XT;)|d;stn#06>kk%A3BaV&8-MM-%xLkH-kbY|Jyp&kZA!{uuW zQQ$!y`AHoUJ2fq)%QQ*3!TV`YkJrdT|94Jv^K(KGi)?4kp+KmowFp4cOc#NDw;1rzKje=BLSHL`AI5N>)119bow!xd8Pc7M&&r z8g84vv#RDsQQI^R44P>%1D13(`ti-RdQ6{8za?Q8?K!ta;3U&Ef2GMLwf7J~iXbE& z;f`T+m3e@8LK4Z2v6OV%;S;4MzLm@I%;$SrN}^fEK>1%}29H@u@-){hY+#X|H1P%4 zhmp0W2bTpIfQ1RXfA)ALX-#U|;!UB<%LFd#v-5|kSZ@!h20lfBY(h1(h1!IOa>{qc*5Uo zPZBnP@nnGL!v{YR0n-@4oL3VKExMXk%~wKpifmo; ze*2G?D}JTHHX+D_YbIw^%P6iLmi`xxgX=Z2{0~dwwEry_1^JH{kp$?kvEls)IR6#* zU1uaSOCCUbGHb@^Dj4_IEv6d>%A1sqJ+gpaSP?8YCkW8?Av4j*jRv4Jy+s~mxc(XC zI3&XQ5_gx3Hs3uzsgjNeE$l3OF=tEN-$}~z*v*{o_KARnB(d`*?6aE_3hSTn^gnOJ^M z%Zj4b=53jfwji-dGP;pIfv#kt+=Y>U(@%}#lI06NHBWiTQ9d4BGh@$4kx`uEz#9CY-Ho_Wo zcn%FEY1-5z-FyyD#`o$HiHOHpi%@lJT@W8)#?QI%PVmPy^Z-~QZa9g0T=tB5Xtqiim2qw6GOLYDa>{97A+k zYDBm-9BajHDPTB2X!uhmykkk4khG|)C=tc0JRg5RzdYkKoqRoA;1C|l&-aO-E0Nsa zucs`?9TmX&w$XQD!5hIvy8vjn3ik-b2*ttU-M|e+ePS%SN08{2Jk^)!bBk@VRN@a4 zZ;2M6Xvhj^h{5}j&1>!cjaJZ`n9`LXSZ8<9?#e0f1zk*i?sc$A&bapof)CR1p!C_y zy7aE-EP_E&W`%tZ_ z#$fiah(fP?S4;}J>1V$gRM}K>RTTo;%d+tClV_F!0q=r`hQjR0rEKu&xL&O zAyUqhIX_asGDXJialVHP_Q`zI%?CQ}Lv>4$U{O%AywSEj$3{T?xWMB@SzC!agBQPa z;yM#@v{H|vr&^vHJ)bU15Z+vw{1;7}8*FIO;2=E<55Ya#aH__BXu#ajp@mDJ&1ZgY6c?)--MGDH8D`T zt8~Rk!~0VmNpAbrz5WZnItDe|jwxo8YurK`E>h5VX#8w#Aql;dQ*+(#m_difJyA|q z00*;>b4x^9uKlcu( zoP`9?Ne_r;ISS`s1LbF{8zB$Y2&;(Y%P-H?Ak(r*`N5U|VB2~KBhmT~HFWV+LPN;8 zoTuhic;?MQ^S&_l!~nWVu1sJD^9ZWnU)|g0TWGMYgRhuDcvpps?g;NRY0;uG(J?Xc z*jGT^fsFYK_F#4{!-y^t%K=H(D`zn|^TiE%l0fNEt6nrn$oR=^e{Ox%ZGN}w*52%F zj4UT6cAvOPk#BqGbfxOEF!k#9^_;@;kc%glR~yh$sreG80CyOwf3!kfLl?PJAk*eF zdT8Noi^LLz*?U}~QT7dNxmdK_A-lRin7rfWezXuoot+vTcZ>X=?QC*gQ_6ey_oci^ zz5hU*zaL0Lnu?lC&YJ#u-`e2D2otZ?TW8KEu1LA0$d(O95X*vc94AAPG^O;gkON6y zL;hBb#3J(4z;-jSvW_REdrRTsjWB&8*GqS2dF^GPvydy`I}qpz)|U~-4I@ROzQu@L zc+!y1uFOdWI&`3!nF*sf!&H+RM~l58`GVZM0nqu62$g-tg=S8(2My)o_d%pd$NC%~ z@k|%cB=T0+=^8Sfdd@Y>2b@l|TN^NPH|;96Po(_FTg7gvRSOO|Q-N2~8oN@S#91db zS}IWpe~_Le`(BHhQHCX$;fluGf8Tg3Dng*1?8yK_;R5IT%_RS`cxm;}ZLK&?9L99X zKnsbV2qpAS!w+7`d0?Ah+=i5L1&~1p;gRR$XICk=569oC?3q3{rOCLvFo09#>SdLJ zmBPJiX{b9=d#4W&KF*x3U?enSpT-L@6$%(pqT=!Pa%ySl6CW3A-7u zk-TFS(s1HB8L4c0<|pNZ3OLqTly#no#{bUp${ScKtmO!~&ouAe0>#U0<%)T@>7?vS zlbfWN+T*Oome?MGaDbA0#~Iw%wcE>%J~MJeCM#;=P2&GUw+N1;rKOQ(eFUVxyCgyH z*(P;j_e+4jdR!V%cjUh!y14C%r*am9y9~jv8lrvi0^kOv@9lBlCwAoM+%!4#JDGD>f#Ds<}n~YKBFAl`i-u{3w{%Ymb zH{+gPP*NDK91jEjOw9-1`kzE4lBo1fnb?uvK$dXI%Vsur-@L~-u#*_~{7ez8drFNv z_hGJ224MTB?CZOs!|MLk*xnRfhfMX?*drE6g=-E_*5TjT-Shi>pzo`iCy-L9Qc7_z zim8-smn)~|_xBtj%3Bvx!LxH*ik^F@6(zc61^_+y!Yb(h=?)QMU2aL{zOqz z4{1meQjlUy+HXJB+c0W0<&MGpy8+wEwELB@60xxk3 z5J4Gf?yE+Yc3%<7`HgsUa}5sNGU|`-#uKcbx~lH~m7hV6)2iDXwA{vm&9mu9e)uMK z2W?bl`)=!iiZM`y$a|K1_UCc7G2oX-9L*;z$l_fzRB><-U%DP!rwJS)&a z448V6H!mFp$=i@SaG-EVz4b6V;i4oMN4y@A_4hzOb6{(Fy%}}66oOf={5vC4f!_?` zA=wU{NQW+s6kO38STm)qJ+zFkSlGO&&v z!NfYr+5XLqd)f$Gb+@!6uT8&4BM@XDEBEIn&|BOPP{}7?*AAn`M@8*lgggRBzsnu* z{!vOVz|Y@at`Q%&WDEzvf7#jorr8lk+}ji0Gbmp5T*YwEU+=^7WF1Bp zgu~wfu;p;oX)5jOJx}6$Ok(8_7#b9f$Ko!M$yv8nGICEv>m`eM=YsKlNw-i~;>OwQ zPDVh7Hl+)6DS4<4nt}s=J=e%2-vtl$XMm6BLl1=b(7NwL&nsCZI;#kEwvU%sJn64;Zshut)`AO6+Shq>E6W$F z_^rVyv_$4SS2Ere^ty_6Vu(w?EM?(T={^Lyf)3au(bSPb5bV?z!}I1hNgg7;~1oTz!VWXBK)l;cI%3RrV-xefn$LLPHysfEB1L0V~o`a zVq#U?x0ttzVa?@KVmJ10PJG%A!=l%=i%Y`uFqf(1XpoBtg_m-PrlzlPoZnpwXTXwq z%c{61l1hfD`*_)8tz3@>_koB|5!amPmfU3oKt7aH6$_1qA4vi&wIxmt7jay2sg)R? zT0k7ulW&AD=gw*x?q@m<5b;r&p;vjrr%G$nNWAPD?~CVV4m=XYov?ztT04P^bheKJ zh;XMR0vK+`U$3Cfs7B7aEmr4q31=vr;y24S9lX+Okg$tw)5TN&O46Hob$kdGNU(S( zh}2xN5PKUh*c1NP3&B4y{aQnoX6E8r*n0aN06mpIwSo&nrzRQUJ*C9$E9+fOmAM zjgp^U#G7n&y=Kwii79PqoNBrI*rjD}ED|`CD$yUB=gz^~pF6Xh?JG*J7U%Nn1WPX} zdIb;i&ksxJF4&hk1H}n$R*7kJ67~zpE8w{mg$WUWS%xw%{YPsL2eKk1^zON(Ao2gD?mV<#s(omw(G1=@b?oSoav9G4*J_I8}_H%KD6Z>VfaDhR` zi{?`ldvXsd-ef+pwm<5>%Ifaw8z443rp2A3?hy^5GR`u_uODLu8HMCDpM^34Bb`R1=->px2%o z#YSS$Bf4-al5`$RU{-{9JnuMCqoPsz!yAa-s}soOJoyiwG5=UQPS=|^yQ{V)$^tGh z)oOHJ*5viuscVHirSNZm&kmfDfIvNER}HU@$g3ng(qUM%X(2y_v_P^MW;pqKFNMu{ zpGRk02ZP&8cMe>C9cf>F2N9MB%9)45NqM(a=3hQ5lLrGsbqRn%?NROEa@Nrhi%+TU*6Cq5>b~R z)#&o)Js!@0)TBM#dL++tD!;LOM9fONZJ;ac8x)6MVvx!+9ua~4$q^Qu@FSqqF;ZA{XbAS^2RFB@yo;>Twym+BJ8Be$C_Y< zT_!FDR1~dOA9#QOs(oI}OwPNrRHmS-z65|Ap+u8O1X+P9L&&dyg!ROsezAn(AxU zbs<1Z@DeL6!*~lkhc@4>i;i~FYNpC2#oYmxqy8{D&{tb#Lg)_T? zF>&_cnkDnc#>1|x+dN!m2MW7NR)reiZap*#lj4U+9fjo8Z7lYo5R(7t=h)v?sr57O zCSMteX}sV+G}fT|0fiKP0dYsEhhDSc83b_t)R%6EWiJo?1Jm;VocoIq9Psp?%O{#c zlQ0WmMAs|^7v)4*M45Q791psQ!&@kAqT#DRoNHxdWO`ifg`S3_dpJNx@@1?kF`ez_ znvt!}yF`!(`m6GG#|K+v`Y~!Z*((+qwPY$vUfcXv09NuuH&P(qm%^=C;sn<9pB6a$ ztA<${-^WtH?N6`|JL;huOp*43{lOj&Nkm6*2oYD8ujQ}56);5VxtnT#JtLdiqY=jH-{48 zFe8B?e@M#2KM1q(TT2gp@*qGuQAQy@bkW0d zpSp{ni39X3lcKx_1m37f5YXVczIRrT%;Mm==vlW#W$K~i_3&h-km~Q}OrY?imTeG7 z_JEy*oJ%xcp1@M6g{~tVYd|jm*L)zX(*;G?An`9M(k2MnaJ&F6b&P-u2}Y9RYuy=J zgT|JX9+8*D3BHR`VVMLD6y(|IDX8;@7gy%>vIY}eC7}F@2VG^6NR4evVwAOggJKsm zaKw6J7p%K@I>%y*ajY#`R|b;aerCJwz6)WvAkn=H0ar_a!cDE@wpM)h6+J6WMfFY) zbY9Ia{q>Wv^d$|9zQp7#HX^zvdf>2iVhJYn2l6fZI-d0xoI3Go-EEwWI21z0vOWLl z>JwfL`!|P^7vn3ELa3tp`=WU@)Q5ZzC%kmHN;8^t63Jxm|BKDHso5O2#G~;+lnC4) zS`y>Q0io8hB%665y;H>ak5J;{UGAUn8wzWYv-0y(wWKb)39*-WOR?uN`#U1niz(nV zf>3_8+~Xe2MBW#4nDfru84y@@6j#TI`E&q~h-W{zO*giuGPIduE+Tb6a~A9^PLS5u z-%(1OCc`8|{zSl3lHJ3l+#S_Vd|tF|w{x&FE8B)+NH5>N%DVh8z*Elk+xlJH-{L@l zJSTZZ1iWVe|33i05@=krFhsapX$zilrKEuXBj9>fOna?XwU!w?rFHYXt@mqsgx(}k z0gQ}Uz2uB$f0p;3i+O=k@m62tHGH9RPn1m1u?VmP9)!I+d|Vr`%S3|-Ar6CuBbHT@$^Ci54tp?uXUB0t3b^^%n9r(d z*B|mwsGpN&x+o@D8v21LF;V|h3!%TxTTIlSB&1x=>ccGeES5RI3!tseIZa{d;DSrL zu9|R^PkYYqWS&3Oi>R6gPu~uYfBX^I2DBp(`9~fC~6T*w+B?1?A^iQLm}Ze z6uNUAdGZp4whV{8rqt$1YC6>9Qwc=$Hnu}CG)=kwV!TZAC!>k=FbrlQi~8k07=ShO z2p6%?H0qFZxBqo=6u_-S&zFu);veR#0xyMnqTzF^{dYUSfg7PJIDr!6`)AMh`;^p_ zlEz@>V|w3txC>Q`br*N^J(%i>4-!H=FTH#sA-s&o8&|=?5(I zry>nG8;XE9DfAHFSA=H)gUy($=}HxWyIg{I)0K~`Rj364uL$cBTe}8XU@!Rg_z9!a zGX}rpBLu2M#NOw>F_rnvNa97@rkem9S?h7^LJ)wXuZ26`Av>$92RH1jE4F<6aFQ&s ztqx~4R?mQv zS00=BjgvFKCMMqpJ7rcnahLmeWlqjyTMee=)tvM3dpY0$+&-|M9THpw}KEfA-P9~$x zYyJ_R=f18^=D0<5fIB1dQsoZEm_${SO3@#Eh&8o5@q;6pg~D(^glR5O$!Ua7xXUQr zLXRA>Gi8BkSW=L+^aw8q*>Gc}(_0iw)ow<<->OU+)dgg?ZFUm=U6it!)YuySUb^i} zbgUrJg%o%_4u5HiwFRt3&Q)$u-hoGwLJJtrw!KvQiYwpZIMMz%eQ@A{{|AT!K!yy= z?`l&o^N#5Ct2b~gZR5K;@O?%{r)EE9o&tF{4m!&0LnK@KJL*9euB4P$@aV>}m3TLa zM;ksf@#TO2nT601YmW7FVPIVFk2)S60Xy~hhI%u7o%T3hQ6f0(#1h+O=rql)JsA7P zRO|;G^=-gmlW#ieov_3xzO|E-VqvG0h9}O{Bpd#32-di5Kb)zI_#e#_zOah`_rKb( ziW;!L@Zk|ELWAjB$-XsYX_?|9DgFD}{G=Y_Nwe)EzYm&Rw4f8W?iV=hxu3J+))Bq>r#%MZ|3Y<5e z_YPq-y_=XIqEJDY0Z6Tr5xLmY>O&ergh^k~ph9QUb4unAI?0f+)%Ljkm+$X&vj6e-6t+0Az1aw7qd9na{%Qx zOu?*A$QK_)tztfQi)OGR8r4 zoOZ@ewKp{F3K%0GhjL0(F%Dxe*>EV6Pe(F^9A9N*iv4B0&+TkHw@Wm?FWS7VPxPBG(Tg%GAC$()r_u|V!Hu$ z>hVKt+Py<;sh$*Sq?+I;Gt!(HyVyEdIa9S%Gv$sRDmZar1=47T@P^jqq^LcW9J1gA zxC9Dq#g$~m*@(}Y7ILW|#j0dOBGCxJsIpYSRfRF;GD%< zZ_NoYn@ZAk{m+l(~{S+?Wk)$VjE}hIy5a30A?06PS8(! zVCWmNsWU#ljjj~~Q>EV!W0^USJnu!JcNaJ(2m(*mmpUF9TFfR-7d;&KcyRcL94DF+ z%$}8r@aOqJ%>2ioQucpwDqfnYDg$}>h{_9~UOxGMVa&C*KtcM{4jXqrmd=G~He;{) ze2$?hrt_+7O`PL8TtM(ROyWCAgDS64i$=7pf%k8PmG~1RkrFnJ=GXwphZpxVbH??# zS%~%CsN%_8a0{n(u#28FpQhg5XUL!U$qxr=l2^XwDALJ4!*ok3n18lvrm(+Y74dGbWc*Ru5Jd%KXWnG{XMYGBh}7 z%3*A`0ma`DDEyagKx;|OMncoAtTw7QU~fWky3@&HY7O5=A4R!%R2(lY&Dn0_hi&+? zPqn*ov9-Wsc`@c91GR*z?ZxPdDotn4$submD?5>@i8`7f_6sb2T`BeIc{`78>NLw@ zMjvThX+RfjzFy)Z$srt;zv^_IEaX0g#J~oly=(6OV+Z#zzDI zwTAUoU3g^U7~T^}<4~k{2MJiV<&3Ziqf?Zj$)L#(d(xvOtrkh%I&Ia~W=ar~5$$@H zh7~h!?yc)L!)Omvi=aXI3~zaX$4s@hs5Rd3+3T^wOLn(RCnL#>hm+7jAWgEyA&Ifl zMmro4&0LmV$4*;L3ODg}wnoPBp!7=t7-W{k#1!cWex-s?&saYB)njeEHV;Y0V_cmA zPEb5n^NqUxs@Kx(hEQ;La6Zp5OJNl) z!>G{&927*>;H2Z*E_aaU;sfN3vfXK@sELbQM!O&7lhg+dOSF?BrX1+V^Bt&+%U^2-r3C{jBYYBz;^J{S5!vDv~bBXWFHb;F1{OJPSG01fR1_o*MDdraS*QsmHjYlV0SBatDMIdL-mM63FF0?~p zWK4+93!y&v7#!!p8n&D}%GD|LOUg*}=v)ZcIO&92oC;6VOgLFkaxB%~dTw)-i1X$4 z0(d($tw*MP4)q`kzUa@}U?<`OVYq?^qx>kDn2U9oB#sf~diLwp>xsD4=1{A;{M2LB zUH`raP@$VUR|1%G5aRX!qs424iRwH08uAHmP$$X;F_q}@*OC0}U7-^f6HTMms>U@c zbd|~7B_YQ4R^1$dx}zGvJk1hfKzRNL3R;Q6k(4Y@ zVczp_CIGRfsC}^ym*9t#6e?mHg{N-wLHzK-*%XgULAh$qdf1>Q5;wZ}K7L&sIYATzweeG`_0VqKH>l}y9MwkALgjFLFFO7O1AH!d9O%N=7a9Rb` z!lejd8%7t0Qk<}vm6d+Vqxzebb833o0#r0jkS4Q|h03&WXobNYIv2BoR04P9x5W(f zK0@V@)ceX(e5EHOJ{RE`i;L0|uZ^r(;BY^f!jtx163oz!&vAjD6@9=|XJ<<=r3{&X zV)TQo^|ij`nD2^`$Z+Z*M>84jFfM{fc@7Chd)G$Zu8fYHRh4U`Fr;xtM;2&)_^M3O zPW~aAKzXO;jBwkgHffgKLH0Qb#~Vopu*~m=`>h!V#2gv+%UeZNd5qTlQJeB{1}6Qd zT_ChwWwbyJ4O-KQStyA`v^VJj6oT_i-q3pxVhn3*P>*)DdvTjwG5ASWFt>C$H+{OU z&pw>Zm^I6{H>2ir&csMG@ekYcPlxCfx(7^;va8|@Aj_7A0aMDJICT$#pDtm8n4*KhY=BX?9kx1GmwOK-Qy#SHF4sCvDVXAX zl$yVUBoZKuDy;i7Qxy%_IU516y6y{y9=htMc*ZWfU3G~?OmMtt;38tn$*Lxe_dQ^& z8u%Y($>=i>irj2tY2EoE#NCqFP;N>VmdLK5x z_{>N> zB|uqx_c|zJeAE$~$i&Tb*4YrK4YUQ9<$o&_>f%rrNpbWU*!U3YXV!U}&K^V`zUcL2!c7xv&e0C!6Wuy^hYLoM1DW6*5(z6j@sS+U137nphL$tWC z=vEdmMHN|CI_Lqyu-OY%%G=UR>atP5!=HFHL2(p(Ar6b`%hDGUpv3tSq8{BRa~?(n;gRDH<** zmO5*gt|eE+v#`snUeLA=W5Y1R{zfEmy9w7g**%$s(Uw$-TGD3QHHOF8KKT-st>QE0y*c0 z#eZ#nlPmba2dqufC*L?^+L}@fNVa3gyHv}%S*&m59yPR`j)gO|4?1pe^X48&Gm==6 z&MQ|4^R1m$ zvfqU|-mO|`^LXGv)}B=pi9GdnTfOuUUv=Xj9-`@F&?xAc8Q| z69h;v_gQ?3(U59#(Al#b2BEtH}72uC{eN$UAt&Mj!N|_RY%n<~&X@gB|?Q{)xl#ms%)K zIs{it;7(dcOSfogplK5mo=RSZ7N)2mk)N54V8EmZQAnKIlG;NSS6jNF0Fx*p2#|as0ePVrJ zA`?z9cYvA5#vwDBLE0fVcMJEgesTgG>x=96HAS%7uGDoH0_~Azw<9_H+c>A#`Pc&q_?d{@%nt3-*z>MQZ35Q`gO%vFeXzKo_|6JHokI6h$ZGf3SK z&N^K`_q`2upe zt-~gXm2X00J~;#1Vi@R&&Z1ZQ4pVgBg37-@n7FGL4f9fgrt(C0JHM^Inja#Hea8%h z+RsBexM=?3j2_QC4)_&>K~#gbJAcPT`y_PLKt9LS_4CsfW z0SD75abbQr@s{9Ua{8`nCB8It<0shNauaWKAy~9{Q%e315JWGpl_u{!rXc*!ae!nV zj7z1R1*B~zC$!j!#5w$D^rtIQQu#lT4_^ojCtLKaPppDgqo9X?z`#|K_x+$ri|k%A zoyI>xmr*zjscz`?;1zn((g-q!;aw+*N$KYuNHHlsZ4bq4lj;QI^*@kbpLN!6z(kdR zvzX;wBcu^c;h@J?iLN`jrOy7BaK(Qe>hljVEGw39vQ0slVqowoXG&2Buw4@{^BHZ; zy&vCBl154bHBHLnST6xOEmM|kHNrEmn_NxDE0_|jDiaVO!1*4<2miB@ew9kRBbImU zKySvJ2U2X-zmLgd26c+G;3ni|y8XQv0e%tCWMs{#Uu1b{YR6cA*r`m+KIG z-|ag_;XyV25tYurY!xPz70oOZ)Y(OHS%>X+rl7<+@GEB5c=g`Y>poaLr^=0KHkTcH z9t6`Y6(i^FWP{f@849RCdLP8FMf}!lD-tS2K1ne_lfAE8M$tD%1r6Ug zDr<2*L(I1y>JC!(`Ych%dK*E7v!&5K;o)-}PT6oxuG4=?=7WG`>e2zwq(5=^X(gGe z#L|-HpNS$;K|?|nHYnLdRXzGttSP1PYdJexa&uzAIhrzp_Re<-s^TM^DoKi_IL}uV z9;2L*wqC7|K$mb+&shF80QO=JGYa}@7opAb4|G=-dJMm2vSA5nZ&9|Mg!3 zdp>Vn0=pzZ)mn$k;WXFOUQEmz^+U~2(oAi#&U>u5+;i6NK?=9k;PW&e!=j_HYg2pv zTn*w=uw0=D`oY}^mvwmiB4ZQS+qI}0c}@6qecR8NG{mLDd&B~O4A*?QXehPk@#c~< z!iBG4q}pGj%CY2XV}u+&M1FF``zsfj#6?X|VpW!r_dEN<9+PBaQz9XfZbeHyO~` zu`m0{N+bc)duC~L&?rFJdi_i4DOdNE=G($eXYH@9u{!O9%wEEJ*yUKL|II(t=ju zs0i5CayfeAhADk7b8kvb4w$Yt4h0IdmE@E{fT^C_xN&EqH7ai}04TJ4Nh1h71m|!P z1{y9(G=jx(zKq=ZdwnZ)fYbBcvP~y1N4uDG$ySgiXlxV(@ zsmwW#y7xSYr{8IBPy(Y0e2-AIa2?UO&koNdE)b#Ha<9VjF~0@!^%r#=jOsUWZu$|Kuwej}X60P_81o0kI=3wJp@S zRq1aT5Q>RrU*=KIB6BJzU2d0U!qwv;L`0mcu=&+y?!*09~OvJlQm8nGn^)_9#;xpg`^Wu|VO z%865`p-sJvs8nJ;%rQ-)q^p&cU=B{e)p0FnQ1TDv^+8D69|Ltpw);#ZobC=bkyFj( z&(b6U&LPeZY{~9RiV9P(7ivg21$vxwE!2sTR=ERyM1WC7u{y2mJxw0q;kxLpq-IA> z1DCZ6o$Q>?=e^AK{6f_l@}~+P^rq1n>+meT6+31s;Y;K4O5ro_F$NC3D1Vpc5SN+S zHqqepBF5E65pN5260ep-*+4z%A2}mQ3b%Ltd>#cA)*n(8keHA{zwYe-%a5dE2Z)C- z5=ik?9-=u(rs`4W`%L|&q%ZA^d0#+ojmRF>d7pBbSanK`O`&rm;-|)J+6fyPi&B)Gcvk|;aUAH%y#TWfo}O^=Jyr{ zD3F@><|l73(|^2pBC#_vj@u5ayNwWTXL#bLQ(w!{g_5&q0q`Q5LunHL7?UXZiXsk< zdqkesTBX;E=D7t?_p?Gm_FjE>trZp+lLN%6*Hrbz*ym-Mob!#8IayPJ} z%)8)WCx%9I&VK*44So-gG1b!#k9xpJm?7>OomNo5B>29xhTV(VJTwanN9e_DD0JgF zZhzr9#V2Xkpb2^Luz4CG_(&38bQT^?f?oIg*I<`)vH&U!5>O8k68LyR zVtw>pywHct9UV6##M2Ca*coa5EsZ&|F=Zx6G3*X%%CxJ<VV82TIxXs@>yr$CBc6itcY*b ze%6MW9@9hXm=zOvz1D9v!IXDTi&cNp3xEuo{BX<>c+qoc11F#k;lb`y<);qe$AoG# zNv3jcZ3%6mvM%;0eg&@EzaUwM@|AavQVAKbRDH`o{SUV8YdAy-hQ!xNYRqmD5#g26 zXykC;$H48S31l=Gg&aAVs8z88_2@mb6++<|SJ+c2=zu1K6?4k_rK<3xb*`xIP%%~$ zsy5dm)1m${%e^{;Br40eX4nZP@95Os=HXv3Q}h#{-Xk zZ?C)tRPQUI`0={9`9zUyWjWAfd~Um|b@LlyD33D+j`k~HEHQQb_{OOxfFsIIKZXu} z12QR!MMle6$AV`0jO2C0UK0-h$Ru`;3K(BeO=(2nUm zQkPW|)U+~aI}j|EhCf&7v2WsdmCkoiBMN63Vs2KuH8$G!n!(EgmV-ClkyQDkyYUI; zPLL_ywv%colCE@ASZ6m>kH*b}9{y^CyJ5opt2hZlM$}-u)-vb-@~x)m%^O~jSl`A1 z2(EoIcZ5g_+*ph;=wYC=K{@p;+44XIs&&kypxx!%7)nGbJD8O_C&BrEmZ>od5KiDU-swSQBV4n!oNRbY>91c3o5WnSFWg)_L(R z)D#%%W>X`V4z0GnmH0P+JFgO>FTMI~OQmg4DI~ZL{m5o0N`em-LJN@SXxVC3Se6W7+ufr*VH(IHNU_~kc)gBKw!^^aCo#aCY(dl=Q5+a4}40yli$)p`_LpmvMl4Xv6 zKQ1H}EL2zeI%wzu$WJ3IAtCHq4Au3TH;F`Z;KG}=8L%fEBGlT30y6&_#Lz8^F1P1t z7Jncrtr?KzO(0u(4Y#dax2%k>YOrup`)P>85vhV$v<{whv5bRQGfU|xB#CpBCtg!O zwM$a^v?-1sr6A|tr!`|Jj-JXGMRiDDiT(LlrQp}2D*}uv6XgzP-%snvh_sWEK;|nn z_JzY#R*nHrb#jk)M3*>;X~j(QiTN-n_j*a}qczMD{y1x9G!k@G#E{!UKdK{=o5WXHN4DCR}>m0<{Do|>|vvnWhj)z)iHSrbR>hT(sCfM7c^VP zDiRVQaI)AOkY3Eik?2A=8`1viplBi8*ll7w75sAE@~dh%l?d#ksRtF$VleX2c@mq( z)An9@4u$nnxO9z>st)%jP2m|20jnTcw$m6QR`dYrx8MnlirFUeMOLt#=IbWVRdcNa zqlBaLmd7ragkL7%P0_r{XtLS`2?IwCnZ*F~yAW?ZkDVUQ&VM(DxP(8diaS6HR6)mraIP+Re~X{+S2r)AX*fY6lgcx3x#jNwR``}CT+Ix z45pO9;c^i9_pL8gNEQ5uZeZk+e$Up{alURlTnTjMq0Y?K&F&KvdxRP3Izhg~kfQn1 zpT((53Yr7w%2#>xq3>->bWV5F$w~(jp?kj9f`$AM43(;E9yaaZrliHO=<$uC#a#{> zJi&;n{%Cn4*E_vgcB6{25xox26qBy;nOQv*{>6?g2O@}_;UY^tn>>GD$|)p?PH&GsK{3vI5iI%`L~yI=xw7E#!ss;k z^gE(GaGPWe70F5eEiN!h3G@g*o?dFfbd8RLY@cWUZ*I4oa5G4pJQLOB(>40YJfnql z(&+rC_3K$pU#HoP1mY@W9^cHgd|r~qY3El z!PVE(i6j%OA&WCT?;4>#hTR?^pC5AAY!oZg7fyv&K|3qj;?C%@?!6^{+pY!jZHRJC zg*%C)(m%2rr&NL=IG$vFCQOBWF{&|hA8y30x;MJp)V}ySKg3DO;|_?k3%#H84dDqK zx$Ld3>xkY^R>LE_nHIV;=(yN+=E^~4cdPj5IE~$tqrAVq*x?sG7rr?q_#A0}iL|p#v~#?nQ1(}8PQ=v?OvwO=F7l)gB4Ea5c8E0Pyf za11*P*;3HbhebnU0GhE@3Ia$%*k>rzu(_f^<>7E!)CJbv17#wS6d_>k&5##Tfet)# z$l{tFHd2LNCBX! z&JDOIJ|}s5b3^Ugm?{M+SRr&YJ`?`K_t-4sQ7yMOg$XiH*r}&da+T3VG)_8Rh;zl_ zHH4=`@xXz>SnR7140BZ!xvO9Jic6u%ez&HE;0e28w_8+v_>XdZ^OjW940yQkjtuNK z1{^a$nXiMv8&zTZ%p;SWo7;2sZ)EnU$zTSt?No^#G{Bf~ipg5h{Z0D~Rd z1i^7iE2MM_2;z7DZ$m@NMhKEr?V(M?wB~QuYoh5)#*jJ_cB`Mmg1XJlhB$ck&$|Od z$rJ^G$({Swtf!_nVgyhw=h^ZR9t6mz?FKj?{74)w)7u-R(6)a_cH~r(`pM32ZB*B) z!3fV~0IbQgabzdQ56j9PG1KACCu~?YOQ9b$F1O=EF5@{)cIrvQVp$mp#nXCv2P`!0`f@YVWGW-~giMSG9B z`^e?h6hAgzMCtHGK@=ZMuiRhVX&&N_qbP~=U~|!tNlnj)g$MWnzN-ea&6l`Fom()R zi`P@zl_fAO&d?_!Oq+ZAYJitxiAEz4zN0`6F#3!8E{9|9y;2~jVX7NB+G|P!9%WW` z(J5m9u$dt>O|s==I{?AfQ0CdYZn&CsuU{0f`f5m)>Z-3Nn)t5|N5hOs;nVb{pC2XJ zCdjI>#!OKkw>l~QbU>o8=Yb!z7b2Q=Mtn62+4e5k9&MVq{t40iZSm7Un_#HQf^mxh&5b{LJb&vydK)54@uMBDWW7dO2 z%aKwc%1AFpG7Cm&{R#J7rC-A&Gr^mJgmHM<&Bb_0SB<&Hx6Po>B{T1%B`7WuGJg~o zKN5QG%FtO`1oyLaXoO@lvaDIM(2EwipCe%+=X4#?OV3wZn?JSnsY=mm~POevBaBjl&KbDjNxQ6(kRp_5%*DW2NtZY2O|CPeYBBa)|V zCH{Uv0b!2!5JhhuPO=l0vkS2s2UVLpeFPDBc9y%u7wVyi`1}y>Dw`j4uNz_F_C3()lMK5TW>>P%eH)#`o>z1HDs1)|G|~zoYf=(#!YoF zFf65lRAm-~aqv|l!!{GRygTdcu#qFx_oa=}sXsYhSo0<1<~?~WpYrOh%y|HHjo#ty z40X>)6=ik#u^~Z8sjOm0q^goUsxel8neVG`ZpYuzE0_lbbZE9)0%8Jtx_x@G<@2Pe z7xOqwPhj5MkmRjIaEZ2=Tz`gk6r{8;XV34ldsX1YHMLfbm;0v)5>eF1{}|Lw=L;P6 zjeqEc^tj;?Nht`W%sc=}Xrc0oLd;qzOf?!c%U3^o(nYSk-teVv-?FH-wP*|jf~~25 zI)gF6s@09GGrxf(%5+bauG}v0WyzUEI!Lb2ZbDkSE1mH!eIUB7g;B=Im*zZ=eJ%$; zOu`NolT~W9K0o`$0?iJ!U{3_DNU5ysn7x(S;C^y5&g0^+5Ywpw3`@n~;O1oS9Z(Ko zQqd840buIPdyz$O&g4()9v={bXHy5!bIBOY{Clx1d$e7{4K20$Z$=2`;wMrXf=h}q z@IdC>e|{Is1o57+V?KjFDVy%wqL9iht@w}EUb$=iMgxv~hOnA2vQP1IxZx0PGOFVzG2iTG}S z8>)819v|1#0C(z3^p6`R4(vrx6!gUrD2I(w1Aw3rXHp2q6MAq8_>i{S69$5f61{NcGcmkX-#jjlnwkw>K?l8gsx*-~++c@BUX)Wa-PV8l(M9nL zkUWtA9OsRra~{nSAW8A1#{HrGArR8NT;b+?ku3`=xRW6xs!YX(oF830*R-E5)48x> zBONpUeNYdgx{^wZ!gs{t_XKQnTQ%K+7wC?P~)PPa*T$O!5qMe3Std#XFX>+aRorO_!W?;kr zHzSktzhTy`(^!j;R-gjp+sswD!%08^ z_|(nOoILp>%#v1&{a4qWFTWGi-#Up;Tb-{}Y|%-73`N1|}Z>2@dGw?XZ z@U5~F-u}fI`MVH8wCOm-1KH5ExRs|SDj> zy`?g1%}0ox@A7p;{M_Xc%)v-&UezI!;@jo5EC86gG*(*K&^l*T#3O3?io#~p9Q1Tc z-)AO8n_cdj^IwNWgLEDgBeRC$%ACsX3ZKq1An(jh^0dR4q?vv>xOXS?rW6R~+EW$( zoHBD6He53A8jp{aD{eKHau|CCU_N)rI;jOdp)x6|k#<+}Ol$+JiMG0~VLCWQ&maOa z6q`$gi877=JQ$#hXk*5dKf&X3`%ZpqdG3IKW`7Qicr7uDiO<@@0YDDNTOiPV;BD&9 zCwwV&&1W{=DLTlahF@Pq{J}S1@?6xdIsdn6L9Z_HQdZePzAs6z%Us@lA^;6vVZPgPMo@Xay>)U3XVRF<=r=NG@Cl|z(96*z=#5PJtJx^`7r0^ z3}Et?iy^S8DjFJ`cn3W&Nv$*z1GS>P*z(l-_V{iLa+8(I%75OYvJrHo3uazJn}Dq) z-B1#OTd87OwpuS!0;-Q56z3r!8;+%llJuz8>Y=|0%MLN2?5^ZsWmc{D6RmlSzKY)u zgWImz%;Z5YS$A_lJ(*x`r;fk@q`z%pts7-l1N9l@Q<5RG?XNv$%Rnj<-ZGvLD)H0? zj@KlmR5wmG3MTr9ssA=UJMwYxlppb(oIZ7qt3}Ee(O*L)_pU6Li5o3UgQZau6g6DA z_&qr``&xt}+*ViVHZiqyn8}T|S3m0An2BGEQS8FUr|`moX~pmfa#omqWx0&BPi$n~ z%0tb1g;FZuXB&A_nHg!OU{;|=O@KobnRE>PKmuE@OvD3yVRTvcG?l(w?H<=N1IiLr z?q`Mx*U3o{|6=-9VxQ6c@!gGb@46AU21&|1-G&NIl7lIV<0JY^y;RMuhWyec&shia z%*E;+FS!MTjnxmcMcFgIh0JM5fI0q|i&KO0o0e~j!Cdy+(M5NwIHl7%3mjR-mX7KH z;l*M;ZZBWa#GyDwPp}52UDdp2Dg&;pTux`?))U}ilOrawO7B(!nVvP`G8piVt01>7yqNPQf+;I0qO9topd znK&7oumQ+^9N<*LXiXAyiM`rGilPomPq_U8HIr5x#m(vW780t!Cg zG1HU7n#WBCC|7ZZH_Z{8he7LyZ^_s<6%(l1#cJK*(lPSXSt?A*vh+c_vVSe8lMr+1 z3d*m9JUBT_zUOJjnXW>HD8e3c(7!$}MY2okLT{Ruk%l-^ojIWCsv^F{p`-{}c35H{ z{H8ByT~~e@Vw4WddNte9h8oL)lT zGwgBK0xO)E!6D=7&HT;zc-U0)>fI8a(8Htao$Ii?n0$ZHHX>Rjf50Ur%jMSh}$l62+=?PGCcPLWB7HycuvTz%=n` zpWHdy0EZ)sJSuVXZCffk*oBxa9kTj=A4GA9O5WO@7HT*D#5uSq--WlZI`!@NmnT&l zXf^EX9KKg9c#s3;YzV9TeH$@sQOQ#x(Mj@=X?LWYQos(G!sEoMPs#7=%P>o-a(TFV_gdU#Okl+VLFw=E@Gc>GR#xZJcsxVjb@Y{X z^r_aHp!72h#e9L`4UXbfK+4AfeTICKe+Do2i2$kKsRrTjg|riKDtw&A;{dSO9D-F` z3ESfx-&QS{$YsyxJ`AT-ymxhT2OV+}BtR}_N^bh2P?oqjgyPN0p$oN5+ZM1MVy5JE z2N)Nd2oktH+P(c@UD6DIjNVtb_AY>TNQa+$oPBd+rWWK|QmqL5NN(~GuGZlwl({Tm z{cShbBo0vQ$_3IE$HTJkX!Qvxz_Q~6-{~ui41iw-8k~IMQX$hFP0NKt=KgF_ zt+kKqW=n_RAqv&V_J!#(@4i<^u|z*fzmOnW2pi9i9lCB9)q8UWcW0Nc0CYp0+RZE| z^On*1?f+bTdV+pPRtjJsVy^;RAtRQGE+OQwCN@O}_<%Z6Q`Q@q0msfcw^iIqxOoHu z$1H7zmT~td>b?qf6c1LA6xyzX1^$|Yw5zojwdg2@X>@>bxd*qM((X@*RmsCpDpZqr@ zy}K_BEsCcVa6f=#u|BG(k!Xx?vmcn31T*i9AgOlxg7qqQo5~QCSKNpO?}T^`_OD4# zBM0K)>t)cDIgNn9DK}ZWbSoBpO#T@9MPIJVJ%y3a?`#7Z{e8Uv8_5=y*gQ1|v6dIX zLd<|yyuLg=U*is_Q>)_=H2kSIhmW&&(HiU=m_9c28Hrb!ZkK@br^^acW@hxoQ32`9 zv@SjQ6k3p@y{##Ur`D=>O7a%AA$-g(J3L)@ zi`BqqOZk?4N@_%7k8K<*By;PcsO?d1&zCx%7OvY?H5jumvgut(S*Pcp_pLdU26d4B z{-p$2H>#0o@RJ!FrXBl60?6g(T|fo}B|0StV#*4&i0QrGl9%%OBljm}Wk9xqlUFia zvG#}Tx~M3~JN(NwYrbN$yr~JM0w7@Gzoq!F!%FA;UF}i5AuG5H^GYRI>4fJ+Io>1z zBndL1n1Zm^l(QzRMQ(e{ew+{wxhmSX&c=RevDAAmL~)5_0;z7mjmTU~d-uEr{3g_# zv=lmfcKqUiKo1TB*cRm#K;e^LIF|`j#bKl1K}9jq|E}Md!mt?a9zh2idkvQsEa?A8 zPe8`i&tv+Js_fc4kslpXC~ED!aQBXBW7o?|OQ+MMQYE|7>A%fVDG@jCSadUav@sgV7;@5^ zd*#i511?}lcIK|>gia~K7-<3JLWrY_2launGK_hbJ~~{~_-WB?_WANYCV;0NGz>UI z5egHn7-XKvssZ52{v%XY_CA4sa>5|6!hLz7N5`^a-D<)FyH7UV1#)>AfbkQD0+{&I zq$Fj1k`6P#nAwRXSoSb zZt1bXwwiTE>9}Rr^in3kiehPg-`mKwn@MLAt=;l7`V$GStWyi4k)Z?L$+h66+*b#h z{l!#p1Q$t)AB?$QWV=+o9A$GygI;+ZO8x=J1wd}1rZc(XkGa3cDqV_VYo9n~N)oi* z-r=%n-;T9l+GarG4zy*X+!C$v&4k01*BFai06!ieU*7QIUtHMK}M z%0)>@?in-wStZR8v{KRaN0vadpy+u3m`0|1sY^*qLw2}wdOx{KI|@| zKTWQ$5bPHS1pOv;9Zo;+7Q*50!SLlk_Fj3@Sdk+LF?ZL&UP>(ODb&Yqw&yXe$u%zC zU=K+Fx4yEjO(>>s-FerPd~=N9hMTI3UFs-#OWQtJ7d<>Cy@MmHwpGe|`^*TTay)@q&oBYhm@IJs~Y{DD(&yAv84d=Bm^E8yF#Ri9rf&?ekcSQ#N3fpi0EaW)V66_f z8UDk6Eb}uoXiA)D5vA(N#93Emj{T@`5~gN!Z+`%n1Y5NNV~a`Orf`*0ZkR?45Dct- zrD9j@B!TTs-&=h<`95$cp`&T%xzH|Od$pis*);wxAz8MC|7q{Vqy`(K-Tn^p!IL^) zl5ihS&HE)LIq@?P8O029wT`O=@xt|@ zQeaNjA=_&7#K>JP{ITBRhje(AL5IgHjw760<04|CCG26(aqHv5xG4T4h1Dv?YSrLV z5|K5Cf7FQjOTLIoXDegY&gi%f+Rk(Y$c$oB>1k=PKT!muGv|{pqlBdX{6B1-X*TsE zqtRHI%s%h2WaDZJv94jLfOI@~@eAmMQ<9l7BS9C7*ZmcbdAOTN4x{u>uvadBK*)a5 z%WVs8V>X_?2g|qTONs=O*%yE}EwB^>6e#pe54F0PLdRt?k`*(@)H>SeHKR9^h0Dtl z7fC4NjEW(RU=-&4c0{S_K~s24`qObbWZ;z|A*6qPH~ZJ9u`(1t8 zR|%l6V2Gx(!6;1eEa-w1iE>@~6O3TbvEJmV?dZ9f(z=_(HvF_<+|n#G_=9ib6rgO47VI&d{HTVx|_vAW3mXySjl2&F?yg^OUv3! z0siQaqYB(#*^>eJg)yj8Imy<84dlayx9z&!+Vg(RYwtHPyHk|rG%IfYi`-&)ORpeV zU&q{Pv%f=X;45?X`t&;UfZ}rfdqqtVyzUgPv%&LR#tjbe9wahDoOtQ(qyv`=&DmeeU@U6hPL< zpAKf(;zfCz;U2@Ou`2(z)kVq4}il1P6H#rpvws7 zT%Zh6W1Ml1EuZ9-j9VBFC!V8HZGh~g)V2I=12~ee;Wf&$6nQ{GMjb!3Z8L!kRf>SA z@>l^yn`-w*J#|HkjMu>Oy9&avV%m@l@Ane?xyNxW4vuR^#(ZuVMNmb*YB6eCGf+c` z;O^v4MPw|5fVRGcGKGFI#Ev2_`?s9dTQi~-R80;UqK?_>$NF%~A;_+rcc=M+vL!RO zZ|2%h?t^zRlnT=43o~uF1$ru($T?FqQKvzTb9#X!h4Ah*uTZ<`jV)j~a;Q%1 zL=-ue?DjtfrD^cM{T(bVnI8p_q3 zn^cq5$G!^+0%+1;Xk>ZsTnmAAqWgN;Cr0u*AUt`snWOkQ7PaBdSC$B@NcoCOD4lJP z)I5CgB&F5d?a8HD715-H5s?0~C#Iw8`IO_{`>zkgV~c}P)eiZ($9*uMHu3DYP?1{J zx|vL8-?=_E2*sWi^H63V4+|*&B9d$la)-sSqS~Nu2?Vk9?5Z>+dfzX54^ifAP-jAd4*SP&Z|&^fWPNPOzCRg$Hgl)O8kB zefL8T5b)b}jDR0MlSYYVZ~Ov}$La>V(n`77$eHtf5JWSDNQc1>$BxW8|7=|%yM7ky z64d|-?s|DY9^f!_jRwKF1g)#Y_h`C8Hj>D1OdciYAD~~z6dj?h(?S8KNjRQT#J||% z92avZdwW7oEzL8j(KOnN`;vsER3z652rqHtQ@yUC|o z3OX1Ea5CMLafzJ0L1oZ@+Qu^z%PFb72b~`{N->Hn+aCbtBm|RVz+Ht&k0Z>tp^6X3 zy3vzv`*4$r{22?Goab2;?AD+f>e&4jt-V&h^ZMhTQfFVp-#lMY4Y5T8UAmhD_f|e7 zj*>m>LYu?rAX2U_B_>F$Fy~T!Py~p&x?9=QQlN42&KhpvV1=me;)lWfmJQgP^%?p? z9lsYoqRMesVomy5I)tJKT#fyexL*8yo329J_S0}+1xX^Yaj8~D5EeQSri(?r>MyAe zu^xFoU-Rp1VzZ0=ltlZZQR7*n&$u8m%U!dC=SLQp8Q;uo!I&f1k#;p)Q3&wHeMjVI z1xx7Y1O@wS-*vRpq#Y_1Gza*r+;@7|7_%UaNwV6>{GP2aw421Q&+~xY8hJPM=bK4u zRtDiE>hW7r2PP?znAyrz4#jyft-8@GLD{7PRqo)B?4c9)WkHi6xlEJ_BECok)WR9a zp|GSzmiY53t!~<--hde&<~pr{vCEBm!_JM7&V%oOd1DfQ@`16XSWu|ZAPZKLRw@l* z^DG=3+8m|9x>=TIWOHIIm`rn*Ds-O{{DVhbiI?=eeB)zi*~tR5x7S~*13$}wFD5Hw zZM9RM1tbG5S9EqhTGfNPiWGbSsqon`@Dcs#2b-=8wbgSBdXCLmeWff36h_BU_F9Z; z1D=jOy8!jwpALc{jxBZ1g_|+Cdm3%AY)@Q@e7uw{7pvq6US4V)>6x)k1#Yz47?C{w zi`atLss1W4`0(RV{t^BNIDgq^(Jo-TRM{Bb_n^`3Y0x}JbPfF&1}iy*%Eoez!`Ppa zvFGiH!gC`LLY8asUWN}?s4<|7N8NbrPZaXEjL|nqag!$-DX?q0XVb4{Up0Ji9KC7P z@C^y0JLY$5b)M*C)NAOGgNElQq+(l+AF8SJX(AG&0zZ@ckuMed+;45S6+vREIYU6% zek^(aB6616i3u)}wtIJ6{D!EtYOC137)=ubh_(DvR^#=%5Pn=~7u%j}B5<}SdrM+W zJV?t@1jhmD7B>=*9>q3enj;P+_`?*QMoLWdz$Bgcp2^NDjjc$H$a822RbagYYs_gH zlx;`84!owL)TEykBQ-&UPw&BF?HlU0Dw62z4lDyPF4RtLPIfYfrT_xE{TokLJ339$ ze4oA!?-zp^;5Ohj4OM>8r-CUxF5#&N?}O@cn8cxwS$?_k+4-NdHL2z!I>XC^WM#g< z-J2rBabD>pi``5A3MoT@ZrM#{fMh^P1;?{^JRNtCeQf)Q?pX73huzi$N1pzk-PdE~8#4^S#-8-hzrK(eRY_!hnGGddku>PJ$_|WS%4P-m2`u zS+Ga{Gj%|`HX4zcyo(Oy4GUpVvkki_lW~={v1Px1!HsxV!sGWS6hY`T`x)WWV4aj} zXQfDd!UEw(w+P4S2ZMl_x@%Ct zhcQ9}zJ=MoG|sO}$La-cu^Qje9%L7%bW;79H?N*A1aNiZ0e4=`fd@s_sh?$PXNfiX zs_3=3i^Z*g*o6?9$e{1DHjgPB;$*cy_&BToAk3+2Ls?6?wjDl_1yj5n4!6=CZjL5UIa2HjS=Z-_}+P&dcMCo^zMge zi*`OozQ;Z9T$IHXIFUB!RUzr%`Z=S`4V+XlXwojR8c=M7CBY~Nk?W|C2zuca^-QZ~ z;D_!x^;6$PmgNlg=Y>j%75vE-u1G|N**E)^i)fLB$M;VF0+mhfdu4!P9ofUH2FMBR zjq^GH4Q9|L&$G(3G3=JP=2b6X&R$YeS7)9_4v^RX@x{qy^fVFwzKN?31PC#P8Y6}9 zxEP59R-w`*p6{q~EqCUWScy;q^Jnr0QYsr_(&G;NiY@vT&30aNo>z)77++hb;nB+C zONQ{3RdF1hLF~?TTn(fWr?4xtzPB<;Hhb6cExw%q!jh8w02lNh~xTMt7&{(yAJ= zgt`nkP8k>*b<~B`6QCs*`^ROY5j>)MmkMWCrC9b+Gj-*dbnq$6yeOvd= zhH&Y~s7Ko#+J7i7NB0_nYJhfPap^*Xwuhbi>aJ?FgET{&M%W4F6{4=V%_7cAp1u4J zdLLe6v;$I_<|ZKdO_!g#!20UEb=_Yxbif2+pJ#Ku)MA3xSnwM-C`1$zW65-{12tDD zVA=ZqC_!mNBm}jqDE9JXL+}xe;SOIb3%$Q%M=^IrM3}S=ri`w^ApL64c{jv4cZN%h z&=)D=p(FHne@12>p%c9_>62puV7ef83g?}n=SH2|iv4OQAlF<9vnx~Z!Gh%(aNi7;cho<-@%T-IxD*3i= zW|ulsJEu)9+r$}yw_H|XG4QMW5WY@IWm9av)maK!6YpNOgG;uJ7bj>c64Cd9<0OI8 z&VX?(Cz~GL6GmJsnL}M8!@npkU)p}eE;7!r^{n5ZV#V#;U|o$%xJlTQnT-IX4RU(w zI#(g(?O(ugL<%WjNA!Yp9*ykxxr}WLlvXy9N^nphH?94;BCC&P81iFuOE?07dA2+h z1%a|hZY%wU#~}%U>cuu2TEoLrRH{2Hd+OL)=F+n_Ems{OOc?2xVrc3JXjzRR>Gm=YD||SZpNDZlruUa0EiWpbx-WC# zC=Hw5WG*3$@%g#Ch{1a1s^;Plj4CJI8VROBzxix@YVFQ5Qt7gYH&sDdeLk^Wore-( zAXU{k&aGecGjqtAZs9q}NQT;ZDr>}9S46(bF!q-!E zD5tfQ*MUt33Nd7R3%9(7M1)vKjfJ#%@|vXyQf&D3foyS#Xv*v=J?yNz@IN(dMwRxz zSd*c#itK{Ho#rM!+Yx6Y+P>V87?U3*sN~*Rs4OzaTz89j{P;I=IxCP&LyS$7epD@H)~E?9-|KIi-n#yh^)4)-65RIDY-#D=vvq4LVmDi{IB5~iMcQBiXP&swfWB~A5)JxGpQBE#l z;hGs|yxX{?m9EDW-?yxaQTJwbwtFZ-0;0G<97kSGbdkHGKE2z3|uP>VDga#b7_3@MYl*`&o z40(@AcL-R|YwM%_uMz)DsAK_n8h9_=ErtA0`Kp?TYWW5U$$V_Ok+)!EWRsah8*?Z& z75{u`K6?>+7HFdx3mR1Vi)ANoZ*+TN=FX(c-$(`^02qE*gfXN2kx314fE*?Lm7A|~ z;26l=uyM%F;ek#N$26JKPJL+ijZe=9Y!)_tnS=O`ul;y-VvU^JH-5D(o_BmGDPt)a$ z+3M*jJR@0L`HhzQb)v_5zC)VO`2G*Hlt`3;j2ooe#M-K@Pct>r^ ztIKv8m}zipJB|Ga5?+`*0lpYR7M<6Xxp9c~S0^Wr1>XXQRX-u@(YZn zCqEhBOI3gP^tu9mTAK!Pevj~(ZH6wXe;9LE4K=ka(Ny7%-!w9$)J=}qri3GunqkH; zNeZUpiG_CSX*JlYksjK;`r*| zb~wy%*_n9ev>}TDyYN#8y05HKNgrlv+kzk~#-Hv886e$ecKxYI@7DJrY%{&xG{{mp zS78O#>0&GZOw&3gX)HgY)$6|U;XSup0x0^Gc;s(Gc*6S=X|G@^=0ycO}-$ z&WPv`q`OI+^A$o>MM9*ulu^b?Mx4IBxu&K+uSxii%-_;ye=89|aZa1guN*bXZjS^q zoB(}F#6QT*lqehv(c2tH9$C>Nyi#;|>AUhl`CJMU>#OwG-lVZ;v4yw=lJYjZDj72@ zPvRhNbb~Jt@28(BQz)aA3F9A4^PwS6Xi^2@Gs(!w+aZ>2WeiI#ziD$iaS0=!`NVvr znMu1U!@vGj8E)~_#Ic$0HOQ45z%WhGZELJD^U>@^gxw-%0Nd>Tpx{RLbvO2A>vglx37H*Nf>MTc4JuPK zvVCk)T-uj$p{(Z_DKpJ=D=DSnN=XULOF*9cQe_M4BoJ${Y+NvfNR&ipJG!aHqctR2 zf)1Y4)W(zR8{|pHAzP+yGo*$5sOB)9_^j$)YJm4U!_RO-YZ~}o8r5elEwkEJ{(yY1pG>&NJ0cZECdfUSzwy-9&O0f5fKJ&x@6jrX*`3BmTfBkTaVSvg3Y zibR`#B_#9+Gh4X%mt7ulbf9NJ+PBRs^_mX450O15EX{V4Fcz!>6_4gcZzbiDur~7O z0$x+jyTiT02D?B{M8G%_8qeKOtx=^#TyD>QofgFT%6peJ(4u?8-{S^!8_@BMM+WjS zF?jwLQAs}la!zRV%?(9N^W@Q=3Utw#NPpW5> zD%j(P9>NkqQCw@*V@WSo-`Xwwr&DyUbPGH`Uz}mvHdtL@CQj@d+Cq zB3(2oa_2JgE&eE6u|CO+f^CME&T@}rR-fL*gqcP=TLnaa>Qu(@Y#P*4Co&#Nid;dE zTf8GPLt(3X{h85xmzcib=OMYaz>r-jiXfkx@zUKjE@@YTvv(pfY5vYDC;fW@M$arz zI94_WL+h2~9|5e2a+NoGQyl=9h>20L$O{{m2!zm|)I_NC6AeL;?0#?|U4<94F~f&Y z7FNY6cSo5~==n((c|iV+qdd_TEChxmgg7$Fc|D@M!^*JH&R}v7YDIXEqa>BXEgRgq z?mZfiWV2lhL)hXv?Z=D$%HoiWI#FgRDV-zZNN(@hHhg{k#1SYOEr4J0^JE_;#^n@N z0bIYaiM79F`)V9$wCe9U?ozvGLfGs4SYTQV7b38JAHIf)VA5Bm;V(XomXEGQ;l+Q+ zg{aT|@OuGnEJfH&q77YiiCjDS=ERCw)*)BDc87EVYzPk8(db+ow~qqS1+_?oc7DVB z({}_FNCx^mSGj~mBsJtv<#$Nj{Ze7&Ml0B z)8SG!4_E!Z6rcI8+BQgG72F)&tF8bz|8vg$0yngQT+A>i;lb9LgOUOVa$su8&j!l_uQ#{`9bZUsbVP@<1(v-=Y} z>JuS_^Y?PZgDsyjY2Rq~Hpi^8U=`6oHM@wCPo6t(QH~%w$n7?`)}Q_!~2{ETL+9qPR7sX0T+i;fNbf$uUV$cX=K9uY9c|OCsVh{$Ruf43>fbF5gxneMl zFK7T4i(1dEHqJN-m?`);`;E~%v_UXzxmByk@}|z3Iy(QF2F)*O;P0(%V7(8#&YW5k zk>ubtaeJ#!F(nqj4Y!|c8AxA4jy70mJ&Ji++qG(FcA&R!@Ru~r0njA+10F8Q$Pmgq3hV#<7@H;Y~N^wWytf;J*s?NclY7 zU{vw${D7jX80PrbD4!sn6;=-T?+pAhk{(RQLJmZ6zJQ1~y2W6O*KlwC@idirD`xRy zO$P%UFTUA-C`= zSY#@&u3MbO9LGh8+F)dzq-J;rwly5>W)8lO4xf3y087rti}?^KNl06Otd9#*GO|{ z!kr#o>#j6`C1_`2)Or29nUdm}83YNCN^6XtjvRhk2lm7#6HGr-eI;fR4?dVDabnkQ zN5D{wd9^$C^LF1)s+M-od-|oaDd+2GQ7Sp3;J11ZCTiW)t#K|Lx4V0y+rzhOZ7lei z%X25D;3I-J5^_dv8N5RFc^#i))L!x;;Y$5fGFKN?q1cDnQO*oGC`R4hBdc1dFuV}O zFhhX$DZ<#-nP+dbg}SM>t$A*w5}hm6x=`? z7=`gtEWG^&nQ~G*t0uoEM68EZ9H?RqbG>9<1#DHGK?mdoQRN`fjiDu=+Um%r23vR` zjOpv=7GpYihAb9>W&O3U9HEbNQkC0!c($8pniu~F{P{^GPe@-&7Yhv1qC&J0I2g2M zuuCDOB$hry^P(+dFw$dpq0xIwodCm67qdF0!(_5%KjoHS>ErqLYPA+k{{*bzsDMLx z>^UQJAq-x%gCAEuulUSq1G189uDPZq{P{v@umtTF9|8xNEZynw&AO(_Pk+3fROv zWWeGHJ`C_4o8)$U;tv|y>Br=o+#2#GFBqkKcU{AIV!*KH-(Bo;n#2s81u`m>O-g+u zt}0$=6@uGt=U$?ap}+lZF{gTxq4Ch3#G7sJ7@AIqoWX!H>`XtnwiiQj+VW-9A{t9K0s5W%f2GfyS4jQgQsU;c!2 zMTL)eCzPTmo1zIo0;jFX$|B>1HC+Dbb!6IHo>=9V z8u&bvSh48_*1CoqZz9ftHFei!gp+#ceO-T~2f;3EL-zsHz=E=5d}u5PsbpI(IZ=z`!E7v|~SMV8W^QRKcy$0<6Ggky>KQjE#aKg?zMC zv+b)x7M9ndaLEh70E{_OC@#!5ZF6rnCgL<Esu}~)j+S$)TDz^k13+D3J z$BaDvR#!#oCs@%#{OxpT2L?$@ahc)8`dmCk zjUYOZiBG+Zb>7-kWJ@YPJCvL@MDMdlhLRx3C8IS+0<>yY2^(y=~*o@1kTJrvonT9IE^vaHB7>mB?G|#P(j8X$1_iv*?FtC`Su{Sk1hJ=q* z8U{)|FpMc(m^Fscc-7Xq6MHJFUo{K|IB_z9v*c+tKNNgXvLHD z<1_bva;L?wYP?#X;9CQ**~-z94YLL0%6VJ0s8+^|Z6qwR6Fom3+hAHDyITdf_QLTvHbwt1|O$4f)Zx1 z0`@_~C}@ev2BE2-a#_+81+39-t+O1%32O>0-epn>s~@e(nfaRfK5JuFhRbLfko@|8 zg*dFS9assb4MqY9w-Fjl+<}uTV~3)%I}Iv+_EVXbN}_zJuO(e%_P7V;wUdUXPb#D*SYaffuLkXCo zmS;j#03|_3lb1WC0{zgOSx8j?GzlT8C;us3#FjRw5bdD@-tqTu!@bjC-;;btMzbgU z_x>Jh@t}p~7Q!Jc2tb0h9AP5Mky)Z*q~Iyt201)c5~HTcV(qYGLi@821`KA(%nI~8b(c_hF`F)L?aY)-7q2 zR@ThwSeK~e1gMilYy}%Ek1@_u`n?X+&JAeP+1fr25Kbm$u&>%lgPhmu=hRNI2*JZ>UgA}F6d(c-+?-LD zS8P`-iN5XCHAHOkn~aH91ORL@R>%TEmbmm!csqkjW#P=SyBxa;sq8dJ%ehXR0`iou zNI81wq1z$!5=^9w^mo0t6aCCu5Hk=X%~0^&Zl3^Ap(ko0vGST%2`V#W44Yf@M@u(X zQp)M9K!`T1m{Md$LUCS>c`yQcrXq8~)rS}95M+Rqu1Nx;DOv%=J?Dn*8)jj2w&ZyM zICwZqL?M#sWhD;qE>E!r2TJ`QK>!BC5lg{f>9Bkk`Z!wA*XM{-16#o%r^$J{LrPVw%-M?3ZuRTL>}cVrzX zSXP?0dEu%d1Xb1bj@RJ1+!qIw++Ppis!V!WV~>y~Ih`Y(-H@}uMQ{t7C>$hlfn@1# z!o)jHdEvFM$qSmvI@iVAQbxv?I4y^Gc6Mqe)@J=yg0cGI*u2Z4J1qkd+kwoJ)NCa? zteCM*XJTc%#ognu%coc7`7?9Xi1`%ONT-N(xfC=jyBLRz374i=a{&))@cMJ;+=RV; zY&5U$Ga{C#yL7ZoLIO_9GH%8o;6V=zl0@IP-Q0i@zvq9j{F=Hp zn6&}0i_D4?){8CM^wOb_hQguMJJ?L%zLaN%UHj*ms`|3#%g+?tHLfPE9enZ)>{O}j zo=jPuPZh#>SmWSM)-vZfb$fiWg~DN7{?`I;m?3SwxpNCkY0HGNWyX`Taz7SkhlhK zR(n%PRSkZm6#M*VRXt^=)V@@eWdP{{Q(wMQ&9W#|FlQQmk>5`B&u1g^!(`~#F0|7* zAsH-%w*{t+KVnP)!J5I77&)>3U{auhFuIo&;|qxeg%fZ^nqmohj)}fP_b4<`m?g|v z#HmJywhWL%_}%9y-foUZLRGS;e3G;kkEs@+EfC-kKgm;$%97!;zDjG~mo6Fd_r^Jdj^I_UPUWz?%<9fT&MkY+Ks=;W)KVD|L;0_myI9+_os z=V&Y0&(Hzskt|!@-QYw=D;UNiJdQB|0sh_tQq|FBW9gOGZCkt4?&{9(br?7>sMX5q zwy|cax=Qt)B@ff_1LsYxFEgXsBFA7M{)i;)u?+d#iz(A^}^`um|vgTPsd6vYqq@H#myI=)MHHJl%rm(x&e#~tt+8l`Ci zR0Afd+Nf*gC@79Ef4XMie9{7cFZzxRJTZc*=!&=$#l($w&)K*le`qqcNyteAL74ov ztjjyvjke)L21em=>c49QLJAUv`{g`_jPR^X+VFE4#&!Dha)K&0mZ%Q`KBTSmE^uTt z%XNEOz#21DhI!8U;@(3M+!6rU>N`f|j@^!M7cBv~Jj^ZRd-~?EZG*2!F0?Sk zjHq4r;4SOwIM^Ww8{8VSon=t#&$($&Wfj4b!CZy)HHvz(ODlH3By1&B7%#wv=ldVn zo8aZ{7X@a z*P7>7y>f`Sdjy$#HKc~+%OO?KI}AT=23bI(-T^Yj?WOi`^&K#p;1Yat`Ut^;0!fKW zLH`7P{etNQM}3Eg>hT}U8FhAsOd~<^b;6^-Lih)P0{{SqCi1j5$`Bnqpzku{IW$!^ zuvwnI;iu|b{n1T2cPybXjtyF3X_;Q60c_@>e zq$xl+uM~t=Dtkr)q0EIrM1F-|PS_X0zt}(q+*?XE`X>eGo^6p%BEGA5wqDQHV*T7D zIyeIIh@RK4sD2|b7oI!yqI%V!wawoO9h~w8XkQlZ@_@@beR;aTfhQ0Cp1*_>Lc%UF zhMG3toH7RIAfPo(+B^O~jTX8GT0R}7ov@~Y9ZsK^+P^&u6=QB3Jj^ajX+CyexlwO* zSU1FZ0lH#^>v1PZj13bL@TwFFWJCw@XJenM{eGF!ep2gpv}dGc(eHaMgc#q0q%D$J zh^5Rnd9iZU8+{ji#PD1F&oXA$AUmo&s>4CpWVo4^O(I-qt5D*Ynn)Y?`+3r{62giL zWJuF%FOHH87iYRx_eCB0chSj59Jouk9cB<)cCGrIQaVyRayw- z(Mp*W^a`ON$()vm0EbdD9f~}|N`-qPEk>*Bf$hJbaUHIFn}zQHGVQ7~CAvG*r4wx; zSs93;e<*96k~5SPz(pjD(_U=%zZ|Q|M`Ogotvp;F)?85YzD#SnW&y1r)$DiffPfLR zVsf6e39Z+DTan`UhQ~@QzpAWBB?jr#U95McXFSm>-bsWG-hqGq#0LU2nsOPU9w>AW zs$Y3I{>95ttQJBvV0+#&9^xa`#eapYQeO9BV0x;6EI{$ZT`+|M;2sRCTrdv2!)oZF zG=k|CnHN+>;`!ukDG`fvx>FAT8sjwL~N<1Y@-A|2@?~C^T~<Bz`hmGSxH9@3OUCBRuRTc$*0Lie}su6*-b@2CVG*>(_p;n1qFelqm<{NRZ8V_Rp zPm@!R|Msx2^r%-gSq~c&ey}65d&MoEFH6oC-CtwgMt=S&t+{F6oH%WSoNzSaw?rFM zH9CcJU$A>4FI{b9?@9s_cUFjv>X3NvU7XtO1yANMtl5Okde^W{&iUF14WcN|C^!7m ze6lgYL&0!)FgZ@BCZ#L&?>Sc|?cBTo|33i0Mk0-kOzm{Dk4-mIs4>Ia_kCVtlyE~h ztnc0q{cK0~*vfT2BL#o#VV+%DdQK4bP;KeQrgf#rYX~#GWxSqmX6VT5-32(N<+0gx z_~Zl`B#i7m`!d+>ZNzluBXuC&@=ID_7n$AxMgc9Ajr6}@JZ1;H4E<4bz(7@t&|9+* z^54r#x}+&fd-utEWdaW)k_X>JEm)r}{TKVvyBP<=XUU(EN6DZQIH!+Pt9UY!#5TOe zc0I~s7l*`cCH3mAKhfj!EsjK8{7iPjI+PS5r0F_W3qclSJ~KVhYrOmo9*+XI@9MZr zN4I6{cvID<>*;-v1%8>{=n)t>Mw_%2Sm7|z_iG8M-@Vw3(@j;5Ggu|{F1u7X;3g%n zu-xe=W@(Pw1fR9GE+*>3X_cfc0O&Sc^Y6 zXX?^#j<(^!e6pZGR2Q~sJ|?*&`V#eQaix<3lN6*2nX)#&+&QL;%JTbvHSx*F=@8}j zq4hK}Tc%$)(vZOs|#Db3KX~7 z_Lgh5^yUu$n}p|06n%#Y+lZdqmTPpC7w>C>%PG{6)swS$n9Ze*XNjw9{nP5Z z+<(>?22@OAN6K!dOkLO=oM=&1NnA*My`=luNUo5#B5bn|Jc*ihviqytv&4ZtlLU|& zO(!jJd}-fzrThB=nM?&5HzHb*ZsSM(5Xj2ZbrcL@G~{zd{;=ez zJF$>{92QQlUGJaWe5BRz5h3vzuD@~%{V(qJ9q!huw+V{Rw>^w$-S>8SZVW%!9{&x$ z;pKNCv{Y0J?qK(iAk_6#l_Ti3b<*<&#_R{c`O*C7qX*@lumUDpr1u+XlGW!*u98b4 z%Nb;FU&LXul54dwRi-!6ja$Wij7eJ_rktkg=Iv`r>4oBOwA*-RX-Q$*a>Jurs5;SD z(u^}tW~uDjN#$Wea{j*U#%hCmd&7=EGUwLKY4 zJ?yHrFQqQGujYIcBSgX>fF5h%$Ly~c znf8-$1R)lDpmey|^WGsx$j=C`uP&CiwSRsp0GQ%X6~q9@nAsVI@coD~XpkW1 zRDM_FD_n#P$#?e`?1?CHm~b4np)L6?uay|>d;rCJJeknv?s`tx*p?*Tls$hYpFi_E zEdqO+RKOXGGo!d#px+U7SX7HXM(G2*`wWHP7uz0NZntg=B(hWD5L}f#;Dv}6pDf(h zFei8x<54NnX`mOMpfqO73O%&K|C6SQ35gR$9aYi$rtpV?7uSm<+VIRyJNEP zWSY#TLmPwd%-{n;XF{++9SOPW%s6IT-A3or7vd^UHO!u41&95KKmlLPQ3*YU{`daf z7f<$i`D9=zHX;oc|5pXnu4jxo8IRO&va%=?iniOVZ>X+Sw}>52Or8Rk*$|0IP~m}_ zq@kSAZhn9!Um~cZ0GnxoKIkgj_`CmVkobtqvcXG+VbKGUcT!5TIuz1VA{4#E5h1|9 z`Hl72@ocXvX=Qk?73dblipfFF+(5uE7)Ml8Uxg38O-+|V?i2aJ=v%~^$w{5YfF@Mx z7=ZJ~qT=8CBvZ*d@trF$LKf97Of&*GPJyo^j4TAu)!8`?R=gtqHShk2@#{nsQ+)Fvz?2nm{{5uB^oxkbrk_x{{NJ$}V!)O;84$*Iox@vILP0 z65E+?Q&ZD03rCn9zj+QSh!@+pB<8{sewOS~_i#&f7{m@MBo%M#M^y|_wrES|0CP;_ zUUwGt6zQkk0c##UPXR+fUJPpd8CGBPs5D_d+Mc*utsU0|kwy%0Y3YjO zN;e@baqXpF+fW?lILE`D{&H_I{A3{p#%pE^iID$6Y*Jo4mXH+X036L+-&2UY%8{=a zC)Myxq6;qF+-4v`A-6|HNw@$yR5OLH*l2)V5&F|JvIw%a5X6ouFT%_P@4=Mn;y%vQ zZC#+#V!5@vVz}C;%kESY5gMdyy?4F2JIR+-4o{?f%q^w^|u-1 z=xx9sSLAyr!Z0Fu!`K%C`DRkiB@6_@+vT)r^ZVxz=tGiCW-4)1gy5D7X2cAeU0q`5 zMBwbUB&IUchRd+K&JV3N1W|E<^>Y|vjZ~*t1gBT*jP7TPM$7uG(|OWyIAaXpl&jc* zXX;^7*7?-ZGLfUv$VZ{2M~bag^ss8$Y(R_V{^f~-A1&$Um$IE#7_B8U`D=UO!06SC zlPA^Ib~M`Z%F7)emrW_0=hRIIcAAKWnGdvpl|C%+yA|ivnylNsE^F`z#K6(8s|7>e z?*e|JpW9%a^G^hL_}~DSOBA>wrW^%>faF<3cm8DfgP~5Tf%`+2@MxFC`_5oE^ zSodnSomv{$R?;|`oZT)1Yby=uw3Q>K1(8|}LrhYunX5&JTyoHiM_1OF9|$RDP+Xt9 zzJfTumTe+Vzz0(&GxX0ps%$h>DMJMBNhazSe5dP0L}tJHs_zb!WjS^QZc6cX1>RkR zpNy{FqT2Si#XOc9;q#^A-o>)^t2LHC69h+S$!MGFUB=WV8AQNFm!)~6#BnXIQ9_PK z^AxvUxY^TxUpeQA6wM$4z}e~qm@G8gyPQq|mwG5MT|#uC!|^YqL;rN_*&!&>Zay^S zI=U{2_lA&V>CiK%KaKzmYWa<=?pNyHtk0>yY>P!%o`n}e_P`RMBVrI-6TJ82%F3qX z4x5Qf7wTZSPY`D|`SxPFohQ-5da4AqxkAq?mj`#78G#hl(#@$dFIW4oc%?uQuXlriooB-_N zo+%7vR+THC(#>?oal&`?_7}KK9*`=bf6@6}MmjI>bNK=Pt@8L=4cppx( zLXM(?+T{?y`vRYW6v_;|%dpOxsU(lzPLJPNczktI`=JX{={~Z=!8<_Q^YcT{n8#rT zkw;WBWGb4wW|Y*u8->cbnP0#V_o7^R1xzqDMFdW7&a1&+;5?Vdivo+R=gyFyKL0;w zf>S{-+&f>l|I^6i$(K`&aB!-_H$Q+hdjCcPpnKu<9Jfdf150>jYHBl*oX>0Y@$)*U>Xf5fxSN|6Aw`a2OIn{_=dmYVza51`geho(2|iK;Xr zUA5I++!bfE-{0RPjEfq-&oVj>g`gk7JLy5_D0g{y;xsVsvQGS;^|seiGs=Txke!$0 z;3{v?)zuMGuKz*&^3AsXOrhat7%)8ja6^=bRXe5b#170=)EX#iX_pRekH!N3v;9z4 z$G+|nORG@{H`yj5IJkbS$bVwEgA**Xm6J~uKi#Z7v#tOVg5MwKCsZNAa-){|Yu80U{qBE}K!qYYy8tn&%eWUz-B_6_}d4YR#pV1jNj_5|$tW{i6ZP&01z_ zs5(3F_?J4cc#Oe{y}7!9jwJHa2*D4A&f&lrzsYtlDD`HdP32a_%bUYWwt)Z8)63Wg^1B;Bblzv+h02%$6)pmPH}R{58Vd155v;n1=;hut5JK{~OeQ?{CW zCnRtxEt5iR39tdq=Up_4u85-8xxD{gzWl*KO%j8QSkb04R~~t4Hha z$ayJ@kYgM_rkoqMKrFh}Xd!7J62}DAKrk#a@|vh3#1ft;Jgr;#*{WXbXM$4j>BLb% zo=TVM5Kiq`MILQ?kb;s(c_K;UU%jD`i-hQ9+xVrAvenzgB0qDXt8U-VZod^)sCL(Q8}PyE zS4T#&-~Fl>ydxwpMO~Uz_RTiEAk*>APH)ow09+qEq5uMr`ravET*wkH-!b+}FFE;t z-Fb_}BuJ6@!FszVl##1;+g>7NHHKAr^XYCTMX{i%2!2RzLvofx2U)xKja%Kff{v!7U1j6Q9S(s*Lku#V3A15#^;46%EVH<+K!b9)j6io;hW!BU ztLWs|gF+`DEl_sAh&11ZDBKvEjMGD%U-wy4dG(V*X+laI<698!f(h7UH?Y^@7`|PM zLbh)dRC8Lo4oWt6AEEc?)Y3&-#ZWJyxqRi@Y3B70_6qAdXCmqcIGMtWdRLJ@sd8k) znu?hA+|$3jfFM$0^~)SAGMM#4rzZ(c=6#hk{^|b;WwGsDOkS^rfmwFR3v3m_r2ZbI zQq!>Y3=*^|jeYS9ubCL=z2cHC-H#NWYSE3XO=rj2xI@i1ceKi`faWR*B{fhn%i5#E zX_CDk$HBZN%18T{D}W=!{QJKAMXCA+!W&sbcsF0%RjdryIw`~yurezWIs#Tg^{^CMKim8z(Q z*jAC2zF`G$poRw)7aTZya2zXSYHX&8#vICs%eW$p;5fSsd)s0*m+z|oakTj}l`*t| zO7<%D5fm3HHP-ItH&`?%$!w*oY}|TZ2jAVyrHO3Y@;eS;JdschREou4tg4Mpg9w3x zI{`yQl8w8#T?j=$=QpX6$Dv}u+u&K(I+>y>8a9MOn!AHP4K$yp2g3@CZR8&Lw{_Sb z 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

+Z1{b%m}TR2Y*X z7{+&|+F7?7x5}mE*A$@-{m&q^Fb4)g)yZx(?O64><`Mnf)(Nh_hw=ga1F83OB(!$2gDV?hKX89una4^>airL}N z>};|x^l?$qaj?d=3@S5v?zg5r$w!e~DrMFkw1FQZQD(&7d zxJWVR?&Z%} zYCcR`#Ihby*5?oB5Vdbocb~78m|_E1qq{Vr!CPi$TB8_e>E_B7T){=yxehul0MI#0 zg0m<8WXV(W#7M-Bv-CZIV!;VQ>>k7)m$2%mRL>D|s2>PA4hKdZT1XGi@FUmxTwMaY zz1S7VOG68;{}=;2rz~2}+rYOJL5`_P&8^>@HK~!9zkNjfBkm?NgI8HC<_8qWBv_{j zf6ig#lnhJFXH_Pb=4lokUKq|IAfDt|`qri<$z?4=3P*kG^ zXEi@KXy1gIE~4{y0TfxbR&0n0^&24acz4m&KT|6jH=Butwjp>yrFX_Oz)1d}4U2A? zgZ+a?=Ady$HKo)@Kxyt&U)`X_2v-b~3h#zR+LGVk`TxI|5{=9uR||_UHnk(TltEJ* z6V7Rg-m;d?&!5=g+1U&=_XQq=-Dw7VGTB-;*QaxXRK6lUtgZFH0JusFF3vR&&i;$r zXqrShR5Ybo&9>^GFp&z;bvizFsv>mFPaljb;i~;Ouo3!CIKjW$`=8Ze0d|P(;M8SSnoJ1CYi>Qfrv!})tMe*!^Hj*~ZvD4rV z*tBE8dY!}Yw8ThYPg!2`3F;}1ZZ;dQh7>JQ;F|$Xm6dNTR&Nv4Gnn1}3ndj8`s$;h zbw#x1^U4D(9S~gdV=0ujR){gfhY5amxcYaVXeSYUNphLtxxZt#|D!e8JT-Sz!;Up` z?ebK|^7Pqy2vnVJ)V>5{v-Y4(MO6CZbQ{>nQIHu%w|C?$(>KBopy9nJKZfZBSCD%n z;xAy`Aa7;->r-;St-Zwrs0%BJU#pY8$rRfIB?M&nmCcyq!Jo|m4s+wO>YOFpc08h6w_~u`hrSHDmAn6-zoY@p6TtdRRIJ=r zdc_=|j}qUJcBLi(Mojcw|7$nC0rw~FP%pSxTRZ=vdYTU&tWL4W0* z@TgR1UE6z9Y@;!1C$4ysKlvLew^-kghu&^DYk{V%J#`ZVh3G2T`4{HSl6fSx7h<

Q;T6M+omvf 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

mB7IMl8=N$V3id|9$*baIXMYN4OM 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ⅆY}+!qvN2VU+!=-k8&9g3#FBd4_QI5z!CtrgL)^&inj| zF_MnX+-9cEY*&_Q$LVV2xv*VNllhILyLo9E;;dd*e;>^)ZsSh0qF>7WkNUmGVF3$# z*Q#00A~EDOaFwIVz-e4b=0XpaJ`+*B6tPXbK<^6xA`GYhiXR(d64ebzIjyDHfGV6` zrQU7o6K!^r#>D9uFvUczCU;v1*7}p^rbm35_n9K^F{~2%iwNB-HG-$dE`rb+3&4G& z@Vcx*NXthE_Xusi;i$u z+<4mMsTPajLc6|Lk#|1l_2k+`{SSSVu)a9~sI-{PLWTi5l2I8!Va#@dj@6t0M|q} zrU>ZyG*u^65H6t!PA+`WMV9U}E0PO2G@^5?8IDTz{uwHmn2mNIi9&ZL2*~WHzihJ7 zUtflq({_@JQ&2xgU}Bt}ztkE|QgW{Cjxbn8BdZ%?8dO@$(&Ky{cu@`2^c3Q`O$@=V z&!geif%s3pozFH7>A)n8Xva81{L|SzCsrKu&CFM|@bf1_TlL{Lmgs4KIxDxh_0FN0 z#9QnGNv;A&8YZ%nM69Yw_%6;lR0v_!CMgF2SHHApj8Kqq{z=zMvp|-NDqt)Vdj~af+IqonpfA&Xy&&?0DFd~Gfv?$b>QJ^Ap=O!_F z>!3WO+6}+F1RH$+`gpLe%k@Y{M%CHr7Wo3!2H19gT6Pvqxdg8VKIPfwcBzL^&7*AB1_>DNU=GgJ&=0DH6e*{(d^WqG znx4INOgx-UKm+>~@Gu28_IA{+5b74RM0g1bhQpFypQ9k`ET2$s*3x+tI@JwGJ%v$< zSaA3h42>H8_EI?|GfAM3ITRo&&;t|LUDl;APwC=s>3_Pj(OVJIrRTO{s z3OBnh`t<~K3;LzP?AxidJI>_xX+N6vaq{W9r8VI8RbvQE#!?99rW5pQY8;)v$fby9 z*ZXBenoCSXe&f6G%P1fgAfu9NL7<2k4LzE(83xUXuy>GExGSLzpud5quJ?~1$LlY^ z$|GhD#iX^P>H5d5I1e;4`1D!Z=O*!7(N0YpgQe^L%bdxWilRkigA<`1so@ZnW})II zz`Gxp0ebp&4T$@VVZ!=48gW}hPx2}|_*F}X?x?MO6_S;O(vD-j;{FNj7vN_80Y%|J z13AjSjci;tU&Itb?;(bpWU{!_Iu4W1e-$h5Mq%&Fnu-!SVg7w9*Ad{jP zEa7_}JR3Drw_kpfZeFWZHCVvD+ju8q4*g4Q5uG5FL5?$bl7x;{+Z=VyDsHr%l#_rU z{336D{~@xbv5+)CXjfaVEU-iT5vs-+>RzpI9=^pD>5EvB^QK<`skp@KUkWWb2;5~p z=hF}tJU$8UTp0*iRl;dw2WYlqhiU151E|1!p8Czd%^awtCJ2*lCKDcgvvP-WmZVxM zQ=5As)Mg`bUd|HKzNh`)YldcyN{|dt$FXNNhDZ=Dr|@5*Tbs_k^{KMHzJjMv49ejc z%v?8phPCdyPFX|m<7!cdHBFiPU^Dq3$Q}4vznUt@26WC*aOp8r+R0BWY*oV*dQT z;Y?O3!H+Cn8f3(DUf-uck!3Z5dYWkV3v zr$W#oLxr!^Pat9ek;&{#8nU@ny-)hGesTS|xiPaal4Sy_y%|yzA<#E@3xCxpzLF{# zcB0HP>Q=X#xM0AylAlMOiKErh<%JT5b5~gf%Ra8Se8h^WK2JpMoxl+;^#s(DQN71g z?ZX2PkkO03W&tH$?;9HkEASG@Wdp~9BElf1OTjXtHY{*ZSH3a#-(Ok)guoMx%9)e` zFlqeOl&l!93SVd(rUxP1swclHEJ{Lzu0k;^6(Pu0^4tmedmzU@I_)(ZR@J!(Bi}_k znUgHS4@ii`^U{B8QXw~rZ*YZK2Z9<*oy-rr!sWf4ZGON2==Cmvm4u@>Bq7H~VWRHr z4!E@#t%oYtF#UYXL3eo8{DhbzPQvwU8+sgRgeuK|(D(;hs_L8F_~}!bpBYai8%~#X zKX9+-dIz@3Q%w!EopWZi!>&&er9{|@>c0!`j*gCEb=oml3wJHq+3iH{AHVO9`07kAWjMa(;}J z>i1~?p!eRR{tLT{KuTT_O44?4*4KZy61dpojP-Q-CtwN?wEDViyrUUHY&f(0O(nd!!M_C&y7Fq zQHN&ZzK_)ru*Xb&c?M>(FU_5g=5ETF39^EV;U^~c=)J>>D1#$dg2~09DV35?$dxD! z-K5e~f&Y%m5ngg6PG$&K3@LElyGzEa(Yu1)ZUNGan`%*Q8I}?2#?u)>BT5Lzfo-U_ z412L?sob2azcZ5I_123)jqwE)ft%u7XmD@5g&Q8#$lwUcZ@VCV^p)r5a-Yw_1~2FJ zOLXyRoiwJ1ZUY4dosIW=b1AifS`uGN40e2ET8vwmS%Bv1I7u8x3}LdOPszEMVL?;J zhs>riFtq?Fr_y`YKObjqQ8QLPVbL$opAr=i)P`z{NqXsSLsSDuyniF4HgsxYRf)~b zc-Z4!;VTnZueHLEnz*dZt-`#K8wp?txC#tY@F`QE46mG1@Tm&5r_Sv;k}7+LFM@_$ z+0i9c6Mtkf1IA7dwjvbO^!Sy=kxf>-lPyP@gvV%=pyM~0174p6#6YKK-=v7J__*qbV-OI?<<^CXKdD1#dUiTGOw_8Q0{ zTNS_P%`5ICt->?inYZ3SXm>2ftB-*tJw3{DkU)zxCY^~ihDp73Fu$ytLPi|VgL!Fw z@=xg2#yjK0<>38H>v@N>63RD7Rr>~-3KlPv8BECgtFEd;tQD1Fz3fM!qRu4!ZdXmC zuD=$m0D&|Jx)Mk>ILNBOJb;PcpSVG%PBSOC`)=Av~t~s@r5L6LktB13LvFe9SuW&g}9cGYj&aGWul6*@DibS8WGd^S0)zfE(+=|E*C6n z+-VXYn)ot|E5AOI!xoaR_xhqLd0&Pz=a?4msEQW)x3l;ZVSs`!i7d}|n41wJA+{cJ z{LY|u6*C}PPcCf39W{*YC)~34=O5UivSC>|2?x+)hi}xEp}AOz`!Vv8x{IDMgD;Js z1l^1i_!6KbH>8zcp3>yjm#OUlX+lM>(tgozbvqWmI*s!TZQ#nmGLlYKLs1+b3obSbvK|Y*F3W{S+n7{70*;I@B{C^LM zNwy8-n?J0-F$ml5LXNlWU=Hk^s^9QzE(f~ZBQlY=gQ3usjWbq?Tbleu${ejc`@Hgj@I4nTJOltHfixNujZf0a%Tb{yZ-W+H6N^$=!odOD6Alb z4r_s~mVN?-=qD5YVEFOV(MwE({VU-31CER1WRcxk*P`zn(LsUgtz+=%uxoL2eHj`l z_Xa5DH$jm(QdfCl{NO<@1Y-#e&r+F&neElCU1vEK2YG1Q^6r7pa|in zJ1F!PVHqZf7a}@IFvgHOdrZes(QVeLIHY^DQw_7dWW3A`N`7n1m&ojt=@GXSKwu%v=wQF zL3ImK>sbipk!kqdGy5=x`uVT^ekoub1JMu$12b&P~ z&j&X_NFyh!AEIrG?m~5)y>LHPbvJB)^aksR6w}1vtuVE z-*doJObS=@{b#NhTU4AB-7LGqfq|S{VuiWSBHq9R*xcff5cLGYyDJl5HdP`{rto6G z6AHS<7I-;!Y2XLYs8?bIJ`l0Ko`$f8&83rf4?g#Yy zh?B@nzbSpBrl}#KVymaGiZ1ryZKy%HILd?x z-(goF(Ai53)#IDFG#K>k=TL-hu+PbcosU!91L^n5AjVRL@ayMGv%vgH2Vy$9;KIf8x zV=hu<$_T;WB!iS~^AXpCr2HK!nA5j30Hrt@+*v1YqiKfF#Tqsb0s#L%0KogyAN^W$ z-BP``yK5nOM}!P^?DdSMnkXSuKmG4~)1o~Zda{xmMsGDP&tEQI@U11(ZvhGtaA)Cy zp51vKL|QSdh=~=vxR3h8>)L@Hcz78FJ_7|-C?6EnOkiZx7BMxC4D8!#_T}@2_-(X< z5GVe~Wgs_NsXfII(N*q=b$ppcS1)Erx_&(8zIx=wx${k{=KxyJQ$IG1DTB(OI9V@1 zj`M%`re5Nlp2RBi+9eS|y%d^+*N}yQ z;Xj*wmZ;k*$fuFC;*OjM=@yIui|1b2>#r(Sji682Tw)WsVP?RSEws4ww26%}4!Dwv zm8wv=cFudMu}nAObC!G?=!PT1wkq*qJEDtR2n~pGemq__bO+wDD7+niBYdZO+#<&Y zoBH|_)Us#bz{Occ$#jAssDlq?Z9rTq1gvB9?&dMnYVFA(NGIi!kgp418Va4)Q+@>S zeCXRmAld>oW($4Szn+_b-e#nO_MvW!KC}OQp3?RepHmt-%kc@x3HYEQm@)d_4tYu! zP3oUH7`_7ZbLRw>YMy4ut}O7HXxH%HR4h;ajKpnXL zN#!92w&Azc+UgUW-nl6%YuGFt`60cNlKc=9*t$0ZnhP%Jb2+IYD!eGV2A z{Z!^A@?Kg-;5dN8^OY2{>=@*bz|8FDcZ4CW-+q=LKuXErGraE~*TEJ zA)JI@Q&1`~THfc5GyOSxV-xrqV@Iz_YPY{MFk2n1Uzh508Tj%{e6D+xV~5 zFA8Prgh_F%GPYO)zH!r<^!}X}u=DphI@GFx`D)n*JDj=PW-%aBSy9g^i5Z+t7^)yr{{-z%gT0)R6 zp6z`DX_FM*;iF)Vt$Xz5EXir1 zfvM8YMgobI55Y-Y>qur?iyIjd6l2q~#o`3KO#^#lFG5|t?t;g>6J!JkG$8!9qjaP^ z?A)n99l*ZQNB6AN_xtNXqtL_@G}milR{Pyzh-;mn^-FG#$8I}Tsh-;YVa*xRZm0)* zNFhT^u#JazDI>xFLF{>@`9SILsYcUk{ofev(Vd6ubT#scLM|4z-u$ z_1CB1{r)PSYd<;@=wa;?T7;|oqc3x|);A^_eQ3--6Ye0u_T!U}=?MFxKs2_8up?ZX zJ?xhbO4&+{OE4;^=y(n;C^5}(dv=`)+U^S1wmxJUK{=N(Gqp#p0}tz?G$i5#LWPxk zVj6dz4qA4@xZ-D@l7#EO`|56#QwB*~0B5pGHgfZFcp9SPvJ#bgo z@Nyf6Xz%w1<`$tvkJ>{7tc?@;;}N8rsq!;x@{&{^Rtnr3A)|jx927RUgAtdVtPqTt zR@b^{kP4|^UWG{V3l%B);qT>7Fx3G^j~Svto|qWJVwY51<+lSaKrA>AO&!io`^kv+ z!fH5pnq)hf(AOKtwJar(KSqv#cF%%3%S8HRB8rbftS95AO4-YY9!j!_L zm}T0cC4t<7na*_;WuCApij)M6GXqRHb>HRdT2NJ9Zz2E10RJ5|KBMxI49)M7=4jZ< z7gbb4@hVksNt@0N^i0(r%(a`xnSycwRr{T{f1!J87|d)OY)dAv?mV;4{Et&=_RAD} zUTKHTB*Gz@YVI8|0rj+<8g&#>q>SxS)YM$<>#oc5i5i}#d&bDy_QL+zRvd5r;C_Wo z<=zNr-`tIP&au&tR8=Jw@eWk9h(NKKAWk(|ynw$xi_L;0{gsaX3!_qRyA%rBf>1b|Tn+T22-l^@`$%g@rnNjpw6$(&!&~PaLJ=SQqLU-Yh4qyE%pE%t z=Y_`!RHc=_9m&J|q^gTm4Q=92(ZOo%b!4eIH$USR4-*7^yfvsSejui3UMbTnn1Z-2 zJbWYJaBkKJaQxR{Ue*&}hZF4{C8vfrMZ z#3DA^zPsMZL{yJ&@s>j6e^hAZzQxcjbc7tQ zR+_uZkAscepE-#)9SU|;vzDcDxRt;V+y#E0goZy{4mFLx`|n+>$x@Sun2R#DEA}`L zT(ZVWua^eL^+b5GCVHUMNaJ#N^ZbQINtk*zjpAw38|h1?4)8uVZy zu?5lttA6cZ#iic&I|;e9vztAcuM<;z3f%P?!x%+wLYS2`>fi~bXMGK{O#OmUlGe&q zS1WWOi7~(w6wpIA1kg_9oAnb74i<&&9u)P@xzXVEa%sySM{%HLA|&0}cp@?I)TXgn zl-_ZJcKG+Ds$g~hf_Egk;qazblW2&UXZiHzbzKI2h%@FotT;_mEMkNOsBAWa9k?1l zCk-SLtl&mU&#%irEcNqWQ`6fT3eD|1VxQcbbp14esF!yY+I>61e^aK157vPMBK_>x z8EwlnZux(J<~CI=1?gIURL(IDF1ET@W&1a> zYlmX>y1y?dfSM*+7@Grg3c8~A=yNoW@zckalf?2w3*pZV*l1VsQYSgL+d0?r6UZOY z%^8@UH-E25LAC-C&hmlVWK%bCui8enA1G^BGeUe?V;^!APgf^k>`L+BT^h8j)h_22 z-EUS7EQkw^HkqC+Udv2x-ge$1?}@TxT*$&n0u<& zlT0K2(TEr%3N%MYavI-q8bn=N6pl4Pe#jT2mJCkvR{a^B9UpUmF*y&BUFYgd%#)Fm zxVOWcAJSh{#(QdGh#u*6sgm7y{59HB!sNV#FW;Pm3Fd4xFN_3hIV*=~=Q(_mPxOIi z002*xdJ(^@&MEdWm>7z3NVH)VWi7;JrNRi6M81*g7&AuUA8&zf&&uWAnhhIEwOndJ zOX;`M_6}$r+HkN5hC!beCU+^Qy2xP|3CZ}2Yr5Umc;CAU!<+JEZ>0E&;1)CTpebuO zy{+pR_Mr0!{4mG?HL^%gNPl=$ZZ>fO;+>^Z{D#9J_J1jhY>CXm&A841`U>)_@14j@QQ5PKcMlgKXoEoB&v}4FI}G(kuyw8BJNFhPGGwtj_gb>heiCbR1S? z{VdC8gjEI)e-0)LKJQT5)d_)?G^d(45@bI;224q2j<$~BE96rNJZ}ZgMat_>wcNMi zUAuhVHQkK7h5+81i4|}k!cBt3$dRf5R{9hZ<c57=X)o*#tg{e+`!qI$_F@IDX8dO+dfA7xj$~ zg+WX9nn5{;SX|b3CAh@LDjojBP)qk(+Ih3HIq6F^XMQXSLD=aVvrbvLz#0s^La8iebZNq4$eA{jU)bNpx&m_6)-I{NrHnA!?>Fsm}}p9ixbDG)J-PYl-EyGyJ9fNw11!Jcc1z zj$G=(M>UT~Y3K~@B~4}rSv(jr&chEl8wB0A}f^^rx2?6*m zaN2O#_1RVn#Joebuq&z7>V8Q5sBrJ)BO^aV-2(l>D{om&5~OQfoSss~lM?Wn?FhRy zpjjA`K@a6g3_DC<;vc5w6&++wuq{gTvUo!piF*FY<6XeE&NM$}%U1T}i~O52;rq!s zv7gX8=BO?vH^=r0e5sS{rv5O@ol^2_O+oUw{6jj$9Bfd(hcv~Mv~1DqJ$6Vb z3+~1;q+*jOrcW^WpF0pMk<7G^>rJZKr;Z0o2T5Y~r$YoJ;*4ndpU~d7L)q2_Uhpgk zMowBj;P=M08MC{qAw6M4==NItZSVfwZ%JMD?NDZeVkaSW(j3fN#0X4eVC0flEn`V9`nsxW+ii9X!;JXS`Fb>K%$k zKvyTX1~{D0a;!3k5h-f!*fGree&%~aL?Ek$EjF5jS?b2MuUc+SoLrlGGc*x@ zWm~b{?{XY)H)wF*Zs*0xfd>ng3#(Ji5g9nD^}9PB74qDMeYJUuw^DF;$I~XBB%gY@ zYND&D|F}>WL!);m|M+e_%yNL*BIJ{24X}%(Lnv$Ip8sSt-zRBcrCKaf)da1X0wqQ` zgc9BWEQEv?KTrqM8tU-(>36sNXsFz&Ym32|F3qQq#{{oKdhzs7UGA4QWDbb>!HbhH zMsvTtTbYG~VXf7x`^#XgL1%Dhs$)iR<-b`dxNhvhj#?|d9{<94NnxQJjOxAZiXY*o zDzZ?tkr7MJ!UF*JqSzM>Hwy_6Gq$RpVQdjOo@HCp3TfS!#<76ve%LOORXV z;0iNCeTuwfXLN?>mnoA~9;-d26$f`*khMfu$)DBqb?T6zmFiYo_Ie4Q zc`kB1SxQTlj#aiU8p$m}vKwSTq{A7JH04&fG_8wG`p3e}B1@8y_JJ#??Xx}Vtlcki zD+l=MNE3xa4B6plEIu^kt63)two>5&CSVo~O-Vy;##WExyz22q7FJW2Amf}vN8}?C zQ!#&P;oNP}zEj{1n8mA?OZY$n^j%^D-lg55-bNY_cb(=zT5!kLm#RN1;@%S%xhsH1 z!RH6dm)5;p+4E>Ai174{I&K7AkSV(x0^&{^G*#r;Abyj4*RDP_x(-TRSHT6 zdB}~sNUnCAOT;%{^~8K&g2$ZmSj-3Yq(FUGG=wakvN!sU;rRg5+V?j?SxctqnmG-q zP)0>Od5b+!HY-z&Z_LwknlPn~mP4BvR5JbVt+0WnoA&~E5o&+o{KFLJ9j_zo^6C(G zF6`nTO!~v8hGoeaHLg3?mcNl3v%m(9_OI2NRF|`~AW~z>uhJNoH{>iJz|dihg%zlf z5LVBuwdH71R2%g$W#=s?pN{|}=-z_90dDBFZj$@J^>n)T^5@fkf%Rp#!l-n>Alo!^ z=HEm`%)Mfmco1rsC4E?S44$T!Ho5(0BVi~Q={5~5MSKX39y(D_!!%qbsUzM!*W<}m^q~% zeq1|YG5%Ok9IN`JD4m8Qa|^ZdX{{^`L7}PsvvN~w1P6QznbuydJHr3Q3XMX^FmF>e z;H96 z*aP&gi_Pum&hw2xEh&0&z>r@?Lo42I0=MpZ1&^p~8HQJ$n@^bRT29EJ+_9j>xiGJ? zOU8veNjCgt@T7VJ{mjoQu*sIzW*KF~WR|z4@kSl3AeTDr@!L*i+R`D|2HmI}1WV2? z*oO{(5F(f)ZQ7d0uJtiY8X})~0P1y6^t=7SnWDLn;H0RMb_C}oMXTZl^4}CIr4wJq3P)^sGC}JT(UfC$(#fKOC4=leOpacEr3X|Ysom-Q**t_< z%>{2rFX=h}_;3?imzN4Jq&P1sv=KOs>QSBbFQ#C-ZdbhT&T&OfiX1cXcMRr31u;K% z3OVzPk_M75IvZEIBTDU`)pVuLzlo{_4gu{5P2a{Ae#7VDi;D2_ur|K%PFeEFSH!u)h3p_sKR1W1#}xOCCR81>XL{3yd1lf!39ZWbSeDY|DO68)QHwS;u~X{c z5(8msNCp__9I^bX3z*Nw)WZQJPG|rw*k6PINHkd=B!vts{vnYG{Pp~ZqiMAQ>)oSZ zYb=FkCV5+6V0;!K9n&e~)jP*Wjc0_J$!T=PiCqm-j|qn=5-2wJxkjk$O}PDlOZufn zvzawYh%U%b?5FwE>2V^T6F_=o@0t#gPp^9ODMk@cW#wHMYJD^ydaBry-OuJrOy~n3uQcIF* z{G4+&vfeW;wy5gao0y)t=A3W1*iWV#l`BeENcXeS_erN(63&8Ha#~;wPLIQAR4Bmq zr)7#6Cx!HCD~YDxAmxuGYV#LCN9m>*^r>zJA>uoxfoft#rcU1AD=n7jW~u)(cKQb7Ml~~GIIxELJFeylK%Cq>$!zAed20>mf;Jdjsc6KT2@|Q0;+}IPIw*r z8(_kiC&w-PE?%^L$FhVD8nVROL!Ac_A*o5uwVx{uGKnUVLeu}^6?P%QB${>=`%TDcwH8$$-h&aXgi@KfaQ>o!G2u*?znA;h{Vi&8Ru;A-Z%V3aN zM>m~8PUvqF!wFJNTQzLLwx;o=19j;mi2-KN{(f2hxitu(9mIo)A8}GWFGOsgv1G^) zJf_7B`cu8{6GvH`)gt3AHhFc98D6_BdA*aJ6n5^5UB_m^ z6JmFu19F$9rmO2NObH;bx>QI@O0GoavNSv^ToOQu5p{LI8B7#o9P|&>dbjPA&ES`c zJCl}2r>o;Jx+(4l&?YIPMyK$K1n_U+(_S&qoz(2e9qkFa1nyw~-Odv(;N$%00@L7- z;|;SJTd5 z1deKIwR8sTH~~!w^q6lST=Gwi0!7v>Q7Ut!jk9I63}UtPQ2r1f$>2p8g}s1nFV(=F zgKy8q_3lTQNm9kld5a32F|5tdY!dWpGyHU@K-h*Z^6j_jeayjlKx#P(C~J?xmI3iZ z1=MjHg7YQ$@jxIQN#73%h|T$!?G9Rrc)Bs=%(O<6f5a=6`T>=#sgU|O;X>NI&qrIa zby!_aqTsWl;`0juG%y6b`bZt&^8gMqc;+z!!p^G!-^hU1>{U*Hp8llf&fXieO#kwj ztV#?~_7NofMs;9wivsPxgtUNlewE^P*}ea}FAA|aE$a6<8iqNB@G$8kx5e}gP*V69 z^F2Ay|47d88uO?f3)M_W-5=Z>w5iI^R1r&$4%Z-NBP;ZS#J`tR(#T5_SLq^`H7d{( z{I7^aQbwX4xf|(hu&mhU@SrNmMaQsnd=TYo1ZMbCc5@(jV9PHcH;QkfS@6mKHOv=qFtK3bz#m{-z+LH>%VHj;m0rXBX&NF*RBQwxmMS*(`%=Mxu-Zg zaM>A*r;unWyL-a-m6TiL#zHJ{vVMNbFtdN#Ycj|=$jX*`p$KENGwuMdh@7#P?q=

U5%8#Ph(v1^IWU#4n`AI7$d*5xB9Q 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%0A}7OMr^YImiuAiGriCl3Lj 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 Js-OblueY4me{cW* literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512170002-Config.rsc b/MikroMaster/20260512/20260512170002-Config.rsc new file mode 100644 index 0000000..37d94e1 --- /dev/null +++ b/MikroMaster/20260512/20260512170002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 17:00:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512170002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512170002-Diff-Config.rsc new file mode 100644 index 0000000..810113a --- /dev/null +++ b/MikroMaster/history/20260512/20260512170002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0