From d20d42770cf2643730e394368d30cafb8522aa87 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 26 May 2026 18:20:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 26 18:20:38. --- .../20260526/20260526182002-Binary.backup | Bin 0 -> 258616 bytes .../20260526/20260526182002-Config.rsc | 3462 +++++++++++++++++ .../20260526/20260526182002-Diff-Config.rsc | 32 + 3 files changed, 3494 insertions(+) create mode 100644 MikroMaster/20260526/20260526182002-Binary.backup create mode 100644 MikroMaster/20260526/20260526182002-Config.rsc create mode 100644 MikroMaster/history/20260526/20260526182002-Diff-Config.rsc diff --git a/MikroMaster/20260526/20260526182002-Binary.backup b/MikroMaster/20260526/20260526182002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8915e1ae113a1b46f70b07b771f5286c72f3f2fe GIT binary patch literal 258616 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퓞Sv)dj$tBQG&=|K$PtM$n;|hFuksS6#3}>)e7DfD)@FNS8o>MQvt#J zn^G;8W7vx?Q1UI2Lde72m#HF1BE?1ka`pu6?##?9u0os^b_^?hs@LoYb9rPws<1HG z{Pl}Vy1aA>V}%SPCmZ{;I*pE^AVG?|`D|KA*HC1zNZ@SgD%45T*FO%s=2)x+*2*6w zp`zVJiJO?aau+>4MN?$An-0Fj4)tl4G@{Lb&)9;>-q}7E{1>Q5dc^>EnJstzP;G)G zbiaC2M#A&2L&blX%Ct>Q>MsZcs|Y$>+2j+o`{b~Cb(_knSS%t7`)Vu-4A=V_p{82j zQohhF9UQ;=&Z2m$u(>zl|B+A0{yd`aIOzuSd>7>Y7%rfegwZ)#Uz%K9FGW7dMuV)} z`5tIf^?ibgGHZe_hFENz9CU9ICXY$EpiHxh!O|7ss~O*1*9~K2(3d06p1H)AOsY54 z7kO?%E6=D)7reucCG!d3ayv~u-#;75bl`E!J}SsS1j_|1IJy~aB>ynDl-L})Y}V@T zXYtfNz$o&p8$dav(Tp076>bvc2hDGW)6Lu4XM!hVaUKtKZyl7SBMC^OdeoG`TMfhC zi(*>&@O&Beig3N6`t<)9HgNC(K1mL}kR{Pn=+_x8|0w_ZF@w|Eo}agwj_DiW<-ZUy zBy_x!LSHPhqZmxZO73|zJ^CpfGfV0JQkvgUy$MUH_%?>nH;2(Vr=)@e%H=WY#BH&f zP#Lr+0}qEi-lwWCYW_HOr;&YL7snXMfD%-CLvcNsh3WBGDh)cjuZ}N$Qu$iD2A?wE z+5aYJYd9mZBUY#nQ&~HSU2<@FtN}ftb2@Abr}<1dA{=v7Mc=*9o1um64m^s(!)=~K z^GeVoH_E-A8`Ddm0ZFNCipW?-Lz8T(-JArfTuwxAq(*qE-HYOF<{;}B;Lxfe4x0q% z;HR3Mdof4LFwRSV#vEeo4ycS;`m zb7iJO*%KFRxCZ0jVFh(0UV@??!5DTAcv>PXdT19m?hEUiRFMOMcSU`=r<@HX0T}Yn)?jYW; zfl3@*xzfw^)l5-bliZ^|-SdjbvL{fw0%?9D3XO)RFsk*COk(Ds3c1g#=oYBZdX)cS zdMr4X89`osYZ!g9jRJ&lvI+;_?gN+7XMM&aT}*xuQcWBHu<-ZOZmpm%LcS9we+UVx zgG+!5`1FdqybzUIP*iTt$MygJ%MfmG|4h-d5VaEW zkFtv~kX4Oy%#HCp(_#DwZ&x5C#9gcd#E>&$^mBG^+)8j68TG~Wvj`w0E_L-PQHTa< zNxxXz_Y{k2rD9uF{$|RFfUF%tOtKe`$j;1f39+mC@?c5{{UH4!EDH-w$##S8N5D1UBw{jAg>*7-6_V149SIBD8j}?}dC}Fw^BraAQxTyYjMU9g zk^h2XA}t+>-533^yLT1Aw|~g2?0UI&*yCt%(m!7PPy_mnYDN-Qh*HS{3yAp`seo2h6sLXxfR9 zpyfu$`bCG7wD7a%`B=iC(aTL|kehR$ z%1ia59j`}P$yoN2*gI{%ZaUCuuQ!9ks`HTx7R1bC)e;u3G*M*nxT7Hq~dqqk&kMJR1t63zHK+{ZzJaLt)-|Db3ybRKnT!v_ z4Sm5fR_ZISYuE>+ck#D{b9M>&K!w<=)$ThNK5(Wwr`4vTVUY4Z!?DdL!wPsTUG2pG zZ}91IAobFa3{gvm&>l1dIOr>ntSw!Ls=i)F|UC&A6p$El=RTe1+o^v1>L`Gdor9EyyP>+4#(I?mZz%d>|bXJxCzLsI2S1) zQIJYBs7?M|ZjQiTF-?&4wDY^52Fi$;h7t#W^?5tTaQOX1gubCP1GZI<0gNJqZ(qzD z)Ypa>l6K{q@*;v6@u9ju>+{%otcbCtGQNTemuE--KkuKZiDmbU6CESOiw z2M0Lz3(;y-x$RN4&wy< zg%VP$9pI3^6KbIwy|u@bw;SL_()rJ_zn&fOx&fALk>gUi#uDfyv2jZw0!xQ5?xCaGAUQ z*%^O<=%Se6{B+0Y=}EUTg}>2ganbJY8z!-4H~HXZ^+l<%t^UWl{T$JQ^qcBYSvtcn1X_$oMOAv^l! zDF=Np^pIAv{qWp1R+10I1D1-=&IJseh&S~ZCOEEa-JGh5I@Yxv9(yexflwGb*NEFx zvFhZny^0nc*9hwfIOH}FJM@TPo{g)rL!yB+-qMwo(8#w@Ysc;Wx`e%|#fnC=3^dCQ zT@>(JZpx5ld&3&s=Spuf=3PXgtKh>JVKony@dRQar;HG40yjrL$RN)gD3Q21;f!H* zc&1IggY+2lOBK1C_m}wjPK%{P*-UVvgcnX+BzZ{zotw$v0TM>5jrH&j&UgU(lJd3- z+b24gId|3XATBvJr}02jy3V+W-Od`2+Z(%P1VhS)@oD#LjN|y4>F$v;@odGg2`b~c ze$T+1Vd3(Nx6=Y>P};D_M)1lvy`Bh9szh+~^9im8_ZZ{<5i9l@r;rpL??;FjbZd@Pbx+!LR>b*8Jx z$2{WA3i~!l^(#7HbujHP17+i|b+d1wrJm-N>gY@-ahWa_IeBsuD$$arsbdqW#mvZ0 zk;?R5MmVhjDr=uOIGIhu61W3!AGgG;SH7+G7Us%-`+AM6yWc zR6{WUVmsDxUaaE7PgyhSPt_^?=A=iF*F}#knk6{JxOMa2-Hoi@N|*k2LNIL}YO^z_ zEG7K?9mcyH@ZkZO2D^o^%7{RgE>aj47$g9v6Duzy zg4>o-_!0jxpI&QZOzfa!s9)~mad?Vcz-_}&8ONUI>Roa<)W>RH*%A4Wl{U~1Vzt&8 zaIVC!obgJ85`c)l+wOh%i1BN!4)Hx$oN)x@V?_wKIHr!W77>g4HFotQY4$vn2yZ=& z5#B9gG_oNq5)VJukBv*SSBZ9Ef=U0gNa&s|WaLCy%}h{Ip4m8ywLcZBja+YcQ|$}z zo*PBd>@>OIx51Wxqrjx0x(o^$sv}s`fuMJo3JqtT3+L|#aWkyuengU_p)7CS;4Dbh zd2T~aucRp;;s6#mp@n7O-EvV4LRd6rZ$NAJm}K5VR2pDfC?VS;+?IvA%?9D7O#S;m zpp1T;CU74vl7)OfkmKQOp~9fYuh{b4Ht6-ygFJktB9OpJbKsP(*y@Fr0?Vay&B$UH zna%@!xy^xbB!k0pqwrhH>Dygn^?a?PJ;T*QS+XtD>b-mQhc)we@Ay&8X5>#u-#s!W z^u6Y83xw$D7?=}f$nmwRc={E^2_sQGx4}LQ9{6MV%+$*wDH$X|eV;&7!Ta^biy@Zb zyh{Je-qb15!Y#sq-5a|v)5ZYm*kmehgTB**4Nlun`3pA8C2oO zM#Hhp2(>cJeVHY_qDRV>mb6p3^nZ5f`4AT@hO*?_Q3ygh!FQ9g$LAV)O!la1g)DYF zqY&QD@ReB>U%MD>8KOFiFpvKA77pY-&5kE&tzoZN`ElGDwEJIQ0-zhmOJ65SE#9>w zj-HpzrU6{{R1N>>=yZ)+ZuQ*|CU=yr-2nBaN_%Y;iK?O(@MyzCN^p1QKOv&!-%j&d*;MgJ*T)?r zzS5Q;Nh_~o1tL@JP4B8xKv&v+PQRpfXa0+V{j6d_5jXCCwZwP)>mMiLGuG*9HOAPi zBKXnIzz8)>_I0Z75pX&v`cI7${?*@8t!#6HMzbFCaRf-);B5lC8vO{Fb)ju4DSv8J zF&5)s+%3bLbQl%IX1nlq2zm z`cKR(lQgJ*;;t8cC@d~fQi+f9 zIzhXFHj-wT{y0d4uN-u8@{))ooF>akC}6t-q^fPXs_Bu$D1Y8tT2w&`FkBjRd`d86 zhR%RL(sw@7nzc%{xdUxCrEQd} z4-l4#dJP;D{6kP;`es%lQqv+MR}rv%>NR=kg%t}psx*3VRdC^x=j>VNrk=YTH-q(q3Qj$Wb$r*7?Abv5B@WpOHNs!Lx^fVQ&+H`OM^i0QH%LslP{brAjGtx(OuRb0JX!} zKU^RG@^pbjA)VC}rYiYW0huLfQT~QTfL?q}>3M}Dm^{2?F-8}zdac#D9+48Ix7Nr& zHYBk#a8PbMo!4>>29+CEaEqQybL>c?%GdcqfMQM$gLdQ|N&aOw8M7F|0=e*Yz9 z+Fwv85LRmR!^<`{^{F zvCK1_i6B*ss8_wkGk*>Bhr^@E2+QV>_3d+9f^h;tX8kguaWy+;E4SDLPQ%DpqzTtel>cPq%yjciK;cbQ11K|osG75trbqM z9v`852?m|E)375$K>f`+u>oYR$%Bk#955X{>X_)Ll&NnO5wdBk&Rf8 z((6NzL$^s$g=q50B@lPC_1C8g^e_t5rx1i_*ozea)$HFk)+FE=9&TX`QSl&DP8A-D zVw{SCVN~RvAa*C)L!FhQ3G!GE8h~!)To%kKg@kr19y?_NS`A-AZ;Z_I#t4|+Z-H7$ zF7y!`;N(~79kPDG7+n%xl~_m6$v518cvUuA8J)#9Jlm-gA5hBcaF1-G0Q3MBC9D#Kzg;p=&?Dd(5SZ+u9_E?trRsfWyPV0TulbG>s`slDZSrs!XjP{lvvRX$*I_n8W zq~lu4yP>B(j2AE>2xr!8aKo5UEH9px=k(rbMjQ4hr z$$uZyrcs+SPFQE34?ynj)uDI?2KNbP)ERw^p7~qOMdflRMA z$0G372o`-#bsIX1w5ODJfc~VU`rZ~*ALprQbxZLPg0$P14U2<{U+nxb`e6ntCeQ~Fvny)=aaZ|nIn^G1$i8kDl!^@(z#C-NvJJ*%< zSyGCL)`CYQ@i@Mc-URe?1*IHnp-~zB<0}M9(N^@}?c+E$nu_`t7*1ZA!)Amp~BTu`8;9l1LYcCt2dN;ze-!ATIhz7s$%3bW zvsJ*rKe~8v`{qJT@vhOLQ$)){HzJYg;+%{LM$ba}UKz#2%uL_iCkmt%ZVs8&ZSpzE z)pi-i1sjCIB9svR<|c;~%NF6y{DL;fmC9Qa1J)Q~G@f}hm{2I+s9j2>0gzfiSa7@T z(=@j#z+z8;0PS^yERpzx>PhCRJET+n$4nc`lFZNJB(OfU+{qkSfYc8N0z4`yxc^;x zsx}1P>S0gOA5Q-zaCJ4(RHhGF;x{>_+u%Rzla7rM*6p&SEHhtRdrj<`aIFy0L<}?Q zET-&D69W2O`;7~&%F+!Xh#SCR#(IBESz{FGn01Awd+4D6T)g@Npu16ZwK$j%fnyi& zRy@Q5p3W^qtRlO{$HcuWczCZ${7M9;tCiW{7C;{*64ZeF9xx3|9+R`G@+4hbj^usC za(mLPr=N4M)k{==pVb`c+h9y4P-$7B;vWS3zo9<#*t+<$F2&9vTFqnThk-3rT<|04 zJJSn(eU}-Dk&B#Fvt*6hhOFxW)jtS!@@N>X`tI;kI+rL{7wONsge(;ulfT~r zZRNM=Oy;m|ZAx3OWMps4^qk1*_A(y*^jI=CsjK0p@E`g!qNY451uIyteIbNVQqU!V zA`K!4cFm!bTs4+BrtzbJ9ynJpUVPA(m8nKS=?fr75Q-GyDhGJssPA@7i&&_`ztcAL z3K+RlkmA)FG*~|T5W>69iF_)bKpEZ!8vN7x-$QD&1JA`UXT@31`0LXK<@k5=41%cJ z_NNwT976dx(N)gNxep;!UD8v2iV_q;srAJ&OabEO26MK8f{rEZIJnR&xO8JBGWJ4R z$8HLXH%5j3b#G%(J^+kzd$JyeC>6o0-urFn9_#-t0y4RH(0vg$u8ODRV&=gOL(L+- zBZlv2XSnTOn*t$ss(kxb!d&8hLQ$$oez!4<5!oIG|-J+oDkRI$$+z~y6CfnYs9CZ28 z<3`S_yyd#BT)1K#xDY*3;78{qyc2N(k~4Z_-bYJmxG3;IyVZ!ZzJ2u--(vRX5b-;} z0X5y+*#%$LQP~jf4_ouB1^7C%dK)mQkO9~MQ zqYlE!2b`0$gFTv^Lhy+S?jI_3)b@~r62j0}cajs6VW&yLV_a~B5xH(e7aD#B2w=Or zzYa>i0To4=P3;bi)rtq3vQmb$<+Kx-CwCg*D|oX;O;G-M-bpeCwgqG$(P+9?Q|~yM zTqt;%G0`w^bADG`v+Wa}#A%ifLU8ef&Ik<=1!YIkw*gCL2=8IBEQ{pF5TZ{d_t@62G^GvJH`~nrGab8!MD=e_RXPHJ9Hm z=f}Knff!{~5Qk?1Ncgjv>CSk1}Tw1L`6k z7!c{`UR(YoGKUBdvn1;Z0t~V1Y2}wusIQN$Nv;S~NCW{Miy5k!Sr!YqNb$}S+8X-+ zy~}?liP6X5rp#{n2C@_w;hTDgM@b4iYC@HDiph7|C5hZC%7g_$L+~r0d-*v3Pf!jD zoOjG0Die6;Q(^HQ>Qdign(rRcArSIqi8|p*`3;p!Q7_(kekqoPCv&;_Er1O$cmM8GLx1}Ttdk9n#6}HWy=cO! zPrPwi?`v0`jGDrM*N;{KV;vVtmN!QL%-9jREGtko%+5ui(WrX>>LJG~@FN)9Mpb#} zn+NQf_v1}92G$A71fc#`$eJ$ioR!OMSoI*N|+a4 zN)o`u6l;yr>r9`VtzK;5@C&f>PU4tS<4q5hU#kIQE>i>sd_UeP-)~PF=lY>zrf+6` zFrA>VdJZw>GO7M=N{=qr-DN8i+Sblb74C4C&^33T7D7U7>_Y3MdX+mnj~eFRNyVvZ z{y1RobFx@L|)7Lt~k$;9L+unudi;(rA*VD^Pt@7vqGFwmI0iqzMKjyZROD z(LeszF$T_bZzPT~k3}j~e3Hs7$IA=#Ff;+~0o}D<6^eC(>E#9tsO9r?6-^w+fWbpc zsu~Twpp8J?ak;38rjdy)MI?lke;@SADBWKeb*Fc6C9)uem%OrpEJdK0eWPP2`Oi(z z+B#y6^Ec>Agmt2J$^9epRxVMGa9bzf;V)A_K=K+Rt(RyPkbJ;d@Ysm}oE0v{0dcKK zdK6ewKj{k~sTz_V#a-8fEMv2ii4gr#fnvBO^7H~?#F#;TwH|b&30YLS+aZD>81c3< zMAyVOWA|5~Op0s%TXk6?q9!B$;O)v`TN*Z5vK1`>9?cmwLMl9(B+G(8-$#eUCw$i2 z162R-Cj}JXLhPwp_Rhb01^7iXTi^Tf8A=-BUE3y~bIuq5ehZQ2Q@Ks)P9n*6^pK%x zyrl(ly@XOEHBhGD{5u(bKj?N59Cb&G)Linfd2Ft+AVNp#WrF%q7qIkN#QzLWRy5)N zf!P7*tlMRhZV`g zkn3dsSl(_>B);X;h?`K>!+`FlAh>EUpiAJVi-|9rQ8*lp^8Wm#0OppnevXBCi({_@ zro~Ddt-jE)*MC`{VzkYLH#V_ViWML2Lfsqkoy%3Pfi)&s<`8c^+|n`0qjWsbbaeA% zuTI&mR>C#|tmkL#P56*)j<)hQ*jR;+R(Z4TmoEon#htuViR%+uGA&QIt5t13$BCSr zg5VH3K!=Q>`ZX6eMK&?zG0BQSpLq1I{W)qS?_Qb`Is$u1N?684=E)Az{d9gq-;Tc9 z>`Vtj-C5Om+TzEq)fEvNktZ2TQF9Ml$AW3U#&Func-N*}0;#?ubv{Vnw3Ez5UoX6_ z@RxV`&lr95p_yMkmT{($2<;EwW1x&hR zO^;t3YCVX^_dz+rM(njuh?s;@WD*hfvTb9`FHxUDJNbebzh6amxNbsfPCcK*wM+90 z1<2{W1^`^r-8xWBov`0a7cEBh>T?xbc<_Ganx*28Gin>l@6v$sD6(gsO4#R`Bvor} z4b|Oj88U40km42wpid|(yh8vHG_Ky4q0LyIXhBoaPouaRZ!Sq9q(g$1FCyM>l=F$% zJ1+WESAE%7$jVO6aek(ZZ4t+5i5~qT>f@UjpVf1w>v;1!Kj{!XiwMyf6Ttx{=%qyo z$kiJZKGtY_2gF8*{juF!s@{Hr>3MK96l|UG z&Jt*ge^D?4ey@+>aAiA7Ere|;@I|M^^HMpANY|~#ggs_mLES9oi+V>QAa{Tdk-0yCuy#aGN)JBkWVk{q|Yq838%i8P*;@LI0?~%0c4Z1g1d?L{F zGFk)r_b(nMC(0fxr`85|4E$z}rDWfp_$x49<)O^ER+1}AXmR6Aq8eg-9srLxga zCckZIVqKD0g@1`;c$fy^3Z;ozP=&rNiv*5^WJ1_Jg-*>5L^K}__bN8SLJVw2tSvmT z*{eh>`SlYEE&!L?c)WpjXOJiWZIQKLpI=~?ws~Yuu#{0gw({IJFg4e^uos<-OsWS4 z6!h?mbliNq01?W6b^P@($x-Khvuu+44CSmM-{PP^5fic>hR*Ak#vF@CrotE+ao&DtZ~lD?pU`p+UaYt|mi#3cx4oXCImU-Fe!r^WY!H(qcJU@15LNpBC&gySOAWK79WwMQ?W9T*HEaJzZQ=`d_lrtopy!1Q=56h5ZE`?bu~ADz#b zU7LofcfT@3w~UW8Wdcta#N@8HIrv)~V$!Oi3i|~Mjh;yYvvjU^L0NtyiSo~Fxh6M}Nf3QL zPeW1(oFFD|i5U2ERui!^Wunto(7b%MZB~$OE3{UHK+Rxl?@{IMj_xyZ@&SeEun?^r z@H(3kP|fE-jOhBb|L)K5QM#a+s6-lrafH%d1|K}w$*~aCP$7AWpt)tliGC@6@#eIwhq$Y^OOON@)chMBJT`N7+VwddeGCz@9dG)`GIS+ zwBRUaSG8ldcK)!EeC_q z9sMmjC5HEpIiC8lB3wJDngsf$*m*a*Bwr8|bHH7z;^eih9wX)$1!+b>RqOFoS5|dX zQ~EbHq_i8(IUncDp%h>}-3MLRpSL3K>rgBtXM0WeGa;fcLi!ANm&CVvGd|;InTqmv z?}g9w<9Kk7b!ov!W(i_jC;G7~YX*K*MH_JCX9*R6W&GZa&JQj{2|xDcp7lGt=N`?N z?%jnqoi|jfT#};VnFBa;hVryyGFgB1E@FebEM2;;%mUM9_A!lBtWgLeI2_ShrbPT_ z`(i;Y%1?n%W$Pdks5qD-6E2^0zev*~E3*(+ILTiw?>h&Ob2oJ#Bpz{iMMsq!BnV*#g z9QFCmBy6b_4U;Yi5$Ibf&IpU>2&EufO~+SEoM}Yy_&VgOn|B$P`6y-8)tx55l$DqU z^t_YU5Ttb(+)}YJk7^Z1Gvi^Ql@yS}z!$6e^0(G1h?XduPKvNO>kc$yRC_ccPKOYU zBPKZC(R&WTlm#20?dA`75?7UwqS3+M462d~FwTtMN&X;UX$ad@5 zVh4PQ+CIB5U?tUlW3G}-PDl^y)j8vqqx@~Ono0j!W3$hhX2w_@756gCaclqnFEpAH zrQP?2M@a@haZocvMZGW?xlCI1-(>(NOH+ov)VG2bRf7&4CnOY}*g$i)0kKyf<2bd? zSdQOIgLgzP##b;E{(ARGh51@(jki}-cQnw9R= z`Ai8PXgA5kkc3GJA4=iokQpcZmy&aAr;W0&)ON0owwpm;HNZ8QQ)%A^g#T?^K$}Nt z^d&zD-~juLukiF=uFz0{jg|t}oMK8UQ3h>FA`n4WAsX%Or!_5?Cg=M0a@?}%W}!d* zojPGFXbVL(h191J>*ZGHH1#azMh|l?I8NpLDsO?fZ!u>j34M6|-}JQ$?pe20EU!Ck zR+`J)k|lCgyPrl5F|qY!vA=Mlt`s%k$mgxZ)Z{WypXXTt(wUhwEQZFR&rRBJfxAWu z-z@u-_25ta#0`KwXNw-;5%r^`X+O@+?l~VGS?a9JR^PsieY5X*&3>VY!m~8x4O&&z zZJWT}JHbmle~8VE_Pm*%-ylmRr5y%{C#d)NuQwaG%$@_GEKwT|l3qN)K7MY-61&$? zYNi`NQq--f{v;}uBCLhZNlZKP=GoJ`skJ_q(tSQ1=yFlyJIhW=@!IdgXe~9l&=#3L}&s1b(e8AS355s2`c$$EPwx{^cSE2Ul0 z{UM~T1m`rRUp>jj-6$ewJcKl|U)l~-L-4Iy;@Q&;-}6#C+pInYdhIK3u+6YB>t1}N zpjO6H!Z&zfACSTAV)^Me%ng71*a&F*pe20mMAU*%+ZmMK3N;Mc^ulzJ;uODhK|M9i zZ?ccuYpcf0M%{A>wpt&(fH!2rm*WjzaDe@FY&oXz0qJM{$&wpS*_YK`O=3ji{T=bo zgy?y=6RB^6=|I>fmHgxvH(qgyMT0ZZFR8$f{qXb(TF(%MlI;8GX}v$M-XlRPs^-G%2+VYn2*y#A^*#;}LY4{#FE zXUoRG0!hQnj`BApdJzvuEtl80o{n5~hJaf2WMQ!>*>hc@iosYf2UjL#_h)pZ0-1RV zFmW%yWj>~qR%5hw?^t+uC_|m)$3nCuFKB|RmU1fAvs99d&_T*iXhA~FWl#M$55V*{Rz?K-&c)dp(bRVKlU5KPZ}V8?Z;m zeg1m_*SE;DLgIg&C-cXRTtZ-;R662hb4SRxdTayLFj0{^!I&=nZqGe!J76*tK_f_` zu@mb?nk9&mY%d(B|EKMr!5Y2tLsRBq6Fr8-93h$`B2QdKh6XhRwaUxDZqDwTo5lVL z=RPfE`!Z)j_w4A&Oj}E;37e!N2RlW^`Y4UMyo-*y0P3f^3w zof^9zFlAgD-Q_a7QoU>rE1B2-5)>_}o!*;Z-^fLLh|{38MDEc_c)bbnk{9hm@asd; z>04=HM8->1=LOu4NY zZ3u%>=M15;oehlE6l<$pmWS!F`l@BVX3J@4`Z2RUTXm~Nooyr{xaLw`m#m~UClfHC zBsYHQH{>GDCP#bxk1Otz2UQN9bObFNfCod#WaTr^6m+Z zuITWS$plq&8jXZ4EQ7Qk#GJ?D1TEVy^JU8#Y?~Ls`wt60^CLEnl$EVnt-9oM>yEjO zPn0YR=;f5uD!*ZITaZc%W27d8tn~M9PV{80$K+zSjDxA0RqaR45fb2krWk+txB>^b zMe}N(fS{d7j=u6xAIpptFlw|3WGi{8Th@g8+y*vs|xt7wa{D0fxdT%X=FEng}?a579dtp(!3)5t6H>EMtva(BgDx*D`stA;a&{P8`K#TrblF^BL1>qr< zYr}H=oo<9HRQvU4AD3LPW(kPh)7V6(DoBH-qFHRYXmZ!rY4Ur@potih??k1}G6pa) zG^0FyrsYMJieZa*Bm}?UdX(DU-Ab1K@c)>WI+V`n^Ev{)B!D>V?kQai8M-J-O zmBE=(YEwp>h~#?+N~4nQnyW2RKZg=5D_#RcI|~#4CWUc--9IaPV_YyT;YnC@)50-N zxpTd~)of7!4iG+L*4Q2wNel#g-a*Dkk|X_Vq-ufsshfVrx-F0i*b^1N;qUA0<-hXq z`rCbnZrzL>I%x3*bXtwl4k05IuK7wiw8@|s6b48c{La6}Xzu>3K#{%IVvqUDcN>sX zLd#St^2NKQ?Hy~<`T1m)IRr&iz;3<-YwEQ{7gUZ0U8|&Pj$c z*;2UW*M%}pB|!zlQUST53-L1Y;mqp-G89L7TbLPAziQW@{2m=M^C zh+pz>w{S!9lw_?)-V>`4jE=xFFNRerpktr<^0tv*I+JVk5ECLf`wN+6R~FM=1p8q4 z0jY^Ba%`pAW^Angh%cb9;~b@Ts)H_`%Bpt+4h<_xTrDaVK44;BE7ug{$$%5J`PW)D z1*VPV4xD3e*W&vfwdOe~q}d@SuDh!jo-KQwa4!8D;O*Sr0)x+!SdJ~hmNe^UXD69r z;l~Ri1?3b`ovE`KezKR}5Ico6>WiIA@>6Uf*2l}+F70n`<)}SVvy@feqchp1-dw~rp5RvA_nS+ zB*OS40ps3bKN|r@<(Z62nV+I%O5kdm4D0?O;9PRd6HQYmRLF01+rx{q_~m6|md}G| zX?$}#0uR{|h4Hq2$iF*YS<_;8x=0Y65l5F9_p^pdx&?o{gpO!kMIZWVNdSc+aTY>*e5m+1Kp{OHbmY%x+RbmC8iR`j7ApPFNU;-dO5`Q z)p&NRKOuuWX@X={##E;$&W~71PQ4->4WS=a9K5-BtS-yil&{ExMb9|n6FWDj;>PHlu^-(gcJ?0a^h6 zKLEhdBQA9o@9V#A6@L~waAZoNHXIW$$vsqI%-Fp~)->Nk07k*2{N0@}r;Dfc(3 zhwJ0lkLWEuN9^O1I)~^{-%f}1_wZ&iZMbf6idO`p!?sXQHb6Mvh$ejl!8>e#$x8h5 zRw0$RndGc}f^!$vL8K1D)r`n03@3%PC?n+yf79}qE|f0w+NaGsfu;GBx<*VeGhWMJ zX5w~#+FRLk?$Qlhh_!-08GdZ9TZoa5KWpRT`8%k$D!K#pM<}3$5|0q%RM!PM*MXDj zfF#7K;~7Y%DMQDuEH5;wTO7q0Wp4Y;Vc~mU(EdqLdTN!{L3~Pi2Cdt$cP<#7Wm2kfcpWwr zRg(-79WrV;;hqn5_gTOb)()9k%Uyj_m1#G>-;-iw4{I#D5I7LWg8pGTK!X37h7j@- z)C}x8(uz+=f_DJIL~KaV-&5P~Lc0i%LkI>Z2Tf(p4b`a?buR?U8$y@)WvD8EI?6gx z(ukq@Vq8{lRihd^cu8vT9m1f3g4&T^=JMbKk5Jr%4I(f(^O#!f#t7rke7>_p3;{(H zB!PPeJ(a73Ogo|}hSfW2YB>q4+xn^XwB>Jf7A#c2Hc?+C^18=u$v@ z{|FFhAux?0y9(MekJoKi*FC0oDxUH!A<6dJTC0ZLRg#cf!5M*rT#QKHc@ZI0iS5(; zsZsSge;o7OluS)Ya>d1zJ=1!_ob2#+FXgq~m4s;O0vBb5Cuzg}5gU8QzbK4eg7EgA+d1Rci~PG@;;|( zVDae$C)BvzX>axSIK7{O=y4JwBSm1hrcC1XKsp13ohEv zauiv8WtPMq)KB?S?fXvF6>Wr3x9$m9^qj80tqTGm9cD4Rwx*%Z~_{^I^ z>0J-=p&-dvVqx$3ApP-}+eq>DMtg&~zOKjN+uX;0%K%=)q}>&Hv+;;(#*Ox`QWQ~Q zA-zsGV~^8U*zezEcjjUXu)4eZBbxgx;azj7mk|wg+Nw+2Q(EPVJV)CcIo-m;7yl#zk$sYjOZ~Ab17ZR2bc0|H@xXFY z4^uUq<0w@;w=!zPcr^uX8`h*yH<8+}`^Tofr6eZgzFxcJF5pJXaq5hLyA8oBF!DAO zYoyrNw#J0WU9L-;4kqE2*%2w{+6AnuvQGayqXO!4yVE$4-Xw)m+gHJ_zLd0pY~O;9 zLH?YVT=O)z`Au_xaYfz0Hfvsn{HVJQUSX9zekAp8qcrAmZj%{bz#Z^rSnC&aFU|^P zJmVMJjOH=tYWVNbju=NLZh17p6Nw$D(y+AlBcbKzWbF715&78@K!!<pzw9>R?Ku2J+9%R@~M^bw`E}6pHq=8rZAfo?!)L8-(Yt zUd`|al#5->!>lL4_u6+qeec;n+qc2PVs%1%ic-6|8P(5$3~Ta11^{h>&e6LJWj~0~ z<&B-eDaZ6L(t^1@+dL0qaQlRE)FxE#?=b`tjDaaecL-bN)xgC9#pwG*M$z(H@}`iM z4S&LN9fXE2yLW*}I-pt>`k1pX8ug4+yQT>25B7ZNpRu?8{G`ud6(+B$yNY3`^8mCV zR{scKWlgi3*3!B9d4eJHksgC~B8=hLd`-$!C<*l;U(ZB@yeMi0hKl2-7zJ;&IHCwF zI_VQ<#(M-b#PW?<^oylvX*s}vs0L{E(8uDonG4kynp;d3NOZtBfE!Lv5Iv@0O7*X+ z%%VlU`cmByskFIV*;(*GM(v%X%!I(5aZ>|t#4O6O*rQXl8EQ~;HCPA+xJ@|dCmA>o z?}%T{X4j78?gRG!%Kap9U21GUY;a1`dQ$9SnnYB3YK-5v=kK3^P3{+xoyk+t(^4`x z!^ok)4GSjVgB56k*g0A@8~;1aG4ynpKcxbwr-bA6TRqO;#QOSM^BZoq#+iuTIy9^(%Dfzy7 z`MhmPO*y(or`O(4BZ-$J`Xzpf#k6)-pTHOmXh^ZxET)lo4id_cJa{1r2=ieLp|hnA zlrB~#V9@S#+ufi+*wk{cb0{zp_9-b4;cQ%{R84ke1ifiXwn*lVB?%4y8WeFpy+_iq z_Bp2sgqLk}fvz4AsAnIT*}SmZF7w+HE4dYANTrB|dE;ixBPAX^Pha_WkNq=hRoJPtROItxx>K2hc9cpewqRnACvQ9Ui7;~CEF0YYi4P1 zc)@%n8pj%n~Yx`Du)U#=JHh3?OY{xfBLM(kTE34S69mb*FuGXIW5)pE|=g7v3q zxd~K}am^bJ0h44qDg{t==gxVCNqAxTXtW_rHaqUglImP&etmje>>lnVtog|^`XcOt z6GD6$*X&_wQNyQsP|ncvyr`PXY zh8o}X{Z5;q3%FT*{Q$pq4!C7^k%`4~HWIQ^@=9HkLl9LJvL zB>$R#>fZ(X&M+38YY++7CD>Xd-S7#<^S7S)Cz4@HpyEzy+{ee_uFNnOXvf5QWdLWS z$^>toS++3&IM<$^(2AIXKIu3P98E}Aav6q@6frAQAs)oQ&MJNW+w9}(gmckI?bT_$ zN#@Z`4+tmo01Wv!y@Ab)ygv6L|_YS=Fi-@_E!Plt$l`!HRn3!Rg@4P-pA04V_9xi_4eF00AS#(oL-w45QE*nElO?)PbOQ){_6U@S1S zuuNQLoem+;Q4z599V@hgpph6^=_~jUoC^kVk;RV{abCuyZ4takJJ@p7)`388ruY*C zZs=RcS;OKJ0&W81k@$XBEA+Yd-iS<_kjo1;!vkP*f5LWiRKg1=&Y~nYav@A{;xp)u zvP;tgma#q~y|Xh1lbi0B@7T!*@bw}CPCHWCLl}N^K0aK=MS68|Xd0K+VN@6MmWrWt zQ5z>+gxM68$jU*C+k*g-#@cL=i9aQ^uZoyO5;@lgj7SplC6@s^e`Lg_X zY(gK#-=IzlIZYHF|&vMngzyS)Z*jlS*wm zg#-DOF#{xn@i9!+3}PmBHs3-h>5m=5Eql4tN6v=!H`UP5!W_+vGUVdg4?G71bo+S0 zU5>{d2Tg+|k7jp7C|~e4rFeN(^pwvcW2Km)% z3uqp5Q+K=kOu4hA<1VgU=OQ=(O20>*tYrWsXrEl)v}IF{nE6DbFk4$}pI7J!#~C$q zcg~#r5EoE!NJa@3OXp(+t?4~hv~kEUP>i{FA2I_(KR6XWn&2OcecQ5aJwf-~6u1vf z=ZC>$rj!FUrt~mfBYZrs3;xS*9;F`UOu86~5|1lcBpCXnJP7e?_eK(!K~5bLXTZAU zkiCZOP484s$15QMIWH4M7RsbUZ3#T6lLba8ATpm1k)Vf%(k-ekV z(oYcV?w!>l`ZsJde9=9r?(o~A6UFGsUag~PnhFu;eWZa@=)(cp4~CdW1xipL@Vxiu zl}|H3XN+Y!T{;95iRpa!wyCIH*PQf4%6wKCjUYj zKAmkmHP-~R^i-XLQBboX2kLVtTEhsmjExtITFOGT5`AyvQ#=ifO@8RwCk?T$)u{W3)s8g7HSFIgv5L;Av!!s9VmKK7 z*v{cLBp~+Y#68WATnqXEo}Pxa?j@CyaJ9OK+-rZBy=)bf{o7f!fpl4eE{u@_k1%w? zroT4HWqlM;Wc%P`_HfMaHB89JOo3FxvAomD6*^F|{7JrIVMo+XPz-D?bsW5F8SFH( zvPp5rY7Il)!)=&K_Wy4JQEbs3D5`;&O%-j%B(Y})JCWw^@}G=^nruqk7$)1z3567# zNx1KHi8(VPv`q|1GD$P0UZYK5P$_|DXK2(<%ITa+u!XLGpI$vaCc?7A>x>-)VFo$Z z7tSJRC>(x)Jt z-bGR2{NiDwkzSnB1@hv{qB^}w$Dblva1pz3z&0}vV+hAQ9+<5!tx02}2;`woy2WZ- zR?#RgIT}a2ciqk55Zk#oez=?$w0HKeD!_mf=;BVeX5(xm20Qqc%dFTLVA z$`@|fFlY}41dPNGzo*Qk4SKj1-PiRYeV`xSKKm)X=Vy1|Hs_BDR1&s5I_ew?wr9c| zsZ)`dRUFv128F%eYIJ9($_rq?C|XQ^xeKzN#_dU@g+|cP9pt>?;kV(4;rNs*G)cOG zwWSaeMrNj#vSg4I&==*lvXk&LRf%h_k%n0wXDzS58m2*71ab(KT6!oM3wkwu(rJIqj^O;7I zZv!919-K}@FOhoIWC;_K)Og& zH@;OzIODM@-&fD((`ID(g`V_4K(R^>yu5t@fp@z3C;} zP;6@l%Y0)$2_A)`NIzQ$%_K|Y-5agL#5n^UN74Du&oF2Y!Ilg;$#pVQ5zeaMfGh51 zZn^?{m!J=7%!sfvnDh{MJEpU|llYi4&GuTuwMiPJW+b&J!2`93{e1S0(V-W&orePP2E(NkH4IHhTm&*yA8 z+t_XU?}p6s0}i^!8#V<<-7^BSl}`DbP8QcK{u}8t#?pU=nVilu_Oa+vHRVnufS4Bb zluhifQWWv9Vb)QKcMUPx8rwf%#t9-Q7rt{WM^GJSb{Pxof+di_SH5>-xa7n?x?=BJw*ygsVty_1jl}uPSbr6yJ01-FnSAPi zx!We{lQV{R+lblFX_33zy)^B$@g;TC@>xS9sP?%=(U$$`BCu&D@O!D?`-&2dO|r_u zHWW1fa>uOTf?mbSK(!VO2RUwGj=3*3-EhKOT&?C{? zYi0Z=ctZwEp-FD~BHvXTQ3uu7RsTR^a~|q7mRWMGkI4MM1*9@s1!pIQs)LHMw_MyDHBXcW8wLDar45HcoK3fhvu>*_wsT zX2X_!@zw0j!HW++=J&{_nURPxHN*86$(+gyY}-kb`9(?rDd|Fu3i?!V zbNesLZjVz&Vv&@~@xh0upe2aWf!P!IZpz@n7)z0UjPh$o6d^B9;+M32Sr_g0no>=i zKGbwsM$0VA(>Q-0?0da_;;7w#G?P}0p$UlR|s5MWeD!u z2k}zggzvfx!_00!%&WlcLhP zpQl(c-q!>?{=OYkriWx|kXHkwoPncuwj^r_JzhM zJzt=;kA{LwdtmSW!Z~YM^edaEiDWUX#8_e_s14*#)C~j$;Lc<)Ji@&Ek8w?iRf6bC zbv?Pok|5ub)VDM`l=vK(>|IDAE-8$?Wjq5aNFz_%FOn7kcyJF;hs-56GTl=shf-E( zA%$Q^OD(r-pIYUAJ=c@p=e3H7O^H2bSaI+BWb}|kF?4Rf4c=0rGUFn}%hk^Q>Llc5{3Lma zD$(T>kWE?SX|!i%F71FFkgQ87wLS5W7Jq+}3i-XftwGvIlF;882x`Bmj(nXU8>gD8 zotQfF0oN|KDZ{U#_R>!AJaKbdTf*A2U`~|L3-J6Lm~l_b@+Eo7}L>Xnb)uSY1Y5RPhm4d7A1t|>m)rZE#`kl4$P#Y z;?U+3wBw!lcfE5K<`g9GrefGwnFfNcK_!NVQwz~}ZN$Xf^Z4EwKVKJ1f^RS2E|La8 zx6it^_g?+fl`hf8Rws!z)YP!I0Af{|ERAAtsR!~>--knQ8u53Z?co4D@dsC#T*4&S zjLr;u^L$8ZqwF<==|E;}u6Am_?j+w<|DN221~I|`v){UGDbcG;%0e!CA%=*|hw;k+ zqT*%WUuT{MEP!4<);(T zE(}hTh;yeCDuB`!tELk&U#pNJ^!R8NnktN!g4@m4#MlG-HUOFKoe@68y)1j- z^nq5}q(+6!aPbQ6IW;MF_9)8XTpOwj7w`6ytlHJ0N_6UaRKookR$|1}CQnbVHyWou zNq(#>hy%sxGtZr&-NLhbjm3c6Y`~YxE-%$#UJZe);kw!3u;QjLK6rZQ>wkrrIsEynakBa~ewJ6BMrOn&YE9&<^lS zjS0r(HaQd|6MpFQhJueBYvsd?R%Sx7T1nrUm@n7A#n7!bp$3=VHC?@b|HQotfFmtTI8RN~`?Y zTD1J$Di5&Wvk6irxlQgkH$I^cr}e8@2nluTKVkrUBxjA`v~r~Cnc)8W+3IV4^) z+ZsQLt5kP4KmHs?q)56aD~Hp)yXj{aO+1{0B792h#%>KwrV-M@ff-EnW(@b;d;X+v zq}wAcCrx?i0Z|LG7Z~)<+M3F>PH}f;;kL~XL%;m|>A!{*9WH*0Sz}#mo3{siO;GLT zNU^3(*snfC1+rtdrESFy%CR$npn*)!c&%vVdKDtQ_XMX7ah%k~tWMLO{5vfCyO~b)>%)B7T?%JNl7E^>&|+xEQ&P|vo%fyxjI9I z7i>4z4oiym74V~w+zie$L7IFsGTPre z#2T5f?$T5S6*+{zgxskH*R~g6+&5mPi*ZCN-m*FQ4G0&rnQy`?VM#$$1tr8WbnGQMBPm{K))tb0(tAq%*zTxB zCJn(N5_O55YTu_BzVSaqZ(o9quclWz+;S?IT~N}zJ=7491s^1B6)o6VPQX`CuJ!}g zJvZ8v-zb-VXI^Mlj0JFBPwRe*yZ0!0G5lsdR3qV|G>y4%uNQU?b^;TC&QI-OLaM?0 z<3t*A$<EmFaqH0#4k>`d$_x_NT8Qn@I3~BaHCqCEQpT=xEJ(R<3qdak@}~#@lN@k9N6lltwqZmBD#(peqeC-(=k2ALMsGy5@nx zz?kZEaG+^|qXE}pC~CaqeJ@;OQydBR9wAc15d+ur;inYn;hqO9xc?ljA;n)%a5Y`U zy<^^2ZdIR#cA^m8thw}0e1dVUmPgflhQWtR3yFl`!YyBGyLfMm*b!vdoO0<&`26OX z-FNuw`rD64i^{Ey3A=pqKh$d$j1lLkUmH8j(%6`U;=So{1U$3Oeef~z3{xED%9KCOAJLaK-W=X||MRb_`NQI+6PT0Y0BiP zP=1!00+dpaH0^i02@C*58aa_L$<;CMGTDM?fUT1jDo9O_m*UFix3gD~|6G0KIF6o` z=Y?|jV>v`yAykzMC55#^OOV+QfcMX@en9S4EoYLbKd2ijNcT!0+jz?}i15Rib^llmig|pR@uWfhKf(rGovIF zOjbfx*ziNmo~j8&8{^9l6ry$6>Qi2cz*xm~k7DSYYpJ#u0P|fStLHMZ=#$>>3sr<) zEk3^tnLeAT^fxEjV+2AoWd71Ahp6z5S}duGpJ}-Ys+v7~&nz?^a>u+;sT*_K#DAt- zJ@$u$nSgzU;{@*ZOi2|HA3F01U@dCxc&Va+X?+BkbIG3HUK5!#6d%HK@DS@BZKerJ z_hTp~OF-S7gn*u`6e7@FGKhY%MPIn>zV9$)_N!Wj*x6p3JpCUsbcyQ2#gBfrQb9DK zLF{zMr9o)^>Yn%9=oV45Hy0^hFl*Tap=Q=`8RaibDnHT<$KjU^u}g(#Q;x!+dwqvh2N62)1>H>cO~ehfm5WZU zXmAO#;@9dN85!c-rhteQ2n_NpINtQi?w8i^+Wk5E?@G-Yhrx~IZKkw~S&}+R8QcUf z$fR(Bq1SrlNR)PQ+1Z^j8jR$Bm9zTY-6Jo~d-McRQw-vB>-^l+YtJA*7GO>s0+)jY z5ZM$vMU(hk_cT!HutieP;N$-JVW1LSLsWLRDb&&(xnqooDsj`RlxUNZf~AHoY-Nez_BV&uN$ zNXdotZT__0cOw>S%{mw4W%L>JcroE(gtrTyPwysGXIsstX*991#gp7~(xD9o5y|%~ zsw@epf?IivVjV!@8jn}tT;)h2@~36b?@IW%{Y-%=q#PcKWi6un+h*|BujEVIvLJg- zR|tif`%$x2suzmmF4#4wS}(Bu8k7cO8dXEC^G=-eD<`ZHt*^tKls{8*2mSB<)|Gyz zG8sfWPitAgB}uZy)rr2;0m}N1GRAf4BmUKIG$5w?QCANn@1F-!5Xc@;To!!R;mJ$k z#xCd8xWm}sBUxGGf1{VQ9}o$M1t@%OwM2Gn zehi_r%cRZtVAdBScYD7t3Q8V7)e!iuY(E}2xkNK*LC}AAgum>H2d>Pe*1GZ(w4JsV z6=vO)!5%8x;CBY_nPLYMB^#`0zevToS~JXR29#bAB395Y5~!L7+Z3&vH?%bLDPRF! z0V=mmZSoHxSNt2|mWJhRAXKNzHDf&}G3JSlm368Y0Dhec4R+DeY8>6Hw)}e0Qo+ZiUPNh!(hXc4LV8oW>G2{CoV^sx$k2P%NVLFSg8*{57YOxR5y8~_oS@auN7 zS2+&WPDGG(DiZh_B=LgsO5X)Y3r@Z@7`9$uZ!98Gi&e9MZ<2;${A5jIH#ex^dzaRk zBr;-)0CI;LOt8=7tZWZb{&z-`(0v$#4a+rR`;JXQJ@=L*&{&AMYwQz+vSF>2H(-O6 z8J?E&t>}u461J5Dkevn&V*#x3qK$p497VtT*XBq)scetT!r(XuMWb-yCHf2HQQ6Un zjrTJKaE(RYL0Jp-w-%XiL4E)!?QJM%Ib&u*f%aPTyb5uS4)j56Gd}?tXZH>~@1*$< zsV&rRX5OC6_l{m%VbqW}6H`u>{A;jTf2#K)8mx70y@R7C{edC%u_K54pnzc0QB*S} z#MfOw6IpGV=ZBjiVbXPyDkhTVYpk*8VPQYk2iC4r%YJosaZ**~(uL@Wo1L@mEf;8o z4P!naY-d=^V=20-?XrZiP%s0;sfISIhlPKFwIJ~5qNr^_l2gekF)yXvTbV$mmDM;J zx=bKqf)!Qmg0!~PTV*%z{cH1%KuQW50LIFk_jFnI-!Ax1nW#0<4Gs%qW$XFlh!g*K zaL@R(NMUXeZkXFmCe1X(ec3Mcj4pFM9TjT zImz%>x>m={FriWgJ$$b!Yc|&qs<2L=R-{$TPo; zU5LdYgXmB*zvB*=8b~e(|54F@sY`)NT0(wb*ap!NlE$-(uX+9C#o81#|CsW}sxC+~ zh}1@uUItZ=(4=(*Q74Mu6_|Jl3;pbVIuKSeA6M(XFHLx}&6KmF@R;@ga2N^kaWXPy zYrCTz>K)I*GZbDT>1*Q6liW1mST2yv*u}t`02Z~T=BoqQ+>1?hb-nrw7}J- z3=aX{WE5GFonmAI)31ATy4EZrDzem;W#V0gAjgNYP6@R1Q1_xxka#Ku_0%5beN%s2 zHwEvJhazCLr?9G=FAJwz`tw;mGmA$Eqnt<%JvsW4#E8^4xoY9_p7vajG|RW2ECMM6 z03EXpBD0{06P={c^BmOhb>*xv5OxW4Wyd3#5-+Eg7rrkZlIE#2*TdH)@Mc?dxw4P< z9NnVwNTR3O%)B~vtILHeRnl%X_&Mo*t1%tSDQP0ro}0MsI&XV8lLpgh$}d~|>k15h z3#bz|BPdx(Acrh6|SQR%5m8n9gW0J+^b#r4Lwt0By+sjB?3Os=ovZ?d1pNZ zsn-K+LjIdG6TIS7Q>+}cjoVVpoPyRT=1HVdZ)a&2+=$7`;ej&Pr>k|$@K?YlAVb&oYJ8rM@1nQlbCPys=4=A%qN5xT7 zK94^rAljt8;kEvE0F&Nm+)-=M9v$xz;}iyKl%@{Iy$`>i#Y!%KB`HUD9g#WP@eb@@uEq1? zv&w%&Adn5R)9_#d4;?qbnKU#lnW4)AN$c(rT-TgU2e~?xHwgyNE%&+gnTeH-Vk_ZK zFTabcGO0?G`L@+T&&=%8xu!nQS?#-b3+b#zmBG|nzv99=R@e@nE9m(Vr#Kvc-RRam?#Gv}n zDKO0y2!F7OVt5u9m9aAQEU+nRl`Cg@bpE~_-*Dic~E)z6e^?_X)(s-%S5-?U+FiI)*v<^4IfFHwa`tuUs96IUJ zJd=mHT%GbLKvhbUd{z?nJZOm4Z%=+TXP*;oz`MEc<}DfK=WW$M!MR3*prPH-4{49O z2JMBc`HfwU3mB@^;VmT5`X_bYO%ZSgZSuJOdAc+(Iqk0LcL1qWlbh@MG9+0acwYFixP8cGPo_vc?( zDc?XylHKJpIwb$q1O6F&B6s&;8ICLg6qF?(R&3N4W&sIfGO_f`uGlpGzBlfTM>ggU z@7C!Su)nl<;j=_HHGp96)vKXl^>$xwX+^Ln8TdP<%l@=bCdE`U)p_QMViB;{7BsBHMmZuqaMp zIk~F`aqHaPqOgBx2L637nkpaF?YKKJGP=7k>b4gn~7 zd!<(8kOjA?mQSI!;!iCF?$TBjqs06|q`^w6QcN1N_M_iGTsUNZX*vSB-4ywSToEsD+`z}$m1)9*nnuN46z{4lRdpdP4%r1_n^yvsUK`~6{pKdx- zu5Sg1d?^tij{-~UoA;g!C9gO0!HIk{+!m*oKVq=Lp@KIR5dw!EDqQffVZVE&F~4!J z1ZJy@7_sE$tASp&R&q3hVMQWD5h(sDNM0uu(Qg@6kM}^+!&eJ}N2$4jT8$EwWPJj7 zb4#q$`}a97!VUqH<7U=~49QljD66u@MdIc(LT?IKkB9NzD@Cumg?yRn@V>*)-4D|C z09VSxUfS@f%1#g8>}*a;4_WVX93#fKG0aif2Aor42IWdyGL9JqS>*+msE>4?1SLud){AD5G-D$Z)sr(d>>kJ0e)lL2Fus|*-1(<0G z&_;D$4`}Ywy80MVXv*R3L3JB<=Lcll(^Mt3Y?LgYe_|S;8!!rv{G)9MEjv^5!nHsD zIks_ZO+Q+;n)%qPJXW550eYPKKz;oGA`j|AG9lrZ6V3;+qi1EC(?pmA}C-7 zg}+z>@KrAkI@HgLcraA6z@}4$ntHzTpz?UlLnFVI(VG`{BtRWNQPlDkb4cZ}qF#z5 z@PgD(v1B4sQa={sO#MoDP#~Rfan2OIDs_sgiy!UHVR6lj6BA6@@zQ9dstZ}EnN{`W zpPp(SHr=#1JE2g`ln0+r_qiWoYaV2xllgWEvHFeE9&rz1$@!5~qL37u9a4rlHdCHD zIY3j6RozJPmn{j>wYr579}Q&@JoJz(K4L;+WG!=^VN zt@Mw@wDh3UOjQ({`hGmP&#{9=b~g)DO91sFs}Ut3ku<{6z=Pue@T%YVcVX}fQs=pv zN&&NaO7pVCSr*LEeps)@dUSMv2bXQ==AlkFnbN75^7V0dRbg}4d=N)~@we6vbWvol z`^mycFKRu_-99^i1<>dbPld^-rN{dlsYkI2vbj$r{+$+n`#W;GEh4CPSy%a|5!$-- zU>7SEwIXI}`5H;dF;{;TJ35D4drP5>jCD5Y+`sa7UDSZ+gPiMnF#*Pb_9**Ntc2eIMUF zo6*~K7$|jF7GCRMzc*X^GySwwUMA$8i-10>mA#V6n6)QhkjojEy?l6p4UpvPw~9+g9s>Ts*t$c^H14FbBZ z4RG3XoT^Xf$vy{wpGZ6znn6s#3APgkHV?Py&}1c}E=cOMjW)I`-_^xd&oXmtGUVCT zm38aYUlElny)`CPwDxJ)5U4R$AT65RB~XES*k;~z;CkWPKgi4m?)Zaw`zf$V2%>o?hO#sBG3)e80>w^15|57MVWN*iUz(GmwRQ&>P=gHg5|FDt3@iB9pFQwG65s;X zh0_ThU3~%ZOhwbgJLq#`YQgU}`O!DsW&fKbiJn)1XBV0d)tXM0z$y%z@mpRWHpc$? zQ@c92zkrLNQ7u*afR=>Qo5r;p3wa6!_ymg?~4__gAtby-9;0}yb~z1Hxwd$8M;m3>1@ z9o70nn4l;G*r?q(iU+zBK(Y-_5if7 z^|x(l#VeB;xJ!6MpDSNAq1fdQbEwp?(3I8We|^4UQ3gghJiYQc{F}Ta_pi~%KSPr>{YCE?HUJo!6{y@lEd2Pd7$Qa%6v}Q969hRo z2lkW5?myHdFukS24*Nad6(*56o}h(($XJ>>m(A?=FsTdu@Vai&F^uTcrH8*Fop+}Q zP3uPG;Z^|uKLEf(c{bS0-wp=ytn2@8ghLm6KaW1+k-%F&)36BJV6!qMS1ciq_e~py z3e?HJ=4zMu0gKl8kwLf``It`5|J@W;{SJ0@d}9ZW|FCUn0!7Hmm7e{ii#BgMoslG~ z{xj94jBRqG>VoQ+6j#`NW!QOU3VnHit=gsZ=FnGoWYOcYfy-z}%i1t6f~yYdiw(yQ?r0-g z7}D!zm%@9Qi>dhQD@zVUVt}SPCun9qa%4q)L|a)j_|Y^JmR-&WpFQ9PAu@Ci^P5X> zPij7VSdk^L3*f{++x!f?N0rooRyG-HxN;ZPW>SN-RBi60Z8EVWs2*R=!N}NdG9*?? z!C^;;3zwdzlH1EbE**!vZxTlA?-utFFiHupB%b1jdh>G&!-oz<@F0eZrtZ11>q;T@ zBUwfFF9^xaU@UOsw4+C6y##%}#W^!R-LpOwM?(w9FnbSr2q!$f=Ob{^h!As-^-ORz zdoDEvjjhsPh6LK!mgnB(QU4Y;JbH>3x4kfxk+82z#%^(T#$;@tbGRRkF5wF+j{)n~ ztX&q9m{eSpbJ+o+eACF-;(G_5YyM!A53r&6M1tafdBYtPrVfpugd$Gi#3bh&rjWHd zr*)9B>3Kbm+1QROds)ueWlGEka>=~gLGnD9>*l1kvSr0v?Y7fwRz*9HsV~26f1cG< z2q0Aaa<%qorH;5S>_U3g6XbNaHVj@LbDIhqb6S2Xi#`OHr?<^#o=|hnxwOO z$N_hVKLQ=i$}-oOY=Xa4pwZ#E-V%U#{&i+E{pibk5F9ENonePA6Kerp;Kzst?P~@V zxvzdm@6^!N+#ui_NrDJM`60mKf@2CfpCx!u6dxZXxjX>g4vd~%jLB7AeOW5MddWyfwt9Y`^nH5Q1gGF0={#Vfr~`}L_{4a?-)@#xTwi=B#Vc09pHBFT znxgB!2!#!^eDhiU5^5gk55=yPA4xc*+KxdIX2cifPy9CH#TvA(G5#o;jH8r>`-1hj z(O?G|xr*Lc-p_kgIrrVPt*SKvakH%2S!wOjE(PODj(I_%jF-;N@I`gFir6!phnhqm zG_Q+gJsNC>^A_StLQEY>B@mY_B%rL65`+k~__IT)|Uc-hvbJI2vF;lu#dsq`1YS zj^JEjayEGe&NbZ}INmTcm~r|;`Yo7i8V7#|IL_nPSl65{M%4#GL}5cn^3HR3-VTX_ zG$PgtLQ6{FC;XKyZ5l!Y9`y=0Uly5K!j09Q(!S|_y0rqBU{Sz70{F~yI=tp(a>1S( zu_)uPU7*d}X~X*?WWQ7`E^%Vn{d`(jyUC_I0MN;1DS$2G?g((KGsQ9jd*jwhr?cvl zjg?yR9q~}bJPHlnAIs{3)0?k8o=CE7kO&TR?wZY6S()G$$2ezN=Yrzv1~-7e@)3{L z!`%j3xA{2j7h+}v$`F$efN9r`l&n%+IzF+a{Z+GA`J32;EETgU9nO}6ShryZ#TKm2 zguw~hHJ@XZucBka|7fJ;`<;HKgV4{l4VD7z5a^)7FXL;VJ%_YOGP|JI5EWebIX_F< zdn@F`e<}gI&gartyPwP8MuJM%J~Fq7@LAh6cGB@`W0uvBx}anPv2b9j@Qq)VGJ2mx zb?^881me+mEcsY@S_fAo%OGY~UiOr5lp=x~7#?vCJa+m6NOrbkyetn`aA=HvN1Ig8lIavQHT8IM-+kvG`Aj=frF)w9;S;dt7`rf zr@US7;l}S}bz^|QgQo29l-l!nVgy!PXe00P6hozB&!S)66LP@n;`MD6oP@ts^g~E9 z110Ow!icLOiJIjIt~eQN8|Pm)++-_At7UQQVd|+SU0Mb~uKfHnABOPwCH3QT+=DXz zot!}Qv?}!B_tCvyWg``+>MZccFHQqON3dF7mB7*O&h2{wMiiAwE5h?9_clY)&7_nu zf?#+FlFs;=gA*!r`0cQ|8Z;C;S<6pn5QbD_VNeSKbtpX>@SZYbcnem|)u$J$kVm*_ zKNcQURDO2cSfWUj@cFjGKCYi3pu_u<4Ym~M)+faLOq;Ph(4{K0qGA=ehC2A0jUt*r z%9Bc6^kNzJYEo09Wu(pkg*&L-IDgSyco4j6V@!fEt8V zeqtyJ?CStK3%r)k37aoqa)~B)y-dt8xQ{s&AGFxvJiIPpaW%~ z!hP1*O?b?`f`Uekdk_}LYkokt+03W`AGc@@nsBIjfBm|AbC z^oYP2c4J2(BCuQ|>G|0VuPSm*&=e6$0ckTMew$U z`gBOf480VA$EiK-&W*=r@5UnWXn1ECER;A*HVaj9n{B_PmX!yPNIvd9=4YX!FpC!L zmEK}xe<_N$Cjl_7(Q=}W*Z?9%0?SLH>V;P8)~A64XJD;&1o5023_{x>57txEZpCxlk4 zwDiw(z8>~4(8(7Dx_bLXw!3o#>j>xL&0RIO2V+wJXsSDZVClSOGr82_>n$K|xfP*r zkfN{FOVcqYY;4Y--IuasdGmY`ZMwJY1+bqe0}!>U4VEn3$@H@lfQH?nHwNzq#5t3HLfu?GhX{^!R#S#%#XoN+KYjiPor zMY)uRCGHFwqY{=-0|qoiVmj>K+;NE~c&6KkdH@0~(r?C%LJJQWI!sc5g(WH;(Ur9r zz@>o72eDOCmwLluOma!1v**&&b;d()aTv}$&23FpW*bY&`5=*9y6n7>_4re9k5jSN zU`p(DHm6P74Wprt)}*3;xDIT*5X~Ta#UbdD(##6@9eS#m6eP%VVqytG3Tgvhq=qm6kjqo}kkT6G<9KMfF3|z)xt`?ktI3DyfE_d4oq6AnpWnUgo{*&1 zCTR?^_nD{O|8ux%=)UQA%fLB+ia-T7w@KLXY&np8hN46OfY>4w;Y|H~e<y|G0>VSE8hUSx<)h^NkB*)(8*9h#|li0*N{-R{cEGo2UpW&W#ko79Zc+PYe z&Toyw|NcyTb=7aYoO1NP9ZOdfkFqnQ3_AK3zuNVZ4@I03t#%i|)F3Kh+r;v?S zar->%W6RTxsE(&i&OJmJ0I zV44arEcm%=bo^x;b?zZaktniV1>+)A13cuqi%;Y{a)RBY=?mAyS3|?udIKkPAjznR zgy6(&v$pZr9~@CGsBza z9c3}RNbCAw1U(dy2UnTEtEOo*P`1a^S?q(WuYGp6FeepiXzMc!W-TKTddi_m0}wAH zsTf0VV|Rj#qO*+bXTiEqWw}`NAiGIgTUmB`_FG|@DAS3|fRnWUrZWacE=#d20dsjY zewF{boPEnVOg`VV;f!>oWYs_v_5SHb$R!z3`i)fW6$D$_*bx<~sB?lnNuNlm`) z(44PP6e~f7R1txT|HBXqi@i#ynMA!0WQh4Y)p`J60ncW<1>okUiT+hUtpbrQa}9hD zuoiw-*O2&}#i{*#uP61K^?E17Qd?CsRtnOGK^iRp!(@yuhc*btgjOM%7Ni>HXO>(;Jx)60 z&*KP-hKEmy3ZVPytAW4qP6?b!=A?-}SPg#u^`1IS30A}WcWB{Z)9;do+8T@po&aIp zlONI-6g;*tHzjh|{ZdJ{o~aN7@i3=65qv04OO3E6mqqT6B4e+L-u`$MyuwAcjS)P_ zbS)Z3A4h7xgIOnx9lys7MBT-=F&6KgD1nS5XcCB%g zCBP5Uz|4Q&(GYO^9|8t(!}XZb4H$~MOrqT)3l}F}0;xE3>*z=hw4&D6+>}J-OsRt6 z4qvpy2WUC@R*D9l`v77c|I5C;#n)>Gg4*9H6`y5n5fRu*LG=zwSYj4mwKXJ8ng}I7 zU%n9V?3L~3Bd&y)VVmku5rKfkK*#A_W(H0h$6&DUnw9ZCXuKL88tIY|p%BQU7yfrD zv55V$o)~F3@-qAy){`nR865o4Jj) zU|+o9CVT)@^=;+jJ)td*eH^w|KC4_A8`!eB0-qAvnfg37|BN@jLW*-1YQl1&XDkx> zAIM=vXNVJt#1*~6*w4j44%TUrMr+%ct~3qaIQ@#t%85Hu9ugvz)P1GnM_KJJqlY(K zQ6wImSjF-7Q;!1n=TfxtEb7+zv^n39BCH`rTbwJ-Btp)*#5A+8UPn-6Q#`L*YbhII zxifX6h!iz)FADVgY{}A0J?D)GKsOHu{zijOZac4gg7pc$h?Uia^LiH6d5TtBK-tR> zY7lY3NUr1j({cO`j!v>?dA8y%fpynP5(^uZt}39{+|;%w{BFwHx_Z5>s{~%8lM3zqZEX606kfmDND+_I|+rJ4@EhRu9T)o+^O=D8R!RHewOT|u$YH4bzPNEb{47YJrw>t8S~#P}ule+26_kCD!g;ZaFZI)X}J zO<8$mq{gz_tZR8&x9N_P+>3S-`n*&wNL-5p63R*+$AupJBS~1@d=rHuX&r{EAk8S&?xQvTp+90N1J_bnsXqdGDXW+`|)lyL#p)uFTLd7 zTVBMU1=;9RVZ_%OqjTikG~|s0PjEK0y0VqI|eeSSBJBc z%zwh^FPMSwm9e^jDa|f_^1jfy0VT&Z*wo}n>Ax$ad%952_KO|!(FgeiA9Y?`n*2AV zT1x5qmW{$uX=3G~2_3e@={@c_hpg>JKTq9p@9;!_BuSOlCxb>c8w`RN-zeR{8(!OM zpp4yHr;j=D6i~*|!Vz(pd?#ObrX(N~+hvfTK2U}tbo13z7k?iQd8mvbb;@4Hfg1`U zCjln3FE?Tlx8uyLdxsc*q`j;Rz6J(*l(T+WMwU_UQcm7%XJjqne-p*rhDxot!YI+A zauAHzRrmAfy$n=I?-SxL?-9dsPtwc`3e=SaW*DvNo@+(7HoYohTH}z38+2lwx_sN; z`xnUsWJljNGVz9rO?0BCk^)@-{jv1^u;OpGrmKJ>al~D`N(<#JXvHcsd<$b$+`e9N zOEE?g1Qf25TtAfVEY|rr^rqE;(k8l|NhBh;kp8{Am^;w?J^G_kT{PCRIRN%*!HXZJ z*WWkUZAH;T>eSK;9};=o*!j9Noft3dlM694St((UQCU*v@U=z=gC1>?tq7Buh97e_ zcq^iH6)1D-1V+lXS7WB-rH-%iCP83P;f*I6YZR*ldei)qRbXvUYkz)GRr4TvT(^94 z&d1)2R?EcfSXu`{xCX@LoI&-(jE{+RPYxUjAvn%268mMY<6#}kxj8Ff^beq(Z3;-2 zbDndi{Us>_aMWiXrdIm^F+K29bN@6d!ZfP~ayJF@`SVa||LXB(BDpe!zw>jssboij zR}c?D1*m@+o>-o^y9aCZv@7?*sM}1YEe5Nu`x`crzky9f;MB%6R=Atia=Gscwj%dz zZL>KKCgQ*j`Vn1=c`sN&K1XpE-bid7(}M$qYTSc+NDy=D56gS}I70=c`MD79beYrG zyt#YD9_!Tv@XPYZBA9Y$J8^1NK;D2!cwT+Y*hZAZ0EDyD?nG!U<(~FPRUrg2pT)Je zCC4Uj{z_&%Vv8MhnFar%c~>|j?(LZwCM|~pYCkz|vEwijb?Cv6(?cq~R70wrVrvNf zzK}WQjU;5F^TM1G2^aWams6MhC&Em>WokAO|C`b9JG470c!TN& z*{vah+fQS+yk&%peD``|ZJ-?*Mpj3=YUcWEBy0S4T|eLiy{FM>NPH+XWS8;G6gLM= zjS!BdzNBnMYed z4IG^bLOC{)%u1Lu$t>x#j+2af_e_t5A-jzC_h;DAU!ABmw;rtuvv+9)*gM&lM@zIY zfX^VO9)^dny~siAZE<1R-4vCZ=~+m%P{&9C-opBQmS8ea1(;x*0vRNSKCjQDAnZqg z?$>3%uB{59eW?*U0Vo;r2mgBv^{~jdoHgd@yOS3)U|13nqmHwaq-H-Nwbw{``%b z7cKetVui6EodW@Zo&s#ihdN|Y{mjti5yx@&o z`yz#|4%kXeu}q*pJ+&5a1|3~ye)EmtXjcnq#$KB0yc0UDf#W-kmJ*VI3(UmVP3^g# z`RwUW8eHT&P>*ogT46wO{t)qnj?qpMLPMhL+egivL}#r-A|l_}mOAEt1j}G7W`V0k zr~CO)ue&HI$gD9;3^3J=$-fyz6ZP9{Q4zi{ceY7~n9lDuvYi7Z47Jr89LDjgVh$)udUfU4ojKD-$QUvs{RB+UVJDXFu|Kx#rIj_fU(&hoQRDC2LOw@O0QF^^xlBsO1j@ zA`>)WGO=g7+X9+rI9r0-NVWp5&>X~kGLuI8#rwW%b7p<`aM5Mp)3X(`tPDtqT%WG; zJQ(PXj|0_HROy06>(K3&QTyl4h@QdZ^-w&g+(v)GrZfBdU68N&A(9|i*I}eaH6=pB z6(%&&f$DKV)oCK>(U@fmF{;e{w~3ehxEgeNTFnzJf^^$w>%b*Mb#|c<_U?R@8_O%@ z97dwH6hFKnkmV^6qLic0_eGmGCLMA1%vp+$*0BNp2?H2PKBgB!SMm#Vzu&RFwmqt3U$U#f zf_JYPWinp?Wc@Eh$92r4*nWmUd5Gn=HvUiWs~Ckr9sjLP;qV|=i+VO_#Ua%X;Lyzd zm5>}@>7ivEqM9zt#E0j5V1>n4{m%_g)o$#geLvV%2}rsgcoO36dIp`fIGGbdb@6!^ z4lFt`&Y-NN(jvSSytqnbQ+&9q)9~ih*_*UxH!+gRHQI=NG%0$*ds4fX9>^qBOpGpJ zHXdQmTtp#Rth!4``oXZX>e|js$B>a4rX+fseV$r=mCZl|$+Wn}Tm3YP=1+v2;zmLK8N4%s>5} zg*iNW$t*xQG#G+{+j$D4yPoxq^<`bBvtE*gdk+wRs}k-fKZ!G!8vwogC(#mhFH3kE zeWU4rv0~(t?4S4u7@!`CfJrO{1^Rp$^y|V?Z>$?jcnyoK_g3`{_?Kf%S^wR1_4bO~ zg&>Cd$Adbuwd$0yvqZ&|_kO7q+4_=gY{s`}!q2BclWSNks_}JPxkO?fHdLk==*~S| z@Zbkxh{H0BVq0S88uwJiqP|IjoBzn1fJ-323Xy6%K7| zu~{XD;fSvR@jOwi{JdpxL3aGOI)90#c2~ra6g6sqqJ3}NOZIlwrS03KbPY|6Gy3!3 zS|Vl@7atnc1LxqIBPJL1^4d-(YXu-pUy{+1UdQ7aNB$y@pevXa1LQ>Jx)!VE1NwQo zX{yx%^@y-IG1v}E($VvviT7$n0+jk9H9>3);CdIqFg0-24G`Nk{sqV9p3$|@P0)X~ zsO^HD`$x^fpPdmr3&ml!nQ-@tX!WU8h%}6Mk1B$+{AKi5)f~4O=>t(7+3@7~kODuy z2y~e|z#RYD`=rYL2RaRkf8Ul(H;(EAHcu$jFu%h*R{ZrzQ*5+@I;KaE76(2@VMI-xOOoC24ZAo=SqS(&=OzKR zk=8Jzpm1ohM)t?;Ny~+*u}SgJxRLjUH^!pL&^9Y5RC(s^L&c8gGA`gO3CVSwwKx%A z`uEEWgs9Fk1$uWM{W?&i@N4D#v3r6L=G`%vY+lB_8~(=&5b$M4y$_WdrrM@>XxbSSQYfQ0Hu z_0@EJ4ZtovV>DGJ$F|Zl0@Qc*GY`)E+XeB3o@QNa>YjmefAq%hp|_b2E!e&8BB$-@ zN&I*vI#0X?^8ObBjL+t_*ZRJPJl1fghw`F{5LYT@uUTFtk_vU;=q$&4R5?T`t;oXl zF9dlO(v{9Gi>>Jzt@qbUMzBkQp60DKdj@#*IA1;wpE|?~*P6T9MIk|!3kYe0YCZ%8 zT%T}!>c@<^jLXftA}#|yE^Z1g7V)&|Abt{hi%aB|+d-fo=V?C=N0t6^*U87yp10zz z|7Ow$UxGvO^^2Np4hO*VlwdUlKD$nTJ5>mo(5kP!vvDZkLwg}&R@I0-EYBxDrguz* zM2>j#ATgA`I=!MiD$qio_3EHd6?T9eu&X`?nQW1OY1#V7rcCVUbC~4P(>O{ynKg&Q zoOyobJ;rEj6Gf8!3pWFTaaccLgkJvK@K(&l8_C$hIQbup#em~gpV>+?* zXsBpE9u%J)*_UPRd7@hmMZuhTc*iX}0IP7V!nm-)lh5MlJ+{D}lJB9Ah?RivaJGKp zsY@r;7|&M0S^*W=eADw=StP+)3NqY{;T3xfCHu(!F!y8GPVh)tp%OFBP-#8xk5&b1 zi^oD|nwQ#KF*7WQL7eO6N?`M+iM)Ym+iq16@KVrC6Shfns+#DtXlZn5 zJEXs($Bds@OP^MRWv#~w8Fef%UMqjgfUM9N!tZGu=%;)}QwIk0w(-WBVYKH#dg+MC&QS~thUPs5)jNky$LJ37={w%9^=6@p z3B$NGlRLo>>PXj~s*6;4?=Mea-Hj!qYYKbZv=H&>leJF2tLDvnb(cb0fz;X_)yOrw z3&Lw=;`^V{2;r*y2lA)7?T_?6BbU)HjDQlkpnVq^#6UCP8GH`CAMYi;-Gy&xPL05n zFz97$G_xEDlPN4 z(_LS$3%GBO%0S``-y<{eCX&Rk(Pm5R6zQ>DFuD6B2O?8sE`=xmDawMSsbw@=YD4WS zQA;u^FfK%=@lkw;zTRsILdX>fe%7B)S58apX54E$7)&X%*VRHi0Xarhiv5QY1dU>` zWN4IaBPOBZ<;+AvzPLIcNF+6^_jTW`Qj?=6uB-q5aM$monO>u^)kP3~%BG0t4h=j;*dRJ$OsWy{s`+6nXC_MTjOCJ8-IkPn82LG-XC<2&ymZ zjE*EUfl$#<4n-cTc6psB=+u@oi7BM3kUb{L5c>C*?8Vazt*01|`->kULvaK_puSN3 zu}Xj;*JAn#9T;+N{+|B%B`d(Y9QKNB_<9w(ibE|1K{@e_IcwT?;%T4xdzapZ#99L$ zHA&-2YJhz=W?NR_UoYBMlCvmp>D+$veJ}NK1kfrpHM|Q0LLlIl+;vA5)GDYLs~1vF zQVJ<{it7JJHy)C)O*eIZRq&E|Qt4K--MG@W_4cQRSR_tX))vs+ey+P1JOT9e7xqhG8Mi&jPmcy#2#dZZd zscn@=Eyrc<(>6WYz%nqpjdr#Tip-6T#wGz6oU6)lhMWCa2t6(n0lb=?!Ae(*EACrY zyMmAu0<^LvLadgG@?~G@?$OM3KI}+SpdO8O9uv!g$s)5T*+V0EiF!EsyMXsyo@G@; zk5Ww-|ERr4wS!0nc9(yt?~nPlu5f4-sUB%;0@l~gU}V^2pda1e6$?<@%TbYg(e_qe#iXsFa7*OL)cpbHbbTg zrjv1Z_ri(8B#d9Mf+YhGF-GRfIvIEZ$j1W|#x#bX$`Qp3u0~wQ>@@W(&A~C;Z|}Ku zhI>@R8=SB7%8w?86(<oelD1wg;9@-PT`Uu4RQxz_xPM_qCJ&tMm@_0f%fp#i@ zufp+x?M)S!?=h!i`EMwCGrkJ8)luGp2alI)E%;s(i2M(+Q4oIJS*oWoQkA4hVzh9y z{P2XzIC+5NkZbcePOM$9KrR?9cNi z^!T0n4eKqMy>8RA<&BEJl|ZSfD-C6$5YN%+K_vnJy=}xH{%!rsJ4V(VVR-ub6OyZ6 zbX|qU8CW+s z6OPcQc=YjeAeB~QGYu?U*nGO;s^aZ{`I(=%7V)N=FwSn;1~B3);S~4nOYeBKD7QSM zN41fb=+IJ`ll|ckrb&%t|G0VA2!P^=z;_1_6ZWMSDH>~0QDo@(g9%VfNuKRJ*E^QS zHA2jALm+hXLuyPu9qXi&P5JYj)t7MvEQ#LrcWQ6?2|iG_aUkBtYgVL3`R4hRN{+e| zoDFrNGM{h+Di>*7KDSb*3rlp)S}xXi?~ZZ*Xrv0SGl?rGC4Hq%Mp#flD2Lxk%ti%y zO_HpffkUI@jts}Xh_8f6HyPYzcPM97GO8w1wRb13)%nFJh!*fJhwDS{8-6rDE}W^e z&|QVKaU_*FuqwWjmuwZ++b?}VOiNDddxAHsflk<>6Zzsk9s0vx{u*E0Oigo&8i8szAl<1#{ggZS`>Ll@qrqO4jIq$= zmW*itFEzQSyc(!08j34vZ>JhK4kI@{A`elDG{B-EyT~R~4E}#;gY1Shx#1WHk9^{R z%3@EYC@eU#&4hqM4{Iszp7wE;wms! zNOn^M!JLeOXR1R%j)EHTMZob|O+|teW-j^?pz^$19G&}+6Um|Pflk;_QtRgenp~$0 z9})Bz3OD2kKGP$D`y}&WGGo`9=`X8{n)xW_P*{wKosSHvNC9k*ON2iL1}pEa1_Bvh zD#zPVWhW0fBowEmuvBe{_3%n1yb}oE%0s34vKlQrQY|PDfS70^*etx2@otx<_N|bCcRm zrLOSEmO;NWDh~kgA#H**gij!dhWF_=qG1#JAz=$9JQ+7SP-0O*;;($h@*kD-W%H(y zJs!(s?NJ8IrJpKRTuTu;RHG*jI%B~bM{cCgRAn5`A?u0h5iqRxS7nwQ%sG+#MKbYgS&KwogeAD$w6Dsab z__b#r4G~7JXIFi8cijOlee0iG#=TFyPy`#c7>I0w(iN5n+|`E|WWtkEuIx-*NtSoM z6WX?E0u!pJ`(u>6Cv+O*zCv(HoXGT{zVrYB>CMOe#NLm}i+LY2e&Mdo%5sXh zObj{*u7Jr2$6wGvrH*7VU~O{{?waN~>Q>A{ns$zqTuhXx$(>dR6ZQ6? zmtn5ut;(#ZY1(w$OL~%_t?=0;d}-)}ddsK#>JKpE;i8Hcwx6M2fo|R|I#?IIG{ywf ze$vlId1&(13A6he{c{i+wyV&Q91V~bMjN6t%)#u?27467xIs=}`RD%-%P7*=H$xgR zScE;)U;m3h#+!soyvt?-OAo<-fmKN21ltz{TWcroA(G0|4vr0%W|UEgJCl)Lt`pJi zcQkpRrh{5#dagA~I5{j!<^eXZp=sj(lA_E!*ki-b_YIWKD9?M-BIGZfIw2OB(w{Pq zQ%zcR8e-Q!zz%^IG{U%eYA_*W4X88erPRxUB5DdVg40+xk+4lJw0bJdqZb-kAmc<# zr)Nd$2#%eNwBlMww50n$8FcSFxsKvg)BOyg4#15ou7%8LsN&Kdt%4f{5dYcr4$Txw zRTUY8x;39!#&Q{SHMCt^AV}@6AmEH&&rRYpMyZc(@E}@ zIzcV%jnn{72KlFHSCMJI<{-vR6M5vwrxjIWOCI`VK-?#93~AP}6g#PEdE(7w5Y!;* zbp3O(qN@?#C6G;?%#5mmAcApyKAa>|%U~MKk z_K6A-c3Cz@=84{0e9Hyr=NFgf1!#wNd*io9{D6;)KxOmqy+(e365MR0Ho$68PxRP& z|02?LF9y9bJ%DY=nBLS)0k8+%Dq(AMeLDZ>d8w7Z(-SOad>h$QLpZsg<@ckNqljfu08%xhu4KW&5oO)Fl)5%fv^z zqnpK`Rqz&=ydKx~uTarBP;*OD&6+hTjeo}~9C{Vka9}2!cXTON&kvX_y;nl zSOKYTDO&$%*JQYL3}Ha4q8&`{OtNo)1^ZA403AA`{>_OkkWQ7T^(RrRXaN6GIk0YR z?bV8sWUm8+dd$HpxAvj28uBzk?s8JM_os^LIH%2AQ+aX^yXXsb**+{-@%NS=a6FvD zdCD5w&uZ*vqlOr2#>@BTRKj3ATWF9BtRj-L<|#2>hvxL<$AEO-(U=#1;$f!muI_M3 zMb}j&czsNBSmPb;y;mh+5Yd~D0+Do$4h!vidFE(nR14ZRHrV*pc5 z+8xZP8-J+DyHi#zLLw3N%uH1m3WX_sRlDHF#XcfF5`+*nLzRNOa(&gdXl~EC9vfD? z3v;}lm>}Yp6Hg7E8?FnXvn?C$9&#gUirdbCxbB0DV%h{q19*ER)^S3?s)lM*%ac>F zM&oD@{8J@SV<@&Hi_5rbVFGT!gbd6R%E<&fsJbMj*Vae6eu&| zfteE|8L*LrO2C$o z+MF~)tFA=>0y)G$Z+Z8vJbLEX3l)+#H=XXTgWp(~ili9hTZuN$tW$;&nism=vw6Vw zFL3%_nOCWclp}iL3KaD&)9b#gzjL_HO{kf8K$5vDBgQh*QQOULcGwin!@DSc&YU)* zp_$CA;=E+qoOE$G|1WPbI_gD@0~BxC>;HJo!<4uWIei?J$W%u<<$VB=j&7P00_qHa z6s2GU6a5*o{k;qw_?_=Pw5CH>0*uk|`NQgGZL4gk`AuvtFr=WHMr3jvt%0Z;?Qe|U zjH@j~I6ix+SQ$E@qxnd8(?_4eM%(5_j^K#z+N}-Z%bU)6iGijk9d@64O|IEj%SwU+ z57zV5C&|%^S@*=am>k%D)r^)6nh$D9 z%Z$-B;9zQI-|ks)keQGDT$U0vksw8waNSR;!Ms)}cV1B#HRN@)4T+z8J4 z{C&iq28=I$r!6Dx`1j5!*%LYyu>%DKbo;*LtN1j}#ha@mwGDF85}+A@SX_6CbW*9u zQZ(SKf_RwePp)!z?E2}+1x>YJwJ|IDd9uSF`+~5KdtwdtkpX~*D=w%?VdgbgKCzPa zNcnK?B?&3d3F2K*BQA~9MkZgUNE?nc z?EOb`R!dWkye&88{C`PY9)yfeUp zIweKVN2b*9BH)Htn8`THJN0XNKn+D*8Zd(<>g~tV%8ZH+ zJBdmWzhta^2nZ>h>8#xN7kMF80ddksBY7j`1XAm_Fax=wgh)V;t8mbGFTMzXU%WVyH-QS^TCiGS6Y*FPu%1nS1Iin~A0ZD4lV-%faJ{lNAV={0 zVhxnNHOq+=jwojIRQl<_%`&f&tT54i4SP~4xlOD*7s860Iz~?Xih7?~BHlecdBs1x z-Z*9r|H!R9)%`xJgF^8RrFEIcoglPu;68|6Xo#=e5jGaWZH3QTBk8&#QZSGHrnPX$ z=qBiLKBhd258I;S%EQVdl5P;9J@jvEOf3Lm8DGf?&+d?$YNnR~O2#P&;o$Sbib z%)y@;!@B*g%|1iQB!CRWR5=AGNPk}XWSltQ#kTX9W8J}>7AFO;0 zs8^Irg2EP%b<|H4j-9fPY1YC6AAd%O1O0#Jmo6^=ygwFXX~+`8e%m**1&%F%73=s7 z-h4Irj6Rq)=25MaSv0MwHVSGNxa|5C=_0wV_}$s;X?N3+y|%d0xi04j$f!GT?ODuU zP(B3l*dq*H6yv5_`AnClungM-wU&1hsH>H3wySX@g zXWqf>07jxHAB)!2ffgM>sd_?;4%1dpFP++Rh=S-j{{Hgc{LfYZjMt*Jiq0>QW7`4F zno{2e<)Tx?FYb_Gp$jL&;MwCO7#5=I7}ZwROHw(!er*Vl4f+#}2&vU)o4!9XlkOCe zZ{iRdTLn0DC}=Z6?A)GGIq(`8zAEf$gDKTCU&EbG?-_=J&~O0WQhlmV(HY;kF2YR! zWbTf$OI3VvEBPd8mzxgLV)`X303^Ve|@+#J8iW@LRzXB1OpERS{5kBI1#2 zVgN~LUCqIi0dtrVv%%eNXK}%#O}lzGr z(`VVVcGCt7GyuJK!U%?gBSbkeM{K2a>HH|(Pk~klf2kA1F0R>%Hi&b>Xk3+85g}AX zToZhv%HrKEZ!xy}_Oo!F;5s}&kkqcInKZag}%Tv-r=$Ms~dc??kKS|

9rIJDOz}rc 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 BWcmOA literal 0 HcmV?d00001 diff --git a/MikroMaster/20260526/20260526182002-Config.rsc b/MikroMaster/20260526/20260526182002-Config.rsc new file mode 100644 index 0000000..bd70ce8 --- /dev/null +++ b/MikroMaster/20260526/20260526182002-Config.rsc @@ -0,0 +1,3462 @@ +# 2026-05-26 18:20:03 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: 5260/20-Ceee/ac/DP(18dBm), 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/661/8d6d2114\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 25.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 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=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=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 out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output 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-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +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=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +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=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps 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=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=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="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!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 +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add 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/20260526/20260526182002-Diff-Config.rsc b/MikroMaster/history/20260526/20260526182002-Diff-Config.rsc new file mode 100644 index 0000000..570ae7d --- /dev/null +++ b/MikroMaster/history/20260526/20260526182002-Diff-Config.rsc @@ -0,0 +1,32 @@ +3155c3155 +< connection-state=established,related,new +--- +> connection-state=established,related,new disabled=yes routing-mark=To-VPN +3157,3158c3157,3158 +< dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ +< protocol=udp +--- +> disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ +> out-interface-list=WAN protocol=udp +3218,3220d3217 +< add action=mark-connection chain=prerouting comment=\ +< "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ +< VPN_No_FastTrack +3224,3226c3221,3223 +< add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ +< dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ +< new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +--- +> add action=mark-routing chain=prerouting comment=FuckRKN dst-address=\ +> !10.30.30.0/24 dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN \ +> passthrough=no src-address=10.30.30.0/24 +3229a3227,3229 +> add action=mark-connection chain=prerouting comment=\ +> "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ +> VPN_No_FastTrack +3231,3232c3231,3232 +< disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ +< src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ +> 10.30.30.0/24 src-address-list=!NoWG -- 2.52.0