From 9f02988bd5ff93ec66714c6b080b6254439ef142 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 16:00:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 16:00:41. --- .../20260509/20260509160002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509160002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509160002-Diff-Config.rsc | 24 + 3 files changed, 4663 insertions(+) create mode 100644 MikroMaster/20260509/20260509160002-Binary.backup create mode 100644 MikroMaster/20260509/20260509160002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509160002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509160002-Binary.backup b/MikroMaster/20260509/20260509160002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..70639dab8e9e6b0deec30a999d2a5ca557139c8a GIT binary patch literal 298264 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

m_fMBiBCv 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

GVzwcAji6*T8&JCbF z8U+)bX&Yk*>W=5D6ozWcRXj5{LXyYr#NzFvjsE$T64*9*;hac7jwhi{rse zd~tUO0veCTd-MBZ!pV1F0LAtk9$A+8KQ$0N`Xq;Njz#g9;fRaKW}2sp%7o{ zfzOuGPP8#}?KKxvbiZBoQEHXoW-{%d-+w2|09?vN^u^5bTXc-yt~n~<6yOjX#lV-F za}$uj6|`7pwrz>ne4;*?;IK)Hm!vyBGsrm+*+Z=oJ|yivVujQ6=m#EL{X*O84s~uv3NmV4FbM_GnOaul3DvV9vBs0060O*taHus#pQOLXwHcFdGvs& zVwDD)5Sh?V2>=PSq)O4|BgU(mVZX1MW|k66{PJjIHt(l}BwJ`gy0Aizr<#h&HHAN2 ztd#t5zCedp3Yv{SFe08h|D0(A?M$-c$!(2OPf=1YO%8+3M+flGncZAHp5=HJ9LbH5 z>aC+h&ZOw1Gx-RDP?73JdlZUlO@`Ta=XLO1l>;Jr0{vKY70WrR{q?2|{tFW@sl+@g zXbHHupgT3tokx!-AphvzI8bkD#*jjI)mq(Vh9?|0)e-!^pl3$dLjkJggRP3=yDPYr zQvr1g_`{L2p#d8uRJ%jEL4+q7zU+6yE8MGA&eO}rYnk75e*`5wiQQjq{~Ji=`NlSa-0dp3Ch1?x z07L^$NLsKFhRUTWqjX&R2~Zmd5QwetD2CmmPAFuQ3fhc#n1bO zn~Z*1xr#%&Xc^w(Y25|pOLJ9+ObC;HiZi{Ge)a(ep6XA-E_mt*Jw`WyNvx6h8s#zU-O=XEs` zMxOTv-N3xK)DaKpf8A_}hiq=Oh_$e7HAI*c&3M*6*fsf+rBamw4ihG`bR@v@%)2w4d$&u8^g>~GVk=?3AKAEB)uD$UWPdOH|5fM zsCxw}QQ~jdU2@2cOlLo-j+|}f-d0T3ml3j9z(o|#yQ&c*l-Wc^r}J0B{|4I)Zm$K| zF)q*p=D)DXaT-D_xhW%I5Yu?%ewWXMOeJkW!O3_zM6)lryRMdL!Yxp!Aoi)7l z3)aAcsQlD4PzX~;k90mxieqB@L5%*^sFPC=wNP(V{?nR1nNhkSlOA|9GZMwzap?ug zH`8!IWM(7kwUKfR$($&Ti7~)2GQn@w6qIFT##wVGxZ#dVJ>s>IDB#OUj64 zI~Ur@xD_u*Q}E-)KzJ}!lrmgB=wFzx%ybBnG!@Vm)4pD$C*_SZIH=Y<&XRSCaA25o zlCWJpDuZx4GEM(56ayVWl)`pGq8&h~*h4OYWzV}Nn34EiK_x!@w>{jLH*LAbwi3Wr z4(;c8If#dJ(A{Nmo!LLYvXykZaQdUcQP*5d`j$`uex9>c{+(F6U&FGV6=4hZsT}CO z(zwPJCR-It8MKTf^VGVV^GGTFBP_pN`(7*kYi@hnf*N-8Rop_ZuuX`R&V!)XR%Oy9 zM-1S~UV-Mdv=SiXL-u^!{(;|l#^w-r+nIila7a)Kr|(CNmJ@r#@ejlocdzoC^U%5w za^_s{IWPIHXO&(AQh;oEhYFSGO0d{9s&9$(;toQO3?P+GX`KHW@r@IBosdPO=n988 zm3}V1yr{4DXr7zv#bxSHyb8PAWPzkwjJmD8wf%t`{3wwJBbqwlh+zn#yM0z;~;P%(iBupKiC+4AEt zFDVtDj)|Mw{hL7)C#};G!RM2T^xSMcM@MY1H=V(8>aln}Gs!ycP!H*&qgVVjJg8qm z>*$L8-=0urt$S<@qUAx-G=%@=ZJ^fCd|q#+Hs%YWs(NSs=n7Zq55ar|-z|#t5_3ht zCPSVO zkQ?49+7-u$wOyu7O!*J9WlQyp@1%DA%PZiJHHrT>Q|U<3t-@t1Q=mO6`+u;$-y>Q|{L9?i*#!(xdTc zq*}IsSQBd6t4QCMXXM_h4srX-9GnC0)+j<^(Xs1DV+G!YD1oOC^@_QENQohqK%AFr zB~*<$be`caW_?^O@0A`m5T{AiJu%XcXb>(RtOm0X^?81O&b!o5m@c9VP~4A}ZIjE# z3d`fJzjDDyY{kUh)w3=Y6EEPsNN0W?WKNu%DB=sc7@=|%+LN&>m);{>boXK3W)Ol` zK3^|FSWE1Jd!ndLm~}1+aMAnG_WGiK0&(EXjdHQ7idznV(VTpADicUXJj6ZImmHO=~3; zNt!S0C`Bsx5z)?xbMIdyiU%M=xcy~lSVw`ad)-B31PK1R*nBWV5HhyBi6UE3fM3=k zVSewl6dgUZaJ^eAe_A@y)da9!{*|)?+QI`oj%TF}6KeL7>9oE)x$;$c1o4MBRh=ZO?OLFU>hw&;c8uzl{_ZX5SEIX` zJ~a!CIZxn$YzKGI(SG!CVNx6mL~%j+$n_fWz`~s1*gUZ zPBaVCNb%dJ^|ul|ge0y$WBTMGFg)oD3ZrXbDg)lVivoK1!9=vNTTo3Eb;`O9w#gFP zsUtqYviwOcT=;UwA0v)hg!_0RJD3ckcTi+urm76f;vyHga{~1JD;`o+F9^Pj=V9I^W!}Q5c0E;qh`TX=RcH{(egQ zR{~&O&hsTvqzS!zyZh2doXThsU%Yv^RWt;tdLL7-f5zh7_K$wGAWPoO-TUCxgkeQL zd#px@A#Jg$AwO05!orI!u3RdDj$&yv0cNeMdZ1&qJg z<_LD+0Of(th_}a5(`g%8F~9avTP~uhqhv|eUII>w-qqNZpwz!-Cq=VGNbyaCBYWs; z{6<|QSfr)If&oWj`e-a~0W|B!_X!{mHSr$O>m5{jl)5<*j=>EO&Ts~Z^<~(5opDU3 zrkY#e3@Bh=D80IOx1XwCA)nvBILcCTq7DvjR_3f1Jp>JC>ERdT^DJW26j~pdYSzce zC1DR4NL+h=>faJ?-(TN#grN$;H^584%{68XvlCa_ykz%#V+(4q#mhn?Zu}N<*wQSa zHsk+>J4lX4cg1KC?Hc5%Nzzh7`-b>~Vig;Sc1^m=&JqoI5ND@#Ez~&TZ~1mAE+f(a zQKLx_A3_U+b5~|(I-24h|6x)S>gLUxf6lL0y*0oHm}FLoS*MvgaIvKBV~0ia2I=2I z`{4c@Q(;FN1ZYX#5T>MDO#4RITqT);O{-Ol)YJ7^Ychn1b-(fgt4g#Rc!-8lh`dm( z+|J0WrY5Sc*{QC0(~#lsYj2mC)|&x5^>eIMrSSP%oY5>;PpI2L(~jB!W?}&oJ-aua zm4is|cC}Q6w>G^d0?>Axcg?%0+v0{w5XpIf#Bl93zytTd@j>ke>yq~GE{2w#iS-$k zQ}1KZdoFqnKypJWh_Ie2XF@ct>Zc|fZr^IWEopjmk=f*(;ptk}f@7C{pnL2BfRQ)|%`!qzIY{O(Wk{ z5whsdE=W9t9{NGzl7L_4^Tqg&BsLDbkeYW^n18D<#B;D_uL-&hnDze+ zR6tP5Rn3*NnVfpqy%?{Od^!|Gz{5y+yRnh}RgY1D6)_m@wO zT>^9FfOr=^TJu@~#lE0sDlC&Ds8S6mNx@vTO8k4aq^zz3ForZ)E1&JRi((?8=*o*u zN`m?Ph|n)jMJMZqx$;DpPXVps8T2z3cZU*POBvhUmW6?%O2!^?;5j2veaHx+!sP|9 zJNC7@V?GAkJ5`}&bLFOMA2TBMG_+p?4PDRUk6j{$h zY#HH^1LvRqF(hok*B@Jj{{DmA6-nC7imPu_?quIHOD?a z%ozn_m}RG;E?vY ztBWu%?+o9IboSc7WPt{2dZtcrK3{Md(i0ji*GnbAP}JkQwf#45XpV;|WLfd`;CYuB zVeaa|rzN)OMm2|B5@hT=YNm5)8lv+?>RETU5V?8HsR#HUI?VJJ8vxXQ0&j!CpG&%E zy!kM69)tlYcRh~E$*VkP?Ww`B0gH*Ol1B7h3NxTli%W@bQq6dIcBbCRTPH_ynu*9u>0sT-pgm; zUUcd6HiQkR?e}6G z(WOQ<9wem8CJha4dIeaP8J2&+B~oG3ijkWVVE{dM9JKA z93{(9^7B&pyi}XvG6=mk_P8oT!LoV{&!+cDQMf`a5w1%}WUl(ZGpdv%el1sr&$o={ z0jNLWlxO)IWRDe$Ct6Y1e~_zLhLr89^_a(XeA{JU#&m0+ zMmLy(rt2|KbJUm!K_#n|RQbCZD4hS+?QOa4<95H57#AnEebBV$plqxaYCW?k!DH*# zq!!;XM~%#MajWP-vIGO>=QWQ~8`(5zD1faHD^O#=p01cP&nGS6M}Dl9n)Ys2@)drc zt&?uV%v+BA^k-k-)FFCcpDMubVY_7XHyL>l`XJWvhk48Do(ldQE8yN{2H#2t$GiFg z8`K}yGM|_Jq1A+JXKt(;k^KVN2f#55J2dtPiMFMpeKk#$NLlnQA2v_Sc%a zVykD?qskD{)+@*FqCFhVuP*{f#ScF_)0Eay3~0XXa;~vbaaKEL^Ktch`pYU2>hjcT z7gAA+gb^Y1Ym)=sQ>WKFvbdZl2Bp#nG}hh6X=d^5X42~V+>pS)Cf@_YQBt>4v&18l z0Fv?&nptyq)(PyWmz2Ndye4C=>kMTu5*=t;wlmx;=?onbT1BnO2`g1>Q0Il~TwrEQL85RU>-nQ7ZSw;}>xE?G7t3?#JTT=I z)X`5J|8_m~5xF;}pG>vQd+Us=VALbl0h(-|)Nb)q3z(#~14(94IW|lI($Lyu9Nc+l z_-GiA^a;4|AT7q@@_**$8a>m81`;S}wva(p)vFgG+HSHX6Z#9edYps6=&Kt3R?G?J z+r)|iN4=^G)W%BhBri5eLF>Wr%+hSu@R1qL>1GHOAYNz1&<{2fidJ;}5OG+mprwh;lMM55 z_MtGjRROyx7E| zPpv*1pdJ!RB0@8sIvF#DXG%}iR3@oAHQ@IG+tsK{YjK!7tl*J>DH=}<%)-p4Aq$fm ztvVHR^l$7CU|!z7vTq*wNHJR!Et4-8gny%4mU8a7?edO6nxPaWPN2cqHWZhm2tyim z@#^rlj494|p4E__IOV)cLo^>7Juk9KU+$_I;78s_@%NeMO|}4p4IlIvbOh-Z(b4O>S-pqw*dpcPfpjKR5vs)a z8RM-a_;QHOm=qu0i5AxyAG9prEnZR~SB;<8ydXJPm>jBVtViDcu-L*N$RhN%rd#N5d4y=OL zMA=5FH3(Gv_lNGUDeOn1Cvv~mXiaJ&7aw)Ogdo%ThEk=a77Mg)AdQ*VgOwF}vbW*x zOpxa$m<7BQ8+xx=YGd4e3vO-F-d}y9TO^-qy^0$VTFfy$`y`dRE?FRWrXuk5gf&mG#!U0TChHbI=O47!+CtHSBQEuS z{z(Q$PjUmSG*{3$$a4MQB1WJ30nrOGA=$YzfyKRg7-A`~MHz+F@Sqd6j~$2JcnR)8 z@Gp{%-pyh z!fhi7KD_w)yWEB5!4IxJL=5%88v8riX@V7lyW{w9#<%F%Sl59}aCJ6Va;L=7c9e+R zz0pdjMQR$lU^-jwNaZM=Ar~p}X)=@+O9z1a`OmfJ26c1LAprkB0KhvK4!nLt$A|J= zH@~ONS%-Wf$;X#9ZD4&;0Dw+<2*j ze>N^8C8qV6n4WprfOAbt{l~Q2f12T7+tu8%G>7n#H*j)}NS|2gMd)SM=CTQll)J~+ zVZfr6*(}9+i&`1aeQTJf)`}l~o#yUl-p3lsHuo=CZFfSvQ))SHUlPCNo02l$mzIa^ zgkA}A;rTiM0h&(?gGN(Ikrk2C*Nl2um(hA8-j7>|0G_?DD9<#9)PpXqyqIHz;0`OZ zRKa_3-)|Xbg$a(P&q6eK24|JMLfmG8J*$+ZO8wVJO-|prI#G!QsBPvG{EFJhnxP?* zKob^wn%lcwiRYY!=e>V|S=q6M`4plnm5x4@7lD=C}ax)*wvC z^G{o!u6=9w^Wj~|kx(Q6P*VrS?Hn%O9+|S0?fzTb@hm+()W-J=#7vv?-qawF^_@3C zK5ERg!%mM52nMrvo;&2^=#IamQlMDl=+Z$xT8M5@8GM>9)~hdglL)yVMk};6^iz!; zCUY_Ph}lK{*AYNlX*me(76GE-qvuktvNWWGbf$h!9UsX$tqZlUlUZq-Y?)Oh&=t@q zlY*tuGmT3!IF$50hC9?;=Kb(Cf>Dv|ie#vu(V-!z@w`U@aBjw6i)T3%7ks5iZyWp; z&5w%yH7tfz6oVO-MhhXwB(Y>UE4FQRqXBTPWqY~0YY+|`6tWXp06mGJ#8ax~;XEST zIcE+@3KjoIq+Ju{Kk0liIZ|B|L`Y@%gt)uakN; zPGzL+PP~v^b{@-YRqF>G!RB6J-B9M7c5V%Va7+ZcKmH{m|L<$RSO3jfzVh-I3fV?w z-=$!Vy6~gf`pqFHTUCuaca6j$b4=rvh>2L5n>lNWTSxmR*>IcB!-da9q_3B;r_RN3 zkr(LD=SS13w*{Ru#X(~K_9uZZIBXWX1;qq;$Tix0iNOtW7@TAecnuanpda6o&epgU zOYIRM1K|GpwH8Y!P{=~+0t;s6$xlJtuQBqzI9n>mMzpzCr%`0pPzJazSb6F{qr9ZY zkpra~qWtXst3Oo#CJZ=b6JGIGS#~hB^4pA9b4`Yj$(3!I1bft{S*W z8w)W5Ob|&YNXEB64^y_*iQr6s&+YVu*-?SUR+|mAvu>R0bZjZ;APM=Y#*L%XanwNihgwAC2DTCP%&Z! zEtjZR$($jWIN~wqa%(91V!Ke27S;fXkg&3C`t5P}SWyYA`=_@dU7#&%&n22eOw^b_ zPGsEb6clx_+J1F8{u)lvc>ueI_4}P6)uh|>k~dC;1(fYyPkd``DDAzyX<}q)%bzMF zR!vOqH!mxxVFVPC17ZCItJxwBe&~}VAs4z_8Mt%B&M2l;{)ouHBGnqjlRZH!;2l2~ z2PvGoUJoA!Ky$~{wNJ#^57U3oJ$Vgrz%Rh{*_VpGfSFcG`#CqS8A`LP_Kay)iViCk z(BgUyL_i`>mUd-E#U4GgDz=@h7u^<*7fh?(gErenEp|SGw)Zy;eGlY(N*w+!w z2_XVa<4<(DHn($jW(MqHrZA`?w7RoiQw+Tp@o9c!$3tgg@@g(q#tPWiqHsTiL|STN z>9=1oco=vYHe)~9Dscsdb{OhOYJ9df%fHB3$3iWqjwYJ1!zyc>qtOO6VoRrr2hnMj z@l#Dml(yZmZ+^AUz^bFM&sH7MmpR?Lz!1^F()DPT7^HbUv;V#*hTaL^`tMzN6v~ z8!B>mCi4UYtLJSlJP96W8|6|!!+zuI_=0ZLY!(bS;CeT^kTIkxAul9xY$($a0B|UO zbIy^@jezba@##u?X)H?gkwsi6-#zBb!uxG3D3@h#C7)>b+<5E!g9N z1F^3dF1DUKR;XENFze1W&$mpuGb@M}d3TM*YnV;+%RAc;uhMSL6Y%L;j2$v~qn;J4IYK-0Grvw{v`5+k7r zM41$&ux%eBU^`4SoVsjuzL#b2SL&S@buvM*h_IONJ7vEVA&Mj!CoM=JO)Jf0r<*ZIXmkNW(}jl zDH7*X1MO`1g{PtD2~e>*DKfaxpForf#N`L$MA**>QI6NFkcQNznP!!4GTrA zfq^6{Ps1f@oZm@8sf8UC%?hchQWJnR*dCJm>~|vN(cK&i`~Dx8r1cz$G%OoqR+)jb zm*osq7mpv)zu3bf{n0|$BG+OzcIv*$)94Z|?NxzIpv@?%TmRyx2a3*fBW+AC-B*>Q z5mdM0N)Bn0>_t1!j;=)pQ}P|8tnRl~)4DmU{L)OK&NQGpmag)ni8p5(l2&f?RVHnK zytGLWCtqfz0u0I_3L-6sVPYdm6z{`RWgXmAWaj@;9R{Zx#6IVVjd~%BAfBEunYy7M zFv-Axv2E^4r8f~Vcqo`->{6iMw1;`>Av7)$FAKyf(3 z=`y$Av_-Jd?$^!R+AG&4G9&)aW_|~qfyazP4%If&NZWwx_wOfq&Wcb2HH{RPiSE*8 zj#N5Y+3p-u!2IwC{(&6H<_!zg2j8-_49)~>kd;A&VU&e6^r#CgU72E=8*xJ7ieVle zjTtw4+lW`0Zq>SI)7E<@?Dyj>8Zf>q}_ZjivxrVXsAL^(b#k!df z$Xc3N@R1ewDTo1zojeC|%J-=xvk7-14L}2R&M?g5UJ%Q;zT?Y$sEc~BgXud4^;j6d zE`BNaN%KQhE*>n0KFWK}(Lq}%EM`2lll_+F4`D=xz?ia8cizvp@R;e*Ex*YLok|oW zOH~?#ee&jy`nG7a03B?@=(N&%qo!!{pO_o}IuLh%7U9TJ_1c$1vhp$&*a>&Xb-*{T z&}w&=({3yQy33fvabkYn%USsEsd-o{?^RZBS?p@P`FgB*)9~#iAN#$9Lg~=)vpOc z|71IxZr;?R_4Ls9Si45-R)6HbwYnmgMZt9^N)GRk7$={koIe390rTYw8hNfrkD2Q{ zdq_VV^Wedb+IVLyma0I_9N+semY8&;n#UkIBWzqp!1QBo{W5&uNI;+qKN^MKCPIiG|DPHh&hcqf!qJoRHYD z)YO_!Qc-haK)0@8wwm{_&I(wP_jxZbfn`havR2dR(Q^^qkZ=4^-Y$g0)AKwG~OH85DE>PLTUdc2f9ZclCIzcJpy`1(C1 z_+FXsX6H?KveGisPU9O9%H>ue%l3#b&>WDl%^p7XwmYRsV*gC=Z;ARx5QIigT_mBc z#}A5gX6<}tTOQB{SpOc$H0>2T zE?Nf*_$-ZnzScf&LDt{#x-u*r`u65HZbOhH$UIfu$RSCjxlxfU3wdMD-@4;V7+L9X z{Z6DjrYDOFg=+~b2^tHE0^V&xI<^MK?Ez!g82Iz5Olt@>ls1?0e2Ou6b-N8xVkef! zTn%v5j$(M7`wcPKn{pbnHgA*@bFdisL1|4INc$~BU$qmEs=V~fWVCbqdIwK_>uE!rWj>z{rmO|fIJ=YPwcb+ft>8H*5m zKEJS*Oq7HUj&ZEagz{j=ShIf9Q$?`+eSJFtk>ZGPz=1Xi7#k7JuOu2J$r#3Nq1Sny zs>^t`m^I_zw<{rSB|R%$E4hgAXkk8^tcdh*38cGO(77aa{BB}dnOp*uRh9A5Ce!xf zZ_VgCC7I&sP5k)&uhAgwZ%UatvqtVEAcJ1pmK&V|q8|2_th5qAx9H1Eq_3Jm0{;e5 zFqMY9=_<%PSb(Xwt+&LN&LO5ahI3gwNqfNfuf5CD${UV$YEJTef<2w}{|u{!LK{i> zb=unGX=ZgD>9TnWq$$2m$j%L_JFq+Av+XZ%epyv-&aQA%EAg%5=mj`U)YFl zZ+BoG>9Q{d31REM&g`1I#~15h;9^=s-d(KDjH*WZ1Yj`(z_r*bFERLQ1xHgL05xe=0@va901$TuX z*h&VW4wV&n1SeXa(QO^HbOk7BRw!&IYiR75*<|dB4bM=~(D>_9nLU5Ls~+_sw*6Cn z2Ay#Mjm!sTE^zn8lCg|=RjYYK^_;ru59Ro@fVz&;J`8VYrE}FG6)3^{p`<0FV)uRK zhm4m~U|X+h@s4vvDYNff?!TMGQ#5#F*Ka z^3?(RSdp}EdWg0go)>&ErnAW3E(K@Bu0NRjM{K5tDQR$M7~#b&rj2YIBCIjyKH2Se&lsofBL0<$@+@*j8}5%6@SR?hpazq?W(j*Eua zJe0UaQg0M1KFBzg<~t?$yp4LfXOiKD66I+V?FZ|+UN1lq<}N~fm;YHCwvNGis4=)C zniM7{bL;uc{@0%y$XA;wOwkJ&+i@2)!X!vm;ipktaCcZRAm- zU>tQEl_HmP$F=&`yma;tI-}%>wa3Ga*OP3s`>L^%yU>|CDygGO0DW!IxO7I*VGrv? zA4Ll#Ac!cfaC+YG`a#r}Q;uh$ zbDIoBAsYyC>V(Wf%*oclV@Wrd2bWK(oBd|?Dycj2)$kNj z$_~1Wz2qR8>~D*L;s@xUqQaf|JTZOQsLSoe`=%A$g5xGSXBy`4%6d^g5#LVHrBIa7 zHsU7$vmZSw1$SAHHuH?)aA@`Ih&0Gj*mm#LD)?<=;J@5%nBlltz*H7Cy^5W;eEKJM z4BvDqAgANkwcxQvE@4t$7WOFqX_~;(LNduJLXxDnBsC1?GFn&u;5oHkh9k@PrsQ{D zk)mW)QYAD)Klsjsma}EoCDNjfZ+|~p?0zt@scgXPUx`jK@6Bw35-ktYOvV8^N3!{AaAWs z9Nsi&h9L^562sk3IgHPbgb()*GIEV@fi20g7X)v|2ihlG?Qr!-Latno<9lLFkL1*Q ziegl}cRS$!lMS84LNJP4&vrE~PFZIw|pK}5UNIy%n8Ol94ldLE4U zSJQ<`eCZebPbK^vnOiq)lsWS`62o8&0_V5F&wGnh3L(g1(r7zRP}29&8CPR9MWkHuv(rHwPu<(xP)0*PfME?>!zt(&-ycU+5s{GuT75GIYtCNPa82iUAC zLJzfE4OR3paSspZlcdv5VGG{5Ij~3@mV^z-zfM;w!7sRL0-Q5=+oqR7n`ROJ<|UlQ z#Fgojh*8t%^uJT(wOKwI6CPmh*)>tN&zBMJ?Jo*Ioxk*0m6O%-Jd&FuI#~L-g!kYx zuEzA-uq-#(1|qx1K2o|?*Or!N4z$%nF?3_^Pq!NGNp7jaxo949Lh0@!7vr%<85}8* zoFaDGq`xrAQo5oQ1w9g$v6LAbjV&$RL}4cE?!g2G3A$SxTth?odnu?4#G5JLKdEJxfHfIebP_%tI? zNxO(UJ{L)B??AkdBb{Db9ra;&^=;(ULLdqla{7-;(CL!U46$bFnUWLD5k7_eOYPH4 zLvk^oksrEU`+csSgqn?FB{;tmuQ&~G@Nhm5rVV;PkInQB(@@ZCXXvXi)SdA~Ojb~E z1s6`6Wneka@(CezH+@F)=5#~IHa_scXAZO)D&@MinocB>$Mg8ATzrEmB)4aoV(%GC zGsa(lKXj42RzK2$vT5jo|Ge%X@S!+~7p8@%pvHINy70(#v~xXX8;mD&WL zp(CrKH~rv?WXVXh%j06&zznH)kCjA3tS6l^6G2DN<@Rmk39XT7yW=hguIb^bNQR!m zuHs!m*K=ebh58wneQA#$E`G4TWB?RXtUdvsq-r1xRf%yufO>kaYJ_GW%3TPAQ{92y z*VP>n$Las8MLi+?id@vDYWhq#e*u($lGeb)wsQUumsJRr}-g{(?>I#JYa zw85!5s*W#4(!4ov|E3hvNN&~8s|ip3&Zoi=cf|PULg{B{Y2kjTvuM0W$CCk1v2Wnm z1Bdbt_B*5*euNr)r4u-&$Faq806Y?;jLNkZRUSn}ni1druG0+6A9D{kW zgt4(V(XOKbaOyydXKU!4I)}RmpcODcHaouhdi(o_7D%G)Uf+vg?)t0E%*d^cb{YPa zKzM0;r&f?09y5_$xpVA*1?gnJwU;a5)ju1Gf(3%IsApOev3zKn3`cx1lmw#&lL%=K zH@F&w0VQUFb$i6ltf(-dFq1rG<>1asfF+bp4e4T!K_y(`M@&9Pts{w8=ZS zAfmVw3I{??vy9u5Q<@02yTzPpceS@Ju}{Q{{fVzC*tr--mO;y4T-s?UP(I1VU-5Sc+bZy$8L2{LW^mvo1;%dZtDp z3oJG3+~;$2j}Km(lI;xS`zH_L7-HVAVcS`_ztnS6-~Jz2DY56=0Nhy(J_1Zy1SKdL zl~{$_HIyt-ehu-UYooq3+AhLfm5Uf!eZfiiRH-LkxUJ$HWd>Cs4ks;oAE>-7kijf zvyCGObNZK_Rb-(3?m$B0sc|oW6n|z&;;|?7k0FaY>&l>?*SgoXHWUw7x?%8-JUs6G zJCAkE@^M!NO2J4&1OFo4&F*;FW#N15fnj@fTC%VeGrIxvx>+Y?RlDn}40tXFC+yaJY&P@mxRyM>IDc zQJ$$*+}kA$N*u}gym5dpF4l~;r7#;V&`HRGZWbypdne?bTZlnvs^p?b3-L}B#lPyf z`jEs#7_)xHP@1|4t1)2=lMa|(;Uv#XHxi04&tdms%=VNlJBmiKR_C0XZNr(1)@PMn z$`qMs2I?D@(mL{zxb2Sskh#Lto}abbY4Q!9-xU5jeY**`0AML$WlZdI_)Phpz#)!~ z`6prxTS-YYH|TSrsrbb=WrCs#EbNUQ9Wt`$wwV{n{#p}S+?_Xyy`;S#6fe_95aGDn zB+s5L8V@!ok|a5aF+4bVS~3Jwt|xW#YJa@Nrvr7j@_0k|;R8~_d0t8S2!p5}P&|jo zpCyW+g6*9KxB!FJIoRcnPKq`lwCwC(71ikPwy{^A|Ml8ovz z+j^huxxxW?h-DvxPJxNacU{oP_8NLS=^EwvWv=S%tbBH{yLG3IqoSEm98ye4z!V+i zBV=q^`ffwprOdmUsrGv&CRE{?B?PILf(`2#u)k}R0Nl9UYgj_n#|b!0zV2#Vw8ch) z*qZq<3cx>TrCVPnim)_N$=MAqalW1T$(6YOHr7u9;%pE&KEy|MA>-nmUNp1>Nsw84 zzuzr25Q9!vKCrJP_PntFFm@3-QQ;Qau5n)9RJi zK8$-)0aZR_Yk_O(Z;islJCsC}4vGqhHlLq^QSs?JS^mC0;m$sn1axl2_&@agFz6#= zr(NTjuU@lA$z}|dkKeIA(oMSD+2x|*`xDNKqG0^U-~Yrzbsmd@3ibPnz%)6ROQq8> z6l`8>HlO!`K4palAhJ{!Ie9RbSQ~9^HYE{qi`_VpEz4J3`n)2UA;AfR08C!Y8T3#JC#bH!>zZhoSm7( z1OIL~oQneKeO35tkH%1ypC~V*B^RC-ptRZ=^0E4kvmaD{0D%2wECK>kp|mr5e%IB+ zT3o2t!BWYQG;!?!fUekn`Z1`aCXQsUyDc!qI+-*5kNw_pe5HuZzWbKLy6Fa4y`v24xqdxvTB~kIHsa6-4(VK(w?U( z>A3T=`JL@jokC2M$_BBh!yK`+(hxnOSDSQF!mN4u@+j|k;!&np&hs0^@xHhivLfCb z4L_RnHZpi@fIb2SyRRDd18D~3TTO&%{=x2f(fYLik1}wC*BYIU!xmX6?)DmvyHW9} z$Fi%k!x@i*@FuBm++_|i7!zQH3SB%n(@x`w6S~NE%|_MYg&N>{=m)&J&B*3h!H|j( zbO*Z0x$8@b)v?}Kx(@BGGV3fdxFF0czfk>7uepaKRwMqd9<=#BaY6vvC{hih3*j|0 z{=0n3Ny`Ke*iGJm*9>A;QB%KvTvyulyb5Yh5x9+7QiY1p&sOH;#he_>k?U+l`$^H? z21n%*p~J&v6e$p2dTRJV#%uix&E4FJkj0=X{@Z(us$vl z>s}MqS%zNNzo(jo_F~g~Q^ERzF^3MM`Z-m(jG#9Jo6ueDN+E@aMN<$HqOWq^9*X;% zvE3a#lg!>&J}(A{L=509ZoTSE94l8*0}pl7XnA~7+%=YoYm+7Gn)9o#z#-1pje_+H zgO=IN(J{uMF0lH`n3kGGv_V-}vXbOhjz}tJsq+J&J`tmz*L3p?WbN__c8biB1DGc_ z$=TDM!I&Pe%l{Gt?g-Bp=1D(-?)9V~iKA>2gn*Sa;~wa^ZJgma_eEUj@}|!*^XuKo z$;E20!Y}47>R*tjZvbOh<&A4uQ|vMjJb7df=)%W$IlY-*SZWVhVnfqs5&*>pVfbw; zHSYxc=Iv6HXKs)UUEK*@stMWR7e0bJcg*QG+Mp#_q8TOx{T4`&nc{t7<)XO8ix}&- z2~Q(&WYmL!`wX-eR|~RM(buHH5x?F3oL`x@YV#r~4ak7yyMpcJUg(F4hiCLe^%}vjeWKYzPJ%|=18yMNG4sr9|7OgismQWOM2l6NLjbO$^0ZbJ$& zE$7`{LhM2R3V<&1%OSMg8PzfxD$~IXXc)aW&g1(%2YCXhejsR_p)LZRRr6rc(jtY)-s3UdSLxbD>bPX;7Q8J@V zp~!H5!6^Q+Hj3}&s=wT7QXtzwq0wJEB6K~YnY~cHnu1_x5$|z5QkW7G*`kU}P7sK?p43n{NVLD~?08BYMCr?QGrKLK6FE2C`amx&nEm&beR7=u#I zt``OW6-yvU%HN^P`LGZ&>j7L*nSVd(b?N0d-6;lS{*M%9?IS_?MP*oenZnxP$*@t7 zxwr|OhO6Q5r06MEY2ZLr6r_OMp$xC9f_5n}l2qa`SraN&pH#+COmvV}y1Oj|DcsTK#emVnQlTBsn9A~Q#rt!vqu+S-9M!Aj zW6nJ&=z9e*yr|JIZbEDhFQ)7{)}Zwib8^*N_@b97ldtq?{syN-X-*qdzveOUl0Wcp zC)c%@6Y<-n7|F694=t9VBJ@dKEO_k&_zI!c?17@9yiF`H^1wy-fB!5b8k(|D)`B`h z9exw(-H5D~M&Yis7;Sz?RW3NvNTt^<1~5jYr}n2-M=JX&{LUaJ?#7=8dh~K8Z0H}@ z%cPn1v&G0bgp`yS6`fvRZLK9uNEEuOPlZcrwpE>4kn1-@0y`%OS;RmB9qEOVK`_v0 z6#*oY&AujX)Nob~T7r}DtHaw{4|Qm;9O3uRh?<{EB$G%qvox%!;qsYFlUk)0+CKhs zsux_3iL0%-jEaF;aPFW^xi=QiSWB#geypG&X!4=wQ^ot%x2>F9Opf}_5`{ej%AHcn zbKFk>>pbq}tR0eJA*b3)WG{%(oG3AtkB$iHQ6|b2Y@c3RgNhkk`A=Dd4Q4H~9J*#V zh}xeTG*(s=j%(ygtdu8Ed0edLq;9;A?YKT*cgs${vzB_ARo z!sL6@qZF79&ob7596U>lSRxT6S0`+KKT+Moo0PN-N(LggOdI`t%)~3wfM6kLtN?B9bPom|CT;epHlw zx>WXg4Zt!D)YMLI4LwZB(i!0!JUv#zzV-Ff3`6xZyf-kMl5!h~9AMG%`cs!ayv5tj zLDA)(;$ApMkDcc70*jZ%-%gw9k20e@W$K|pFTDr+W@RMepO6IL+Iy63Tv^&7(vvol%bVBH%if@VMc}>XH^oN!8 z5$+>_udV+J?M~Ndz({QAAk@$4BVscBZ7A_keA?B78)d20{1pP9`08>sXF-*|oucpT z)FjN2&HLoY&RtrNNkP%j9U$NAVu=5(+~Y2H`zb6nWGzu^yo##^@=nV>QgVDDUQmjP ztd>SNB(JGhoQhFQ=VARq@=I)WgO^wP5+E?&9Iy@{nO7K!A+!S1+z3RUmld4?9i&o+ zvbo}MO8RN0!w+Va8h_A=l;foY5%zqJk(}bVU*)rsg{Ckb_sdQ_en#z1`bO2z$9wCP zz)=74TFixfku5&m7HfgLupe|`n>cwPlU}S?)JDl{II|KZ(G}A#y@~q3(Ocgutu>-( zZI(bqMa$7h1A{0;3O4!-II}*0V=lx0P?>&{EXJVh$JFcM_-IAR#KS!a?ncKfL0%zd zZPW!)Ecgp8{gWbr^WT4sScOxgpQp@wYO)h4r86fgWd>NUg!td>v3Y;P@Jan$m7q)Y z3DI*T2Zm6J(}yCu>)HRek%)P0#~UwzRf|9W9d=<|kzPQ=lwS8!BGd`k>tN_@_Cv}Q zq!{~&>>qz{Mp-D zhRf~DjE!tZJQ6nQ*i45I=gPSLj8S9KG}Y(WLYZ2>iH_7&m{_LejU(#57B*zy@r7mA z%mKHxcDCn0_Dx##@0ZGf4|(0aI@94FmDuY98G&^-@oFln25Q|0$gd`S6VIjL;>D|N zxt9w)7rX8DjMl%k4etg(f>BVcDlR}b={960;Ud~TzZxX-YE+!I01MVFi5f(PEg?EuO3)$^b6l?w!+g0NAM{_VFR0}N_+NbPhQecran}3a`h@F2A2v^YA zuu3};5r}6TxKGnnGt)u6Oe^F18lC%TTaFG??|viqw>E_N+2;gc9s0bD2^RxV#E}S+ zsp=+`x1>G%dO-NCs@5%{n$fi^AA>wB0c^(d(DE!xB{>sBv z@7u@}pDGJoB7HS|vZ=EOgNc3yr6y^PNo7DHr-vqWi)``t2?#d*UsT~n=w!A*&*s|8)^07Jw|+f}|H2(O=j}Q3{+#DI=Qgq#ylxVNCMUKipI(K> zZVqvB5Sq(id<<_#v+Rj~9=r05Rb4ezzWv1~o5bZGZV!eWz6o&Mc|{&s#2eI z^<+mPYkiOKBoS7EBCfd!&&LO=r}iXU%y|HF_*=ic>BQryjOY#rxe>wl3?5%1rBBHY ztwvCas&#J2)Xt^?X!SIFHEROyiuzqQ(y^_KfnIg+{__V^i~bpa3IjD9h4Z~FN0RtD zG|2|$&}B>5>GaMjD>9&oi|74!$k)oqyvM8CSqkMh!-tz=169?6Q8s#ERJr8LLxF9f zB2S6ojQL{ZEc+q~D_(=|YlWDzv}}@(M~2GRni2 zslAmf1tmz4-I1d9PKXhvyd24ShK+k$O(njMqm>t+m;G3tc3369Wg*%$M-cp72S#j)>p;=|rX+j-s@zz#>7L&Ry>`((i5 zyj4;l$r`uRXewD!tB_F)dR>0U)492eE5?Jba)%7wm67)_@s=y6`I7uzH%3Es2x=x4 zPf{ULv=;Vl?a5yfz+;kq-(fwv)O@d~;6zFYJ<5FE;3J}jt@cCqFiq3+m6PY1f5=U- zV`#2ZVU=1hevfP`EQ_raZQBr1x%&jWY*^Kj_s7pquDi^l$=R%|_YefW;DOo_>^=RN z#gGEP6B)>t?Sjf)Nl!&%rQrvMO^&8<(I{=!@{vuGH!rt_;uv@@p*!C@+z&TGz4;M^{zmkJs@WJYTF zvZN*FZRhJt4_wTLfg*1^$E6NMT-7^ygDbB?-7mK@xI&M!?$#x-jMoi$36!ftp@Gc> zh-JA;snMi80?gP~qRmX@1zUqcb8gV_JbHSY+(J3Px^3Kno!3JU$O>y&zNzf+ZhYU5 zk+Yk3DLUnIAt;9gQBJ*9a9{{ITC(L*L#VtG-np!c6Xd8A-^hlLiijt5+;Z^LvH2hK z%pCubmTuP7@@Ng4M>fWcWup-7=QU`VM{{kU7t=JI!ApzNzObaBgUU)q}^S{N38D@K}r@%#geI!ixV~E{ig+i4~^4< zBm4}7GEjxY+oKyl&mE@ELA)q-zZwDFptq$pg!){%qOvO%n6>N7hlIBwP(|*PDK~sG_3EdkEPD zSWVZPXEseM>vSi9#5Fs|pvv`N%t& z=j;zr&9^umyzPbpy)P06=5vhe5(@!pG`mjv~t?Y@O(XKHa#^3o!uz(#14oO7N(VpGC>Zj19WSSp44AZTi&bcK zRwlZSGN^Xtl(8Tnu=K28Xmgp7HWkhF~`P38L0IwEHd?r>jc2C&mP8h6UDsKwvNt;GTVisHrejcIvA zinO=)6lh!rY<#EcMsXGGnK=^GZG(@TNOP@(NQc-IbAZgN+$(qZ{R;NcaMy)SEH!|P zUft|Ne9~Pmdo!()Yi96?ZlL@V6izc2@Rktrw+Y6hA;~Vus74fII21RhmgaG;J>+3N z5XwQ&3P@+!a({biQ1;1 zV-_`}l9QLFp>U#XsNHKepl*E#?wrscb0ai%TYb!q3#y3j$X@U`e=+ucQo`*}=(nucu|# zn%c2Qeu)VolmS@1=WumRZ`*zH<+O8J;%yHLV9-rN!FN)Z>*PdXl9L|SvLaVT6_0Q2 z)yfF&T~a7Vc0**L_xQ>6+?N?AE?dy_&2nhyI3Q0C^Z&1ald4n4n8VyRW`v={2^!Ke z>Vr}QHNGYVl;$!yZ>{v~_g>S2Lx8|3sAvyj%%pZQin(%s!YDtoU3SbTiI6=95EwT9 z6N0EIB&p)I&)bdev8A)@HL2a+AOQmn zN>Z!V3A9(1nn5-*n9Yjh4_Zs|8J4JsfRAoN5*6$QuBwMBdl7C+kl0*y^dZdrm7@jO z?XRtoq=7NFkL#F&8kk=f4}hq)B!=zeTI31X0Z8(3#=47tq&UE_}OX@r^MCK|q_5yi>*cRghAT!6I2)WcH# zHy9NRZL5$VHX-5s><0Uan0DW|KJV@m0JBmDvzF}yUF2f0_P&eCdMzGfUGpJza@m?(WN9X4bVUzaF28U}3HA`zRjQI*csX@L}3(Y_k255iq@YS z#}xg@@*IEm^zyp28N|TigUK}kW2>qQJq$MlKMadxPq~H64fl#|6S}+kS zMP^fLpWr}Gz3VHvc`l9cb-2;XJAcV2rIy)9G+|E9(gD})ZwZa+;^Y$leKOiXR5;s+A*B(VL~-j!=|6Fq!e^bPPf0=n^IF~R;MUN6Qg?iuAN_l91N{iVsZ zPe%99VS*%^ixLE%?&bB&1$^|qbwgqtBt^>qZcx680HgVxj~4i-Qw&q$2;zSt z|8{nI1~*QslAM0#pYYmW2v&)!N~U0LJqvk-B=xZx1& z#$uXuO?4gc5b8AbLA-?4y8wela8nSC65$V zWI$bOcmfNf*s8ci2MFY$1|4QspS4^ z8rqgZPTS6o_EB5HCa9W#tArd}`TnwFHmW5F8<>?*G*XF2-F>?z_sgbf?Y6euMlo4o zpp7MrBP6b#3j=xrQ3SncAtj)li?` z$Ijc~t>~tneO6soz0@G*Oe2>7>Wu%-0h)*<4LH}s_WkuA^-;Hzz;ebD&OiVdxQkfK z=C)(lVMz#sP_M>M0?kbmGgVkZkU2wE<=#y7?<2LPmMK5CLGaRN=W761hA$Hk&o9$T z(Mb<+AcyCvE{kG$coB#=kuTqtAhNC3?No;Ds2e%)Ly;veVRkL~355xOrvs9{5m46v z#^_mLH;5^cF2M{?L))~^SQk11%!YKt`?&+P)Y8Gfme_1GoHB>P3<71_-&b$53cR31 zXj6I1=`a5oJCVJ2f7I%VzpS0+fV}4_+`yS+;VszEvo94`M8)8tzTJ)%()zN}YRCyJ z`VSOc-r9#-ab@T5Mn?t|SiQl>nUxr)e-AYj%jozk(RggrV(}Qq`DM0qnq$Zca?ThZ zSuw@*+~O`5%|kO>fkeR%C!%w}VOL6dj#YbZ)0{D3#7)Br%y?J{x+}Kvb?qxi!I6uW zrAqp59ck>_?;pSin%MuRa?tISAjUd}l{1CjgTq1nX`UKzd&VC6@Hj<08Mud%kAsLD zZWoc#y2eI0b>KlCW=;0vO&{x|Ddgf+k*%Z3GC-&Fay+0TKu`+kd5>L26M?(}5&YVj zFh}PsIIRa(i!n%Ogp{LANOHtI4qfT`W@#=UeBH(R)<7K8V{R>Z^FW*Lz&XSU&-S` zCnwi+=ETUu$lEE9x+3QJF+OF*|GQ$29vy*zK!x;V$xA@8ys`~%gAJv7y9^>?O=e*K z@qUw;ZA! zItq<4bh&ncd(1K2PO8>IHY6?WqY^PUHD^_g={NhzGPEQk3p-N)0R1@u=#c6gL^@0!0Q-F6&B4{8XwLJBMyHGU8O| zzBfZpA^t0KJ6Bz|)M6+;oJi7UFsY;;OCYQ?<5T<40i!rt>R_o{HJmfLHlhzvX8^!a zsE}~7Tf8MK$!Q@5os(F7M@k*kzXt=Yxu_qKL1{N+Ti0TK{|Ygh3uvf6?$;BZm~dhLYk$ zuzaJ*sUqKJZ9N*19Dmt4h~O&nOs_B_@uyXK*Ki&oLfqn(1N5X1OK2CTyuJdvs000l zqjR?Ra#MJ=XfeUUBy@l|2J7$zM@Ci!F^sU-{3yo7vpqNWW(Y6Pp?CdJM);bJq12L+ ze^BSK~u8M>)g|+ttbYKS`xU>bYHCqnnwi#72_%WPW1^JPh z$1iEN--jZ;A?Am(9)82)0g>>-n_eBX6bTwYpfcNQNk5I4ywrju*ZMfl^g%$t|Rt_vTI%Rd67P~8U^FB%_O zv;?`EWlQJeD^g_%WZIZ7&Rvu566w4{_OO9lnMh%l6*+7dkDqYlqp4l1)!9w+p&D%6 zJ3Z^|mmr&=9C_;qZKOG$Ya(5cqozl(p@}Yfo)L!2keE_eOua8k^Lfa%fSr^Xr=D_3 zvK?#Vgm2F39NP)*bwzQ(BWvLU@jghG{bP&%FIOKj9>d_ zoDU<76>nqC03b6hZ?g!EuA<@`sX$UKWXnEnx4HoCg+l@o$^cPjp0mne&T%+KtI-3( zr%B$%o4#L-P2Ozwk(Vh|ryIr$H)#wb)!>~i>*F|UXQeOj&oq?6d283N8>;D$!^tHB z*Q0J-=x_7`uhDloZ!`VD?>(vgxWy{j-2g;ZtZ)*F@qr0K%t%B6Z8V(&hXOF&t6w z?(MmT-m@i>HIKQ*O-Pe)u#CKzAf3S#-(BTZUKM>l z31|GIbMPXQH_jiIM+W8Lo?K+Gcl?P-6Z-BGaK9#J8YZgm0Px)Wk<6chu3&ov@EI0L zO%d^oHr%GWWn2VxBpOid)mBthkA;1go!kU)!rgY{`5ROFFJ*U;Q6zfjbZ5jdRA|xv zgiPmpBSfSKcyaqi>a2+={2|phlsOM^&LV#D4BtZN#LEwKbT4^3@9OWv4uN4iF3mUhQ;HW=|SpM6@?by|Ctqz_C>Ubmnnp2Q^le8L(>lcBIv z4G%9tE&2Hq4X>rD7D;=~-NMlhZ`(64RMWSZRa{U0vUbUC#3Rh)(-Ylup>y1*16Qbc zeg&pf-BkT1sN{eCX)_4?^%pbrjm=l9LPp}WnP=F{6dB_=I+hnkYAoY;jaN2&UB`f7 z$~a`X2SXMgoP-HF1T2=G8y&W#1TOiKb=d0H$vWf%xqaI3I$jqPcNK&9 zVWavY$yO2zyT-Te4km|Lh%$E>W4hfUL~uG^iRM zxYg~@-!nCW^5vnq&|+S8Q?uo65^`L?hkb%k)wD?u!xt=CZkYod?mn+uWhx$-#5IRccgKf}1E%P0iY;Lzo45S$3R5C|H}O`dA4m{ek`gjyns5##em5+o1K#X^|YA z5N25QF)#qGC}5dQ70%tys|p}*iAriGI&&5rp;YpOu6AFR_5cQ2a)EZz)yGw!nMyBj zDeljA12ANo*tOsb6mY_rC)mkLlU7c@Sk&c1-!|7rn!Zb< z8#0@u4>GDyCI-W8Ya+7cWiE;EXZFwqX$IPd4j-i3WK;voD1TXKpo70MXYN9<@ zqSVMzYdb0!2r=bT>Kf?XidMU&TX_2o|2SHQ_@F(R468+y@UMs^IOV4)l@f|7G|M_F zCRqbqv{lN}3edJ<5rVXhPmK7Zm(o1`?*~R4$w#B)p13ZvnbPbm)j+PIHCLAY%Ho|2 zrAt^$0Rapb^Q%d1)lysmV3wqLtLM|{Km2?Yw3iB?_gd4H-xyVpV4qx6sQH!1BR;u_ zqg`Y)TDA2AsyT39`^|rROIpBU%F@*8#3Ztl;3ltPScL_TrtR)Qd(k0|%3g+hqI4@Z zpgetXPJF_bErqcP&M}q_WdeBi_8JNXS6&~{WOOBf;9#FOKEf3c&g96(-p3FypkBb( zEnLhwq?R@%!Lh7<0$ytzSJd@^Y}zBC1k$ zD@LM9)_w%^YYOk0!ppOx?7wyiwcY6P=Ku1gZlLW+m*unDhi{z{w9U z+w0xk#%wR3Q;Q?C&x32Eru+b@z84@~yhEZyTsJ0icJnXpt2KAmnLAA|X@=^vy*ro_ zz`7x0T?tiGvRl_&jvB$A%d@+j`A^%U5Xh569ZZ7Y$qbza`!_@ho)5k;Tpn~6+J>Z( z?2`(s(^q;ilCuvO_nKl9jNNWe2Gimgv6}$yk+Sy!+)G|~SOV^Z*hT9tfe^1)I1ZQ7 zT;IpYl%oh3J->hGjTRmvP-u=>zkzo>4hn5^{6YNyD#UNo9^#7GdTeccaZvDrKhU?s zHp30fE~nFEk!R~@AV#(eKt1MW)%?>r1_q5`>^#Z?t5%fd)s2qP$C%agvzHlMs>)tH zs|;pt!k=hs+cQyfT4{~M5WS@NH(IWcXWd17P< zbb=OPvX4SB-k{kL&!08Cn^Xouzc{a2$6(1CDq_hAS)qi5nfy57)D!qC2%aabfz_3} zLAu{2^m(hiORfned!C%%e01K5!)#EHK>;|=?dsOs*_d4DRCae2AQ$@vd@SQfon)Go zru@}mBBio?xt^QK1l!2YyU!5Y_6PNM(3a*-Q<_8^TZNF_bWAjA=J!7~KXtk8)}7)& zg11H7B&B#FZ<{m}<&i#Y3N%v75$ZqtPG|lTOf?c^3kcSt4w(;S64hs5<#7M(l8qoT zsfV^x@b}7My-5fq;|y4fs%oLvet(0W6R#90B(8m-2(>*wfk5t zpzLmnY5G`Gl37gKedc!xqii?$lo-f>XqRP=UjgefK1-%&o$$mk=3{QJ)o7cmTmUrEt9oH5RmTDX9pre?_3@$c+j zoJ@!X@-tL~J6apwDoBb$fC&XlSD(S7>xn#`tiyKY40v6tl<~v6mMGXBuTJjvTX=Lh zbki)4gM#t<{;bg*r%o}_M~T#y5F@L>vt)mN^?JIn3A1+p(h=+<(g*+&Eb70=fUAQ3 zO3)&SVEeA5t?H)z#oG%fz8`T!J*Mp6@nmuj+dMa#M(0nXUF1KGlC-n*?4!!^++!91^?s0kV-lI?)TzP~B#sIyHZaJ&XH&$96FBC|H3jQa0IZ!zjg?bsTECbIE)y;NE z6}zr>WWE1Ic<$5$pcbt3g|<+xr~nD|7h}=ux?QRPY=WU2UUGGbL1aJ-=--JfqHTs{>YGzdSj)dPHCKDk03nG)lJ9>ATo3Sk5`BqnvrH*`I-i@>GXUh@|&?_&D2V zT**>jvHpuK0xW=i)Zsy{aT0>E{#hc_haX7$PxE`)nksoKNJ`3%teEOM`d|C7*P z*}yN!E=QmRUN6&;HQbj7?T*xR571{J;m#dRhUP`C_u%1=CbjEBhz@HG+WY~ux)3X9 z`z?Z`NZj7>th({2xdYHWuq~<#@ZZNNMG;X#E~h6c!$|IhZx=rbr+3>|8xTg|+bmu6u$6Arp_#y`avpTO(qpsr;=~mQnZwzU>da+vyr&LU|F~Pa#eO#NAc?&xK&3-dfEaIO6~g ztZfRp;!_IZgH7OvkDq}3xQP~pW5bRUxS$#_O#KV9AqeiuUAnRajZdC*{YNso!9znn zw5bga)Bk9p5g3DbciPYMSZa->dEHTx{bQL5x)hE&N4}HA;V$lkIL!F*>U=c*AjST@8QgBQdVAnS)iD*bwKh55b)QSNj^$EhzMWuUByF4X#i>h-xTAc;(u{F4UP z=R*Q8Q?nFqKniQh?8eB#KGc8ilUi5&u8&zb*G{$ko-)}1xkS4+(|zofO)@-}{Gi^B zCHRmoKvkTcc=wzh2;YTjAiHz-BRfPESEpoBWHppv??Y#CPxXFz9tD2TzN#j=uX;4l z6td6}@)2@U|Euhp_@|Uhr<;PRxdIGLP>15>d&^4`{8_N~7xPqK_uTD6ET*ACv{!jW zKOg+xf}6^S7~1xn8V6sB%jM|cnCCAg`g>BUh%Q({dX=&CNI3?ez+&AWiggsO3VE0{ zZjf2pi@cs@9khV*l!e9khkX;Vt_6%TVh7F);9=|ZIjP1c8;34|#EIwH&&5BU0djGu z+YH&EXcX@LvuiEVEQ%{VAsU$q_>S;UI)2fTv-m<3BBx_hJofI6hi3_6F&*ld9x_lF zi20I-cE@tigqZ3^qc9bs+x2%G6l8~9j{af%Ws{@(`{9UpWeki;T>aEEDUXKIjxeq` z$>GoMut=x@!*$HxX^ytHSPK&E2+@OPmgJdR>CvPdPdp}Yg#y|+G*bzP95T|R|BtzD zb%ka5D|!Br-|uOw`si3^^)zoGCX{nxDFj~?U&RSV_wwB_dH0uVA=_dd_U6B^r$89E z#HtL?_!|RxvKfJi{$TC6n6^B59Z51;5Mi6^aQQ`U{IuX$rP1ka%_u+2OU1~D| zq@eeeLWo{}-ywIB2n)TiZA~AFi|-$W#~-tp?if!N;>;X z1%MKUG`eBil0vWnuu~7T>F}7lupbyVe^M-g(P=mAGQW$vRq*^o@ReKT<|j_*jb(<4 zrHlt95gPxM*xs#pi65;;M29V?liFvCE9I5eiz?TE$Eyx&M1Ikkmg{%9x!w}C7ff{n zT@o|(atQrT)XMX0rryHjGm;fJaPMUnkcIE^{Ly-~_aMKg1;veFO_b$pTrRl)45HpJ zp&6f;=orO$BmL;1BaQw%s9~Q)cdu*ft9f$ai32S9Tdn*2U!F7I(aallcaWz0W&Gs^z>Mz>^b%hn=dl zFbl!liXu+t`&51s$wc)64f0@JaV;o%Q+p59&^njeko03ZLAM9sN+Bd$QaDedTU@og zjh{_!;bFckQHU4E|9YqR>@VVIlN0TO-B`n%1W;^7gX+Uno-N!@W@N`d2p!^~cRu$8 z*rH=qvz^fn9a!e(M1Ns;W%Ls~@^ItA1g>**dbW`-KFI>9r1lQhlmr|(@eKvo2av~j zlNP7YsKNPi9^WoLF49~EZax3Ew$IyVJ%yG8cy6;P5>8=C8OJpx-)-0u)rKSuJ#{}! z8gXRVeYGWKK$i_#I1o+5;>6TB=~bj!ce&z}z;IV5)BqPAlc=x0RBphd)CKIi{=)cn zsxh!O7xv({VTZs5S_htw0m5PHnuPkcc8(!3W^$0oW2^x6`*Z?9u~}Kz?zH8mq=Wnj z@fF|dYZ`3>%l49?GXf=C{y`@3Dczqf`|DK-2aR+-5oo%be5Cj`_yt$*@Y5iwRt{6+ z*D*nbwsU2Wm25eW;D~L@B_ek%CzS@_aDYCQe>j_nNdd;hE$CQFoEn%`cSVH4oR1u^ zke_jz9S0mmlR(VY8on#mK0{UhI)X%ds#6@DPlIg1i~IDD0!uv9ztj!{r9N7s`w|QA zB?!ut%dpDC9HoR5)t-dR*pvMWGChq9am>xlV@#$r7;Glh^rYO-Z)}W=BA~|r99^Q# zHdwLR1BRzTGc{sT123`?XWz%a8BBEiO%~D$mFXc?n=88tRzK7 z!q8@)A1`1Z&}d~3dr1Tc)fuBgDpM$PuXH8UKcx)BgbXtyFcbUU4gAfnOrlZ-5p*1; zfE8_MUC0Sv;3!V%G*?@i(sZ4)l&kER-{HvS-tI#?^mhES&UgV@#pEi%h41w8gQV=R z$-5nG-H7j+?&zfw!Io`U=bYc`#*}Wu`yi3wc-xWVDavo?8(7RI1Be3b2=(mb#eL17 zFiu^wkRG>d7gBS5c7uvrj>Rg%6bk9hnClQM0g#2E-CZQw`Y%xxlN_%IP16iVwU+8N zKb3;1_pUd%k4v=&DhGm>JAjGuPp49CBV=vI{e9Jrq7w?}*GQ$m0J2spE4OpfbjNsO zb}Hnmh8X}v6N@i6I{02^rGl&|{^+9cS}NXRg5;2Zkji&siQ#XUMz0Bt#mzn2NXZV` z0DWCfjkztNR@8P!lK}Vx?&^e8^s&<=>Rn@>*9g9ESfK?)395;4A+DjQsAQhMS`5!v+1KqX9 zoc@7&jMvO6nZH{%GdN7~*Aye0OG^?(6L5^ZenI{7)I0-bE@f4ccjok5jvyO`zY)&7 z%TKs1Xw_jQ-|^ev#|Q4Y&D^qv(m81Z9_nS&;}b#6S5*h{7?38f7N#htWvJs1rJBJ| zjd&+k$^v2)j&>^R$)os$N6_ZWdtYaBi0B5k+GNJO6RR@}c+rn(?gvAEE;SD&x8CgX ze#a56%Z--HfU<&>_YThKd5BQG@)lPcM<2^3U`)(Oo62reZVpvav>prK#?6S@m4q(v zbz~dMzhOaj2S*%XurMj4HyQTK!ZQ5}XGRVsI1#*@w+7O|q;>Y_Q++hiMBaBO=G zJ~J+GS^e=5R$02zqR^9GmTSt-KR{8Mbmbn+?o6H>Py>?hyZRE-9fs2IcSoJ+pTSut zKlh~G{z~SUZK9ycFN|rkm9+CjzBy5LaW3U!I7-w3{fcnX2_AtxFU_1?+>)8<+*qxR z3LDj+TSh+bgT?`-lD|QCS^x23U^p!CVASjvZk&l=FI3(UvZ$^~0Mbv5;OYFDn?;U4 zp1L@1P>ROB{X#{?yv>@R8%e}#JejGdjBrQ8=+x3vDqC=x)L6N11A)h?z6@-!2fLfP zt9?ljFRZscNay~9x}NSMif}O(yM$to;4miFN)ldYfBeqoki%X`6^& z5jg4oZ-~H1S_xD9j!QDfV!#7CZEvE5&sbjWs-Qi4y2v$%*R&Hukqs20#{Wpf&RuF- zBdZqIa{;edrg%l#_0Rnjhp$Jb4Kc>wmvh|T8?2-nC!_oaPx{?vxB=dV;=!EJ<0<&s zEam+dstHeZAxrKtlPkU}Z=90vl)qT|A%_I|G&%qQv^=eYdEdkWfHc z#h$B(;!zIy=pm;Mb!Lqkz9T33rv7ML-Av}*0x2khe8Nf&6o`jL5!o)?hCuxN)#B8p!ng`|i>hG8 zzfv00W)_lZXD79nL+nW`0EXp4jU{QGio#Wj3t^z&t`G2GgiyKvSY9*o2^9TV2P^jK z=HD~VnO*nj%i1S}2i@!qynpIY ztJ_pc@|Qqp?BuIFEgH6@IgSYgl$AY;uceA$Zuj9qI~9!5oB7%0atHnIv6bVFE>2K4 z;~)DZBY{ItI*wf<$`MslFnN!OtT9EDCnF!8DGSpB64JQqIg3@2LyDQ}WZBK=33&j0 zQf|~J@bg@(5@)W4#zahcwVsGqaFf>ev?r^6dyKMB?zbN&lG$el0YT>h)f-o`rJni5 z7_3S19l_P++gzmc6kW~NAYM-PS`d{0tw)6G16E&jNB`q5V)eQ@tB=-j2eer^=3Yn` z&u%|PqHtjOm`lsN)<#1C) z`Saq_MN&uD-ICW`Wz4Z?8P&po$UrEbc20GBre;JQ8SbR#uZMB*+?m62`C$O<&RnTH zn}yBXYSO`hL(}f+6tAmM<1aie0;Nr7E7R|dZ{_q70dSVL(ky+dv#&pp@Fne3^y_>o zTdnn>-FW!!8TU;&vptKnHu8}dR`E<~Pf`^}nRI!pZ2)++LuF)dg#Y8EAOQ_^u1MjV zfc{?uax+W2seW&Va=b?nHu7Y~?8Xt>N;@1cIEGt*O?(Os0?%b5ADC~qZB{|vqU?{C zUZP3}78zT>4$s^jc}x!oc$0SwA6Zt;6!dEfXXA=wO!vEGLdTv)GeLY!yF8M=!z|~= z<&&b4)pOy0VbyB&H975UF1q|3dk^~O`zS2Rn(c0uOa-3=ENq(m^+`7=BT;IniOS*2 z72nR>v3kV%h_W?1Qlf4cM%XW6eAt<5W~0#XD9Qk|Nt@}3QP6syrMRQvB9f7G7WvTv z*(QK%@U$BX9h9D%GAOUm6c>F6*oAB&Q}0oM9eJu}i#lEdyWp(ePWqTa>T!2hl-mUc z{YhLEsk8eN+p9~Ai_A637o?T`QoJedY5}^!N5?PR!t;I@);g_BSdfW%q18bmijh7e z{n$m{OPe|2X}9ISvO!h(T9|o-ync}m_+F;lvM(Ag32Ze02{4|fETZ6nd^dAn zkpu5LgC87s=#K-+D4is#`%U!aa;{H|Zrs7JV`3>v{`V}`5{D!mj2G~;N<9&V|lJN+fK3@4xaPC4enWO z^M~~)XhCv`Zo$fGw8g~6)-LI7_qRU`(LLodKTT@9Ggb1>#i1JQ&#)`Rh4LDZp22kC zJmUv(ldIW3eysB(au#M_GP7>&_zALpwvkk|tL}m+LN_XVA8bM&%F6LSC`(a`%22S-h!Gu%`8227jfzMtL0RI<1%PV*;PCAN?im)IkuZ)K#jc+? zyrIeckX@SKcPv_O(9~SNsRF)9QJp45YEC$n87qR_)*JmATZ(kXax~3W>Ih}Y;J^o8 z(I71Um7cvcM;t@tIz)b}E0b44ljs_tW}iu9r7d*cTw}-AfzPd*2tTOGhWw~h*qSm} z`fdhUb#uqlKtyx;-=M3juoU`x{#zO|Pg`M_4nhZ%wm zsXdPoxq}%cT6(m1c>;*f{HHP{m~oMNm(lqcUVk$)_2r&KX7?>@TjDLw32|2ERoyD|dw zkXPlcm<&BV2vuVhsZ*{$R8ahUQS5$avoUOG&VmgkNWi^0_H^0ze}#G3v|Jyd#05I~ zgQ-H#O;cKbw|x|X(a8{B2U;kH0^{(WU(vVfbx^(al5EC z*Ebv9B--Hx7&$sUuH-F}!D`WJjf^eqXX1s2eLtMh0XwTCi!YkrrN4-~O)43U9x3a# zDEW?y($aCq^`yREZ!b)}nJ8!crh*^RBC|!B)F^G!!Pm9AFb#9va5+y6!&!&>@5J`Q zxn-Bs>d9Ve9O)p+d+6pMqTW`fVm}RF&e#X#8GN$-7u;fh^qN`)aq9<4@PUPG${L!B zvoeKIgBes9I%LdXB__1pBu4z;SFb;}&kJ4I3Ih6d!DT99ySc&SCK>}6Z@?Q}+4g4- zy_x5!aU z#0x?vh{Yu(+Jc`3jQ_sykYLwXFyD?7A}=4x=y(nl-(Kc`{Ao< zjKhkYQ8ZeZX--yE(kx_wb%-t8pA3Zf6Kt5gM_@@x}VuS%}Ok$~Nmb z(ZYKbwVGJRZN|1sw-lnG11R2*u)-P#kH3;9w$dW{itQTnk0vH>-OHiBq6{wY`BAq@ z6Da;y^k}&(M1Qb+V;k*t$?XxRTKj!F3UMbZxKYAZ{7n0QjPC|-D|3rpLU7DL*q z%ED$GWbn_Pu8=d=lbdplTPtczz^GlLb<#LVy(x#6bRL&(}Q849H9}ObL{Z11_y1>+MPqd)7|G8_e1Xb>(QP1d=|l zdKe%vR|50%2Ta%XOJ^HdAn7)fDgA?4!xx1m$k@)yeEd}tZNkG^X${rxYP#H=>U8+N ztgGT*S$rxXz@(D~js%DJfiWQ;?98Y7X+oMXzHVH(lMt&u-C_j-t^A14aB-<8n}+!G zn<=EN_1^lI_cX}LEc3qg9aSf{Ao>efkz4ODJWlfr6?yG6qWjVcNSvtGn@(jJ)>$Dx z|L?y7zSmhz*$i-CW0otM7p>_}A8%A<@)lqW#9Z#Du&?ZM$AhQnpp1YEJV*Kl#uHg< ztklZize%cPtg^@vW&dKKq3S)g#LV6xxRa)2jAjT=u>Gj;8Vq%PPX0}@j#}F+SfXtX zc9R}jY%h2^xn$m|{M8tK={{+SnaV?*_kviG;Pmt`-R#l%|NE`C`xCLf+Ri zk4v!SK(V>eFw5oxM})z!3lLT;&TSfcE;;j-Vv<1y|I8SAY}JglSe@HtAGMnMY4|3L z=wj`pWU1*g1VXO}2cXg5)KHbL-vtn$1b3+=K3EoTathiVvXbO4je?9ZuAUGA24Lio zJ!h|*_Xf^1)q!##NDogGPTbXsjY>*S4iTkSM&9+6AUxF{Kr(jn%m_|?fNFK`Su1|M zg!6r#ntuT9A-nR^7pOiani#|)`f%6Kv*rw%ZA$j;JcqEH;w5RjG4T^zg0C;iC!ma6 z6Lr*hf;;iL<#{ZBhrm_De1RhFcF}B4AN>0iw>WjMc=b_91>RsfN117id@ z**OhKuk?e{F|{TKQ;I`(o50M&*CVj*^|hCiGT(Cs&ppKYe}RMX5xhSiYEO?baG}BF zScy~TVDA}>c}sg$+bI?}CV2KZzGR!!C<{~RmW?G!3cv?HB|{gofX?Uzhn_veGZ$n0 zWacLAiCN!^?fFPb`pE#xT|w+@ofHF@1_u16UsVqt%Fx3lNYB!bUiT`;!ierAp3i*v zgrI34I{1tbh#@$U$}H!!hp1B@R*>5~$h4*>MXrat^2s3G5(%Iv)h{+DCxKBT(2SdZ z_5~@jDB?K?Tv~)A-Ei;V?M?;1QY@BhU@u!9t$IMvYS|OV!)xYV5^cK*y-|SG{U3yS z7Y=fI9KJ(tZ(>U%3kYa$c!lZKi{!?gmADSeZWv%L==BA23^4T3v&I?oXpSvw?V7a2 zG9{uLf1a?>N`h$WEI6ZwimS&6B(Dl8{eU?fD_&bxHl9Q{e^lCt730XhfJskn+rglE zg@9xhbtMD(hg8Jk$*v=llWUm)?WLy|vxBB5{EHA)@pb|kqTZf4y+ob%k^{IEnoSZi zxCNxXB=?pM-jhK`2I*Tz$R$;_rGgt3BjWl;8wmh1Bgmb?erjM&!TGJ)GOdzsUnE-A zf?d`%0fsL*4f`irV+(YXlON}=Nk;39VDl+@c+Elb~$G1Uq(IbeoK2h@|a4;A;LNr{U%N@yD*&|uqzf011 zhq`VE)>j`#=Uk2Du)v6A^%12^poJ<-k10(Vb)8$RXWN}6n5?)RGus4AO@jS$-hG_<%_f@ zx~}#*7YCJTO`5g%#STqgr3Oq&Y*EFIR|*eC{y^InEMTX@>op!wkLQ)dav9xBXy=u) zs}rR)eRkCT>d~O!P?XYh!^fQX-98&N3FM{(;KVv@MVqCwiiREvF(twDe^PzhtbgyI zP+$+G^yHLj9OgTX73S+7pFm6Ghju@LuNe}V|9wa+Ma*DoG+VRWAR*=5;2C#mw3H2G z&^Zw6fOi*K@u^ceI_Gd%Y&JvhQ5CGlf27^QGd@~;Zhm~Uwpmn(i}$#a^bD=tFb>Ae z$9WA75}hBS(1+EheY&7IzLup*vb5zLH^zOzF*k-xpCHAA&1U*G=qY}{S2`P>W0}~j z)uW=5gy$GQ$v_7|P0a{N1ROzERxxf%3dv00btqQIm1Es}<|;0*t&Aefd$305H7nA=Y^_fXvLRzqDP~vf zh{Jy}#;s4ecDMMU%{))*t_J51#I{|XMIss#gB^BZC|~ke-ccpyafks1s;jA-{FRCXdQIp zvTfM^*OhkTSD#!W+w{BBpNtPE8umzgNclp&C@Qpn53yLD!)#!M>uaBlsGClk!m+?P zwlO@Le`ZLDjxH41c%w8rDMlx}jkjX=`tW73i{;oS&hDw2!$UM469gstgXEb?mVvpt z=(QYEVXuncfr&b?CYQfu9w{y3h`+^GrVn|H8tXIX0-ZlGse@S558pd6 zy}gYA{r4FFYhu>#tOif5H}$2t=9N9(1>4 zZz)Bu#BbOzis~U{0)Itw_0)Ee&Z-FGKb4XgbwgdUKfJn&$Fzmga7S5bvrJh#J*Z0(~>ta>wrb-C8dw!Yg~dg?W# zE;;XPNKkUF{j?e!ylkhan?ZkX`LBf3ffI%2SARo9zv3l`?o0Qua$_^LVU#UezTIKc z>j@$TM1L3`7{$H~CmQCXQ--kixIp%=_t8p$yv$|beEv6n*VPM$>XkVh z=Bs{+(7;q;{;+F%KzB?oCjc~Q`CY#ZT=SL(XG7UcKNR3tP?n-AGF=7b9sA+=?MRfKvG(GY<>XSQ9Tf<>2Q>z1ki_Ju zx7FSf;MSxIi61RwcK|ZU`Ka0&=C*cX?zi%g-Fsge#ZZ@N=4CaHF8|rUN)XKtQR`YH z!rr(yd#s~h4QpQbC-@+v)JP=zZ1V6?R3x<}on=?X6kOCyMJT$^cy!s@B9AHA_{8iP)Ip=E0vtq@-$7A0!n#R_@$6C+7g$(H zhD;0G4Cet0WalhQX#tsk%C!EDGCCIl?>vhEi zHci{C_27^1o0vyFzA@ZGfelWa-)EB@){@xN3!)9f#h_S{0qDq91)i5|JNQg-$?NPLeHsvG6W?j_6nN zH#)lNt{TZ{Tr!TSqbnCd6peK%x>eXWG5J|&&fUy4t;#A&?%p(I-%)qTb=&0mX0{PB zC3y7~q=A{?QskmQX2rQmM<~bPoGk~Q()R%L{R*eA#d{%KSa2rvf>(0{P!*wvDqFYo zXDlvpSV=FwF8wk0Rk2~<=XR{{cKT=Psm~W@a0%+TjJbmY-X)yy0P05-X!5GQj9mlg zRys;7DPvSdlASFN;;lbNoE>UZaFUVmqsARY(e$+7o0RtAkVgq(jjHDc-+BZCS3& z215flP!8Y5-gv~nVMdt5=9L1ci9jYdxp^p&h!I7D`%#+2=zJ3 z6{?_q=oW3(fVFn_MQ1glOOvik9*4E^6l4Kji?t32QB@lBvuix86ywqdh}xPXM;A}%35H$- za_>z81cJ3dQnwr#q21fuoOG#t%Wj`?;p?5@k_>C$Fpv#Y1+r>+(0I&aub$=u&K zDpZd?X)JgMf_Y$wLMhl={z2KNHRIB#m%=W8x7r6J1gAdB1r!oc^-J%0Tr`M<((+mk!`Ux^P zP?C53&@0FEOueG=BP#^iXFZfZAOzcg2U|zG{Bn`~CR%LG?7N$f=nnT@ z9AEzhm%EsAF0TA2w&(p8)@?_l_}ZDvz?90R7Hx7<+{v7`l5il_4*kc*+t*JeZ)-JT zx-?ae9BwR$Pit;9^A8qOv^bTGoSNZ$A2ZhkDA$6adZUSi=Iai#t7LvW?neg7epB#+ zJUmo@{$JThgDyO!8A+VxFcezI;QI&WWIXT!O92d@GRx zr%kblx}3_XVO$rj1~tK^iACtXq3mySvZCG{eGF8ChN{k~bWJaC#lo*!yfKgs@NHyw z75~$^IYjlPYK9P!pw+mfDL~5M`M8DkDYbo{P8G(8$(`j84S{pqBgZCW0x0$aM)LMQ3 z{ri4EF^{1dd>Ny-KPTY|X$x0OF0mDR4N|8Oc1>?R2@1Cvrlhf^^Sb(cQwdhyT;ztk zYg?YW$sh@B&?ERzXs4J7sBTd`=#D40B}T;aTkFwQxt-(Q!v>NZh?V>iR~YR5Z#fE* zcC7%gOm&&RKSg49dJXiA3*AN*aJTQaMPaAQqn)ivm}wCe5RU5Rx(RX5MoF1R18CgMwk$1C=Da|?Y4rtKp{bqVjXFTMs)2R z_V~jh0mWzXbJ6LZcRzL{A57OW)1|selia8iR?G}kr!8H(gyLVdzSJg!4QH)*z^_h2 zvhv7EU^rJhR}~&9bM9;XX{l}vcJ{sfnP}(FO@Qxz&$X_wU=qptPm94EfU>mAV$b+c zA(|}V;lHGu)r30Ue{cdKNV9I%s;4lo+@5PNY3UcUiBPC#Bx|Vm_mRu*pWyN6n)U#? z*T9{%H^5WF?`=h(p!AirS6S46X)|uG&uOGyis(jvMb`~v`*aAo#x6MOD zqx$C@R8%YO3}Xo9yhM%sVAM}9FH!S(vSakCGkR{vxKsXKUJCPd&MRj<38Xw)n}p#3 zur>dVv3qJD#n{S#Q|@!uvU(Jz+~CcZno_5^Obft5=TlzJdA?{ z>$lN82DV$Acy!*rN*AsM{Jf%CSDiS}w z)rr0($H0G_4$2v??g2K(51-(OgZv4#9K^D?^(NKyS_9_H(*gBOi6tr#`=dpc>>?q<&q#fy7R2*`=lPUp0sd`3lWVf;?pvvdMV4KoU+;r- zP9-+H;07JTI^TE0Bk4|wky$8W$J`fMa$<30k3gYz=RlHsT&Vp3!Dx7N=YOtp<}g2QkLhg-e*f+<~w25!?YMt z2V_Y5!?57&*DC|sjemboi=3yygs zZnM(A1t#QMY&F_j>}*=U$U9;$@Xw2AXwQgQ@;mGq5JzhpKmQ=FZ~T;86?BTKl{CtV zo)O1bRcJ(cr1?b59~Pk@n7Va5O2;lGm!Ql97=>hVp#$U=C$Y9CVB~{2sjTfZ^>_hV z_WE!fwx1`ZaB2NN$ipasINXwndf*@LD3a}kfmd_XuG5$_C?RE=`Q7t6NTD)TunDue zmeJV;(QoRsP(CJuBPYiN1dWj59f_%9+*Mm;0R;lzBBhk3`oW}AO^c&E&(N|5prIt3 z4Vaa%W5v5M_$K*u&CW8WX>Gk^Rop>KDSpxHsg=n3uxCT{IePOQz^k45@49@+km2IU zkLL9-NCn65FGcd?f35k;<~CFEJNP8UOs8Zg>RD6)vUPCK%7w>f^Fs0Kw?5?R=Zjy!`C zf$O^V!SU0q(%NCIj(Wmq4XW|rnDsDO1~t1QmYAHhX^Gl?ZjDAyIogq9*ZnAowjxdE zWY%p;zuiZYd=2ini|0@X7GSU8{8r5x%@H4?!ZVzsvG?hc3x(*pnwHAigWUWkp09!@ z{;w6)une4#>vh8QudmHp#Lux$l38nr>~iV-rH%aDXfH2JVbbkmg@N{B*A^l?I|_id zzvho`?H5#+RWot8ubl1)5yo!SbzoZwuzShhNA)7oLqIXQk6an=(}wXV!Zq7pFfqgv z`kV0y%!OjX($_wtWKE3Y(29~2L%I&U>jkj(LY|m@ZT@&ya8F7`!ty~@q|-qPTn2!5 ztb@hBI=uoGWlTE%EPoDMeh988Uf?(01XU_PM9sQ2eC@*D(pI%K4;V4N$Nu&#bt%4jvIWv`IUCU;qbRfNt-XBZHZIf&XY-FVC1;&zVAY`Q{eE z{<5}dlYWl(EqgVqKY!S85+SdAqCNQ)Yau`74H8syX#amRSaKDV=}$2NX~c#mmOSB} zA585y+&X&IJMOQss=oY7!CXY1v=mNk;WjZG7nHjlswm}Qr_I+XKWz^2(6_%`CC<<# zqyKPJk~lS@$eECHj1g!`o*KM;cByh9z9;6}-1c3;n;n)kIlsA1T4pYPL8RX5l;%xZ zHfN*1Z8o5fte4OjM4+JO^@vN=M)K%4B!IHugUu4~3SrhC$R258lxFz7NXO!-*RB%A zlo=-RVwP1u!`+&)@##~-r{KAyHr_{4hr^FBwZ2H!3klqIbuwJi779$&UndQU3U~D(0@|KPN z*+y#nog$jhmY5F8rTWl}LqG2fFD^>I^bgK}6~wn^{6D zRLGEtkh*MRBgDB5Vfpr`$ZZXxuj6SGF$B!|iOgQWhLs;~!}-=k6Odw>8%3$v(TbLaN%#3G*@zV`9k|)kjN?1KEhj%ZMh(e<(RD z?T9byy5RQ=LUCFqR|1n)GplBsKum6BiF^q0A>W#QOK{J9$EVa7*)rQny6WCeg!I*V zfoD?uk;3+CdKE9F+-t$|tTeQ|ohDc8;8P?B9Td}3HPJmUg@vyM-zrW#B%vaKG_8Zb zECtO^x}LPC_Pv_dq*IXX!c<@oHl?S&`22TgnVYULNj2hFjQ|lS051~bnM-cn;hmeg zo%%dspYs!dSa~i0uw?I+%JZ|ZaE0nR4d-avF!@exL?s325u^Q22+>^vbR9YOl2R=d zZ`e4f))0f;723-o+i$UKX*$(D07-d9C@ z0toEPl9@j9P1o;M(7$)@Cr3RuRV*`EkA^Q};~bJ=FvE|pJKndy1WZV9aW(13p;%x*_I5MEB|L1HF0bb7R@h`p#inNr&8@X!3ybx zO(+c*t=Fap>=Jr4=xH-`dQ$GnNKC7b{>gzYA4G$^6OeW{hUQA@zkqf~_mVMcC)ff2 zvEwDcs3|D_ro#iz=1-j&)G_30N>i1=>l`PgEX4}u8qyIo4K=n5jVsOGgS6(6#dB-L zA{FxAVA~XY`Nw`}YFlf@NE_>+sQAQtqlt)~*@4O+!Iv4gBmWlA1us6FyD@<^2bA&Y zI1>CxkqT&jl%H(JF2CRSC6fZ!pO83oJ+bK3bsn@q>73w{KiE~$mioURkv6QH+`4x_ z|2nE=eBE9-EWuoT*fB)@i4CQw8-yDEJq}rmt zWAK7{A!NkTG+d8rUQR5ko0(2_Ya(a3y-*7rkaWwb8H}H+A9nfgyuHcs7F$+m-Etyv zo17-{aJ=gNE(E=aq1EPvVrC6D5^*(}GtzQ+wZ7;cTJ(gtFK`+5H<-S*n=0M_EP27C zroX?O00xg1v2#P`)PwAB(u9igyE<6=DW(m6NP@h)Rg}}Enf(g(V~Zwo&b+i!p6v+| z%*iuhibH+0ImRThu8k|U%TuuyFf|(4uLGRtH*9V-!wU7|TPiFei1jbE7sJVNLOm#?b52fwE1$vv{@yPT%(AQBvv)A>SdRkqPP^ z>wX!BZi}XZqAz|V%WHN5(^mD~>F0iIu{WLzb@pZOf^~82@i4~@JF@K~4HO82)|lo@ zivP_zhf}pD>CR(fx-H1P1-O#Vxa0WCMuLO0zjy`({608B2#a`G>r5wU-us|-=FkF9 zb0=5Yek8e&ljT}!xmr26skUW;4qnt|?PYN;_=oI=uEdyMgh=G=@aX7ag#BRS++sC~ zN%a>MABLqZwxdv`zYohH_=ATCS$P1@T(@in^G9Gy@+g=Z?dk-{M|DS-NE_WQy4xZR zEmDO)IX0?4r}WRc@3^L7#1Bq#{~*(bp5NMQW*Q@7_I=IW*SK6a8sCRaNKaL#DEK z>5|jU06w`V@L4qaMmW0u$K|}tqCAaU2d&flH+1Mn71!qE1|s%W$(O1~DRu%e&_9a3 zz6(fILKu|pv^_d}hA{_9=t5G-S1TF-ySrAzzt+jK}+D(;DYIM;BC4C)2M4ia@Jy+ER+Kb zqz7ieStga4M^H*7Bdc|#Z^O_vwT15`6=d-?-o~9jy%FPk&&1`N$!~{dx;!2eiQzn2 zv+T1^(|dAkOzxlyna@(8v%SUBB*J8;u``3o{5AM1k-|ekQ~NtRr(F+`a^f6>XhCHJZx-zw$0`>G0Fa2)rFVeWH)}<~8 zD4=1V=_r+BYPGL~gv_L-XEAyth^-$-31?I`y1m9UPySLLJOG@a+9BU5dX zHukd>%0l~PblNq-qye%Z1f(Ev#YWTeKxf5hbO}fbGiw%)!v&0Ix81sU1DUi3=;Dw} z#uNUth1lYIWSHmv6007>2pWE-0H7;B@R0qO#uTL&d>X29R|bHe#qD2C)gI;EHdT}e zDY6%VOVDcpZDIb5H74Zw_3Rs@g1w~z$x@u9ehzk%tFh)YQeF12{!R)Rv9UP%@cY%b zS}eXv{5tgnWL;XvQjX2s3H4TBh9T^G@U$`zYg zaxhy4D<1-c)_2v`6eGJq2Tq-0l?w?1EULAov_4Du#X6pep2Ufd!-En@jJd9|F({1V zA61%l6MGCwg2wpMllW%OcIVJ#ikPeA0|}6*xrj+nYishx1a)>>9eVR^omUkejkNiL zjIOB>{O>3Q^FNUhd`2m?hvHyTTRxwvgyLI~LC%pd&j}z45SZ!yn~;ghu)Ou1q<(2v z0H{}L2)HGzNKA5V&5+)XL<>-@8;a=#6Ww4NH&WUdnW7R`0bO5HKAj@ttcP8vCabf= zM-2XW`l$!%cX}oeQmpx!wOFCR8AuC=yuW2x!;)pc6eOPJZ44bvJS|^`9_>i{!ygsA zYp>Z{t1rTN223ncQXzRqY(w;9d+E}&Wg-J7ZTPr0?warp-^VjbmVr1EmaXS zu#x!RtCTSOrPD5rfWmI<(-9gSv01%i&Z|5r_&%gvlMcKzen>;hAlyw5*^6_fp@UA~ z?}>$8%+hN^c$4WoP*yY}MqkTscM!>zO``Ryx?wgTPW>!jr(wUJo~ zxRUvC!Ig28g$U$W)-JG2NT=d*<5VIS*x~ai3}M;zZ>bY6L}xC-)&Mw0&`7%RGwmNu ztf`f?6E{9rN72E}aXp0Xp36x|@v+{5F{Juwb~)Gu;}1NYRwjjdm!32&`ehT478ZO& zb<&60!Zp6)W>|KnB?>(Rm|?{ps-eIKF>BhIA7%k|80J%kJ{*gC9J%bpF>!}(K8c;kR}y#Q=y1p33SUKz}!q3H{}TQ>uhRV&P8Kz+(1s1&YGW$Kp>r7hZs;z-fGEF-BMVJ1ki_IT0sg!uO(&#QVw_meEQ)xb?=v z31U7rX+3w;DO%F%EM_N!CH4>-5S)eC=%Un;W%x&6JVxls(yJ@iwtA0xRUIhHq`>z4 zppsK|^lx{d$!!K0rHN_`iY7INyq%a3WK&?Yw~+~{nHZ%C4;#(5h}VX=|9`@X$qrGF zZ#Qv>*zIAhZ}iCly+zZS&Iv<8k}w^pcpc}0`!N{0*vSR6S9p4S3jGK^ng8+jHQ!AN z{Yi7`$YpIu3gk1bW54^30O9*rP-_w?x-e||^|Q@fi~JqEIxd#dLeeg{pQMDthvjq! zQ%<4FWQ^`m_4Evd#>9E!$IR3(Z6h(630;AEPh3)S#oU8Ma|2|jL;ek~7%DfO?gwSN z*lEE2lfF1bK_)}4dj;pZHU$f3IqVjy8P>6J%5tUz(oZmT&=WMifoEH%p?5)d(V2g^ z>moZ5C9C9O3y8nbgDwQ3^@UOpu0*BwNVlAQt(;QI-=rE?4u2ifai}SU(csF;-+SVJoxOd$%pG)?2yY+E*&umtPTw`h zW>-rzAJ^o<`>e*%YU>9)j}W1IF7`Jq<;3hsp~85YX#VQc0(Z<&%k8a}loVlt8!>8V!|Bcv#7}F++&q`r6G6) zXo%4ET;r7Dz%%N$;rfYBl#mxRj@}xsLbQd-&8QtMtEQ{6&is~cHcVY@hod2}{e#*r)s0Sx#dvf^csqsa_FfBU8?~owGuSFu_TG*&5?weo zY~6_tZP`!c2V-qO1E5gEQE)%>#zPK`FDE_^|I;@u_Cl^NY(5byp0Inq_|K z_&yNTZR*S53O#y5($|38hT4H%-%OZP){4%i;En))ac`1Z zb4@pAgW&3)fmcw>06QGvNzf{yq2nLjxNV9x`=6rZ)XG1Xgy-)opNH9EE0yZpreE%SuP5JzTA zlXsTyz}}~`zdq&*k@A*x^+%|v?k_>JYAV@MQaGc{b|lR2POl*2R}tzkKF&nkIR1H> zK|XqC;cbWF#QtD9I#X4;uJO9CyNZ0~1t~4b6@LyFQe*+0RC3^HnIcVgOQL=ZfYN*g zU)$6w#)XDD$?v1}ZnPpV;(#6xPS1s=D2OK}l&u%}m5Gj?f|GGDCZPN2s6?srU{>Mp zg9o5#d#M`k%|)c|{Y zvoW=wLE|q*3f{fG>BBngQ)zqsMh~Cs3Vail{QU@Y*E;P#XcNh6<%iL4&C4QL{7{XQ z=&)4bSOyH!oc+z4XLEq4Q3&&IaJKOLm3{DRZZ>rF$Rh45=BA-; zbKUd#V?&fMg)%;JutC#x#nW`XnY&0 z-o^##3X57I>Qm)hp)==F~Y z{$^3TK@#YpokfeBantJ_c4+{W`=Y2plD)o6PKq9b6S7Gnz@$3MFeTm~Vn}$cm#@@y zdoKcDGJQx_By&sQ%&|G%_vd*j*9iNu--#4olsT_TUAtcZu`D!gv@`86;7QQ-yb+Q&X(&CEYg=}GM; zEv~1_q*Z8mOt$1*4)%x|2_mcNp92=6dSXMZ8YkuwQN|ABYxE4ZQnNkZV-rhduwemH z{OaIhmyWZX^(NhzK55s2g~ZLN&=LDpd}ln9e}Z=7AmP-hE=?-x$We;?Ajdlsj`rrQ zFeMr?Esnf$0tO(QR4|5oT@cLNuUdJy-YO*@%sIXVgOT16m!ICfJ{&sLLKmJ-pv?C@ z`_ZNX7fpGv1ZC=$I1<74s{N;TvQ$bU?Wi$vE1+W2rz}G0l)8Wtl$>D*+`iD^0GhuZ ziVN7zHL#+8;joZ|%%vE4kB7aoqzOGA)UUHQBTaD~?EF8J;^7 zn))CFY@}i0QE!q1uexH%F7J)5J?C=;&*GjCTeNLSQLEOd+cfc- z4S`Y@i~u?6B|dzpkMT^!Wlfq(u8bkx8o-HU#>@UO8xT*pfem@_WUO>AD z3DoR2ow!OHJXrLb$Few&!aOAz!c^HhrZzK<+NMbYVH70+LXD*1#BA-DcEq9zPYoS& zJ)trn_{4`3B?{`i_{nCxu!Ul-(ds-}ab)xd7z|h4ECuzg4ho0j$EbyaRR(=y_wMN| zV4L)4gL68BMLNgl*!8o+I2O0}-yJ3?zKaPrjPq+3c}n)g!v=KdTi@WNW?E6}@nJ&rHOXXQYj?D?u6 z2G!pfl0HydACYgRBkU%uf-qZKv*Yw^^O8R@Bo9@;>LzZR!ar); zY}Lk07Jb1DzBYKhIvwZ{i9RX2QfVz{&_iqAkuyS?_B&P=!dMuSM@gWq@L@2Mg}b9a zcF&ygp?Z9+uxG3Qi{^T`WR$jx60^WON5qqd2n#5e;1R0fb|uPPaL7Ib#L3~KgaqiE zM)7lQim$hy31Lr)@R&u)D2WdJr?)tXU5ZvprvFbio=~6mYZAZ zeK32#H#a7KmIo_8ur*PK8)CuSi+6rwP7Tg!9VRf&f8f)kxakS2s*_<@zR2eLXms@C z(}-RU{l?@lvYJ=;5=NSFx(N(ux%q-IHQ&e79ABI>3QgB5_ptk>=%HaYA+va<03^93 zQkm@jk!vT|?>?Xq3Lmz(C4HiacWYC`?j;~8dx18u(QlIBX;e_x?-O5f{wXd=CnFo^CxXUfC)>e>ZE)Seo5zq54BN1w_9Zk7QlivP z)mv=0^YLJ+d{Ek(S{zOPqxjt=X&Lj^7BITU9Iof}b*Y?eo z6!7I9yqkXZ*!CP|<#;w=ePM630#q=dfpy57ms$~;9HXw+9q=3tsgzFwE`gWmB2$rU za|rEnlhsn3KL_YbKqkx%)1ec3IZ zI5ye{qzkt+C7qFQdpq5J{Wh13pon&|A^#O9v5Rjwf&mVn-^PYQH8SmyQTsr7`(L{q z-78b<30(E%u&%UE(|$Ebgi_lP;~?G{=9c5jDPp*c@$#xVu4;`1cNY}$OXEY*$mc!S!X4m3@U?M!ay=6 z)SY*sRQ+tggS12L^KEE&NOBTjz?IpS&MbGDV^RwzWTb-S_U$x;-q;Rh>Xh&RkQK%K z>|Ai;Cr)28HDTJflpAbF8NoL)whEl7+Hv{P(mILOKd$s{RnBguc53iTsKM26h zlq}VceyeZgoJSh&7iB5l z5L5GJs+)goP5L876*GwJA*WWw`WR$wd zGVKPM)##EFT+70-v{Z2@fDv`U?K1m zrvr{y^_OurC>S6UkmT96?SgQx{k{B#EO}oD^foCG6j0R7`ryTYe~WBbgEfIW4uE>^ zt1or3R2UscwKxgAeY0pZp7+Jd%Ex*8T@`K-{7s9=!inhYUYb7?W4|sNtUf(1r2j3z z_z>L{I3-Sm3RT#Lj*Y3>B*%Sqzso@#gGK1aP??DGO}E(tX=b5xD?c5=QNt{~I12N} zvaO4y0xIAj*}jL9o#XtCW7VZKSJVhup=CZU#NH=m@Mjv_5y+<)>MOXkS|kWXQGAtH9jQyh!7 za>uh%gkL#5WwKBtSYHaMs)Xy+``->TC9ExDeVbW%u&yMqUd)s$HcFU=W?W3+p+DFQ zCf)=7p1w6FvhN}cOBi~I4r_V`AcDCWo=O#RMW8$;&SsO(ATNTZTDw;ROn_d^KIA6& z_-L5fm*g73KvI79PRxT9I#9!e!VQ3K5RUpG(|ZXwjE z`=L#k1R@zp92^+|K*=j8FE6}?()vAEZcHPn7k}t^{)$uGU}V@ddjT}Z=`H|uYj;)~ zj31kGc!y|-{xbHjE+GSg;!+k5&Xf%e=r+C!*vLmbrnh14KCow6IeY-Dty#a|^Dc(h zD$>H3DD^(#q!ScrOLSuZnBvZ6pbdx)a+TR7t&K^()M+TraborJ8F_3LfmZ)%p2reP zaU%gT?!HFu(P#8x9Z>$IJQ=)vtwt8`Wknm_q)VsHuTc2qRi;tf23%nP#O9-0_!Mig z@#*kS+SSYFvh@b=jy12vJ+Li&v5#Zm;wPMI14x&kt>L&VK4@Jn=d9OU;odUv-PAm9 zq!tE>#-{8Ie$IBH;{XWzt?jVQfBa}=rN?fBuv|P0Wq8?!q?`zC1OSr@%QFaH+{n{9 zS{5i047=YMw4VS&FrMY2N@}y_MvHltl;ucwX20(&sUn|`k||3wxNTR9uO8eQcv5ax zu+z2{1Wn%p9e*||nJ-E4)j&KtyZF+#Yp!}ecaCO5XRbFCqxF{tU}BO`-Cx3@6xsv? zFrM$d-Ucku89#Tu2BJZutj{xq|Hg+gzvBu-H0{=4W7UXhg%Vr8t4kH`LqTd^0jD`w z`4fu2MsR2=C4VY-qCob8Q$jgWM9nzlTUHz5Q!R&-qV-1NGI$eTY$_f85}nw>oo0uRh}tXoux1$vkUORg>5OB4!> zXA94R9Xjxn`j(+K(Yq6=#e!pBvhwFQoa><8MhpWY(36a4*w~*3sC}x+j99BxnCtMW z>FzQ*6nS44_97bLjA_+0Udd{^_ENSOmzC8C9Qr~e0?8h%4$!TxNITs`K$CAozed%& z5a^YPihp^`f2f|y8;hLJq2R9=EQoqOd^`X6oq#g8llFKonj=S zL3CR4Vn0PN&8Y-!-CoL4ru1L{i07^Q`*ypU(WifxjOXMeVb`1m>$@V|)>|Qjw{*ca z`=_~4h>sdH^6#9&_#B0;fUlludZeO$(AYYA1;Yf*zJ|^j6HY~K5}Sy=%ki+92BdQ` z^R*6URO(QF{pvIpad(O6nPaM&66OmhSdGt86BsS? zy`9O$#Qb`ae@VTqklS4~62LwRrg7eOMuMmsOVa$qoc_sB%swVi!%wW_Ulw~8DBn&vZ~KiMbclVl=!kKCRT zKXk|AW6UwA_xh>!39(p1>ACl)7{NNnUAEc^c3G#58|zb zwZk4Ml_#_oJ~}>F0Hg}IVD9ry*nkhj?ITK4)moRAf!7p{sHt4|{?pp|*q@IKR1ydsU zsaaiI21J{eC(w{L6@4uUH);`SWgr--EUn^v40EkBVcggg6crA^R)1N_$-Cc+!6em~ zXiKx)Tu%{z9AtgGIE$^$WNp8ponQ^O!_c{(;FeF`RQavX|EI)$ZG6|N6GKixth4kf zJ**Q^YEa)Q6zvnhpO7PJA}k#upDSO;Kx}(Bh>dBT^Htp!^720{(2sC`|E%h z9u|G()#0>goeao&d-56w8Boh_dVM|Ji@ncMJY-6AJ}}tIeK<|R z3$bfJdKY<1nIvh7-cAGb?#&Zz4Ff4w-hW13uJrXYs;xV4^h-#}?6JEom_Xl#zc-JZ z6)R~eVN&0kD->kWL+P=dLs0?n3V)ju=Rzn&i-4%Rf%}B1?-LPfC0}J(O+fjp zY=HP--9I8Fg9}R{^}2f>(YmP0M1+V}t9Re!T)jJP;wz$l)1sU8~W zC_TFNWcNCBgb#l|FA zSu)izT_UI=lK_;+?iX>T(z)$q(ijACOe(2aTYvyvet|5+JrI6nWT;`$_FHmJq)*&u zO^0<>q{(Ir)|g+XX$l3fBeNSqZ(V=@n;=gq=AFws%NI10^KP0MqjTGr`Xr;3&Ll^T zU+6YY^p&KHHWQElbu^Z{Gb9_Z1_M5+Oov3ang6b0I|t+tl!s5IoMbnBTc*7+Dc(yh zP+LIU`i&_FI75|@tG4snF6!Jiu-KkN$wR@mR<(BH#t3bCwgO>& zuJ`Vk@i(A7%X6x}Aj?L+4aCv%Jr~BkXQV1!5~4L)r`oZdH;2iQHHU-3qo$~tLm^&K zHu;Gmm)hl8=8o;{nkdB-Z=loZ6gz**HlLgG1H9Y;fnD8dUgddyX+ zqdzb1RFiUqqjQLNOQc_Qa0G_?HHqNrKB5qV#<-Y`IH&BwIOZfAp&rT?xvpY zzsdwzY_t-f%d9l-*&)*XXcAA=oMJ>q_-@w&LD4r3jFXEg)T}ZJ^P3gD7m1C;M2HMN z_Z8yPAmBrsc&M=U?2GRU^1LUs^3)2i$I+k*+rco0$%2&oLB~kcYORd{5G$9Xv-a!|?I~-yR-xePA2j*FImIa)`k`oI4_g0-I4C zgI0X}-6CB#%Xj0Qa!Cfy)LVnh+=Wd>@|w^us=YDbmPYdb_0?@q?&|7d++}R4xZ=vM zqx`FY;JWHQQ4mfuF9xS|d=Q8Ps_>C^D0&ckt_x=6ElnC%O%)$H1PYD>MO_(m{!ihI z!?}d_dqI12h=ij0?e0XpcNJfz520yo2_%*RW2D7;*Rm>X$S(xLfniMyHOLiJUA-4&0fkWOh_>gCG+C(!#? zn1QF4g>R0?^{U|mZtwMDF-Gw{;MyQrCsfF}t)2FTe{#rwBGAFMD%FL;D_{|icT%<% zc51#p@DI0RN=gQ@`2y!}AaLKzQ>R^cmVoH!eE5sCy5rGe>h2q=)~T_tfvxbyE7!*w zwa^@)NtB;;IM0Ab!6UDp&xM$qAD@3#8uSNY6&oM~Z}kPDvU-tX{2&8CaD)iwj&Z6& zsvS3%RpW&vC+x`@&L-x?{~b@kpc;mx2js0KijB~#n7Ff5_3Ax3rIy`aclsI7!* z8ruS?e+KjxE)eaPUqSq4m)OX-901nLu7+$PBmK2;%rB|^a%4}E@D&VGa2in5#EqkA zZx&pYC+P!_+Y!Cqwpz#Fc6oq<0UsqyK;+SZB!-?2UujZvQ^l@T0o8E`tzr7CO0!&pbG@BmIy z1G~RCL|#}auvcm2N%n3Hz==HNs(>?v6a}-iDX@9ONkehVS&gl$rgtO~5y!qQ-_ido zbi$`IXhY#@D@x$C_~}=IVl$`SyfxnGjMzjudqCTenvSqjVBQlcfv}{w#_iE^Swgz}+F~+nwM>mwvHJ zy%k*Cm&oD+@hw^+z44s1MQ2)5nEc}X5y}t`K!{s(Bg=b^M-mfok8LHCxn7EFnQK5c zwDmul@0te4j;wCc`x-j8+zX`pWSY54mUsO#NyK`oBpjDLH){S zZH6io9B7Vj^RwKYEQJ3MHBd(1WBzttGA}o6%v-jZ`eo&{GyhQUs$WQZ(ez?$C~>2u zZf&QWaki+fooV7gs>skDVaDWo`Mh&~sYsAsORsi!)sOb*w-U&B>c{l>x`9xPUS%Yn zK+jc~Ut+}c_!69h3Y^(9t<%H~BVK#Tn@kPXWTS38`HPO=d3F_J^EN>j&kD0J4f9j8 z%b$q~sr8@+em{XUm6ElfWm7a)g2IBCQb3x-49=b&)2pt@+O*SbfcbRNpH0S2@#n@? zlPt-jznIOOjIF^$|FX1E1K1jbCIzhfGKyVbUYGjG1&xZ)62)!`Ci)+WFaj|LmK2R5 z4V5qJ92K0fwtx7Gm#*X!wB5~f?P;e8l?5SpC=Qj;&u28t*}({eDe`cajp1CgT!H0G zdf*!x%Isg#-mXsIeN8>Zx6$Z^07iCv>EfwGHAb{e~r^-f553zns$wO z9~i=7ic(D`hwMQz6L6gOTbAk+78tX=o{3wUM-Po}TzLCqd+DY!L2W{gVqb>={f z?N=$aQHgqqSRjz>R{9z?90IC~4;gG(yTvPdzt#tiLk&@TY*?Elm0SlN0>R_BIi2Bf z0yr|-l?mCmVK*s5RxhU_1f;|`Ir5N~BjmC|)@MGBHQ@^X$c*_Uw%#aXdI5N4uX8al2SlEuZ@hiPa zI&yhDTyi1@h=U9#t-c%^D*n?*kv$H=bN>P=lxbH{s?R-+jIDT*Tip~6{oh*>$K2DP z&SdmLf~k+q-|M3};;bWWgKZ7Qxckg^KKzHXNw_HGFAxOxSXNUZ4vS++_k9Q4gb}?O zpDN}mX7KG@r{mLZoT_5pje_sf*S7>zjJK7x4jU!+g&)Q>PaV?BDYZvXFQy&=Epy5% zMGzpx&i$=(be~%o)JS6eFTd(CW1iK;GF2ij>`blFC@0d`c-@!smUWG0ZbTvncD(4^ zvUlq0MP6XUGGB(8gE8~^f>pL(VYBbMy@p;J^&x|&HKBlD8Rs$4nJYgl$#w`C^)iI9 zM7P)@B-!9VH~h-xi0Et4ePyvcY&-xETSTki@>~&D9R!qIBR3FTF#7n#j#nIws}*E= zWzOmKgnr{6xM35&lO5n;_L5#|@Q4N$gs>+f1_ipK|9=dMW57OY$LKh{53?%sR}zV9rec$V~^>5aWs{Opg7>^B*Yv zJPVAk6(TYR9v}cyA7YhQx_WA^lJ5>fCDhJD;fU>NsuptZIx`IMs2*456AjZ7&kzSL z#voMnoG$m>r5>ZlpijA^Z@zRIxJ!ke z+*n`1b8Uez&&Bf3@FX;6QbpPXg$!A{5mkpru28^2@*5v_%ejz9Uu%2QHsq1K1z7!r z^suxQr!HyCXEeLB$g2ayb=wT)3Z^&xLL^1kBm2U@qCC%Z-N<|PgomLt;;OeMP`2FM z0RfckLf!lV7g-}le!Rc8_-dhgp-DKDi&=VcGaA-Fbt`_x@_;6FdbdGy~vfp%q?VmqlOMM}` z-sN@XeOW=hB=8??;pU#l$CsxPhJdmkk0P@bLlbi0tP9VzxVW}sF~7tIV(~(zBxaHo zlcn(uoEPI~7b4srH*V`eJ#!q!V1icUdtTVF^g7H+&{rOFJOXYQt>iR$D zb}9xLmz{9dS6v%ge9W)F5o|0<#{`DKE4(|%uJ+RS_hFt#{cLjwruvs0bOf3x@XdlB zBT&n37cNpb=Ugql-b>S@>oSW&Iq`Y4DL>?~udPA@=$`d#1^$~u7G#{A&p1j!obL0H z8zn_6ja9RGNq8xktvbKFPJ;rO<~IRygj(AfXbtcUG4Us;FoBi8dl!~AtUwg80sVwr zfsCJkAEcvu+hYw-j(@4LC#jwLC24G+`x(OU81+JyT3@)NuiCBcew2F16RI$EFZJZ; z3iSpDD4W^rg!?S9)Pj$`wD#Z zlSST$8LJ7%_?Y51Mh1vpgS+p`{+uNrj5ELUQRBij6nx4c=B*);l+*vTd*}qPMwGhu zhByUrN+(NPHOj9TSf$Nm$xu<|`kkMObL3&@97j_hl1Mn!nHWabXPc&pAkQi>4jXZM zjB`Ui124@oR}tO?Mjr3ZgSLt}x`q_Hpi6EsEM%RH7AcMb@4lUh$>NG!?BL3g*sR*T z+aV+-qRD#syt``jbxSWZP!A$5-O}Q>2NK+__OD%D0rWk8`SluQAf zLC9Kr1F%|!5u6Q@7>ge7!fJy^mC>6J5*TIRQ!g{TSlc-FRFVt5Gp3q$x!udu$WVeR zZve`_a^L(VpvocM{^b2f9(4D#3 zE2>ln%KVidwEAa5YiMZ_$&LziU}%#ZSxf$KAWgcLvl?q!1Htfz*ZC|a)uMb8ZJ}~G zNKw8R3Aq9r!K+oRsk_CDvvJN+JQW%+N^I$R2zr@@v_fFoc4KN{+P1QNEviW+J0R;e zi|&~v*ZO}0YBIb%bx6dMe>91BWuJP-TqDp@8#01_r%%0M0%M0OVR^--q!0fl6V`yyA-I^z5^Hj3{!b%>MEP1fU$qfgy~XPdI<7| zw>h-rVSsXEY_=br0OME^?k~j-2u

bK9Swcr(Abus!uh&c&p9!$~E@V@oBgW^J@0s`e@3iXc=; z&6I@ni3c^n!)O!pv;Pw+MzR~8YxI7UMNok8^f25G+O;eY2u;pq%Q_#w9tDewffr{w^@@S?S;D# zQ?`;qRso80T4{`ArMLb+87algG*uHRfr0F)P7M#*(2M6+ApvaW1|z17C^Csi7gT7V z#!>d~D)Y*KZ>$Akg<{3N)vo$izesseP8ZkFxy-P$W=p9cdi96po?vG%Y2v|TL{czH zL{v}s8g&=OR#BQF9JzECr!)lI|7I&Wjd$xw9Vs2TlywFl4J?!DKUgerEQd$2eHyz0T-IRH=_{s}_)g|43-mW40 zAze8hI|x_}2Yl;`=UAI6`$SwRS^t9WU2p-^B)=r>3kFU&$o992^tkp7y*z8=@qQ)Dg6CO$ZywL zhca2C%TvRRWXZpN@Wv+gXo6IDGU~Nv^&!5YxpV)YEcu{hFj%J(=IP3%r(677cC}Uf z`jL$`R^dt#kNJXS+Ia})OIzxYS9N(Zo}9R`nm+O2b5t_2ryr&Oxj?PzpdKj9Im0m< z>S<{qFOL?YSFeHT=1k&szS6Ih{ovdKNVC}45CK!!jGP5t&>|bHk^S-4*uaF65;Z`W zzHCU+D1^(u9K3N}BI2>G!)mMSFA_^T=Y`wdW{0wiv>%vB8W$isvhAv&rb2e`8dgay zXF%`3LVJ8+y7^)G*0W@^D6#eZp&sCN2nXFH(cW@_SEVq1%Liv7=(V5V{ft7^^H)bC z{WX0?mF!PUNooR^=wBshh4=esSkWomO0WK6D89bMvDp3*4az*y+11Xnt|z{McMW0K z#$bu8&P30f5(deQg32o5>5O%7W8F5G(UAekaj7dBgReeeo;!yddS=oy5GVclHw71_n-?Q(GQ-P*!JX^&O5lta_S(WJL_G%hCZ?hTQP zu^b*_#F-sJcVK1uhJ<8wSf3eGdg|3K>Wh)=1^_c=XF~u1JVl!b?sqD11Irip5D_zU zqTK9t8{d{ibNS4KpBa;Ubh)Bnh0R4at6XvGh%Jt5-fC4rajbHRs-B)Aw>3%)J>7Vg zI$8srixd zbLHenq-v>_xVVSnOES<#li7$SB4{)@&35f!L^M4OX@Ga<@j77by7*BT3SrVFfzY7n zy{^P_eOijR>*?0cQT>!TL;m{HJS5J3nstX}Cc2xiJ!EJp1W9Ub3+m9M(Ad4B`lnfV zj61YXCbd^IYh7U8gBEtT^qWo}z;Oy4Gh31oE4W(Jx+7|AC0?l`X{9!%yjlP^c4&8U>jtgli5pQ9B%6^K`Zhz8R@Ef=NfN6kl^u5n=sdk-Z>I= zFd&wx&IaJk-7oON$>N0;vj+~d9rTa#HP5BR*#Y+S$O-69t@WtQqA+)dP1s+LCC{i{ zGPm*LKPIk)KudX6tMg=}=-Ek%cU;GEw@Z_~CZ;EGzk}klo zK*ACVfoFVR8R?0$vwMO*vNYhexX0pkv+T8rBnC~gGN-b&h?;)MbUp~8b!GU#_gh%r z#2@dg5j3YmujnzbvKy|zj9_qrIb-xuVWER-mEM*b88IDUF|Tn@YK1=Ba6p?p1SYR; zL@Q`Y2iCZPJ7F1zF?#^26o}*Wt8ax;E#C=#^gGwkSGcP!%?h-P4@W2{;6XJz)~@eV zms=C3D#I1wP+@I`@%YV<|90-viN_I@>G!%Tdps|U(XKb~Y;kQe;j+~FQ!jh7Fgwa*m! z>im$Vc)|`bB-`+zFD2Nc-4j#@WK?2tiOpEd=tLACQkKWrw6ZiB;il z2;=+m!B}g_I%8z4p1r;fg%aF%@U9>-&-IRl5GTC7cgV&31=p{96B4`e^5=@$gRVeS zjN>7U?h;}JKVT`7r$KiKx3|i$qyX2DTA2aOL!{N5m@66a?+N4#(Ek92)G-{mb->*+ zvSdd5c_%Pi!>h#chEG>m3l6ysultF`BPZ1`koc&TNaXLj5UXnM^PTMf$&wRjIC$1# z1jfNm{KC&z`|sFzH!1Z)pb}>i9<6M_11g%hZ)j4E)t@MF)as%=?@S=*u&Iu(2BoXt zh^HtX8lxa)DvlEzW-2X=m87G;Dw-kMI0Q{jt+Z14XG7M$Wq_$!1g2P^|E!|3Q{|i< zwVijiZ5Rk0Z8sS~$NU!ByiY0-UFozmfEsB89phGeK^jkvu;R(XJ7-EYN!o%x1s6@3 zxK5NPoI#@|z=I-=Iv@v-U@zTWFmN_S8Tx=L_S-Utlg9^i8D_k7Z$0TXHL{K$^EHm$5apo=>!Q>L*mdYr+`Txr3D zS<@uIYI%*2he)#L&dB9q4@{b9R3W`w6C>KCkKQD=O-9+VybzyF3SR_L8+c&b$s1PF zkR=E&17k(6Z;bq97$`^P$ZOWoeov1pt@$4kxCc>Fb%W~oE#$kDZD^bwr^w>Q9+;rY zgD6fONswhbezfm^Rn+))i!{DekY4SgZce;L*1*7glcf87NT{9~gyxMwA>*0UHf+5J z^3a_&2qOji!6Yk~d)HmGrelE`W)90IHTWI%BretjDGo5Y?bZ1o>b18IglQLV6jp2o zzI<|T<3%_RR}@e=BtSXKe0^=%VswY@?4Xr}Jc;)hvF!%S4A-0UA9l zBt1f&2`_^>nm)i2^eAllca?iTp+g0^9ZCmS=^87y&MFD0vf|y1dI7GZO;Eu;lpcG3 z{<{;>jKK!n7u%=ODNbN1n}|`KkqCw-r~=8GhN1# z(6gKu?_0;2p4W?@!cvPsx@ro?g&lhrj&pxom`WBZ$<5)Kq6OD zoRuy7S%BIAThw%(A))XMrD0QF28;JEjv)Y30InI zslby_CfxSfAZ6N3=EwH8UKN1N>2YlN}`rV$R@R;aVwTe zmQI7oer#xgFNFo&c^yrTTJm}_WeoQ^T3rZbLPGr5pBxDbp|wd{ngKi`%mrQvMEphM z-*CLL9s5qSQZ&zN8o#DuO6DWB_V=E-;z9L+vr)rq-RbvJZ6OSUKA4_vdcU;7kYFOK5gI?{;gmEr_LWN^zOt zeNxn&3p8x*D4cV;cZ#M&NW3EF4UXEfmF&R*#-^HKO+gITZsTd|rn>+V zLIXmjN^#_1bw@$blSsbN;hZQm34w^{rj`BmiafmPhZ?0!$KIN?l<}lBbsgy00Qin7 zy8(VfYwQM4_t3wmEHyt7exjQ5qfmP!}nLU4!B=g|Ki$a^C zkB3<(Wpm{=yQ1HosS--M{`unL((E{+>_aPy1_Gdqz~@tjs#ueQR@~mjTzBEuX2zes z{1FT32GLTMuPzkBU%AHPP=I=~67J%O6jSPMo(ROAwtm3y7RTzmnt%R<)IQtHPk%62 zu-8w>ikJB&X+8DVN8|Q;sSrEIG?^J`vn*wK*>XH;Q#&6FjH6wf3KBIaSkih)q|$~t zY+z;zziA&;5lx(tU%a%*Hdmh)!q&KRgDLzw-bX-Ig9HMkXE)D$dd=pqN zMJhftcMpFIY|^S%V4)ZqKX=O8*EYsA*pYr0fVHFD>c={Odoq^ejIek=A7FyCSZjl5 zfy~)t*Y=oxJw{T`=v{Ku2g6$;?3Xx2kY9VGb?vW@;!KlW=yo|!53osI-p?Bz?kSZ9 z2LfJXz(=<}rCR~dMB3$XEjraa)RTy#6IV_^`0{j~Q`;XT7%vB`?qDGF>~o7{(#`4T zrE_nbndDPN&abAHtg)fQQ4oKtRgQ>d5vL;BO4oW080;HrBrgF}x_z>+ayew@p`Q>= zgEy~t8*6ZJf8kcHO-ShDCQ&Jnu?ljjz^?NZg+D0D*e07|1u5!whU-Xx=Tgxe*r(Sj z1XS(QVW9QGBdjM_niui>thIw}_N)17c%OLz?*iKIE7dDC-Fzqe{le))rWh#)Gd{tH zoB41eD{g2vtOex}#Bn}0;osa;v5Oi6pF!4F*kk)S zA7Ykt`{>XiBOlmoAbQN-g)6sW3#OmFDptSsDN&aHr8O&%AA(=Za#pD;2GQIA!}5)9 zXk>6|J=KJ1gTL}VMwN4=%C0Ae{&G!0Kh)gnK-b9-AhsMQwuONL;LcS&;kVv7nmo;v zU$PzSHZM~-Zm1+3vQ9@>GEK6xWA5qEWJqsCeu`^mh$(-+m$H7WXy{It=!&G;@A0k# z`8yrYrzWDsqo2z$gFi`~LtAQ1e%(+1tfe|S)rSBR#9R>H3AC?nE`oygYy?*?dnfPB zpZ56*GM*!fufSh)i41Kj=X#yp4aJ9WxI;*?m(5lTsT5Zgld%BIBaUeys!w;C9I5@=P_g88|}+v?9u(+XR2@n%7g<`i;R_#)GW zY((AKS@whBPj)jUKiszAKMFiM2u?!^yr}-EnOXSrzj`(ka%Lx^tFW$J2NKY);SOB^ zSl|AUhj8{8J(P=LUui;L3LoZ%(a1j0qqUor(N-) zJ;wUaRr;vjNONMa;$R9Kp@T6`XK5coY#qYs>_5kVEkgkZ8i?1)tVeZl-*Es2+8=p4 zeK^`O8}P{lt3mLIS~=AtuQ*-)GIxM+FiTf6$O$lGGk{1;zTggan0T2(qwx5u@J!l- zLqO4xP|rq3%)R!7PpZuo7qt9TpRH9_z+KY|R?FR1;GPvL_`fY!zN;lSzJqn?q*TRp zJQx_AUTnJ_q~j=yluz}DF!EW&yWBCa zkKo2mTTobH6uSL3oKC+DGlh*3*L|1FUi1jvN-{oX_KY=GEzb{U7;+dhrhl@YK6Dx0D01%QxzPuxd+}Vkz9%cV{8{o`r8V3!`(tr$!&2WUs z9-zteC(3oG6+$Z!TKFCrX}_FRmRL#5AgHNfT<#pek$*rqIowN^F61Jw5ZhH16+L)k z1DnA(Z*m{izvH0PdvdXO#IZB>OhyecLK{oe;lI?m)o?IN|Eg!)If?i9-PcVSU zZ!Q1<0+U+)f;di@D^azro zOZXu2<7`%#x5AyOFR6CO3fcQtD~;VRzPaFk-X(44E!c}j1Lo@DxS+Wr z72vu7XG7eyy8VriH2_x6WZ%{Wy5>)8tx&(!@~4j&v%8Vv;Sp{mgStae-k$4Blpo36 zQ(JYMn)V8eA6kTT({%lR0bfDWeD%E+CFF4aVA~0*PRiR$Xqx&Tq(_beQ0~!M3(HR*8QQ8Vj zgg9>#$EK$nSD{=NlJ^5g8kCNhe7BI&KnsP-BD|}?9lF!OE7ecu&V-W9U0+*G>YxCr zwb&Ws8Y|=xb!VgjFKsEJcgwvM$%KrfQH45nFN9@8A#}%mz~78hcQ7wCfPCSjay(p! z&>S}g8K=(!z3M@uhl^1Em@eJWR5txs4sjNxd~D_}%bjr4j1*1Pq-_sbNF=ZO6;QzH zyMJ3V`+38rzY?B5cB!~D-c)!Gau}0viy}f6=XD(|y9{x0XOWqQGBxrIV*C36#n9V7 zXH$8#h*-u_yxGe>`Xs`8m|p{3`fQq#+lpL^f+}$vP(M*_&ZBxH2#l9J2F`%A2&2N= zZ_+z|4)iNH=i{qftt6|(ozx}-ZcQj#BgR*YqJgDzv;mf7zNOm=DqXiGfz6`Wcc@b8 zK&Z+L36QX3bf=n-C`2tK6{(>5aztJt!yj3*)4mE=dau|e{}{HU>FKJhag>}ea;sE% z>&nETk?v12o$G{W-IIT75}bH=K?|bH{H#Cg7;NUhFPhZ<6bDjTwis1#cO;D-AHVN9 z6T^NJFeMD<$6P2}+`~A5oU-orL4vVyfc0NACg{_S;9q9i#eq83TCWj(c4d zI$_(Vk`jZ6M#8LW?(CKRop^5%;p5x(r3k}MpYH2qq-0uCzT4AvUoBmNJe{GEoAAzd17komx`RgD&}B^{5{aTkazf7%j0s5enu-ejKKP>=cHLg zV~M<+eOqkwQNBiJqY6d@u+U)!Z)MFiyThHvZoxp2X6REO70L8Bkl|~4$ftU!du2GU zqv#4?TvVc8jXm*kQ` z0TxtD!&@1n()%l5^{@W=-5Mw=E1D$lA}tyunCztvvYt>!!LJzQ_ZihwYSm$F_j(xT z2%BV<;V7qSqmgO{_NqE?B=z2Ds+Nckt)Eo)N+??+)WHj8w|$SX&h;HUa+!}Lf_6Rc z=y5x7=g(aV3?>mb^`F3@?~{-F?ayBOyvN{oizS*zS|~d5L@DU23<2`VFeg<^G%@?&CwPWXJBubL`Gu?04EJ+2g1W=+U$-ewd%o3YEG{i z1iphr;$AlpryXEW8bF)slB6Q+LFCC8sv9og2pzi=)O8>^ zPQ+*K7xbP26Nj^C!c$U742H=$hXd#&;OgTz;n$KPgmtgBn9>KCU?sYhW`G}DA-5oaO^yt9cFbN5ZeVd^&XJywQ;rr3>^0n=)&n|s zU{F(oR$9boyle?;l394gOB7t)zhYeQ3qvSUdJHqblPfvc{F7LuVe~j9uyErYz4E8X zt*LA#68ZU-QcCye_K$>)4R?&>3QY_la;urS_66tmqOE5N;R5VMiCha{RVF8@Mr)RpI>dwcq zj~FvI*Yi^QgXL^u1L8Zv>PuNebeIh1D7*bN;2Isz4!E}6?1SB0{g0mXum04NbfyPj zor)5Mm=r#1d89_r=Mxz``w>x4BtDev&9=g0A2XQ=--6ULtZof>J)j+es#2bbqi+kR zLBz8~fP`1&X|DwID#YkwyahM5GAO>t3n_cN11pzCxo{k02BNNZDrHn}XI+!#mtp=3 zV+RQirn4COh)I8{JV+v0oeOH!n>dq}3z$UTO_kxcVCu0g6hb5x_cm9YwFpI)ysO=^ ztw}M3A0iJ>IGw1AIYj_!^o~vfKl>{6W&HU$jHFxF<*UYrQtg9Y^jX%TfjXwb7*GCb zgjPA~U+j{bp2VLe{-r}1ejNa7(!WiIef$-=u>FdS;??nMHXF1H>t&dpO2w!>vbTV$Pxwj^thlJ#1L|*Xgxq^ zV7%{=@$kzwVzFL;$IyA;>0Xu$J~}%apt=$>qRy35g0G!M>udrAW2verpNG`2$GX)H zi@#Iqe*Kcvr=Yc?XDj)~Be}_aFNo}5ibVW-9`$Updyr=KmSz(|=;sturYS9XpE*k8 z@I|z^0eG(`)tYVh6y@{O<_IEB3Ys0(0i6nYx`~(4z+VHF+{4(7-;$1P_dkry`{pm8 zkZa5GGq#0G_`p1Fm^#a1 zudtfm7ty8J6#}9HtjAjGC;6H!Q}Lb6SczOmK2 z2Yj=Yke3p@AkA<$m`d2?CM))alTCA_B*<^iGyqMc*3}qEF#z?f%O^qF=`gG3KMp!& z!?!un0x9p72>yt7xH8EFI~5V?-<2*-Od2`8M~@t*Z{1}>tw6xtm)9yJ!Vh;*>!mo@ zvwGfavhE3(nlBQ>h?)_cjFf(09xO9G^KB!)up})o1$M`#CJA1M6JK|MEqMy?~6q z1foJK*69f*O}|~)rngTYLx-PzU2`2Q-D*I8H#^`vz#rckmlp&6#?ZVxLXU1q*m{IP z*`=fp&(pe`FrRO6(C%kw7(=d$lODIkJ;sJ#;TGLc3ei_2=?hI7Tuo|M&4?9DH!nu zWZ**sijGG>MfNUf-0+$W1p{hf!c(Xhyn&uDQ@AC+>k;XL(8k}8>{5O+H0SvrhHl3D z{Y(zUrNWx+fgtEk!@7sf`b`P281@>h@=naOoc_z8;cBI?G$E=3HNhSdxl3OVtdXAAp))vu+p6yE8l0WU5er=e2B? zCrgxGZynF$*@OuF-HS|fGqmX?O0a{(P!+}mQ^*Th6N3jD`#yKzSZJhD5Op9__L)H$ zWMXitc2XDqQ+E)~3+G5DVW`Wa-(DyPh}?CXEvwQ|2{3IqbqK{AO7AIT%?#w;L{$j4_NtY2kpDaKJFc-?+_S25oZy}5EWaM4@+GX@5*j$Slirl+Jmg1kpp$!2-IUt<~G298laVr;9jTSd@a{;+u)O*pG%x zK3TYoE`?RD`oBr;jaoGdt&bR6^lPM^oCmZW1K9t^L3ZItRx_fko>**y?@Mg@GDZi|thr8)uJmA;Nr;CEp801Z~?40(Fa4}Gl6ILl@)Yq@1H z*6PAVP>&%FEl+PrqN_{S#$gVOTYa}(oyYV|2HGvO6heseD(JEU!>SKK!8YbI<%c$h3If(oBq<((u* zp{iq{n)0`wBIo^0tR&`+@d%lYMl@00Kd&YwzKX^e7PEJ>#xL{0+$FVMO+gB1BZ@9{n|~DZXr| zp-84SXLFcX97A4-*+57QgrY7{e(SHZaM3|BT_`8;MFUme??3iCmi2(OMe;Kf} z|NmJGlTE$nrRXC~hFem(Sjn0r*!g^wD4GM%<l6WyrD>BRS za$cpu0YAju_M5!}xt1U;ODccbQ__B3=+*->TcLIm{^PFwljC<{FVAM1%kn;)##+GT z?-u+8SU!nmSjpgy)6e?%+mIJRdMyB@ z=b&vK=??dHpjCqqBVW9?e_lJc%9t9clXD+IjED<+5CynUZG)f%MH|lXl8bwkkl7(z6*Gub^7rFSr zs5JX}dRWZUJC*VZ8lDopd+C=rn;FB2C$HSWuQzQS1=E_!q(@2lNk_LbWJ_%->KgFs z=5+_e*PZ=hE0UPJWRt{?Wg%oP_%U|T?OUmz?eXvm)aE^?0=~pyJ$vztm#QIpqo%%UqYP7n(t-D zfdjS0j{tVHMC}a~ca)OTvAzkIqJBo3-Vnx_&WC{$*iGFD`0)27qYQs;kH?Bir&n&1 zh~2Ob<4Z(o!JxP@g`q=*S#OGGNbH^ds~Wm7?t0B7J;30KuIjD6CK~wdC5Ifr`D6@i zOfa>7Ek*=AaD%i5#R-hAU2zB|DH|t_5k(gv0ycf`dK{lid|`$gEXwvV+BG)xzPSQ# zv^IQNe0DO8ssHpvL7?cD(JHmnbH=hY>YIjd&6Xh9s@8&*gZhZPY>p(lIyLeE8r-sV z$dfx*Q~;E`vl5y;eu%jk+uQqZsNllHR5KMv68zW>Fm9USK&9aTJo~?fs%|KOKG=ae z`Zgh3?%=`8>6X;xUfDd)#t6IM@O$31x_?LGOGnrgdk!46wTK|UueRLWcM!HJ6Cros zqemv1vah9_WKO*`A{3G1;?MpaN}qDs3`n~t@D%r^9l1=+TMG`v16PW zpcw4-PeVHdP(AnQEoml>^1@aZVCmMJ>0fa+lDXq$@-Vl3IpB1+Q8KkwL>A1xK-A;^ zLd6Nz*?Zm`)u8w#MZSf$}wNA-a5DIVtJk%9qo} zUx78QwE&TLv1mBUD zCOv(1+0Oa=6Xa4)=2)68U3!)Olm29v|tR7cm7`xmhud%LsRAN z+=O_NC*doG=@i)#G2iXC41?VZ=AOF1)3%q?#cQbk7z}a6&fZ6jB~(rqD$2I8dB`k( zM*GcxKjLS_`xHN4uTItbE{RbfmKsD``7E#hC7Z6C1G4Sv=CQSu$L6TQ$(osdxyyN%cK7Hj<_XQ*v_btUnEj5em#C&07NOr?xvH;IQR1m0TIjt8wpO60W77r!D@m6&GwZo z<+FiU zb8QX%fvhU?4Le>w_K3?Vj#|XE6`+ zzwM61$=$SXhL|Bk);VWUoeGMea0ypzK|hSKlFG03w4c5(7w?41l;#d zwT|RCQUonGk85-po)-1An%*rZ;q%}y?H*(}RW?Gol87e7%Z7*x$%myEvB+3j5I@&n zQ@bC5Yu7gzom2BLbM0+WlR@5)@lf51xB3rPbV(c1ePf)jo;(bhF?z; zfXF6d5T29CigM=8JBh~sykeSILqjq@yl|jXCxzTo(ZZ62S^Prd%NWrhGA~t*i4UUy zfmYg4sE&xdqGmTD)K@b#s8`F<#)EJouvTIwQ3BC~XHx2xJOz8r!cCTVp)G|8zVMfd zveEe{^XV(z0{u*gtY1KU<o3DFV4}FJYc9Tju3x>xIbI&96R)z3$k}GkhaRInh!$F>T3KkW3Rd zg?!VR){)?a6TmGciWJPgA~y*jVIg*cK@BsBK4)g*X|m1#O%bn#KiXwlqHc`+aJa+! z&4e;dPPp0r@~L~m{a}99Zfm4<6kWR_?`>N&y6=%r-)`Zyc#S<8W^x#BDOoAO=(DZ4gbKZs9+&;K#-F zmyQj#?;q1iyN8#%Rv6Q3A?1C2^qW7D;0fhxrMRATPip@*SZy{6`%PNVeha~Tka;MW)SsT8U1vd$Z8#e(eCY5w+ZPjRnd{})H7T89e zgj^P;;i(&74YFFjTK3>K4osVHi+?L>O}TwJS6D;BOhykZ9C?AxrdRjaD3mlNAWmEN z9lQeCijW?T|6dTSTk^wK;OF@`Q;kgS1tG`Ec;$IlXFXpit@xrREny+jB(UvfcpR%B8Xtq&2jg&Dt9?p3y1R|;oI(9x@b4`2|%NnOy<4@ zO$*JO{{4I(Mtky;RBXv4D8Eej5`?rrtQR=TC3lI9AZK@|?4-Ye;_sd`J`OPRw2@FM zLbE38Lo^YuEEPTjgB(Jlp`+=4hSaAlT65iok?>I03gJCdabRkt-%X8n<1)}6`xU;| zE7%$Q!yB>e_sZHi&-APD@UH+w)g9S_?6c8x2VTk@x5!qk+pxVV9=y!QtrqG`1|^a#{t$8ERyU#`EfJbnmicQ^PdGNlV^|=05j5ug?F5Sn zJe%Z)7~W=>jkV@QlL((at6+@;;yYtWGWC%_O>K=z5(dm(? zT@uo9g9yw2FfZxX{npTqPqU`$Qc*{CP)}Bo~dw9Mq^8Lx*Av=Eb4jE;BBi;bg$(#=!)AO^tqw-c9TGM zm)}&-rQZ0~qd|r0L@PW`*N{+4?^hjBWjLQ8oOfa~T0fNHpR2-Eis)o&EKb_Zc>mw# zgm10#w1ic4L0=wKV14u(TsZTk00Kb$zi+!EtD}ZcX9yJbg8823q<~|W7~IW20--PN z$mBtj=-!O-EvBV-W4-0Z=|=50m%IYffPDn|X*RH}h8SW@qP?m22iQe2TAdvkOc1pp z5y}Gr>3rcWbinS1%u_{&fe8owZ=)&tYHc9tsV+&_4107G#41T?A-zBP+2%|-^9i|) zCY#L2Ak_T&qO%=_FG>mHQ4JlG{RAP~TgJvJR7RVtDjm^02>kK_2J9Wv zv~LvzEU-d*joz^OUC}~!Kly!cYJQ_iVPy~6lWss#i{=Ch_AFpMn800SHERdSs zxWyP-;xwR}z1AIaDG2i`F18wQ&!){L51f~}12#=7u@nUnqBb+_j)UsgefRDNWuFfI1BUS-2+jYf@sOAgV({(fDI+)`}5r%>RLE+ zNZ-g_=r}79I5=-3shIoFGy3bzd*4`~TE!;c(OV8+8qKsm+9 zk|{L+$FG&g$@fN9=e5w29&H~FO?bn%S#5OSXERRsY=;~3^jqP`Iw95XkK<#)Ls+*_ zSVy^KJ;`54$yh&*`mS7FZ0TLQQNrV(7# zcw+j6u}jchg|JYxsGJ8ZB=Obd4Q3fgX2Do&9KVtOAC0od&iKNv7tON4zXS~o1Ye70 z&^aa=KG{f9bWGs=92lGYLYI;Vryhk)A)codTpu!cyGDWWwEJv1{80$Kqdw;}cymOB{QVCBuC6 zpTNt71rB_1h@b&()Zf;Qabs`0w#*QGd4zNd$$`!B0H5nejFISCBBj=@6@RC9OUEim zI7HzEM!>81u9sf97F#0HGow}JYcuYcJe}#cBW>5{&OBqlEl>mGwu+U`OxxC7!`;ax zY)-Y!becSnO%xSF>&eztn<Elwi>3FKvh>$|f*O-#aCq8lE{7%`2ibxo4GGqFbBMEF4L_pT8@v z_t-7y;jDHrCQjIpzy)pPZdx#23zpb|S)2eDk+gsUkC<$*qh}AbtS`_3G@uvS3P5s^ z5a3tx>zEWC&Ko5aSU9Ts9;fg7l@3f55m@n;2porlh5B@YXgalJEw2-4P_5;_2fufmF^(-tHlGDY&rsGtP`LZ) zot>lhKNuZzq6c<$P) zDqq+1^J#Mho*g%TemMD~*tpv!_w>Jh<2gB8@qs}ujdurWmG_k|Hh>+aZUf_v->t}w zg?X8N6cN%b`5TsglQ8O>l`OSTE0{WVRcKV22FlUzElLgK_Q`w{iz<;SJN?b;lpzmvM*Q8;lfik!{Qx%S_h z3>p+$pm1TCWmZ%mE8LlEco8&SzXQypE*v*dxq}}>qYcuffH=HXcxUGNq*-23 z<}m61daD;hJ}^D>vYbb*BOBG+P}}$%H4Uu&Z(8|&EYF;zGGHZll(qIseK!7-Bz60j z`L@kby|S{GR{4wJ)q$x%IvIbIOM8UEpn?7oR*e zPkh`yb9pd_)`3kl%)NUJKm3)Rb8``(h#-C?`rcXph2mYRmgBv2Z@UD{Eg~qkWkq|l z*k&`S^S?9fV4+lrFqA`Z46PSvT(Rw2F~zKCtWk@2TjF`$iE~R&2e_N<^B8Jz5g|*k zhA3z4O!r2XmYkTSB4*B#+Z1?N255(6i@b}}Py3&ESXk9Fat}Vu zGQ}Q6#kz?LV!z^;?UARlYnN>Y4+|u`zKKR3DwnDfm^^|1j+zz5mbGst`qI!irBA?X ztVG>|bTLpPd{IxVNx8B-TU!;wY+0*5tvrAvZe{rFhL7HyeJLKZD9 z>S>6-Z|ty#%7N+YI2YdyX0#dz=k#!vR_}gxXN=8OrK2&Y2Hl|n=%+~GU*&9~bvO3X z%l{nk$Wtf8G#~;6gM?u%lxSa7O8dc}cfm22^*_faz@{zK{+FMMTG}Y!)}D2`hQSY0 zkBEp8n)#n!H4or?Eak)Zf9KywHpp%cqy)5hU#S|f?p!puU1M_Xg!5{3$5_KZjK~gF za$q8Xi^wHVEAjZV)-9o`Z&QILya9KqD}k4i#O>QR>?zXNv@{(x7UX31$a_nbgh#pY z@oE|9-l_jx&v7%2X>|W!W*4AvEieJh@wp0)jbitsexoEp0$!!TtMfKi$+z$lQF{9U z!YhQS?1x~dvCn21Xqp|N(!tiHGctWRjlz1qB}ksbJLb$ehylk_w4QuIqaQDxs{Tt~ zYf_>q<(^(F5v&~gK3=f$W*O&(!ZUfZ;-6di9?$-^y}uDgkVntokqDRHwrrC0k`ctM zFI_cwL_A<2vdh}i7}%;OD%7p_czEG5fk@WSRnHW;#8`;AbPHADNWod`ECC13chfMw zd-Qi~7+LY_{uEz}*e1dyldk8ve2fhpG=RP~j*KIduuh@kDHS_%oxxTpVx8c$J&ncL z$i1QVY7fP|;M0D#JcjV<#TQRemt4m;w~;B&`nWm`J`1HTdkyE-B-E9k2UM(C%fqtG z+_z~95#c;M!Pj{`fEu1jr@@C1$m&YDuiR%{E@8V78R7w&S&O7rd+ct z5}`l%MN;n{MWriuMwbhcuVN?O2J+1)qQ5Q1gX_dtaqAfu*B9;uxY~ zQli6apJ6s`>`m4)0fkq1wyHp^@@DM;1%4&m!D+9Lc87 zi}!wdrAM*W(rH-iCF;PSSP%HDB1;PW^WgOwQC$UsPS5DDC>uF(%gqaou08maWTzY` zVFf?ImjfZrq$@jg5g6YJy~R*IFvNcFEO5K=a+-F`+C?ouG?!8abazXUmp8Y61ue=k zliAoYkfzon#(W}AKp&Y2=9xZ7_fG%~^eXnCRncyDg83Z_Xoh|)&IhR5NfD=ND+gIm zmwkM{{~nS5rw#P!84l}*YtQef<6kF{7VFXsF>9=g|AEWqsnXerz^A5={vA(G(E*f#^x8ghSfE;Cw_Go}$?o?^pCL)Z0^==csy zcb{95;6d7V^`46lerX@vPDH~7$GAl+0XAPIEbLA$$%)j~?AI$^Tl0i*WSgD<7EU6n zgL`*)h&z8HoOUhWLz-2`Ay2t%UHF*}^4aaoi^y7_OU3a?VokpH6I}Ru&Qv)QL$ft) zf?4CEf_f>|Ltji-U2-l$>BBt@p7kGrT`-BNxG!RZ=0;zL580AAu^%jBS3!LkG%?7- zNpK>@mbQmqv-`{^N*7$??F`So2z}3MrEuzjzfq`KK*%MT${jc-Ric5e&uxaU%%I{O zKr=rBjHU)lB*87|i25IGkqE~@?nl~4f@z=Du?||vYw+N&0w=nt6wRlI?);VZ@Ppn^ zmAPraz@c=W!L{d)Q(lV)CD|tyP94(lUQCJJAW)F9FdRq%)ru!mfGe(J5B!57v>kn^ zEzRIq(mk4-wC-R@p}LTO2EA2lzCaQ!9K~d3pPx0jmsS%Sx`(KY-obRVR0Mz!rz@O> zvz!?LBO@2_=QBYeK8tt%#Kh=RNC-;iJ6~SDTNH5?N`zpM9A3qVy~2n|Q_`qhdACnH zVabDhI1IMPF)lGmETQ)mDnJd29O+2mWoJ+V&s#-{lN*3V9;1m#>8Pnb|G?YMC4sJPFC(z|j~iS3J=xvTz%| zF$n}=;~fj_Vi4wn33cr8#xw!;$i_V%>>eG?zkhQhr)e zc1ssqIZXap)eYsf5dYwR>%f09hjcdDG{;Ru4Q9D~0e3%e=g@a?F5X^YVw7KIglHBJ z1{v#5sX>8)x1CDZ7S=IlJ+i1mCSN=tXUUCwFT-SSq=%swAYE)P{0J&SQfg_a7HUcv zWJugiyqpJpD>rmS)@t~_v!O883DBcFJeTkNWFbr)JQAQ-S_SQ#E*<`9Ls(OlvP~GJ zikX=$CWEh;8^>N&1olBC5M0(Hvh!EazG>drp%DfWQ3k1wdz2P$*d_Qn+(?&t^w0l_ z!>&8!kiJ~e?{q}!?W1h8&{>Wn2Sn|ztVFdKQ|Xw5bSD1Vx_MSBzqrGt%y)CU1mr@) zvSBu7T~+$cHzM*@Op=7iSKaDV*Rqc4taj@%C)vAPaNIaY>~$e?&3^lRp(GRaT*0Jr zROcQn)DuIcT^`4R{BF1&xg~mbVxdf6egmjlPo@T)iL9z*qZ3ER(OR+?Qe+P|Ad83j zfmz;woXQYm0+qXzeyEl)i$Zy~yBk{u=jY0}9ybe*)Z_a2ZS!~v5?DXR2YAA={vfmS zKgG^mKpZ$8s)#e>>Oit1r(lx*qPth$zT?E=kbnhv&+B)3sj4z@8b4Lstw@Nz`}d{; zhv`DHc@dpml1?BA1AxxivTr0PD~<}cvYzKGIT*R+=>_Zi&>tMtC4#Za>=;F~%F0Wj z+6_*Lxc3|Jie$i;b(ZgU(R0Jk(K(>0OeL;sr{fMco6gb^6ywb z-R2viZeRXDJ=k)QZTSCW;R@@%-RmTGq2LV36syMA=QF?VLrnuY**NQ-#E*x6TT|QN zlCtD9vH@rckKKnH^7m2T=66;-^FXjz_Wd(WUuyzpP_#katKg?ZP)*Yul$qWb7%Q@4 z4BLumXQUI=S~gSJe>%Ugg>h~z#@)a-bGLP5aej9zY8}QfUHu#|&^w5K zY8T{6O3KXUYK(CKpkA4@wAt8_I!hr52Mc1oFq{W5=d3@x9g1O!iX3s7lsec+(?prp^0YFH2AosS4VI^2ZlyC^F2=B@$@GTZ0d@DPSBJ)Lq9+=X zxKze4L7#rAuLe>J0b6AGeF&RYWZ^#iA@EW?pwe%Fl&mQaD*Rf!j(Pp0sAheh^#&xl zPH!5gyd%RyvJIb&SIC(apIrw5M=u2E#oz2S@2sRsIZ1H1BDA`Gwu)`{FPB&h?Jx2{4NolG7= zVXxC4(>-%)5~~fl#Urr3j`(x7l4D(r5LTBfK(rro4mii#QF!EdRM%)@k&dX&l*28X zrReo6-%YQpC463>Y!FPC3|Trg;8EJ`@o+j1_>8B{b;t*%4hQR`Ax?IBJ*{*@YKJg< z+PVmW!U9iKNaGgXY?)c+86-I}2%L5%*_~#y?{TVq)KmviH9W71wo}ZM%o1yz*fmKG z|JWtY_v**ysC=@ze_MPmq+ad=-9UaTORAX^w_BMGf>}?PHo#oI&)7%ZgGI-T)atYw zbwmZ8!2HR+amSGwTFJ6@z4$}j_U7G?t<~4qLzW5D-a@QEzYU~|0t93Z;TL*+L75#N z3H0#!ntq4~**@o!fT#Cg!7sSsP#h}}VmsiAHWe1afYk9t|40pq9RaOwELpDQocFvm z@SeHd$b%A33)>afa)S_Y+eig*Xzld3U7 z=OV_A38xww@dx1lP3YsHCIy)lLmvyuILaOMH$e1}lJCX7UTQ@uU5wxJ;6H0<35cWS zzFGg8_bAz~AHQt!D7*{_BFTgeNLVJfnSs;xBhTI>c|+pBA_VabEMM;b@^I@RJA&ja zHc9$s2S;75J+Xt@jxnR2xOW`Pciw%zSNxwKtma@G{iQ5vo~qCLQo17Mi_+6mLUG>z zRkRW^J&AW^c(PGbJ-KAxNhlz(*&!PVtuD$lZpw%-nXn1JIYq4R>M(Sb{s+qC)s%wd zBf5;5ALm|2f&(@4GgOT(9Y$8qe#jXjuS+ORF}0MbznF{svD4x9huLhaSyZ|4ds)r# z38QU}m})V+iR8^2ddw`Fcmv=Z@byf;m5xfyJCfCEAD|FI8*T+$c$QuH!%uc06qN_8 zXB2^f4h91~!UjIz7Om}T>5mP6G<-B+lt;ir(nrA)IGTUwA%-TcVwwCHt|P$8Z5Q!H zomKyM)rg&7fSZ_v8Wc5#=`1fFt)*hH{kR{$cKEWlO-^aJv7OOX3{e zH{pHVGf|x3)AdBa`#J!*15=tU!3%z-uCpF!>UY2g!64rinql|fl>82(>x#!nn)k3g zleS6>UoW1cjWf6;U@3!yI#`nd4fmjMP-J>aiY>9R>J*oqxa%NaGepGWk(7mh;zDm%zs?_z_a4U7Vg6dyPnZ0`dsy&s9{*meb~gn)krv z=@<+8Q(NR@NGCU1y@3@xsrMo8&~eePXrNzPHGm;sWj7FHaim{Z)9SeJ zfDr2-x%+lO!!14=A2SBvIo{(frzTNHo>#<8kjEVm@%P=DE~jXqyz4_L)o5evdu)Ml z?}qv^^|gJxiRM)MNIcNW@_jTod z<~E0dmmhfl(p^{0%08*ydEPs#9@ELBdY6j=7{w|((MV?AA$_MELN^jb@OhDF8+^__;Ib3p0$3K(KKa6$5)tGqw8gHl%L z$b=s3{!}6_3>{YNiYed2(TTjDu;2a+NJoHC6JU4xVbY8;YqTjsDbN@E$U-P~7$ium zSG48y1$8#d+3(XA!BKEthwGgN0cphM>r|bLVi;>AXD7_)?Dp9U@nwI>){AW|>*e_b zA+b7tmrp{g%#tkOEIfW#^p&;6+PGS<-D3Bcfy~lGwscfVI(->~+E5wmgElPGM^j6* z>%@bl{Dg7{=U+ziEk1yhTY+djeI07bIgzT#8q1Ib5-A7}M6c#S@bZBUNfXffZPH|- zg^)Vkq_B_v;h0+o97~m;m%=UeJC*O^~SVw!s|n>CM*3k z=3{$hNt0(|<@4wI%L+Q^nig@yu0=up@aM;z#t^>1v!*1iwG~65xaj0KxD>rzhtl#@ zTYO>`J1&H2{TQEP~KgO_`ZLe|DK3|@4e-X9gy$e1H4 zicVaT=s#tKJnAn7uSVcWc!C&>G{dlNa7Bi@bLWKOEQ4P-zVzA9++R0K=*P8$xb7e}~4vO;5syj3i z$|lN020b;OBp)_19X4%1^uR0Wr%_dB6B3HwlnDeh3X( zo)=hbS`0r{0R81~L9gAgD=KHKYhsw%XU%~+!DmJF;wGdSjrBx=9pnWFD0U7nb7uS9 zj$NA83E@pgCKmVTEo}`1YBs=dfSX%e{pF_~-mRCrne)6$b<&pMzS*ok&S!)>zL@>q z(M-Mk0ElnOk#r`C$%VZF6LV*{H!CVa2mhgLHz4~tD^tn$8mtI$+~?A@^o*9eK04Avch1K4GO+ zAD%jbQiPuPxF(rfz?n5+$Ipc-6Cq=gbq)KwDfhQ^Hz(WS)2Sd>3d6KUJ-UV1vEM>c zyestjU$GzO>LtKQL)#3fp3SOnP&-O7BJvnq0l`O_SJu zV~y?#?V9Ztvx_I_oL?eKr#ZlNZ)#b;jX5QUB5VxfvT3%83bYcUPGVw*I(`6h#>tRp z9KuOU>P@|><(XwI=Q_h2N2z!25)DY|_iqZFy0gAc8fq4Fn5`Vx4jGj$t*RkfdqGY& z3yow1C}nZzRkg%C%~1Z@2U7=ZU1z8}Ds_qIutHRnC)?`*e! zuR9VVI{1lwLoe62R z6L!5O4$Uo1w5eXg%XAj1R6ZjZ#{{t*u^8k`rjAQvaBujSLg)Z4Wf@#ng6war3x;)} zh9sCXhva3vPmE2TL4F_6+$}&gxdeg|@}G+$;CHu;Nk?{fRqn}}>7VmFkK8D$@vaq5 znMJ<3BGF;AcC^Z)=(WU!j+kf?c9!jW%h8kQrP=7K5O1XF-Dp|t|M9j{2D1*C)BhCK zcuA*Jg>f}gzJqn}PG16B>*e<=FmSss9m5Qtwxc$}LPEnj0)22fU&n32(81uBg7;Up zG}%!o;F}cB(K=<}iZG|J+t(O9LGp^GtHKpUiPEm>sO{Jf`ko8w#qGxy44j$w7B{Rm zMfzJ`s2rMh-GlE&_8|gw@?jj1Ydk|-XClK5!O;;I&Aoo;ok9vYzp*QC(pOdK=$<9^C##ko_rSj7@ zzw+qD@3?~#W++=h*M$iSv|*mi8^W?4kJgj*7*=G+d<8{?crO`Bf86*WdCmhn^?X4r zYG~?|A^@qk`^VovUYz3JcPMrc^Gq-oPzs6jxklAgR<)%Z6`BE#bn}P*Vzsjb(x3&oD?0qZDzlsr35`&az1bd6ovnhPGm6@d2YEy`FK&LM_DIS2<`0GY|*fq^S;6tL2p7O*@ zZ7lo?V9jTI^xENOj88<0Aai-!%PA?3`USQlyFgtOcg%9kYrgBAQo-JqWZ9!s5=(Yb zpD`K5qq~>`?itdM%nvMF&5paD6WR~y_)UBd`%$kg3EMO=s1*%PwU#nTI4pEAuph3M za;xRWGJH5yH|2mzAmw0`THXxph`g;${|f?$Qy7_Pb7!x;Xynws<9L5ZzPzd0cqetg zp;9GR=96n8Ig>H@Ysky|sS_Icg?dN$f}I&k131#n7s|ymERwu6M3HXO$s8A`cO=o9 z#qY(PjK=ZKkAqy?-5i4_ts%6-JHE7ik&yU3t+~qmP}hshK<7#2c`~-)Cxvwky$O_` zzJj}T@nC#8%98A_v%D!*UdB{)_$nLAQuW2HEMC+#2l%VNPyN}Y)=Ar?=+BGg_R6>8g@b2%=B!lVAH;r=az$P$dS}5%ltHF z6r?;-|AVR`|Hvcf1s{gxjRkA_@&0MzggFvCJ&xOXiWZN=N$B|t8&wdnU+B=wZKJ}| zR>Sq<+PyW||Fe&%*??cGKO^4Hi9Sj^kc_|Z;>Ih(jis3d|ueM0;$^UBgI`>7v%y8Rb)UnT=W(ZT+Cf&Jf7@cTYPhrUGbr{HR$^6TQ zAQeCTZnqZsmLie4p!tYsr_2fKtHG+eb3dMl@0nx@^-h|OY`pzvYE$8)odiLu=QuOM z1T5^ef z1c``>z0N-}`tl48BKTAFg$;)OZ3dup9Wa)&ZUV1@a5C9Z92IYTg!7drk4H-{Jy`pw z%Y~k+BwRE|DUw^$3ey>>yN2u2`SBTR(7mH6E<2e1lBsK(6dqaL5pUA{yp9p66jfU4 zu!eq(+S9M`-?&Xo0GLse9is!+9=7RCpp1T#(I2Fq46(|{d&P6lvt>#a7ISPO6<;8` zS-GuidcScQnL`{>a*^rATG-mz?w%UN4V(0zJFFj z%I$>))H#lLuM!g|yxiVIx#oU1Bnp{XUGkg_qhKpXcoX%qVWS*<$MI1f&DYQu#Y?yC zqIpe@R7#O(-u}us8hLoT!(DbS)D5iJLd~Sau7t`Q_(7<>RLdJUAC`jvN?}>lC=|f| z2PY3HLxNE|7{{AOnDP`%`5Xc-M(GnZCL~G^BeOip(5t`1ouw6pJ$AA_@#5IM`G(Uo zh)eDkt~;$`8{|H_EdOxPT!VKE-z)oZm{1!z&EW`1)A!?WhtG+N;>D(=`k8aHj}2ny zJ&yqHY}CT%RG^x26)4+XrnPj8;T9c=JV+76cXvFl;PSA!Qjbd0>XY{`YDEQA6JsPD zJ5HZ+ICZ0vG~JT0(xz9)9Zt9naSZ{XDyA?Ov&WgH(j3~IWC{;+1?i^*+QJKT^I!#T1mKlD+$x>vMYm)%pC+y>q&gH zOX22iRaBzf#b$9u?N%{JTgFo5RH@UcZFJk$&JoEEOY-dR@pHOl3CEOC6arZu1 z)>P;xvcWgmjDisxlPsg_HtY9rxVj6C&Fg%_cA6Mm#=v>OGVuGWgCX$Ky5Q_8o43lv#S8mXRg+bgRz`bLM35Wc zodY!q>NZ)7Ps9h;M)f~AJasP zKsq?J3@~YrrP>jiF1sLeFeIzY`EEQjP`xs@>R0^cICm3Vebh*P*&*9uW&v&_Px6ri zbz9)M>@=nUjZppoV2XE(3wvCw(f~qP=IJv5^$1lV+}J4>5JU3gK7J@KSo{}&3+W#} zPgq^7kU7@rc0VWox^B z834bN0BDw_&sljI&od#fXIzSwe%CZEdQ;FOrD9;E(Aj_Nes%^OhB8vBWm;FSeYYZ7ss}E(0U}ji2v*XdzKIJIp4GWh2Gr!P?la z91w!DyoeiVXG|W1ii4WL{Th5@AXhsotP0sMc)l9b}ZZw&L zY3CH48H0xT2#!BuEex85P*8!; z8A#hp*4_`VLb?tyYMXQBKj99!n{Mu!Fvk*iyD=Lkgx9jb|FJGmrjRyyUXS5?-L;OG zC>H0rr3uh#WKg=Vj9s^I7(`Y;fJn*;liH*Way(iQ5FM3O9*&a?gKXb@@Aw*J`LFxf zuEPF}1DsY5-64$jjtSZn6O6vAesgY1DjGM@eu(eC(q#97b;M(0gP7(2mLa2kicXI~ z(h>V#fVs5hCp5iZL02AeA;MC@??pjHsAYP2PYxIGyrMPYmHd1MXxq_5WY5;v4+bfN z25N6@Ug0MXko`aY8VEiWTG|01rvGW>_swEh-rX}* z&n?nL?PW|$_A18^di3k@D6&7y>cczCqhvA~APNY9JO1SYywqP#vw)24eFqZTMA7hK zdgLp(9nGxNW$TQwK#oaUr(ui-(|DZWlb@{Diai15F>Bk?AUejiJLW&c^qhC2kn*N0 z0)i^c)cV&XQr=5kH3~_<%xAMxn6RG#^yb;fX#l(?@Ki_Qb9bcC1+G0;%|}Gi#aZx1 zKS00wp&>F~4gClVQe4UgVnerwj@@mvd8ZF2k%V0E3Hr9x#Qb4I@OEpb%+`Dpm*fE5 zycvQk^w)M;K4I6*0HuK6A>fE$U69^c4aM5^Fl(CA7v+FAG<5#W{%L$3eeXH2FINUH z^BV|2B}sD|Sm7PjN@;dPH_A9=e4kON9Z2v9NosW~$(t3cK_8*SeoZ)*$SX0Jx(ejRZ*nTI$6-~BfjKF1eZ7%`s<9{)ORjp{j zWPpDS^`2FT41Be6Q?9?9gGOQp)MVE=q&WJD;07t_tOG+Px6zIN5l5j+Ek}wE#RFl# zFI%c~RYwng_EEf~&jT_9@Rw{LIWC`rK1bu>!3L`;zkbr#=a|#KFW+GynG4HA4CzDw z>TY@$mH{u!%Q=hRs5-*dWsqM)l+Ii&`dg#|LF4%VgiU(#%n2;@+gpKjmSrlt&D*55 zN^X!(XFjuKA6?tIe?*%CKfZVH_h-Tms_>yYu5|UH1x<;G*TQ!}$$4XdMH8|>s+%-v zne{bImJJNk8QF20DRC+g2Hp5zoDl#CoJNpZm2OLDU6HOc4eBad!2|XZR28?_dp#ow zU8dffC`&#NH}yM^j(l z?y(4)E=(8I=o%_tJ#1M2Xe5p<6OE?u_bEmCLhZXf&-Dklt8Liron2ryEmP>mi2DBW zlR7{jUXOq6m3RfQp2WMhH=5`Bp?79-MAsw5mUEy>!_6y3y(zcT;6r&f{5zx@H2R3v zf2*tm`ErmHSoeHChY4bt0@x@nKk10|mJr>7o%T4kA-pP!kmN(I!=C&mNq`BvN4iAD zku^JaUr(?HTZQp2N)lpfxWplsA2kOn#=ONwm1Z|hOwT@)j=F_dmrWC*b8|VGH)?)* zzek>0MHncrMGphPre)!!<8l@*2MU2*n zrec%oXIb*IMywt(JJdwlZ-T)={bxF#=Zd!X=b6i-VW28UqeJm>9LglOCQIPm><4_xiY1MJnKN^nDPf0$b| zW2buSL$X(ocx27}$D4m;Oo^T8Nw($SreXJ@7uj-HAC5^6@!waQCkpfuR|cHp5r_1< zITPS&2H&yQKS1yv7(}o@XGZFzA$0*o>3EI+tOBaS$)+sMM%!cI z%&%d!)jRDgehl82aN&ORuIG;@!hL18r%*PSuZA!x8cd41l~++qQ(@2VRAQvfdhzvQ`4ZS_9z=y zDGz#>s4Rk&w}`b2dwvJxBk_U{t-KowszUsmFIR`+!OW2Vkm3kbtOY!wgtGE@ZSw6Q zYGVU|K;51t+yKMhSgy+hucCYm;0KrKLz*mVpNcroD>Hu}@Ju1Bj5ubI#iy40=u)Kr zZhS>V)di&dt;J@WGg3iHLTS_%5pGU#gZ(#NPgZxjT0e>P8VSpX-=JmR8;pc$nN_aU)*$Vca}w7OW!Icu3in6Cz)Xx7XEa3{(vqg`xaEpHrrcq&t##9B}VZ2Q0alm-9D&dg=x zMJ2|ymWDjYQ@@m~?rhkB%Of?|v$J+$Hl^e(xiKLxnYd z!a?1RSU0Qu76!>$zLr0mi);!#sK)4+ErEDYDBAL#H7nXv;6}fHhk`qrU1)ilZ6*Nk zM?4WzI=FF{yzCH^7KGbMGcMBY|GaH)eB_sY4a&hi>|jo0H7jy}nd;Bq$sIFc2x`7$ zykV_!bM*5l8y4hfeh}!X{tC-Okh9G^d@NzeDU|~njcnCbFKXd?6yETr=_1O&YtfMq z#vuWwLS~oL6BBM9vzi6n8;yc==)HU^5taEZEg)>N^>lhA*i*56@yl@|pOS8hmIkW1 zP!!KTBXUwo*9q-?cGZ)sJ!G04D6s(a56Qm{Pzf;Wwi&v;C8D#l@A>PM3eL1?8i`%@ zd3!W(M8hx%Zw{fRmj=XzA@^3_RRC1)yr70Rk-J)SokOStkT7n&jQtf;1HREY%wEaS z9Lf)8@j@X&QPZ;25lF*luV#ct(=y^8*@=Fk8AzjJf_|mswGx<(xDa87TwavF$<86RVx45H4#Vtv%MP4k?s?#b< z?{R26#Ix zW3Ud_Bk!*Vw!4X^-);%lgr496*sy6QKN*}3(Dkj-BShL>O;<3tRjL1YsJH`9)MT53 z&58mp#tDi4AswZc+clLzzva8Q>v9$D>MW?+tG+9^uC)lqP0exGB|%!29yL264_yxW zTAE11!^73#ok~dmr@^5D&FjWoM$tr&09A*E`qXRDqC;MQogAc=Qayy<(!#&EyVO^_ zqB{?zpLUN%?4;h2x2_M;f6<6M&de6 zAbL<4jFsUQNC$zxrbL~z_e`km`=SGuUJ7x~vBB9R#jTIsW}D6da#t_F;2>`)WLG3&Ak^dvpE? zfD`zo8W+ndYL+e?E?Vt-3FvYCi+I5xa;@oB{B&gBM?Vy{S&Hi8EGtw(b;L0Aq(95f zyp1$OwEVCz(foS{FPA5Zg8r|)=B~q5X5^O{a}TkOZ)iT>fQCSddmi!HUKGs-_OGA) zZ5O4tUoT`x-EIeB`U$gDO1XeKzVp>LBSTO%MH;ZVdb1%|1U0-0WZC8r_h_OQh~MAf zpygp&dvI+Lr9&mvwB^ScCQ6#LjTo)lf2f=-PpR~imeInD;0M=yUTQf-r`6~bSA9waI|Q3 zls~XFBZR$&K%Svb%h9+G!OROBgGcY(A*jq|4b+Ut9YXtI=X+uD1dzd6#voQMk5oC* zKeFDIO0)}$oGYQi7^LmXANAcwz*#ZMDk#t_sb0Iy;FH*o){O=l4?=l~$RS zCX0p@oy}hqh+^%B1BURnp>|YGI$_rIc*!(4EABmcxW#WL1KD%_=1V2SQP)x|V4ZE1 zX1Kyk?fYuIdBKKq2~++Bh6c$C1atsTOphbmD}Db`6!7&Du`JZPVGpg|)sj6HA07eB z%jUd717194H!e6`;3WqxPa`IXhB~EpHB7tHd~ubVDjft`lL;2ECCfbUe)6i2LvWTN z8A5sPAaY%|9LacBCpI zN^s*ZPUEgjayJXDOAOd8BwQ5T{*HwIY;ZCTrQ@AWrlNTwwo+L3-q&hnW_|N7+BiY5 zKmp*4qFp7Z8(bCw`FU($2y0y#{;=>YQgsbi7LIgq299?u3HO7^heWfYN4zpFPw?|3 z$k2Jh4bz~cTi7_ZEzAkBXKrCbB@hWPz|NA!1@uE%tEhRhz(jSo2VlLNY={oqYLV!6 zOh^mV@i*8YiYEoVd`wlI0%K1#>A!M?UVt4TlbuHclw%TSKp}xEkuG%)*mPOwhtev5 zlrgm>`zjiNdoDfec3X%b#KtpAH^Bx-I4QFvnlWBiJ@B3_8{o_X{F{g2{K0OM+t`F( zQrs~$U~zrH%M>|N>xK8stG-3HmeF>jhyi*q%X3MI;YgiKQ-Ab+N;`bF*vp!}2UKQp zyByKnEpAUaV`eI|ciTk*!mJ?p=%>fMy`#dGil7>)^u##D-Jl%yAQ6H}ka~rv@yE@9 zHQR$rFWQS0UJK*w=AE`vSR_!+fKg_=WAnJ~Z+vZ>6GM#O&uIKfPcr->U9kanLO?uRsC-F{~d4}+4 zu6{n|MKFGlyUgMq#g(nHpyt71t_BQbcYlzp zjF%_xa{NA$CzA;&VJa8L#FH6V1fFrDE5l4z|2TAP)&e*5+L!_+m>E6ry-1;=w=Oz{ zC7c2aN)3Sb_E9Fv`H?Y;NOJ|Hn!WNZGK$LL*G!pCw9!d^$t6c!NoG4T4Ogxf1#rja z#}MZnWOOLteuOE^|IOiJl0?G7cx{U>7w}9=5``A^G8+}~{7|ZK8M67j6F++c_OtYO zo!73eA(IkSE9*JSGOx*QBSiKeVa{&WEXJC9lZC8(`dN;QcagByD17768e9l7fRZ&{ zeq)ocNcMvpud!bO?@|;q0Lu3&Nw3VoGWL25b4*fn9v|!m6^}wE%!?D&6@`|iAQ1s;{*b6I)rOO?d3X^nLkg``jXiw#M4SKG zzUM6W2#n}ABMT4q5aJHmDVnrh7$0`X3GLOGnL!Na-U9;-bv;X>Xehiy_$Wko#z2n7 zij)|x3t0Ucehz7`&JoSPz>RohMTddW(s4$=9!>s7P))!>Yp&BieD=fS1WioTL^@9< zgFoA*1vd9`vQJtYNl{s%yk;YVkkQHtyZD8Ex@sd9=EnIpBZpP0T|s*+4R~B-PvrjZ2UJ{ zqZjQQL@A|4xw!&|i!;by=zzVpGa=lp_qDN6g%Ts>JS28zH6wAP-4#6$`F+8C5#^F9 zx-QzrbP1Vb$2DogcYSNdjZ#d#0`K}q8WzCLMm`k#GI6|jE;InHhq}U1KRpXvd1lPR zm=Qow0Zs{ke}4>D^tfjHg%I{03Z;U4Z-mYrO7etrj_^V3)C|$_z%ob>xTpwil_g=wN~OijygmMq2OI=uS%G4H}v^oRc+vi3WtQz_8)a#YRmHG$ld#NWZpKLQ`lzdS}q*RA2 zr87vxc5%BObX`kIT8tuHL`HMvSD`7T(1?z2UL0#b0apL{fd#w-!V$yz)XvV;nT9Kr z;=CbzJXoShW)46Pijij#!Jg$;c3#RT0bS5Bz?NSC|33i0b~LVcpPp?Pk%_bd0G13B z;z;APqg$l*k`GuBm4c2&*VP+=K|jGekw&uPH#t&t*7bt3Vl?oQW|Y2-txbwu80Bnq zUUD)%k?9gKeiJDj=eQMXNuY#Fw<)SvedX$uk*7#tK>nbZ9XG^Gry=H$!mj~axtM9< zxjDe)ysmH2e^GD)FMOHP+mUsY!nFF|zqg6&XY`*<$PAquvrNct`Qa<#o!}QyzyLpo z7Zg6Kx(oOt?a%GjTs1A$0b4#EDNop|Y)x#Myp#%TZh8gz(b)qP=uupH%)A`lw%R9} zUw#u;7LN zdHd-d>3PrcotP(ip+1ih|ff)6`*Bzb0G9hVXw{=G1=i zlof9BSoC?jOUG?qjj$XDmO$828ag?edmmdVHPD?+veSZB+RH96`U4kpXS0M){Xw0) zj)wwX;JQbLv~c<>OSr)-`caYa+FuPiC>2)6P%JJV!W=d4hdcQp6*%CnWB8B<($GA! zVou^He!e@rRWbRD*NT0gi~IG z$4K}a?a4fGEh)|x+ORr3scOlOqHl;4>ZJq99PI~HjwdEDE?c_t#F9qhG5!X@cN#!W zqy9J~D;sWipMT_?_k8IBaSi3eQA}MCZJK|BU_*oxom;wg`x_EsGW@4Pr^{MN+t7Ub zhZ1XutL>#&Lclq))Y+HE3^EA41vB58@vtA({5Mt5}Ox1OxU%WY0- zS@SE;Nf3zUU%@n&?nb~9O3GgwBS@Bu24OR*qT)k<#|n}U7@N|wYW zorN)_;%WrUdwZn~Q~9_Bq;Y(_Dfbo$rL`A9GM@h&pHkx_#6vmUaj3#tfY>E3u=f29 zA{unZxDEhA5p1AY7JO|mII?yO%;KIqZ4KJE5lughPnbEKhXgNT>uGLmI`wxPDCA%; zF^x?LsS*Xox<#|&u%)JhybQEC{wXP|EQuFVx6(->-S33 zP(!>3Q&+=COZYBU^yT<#R)(w?{*9nV<}`9++PKCNQQ{CjOPM|CW>*`7p|`nA9IA(zQw4D{M1mKz6G4l$%J;6<#;a&}0x z5F98htymhjz?z@U#UvA3mjB^$_<9OOCZ%3}pf@xy%@&&Fl z{a$?Ch64;tR6wtU*vvI22~0D(#vN|Qyf(Oci^LV_GOFZt0dHqNv4H>sg1O{u3_8?Y z)q9{AbK_814#Bioh51RT0so*dEF-)8?9UCb@lJU#0ktRerYUPo7j4mb7Nzm=R$C4* zBC|jE&o=xvIu1?=)YhE~Mx2b*vFHDGWY+nX7kb3Lwe7@MUloASPq~xf)HsB9G(XM0 zsrBShNkX1O%dD!n%9xyVO01eVX%3pqpDR{7cG_I*Nbu~@Pb`zQNJV#^P3NP`+^cUyq@P53FVHukA)zE4S4rM)*8sbcP!pamd;as$6 zB{up~C9$ETPSPkEfh?CmkI{>-h3RfB)b-P1mg^0$?2hvbW)j8s|9AGrgJaQptGVos z&^+LR9hHc#6xY@=0)h)5<`F)C7otX$MNerRtyUa^>i9WhW50l{F%GP#G>zq?-mKv- z9M9-*`+T>grGuUmzn@nz7+~e`QXMj=*&b-%r^_bj5+^WE32;$cu$wK17RndsQi6b4 zY2rq<6W2=Wkx`Vmhv|x{Ues#Zd0W$EaLEal@Zb-_c`-BhdSi-;RU(73=<&kv@^x;t z6+^BufDS6NY}QIyzlKxxDyVN_jks)a2$A-4@@jry+}$qr94=w*Tc>5;_579iyW*>- zS1c}pY7`bR>0h}8;Kq}&v@mM8!4+}Ehf4Qvhs=hl7b^%QOs6RGtzoDIbjp1u(KoY} zBb_c;KuuG>65V(zk5{V=0&MHw_*VT9G57iywQg@*L$R;stz7E zw4*u$-1u*$U<>ihCk3iAg;id4-h<3F1w7916hN692|M4l zg$HabAkeq{pQF)V(gDmyXQ1ZSs}D4@_h7n1>up|D33Bc;rTO)fuB5Tw33#H?p{=t>;V3qouPRe@52VPn&1ry!*t5ei#Gr_^~p(+K%O?m#5 zq)GLfyEvlh1!an_m+pwq zHq*MmM8*%9S_iQ2FW4Zoy;hI%1Dgh;Lbuzs&&;7y6;Am$x9c_ z$x<{5mZC9+(@o$0^QMqdz`)1TXdlJ3VuDQ$YjUpO3Kj?Y3Jw-8an_|#Y4ZhTw*W1@ zD`XL}*%3$sL>$(*=$gX%Ub0e}AQY{Msx)|VZ6Fr$Mc6^Ll72E};hV#_ZQiv7X2^_CJ#(HY^Sl%eA@PofX?2LY?7t4aRxIb*4AffLpHFD z;|k^%3jc8HQpA}sbM2y*2Aw7iW&ItzCi#$%GEw9H7C!1Rk~{q_j;H-@d}sFF4H3C% z9zzR!+64cg44UI+SwqO?w@h-dCo~9?ODH#W#K+|}TduzbFm`TE z`RysA4xcrN(C<#!rsn%2Zr^gstF!DZzP2KMyU-6Qa~!Ztb^IRE%LF|m)w(82o{my! zd`6Xmf3C*MmJ=59&;>jcn3dYf7Ut*?JWjzWArEt4U=8pJ^(^UHCe#-1%7S40wK0>J z-i2grg)LR~%g{8zD1*U%EMk2^f}83vRTWelsMbw|YUC3<=6F9&3f{(LX=Z@<^f7^B z4o3Jp2OWDxn7)Fvl zU@W3*i3(O2cX?06g>1Um>m;8Y>TTmJ9D@OzhCF7Gc-d4oYzr@)WG%v7V;mN(5e#>J z+94JTyr*}4f&UTKvJtdabK>%#iEKaq#!=NBxw=>wg)#QAk;Z0jOt5WcoeHW!D0$n0 zcC$nQ(z_vvux~i3mF~Zz1&JxG!Jr%<$Q)7a#8W4A>qD41r-3p2jb{#9A04F=s=iTu z`=(ydRaT%Fbg1WP3&4(}Lja6Noi+SSM^mC6PSI4n;+`|yb;1CiG;m!_fqa4?YTa-s?KC^w_HmK#+M63N81nyAC;hT+oO!#h#UQUn zN7^Y$*z-O6vXIX9%1s+%&h=uHxFpptlUg&cK-Z=s4FI*W3iX2zwKsl;fzs|T&9Blc zJ^(%L=p;D|crM@hfcU~P2?eP1E?fVc1SD?5R5@MgEyf-!He;kUjQT4rNk|;b2jd6L z_N;NH;l0TrcMH1lpf1v6xdO1^5DOpUqVcFlu{dVe+5Lsv(asVq1I;7w*cG!^b1WAq zC?SWAyEVrEvCb3ZufN#@BhR5i@5z!$^%0`!LOq2vqeXnM_`umGy0-z9X1tjY#7Fnu ze+&rJnB5m0p&7ley}AK;pNT|o<$}avxRiy?z~y(I=cL8UG66nx#VGAu*so!?xv&Hy zJE#0_%(sD=_+OW%3;;d@s=v)@&v*u6bYuQ~!CAhAa3AnTaLY*uAqr+RJSz8BSv_8i zq)$_4M^KFhJiPt_HXc$T4hj9f5Z*|OI*M(Vh#RzYDiMMGF^O3(Zh!LrG+*c%s>A;pvQe|?1kF)g5si)fPuCIF57nR+bI ze`LAp5WrIJ*6Li;^L>X5^=w=F|KUb|3wg*b%EIh{F#DwJORoVYqWUoELB8S{6mDWT zMcc@P?UYmSngZ65Qj%e*EL2md<)v9Y=o1V!0LnSbgOAJRf#L6?abJC79KW!1WN*%r)?p56~?}hwwQuwIpQi&Ob{QpY59_7 z;{r|0p9@oZQ>Qof`sQ_F>6laoZS@i=Q>;Zgt|aB6|HR$TYq)`HC3-b6htKz?^n{{x zvt2eHI3iCSpG$rS@l!6Je@(i)24WPdjBCJM+4Y5^a~WdBA82-s)bpgtAGH;_GU0m} z$fJa0PE|KrstA=g@9y;n+zI5?s*jygv4AmJM(VGMc$fdrcUs* zKxj6C+y`wn1p2D*wUA$&Mab*}Om2d7=kgT38X#n~Z`aI;G`IyD!g2gXt4sIyd{ve1#yvy@8aDV9 zYWpaTH~C!6jD# zP#gKOS4Ef9h)430v8y_uv&qqGq8c~%&OO(d&xA>pgUU#W8(9bzb$?V0`I5jBaV$%x zWY^u@bbFuD$gZ)h&=sR#)Zo@()c2*q5Up(Qs7AR~#@xSb)X?wj!%>g1QD)m{n+H;y zn<{!>I|vAl9kfB167SM|$A$R~-d{Six5{%*1EBI!y)A)qqGXBWZgtul zxNDnd%xn9Oz>n+1q68k-65>o*AL`G&u}Z#|n?f#F5K?50LfF~kn`bF8xx+Z(oj&XE zzEmezg#O?ss4uciwB>}gGIK|sm~Fd#0ToyCPyruuyHX&iSq(H}GSs#^tvK8*ZZt2X z>-0nkMRDBpv11ci<~T!$P!E5fN4GHKwLOKJGkLM<3o;D`(79cXQbLvZZqy(E$y?;= zx)Gt|xbLq;yjQ$~VDkg|6NYB}A529&_^#6d;3XyutcWCIAwVAto;C*!G*ODLP_)JR zc*Tvm^a^agMA706l2{IB{R3R|0q?kgj9n?qqG?-ID=o6irmvE&kMcWYI8fw9H|iYUF$RVv%SH9TU><9c?gu7)LX>Yr-&u;fq+sqlS* zeUX$(zabOFF^hIuLa|Wx+y!L5kt1v1k}TS=Wc=BvtLx-E9{Sbr8u3m zR4|6R6IQQ4=Swc_R;yMFHVO5hLxrQ-F@c{d*gco|-l+Y=&8|wP#mlMA4Toy2uKClK zYlVCu<^`7|r+~>jqXi9M4$c%>t;a7mDD8&uD0A6}c&pO!07P^kKRH*|c&dB%x_%QF zS&OT}>AoDH7KLU~7Bx;To5N%SxWWa5r0q1b)NDaY)Wc}3QY0>%s)@bB8EamVlmWlB zM$52D8m?_{99N(ZapN?QX{80p@kWvjZ_mCfa-LClS+oTKxopVa+(gPNbW z1&8pG=b+q2p(dquxK@A;X8k}!`68{4VN7;bYEX&|(?gW7rrXu9A6b0OSo zsPyfcW;uC{cnbKkUZNd5p>msy{kJ-Q4-7=BP$lwQGx=4iu7 z@PeA2V%%T6?Y8%Q%10t?21Kv2Q1ywsM)_X`J~V`*E#3YGaE1XA-2%duwm4<3Nl=y z2VJZ_iy$n-)%_%A$|* zAe-;DTrDvWc%mY%8f6%eC{}ky9X8_tciPh<`}_q?7%G2=`d>*Bs|*Lo3(*hz5f|Jk zry4IJ*W(02Kw;v2UQdn)&3vkyZKv|-WuKJ{+Xm{mUMPbN7!HY{b(Z4YQ!0BB;jr0% zHD|A+{oa{iGTnKYNHQbLXyCyge_>+TdXZ=mf7Tcw4~!)XSl(JT{hxLRJ)ii5Te76E zLK&l&llZnf>bd7Fwy^Z_P1ue(w$2PWtZ-RrGdIOX@kOnNh!qYhd;`cLIZ>?cJCaD! z;q`HG+IXE{jZ}L6SsWu^A-LO?S}%&%NXC>bSU+(e8sdVmr;-?&3N{fB5Rx+Z+VcaXJm76`3e`qPLI*eF;E3$h4@X&1+|d@=1bQ342P9BI;h>L~ZLIt*Pux9KBoW7Al2!K-SWW(b{AoZ2X zOJ`iStHfZE0EP9~)T@aJ)rTP4R4xHPZ$J~E{@>2SWQvSA5`QE6sMEbk22ghF&@wnj z%Q$LEE_Drqtpmc}e0rX)%H$qwgYbG{OQ-*LL`ekBs9psD;V{@gm*KS}GvNiUF9&W= z8MwDV;{)JBK8PHdF=%^@F`wtLu~7uD2|KSNemRWpDqIEgIGP?C;Pj&{3!HE-{;r5i zuXDL}RvjB35{451DRpHMlmbA(WXhZv)^;+a{2$If!WKj5BxzkGpH(mfO zqEBuULhA>{$LiwxZ1c#A&$jdJCKVFDZbh4n&L#5zFN$TgETA0G;ar3c=8<9LyTF3o zhOT`?D0>;)kK-u%L?ru3k#72!^FI8u0(LrQ5?;z9EzAW2oy{T|JTBAAx=hO8gyzCH zeynSK8D-4NriKG*d|&K4roiWgNTKTMHAXlfGq4TR6sSw!udYG}zqBh1y-i%pm~3C0 z2smW6Pwvr8AbaA?Z zX1Kv0I=6IUr#h#_%BW0|0{$CSqNj|ZnwsRC+mr>G-%Adk@Tus--0RnTwF<$^4J^^N z<*s9QVc{JrAp$yNc6?mAg9;AOYJbTU0g&6#luv~z>`rxwCLZt}*V&@hPKvMD_%xSMDxkzR$y4dHN zry~iwd=Q7N{j8O&pdru>r90RyCNac4nB3N%RNjJ=V}ULe%W6-9p>I5-hHU0v1;EEq zYBl~sVH7u@nEn%L+G_QIH7*p9s>e>lZ)y^w!O@fsBy;ymRLOa@YJq{7DivqpFqOF^ z61anJr0~N(rIU|z@9ehL5{_sjV3QQgQfc5l#lE_7K0dIx3qkltyco+0I(}M>Wc=A|uLcfG@gRM<2 z6;rNNn6*U7Sg5(@Xy9^PNzTZQH(bYmGz$B-b2|E{bx=nr&Df0j7$n4s>e!Rb@BJAU z5sn_e2j|SOD&|spD&)#mT`Td8QUwx)%f6_*F_Lt34QF8e=f>u)Sv%V=z>+a4XuT5w zrCmZDVIloMo-E}_0U;4P6y92v8rXy`5WYB*VL52?YJ*tFRLvw7A3nd=!dv1jRI z&sUY>@5gkV_4CSAr9;6~cdeN&_|DW*u=wc6A0$wq@+U@3CHK4zC_FW`3`Oj}Z2p8K z&z^7XL8Nx~>b&N`s-S-KZEeS*Tq64$_fP z@i7<`S2BN!eKGgz(g|u1I#{U4D2nGx5Yy}UBI2@?%vwtT@$>iHa%ViUs+vIiiV22i zJ}`vhbl}(16^KTM)i{j1D2r@C^90FV-n%yWj4XZF^7$_va7Q6E|B;Ed))E?w9_R9V zh{d>VWr@Zg#dp!F>_p&mvn6itNO<)9xcIziDUg+=<+)K{4-)$Wg!a}hM+@BBlL?`4 zRf7<$34}!9tzUy{N8G~n#xg`45LHN5!e22`TuE3-mS;*V!`APt@qh(aL>!=G0h~8& z#QW=xB1@*4n#;0hl2qgNx5eUZr4bi?Ez|9V1~kML(h%gm3NB@rd7o#u?YY-n(Cz;G z89sa)0+HTDCR^e5oD3mH99TV zAKY_^d$twq9rLheOe*vRnJLY~^2hiF-Ks9@B*`qm(q3^Pai*L=xMT0^-ZA$MgSt2gAub2lGoY7Og=3W(&cHAvF(?o@`Iy z;}y{Xq7-R{MY?{>{pIS(_PexmS!VE?B&=U|OGDn=r+W;9*^V}`4j_v^eaflVe)~YK13b=ZGUqrmH+_O#wr zM%8MlIl&YdspjDvYK{%-Vsg}nA2JAG63!W5eUBpe~b*}~l?GB`ydSpNBsHDZqYlH9^2p(*cKOBuTw zezA;fMFz5E;aMAXe(Ph=dSioL6X%#r=(SU?oj)vJ8dG=PSmr88(Ry)lXZte*;w5h|X9(j}jzI*mGZi_T#LnaHgYIQjMOH%l&0L`c7J0=a1sr_{b&^LNm zDY^o6?^n3@z7OCOf=<{~#!MF+MX1$;8&7CTgJQXJDgr&b6k!Jn6Qap`+wJCuOK(#8 z)DwV>d~FKwzfr5@JEQ6s;5_!q7r{y#E+`1AkDLt#N{A>elK8Syf zy847j{fweLx4&>eUm~m6ajka);cd`fxxyoo-TxMWGQGr=HMR;%z+yKgial`fwY$%P z)e-vniQP$n9q1(2)1$AVQq{I^4)0oT#wz^%-Hjs=>#A^KNqV|lQd@grnEIo2s@YVO z#}LwP_D2^Yl8YE3>b^D+7M8JQ@Pn zMS}4zHiLd{GvrcGXH^`zB`2ez7)wIrg%*8Y8$LoojdFq&B*T0Y4W~k>gk+Iv2$0mX z*UB?K-@O7P1Yoh9u)IEh$7JgQ!T2PX3r298j;Lz$EA#9rafSe{_+X2YUrAm=ltRu$ zy?vk6aA8{4syCIn$v;uQL*r7fWHVtnVDlg6q&f(bL4K_O`qtRYO1B=aAjH=V$vKE6 z%H*}6rlIYuyS)(|?jbTcFGj}^cE6nSV(fJY8q~9|o>frU`Cq;1P;;En3%kZST8f8H ze3p2pLoV8mmnjdE<3OK8eV!t06Cbg=n#J#@hW%qN5osjb+e;* zBy1k#8ppY{_>o@b^T~zu=hLJ*ODDLWH3T32E_Bq&3<|B!2r)!ZIo;5K8T|r52Mtml zHOEXvk{)Fc96@F-JkhjRua*1^#iiGwsHb8@I|T|WeO_#SHml^qp*PwcY&|>;t~v}) z4h1oH-G8m9q1B;-G>RzgaNfUBsT9gmr)&Rpk47Ce3ssKuqIFegmeaA*LY;i?ZIbmR zrFG5@3Vjvi?+Sx)8_J*oO9V8#bsm4bf~|rd52})VA=7SwMsw4pA=7Kqsc#( zf?!w5&25(Nb)P<6W|Ar|J0l~H_TM@(#oT-U$N9RT)UYk#(Em*Rm6O%na)i(Szhw`B zBn*ld)SlPTCiUe8s207v`}9>d$v_dDEZkCm%hI?T&&E%3rbIdM5tM1P+W$wH4x z!3auGeONzI6Xt0hR3bWP3foSx3d;aZsSit_9*R;bPi9jAD>;qApJ-1!ALsWZZ5lgJ zwb@eYJl!e*%OcclIb{BSJ6=~Qb^GM^F_w}5IIl<3i|3ziV5N;6PcU}mRcz6aqtK;k zAv>ooDHJ{O9G(~5OL$zQS7yUyKV4K4>w7Ds1FWSZL=t|Dj12IPr%Rbge#09rO6iXQ z?V|TT(8qk(0vkTWNlOtVq!DXpO>|yz++D11c&JpZA|L~3S1lvf^VQH`kh>{$iP0NB zR>qh(SF-a#81ss0ZWFyAT(6n^V68Xt~?5J zV>Zn}r;WK!VK@*8JkAPn)>aIF!U6wuD3eS?v%*QisX1lzN(!5b1-2zhL=gN!Ml)C< zT$0m;($Wxsac82$U?#p0JTPIx7nEpDDf1C_&E6cwvr<#r16RC&8zD`@P0ugVwzNu+96#X>g-u|K!STq)eM= zJCm?MO6MTsG8^pRUr4$VHP)FhhJJbrcINPJ*jYX=-JhKaW4cQLi{~4d+Cxaw7WWh3 zDS2@1QSL03eEm1}M5~Fm@BA_J<~NMcfH!xCldX)xCzj%-tolGWXfXs+nu!3|b*Rdo zN-ae)exB1nulygXz?9ko1eKbXw^x27a%m`@F7iD&}2SH+-WP`XWxa+Or&7{5A!jhV$-Z5s51F(VP3^RmwTE`gZe>7pE0AklJ#bBQ% zkqrWAWAJNXdHfx|3*FJ=6}(D69g|l~N|RE5BwQ;>Ay}Oe_=X+O(G>PXjBo_3!2rq% z839iaefGS^>3V-`W4f-0wR49bR8xHMw<QH53U~wpy5hFJ?^z!_gMq8*FKRd}hw+J-&4#TR@0m5z3JjdA|`3AYo!aQdHX7 z3YqUN_x*n%Xp@!#OE_z!RQBJC>m}zfUWvj455|&_LXF5j8HRhPxhGeK?!r6CZoM#B z%_=4qGXU!tIM!Nzo4;-ka{Qv{2wJvXJFz9v0`C;WOt*2pF_gliPc-l!>8MJM=_SMK z5&Sy;_t~+V`_qkMUC@|IFtq37My;Cy3xRL4W+-pQAA8{Lm@TeO^X0%HLso&ln>LW4#K_g0{o~Z2IfQNKf%>92WRU&d zO3|@6KJWvs!bW>$z4AqKgKu`xCq+Dj?c@AlEtTlxE-u93CQNn)d>10`Of;}Z>!FpS z@K;#o%-$h!Q~z))qYvG^)_+vz_ubKu4%E=y)YL%(&e))DpFn0enShIHd(Nd!@^KH8 zvBPh}TCSA32*-je_$XJ+>aI!pQ!>lbdTo3 zi5LU-y6@IhkL)DDzBip&B)sCAp;XbgG4I?~e?#49hFgTQ%Kjejif)J2MEtIm>G`0M zvM5u%vCiKNcF5;snvk5fn87_>#QUAl(gH`$9wZGQY=E@**zPuTMnXiEcrO4qVnmSXq<-%u{>>|Ae}iJ*-Cr1To^qm z;$w?w(?>$88i-2~%PBc&6DWk#;LZ7jUG~4|#pE+-(^}W!*1sVX3CebP*uU8xR?VeD zKs{Pw9n1B-dtSsF_)Q*i<{Q;3%d&)OUfF(Nxo*yzEtmoj2n4bH(@V~gCcCour9cC} zVGM-VMS4qsbQ9hkv(_Qv;aTr;rBvRobP|;V5ulngv2&jrHN^@WT=S+mS(xhpp4e0A zFID4Zr6HJ)vnueMaP)fvrp(ei_e~Ll&Ver$1u}@KKfI{hmH~f%yYGvOo%V8wB394i z^awHaKWy4=5W3-jzLKmiK)dts2u>zFuSK+x`c zw_FB6Pw)&O_YS_V;6E$amqT34-@hyt#)j0XtmOmeo*D=J_Mce_&?aGM+4VV>@$+F8 zx&@{TutU;LX7~icW_NWJ#au0Z8e91_@4rbP=5U|sE}2mGNJp&kKL6q z{g`~g%Fi%K7|nR86^0xdBsgd-Oh0ft(PwmCQnfh;`L_^ze8&DJ)=W4XB^K}JU8CP~ zr0h<_D~m2*zRsoVTRJx#aK#W+f%K)x{4Ug_P<5JIJ^_DNRLw@l%0*<1U0#%Iu<+OV zzpyWQ!GDm&^-8iAu?Mb4m{FTGh2g@x@U6e?3Q=K-)EofkSc(Ox1>;u7Tb$5Ub)6E> zuNU*Z2mjj>9okQpGSCKwy|TOqYn^NRcrZNeyu}+EmM~BylvHzeg()Y^!vh!G4@vIt z7(F-=_2v6czR_65Y4q*HtU}rxtU8g-ggz-1jGsfykdmSYA!et0oO1|_m5~fsOU1~_ zUMp`N3}u(%qN#&IG%&NoSG8=RaB&6Jq{i4!`u|rM58)4ZuwPnKge+cmXau(%y$uo(~{l~ zMd1Xga*`eWzDRh>= z%YCs43*Y>dU4nJ0J|MTgQ@e_N%)R>rzKh0q!yaz!4ELsk8Q3BO zvuI$NJYOh3vjhVSBs7)tm)bAN)ZGjTctEoD_#8;?I1nusz$B9TiOy?`8_P7+!RwgG zLT0d};Hm}mxcQ70ajJ0J^j(;l+l|6?fqOOi_9V1&#nk>i=jy-cPoi|Tk=%a6w&6IK@tGD4(3fB@OP94W zIM+~PKP4;X5Cr2`i@;LxV+sr_R4rIlCY>n;0%fv|n1CZM{p~eZ1uCRiHTjYo&T{>{ z+YmNb+^|QCY#<43fV=as!m=d{yg#4Jq_Nig>WjWfOVpKVyIZXW{KqiI8?LM0BIt#1XE3#o{lf|kMw(x?jzr3n{Cu?mkKMN@Q5Q=7^OLd@aj zzo2Wuy&qSE?n@(CN66f+m+4)fp~%s4$`>Ec+_SZN)QBUr-KzrEHSm%GdNXICW=_=X z9M5F|5|eNs<194?S-L0K?L7}}Or@6dT#n*WM~v|&XQ3Q0%%}faMkSxLPEB3=X58pq zq58zwz6PK8I|O}xb@K2y;*6Ul`v5XGU`k#*XPh!{1^rHS+DnI<#PVp|j&Zd)b}DW4 z2re(CM?CK+ z5zgEGk@=qLk?vJ~ZBt}Fmu(WB{S0n20aCHe>{5#1VpD@+m_qy@7caDI%qV?hDI;QC zE&Ew11QipVj^iL}yvEldEZ-8>3t#cOLL#4`q1m>fj=$eRgFjgHaEHSf;*B(rqPFvP z-*{R(FgzQg@lrbIxu&5WgpeEfle%5p1OBsPxhiSH^9_bx64pwxdHsg<0<%L(1)nam z|Kz~rcAe@Et}+`3EshmB(Jl7gK!|vrky&CkVjdz#39Q@sH~K4mYIE+*6Qtz%3=)OG z3!F_)1oHBV78bHYsgigtfKewmlM|nF&}Hm5fY!jUrEl0I!j*+?m0Zwf@U z4ZN4^SHLm6kE2rtoG@e!$3phzRR;_2`~5T+ofwxbovg$u64Df|a2*r{-t^qCuIsaU z>!ZMA&lEW;9M0u6I;m(tpGoo^tVz#6W~TAa#FM^ex#ooZS;F+aAX9qb}w0spuXCD&{+cym9;JRrZZWdyY&gXxX8%N4OshieK z)A)Dtxs0gEK6{2?9CE2krFGgoNvb%=8h<3XN$y{wtknqmr}2gHHZ0(2Apl*`i<&HZ zQj}J5C2^MtR5TJiQ){gMF>)N$kCV%?MN4JeamrVuGF0r(N|0~0yF5b}cmnispUQ?w z-s+99Z&O#%87V~g!C+@-lrcWEN6|4rX#de2HT_?55=m#@fKyN8s4i>WyW*(_d6xe7 z7j)Dr>5^r73_@o2H!;VbeUOI>RE?q!of6VppS^g6xzI)b=te&v1lCRE zrvf8amGwzD5{%L@v-0ga>zqR`;X1_2LvaN(cy$52iud^)@f|FhyO8f2P4nRY9?+c;3zPjorpJk1DKEP;FA5%(VfP^OvmV#^g9Dc71S1r!lE_@Mfp zz+R%s>?)~#o7Y9`L0!7*9M?Fn6&!h{#L8QZ#W5X1^k|<#csMb6yQYi+PI7>&c^Z9LL0y>y?uodT_1-Q(qvKBwSiVwacx0T?B?$Ltc}ChM{rl* zON3*8KQ^eoeL6d3iC}<5?q|4p?d?Hd5Pev`Mi&XVDeNx? z&g~@GIrQuR|7CyKidp|-RhtX6;Nj)TUh9SPc<`f5*#ksn;!s}C2)8-!z8@cx zIgmM1-42v&m#Zok--Vbn=0&rh`k{c_Wq?j3VNn$by&7>XT@CGKnpa+ z_R(ejm96E>P4pUc9=w>NBtP@J&>=olPAdzzu+Tg58{P6yNMA`q)R`u0w@~dP)vfHX z%bDH{+}A_?0y^%8ZJ}GmSy7&99d(o5e&^W|v>*{$_1$h4%rAPJLyrFbZTD;J0ex+9 zle6ElY!0hv#Ew#7ks_2p^44;;4%y!;hX32x+9Z<5{NA zOnt=bi` znf{WS)qomq7CO68L}+t2^Q^?#(Xgeo~tL5_2wk~9~@ z0JqBl)ov3~$2Dn&TajWADq-(p5brEFTMSm9ZB!O`5m449sJO)}c^AjYd@8;EKpb}4 zC32OHFd|?}xYBWpiWsN>>qMdAUzS3a|`)d|9W*9L+&WsGy@)W55@fpJ-Q9ECBjrIWQl^e(e9J z4!jMp7YODVP07b24`4dTOI{6~0?)Ma30w-dOm%P$+EaC25g)0K!c$juVgX=16;Y(grDkHY?^f;9B56WO>M8x} z@_~KZ=!3_HM&vr)M&t!fCMUoy)B>43CIRJ|q)Z;rH}&W>MB#Qj;5?>00$BkvFoRXg zQsYQHMS|p!gh^BFa{=5!1;iAP_A7c1iwpl$aq$gD5=c)5LDm|N5G{;BkT9ZIXPM)v zJU7-IY%A2D07=W@ zUt>pP@VtC%umQ>N5G7f}YH=~%V<5$QMtlv9nYxV@!}!tQ*kG_lZcwLa!P{U z;a3pflONf8|FoAF=-SC4#1=32+Bsr;Tj10-{3CZuqzeB9^uZ!yB$07-7I7iWc>Jwjem7=)G7(Ge_jpGb(E4P#FaK zw{nDAWvWq8sI3Cqe*#7-#!i44Yx!hQULV1niN+Phl^3^o?Xn(+$jbUtXQLE5B5g*i z5JkmI<^kFn;&#H{U<<<3gbsl0bw*7<01};;4cT~Nb-eqa5=$PnK8i#QEC3UO)7T7| znO`^?fOd5)5dg>)U1>Rwx6(;YOoZDuNw~LKvO^WW$u~J&wf~)p*(ZS9*`yUvu+nxoQnEGl~hz(dM zsqv!;HEjhR{!q4!RcnqVHB}(Ks53z-TY??5ACixzHk?gH!O9NM;HzD1{zE^acew*% z+&HhCFr!?l&Giymc}G>`+3E$|N|LSHExo9lwXa0!JU(@YkY>dw)O)EZVv(LyQcrD3 zOsrBVTxoY}caNl7@a_4fCIjhV8>IhxrCjbxc|fa7v8~3t&oPMd@oZ}Ab>F4Dt=M4W z>5&rU)NQsaoJ`K1J+ylWX>?wUqssE;^(wt6y))WG_j*NiW@%-2dqxht&h2M>C)Eje zn{v{rPh2ygYrBM$oi4G<9DFsb+D2@XAaSSq>>G?gE6rQraFhkQ6GVaE}5tGNE`rfog|PMTXG>>5;@47J!lwJWm35b@DK@QUNVZ78%~`gRy=%(>(7$!CIrj~E7O>iJQFADy$1r0_`18E0L1Gb0U$gDA^7;aT<>Vh4ju{_vb^@W4MIF_x*FE!4cM4srOhou@Pr5Q$MuJEsg}*VCoW?E!8%$p-OH;vG;KwlsPWr<{uh5)&o%EH%brJ!ooXFW zgt-5D#D9<%739?#WmyfT@`Tyt0Lo(u_PSa>p&S1xiuY^r+o`{Pb=R=%mG^=a|m~$N|MnvqGS*}r!jB{a)W=JE0CEo_aBi%JA+bz=!GG1 z`;Eq-Ze}`XS{?A*tr8V9k*SYJ6YTuyeYYAp zKPWjVsGQt+_>1Dzfy+Q2SK-vLCG*zs*zI!mEa#nKpd@0Fb2Z_|zTf^jn&`4<+S@O+ zE(%33Vau$O-PW&)EyEGjz!OQL7<8u5O}^KZ`n)_=gcpdC7o+=rYsQ@2XM8z(dwKV-5rsrWJY>a zODD)UP$mfse>mk8=U8 z;N(1vo8$jryCc6W{*v;9TsUeE!$y9zMs3ccKbYl}|4mslI45zxbw)XafeTj?UoBCG z6O0a9wx{w#COl4p+?sVBe~Z&tq!bM>BitI8z41B%E)6uSfDn}`eT9K@5 zTnHpVTs%u37TOPoTsw=M7#p)64e2CSC2tAKnjW|mNoKf;iIS~l!xwF0by+fWi+hSp zWX;_cO>1z}37@Rv)n)X)>t218HsWLI_i#|%pWg?6C(c;yE01gR7IK(&a{EqMdCgif zTwN%YktgrWFGdV!8z7r~L)P%;J>$Vp=c7UYaO;U3$xDIDvxenC1 zOLy?_jCHXk?z1g_1Vgq*M)~`Vt^j+ELoD^Dqm(qYHOhXPeinBkR&J$#r#;8XoLE4i7PniPBNROG<%cuOf!TI zst=8pTczz+7403cgQZ_>UhVveOK(@w+aZ3wW|LmyJ!~Tv_e5 z7KzQLhD9hU%WR-c%CUcoLW}&$u#&sJ@Gfwh`%`61*J*kk@6KhEmo1>vRiC$i^@jM^TKtVJ_KHgo+oaFqc5f=zVwwTZ8R+w;;5_BQ5j6==yja@ zt%RM`>%7c;U^M;no3JKz02t0AQsV2q8YfrRee^O4gqplh`7Tt3+5S3{N`5~^fhRTW z?cgStu@fB)X(+TrB?ZQH#{0FD%kt996JQvMF~1Kf6i{e2i)6aqLWxL54?YEAwWY5) zXXn@O4cNExJ~QYxK<_ar9?)e@$j=-Q3tI|dO-c-L?uh$;Bi==DW)b)f#Y{)tlc0)` zg2^|)PcglaITk)3ps=FK;d18Yq|1jq59p9o8wKw0(!>3O4}m`1jvtKkp3OX98eJeh zj;WBbf6SQmm6_OXC{_TsJP&jZx7+eEwNr%=-OZz-SB`&zjz!${GsNjS3tjg4)cQk= z5@Alq#ULpZoYlir!OD<}uB?qXoa<6$TW~i|YZcSeX4h*s(~T0zdIE3dooBnU_78&* zbZV}!GspTM;xZz0#P%PO?5zHfc)3SxSAk`6bhs#_Sq*}9g&XIY)@@!HP=m1(bR)=N z*K8;@%4KY|$O$4rMceB?#r4^jF-NK$%@R$tQ7%wW`>W*oiW@9UuoHRubjqcfQypLR zRS8~^9!yM5l}V7T6h^+aY^P9jIZ`2Ul+P>ri89MlDFm=XoUSCj)|VbVMcpFJmNNOf zljpJZ0+1nhI^KMdM^4!&3osrw#?)-!$+t;JeT;@Ah1YJ9Q$x(L#VdwM$gT>D97kVt zStMjkDa7IjCa~X9f;RzpP3s!PM{NxhkYIPmz13ib2Y3G)7*7*bTY-`OoBtj>oqGYZi zeCiR~UQ(v6UzYR<5{jr?@GXR$-N224vH9m|y=_s0YVR(<%hO-Acm`WEJNg&klwu>M zKc?#K5NRBlR>S*h`$s|S3A=!~1Ugh)_PJDD$Sc&9qb>2j2nCLssu%A8Z}PCE4yFBVtsO!S^$PbB20q{LKlW1q57 zlbJ8sFxQfmOYk^w zD~5Ab*>_B%g=riNXJL>LZQjyU`t!x!EKX{ zO80eT?H{%qD-!MPFsSdFv5*PgA{YI_|gjU5IFMMfs5go|N2aJ)=01l zeY|EmNbqcZ5G1UhV;iDvOhrhYBXJZVgn}oU2UY3V5Cybs5efVbm4=%{>PAkC%(Hb# zp_bY_lSvLf{sT3c6d;}Aq-&&qDnm@>Z+Ai-Vfpu>=G-y&wHOpP=Dbz^4lmAV`T@># zkPCJxdfVUT4U8VS8j=NxVR==x9&<*qj1b|~+AX~O4Ps?Qn_A?Ps!u?xiGZxEBfGex z71r(FerX)MdL6eHsjND5#~N3=F!H>xoXemD*mq!(t_3smbeV5VC&QiZ(`mihzd?Gz z>wqDun%j8*8L7tAXkws=77$!S zUldc5@Iq&>NA(8wlo@B@K;(_|F5zZise9@PxpO5I(LdSqdSczvP!e|`5Skyu>#LtE}bu&0~`{0oJKLQqUQfAO41{sH?Na^?`HwE_)fJPUM>B?h(PCh zL=%ygYI$J2PSg6!J`1X<=~nm%^oU81yp16U{Gn!^DqHr%)dPXP2dZlyAJ|mI@K!_R zAvK1YQ>BUP%q^xD6_Ezma??F20#9dcqRgIhhEU&nR~{76dLZqR2|S5p+&1p$HL$VG z)}VwLad(J}B8Cv?_C!7ulHO0bx)$aGC_D2*4$$#^pTv`_-icDVtfN{{#H%yw$v{(Y zzXFa8Ouby$C2O>hk9<$LF#rK1yJb*f=&J)L^0$DwUO3n%g;is#3-hd|^&jEFiSgD> zjV%;^e&VARf*AWO+kP)3CfW{?uuvVHpMP6qF#)CP$xEDt(ZT3sk|_tGH1`lAS5f)2 zG9QyQ*m9x}D<_h=;zd>8Z5+Kkoea}E&fTV7;5=KK?B$puA$;Xaw@D;pCSykB;aLGQ z8$RKRwAtnW!lMt2x$CGE)58ODV@jh%YaTeQXzZ%HQ>kt{olY&gUZU1EHFkUuQ(r_6 zq`GV1S&e!!6#}<=`kaxTqybfF@;yg;g7^bA1euVXc_y=h1T5WweeCp$OqfjYc4MZF z*eNY*jh#bE_C}>$irCUxETZ)*X$xcmn4gApH2TS|0*F5BO&6%#1nA_3(daefwuVjR zk3anfaYj7lvCYG)Wrp)l(!t2|ZSnYKE}-$7 zvXQ$KrVBoa5Rm6R1@1Z(@?med1J-oO78B?=c$t=isWI^#TTd#V)7D&KzT7i1hP^62 z^}gITh!fWGMUb$k=@rq%%%R^qbPvx*NYBk?75nxY%!63NMb1z}McKu$9e_Uj>Bckw z5H5CertA*bc|Lx3@cz{(L=${987JjKpevGn_bl|f)m0Hr288Pzu3g{|^mEtENl40AW=n@HLZ z(&dWu+q!kX;H7^sryEkR`Ow{>nKkhH3N2A$WFt`~Y{wg@FuKp$dMiZD^nP3Y*!Os- zdp?w}KJx<-LoUFNK$5p3FOm&1l-I(A)q{kYnbr0hm3x#IEcotD6i8@Olx2?AV6!}s zBffecbV$sag6I(sBuHreOJe%8A`#97bXNF51!vh(_rwSDsvbFY6aB;}SAgE`zk8OR z=F16$BWs7rSw+W|?1{f!W$0+Y5?VUTu&4*iw&K8l*EU2wH-r5%51KFWw4{XGYmEvC z^BTas8^RbysxJZLc_XO}+vJ zAdM+_+~05jC^PLC+PD3b*L!I4Q@k1g$YfEY=dF6Okm$#(!pX^8cSnbk&*2@)Ga^nQ z3LwD@?@TYbX4ENL(l{|ytAX$tADDNfsDmY7Ae#1@G2wV$>Fw=x!+lBB_a$S!c#3bK z*i*F<)qPvH%-$$@K9>JUaS_OIh*s=>h%R2f>Xf|~L_6?Fsfv-Xu`A9}(VZvEfTiBd}JUsS^r7Fd> zg;5oKbXOr537i}mI)|a3rqpfGalpy$DfkN0L9f#VtU~A5aJiO;*7ku}pAVVQ>;76; z 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 z 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509160002-Config.rsc b/MikroMaster/20260509/20260509160002-Config.rsc new file mode 100644 index 0000000..9f1fa51 --- /dev/null +++ b/MikroMaster/20260509/20260509160002-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 16:00:05 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +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" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509160002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509160002-Diff-Config.rsc new file mode 100644 index 0000000..010ec98 --- /dev/null +++ b/MikroMaster/history/20260509/20260509160002-Diff-Config.rsc @@ -0,0 +1,24 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4293c4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4295c4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297c4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0