From d3484c9dd10966fd8e72f17db434c77c35e6b38e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 21 May 2026 08:00:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 21 08:00:35. --- .../20260521/20260521080002-Binary.backup | Bin 0 -> 251978 bytes .../20260521/20260521080002-Config.rsc | 3445 +++++++++++++++++ .../20260521/20260521080002-Diff-Config.rsc | 6 + 3 files changed, 3451 insertions(+) create mode 100644 MikroMaster/20260521/20260521080002-Binary.backup create mode 100644 MikroMaster/20260521/20260521080002-Config.rsc create mode 100644 MikroMaster/history/20260521/20260521080002-Diff-Config.rsc diff --git a/MikroMaster/20260521/20260521080002-Binary.backup b/MikroMaster/20260521/20260521080002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..bc1ab00bdcec2153dcea3e8b3cb1492fb7bef4ca GIT binary patch literal 251978 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�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%0A2H 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

9lZ1dx zAV#1Oml#Iu!?hCB$SYhVC$79VZbXBR44!UZVD@DggSE!$;Vp0g1@!RfY2Ug3g1b;x zhl_&CYV`^w^vHE@^<3nDD8VI*9aIdcrgYa(PXO9-x-E$k#BNKt(zc00KkD)v zGTjrncJs@@*_}g)9cIKC&41j$V?W6YR;K?#-3`=duadh9UDkXOX6|QHC?VuN-eZ7v zYVqAfQcJ+lYX(#D=quO0MCmjkY3lI#B6p!)$c=+=zxb$xw-#DD9pNKJN_%OeBq977 zPvc?f;pp4lL`+J2;J^pQagrB{({I;qYaRs>w#Q<5K z1CVYQEJdL#!_}|Sx!^tlltV-}3_2#HVLxS^Z>Q88EuPW#3u<;Su1SWx0H>U2v~}Pi zKrPje6>GXDz>0wmLO}y3NNFkadwRE#EwhNh*=mos&%}1BOyGn&O24)56C!+#!T_aI z#SWUMSy6C<_qh0(Ob9f-=&8+{#wi=UHd20_qBNn8i2AEW03*bs)<2@lTofkMgd6x{ z20W9ERiz&xRJj9(0YaY)WJjg&pptuOEKSrFvN%kNIv-ZlNr-- zKnZ2`j9ve| zZ_%fx5VmpTJ98(vxC&^A0ojR$owf7`iFqWi-TSz#w3kgZ-__}^eN{qHM_dx{CzHs9 zPPUmGpmR-)y-W_u6AG=GC$qUnc}jyG&RN;P7lks^55K+C2gQGJ;&o>Ilt37EGk01F z5*ZZj-~9ht0acOk6X?>%CJOqy?#DToISEXc;=Dby;DcDOP6gEE|N6xWvWE6omh}7* z0zVfPu1=P05haXcw)&0P!Ewg!Wa1mT)KLWai%wNI{1t4WCCyr29$A~_0VF1hnK$%% zm^a_u&jfHiPm*hZ71iQHd%?KvP#N(W5sJFYV#d=$6k5$Z9<~sQn-7$_ZEa|4`}A?p zf7n!!JJ9+>x7g%LnFOGC$-Q!~GX~DC+t6GitN|xZNTOCIF8R$=6p502k#sqf+jno9 z&+@$T2fpr#-@pA%8hN}PxRM$)VofOZQ)Hp?u@W9aHTHQacRl}ZGl5DTNVEUA8K=7L z&u_l99x#H#ijjP)M8Tv4%Q7lSXtBl45rDK%R4TkL&GKYG;chQyA41;_v#|=#-UX&* zLN3&X#Df6LIT6w>niA{ksgFR??Rvdn=`UPuVpxq)huD-7>)& zox#BSkywuxGU(`X8Ma$%6~KD^c+^9f{at;;f;{0Sm~@XLKN?cjBR(&EBCDb zMx#M8QRR4H$En?U#*<$*Ce{ml(-PkU9)ZuGUVzzHpOk{b*Siqr`nFTfq~Lb~eF zC#`2cVg$5egna~~x2H4|w_}zOK<>1wb&FxbMebdMeWdMzQBu)nO|a4u@m^4c>bXqs zQp-Zzwt#vc0F~-a4ET~fsu#(AW`MYRA6AEqWk?gno_pU|Tg};UQnYQNibl(ja8$5s z4ZQEb&d8~{XPesAenhN<)wLQ4=rwE)027Jb^;~UJMN8EME*2n^m8DgOL z9BHNQbT33-aW?UzuWLsrS3yRa78lxVje-4c%HqXY%8_G_Zm`<5B~pX?v8EdMQGY}AhT)8>A1^UO znX|&|n1Q|{WsT8|tkL0Qj$+atDKQKu(FG#-J>thx7t7FY7! z7g#QUed9g492sJL>U78$s%JTFkI6C_2)!3BFapc@$9HO983-{N?%^lua{CDRkjl$? zzVs!MT+3cOmi1P>8g%5nq;xj+0J74%Lre(IaG#o(09$5?0VNc^!Z<0pFDBKPsU)-n z8u~jb0IlH}2Oin01qgU8*t-+>tzkN~N2M#_W|5=iHx9hEG}t;ADY1hEC}R*1URyJr zqGMrX+S32w#EX$3RX$$RPhy8XABWDYqMl|UC@)XBN7#s@6#s{+@_`xQ&AkRnDgSit z|InmxKieI4cQR7Y3~;od>LWr2S_s80vzV3Ol1R`2q$LrPyI4S?53YA( z3k+Kh+q4?ZBoZimfv0l)N|3sy=Ce6x-P;h-hcSmC7=hsVwiTqrkpf-6P7 zQPi$npbGKujVb$l2!ay7+m|%V79`zre*t1hlGFJ0Ob3ZoGlTuWf8!1qb^am`qH^!6 zyx8e}hMj%&#pXm!f4_Coe8Y;(@@+32ibNm8xgdVsShbo9vL@PLVgLu~EJ$Q)GV?{? z>(F1RfyCF35Ux$&5;)#ALk4B{>4W#-C+byt0s3WriKkMHt2t)cg#kD#_4IPYbQ;aL zr3IgT_QPOg-9iwlfeFRr9p-`ONP%u-gNTwlsy(Cu-F6Tu-t;oAnouO3#$(;Fm|V)v zZW%YYpOrEvHhVQ_TyPZJBek+RkBE4{H?bw(0VY}0;NzJPr-G!=X@ zcwvH5iD3dOsPo3oB5}Hw#+_?33v9PH=^AQ4Tx-KPUByufzXDs)tl1g2?bo`vhU0a< zt(I%!o&yN>EbaON?oK4G7pHBO>(6mQMS6WCL&EIXcHf-By>fJ>qVR{pR?(GZ*ofF9 z>-N7unUXU!iK1Fr(`)^?BfRi?x=x?Hz5s_tt0K+d0=ya*>FnOb+RY^43j%$&K!KFe z(+ygD-LfJB zO&Fr6ui9u+(2(*T2;w+i(fA<71AxIUZI;U=v?Cq?9R5QI+yg()yGs-!h}KwO?`&HQ zDfT3|E8khKFNp2+@H;0AzkW(vr=ak^%Mj5FVHaXtAQksO#5jx0dznTuy_atB{k#T? zW5=ErDfH_d;gqAxtn`_E`F?wX-iUe2&U#B)CFo+qmfJw$AS2YE=YHWLyMf)9`5_1R z0y>rbhj=D*0+XdvPf~BOCN?{f+V@>$nuPt?1<)vF>8~fei?O!#-@wp$K8EjN0ynVU3>&uYnB=6Qr#DtdDQx7_3KP8UaB~`V0ADOuIgQ&6ar1OG7DSb_yQ!pM(`yqXX@OV+9JX`jtg*NXnT=0;lq1q#CU-#6z3opo zp*kIAn1EapfBUh;CJO zBDG*WLHCE0C0PQO2Pg;TGIT3+={SLdI#~Ap42%G&zw=x)=FA`!CIg3O!H}=<L=g9T}yR z_xExK3GJZwcC9qO0L8KiUlo;Q>d>}ohHRqmNW{|L0X|FDnb#qs74Jd7CAN@>G@-6G zMGOuWA%){ky!S~Poz0~nvpf)EoA7gM1P<~N%a|>wW%C@`l@V7kpNQvSwMQK5u`1fd zgqnnj`+kN@A&wf4nJF@bayJ>@to z&L3Y(Vx?Je44?ooFl?IgPfOaG$eV+DLc-H5{?UpRJkP4Y=_mSwkd!TZAH*4(8YDI8 zbhBPd^SK=6OE;#KA^vI``(I10zqM$0A(vSWF+2zYj{5E<`Z=LA(0Jl-y^41u>{(8JQbLLL$P++ck0WoP<6~D&0m$%{&}p+==z3OY_xZf9XTWw9Wuj5*4MQ$~ z{Yd91MBXXmm+bjspGK}l-(ODAmq?ms7)kqN>Yu4>1-kF|aC5o?6;~$p_B2(v^6l>d z$-6T{MT3w7byAe-X>HFn7I1C%80R*NCEpyh{>4Jfypa7x2$XQBLm6qB{0uN9gfQ^T zX*OKu0RGBLw8_vY^Oy(^z|0=oCavs*vLUcGRAVq}XO;>KG87GJDus4o-yJ_RWuztI zn5g77OezoR<(0Pe$s|r|3{H|l*4t`AN!zt3E6q8 z9`cTQ&wtRyU!m(-d?|iYPcdUcxv7RvAEEP83g}n1aJ{%1usna!xFpa zQh7Pb9biwBD@&XPnfp;-&iwkZEc7YQBPdHrj!LJtLGY+_5KeFRpD^q4XWy9V1`t?P z4&QR$bH%wec-vP??m_)r=!}~%sGhSxEk1%vE4D6b>k(~D+kVTROE>z8sfIV4Kv-q| zJ#mrb^EK*NkhU2;(sMmV3p!ZYf}54RnGM!k?fk=*CHScp`;FvUJV(J}(Sgx1iO1;~ zLpuVN;ZDIFvI#h2&7n|#mubVH$XuNVs4jr|oi|5tc8b3RM)Na~RQzkJF@{kfm#YL8 z4Z}*u&TjN~c7&Sw1+HgveCC6U41$@<88W6Hn*?msnGY&rA?lq;DplCzI}ulpP8{Ry z5HjlGL9BAX;&cXr%JAoU-n{h5k=tCaaS4M;>bmxW{I!qK1>FsUGZAnkvGE+H{N6Ra zkBMtb((;U_Sm`Q331ymu6t9h^19V!^Wl{|)%IlAIJME$?r}%V~iK!;HP~LnEL6)xI zt3>zY$m}FuRXbq%d}Q4@S=xTz(IBi`C=^ysQ78js3Ll;aPw7>2X$etH6w}xeIx`{c zJxHgDS9D0k!8(dOOw;Huw*!>{i?A)JlSM>xDb&qhByeHonYKCvM-9jD-h5lgrdbk3 z>&-*R`kw41o{~)n0in*pktSBZ`?ET^hJT__zp4?N()8V2L*cvH7$h=I8`Zygb!XNM zMkOZybivJU`;DBoCJ3Zy)$Afr5R0dTti}533O?=nzsWA1#t<`+MIL*-889QC)ukW0 zu@?T?05~s5*k$XEvE93eHeM+Yeugn1iop5J@U4S-0+{r=WA$0^41>85_Aka;7E)SK zv*3oHl@|{r3N>Pl%%ka&HEmu`;oIQ_53FvCLw`@d@{jxgWvLJ#$j`m@nV+6!9i6H% z^DdXcX|qfE4V4J{REiqnJ18gAXC7XoM%2qRf10*=Jo8$uS5H{hw{A?a-u z_UOe_+0hf-Zn7W*t*8JOAHUKvWx+;in zUzw|pw)nLLl#!7XSO7*KTOu#hzB-#UXHzUdlU!^Q^+O#*ehF>%BR6B#Fl-5Iyo?V& zCmWd!Vm3@rl1`?b%a5v3PM^#p+pR0{Xy76wR3W2w2Qd81%9Jht_ShIc#7M(=nR$o4 zX)HiAn*t}KmuROWtTMQ=bey~G@xkus^^aPlK6rjL-o>h$dXALjWVkvb!~as`^4ino zdmuxaR++BQkdAi(I-uHza2bT_n)&ZysY0$vOT$<>qn+Qun&yg#l97N=NCP(Z&L8CpKXO4dV%vnb6Qy`4QkZ&T)#`r|P!o=u|x)a&pa=>homUFPw2&4*+=8jjR_; zFU`e;Z}3feQ==kCn%|ezo6*s2ZSU!-A|t(?~P!5f(S@5kRTB5vI&`4@ZNl& zV`4_zY(cd0{`4^!RPJFsFgm>QA%JG!AX6$vGJR-csC{p8L3F)YiF-c&3^jq?C|V8c zOD;K87?}8pH*o`#l1xBB13S%7Tl2iXthvjxwRXd)WmIYkdqm~T8)q%3C#(%9W^tQQ zz+QGCeHPWn7Yai1lv8N!_hs7yqrqAJ;MRgczhqmJowAM73bP|MxZ=AhDaJnM+SRK( z%>TnAvSEZoVEAO}S^NkQf)@V!QO3vU{z&QTn$&z|_Rkd267R#KhVok(a;0n~Lu!Id zY%R1Sm&ITFF+GEHzYU+if=dt>lS=i?mbXo2z2@qfLIv1W6ERENCmcW%IQt;gAOvuBf!g@!ZvQ|GoT~WXTuQlpGmn zYi14N@$FYt52IT%n%3nApD0SzAsA8B^d4N%x79K`h_CdvAx`7BkVq0ohusrnMS^H8 zb?*n7(&x;!;$gy{c@j30V&;-fSObXZ@VDjSuRg#jCO%L z>gf|~4A^9f<=d265Mubwr+25U_j;5K7iwx~s`Bm)9+pdxlo@iqAkM_S%Wmr1s2w$!OeXFv zpQE4`qdT4ardR;@R6)z$B!vj{1b?CLLY0fWkm~Is)}H;X7H!0M?Y~tAZ2FN7`o*&C zZ`g!PQu}G69#uc^Ste9^2PnoDJ3zyHtet^KH!n2Bhg-$~)Lmba_c+$Yva%bNQM&Nr zG4FW+`f7e5wfdU~&_>~EcFsAyW-n78lv|!dO0f!S4o*W%Xonb$zu>fnM*lu3Z|$+JtbLT{X7HyMa0Oh?AeuUDk3RMl zv>jS5hGFr|Gop1L9fi}#?4$P3p1dSjx>->JI;nQy$Euj8%OzWa7PW0UC`6EL(Vr8; z%J|?=FSC8bo0@a&P3_UqkWHE~^nkfblQ0;=&Ydgs$eYtOwCB z7SW&#F!`_6KQtge#3@7CFAGOLPMLc~Qu3=0)UE~)98PxDgi1d~W>48+Z7@pnG(Vv$ zp)6*dUxYXZix928^%Ay%Y2lMkM}2{^H3#q^g+s9KOtS9*!)4!W$G~*R^NZPlcy7_Y zHD>c%O;{ntD_L;&^f%W{;ye*>ZA$i@2q00dRn}t(sfvga0K5YRv7?RSbq87ar3`R| z;K~GN+&q`EzGC{pdWAlf%*cTQp`{G%Df~@d$QyHM>c)Ecqf5tc3ZiiH>vIgxR(fOO z)h+K%xh{el=9wq$#YUEhBU(W34?7mxFVvBiXEUB$7`5t)q6y{4GB@()^xT-=q*NX& zj%=1pH6O;CCubuV%hxZbH5&Ek9=02)i0QwEpsi~)LAqcJa1H z;^3zs0RocA?Gcf957S!X&3jITRqM0_{f)rC(;US^jpu`9poTJx(gwf6BA9InE%9#5 zY+lQ&B&_Djrt)1B5zR#%6igaZEfgzKj-pRibkZck^sajO1LW!OLd1^zc_>qM+cKRX z#TDlVW}BrQ84*n#eJ~`QDO^pH)1N}T;#aX}J#@C{L);*?>Z!Yt0==Z>U+F_P|3v#x z(ODINY^%eutcuQ(5eFP>jc);xkLajsgNI=7!p?HT?^r=L^(QnzkCm|UyN~gjGgwn5 zCWzEzxP|{RocZl_`Idu;|MBl2|AlqagXzmyEdF@t74@QRYOWySYe5smTDDKB_33o> zGciCd8l^dA1`?XM={hfr-^%MGPV0TxO&F!w-z`?iQa=^XCoMA?sWS~T(&&!|S$2bu zc9GAjT~8Y`c=vYy;_qnZ{ey6D*tY@$Gin$^G`_#&l6cXr*rYzh-sf|DjS$OyDs1=! ztlrRmE@*3A=*~}e;@#He;?V_svhho9i4;hq+vc?pY+nfmpGm67`@;oQDz@_1B2wou z5iEuc%XrT8FNSKzT)N7)F>0aEm2|wk)t67u7w0SnhkrGTr0|`zHET?VhKj)U|K_Rb zskc>fE;9tGqdU*Wu;m)(7jlxq;5B;k&dvtA=(i2@vE*v8Huwy6z4bQ)$ajah!Zf%e zAO39jP0PBR(qXpx5VCrN3B*X*(1Q{^%58XOS~}N0B)4h3;%S4{%Uk68iw(VNjTD}} z+WTuPPV%*Ti6!9fB!(`1{+ZGA6r)1yf$_bW;Ssp3M<3he$TV;a+hZwY8&VVrsH830 zQ6wM5haAR!nT#0cmMnc4KSm?UKwvU=m=Fr4SO&vJ7@@1b1M?<)-)riHJ$^!=FTk}DF!!XX{XNqCv5pfu9wic z3f!r1k*DOF`!BEmotK9mU`j{MfFD&kWXtep=zwqns+1e<>;`~``!J}!b3vwHCWj75 z4>%#De=yp&rV9mDo`(7H97;s}<XdltoDJbXdQ zOrS$EhaFRXIgF@*MiD4`c;0Fq3Y`2u)(xegx0WE!%S0fta$r-t&k7i>4ZmB(KgV@7 zq6IESafh)cA_Za04^OY9X7jzLVmLSx4Z>`qbhpnesPnQ(gQt-u55`I(YW?J5 zB?g#jSRS3u#9je@N)Y3&K*N{aZDxVDs2cPTSTs$n=%^=9ar?AJ$KvrV7{9p+-76Ji07ufmkZo!Ub`Aj!H`2P1f*L9U-2kQ$M5p9#AFBqyM^v1+h^#Yg6V`#&M)-{Jnt|)1tA0HfsJ-J?G}MKrsuL;sF4$Ieanvu33Zo^a zBW)wx^Z#-KhsIwi)zh)bu=)MJi8zRqK$@-^_vXkM6GyEZIqnpanHs*>SOz3g9#7tG zl6uHirTlQaC$VvkGmB)kHhN_4SucPskE(3(8ez0{Rx#>bzp4=Wi33A~`hkOt?EVwN zrQU9&hEmxRl<|{~rV5#GNjY}TAh_W%Iad!d7dPR9sKBAv<|xRLxbxIcdPD3gKAx#@ zaZF!pytkiXiQ{k}BdnZ%jyJaVER71|BIE=s8|4q6~sV-Xi_lv|OymAs^DvPM+^O0*{$pKcCAQ1~RGcp{t0kaUb^Lg}nzyB*` zgtO<280rV!D3YzLp2Fmb!Dtd`y&MQz&YA2KYYkhuH?Kd+x&ZAF9iQ$095R9Yn*!MX z6Z-COTiLdp9qoINj)sv_P1m^}E?>BZvV8A8>pV#ZPxZcYjw)096DG71CmVK8R*SKq zQoy3N+b}92#2{r5LM{6116RrDF+4_FcdfYFGv;fYS|9f&b=?nJ34X{>mj7`j? zNH{iOpJl`yyJk#Xcoh9lxUHb#UTo#&UD#mKroBeX4>VWK)-tiQhx=01E)&TQHB!>T z2H6xfKLB;IS9hQJr>ivignw;I2F&EygqJwFzn`5iqa}O zHZNh+AL=9O1TOnFz5GWxb{p|NygZ5yq{#ql6MpJ}!n24@zP!o8jj(tx2^`>L;nfeb zEk|?gwmD;~Yy{YiW9<&~ioV6$Oj+(l(eJ9PZPX_mQ->gUD8pj&5SiO~$pe$0?h)aE1p?GVwR z&F?T|WJWy1)$+zpvzhla!;HGz%A7<*?6GwCjZMJB*|6eXm?f&=Tlv^+`-_f!6FwTC z)MzdWxQnH}wQl0?GbMwP`;H7qK`C|L(m;DRRn61L{0rj5j+=B10=VHM3<>;R6~8U0 z?B4tPT=YcSh;pkb!t~7JghF8Bko;a^f0w76U;zU--r5g_(6RuUE$ursqaSHu8UIXq zGtN44&h~~qVpn#)(74ZU6%8SPv~y~K1d2D_j+EX;Io|De8&xfM#^gdybx)EL-HYrq zZvuRfZ{3Eu@M}vA3LWB%zepyFjJB8wW3r}UsF}Q3Z6hCUG&O6=yrqV=)=uk*LhRui z*9ObH@!Miqa4b0^)k)~s>o8{wSp8X~N~^;DFoz&`lVD?*~@DFh#3|zA8|?|E6)cF(4Bl+%7x)UB|rNQsey8jg37y(!1i^{O|aD z{A1H7?3S94}WNgmzxJ-KwFP)TUz0#iO(;riCW`dbajIxY(>WY2`JOb2)8G;%bKULkLUdJkzm zG&<7lm3^rLM@*Xw!W73fN)XBrGRp16;Fkg@$e=L1}*BdI0DuVgpAL!yQ^cS+k zR$X1g!facn#BfK8);7yTgI0+(Ps+Q$OZ)MI z0FoCP&+!HJzLp0SiqqOMOkEvsmII?z+!MygyImuzJYv?l^tAXDnUMSSHGJi= zL`*GBbdF4)(uLyxKD?}EqlnJn9gZpC^DSiHH42N=3unu6JpT7UB9bLnD8KQ~@KgDQ zHQ(v)k5q(K>xUO)wm3Vg{o<=HJcu931Bv!L{y(i%j zxXyHnL1;xdwyEM=cT1n~KE1*T{p4jhDebT5G&OWWgQ#gk{6`I&HbU)f`{@pzG`fdF9C8fD(1TFabE3(HZ zEJF_HwF~9nd7)LNI~K}YHoQN2a9$#L)u7Fjp>sW=L#OJyT>}r$JaOsf4w*Z zK#t1)Nn6Dk@z`9y>D<8`*mFguTxEP|Pr{fjEe{ID;5jdV!BT%`#CMNiOo5GWx{xUJ zs|@ECmHGS9w)ZikF!sS09&i9CTs9h?aSsGNX67$!st1ek%=V!J{&QZmy`c}-_{x@= zpOrEHD+cbx-0NQTf}sy(GF*h9%M^s(`=PKuUoLv_38AZM#X8B}H-43KtVBqanRn9cRk(Y?+cz6vaa- zAax6T;tvVpv%iH5rn9}S_6b%m0~0UVWuFMdKu*QYx%)$$f@+} zA!^QP#E(IJo61_DZfg&Y*xG>M5kLyRzH^jW{wC4%^`35E7dR|uhHVZ}1-bkGvRVq9 zdc3m2^uCsW^ZXVbq~)4q$?1v7SydOvqW|T`=0>VCux-Df#%Wba4G6*YrwSios7Mp- zZH)dX=n|bT_HLQ4G{kH{L*ffT3-`zkq-_(h^u`myjyTi@P1Trfdiz0;x#O3CJ*6sZ zPSfUnO;aB7BN@HJ=FEQE-A$hSb$=^i6~-)>*|l-$wy{DC|NAHT!Ej7MYjiQlh=9`F zt{psEr^N2Fh}UNo4@EYBp%V6QQ83zUsjko7Q0;c-)U+zC^5EA@ZVUZ6Cd72M4+$levp<==5e)Rvif2y}0$D-GBG0e(Oie!ko1sv^4cj1lwNaylwe%a9 zmSS@=%w3@dnD;-CDIRGD(l=d$llzhAf=eWIYYdpN^zmq0SJLl}R}^wX_}3l!DT*m2 z)ZzySZ1M0bwFT>ZJuRs%Qrf~xzDwk<$c5!RDQM?k$xZgKA6n*#5*9;qWW$_XEH zJfaIITry=G#noj{cs9q+W5TPE=rqO;K0>}<+3!;}bm-K2VSo(HLpQr_)aLi>Q^c~- z+|c*BBXc$3=bH8=R5Z=&%raUkA5W^pe9ef{iI9DI_P!Y#*&!;$g2__{Sirs{xW@5U zMkv;9%fLFr47CXYJvqy#7^PcJrSJnvs$S;8$8LzE?G;Rd7 z4FEC5|E^1i{CF7~)&+Q&diXc01DHC_cS_idY1+0+1o?A##LN6BtBdT+!ErqyTUZ%O zhWOwJDwNh?E;?OWGGXA2)_w(tYt)g^SossYgNw1HetE@JX9GjJ0d4L9?EH^MqwS4+ z)9btytXF$uZy*1xu@#!VX|b=U*wP{6 z^Hzq|0*xAv4{Yv0FzWs9+)``;n1_f0Yh>wM*S8MT6O}PK(Yt_XF&-T0{gD*^iQVd2 zlqU6AE!yANiLSqiZ}!-sb;9C@Vc+-`77BhUi_Y}g9>dfq~Db47l> zI~dODv}|68M6MIZeafzz?4fjH&t0Erj6eNbhoP^Pq&ML5Tk^JZ_UR{RsmlkV%FB-r zCCUc8Vdfwk09riXu|ytaO?5NJMl3I3s=Y04#{&h6MvKAWWqHe&P*+ErSgtT^c3r$# zEp5HC@}K+%KG{FUGOKlUt4z@-avMd5)kR%U^u0cOlI4At9Y}8CxgX|u=VH}etT@h3 zjgcuoE0`jUz(Nldg3XhHV+wA5K%8!-yP@QJ#w2ckfw@rI5{)0KXHr*;9G`+%I1RpAD@8JQDD3=z7ssbYVf>prfG6O58_hneR*Tpa zdZi`Yr+tGI5}HeYAf8(TKf~8gwV`NZ8Px4u^liYPuVn_2;%W$fy6Aq3B=>OqEoom^ zKDf_+QoXkM?aB>QRqXiQhqatNL7vZGUfU@q78l|ZZc*E$hVXEMAr^HbGQbT~DiI&5 z1sWoe``Q4J5bZQ9G)|dpM@3k(ub<0;9}m0@z*#S0Ph3ZFl?*DC3DocuT<&D zKpHFZ0C#))>KO^W_%IAThNS|u_LNSZX;AS^wYEF+f=r44a$4*AQMxoWcd*#3{#cpPiELRZ6wA3sWGd8)+F!LxYA7%+>Tci{8r(4Luc)dnx zm$RHaxB?TK6R0Fb5yF03WJYO0GnG?%P|6ZRX=cXDB%oJGXjil`{~8 zFpDh;mwM8RQv+k02Ib${y=Y1Ibp1GhtRRf%1DesK=1Q5N)h=>>ON)zNYtC>T3f}U5 zFU7{-wL0_t!jd6tMy4!f|+;*vDzw_~Hl2)yHpCAyoSKCUqME;FN;xB8&=!Gn?-IXr5aKu7166I| zU`0=T3OM*&dE!6MxM0w|MveM)lcz7vX~lOb5cQgvG{peLpJJ~u!IpGDOf3BUed5JE z{K^~V4TW47qV`K&64YFD=#Ha$q--;@kM%fGyp@Ro`z8yy3~Qu}+Kd-Bb!1aUANO)F zY&9PVy&P3ma0~qZwv9}Tw=cBmxw7>V-L)Fz*ubPY`in`kS3EMaGcZIVtsdJM%~o+1 zC@ZgNQis3Fk(z|N6yq-~iIT9qt=D6d(0t8U*Db65&yPR#V1T)c85JycSL_nKDOA`9 zqN|=MVLe5gpYuF?Cz0?+&IkF%>PyKNbFZ<6j;Jx{c`EL(sRr4`1)(C3;psh0mOw7$ zRH|x|AQq#awq~1e`ez`IY&5J?lAjB^tM>%r)=`+kuW{@GDpC1cx$lT@rxI*VbU4zY zeYX7joZbqZGxgZa+zj{xj>AxlGXk`~_?ZCX#H~CX0|Y-WAS_5y%(Wh9XGzSqW@h(* zIH899%$p>ZL+dXTFn@vn0gemG`Q#x9bP{y&`74=S-hJaoW%k0AY1S2fdcs}#-sbJ_ z!dF2^&5+g%V-WKWO)xgNgyM+66HSZ00yzPwLs)RV1ZYE+Q28pqAG+sMU}?Jn^!%OK1>SvZp)$ zoD0;JtOOOeV>4waAQ__l=>I^h^ZHa9k+v`b^%CfdwOjk$3$alZC;9)SJaJf-CZ=?= z0BWM1F*m$l|U-pE8dknpEeEh;DM{;+_K?-EwPlfK6nx$IHlijg0u{@+*to<#@(Mjy6?&B?4sAT zwOE#(=g%%uF6so7vm{G*FMi&S;t`5s1pfSqh7md7#Bj?}vV1=g(91YHP)2dAi;BQU zTKt`<`_BgeK}G#VkXc-Qi=*2pXqIQb&Wv%PG4x=Tj;ZVw@eWa3wC%M3kqOJwaBH5X zS1mqbTu4BEkEB7EU)M>%kfv7PB6DCxAfSE5l*a5 z@SEl7oE#D(!nrT7)XrQ&lVcF;f(T}5Y#sFs1Sf$B$LrcH=y`z~GuOFw783G!L*7^H z@`VQVMF}ne3xFR|a|QYK&-p{`=?01f6l|%|R-9a#Fxy92n(eg8S)*s?1Dusi4hYLg zS9B0|J=(8_OQoFjV#rqT0~v$^LTG7tl2e9mQC@KE%#$94OjRgnDEgJT6p^GQbwuKg z0jIspmspr1dAgRT)oL@3Dk_~RAdS_~k#3d@R35+P4wplVq9xA5lgMh^Gy_wUa2D z4wQ*bhG^DpR$B&2&o5uFW!k5v)G~B+r@jKv0RKM#z=6DDe4x0|KCT8OA!UAJK&nIC zpFzf(G6}orAqCwnWAWkkkc~Nt{W*#vg8d>~EaJU;+o_ZlsyZ^D?#GUJFBp1lpuVVqiC>&46Xr@#c(5j?2(H zLARyp0-kkVBShQN3o?*QJ&{pst(FVH!C6asg0ptUpy311Wm(E;VK=vmnoGC^K90X8 z&2AcV2x|h7WTZg7h5INQ^fZDbOuga=?WWi`D%fYRttW_q)6OV+f)zWmmTs^_=bTi( zjYwZXWxOQ{`{r=?E~SN5)Ehzsg#&I7z@CdPSVivr=$ulOBOQ6RUs!|vmHy5`#s;!&Dbek&f{U92p9}wR~6b3U#TY5wcTTEuS;i99M*~T5WiZ6Dh329MXamw|vzQT(b=?O;5Kl}~KJ7!>z zwGQ*J*Udj9wS%(dKH|G>LH9fMU=(R_HYR2;Al-y6zT&f3OXUjIyfeiUD% zovFLlJB)#pu3aJJrnaF=8E?s5BdSy&T4wz-XW1xh6u2v$MB?F@agCsAhXoSRtsG;7 z5wrfYie+M~%>VRt)8hbw^1V3J1wo)4aQksty^nCb;voP zmC?b~j-YVm@_0uJ<<#kg()i|(zD!sKRjr>aB1d{{D|xuL<44r{9Gt;c5oDg-m;h(! zRlb9UpK2Sr6i+RK61Qjte}7~&=_qhd4vgi-HLe6VNz7-THZ{xeEYOa)+s2IUaFAc- zz_Atwe-bXOXzgN8<8#kl!oh?JzM8mk=$ZKPTJus2-8-lc)pE2_odfxY$Uvwoh-XT& ze>)wLdHi2r>H;<0<0YN?NFbHeo|YgcTY_fmD@xX9Hy>z?9m~6n>BN4d*6zw)D_boA zem+>Vv>=CHG+~P$Rj^K(bfdUp8NVrsF`8pzX=NL*4{mP1>cC{Ha*1&rK}*`0wR`x? z0c;FBc-_d$wbHR2sLF_^3I-#!&z#SSMU=jSr|_t&S7DH_6Lgasop5Qy{bmViFsHmo z2DkNgr+GWASsqk<4o8;t1>lNN!(*ltqlI~Gm-C&vSl-KFVAJ|nt7xMPj@PMex9FqkwTi!TyC)p2)fwaw zwGJMT0Mukyo-c7_seO)NW8_H}xN}J_i6bYwoQzHlhqDNHs+f#Rr50k>%zVZOD+xZ= z(wW89MYuG0!oVEK6-q*7fCIhKDJlZP3fD$3Z!2yReVz2uUUVaHT7_cNVzX{aF_NEW zBd&ut%5<2Z9X}=}_EN(N?$9Bi#iWa5aODGE_0+i6$SRZZ<-#%=N6a=g2|A z5&+caDx`JaxX$+PEyg!PSs~vsZf+T^L*-BPjAa}TyQ2lG>?l4-T|<}$9M$i_p#Uy9 zmZ@Whskog~gqs)sH8eq4Y?vq(IdZ_mqSxHpAei)1;@T!uj&u)+Qf!e2n!&v_S7JXj zWQvAY1ZoPef^mr~^&5mJ$u{)X<2abzN9I|*?1rK_*PYlB8wtg&2`fi{qM@9y^tun zb5;^hrq_^;xi<+?2i|cW?3cFSl8vPHrgM0T(q1NH7lJf#)!uwc^&}$dl@ zG;GU++X4*gxUY8wgLfCBGiGQgJ>Esadb^`S&p*NZsUE3Om64nnKf-{6rPhKzms_HT zqrbIq|MmoVU_$#wwBA8Ro7B&*8o&@fNVop^;rG1z(}5<=ebjrI-T0e_iG$RCzBB)_8HPQXB14Eu^?q7W-_W`6P%q zJTc^c+aS9%+1+W;%c3Ph5PPNnkfDHzhg}pLrz>q7dcUWQ4-L25NNO8?Dg$GKgWon4 zuHbji2bks&Wk+S+L-&WtoazI6PhH|{hPyX0c~1E~Ld0@Y+;zed?fbyQvYK)MkF9(& zPW^5t=6K+D4sJm_q+>_&8x8?rU}b65Ier4uX}@-xz`Q)z311r5S|b}ewK97&HQ%Rs z=E`iY3B@FUm_Hg%@)yY8_7le88v8@eLk3h~>lW(M%G!fwchG#m1KN`U?Y_bJwOlH| z*(zyUvL-L2x2n|0+m7BxTeCcU|4~7JYmA0PYk-Wjcy|zgJ~Ked9=uT$R{)!Qf$Ibr~u5} zjp5(caCO^7{)81SEIVCF>Xa}w!rNM6$T7eGVpW5De-sG?ZK;2xY$p2kv=@|6J0eiQ zzD+mPMY@RkDYbpXuFezP@XU5PkrqGQPyW~G*T~1F?827h*s#oFd|=x!(18x%7UY51 z=TV-t4EheO3LGd8ST}$@ zCgbyFDF1BsMfix2e>T~w{eZx(^T#f}e&q<|INyHS5^4nA6OF4Gv}Z}U;V7)tDVJSr zLPvm>Uims86jCt<8ua}tXS=)7x`J2;IeFdEn54O9(Xh&^2ZVcW^y3ytVLdfULz#RvYxwC8Qgj) ztcdc%n4cV>S<<4BxWFU!$B~wuV1Rc0K>0Z#(LHZBae_P`2ka?j+G1(3wk1b&0x-BV z=aSgdZl%T&^=o7(hBh)iYaMC6i^acemPdY6m6zZ(rJo1)c=x{c+1iJ(z@4wKF$$l?#ns2P4iX)Bva zr#(=8V0#Ir$%T*PU~=?;#bTaw_gI`80$@84|Es3(`HZD--ngx^U?17FN;;R^8zJYQ zbeAOg9hql6ykhKl{OqV0`zTtr>M?7!$rIDENa`6UdL-wGMaJnDvyQzgVl5GMFB@SD9phRkqRtfD#m z$sR971+c34M!Q_nCtmy{Vzrj`(9O8*abTL|Ond(c(`_-*-eI znn{(7J}&~sMUO3G{>g^RsUoZ!1UVtfL=TD`usB_Al6S;Q!8edGoI#u|6{N6%#Yo0u zaa(-8tWDyZ${TM?Ws3Vez?o&l6lb0yIf}On`2Y-UXHzrGs4X|Swnx29w}YuSyvW?? z4j^V+^97POf0QfE2%Rc_^S&ckm5`$OiBZD*ZaRd>)7zc?L(7DjaA2@|mzp~&Prp5m zCH=+t0^-OzCO#rD{P0$S^C~?hOD;1;>z_2dxf}8ce&>Z!lQguc`?K(c52`n@QiO@d zmP;XlV8y&ql5&0b6W@JN7Nd)2ZJ-2R@!T%Y%u^29KN5r{KQjd6BwMv-U*w7K>?Rx( z5Y^xD3!!(5*JpPSi=&2&w6=}ulV*X=U!CR`{-yA@ytm!BR6|>{z0;nIW9g$R1}+m{ z=q1={ubHos$E2(TTos*1T`#SEs1;m@IF)2v0Z<{V9EYLuH1^x{{p3XJi(dV)r?zu10AGF#0VE?FRk^P#2alcovMS$g-%(c2_qWh9r zFu`xx!Reu)6>BUIPTfT_FX{YDcw9ABOGshql) zNmEo6@Gb9BS{98V-()X85qrka$hG_>q{ z<^ESFKOI`@2RmCXwhjmM)E}P=D=HbaNK{%zNT$L&4=9ID_a&pEx~M0}ctL{k`SlHy zWM#}RN|{AH(Frmr%*Mk`_5oaipYzZd%TfGJ^Vrhmrd)1>K7OhF!W z3u)|WRZd|AW8#nYL^6fDY1gp)SSxgg8piyNRKy*WLef!b1}}vx?btHaVPp-iha-x} zjr|la2TxNJhpF&evdC@J<1M5w0|9V}#BNt8QvP*HW^_Wz>=`{;o&y3(Fs{*trBsVM zzPlUW+ao7F$>(u(k(iT*U@Jhhjy9k7M8CFxQ&YQ})u^nM=7^!Dxu)ij0r(tT(TBc$ z0%GWu`V**;fTGkA%Xc^d|avP4(L=#yKSb=-eF1$ z!{wHEn`0!!A`WI>WxHPyb!F(qiejf> z$FQN;ZGw7bp6L#5zE#YNN39>!ZBq9z7DuTLmbH|7LPHyQeuF z4>A6ic9H!A)Gzb>A~cU$iGlN-$q|Gq7*ztm&lm-G<=zyDUOS z!Pjiwco8SrPWdPDH33rK%IuLAXYDXa7m8P?)149&|81aB_SbCUB!&T3rTQDNuTJIUy^CyB1g@Z!Z;l z(@?*~h$s4V^H&WjWrbja%(CQ(=Ti=T zGaKkBJl$8y0{=8fNo6Td!~~^S=LMgl|G)oE-e9YJEOHv8o`LowDhY?5^|SlofEg`- z;#ki&?5F_jtT`(bo%Z~s)_BeBE#FW;g#04Equ@agXxyOl5P1K0B9(e7)qpXu4F(P0 z`MAMsxl$772XI9rQ54u7<~qB0?p}_hZsI6lRCIF)DqR148^yVu+yhITr|8@ukALER zJrza%>C~)-UV29EcZ9^JZA`fOv7&F))#YG*AI{cmd=^wEzUGSsFBN`9_FPeX?9(k! zm%Mzhr%3v$H7-e1X%TNuHE2<1>a1uHV_Ats~E5R~&HJCq?MuOCo+t_xaV~Oey4?6O(QtEi9LJ)GXsvYC{9pUN0L3cKu=8? z7e0?xJY{Vy`rcG8gT48d;cl`*mwBC$@*CF`DMxjE_LqL$65{qvv5PT(d?V)p|^n^ST*Ki0FVN)|b)oU6bt@ zVL89>=V{brknMsjlhUw^cAEGLgPl_Hk(cnHN#=RP!zeS=+A<`NnRa{)(Hi|_*-tJI ztb0vSk?_)WLYP-t(s*DWXKolj{E)5pQSj7;>Pt&qhpgGxBUm--wWGvMOzSVhv;XwA z(d^J;VBwo_h6&}gW=|5~s!Fd-aYf=n0U2h=DuG%$mJ$E9~Z2>C|sVlfO9I^s3*L-)iNbDV-EBc}FqUh7}z-O5iu4Grn z4nF=I$>0|IIUuT5QSP2et9qKAj5qwg>+iAORbOLcv7}z51skWCF(Scv$HPLS#Z(Bm zk$g5L!ix5CwEZM!>VBseaE%XFR|0Wcz*BQ)bT)^TX4{LMO>Yz7b!zK$JGt9zxgM)VQ_R!}F+KC@~TnmZjQF?E~GA$x6tT z<;LNfs8T2^K%icJj5UBdbVRu*z{5z_kX2VZmPr4Y0u-q?|JFRzG{IcwOHLj<=A&kT z%s!`c9$Bi4#$X2APUp^*G$ZIap5i0q4Jl;MGgN>7sk0+!o&W4d?8C&KR;cUJ}z?a z?X*#fvKr3&n2p)90^bkoxFJeMXGrU}jlf%zLdKXe9(T=*N$ISXN)pxmPeR+Q=*Wmb zkyZ@wT31-|89Dh5>Vbl#uQ}1hjWS3Vdj!7BAO z+mI7kB4vuK=dH>;zrFF#{C#OIH*WMnn;z^k4!3*_{o&<#FAun`tL63a3dbyYklEsH zyzV}T(P$ISKueGeF^5?USbtz8b6fs#EGikcVAZY(2l9p@vsN{bMRhHc*lKT*a`OK= zY+65iqA!^9RybT3Lw)^@OrY6bn}1<{uq6y10K{hhMf#jx@=ju)-^8;NZ^Bc}p~PJU z7?6Iw^nUc9gY+ZO!PP~~8bs8t$YB4kw;E@Ej}Y~=VKb9QYF14q()B|A&*h%?H4g z5A8}-h$i70LYbnLT<8LHNI(UiC>(}*A%ed*pr%8Y;LJP_qJI1%RK|u0CUODXCx!pa z@l@%Uyi{$e$pIcHrOlt{FXGjR7Rq|1a;kDP@Dm6tp4N3nc>vg3S%lcJrJ8}xWGF~2 zdk1fM!y)+@k2NT1cM)iNi-aij_$X}&i zE?$MC>>9DVqgH7L3p?f&F8gDbvE#)dtG5jPESD z-*uLuB>JMNWpqdwE=o01Q1}LHC0hNclP|TO2j^ZI@?(j9K6#;F^{pc6nT?#fy4Ww7EOclkyqC?U;;(VY@tp zq}J~D6#wKqUiR4@fm;DRjvP-S#w^kXhPYo#)qeBYU;wmp#&fwgRj z3QCv*#7BtEs4cK2!s<@w`AQ}fi$bh?wF}6~48(7ua{KO11Tc82ycrJ=R(!(>4XkPB zD!l)w((|DJ@I9XG2Nx8ri0vrjzTb(+-Os^}h}pkGFk$Vq)D@To6#W&8f4M{FxbxMY0 z4SXg=0vjm!F}C6;MNCAE6C`&*=YraNFF&GYwt!RjwXOyd2p=Js4Hl#3ErDH8-Ofph zMTyvW*YiAKGPAlkCwFg#5{Y6?&LHHM;WGsv+y#iYplR`KF}376`zfPoX_p5-#64~r z7Vs=vPVn^3Y(ezhSHN-T;Z;vtfP<~@J=!0>)ygc5$FvAp)U{fHR4J>nP`_9NB8C-a z_JcI(Q6gctK;-2${kX-xI$HM!7O3V_P(v(oD$gTi*M8R^q(+G;_i#g?S{`Q`Phc~N^(O^_{i?0M|J{Kl*EJ%DTH2D0q@4Jzo~aKATlgadlvzKPkI^Tx`Q82Hqw%49BIg9jLqK@2+^!__@= zlsaT;H2L$p8_$SM9^;n)YYUfQ{fmUMM45I<6@*6Nd&{Mysa$8UQJ*xCD?JTrUtI#1 z6<@k$4iY34Lg1!=PecQ*=;-n&;4kDorLt3~3@Y8c8??WH$kNS(Vb9oKyn{ODTE=~oDnS_mpx-~C?!1UdZZnG4v z6QhUV$p)wzV{6yV8Uk9`^CtZmTdkonVfXv|YGJs%fNk2HE`4kp4?=V7#zUY1lsI`W ze&zDeFphSKB3qDeA7~2D2>8s$c1zqJO zOPclFTRb*%XJyjK!A23bL#XJcc%IqP)F!gFR#0XC@yc`P<{PH7hi0fR3S=dDdNghh zmN27f)3c(~cp3nsg~P>2O&A7(vFLiInOV+;4Ugo^8Z4Pc8|YjJ>$=_wErirvzTM{~t|0;clJZl2J%nQ41 zHq<5gY=HtW+mVo;)oHJuI1|kiayAEwe6S7qKgx8CHi!R2Ev#185KM0Po4g2kXKfTZ zBqVTM4NhW zdQ^hRK#F%@u!jeLI5={i3iM`n$n{_q8!tre4R5)U&i!5WFMEDBgFKnSfi+oprpDun z%G-w3N3RHk`CKQm?U)6rQ_-4dQNFpCqEzqKy`#J6Im~BSeAQ5WjnQkYUM)}#dqqNy zDQ}{ck2}YhBFgk=Ez`N+nf*Q7TgBO=IqxXe@3c3?z$*jWv?f))JNn!+Z!+-bj4#1h z*&2|Vz>9P3aW{pXf+lPNHX!<@jIgf_!E*ce3fDhWDJA~8tu(8hlD-pu{lGyYVfzJt zPa~Kit?oE%Rcq<#n77kehV*B3(1)lIN=osI61HNi2yRo%D?;{Hf&HhHM*U;gO!bW| zyKJ>79R^kbrlSTC&>+oeoQ!jF@C5z>h&q7U1!v0hcs?-QCIEA{yu2bxug!k+Fo(sT=ym^0nW82ZqtGcoK(*;jsAIGytg?Qkt3h zCVjkj*Y69QA@_Y1UJy-Uw4xx%#W%}Ih{6L};ueL=VPC?2H$ZwDMvc4hSy;`JEz>1)?+zs5^xnmH7-gsH7pQoh^x)u+cZapp1wa=qQ&_i=w0J9#2jw!w z@Rf@!h+1LII;76BnOXTX9=y(iSx>ioe}NPxu31Ry3aroYpaHc$OTQ;6w<3iZ~kgkXncoHK9z=KvNm(s(kDL?ty!+L?~di9_n@~ zX}9!U^JLl(>z-;|zVaOO_27H`0h|!NzZ7lU%)`2?q|a zK==kbk_xd1wDXG%Z(Q@KkMrwgJDN2`Uh~SG2G{U?67S0(d%rC7g1!E z0ZS3hotQ=7e@gt=^9MSQ%fZXC>sL;wIo1Vt2e)aOezNE4r3u(V2xh4uUK&K?rAQ|_DmT1Ip+LtB4>H}p-Y3oD$bex#1F_z(ApCA8!s z>LijT*z5TZtJO3WyWM>@Hi$lUlah>@9-mWi`uD)_*<{*!@J2Y`-mQgw2&yR2i%qIO z;kwRm2I$Q6_V~n{XRB z6SMQ|D7TCvTCy^dw-ah3E=I0bN2)+Mxf5m8+$*_aW&a}Yn4Hr3vvQKJ|;(%+a{ z;2#66uPIn}4D{CU;Lgxu1@{VrZNkVKwlS`^`r+~a7$2Q@Ji;|iFSVPFa?6ltFJSda zTIKMIKAoZLFExKtL7xk1y=tn(%lbE!91S9o7qPAxjsC?qgJoaa^X5tz5;Pi4-*O+i zqJ;JX%Flu$tz=YjPAZMXa}6a%VLf_3$dI>_29;^8U8TWqO9Q(VuOJK=mh=+6{sRDI z)yjH$2_cxS=b-NBI2Of;8e|SM8Pn@)nyVOVgOV=@h|hfW0f;Il8=B%R05-;WymUC# zWl5kdmDW+HAw*#(#Y@Nl!aI_Zmft<2iWG%ga(Bf(NGT zm%x2YfUvgJoBM83Qtfy=h8NTlVJYWCJIKmAK!(Y@ly)#$AfX(2-~n%G9lCkA8**d= zKadDb+X($m8`9Mbs>Mu^A4j{zr}hy9WXUw8KXNjsVj*{*`}3?HK{Fts{UIT`#MUbW zwQ1Z9@96cpdQZsuO|FPq5x?4<0T|64vi>ERRvFz})j3EROBER2@B}fj!{m-l=b@{- zm>^JL;_iQ_xF>YnLS*7O%lx-c)+qf7r2W05(YFNu4!g^KURo(U)}Y{ES!w)sBBK$p z?f3Pc3;8{openG2AHpR{Y}B(?h9qNX8c}=_9dCdv>B)h+33B2yQg35BjfI+bK8B&e zTcR$XVXi52nVxBBFMDYdwFT=1;Y*-hz=iWR1Z1V2Imljg7yEhl1CEq`Brv|MXrTy< z=c%(<7Bj*PLs~krYsO&%&M`xy?zD4NLJixiLWdRkJXUXiYU)Y0cQ^iXf)zABepMZDC7C9Fi84rYEh zt@z;}ZZPKB0sE>(PumZ!AhzkDYKo5WeYDt{^HPF!kgSe?E;vGfnvr9Mf38{_F{XS? zf+$Pt+v39wC404raMR=7-vcUH1H1S)SvUi}0wSOU%-ap+K_nINr8)%HvRVQf|!qYCf6fFPH>2Ctw`iJBFUilt(tG?br|c8E(U#4qGrDav9|9D|CR!p)FrUe~FqV zU;@Yia|QE21_%yW!y|$EVUC)lJ%kPi(FWkub>FZ6hVpMSS&QB5%E1Pe_QcZ*!=uoJ zWaFwIikJQ{)q?Mqih>bPAMS9BZJpx`GYD)ygTCQ;`X>N0jwcPxyOLZ|MlZ)KCY*>& z#MQR4;%WezgT&%caw{Zl%v4aIMzXQ+20>%tV`Q65+D zn){RwR?P|N6nY0y?zm4x)c8PUG-ogWZ7={JFk^}?!(<0&9MoQdvWsZc2(Cm)(rFNo z*qVL3XtFR2dD?Bx>`XmV?KID=dNijw$NkD{2dAgQxDGK!zYas=+`bq0RxK8&ZTTLH zAaNuTPcjW+*2e_)fYb2Uw*CN*u3qu|Q`(`}lT8g8?T?sOBy#rCQKGvWZ?|UPH9SNg zhD8F`=4@Za3?x2 z4WPb`a(b}$b5c_G)CalaXls&Zy8v`l8G3r&HHNrLN8(1fSk4BT>f|e9JxWDR*Z}<5 zYK44uPUgN$WuqPL`1ZXiVBAox*2kRi$bzqQy@o$=rdPR{h}su~cgEYK{8_Kc58$yiVeZ3eMipj{_#CXjN1hXzluwVjR zO#cX4WjYb%RYeXBNUhh@#H}MLO`*A}(10NT=Zt=o?t%^B1Q3H<>uHC>$A9~9(hkXm zGX@{SI-;I(pF?)upgxmaQxd#L-8;?(mPj03sqMXExG&aBwNt3SljwAx18YcjQAeuz z5(N?yT4v2q3f^w-iMnVcj9WMJSYY75PhW$1^5CWM=4D40>tj&#js-l@(U86b&2>U9 z)jV&y5PcWInF`1Bp>@A^D$E{!hce2?keGxAGVhS+9<6jZre?KXE*+Kk0Pjx zHzwdNv!H}Y?lNdqj<%uu)fKsZN!COzjNFPXcN0>Du4=c5NJGuNEg$g7u1YA60Zo1e zMDnmFzQvjG#5SBXb8m~o@gh#pe+M_y51WGzO-9rtaueiTS4GM6sTE%C5+wNSoA)9mX!s{@Xqv%3%mA6f28~E>b?&ssWm++okInaKu2(F6$=l8*5V3m zlSe}TPe+D;f|LcyV>lvrzi&mkZC!EEp`Tdpx!|7dj4iptABxrhZ2urjYi~0halwX@ z-K5E)!H4-&b5K?f@c%rV1D0d{zF$Ft1a*qP7?Xz;7%gAY8#V;3Vd3jOkg~79i1$5H zSQqo_p0`DrdkPkVdw$3^S?iuqBclUSA6Ih;#=<;VjpqT5P}zDTL=U2R1N)TXmzffv z@p~v^T1psc5PsLzdFVp8yEIOqNGOsRO{lcB_~%kfrOtKx_k@f-jg6%64=zpA_6%t7 zT6$F4mrP#3xGKCMQ2M&r{cB?5?JBfV;c}oC!eGkk)Xp3l&`Kd%FcVG|fuZ#-4LEWDh25&P03gdYe3s+QT^>myQZs7%F3N-Yuz$A>~=}GsNJmSkUfk?+xXlX8AMMl zi(*OtWYGU4QN+T*5fNAw+_2)Yd$_9XLp6Gka8qpFJ&1yn)q*l#74mhWSj08(3Ntk7 z%@La)Q-s+H3$b<#E1%TPfK516)x?dpCz`~Nftn>KH#e}53l&pYNM4MOWVTW#wt!;Z zt#PJ9FYsS`sTtAFuF_Ho-ZyBhLhv%HxD#R-R)s9V2FY8AEb~QgPd27q32%9mr7BwT zmNs6vXZ`SF%l^+E6r|yQF8wiDzf0A+hsuKuuW#+_X@^k2bd*`mtBnzEn_%nW^Ho5* zNR<5mjNqFSBi)cbJ9qsUD8JWVV_MVEkirh+X>)hBdeSBYXv!NbnF2ED7m2ORYKpH+ z!PQ~#{Q4dN=vkB8tZTRyS9`Euf&j^FUR8q_-0Sh1R?iRn{PhZSCudpRL)~ua_yvHA zGBvA?HAO*(okUh+TmLV@r{Q~#6L>I){CeERb~9t(j`L)-&liUL7{eG#rXjIm^%)9b z9^th?x(|v(Nv+hH6Ind24k>%|uV_i|)%m2kmRo2x)sT}|g@VcD$uuQ=ozzc$`o%M& zoF=L){;E_LozNkXeK+NR?FH71&V+;eoCj!fA-4BLmja-Q;fX|PmfKEk;{96f7E$*q z4FG7zqLKQSnChry#?T1R-(QQ+3fN{JEk4sA1s@tE!!Q_TuujUjO$ds=lkg_r=?v*s z=q^RD7qbtP-N)sMt`Ou<;zh(GRA5M4wLt!TgVSdBdws2$k`XEO{J+}#_HdMOAonva z;7nGMUEz4;$8y=KM&T2?C3PoVIOYnQ&)0e3Aab^(=-cLC;M>N70PtGunQN7t8pa-% zjkEOaH;qAY1ShjU0vNt7-x@z`P?^4i(#otDM=mm$&$aE93l{5dd{5s6}M4WdRMb(`1g#Ae+g_Eptix zIyP$MVPie(Yh>3u@CDa^v7sZ=z+>D(oxYbxY8~}!UBO^>=lr)%$kqny?WIB|tQKOa zU&a>#dO_5T7t(FcRrBT`&Ys{z;7l>IGQ`gO2-P4zM(&NUr8CQ7?{uJ*#`Y;hYMSI(C{Grop3RtDmqPpVJ#Wx>A%8NGXY4*zNk% z$y{sJyrLRz*SAWziTQFlPh2E5SB&~0!BKt-HXlMCg1Walhpmm%qQH*Tp|a<5RwkPY zIN6Rtvvir>yjSD#b^iVtx(ARxlNEeDK-dnhSYVr17>g^Ff^4^-1tCumFO-k^1wtWa z`l?^|NM9|H3FR!3zO8&pIE`eiTKuaQlErg_{sn9=yQ_vBOkTFyB*8Mm6r+(_hhfKj zaPA1&#DU&VTCc5uBY=#-wb!oMCymo%8d!0z+U-|+3xmUuvE<&+%$L-IxpscLUT=Nc zDhk}P%buzlDT`SjaN|rkgu`^H9+wck)8HtRyiO z8-5jr&x{VyRncOHZl1mT?PNGGjAISIQIWEZ12b2_lEWu`a8omKlOz%(mUP!o%G!(@K6D_7R)psJp=t>`m;i=J=K=%0G)V2G5*~)bXj# z7Lx6r!~}tSsQ8H3BpV%jVt79|by*|OLpGg7W4kH;s%4#nJ$KpCj4 z@Zp7WoC?FsIans+@AvWp9T*9Zmpyacx$FkD=Dajri&pgwqAm!|8EldNTaKO7*{+(a zTYwd1)#tCiW9)3*#CNvwDyyc7q1jteM6JI%yqP;_iy-YA2GeZfj}1f&%uIEPB9|1j zV!Bv7$L5p0s?Gr#50oB2h7qP%sxF8QZyYJ_sU74sBE4h+H}TriL<>1@a#2(g{aRzd zMM>nBRZ0J|7JXeIH;|OP^bdZmk74I9!o&+#;K9Wb_wY}xoKnvo{r1|!MCA_tvYmw@ z20nN4UzL-!kw#5sW&eQcuhUePyXF{pC1A0nElU7b=rDvvhAC<7{-zoTdw%KWFV`lR zuAAnf*BlKIu_YOiG@5fgJS5TJCu4gJuKtUXT#(}hF~8iJ@PmRU_UrTUH<&x1&g{m~ z{g{3C-BYv7Ct%aIg^i=?@naRfMJE@{e1UCF7(00{EZCpgQd`IqcVC+*{4H!)oawmA zlvw)RYhTHZKhk;R#XfuhXpgE~KEw)9mh|g%v=>dsZ|?fzvG|Si)OhDno9g-#ji7H| z=YqfqjRp*X&wtA&I)nUGJ}?`%2e;|BQWEteA`0S9Z?=qx%Li%pE>AjQKz!>sKNm{*C29Zpa<35ej0tT*{6W0RKM#z*Yr)O~9=u1z41E z8h1l5U2Vg0uSjUNn#0p_Mv}m(qdMAN64*3hzlT^>s0BQHaK;;Jr)ZNE4!0T>$-NH~ zjHC)y3vja}^Er;Q zs@Lj&O!y&fZN=B&!&?;HQeN-rBgtgKP8oQ2%r} zPmelK&dCx4!~Q)&EQgx%Uop7IR&&#ZIBC@ImDmOYXN_}88~mSrZDP~i$KH8YZ=ePT zxyTmHB10R$3HZ8{L92N+XIZIwGo)<8iw~Ag(kwZv!AE+_v7l&QOvI5p+^%=NSK0eFGIjACA7pKJkW5(a)cA_^-lh?gM_fQpErXTH!o>Gl2h3 zR@CWyK3)LQ_r8Atlw5#F!oH@l%wOSu?FsC@-yEJI#D$TR9G8_DBaKG1;NvX5*Gz7} zIoCHw;JL>2X0qpzxCx3J^Zk_(W#y-CU&0MssuE~J2lQ}v0|hAL>CbPqqs5J5`sRVE zS=K1LsNJ$MId=DzRT8W=ioF1FfVTqXmeudtrUn=btdM_I)(J3|d4vM~ z-pZZ^@#q6C$N#e^mxZ;eTZoyE5Gw&D3^9yGiw20U^O@vaNwQfp!%+LVKc!Ep5c?{M?!NX)02IP5=gVDbCb>Q9ZH<2O_3dirKGZ4-t=DlvsapwT z0Ism^*tMKUh>beu%9hpUEdtVoPknLfsArArkL~0-LSM;E=J%lKHl?=G9FHL>9MQKb ztF7|m$MRN-*G7r-{u_B{M3Z+yu$uPt^_V^h>Rpp~TzjM&H$x9V*nTDknmF8EIOq~r z!%r=axb=o{bfx4o;9!vEf6jD@hbU9i0R)~#3<=ro;Z4H}DF0w-P$*XpToag(-uEh6 zj?{QiS7*GD5%K=RZ--`){00KDS_ckb=>i*)0`6$Q0v^F>@};DXFO3TUcx)l=~?)A_c1W(vL`N zGCw&8?E5PW8B~m<#a!4yN*4MF99LSKhVV;FjuL5c!gAG>3WNSd9JIW5)0M7n%bm}a z3Ij-#cfNO!(ur<)cyP^V`In-x!29ZQ$x+hsTg%k7#b*UWgyRw5H#?3GrQmM)mZf~y%(vFo-S)9Dxu zs@weO(wn8nNs=N69k!HSxLj9M7dvOI*B!&%jr zHHJ~e*Ok?Ik?u{#;_M5ufZp&p_$i8>_w%RM%K zn;S|70_;b}G6Fk=A+*7FZkpH%Fy}&%nC0#{G|XgUY@h(lPMYpOZr3x#;mGUvchq@r z)I+!`B#r5l96QdY+1!AMuZLP1H}Ft+Q3(oHe6{~KQx-h3PCLuOoZtb}NaSGR`ql{( zM?`;=FfA8pu&wR^4)ys0jvyK!jD=_S{lN##q7HbbyjLa6lLI;0laA6yLFN|+fY}6C zw@c9bH%7j6)ij$sfw@toQRb!Rxx2YptqH74&b&sfVKua&qNBOq{rDg@F8ZN{)`$~q zC1D~J7sdF`#dct9v7_3M5)XFdqX8D5NhpWPu_Q2&M<+d zEsKz9FfsejYj#Uq1lhj<*XKHEglBWXINp(f#7ut)a$*|%AQjjY%mnM)5}w_dY!!Jj zEX4V4><4SE#(zdVqct(a~Er+7%PgowzODHA0|xMBWp2qNGW(Cso-} zR9W`)oon=PtUNXd*GLp>3+;)pv@GvtE|_g$C(tf9El$q>*)zey=he&E4*>&Ky||h; zcmcLnw5w)1{~KncYdG~Y;sT;c~ zU%-{8u$Vo|Dupd3i}U%UGBE?8bUf!dyl!VrCh}gs#~S%W;OZBa*n1BQL|`a8Z3^cY ztl~&NZQFN6as(IBc?H#eG&#d|fiCg^WzSYck(qO6jcxG*l76w{!fVa9pVG!J4r)*~ z$hF@q-R|2HG~yGJk;(>RZ5967jKjDJi5^+5fQ=>!Njm^!${VH#K3R~MK?-Y)U>iOx zO|ZJ{hwN$!%;*S#UpWPA%2JD&6%Yw+oc&+>xBT%)bamTJ zNTFy@VjANJv290SjIqRzI;h2X7e60rgt>-U<{4}PA04_Dlkf|8m0x|g5H$XYKX6@t zVndgiMlQ3Fh5pl%$r;ysG=sgKo8S*Y^Dl@#kOhsxLo7fzl*AW zExTaEo);a6P?QG{fr#G*yxjm_O8HW}iYY-zV7?ZFp&;h|V25FV_K@HEsz@MLNMYVBaX;pGIy@U&ez4dEk)eD>U5-^(kt;287I=9p{S+eCh7UoZ~cV3?O7W*6X&^y;UHMn0s+5xjq$3kXtJc$p|=SdGmO!uhMp~CK9k2 zmwR%2Zz)%#%flQo?^y#V!w{k)0EAB(bGUU3s$3u@-5ILl2r65A@>LTKC&JVv>!LP8 zPLa8wx=MU$S%iuRuxav^AU&ej84Wfo7Q~kw)L{ z;iRvjh2voiPNYvRVVTP=j}|aeg5fyo7O!5|STrzmDnjul6QiC})ISBKpIvj&4jbgT z@a$kjpg^<~#(6o^A0FAKA|+k*(tcmqk7U*!#v$mMbDp5v$kYkv064;Jf!C0oFb?l* zR19l9mL7Pwr+0j`=KrTLVS*O$5L6nffU#18)nsNlhLz(~`<*anuMWSZ`VnQwa~%VY zd>T_p4kOjk{8H+xw6eLI1L?d`@J8HJ_Xjb#*^rez{6GB&$)#)=aRW&!p#=gQCH|I- zcD6b%UKl0G?H(>6UTDRAn(fOB5Zvu+%9h`vu3N3T_^Xv?p(6n0MmB`XFDsG*Dh1mN zc}a8FT-m=HJt}yu2R?8I&SOgSM2(|)z_erO4NCwJGA!wi)(_7wjgim0Ab#uCB#6Iw z@=P#LGJ4SEAOmU1h1ns$hwb=_7n$*A6Lpg>YG_C)RWFx-7kMg~O+74g|YHZLrog;zshy|NSzvrh>#EuO!V)0*)uoQMv*zgw`2c`A+90EnoPF;^2D{iL1*KNFri``R0fB- z%8}B__i}4*lc7(I?uGqrYkDK*sN(&@D5k!ieEs*Z4JyTb&55_%?%ts zJoltp57ydF87-z~IGq!b!|NNDXRj*vUNd|-gE&xX>3-LUQb;$m#XKMMslxx2=VZKJ z|2eBQLo0R|@OppVs%0EmQaSGnyiOFmmgFpXcf^QB2HRcepoWt*Z31gLgq{qW{E2(S4RR~jr*g7+W;k}V}@GQ2u0--eB09sjb#C~gQrlo;>n5j4iVBqhuzCJM2oq^l5K2ixBRxYY^Uh zf2Y`0z9@}S6?1Vw6KC?Bc4tQ>!6<2(C0Q!XNa0mCQ6h2yC#yBK2eR`2TdRnz#(LiC z;QmYUqwxov;gRWg)W)EcnPVS1BbE&*UP(02)2TTtF_@qHBje)<)uhM}GDulW7x^vWzVMdu)7Lq0{2DF0q7W_VUmy!zL03M3 z^p`lkIbXEb*QS>eput)-L*ayb%ug2zJxklX7wH6@S7h`{2Yp-@hlegA=Hp|e2Qk57 zpHzzv#>?FdSbRUNTsaFaeKS4Ik2?>>pUbzHBjj56vfiOxF=%>E@S?(v#DTjUywHR# zl{rFzQ8C3uC)>`M00RO7E?DZg$_-Mig1t_N$B`?Z(!0wf{~adJjr6>2OP(v8SRv{r zBTSHGe#%ZdR)=Oa3Uh3&f0r6w4>*}5ph%d~uTB*o1P2G3eKl)+g~uqy05A<{JaVA{ z0~~0I@_6@ET;IdN12uQ}efB2d*<8)>VVy>^zDM zKnnEpGsR?T;L9R#We^!r#+OB9q#fNYXb7xo4;KvTg6tnW=1@0uGo#Zy(0u-G1 zKm*}Jol#ukul|!P`y^4^&X65<4AG8FF9fl_0Z1K(JrHJ%KrcD>bJNR?RXW1&bXOqG z;f3N>F~8Pu1})xZGQ{0cJD99MhIiR*k-gK~eFy`R#`dp2P`ZiV1*i*b zp~(^sR9wCNdZT07TIMJsn;D)=LD#n4HauT8{|s8eag7#=^Zp8G!cFiqi+)U&nI@pd z60EZ42Ok-6HU@z&)~;7NZ&C86k=w@tgN^3B zmmz?-k^nEE5lzx{>T99@t_US0JM9~V=r!Kz2OFn5cZ`=C*J?cLZ?9H6j-C<=oGw6d zN*(UzKU8MLbLnn#usJ(duGCY$sD4Y=o0qpZAR`5p5Pa!Ez-7>AN`VcT13V3-xdWXn zyYK5%(yMI+2SYx0RFGgErHtX!&S)A-dPBFfvWL9s#R$<~YQyCivh=4VmZhP2@coH@ znx#7Na{*3p4#An(pLjVj4B)gH%jwFpej{Q~`fJBb4(>fW4$HBB%Go8|<&Kz3H*jE` z$|dLf9X&2RnL?m{T~A1{$!@d9Lh5-WESOB+PCL{9UVnP-G_II%XCF;AdN{{q3{gx) zrBU0#eV!p@mR6-Ina|sJWWFZs@rmzGe0HKQ91$cbBazKW{D$iG&%5LDAebA*<0h|# zRK6}xI$F-|CYM1dd~f!m;}xUq5oZ*RZ9izalb<;6PR6)+7%HA`an<#HbbZU25=eVT!z%Ib=>MgpXF0qJE4-ncg{-Xfqw0d#XUPG@tY zb(rec6Cu~Gff=?vsTd$0It9kn+LAHI4-4;q9)>4CHe24~IE`PPN=lTXP&UyoDn~N| zovBRNt+MOjOdwFX*Ugp7?IuB)al@`He#^40xD51iwND!(kiL{}t8 zkUL$D=u8*R+Zpqw(fojONr`-IVmIZOm1bOfJRl<&gSd~;;>&tIpp?)zsz?%VzOwKk;s{@O@s z02VEm85VnQkA&o#<6|=-LG3TTj0jR~$82>IbP3oxXspENW%V@5{uJk~26q$2ehbi- zKCN(`EfI8f?{aS$TW;*XD|9qiM%`qGTKwRAtmVlqTgqwQWzovuTOHa{ZhnDAP%N{z zL(S{LWn;;o6z0_Z#Bid%penMdXf$HFb(#5HD>X3FnZ$NV!Q4}e6doLc--#7FWKfyngb zy!rCHRcBtrS>iaeKU2|#7TKX5iXeZ@RD1>6F?_Gy2$`d$YOgbv-qEKh zL)HXpEQO5Jx#!m|VA?diKNY?V)+ zn6i3{`ydQsgJ_=@QP1ktum~x^>FHuieeRxUh#dRx@ELVK0u(bl3+b3_RBAM}ujE`1 zY;(!k2vI{f462(`T)%MeGB9@GBBuT0fl_~k3d)HfEj+3wG=S??(i86$80y37g8JC} z-YHJk+MPw4iE%3B8;~iIIzs0*QaIiS3?>>cQ%fj|ZDZtr3Ek zDNS(0t83jaR|^~{;=@s}5oIx@PX#}kEyx?C`&tMzDz-IeDCL`T-2JsiVuHUD% zt>TJFk{5SJ`87<_J8dg2Pt_p{IVVmppaba&^ zCk+vaGSUMMEFBig5(%Ro##==pmU(kpBy!%}cmVyMLXRB5Bm{r{tZV98=v3kq2fb7B zo6t5!-hn}_MXzBlv~Zk`H@b79FWTGRy;vO)7a;+6zmU z9oh#8xaB=~b+f2$qKJl!_M>oLvF!PNbYNcr6K9>DIO{+;=;2Eg}cYnhT*h#ZnUUvn}~o4@l7P2=E6ur#ne|NAY++{LdC&=`+dhUFP(^fed+b^qU06k+kgymE&-! z^y{EeVf;V$Az7r8Iv~}#@#!#og z!^p8R@nS}|vMQP#KUoIB7FWa(a;ho@KRF|kZ60Kfc#B%Ko-Q>2vl|5`;ff4NLhaE8 zZlzAIA5Bl~rYYqCg>goStp02<)_WjytPmVE+M~VqHu-53jvO^fl*Jwy_=T5|@TSjI z_NR^jB0JVOqjoMjZ*j_WRZ2L-b)LWp$!T(8z0V~drq?l^lhxJwNXAq8boqJBnj&<~Yu6)@e`ld%i_C;7EP zZwhT<(*UyRNFFNhTjr{&Zt(s`%?erNaKZJ@=RgnbgFg-)3dUgww^ihAV{({HODKLe zWN#1bnTim}ItsCOxoa7FV@7wo%9q+Yst=go2Op|1M>=8Ti5bCZ+xx9@Uy`7!4a&`&Fa)6`*np$1%DRJv!@MMP>o%Xna zk*8|=;3;Wst47$CB(&h6XJ_Saxb zRS+t8I>)A4tAg0X6k2HKaam~h-3pcTDM3M;u=@@4Z)ZCW5NflH?n--mTWw>O)4EY; z-BVXDH~uUW)OITl)-)0VA8<#OA+2Vu8NGw=uxz84O-u6LVlo3J91 zF>m>3E{A5*wTZS`dfqxvsvk`&R1YR?(M+a_vmer>f{Gex0yQZfVK+6Iq%OKAdqUT< z!L#CYVaM(NUhee>1s(Q%T?B5HI(Pru3{RWx0;*8xXg0c?ai`nGe_8OAJCl!a0ZckGEvKq-lt!j6ph))U%?|u0`AGip-y^*k; zTz<}wMo*O}aJtEskKMx=iB)bl4TYq31?UHn(Edz4@*Ei$DvB?@0`glPeO&02oy1B& zQT>Y`78RDrb8auY6oP%o91H^ga}TWUTl`_xSmLn85rAUEWpk_@b8b*Ypu@RJJ)=al ziA?uj-Y!jClX zKKIG)%Pid^WND47og;7T0pSPP-1XbMyg=qkGeBmqyp~u>UBnRlO26YZt5yv+zeVFm zPg`0xevUDkW(?}^FoM77I!L?IqkgtS=wfeJUzL=jNTyRC=l7c%Ni%r&aQ>>z=*i2bwxr?8! z?7Nw5q$tZ&4~7dfdg>G@d!afK@q0HBKWV~4C3AnCZi&|~3?awX^q}FPL?Bdh&bH23 zf)KT!73UVD&HPK^48>xc&V$cz|FcZDAyYoxL=xX$Fyw4u3^kKS3WnzU8Cu-fyGKucls7IXY+8?O{ z*r`nO_>Xcqg5^Y`nz4+auRL`+KR$OV45#GPT^d5x`I?RU(0w=F&r0q+N?h)~hpM3S zJ6*}31RsIdV)vRH7R|TAm-a}I&I@%iDm?ke|@arI~uQ(^n1W2;O_+wO%--g@9GNH~d zNtG68T8b)~n{-L+i4`$D182Vb%z_!Hf1sBwY_z;YMQpK#Bo6@`W^A+)a70p$j}|jx zHBkO%v89e4LnJL{2)k47&t0#nt8kXJK*i%Oml5Tc2gbeeXDI}JRo4={-H_06eHI@?uvx2UA+O0;Y;SKZ@e<3`We%!N`$%=+M_t} zvU{%lO!@dV-Jm_#QggaB^9uWjHIuTWAAE=e;TrCS`(MC|!7B^JiqZy}D2KT)O01C1 zCUQdQ0ntDXi}qYL)gs3_6v8#V} z@wP(Iu2X=Y*w)!?a`6%1dHGyZ*B^C;R=d%oZD#1jz%TJ6ydf!PjpMxm3XTsLompar zsYWVThMy|qMq5`ty{ZbuklI2@o|r429?^b5Htgrygs?4{LW;Wf3Fj374t#pb=YRTA z!_0!I%)*P9HLzd|q%Q&(j*C~)GHjautefm3lU}%8kRWTF=v^gnB)VfIF*={W0Kg!E zDIFn%#3Ko0C9rm#9L9eu}UNY@4;W8hb@o@XX6Y6+p$pu9?=d`Q_u^MYR73cmmen@UDLl}Fs^UWTy!9Y84gnk2A|zqP$jp9Q zx)g}7;|Lu`Zz@L7fDu-Sf|@SyvIZ!B*motQ%6SE&FE=CO9E%(m(OSD$+z!32#lh`$ zyrgLit^5ZQGZs%jpe=&ahJ#h6*Ei4>yTWbLUu%+F2Z25Rtd`PN$%|02Nf7^{niAKS zGSrop7qJvgO4>+@oV0d=7knS?4Ax~1JG597!wLx-pQDMRVr;T^N+_4IgE1pB>!c)6 zbEZv}_MD9Ee`9_t3#vAF1k`gSVtdTXRpmne&Gj7rZRx~g--u|dG&f@tGw+GB)wQo3 z(^aYmu=MmRU<=!KgZz!0brVY_J6n6X1O8KDPXKbja8D6+*0^c}$#A)4rdDMneGK`Y-tvb~M==m1%3#mH#)p*k3gZDSwT7)()cJy_8IcUx zYZP0__!5t7k!dWs%2P3ndA(WlJxK9KXFu}mU^Gi8$(r2>fLiBzutZN+h2+=`lzqm~ z-y6B?%!3T_>+TV%5rFoFCUY{l>p!uEp?uX zKrVWVCod?h#&7sH%sE^S9#&3lv}*O^HJ%;IC%Mr1m?%UQff;NvM@J3fSKE2xCXFw= z!R6=pK{IrIjXe3N4IN5d%@O3qX5b@;RSUck^Jm_|c7V-oo8T#PSh=?cCB70ZjeHq~l26I`mCSo_bsa%rGg37&k zR18Uta{`R<{!i$MANhyMVU$-E^#cV!!$5iX1^E!gLo!H9U%<8Y&!GR4`2;foXF{RW zWD$U!U0UaP*QMCk}8FXD3i#0v`h`{HBE{2HB?a#{Pxefgeq=Tky7#%M#-=9mFn z9*D^vTsI`RsIkPHTFfR%Q;kg-z_rQqZIup0lF|9Kii+b~A;+F}v+=PP>=UTHt745Y zAAn6^V_fyv@ejNz4!EZ}fGu4W9gC9n&UN>9-2xnnV6*)rc|!%ibOb_Jpe8>ZeraDZ zd6VJ4b+7G%86}5s8Q*_ZYtq((+xLL_BZaQHzEfjJN82jX1UxqLmLGfA#@giQ;=ujb z?xWSAKo!U}c1Rw`(33sy8gtnUp3)w13Hd84=cl*1pNsZyZC2>bUWJ9)=p08SDj_?S ztO-S=(P&wnJOWK$4RNKF@wmf(Dpdp(v-$7MQj50_CKp&|#V?c^aY^7$>J>?ejGEzy z(`#p#4QwnLJ88@U{nEY{l;(?|lY-go!%3!y{^e6p%|Jo~U7RGvqYo#Ls*OoTt4m9? z-|UbmlK7xJunvw|@s8lZ5AxqSTGLjoRXJrE35t<8^@FgL|4^v1Z_JBQ{e>}gu*8f7 zvMXuPu|vXmPGQyX4P8S^;66Qf<0p|-lXw+BYF1S}kD{;)Dxl9b3;~5~HZKCszD)#F z7YQs}q6>s@b`GR5F1Tpy*JeR2BPafAw&s4^A9LG=Ow45OZY-B+pI~`zI$->6wTfb{ zTVzIm+Rlw`)Tu4|46*P#?@ZC#8i{Q|()8Q^toFmOh~fHT>4SXQFdEQVbyrkc5Vs>< z{>rPnvjT&jo?1cek7#nniv@8HC_C4lg|nHl&-y6v&q-)YlE$#_(BFOPTFQNV%Lk}j zz5fsVYJFqr1GXc)EwS0krk@8{jSw=AHHZ2FS3*Ocu#0K#)3y@NoNa!1;Vs$g%q`EX zm5L1(hDNw{NF+uK+6+XN81ypvOtYsHf{PPzG{N@XBkWhtdO(U`=wI`7%_ zKteJeOJ!235wG!$K{cQo?z>gshi7I7eR` zC$+6uZM7uczL%)pU_H~L!yGm=r0U@I1kQ=F#}9EOCOE2k?2jwjNHlJ0=sDEKu-d(4 z7En@jTQ6@ucobUcR=-DFdsAE6Z*iCNpyP>xEq_1$iDek3nMqcT0HBp*Z54$NO-+Xw z@E{-1=OOz~B=NPYALcw~?6JbjXqsFZr4AA+w&)aDYR)P0?J4YfP*HqmZde}u9i~{c zs3Xhw!?tY31nLbf=baj86unZo;1&sud9>a}dv~PM_u!v4JW#I%9Nj#y=68&Q;P}z; zY7uU?3myR5f|Bil;K#Hkz^Q#e0BDe4?&j)EJsuG{N!?AdTK627e^gtri*N69p*>bj zE2&cTWn0XzWTkG`$6|!(V47x(J2s8XcHtO>rC)32P2!EUVm`mFQ(0!x0X2^BInqy% zpAdXXcIVS2DT@?XjxVh}IpNH2A`}DtB~ol=waW?#%(G-hfeRX_77rl}!gKBt+qhqo zm`e_IljSiFGhu-WU3Pyk6&!aR|6G=d>G-T3#_bFG!SSE@h(iWL)l00X$1KW^A3ElN zAr{QH74im^10XBgCsQFn{Lk9oynK%&@QO*%m+#oSCPsE@#UpsPv6@W(TXr1sv2YJ( zcluCj0OCVy0BLP{FkM4{1CKk}+w^x6l4yuFSfo(0gB6Zo&}s_AB6;$HCCcw;3VGQE zvG4r!V<(alKUFPPssK5ZuR{h{pMLv?=Cy<|=!rgm)6FG+^t@TmanDyXS*e5qt0Q`s z#Zvd?O;qP4^iOpof{q2K$A5|z@}CHr0`F6a5GwHA4%F~w#9DOE_n6hn?G8~FJcQrBLEV1ECXiO z-no3eqSD-$hp)AMM~!J!7V$+Ox>g6;?k+^Q|FZ9Dw|5=+ot`~MUi5ST35}oM296}- zy{px0@R#kWxjCj)XrJMb`b3${N$t2PRgQ4BjT6?4E~OLv+F%+S9c%*Re59XQ=*cQ4 zJncH$NRE84+pVMK`nnE;$4?g@KrDg0mj~;f`0FTyTK?hBslQ{@g)wlB=>&bYFXD`e z?;y!uP$-$41l}-U8vu@!oTi3?`(6>1B(ef%LheE)NZ^o+Eb<}wnH3T`gLk6kP%P(D;AF@Ua~NsVrfIKdPlBm| z*=lgA1=lE+n!Av{%;&p9V6!bWIwA6oyazAij>O8mRN7B#K{z}A#{m4e>Jl2hd60+- zZr3-FCtU8-e8vzSbVp~S5WwSLI3joCzc4f1#jdydsvk(pLRBv(S;eOSQ$Qt!iRB0B_U*)UO*&e47zoNcDp;w*-T@x!U^d zmAk?SGI4!a;ut`j2@8Rm1fMnw=e0lb4zgxD3Wt9YPI(->eA;G7&3%y-=@ipXI5>+J zs%<%Jj=lLv+Ong6hWGp8tQ`#UfLP1#vwxje#zxMlE$aRF(zZ^xA)Dt&Zkc$+DzT-b z%v4rU+9L(j;EVQ)>*?L>`sV~^qAwz~b#kwCGQLmb4;>L+Ve}cNBE=V}*UZ`F1sbjH zR`udRdZA%5v5&ua=_5pByt9ju%HP4rj^V5et}7H&ISGRlK_8zPb9!EBv?Z!D1kWR{ z?Lur;DqtRe6w4Lppq6sIJ~(xDB-hpaO7o(Fef?y!RE}04@oMxg2=CPq6%Yz5NHgW& z{zMcSfhC);P1!mRw=;5OL?N*l9|7-GRWfYJBS5H8{?0bl9>7hIBFU-Mu(?mti?Goq z^7qGh;z@7#g0(iV_$}=I-5KIHs=1o{;5AAM*Hs0HY{+?vOH?1|MAus^*Za=KI~MQB z@cG9vOk61}XdzgE6FXD9Rc?B|E5i#kbo;eO=DI|nE|MH7`$Bf?tsH*qcX|xTzvo=V ziYo_mK!1;{O6Z_;>0r}49qCdj(4~z}+l~{{BhPaeNFDL6||ecy>z1baWKTF|m}NX`a6tm<0-lH9B<1rWFQH2&zM?W>=C zVSdNRdP&w}EQNFV+V+YG#ZYzlqOl-f;f8o!D;GozX*Mz$%R)WZL#-slG@ez!i&H3L z(zlZ@90)andE#R)Ayd?p8WZ-V1IL?>r5PGETr?Eu_>T=U^%vuxRS;6Or12q^=Sk^` zPv?-MJ$8Ha8rUVNV`!(P6Tdr1g`1q;5i<)TnylX-Q1fSq5Ash~Ho!E%>7VktbC-e^ zKnAQ*Y2>+e!Oj36<1Tvat)-A~=v>NA=>M8pd=M10tCyfs;(`v?S~Fn$Zx~A5`7QD> z+Hv~lGV#OjhGDVH7MH25_U^hK{IyH^IYGjfBQJ5rOaI=;A!ov-~Wx-CDcLzYGbLmLj zwxDd~j=?giv1^=!2Q!kI`SL+n1zpqX$}%D z%}=xvk7dL?T(8+E(uG{}H86CRy5Ty`g%ZPvFktsm81eMLa!KN#RcScTN07M_VU$%! zSnl_9(y{#z^R&mI?n^UtS_OOWRnANI?f?Y0qMVR@%XYs?^VZXg;6bCf$O||OexjvM z!>!rS`@Z8D;CtpYrygc`7(wv(Tg00Y%cP(cSjj)L9mlP1Ap=;3V}Eaap?XkKi*Xn# zvq|V`kK37&VhFI92=O#!cQLcw3i z3bbq*@$sH5z)+s0I>F^>&y7rdF=Bs(ialm!8;=Rq&9iF4OwNt=WDUMO8PL@((<-2Y$8>H50G<4mW^{=O+;qg(w%aM`hHQA z<)I!J=w>d>e*EE1;%{?NjljUh1PU-X#7uUMfFJnCBwszUlOJ5GRh{-*F)OtYDSbiw zk*HyTjaN(-Pvza?m4vnPHg%AbPKxUq?#zGvnHw;$OT!rA=!CIPope35-?XJ-P1!>q za6Ig;t6AW-YT)lGL#s(>$+%TPOKCy4d}COlf?JDS)9Tn9+Flf78mu}J|MJQ^$UlAR zhv-r2Z=gPgle=P066jHraCI8B#}=`uI=?7!6sK2%-^Fj`$42bnuTi@$oh#EO6|MtS z6WnmjGSq%li()KQgL)x8Tg4a!AGkzwin_aT8bxcDT}LY9Uxr)J?UtL(VW2#>E1J) zP{e4Ve-+9{Z`|a9HT>dw_aOMZiepg9u_QbcQ%h_=FDE2M^+0v)J93F>bxL2PeW zQZ2wEDy3t~;Bce_QAMHGg)Bmp)EJ$t=CQU7YS+K9nQVQ=f?4U3%h-o*ZMw9YX*@6$ zMsWyaUum^nDvY^`7riVVh-K6q@eE+tR~NHv2Fl$V0;Sc72aQfUq`Kz!fTT2c!_m!p zGL%5Le*%IKYZe%&dz(B|3vOH6g0=Nf*iQ_Jr+Y6L9@7BN#?A1}wfH#(eEZq>A$77t zMvPUMEi@L1lFY6;>j1>Va1v=&JY72QGmn$ItUyt#AD?V-lO*y$9*6Q;oD*xnH@czC zX*8c1rxrA3(jwHN^lunZdRX#3SMT?fytp_01u_yn}VD-*yt|CT`Y6~J%CfZ^j}V(mgG=7&lS z;2raMz!&p{OYNS`^qgG`i2G25qG1{2wgpYLhsC3xR{a}vJ-5s=X66MRUSn9;VwcgV zKLlTTckc2dCt8!~DTPb-k8VH`e%nVPP4a66eSgF^dPHfQKsD9byobDL2#wj?;ZKB> z(WQ39v?VaFioQ;!>cLU*8#R%}&OahfAKS`+N<*|r4ScJfsm)T|Jo7^Nv!WkIHrrMl zw(dI~<)4*1dVW7J9>#r7{zoGt;3LH8t9})l1OwQz!=DRnDxn}kh#qHcC8VcY%oPOJvu&EJFGsjZ+MaizM(uw#h zMjof3z5N!(ZtASVWVWP++1c|eKzDJ9q56Wkh%UGj1_2`ePt9;tVwt$3W5$IRRRncE}6q&F`{MRnun$(8IH@kpzXl)wAH}lvR5tV&~o-5*&(#* z3jMbvv=r1H{l|{QIXNc^HNzhkQCeswVNJ$eV^1IEC;akPwAjl>GUC#k?+M)(%GKLqLiT>ZIWlo8*ZZ2-WNrR_lFGhERA2f+uZBEm5qr zrd`PDXob)IqKA)IVO%PX4g(A3F0R5sY`0wN#}zgD`}|eJfJXic#r_f*jFiAledp>CDWG@vY_lhZi*Zb?_B1 z?hiVqAj7|Vxp{Y~jUJk?udqjki6eZK@8ZdL+Kk)hQ{!UWboYS360P}t`GEz9lb4Iavb2*bob)6^U1FMZ-VgG)mrYeNWlSvf8_-XR2Oyc8_6rWLCN>I~^(_o{pK`P$S51KRGvAHM~z&gg{>$mv@pT zv^MFSUTuv>AWcZ^4`Z+!88cXLYym#HKiC<@o^Y5^jo}Cha4tW@0Bz<|Qn=Fh|86st zTzp)vgW*ag{iEv*fZiKy>x3#l;6 zM@_5CBqp=T`xB!eZ1r+uZqfVKH3p_L(FQtmz`=XBESW?r70je}LkWjLm)!v*>MMkBJl(#Z|o__Wghmm@$zZ z7>5o<--BN%wGgTD+~3x9ADnSQzpIjyn?6hkp>$)`!{rX2dHfkzDXsalsQE9Bg{9a)CKbXk1zg zAHX!%K9~^u_;uA>5a|nZ`zbwd`C8?=?9OsQ&%5!U5HlshiH0bINY<2&-$yV*74@C~ zj_rtW;+4sv7>Vi!zIt|ifnQFy62=OY5a=8H()rJn^%L(vfH|hKyXfsu%bTJ&-#8Hi zcFl7H5MPUf6WS8&!}IP{RgI$S0M5RcI$wYZ|DOeGECJ~sTCpmG=x79@yj0U$}BVhKL6eef>cQTKKseur*K?MsC-z95sJ zyM>R3%gLHfV(zmNGzvgZOiE1GDeT7K*??OvS}fls-!d#9qp;u>tbAH*C3r)-bO_weVz z-&bPB6DtF;Cwe;WGNwH0--HzmAv8s+#o$b!I|+CzPyoPrD#wbu4mZb6=qgY&9cIq+ z!H)pKf=^vJ+;EnyMW5rOy~ zHa-1HA5#8sw|ktroEEgS|3yU{pn;dR;}vfx24eP4G);0$&I$NbOv{tA?#kOTGPFxt z=RtA1*X%J!D7(R6NHiUOZz#8)3ImTH*+U-U?GgNIht+A#OmU5JvSd{w@{~wJEm4x< zHVPyx_viX`a3J3wTj_*F0ZF+2Lb?i1N%{{GuEe;;B^sh@fX?LOCjirbSJ8?rc_AYmOuaB>2f4)Gz$N=j?cAyVSVlrWBjl z+jaC}>qF(@No9@Z>daV#E`#t>(aXM0^sZGLRRR&m`<7Vo1JQmRvBMhU2j~FsPGS_MDcH@%&wfOkd5=8;!K~Z)5O>vkwr*T zen(T7MK(^GR?DBuUB+OLcD)5oJwrMHbJIcrdGhQ0nHY^K?BHxB3Q;iEyGnne^5naDr&8lWIPy7D)FIq$2f2CmEHL_tWoGR1cLs< zrC}`P%|nXG->4_}kM-bZGEWpG|I{h2RJT>Z7@uu8d+oZ;ha zY!&!}hiRkmrR2ZUJ-=m@wE|ZMiBM`YQuNM++%a>#f{-%1s)Q+E@?o$ZkB2m->gPQI zZo5nx4%H@7?%w||vRQWt;JFU5hjNfG55Wqy+QfqXopC>*{8}!E{+`ltgF5)C*{t(p zGZ1kv*qQDeqBZ?c2t>1<*lzBzC}E5KM{-G^l|6)*Uv;nz zhIj0fjns$@Ki2xF7jW1qB&4(s;l`5wshm+V%y!$VJoE=@Qlp6FT(%>SG`whU0Zsf2dEsHlnFtGqJv>uW z1&V#ir2Zam90rExYKssgryA&p5O5v3|9QScxt%)VxUkb%<}C|pRYge=w1kSP>A4lK z%toH&pqIT$RbNT)y`oh>_ zp!OoxD*dRb-$!Eh8lw7$@>0kI0*-Ume7XgfE^Szf>8HZjr@4gZgU2vbsFUT_Z#FWP zR)zA>&CMs)XP{VKcJ^~#LuK&D&n{u7{09|8kP;&UGohc}VzoZkZUdf-rSp@@;NLYW zF#JZoC2C0s1WTC zl*Y_O1CETlnIwrME093$e6Onn2@b22gYaG;k{eL_dKAh=NA8>DmLNGH%L%FYPk|Oi zLmHH$STzXm()W!kf(@>V`&3q)>&fhsRZP>F!Dpr99+A=0KntSLZXrHe7%oD;Oy7eR z%K)h}uO4(t{0=g_A0`s~FS?}_d=2v*(wK>_k}E-(jWzcb>A9lgprD8p1Dd=QraRDU zY8nn%Ay0o!g1F2Z5Zlb8M3%R5=KD7Z89>k8tj_%a7p}e6jzF<7E;B_Q9sF%ye+TZo zC*6v_l0SE<DPc3M`-9FRq0XqH`iqB&>XgsIwJ2e z8c639v-(OR)C-(eVbbBwni4rvTZ3>iH3jQZk5#g0;ZRQY0mvGy z?4w+kOE{`TEp(!7=c0B&SlXSGuIzO=oTInC;ae={NGQ$3?h$TP@@@irj&e4;5j~(>9|*6VA~JRI1#rMblS&%{ME1{>r4_UV9X&oagf6;=tDvDmFhF{` z>a^d|zG2vGVx>zjsVVHqqm*1axs|d{8nKxcS8QKkT}UJ4lbH+c2;W3pMu=$gUH|W1 zb$rLTP45O$0F^4^1y!*-j=z#?uHlG1@N^!&gG5@pJ&Z)uoGp&=H<^C{{Y>+45`Cvx z0l#v;4mLPATw^cfGy~pMzME7u3jmINtZ+h~Tx9NE=qwp7cMj!9FaA?ebT%y|4&V?^ zxQFB{ewip@TFKWOi{57J}kfRs2b?=pL)sIAZ`5I~hF83TB|b9fX)7oEykoscjs zhc?_nK5)W0UDFSd=!js_jotgYK)^sJ5va)@}2d>jKeZno%E?xs#I z%@(gZJc?#G&sfl{I^U-~%ZmZci9-l!8;_J0CQP!P*(5Xg%h6pxKs3Y91~07 zl{B6M7N7hTSHl<1P-5vNtlF)e#!kQ~cn0l3Wl_c_039{q`>aFETq~?gM8j4YnWGAt zrQk?^tGAK&)W@&qc^dlXTn&3JgS3Xa^)4PYvUqKbVK-S7);v%3ElVwkhPY2RUE?!S z)rXO(>PseaP|{U1kUCbij~qH&Fw)$FWb+aRCGl%fb|rh(3H`HRRjkvzR!LI0@KwDdnog)pTrsRI4rqOOed33Rg|3{ z9V#BRv@T<>WTOHyyWuU(ck(x=l&;lz@L{md8~3R?aL6l^vJD`p-w6i*zE|UbYY{xz zK+r&TzmvTnA=vje)ZkVe#%+W3D{eQwSAadQRF?+8D=+@%WjD;mQ_DB@+*Mr?PfKAE z*gPW00``GjuJ9(?{%6$7t0}GMFC+aq>TQdV&{%1{;ngGjWg;Yy!Hzpm(g_wqpH(I4h0pqmmPko*aXCHh zt;~44Ej9`oZx6ayp0x*28docy1y4`ZfbbX4gXs${TsOY3Zm!OfbC){Ta@xgRkcE?| zinOpxIB`QMPVH$#!@~Ex4P(xnAmli!1J!G++;7$CWB4q=C3Ia)8s0j1hcHsGoOQmo z{3xDze@+ZD!m1!e+J{Grfk38kAxF}yUj|={YLj}r{Nb6H!XwLJH1d+N6e7^XCLl?(-wAP*?i4gxAWv3J>WZEdhWRHkjqt!qFjFm&oh8IeGz$ zK5j5|0&}{648m$t_}G3*GaB&0F^GvjLJ$_1*rv8&-#!%kjVh00XJo*xL7S!4Y>y;k zqkjR9zLyJOdHp85bwr!eiZ&^{w*4fbLRUk0xTG5ncTxi8Z^pG2>29E0`1>h$@drx7 zJ{Khgq`qV=EX~kOta7;Af`$*8%e7r&w6a(~KJTkvU4&z394C@hflh~Xo3G?yiP7wB zs!l;&^9^&Um}3;~gQiPA-*GIED&0#`MKlV^KI(kB_WmBjB&H7I0ae;gvbdbY5LGWG zgRsUUs}1H7Xixcuk`0yZbZnGaTW3NH7}!2#Q_q?vIcY|LklWQ2PrR`j9L{_o&8+BM zatKykP-f1non}02$oy8sQ$X8b2JKYrMi$(*lFbrwiOiLzD#fH;`tmpvOO3FMWe+Ng=5g7*vo4;8-Mf@-=|Nf?8Qnxa|Q zON7E3g<#Vi&ad?q*sK=S9hGy3;t}+QuEZW8pgD!h&A(@UqhEEp76(Z>Qay3b@*SNn zaLyqIEc_zlFF%u-Qh*`KJf9GkgJcZfE% zT_2;({$Fo{MlnVp<__;~+19MFTzCBLHYy-2HGme!#T|MBmAwUHXYqQ2^9@#%YBk8- zEC`J4tq08<(q2?OKmC4I9;d`CY2KG=PL~!16plL%*n~|2%PW%kqo^ zW2PHQsNFgw_rx);+_3hZ2$BEDr3IKE?70r24AVhth*oKo2gT(tDoy(i_)xf>jiT4D zL{o!SuyfA@Bb}>vnc)4IU5np~cp(lIIKAM)o!0|y0tvT<*FmK950F*Fp->*pSmQ2 z^1yZmzks|HbdUm-rJ33GB>gVW4MxA_1}A!3w`WdUq}fJ2Cm@zZ8|2lJ6>*{$h>f-{JPqN0UMnF>?p`a@zV- zzZ_LoKj^vLHviM^=w9O0X6B*7HYS^4mD8b>@v-6;L}MKvE$SdY$8+erQ4ZR7U-*6a zXPQ3%|1xm$Z0Ahx9OVV$CSAh`f&C*I0-+k>qK=u|$s zSRk&T(PHJk{yEaxbXQy(#eb0#Gpx4Gg7?vpH)W@dMpfa8p(aR#_9+vdolZ47iOPoY!huK$E!6~our6>lQod76$h0K=xcic`;P0%dy z_I;*I+!}4bTNxf06H(0ZzX~Gb-0v?0q35hIyd^qLQy?#*9V_41!mS-{SIx*J+>DO2 z)ost>Rk+#9{h&v)+K$mZd+@QhWq{AZC8bG_z?gUvgsRKoXiHJm9P3flK3+-N`$FZz z4g+XnFg+WVgPL=(X+(i12ZSaY-C1=TOubM4*B{@7M*-#3T3GQmMy{GM;WGIztPXBC z9IKF0FTh%Nu=5X@3BA&S(&D@Uy~^6y>@Rq#B;+T^jhZ_?`rMbUW!Ak0Qn5yx{z+s} zqb)FZu|hnRPf@Aas~XF4v1M8=1gVB>CTr7DVRkem!A|WBdd)WouBVFzR0-EhNO12a zGq9pIwXodO-it3IiptV{i+TC~ET2kw1g9mhP@pf(gX|I%LLf$kyTui{3ABDvDh_?f z0e%hnA=_@1APyC|6KNqgstI6c^9P!dF3AyO#Jrn!=oqjsbdAKzE82?aFm)&hl6aNgS|=(qUK9_fURgtFraUea_nh^=~M6 z_Rs;DE5n+VXT&5s2MB?{Yp$xuzV5+rMz1ChA|~S<+SQSTeSk9Z7X3T}uPAVGs4r@* z-$y)3+|;~qIt!kYl0pe8GxG|WpZk@BNYALa?c#)a2LMRkQWD@i8W%H28dV9iYPSEi zK0bPz%tA}ek3}zS?T{lB&U`BTM|rheNyrFfD8TxmhX+B($Kz%0EBqjl5GX>SQlR`th~8t%=i!7Xi{V*tbLCYY zUGR$WH#WLe3~4W}3xg?=yGcG3yG#dDLcgDJyAnM^0szZN=J0VWlKl|W00z#~crpdN zvmtbX)y}G?Po7r{y^S!CeypSl;aRhze($|RKkEeE`zPJtg92VqGC;o}H;;2ZNI>uI ziIY1{x$oW9V;DSN)Tllti{QSBDUiCRiLijthrm0~?&RiKr-4X~$ z_G-&~u8>uD7%X+)nCsAIwk21W?kDT-COQy!CSV^lVAT+u)Grb^T2}E8c{6F3=YD(6 z$Lk1z3UpxL&hsHK{>q{&d>J!11m6fT+B(u*zvBXi=#tf-0EVWmVpBE@)WgcXT-omJ zF@EIX=R`STqQ2wTBuH1UVRVEnKAp+*L*G8+reSi(KRBbmZ!HxM#4EnYY#xA@J3PBq zwy*E&Yt>7mwoH5s5cG$tT%VqCkV|ISD z-R1mL3KQ=75tLC@hC`Mg4qNrR(O#emM2m`#`=dj03ml89@Dq7xNnEFS6Z2FveSYPm zB{jO{^)ujI=5TEL`QSub^DO{F(lnv#ObmILzHI2txrgQ2mkFoAQW`}SzL)fx3g64K z+M*Omz&HH4x z^AA_R#-bi&(!3!GF^d-m<)!8xQsz3YKCsk%4w~ZHTnoE|t5hiDd$r4_Y*m&DN83}$ zszdJK@28`P|2aY})09?Ea60Q>bZl^MbJxu;1q=Ptyo9h)ynEW%5oQU4>(`W^J*=%b z14io@$3EkukF+Q*@#9wS=U%wRSwc1`Eo&lv?7wxJ8ach}&!0U$>bKWd<#J zs7Ub?yC-QEGyQ!IM+Mx=8XXqxgLc6quxw7p>*P+zgo`-;2mo;lHZZPKX@+tHVu2AV zWiGefux}D@Y*LU%w<$z)uh^=%0W%lX<%HMNzXJ}&&SWb^x@JyYi>#$0I zP6lvcQw^|S(NVl^Pn*nl2iaoW-H_5xFo(MY1V0<^n2<6&5U}b@Nx|^gZtrJ=;)uq3gN8_urG} zp^P{ObL+ycQ;P++{p# zz+Mh}(M7a`x}Ce z_qqxMq;s)K`w9)m=^nO=Fg=Y z3wxKS>r$rLO~(OW#zJ!mT6|vhOH&xeI4t5`l1>PQXTYRaV--IU8CX~E!MUXa22Quj zvpu{Y#vlVzZmuK_Yd9}WUbW70T4`gYd{}&3nwwCC1(+1PlL=oCw9h8Wf7Dmu2dgW2 z-3DwvZfufO;guI}7m>sxbe3NQnX$FhKvL(P%l*W#sE7d#d4ENhuUNr`AG_R5HdAp32k87y3)$^Q%c^*O15rr<1LB{^uu?NZVtn#8%w6 zUi$kwb0rPPGl*?&3M;HAY?gf0gOJUc?^D;Sd?FAEhS^e%Y&Qo&eH%j^+ykxKCx#5T#9+n1)2!Zc{ro;_uH zmmHzEa=_O^rTga^>80q#^IZM^=ROkeQF*fRU8&{tO_e;jka4V7Yq*iWKt(?UY#y9e zE97W-Zt{CYm+o-qENuzhX;mR#T<@U2l}=|v2IHG)z_U-58M9+ zA-VN*Z!n}oUK2>1$zjdhJY;aW?|O=#Wi|VlY|Znd$TqSAO2(k5?jlCXg6}Q z9!LJbltcuVEx}ekOTRdxv9k!^2O&9hdc&17%UwK5^aBPvwTenT z6jv##+uDX?p1!KW*pPy)`)o`F-3tsy^epp4NZt#O7vd&Sz+r{rGI3pSRpW&lMvoGy z01e4F*tlBILR3UD&O{s}Gabppt%;-qWLrZy%__I8sDjX%fN}$w3mLX%M8Ks#sF5LU zuCQY=N9r2uExd0!l2?Ap^V(~aZ*I1fbS{h!FP2)%mJxk6r21btW?Gr;s7_*XC#m(q z81aPcUxMS{CGYaOnMU-_+3yMfhe+E-)~c2-ATLj*`dmsh^(z z7+@=u+yXr$t5p&6p)J`#kKs6o>@wTr58SZL> zZ`_(F8d|<&S0m|Nz(nlpR@TvzrE;o2!~Eg)HMbB|B>nBto11nO!Rmg|O&nnt(kDZ} zuon4ZDUWOBG)u!8W@DjL7OthuH&I}wrd({fn{15aNR+0FLFeA>Aw}5c71&Wbh)NkveFWd~b}9hH_;B5)xoSPqDjV*^IPgB7Lib zJCvG9b7oly$7Ijvv-yGcod026Q-~_;k0><>Z(Qn~OK!{ZPH;+ z2oZh`U#02NYl5PQq)n1f;}$0t56lF0@xD2;KL zeKpk%c^7)VC)XEr9oCwC(cV_K6E4!oj=~YU#m;b=E`*&$Nd&Y*t+_nzHH#0FJe%U4 zHCB0psdM5j47EF8cWDC6OI=OJY6TjN@VR_`S+8*a?Nvxf z7j6fqsR*m_Y*tOnoBe7l#Rz_d`m?8TlMu&eRA<2(g?@Onr$ezT=CA#A`4R!eu3l zKf?drN*9#$`jxA|ik`6jX~p>S!xGoJ_W8rTGtlEf{C+>7i=9J#Sv22#B;gmgiVJEJ zV)NY&{AKh&1KQ8tvnX>(s+$wmbS`W_fGT;P>St;GFyyNu^=}fO0|ggcm1mTEE>lAf zZv8SQpI}7La*2&2JLeeQHfSkJTmsxDvk^GD3`~j@psrte$xFtYVFdW?iCNkU z=AGu2*h0J+=G&eqP-=FoGq7{Kf#$npm+A9W1V14Gm6$Tdx88-tEb92|t#wT*8jg_8 z6rXC`Nl~YwZOr=k!@}6UyI9_H$JQq_UAG=cO3pVcsBlXhxuE9B{L{Jjeo^6d_0pIg8sZ!WVu5hh(xyTuv+TQOU*>-qBmD$^s?4jJjjzy6ntp zIc3Lfr;vp|P%3AGjb?h~=K!g#y7o~E=wWMrJ$!0e+WU{t;{qyBnJ)@t%$q4%s4BxS zPS_OC$r^7h)RHa}RWWV^Wd@er)0!i2Pj!|bQ)iBA7Zf8fSa!+S^UXtp0eFiK-$rb; z{ZCzP;5%bz2nR}Jh6+hT8u#d2>ZQ^*Cb%JQVn#M~VQA-R0CMy9@4B2mV0JaWfEKMJ zmn!0{_S^G!=As0Fu$ME`o3AJ53B|fstKpR6z5dk7UY6CVMb694xc&);$S-K~Q2@2_ z|3{cs$q)#x1mhA{1Jby=V^hUUpRGSA1D4$N^u27Do_sdf;QthJ5H3;0u8360P~tj+ z#4W=)I*E$B$h?z!<+DqfG#r>W9`0I0CyiX^9zrx<(6{I}h+&B=!v(lOuH-gK?^-$^ zVTS%qVV8Vp0>n2vq9V%(pc}=w?)SLO;^xqqwD9IfVfx{+TqbQNJ8ZRo=tvcCT56{h zL#Euex=jAaBy2tInGV(io|IwRh8wd!fN3G)Tnk`|h}KXS{#QLq@jXzQ2$vpO$=5Ft zTmV+=8bq?no_CWX&Y7q4oL<;`p+77YJt09BYRHDF?!g$dQr&2N9w0xSJ{9)!QH|D(EEz zNHT7Y&KcU+q?w_^?U9Gm6)d{`GSM#h;-<;=w(&qgsrW@RB3*u7@?yh=Y7L9aPikBW z473WUIKca!N-B6CX6b< z`@@ci_7JKxjk-pc>kUiqmx!ul_P5H*x6CFI*Dd3u7#Sn5&-K+6398u{yw`9nzB?x; z1D|i{4>ycaJ&y0Zc*dQDlZMEImA~j$;Sy!v^bMqxltjbwqSljYVNl{J9ZU{Jh;o5g zkmI$6QT1)4a3dx|B8eh=adz0laR4WWmfX`GKH*l7Dah0&_UVBAZ(=9@ruc}q#RS-{ zFE&tYPO%kvMqr2BPetp~ICc$x5wK)?27vq$@=NX}UTn*2GO zGZx%NwG%0~X=@Do7sD;JzP)fFk=1!DnwDS35nut$#+&j` zUQEbMoz3Z-a9OXB#%EL?g)HwiJpxec+QHqXP^fJ|wg*5c*_a#qLD^P+p}~#1RCc}8 z5bE>hLdM};te-#^p%kkfC4Pr1F^|Kb+H5A1Kot0KYpaIw`w*p|Aal;rpk79lj5}#t z5Sqx%9iB<;rYp(PJe5m+Dv~!ulu4KbG|TA9J_)76_xBKUjzX6JRUfCzcl*KBQN|Pc z)TSe{#eO?h1I?gUFV6+KFY)y~J=yqB&7EsG;0M6Y$f@h(BL0XT(;CYQS#(rl}? z?E7z085UmI$#_uUGr6KhFO%Epv&Ne4Pu`L;s_-yWK`+tdK!rE^ee=GQS4er>z4Lw;1u0$=p}z#)*SP}PjOn90Xl zxA8Z3bK&>dXbqeKC;G3l5me6lVwBoHlCbCUt(3Q3Re?+3T@G0f24K8_Q>de@c*4So z*{S%(ww&UM_+2G(Jg1JC3bzQiD0Bwv&M(7m2<4T36(qbbu#BsuyJbp>leJQ zm>z6)4U`zMrrV=z`PW!6P*{nfe3o$Ll?J{FQ6;HxHbq#J<*M)S9@7!M6?hd1M$uuyB>FkTZ^NrT|TQO}X; z9%b}vpWQ!T<#ivDW!4_tizrZ%f&0L2x_AJw+$b<47Rw73AZQVh0I6w-fszBIIif2> z^jmqK7z8-f5e4K2R`K)dUSeMd3(w z!A+NKIEb+y*A4HFOR@PC;Y>d$oWf?_9Po}xv_v1lf46q^ColNcwrRNC0L;~IgV!Xo zgfMS}8yNxP@r%xGl}&10o-%U{lEk9%gr1SD&;0VUG|q)6O&Ici&OxnItguVTsCv?Y z@mba?z;ME_@I7H&uU1nvWeJE1W#fcUE|oipR6y0Ss2p8F&SQB3?{U$pq40$Du4e@< zQP6la*lWJs;t9=EWm=OSj#PZxQk5%@!2P{!vud9YXgeC68DktmafX^`mh7X_Zq^}u zR4|#T(*{Kw-N2j`qEnM0OKf7cl}Czr97<yriW6>^+IFekdY{?xJTVQ zU+i~g)Sx~kY86b-%3tgyqvPlu=936e z1*%`qQ8inXMMxWqa|D|XT)0p0E2ENOTc5?euC+$g)F@~93*wiv6#}m7=LHUM>?|PK zz3!2j7^QSelmSuPF_QDBV3&Te|5YWk&I#*WpOg*8Jb@E7{FIel+-3H;99^6%AfLy& zJ9Ly$pcw#mC?zj&MhGbXR@0k9xreO55XkKWu^nwf!=Mb`j4{PwOCAr7J|+7)5oIkX zCchle#k+E`-ETXdSW}5_5fa8HYs1h2Ex`ewPv5Bs2wZNir+6uPe-Go72;%s3m_>M0 z6ui@#)rQWuN@iaS^tug_PGHLS(Gl4dbV z0t`v0Ba}PrmaR9_MUF|8X1CdkqXo7Fd1W(4oUnY*%ZO|=WG})2Z27hM_ButlRpD1t zK~q0_?;4%n<2yumAnMf5h}k&^9vL;1rl0Fx4Piz7e8Zc_mJ8~MAOnv(6c_bd{SpEr(+iSj@S zb&_`-UkRTLrO~V;yi`0@q~rCkHc)lWW+Va)g*K86&%Aq%xd)t-OfA1p*>6Hf!m%Mv zSe@JdaXtVFcScf_{<#VeWcL*0jwj4U-l2p*8IAI z@?)x-+9m^;3IUW#10$nu5)ha1(2o$7h6`QOgwVD-8N@^5mH9YmR#yRadwF`us6?MC zT0jZrmGww{RpeY}`OzmaBrEPut`F^5mW@UZwNy)!aCY6-b)qVr0v!mH#Yb1=bc=-S zRos`^B&aDg1CZR^a25t=yIz?#jj0_#^^wp8#$mtBfcLALuOn~>6V6!!Z^z7iF7QGB z+(trStIZKB&*>Ij^5{$oQnNKT%XvPaE1~Wb@DdaV{=ENP8RuAEMeH#>Qp!_;M*T+xd}5fVhVn&? z4st2ECaJ{7YDi$q%qL^Z1|fm;!~CoL8`0pJnZ+)sJGv)>n&m5CMUl?RF!iZxh7!`1sTAHRIhQ}d0U)MRI~&m)gNiR=L)P&T~FaE9T{>+z_n zwW~R5Xu2}gQKke&P&|-pQC)j_Ee&@0B`nt64!ip^i*S5~nqS+!byc0k?7wMR+v5gv z;+uLX^dujPHPcRwpas)%{v<#%eMfZi$86CQ8~=SEa^te_#_!Ak_6nf~ekeO6m2k`E zrI&;;^!bf3;3(5aK)H0{!RC%CZB~KN{}esnlVD}Iv`IAr2>ErxnvK*ot7djcH&N!$ zgYMC&D4;4V*E$7>eV*|$4*S79-NFXOLCy0k691Nk*VH>Wfq0Vnw(2gIG+OpFiXa!Y zXw%F`FY(-IwczU5{=6$Ov38%`^Z) z0;rHQ9wt&be2dOxif0*e(jTzeLRFa5Ix-0GH-^|G0xZdY>X{vZJy(n}N`vGv+AU6* z9VGz;YvGj~U$zl*&nk$?y2^)Z7nanJ6Y@XW?4k%PcR1~rHvuCS+iBT9t?7kV@#s9V zs0F!P*Oj&(hlqy7^||K028r}sS4_Dzl5 zg3aIqxbKCkDeNsVM_?`S6ZvX#bj2XTEEFDDG4Vg|CM_Y`&U(eJw8j+b7uDrj(lHW`yH zI|9Ie4*AQ)#ZfZtLD1wt|Cq7a->h6*=LwK;@V1UePg+dR@AUBMAmp&6)&o!&OEU=H z$qe2RH@;|0m3~q=a;nEp5EW7?spmYYP2f^;{|g3vCK?ktwo-jiLs($G)Zdu*_9!jW zfiYjuoED3dA3ULPJ)Ap@t-DtwmLIgQqo};}AV!MjT4*fB`08J&B>}AFMWF+o!1s$T z_6yCqPbbdOd1c1#9jCpK?2bITESy1Slb|EKpKt7GJH~4I4yW!9|hDpu0Yv+ ziNVBOEjfQyFM@!Xvtilq7#pgh(&yuj$EvOU=1eOAo-8(fDB792%KrDtvbX zAnd3|=GR8s()u7Tc?cU)E%hVuF&E`}8Ni$eTUZb}nVQJk_S>zu9$jHZhWS7$2=b03 z^;Zs~Kc9yyTY|bh0$obStV7}}*tSk4-c2d!BL>=ZC7ltW+xXdB!zf~tqde_p1rOU-m+<;`% zM|y+E27w$ksFG4crj3%w`Oy$RU4jd=ozxz-J@!v5!Y*YLtMHRPn?U)$z{9RMYdeyzT(gFM@0Qg|UiW zyEI>?8+ag(FJHf)`AR06w6-od|N8Ivg3D^VhRo}~X)$uM5@NDo{NT%EuFua}Hx0o2 ze7G?BapR3Hqt@NhgSgr}jd4&cg*8P=muIsSLx55}Y0{KUH;uGex7F3XW}9(r-thLk zha8M+xQ!(7*R+#F1UIRlDWot)4BJEq#D{~>wJ&XY0LuYNT3RdzR+{5b;mmMT;Jo>) z;h()%We_z1X#C%`Sa}6ArOu)0}Nb^ax>x zF0LQPL)Is@{pRNY6w2)k+gH&R3#3CNAStwSCa8vywp6u2-Jf1h6Tb8eY!&MAIs{fb zVB^wF2B5XKB`33GisfK`agSHitmaU~U(YQMwNAvE7MZ$|Gc#N$WmlF=L6$&6i+X4e z9DBZhHM8lz6UhI^hv{x}EK;X!MAYY2==zbwfN=Ee`KLQ8diO1<(l)WRR5@|9!m)03 ze;dm7p&4%BORl{OUR*F+>0K?pWQA?J#%ce6Qvl9>D~ouI(A}R>iG54&!A2vPY(7E< z$igu-0e2u6x}F*C=OymTOz6eWi&}M-AgoV~{8rRg#_o}fSa4GGJv;{Y_zs%2R}#~f zL(Fs7GI(beVcRubyq0GwC?I&v7G+mvuR$6zuf3H~pKs6nM)0-i8RQ~0SUoeojnbQ( z1@WRvh4+NyD)`^Dk^@sfn&7`BYlg^oOGbVZNMCoWIzDRETI6 z%LAoF_@i<9!mEKt`Uwz!1L}XW!-i?nP-oKDUV5J0%s3KC!GQ@do7yys(YS4&V=-M6 zi{xOhzTb0cLUM7cz`VG=^8!2K{X1?eUHD(g2;Q{({kC0PeF?ZsNy6C%4MV#Mlr z`#HYYbf&chi!AKgC7>8@->${6z9lRQn-K^(0Sa+*7)&jh*Q3#TVoK<9mSe0W_Dapo zGp+M*jX7}W^fUby^4=X%PC-22>00T$I!5;-hn>eb>=(y*Jwmzd9dWGT=$6gs((sCW z?m5vmkX!yPn6HJs!CWTZ_B4R;18xMY9Z~GVVamxVCzxjPz!**@o`wy5*;R(I##_I7 zfvzBLzQHg@U4!mp0yPam(;k&j9(0P%eokN+Obyz^caVan zxio9xj7EmeoQn!`qXv94Np*nr+tKLuuG|a%zst3w{TY(zUq^X(J7N3u$0v(e(zwl} z5-;FgfODQIulhCNLi@0O3JqaU`d+V?+tY?Igo00{S~s4J1_V>{GMG+GeBUPG%4T6Rt(Yaz~^UBHfuaX*pB zWFdztXcVQ550VuOh(W)xMbL=-wVZscwBiZI>d}xztSx5~!!|#MtA) zI^EXhn0ZVtQ=bj4H}?Cj6u>j_PB~H$lCiA4U~h-`ySh+IcIt(wFn)v3W$t=5e+W{m zZDW>vvcs(KZA$wp8&2A;oyS_5CSrOqQd6k6p*uXJ+(M@2%{k8PpV{_V#1&u|qDLzn;=qLUS6y<{4j3bZ#xU+>1m z<5+b`tC0T9n%KOOfLI;w8z7EGumOILfeXr9#z&8x9u<4h_7t9T ztgDMmC$qbTk`W*<;3`}u*sHCAfnUN^Hz|pXFk8Z?rW5kGEB85&k-`ZMd7^na^J=t{ zvCdt1^gII3I+0E>0e1;^-Won6k+LP8GLbp|8Y$T1a+<|3z;9usA8^5iae@VJ(OU-_|R z>p|QHvT}t&&6S`>eRY=&t9$p6gJnR0ktT5hQ%nATE~fI)6(j_mRdT#&l$@;a=gkl4 z@v!FpNcZlukH?}Tv2E^Q?NQ@X5W6MZNN*PUM)#hW6GN%kSpmg&e%vd6wT|B}-HQR1 zN|MC~FopA~6)}qvV&nXbG5o)=X=8sK$LR)!pw!do(J>YwL!N`nsTwf1K&xQ>Lrncy z{5`O_`Pu>$p-6P?Bc`u#TVdKrL-Loiv_brv;5#dAUg8wWi#A*`k3q>vCQ?K$x-#Ap zR5GLjrjK5_?|$FkoG=AE@AfFaQcLwB=3u!S3!mk7@i~zdX;e*0OLX(U%2cl@g3`~) z6Oz}eFW2Y_s9V6jiWL~TuzChs4coBbjFX)`TuXF3v*~nMipEdoB4yOtRrRKB@+V=r zKew)6_rk%bS7O-sjfx<-Ym4clqywFfYC1Tst%0&Fji|Jti3xZrPS`+*z6*h8O$> zeQ*HMnLzVNoub#7jAc6y<5;z(QYyw=1#XN&OWWUvf+H_ttMvr(Rt+p+=#2|pmWp_s zf1I`Gco`!Nr z68O22#w2ie#)L8sQ`MTOIWRj>Bz*0-2Rq|RLa0p(Ak0Ez-dlm&g(N-IxNfXZ4$31( zPfY7sA)_Zz$ZJ;bIdR?%;I=r=8YP)`l_8o{f-LEFRb+<5AZ9U>8xGH>5z#-^k6YU% zTG}td7=`4grpuL|U_Ba;v+|_5aF9IMk6Ei2m+ql4Uxk$4uZC$rgD#V7Z+6+La5k)O zkxz9t+zea|bPX8c4l8wrBfQf;oMN*pV1=9_p**_$vvvqlM7Oj&Uuzsg_xQ9&akZr4 zM^=Odu*07tq>l!qK7av@4g;hESqET#@nF|(RD!v2N}DXyc-_#qME>Hx^M^42P88?S z%M|1V(c<<%Y7%-ID5u!by!4Oy6sPZ%KR5+{d>R-jFr8Q4pCMBj$s67a6H-FU!AP16O>&aG4TAZp z)Au?WY_Q~$V@y&p@51Xar(qyLQE7E!27;9KAgeX7X5?vx|a)b7k+C$iS*#|+#z_Xm7+Do%jBh80b2 z-FqD{_;^Ll0x+HlfcS-Tox#<^4Bs&O4_Poi`V4nnIlZan@(wQ5BPFID$OBKKDL<^u zx?B(r3=(($08Yao5U2AfGTPehP&}KPkv#H9D-J1-x|!;e|9Dk|-!mi6K}@1!#At*w z8HL)xnPu{>((7f+(A_SbJU`;qU^tp(+(s4~FmOr$8J=-<>AZ)1OYnK`On$5iP5C^O zc!-(>&J_nd+L->dc%M#;9L(jrVBy3tPRvHMa|EDDRe5b{tkP6}*3BX~BGi7WGiI@Z zJ};_=W~?_;_t0k>?SBDJ0~ObWV;hng7zx~{ioq`9M#;jkXq0K-wQ%@>Ep z^Fp>j4S=Zi4FQKael2n=xowT=Gnn^DJW_*>uTSUaRUd{Lrd4B*@Doj|$mHU%1HPtI zdQFyo1!2v00r>G*q%?UFKoE`k212NjZH`4+6em`xiaZtcr~iQz3A@gK4E9>;8Ta;Jw!;Zhya#+16OR)(;!Ef|qE4f~FVc zfUu7H8;ZTmDM{iB&WGfj-18%rNdS-Uw$EKDKv=mE$1H3^4*5wEIev}TGhhnvin=jQ zMf+3L0nTD)1x9@nQiUJ1DYlcQFnB`&Z{+GrUY5klOTFBpsmk8FK2p8J7krWJ6r^`k z5_z=(6Zkt8O)ty2@jJA}ZM{>be=TzsI?UdX?%Fm?hM{}4A)EbT_$C~`5M6X%kZsEw zwz{4SXoo$d$oz;Z-EKa$y)MDtsPVvO^T)6&!Pbt{EMo3pz_ z#F|Bh6iyNlMp4$|MJJd0`>bBlyT4O4gC}J{kjgXpe`g-Cbf_l=O;}EH=e13Bhdhfl z9cTvN$6B9dR)UI3DpeZO*#;+uE1q*gvUP39C4;i)ZA{!w$OgfE45|6%6i( zgQ{SmT55i>eti8)w#`;g*N8jr+JsxMy3>Tifd?ki9Ol`)31N~jYP#-MWbn#CUbfq2 zO2?QwXFq9I2p4N>B>c^DgbD4+fxr|>(`%gA`g#gvsNLJ1m2W<*l#4x8C6K}%F)Vz= z2gtoc1P(2E@ck(QV$z+tbT)z!`uohWGR&3NlT@ha%?VfCN1bCSsV6*1qNpgk+ECQ# zNRpR_2d;*J`lSyL=e+&1LjXSXR;5^yt_8w=PRdpo7GDJZD3vwq#x;d$^3+|ATXP{9 zd-=;2hrp6a%&a9m7Vu=)P&U9)Rj!pjz5HX4Jo`(L(_h=7OBm7r4^O<235IjWA!?1T zs$;`nXtK!@a0DA^Mp)FFDJ$7OHqPnKK;sMGJzNxXluiJv+7twZwfO4~L+JmMNEQ1S z+q}2L%Bbek{}$~~nAE!!bs;p!G9**DR{b1u8jj2^Sf8~2F5f3&FOx^Er%9&Jb2RsJ z6jmK5AzZ8xd!Umm`*&%?yd~9waS)MJh^18KSGqC}8y4gZi?aBSlD=}V-x^$isk2mt z6ql;-V+PGMmG@&O9iDhIf!=$X1#(SWTWJ%f{B?`ls`65%r89ukuLaD`rC@s|wv@oT zhCz*iN+YtRj%*!6(nnb`q%Z|Fn8JL`TG(l2gajIV@;E;J`dP z4RFTEs2g%Oq-p(Js?@K) zHpsC_SdBqNLul8W!qcMV;Ny}8m@G|#7T(e_8oe!~-45Gt&#T$0At)Zu@-mxrG!H6- zrEMjN6EW@@$EW75)#p;ZN~{M$XrGAS0<-m#q{_^=nOZH{xiu|f0<%q|QU7jcYU_v2 z-&TG8t30Nk7WA{=g0Qc;ByzGfX;f6x2bfmnBHO135m;TgsP!g}a0r*q%@ACYMD6Lt zVK`<&-5GA^kMR#LWBCS$I$XTq8GZ+h0TY?(usr#vW_$FvU7TzhtvJcb;vpdZlR}CK zcfM9vA0T-^XoOq>b<6k}zTg*ZVnll4(=GDZw9^9=yiQYFp2%#knR5TvqN62wc3rC$ zog1)u%LsNoRM$X4%>p!kt^^0-0G;D&J&|&qKSd9Jj}%$;lehY%(%VPOPYtCB+2{i8r*5x*Z$gsJQnr^IobsHd z3=jeHb2Ct1_7UEZggUlMg#Cyhd;wd2+2q%c`@PHrjjce;T(jjJfyWaYXQi>R{AlQI z0nK<%TZ%Bhgx#*a?#KThO28r-0(>+rc(?U;nay@td1k8)Q20}Y_9*|g7IJ~hLUWCX zolUNHLRM3N>v-GskUtie6KbR}kIgx#_k8Uom zJW}TO&xG-N`jw*~7~k5NdgwR%=O>y%>MU4s-2SN56Y{LfB%~X; z3*~)b{kFs64FY|xYE)c+uD<`|q7hu?PNDS5%`T?{ht@Tj7l^*C*bL5V$rvaV>afiN zHV59ER^^rrT4fz_4?LwzwQT?zhOiP|k%12eq;M-G{(W$d?;;ulNE5sET(45rkbp%OLGy=mJ{lXSx@kj)cAAcjbfQRz+`3C8 zH38cEYz(dhSMgDj>Q?Avb0_T|S}XYM&9KSi*n&zzB^2ji>`Tvh*vg#UbT$IyTTD8*I9@)4eGGeHfb47{|P%*`jSM>wQ@8-LYyR< zzV=O~i-4?(v=eFUqdF=tP6eDZjwnQ-=PFq(l2m`F-C!++Wf2i8TKsCZsejJAb|IkHF=N|8)E^Tu8g5wQq?aL z@u-de^3rQ0txeVJNiz;lZT~?V@0<#eqb?kJIID3`A>B70?4~mNCS~dVaG$r0f{>ZUNTGZbh5$7Y& zMV|a_^KBl+{_&{PI=hWHF5gOPLGAuJ${@uZ>u-*Es#HDQ;~lHlH(2D_9DQg)_tr3X z>=WJ|z^$(&fi3;q8_fvp+4esZ<;Q#1mzqo2D7O6&F=3mXicM9+_a>Njr7{r2+TgRu zDA(X+4VF5hC&h{7&A5}wtZ4b&Yk^9>^nTE?bTN}I1j(8|>pxW5s=Xu+MGYSdbdmw- z)oH>=qh~EXVR;(o9-;mI3JaK4AIuEmLjZgKzISnySkmXeft$>4qK5fl`--wQ!?+VK zxuyL}Pi5pJ#N7yVL>^UJ6eMYvqGA!$mgZtslZf@FPelDXX4^HkNfZNGLykdYEXvn| ze`YR+_VAf3YkFXtEmsyAcRpAFaPg#WwR+yFUx0;bZqY%yPDyuv{u8O{KVhGAy2E{kX`~%6#YN;QnB`wR`Xj?`Tee>OaeZ zOkkHtY-TcDFhQkgFOGP-zQ)rHrM#WKn(#Ca>ems4pjw`l!_F4Hzy~TWFH$&YnTW@r zY1&1(XAr5M+8q(fyu zDs(<8J}5FlIG17!zk&hW+!8?^R`ERU{8xC-y^MG!OR0kzUBhV~A02LE;DxG^^N9wL zC5=+}16ydwO2-~?v^{CpTk+86t?D|0zme-YS85Iq%Ne+w3ayWX6mP3p`7e;?>j4Bw z*S$j2&=OnLz22{ih~>QcN4R)B8~SO7l_wDQ^1b4eMo+){qj3=m66VMR!UBVx16H|Q zC4bg^Hr4xB6m&&>Mc{94Hy8I_(KrJFY#U= z|I-jgSJs@e?8P^sh9Yf^1r-avVuC{lB0n#B>u0zR*qFiqWR}YY;VG8(V`XH609%p0 z6#@%Q)+cCqb}}P@3vFv*zAy0+mZz8I0C~Y-=@GBHOblmur!ace!o%Xm#z(qW-nXz! z@@>M>LXGKb3)pX#`>HvewpSZmO4KC8Ost+*um|X$->KCO-qF$$>(u18J@$->`jwYE zJXyhdBv4b(5Qf%ZP*BAXR)$&H-9RY9 z9+jT6)r2D+cexR9uOqih?~49{JgoVtK7<84xKB$qfqG&{4HlM!4n^Cs#t$QSu%F$P z3i`=MABJOx@9TURlsJEHg|T81bxU71BNS#0$TEPy`**FlcA4~re0SHG_gYjRdqyy? z7$PQ)utgwPI8EojD*74S(2zx!PJxgtn>a(CkYka|NF&(yUwb@0XEZk&5tDz0@(&_i zMVW?-0QBP~g(`#oc_}hXxj4Bb(L8A>K66L4NJ-qQv<2xcbH-Sd}J4&P8$t5CY9=x_Biji9P zjCM<%MQre-h8wY_ua~@`S!q$%(8VMt-EX6V>;~uF%{*q&xG}GN8>P5PMQv+bpyYP4k|7^e6N8XvIMnN;8wrpz33Gd0L;0V zTKtOBtX#dA*)wPFD|d+qQM&(?Ud{aA4h8XqhI>Bc=k0#y-~!|tP$&8hb~)fmAEon zFAkc#)+mT;kn}bpayPc0iz@=T5Le{g$GpDTqq8Q-gM0%G7@Z{W;csIZ8!-^EvZ3IZ z8?BCQ5*V>*rnT=x7*@s+0IdHOnVj1iLsafx2v)uFqojU(-?9hPPobj%s2M+sH7tJb zPgg6!HO3XOD~8C1PTs@l!5)PZ;5)N3j!Axnj4Q7y%K}R7Gbb$>@S*2WGFw{GA6>}S zI~~O%01W0U2Vc~G_MJFXMS1AJSk;9K(*l5M>D}nSsx)wA|K$jGwXp+w5;DALVZ(G@=*&QMCI^?bba^wf_Gt7%ef zSHXL0k4aZE;o0Ac=CkAXU)Bar-$%U`-L2B{{QdZ$s;?0iHJeU0ZE9$m^Q@jjs~hg^iE5F+y}U#B7bh_gV{)MsV|LQWb4DplLoS}xtldJt23Fc8Ny zU7cJwfA@`~IpVBDN&=AR#1q4}HMy}?Yru2w&i&@7SGTM3B<1uc0xV9ILbfk3ZTpR$ z$hn6Fzo51HC`{xHeirw@XFr(@aX@EG<}!WI4R1%}rh+WCZ`g^dS<A(m4IF=Q}?oE~o3oe>E8O1v1<)Rd##&agB%U>LJ*)EIAFL$=7S- zAz5aS&gDF9vjsfI)d*{53CVvvFi@F8XEp{Hoi&lO@G@ZRsNJtWQAe$Hsw{iR-TJ#R ztY@A&RYxl@O2<@H(fQ=KULEF`NmPJ4lWhmPp#Oy2?INbE!%B~GK`0hU87vr6v(F)6 zIY`a>aa0DLl1$GDb(gtmC}Sn0IsJ`5*op6#fF^E$)T%MA`~iFM6};o7xOLFEdvtBe z5N(6Hf-{lEFZW*aVOiO2?ZwLexMt8LJ@}yJf5Cb%?-uh_LCnEViIr$#s%E7q{{M_C zyqJS_VQx8m9`~r}R~E?AucH9BpB09gT`C4D_Ds?;4NPpHPSbQAi&T#e|x zSQ^bIb;kNNbM-#`;hpys*)<;7&4MB}mopFas*iHMaw&54-S3P#DWmKr1mW5fO#rGI zQj0UE7`dKk*OztxYx$;DZO#7Rb-(NoqwA45Y)Jc{Mo5ab18%*+=R$rT5Ypj|;(yU| zu_VRLYy+C4R4=%?DC@5ZLDWuRfA_fk`x{ThQ=M?7hv#@Ck)pQ!0NRv#ieoLO;P}gf zn2ysFsRqsAZ-Rmt;q}ala<9u(vGzL`3I0%Ki`-P76KzV^DT0sfi_z#tKOU?vxbkaD9dt|$9KMiY=#lb^|FBG~ znS@g3;yAUQf{`#|;TCvmWOrk>p+v7{XK0R zk+Qa|64O*~w__kyaoRBQk z!>$y9;ou2i3=^wHWhU5ilQDOAqw?< zuoW5g2Hq#dH?qcSuAiZ-Cft~QZybOGD*xyF!PQs`n+O9)239~=Fhs!UnSgB4253Z>6UgD#vf&uS( znqDmuPKTt(9#J+0&}F$!BiijZ|AGxWl@4pyn62ru zz$G3+-rGE-oDtjo0_R9P@eK2GeIz&(60ZL9I>p9quGSKmW*abte4j`?6N-<;cJP@ zo6wUP&)|1kBXtUhhYWUxz7NlzPPc)uec4$N{y1X$4#rIOGu3UaC@610nE^R4LY-Fr{scKOLC8HvZE*wc_W$Hr;fN}Ofx!0xkgpz~ zFIYAWu!xw~?Vtmqm|W%i2%L<|MXyn?L#u;nE6goex~d<-T>6XnC#yW44spmXRNvS= zQm#`a3puy8nOiRElq*)$s}E^& zB6$@m`&E={vg$;p>bsc%SC*iEk1y9!N`k9sM5oWR# zoV$}Jr7as3E0iI62t0x2VGK;$PWl(Cg4X^i?qf4L5L2SnY)POz+8~YKvX_qFDZju)Vyji`K)P5~|M2V_3vj5*gS~2QpSj#?P~l6G zTh6Txn-(%{cGndK=S+eUoksC+Iu;&);g28XZff5xn=aQ{(?*ly>OWkKZ@@y^*mkNN zNkU#hEb0?I-e~@S#~S%jatlWuY*Y6pZg5Nv8xwMdv3&d%GXTxX9AZAE(Rku=}rSFo>w%+Su&k;ot zPg&PvxN6MAe-B*y-A=;h4h2TjZ`PqF{;+1iDOWz#85@SF`PIgRUnPEKOd87qWtXs) zj$g>cP1mm8y48#O5WI_Lw_*M?A}^n{?eC{ySYMd7kvHjiZwPxZ*X_B*xUoZ^2YFmz zB+f{i!83-&yQ|S~;Kyo8QJqROl99C+H69r6XKb;Mrpu5}jRq~1AUy*S^?GmCW)s{Y zf~=#l;T}^gY>g?AZ(O;nieE~g5v78jy0W{N#E{P-dZOi|R>$iNj zsJe(~Lp`LnIoI`h8vvH#KEW0vrelQPi&$~_m4S1Z1hb&$BLuOD7B{GIVBr)jKfCXL zRmC=Zx#QValN%Dt|50;18i4wddvzlUB-$WUR4dQpluiL&(4*&$%Gu-*n#$r<|K3qj z?tC9eX=X?J;5N8PhWX_8mL0k}DF@yu;mPslPd-3@6{8X$jGFO)i-uG!Bu~@PiINJk zw7I5pVtN!geclsq0{dFV@qP0y*AzgFMa*CY*9=Z(!HM1_m(+koKT^|gEE4twFMby9 zN?yF|xwhc-%HLk=P-H3ANcj?0BHRL7)VIYTVU~N($hVNZgq*fY^!O^ZWQ6jpo6Wg2 z5RYqRKGUsYM0{x(&5XNEDZ(;FSwj?%HJ3Ylr?KI>hkD1{VSjS_*7KS2*qNVHa<%=3 zVx*5asXh;Rdy-2d^0rQJSjwAf+~NHrDSmNAdSe_n3lm9di~#*9%~{L0D05vMQ9Gol zRsM@|k00%9ZP=_Pc#ZOBZeVX$Fb8bTbU*iJPmKZ^xBfB+p1&(}Q;8XaGehPYGjWx= zn<@gQHTLLLVaFK&%fd7`P=@hnk~HNDYAHY97`(ayG9UHjzr*LmWiD1|+e5mqK)JRFdQ7 z4Km=8H0_A!2#RBnu5l8&>cnz7W;2mDA8^z{fykt1j}hCj2v2|51^Pt5kS-(0Fb<+& zznlComSJCKr-wFSRwsKlvrlsdmrq*_a`GK392*gYab4GW(g{>_fh5M8jC7%v+5~}bM~X*r+Yd*PW+p*$P+#)&zUUN=e5tis1$15Fym!#rt@lS2zN>0 z=w(U*Z0`#`bm-pEsy+XIc#FY9DQ38jbG5R+VpHnHv?R8%g+OmQM-$a8!?55ogJ4TH z=0-NU#!0|xH&Pw7`$k9@3IPK8NX!0`&Ph50poNC)%}Gym&|rfc#c{Ao7C`NpkPcgf zDCEzYK8RExUec7GIEItX^Ov^bnSCJ&Evq5oJ0lLQlqK3Uqo+aAOf}3zQ(L0?b{Va9 zm473LL9lG(ybB$mRFuM6MKmi_qGu>pHmSmvI&^ zwZzhmySEL;>*1w%%hH6jLb&o2*^==?$t>I-twEG1$Cq(qnw`EQ{Eq=-Ae<`_P&b&> z#RbVPwVd5SCn%j=Z&8YqD0Cv^ab=}Emq+lD|Bp{=d+9LV=gEH_87d85kkW<3J= zR<5#576FP?j)9mcYM}TI&@6PKm5LJbNK8)IMCMAe%&JdPL}8U{F{sqc8U_-e5iu_| zeZuT`=d3EKn+pq=GVes>s7CY^2b%;XBd)bhc9E_BAI$=(p$dKc-)K_QuBJ7EeDq*n zMjB1>#x4>$_r7&umEaH6-j%n@7Z{rn@6)cr6bmW&sCGQbKO}3P@PB&OoVn%Js=6wx zb++7MVZ^!ybUS}Ol~dw%U2&On*!-<)Nj3^Y1fu-)u6m%MtU|DzOpSH(8n5wVH69I zvlm5$Vc@nx?#v3!*W^toZjFuIh0^0=Z_!NjlA{Ex>DXmQko*)LIsx4yDsyPKRxFW@ zi0UGX?ua-S9a?171Z5!hwa+6zUqx+{km#3yr--#G457HDR@WctOb;wm&{FAf$&a7D z92Z@o9B$AsCZ?{pt(S*;jea^trj9EfL!xN6WfvY=X(3oLR$KhPC+d^uM6?1Sp|{m( z1Tw1!A%hO*bM%dZsGJ|eF#B#P?o`lIn#&yc1vPH7rW2Lc_oQx4$&xA*COs!94oRC+1odRzn7AT5E@m6H(a zeDLRyV2>kQVwsIy%}w|7(3~Py62?~#@b^68bVYNZ<(+h*bnRhrpsJ>!uQfD3r!pV+ z$JCoIRJ@;f%_XCHgGj`_{o{C99rRxB%&?sjUU-?Qd(Kv##?0mN?~C$2XGXT|`vHZw zGCv@LrY5J>+`Gpc{(Q}Iu=;p@NdvT_O`iNI&7|{svPO|nVE$ACR%*3&Y<}SQdGe4sCnzU!>nu!-3WrwWE1d;J{!LKFM@{h`i3*wp9vRU>_gbP2C3VpnAl}s8+r@3)h z1&?hfQoqO2CUu%Uwhj^{ewa^80*?{doVVPD^6m)s-Bg-0;Ve_ z&xX`!BkaAh0Z7`K>;k+SI50FT<u6b9CGYvR@$UL^EW?3$*Y6c8({00%q_21%Sv1RwjlC^Iy0%PI zVbid;XelawDqBt^${C>&N6tSiGM0(a{)h?Fb!HjWjNiNna!x%0Qq_QD0gTCg&`1DM z3|WFLed7=|wpBZ-j`!kUIl>m{MKS|}E!$cG9?S{{N>~dPe%>~h@rI4~Cime0W>?J_ zl%cKv%Q#z2Gt($BIkzw}O-X6Wn3)7EjpEiZ$OAa`3+mQJRXfz%;Pz<>qSYrfBfH7q zHSmx5j~mhi7Ls2(ewHy2O{%xjonxXwE`+b%#VU+;_B~1Ji|Fa~HYiwtt}OCrI^X%B zLt+x9^-Phm83$=PXf0tnc0FwDgR;SSewUKhQG^YetNjSX&Z*9d6=g6gcmJ?!sxz;I z5XPI>Yz%^jE8b_P-vpUpe^1VdArT@Vfd5ReauJ97LHb>?v-F} zT9Y15rYVov`(QA`f|;)-yn*OEqA65!ODM%Eq{tAC3F$Vorn~O~mF^Prgz5 zX&Oyat8ghnCi3%Jcy?l>0=>Qu1Dc~GqntzHE+NRxiEOZV7Id9F5@^7vzxe#veooEb z7~U#RS9n}66~u0NZ&cJ)><+DMaq_~GCiVqArumq{+9vIj3yH?{P5I=+HT%3Tn~lGFV0J8RsS2Py=7%B@HxdcDs$W zG3Hn*g83@8n!$uv!eVjQxG(EBBzY5VtpJQ1O^+hZCz)6Tz_p46tQ>bW<4}7eU44|3 zB#@nQ)Y(g26UH7z18U@a9*VQktO2tTKB)6m+0=taP+c5gEDS!w_N2QP&ys~U!0B^d z!{%Z8xI5-GyZC>nB#9eyutHz<273{(aua@)cioU@zYKwF5f!}Ot0t}-?0vN0RAR~J zj%N293<>A<&dXx)l~B5?n|n2h*b|!1iw(+WDx#TzhjkN{*Uf2PwaF>xsRIW{s8BBx zFU(Fiv85VRG?-@SP-bSjcWTp>1lmh71W-gzVYy0T8GS1y`o~aWmW-F27~A%6&$M;m zN~7lFj5?lzRtEJwx`9U(H8`*v2D-*mDHVY|IU{90l~>9LedgE)@(6&38Eg46NQh%f zCEDL8IR*15?+ophwrS!%Jqmg24Wv33Nw9=67r5KIa-Z_=>=EroXg=ZQC4*#=M<+aQ z+5@y_s6<|NS+!r{y*!Dc4EL9?3HN}6q|$#F$SrUrTin`|gMe zQwF;(fkOztfhwbAncv{(}A6Ie9E=Axrdq8AMdxSq!yDiGgI- zuT~;HaV~1@KrFv_sa;Hh3;nzR0{bc#+aybZ)jC+8p?l4!iKRg>L{Y!y45U@YpgKh5 zHOD3LUZL7Wgv86~dR?IFW8H==tt=!IRie6w{|(h}dZ}m+hl}xvraNw<^A=fIE%aQ_ zzedm5=DR8Lv0AN4o*VEOKjjBpF^h%npjnUHB;deWLDy%T9n1)4pMM^xe6R6?7M18OY$0rEY1!6V0 zolNvf)($W}#bJ-+Qq!f*f|Q~(ul^si0rC+Kh2yaDF$fGiS<8u~+!5$BavG_$C4@ue7D{h9Pw1H1ti=#th% zY$9zTaMQk7L}(M%J#S(qA)#dzwuy&%2KfCEU?v*gw9=mW41KlpIcOmSPmx?TXw++H z^Jj%_^9Ls$k^!Z^7gBn>3pUK;-PATp`Ax^Ob;9OyR>C zz_wq7+i39g`fgcp3k-Gw=fc~<6Znh@y@BWKKIM3^JvR!;kZm*Ic0eD4OJSQfeXPo4 z+jBpzdD~qRpeB}SfRvW$`19g*S-`Nngu+?dKEe%j{{*d3dbe4W)74FPAoln5MKR$L ztEciT`5JBGoVAWKNr8$pE4|jsx)ri?!3r5e7J5qs{h?>$@?Dirm0ZF^!w}Mx+$w9# zr)a80{u7txBL=*el!M+ydutOHL7qxRLLKys7GnOpxmT~_&HVA9#i|4Ej1c6!@DUN9 zIBktQBn+9wcU1a~C(YJZ=?^(!Ygpk|&5+;d{^!4)fro53&STxs6biXHrGuwH#0_9Y zun2nX_>b{-D7y}!R>WE2FyH^2Gk9U zT?XI*Dzs(~u+j-{GUC25s0n=nd&Ok4*8TAJxkPGC+9~@Yi3cU2?hc{JYic6UT0`rI ztyB(6f#$8mG+j6uGB^eRA0UI`#N12Ba8ak5NSgJ;h#7x%A9q$l7xho40*}iZ(J3*bQ-GtL~ zog`y6Lr&Vc_laz=SWl z+l@jkffyn$C9vRXBggtnn=YFR15|zo?+0G<#(HIRskFjHLO*Fh@G~qCeuy*2FrK{{ zlI<~yX`NsD8&+x@hT;(Idd6{WIU7@&jgjkWx?nXSqN-O7n>UlrU~+`Avqao;-Y^?8 z+I!EsEHMO)tgQ~xi@REH#O?Aq-LF)yEr$rJ^z(}tU~-8rayZ-s96`{M`=#7lQ%3Z6 zv$QsF(ahw7M{Zng-kICd>(d8!S}l=n(Be6C+Xc#NZd>Pn{hbU!l@A-0G{8wkhr$j} zEVDZf5N6=QV7;ot_Wey`-xQo~u?8J>;-u>492<=x3>~%T`uR)D3Pgr8;3eP>&mLU8 z&pTxRK4?q3uFqKfoly2JUuzJ4?LwPPhMi0HoO9r*L^T3rZ^UWIUguLXGu{r3d;&RLTuaDfxekMfE2`xR8AmqPdU>7$)Oe_Z6JR396!el3K9bL$(|>|5 zzfwy)N}W$yjeSrQdUqc0_=;xd2W0e4QDy!Ercnov5(4FYkf+tZ9#M9>cus-HjH*&YW0^=i_(Fg4V zp1Diqu%RLVCPjbMeCP)P5&P>m5BT|4kzdRX#J$ZS{TA@4=mnft7iNYgzV>3q(ha{p=B1yA?%r4W)@%`Te@zB zQ0W<(O%7h+FhPNYi8kg5aq)hW>WC}f->{H{EKBkAB32u@JLH?^y3aedc@u90-sSk< z_keDXwVk8+{%w3C&gq|E8(`4=V*`F3uFk`%un2T1s+myO{}9tR|6oUc=Fnu`9yBij z9_~INvxpq82>Y@?7f-Y}D9rAm(UMX^2^oCbZ0H#)~--ep4@f zfQUbld|I%M2dF{h0d_P6Al2=_($_BqFBLV~)91@;3XeWUMwUqjV~%EC{SgC|Hvp*5 zmRZ8;V7+BRU`BQ8r-%;K54UatR^7TKZ7u2}p4VE*PvsX?&>`d8)%tEBM$QJ2$w$&p zxBzh-pwx#jLE1xYv^!*q4xx`XA5&oai{?m%$%USHs*>RjOw#^|laG!PoCk=)(4H7v z%2(^tLdNg#f}lN9n~N7D)BH68CH!;@F<$q%8KSfk+iy@wVM2AxK8S9=8t0VKQyMAN!;wIipCHnH1by60+Fk2d+4S zt3TCl%)Y(rJ1;CVc9`*Y6)NyI0LO=>yGghc+5YFow2NFQgqyJ*soxq7^Tw7q(tP$~ z7+ZCd1C0ZW#B@6z7E+SJFI#?jvjUve6AEmo!Dz{4YpZkSiWBMlid1t5#9890+3Iur)i6AgBV-f0-V7^Xn69<(@@B_xrU{A+*clR&mC z05Kc{*WU{KG)d0P^p=ntT*XWNhNI@&th$G%rDeht`!Z(l@P?Hqpzz#*3rH9b?}K^W z34sdy0gN)yIiD1PNL*2#JCOh5XbIgA{Hv)7dbm#V_Yg_D;*PPnxfwWj6MNko6rfYM zP?A6Y%hIVCVDBvf3Sz3-|IbL2z>=}rZq>7Axah!n+JsBn=iE5H@S-XmLd)ET?UJf> zbjk`z{%n3hc1y?3m=SZ0&ZD^H0M&cb)6?N>H&m+0RYG*Q;lG?6=@Ar{T(&t1#GY}r zS134qWG{f%BC}!^?9VcbYfgd@d$V}%WeCRJl2wpU_mh{2d`ZqrO|7nsK52#Ll=4Zk z+x)IhXYi!o4Bi!B%FF)W&Z|hsC%87^rZai`#kFZ@Tb$pi6a-=py}pW{!nc+=rDb*} zV{_2b!UQ3j&Sx`j7{xuit|7S<{3hRFbCV5^e0KWH$c?ZMEhiOk5Q%FuKI!k=F%&8p zH-ZU5WWQy!P2l4h6KoNP^YZ3^;K_z|9M!ibx?lpp;)emu$8=bo#ZO+oZpx-?Qnn|t z2Mwnj8QnZjM1zjtt$8wA zO(`SCE6EuNPWm^%RI8oi_v>l{P?3no+6AA-luWR+RSzqy);-3kBmueFqBm=Wx4Jnf zb>~VORt5XA9E5#$wIMSCx4ZhPC=b+Ad9>Fyds=udLVbJr302|iC0L73bdo<@%a2lb z)Y&I@GGKqoOSva$J?k$5B@#nETIW9ISR!a^uc=6 z@5bYi`wGqn>&@>S`GY*J6U2!BB{)TZM|<7fwGo*18DNic@F*#0ugsXg)SSepKAvH> zc$`yp%VqaD#WjKsG>2R82Kv+26l01WgUmKOrO|)Ls-(!8+Z+_AHpoGey=w~vkFvYw17X|3x~z&PYdKOM^e?B!HVIs!_WM3Rjd7w;J{Z&4l}O zb>Y}LjdC4X3{nZSXyZyr({ZCHkfZH^H8)`PT?BUzP#h)qqV!z!B;3TIxV(y|Qk)-sFj; z9xx=xNwX%e=|bs;z+k@t0J3=> zQ6XI~h<0HRN)@QFukB7nN%?zNf@EowpcP1ztrIYCEGr?f5}d2e_8WeTIh zKMK(EB5#xD!$2w=t`1u%5_c9xV5zqd?JoX_kbkGT^TAD;jph=oAfOuP3i@kw!w37! zjo;OM*@=nfz+ven&<2;s%*b+T2~VP4DfG=e0w%GdVXurFtKgVmzG>P#x= z7iI1b!;G6E3)D=0v*QN8SM>AGR~2FzcqP2X7qDpWkg|9b6S2D+u%VAhav`N0FO5=o zwh-hD^Yn!U4tN5D2 zW=r$&lL{xhu#JZ(t+#_vT|CYXDM zIWeQ3y@0^c)~hi=9GPa+p|%K~YA^m1m=b(PyixjiTrv^ixIS^54n9u7zl3J^t8ADG zWrr;9hUt%-X=IIfW{!LZT?UlPZJ&+u<)7G#hwRz$kJ_1L#F0&`6C+uxclUlPmVQ86 zx~RTVUX1;lmoEwuPf}u{^gpmwYxx=Ls!Bej9ihI>3(opc`Wn|y5(3fgp9$qXAC7+| zq^IYlYd7gYdQ-oN`7rINDaT<7@ZVqT8*Bf2cRyz^e!poFGC_;Q6vT?yk_{eVDWH!* zu+scA88{e(1UQiS%#wYM@6q!t4FT(jE!R!=CW{zuT-^va0z{hK(%!gCv~sE5sd|HI zZ>auC&=fh@tD4s+E|O%ud8Fy!ps$NZE;>=)D%Lm2q5)nQ9m zu4`k8G!%j2VCYq#j2#hE)Q0CASH{M0ZZ=wp1!KE>Qe%EI?b5i>T($B2z$1RINYnHma6v8-4%k&1Q!wdDYrei&IE~uip;)4OBsc0wPH;DCInMji#IFd>T_ZIsCmMJ^dsN(IBRQ(FVgXZB`$CF~KG2 z#FA&Mp&6_@LoL3YSIA27@5RsptMma^&!UoYfuJY05|h@ukgAUB7Y@d>Sr9_~=-igc zN|_oez6&;nM#=VW@R97VF+zS-6Lq-9+jH7D&VKu6JEy6Z|sJ1(3OhT-F`l)D?*x zgxf|`Mt1=B2@I8~B9=e)z`~Ar$SJuMdXHWv1AW+c0%2KW3Xzl3Cp;n}oS!$@lZ z8u3ex)eYRp&p2b2g1>;3_8Z!EHgmxrWngvL3_bD3@9bgG>1xa`XD5LWq~4}K+)r6h zS0P%eFm2D;dJ>`A4Fv*SXzbJXwU{1QNG16f2y%X9zuw@}xT=IT_)RJiN|4?hAxcgA z(^gv{ZrqNH3#;pzMWXKqrQV?)f5lBF_`y!I>(WMyGpiF)#4n;M5VGZ%kfFMo6AP1E?1lxP6b5 zocAQ|mv7A9BvyEUt`%G;Zjuw+Rv503AC`KI<1Y=^jxEk8N%g`Ut=SBknr4!X($p%D9WO5A(~4a94u9$iTB#m{5{RO68*MYGv2bZLmRi-snd6I6Tr%p4&ISZuu`BJmbAKZ=6q3U@Ys{TdC!9Wk-S?E-JX zwmba|nZ)fOOujSpO(@aLJ~OUu*I_(243;O_gbH2MmCBFo1nwx(2vE$9dP&vfOHvCU zOZ&i}CB&8g5qIQh(Lx_jx~j}1YJtmaZS-b z=@F;DI?WnU%M;$SS>9=O2;<+C?#7EM?;UPC+oUZ2Y=5J_w;~EFf*vzmeEO61z4)(I#oLQs;4vqk|d(o0siBpVUKh&K0ksEIg zonIbmtd)#3z7zklDG2LtS%+)**(G`>oIW&$5C7u31R@qomO=13TN^YTn99(yXf0?LG zXRbw@`wrd7i|wY9`l3>!Q~XWjHk0^*=?7aSL#wdbxLMh92Bu>-~&XLvF-RRV=p49P0+9M@--0sJNaxy(*Yi2Fg1akh4mN9H%A)uOJs9Jodo5hncV zcrxiZn#j8-0?ll!Zl-y+i(7~)!{sDMp21MZcqN z_4g6J7H!`U%i|v!Uz#98ZaHx19iFf!f#6B@E>KY^Qte} z);*@IJPUO|Gir$#)rF;pY3Vb%(yWiv>dxDLme~%h7N8i(qMr^64}#2}LA=i8R6Fdc zmFsIRH15TAusq<9L?+4A9<#z;=(ev^Dd4*aW zSz{oFzH6=`ULVNb?Awbz22vHbM?R@knBQZ}UWpD~q|0razgz9)C=_=0NMN%xwCnFu zT%HDT3Kk~FmER#g%=EFHhUE_clfU&f;lAq!ym|&mnS0B~ul8zqb#3Q0Ax9^AwzG-; zLH6tg?Y^!NeEJQo3Z$oj$Ouu-txu7=Y6zD}X5rgpNPn|>C!5QZ4?Pm~>9KXBp>RK>r zyGf{3P=;XIZ7PBYtJHlksMn|5t$ULiAeJ{D`6vFyaVZ#Q`6!$;%T=yEbJvc;kF_e; zr1S1T1V-6a7G9%l6yC5djxoT>S?KCo_2AO&mEmmDtorcLFwH4V+h}3Oma$u&jzeiM zLuCy<4`ChPp5~SR-An*cV%)E>&xVbL_eZG2FpFJYlk+bTC?I*OElsJ~AK$J^A?Ie9 zb%I#t#laF_uKo#wFB>4M7eakc@NP!rQbVse9!HZpUg@bXmE)TOHudIVNsh#vnn^?r ze>x)izu&YMc=z~%qa&TtheUiPLOJ3pAV^_nDFt2yIpGnaO5cCS^`rna`ZFEHPI}^! zwTeq^_uwDDAs#!127e7;A@pe$s3i%TTw+5>LSwl|F7f;WK3>H=cVp6g2$Q3)`W|#>t#uM?WA*g0 zy38mt*J;Y4FMk-=iM_sGy@Ths`xh!?3LjM^2qV|yQsG?g_u5zE%ATPR4jGH3Pv(0F z`nG_?Qkb-Z$<#uElv>?aR#gtU>8~``;mn3q=z+q|v>Iki-pgQw)8UcShkW3zVO1XQ z#f&Jl@Z)O$Z}5@=VP57z@`ZvLsHHRUYOq;>K5-u$Brw`aHjc@*!*p8cv0ia1XtTi~ zA#?qyzy<)9m18H@F}c~p8oK@qm(qDsZg=+U+n4*FBtfhq1P=%?me`+CT&+ej$&8mHAA{1Mphf&t&HmatRxNQ9h~-JhWTM82HHrmd0N^YqfWAc4p~_?FE`B z^Co6TB~r>h#H%G{KESV4OgN|EXLEN1DUE70kJs8XJk8m$T% zY)m10S$&~~7%n1-@JIEGANZ3?s(PLz`MP4ixJl*O9>91$4_Tv;vuTUcmrX(l!0dE$ zqaTad#r@vuU$bNRsHQg`gq&%VE8;~@&E#CBe0YkM(6+v{WJQgOl zX_5IcGOOI^OzZ+pfvcy}sUUZ!yQ?2y&%dqHT<$VLh)uS^uuC+eVYx*h=*-vYfgGU7 zkT^g0YPRm45B9fu7rJQ6)WF_PU~LM+8a-n0aOryp2rJl%XB94+11mSfVb5o?bS=H6 zb7pz6X*=at;ER_1*MW=zeMB_6!4D?P(tvjFwgh=kgw|PmiF}W+f|xZ-NygWW_8w1K z9k=D%o)-pmv%oM#HzimON`4@5eeHVY!KT2izPA^-o$wY>0DEO{e~$2@cA$vI_`mcU zGZBz2lvAt*mMirQh7*fmG;CMGZIo|L>jchEQcWmoR~GsEy4E=~gHfV||&2S?u8YZuDf{$G8|~P>u5VE}{Y zJWO7S?n<}=JdFUY=nIV#ainfi-+fN`^B?CtwL%#<`#w0i=Iw9w9ln;NiS=V#C^vKb zMg9`aPLAvFc6ku;on=XMgC4vqR5d~$93>}_Wl#a5*td*)(6D?MiBEv^wDjzQm0y1J zkvBhOgNBAulAsSt7NoGj2{gRpTzU`7ni~k~HRXL;-T)$3udNL0y=( zN6!9FKEa1|UV}k068X#)9n!v_QJS9!wnCr&la1%Q<^$DxYZ2@I4TX5zC6*DJzcq5C zvSyKw+^D-p=}e)gFp+Q7ICb0KZIx#H!MkBbT@Z(pVWk0Gg%$woc*@Ypb_?N(wPv}y zwP@A^u=lt6f6cg%f|+kXpXEQ2h2&AV3vr8%$IDZECzo(Hi`T{#kW zaZ$3yh^Wm?;J<+|F33_hAB5vFTzh>6(U`qRo-|Xe!}+(STD(57JjZM<`L^h53ufbd zA16|#SY8U$YAC-||LGC~FODv5bO1;FD;UavPkyU{gq+u=*%cYIs^}!a6rsJvBqxrr zupI{1A4|RMA4iKtR!0URMG@VXW+RGC1wo9dY2Gc9*2KOdg78sUWC7Cfv zy-_}QqSFAN`IDJf@PyzeHYJ!{WG>3u9 zNc3Q^#ysAk#e{v9x@4bE?$ZiyRQ&id<3d0_P5=3m?$l7&YMv&7TkH`XPXhiZJENj> zZVSJPzvdv`1w8{MIpL}gh$%b=-!i| z(4Z%%dk5rl_3WPmWuZvhX8E+oTV%I79p8TDE^X{ykah&=mqS?zBVc-UW3T<^$w)#A zf!0U!&8WuspxsY$kp(MsF82=Ml0UPdsO!PJ$N*9|k1=$}icx$9zN7WNgBE^OngbC^et;6v)<{2(|69u~d}mzh7Fp z8Znu!J@c=(ALqK9k5!v5*u+u#y7UW+i*|C7$YJXR)WF*yX5G}(5D9z1+LysOmm3ld z9;eHnyMlGt=tRxl-QV)&D|4TBs_L;|XQp?gKozBjF7m8J$h(Mt#ze9CgC?qchAI1= z#=eAaM=Cu;Oa$K@8z|7k!~^X?w9+)JXeM{ToP$2mQdq)@Y83|vMOKG(--{%vI zOiROWRONvhkIi@fX^sPoXA`0MlY7vJx8LW!S7FcxX8+T}0plBHr9ccLNAWv?(Ugx1 zUXifcV&?FJUkKQtcvEmcpS^0M5xtF{7c?wYRfkk#bF}`q4ke=g`U^>3MVMUabtTtC z62*=sV0?(aVzqerh^OFX%JC%oGTGc(5B4Mm zI}kV~0{n+^)k`9Y<;W3nU%lD(eypkSu&g7)F7a`rL8ZA>GvfDwI*c0ejsIek#;3-P zzLHnrhux&d(s^w}%~hRV5UT(NmbtSgP8Pzl+%?}}`xCI>q7RE?W>sI;NI(ejD38uqV3Yfe)1h>N`RopA@wo z#|64e5RuD;{K8jAlI|Wdk#orBInYF;N-fQSZ!QLtuX4(GhISxwD<@@nn?giF&u^8_ zl7(q4dRp-i}QLU%M#r<_%TJI5`>9NOa^{G@>>GUgb_q zSS?pU>JbY5x!3(bC!#cKHjcwhc}^T&0P4FA@xR>a&C6k%=u%s4s%U5Z6GpX~&@E@F zyGlKy{beFni^k#3LL7gc%NrdSPf{v_Fs-Dk+pB8-fB+PrH&A48%q%6ItBMp$naQEN z|G>r?0$uD5m#3*@t~MG_962hk?!lfrwE|dfNnDieJL?vE$a!jP2$F3$Y zm`?X~U;lHWD%Av;Zor%q7e^vr0hQ=-bqsp?Mef)4@0?s$_89g*QJq(#HPTDgVWKPU zLtRjjJUK;AHTM?AQ8-Cnv@W4-_`UA6*jE-f+zd(uI~CE5In7yBkUg8^Y{T9)N)p}Q zOGg@Uhfl)_vKvC#U%gvD1QY3tcIiAXo~{R#@8nKSkp73cIHxdN-N4td;E9mAIM;{1 zd5%-HM5_2K)-JRjpCe4QrjTIg-sYEOu`;agDpB2@WAQOoC{Wat(xh-mL4OXt;Gn8C zuDToO@?mYkav0zULL+HB7M51~Mj*%NcwGDM4j7iYP#AGAmf~<=lJtosk&^&Rn8jrZ zE+|;4+*L@Uk95$N7CtpUD8$K-J8oR4a? zMC)QYRbF-5WyYUBnv(ZHyTaGyScCC^cKK?HS;}c-sV79Lor4_uUkAyxq6*B~LK30C zHaS|}dUaH%q)?SSvQ=YR*7@HcF>FCnAd4(62W1F?hXw!Y(Li&?5a{6>&FES0&*b%l zV^`q2K{|u?_DR@SM&8~Dvo=F?Ai+?$RdhdmQX_l zpnF=)THV|Z-;8a#L+W0EB7tJ>Y!}k>gg3-5VR;eV?l>3=0ORJKXRil|c0Dk`^OK<3X=tEA zLw4uZxQi?%lV~EiUNHP?o;tB6{DD%p@xHvjhdq=A|7ixw>seYYrcEe~wsxANhtjgt z=EZ^GgzZU~7^h~ZR#OTa@8!8LDi?h!1%58_W;e{{sHnxAB;3*?k3FaVt&cZSB-ix3 zI|+5+OEBU5)OMeGK)nbF%k-OI?YqWHPg#-J09<}(9KuB+&i>>0qc?`D~0beK&%;Z+5>cYe{%;&AsUnH)6^n^+Hqw(b!DEc_;KFB zS%%AUGM{nV;xPNtV8;_3rZm^GCuTLCu&i$Q_A1v(@yeKW%i;pLi!2E5njh%784UPMNFn4gI7;=24@JKLnG>~?BFhP; zfMHF9E=VxCaR*opCkH|1%V{3}|FDdA)hHr*hnh>)uYg)u*XANISdXCBU&w*#RY`S=4G!c>O!Kc-|*A^RV=bVe!7unOUU>{^X z7Cju>f!)|Axpq)H>|AMyrDc&>9cDyh2qy+_j`QdZI2?Wbg1ZQyP8`fx9#qHIs*|-E zpN?o{BM3g;W;h3S0zl+&waF@nPAhz zc8+S1Ji4jVQD8HqGe!(EGgN$GXlO6~GWy@Wnn4HJEbu6CM~q z79XpgVxepG`v2=gdvSzMbrqsB=J3Q8c40ij)jI%6fY3+xjFm`x;e8=JVLHU6U}087 zplBX42=$S55wIkn4qnmD^jT38TOqOlSo5Q0nghMU`-4`m5|Ncf#=V+ohd5ASv@<~Y z#0TAD2{}{`#h;!rZ7PU`Vg?iDq$p`M-+-kPChO{}$Rz)1$k2xtt-v+(5TOYsSB`8* zz|tijCao_HB=t*j>W*SIf+h_Y-HREku4=V59;prv(_b+ zwms}XT~d8qohOCjgKCa;T?wQo;LNFtWm{P=Yo9`vJ$aoOrr|IZa_GQ$Vop&H%{Wws z)xfUnyf%V6_5kM3mWX3iNO;AZ^#j< zM_2j|#4_YjHZs6{&p0=oa^#OmQsgW|EMU7^9ijhO&2piXvM!>6=9X-1r;cBV-v|<6JMo~zS>TywV%XWU0dzT0Oh6)M?+?qn=cv_bIGu8du0+>#f}8%%G26MPn#WT5mMuHZ1#y^6A{Sfh4$@$dDEay(24brjK^w zk$D*iehM5(Y?`8z%21993o*R{!x;n2%MY6Udh*D$pXXQHa%@%Csx{Kjo?ym;OF>C` zY(mY*3q0JA1(|f+jYcV3HHpgPM5NcRXU+dYdsG9y8*)^_mM(N&h-buOApwnHjL2+r zNCMbJ=iNK0D_sN-}Bc}YcKP^*Q1p2#f<3G=uvdlc#sAwFh}+2 zY6;)FwU5!4+9=qZx{H>C3IhFV#34I&eve+>xL@6I+}MBg=S!?*Pa_sSX6?S0p4Ev!(LHR^u`62E_hHrLygk=Bz_(Y7vd5Ac!3U}{O< zTe*!UbYqOzmxiWhf3VBsQ%_$-C)BZSxrX};-ju?r?zXUOfjIQk7plY6ONZIs;CZpJ zm3-WYHC%Y$WvzSzQ3<7+vAT_{87RvE2JB)OZIu(pf$Y zaBshh9?`=h06xW2r56w5`_8D{D}8_(wA_4DeMkqLo>30?J_CgOJx1$1u-2UUZ-P!M zqCsGIYY`N+GlZDO?5>yeTQI|IxK6S4qJ^@imy;XM;oOL&GaOHeLl%rUmrQJL1r5g; z8G28rXi30O7HwTX?IhhD$*K1r0#24G)2}%TP1p(A* z=x!K4Mw$_b8U!<<9um9;FHH|qX9=sFkT$hxt4-sNP3IM1l;oROg%_W{=T{d9Oh(#y z$Z}d)0^)&4!I05*e~rfqO7nLH6OD%j+nfVt%-WqF);n{6_@q)Uc{}(JKgM#`;UTR%|G3Sg)UW9i04|;L#lpD^mpNmR?yPpW%@b92&=mwp8 z$V`2&eTG}TViSYc#`FaVI#{umb0`EAN)n4l`j6=U=4!^_YF-`#lQvw(!m__nUOfzN zZ@dl2xG4qjsO~7|7n5e1mE5fNd9W8UTa}HP%i|NZQja@+>c`Eh05eL{xMoz?J_sb0 zh(e6V&HyTLCFm=0evJQSnR%1LkuCUw$f-Xr7cdrU6vB_dmaMK5;}WrP}GqU zH|X_1ld#1_fTC5295>`9)og+{UYgxj>$>FAMu?E_$u#$$YtH) zfbpJPp4tmC1rXm5=9g*JA{i$(4ma^(-@2jy=Op&|#M_6M#ZTf@U;+rIEVKhV!E8)S z?dwf|$rxFD)$itwvl~4Cq4=9Y$kquDe*l~pd@3R<;lNof*c*Xrav^qtcx&LrqH zfpHk4TzR5bdqYn6neEk*0(rNf$R3)df}B=$>hy9ya_l0)Han@11ar!V0oCT22Y29` zmweyz{d4Xlq%y!7qqc~ZRg26r;66LOMPaWAhOehQ%U2O}1N+6tGc9uIK%pdMWs zl+C-e!TscU3%_Rwm{Zd}G7jJi7R>CLQ;rp0g(!VY#TE1l@HQ?~(FQjMq<#^*GZGo= zLEDrT&zLJIg$^40N{bRKmLoLi^8R0T2kL-&!$XXPH;ogU-_YV?^lEi%xJGfYF5^F3 zO-TTEy1t-a517o$J0YpWkiAGYuX|x_N%;x6dCi55Oy$;)gw-?2^P}|Nk_piQ ztkk^regMdH6IK7b!hb?Trl`U1Vt{$p2sJbok0@IJzKIV>@N$Vzvn|wxw-gaccjjDw zA}4uFTJb1=`K-&7yT!b}Z;66qRsF~^K3DYQlpls>;~=%!xp5W=fmjWbry~)ea?0BHY(Vp5IG;ZKuS|L@-4PDOL=qTA?|~VKvvHou#p#OHWS5zmLg%|Cb{MO=#$s3KFH-Z{Jz`0ZJ@mag%Vbiw>eZVIeX3esHN^vB)03p4Y^A@ zdLjQObRJ723|`|j~AQ%~x5%Ove@nS|F1^!pnW^_bJ z_So-rcK#+d=rlUxIRfel?aeJ9zQE5Llbw1KsH8zx%D^dKtmSZ6YX{x}nB((|DWQsV z^eFm*Revnz2$7qBv5GiBak31t3Q|@MLi?y>{z0kNm{v7J5NL#&)mifd6~fJ7c8!u=>lv# z$>U?G5#WcjcGq0IsWAqJrhN%lK&nd`$?x{=5%Q9GKRYeIH32*%LtikFx*@*-F^Z=( zh=PdxEqNWU-Kl@gLW0Sl@=*JOCBTI$~4!hTET@R$T> z@SVL@UB^qxl5k9t)ku?5?ZI%7NMd|!TbLuFH=k_o9QNGhMcND(DTYAb+z<+i(xRY> zGd(R10LM9TP0-pvR%@ zt`_7Qi16R`Tw)m8MPbDE1aVAgXXX;ZnbP=;l;g9#fZDTc=RiLE{;TOCJOtoOH5tIS z*D&3pVS>#;)0>$m+Y1}|X7(dQbH0BV+g;@|N5v%Q(n8F$MEz}GZBn5w9yf+LeX69h zCC6mS3awhW9$%0^wctwS4gDK1hvl31jbBpFpmi4sN+t0c1|c-TaATQ_Q5048y)e96 zHEqs>7DhU06_(wbpgJJJ9vYITN_V7yB{?|)1_NHrGB6IVn%Ry^RTVN)@^bv3mNh&6 z`2}lUvyK~%2_KILTTD4U0usKD5~yNXT^*!A8LSr7@3*>&9r0Ro0(6U{^e<1K#C==!g|Oo(;oc(>^R{^2c=mG2$%a00D`3#k zi=kcI5V-3;w7bKkNf<)?YLb8>s!_Mt8qmu~2m`$!vveF8{YN`(dF6tJEb)l)w5z)l z)J(Y#-(&Xr)szY0u*=*tj)QH`$3ub?TG zEye*cXpNTg5Y-8=(LaFF@Dcp0xp^-^Xx54YueesH0wj&-9>96V**!x^hY)iM2UV-) zepRWUiG=|k^Bdw8V8g-nW4nH1jaRUkuF}KW_?)JMk1443p~$0LA7kMO2TSMp#^ZtY_Jno z1FqD=&qWGtAu5a|_Q=S?#5v71DEWgaQ2Ocu3MJ0^=-v?@6dcI`edsB%KEam|GBdly z)#zm3jLo{}h*p!JLV~yedD*S;0d!_<}MX^C2p)L$dJrfKGWew6; zofVwnPqlPt%l7ufrr%d18Rmk`aj``Oso9GvC;{cP4qF1Lbq9)L5wnk7yQJLQN!v6H zIVA3w(doU~WPSylW3iqs3iw-s3r2XhxX^Opj)R;s&PX4`@S4T|C#qq(^{J6IfT*fn zoyheY5O=@@qyw#4pYvI;*?=4X|33i0DT3-~|D3O{PBi+pmw;pH3W0VBrP9Udo)fM6 z#tY(nYH*d(9o3K8mqQDA@&m8RoRL#jjy4`6(PFgzkk_*bq70V|OGK-V`Zd05x1Wc< zZZB>zoxb?{5WH8>6K*Yp-k7tVS?bMqe2oehA-RPkP{SO19K}+#58QT9AhRx{AUohl z%^cX)(%vq9!gD7=5gG2u3<|6}7DZeLk+T|BJ?-PCVrBqv9m#T}!9!vbBL;BzS>5y? z^^oGoXA_67)|Ft3j9)|~iWU_|zQ+-u48UrXgQQAEm^>#XirJ3wMT|O(FCbby`x!t4 zq@}t}t?>~QdL4=dF*%(+oe#+&{$aY~T4_lbfnLm#k7)Mp(3^Gz|eC1v-OqY(#8i`?ng(toyjW9Car#Kj`XI-&3_t!`mLj zLATp(AW>=A0B~|pSJk- zZ6u>_80Mq=H+D79lPwpR{SNy^ktbs&eQVjb+r4$PV6mA(QWZC1U5#SBRgQveyyAuQ zx%4Gr6x_^;^C6AA3i#)Dd3pYQvoyRlu0?g)VotA>B!QSE{s{kaD~C;IWrq8*6Qcx^ zr8?rwP$!tIYx~1#>38=UU0p{6if^(Ci2iBgXXtfosPKZ(T(~c8r_)$5fEER`VSV9; z95?b@we(X0NS_3=ctfatc;+vd@XFKAdr(GeN9aEouFczf)ldInKFbBmy>gTl&oxti zqI*?i;{$=YQCw5au?1xvFf=?6!Y}IT20J2=|5^H5U}c-lE}j4%{p>19BoA|y^e`w2 z*oa+Z7HjgLoWp~uudVu;EpVUW->Fn7yQS0ciT^&6Kn>BS93B;#RdDEE_9V?HDbN>;pZp?xD8Cx<^q? zN%aV5Y)mWOWv|*Jj2(iHOrbBky;#mB6T)ehlUMr3f&w%o%*m0vKkNL^Ol+B9J9bO3 z%ok5stRRDyc@ivq5M*)JG}hxdL8?EO_cy8tJ*i<9sm+^pg|IIG^WnzvTspAC>sl-# zd5$)NX$B##=rm}yo=HeS|09x{^gXxrWz~hodBSKsZ>%1yz_x!{-cPC1pe8@|mL4`q zv)B%_>5T7*iFZhBcw-EZfe9i-OLdO7uQ|!pJbzJ1sC^Hh>^UljzsTg`5Gk3QE*x&m zagn$%8zu$Yr{J&Olw{u7;2;TD=o>%8_PdKd2lG5#^>+Sug04U;YNq-Y)5<=Npqz$z zZa0A3iq+Q;A%~WKbA6{Nh&i?qI}-$BAwyae;pHyWNvyHlt6vN-ugNeSI8%Tj!GDRx zOC11*{!a{b!uxO_o|#`V6^@lsoawti3X$NTQIDdlGvHOpG>ROYD{`l;J^ly=$@oRB z1PHqT9~0AJX~8vE>+po|G#rNrLyUN-R3Ha;AtcsxIrD2T3M^y^KMfdsLqNQ$$6GSk z(p{NsatKxq^m(QWF@p5MkiqjAXBhMeih}N=@#!5y?ieKw9AZa{zSpmyqM`IFtnc0E z2yZA40yPCRuYHB>ly9)BpZRsXtKve^wG7a0^`CP!UoJ8 zoq@%)Y4hTZZCvXv6JvlxtpQEYcS!HLNGTx8G@pb>oG}c|0v4K`na!M>RgFT)LZ-|a z*{it`Z>d}Ax9QZb#NnHWBLW1~vl95ycDWbkb6)Jc_*gCMMcH10FWXV^8B(bcp7eXN z2n5U0Mr36r;=cF67O9cwdY~Uzn?O;C@Zs{|k7Pw}Z6bS2e=^i!oEgGG>m%KJB6UPrQ!2 zRwHAbQ`#q!^lu#9e_gUMd}e{qp;D)3=1T}vLMaz9{>mWG_=Ejw*q4;w|6P1K)`H!4 zJYE)ca^lt$gUXWU4814ybc;W6Bn|kq8(uuE_@bh!R5Ho= z_&|>uMFxaJ!7u-!XH3;6t3hab9~E3<105!e?>WblE|`^D*?; zX0tInZH@{3_4Ru!joRjN4c5og(C#nHC`CY{+F^~Lyobuf+EbcZRxi7rrH8_QBgfXC z%#`BtZ-%WBr?39RDxkuW<}k3CX9+c0Mp0w>9V5yl0Jc5TVz-eGh_!SMJxV8oK2?>i zSPG4aKjV7s&lipw1U`~_{+)iyRhnH1<vkdB)(?7EFokT8kvI)8iZ@?C(_!VAYptW(J)5Q*Gv`_Hv+#>}Syf5^_`u*_;&5O#DTDd^?G)l$w^AlICp%vy z3l=;R^K1Ep8eLP)MECIEc6MEE(MmUOBBIbibQ`(pVfP?j#u-OD{1mp}0qxES4niS?V4GnDz53(sCn#soS5SDLYR! z&UllVBMwa}jjD?4RVAa=aUa8cBlZj-FNb0I>9@-Avg^Nna4hHLYa?@^NJE2Xad>); zXO)p!kOh#0-L(G$tL{SA*C75;)c`Q=b|bO-`%*Z7}Aw>eFXbj(>XnTpx7~=@X4UQ(3?uYuFvgp1{78QnAKue(ndmk0y$EQ}g{@)%} zs!#ly6=C0d9;Bg_F-5$%UXx zQe2M>l&``Oj8$fp{@5!JML_2NaW4P??_s@t7nq9KOB8L>I(<0%iKcr%rhwg$7dV4 zMtZg*Xz7Rir0WiEXbtrOB#inn$q1twf2UMYA%gdm;)V=SvP84jS=(yb1^lnP;+O_B zw;KoYs)fI0{EL++JZk~AG;kb6-A@p>m2Ww#*(;Vio>Oyk_-Qe`NXtCZCH>{ZP&(q; zvvS<3>H{K=Vk#ul%F?IOf%fqb9Je!&F)H`~Jna;dXqbwF&^@%0xcA-*+-`0h^nibm zMbu~Cp|i`$1Q`aV90Hna8sfQb5giJfDwcU5(;1p7R%;vc?oFlXOKF7JfriZv^KrUxwRuL5}%o)Lw;z6To zY^8@Gb%EScljM(L(fR&YZuwO%s5Jst)zjG_xgSIns@r&O?1W%+*895WCf*QYCwhxE z&ijNwT$hA3qR8k6PtOs#SXO<801GkUl`;&UGMnVprJ7xoI}mxfxFY9!c#}}68z-+b z_wx!(Wu!XVo4byAI9uyd} z2$1_d)g#5Pr8mnHV8dFPyLIbK{zvFFp!QKluMX<`UB2o>Oin__k5X@fL#9p3CH;|Y$ymw&bom4 zFtj)67{mJ#@X-X5p^f;WL$N$x@#=-p5$G^p`s!ijEZI}rHj^QyhV3;gFwx@57RS>~ z;?+Ms_o*Psy|B?s^jp@$MC78Bk-h@}ZawGALBsapH>|p$N9wI94LqVv09OMv=@A;y zt?F5?lfmr2Ehx8 zbjR&rjH~hNXwY?FcW>D70aPY~2`hsH?ks^jI~RzwpQKhasIoesPJ4;GFN7z_@xXD~ zhDyvk9%A{JdDuX~c9ci!BviyKBJ%b74iNiJ6+3jUP;q^J>*@5vB3o_AYXz7I?|S;2 zfcsF}nrS;MBTd-84n#rkGdio|nxSlkS@jfpG9|@DijBsJAvkYU#>@_+(6)pmCL@9; zBZ#(D5HoQKv7KHyY8tx8Z^hN!bB~0}UYfhhJ~tfYr!ygf6AbLE5w;a2Sy%ES*n5}C zyJEXY^*okgjS4)7fT4wLH^rmg+MY+ze_d^wsoSFjlB$zb!7>)a(Qx!6jD|4bceuD3 zDcdN=ji5pzo&d?hS+Fsv((b0!)O!13vf8hX9@z&$StxR?6#wdp3oUr1o)oBVcEZhKK0yu7r<$Cy!^bncmVSSm^SilxJ`y@0(vzHOXNs z5;?VRabJd06=C=b0_<6}?-9+>`ZTk5I!uh&pyg<|BbcN&kR?}avr$CG1Xy>g|Ii~1 z%GUSZ2W<$p2&9wo9>(Zmj z)ZN3*yi=8EfRqfE>>8l0ou_sMW$T$BsEFiobh&Btd)X>aQY}jcHc~;0EPJLl1mhp3 zFqn~9sAh6Pc>n!t5Z@r&0@JYggmx^(U3bd=(=e{OUqO}@V5mnnB*Y2gAjKsQ-&{yU zTGCQ-9cn*6qrm52cD3~34*&r_T9#x0XQzmKj;AWUrOGgo4!}gYmNo%5(l(KiamTh~ zeImK8X&@IeI*2r+8YUfpT~It?_dlQL-x?e6wqb5 zF-jTBZD@kC_U^?_Qn@t~`qR_inY#;*tL;r)zd2sD%GmCe3Q;K?)+N&@~q_#tiP1fyVbsM$i=C;vrP%W6qu*mC%m6cnTTvQo- zwE#>xn#zT?e9RnMAK?q-3JP%Mi=$VnT2{j}s@t;+XZ!3P9+CleAAMzVrmKEo)|ctj z?GJlO`pW*pGZg#9ZQ#@M*vVge7LN4287g zv95InBPh)$&H!74B8$1M7Us=HB^kAj<{FYFpf`oSqb(21la;Wd!lPYToBGAn7!WQ; zZ-Sl0+%?`^4k8urbdar)S_VMq8qmngM7}adV=AcZ2Bk#8@b^-NPd-1-Wwg^!dw14>Oxj=eQDSR3UMsA4qCyZ(W< zi>pw-uM`V;#YKuzsr{+GPENn4O&~bw1$b!#pkqdIw?tUEi54!`sWQ72M(e zbs6V{;wu--J2CsbFwXbl;Mx?F!*7^KR(mH|Wr=!qrblSN6Dn{WHv`E0tv1yERqier zAHg1JQqyWYGqFboM|S=bBcvkyTb+-11U1@uDW3ipo5Yxlk;>&6Evfn=x-efZaZ~Zn z{0CSN%#v#W5iJC?ysd=6`^~XOt>6=t3&Y+-ZWF7YUE|h2UkKA@28%4IEqps`;}t4IdEM z&g~_sL_hDZW(kd+HZcBuKHQ-YcJw_R^FRpPojV`jt=yZ9+eI$O6F`~72C(#ERO&Ih;& z1NGN5#U!mbt=lR@?Vx{L{pG%$CQ|}^JWrCh*$uv~xF8<37HOK~N2~!K(KMLKxRn{1 z*RE!`?8To84(s5u1_l(wO*l4y-X7u!K9yCzdqDz-(otBj4PZ`~(>W3`%*C=0%tG{YjBsj&nvqMo&YbYivob!Y-^Sj8mk>OgD}Hxbl)!J*X? zEVi=&@M+Q3?^G3`4IXlA)>S}lP!Q9lk0m!QP$O8uVW2gvSAoibbr#)vtYBT#E0B|?vlbByV6~5q zj{#PB^k$=;n@L0$zRvy3$SRkQ;ygi(SlSO15VpgNFK?BmW7awSO|j-To(#^|!ZhK? zpI{%{JDLxBNvgS&!1c$tI|X6xWSJKtN9aD42P_faxQ5Ld^0 z=*xAe^t#aya1Xb@KXa=ZthqDmjH$BB(dBIl|_6+!_Zk^6%iekbmKSDsgpz(BW z2&4i|v%RvQdJd7}@3WkA^c8Wl%rN-Yk&QwuSPOjyF{Zz#AAAwuv=_1}wvU?7;pQ@s zwy2-lc13&2WrUT%sxJNV0I2LZ65bz5D1=eP=vpy6S&5*eg6dNRPaucof-&c`UIiimME4~<<<<{D)2Ou;Js)!WlpqLJ++1;cJk;O&7808bs)l1K zdqh#d5SIA`bD$!sl=tLHDxzHaPw~V-c%eD4dqb|1D<~}~SCO8+Be?hb1u==CqJylV zo8HWHi5mj?ZH#}rEWgo~^WOxqHihw#ftlBK+o({~7HMe{j89pJ4dOI2-QA2-_mVPh zdOP}~kDCAqZ688^TMF$hR*RlO(ZsdW4q z{r5&l^+9kpopX9kG3stsN~O`h!2B7?FMI+2hrIZbN$Q&}Zl__QgzMLMvbV(`5;qtIOX8**D2F-DnIVM%Oc+0}L@C zJq`9?CRj#6FDSb57k#s@1=$AEcBzilJy-x^ zqpAs`ipy<`={Oq|q+*2rgc1W_>$_js4Ns%1M3%=Co_n zBrL*CCvWWv8(}Jlq7%`?jB{&zaAmK6fC%P|z&FM;o=m1>$ex$x$s%Q3JhZZ1l zD`18NjZ??FniN;uz+kqD@ zo*(womYDO1FS0(2Trh(#7M#V~n9V5MOC@8uecX)Xgno<42gk%mvj zIt(2z^70&5S2ol^C6T$NpcY5;Z&Sr%)Mpzw5qkTYt%$vcWo;=ezAdFU=gpl@#c6#1BLhc4qmGMd!+>fn; z90&&RgolDw;K+qS;<7$(2*mcwUtbGk2dGdyb(DM8t(T*2$729xwq1PGw^}jXB-^Ug zQJhIGsv`Of0V8eWo!~d#Obvm{UVm-Rcs_-4iDWo}7|u@6D}|6AMWPn!nFi6vzPhfZv$il^Ec}m+qTolO%7$Ei~j!Do%7ND$XYSvl~vP8 z74hM;er!XK!i>W@(BJnWOTyON9-x}1;c(FXh35@ZDGtSc6?2sZd&wlJj zTBz!upzUUsa{*q4&V(?dJ$@=A0oo%oIhx%-;*1nf24@9oIpiWS zo7`vzgfARFyLaqB3tkfrn*^P)xb{kbXbIrL{%W$_|{o> z6C~+i;49Kb6!a0eaU&`=>O0SJj;qV|Xb{v2P*qRb@1}WcaS?(RgM9=}W4eY)Blj94 zyj3aDE2}1Et_wWXx=eDxl1X^zYnXl1fo`{yHI~D>%6r9Pz6>=VEcK$ z5NGQ^L^;`j&@iy;%4dZ2LpOnuj-S193lx;h7odFt-yHsehbaQ6SyYJ&GrU8aqblCbq&bU`7yJ+sF>q1 zt&ipA#)I2mS-F+tq{}Q!z?49}%LM{-n=R4)=n04?A*zLm@@ka4udYnI7%x!WLUWci z+Px<*1%IXwu8iVcJM>uPga%RF_|DZ|VsLWNJh z08v1-g(Q7b6(t0?X#5Wpo*ZT~WJJ%c9yol<4lggTIKKM6cDCuIg`LNyBLJaK%9L}0 zH`jG2kXeC@C1~Q5;x3wjZ`|wQ%%US$z2Km?u-uodpuc`Gv5&;DK5Q}h;+j&1maJEBae&v5=ldvxcx7ij{)Ots2rea(i;P#D@Hn#uf{KC^upttTz>g z099mq-KSqt?bO0{r!@r;h=q3B#%G639>B}(m%mMzx8@{MxJGf#*TL6a2KD8uu0Zv`g`q=E)e#;b?dnCarNR)yS-BnI9slT8DAnA*})28sGHtp${N7{Gz@XbT-%>g4n&xIeW^ z0BmBlBPzEQ4X3H6K)(fvz1Q;%sDTePq`9iqr2+gG->1rohnw+Sas- zjKL?R;?UX{UL0{CQAFjyrDWdPK=Vm8YEQ}E%##?q;aq1>6ci)sN7_eI7J=PqZUtAL zKd^xwL0=MF#W85oaP`q_&LFW$>Fpdrneo8afUkIkjWnGH-*Q$oJ^pcqdWi%2Fi*>( z+6E_&LL=73RpB7Y(XnZGk0b?KsV?;it#dlpHNsv`eus%CaflXF8)Q%!aCU0b#}~&N z9eN$1kd#H}OiH_ot*)V~f+%#H%R^~$!Ip;2wjtDb-0YjkCc_F-q} zBzGeF-}2V;u}X5ChZJ==u($R0y9t(_a_$03=>+$~_c|w$>941s9C zGvlkqI>dh*NXL6(b}~uzZufp2uWGoq2+wZqGQ;lZ)rD(*ojIbx{~BFa zxqb=vO(f7mulDFbXGRj<2K}0SVvS`>>T{7F)kl5@0GlI_lhA=%#$OrdCtrV*Y%|HC z-$G7m+SmYC&s9|33TW<9myOQX`KHiDQ&^Jl`T6?6dR{HoiaNreiSb00zbZ9Zwp3^{ zvCEI&b9ic<$9e5{IKPKP(cLS&nNdl-ah1Ndkh2@V(4pPc7sEX_U1|LVXA^ip3u!7X z9;GF@K{MpF?OtJEmQtI<_5=3pU6h@Hng&d)5rBm;(>BX82@UXqfoJTvqn3ZG{^X3i zbJgyloNO)h`p^JDy(8y_o+kBnnDTsp@S83Gbbm-{_Z$_epDD*u(6;tJwv=_GoaN~R z6X^vW5Wb7wtHHM1&HjY)MORP{(g`aSL@p5^w1lwm{YH6~0+&k-m&ew<$Hb2VaT9x= zlCak6eh9AX3a*m>yfW>Qf!;-b8L!LAQ2^4dK*$6V+GAy%Qg#yg6=|(&d6=*zZWRfl zPYukq?_CCxFY|IB_E9t7GjJCU3JZ!ll?NzJr-l8a@*t~y(w)%+2~eip`*v^|xf zSa<=W?AAT25w?wQx_rw`j!;S@Ql-MK-M z(u30aIk4W0jQ;>ctgaVNNAARiQCft40H^TghR7Ut3rhl&vq9g9y(I4t*`EnX4HEHc zLqPF`CJLs6cAJ(8{Zw>gbrAS_nns-9@tj%_mA(6N%Hk3JAEhm$cjh6l3#5#i1XK;CYCKP_v=p0pJ2TmcHA#F#DZTR5nt=d0D+-1q%UhN^3j|J0 zIr2NJW8!(gWmQva9`Rz}z~kHZufXcqO zSpselpOPvxx7rT7XWS9419$*}PRcmutF*3c6~JB_z9I)?KH`WtYx9rYEWXq?hAk0B z)_MB!gWpg0rS8biIxGgUrbywbivjPw*>;32E8@Ho)Rs>z>0=+e9T_2C^qx< z#@*OO@h9oRiTNBY<2Ci8OQW_(;_F-bPW|bMAL9%@$e7f-bq#u>hipjcleGfD&3}U~ zuhpr6(6`0Gk?F?8)f4RIUfZKutMeq{cOqN@l-=OLsWN;WZ)f-7Ecb+{cismsPiq?< z3jME9{@RMUKnO;j3tQzmNuo{Pa*TBqlU3YIzJ)PG3ijEn|LI>NmuJ0Bn+}MTVV|oX zt#cJ23Y`B!XH1=jj+0kS@MUB#{oq`vxR(8v^c{E&-8}4FJ9m$aYhXYwf9B7OU?k>3 z6I(bFP$BzF`%=6@UCP+@BFf9<{r@Pv_L0@6zqRe$~G zqw;`@G(7#BkkVr#LpGMkAO@@LQ+2(=2UqxhA5RARo%ABmmP8z<5J1GHGmxEdw zBK`W^Y9IjF^{$_s&0W4uj*j|E8^zv`P7@5WSX_%2boYBPSP<$CriVeDQo*hsQ=2Yq zR>4moGc`spZ?c%EhA2+K1jb0eLzN%_m(3KEHl^SWP7n_a+woBF5>8sl&ZxCOEuvd| zvbcOEdy#fEROQoYPI(blh?=yIOgB@v{!cSdb0%Q2Gzn3oOvL~RJ15V`30Wn<@tH*e zmm#or^OwBfwg~=@7=?3&vQEClM0}XxIP>d_Oxp;lvmAeWA+nicFfMfR+y3yPdAuiS zk_dd`3B;Mgnq9!pPjT2dIsWdHEe0b2`rI z8-s>gybav&cSNvfnGq!R`|?BoL?3z>!|*A&2*{)!ckE#`kK|Db@aZ)~eOiBRZc>d$ zJhFXsv}+qX7+>F(7NO>adnu)wTZyKrg;_bfI?Ay~b10^W2p};DZfi4vXcVvJTyujWb<_R6O2GFfR zYyLSxyH!{!cp+8P|6l8yuR;RPS!$uVQfqIZ#c58z4{(rU3k@2Vg_cwlA?-B^18WSh zt%bv;4E94flSrKWxbJmIMJIP8#fMmiI)hs+yBeyWZTvB6l-JUm@kdVW4WfU6YqWD; z)4DH1a&aY|t~^`PYm}eGa9j-WW+P$7PU_HJ_OESxU49GEm*92^#}GZB#X}KhLS2Sf z4b?{Jug!V7HdHTG!Y?(-lLr#T#8*F4`6hhV%WC zjs`CnPw$oE6nKRP6W7ilZW`&3PL*3L*o7O@7XgOq5 zQ56i%8gw23aJN$FprQwOlCl4y{b?~a+3OE@Cz5L8jb1E>2Ie#_U=i|Z&5Cm(v=~q? zklB!>@gUe-F|J?^GG^9RX{$NL@U~8u#7dHvCgy!i6aO4j^oh(70R6#A{{KQ$ zhc?MA&xHrHae*fQE!bka5rc>G3PZPoVoTcQJ@Zme%{>DNpW2bS~hu+Zhk>Q%?_D$A%|XAF71tM)oXi0%y$aF@FAS z_*UFRGiAy6GHOxA;(J;1VLo+7L9z{fh-b4U^aQ$hVpbJK5(TveW+3*-sF8K5*2}_( zWR&+uEy&0GMEK7R+m$QzCO<37im1kVeXy!}psN`7y2yA`VSmSUfnXypFtVT{)>4l*&30{d|QTrKyx)>4-*N@hbu_Gw1a z-=OmnK;mS)ANVdUP;D5@S22b##SJblvR? ztqJF%h4z-r=+HooGJF-1`+In+U18S)P(pwOELuFJWB&KLk z1yCXI2C&8`#6Eqs`-N{%Q`4XpXcOBN$w)OWKiOq$S-9~5B-{0V@KCfb+za#`H`3iD zlqieiCl?IH#~SZtaEB}9MwkA=chXZy)EfWpkv1x(*`W{N0N%WSB+89$JQFqVY1&xp8Emy2#A! zbwIpVE{lq;XmtGNo{n&)#HHDLmzxdw66AtM?5Vn7Tb_fP!Eb(66(B{A;XM_d3v@gK zQ`L-58|>EN#VmhCPSMkh8V2Tau4@(jXn~#@+*%li(~&|MvfVT0a}kze^3)uuP)ZtL zDREi&j^J!J?Q3|$3nE%LHTN9bZd*%m^DhkPHeR~X$-Owr##LCsS>-n?CN<*0`)&!$ zNM%AWbbiJb;)%q*ycK+tnwX4grcE(!eQ|jlkkz>8J*}0(MZv3`&t%k?{3GOeG+P^s zveTU5YwxRy3(CWoAcyyoRq1IwhxQDh{=9FoVME1WY5sU#L3-(OwPpL}>*C2YyKQFc zU9N~-GoYSBYna+ipSi2)o7x>bECtF*mNX{1*D}q3F!xz9g8NEu%`jWwI4_=r8JLg% z+Uh)|Nz!A{qMwhdx-F+Mvd5%+IZ zh2XL4$UVo5!Kcv_96kc!1rbyqaRQkGd{Hs zW<8tS+#e!g_j5@473xCuhfl8b?HDsJEkKVxHhmer%LBvG4&@+uHq?b8R(1)eSh9{@ zRK@V5rm{h&j(A1^Qz>8H?C5;n&b2hey@O}H7Tw!{L|)%(Of!M~&IdTng%>Fmy0Ke+ zZQoTLVqJX^#OVEx=6}aY4dN=bDTVZ?7p_b9^nCwWaj7wrdqEyuSnD}PbByEx+?N#F&B1pCN;|M{7}oy>rDD{%sx z#zgFsf#Z1ngUhve^0(x*hYIN+&Z<^|I#{J*3%tItBgdsZZITIqP{>lieYJwF;YgJ~$2NgBQZSE`6H)`#y0d%~~p z*QVxyqdGX{4azj>kr;h@(#BSSj_aioiNT=lYN{gQWD=N@tIj5};%z$zD`%=JK*0yz zGj(x}n5v+jf|Y7e9s72YFF8U>&@;)oa0DuNTS%lHBg53=jXdZJ>Yp`0*7i(C)f@ zv_c|SfP!H|R*g73jlmolvZS!h1l{qPy-dQ6;h&IvBcqD+{Te6?^%O9{4Ow{0Z>w+b z3>~D#mcqKJimt3S2VM6;V+agl-RWq$XcX*ux&I3}-}p$Hgad5p((a>yMw#E!iJW#1 zBVv0B07D=|9i8a)IUITuv_zgC>kf#k9n>6&yOB)S#U3eKJfano^^z#PqZe^`8_Xon z11JA1mrT$W3!Zefpnkn@1F&vy+`3&@5g@adF+dP;E+qXpXx6R58}nFCN+Y2S{Wuc) z$T0V@6|UlUVhxn)1EIRHxhpbp;p#o4oXHQ8s(~{Nay|QXV7v+jDhEQftXxesiI@J=W9}qV?jL zP#gPt@C$W)`z63ICUHN|u~FNhWb;U$?QTY7TFIx5=TDGU&&LZo9^z``g6ax}{kf{W z8?O7DK)Fq96oX%5tf?i#mQd75$nAUSdpx0Kq4g}^@8`Qgfe+MT*=cCz2`tFw1T-7z z?>!sA;|(oC%$txzmuCgy1`w{%rF|BwqLv2lkMo2Y2vZI}Do!*V7}8Q>dc(O76@i{# z7?YfpvwPOPHt=C&>`3WuyS1+u)rh%Ca+VbN>&DFBz=g!;_~D5F?bCMN_t3x=i!SKI zsj|VrEu@Uo(tugk(0N3hw;UEt3?1+^z|}~nPx0Nx4Phr~!qb^s{>5C?%9o8cO_xSV z)>tf-(vgiXG~&n5gqYo8X0tg15lj~eEo`V(%l#M+0MDfge5WkV;zLhQT7uB9P4Pzv z{lwBhkVXuaJ1o?@-_E%&3EEu$G2AExi7@$EAsI(ms!~q6=izB1os;*S^TC4+ZSfv0 zG3yU+6_wZ~HK+gl#T*rD;pJ^gR4qAv&htE#Ec|;IZ4AM+3q(?Xx0{{UVDE`6w`aZe zI82N#3cyi6hJNANjNb;2{WWBZBU=6uReKH9-QneJLYJgM^+BsZ=9#t_X= z3RB5;4Lv~9npN@*mmVL>J&8)c>1{Ka-}1b)G2Y`2$Z_XG@C8_lFdnO-(l|-I#%tq2 zT-L;C6UPUe8|de-sd==>DZ@`UnOsktraBc4P=KnYlR^B}bv3q~&=Z}S#L@Eac|(_3 zmC4vIz^<{L!)Up*1S15Fn?0YjlDxLQFgmu?;JBs%{@>Ji)t}^TbuNOgvvGC`&ZN-7 z5IF{j4ZZW`w+O zW7X}%d^u;3BTf(+3oQ=$%`+Vfh8O?=RlGa{#j>1zD_sjf=tK!~&UX zen!Qfs2gi&sRw@MYR#{Z_{en|AvTnq<2x%x**8ph@<|A#olQx}Y+7_@S)#>UD1w zS_fx4iIB1U+V};AmjCx+kyOldQH^*EfO$M-`0S!3OnC=^Ua%pR^GfY8VumbRR8Fm| z@+5=twKZe^HR+d~#5T_L2z(hH z3sFykjSidB4%vH~DXcb70D&YnecXekTN=8CX}k;Vf*KtBxFN2S<8c`>F5dx6mZ$=c z8v7LW$2dna_G%4vmvQ6P904LTxPDOMs;`lrRF$qKj@yD5)+z|f2Y9% zD7ztH(?n7%VAzq`Y-Jn>jOCDVVH~Opas*ugP#CZ0)C4(WjNk}oUXrO6Yb8U$CF`pG zcGNqBPwpGOmULKbU)(2QOZXW=`GSyB6!b&@2nXTqNP<08vfj-?DzE_pKf;H8bg>f#3qpYkI<*EaS;l7a zA;EDyjDE`$R!KRj{2f^teIkQ-YQuu|7)*KpB+H$G6zV{TUer6MdQ^u`k2vG={p{AQ zk&BO9#z5HhZfz@$@8iIyu9sE2w-pKL6U)-cR)rtX2$dBUKSLftKDBt+A7LOpdY6T^K=$y=M*UMg z>7GXywn|p!4RdT;WIW6yjQaiCZ}e+?;MA2FWZOLjJw9^hUs2z5eJOMz_Pf%f=y}?! z*n#^b9MA6+@8^5=WENIxg-Hf9+-gT9k=rA;-9}lx4-M?P-Hj*D9IzONNtueq(`TVR z;&I5Y$xv_MSad2Nud}yS=1m$$UKlfK3qnCtqP{xegRW_d0wXGrx4u?zMHZczZ}|D~ z)HsecreZcChN$Omz3;sq+W``06=>Z6f4QPH0Lo~|_={2a2oT-^r=jX2X|FdjnL1Q2 zXiu|3aT1YZ-T^;963_Ft{w9huUuDF0ddjCpLlGBpFJq??v}u7a6Dpnma*&11C&FfJ zK-eIn+oXyWxx&eDTYVYET%}}{b-~>M=LrChorcQ z(Rw;RdO4)-)DNMMjhx3nXz*uR1H}J;CV~qSa_7W#P++l+GpD*HkkdSw!pUrvqAJn9 zz{eQg-a4Xr-QeG@nMDO^jtO2!Vk$n4dSlAT#*deb%$4XXzlosi=ceju`K2KWsP^g7 zu?KBnhG-Sivi($AZV$!D8NSeWq5hcShS~ZXjbr!O`muI~C1Um2+WYxoL7tLG7J_>rzpg`3ql=mj6?J0l428c=9vgOC!nVt6XACe!w zHX5}Q@8OgOk1Wyfp@TgS!7;+GcmD<+{djqOnV|nUAp~})pWFEAz0JkE*TWuE4S9X; zaB2&ib#`G%hav<0NOu7AgyXwphBoa-sw=e+NYrE$py69K=oargs5G2ih*%Rq$b^pn zSHZ<=PyG#oJeU)afGk)r|Ez&CQD0YRo;zil~c* z_pvd*hyHxZq4Rqan*mxtT3Qu+)fPDQMExXr`jJMTI6;?3E7Ciw;L|CARl!fxn4;}N zgNxZbwKZHw?`h~GeJf-d`!9nQgWFG=R1X%%F=le535P}U*c@@qgVp@xjiZqT-?B>2`ai%vyAj2DINVBk3w{ArrSrG>< z4g=Rc*I5!Tsx!Jc_(^qY?P44LU|!og4*tX%Y-H7RQ;#XOyFErOpTix0B&ays1T5)q zuOYZso2uQ)E_FgTZV%!P%E82d`XUC+V~Q3(=NsX(3v*orld9Vghl0 zBuPQ0VXy5A7LkyjhOf}ZB0_Re%nQ}V|AmRIjM)z`vv~4!2cLtOtGbY#NSIrr*oO#_ zCunzaA#}NhpsXNBZsqh;?LU_0dy;uo+4SNNVrDlB(LAEMsxz< z@p*b*6%d-dKvcPE@HK(DGK!tfX=JH`MFqwKCAmMkA?aJXmAYoE{8*w4FEH&G$|dU7 z(Hgr?&I1T@jX<*?$oJYXwiO)wC1JqznTEjc@L!uwn?v?Gbx+p?KiUg5ZMG_&Wb$7)qPS)UoZfK*;QuQMa!vo{spkafhe%c5Wq)gy8|Mb=uxTH z;=2nk*O_XNYbs$7uDR?j_hgKcAW!wlz2@(uQO2;&USeHsS%&j=r6H&(xv~IY{?IY9 zbijB*4S(ra+G4G=zzUW0(`b&tl!Z9}X~&fmmw@A$Er$_Nntx@F-zO+~-;WLto=jCb zau@riCUQ1G68!%#; z9SPA+*xRC#4~FdT5*pGjXUXqwz!+8^j5#mCdk)5z>XqwM5B;}^k?FzX4Wih(jCFw-saItIgkgJX9)E**Y| z2k&mj)5a__-1pkOcPg^%b73}{XDFHmsfWZ~Hdr5jTTPp+KZ`n3^tDWs-Nz6JHt|B5 zWW0z1k>^7j?U+NSwLDj!jUL+@;MR3aQIU4hN3ZW!{vgTW9>Y|SqTkU9csvq;n_8>; zW-y!4#|nco^I$*%g_tDr-kpjgKgelbwLMJ2&~5l^ zo_9htl68yu0a}F~mDTgS^g5ME9h=!(@ zxZKWR_o4(9Uwrc=b+OoUXja5H1ouazIRo-%5}$nQu}(v3fVai9SjTb@2)_D1LNmD=P#yD; z%Z9k60mUT(YII9Y9y^glf0$fUaIYruYL8zVQNx^3w|2Ai z7s+Sspi=DM5w*mCqtUs!2buSCTf3!TvAhTR%Ye^jk}Ss0PxEw(Ca`QWG1*8W^|wvn zyhK^!2Klpk4hW_hC8_CRMAwTJ5$CoLC9qB`)VKQf8q*<&HHgQQYY2j&6NS|2rneoF9r(<# z40hzpEnQetLxO0ah+%Ki%eqwapYYdt^W`>i*!D|a3kWcFZeS-)#IZ#ABgal8A|zB1 zZ@0Z}k%UIG!i5!KXHX8{T6!mP1=2lGERzlO^$kkcwfQW6v>8Q*DA1(}j6dDxjcsJ? zN18ptw}X!4nQb53LugX_;$joXO@Ykf44b#d5%QGWSJ5ohc)e6PVmp1-d!O@Z} zP`O%&NQ6XuU)bCxP<~rL`M0nU<0@U3tJD1a4t5QDv-y5l0_vhaPmiUEta3=d506} zl2QM4?}W74K^v1TBadwfcqtf`n4JD_i%E|Vx2047H^VHvV=gPf0Q)Y{ z(CU^a>aJq#l3Rd?pw&KG{TmJKblV*2GH(7K)HSo1=tK9~K_RoQ_B~F#T`nrla8|>Y zUx%vlY;D9EX)bxXdW`Zg95;9JIYyFdzh<1YIwPf%!%Ev@w_QS(cypO+Wjt@+aHrD4EiRhKkuTgaCEaL=WC4EPf{AidR2_R=^zph4mx zOg*ImR|R@_`-YAMpz$k<#|Yq|IaNErw|z?c;Vfy{IU_zDCh3m1ukDkglPPp$oKa;D zwsaBVoU^EO*1-Ea|G^zcdc<;#$-Qbdet9oQV8b0+G1~_LwF(P`DW2Hs`WcE@DpAR9 zG^s2)5f5S`xyy$Ki2F^$Jbp9ha<-e6)j-If(nXkbIr4w~d!ToNU3y)jGWM`3xKgSL z`&zV{Y6--h>L5DGauQ(dUSpTk=2C75;fZ{jb*;eP9>YSLiH&t~Y#+MMRFe)YAm&1? zkMc`(+i#J-WVyn!QSu`QrWYX2gE@vZx#tp?1F9J7;l}vCBU*`;7d{q)37fSc)7+KcRYE_2d(p9XQHjc6tz#ZxlYYbcOxu6E5oD23an@f z@Ma)F{+-I<5&@V3XpvXYJU;c#85F3z#>wA^m{L+M+Fa`S?i;2{6Yxjw$Z8YQsec$^ z@oWj=C6=56Ci7UmmP1`wdVDT=H@#;4{5y-0cmC_3z(AL_GxldYA+Y6XieP89NYZaD_V z9ZN|p^IW6AeUb4hF>~RdFfZB{CAV>j4pfE_iM8J0RGS#XAr(!#zk zKckLA5?(ih&|%Nz@eeFCL+4m_jt<%nx=yW({)Q*?iN*wJ5}K$sbwFkI;i|Ur3HWzc z3-V_3ZE%q68!5yNzz8|RM{6Hm!W8ou=o=@w%!)KK54==HT9l|^`#ODNO#tc+nMkuMX4lJ5kN5}31F*s@V11FO?C1B7k!S;5pBy0>i9KH45 zIc~3a>LqsM@gxUf1iO^E|FQi(2B0=TsNL2+tl$B0JpfMw@j9^_v(GZTk_qOBO*fD^ zm1fzNItt>^n8{JN))2%v`h4z-YzTvlP?#v|b_WlYg31l+y%LFNGA#93@t-I24P=Mt zaOBc&Mkv;T%h+LfDAIe%4BWRp>xk;!L%fH51*F1xaH;*oVI<*5&0?A#^$kmqiTfy| zM%z+Pm3|~2<4$+zzuv(w{1CYwi=~tl+Z-mz10Ks(V|9j44VQu{P z3Np-h!>MMMkx(VBlRCr*$x1NlXl$eZ$vAwTd859#Juol*ili8e>`TO(2$TtSO{J1Jn z>1M-#Q>zAO*QPPwKBf zIlV;#i;*?R3~5o;RsV{suF_p$5n+yU1`E&b`>kc!KETgbCh>w?K1coFPZ8Q6047=Y zDi>PZA6i%Cgtm%W0CwE|^4cHt&TU1SC{t0}!In;wn-5iN`8J$c}HK)-S!0w9GH%LH` z&`i$iO$yLseoJAz>tk<=rmjp?wDW7JcqoVsB3#Ei?Db{pb7vKW)})^-?aW9DLZ&)m z5OhBJ-*(~oJ`JDQ9ii?cvO8U&=I<2f9O$@>S4}68KK>Ot%?fC$no}npzW=nj-tamI z_(X!DBP8#cr-`~4=}jU^+1RDM{-4}IU&FG@2p`3XS#6cf9yrV!1m$vwv($1g{;H>6 z%KRuC8=PV)7mU@Sj?msV!9DRU4G=y6Az(&|zWm8MXfJr{{t&2N$vk`zb>ni{GJN&< zNrCc(0SUT@{L1}beU~&=fMv=7JVy>O^+d+I2~t zC;-^pn?Psluo--p5^9sF#((B{dsdUMS*C>NO$dNA3ze>1AuHG>iF>HRM302ed#rA= z=_APmA3t{IQO~;{-o{imS3|n5*Atb~UM4kG6EuAz7U@fpCC$qf0TbpbE1UQ=LjdP1 zaP2xdQwPusa8nvWT;XSV4Y%BQtL|NemjFJsGXRr2J_HB{H=zxuDG7$VpEoc>2|e)P zV;zCRu$!fTBKvck)h_@?);(A_&riY%y%G@%BxyZ43-Pu+2;SUWOEm>u+ZTkan6o3; Tu&EolW@@8Pvj$C=!lpD5L`Upq literal 0 HcmV?d00001 diff --git a/MikroMaster/20260521/20260521080002-Config.rsc b/MikroMaster/20260521/20260521080002-Config.rsc new file mode 100644 index 0000000..71466f6 --- /dev/null +++ b/MikroMaster/20260521/20260521080002-Config.rsc @@ -0,0 +1,3445 @@ +# 2026-05-21 08:00:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/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 wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=WAN +add name=LAN +/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 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 smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/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=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.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 MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/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=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS 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 +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/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-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-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-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 +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 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" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +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" src-address-list=\ + !VDSina +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-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + 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" \ + in-interface-list=LAN out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment=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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +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=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/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 ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260521/20260521080002-Diff-Config.rsc b/MikroMaster/history/20260521/20260521080002-Diff-Config.rsc new file mode 100644 index 0000000..315a320 --- /dev/null +++ b/MikroMaster/history/20260521/20260521080002-Diff-Config.rsc @@ -0,0 +1,6 @@ +3225,3226c3225,3226 +< disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ +< src-address=10.30.30.0/24 +--- +> dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ +> 10.30.30.0/24 -- 2.52.0