From c5c0968210d5b7fd6bc2b78f6426a0fc898a28cf Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 15:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 15:20:18. --- .../20260511/20260511152002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511152002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511152002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260511/20260511152002-Binary.backup create mode 100644 MikroMaster/20260511/20260511152002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511152002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511152002-Binary.backup b/MikroMaster/20260511/20260511152002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b36c653d839b4cd74fd19e0ab772cb3d34e2c82a GIT binary patch literal 302647 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�FMHL@a(>Ux-&jV=X;0>P)v;m~;4ug5vWwrLP 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 z z!*o&s|8|-X)&6@99OA|#>I_K>$ELsxeXgmqyt{m_dYp8Zb=REvDXWudnn1)|A1{{w zEetLJ3l^0$g|?#zUyN>VdN6)j40E&MpC7;qUyb;I5BkMMjDOFr-;-sDrK8mJLh7z0 z41bt`9sm<>$B9Iuvz4UBb>Vzf10`1ZES1Ser#=`ZC09lIXhA*yFt%Gv?gTZeD%2l) ze!={{2vA2iuY1s4iFgXevQxKA*umSY3frXWERT>XtZ&NMgI5*;-Kt&c;s0=JgAjkqi@LO9jk0l*L0NE&gF(VS zRIW)D{WCm+wLV9<(NSXsnYZS_#f*P_GC}8!nHfbdBJ~_Cb zPFt0z!dPmjM&&j z88aHDt>ZPAO6e`VB_|Mk}A^ce@3bXpq+fRMj|5L0(n5WDMCqBWy3%>@JdB4`I z(w#cMo~-KW-)xKt2rvZTM7qA=+&vBLU8V}wanbnl3wRp0NfXd5yy;)l#tf(_u&(~P z$}FeC{uJQ%hqxZFUBr6)W^R9KzYeqag%AX(~bF zOkP)HeM*_z8P`Qi;Pbx(#`Rv|Os~fd9r$)tU#CYx@M|j>mxbFokn|VXrw0G!;Gl)3 z2w}=jOQcTzrD!U}5=fV&PDSVoO|^_lobEhkvDGG99AZvy4$REAVs>zB(36VCgPz!u zggQ6H>VtH_Ni!X`S$$LK_n}>BGi>^m1?LS(SmU z!SkP>+^xNIdoY zk{FpB(j@WR+)EmUru6eCvzPA=%3%!St;M7TMY2Jh`6BXp8O%_ zuJZb_rVcO5u!E(2)Z!GxBG^N@14HCMoTcIp{coE_8#hx04v@}ywn#L?&Pcm(OzEVt7XDKvGw=0<0{^+idU$t61xQJXI(dJMq8 zb#bkAKiE8_+xI|HI5sja&smb?Nthhcm)s>;!}5 z2{+#zQN6V6EvHKbTo_r}%kU7y^?2k56W_Ab`kCgbgWMlpA+LpM)XjH@j#7xS3B5R2 zqw6OZvz7{~A|XZ#u<={M2%IP%25X;g=}XdjW5 z)OquI&)2D$lX8y|K_){I)Fakl-Z7O&4U{0j>d5`a&BEy3sBAxqXqlcLO7q(mlio-T z8Yym6Ns?DKJ%E9!)Q zMTxihs&p{#bUwBtRfE>X_Ho~F&Ad6McMGMOHB*2oU_5l&c_FJ*9AZd;fC*P{`-2j7 z9)ocpG;}R87M-q?vgtDf_=tswq;3*(?4Ukmifh|hXt^OKc&j;$mOxXa)K*utEsFWh zLT2;vRl!@BZv(g~Vf^$!wOy5TyCdM{z1j?X1TY*q+2$VF^h6siYp=un=ii!c}g<9xo@<8NNe z5a{)b@K`i0xXpwD|C<0mL}T&Rc~H)I(xhB>jvQ%2K}|2ci+l7lC0~HA9e6g zD2G`D2VB;*D)+al>;aFTLSbP9waT{YLI7+FGF)4_?0~VzL^@3OBcrPlIs6B=-8W&H z0$sv_xiw^W7sAR`rmZZjxoiTW@nraltv}&Be13lNJt{ zBqFv00km-YOdRcktjvx2Q6s<;Tuqg%h@(Q?Q$p)aX(I(PTk!xW{Y))C|F9G_WAD@G zjak+Eca=Wy!T3p->D*=H`6@xSFgYZ0ODkUlKw?matrQE`1PG=5 zi096gAc9oDw1KAfm#mN~rfY46_s+)by5X+U*ui;w0Ya!vHy;Na%YT0PR0*eB^@q6cPa2k1*ph-Q;`npY7$~znB0r%_2H*7<{b|P!qEVG+9@G zBp4v}A~r>+gKY;_tm@{`GX|^JV5VQ>RV`5$KzzC+PYl-vm& zOX^C-_>?>hMGAoGJLVk3A8Vuo&OjnPNO@DLqPZVZ+rP+rosv0v^I7!@NyHovN}75G zCg6Ro!{#tiau7Mu8-PXq5JYVgd7oK_+)4NFHM}J^qt619vph`|C0bx7=+n9Zt2%P8 zi+fT<;A9awlGp3b*`Lt^=osC3L8-kYX2Sc86GGOH;=*YOg*&y}H~!HwP$j!-9v#Xh zwvAP#*IyRNI-zWJWBJ6#+;`d~u|gStpfQ`ZV5LQ@-Pc#L0-k^aF)ttyM&n*<-0nw$ zFUXdRl{%DY5uR+#uj9+9y(%E$VARz_1?ebKZ)H+|-O46omEk9DOAY`;@U6wiuB&c ztpqUSK@$ORGVFg3Q0}tk;UfO~E|X+p;b#YU70F+|yIUDIm2XJnzGM$QGd_o$ogazl z8`NXtf4#0madVG5=*@@OdVn;Mu2d=ldv@%R9-2%aqHezt&w6{(!dc|2uNZbP;+Kq zb4#tcm>$??^4Ex7WaumN`_OxWB79lH@1*0ocj5bPKcZ3~+xF#Q8tI^W%d@|Z-2Kv1 z4+r&YoK4Jq@#5^OpUX|Bs^h=l{P>S6qh>E7MQQX>q9I7_?i2*WU-_b|ZM~)Hbs_c& z6!><`mO{dT>B;DfR6By_apdj{ zR40eq?E5pB0YCSN%LAk(h!W;3xrSdwXC5V+-`u~F0jA*yEpte!^E?sBt0eqO47}$? zt->puTv=lFQS7^~}WPXb%1D_LRikb%P0hmZUfUDb+_Y?qcye9~!zT z$6SsC6D}FseZB4@kktMm`5I>afF%%{mgAu5k<5LG@b6da-S(qalx*TmKQ;C^w0K zohnG3EQ6q5ya>4+IQ;OCQMOa#JfO4Rrkyzi0#>@5BnNYR?O4kayw59k2mRan7=Q5m z2NP6y;mbY_&6d~hb-Z$Un8HY?=byKxfZDrbpq0!nkn^aL#AukF`!7)`@Vn|SvZ*Un zpA`LdP=+3YigPBlDsEOqmH%yhXunYsAOod{QLF{JFqD)SW?cRovb#i)Oh}@SG`r@f z)8)~sZdUVCD*64EW#hYJC{N(H-1&P!a`$ltXGXp)!q0sNPJF5R7E4kWtX<1+B0_Y< zfYb=ipRM%xNvo^T*uOV zrkv*W84y&W!m8KbCjvzI+2rmFOw}%CFN<(%uhOdWM3eykKLEgS#sV)ZyuNwBbW~2^ zC{wS1{$v^<4=StSj4TIjw`?Tsq2%sX2sRl{NZ;Qd=+5uSRmWLtOwYg7ug|huDH5-~ zE{3C4d`-bP$1|fTAV%J^`w%+zq52mI+~_o%0;ijf^vIF-3RfB5&Tju&JUZ8K-aD=Y zWeJoN7SZwhIZ6vk+cq@>tOJT}*qmdfm>#LPJU$g-DLHm`hC_1aR%~7p5o|w)?)Bbh zZ~}aS<%S6iM$dLNt)`KBQ@mW+r{V+koSry6mlt>;x`u_6=izgaqh zrZk|t-n*v_Ew4Gh!12AVz%|E=wLBo&!+sZ)PXWeDyIX#8Bvj=@!y1& z-J%V-zg<=JT@ehb9(K|UB*2#$fI!j{IBMp zyi4HgmsQ5z-pa_D#A?m1LwP)yuyr>#pO4WOc(e^hJJgB1y~JjRI;bRehT%eN{A||D zvR}TlGRg5PLc1s-(85;Sy}%T}Zx5!Ib)rAqW@1+J-jlFKQ&o`McvZ$P*WmPLS4Q82fcWy~P`0Gg} zr&M_G38$ecBR(LXKpxuG70*33K;}{$lF{-_g16`q1khamkKXb=S`Y#!*!PRe`YwF7 zisyXfl5L^3MnH}fNwRR)v-*WbviD425=Wr&91exQVh1JZ-!xFXw&jWZ|66>M>o?eo z1O>iJ*4RPtKlq%F-Ex`zKH_%}0V?dQ^)wj%ufBb7oh=l14#oUf^;ta_wxeh0o3`5f zx0v(Zm%4&neQ^GzUY%?i_s{eWPft{dvQ<$9)?DXlbp&T_EyOT?S}J%sJP+wzNaOxx zFbKN&`F}->sG{$e!&sVlFm<_#N$b^%Lid6%vERWJOCWXO1+qIT?zmT^YPM`YmTCi!S<*pF7jTFR-?$;R| z%pN?!6bgWr{@jPz>e4I~$Brtc4^T#WSAcci2>d>Qk~U6kiJhKyab^ya3)g(%4x6M& z|8uu;UDxVVvFDhnY8+J~d-QJBcAsH%U1spj^!D}9()K81rhqbcso9ur=-u+8g(v4= zCp58*t>_oKMR$*f6$2_VsIs3zd^wwu8Y1cwCkg)7iNX9Alj>FIzBB%oX|+#4dTZ+M;e4hELSd(=14e?8T6lK0RSxn1bRYDKsnP#;3$*;46` z+c%+jAwS(;DYrfUi(t2PfF5zSj0MWR)fYxHms()!e~u|F0FvA08$>WPqE9*LFY7=>j7oRBCRbvY3`bOF#j-hn|(T=U~`LR?C=JnZ!%y zRJf~5n+gwPy>u7ZUF&&$q_snlte0wH8940I;f z#Z-6a!KqD0MMjt_6;?hf9qu}eJHku|gmo>5<3@CZ9hN$9}( zxQgu=NR<cCm^#UwXlQXgpk`wx?kr>VVcPepi{F^4aPZzo0AS=-#XvIRA>mg2g^(BDmj zzs0%sFtWT2?7lRBC2vP`<9f;eSp^Fv0SBvz^fZg-!hF!xXa@6fPPS>c4o zW?`9)zBoSgRLM{b4=+NxF^ds7A+Kj@@? zX&(i1*LrS(L#}~5gh#51v8YZ}4oXE6XoEEI;(dR$bn z%GRO^n~yv8fpWxbB*+Gk4pODYd%v)#u6}UxfnKs8&{-EO{O1r{sz93t4NHqde0sNN z!snf4nSo3cL@-zJkRb*JCS)}`)C}rLwVA7s*i(UDzxN6qc^OtMfgN)f+x2Fys&Bdy zxJN9(4Z28<;N?9v(>^!@3~%)G?Hea#8N2On!+v4uAhuJ@m7Z zUwVShqAM38V%HJv$x)5`{~qb|L_ zD=tj;mJBOdI&ZMzr&Kiw)yk5aVn1(-Qm5A%Sw0i=ZMT`V%ozqI$JxSLOyCnR#~ZT} zANGDRw;(mnsBWW{%V!h)G@@?-1=HA?V6;$UxX-clHofXAhk;{rKycNUiW4^wT3@bF z`lP2UPs2_F+S=Yo!O;0sG0HbI>|)SWDbV!DGt zwOu(vFT!Zqu~v#Ty7J2(d0o%rAvckeS(GX$m>8k{#E!i6%)#p)k#S-Dhps-26^*Q^ zi$LQR@cEhY(kv=cWvR}Ge}Wn9A_F95l4@_*EsfT~u-20bs)rTl9n01vsx6hu-EHwUWp)C#9d_e&dxa4}~= zvoot;YPqul>X)CWGC=YKj_3-W#F`#yU_!J3jL-=aX1~(XVa8>`F+xPt%*W>==3tw{ z)0t6HWWE#^4OXrI$H{Sj^S4j8#nP+8G#5I49gZhUPmLG#iDQ{S#wPd zBLTQj6DV83A|_mVTS^2kAD{FEqd14cl;=^~YYZXAhvqmSW!;Yaes%B&4#rXZk^3=0 zsJ2aSOmmBmBoe9;p?CRXB}$UyNs#i_b}5Ywt+re3+D!E*WA~i%TsNsnxb9F8X9mwD z)i-XAFv6qyXs<+Tk=MH4@C#3_OW=W!J$UkpY{62FtfpsqcmI5FP1>h}utUtfzuWR1 zvhyblZ<)ohOPRI0Pa_%VrTy^$wCQujN<-agL+F-j^siqoKk!x&;lKhdy~|xg0d?}z zV#CS}6ZFhZ!<%QVQkmzV(?v;oL)ej6i#RdH=jOKaGC-QfqOC=+7EJ$0Erlb^`@ zU*q$l=&{=Y+oO>G9{gK!bBVb%mNX}ut9g`dG23OAGK+7N*Dt~kj2mOv4NmSrYjD&k z4-w@gzIfjGfKC;1OFeMx+vbkC8x-}!MWLoRi)=3F#s z3!N{y?p|)}eAua1fPMgZO5I@7uR-wE%sX?$K3n%~r?&tAvq}?Lox6$1U_}PRa7dAr zeDV;I?#?Y97e(c&wfeoftku)$)XOhxNnj`n4`Y5O0W=!Hb!{I-!`8%ZcPQ)zq&75) z91~|oKGb|4nWly2uf-yoq?`BpvZZTi*jZ|ZAE&~ob%tXOy+k@_IDbM<{yFX6a_VS< zMu!kyRfZlNg%?{<)MrquxZF@?UO2ICv0pjHtWgHZ&}qaOZYk=L@i7$*iB%--yy(sX z0)tlWBP76g)|9|9r5%|tsH!ye=Inre-ZXrda?iiy+rA75*vw&2)yXmLlWmLoIpR`C zRZ7DoFNItXXg|C?kj4QS!#ie)S?S2Ke;sX3ROIG zY4*F2YjbVB)LwJia!-JE~;8hOg zMVGMxYVh;*jog}5%59_w|9u?$(iLTXbfO6iL3jaqiSa?=EETK8rvHyLwEV4QlT+V+ ztdIEQy{DZruo)+xM-L=wnXTMI`;M)2VS|# z&zeW!{L=f(`Df0^b5F2y<07h6xBQwDszNA6JT(ag+ zoawMjDPklOs}j@_Ic?CsbmEUaIsB?|F9A6_4Z0La{;btEc0cNKCeG5F#`ve!neyEf z`Y{(A=7BT;882i1R}#O@o3UPC`p^jlCm?2-${)uN>eA?}=NaQpR7(o* za|PPXP5r#pCb)eipQ9wT4@@_+vGbXUwxaxwKLh^q;XE)b^h19&VI3HOn1 zu^ZDsHpy|dhQ>IcvYp3EQp7|GR0Mq^P#a;9Fj>}^fVhpWgjT;KCUf5J7t}`~Yz~PX z^ZYWRUD-U)CPm{TOfmLnA}B;bLA%JEs(~LA5T>N|z3jfH@DAmu{AAr%B9&833~_25 zM;^I+o@_F7ob&C(fwgwe?sj=R`}uppOA~75fYYKnok{v5>;}M#Z+<^D4qmg%fKUo6 zYt_N!u~>|@WIiA!5<*?hOkq1u+r24oc%$lXnbzjaGbm>z21r0>A-_=N#(BRw<$;g1Z!fVqhqEN7#YR^^B)?*H zOn6so=3%(vuwOGlGH76T)C8d)2m@mS78uc z;#JEp)$0(|)MvfykUMK#YZsgF3s3tCG=|b1C@yhU*eGfwozi@J98%=ZO5am&gL%Bp zd=&jFRoK4=B_s(xNHFA&Z?Y|J;hub&YR^d@Mm^20CVc8*e;FR!MV&0QSJ4f#Tx)A9 z_yf_jh079)@KACX1c<(Hu;45`8mmq403oaK;}7C`<9&LY!}P;JWwISn_Fa9M((Av6 zalcq>Hh$dd@2O#fc|peZA`gZOUUO-7uj`C4ZNk``S4UJ$^cvL>9B~y)Zk$re!LTcr z*v-FQ&q3;Ru6sVt#8>83xM?H*B;6SE5lSCis#^-V8D)}sE(n4giz45P*W6apCiA~b z6HX+&QI5>A)xUFB-G#nE!7svUWQK*H^K>)H$roEkokI76MHm-fEId_0?a4ZZT$+Y-7L^1R?b49bte!}0LT&g#Q6Lhx7CU#DcIQ@;}ynGz-;PBx1 zBix79rO7sIl_9K5;f()bgzHx*s1nQ{rxweX8(BzP)TKa>}z z3n`}>eehf_ElGyz5X4dFrwPUaQu{|eeh>~{as>7mr?3WVjn>;8I+Z7e=YFmb)b!!* z3btGP-T;6eU8xyZ?#CL*Xu;uczN!5G`YotBfE;MdGZ~3drO3C}{h{P57~ir$=2dvK zsA?TxcxUSyS(7VS0e8LSMT*r56^AhH1fM34O>G$(C|E}CP^D-O2=H<6br{}cd6>|W z7_=t0vui8=YL39;Kguf}o|y$ZUw+dxYC77kaLh8HUKDh9)8&d3d87=rut<#eE7hTU zb3zk&UGdNG{Ze2wOORB{%8EU@rUvv*$E?jN&*HXm?n6OL-DjJVApbVv823$8mfr5)MnnVhxq*2v&kV(g;vJUqcI_50MY8>t#?H z-$S}Em$2zP{{8GQ+eJc0wpYM4_mw7Z{P_*b67*YrHe88e427O;WF_;SZ}{h{#={2U z<5GUjGdmOBdL*iagDr>Q{_y@JshM!$S1?80@e#yJK4wRM5On2CBoSB4BGnZY~8dj1FVlu zjeZ%562wM`3E>Cq+FDRk%LBERnRHT%;pKimwDhJqXN%dS*S=z5c$RAq zTS!b?buxFz9tXw!PD?8!a z3ZAfDc{!qK(Leq@-DsE(9KE%<(m@rc z!V*2Pni0Vh_CMeBlrs^I;Ql@=t=-vQy~xGa%*dU$^JB z5&?@BDS}XMkR^ED&UhqVnJ>XGf}gk$6<)>6$f7u)0KD9=@6`u>(&w{%zGRyyC8Sy% zu#4$Luzm!;WYjLL6t2dC>>*t?xoJbbAMWA$QbhP?DRM#{9?xMJrXhB$bU>`W4;tHE zvyYHAdO(XHK3g^%u0YEbv?TPjckf4A2WLnH!bce#MH96Gc%bC4Kqy)#g_PcujDCvP5D)X$edO+3^A>JJ_sm+Y9Z#EsS zG&m|wBu%dg74p`u(lso*@a|!GGktYf#Ds(-83|Si_~Aa)EF_Giz8uj!U`ZhwI79nc zzm*%wM=nr>gVKRivr$Wycx5MFq`(&W4W|NI1Yn?h^sywNOaih(yt zy#Lrd0+cRC~sDr|ghOVkW5#pUHMF zq+yl;uJdj>h$VGRMMyn5W!xKu3b;7TnGq0-_5#;Jvy}RmIahggIB06Ad$>`?4oV+` z5`J^cqU-4B-wqjHyR>Ze+=Dgi-|mcMuK*~maeY7q;HZ{*RzRjq&p!;9S3ZQg{`UGN zeU2}Qdeq~_pBR2Mj88>uVF?hWrR|`TJ|J!IgD*W$!5niJ1dT0liwyX2?d1CfNyg92WmVB|t{kmGVPW7?@W- zNnrE&{yf-iL>bEqYkJ0@!q#Meh3v~XInHu@g(eS2A^$u$>G-b+ag6_(_dd=#h`fC+ zLB&trWTT~0S<7$=gIV<#+r<&BsE*MykG#@h(S=BNujz1XQsmf57V66pLVG$yMqr6k za)j0uHrPMKU1 zKKVLQ;yhU%wh&0Z`L*2b-fZh>&yZ8-xFw~@;siHfYDK-yCzkzIr)XwFY!gB0>BFCo z06ZecvHhUpoSRn;?*K?h6ktW+GJOjE5X)|=-#3^+w{Db>(hMhpqCi?Q#Q!ajO0WaO zEU&&vs~SNM@}kWofHCj@1_*G_EU|wSQk$%V;nkhXA>r3rnm9<~oN3-JnE}c#!z>QZ0UY%g~^j&iQ}E_1-?^j zCcz2lP8a#0`lOch1_4WF%*e?(l|>8nP}AL0r5=M@s~FibOgD0o=4HtLggUy=LZYso zi8PifEb?Wd`Pm$L#`PQoV2TtBiRK_)qZ~jMVBqP86@XIz{QPThvJ4ILd^~iTNeK=l zxs;|`2XNpayS3j3_zC*CU+{8d@pxIsey$j+tMf0tO6huCiq$$0WOs}p>l>q3qT$rb ztV-grjsqC4I9$JUSK>;K0cESo)9~qmTN)12qjD9gw%3t_nS~*23gNeKV0GTz)qrTc4CSB$;6-gEU_yz!6R}S8z4+N$GOkfGUg)Noiw^urvd(sE3>ZmP* zLHODOEr9$3BhU~mu&=>jN=ef=$sbF(vReavZ}OwC$)%XYxt z%Fn@dpI{#oS2lEhwg9;9ZAniYl#U4-SofN@PPGF*{smF&5QK0`N*1bWTHVllfvXkz?q=!>fzkE9Ub$Eo(hsxaDK zN|-y&-l2j>Tre`j+f;)_Tmuwls!YxSYK{bac@*}8g7F;oeB!tC28f-*4hoaS=7Ew4~vb%VR=25{)dem2w_TM%WXI)tp zn@A-IE!13HR`|l(D~nGDD+M@XEe+p0m>hD0f1uH+y0>RrE6Qi+GWzz2R1I|{XCTaUU5Xv!KzeJK*}}fQBE!Y z=T>{0kedWJ`)_8UvLm?1ho^Hd&s3~(KGsbfxB)9WYG!5k`=Etht-1i{BhDgp$ie39 z&><_0qQLyY>D4nhRW?D0K)A)fWK#56W{H0ZJVMUwEfmvN;LU*nq;^KlbZ_@8M-|qP z^zvsL8mRzsFC+jFKCa)D3s1lSpZ4`HmxPP9{DWqoa||b?`kz2~wDTN&VOKqxj&-5p zoElpL2bR+~-jj*Om;v>*fuLs}ecOAy3H*_~DOp8U+Jf|oFeGZWPd)g=Zw?A)1rX`n zEPggk!FSZ)pn!8Nm=#BpNpME!t?*Tt1$0CwnwtxQ(bI=?^;$Fd(AR0ww-hT;yHgIg zTb16L-Zk-{=K^Y(pd{xXrC&4~b)=qZX15_6#{87YjHCk#mzHshAy1obvkOrsl0X4bvbhB9}L%lN>m^k8ByU^-%l!^r1@_v8SI0Msdh(WQI zAM9(ew%HQ%M`niP`E}g2uGkIg-A2kRl*S?1;78&ario4zxUs_tuLXK~u$I?1ISx=D zGnG#uheQiUg*8zb9gQUwa?l~eAhz*6(di|bNT$@%8rYfTW4qPEo0Sj&@cKVNe@6cBAS)xp~%h7h2;} zN@bm5HI|`MswGV;J0>jb^iNWfOtdA(ZA~ehC&fD>Rx*4GPVxZq*3*`WBh?q7&cYir z$54z^4I49jBWsd6F0hg1y3c@6i!U@8RMGk93M>}z z5ve~-!SWAWW~}b{+em}N72~_&Pv&|eF-l463yPy4CxiFhB+v%D8YYgb`#QHh8jt4Y zplS|$V{bRnv>t7yg`Px2|KbT=9OZGD4gOc@xRdnvOM8Xm`JYpj#U}Qh!Ld0mVeqJkimXF$N-i9pQ?^44UgNiUtE?2r?}4NS4gld zB3k$JlYkc$IN7knaF>p|&6LsaqUcyJIjKG3;@A^9q@N4#m-iUn5~ptw3a$VX8en_(*+im41P&64ShE$Wox+A-aN$Gys|OcO4-v(Yes;)`mBUTgRMK85jVYkKs7- z8^p6P+|l(Nk}{#Oz`R5_*ru7r2(OA_12#2>1 zR8kttWQ*f85#+yBL5!Tkdyae2Mg82*TK0I_DoUnI?rP(DEC|_JK?IJazcqlC$(P<$ zKwPA2;Qg5xjLsW?=|8Q-k|JAqguc|Z@H$ka1v}_n>{RnpcOYUwrY`YdaRc!d$8u_) z{~>Qx+2l3JIOL1jtsF9UzXa3geVnHq(L-g)nrCnV<7i_=JBy~JC3%}FyZ}F`#S5~K z6%gB|db`0JX-M7ei)~FtcNXp08T1)>5RqdQ%c~e>WKbv$$m2(v9r@wG_QA_F$MELFi}&ypk`Z@U5h^jmCYYen1#N>L zy-yyJO6^KjtJ6h*F5YtwSNErC3Es@)6Z;MaUgNr@@@P^aZKlNK7uVby`2S9zNK1Pp z%6jwDUKYW<^vGMD6oiU=8@#C=|fzr;}l1{>f^*dedG`+8fJYo8_&FoQ#B=EYQISe=x+)P_P3S?9e zZwoo71J(~+9Lf67aqMuxC?+h5tUJqC;PkqBs|0XxQGaZP)dI>UqO7$qi^3NgJaV$? zMPLTH0-JMkNzoFGPG@OsRUVg1npFuvym}Uahz~t2uVaEw{o*R?kSZ>Fa0f-a9h`Gd zLVH?*FX$U9qiIW3Joq#new-snhz5f2IXtvRDpWJKJRog251bHJrOdnZ0UvkSnsJY&-ebffKFe!}%mKC3nQV?%BEf~sE8FR21BbDj)sLjrx3yf#j=;pNtO z^t8;h7;)a35v!1itl=Y~NQW)upcv`$%0;jmPR+bMF~9_t;{ZaiL`?@(dY^Me;n;rB zSNZJz@JCrCpjjEHhV&3X|NI|eWLF5dNA~S08O{yVhq=~uJp&>L?w@W~yaS9Cf2d8~ z$4Clvg2B%DQYwtH7JMX1-|Z;BUG??1q|!@v!ac#sRLoLBm=%z=9k0Vw{5)dLaJfmaDuR2mdlMF;ZWyv$>dpl4vlJL)dfN+qH z0Xl{Z4_YHrbC`)q0xq_4f^Uaq^bNCZD90Z69T#B&C6rmG!tbn_i1O)f>EXOL`%7AFdOrB|h#P@zu`_Uhp$A$5Eg51Q9Et2&z z(kfDlqjM%*BB4OjqIbxtXSPe=0NH{J4@3w9k(PgT7mh6A$f|>wRHFc4A`HVH5==PP zV6U(Qt*@A2i{p`ao)KtQed&0&9-Netwl%B09dqNHOK-t8@6@|85Gt=~=jR&Sa%2(b zJvua-GiE2jiXwjZ(9rG0^WOEUg=fb9>LlzL58vC2N#YG5*Qg+Zl3qiTNmA~c#_<}< zvp9&t>;%RCnYsTS#Oc^cBRLHQE^v`Rig>J3B1zvD5S~$o5D;t|573b0@`1ut*mCBjW~xe^lGclL`>lW|xQth$)g)*IyVDgXwfa-LrJMAvN>wqVe83rUE- zGhn_30^4Pf3~24#B&M1Ok-<$m*?nOA`El-2mM z3hClsgG@Q&W+DM$qX_sdltOd1pC;prjBJVZxQ-2Un}URr#(NW zi)if1#qU>JWs0z6GT=Rfbo`%)M*+&qsI0NaUgXGA?LL+!o z=aVF%jQ{Dg+05zKnV#A-cH7gOSWp!d4L-~#sIVXxZj#pRye;8AiWkiPh(?= z6`MUjLo=&Qy$x559oAt#$3FYHyt)ryNtJ8vd=0T`Tu2+C$?O@Au|>9)fchL?6z-;I z(k9%-`5Our^$2tVhXyk7hcb$g?yB2}zNBg>Tr7|K95GgpFm_BnsI{nY8&KI646_BM zfLg2I9?3tH*<3I+c>#So#4;63W}8+i5uLfHX7 z1g+^|zdLAt!jmK(H8o+}$>Lz3f6id|Rkn_A7wh)_Nv+DHu4HDfx~B+Iu~D=6DZ#KE zY5pQw&@XFl5wtfrwzqQvdlNBk7DiVgsx@{EWgstfzQLc=b2)irs0^a}%AehwnjV;YH~6%N1WlA>ma?wu^Sz!n$dd)+uQl z7>8|5WW*5ftlNza$m}B+ARg2{l^&nMTL-Wx0p8I=t@b=Xe!UVhKc^lm_{I*_5~9%L z4U+D6p40s#1TI~rJ@P?bGz5Ij{i^Q4YFeqH?Zn4H_yHrprsmr=*b!ZCF*#|#7q1rp zC!?o68#X{bC8m>}lhfVil~4o%3M7w4*f_r5V8!^W^sFVw4wl(OQ1u9kpM*qcE^XtJ z74`wpIfQDxCncKsl#ApnV|oPcvEQCZns}_2+;Z?x00A5|`DNT-Gv3<=q{UZ&+C+-7 zER4`2CT5;e3-{Yt$pz`aSpUX$3_J{d!yiM6T=t;+i|i64YCMAZ>RN@m3wp(DV>DE| zQ;|VA$_DalUz_p#)FL8otxhra`3g-~sz_baY0V@c+Q)Guhb@o9Mg)s^mWrs9pz?er zK%y%#+iw@<3|HDBStV!sHB65&4K{%6G|BDyt;B7I7Tv)}nrds29R#*n-05nt9-$l= zJ3^o1ymOL4!(U)vSK@X3!1KZbATkW6x=o(EYkzx~Fo>E13#m`9CDeD`FHABY&UMk7 z7vUV!OSjA^snqsfnm1+S|1HLwBy44O;1|7!iJ&_2G+RXDAu!VbGXm$J7MVm6e|W`r z5C3FFL3+eJy(GY)7bcYyRN_MUt2SZ<+3LU9|3tzGWbJEpaHlHhA3xy$I%QSQ-^MiPc-yCc(X zI{UYmMvX-edL29YQ0NLHkp`~T*rKO-wqQ<|zL~bkyu4-~qFRtVK@N_=mRoV%eyS|b z_T7AK#SVsQ-c$Cq*8tN#)r1?97uk0@)Tc>KY`t z-+_nK9JK@dkcf-dGl)<*Ww=Q7Zux>_AU6ajl}BJfp83IDQ0<%BpuyV%nRBgR@Xl%* zO`E4+kFi4VOt^^s!5xSEll2XL<&{0CQAz**c$xgPftKQWtlh(moRK{!B2|w&nXInn zZXeWn2#7j@_IYmK&SdY!iVh{&YIn*kv(S)hC_OW5Jh<~A%{v4AzsMhTn`S}}Y@dm= ze;+iu=)S1erf66Xj)FKzu#irt$Re{BGR|+bQn2CKR~PR>X2uSOyZMxtKk0j+dNMd` zB=7}*FkLq{Cwmh7R^s1j%WF&mLiM00ff;0~z{!Hn79V_^@jsbG|Bf{iY6<8K>V4S0 zg3Da{|Ms~;+Q9lp7U>>nZJq=-T+{4iT8S&(8C4`>BK-gyK|5aFBekF@M_rVht)0WvKW0u^<; z2O=URI6D6XWgBS$QIxPa8Vi#nJJ)!a2fIFO7vlNfSRN{10G#xNOaBw0SB6x-X79iQ zhR019C3QfRO#VDWI4r{8so-96(`>t_H9>^*Hr&SI(YIY(_>dD3P2mOPNhEp+3qe!$ zZPG6?eIce?G}19h_*XcYp$ZioCCI`tF{>bFMU=A{oiAFC~dc6bP}twCr4xLRDDa^Y|!@yrqI@+&^4Lr?xF-cH-%tEMy<$^ zI--2Y8bS_%X8Wyhmg~|r+I-4OG$aKOyUmd|IdIGS0AgmW zm7p7lyH$E(WL~BtpTQ!+P(KogH_?_zB$0v$>cEXDN^slM7D!b-xR6rkGgI%PvsF+{ zigN%F1Tc?h-Dy=9CFX}TUC{JLJO10*sT6<^M@sThUr^UrJY|s`rzS3{LJ0q6Y`UCn zOqB)>MPXqAJOl)78D8v16NprT9$6TG0}GLsw7` zfBAM@1^@Y7S9fmxq|RLBeAytg*_vU~L@td@gyenR$E)rU#}r6TMl=`q|G~)+sgXqj|FIBNI9?M3goF zCDF9vlU()oq623m47dGVJzRh0PV70b=OYfjU=9aisB0?#^6JDg)p46b=i%>a%fbcW zbOWUn-AY>z!qdx!^=p)zZaqD(J+gVB9FrBqagwAB&hDOwzOF)R(!bW#8|LR*UL^of z_CJbY?kDfJ+r$iZ3dRXCNFlKj%YEWe2X(VY5I~Q82@OBEX~B^k_$WgS(lmC$u1#pR zY$`8)!Y!V0f6QmJNJBEo2czp*BH%W9{or8SAmm#zu-#t~FnFLalt@ck^JvNKfH^T< zk1n7~YxI9lQr`H`B4F+wc#7ZWP5huSu~JL906gzYAPXXGOm&G1t6%omb6V9*vmuU5 zRu=F%77ut6aRBWK9$ISC@2X1_+Bg9>hojiLbsl4SlKq5jt@d0gJFreB%~>;XuPr1S z`#_Win~1TRlwqzZ4;K~MYIHu)3s}Z%!i65oe5&Af${T#i!LrUO5thlphYRHYkiDPP zaeyBgoxZ#yj~z5)w|xYxeLk5_gIVjBWuT|<-2sG2ZbpJ_LZ9qA34yZUK_&fnmt#9E{1`>jl_$~46E0x1WgRJG^jwVap5aUV?i?3rY!{KK& zbFj0`3;4Xa6b6o-1=9zzgJ|q$TVWvuA^?TybS*x6!or^2(E&fv2sYU(*XTFt5nK52 zFZBkN;p_yMA5&V|wt1uN`5xCqZK|p9H>Tp>^~L3G0k(dQgo%fPAp}e4#x`c`gL~(^ z>ZeAOn@}Pdr0|!x780I&4}*(y{!r1Jus_=w*a?v4Uqp?bQfrWT*yQL*9gM5}deHLK zGMK%7w~ZXg>&si)Hi;scYr>pTH0f}H8u;Jv{(2TV3GD@tldhnBSK1pmZipIE!br%P zWUa-#+nv}D7yBGG7ZN}Vuu;ASG7+;Lkb?MVM*(trXc}xxAxXAY;OmXNH1u24nxTy% z06Wq3|G6D!g#sT_8F<-Z=3Gi9-Gb7yKKVzIRCwpD=@97IuKGAh!By2K01x#jDr(gd z@Iz~fHIatw#rsgwbd9n*hjZx`3vHt!NfNt}E^4Yy&61-vUVmv*#N{X`TtrvUjiEHH2yvGk z-8jxq*pQ}B_&>Xf|Dc6!R}Jm)n35P(8ImvtKlLJyFMTP9Q`pqK>-qCZXM6Cbo{muV zQC;5prpO7OT+gT(#%Gk7mFu6L6qj1pV8;2Cm_JYbQ{`f{$NjwkfziZ@GRB1_U*K9~ zJ?(Z{|7mb-EVqlQIqNo&c*17 zyPFg(QGn4aR6!6*x9yczSxMw=@!A#W)Nac?8Hk?vOZ6-?Wlf4uVWun{K zy`pEZJit-^Kr1_n_!>Q0|Ju`o6c3_dSU>n|tgMrCjq4?J2B}D9!50QpdgP-L*1O-c z(LGnS@DnQ+K;0q=Q{^V1j6j8&M1HS_%UIWkR#H!~^;uY@BbJuGO|0CcA>CCUbVoxx z4k#QYeU^e|L?qDTd}@2Umc0x#1X>MM?S#Mkb1<72%S$xk9T_*YTQu4=H&_$^$N6nD zMhJ(+&vRv{9{Z+5AF0sQN8#Pu)a4$^T%ZG}Xz4dqjA}q(<9Y?!eITkEZ6eG!FG%6b z8hT!$6O7nDZ0S6va!5*O}7_XT(O4z>V?wh@v`ShZOa%4Wd6=D@PxL6~mN)v8CbIQ_gOgV{^5|9iomKpRa~U%7=g(Ce%42CU7NE zjaAaFY$&4CBSd075@E3pmm-rZ%l z7IAxi_wx?KnUx3-_2d(Na#a%D293?z~SeUc<9GoKJ7VLzFxA-KI(jfo}Fc#}2 zRy$@`i{s@3z=NLfzDi@1=j#-KS-$g4{oC0k2^6uZ+afvLdY>31PL}lQvo}Si$g@js zK8>G&XvAnRq|rhNN1?Xj764^%5#70}<+*fo=*cUEI_~;`mV&1j;FhZ&8X2;6S&Tjz zMZE$Q<#XxFOlh0AY`W=5&Zc+um(yHs;E0QgcumHUHRTi*N(`wbb{ya(qSzS*tBAv9 zD>3z-b2eOYQal_!_(>SGRt5{>#SQ$h;!tkmcl2GU7jI07d%abhEys-ad_MJZROfud zIE#B(cVD`e5NU598nQNf3F3O)&YlyQD&Vk8=-e%EaO<88IG%f}YehsJS;$;p4-9rM|fV6I&v>_f9ZYXo7nF^PXHV0EsoB zL~PPg>bL+bD_?jx4vMjktLSt<)w~k{mc2p8YJf%B{NJ|StS~436QfUk`t3v6+(s5% z9_Nr>!bK7T0_(8eZ&X=9e%t}?9bgj&TVy<<{5 z*_A)F)7k}?pi}XuY{diB;Ra85W+3rh$PNzi6NCikDPu;7$_7ba{)I)V05poi7CarI zajoj9R|&gqb8XuL)zfMN**4L~lP=(+QBWDMNGvfbY)A{-rRg051!j3UY6im4w=}Hp zf_mD%^JY}Eu)4A`E#K@Nc@Aw1k+8$g$<-^Vec1wB$_K=h zbU^c%b-%jNBqRh4Mu`Kf%W-!Mx%BX6CtU`2iH7$F*ot;Y8*y0eEmF4 zEkvqjCu~{rCXuPeA}NYXI&U!IzjNO=#69tdBiP zLTRy7go)~g)NR|)k9D35On*&w<4+kf3Y*DhWF8q^HhQ_5H@dK zY~~!4S-elYnZ%yt+v-#OmX1=*l}(HOh^Gi8#I3L32*PBLkwU%CbC&6 zSMuZw-@E!Ig{!y!QiX2-oOE6`B$DWg&Kj1a4)QeNUldu)3^xUF)-XiRl{^j7T9}tR zN0@81m|8_Po~@GqJw2zLCt*gDftXu+pE~lc^$n?OA<90dmebA@J6bs4PCS2V_XKLl zU?^cL1(x))#@E39vNDj3dX8K+T-PH09mrEy-00 zN>bkAd8KAy&BfehtHix1^~spv*Z_!K1MawMn3wMZ*%bXksH$|RJ_Rfy)ocL1v>Lfp zMi%TUxlpy5>FYA94IAHiuY!rcb+PtqLma(&iJA3V^$+;3qtVoZoBgwo%i0<{XCO2p zG{(iKlPy>DRSEHWTOIxRUFyXAA=1dq3Ot}6GWBplOUFFS6cfnU9JeZ`q1kYB1WCLU z+q51USfnCzVdf~X9qyyN>HSCA-f4Sr<9Ny8$5O93z_qT41DK=dnRgpT1BYy4L=x{d8IEXAa1`2LAV&a|1# z!+ytW4?4=|@Rf#egbdG3$X@b`wa$YV8b=yNW2|7n>nkYy3Z-tmV3Xk53jgoFe4z&( zjX8tjyMRM#F`7%l_~U^OlK@>TD{3vXllq>g%`WLo^pBRajbZ1=rHG8k z2Tp1m9Px-U#7n5-bno$4;8a)Zkl*8XnzT|=;T5!EP$lE*2n!o0KPSt%dq7|=2?chT zUfbR#iw|o_f%I>du-d)`1pjjW5M(bd_$CKDd2eakQYTG{BiHN5*oasjQ@bcb^~t}E_IEMr!my(;F)K34p9oExrrs$j=p&+%-bfO_K5u|(g@+Dq_ zZPSRX%3^wtH+qtr{dePtpalWh64=^nJ@slrJ^M+ap<{){S<2klDyZ#)6n0IBB#x<0 z=fdWoW=3gA#SaF~fjhu(3I1X*z9sg{XIF>m6M{not5?;>$Z(@F^^l<2FTWD@HbI2k z+QoW__~cn)05-@UksiC@DMN4-;2maRDx~SXg1&Gv4!RoHVr`kXqke&~SQa15hF$?- zY*rz>iOD4pGX!?YO&-#8PQzhYKq!Zy7I@EjjBrBV@=+_9EkSS_JFgQw9u-XXw1hC~ zHFF;7f$5fAs*tTNa@^2cbA%!8c7SJ+4-@bS@UZC>m{1mSoDN$nd7<>Nw(YZBq!Tn<$p&!n@}SjT#tCJJ zCUe~^03K@f797F~DcbRvy*aXrt90b>A=wPbO2~4hPg<}>l=dWx7c6D%4nd$o-Hfvk zj9G~?Fr|4>?*%B<>LAo0j(DYipz!>QFY3Ae8`6tlf`weE>_WhA#5iOnfT8I7wA~TD zkERvsF|7O?@Mp%S=81lIlo~mh@YXYL)Un7kCcP@ilFTDiCwCCZj#*iW(C+3-pKT@g zY}J8ks-hx!W1A0HWue{e2h{fY{F%C#?o7t6XsdJ91R~*63+_X(QKfr5X~-bgh67o} zA;Wc@OQa|sl3iV66C*}_Txg)L&*8BMo%WSoWXa$+CC+FHuqkjM+5GRvgI*UEvGN$1 zRKae5batO;gB%kE&Gp?PXp$Q_R%A0UA{+8#nZ^F88dr*H^pOByQtn5$ zny59VkG4S5xm8^7Tps>d_`OAwF{mSn5t1aB~gfn~3Gs7_lA7nbr<`Qr()=UiNgxd^8 z6Xf#A!}o-pZ>e5Rx3z<}0oV5XZMqJP-zv$LY%Wsjm7SG8{g}?&u4jAt_LBwmU;G=Q zF{~zr43P^k6NN61!$qPK-bwkNylZj*ZV^T~HggQPA{VjHzc$PghLGWx)JlS~tXsjC z+8`v@So@Y&z(~ip-TrnY{1mp@{blA+(QYMea8@xhuNtQL*k$y zFK!n>i$lh}MZFWp!@&!f5TPzniiQ9%>Z7XUT1QQeC99A;-be`K*zV1lF9^FN?pO|O z{hmLI9hlg@0wLe{Qom>fJY4xIcrV(%5l-a$E9sB{%pzBeqNJ_H_Ey^~mKrwKqG*Dx zTu5)(b1r|JZZ7T1FQetJ?nXb_8c4Mv;y>Q%%GkyYG5PmW4LOwl}*h zpg$#&3ew5sm4XLevB(wg_-;CqPE?QJ>HKP1n(Ub^Diag|EW1xXTY%4rkpL}>ALt~R zhWHw*QJQ;i@W>{1JfN{8`?;$?>llSgP>@^KyT%j2WWAc|x1^c=zsLv>Jt|cD;9!Hs zxVO&=fTXpVPy5tFmfqss#g$4yXd7H>#Gg~%W8cmvgEkSp(uzev{8jXLf}Mx`wm?i^ zdG!cuGQHGUe*#NmtV%MAfZB=Zd%u;JgqeB=-jCi-C!8X`1_-2KpWE@>U949{beFZ=2czu&+As9Tu2%WEk`hiyu%eM%#to)y?rXe|Ly3X=mlFZ zEzFnKtjZc7SMpe zWRwz#bje;%3A9}i5!@f6b?jM=txJV^+4RGekwwzzU=`I4(2fW27HE{CW8HY3NSIb2 z7;VP$!ylRXgA4<${fOP?S85dUcCV3D?612A(mCT0^91Bt7nEBBZ8TpPTsivSM9n1y>CY>fv-@Ny_z zcFmn*(6Vuqs0J3}ebSh>JX=p!mHv9&0+yH^7zZdM`bVp6pAeMY0@e~U>9E$uH2(gR zZI9JhVQ^5+n}hbG7W?Dyw^=D1+qs;`nD|jQ@PMBV2^-UvtxK4KX~D3OEZ-(lXR=6{ zj|0~ir@u-)i^B_LUQ8=#%np!PS5BDt@1dBLRJ|OW&KIjpJ;|bd0*EnHYTYAQ4Bx*1 zYTA>9*N0FwZKJ{7UA?bG-d-46^#zJ!39pvSGt!}S7Ah3&COn|IR$ev*a!clcEtUda zb@(~}#jL9}%Id8%rmuLwON{AYDP)MHfk)FSX~Uh?*WhSN?3AI{rMtBK1n;P;{SBcA+M>Jc zZq%i8a5WVXRCV~pBl9OHvnpavIQ_~5bINpp@ zt}4OJp#F0WhVJu=6nQHw%UrOm2l7DwbqG^8mHCWB_69UHAcBl=$2 z-Cw=44cWERg;7scI^E>b(CC@v5M-0ExNJEObaFmf!i8{L$|tUiwh$19nXj#b9M(M> zoS-H1!CfLohb*bFL*BLnWb*KHCo+!Sgmgb?dWy-5?$$@>*1=`e_UmIz&1Z0<5mINw`%W=F!cBTtKFd(0{c92Y-WfJ2LR~PuHJnMT`LT2bsR)E|=q(yasO6Ph298m#A zlX7oZ@7o9(fNP99Ci5>X0ImQ3KCcJE8SFDlWL6m*rVDx5?@UrC7%G`ThCnShO^|{Y zDvN2s>jkS5xo9)iL{#SF{d%&)5qyu}3+QLGzK2i|*0do%0sc6`q2%zGxG~B0x?iEz zlXx4fvZsMsr-8TUBzF?+$yZ6LNkER#YX;2M6IoYr5xS*M@H+wY5oay*n38tFGyHSR z))hzwsa0|6-!2q;nm5e&OR#z0zHI75@ckDAPG8X1Bt6*x;$!;ED>uU1ncGRaGXn6G z7oPes17(74Wh;wbFS2LVLEXI#pI%bq|M!xO?LB+*#bredpWnJ0dDwpx=3FHf_Wrd) z%g(CHm4+noKU26RVPz)0Q^uqGWKS&VnGv8@f>c6&>~`!#$Gens%F~5Z$Qc|MwH1ap zfRLU>kOFHUS4n`01pTV^0G^D3nID>N-O@!jFxw~6Bz98{_6g_xdo)XIq$R@_O$==0 zZ-MZv!zfpT1GqKiohq69l-S)&DlP9ryH5BcG_!*2c}KA1RiX3VB`Kb zAxKtxDWsov`zMNDiHY^tN0{_uefWgrO+@uVj|y3s8;x=8;TZK}DEmh}s{cf5bO8qY z^htU5?RidHX1~r+1^qd=wsamNDU|c>jaHbj_3@ z*HiF@Gbed0BIrt2m18%$Dz_!L5wMQh=Rc z@=7>dzk&Fcc#q5trppE>jS2fV7&6KEFA1-;pY!^p<4PI1&r5YVxbKWpqPIzc7l|aw31DgV?=X4LFs1tAn$a6 zY!o*NLduP0R`X3yF(%N)hJS$~sZX22(_LmQy5gy7cPe80w5oQE{ z!~vUW{aWL9)N<-JZzsYve>^zIZ`{5m`NmMb$!!sp4?>%@*YXKB<+S*rN(i^LOL8{b zkIw{ny3`mH&cN#!m7`>;Mc$V%&WFb+l8d3Q{)41%Bo21cSoy2PQi&tj)Zfq$4|5p+ zJx>$X^SsD=C2a!#%x%Q;1UwObJJfOP>bkQlZOzKoGRyI zmbcdw%VbHhSKTy`gEAzBXY~O;-4+LUP5M6uP}(c9PoT}=P$q#dN*=#8=9x7y_5*z( zgF4y-LfMycmJ#}3vfAf^?Hxdi!4Q@%uYIR7o?ISFBJa-2h;0)BOD?JYSWJ2D7uM>L z>fVU&hPGTS%|OupGxL}^;t>cJZ0ZoQz>k2%CxS&UUOMtAGFhjhDdg;P+l1ejnAG-0 zOF1s==}X4w4g$vd=ApPqIUUo&COAi)6Vzx2aOhX+)_n<@2T zL2p$e-FvSfhPw?D3Rfbn$NX~{ygw1HR<{gD8{j4QM&HiAgX%>#Ove18VAh<{6cUo# z$Tm_=Q~simmlt^-gNczjL#`@ki1{jpZfz)~>8T_TxFE{hXW+eB^AfGZP+YKuzAR=$ zxn|k)H_tekV%2fv-~{zrdfngA_z)0+=g)}b#V%ws3r+8auh1rNsy}Hlx3mdzfJis5 z>ja?O6*HD8EcdbFQ%A7s6{{8EYFLM6Z4)Uc63Mr==)k;cI{aBclF&EiCk_{Zt^N{H+sL7yL~RoV0YzG7G5C2pe@<-`yP+Jz{}*K9Qeh9&}JG^h6Cu!5Y0! zbXo)`VP`C*^dEl&nx}NY7+bKZ z`vuE#nO=QEJ63o$>omMj_|YqvD`u11G*p5g z$2Hn3@M$%(XX4l~b-U;-jq#TpZooZY@*dn=gzLT0OyVAa-!=8*ygomjFZtHh#we?uqv|+hQz;xMUy7HTIxjKvdX^4X(q)&3?9u$W z+LSwG!(jo@&!7Fsgl7FG`WV;-cp=5`-iwH~3!F*AY3lvhG5nY_dtN?|lR)+lLo$5B zSYI(Q4wG(NcRk0>Un=sKqu(NpgUQc~E7p~N0~)dTl8a*D4n){Rc;P9sMnE#}C85aT zI@KEzfwLmhsPnk*gCf&>(>u$+h*4sB=dq$aEMS_15o!=O`}~RicK%EiL0-U^%&}H( zBG!#r(VZxn_2V=!JsR6bY|i%-woaNVv@{_rT@50QnzI{B35(`rg>1Eb#kgpe8^^cY z>)u$?;DG9C7MI--$F^Mn58YDl%wPTEARc$0EXFtexCoMRGsLDULlHMu3iS zy2$y%+U;?W>rj>UeqY{_vEdY`K8p6(JbqFMcXmKdC((?eIA)KxGa!2OQugqX*m_Pz zl9q68&Y^_cA?-^8ako3(@o{#IO3rsrEhzEiX}+vG}@rr=>^7T%pPSpUjv!%(DJx9G7(u zqOQ<3B~LUO2MO>yKm;?6N-O)#;lf(1Y)#*E8|7H&M(ldb81f54fch;=o|r zdPJ!Bz=UU4m^9VIq)WYiirTmxP8+nhqWSV~r+FmWgDW7Y$=r=Sjfm_xXfyaO zdl`Y(BKblrN}0IpA`)_QLjT|oF@Tsg9DIpQT&AUMC{^ky(C4JszDW**f3L8fnjT53 z>FZXi?HToY1Wl&7xe%Nw;6Q_;I1N``)`3l?{Z++D`yJ!>2V%X5;z8rH;ZD zSg9Pt01ld=w@m-g!B9D7B{BU%7|M4wJp_y|`?OM~vvGs_Jny*VQhVYUDavsRB;9C& zu*FUpn3V08)6J$3;UYj?cs=`Iq@Ro1mT-_7{7cQ-eYW_)#Y=mwMSu)B3 z6%Qykj+UE~+YSv%*kFG;cO#ruWx`fsc~~0bm~r$r#Q)++BFTQ*$=g?}B(otRcTM_I z`C8sK*hC1k+J^SIgjD;ZOEAknr-s@;U=o5I$=|}Tm1!%dh;O{n>NK>QI~wneVM+2B z9TeYTbdRAHZYHhmRb3%4L)4WiK17;F#c~4 zJT?nsr;PMcU+I79aiX}Z%&YsaLc~Kpcaht%+-!hmfR<$wQ;eAw$Kyg zWCTNOG0g*U9o@zWmR|J>k59mL7KbFPGs`weySF{^AM{D4`+90WFcw35g@{FAp}&Xm&KXGP>cK)U?VkrUHNH8=WOh)~{^U zwv+pjZ;h#}Fp$uAJIuoYke>@J=5JwxY&pdm8R9*x*A|_^Dkr@mxP#*8r+bQm#qA-( z^6$y5|8c65TB41YkXV;7kip1s(F1Nv!Fr6XHn?OSpvrhVjltPfjdz>v7pV5Th9f6j z0Z^y9i81ObLYBx+wr2>-TmRQ8Sh0C{4Q$8RBG|K2v1dCwPOOpvz6Hw{sl`TmzEF-? z1EdY|$g7C%WMb8emS1*Is16b!UTxg{JV>0HS`R2yxer}NXnF9y1hFjSn_lv=44O!V z_);9)^>JPo>(AeW5-s%^^L(!l6hyH8j;Adly%h#^Z1jemgL{zPlalxF z*Ll+1Rx^t?S#}3_!*N0KRJNAr8Ed=rM!Q`Ac@IAfh`xB5*Bv8jH_z;uR4W?NX(X@4 zD@Dah!k3modQUkDqXZQ* zUzDzHGempo6>wno7*L78c(eah{Yga1BTQf-`6t9=1`s=}K@d{@0~h0~*2RG&Wr68@ zc&c7bJQ@-8gR8q}qW`{}GXfh+-XH*u?w@JG4J%AOA(83jc|{GH75Q8HBws7rilr56 z5ObpwE&v}m17&~HW=`2W6*5FZtNn<4yt00)B9WH-3&z`Vt7fRwpK2!{pj4!3*t$Rt zBV94QnK4|BnV!fKv2y@Yht^Y>+f}#>kGCv+%VMNyXP=IieDj*pvXwbr>0mTC{A3#` z_mSd6PQd6UH)n(;pU!mge?=UP)$Z#0TMz0dd&ECP{9MJFA$o$k_E>fOb)z*F+N0 z-~uOv?V_(dYe_hGVn2Cpn#knuI=o#zEaQ93vRjL__OX2MfRc7vL2r|#!0+Mjw@D#k z>)qk8#n&PS(&T9rf@RSS-R$q`#cEbLY7^u7eOCMCW`m)X!6oRBfXPG!AVh1eYPmj& z8F-fTN`6GpN3S@2a+rQLT!0#+Dl|olyO!D7FpqLlQK+{i*%+JpdZWy(>nA(~&R<-` z?K#1n`GN?9y6ARI&Uk8Z1=+#W&G~7{Z%o}s?e*64O^IHf`j2Q33787R&Dp$yEK!p! zBv08Qm4jv-=a_u~9Bma}y)bps{5p}fO(ZnovcaP5)wCiqca71(JWCPYUi`odE`7-R z<9m5aoLodzz+=QRL{|q=`3*!tY#BNQaLVG4%>6Bh-wW4l88)qz_bZ9!tX)7pUli2b zS2pUBt3uolf*bOV0iNm#@-S2tnE|i8ys-fcD{lnw13<$>HdA?|Jw-x!c&%+nlh!SL zs3THR7DK!``LOAp{yNmOEpHvOT6a?*z$?XQAjL@`b8@5av-aZlb@xRV9fK|5j>z&5 zwcDN_?u<9VT_D2#?rpX?&KC2LCTR8Vh?r0Fch3_X-S+pgwG~g0ANV(|f@_$y+UJ~w z|1#ZIobD5+gh9cNP}KUIZOvE?HsH%GSY{a`6K7h#6xboq5( zZybBF`-xiTh@!F&Y!am*t;PB#p1o~L))j?hcNwexV1EH|j-Z<{>~IpCyOg`f%v^HJ zwmjeP4>p`Cj6)@LhIp@u)XxBIlL+%k8*wP%sVHtr;>TLI=6@kffAWBJZLYdJ+~pST zWoqgMla1-zXXE%&9}a}dOA~|Q=1yTP)J5z#z6s=72{H}5;ntVy?y=FS!>!#{I&;qV zzONLjDs|J>$reJE$`Z$x!|Q_pVf?b9h%du9cZoR+AHEEilCmS(F`Wv{&H%(>->^&M z3M7^enUfVK(5r7-=5D`6I0X&=76wBn7_=dM3Jz49OYw}b@&bJcYm?SyxNdaGN5b9= z(Px-~9C2?1oC;!zb7s|C+R{-~?S8S;V0bZZEV==iL!0J~PRT7lD4q?$Xaxv>q~2rj z@BbTXq4;N|_pg-?pE{_(O2LSDEtzk(z}+TT^6;iUpz+o00ci=MOk(_n33tsVYa0cR z29vDF$@sdvEfOXpyrt)T$3}Sq3OR#{#@`BfUSA_erW>yF(cUTSY?rdH5wH7OK<5U` zrTk+EHP*_j|M5-0vTxX`Vdh5~fwlD-`M6}UJT6kh9PS|bki?-MP=VqFM^S~6(98rg zd-)G#PfZf|<54U4O$&~jKiiBJu@xjGVYt!`*X^W zVfu3jMe4-YGhSiU?ClYY<7&b6*NoEykm_X_fGOo-M9p2|gIy!R@K?xC5}7TK<=(BW zIQ7U#mh*Ghf#0v+vYmHH-d&=Wsd0kNxI~{`CxJ)Bc=JlEXX5Q%KS0*Ams~?krfcHd zA;tI-xFlz)3{WFidcinuRGnvQiVNV>OeEa5qgJCG6sH^^#ifK6b4FViXEv==hPcy5 zJ5sfm#HXu1RJbx!SkDZHOIzI!=*Zp!njxyhxGx>MV(sWEX0;Mils3@I>zDv zG(!xvl?M0Evh`=Fkel-r0?Kp(dZm<+4dMTpWAIXIFAZ1^XQm^u+<$&DN|>iF+viU1q->H-re$ScqvH&lOZ2dVd0PMb4y@SJKs59waeA2yiPVDFC-}h({B{S z0YLUC8H-k{x4VU#HA3JH-UqwNr6zGf`)lYOa}Z&;Dol06>296mYsR@D#bA@mAKO%m zv7Derh?Kli^pKMK$pE)61^RhXYjricJ6$HMmCIF?F{Cxd)G#YVGw6xOgNe(VgFvO@ zI^NpZ$?pN!!A$9VceZW4j5R%B#Ysv6(lSnPT)gRaq#e7!qpfZ7HBev$fHA=oM4aBs z9~%}fRHlB(1N+ZUxoPC#Uim=iKew?nQ&ECIR?Yx{*7zS>)zNk}6}?XhXdz?=0*~Of zZl><94uo{>WaN(rlh7N4yg{8I99geLFhzs35#n|bOP7B!Eg$t7*MyUP5vn*&B~top zlnv%C;W8%WF2#D%&2TWo>7vTb(Qm_jto&-?<{LuYTQVbW@)%?A?65Z5v+w; zG@>vr2u>p$>-}1AXp~_(dYvsDX_wnbPp>@fC@feU5ZBFp3`=gQ5L!-qkm>>)X$2lc z)Q4>_BEG`G$1||KxLCqk7+t5v$OIpHdMLITXc| zUm67nkDQ?WzDnB;>t=ISP35vP2oz`;QJ*UW>`cM*2WFHZ!V4)tPLvgO7 zjuiE2)V*<;8yWwn9l9bd*LkY4s{r<=L{<(ifL;O2_7bz9rKmNcq2HoXeye|7So%XR zUbB&!?go~L6GiR1DP4H5jZb)Dg7?vO;gX@Hajq#f5BXBQ7cS#i$Ux6O^t7ld;7U~( zW>ctri6K3_+0&}=yvPRk5=Yw86MTK+x^mW*Q$JNOsSza>q0cQ}Hlt3tLe41i4a+se zkGD3>68olkjz}dLYur#NcL*)aYvycfO;(^){0Zr;N;Gmwo(gcZA&|lPT!-GSQ;}m2^tMZsbAas5>H#GoZAX zO^!)!cy?jli|~J;VE!7*tD2d7Hv)ofzCti^3?plEa3bFScWN7TwnJ-3PdHe%(gPxq zdX-Oz!*y49+;GH7ZQ+Fc=A+qgILVjB4Bg|G%^V=E!zFDIK)udBDb zpx~}4=_B&dXi+#ECUZHJIk+-Vh3BQz{2Av9N@Qkngryli+zwe#UNYu+Ni^<^9Jh1^ z6nW(=ahz_L(3Qe-YKlw_5ZyJg`<;|t?ICXh@2ewMJjvL3wI3i=!0I}{JE1s+EV0AP zSoJQs;5n!FA_F&u!BY0G|AL{8dukNcd&xZ z%vH~2+gqc;mZ9z`8*1pyUMDGMc*b<1konbAal2j`uL9S|*!UPVmzV5;r}>$T)UwWn zy*AJ0A-K)&IYQGTWkdl~-r;$NU4SG6XaB(2!^pR8(g+ap)n9k~Qb`%5W|}3xVkAC) zv`TizY%ih9_+Xut98D2KS$N82GMi9Yx=OP?Ify|H0b?>dCo>vnX)Z&br3viGolR=N zC)B{)JYK@s*wVE|(EWEel?Cveq^D_rywU08*WD&<;x19V(GI8-XcGWAD?r6&KZwf( z$!cu>uJntaJQeG<6_~`Zh!=IOdv0bec=Z=gjA}f2IqD(^yeL5RLHha~7f=qw?8RX&PzEU!L&TWj^d`dHZt6ob-F%h3d%X<4?vm(p`;0#7?rXgnT4JA22JguTOf15N| zqfY4vKii!m(?iy7f&$@>hnnV!&mPyozbi(O!%vz{Zs9Z_!cHOKD9yQ$VG|-EG45jv zgM6s(H3n08MIQL;Z4D!nSu#J*Jk}#{x2$b-q1VMK0v7e4t4+)b}>5!&5zwlwySPV|^ST0XlshThk-`pKCHWN{~y%9gcUn&de3;lYPbIx z@t@hWBnYDcSe24V=LIV&B-cTE@Ovy^A%4#FS_ui|F-lQ~rNmrfF6@DTry3>Qa+N(k}fa48cTY{BwbspDeY`E6N*sw;R4$O59O@>-@SLaKPv&O zCTau$w1LTH&EUF#4avgDKCCPSl6>yYL-&Dy6f3Cw_hzRBQ)p@AYt0Ov!A*uoyg^TZeH0i|a3gc{c+M?vf*ZBc?djA~BL30_x(rXV!e#uKiS za&=Ai?Wdr{#REN6DyXcKSg~J;Gu-selBF{tQsk5%o)+yBK7$cDS1`3OeAIC+Kffp$ zeo`(dO_NJv*i?$Cr39Rtq};ozGD5s)^9obt0KhEk=2EA~gG{{vVI1%znf<~COm>_2 zI=X=8ACDI18-1Uu*2giG{v%=A9@OM;?D1~=#$NtNh|~;0q5{sq8|pD}xig7L+Z5<` zBg+%_dM`#9D6Lg(8fJxO2CK3G`!f)v4^FkR@8Ue;KbWoDJg?3?zKiEIkeap;Lc*I_ zu*fCM{jH8$=krABS6hGyr4x1F7Z+tZfaopv;aA~RUnSR2k)m-d=i}rtiW!5KRO~&8 zcOu|G>^<3)r}dcf!$*At_?mp%t4f9`y|e{+9MeS#=Iv4T!bUTrKd*0_ODFH63{yiI9){5{gB!|S1DY}zD=`rxH&oHx5MT=d7Q!?^gC9X+UPJ3&0i`I8y05+Yi$|dIWAJW2!N>@HyRsC2TPiC~s0VGWb>sz0Xl! zQcUP3%S~=|-XY~fCJT|znf*-p9^`cRF)2NU=`*NqSP?SH|h z_M;5lfYn@A3A-Pb-sj7QPz%`ZcjaIk=)Ycb$!{mkePoG_O0ViZxZ{AI zm?s%v!9X|I0hiW;_O{U2N5|?yjzzz0V0WIPpPVL0;C$NqSy%jQ4dXi7kq4jA?(n3X zDkFzZ938o4(wo9G@HxHo;}rHkL+hPjniheuShGBO7^D|}3Hhc0xncAw33dYWqOuL)lVN z(bObO@(52NuWzDzp9<)9Lty|}h)+5*oc)Ek`5X9JK=PaboZ1k!pt`M^P0ixX94czp zQz($YBC%db&wNs?(q2s)YFq5_8!7SQ){-F9MjElm%sDGxlLmE>jWYhYhUy*}QfpCf z857owuZc-`FYlaw@{-v35{Xz8f6jNc&aFm2E0apN-;q%GBFyK}@XZM&#W57vvpzpjecRr*)bI)&m;)(%)7PtIZ=$cg6heeLr0=8l&!viJ2dTcFg4}iaG z6?yMcJmZj4vPm~j32ru|R{MRmKe$Z$TR`3<+x%KMKZxnDp*+Yo*9mSN9bg>%Yd37* zL)!|_YSkeF1G)dcQsahnpM<@woy^U9f-}fS$%FY^CGM_5{LN)Hs ztB|2Z&1<&hC8aE6^EAY)R$R1j`Jbi#iMVo{2Yy@k(!jI_opx0j{C<4q#JUkxP2PEA zIX9MUqNaii0i4L-w3qAC)9C!f(sg;1+SBJDvM0z1vtRW}bxjjolx}7I*^4aYj;D1? z5--JbbXsHx8L#NOEs7gbYdkuxrDb&bb6eM6po!l*VLu&IK1ByWZd<<&mw@HaJi!su zLzY3)iICRm^iX@h&L=7+y;SuejaD#K2DT14G`z0ndpJ8G?f{AhuI?7QaO3Pzl_Sas zC?G;PMS*_)e(qGuG9qvuH5HNST#)L^Ki#cs|&t(6ZuNWh45ii7v~Q>4KW))=aMFnBqktOH*@T z_!TJ3IoxO(!p(pB>GVmQ5a(O*(WbR529_PE{EG!>_86*lThh9ouDFTs`G_D72WWs> z!xo_q*b(*}8zMhOYg?otsP=t@d@y@lQKtyH)($0Cle(xyyEdK7N0>` zx#=^VXuHr$OAZr3p<}>>x25c4ja+JaHmijZ8ZlFPVMhVrm}BCu2b`L^O2j8&iXsfeW z0r(mcCe#rqMjeRP8R)meBJgM&FUXB3!WGhfv6G73DYu^1E|@+mmDxi2=!_xQ7Ohx6 zf|v1Blr=0!V^RS|F^FhKUwvBcQB-<#jhL|=PK3rmbXRlcfy!|pj%QQWLfSMX)DzS# z=hu@dL|Nx(f)VB5VRIiy*SYpj^qsiOSl+`f?*3>Gm4rMfDMsWpo4Bg9h~^fYk@&{-Ue<=Y8E`01w`VO{Uq^}6hPgpm9lq6>L_-IH)-xlV zG6dA0Bj%v88e;MsGEauh^M_CDJ2No(w0oQ)EesIgxeYaYLdk!FZ47ddoqY%neCN*x zjdZq0;Ar6et1wYsD89kO_Di#E+9>;~P+2HoQtqOV}G|A5VyIC&j!{$?WWS=f?rW96D)DGOs;e*SO@D<*vd#ZO)!?}e9b@K|$$j+w-m33kjs&3oo%zU>fEcvpN@wWG=;;hmA zTWw?lBvV{i5!4`xAA>J4pK+OxpS*#8>w>#uyiNpEtQFuM(>Lcm-nnb$5wY!K_^D)~ zNP_t1_Nq`V&7~+j9q^k%@Zr%ytV5ijj0klEVrm&nrm8)hlYVJc?qjI12kZF~;*+#C zG*S{e^kAX4-wLnd@M6AiX-T>dYw8E&`!uQvWR4Sc_{#Q+7i`Sn`y&ag>2%i#`VJs~ zqgkxht!h2lDvWN(U-hU>I5vK8wVe>GpCxSIHB_lfx3pXq2m~yxYHo!Rdo0gp^f6)R zcVt!hI-OQY)TVfq1&0sRseXBG(DD`YszdF1xi(&h0b4viHqf%nKXKFZG9Szu_TCtE zB^0~&Vhg#it?X{<@Iz9hAAW*-^LI4;cuK(>t#eeeMXCQoO|FX0Od)UA6zvNF7y*_f z_iVyX!H%KCTvZ-&5wRe8>?u^BY-f?B^s)VhGKBocTCho4wFEP`qztpCupsvy@MD}6 z#s98YyK1p{U8`++Zry*!;gb}Pf}fL2N{hB&(KIU$Mf2#C4WZ?5{J25O;kFdK$N&$YCjV^zT;HTm!2mpF#NI~?*JQ`_US#ynMnr1H& zngg~lzn)&?OWU3U$?Z{)0<+OF5}J_}9w`=&nqDHm_P;on)C<0imfn+z?z(r5d(sSi zyJ2DPQ&-U4n&0XzcX9|zIt*pmB#Anz9SL??j zpgh#;47i)w$XTU{)Ib)wz+!d2Z>vc_T@#Ss9&=l!)?ZJ6MJE)Vh;bUycX9G!5^jXhsw`t_~N{Kjw zv-d^^q8j7Kae`dT!Gn0#3SZ=ENotPr8UL-UU*OcCf69xv`*)5vy@HiAcaABu-m7nm zFb@ddnclWTyU(J8N{FZ$7zf6Mc{J-pOOa3Rp)C=}G8Hc_fVA3Ef?sAxk-%Xt1tzR> zu{;>8A&MnhHkyfMUj_sG%7=6a+!RS-&=Pz}LSein4{1K3Pr zGCH+xxM^suNng?fe7OjJ;=Zl}m9`8Goi(%4CvDFxHl#9w&fy(i{-)8|kfHXr?gb^PemHoC+I>T0*0d*^>k zUq!vC@IdABGXDt zzywT|XZ!AifH5LJ=0n}h7`DWL$F*{@mLndaMUmgyY7CvtFU(bNm2AQwg>Str$6MlH zBtSd)VcoPkkD<4rnbXUQ#kjvDhJsDLl0IMej=M-1VvMhbuu9)7qZyB0v1eijj^DTk zakZhr($rLlUDgk#g2&8r!=R-pV>{gvP1gcbzOuk99OYpz7^l@`NkmUyybVHqyr;-P z#DnH6vSo>oX^9kOH<=TZcHkw;gXpeOckQ>I(3yJ3UZQzlTG4Se^zS%@L5kYhy;M|l7Z_co+%PFA6DVehvA8XEA^)`z z1sd(DYUZ=d8WI}`A}(XEkU>O>fVX=YEr+fc)wC7rh1;N(v+{oWc_^o*g+_jBEC*b6 znspkZ(~^=zx2c1PgEk7j{piTgq90x@mUqIfq8^y!5E#li?8Zv0w6uuogL5{xyhx2` z?_4mxsGK1w<8Z%fwIxsUm0hOBV8ccV_E-Rxa|rTEYFz=r#YLXAm$iL>QX>}u;!@%9 zw~X243tMMC?3DRECaE&x)5vff&n4??&-BLP$Qq~W%QFBSyg%aHoqsdvB7{J%Z(v*F zE9Ysgh|rNeTv>yy*e8gHVA(5Wdy4dJ@3p_xISo{gd!M8|DV6XDGt0V+!ZGb z6*8b#;?y-h*!ypI@tv~K;(X_Yja|xTFT+8r$2bl8sFFc-W)#r50Y_5h?GBog#uXU~ zzG%4anMT}-w)lA0y>grS%-A?i9m!|*5!Dwb z^0>ugPv8#!4@WZU1Ja$Fmo?agHia~6W44P|mmT)T*OS+|Y`poUJ5iakp1N90w-iHl zNFn7bzp;;p346sjd~lXBo3b=d`-^kMM7yAAvsO5Q)+$%r4o2gWpkU}kj}ha%z=Bwe zi53tgm=ECS{*wp~NmTd@5$v9qoPUU&sSMfKYjL=xBBi(rD12nSgHR^^a@6NJi_#GO zPAXn~4s6Bj(GcgyK=MP4Yon!jP}y7UhbEF60taMnUZHYnbb0>V$)9+4a4}mfz#jLd zp&8+?40qMWhPHjRrcE~~CG%L3&tm*`_9uN1%ME+G+XpD!KveIBK5&HKeNX0UMgpf2mzGcPy} z&jKlt4-cPJhwy&n31YfQS&VCOI9%cwh!ALa@SkgOFl2R1Bz)3=ki(dvkHUzEK&7z9 z%>^}kXHk3t=z$gW(aXibIQvjFYX~Hxpv7%Ks4ltDV}uTLe@jCdu(@u*=JJfGaF_^x zUg%4sYmoDJ#4aKcD{HJ^mf5Af+0b1wb%wGMlKH`1qj_op0sk_66c6b>MHh1rT$^z3 zxz!pOM)}jIbGK1S_{p-Q#p$(3Eguh30kDl8Ecta}Sfz_0AVtEvX+WArv*ms6{O?=c zgAIE-`UEbs&KCP6mBfBp$cX+0M@`=fGA^}X-p-%3VRa=)6T$L?vbnkrAtmwp%#g8EXvOr>dOy)){t zs+H1M#DqdYjd|bmYO;=IabT3+;SGC#2HL(47(A}zm-oqWGj)|n?qS=KUsfnz(Pr`2 z7lXLN)ync>4|p0-%Ctgu>`K{HTNR;0AhshfCfl@HQ9VCpSoVM+Qajm(<>b(ZP$o&z zuI|j|lZ3;Y*LiJq{)xCI?;N=_uRg+T_N2soZ=`o~`iAPGkpJ%qZM}?UhYV>Ac4 zq0#VUXQ)<^^_T1f`2Nli7=xJ@P!}!_NSU|ZW(!GUm=_ES{f|7I{fQB=j*$dM198YC z3x2W|iITIDj@=gZv?->Tt~Y;wB;kD#Ox0$ax|DZTb#6h14ZlCIC_W<(I(6!a;9Ly> zJ8QTGq2aS37KBdfp@|yXulP~=8sjiHshcfg%^@MspYaMC9H*MYoP>+MtF>xb8qSlR z+aT@7e{PQ=BKmNlMYQx4Lbji#o*#E1Zr7kjXh@n8;m?qVGc)(qIN{+v!hK1T=&wC0 zN+g7r0*K(mx`L>(F{4O#cuF)43;dc9N?mRc$L-#Ow)v&Udn@)Y#C5H282r;Sg(5&9 zTA7!|-`R^qpEm7_NSoUEjSn;S?4ZsFr(t@Qv<_c8VyO0aGj5|!x{A{Yb^mVWorey2 z;*`{;dU3^-Sr)3hc`X#LWm_v62q+3tpK0;KT|>c$5knmryM1tH>GWzfkP?Y*_swj% zUZjmI(iI^Ri#Ug`oyzMa%(oUeu1p}e0rjulP5U@{9`SLY?mBseBozNy9F~Ko=b5eO zabiMTQAq>U#|q=I*li8D>-=b$IG}dKUqRRn`%w*_LRH$RjZ zFxgS5DlYgg>IRYsu9Vk0@xOe7C50H3fkT!AQz#H5^)dO9lUIucQH@P{gGm?G(tStO zs;lRq;7>7c-nG;?5*S(6E-}Ja>Mb`|8icF;q&_l#e3drutm$}vFLOawd+X3J`QsVA zlSM(2iy$5n2PqRiUCg(WM?2@2>lFN~af)#+YAS^`e+g&eNy=Gmx>@-7`dGiYV>?71 zV8)f8_+Wxz6Q`7L0PHrBg1h|nvtLYfvGu4I;Us%)*d4U*L|Ezd>{Y2Cp4-}xHMEUG571Y>dlrXqrE_bZsqwYJLCM| zDi4<#H&~`yDsz*3Le%GAVxWUOibxkn-fabNN#%m$1Kd&>Od@^=lA1O&&={@rLBHRZoqtty}0dpwS3Z;#^MGRa@`6&g1=uq4EU;BQAZtcZV?m?N^Q}`h#(9zi}gSz^fC49k*1X1HgJB8KvJd^(LGl$RRCRybeml(^-Xq z-B5%q9lXJYI5zSH|5Dh7|2^EFT1sQL^gonD<25oikNq*HWe-Td5g^r9Q-iGf%^T~5 z)_v(0QqWX0z>-(j5}F<6NRtv7Sx`&A%nPk8wg+xmm8J)oKlE(LAL-W^I|B*+Wxwrt zD1qxpc*GzADI}0!_-n_`dwM&6r9d*vTe9>2Wb%oQSj|Kuy_y_7at<#S+l6-WYfKkV zszK{|Y;JnLmX#5XNehaI`tYG@h-VvoB@&-mrtrRBuHKBwV2drte7X#KA^L*jKskP^ zPi?$xsO*_;uGfWe8oG}(hJdgS;e_U_GywnsZb_0_cvYK%!=kY4(yV$Z7jjK1F^sz~ zklmv*@Mbia`c%iVQ_h$lj7|i8Cef53U`xF8Ihu)MH+0y`G)u@!lM)?0QSSAP;cMgTVmVaMhnw8l;sgs5 zI>e3MP~9$ryqY(>E1b@h0!@~@B&AAV+u?*X#^AHQfrzb_-z*^-LOT*02*46qiMgp` zExE&RXY!U>5<&*r(Z~bs< zX$kp-{GCYa(WFh}gx34WBv#3faCSYCkIY{}lg3PvKf*AFx$0b?f>BMs^M{C09}y$L zcfJQ+OKvivRf8I+MMnRBnr})6rCKiV5XZ1)D%mvZv%}xWw=fBp5Kg%~IZFBpN}EiR z+_(iSAo=!?bvW|ZB+~7_IeAXQaLx8J<}=cajY5!KJaRVydS_9nj4h!ki=D^9e+>|H zZthoVhVTIJx+7L_-q>rIGCJ~CXQNhL%%(c{Y;+Ieb+Jh6*A&LGvRJdq zg2yQKOY(2_Ih0Mv8YoKAW=q-OpA9k2&9xykpn6GGWc6Dcosc_BddRU(O}}~T?o10* z#}U=;vyKB>gG+~b%=x|+U&EC!tDE}rjd=L@ zFCOqv*v+o|u8hQ#^BUW+*UAj4>-0SI4Sq%QU>2E8fwDj3?Z#6BVi%Xh(30HXe*Qbj z=((Ci#V~zd;bPY!OJrZIR*ysBfHaqDGJME?Ic#}@&-dT>cK2i$4osPY^-@;OL}6!` zC9;TH?f}5M?h?~^=X$bq<1F`Re+nWH)!;fl5IysIK)}7l7}l74RTW~GM&W{R1)HjQ zl*}53-VMQ|gc(FQ-L4O)$p0c{KFV;M^%93_rS=xDvy;`Jw8q~hz4usaVxGmTvJ zq(m|ZN9Th13v-b17N8pmYe9vg0JlWHGAY?TIvUC=wbSjOIg@#G07+{y=#X}T%?GEt zsjI%@`C(RXrfFpR6<87yeYi?7y=lbm2fdoA_Gy zD)rL1fufMok(av2CsbePnMQ>BA@hFw$SKa$U@R+@U)Ijn7i@!u!mJtE%g=)Xdr)^z z#3IdLQn$78ZVPj&hgrE~#LWvQowr36gC-IhAzfhSifa$dK#+%vafe{ptx2arX1X0{)&Q&w5a2A zm}BCp;dGbr8rt5>YtIj3ff*Azgd2|q-;oft&hR?1xe0|RED(G=fEd-88FGa!u2*S{ zCwo#`cAD0_%69s}uooTTP7>$*d#a9a8T@^cPdGFFLU*WQGW$pB<+HB**gpj>S?Zlr zey5^&F?s>~8C$P+YAMOnT5{Qs!M|rvU`X`RgG(O?%AK_oN9n3IIH7E=x8b?~b^QPw zuiT)fC}2qi>F4py5dN*Uq-`ETAgv|k$GSv#L2<-Rn)1YQ)`s$-cZ3Vywv15#_>o^8 z-izb;_~JpXbvZiHX@!67YDgNhm-*++9R5jH9lX1b5A$JrsZ8kXfoYBa;j7f2uC?#j zK6F6qXFPGg*g}7}kv#%f#bqzj+tMR6FPN+jT|%uO-o_8*n$gR_ZU+Wo|17g;2xWii z8?-lOC98Qv%9v4%0m3J-_GN*I%fw5rbU-nHn0pJvG*H`TyeM=3)jG6l_j?g|(_+BJC|~Rb4rO0G zB06ZedIN+vU(o123<-wx+fy&MPP}7mej++5eyp8puTa;AoRfj4c&SitbIj=NPv$^r zhI47eo}f5#5L}x@PFcO9OtP5@x2pDJj-=oikfNtG8brmXrIT%LE9yEe=bm#O9H$B>J7y5bQmP zHo8$qzaFX<5J>hCFRYcC;b^%MO%TURdvnxoD?A=uHtg$&UXRqLXLzKyGJ4hM3P6ssOjpwpI-|jxGvyVwTm9m>sAFZGN)=hj%SNNKV&LUBW1~D zP|+_?gaQJ7Kr_?1a%~Tw-GJ>Kr};|D(2isux0w}%nCBFB6w^t0q>v@6N9*tFvlyb4NvxW_>gYrLwOuPNZ%ejI&#@dVR=i!?7yHb$ zwyq0@g*1hQ!(n2hy}So5UBbZgfRoh5Q%@1!bGp2m)z6oWoT)em$Mo zrPUZ@lH!0Yqiq(gr67kqL}1I6k`zEFiVHm`jbb8?Ru&+$;>|L$;&&*e*?r&o+{ zwYkO{`6XOn&|(cD^L6RZ04DHlc7mzVy$3v?f(s%A_zZ|5NT@+0**Anrus8wo=_xCy9|Ol8Z~(2A?nLgH9l?29f@V&7Mrql@rr@_difGzufZ$ z=+oYPP3lI^#MY0dFlo|4wz;yT$>q@Abn|u>v~Wp0Y-wetAB*gZBFHS=0B)JI-Z@r} zM|@|Y@<_Mk94wOSVk{kpGvOkz@FPRR%4YvP4>}o=Xxkh*`}rg>_!dLry}s0>153xPu5T-|SDh824T*wPB{7+pLO!*` zI(Q&^^C@&4{fR!rARn%pssJ@yMQxCmMSeWgv9M`g3+b^LE0*u2kew|~&#s6lsr)*? zi^wl@Tw!fT8&jUNPGU26kOb(M18teV^ufwH)iUnSCW8;?Idn$Fa&ov(!(y&hqy_N} ze>sJrlT%8?bg%zeG(r~GEngV%9>uF9Hh?YudCRH`15l*41MuZ0>d55&OODO+G4|=5 zl1xMlQo$BZZ`8CUQnMk#2H}C&rF`nO!=A0Lw2S63=+->Km8>58-_f}?iBZ8^sS__p zV>ef)DlKV?*^A;-)Fvb>Qq5xazh*qk{C%hfOUH%FC7@vMVA$p58IH=3FPJrDDBJXm zC-3is_lqtV&#C`{tb)lSfy4Me&jK1viE_7;&u=$qD>w6A<| z?U+o~mUV*=^skGE@w+T7sr$yk$7vK4Alv=V=$4-g4xcDE>*sRO;OFG;M@<+RL##|X z!JQFT4i|Aorq{m_E364*{$H>8dJNHv(pKR=_d7CPDx z$J~RCTHGDKW2X#G`6I(7YZ+u{RcGIOjr;e4cT5}9@qY3ImRY(#pueeMee;yQtL)Xh zoBmnbEBik3wx)9GVcUEZj2#GZ!V1HJLWF*IXgNj@nC^ok!U>!srx(se{Z(*0gwr9m zUBXFP5AmntmJy{s^}0e>5e0I0m{%fygCudts1TMDta%{S6tfY0(&6im=?!kNlxSK= z0gWb)QE}C!FcoY%G`#35J9^FL_-(IvM5eOEzNicX-%)x#1c9t?si3Hh^YwqvP6T{Aq7!`?UtSk73aKIOFMQ* zhb16^SuW?6h9c`Ktrsi%i?*I5Y+JHYE1iP%+ib-sNmVJGPK#L#P-;xutiflb{4Gy?SJS%0z`K3ND

`0exjn&H(rnyaXa8hS#7%L64;0)5EpL$2ASw36C# zgS?WDctQ!Db>{`tyKv?coKKwqVcX9Yc&FSqTfb>RsH(1#lTLDF`^--7k>X5*RCRWu zMMc_kN;dAl3Ke_z(27 zOpV{4avrR-AOqh)vf%{aO(JjR@$qzOYp*F+MFk?bOY`GhPPQxvbZ0?+i^S8MrAjLV#}4hZ?BCLk#JV6ewtIP@g8Omq*ZS= z@p*DosgYU|)6H;!v^<5eN7fw!9udDbjIV8a3kv|)ZZ>l1)PScG|!dV+hi-#KwQa_%`3%G!)ri&c`>n#_oQ4zH^>MIH(c7 zv~|WLldqnsfBlyzlsR6%Vmc4^#OW_B;OXhlkHy~*P_X8xqq6npZ!k1C5vFEC2{9&^gRn}0*$uh{ha$t6dek^+%m+K*GG3r=@Z*}w{ z1xv>)+%vak){t=<$jrL7h8)^_-7*{5#23^V2s77Q2DDOp)p=)NCj)W=zHS>SM7nqs zoR@FMT%v0(+`9y97DjF`e#>42snzmeWJ}ZU%ioYas3impUn&?vDQS`IFMCAU{$EXu z$IE+k{9Nzwot)e3>xT$YFQYpkRTx%hQ@B8s$^kL)Xq_*IW6qt|=aFJxB4f}8-Gx?} z;ywd9-Eu(z$#TkW2jjh?3i;DTdOXlt_YPjuIjS> zxgM{FMn16@q3H9!-^S2Z;`^6_Y^C@joN>S+d=-b=RLd1Q4t>&%u%17f3n#$tn-pX6 z@MQ;U;LP+EqyUIYI=Fvx${JyuPVJ(ru1m~R=rzTT{u%p834pqNExvgPXPE1BHDOt4 zN4pv$LK)Bn@C>G{8DefWZ@=4D5+amQfbwC*lBjuS1RTxA-$0_#ClqUWIOyor<%7Y7 z{uw6)Bk_g)?1~`V&x*b4FcmWt)CA4-pBs;;q<`qRw&YrW@Rm<@B z1moPqeO}`1A*(v^wUfq={TjDl{17Y!$k&rP%7peVWVQx?iTS|oT^rXGX4=X?p|ji zTFuD+a_OVu?SDPxuRUHBDj+fB&x|>ew9z&xE{~>WHN1n$wsDjKeleeV1 zy_=qles#S7YbP3U#KgVa#9tnXnKq?9=w?jJah$Wd2i^o;Hhu5YzVKZTzP`az@(} z5LCd1nvX|*>Czx4i=buNwSu;Un2;0f0tvjS@C3PCFy>_lns1#s?K_R7fJL2k#rsqs z{(*iFD-8q^Waan7e0BYFOC+tv8x$+=c}@|hTU5;wzr-}A@e8(+QGrrl7SMVHv%I?qSfVh)aH2nx?2 zNL)9hJ=xVlIA71ddk zmiG=z>YLajIl}VyGk8C|WEbSPiV&&aZ3&m2C=DIa_NOhmjkINXbb1gm`nKOU+hj(( zSHbZ*Fy*(8%I0qa;(E!S5GDq>Ef16o`O3pfAZLO76KehdOdadL`rl<@woz54cC)6Q zNThSDBcH$R5mP3+4n5*YOs66o$N?*X4qGTgzJ{Y;OhW(Tw?T^*0Ta<6%SjR949lp{w>tVXyP-SU8PR-6a`X(1S&_ zJz=H_gW7sGP9*H>RmaT+00W4JzVD0;4uB>dZ0PWef?)MXa8KmD>2?E_Uu%Pwa`?(Y zA-9xdy~za5m=C{mlHF{9wPdyr9UgK6FBuJMJP9?&)68>$JDy{9>vOTI_&oA6FZ^aSp@#f~)6ebh?!M5KX8U0PtuVJB>L_ zy9rlQmqOC9Z~JX4spk$N*@y$)^!rj6^spWDtpiZ+AGt+*2KwdEI+a;js*qceh8akihQ&b00} z0}MfmcN+|pr8P;=_s^RhlABfRs=hEx1MdD7+ z;+)qPH3!4#qHO5L;0y@x`^>T_@PEr%r|fGnZiMztVJ7U%4~(c~fjMZ^{BT4iwK}h| z(!~mUIOu)i`<`3)#VTPYM~whGf6S}O?8iOdDr!F{?a?0iMuWnTWx`wnT$hM)g#qAy zsJJO(b#k;)&8VFYqn^2pI@H(yi)`JKt!w0-7jrr5XFDa<`EYWgVilX7N}kXbx=$^K z+Z~6eesrQWUPqsW>vK9&ty zKtsEcY`}++F-;HvV(T#a2BbtVmu#;SKl$vv3s($k?0du;EM34QUc%`M0qSs1|s+N++C#)^UGt&Vy7tUiKDcI0T?p zCO3uOQr*pE<&af%ar-~0d%20Dv};dcMwu-S7Ew^@N|wNv^-n)6^iotT#`>{v8X~Hm zS`Gi{JV4S|vcc<&>=)?< zwg|bzh2wB3*ZA4VXP;qMfpNW5=M1Fht9c=lqZ*Uf6>0gq2Lag{-i|G+ZiKQsa|Iiz#xevO-mc_n-hG1BtZ?h8+l78Lnz&MU4d&%MTo4&2X-Ttp(Dn~D z6Gzvbx~;705+w}LXGRxNEd7@BBsoL<5egX0R8I4z3)Nx6tA%g%J0%fFk`<>cPsr*b zk(wH3Bd`T>p}Gu8rXUS-V7<+b8J}W_btG#THwl69UB$>Tw$y>6^=0R@|Rb6XVq53$3c z^kO?^WxU3x^Hxogm-YzTE-C->R#meu+hec~!)*MG)*O{>uW@AuLc$UvOJw6v6K$pN zKJ`0^G~3}NPEI0ldB8Jde}o!euQxTLW|V<;b}b;kRrSl2tb<7R#6#>uwgdT7TsKJ? z7!5oxF-c;dqAR$|L&6&+={3zI7AJ?EL1rb2kv?ULOFvqPfK#Q$-73RH4a5{}4-|QK zQP|7;mEoY`w$cEb7d#H_z4_E2+TCY0pn#ZQs*aUFT?Gp+n3{cfXfDG5wqIoxqDG<; zRc6)N;-yH8v~^E*NtO2&{LXkR@le+vSHo_sar7No#sADwGg@Oy0sPB4uP9&k7`h1B zs+$1*P}Ta^56qmN@Msz4Q%;OBIJ^24D`jIB$s}GT2z(#Y;d}x7%N0-t26V6l&=;AN zwNblj#V^(Xd@Gushi5BOi~R&u-e<~IY5vq(W2yS}%$^fl_w010SP{#}#C5f(3D`XY zF(gu3?&w;iHW-UW-YRQf3X|x^2Xr2ga>#f31L{kcaJ%m*kM$I(7$Q?S%_E(V?JMBA8U4jU; zIJgk;AFd`ooJbd2f6X3$tb`Zpa8FHA2lO(&-Czx;_(pTNuIh3SHr0zp^BZz5tpma( zbTJBO2u8%JNC5bR?7xBeV+;7y4bsT$*Y0FS7?h5lu5iZNk?3o3~H9%BwB-SiOLj*V!Jb%czAyAT zlPYC>0?V0Eloi)o%yAR#?)#)c&^V5V1p=lx(`{==1t25!VQ&c8D-@9tfs^8l=E*MQOet3&z-#V&X3h;C!m# zqq*_{Bho!JRD`}Z5u7r*0hg>UfcJ8-D6>G0ZDE1Oe{q|+gKbB+BpudAJ|Q@Scmz40 zMGkN0MbAZ2iQcin5=y~%YF2Z#=W4Mm74!0{HrUjqmeb1*4@Ws%zxf(yco3Wf*OIQA zU+^rAx9DefW3DcL_^n1*luInc=w?#AoOyHZI1MH$@GYTo2hmXFeggoSse8!jFqcf> z(GkOA0Ng-`yfIp?zrsE<;(9XC@d}=tjiy&+@GPgCcED5Az-pXdfr(RE;&o4tc6RtP zkJ=~HiOQpHfiuX+LSPuiTQJq&kw>K1t&*>?TY?=4sjf*z|ua-SM z5XSjW5Tg7~$0jBrk?&-?Fk@daOT*E5Fl|KGDKFH(Qko%Zlo?`DfK+rG*~(B6gVAdT zMiQ)_pL|ilK?Vo(k`+oL)uJ@Nr~0WSk&V2XG5hXCi5I0k4`RpLv{C<1an`g(sFBS# z972bOKPf1T{DR2BJFedTY{-|ZZ%z=M?3ur;WA%&Nr-+<{v^dtyE9d?QlU9%qu3=$> zQm>Q7#m%1LxQ1rXi#sS?k{ob-L5CR@He?8W(E9Kj$>Qv6&_xRj<1Es}kwUx3#DS7QVDj01{ z8f1hA{o#-bicJ$`L~%`<#F7{tI-NRB_Ei@H zr**H@CQM}IPUwjYcv&9_+M*IboN=6o;#Ll54lhXJyP!E^_2k%cUd@_kI?~ER_NF0|YFeC&6s^$g>b1_|pUIIZ8|2;vUXO zlCDjQkWA)9>#KwMNOYNY9_djdlNcfWik<7v=|UEN(Pq%ZctA(X6WB$mdAE0KJvOUD zW`l(sn>r_ijU26X%L}^w8h?t#L&Y%oxcDKtehU!V6<=GW+Sp^WxB37=ar1&4?u!;A z03`$8^mS79+;OT!=q04(Xh63CCLvC3nkxNz@DL7n=`|!PF8FN}eFR&{7f+B?WO<{f z{{Lm@4Riz!`QS?lf@R_({M)47*O(kcBuDJQug#$=8D`r21p@8_BF~X)TMN9;#4wY- z?Q|u#cg{G_?e|;*5-OUkW{Nw4S?C( zNCnN}rLubJX7VxiRl~NYWo7pWx$tf52GzzpcB-;YH3x!|R>lYFSDWpNaO~D;fv!Qh zQj(ZDw%gdPBSYZyZ>F%R&g;|skGfW8NBX)dJy(gqkc%J7nn1w9896eUX0{92xf*m_ z&I8A_fXk!lz@ff9*^gdx7L1qD1NV8q=Rvg7mm1u9%B4w#{zO$}o7I|fyN&gof=B9< zr5%wN40Cf)fz>MJOPN|gPWzmy*YW)$hdcxC>jXiwX^HoyCU!%ZG89-T;wFuIhXaQVJMP@?uvIAVShXzi)lleLx519-n(J z?J|#d#x;n?hRtz)KFry1RMV0I&*p;2>*6{X##U0)H%Yh%n%Z8~{AvAoHhc=|T@Z=bq#@+9SE09O4T z_;C-j?R-*h2iUlMNcst#HQuR}1Ag4+e&6(i38wq_*rr6-s^Q>ia~o%M(8_p$glCxt zFHNu;wr-&DYZhnsN{Mbijcqc~C&A&u5&gjKAljMt5d>`frhDN-@8pq7q7NKE73-?( zkYF+FgB0UtkREMt`!jXUHQut^f!#2^6wKLEf+t>D$n8I8kflU9ktNqMAU%N%^>wyUvYnb#9n>+P!jF_zt53iu0^ z)34_dTW;--V@#E)DaPTq&XGvP3y96ZF$Alr#D+%!@>2KYVG`TtW*WkcaS=#fLG$xa z?}C@rpnVfLomO3Km$ixEMApnygpc5T;k{>z7P2)(NKAp>K?G$$Lts;z;@R_ViNPX; zZ#|S_3Dz?go|p?!8IcZ2pl zC~B_tADC#tBms-}U20{WGs#}^m$rXN#Z((uLTM|5?Dq1~)QSH!39}6CkYue(F<+1- zN?DG0j*G6^r>N|vagKCw;-t7rGkk(jjf6*QrEn=bM{6->PXaR?2*J`;R1D*f1JY>{ z^OQVDq5aJ79I)VFN9dHDv=EA)n8DZ^6V%vZZnBDdVhTYmnCzLX_X^=CINXq3?o9^% zK|O%iv5uU21ZF9RijVJf97ZX+Iks%#*rczX@TGBT-x-fCn=hj(I_c6i;0y77RIBnn zDI#8mTET=ML$$XYrRcrIF{3^LYHRn3QO}bzIS($epjI~3IKqs@Rx5WivmfAUV5!~n zA^4>LvsYw-yW-}IFxo>~`ImrE5lU9tXhllj!@FF!b^Q3kZjUR<+N3r zGOkeTQ`D8ik3(egBT-?s$}RYidRyoA1Pivd1{UjbppRs|elUwN@W3^Vb)-}$>yb6O zw7V}3FKS5X_@Yg?@I}_xDLpXf*Fq~747b?NMfzwx^rsb|Sv<|hGq9#y*Z}5d*}v)S zFEM^0+aM&4asJSAvz=)FhobV?qA3(Q>Q<4QV6!GEn77Q+rzdYEeV*?kd}9Mf0gClz z>Igtb8N7EkFeh)gCe?~J0bK#H77<67!X&QwIvDjlJ*H5jE}MPfRm9T|HfeVk`Z)P{ zw(mFn$ax85SUIm96UJ7d}ns={+u zlc=%`brXXE0ko@9K|1*wEtSt8hy46_^3DqEX{Q&&@Oif7umD=2ZEMzj-{V`SKc;sN|b z0-k%UN>nSTE8KdPtas;JLc-%+H*E}CD{Y5KP{`>~vBCsX)TmuLipq-F%>j3Cny5ng zsGiKO6|KhdmO0FkRZ;{m?cyn7NyA;l_ttROST!$;4ZMHjVhR*qL2ub+q}a8*HIlo# z3h;M|q|=DLtYG@?XSsd-YCt@uv=xYpbR;lyZ0-TL*6<2n7RQ$rd$!zN!B$C;B;)7e z4sXOXY0A_rl}x9sff)8z@&(}ETxDgXD9#K*7w4wS1+cXatrlW(j0tuSKm-}Yk0Gbu zWsi1Lv&ASyoP{%;AcO?vAgS;HpgWR$RaZlq-0Uz(B*=0HXX!E??4_wsp7BP@tB~Uu z%OdpMh8B`H50L~)R0CytL*&^ooB=hp^>K{CLNF8w~T4S7OM>ZsE8B!OTLih>h!K$PLLc)mxNss&oHSM9PXalwC;IrwzOl7Mz9 z@7iYc9|WDaZKJi-LfuxI=LG~h@$1)CcOGQS)> zcLGD7vF#u5stGHp>6NoTkqBmKFY~jN-|$UwnGZL?+s9zhknXJJKZ%du@Oh`v0p6Yr zwKQN^;f$>Tk(|=>?>s4&qF9lS?r+D1n_o9rI5~!hCbK4=@LbU9-xZqfUFiVWqI^M))c4lp`s|45-i1Sapf}*7^`V zx$yerJG@@(pkK;Gfud%ccjCgou=eoN;e0dHz{Fvl^WawNqbJ66P4YoLL-Gw0RUHV8 zYTiiB(!~mVkJtXkQC%UJLR2A22zA3}6|30uFxp(oA;TMa2`*{y+HDUNKU|Yv`x}Pr z5lb9-!1*$w4hOwAh#q@%N;mu@7#c!djOT+XkqSLj({ai6CZAmwwNomTF~|6EOH_#yxKz2?7Ih<1 zdF%4MFP;VP#aE;{P^6>tTEH($O$x;=T;K>9CL!Mw(K4n2_}!Q7Xm+XHOY^sa363|J zO7t%{m*u^RN&t&L%o~zuyRKME21xQMhRJxqrzaK#gDaDnKLb)R%mSNvHhZj={%tIg z;57gl;+W&qBsc+cI2gGV;s-Hi+pDKZlP|r(Iqy(i0Gm1g1l>eQ7ZW^2WnFQ@pJExJ zcXZ7jbj34#fK$r1%aAEn$8oX8gO+A=TM&a+<;AX$soh&YxO4La8X-zik#w|rR|Z@O zq+_#$&5+-hi~wi^&YJP#1V6iShv_%*ak^kkv4qHcq>ZB{ZWd&Hi?YnvRYCwG*!{r)QxyRik4rZE27XWg~GPsWR}{XfpI4+X!P&mUTCVOY;yn}8Dt zy<~x7QZ);afO%_YF+jGta^vQ#KNCkNI>}Z%RyDo;08`a^hq7Xkj3H8Md_Kc0GThR1 zn!yrQ!19R9J3`wO9)&@VUYGIGQ%O`$9n|k}VmDb1cy-;H29gwfq&M!cNVg&V>?P%W zH(kMW_=vi~@lk2mk#1r!{$13o z`jow1+gy;eEuzH7cY<{w5U{;DU>g08o8LV+JiLShD?cwgWh=!L`DwFn0FAo>U{v6K z>t3Ys!q7=K!R^ViA4aGTV~^-`Y-YTz?lk`JYHUU zEQ4`$aCO}!Mp5jEMLr|DF|78U`K5B(Qz>h$d>Z-x>b0r9LEi|J{wIGrdqv+}m2p@( zOkZEXy3 zgUDNym*Xuk4+}drL1g&#V!=bff^^Z9Hc4Iwx&SU&uj#F)|qI8 zX_J4uun51Z8?QLM*JZWHs4Z$hO%3kjO-_glwcV_U)3r){qVp7j0fwjdb8|V1|Xa^$j(_#5wB!_oH=QI&1iLZ zFgM{RF}pxOd}J9LB7WapS@jA`?ApyyDgMBBO8*6x!lLY~otu1<(W;YnDBC}etWb@g zMg~BF^i;oQl>w~2dWx14*hDSyt~reR`vzvKS~+t7qG@{i4EUS%j;$PT<~V+cfO5-( zh1!3M;U<)f#~)LxZ1B2zi4S(lH6PGIt6uqG3vyo_kCZ3nMn-S_@YB&)P=e^rtS6r2F^!s zXu8gp>&bN5&s^6GnaT-1X~<3>@#?-3ex|6b=-r34el4onuwcnbh3KUd{8~`eNO)IW z+wz^vOd;qGa)6^5DFTC6?js&!L z9}O5!PH1p+)w{{=XlB112k50BrD!R|6h?SPN;KD(sAzDTvVl*%c0T+?0f&;Hi^;F! zSkrkR%t_CIl|3L;d({%>&K3{rJu${KbNv^H&>_>vRDTewzdSffWS*%U))i5m%LIh( ztfH$-`C0VQjk}r#O@Lso;ag+p>FacgS1Xi+{)e7I87!Jfss`Ch?9YZGr z=Y=shM*yk~kTsu~=*U*8tWiCpu-4`F;q!S{=HH{&}aDaimdhlp~oM5^k? zlvjeL2lk#t$KOm?JqQI7Dl6&*x&MV$S zM1#*`om7^_9$*%ju_LHJRxZML6QMF%P32vYC2g8M1(J-V_iEK;)FP4w^v^vr(?CPF zAk|6v>M98U!;13d{tkw??@XIA1{E~4`z_qAM0G_AX`!_#aWP3qaz6{mprX|IZI@#eEh>WsBNLIrxwDg`swe?w z;Oe%r_O}1>-BW;0e&yE3TD~Ws)ZorIei}6529`8HSx?sMh{~nK*jSSwU*wPGn)8lv zGs(AQPHl+sS^_>lW1r#T)`^0%4(k=!cHFrYycDg-M>b#2b*QERlNGsVU%Tv=JF4wK zTavI5b{o|e4+>d`^-3%7dL#&l8ZriV^3fC7!BNExk6cXIyn~d zD+~+Kg)DbhqRdIyiwk=UW036lFBEbX13Zqm;J*lPOQmZMg$J7D zst}htm_EL;N~2bnCE{scJvOLPOVMd2GZWKRT|i+jAoRRUSBHukL`p#<$B!Qga9C65 z*M91xVWfJXR_%z=2I=PkZFVU2dOIfzc#AI9)v0Lbh;8xkiD}V<8J7didywc?jlv2r zsFJ@^kJ_^EtCb*$B>pvDfk{%#zyT!nbs{WK zl7xYZYtdrEI-rk9TW@dJuA(nGGns|nL2xOXZXtca32#ZT!?>ygrhACW$^P=B2B*0B zIJCU5h{T7<;2`_FJdPk0Rl)P~zOva=eAe*7j9$U~FM`Q(# zVXyMpbZlgtRu8(m0seok{a77y>5d0ZR5PChZfkJm%49PIFs_CxbNoNx#nm32^K!5QgIek9|H!#RUEp#rSzDzVK+ODnIW~p6+{qBd2 z6%i*?2o<>9)&&}5;fOjjDcW?{kXA(qZX8)X6y9S2kt`7#W{>j&b`7K0_km>gW4At9 zv4s?CNl_1I?yv#~^}zMZ`@zuU%j3xKc$EnxR?1ZGq8Oi%^*ISdz%BJ>+)oUB{jl3T z6x0044_7@si4F}Ib-+7o@a+2vB^*gCmK%8aast_dQpI}$E>FAf&ITHX|0Sb!OhN!O zLCqya1IpULYhFU_`H>=B%dfevIK~lm40x&0afeM`ioPB||6!ygexis@mCE}%)D-}L zSXGwS0`HKbP@Q3mSI#D2aXipdCJuGQhD^2F=B0YoB8KeFC}McG0{SU~;oBPb#@MsG z5dam-~UAS3I zwE(xkPA4s8wIP&v+Qr3^`46z*+?wR2^ddL$u0KOGylG%#mrW$zJ?(Mt>E}h82B5D~ z3=4Doax}A8m3~%Df1#Y&qTvGTrg%RwXuv$1CoE4GBjo@4hZl$!yvD<}uj`TH1O;h{ zW4N6j3{q6HrO6sAu}bhwNFlGka+pL=_N^dw++>fG(nKW3JrP(jiy*Y*uz{@mQc+=! zJ&<~TqTNa_*iM9Yy)brOHXi5Nkv=H=LTj|7tRDG}%do`A)@cfB2r-^kC!?ShIpnda z3p&TlhKx)!3Pe<>>HF+$YEau!YiaNo18s-N{;ntnM98x6a+?DZ$N+fOQFf2GNZdb3 zXlK#lnF}G$gxjJRZGA&SdpImZ%F+FD`u~pbXB@5Yv4>)jG6r8!Cg-1#I|HmtV-J zwcGpW>J>S1^&LZ0G(+qp(+q@eo86)H@m@WWg~%6TVZ&4cNaLQWbvIEVDejdL$CGX% z32{J353|BXfUN(jAOOEKa=%A`pvkC1#~_F#hW?phb*n_ws%y!p!mu7DD5I|lVSS$l_2@XdmT zh%#I@41gv;nt%aPn^B_rpS~DMcPzANgg8_RU3&d@~^93SA~T;Ox0u(PuH8@ z49}`3X5+q-G|x})qKMQZ1M-v?$Z@o0nai^~6y}Nl?QFU97fFAcX91ESi__U=Hpr7Q z-h(U%I+3(IsRa|OwHNq+l9{2RPP5a{or@^~MAq>7PXkQq2Pb-=Ld_UvW~WRzN^wvG zT6x#~TYe$=K8XgqN`r{q@r}G-RqNWm=699Rr zAM4PoLO@Rfe*gl5Rk>1wySFd#*^6fXqjwyr0igKfew5#p4xGp*lH}*RX5DW#{RJH# zqya)-V!DpGp9Od)#mL@HUFf@kLW=7*?`WeD#3E5`s4+Mt{h>>~KBVTc-c>VkH*&$= zMBa^CeAa8YpY6`R&9+e>J|F-a&SSbJ$wy4jSzo3dwW&bM#*E&KD11vq_^_IN3D5uu(D zXVRWe6TGi93X2L914tLRi7<`b5WL=|EKA}{tG+@?nmZw=>Wmf>0va*=EC+J4vHm`gqLxEs7AKq=Ix98T@C%loMj*$NuOWZhM zc@ylDl~ompeGtP|Z%u}004u^AtAQ_r(2bgT5^ zqB;Co)fi@5*-AsvrSh)~uDm{r_ITEORGZOpD=wO$HVC|Etj%^(9BRc?>%AomIOO%W zB#&Caszsj0v9>8%TE_;OHgR99-%LJ6l^a&K<;z;MO|v=27eYuFl2Uz)gcG|O;`~d? zdx*Q5w{j+Dzx(rp#i!OxX!ylseK#|hCx5#?edJGoTT-zKiZ2s-4u*XG=W z(JF4s7>G}`3-?JXY`nXO93g#Hy_n-_9z$;al$QISU9~4q=l`{MR4CZP0Y^{qE2&S2 zJiftthX;TTlS`tp|Muza)XQ$~aL*^rB5qXJ`WCxa-X7bf3-jPrF-G)DuImb}NJjp( zvK`h0VhdHW&iw_(9XIo#$f-p-tIF&!zxijE2p{X6ggb0hH@Q09Z>qeIjO$!CxY1T= zoRikL==S*W8n``=I08e21AdQ^VDSfhSN6Y1S?^+l_z_Zu^|^2YW=STBhv?8wL)Oim zAYOyNlUx*%A7!p@Dddqk+8#$%zK~^S4lz&?|99p?lrQwHN^7s;xC3R=s^bbby*yNh zR_K!R=Vcvrvqcaga!~iQco+Q4n5@O>JY6mU3WmDBK->aDiRO(m>ixQ6*BGtvyCtjF zC0P_LJf3pEoT*&#d8XxwjB$I}##0Ij{ZD=66Q<{t$|g>_;!KV2Epfc#wg>14)zGh+ zDDG8hb8Is^*P~FiK3&_OlLlQXc7u0H9~`pOJ+Qy4#O~*bcjY+d)S6tIJ_d%sW1ToS z*O2HGpq5`b#cbi<$;Gk@YXmCy(7Qe8+WEICL(eImGCe|#n0gWHD%cRTloMkw-f_i1 zhGGh^L8hRKebI21z#*AbaHa}p_d>%)`~=vIN#l>>2O#b6$=?(siXVqtYdEkeRK4k- z?1!@{5 zGhVqTmzW$~kNUmZ=J>G;<1 z{hMpZc|f~5rSl*)7WXIMS}R@>&&8bz^b!uKJ+7&V_EgBt3H>WS5&wO=T=D=uQ|^&2 zPeM&_F5udGY5_zkN}8vOp&orOBF#q^fi){J2k_&;p9JBg;H%Mo0TA}2L>CAfXB&8i z!a}V1=D@#@k4w02P3Nd;cFd1VMJB4XynI0AM6k3H=xWSMhcQF#9|ANGFG>y=LPy*q zy*ph*zU46CTPTQ8N(P1)!iN?QF7^drlRWXIWzJC4a;6y1!}v#+*nXwi>r%< z+FDdwhQvFi<%{i|OVVOBW!r0go3vIzs|D{3L*5z@?EOVeER0C5<6f5MH}9x%X+;Jv z^EySiy$@wdC(l|Kq&8bp7vi2>d-jm~vW$W^uWO|Ww|Q1gv4=~Xky7d7sspkiZspAQ z20kV&!5G`-me$FqmBCW_!Ll10!U(0(8yv=c*BjK#F}|k8mc z(srpU>`R^B=+bx^v(yI2T%8D+JNxqpS@m?Df{xC%8n)^1XWI_+yx{HR zpKrliWPE$NF=8QoL$@<3vF}5qwRD;pujp&pYr04ZZ?uffO#U5-f>f8!QB?=k!~ju0 z@sqH9!0G2{HjgGOH%@{LVg7A++eiIurm$|-x{G4-hR`gHXT7vrvSAx}BmN2Tm4}#H zmEsQ0&RD1JX!jdt;`LWXUbW+!+4<*X(1eU;zujCD43;>CeGx!PRWTg)iI!6cwMOG} z2FDHiwdw_RaooI}7y?X6dLN*1WQl6y*gM2gZhMn_er41NJLMI{{~bMh{Sf4`RN67a zVfvj6!CYmAL8gQ$t9yFs{xOhK4{^kXmD2xM^_TlGyZPiff15oZ9E^tWnCQx`qb*zk z0XP7>AdNC{1Dd||6yGmzz9na5O@}^>>Xi(7+QXOQ^hVbS4Qy}l3V9*6a<2bcVG|#S zcXODqEh$jyi7OBDw8miqfJ1G{VDnIBp^l|rt~29<$~1dWDeA8*S{ynG&Wrzlhe!!` zyk(ia1?@g}UP&WX)tjvJr}`yWPj>HI#{vR$V}ns@w4M2BjoLOUIamqUBwMy7r!ay3 z_A;x^n8Z{l!U`+A>ym6YZ87Jm4%ekg(F#U)SnNR~m0uc*f9IR3=*=VFu`C_u6r=+k z)eWTs(^Saz6T0#e;FDu@FiqZnyoztG4&fE3ea*AWAQMZ4b-rdadC>PCtceYCpIS*t z>?0SXY^4SbZ6U69)*n#TZD*Z+PQNQ>u3J)|r=08TZ&WaNm?E^aP+kC+s7db#TGFXc zJx%pWMp+mqQ->u&@8yQgspT^T!DT^_BDXYMv_p z%@#rh$Av-^&npe>V0(4WeDZh9D0Z{k_thCUe9at*Tq0)wAiH>EiC5x?YS)QV*TPV= zIcpqH{-Z>+)I>@JHOLd!MneXQbiW)nu{EK-9=f7IV!us-i*j63<`AHMQ!s81x-)nR zItx8WaO8Blf>C(`SfAgivTAJ)4DYzB#;uj!>=&2<>(La};(}F9B(r`SMiEk=;6p-` zXUVM@6f8>UTWxAq%5itAOusfXsCzIm%w2IZq@&5?Y!~LhQle7{tX~vph2&c5>#058 zi|Y^N_j)%d|IeIIq<#S+-%wts7w&M&OmO2sq}QPLe3n;|A15&L=X7R>)HJ^N-!%|4 z>&lEe>yuHE-ecvlMneZ5!NM)~gb9d^4GA4yc%)L_KO;>z^hkOCn6_#%0+Z|*wxdmP zCLp+cvhE0X@&8+hpp$d^HK&|=7~qG9-)YW?(q<8PG`#IHlpv8GCGxEDm(>b~0&H}h zqT^~MB$8=P^g9?&?1(J}1UvpSr;z-XN#)uQmL7(IEs96LuTL4&v(-kz5C9JFN>q#! z1oLK0=hhM~jC7`n0N{Y|MjK;vgK+uT@rcc&>dHBh+#-kGR8-w7BUj!lgEof6!*oQX zxc3^lWM=x(bbeqJAbCyX4nubFBdH1QT=DO2%JzwCtpKf4l1VB0AZ&hgVrr6byK`8M z?1;SbNkLzbXeZ$!pzUolu%%TdO^x!8pzcSUiGc@!POfTv&ZQSlSn*X1+TX1gdZP>A zrzwW&)t5qHLu!V}qVf6zntI$qmV^f+ozs}Iu&QPRB)tDb{1PeqI0@{C5}2!_DF~uE zxe3jfSC)nQP)}-excN)fUZbDGE!lzBrE)S!ZJ~%+h7i>?;IwV~Dj*Jgu}Zb9{PX6u zRX*+xOYiK~6OX_F)O(S!v%8HS&xTBLmq!5*pffs&zA!of3Tt&)VE+niy|HYlEKfWh zXG$?};Rhh&;n*u^eux4g%LRs~wIkQ;cmOmv%rPMU(^SWr^800g4pCoWb_~_faf@h) z=7SVNQ)XVd4%a$HhcK9UK31~LqV)V%JC5>@+hrLmk1Gw+kRtzT7uZsB=S9%2VzkCR zX_mFbNUaQ zs>nru_^cwUuJCD2HqS3@R|EW&MtLsPkl0niw8F;#zqpi+bzZDG5ooAC zCL!2~WdaX{cZ_9)+C=uIX8s(l0((ES1)=3K2(rC8!y9Me6`HF3xx73JAXdOu9v3Ad zHx0Hvq9y{L&_kp8YnVM$pIz~Pt^)oCru+2UdXAY9M(qbZ{x!TayOj(FBmevtlvvy1 zj0K-_NRz?jb64hZorsMvhfi1-)L+#a5DoXB9}SH3q*47Tb8m*ib}!|;wZut=atiKf z0D;R>0~L4nZ2uF^B9JA!#HC6lE)`axW%{4A>8a)jWTof!-n>hJ;IHGuH`b!{@-I_> zhul2#XX~w0w&(^EpOgj{!RPMo2$x`P0UIi^5+-sCa~Dp-hA5wY-{J{5 zvJNZNX6RIBIx5fhGEUBY*T4+Qa7wa~o)D4shHf@IJ22{rsz>VQ!U`n0m$(;APRG}o zKAtJ7f5i!nSJoOE+4fkr((jc8kmW^WqlabGE7^FTz zb{OGe472rC9gSE~qIU%J1VK=&RBT-&GHvE^ zT*dS?$u{N|8B0Snfi1@;!_3(Emd+gp8sEahjO#LL+K_T*jC4IlT{hhQi;zGcSP6Aa z$v0N^6+^>*c*}MH-4E$d=}f^&ww6(wLsnYs5D-jT|b@5$LR_vBVN4_Tv-Qd1LgCi5PzNa7X8h%-}VM4 z&4t851x_vO2nqX_JC+{K&~wLj*QJJ43R452>$?OR{ClE)m!SV(n2WBHAdF&IXn-UH za}IoqIZ7@n6ky%W`!`qhsv5KTtwhFt*P-6@b>M$MQ7&PpG24ZT3hQ*M-?!^~Z8(Qr z*GveW9T5BIDVzs#bu(l^lzdgwY|hM0fZzSU4l{*D#}rE3|562!K|B@@xSRcn&Jcu} ztAz(q+1$xCCmc&$k1AZY5Fw4P%t1Zd$F*g&FW@cH)wvKoaPD@Y=?H^>UT9-#_g_#j z#hMS85*yL*|JPmkJmHpPDWTj9{1RM#o*JlA96R$|MGBmFD}N)|ZG(T*lGx4kaE93W zoKJ$-GrGHX&UrWvune5&?I!-h5J@srz#m&=nL#cz%beg2j`;QAm>M7TwMon%*~i*y zW@?M+(aK4)RKhBH$11GR_vj($*H_SYLV7A++-upXS9!9G+-8J9zJpMd=POh_1!aWW z;nbQ^N9fVRS6n7TiCFXlV-)b+oHK-rhUkv&p*EuCJ}76-lBQma8V1=SRXUe3Gq_F9jUEWoKSAh`B%*)S z1zYbwIQway&NAI-3z`rU$L=ZaSp5k5zaFXChO}x`+}7dvSvNQLlK_6U5$T6bWzfFn zdlU#^sZ2MyRsOxidbz2Jprhf{kUBdqvz<%c(??b>&$f;Jl!j2eJ|AKt^I>vNG5fZX z+Fr(J=R}Lh9W;^~)sw(1PKh0IA(0puYBQK<yaCz|UeII`3#b9}Kg1WXbzwf{NHokSnva_iMxsTI9*PdyxUQHnH4XGf3 zpq9TH^b{CGJU&1I(d5BNYjjlU7;W6*LPvLhJ2qLlxqE#PZyLT z{C=6ZA^&o2oc&As>VH(n)`UMn z%BeQ!1C4@luXlUTB|mg5w}dPk+>%$VXG|5ztQRGns+MzHFPx(GNGN0da}iAR9NW`D zl8m%2=CJ`k;OW4{M`TVfQ_o;5a8XTJWe@IyC>`hUbZH^_`cRr#;PP5Pp;${(aSb}^ zYj_FEpAh+e2hb&6xe&ES@kxzCxinvzd4E^0>=hKNW7`oLoU)m5UzC!Tz@dGSV;osJ zozqC>iNJrG>15b=TDE0TXl-`RnQTaHX5}eJO~`9IDvj~UW>2o#L^1}Tdm^wBLN44C ztK0T06ltG5g)#G>I$Njgx7q#1Qm6#jv?_iKZV)3jUyF?TR18dtnB30Aw8NPiTsXKA4^c z3@$+Ebj6644mq`mV&!f|xy^fRbn>52U5Hm+Yre@So<{LrAk#4s2`mFMxq(&OGl5|I z&Lp7s$8MeUTk&|+Z>%pq66Q^D>i00rz|%Vv*?0B- z|2IBj#Op@|XIk?);P+7N?y4tjm#K<2^HIpH1JGBwOdIjqe-zS2ovS8v>Cp2OF50)OHdZ|qHRvys8qs>M zbBLOmHiin(x=F8y&Xbc3&MhLvFdPe3975XV@zxbs(B&#k*r>Ht>!aC|d_)$$(UuZDEah3MJoRJ@ z5qgD6825?R>$4GZ{j1k~R))a}M(zI*WRU2u!ARblu1@CQHDN@Hx( z18->5U2*2-C!Tn(ir7LURk@rKiMJE_O<>siqdXuk=D}Iy1E~9@d z*q<{1a4*eyYE-9{OG9Rn67#80vCeq-t<>=f3GI0~dmEQt-|u@+lN2Cx%wuGq9`}Cq zh12;BqAR29GDe%=?$I4nm`?u#0Hjag`utHhe04x>x}Qxz%aO}jTa&-WcOi7&Iph$> zTvf!jS~g=Xu+fRI;O;~rrjWA?yu0UtmIyiMMB?J5I71|^O26qV>w`IsMWMS^f^^aX z8`O=@(@-j3K0nAOvE*qz)8=UDt;tRsmx{d`O~o*i+L%LPNNIe3g@$c)2yP00hlNTl zx#1ihIteT=n`14*qHif=2lQ?aPYIAK!~327Ci#Bkdj`z~piYg3E9nxSy~0c7=ahoU zh)A~8zdm0&MC@`F;BZkYm9yOSpVlPm%}*PQh?NwZ5Q6hLue)^vWVO91wq$=a*!{m9 z&@kF3#ca{Q(FWt!vgK2xUO_jW5hZ5j!Q}uLT=gi16wx<)kt6ElLr#Pyw0j=fmKNWG8>O-`GNa6( zajmUSn8wu6o?H7K(Z3Y~s(T1%K(u6>oL9eUAPAP-1Lp^<#bm)7+6`xG8pw|DjofJs z<0tn>3;)PI|f@j7VxAAyM&Kkq@nh+eg)4oSd#GjJ(oonB&vlp+bY@mH?&DCg+Kf zpb0Uho62>33QKk6M%6-trtqx)Jp{zY*`D+22aYp6W$BdhmN5_42D+I^++!7U89K_s zH?-}Z4gS|Cus1_~3D3LiBZ6}Q@y&RofvQJH4%5&_aj|2jT+1c9E!5Z{3hvJ6R1+1Qf;Jt5MVXrM;9mRHC);K?>VmWU#Eo`4+5$QjK!fc_ueMuGLBnu1v&1Qkt6?=z76>*lzE#5?oOI*0MmO)$ zjWLJ0$|Z$pQ&r?EpC*E5-9>69g;7{GP9NF% zR3GP-B=rxl&^StRefQhw4>L~HsE zFmCiQ{7sE>F84jIoN~YAX+XAyV)_wU72BySSj&ot;saafy)AM7c0rTYl+S~|=`J%LcE$@++ z#xB5qau*J+7_Jze{U#tFs0L+<#lFb0MUs9YA7XCMnlCS>doCOi zuV3@PCA($Xb-^~up0AxRHsQ8yuuHs{v8pJ_+gy75TeIB_Qmv2W|(i;9YiWV3V(POBsx2@gWr5qOxJ*B1Ctze32o5^8e z7q>4Rn_{PST>)-4ZL65o;_T=pxbw}m9P&WoP@vrSvJCWJYD1=FkzN7uUDJ#t)Y=UMQt?05V`7g;^1L9;uL?N%!C(D&o90UlpeY)s-Osk*%L?dH<`6WNtGwz`&m^ z^8}Zo{rFg6KHOey)f>^Fn-MQ(*G2cDx(vSJ|7@vf6pMhZzuvSyMP$%hU4SHgM5zVE z2hsqUpRy!d#o25G)6MEuSHar?@!2Gg=B^S3LFwD~^57o;g^dWJR&tuBV zmXyv^%5bmcg#8blf(|}UnoGQSXqqQ>@#yi=%UF&kXgnMOfWQbSDD?T^cu9#$pS^wg z3M&*Qa+|9ZR^TlCZ8$XYoO)@?L8rpcK6I z9ZTqyM3dWfBNRj@!^-hOmW#NAJ1BgM#;ZNiB_p>GISPxWaQ*aWOCP`wA!47Q$}aNE%Q&L#iWuC-bf+LRsi zOrerFwG^7d#q2eU7V3{R^J|Wd-+$$IxPSuc!O)|=XdiJ*w46UlsH_O4vMq2-Jq+>n z2T2|ASF9yJ`FE5&?ugW_u5s~XbAEwjWQ_J$witlsNiR;nmIt_W+f}q>Bltc%o>%IK zR-8+roS{#Yxblv4s_|gb^pcq>frl$Y1r3Q-Nr9HEP5kN$BbK@lXgtm?$#-Sb~5Lw>k zZ#{wyFc!%!tXW;~56X9lV!h7y!gHoUMWTu_yrHkEk47)?+=+O5sNQc!9rby~qhJjP z8gSVi}xE4%w_@y|T>YG13k`Lx?s`|@5u&ddu z8A@%bwzgFq5lx+0HYW?biq&t{Wbxz+uw91HlYQ#+77G| z_%y@AtZH{=_^p*0EKPIWhp}MHSKe)^irH`dj7JpsML}~W_qi-;uXD)3s=6q<6kdZ@ zr>S%aAcSnchJJ|OuvOV3H0BC266RO5OUV!0$spDY5JOK=7XgM)KCarvdrU;*rUsc% zP6Xw}X1XlfqxoIev1^e`7@Sk7jPuLk1eF)1OLuUk1Tx`4i#n z%I+^&{^73e=z?rssQj(CfGOf`FA~zqBCKKQGM;|Zh(2m^OtSp4CE(M15uc~4LFnZd zxyW3&+=j<+W=;HyLCha0{*A)glpNT?u-|oHatI7!;{TMHf|Cz)gTy*X;oHG4`|tz00n(#J`2F8+%oe3(PByYXj~Frn(P4tK#+>Iz)~-4)08wt zOgAm*cJ!z-a_t^M_-~K&60dZ%@wQqVjg@vR4BWk>Nc{B#;7PfE`WH}$OM%LmErW7A@7 zh=kX<9UAW(kWrF_yg++CuI((;=7(?TkPoh0=8HP8@=3NB#SluKiYAnla8bbvaud6= zEnW&p`;~S5E7z}CPkn5}uW2^X&QYaMgkjaK?80Nf= zr$`&}hM@*tz&OFRfn+7zw$gC(TWZYiM6bR(O~0W*)Qjv+M?cq<7EmYJ;fGDbS_-Q( zyZp#)m=bI~sZ~qhclb(F3Qy72PEMQReuGGBhV!B^ z=&r4=A2v~A?x8RqF@qCdhTwHj&BgaZQM4%kPKl%=p?Q=Z!kRGEjKF*+p*keW(8?Yq zWg1EUES@ZGhO1u!@(7dh55-J9?uVPL*+&Y(dal%p*zXe;EzB2XV@+FmMxYlnij&vXGX9z zJCut9)@vVt*ZH<(o5rma!Bl0i!6U2Woc@&*x*}YN`a@6`bDtv{#*aRe51`Gwu7L%!)jPSUYvM3 zGu1NRO?4j4ut3c;jLy(}?9}?CWjgN3(E4Dvx!M~464gs8y(T_jTdr)7%Wqlb{_j>Zq z_)y}c<^#l`FHm#Md$t4UE6vS(Uo#3LDf)0KK}wTJGn4b#;UawsGi-&Vj{8Mwoo+Hp zxNb@C|Lc(-D&HB2#Fs#JYiWM%?GrKJc$sr~%^_PN9n#vLVa`!?<|puQ0}6@wcZ)W} zBEHnuIAvLUkB|B+Gay2foJ=Uy7+g0&7KmHBpdnyo+Edm3yZICit!6hhqIG_ZERLXq_>R{Q3b? zZ7=ixpans|woR^3L0ZcdgAK5yGe#-)tD z70}|#S!24`PmW=}gBA={FZ6+>wzfjK&%>Xu)xk0>^-a?lC-?@;Wzcd1({xp=yYeT((Q@Of-lnmvwNhrcksGuC7|k8 zY(?u=&|&uf%^Ut=CtC&VwdH_E}?LXBWG*(&+%2bL;<( zOd5-@#E0vY)xa+cK; zNyVd-a5!bRmUgnHaR?}CnnGiK{ApM6*!wtp!qIm#HN*h(CY}|6vpKPq&`wK@a^?6>zRuX_4 zHvCyaZIt<)-loVErFF4Lme*iY7GHZxERXcX>q*8^@yQB-0vvLgo}+m=)xU>k@B5B# zqad>XF``yCC@_M{MjTJu_3+64LnS=@QTJ+LgS1>IAioeNLAMkKxOg3HxSix+^CvU@ z;>V&p-69yRKj0l(DiL!Rvq1yRq=F#O0UMKVhfMTe)%~6?-fW*Bpi4GatH51S? z$2xk?G}_9?6Cq4Iul3IyOp(U@KamV@dIMSy(2NxEkNddJu6 zQg#zBQ!+mQlwBJG%ca39A%leOok$^bqERx&<|p}@1N`oGSoivOFx1j1wfZy35)8}! z1V0=@c+(yD84bN2L0S*n2nZZ5Z&O;WvL@M_CJ#n4dOIPARHL-UfoV)7l|(gg`!Gj& zq%&;GCQmIrHg&5?;mkbMSb^9h{{gxIq>Fpr0di2!VzuL!e0kkJub+L{DlG+=)ZdI< zWFaJ5jOpewJ+25s2kQ9vZd;(vETH!OG1hffXM?6WIf}ApkT+w}<=wrXSII5(J4KFy z$<7;(H8j!(#&wJanO-*0vQ+$B?sgIfvZ_Mq=awK~4w758S5fEz?Ww*Ovrbyj{gkJ@ z*Cj>5$&ztweGA#oIk7N{8h*xua`T0CZQd$oqRK(6nu+}v=Ny&=B?)w6EJ)QJQFHHz zU#iL%tv|vpjPa-)C+`DY7A$&hn^mt+d2Y9nl?RGHhq8;JqiE;2IrJ1Sn%W9ovrZX8)XZ3=bI6U^BDL6kiu zgnN&H*D996#T!oEQkPhAKQYrL!Gakx1IndNL<0ta;PP*CR5dHDz5Dz?x*QfrezQ%K z=EkKjLiH{!1lDm2R{YgwFX4;MMdHxcd~j9=j%Vq{WOJHh7Y&%r?jsfDE*%_%4bKI< zOxuz&Np4TS1vOYzol?;e?yw5!u0m!qhyL`&-iFuQ-p)R5==h?b6sRVPXR2X5gza66 zyS>!ctQnHTuo}G!c#&DY?UZ}V=~>$wv0{XwsvuE^1QJKh|^vZC9g z8ULSqF{(jDK$q(fC?jm;-z>5&?Th*|b$y30A?_?u3V*C2PK@I{$=lC{~)stSN|ExF|4IuUE zj=k6TMo9(s4qBQ^T|+7WbnhGEUE9%9<`a_5zct{ucRr$(4`N*>M$#tYR14YO#)D!{>B{79$zKtS(BbqKyGJxq={+}y(%!~bx2p@IvxqOR4KqH zV_m=29FndDS4Y>bhCpzR zo;HRrM`*AgS51i;X#wAsSPl(+;=!qrOT%yi5G$OGsYoOMHaP(Mwv07t?Y|^M*j@Oq zf0sWziD^3VTr6gsfsB*Nn=63mW;^U%>@6VxmnWekC`xUcM}o2WEKkfEVnT_W>nIQD}AeQIAhD| zG|EZ*q43JCx8*aCIrY&jK7JrVajc8+nx6p|?Q8VEtLOtrJo0KCzl;4_J}&p&pO+Wo z27ps9Y3l24w}Vy6x~KD@m07)kGzG`?xZr=F? z5F&6TOAk(r;k>rPkew)YIQGE?3h2qBC*?!H?mK4oeK~BR4wqe4`zA9*zsRDvM5&$0kr`{fon&TyLz^D9fiMSsU6x#C4= zr(}~t6#oWnj(8*=^EgdAskm#r;>{~QhNWtR8J=LDx-*ld7Zecp=!MIDZE$mv#fVJ# zYE*S$qKPe&B*XuI&f;|jyk6j{kQXrM`;-L~^9sWmaj(hZ64U`b48bphW%F=mil=z)lQ@3HEy9v}^{>KUU%kxuO6s|+=PUG^f<9sFThD$0+cc1`kmZ|%8u1EKCz ziWADesJZS}Tlm|)>|Le_Sw`}4<2JV+jyhIeUMK#6e>RwB0Xg$G(oHQ4@w&;$wVeAx2q<+bO^BxAf_ZsK z*HfE3Z)cF8F@Y_ANLR=sdvZgICYHp*Ow-$_&l1o1`XShM0SC6S9+1$h2=6g|o+ou3 z7h!?C)?fkx8!!7GI?q|~BfLh1W0Qxiu98Tq(d&YdZF8z5BCQiM(NfaQ zYyAQ-1NEu`q#C7ZMZI+XRKn`I1u(t;-@Ep#G>^?+2~p#!$gQj2cltjs`f((Pp9+7v zdb(WM!Vmw3kDIPKIV(vR7}bbFZCi5BsDvo4oCHO)d#$v!=TGUO{&EHU9~QpKN%ZxV zKSl$eYLIOITOsE>FXZt&Z75XZh$Cg*ZNN=XPztt?kKi-t74e_N#_O2WrW545b1^^`ovYdP5M(ChC()$87L#6t9vBlP- z8cyN<(A#9e`Toxx{G`1kJb4;T79_-OI@AR&SegD>p919sQ2pvKQ^KC?nJ97mPyZ&2JlS?i~+zs61 zXq^I?MdMpHCO|r~UkQDzxCUi8ih<0XV+(5ufhub zc`a-Q?K7hM$WE2xbvknodK}iGoAM*`aa`~y=E#*6w;2C87C*BUYp&YZICROCOqdq; z0I1@45O!sAY*R#^nsiM-Ut z5LtVLnXH?iJh8!)Suo4yO^$mhYjkj$Bp>O>NuuIao{4FaHIM>Dfk@RmES?=+8s|ZU zTS#1KheGNCRVJJkkw@fe4K&5VCAI1pVT2Y#9SSKQvstT#0ab@TPGnI!oWIcO zT27zQZJfd2BK6JCDK>T@WK5}S{9Ce?IeOvLUY^TXQ?oTh>HkJbJ*~DsJuRK6MQVZW z_NR|S0)Mwjf87$FhR~l^g2tdhObNiMpGrnyv+}S8jXqzUXHKhd6@q7CF(?|$T z8-M1pHHWF&2kf6gUo?Z4jCLPDK<>u>g;C>to@-v2Oy9o zozBIyl#l=?mx<|~JpG3bnI8YZWOB7t0p6bwxGm6pWp$aCH*kYF_nE`E&Vlu9-L84= z^QI}zUq^EV+|<)v)-%u`Y^`m{uK=P59rK}Tm)qMOhv^f2*+FG`#wG0cBYFfPS8JfxQ_9q>nz4-sPB$oygmdFhHG%zJR%+8oOpk z3z0z4I6gP&DA>Mm&_Od1Jrwj)%e#?aWw$?OxfrC-V;*Te6EPdM5BWgquU!SFo1`7N zy6Eb{9|Fcx4?}l@S&3$yWNMrUWSDSF*(s`M2u)AA2XO0 z=-T~xOT22949vPzuvLU%+BU#3n>V93qTKmC{1?oH`;E+9ts$kBw5C)pgfACy9>;h*UrTI( zzHLvvYk`olv@B22XR?cR?G#D2#BlwFqqHw;uIIC=%y<6y7A_{ZH{9t*H`lPlS-lWQ zd(3K58bY4g{7km!vwlF|`geFniXsPb8NbmTHonEKeZ?1keF+n)n$<2Y06&@F_ulu7 zabiw-)ZIXEqZZ`Qkp*RSHk>suI#!0?x7q#g4i>-?p-U;B$_0r;MS~+ zv^rrdC@7ulQUzdfpj4>L5d&NIR&-5f*k!9GP$R`~FRS9z3)M6DUtK%S z@$~ky$ZsU_i2|xXjujA}1x)K<%@QY-V3{ItYW?H@ury`udl=`P??`p$oo`8A6 z&{u-Z>Gf&X>@lCspE^43KLII9$6pT4SPPZQVF2iZ z_YKG40W->(-u!-{9glwqFc(mzs98YB8R>2zhB^t)(aRu2^o&MCl&nc!|PoUV#HTo zYH#2O+r$dna|)OKpgiaV+_pPv9R4Dh_6=>i8nC3(%nW}t?3e<>)9)i4;k6WD zzgDt?<3_v6o$dG=!E6z21(tX_Or0S&Ibz0TgY@ ztqOt^qwJU|_LS&{;yA9p=UxHSLh2G)MC?8AYS*iLswc2JO?4EvlUXq`eWqrNt z`dLat2m6IWswlyd99m^C_S@^W9kz9va9Fp#+0A&j=I)$da^;7i2wvJrR7O%-fgIV% z99Gu$)w_K^_XZVp3XO+ z($p$Uo#JmL)#2}X=Nz=s(&yIoLAf#&(~b@prWPvisd76u)vj@@C9}yUA+sc)w{ms+ ztmCrB^bc>gqk10-oK-z(*OfdD-51C<(79DitI6`m;1@?e>^d>(Wi0s;%&eWV~CD{!x(JqL(sG{7u z$_|3iIsS<3MHDDPw5cb_lDU&T9}rnEF+^Dp_ohZeOLAe_ll@2XEs!2A0nST$BM6Dz z>Wng8Y^78;`0yDVq{6fz;O6#GMsS8CF{4nWjWzy7UULNmvd4@5h#t2}@{@ZB-BcfD zq~iTJb=NWGp)7c?$wo`vDhmK~H#`Qwc%s%xKxaRCb0U@tej|oFvOwveheWVyVN_G! zK2`IU4i>)5RnN(&xKhLHX|DM6{BrXyB`-sUJ9VrrrNbX=hs^kIYUrBKT`s^xhN>ZY z`}W9DHRDh>yk9rGdZ1M=gy1Zgesyd=Wo#2?$SiS(BXb8bcLqMcK7y5w$r(it=OQ@3 zD1O|7%Ax826Gq_NY@#e1b5k0AXB|oq>H0(3yiMGzD1RK{ zE`_nh8OS}J5ye0uxsfvQx&X^Be&FB6_3&nijj!B8znY23n}!wmWmpIHPwr3~fi> z1DrKy?ib2#WM%VrX#r-$o+G_{coeam?6W>Jp_=NQbw`?LK!NA945YJA0-fvJ8-;L_ zbKLp-n$1_H4hfsTX& zhhkcpI&A>FaaiFbrdBQ@POh}isG$6TRR+M@!8tG2G}IBnoEgyv0bqnO`Ti zU#>mKG4=EA$6%pp#2W4ic47bq{Y^)LBeA`l|K)%`4Wlz-1z*cEv^o75XhUP*i^N!d zp}PhhpqChA_b%nGTORfij-7itUFcwIitpkR>=G=-sqksB6#NPf)GE%w19243W%{5WEk6d&Yv45nNqJ< z&K0j=e7WlFgSAC@8ONb`l0pNNg)q)SPy)sq<~E>~hja-RBH&NZwlBwi7XYcYUAC3b zTR*IM1rtVidHvDsRtklpM$R)jl^3)ztFw zE9YtWmpxtwbB)Q`=_%__3Ic&i|GS4t8{;OXqI@2>+;cb%ZGXuubvI_YhWbh+i=Q8l z6*yYc8+B(P_2&1a;ktiRC<$spUC?!T*0eT~Hq@faJ`shModBOZN2a4HTIlo64z!qK z##xbO_k{2A5C~9VUm2BTz;1>0TYCIxhyEP#;v$B8MM6uQ8SU?(A-bJ8>)-NL%YL2T zJ3PS2)O@7FS%^)bRf30FV`~GwhgTT&RSt!rYsgQ_v_$QQ9a@U=z|l z?O59rYk?;EnKpcu^l-}$F={Ip$Doo9BnULWl(#74Is#aT4PS;s-GM6Lx(#o9TB!m`!A7gI=1OzaqP8YrR71Ug;*j3((U)jSb@*KiLg;?yhXZfs?b=W`h=`kk^>y@L;N7P*5IQ%u~tK^BSwpaJ3=?3_4Ipa z(Nm514_m^EmXo6+5|az)ohUI8`@J;JoSaqu(~a#m`0Lil=$c2{^b^Zx?-fKBHQ{okUQT_^pSuAR%s#12-kaHEA_3DWCWFhmV z+YC~X#so*;sxW5WD-c{U2WBoVEGY3^x5vh(HAGp`b`PxU_)|gj-=0V>`FbWrb&%0K zbee3SH|yHLrGZrU#B!X(CG%yt$*R|MXt1G?iufWYj56yqj$`!eiQ8 zg8}dXkC^WprM<$D4h+bE_q@-lzoOW3Ro#lx^88z@NzEK(Ft#oYj{(g}{4DE$dK9~u z_^n5Vy7?l$ur}g(MPXQoyD4U`_<51k%KA2;$s$m46D#}Dv@@O_SSB1t@_kssy33;E zSFa=2>uTx9HrgbGzlS<1&MF$i@O(QUA^wz2661JqrwXq1X9|JZ!8&mAda?UNd+XZ8 zEDRyLSP8{ga@8@SYQ^HqZdw_!!TvWb9=5{C?iTK@=7(MvAUk>MlqAk$D_A6l)3v1U znN0$J|6JbfI}YwUQ`{r$o#Zx7_zIo3ZOckLtLvw z#o?Mclg&U%b7S?S3Zi2#y!T!ViwpsC^&?n^KqIXF&{-XEIRE|N0b=vXwsCx8*x8%s zOnDIa@q#~XDIguyoWHDD28!i4?v&Z9^=Vt=-Uayd0i`r&dg>iqdXO|uR?Wmi|Ew*N z8f$O{UDDz;F(24Q`QZT;=J0IvX){-TV~ZH{er7_hfa7M4@inngdi3Oc-~%HQnloaI zrw&1(kpd&;{bk$A$T#a7h)i&|*fA65Lp3tX%Xt>QU{uq=#_`V2EDgim-v8z%H0v_M z2P_jmtjJ)S@vX}Vt1GC}Gw&=Uj%+Xsd@Qv1g29o3sicY0p;SeE-*%U4vKnfGZBOYR z2!(^Kg&#Gy#46^>?M(W59e>FN%*mStIv;jO{17hDj5K7Q9Pp|W65B>pvPfuQoEF~! zKf&j-#=`sJR1K?lQNiPJD>)1ici?2FgaKt;oOJyV-Sa`kF$=kDl|qRu^5axv&jyHB z#QSe(@jW|Yao6kl6Rc8q$Bn_rHT|L9qvM1X)Uqyy==Y{3G__LUY}pP(&t^{4GZtbT z$TmB@rBi)hD^XAqSXe{PWtwLNl0i46)!hIlHObT{L#+3mJj@dQ9(mb4^InVKwN$9o zGp#=u%N~1o`OZmQM->Dy&Bsaz?3gpni=Xo~sYjjB8o~;O^KNWLrhF$7!pqO#+Ut8l zl9-D8B7Sy27)awEr`-@JNh~{%c!a1kv6vo087~33IHZ21q#w&K z>2G`wc!&iQGB0RO$ZW3pd6o#0)H`ZWbLc8?GK7|$Ke`JRcx~D?77k0OZQYRrRU>d) zv`>STvFw(0HZX{~iPkfDj$J#bbqBxvWV5v-I2?aFn`wNvzxCBmyN33>iC&DEg0le) z8%Bpkg1K*)1Zz0UE}fq;8=B5l+wymZxxhjRfE%@0c=x$J8B0RbnkpbLa^Vaj4^mdx zoua@b5LGEB28+N0Ikn*P`y{+6hUH(@ycSUuCgHsy8uf|R(2R2UsYoM}#d~eA^SyTt zB&NUGe95E4+)f1va$d+OXSxkcnEA9(`#Mh$j`DC;ZWx?GPnP zLZnJQOm%t@F00;LLu5Frr_nh+#az{-Ra`6X8lvwaamtuWTbmM^c*8^B z8`~dapR2(+Y$?(Iq5cX(B1W53yvp{IMS1Eyh7`Cx!~f|u{!R38+mNF3Jtv$T(HIe` zDI>@%bh+}=_-i7eCbaZSh+7v&$o?~h_<_n5s+z)`M z0D$7cl3V6&&C~_=7-VSu@n^vd}&)Wp|R5 z42CD&WbXMlKlWET9WQhEpXd!a9gCh20?h)Qi`)nN&OkRXl*+r`dXb6XV;BEn%zn7- zb=E+mNdrbg>pgzKVZ8?*>lT90UxOqTWiQT0odQyC?9`Qvp@#_CP7Qr9gmXXIj-(hT z>VyH+YsTIOkT+4!uL~}4NIL~47;QnZ$YjPE-?knfc?dcqx|_-L3StBH_PIJ|hGYmX zB%Omcfbe7bJirilodl#Bg1V)X(^q3WKV*tq@g>_WZ;?AD+#Nu(Y12|NS-2VEjO7e# zO)0thvQRyF8Hj zg6d#*s-{!funa3_FIJLsj_Lc;Gp+TeDbBWfu1>dsCOwi>+-20VOkp?-r0@9HaY{8>l6QteY!rH`hU9Yd9k-D%jQ_FVxNnC6>kv3 zY9wp0O!SffYq7L1=Z)OJng8;3CE2} zYN;&-^mrv-0jY?RXOPP@t4Xfe?%@#1feNm)mnr6Q=5t*m_szvVLWJ(RbP2(ir$EP@ zVoH0l$aeqW^r_%p4O;i@L)?Ub?`G0e7F^r?T_u3FippCB4$@w?&wW3e=^YzSqYe}l zFo|Aq1aS=uJIa~jJi!!AIt@Tk66~T+B{Q;;g;+8tY~A{;7vt-{Pl`;D{aw_MN2Ovt zU~mtSr8}NkTkhha={cJsBZZNu(9_tjZX!~aUP~lM$`MvD?mlTwJ)Rz#fQFJyi>=S$ zlzoWFBa@iGTPJK>DVfMouapleKkz6E$hA?BxZe*>tGq0!nsGW6HFR6n@iXO2s7mnf z3SFUnR0auqaG>ijN7@usF6MmR?ULE}T=yr*#A9wzy2mf%`Xtg4wKx@7I?RU)M>|o zX7i|-#kYKdvjMS%tfm00)osql(}gf&etH_UW}bR4;TqJcrA!y(d~k_yNEeVZ3iHDm zf;(uxNgD6RdsdywwBX;gVB9Bx76?vBbTPT*EcGG>0yp0d;nGLcZAIt!{tCJqmt508 zWwe2VuO-<5(&d`Jm%s=;&~X3|DT)hT{3SD zr?1|q2I&ja6_TqHS{ec25iMC915y6Z+Kn%=0>~W=Lik7DWUk%YWi61!4lH7q(m}iY zm|>lfB8NJ$>hn6zi38jU@P)0=8lF>lX!&GcrbpCk+qIG<|5@j|g+(2H9bvX{|HZdI z)_@oVTE!B7CK6M}K~{$Q)*kn{Vk3B2q|@6r8vS^s-B+4W&Yd77($3~u=z?)}WjWkJ z&Gp*<(8$r>Qq66&ri7aqf`ydh@hlxy8MA@c5pB|v(q3sy$+y;{^M80=fBU^l+beY8 z{xV>DYH>ERQ?x91A@E~k2PxP!_Iy;Mw~Q+!#;+CW=-+c{S9ocn?eae8kcgLsSrgc$ z72wU7^Vf9pYK5%rjK=de@q`Dd(54QF^#B%WUQJ|(QLjHB%-@wisUDJ9=VB<(`RDJT zUc1C(j& z#wQOD>_L5!?KSe?1j8Y*uzPZ3FGi(ukC3J{qojzm|1h-%nmu|=74rQweAsjD9ZL+} ze0`i%EYppzoclxU$dA8rPMFg~$U$X^&`zj|4uUYNI^bM?ri#wYY=OHd8h$n;057%c zk3jzOoP%NqoMQx|UrVfp;#SsyF%PVaQ0T-++ zTr_@Py+9ALlIY{O%jTeo_#gTQyJj)D8M{@m+{#Ntve+5jEj$Zaa0nVBdlBu{=HJ)c zc^3TZna(?~vExMne6*_!JoL2ZkBVd>W7{CBi6)Y0zbiYA*UOoXcA=R-1v|Q+x&5`A zivlAEgge>^S}1#N|mD!p8*{;pb9d=i?YnZ9pRfkeKm#|mk++`G8TX6}Jsl!_d_ z;-8kLc3Wl*xo|zPWRKHu0`h%7T8>vJlXH&1wR6;e!rJ0F&LldkTB*eJl(QW-#P7tO zMHJQg^7W6Se$?VC52Ah`bW(Adc)UzzQcJwrx^iXg-m9NA2BL&>?3eO6`yA^0RrSO= zK{-<@?jzPh-~}C){rH!CU3?i%_fD3pik-%H*_I&hOJBD-o_M|HuMxKWLY41^+#mgtzSN~)eWM`B9Z zpkFlu?1He@De;Ugt zk13>oPKcB^IZdY03fAo_$r)J=9(|*Z4n`dm2HmzFy)I1dw3@jf!I4;nzGzHP(LTGE zdu@>zIf-jDgDf;KVTZ(z^U86xh%>d8j(jVBSlM*Rzd(e5Y=+W7-tFu{5{0cDOpUOQ{$)uFHl8k5A73U}g8A z?ryXXa&9&2NFHsg*8OU!tHtsCt{WJ(*H0Zu?AS(~hcv6s=}x^t2O@vXYlad%U4y7s z(CcqqUC`cGlLzfKyY&(6VN*bGw{w6V#GQdsR-_#*)8(BS5Ag;+_|G4GsTnvciIZ{v z?{g0s=}7>sppP{hM)R2R=H;tmma!LV@Ai`@o5wcZ8-FBDbM-IYh%K{ss@|n zI>l~(#yHKf%+x8AM0uqIoqpVIbx}uOt^of(0KoO86GIRkUz|+gqF3qKujyjvi9YmN zOPe$^-$1If@|5<7U;FC!0?sX>cSd4MWrAs_E#Ppf>zph&(w1$yd%T?l6&>)iHXiF6 z<3~y$mjIse4YCR%`~#b3sR&gqZtjBHtvb9od^|DQ^UEL0JQ3oy%@q&deRG6H1A~JM zK2O&Kcv^;85Bv&iV~9M7;9!XE-k)qyDHt4gv&LXHVv0~UB#+qClLhc>Q^bd(kGmxE zifT6JWu})uT#j7>QpL_MuGWu{L^erFkiar2tG=dG0$~51sWs=IxcL z3_Or}i3*QZci5YLMo;L%PmE=DHYlA0SJR~Isk6%Sx-?}q4jH4wL=vRA&f(m;Gj;U* z1Zs1OWz@yD}hfX9Wz3)I`95XcmR0R|5^j(V({r%w3ou{Rjnz;E^)?L^_ zR?KeCHY)WQZ;YZgWZYt|Zhhyua4@98A}$fTs%L!ie#a4!)}>mwz1~X<3dHzgTJumu zgiP>E7}P|36(BK73x5C%a3x3_bPs}y`z`1h>6KsG{(SmHRf%1C(r1>LH`aJnc(d+u z5GTU0)we#pkL<#t3gY;&kgCJ43IAF;Ly+zpOaS zt;84g_xw&=;t3o|--QEmk&6+=p)h=d`05$qQ!Wd#3%i6gK-jnnZA`Sff7j47D|Z4j zO{zTW?;xNxBXUueH}XzJ4UFyjAQg^S$QzeqPpc8i@a|1>8j9%jmQDDXQWYzzBKr%S zciN6^L}vntI9*PVz|gr{!_E2zte$SU0&2P%=;Z1i7=9|aKj3scbuH8_@PPGj>eCKx z%bB|bOH_%a9|r=g9RW~kK^M24zSO6amu+3kwpW_U+?O?=RdhQWxO+$>vUHp}RC(Aa z&7WZHl|a)xgW(ojNm`rd-PtCvxbDp!@PfzPLV)W?z93)|u=DZ^&Sll7s@(OJxhM^( z{b5_Sjx6FJqFY4O8vz9ARqZ6{Q%vxgU)Wk$zIItWR6_z@v!j&pF5(le7&uT?jH$gO z^A(nmu9!sR-u$$#+Umdd2cp7jFH}4H8|X;`ZzZmn;;^nhb01~sp1=B3f^DG?Q|TDA z(6zItWv}(Fp$d?ghel?lIVxYqU&o6e{#k}=_D-NyZoZ8V8EAzQ)0xlI?FIn|4#KtOSQJytK>%?$ zW3zWk$f(HKmudIKo}3@vRi^J|>kvr z^a3qGg4&?wTi!Vtvjm;KqC-jD>aevD*|paz1q+VdwDb1BxXZ6>wCwRv-uElTJ-vaT zPbEKVxrz(Gz$W*9sEkBs7mC61{Lbz*bo~Dop%+o@pWp@_nS)0QfkLS|UL<%YD3_WV z>12`_pBisQ*;lDD+M<>Q7$2mg-ihK8s%C(0ZqUi>Z0^_1Msi;fRPtk=?CKV;)*IXq z2>|;ZOz`5w2)DahkA{BA)%vYtO_h)sz8)Pll339(bCPT3 znMg`@I4e)-zzG2RV23;5k|~21E?aKrH+?wy1ZCenx28yw2&SJT#Jamiu+f%H# zJb7LvCD5?~Gpk!hOqa{fONlTTF^eB&-5>Sl%1ArrEgkp)e{8EAK!E~sH z`$YDWuY2{M9!_}JK>d?C+##|^SI~)ta9h38e~%4=5K8YKN~v6^Xv?M z^zjNAwK~9HEpDrp|8}}8jM6eVB1pOt04_p?pCsn);dSu>0ghJL*e>?dh%RpPul8^{kp&VT0fK0 zA^N!X|1wArt}{i&8UPJx{|yE}yx2b-4>VonAf+>@h<v=+_guNWA^^`jZ zvG!64S79lQwHIDSl5a`B=xRU=5C2kXiQ8L%34l~@uKjaR;K|Onhl9JHMIW!B#FShc zyQcJx-U+;TnXAqwvXMZ;&Y(+YV@=t(3rzZ+n(l27dqR!tNjsmI6SK1MgtHD=7ky1M z%Nl%k5rB#PC-h)ytpCmr-h~Wvy}EyR@Ll6tYF{4#S$1iWIU=#;oKnwn_Pd0i0NZi5 z<9&gi2`^n})#du9g_zgCoNE$!9YbHy;Du|~7AD_(+Xze@?Fh!70e>pd(~8HH@w)39 zwP$$eq@wFxFwbOI>-1d9?V0i8Z!LbL0ESE+{}OT9+^0ol7yR0ekm57n;--to=RaB6 z9l6oz^{K^}%BE0GZfrcIK!^9IPjXL)eNApQKGz9H+TWh3OrK6UYt;9>zK1)4dmJ=% zJyIl%Rm*ZkD=UiDF|P6Ip5PX8(KM1Q2%CWJV~Q$7=-7O6JQ{Wj#HaZ3^2d(Z;+1`^ zg`zc;$n@ztl(b@wiVP)Hothq3>iiy`@P~C4%Sf?=oZ%r)nv!nut=FtzHRa>CyP8Au zdA#f`I-hn04$?zVCO!?dLUnVh!E|*)fd6t?e5a4=NvikerAr9*onM`CjpK6==rbc2Fonp6{EWI6d8{ubm~#5FqO*vZ zX=fgCTyz&Hb{Z_Q+^&IJLzoe*C=fVI(O5=a3Kr89u>~;}^$x9^953MSIi{JlohPKR zT^BjJ#MN16oq5d|(XC7g$%S{f9|Vi?rPsK;=wE3^f?bQK8}rqtNLT@sJgSgTYZ_!b z{UxMVo>C@O!=k1HKVX;DX$=ZLaft{h`)F3#tVw6oCkAp4<>=9+2}8Juuay=mApFKc zvPA;5yRRk+dKH`Nv~?5$B%^3&-maQcbOXBs$v?e>bs&>AuMf9%<+eLq`N7dXq3=cK!_;FqDXWybQl+%V1{~ zFMy^-ZY#tmfO71j6nD|aEhQL;wK3(nA*m7A>e>HffwoGmEni*_fGn+k0I#4{vJT;v z8j~}VX!aKX$>pZ*C|5xv3P~oX3_>_#D#f_*U#uQ6nCANhD!#;A<)MUpjr9fz?uNft zexObfMv1BJ*G(%dGD`lCq{fvmWdqS{6V6sdXiKN%7W%e=E;V;!WY+ro+~gGA#u&4O zxTfo~wY?sJrePd@eVzp`a?(UH#G%{rsu@?9WMq-0ke^mZ)?GDjax|p<2&7bg{4_pq zT&Qpp+A_Drr}yQ&dt;Q`*nPsD3{tM}(4uT7g92O)-r<98m1J+Ja^;u$U(to&?AM5~ zmf}GQ$e;@Uj?JHgeOsOhX>S;UCZh>1D_N?qTx@QhBPLmw+@?=1SYwh7@`W6*?hbzgVejT4<1TjL>zevmm(&cwL-e9`gTPtdTaAP?Ys=5H( z4u5LHc3L}W$RCKiCAX~!D|85OOQNr26*7uV zXe9Y~1A!w2FH9lY@=3s^*$mRL@jK34Ag(8HcD&&H`@zY^?zak9$cKdZ;h7_i}$F8ZiHeUm`dc@nGA$bs4InI09?I;Jx*08HkC%N9d zB85yg)KHYAH6MIf`#Msbp~PVG^)?Fm!{tgU8G}2}4xryp9P zV>9O*=Hfio#u*`4M4;L`ic~;w#%19rW0(&D^O}M%GaWvZP=CQ(ce($(#ae-$bXuO zm9{mtZWVzEMl`Gm+5irE8{zcFp5dkY>J(`RVt0e4J$xZrl0xUq0`S%@@MawkF-D$E zi|fBFVq_~h^k#}d^|5%sn`oVZ+vHYV(lx*Ah0QW98EadVzE5?(QVt)v25LVl%;0lY z_S*x5xfwg~sa)h8cVmy!%36wwVb{S0)jtH*NOAYk5^3r8aic6r#@+}fBVUePEqjGF z4LFNPgJMOt3-SU&&$})7oP=m=RMR6_AHDM}!m)sUmc1t@Q(4IukFwGu99YaMpIt9o#CM2H7llLsxu9nWb>pH?r#tgHk@nq+49WH@T0{MujY=XC?_dm#englKHBvje)X^%=`3~RJsG? z7N~u;nx;;_ouLVlNuXlIP{wF!5;vwXtj3B_M`}_OH-SUEOP&gegJ$b}{twkas2#=4 zS)JI3t``vAk#y|)v&|P1_*C{qnpEHCbJxZss9`<|~D;-KOvENJt@YVAlu*auyn~Rjr!ArdD6_ibm&J~e)oTXmnk68?F=L|9I@pE z8BxIQd@c?{F2*Hl)mCGMSWbWG1As`$Jdsaj$$-XTWCF#lHdom>lPT~>I%~zOb;2TP zj1g3U$N%q83t|VS+f3Q-YE3ho|&}NPapIOavcPY>^d5N?8waqgC#G}pv2)LKTTb#n%`yOjlkIGRU}CI{W8;=TITIOe(8N<4a_RVRia%>vA~H*hgoKyC(+ovoaoC3xf4n^$SZa z*T;7E1|xO^t*@IaL|p|)47vW;_Y#h*jGDzzni~b)fMn3?xC&m z2B;YoiJS|T>mIZ4)ZGHN&x@q!8DWcIUbNPP2Pl7ls7q8}1HHNt@a5X!5a5v0Y)P$C z38vf}(>&Qz$i)}|C)a!RjiM7L;-?DjB>Ie}2!pn28X`qcLU;x*)@My%#TW7hWH(8A zKJA)HLd2llJ}2pw_Ab$NluMP@WU3hSl+iT&^E*jZOD}Np715M`x;x;e7=i)~%6Fq7 z>tr^s7r1ddjr5feA(}yf?JFQvMctEAy2bH#IYnP<{3l}w17_= zIKhO{Ro1gfmZD)&{_OmGYwT*oZVV$o@!$lOC9k z0nPOJ!s8w0DD&MR>ZhL})_9<4L8|vN>@e3aL&R-N2xbRz5U73}z)xq{?R8TTpP(iU zlGWjgj8@uhu zJ;|MjK`pu@-B4jL#+2cB& ze_&)b1pd-8rNJp9yH2Y3&SKTptw>-*?a2L0*<7;2=jzt~XUW5sSnEW-l=cE7VJ zESOLf1N4`V@gUuRLXb;_OWK~l0%)W8xJowt$O6y$3Dnq;Ebe;(Rq9Z@b`O zWV-?LvM{ar`E{=VjDG{A`BmS3lWWl=cVGFQ1)AO0L|M*0`r)|KK;TS?RVtSkGeS~~ zr0-`{e}1uxOm?{5jd>%rsWk@*(ktu~$x; zBhIu9f52CD9q>w77{iKm!PQWPhpK18W^ zvl|tf#Zck;k)Cocpzdh#q4IO$t-lyPLi1GRws)=3yt50mCY6MDhBLoeRyynbMuLYU zrlqKRwS#EDOiERfUHOkcl7oYehZLssB^J=3LI7&vSMY3Q0f{cq7Ma_}+w^f?>9{1= zke@4r7-9{y6_Y*qKmn4J|Jl^4o~F2_r_n4QOYB^^y430gS4LN*ZvQ41BUR%2Z2Jpk zE@aNDjQW?HjFdF=L`)~vE0w#__1{SkH>*CEu$87C3Qv_2hYz*&+*-s4L*Sc~Ae7DH zjmKqcdgK?QD)hn|=Um9lxjg%g$VdOxeh_Q89dma@?)oHwvlyx@@BJ5#q#LL3CSE0f zdnLlB&6(T^dn;a#9zCvR`S%R(WQYvw4N!GgQW+43CSjd-f#k|@+Z;7vR z$}$2zLoZWT`3j&8=T**>Zv%Kz*epMxUeGnRSq8+l1OH2WAbNxGU!sQfi9`PyTdEV$ zA?&gZrI4kxmJAOQK5PqrY4`iVem;wI5Cp}GMFR35fhbjWX{Hr7oNSn~1!Cd2Rs#?) z@u?MrfXCMqJ)!`O$X7T$knUAeVwl;xo8^Xa_ZOqsV-jgbw7Uv#Ok)U*{$MUzf^ML! zaN$$1L8*SxoJ(YrK}r3pqGU;AaC&HNf|{>Pyh>gSK6b~FRgJXyf(Uk$0yS_Sck|vE z=dqV$EL-6PXm(S;Cvmr4{HjYF#?Za|{AX0@qKLsPL4Pge)vA4R-77o_fVzU|bcrM? z63W1il&&tqcc@b7B}ndtYlHenk4W0;w&QYPOHf_0Kr$+7#2hxlTo;`@q@xR% z*#%f=dfd|@Tj@#lK)U;TO z1%H+Ksl9#NI6)e_k{!P!nY((bmT6UIWxDqK1+(lVWQrWWqyF6VBNYeO6vIS1Zb$+bf z9=7kn$#>_wt5ET-!?T8cN`pgNJRRLauXTe~{tjVAu3xwS7p0#7I(L@Cm$Utr*_Xn~ zdPk^#(-E*rV+cU&;4xOsMMq434gJMB0-(CGoH%m5d7?Src2^Cc!dMi$Hs;R5d9o42 zGoxj3Sua#^WLBBIWIKkov)0mgU9dY%8IZc^xb3Z=ck#pNt5uBFXR#UKnzrYE*&>Yb z5Rx~wy6@F+c2Kn(s!;6ha0-?0=K7rWCCjOn@VNm|b_kO5QeS>H{R;Xj|Pi1ABZ{(_S*Nxu?fnZv9T4IBXepsJQ8Ub|1Vt40_N>)j7IEx)lQ zrP;C)R{yc}(C+uKF{~L#{w2~X+u5qN;S^*@)p zISFY;FuoHlChy{n6y?tXBqPxrPg8er?jL90FV@y85MqhZSXSSw4$EE{GRt;#3V3`J zV*$T-E8qa;i{gpS?EBu>*3Te6$b(}56`PJ^fPLUeUi}dEq8ZKI?gB+nhe=}XwRY?n zmHgPc!03Bj^^@-e_p&{e>MX@pNVeDDb>RE4xGgTqAo~T><7kl`mdT}3z0mE|c%ccKFLAb`wCj5dU3KC;kJ(%l z&Fgv`Ab971q2nHRB33&rO=QIckVfE2;R*|_z6*nLU~!cV%JD>7R-7y{02)eJrNLpr zN&sbPrQSaCH*Hz3pa-b9EUYNfDb0Kzlf2fgv-4-)fL27EgBM} z#NMhYExx?Z{^_$jl}O)%#xGp`1ok6mv8m_C08L(R!+dzv;|+19Dm`6n!ENv2gF+Wo zAZsqNUDD}q@`_DZDg0WW#mC+zN5>63fR|tz(sJRsvr=#F37uvQx&SosB~dBZQN4vy z#B&|Rq3oM%y0UyC(6ySKPoszZj?B?)c95X73qfjIZmI((&h?Q{@2IKi0e+I%X&6Pu zOTqlNKKP`qCc6!qt7YMkIIODBT}&KvZ(txN2Rr2-v%HGeoELQ7MRtoL?2<7Lh(^$< z{3%CnZ{J;KWBA6Mag_8Ix2OB`W=qHy>ZyHD6?SDvr2%$w#OZ=AmIa47@?p*@nBwX= z*zsc66%exhuFSPbUJMAPN z9U7a+kGrRM5&?&)Tdo|_KphSN2;XHRWaC>Vx51sqb!<`SRu7i!1^xJ4=EA;Sp?xUx z=c0-~l;MqQSjBt7)Iv?2S9ez1m0-kBV1p zL^W#9BKUn4edBlgjbDqam6D#e-~5jWk|y6}|G?H#eF9A*!Dj|OkD|+0+ZHE^7wOvR z(^^B1XwWRz#&xhkB;_VcPTp(73SzPbP$&nNMZ;KS1N_qD13UkHJ7;2mHhm>aTp*0_{hehI)h^Z}qfC5?{zI8)GK|uFuYn{j86Is5dUpd-e`)o)EMG7KBU5l-nL|CpPUizKy+-yS}u z4tVnbvDUO@oyZoEz7vR42v|N|sG>R78X!8yTuM1#^MeeH`{CN~SUBK{zsbGY7Y(1rjwrF(v zNE0LOX)bt&*KR<~?4_$m6t$Ktq?FnYaO^H>x;(Ny=?moO3oN>C2gE{4HBB7MTNt&U zpAF(e-UjYq|s+ymj?cqdm zs|tiV!zz47z1UsqM$iN|yU?fO%-0XSj++pE~ov0ixWdkmsYlEroeqTuNnS_eG<+5ifeVic%9$o&Xklvq@jEgzr;cVXvLO`y?NdJ#S|yU&lWNUv}b z3p?L*bQeCli3vZO8Du_sz{3yWcEowS{4Jq&qaSx&d^w8a-vN+9swX$S$m^J|1m<&C z5-ImXmh}>bp`{S?D;!}%VHclHpgnhx;V+3^Rh|or1wBjnUA{%WX;5Dg5?~u+GXc=8 zQ{bvh!A*P0RwV&iT|MP}zFYE>d&$xF^#NnOQhaz^mMc;CM!|+Z!Sd^A&q0CyK) z#Cu^RqTWY|Yw}6RUJB7!KY6RT8#WR&V47GXRt1<0bU&XL%QYQv57dXRfTdg785T31 ztZzgPYEMNPw9uX|KN65)*$t@W@nClop3zFXo6A+vql|Xc z7D;9ih-z?U^522Q?@OkCylEQ$guUO|YS0O}l*}dWH}8yUikX5%1@gBJI@{mj^uP;2Uji)k*7Fkr*% z7E;&9RN%EWBz;{PVFLTRLN>He_B4TpyY(ggcFiT32DY~#!lN=1`6ICfqt+MorQI3;%_WZY!5!RmnIMYs$JJ64DeZKgH~8PJSV zYa0z!MlwKZsj2(J=768T>-ER_8BE9`x~TZkq%rNLc#Rix``M0gpZv=^{dGF5<=-?z z4!gZnkeZI%)E5#Cgvw6O8XhmPkq|}*up{PQ-^_@Fd-p!aIs&_?sr|@Pqa3J0V+E|8 zwc<@4a8x%=l~uHlPr+t~$YXUAoUz!Qpz(VfVV#ar(hY+Jja_fDA}Psv>q5~=Xyz4h?lLjFH$yKlgtd{*mJmo zu5qE=6`y(^PF1kHHtqeWGF2jZ>eUiL(2i!b7?Z0$WPONAv#ISc4X1t;FRQc*iM+YR7KS_Pp&~P<4FAN0cE* ziC2aVO7e^wx@l1=E{_}lGBBn8sqrF}jJI*I)rCUFCzdc)_9IQtYZao~s| z#z`o|=24bHPsEoS+Kd|Ra#TCoB16auRa(Y7bk{i~ z+@5%iP}&gO>^f!kI@pclj^JzLB#@+)L~QoqML-vHySKiTp5QD!fE6Ju6EA|Ihn|&K zx1K&jl(tUpgI0Q$vj50Mu2Oy7`j<=biZjpBl*u1T+vy%8n0v;->Bt2YoZyJzKEIy@ z;-rf>x9xk$ic9gCsOE8&4E7iuXvLY zLQ2Og+rIG0niGP+HCM@n3&+e{1}_6!Lj9AQCRi6V3b&isA3|bOESs>dtA4R^vM4yI zDoqP3&A@*C%Tx6P+eUiYst~EWGOBApvpmu56CnffVfVDn>c7scgH!RevAuwdr9@C- zM|BmW_sMOet+NA)3lR|kC3z6k)W4f~uCL=okMXz*0N-Ub^1ZqIPHOmgv+AK{bW^WQ zdPa0BIOBBM;YdZ0RQt3qD5GURYgh_12gUO-lRUtuTn&iJ(~uxvJ{}W z5+W8&P??s+P6kJg(264c5a5gdx*ziNtR1!xS2+qdaxb;>9ei%jKpGclyRc>>%<3wn z16^T{aa!F%h_NQ>rA=~)|1|c2ce`@krRst{2{>1D#%}5Z)hKc2I#k7IpPQc=B!XX! zReh}!jve#I^0P8Iv?cmeUILR*8JXjnuN7th4R)=<3YyEuMcFZey+mCHp*2f%Z&R8L zLGerGSmc?Kva2b9X`@bKO;3gyN=8+i*aKmO z3VQQ~lORY#c@wM)UCZi$_4oypU@;U$FNb=WJ=S4NVy%Tb=(1c!(T<2;cSSg=f|^8+ zuANU>Db9NYU|eeB)(l{0YN-SxwtstB%eaQNT9=IW7cpn`T^ZHMOV#X$*wg=csVJ1& z#JiuqI!`3rn%mg3R9E^(JK8mu2qTU5>QB4+#+^zSIf|tMPB6N)EZ%r>DF$1JWiJ*H zDnnQSc!`&EmaSp}X8%-=z_9zUR!<&^8-#wah9D)F%&#zcxrgk?;LaXrVQ~0$-#_K^ z^VDi)O!6q0V4hJp!r0_vU{Og-7z!?&nGn<9J;2e7Z)#ca#X&)+Q!WEwIvs5lq-Vw% zp%Hd1Wekp%R>d-1nvHdVZWu)A7OH?Avg)@)Nc3i@{K1;SYj;=2&2oKkKuqvmJTqc$ z*X17u?IX>+H@OxWOHNxGXJ=MKhu$-Tu7kp~&J{akN37LgTUt4?5h$#6WKX}BkyyYQ z|J1~UTD+k(jFS|j_3F2S_j%2#@1Vl}OiZ&EQFof&#RdTrovdTuM_+Spefj8=tr)-;4Xi^-Yov=>6@FpCP zxNgFSia;lTHDv^_{a=9{a}8HU5c!8N(NOa%6!_?cbT(q&zj&p4lFN4SFh7Wrouf?! z)~ML&Y=a?))YOqwd#_`J(F6{h_H;FYc$&BAc9d}!aI_C%ywHOA!s41pDXO#J1Dh6I=uYF`?wMH~moq9Fo#H6~v?OIt6BQDh z#op)#n#J3I*cVkjqa)aK9bJVkx839q?dt|Bj>k|F|I8D@5u&tI1? zVg~ukwARD}r+`pB;l(;cV{43v4|)&t5asOYM%B=9^JO~RC}Mvr9lUFFfLfaEQG7f6 zXI=W|MS;s)MmHhDzRgW0M@6`4UH$hAGKoNrGuH_Xc3nP}pxIaVKGoNz=~+) z9MjBwMj1sRti4u!O~;Pzzb$HhGJl^z9o!dD z>Vtp_V7S!yv1z2(^9pMLgT5Wm`P7?%4V~o%NzdPm{{Qc_4AoB&{QYHMmcDd1EXBO; zdUNAJ)2is%mu)%Wr6_uy$~kz*37(TxTkdN;fpq>VaJcgw;T?p^tHA=G5a4?IsE+Nz zvM$^08wdhq4LL@UudGX`jAuwF-0Qe?%Y;HW5s>g=km4R^P)V@V<6f3Ytfj2vB%T8pmJ}W=Gp{epDn~dleMWLT7z$9bKFyhB8z6TU=O_M6)9MyodNh|X?z19`{P52 zt(|8JFG=}l2a(r5oq7piE+Vvj4^#U-jV88l!Vyd7qC;RvARf+398G zDjCCl)Ct$sxPXJ$wMM?AkVd4krRU^I9+^pwu$h}UCm5Gls&61a`{y&%uhJKz=wvu3 z%jv~^BbSO!Y{yqDl=$cc~bMirq7Tl&*zV)w!~2dH(lz|&Gy zK|oD@*>znGLZ#evl>=C17qpCYOR9Cc`Hz96OtbV6f#xAuiCJ8c2uqp;opbNUq_0tN zue^bz{n9^lDl)FdF^I0mikF$%%J7O$I*;+TQ#J*ZJPklg+b# zkOL*QDY3{-OMF-;qu6y&rv}Q2R*x^wf4j(fOzJW@<69CrkXri}<#Dm{~S}u@2)G`7^_lk%K{=-HIp3) zBE~kaa{|Ixw)%dWrB~`C-t-sF*f5RPqFyapGx9YLfmB6Z7ScD_1@sW$I+z{pfIih4 zXRc3sbI`&jB;)KF%0i_l-3T|7h1|WG1yA><52Qra{HH=dPln>M2`QF7nXh;F-^e`G zE|1KY=J)RlYY4wjOV5{2m+Ol$qb7av@XncToFOyGV&_M+HpaMrgNj z1w=6mfhNY#)LeNvbf`VTNc^9@E3NSFZM;SvG=(6~7(-S~Px&9u!NVp0>Q0;Prx3kW zqhKW>sNCu#*v~9M4$Tf$d~*Bp1m)1pZ9DsG712^S33V*Cuma29l>@_q1jUr|Nh39ZL*4 z0a4h9ArZkHFuenQYZM5vPh_XBM(29ToB6T* zGy+v%r~6WQf|yr6i$C3Cj*8LOMwrNvmaXZtN}r@>-i~lM!&c8}={cxaW$}N~L;9^) z+v86Ug9PfIP6BkztaXmnsy29*{9Xm-f5E{g=PW2O+Ck=q_-jANAl}HIqsc1OvNk=z zs>zxIB^_%%9bsw|4*K)mi)TB!(GRglPts6&c!O7QvE6!|@a{Q&0wOOh{eHFa<>`WC z7Wq}vOp^PBQF;pFd^VpZO6Z$zw;3bbe#2R(~95cO9!e4wm8n1D)VInJHCv z8u<7}!D3---1CUKl8+I3p@L~yj1>0|H0r2#TqJFdz`0waj7dr8HXP=_4@CbV@@pSa zUHEO8x%AmvAlM%tlguSc`uUUtBL}FR{biUARrM&zxxoCOI*Rf+W0k-P^5H%t(>PH! zl0v})*&i(%_Cvvk;{j|o#(>{cwwZ5g;BGmxjS8_@ybv{dHc%SfJWpd1o0JgM*EW!k zovgbs!?7e@m)4O8bN_aJ&9`k}3`5d{yApivI9*?k$W8F9vdbT2BVna7IlqE}1#=L# zhpFnZHCiI6HjT+OB89RkoDQ-9{eH9zEKi2k8!w>ZL;S0BqPz~|&4TjF^VfjSnF6H& zDD~*p2t7V<$M=iNHzsi0EUS;P|GQ>NE@ZI5n)1{D>}jQ)o%_w#C16rM$vD$?rOkwf z9NnH6^%Z?l2qg&1V2;H>pfQ$P$$9<%U^v9{F~m9`5T}Vj0s}_4h)6>&IC97SgSR^W zV5cBX`Ep4OYgOP4z(G=|OA|EyU%@3CYs_i~6pGfRLLjgX8g)RpEK6=5d#x_)>_s=2 zpLs;Vb4xwD;c!T4N9)87IGdphbJwTVREF@rLcqCZ!`nk(pI9V>Z-;;2WK|nBYnizK z`qhzU)wyB8!l@RP7;h6BY z0ToqPN&AH)@c6SU3EG!2S9|Swzsh7#?6xK32LGwQ^t%WWith8>Jn7V+qOA9DeBPp- zcF@*P85J9cy+|%}g-u%uTwOmlvU#QlU#`RzvM4S}?NKw`Y=b0gBzMiwU0iXluo*6C z8u5E`AOw_V6|=y&`(^#hmzG0t7k}QFqV+dAN0%%vWI}Cz9OH34Z_nN(>JWK46TiS` z#A7gF^G2{Wewf88k{Q9|eY#Ty@&~poXw!)?vyKkx^Ht5@{Yf`8xi;|8BlDGH*W$V4 z#MZ{keA}}##SlASzo_p!Ot{eOkzUe5WwcmJ`jfV;v#mSXN#&I_Mz*Wf?Au6r`Nc~C|wh~bJ6h8EqA4j`19)J{kUC1~>`2!1$g#Ga;^40^@Z`+Uy zN2wd61o(jA?KhellXOe#G_plBiSNyF5^nv{Lr z{wb~^6Y8(69Ts^4nep7dv_3^rM0cXX3Z0jbTltiWKR8}sdXu;eeQhuVfYPUm7V zl8BV+E_N`8y#H-A?ad(P z_Z0b(U9?D<{5RlWK^!q_!VBe~_!A@dbV%=h!QtzdG-kkJ9G!rsF|?FJHiJ?5%J}B# zV1UU3K6xL{kpiz5&P&3YF&lZ`Ap@gjpgPUyTa(w(;*ci)M`h%07M>5~DE9MCJu!O?H7H4WES1HMXiBRUS%;S=(Dd{z|9- zi2Wt9hmauw!1=Qo+sKKG?gRei7$z)unwE(r@4rJzU`JuK7FVB&X{@RXHPYC39O`JP z=a-RSDuFC^Y@bP}`vUw-sB5Z5XOr}_`pl0<#;_wZvkU%+n-u2(fVV1#8_)W?GiA#& z_{88Nby`jt?&KQ&`0Zo=SWM8CtnpMSn!$MESv}=MLB!D_E*I6rTb7`HXL?eNRYzf6 z=(Y#+Br0mSKulL7*2F$E zg{Z~-nP~4K>R0U7c$$5HJkg+%m1sQLfs2}bt^uaZP=9k4nxwz&_k3N{Rhh{!U^R5$ z^sNLl2m*k`J@u4^mH^O0NI?`_=3PBnL-3y{q!+FJEZvTi5YAhIG@iTPM(2$n;`xIy zYrtKrm%pV2LSP=h{F1g>K*UTwI5;D1XY~6pWZO}AsH_uM3X}jHOh^4XCe0sdxIzzCr(-eQQs?4Detxu&vpOZ;$@& zD-jQ^4PQ%?wLErIh`tk^1RVkdnhqGPq~J(~m44ZWN9hfW{D`8XwR!;ixcRPO;mlE7 zrdgRfwjG7^NaYd+Msp7hoE=B=O!H%L6iDt-TySM9>>jt77MS3S>XH14ov26Kk>f@Q#^phd8^iv`cFjbC9aja_da#MD}2L51nXl|w|4HUL>{YO-H8yNx8%QD zXM304P@5BvoY;SG{oGvDB)#j4IdZ^NLBA8@dQVYo60y#wN>CHSnlO>@VS`3#o&{Ec z41i{;Yc)Xv1PB@UaQX$g#dvcoqWU~1E(wUAms*--_eOa0pIcu)rZP2@{17M39kRo= z-b9olB=3oDJbRqqZ$gb6lpEW32$Ta~2admuh=}NYf3j`n3nJNOk1)jS;tzQD&TE;U zM_tN(!RzV{w2NBN>4JZTL2THOs>P@}o!ifKlz7#OJt?BMU@ooH7 zv9D1As2Z{mgx6O3iO{VB1z=Z=E}yDl$i0ebf~FZUaM(;(5s3-Fg{1(kZJ**u(bUlB z1Nsg!ZDcG8bzh3c@>rRZWk*|mpco=hofo(t5c{HAHXF)zOdQ-e#385qwZxLLepO|R%wVhEVO8NmXp1xI# zXK*ZCv3)NI)170A*?6~6JVG7|+E1_eaPU#%52+ycx@=U^0Sj_N&p1ppv8WkMA_|Ei zG+CBT$lpKViyUQFSf^(smphfQQqm8|;(Fs2DbLt%wwYDnE+Z4CEuORJz<&Ff*sF-GO=~58qV1LkDY@r^ARu#AjrRxMW;Z?ioR8qzyx|%0TAVV;q@zi^8r;x z7_{Fy@Ho40NrapR8Jm58T^{gim*2+{RK_@-3lDY28_f7U43ni-XM9qA{F58OD+>8v zNHJsVsTzr=bERHNs(ADM-3_q5gb}7uct@u=nO}!3l!>h&4ckxZ<*vo2P>7Rc-6d7| zW{F9F&W&u}eJ%$qNlyjX+ihZ{hqh+1CX|*RArQ0>X>M8i3dX2U6HBq(7v6qfv#evy z)~cY9OFZnrO!v=%Cd@`W0j7C(PMxOgun?S$)ezhQL^Y%!z6Jx>83G3<_oMR&C=BR1BEv2(~>g{_?8gf zRr3lb7i2TiD?wo)zI59K(h0|B@{JfJ4V|4~4XOu_fBAgx4tr?r0RNI1w> ziL)L^MP=qsV(b1;KUjH5EeAvgAa*rl{ruQAZ zj_MCT07X@M1`z=qBRgb-;Y9ce+w6bMOjD&WLlRj_VJ&(p!SWUl z;MZ7bevt{$<5IcFUesSTF{+cQ5Ey~+|+z;kdh_GG267r5?y zM;k3W6T;n)GNO*LU#5_*!LgpMLr+Di(|Fh}{v2faQY+dN3*C2&*c*ce{@9Dwc0OPc z`=Cu+go~CTx^1`Ig5$!1dln@69rqsl{1o^+-k=8vI7pjbGow7b772^ffMwr&#UFheZkm=9e*5bVlK81tJzn^ zw(DUBCaMLZZ5MkE`keY$;sQzo$D9s*pHgY6T^>u#`N83AsRk7Ge zziX-Rx5|2m1JLG~W5?uU%y7y9ahGq9t2OBVbcN*oKdwN9^xXPz_zHn{oXL^QxPyk&s4N;Su%@+Nz8h%;2* z)LP%VS^(p*opWCwg9||rrMC|mc+$$Aj1?U-FC5{^^)@yLitXT*5UH=bYG5AFX4g285hLwAtZRCEWg4b`9=us{t`6+q=Tj$O$+LNczF!swm;& z9+)PGV?Ut4RnI9K67(rW3-S)XgKp@~>aTxdMh4XYghBWkCdFKr9Oz%%##rWHwoHFu zzS7$EfSOC`&g}h6#ZXr5M!J$eSsCbHze{-UJY1b_2UDS$YWBa+hmCXuj_5stbxTrI zBVsU}G3ULrks_vDv)4T7fA=6A%24Bm(f4Md+v3l%vHNs=*YH`4+s^BbEx?_8j(__K zBB>yi%-cLw<*BO1iu<{+@5CI8;jt;OK*yfZw^6uYd*s6mr=fLX1qDse*)8=OZNR^j zlcs6x_r+pU1o7k+ToCNik55GaGa*Alo}4_zGgxs&z(#EfO4 z;fBWtRK4Kf72#;ajs<1#G@@5g(L8C_$>;iAzL~>lGr?OX)ZNyp4-sVzr=jUm3z0KR zu0Eo~Bx6Wo+~O@LY&*G>j+K_xn=Ql>TY>TS3qwJ1_4!o1e}iwFZ8_N?Liwb#Q-i0| zSN>zMmGD@XiS>$3kQd)u6m~{e!dSx9Zl(TPU$u-Y`n^yrs*17Sg@SvQ-a9IWZhZH? z3A3zeKfzcX_5U-nZq|2)xRC}Q)lL_7(%QG{s4X+ZHrM3Lcfd=(g7+s{OnxgnM&7+j zwEZ#kqVkE)k2}8MUV@2^1RZ5v)|q9k{kzbA<%E~HVVef={rY}AD%8}QiA79d(~wxI zmZhmPmf<~IpW+RP*rSVD#4Q5ssjxCS9MBmWgdR9KwD@s#ei}G$cAZITu9t%)eVaex z23f>H?B(p0j?NU!|G(=*bSDlXI9!r;r29`54rFSd{2!d=&R;l+LyfGa^1zAngz*Xk z2+D$V>{GfDwEl(H3&IS#UqT<_ONr!^XtdK-;w{1lU@#?^NDRSFNU=0J6i9;G#V6Dh zL#ytzTLXLm2=uJKo9Q?96C<(EEU#LpLg*Q1SS7HBnr9#;TXG~zTQt<&W10&V!5C%* zg{lxQ?LhqkreNfXO{noKXhVp=3L9~HULdC%s3D~L#T=I*pj$vaA~v)2>OrK9%ex>D z*gl|Qj>IF2WD`Ja7>+h_nU;GeUOYQfGkh@4Hm{Ik zg74ULZJDKn0mST9|8(WeXjJf>Dp0-*`;qe0CXyEwEsEtOL`dK`5Y9Wmo;^1)f`Jo6 zoOQwvSAu~2Bc2z$>(N{`ZizJ)sRo|QJ4Yzuf^E_$dOi{E7a0rq#09lmOKb%c#*%AkGZ1jbk}AjIf%X5tDe(SJVN*$; zo`#I~pUP^@4WqK$!~h+Z?%HO#DB0wm4@Vi!)A9baCCqd9y+NPA9YNoA7w1fcJ!4 z8x~6$=xL604{vi6Ly`pxf(We4HG@oZNOlQ+yX=c1!_kGew`=^!0iL}kVo4t7#^_HN zdEZegxC%+w`nc@kq6|k8A2dyd+$G>}&l?4kl-5ZBIFD_z?GUk>%ZK(zeCaw?@QaK^P3>yQvAKy7De}L<7IYw_A;Y@kpX7`Nt@gqXphajagRN2-!AyHTDoUH94f2at z?T&I-OO_=VcIM2a;P)OX&k<|{kW|Ya#L)pJVb245BtO#@;imaS)XHS*X=8LS{Px=+ z7fDSmPQ+pOLl~qh5{TbD+6o?O(~hn1PF0L&!7IW`^hlX;4RxnyL+v)^Q2X^6V3FSP z8c$>yx=h&XjnBeY0cBsx)n3cPT@obw*+)Fk+4SC<_51<$yk9eDtwKsM7<|Qtma(uf z4UeNSQ!)R}gYC<7S0YUm2V@7!^hM%Z24_#NfywK|Fuz=+X%Qba`m!9b!WwKIalhVr z!&oXm1RQ9vUE6x!A`>x~&B18A)Q7M{Xv5cuMt2SB743hc4pl zS@E>K68rr=7TAI@{IBH-U4RJ4lMEtVOu4-YME{_}z#c_YYo-NJno*_dmZN2Z_+ah> zmAVVrnXtHhAUkKKp=>WS{w|EDUj(F8>}j2GL{QejAWI`dRJ3LFsRgdh=mrLLUQtLtm@Fi$q^MhMfuKKXXNyhIL$MN%XG9bcok}1xy|(b_P`QX zjgn?`O)@o0^Q%`8VO5BeejN1oktFM$(1XigTq!V`c!tU@&CN@y@kNJ$^WhEdqXV-)@ez2kzAG-S113kp*wdDOx6Fg}!W*>Q{D+?0 zBL^VwF>WZ<-#PRA+R(n!_$?H~cs3R%UH{A0O=Z1w)(8*A&a+`u4SEk)zg*t!*?e8n z5`}(^>rwBAhBR7pggNCU^MZhU^uqtHU`Y9zH_nqrhM^jgIM2xtzY`3Td*9wcsPmX& zFR+T7g=D{rB9ZP73}sc7jSI$$5;wvf+BCs#+%|C~0`;)6?yJ$c%gch(?*CdNM}NA{ z55X-r+!w5{L`QdjCuU(;2>f7CqWL<4v(cSfcO(LB7u9ootPo__HSK`BY`%KRqf&)x zt-%&2iuZ4GO0f>;>ef3R`I^U5G4}KYEY!lH=m8P&K@25`Nqg7iKX0AVIR!F3ZCM|< zh-n+%8k|gr3Pk;++VM(Nth>Dgx7`+ zooKaEau$oJY`=#D4^4kn&RaBe8mN2cbe4Z20YI1lmrIpV`w{k|4;b&ex;ImthqS&Z zjRJ_%x(zlpCcA8oFlAl~$@jc`y7r4|@^Q-PO6%N?-4c3Ht|en@kV4RvB5blchOql7 z(@b%OSM+nsZJAl!cKL0qTp zGmi}N3f{sP)kya=`q+kQo^{>|E30qTMrjQdBDw8J6Nt(K{-tQK z;&1?NqPa~DTru=YUu=xZFCpo|t$>hr8*AMA&L;Z{{3d%$@{*(DI;wTuF*aL>@6doG zENU1_&n}Vd!^RO|yjVw*h~%^=+wR{ zHDX2&4+zdG>3~@jRHWr-PL5A=%tXS4&g;LBTO>eOpEu#lzBSf0bMY(Uvf}tZ<|X~~ z3`}*0)jgndZQA{s59P0fKrQ8z?yEIno5Hi;=lkxz?GlE~`)3eckn^cT3Qtiu($q!`QA{gvyx(tr+k7;*m&4P+qqik2$N+v3ycd*#81dLe^y8qv?Jv+b zDYt1^%g`Uil<2*^;2fP~!$5a;r~7Z6`Z@F{{NLm=?grRA z$+XP}p@&zS;~8M0UGS5`)@n109OR_kAj43AzKh!oGUx_R zvsk&-NabwVz^^Q_U6+aIS?J)`zL^_Q#*(b^|95Q)nZ#VvT1?AB?U$3Xp;p=cw+u=SKIAn6pmjKy_JHYD$Lt72ZhE>N^$edgB|;Fbk~vJdp<2 zXQQLBOsx~4O2Sr+&zvHY@Y0=_IL0?pgC8mMqO6H^#S|slCxD=JAVs%~j+*DXqCQM; z7&l`{=X0s$>F-x#K@7A6OmS1ca<57BVXwvF6;RFMJIh}qzJ%`ANhCz<=NWB-~Az_NXsNHu5tN4HODIYn&OGm z3{wV>AP~=rwtA;+{lm@3c6E7dr7(gDf|`g|*)b#W<(tV>E|`vej;4M?kJ_s)GAvA5 zF?F+<#jk@&rn`+&F1=q^>h6N znu2h?B^tOb9M%a$=S?V=bD>6d$#&C!?`s4iqd)g{#M&2i}6sz%-&RxS_ zHCjHS)OG7_*T#8+4X5O>90=uv7Kp;bYVt22sn`E8quFlup)o-ik22pTzxSR(u<&RaURRIr*~&+@U{VV zsF5#?BXY5$_??&C`%{UCNbZUi@INotOPpz7iU6bhDe7G=cr$9xW;ZFQj_0J9S>2NV$yW3>?CKxT6^an3tui&Rr>VH{5#Q0a2z5=-!H~4~#)$DHj?ktlWkX5?>O!9!gwGn(po171C!6PHI>~UbxPp!scIk zBtixc6i`LIMVT-nYGX7UwbWHHCxoW*H-r>2|prG7p zjG<*kb&mEm56WGb0Ud=T26#4~&U-|@wZJ} zOV=AK&#SdCvU%a!Zm}0jv0L8f>6A#S$HFkM!icA0An&|H#>`3KFZf%WHY)5tqfiD_ zgDO*1jJc-1PiudBF=euN36)Vd0>LQq;|Sj>bUvgWT^IAKtEA=eWF(WqEW}kHi%tja z0bb>d9j^^st)H;E1qq(iGY=KZY&sgQrpmITT-S!M$cG}{4ZgbdBWAI_+ zAgn&bs~89;CoJ!&xAG8G$U)>-Co^)kPkkfDcA>mo^+HDD*I5A(lxSYJCWW+_!ZSu; zoGQe5_E&RdphW#Vbh`XPZC*o(r5fGosG{7hexxh{T^Aefan`x9$9 zf}MwE8YTD)SSdh$eQ1zgjZHbXFm?aG%-E_Bjj*^OajXt+K~(aWIr2D4W|k=waN5CJ zRywq@I&m13C_c#`>8n=_s0I64mFxT6!j>*O>Q#(_-r&93@nd;d-o(xGc>WQ56)!qC zLklxwk3z#NNjB|)rLsZbAtL>`=1ghYmzK1dj-Q-QeCalJEpIYq^XRhwzaLW0#GT!| z{jVuxx=tRmoTtRuD=bF%rcQBWdeec(a3^aSSDyJ&t0zD?vOmBY*i53n+80xMKuba5 zzo31wP88uY8$_0eGnd$0D2j+cbaIyJ?=sQKjgpCB-6&^5sOVVF?jLIa% z3?^T1AtQyj9|(b-oTE!qN`htj0v?XXc0Iam@zxLl>Zj9*{Mbtp1AHpP~e*pn;F zQQSr9ppGu4of(ZDs<(F&bI5VbdxQx9txip`OJw)9>QmDhE(dfqUNoWV(#uR8=yi)mcPN z8W-7C{@(ZI=!>K9;h$Kir-8=3<)vg*1boNVRWh>y6~+!%amGN0Mj^rZL75B4rPyf@ zeE%8oILEn_?s?D5(IE$h@$L;LLv6gk5ZT2Djc0wii98q>7vNqgkJ1u_=$7L11i7m= z+P<+go}u7msQDv|gFh1_dJuQ-L50Y)?Ic~KgRv*XKXW6|pukxLImli=jGdn3T%@)) z#RkxJ@mfkX=w+jr+^}^T)Tl{=P){|LLQBlHrB9rJXQw%wv}TB@e!n%@QQRg0`AQ{4 zrOSmN5?L{8DdE5R9#&$D)A3%(4p9KSx>S$|52Kn;%X6%R*AQaF_#3(fm z$LO_$eqz$ViG2Fh*(dN?9)RDo1_A2Si?D6hSOCc&a280Y_*JA5;w0!mkq0JlkN@t& zE~R1cBRn2M4$D)i z3v*~4)BsmVo^*fU_Z|k?6=_rY4L~&~v#49#n_k{ac6xMoP6@4ON4{+!Z!dvchJ5fikNaIwlr%vT*hEP)IpbQ^ zV`(w!BQ@e6fDRS&D3=Q%Bp+2*1dc8Z1wL2^ow~P(&Ms4a7~gETx%i)TdG~~PtjU7t@Ri;|ZWtLcMW9mjdNNl@ zK!aKNNoGadBIzkKA^M>W6Y^NtVx6S4f!mfX^N!%z&x({@q+4~$1+dM%F&*}uQfw8g zyPUa4yZVuU%#`;1y)ohAg>L|O_SB7bE2<>;%h+SgYPgj#5Xj!*y*{;}3mBB#hq!fr z7~^M7)cceXe}sQrw|AK6^lCYp-`2#*3@80|ewmI+X55Bi(JQa%4*hOYHftJnZ2@ zLZh6_zY@zkL^fmSHD1!)bb_?^L4hz-@fhJsiTeeg;ePOBgR4mF^tdR-*ec>SBbrA44rl%{a{CJBl|4W9>;2~-YQkt-N_#TR-GyP zAIoOt!*im}0)|(2$?6v=Nt~(7m!F5ha1FesRIF<0*mLuiDG8JoLlhzC=nCh1yUo9D zoyP+7pzsC{qepSwvs2H7jWb|rSqbk$Fg97gyW<|6YhCV|uy6nrGYt|y2ar<%xWNHY;J+h6xD%wz*4BvZWA#GH8OX z>cTnd_x9q(evq+2WeKIN{HdAR@&0tt(-A+^_1DzY@F5qWF(4#&d1AW*VxvU(I}xy| z4``U8G|W17-LR(zmFK|y)zjY@2rT}i>6ONFAK1_cfira4@O>xbhiQ9A-D=}HwsWo+ zjF50*UZ3m!*gcA2e_KFmK#8uvWdsH2nlAEM%vi1$a8%{FK&sg!ya?M8FcU9*LdG%A zGm;`K=hx$>t7YxuDHBgj^ z8U^bfhh};rngTWK&J%%~^(I3&m*ugLCbg;HKpdnzfB_>!79K=_D|-%=Ga+elR&oG$ zy%MP+|H@7h!gQIkzmzK@#h)l)q_~^iU^eU{fU2s=2oAj&PiBsUL_D5cH9l{5)$Ew& zqAkWV%4t^jBKo{9s#{#aIMxp1f(KcZW@@VgIiG)0rghLZ!9^&P$i8pFdM0$13Z?eV zH@}*^+EbgM?Qb?c`mE-ca(=|akwt+CbT`Fr!R;f=>Z{YI7rt@ z2h=0lu3(f`R&puL7#4IQSWah0uPqu6DRfgS5bYH>MwoF^BcWfM4hY15?)*-AlGOV! zJeBJK2pgjT4tGr_z@ZCYzCS3MIkX^-O+ z7Nr)K`5TOK4xs!|i2v7Mv;j1OR(=X-<<#95*hAWfJC9aOvSoqcI@MTSths(fdNvE2I^CMyJ(;|1v8;B zg#qmrT*ZkO)Kp3ZM-leTN^4Q`3Stjp@+0RJPbk9~xVWekH$rhv{e|YuIES%SEq{LG z2EPgN1&i&s+*Pv2@=D}aN)d{qf?MoQ_G-?X!HUU}1`< z$O~MxtQ>)KY=FRtYqtc{A#8>P80eypx<;mi=9yWagEhhNC)Dd*KaB~!>z1@qxDn61 zd*gt6*Hvr_a-wbXGx3F~+{eS)p`jcd-$MT0`Q4GHF7tBvPXa^r>YT*yJnMUChcR>I z&{Ns-qt??e4jm$CxhDD3XswdU0<539<43VtWU2e^>Eslmp~|9}o8e=2l-<+zB8Amm zuC zVNM(-3Iv$2@qmgGkR?1!98Cqq8}|(YaYLTump0b6V7@K0r{&~#Lp_If1IgcxqU^Dl zKuaD}{+^mzwEpv2_wnupj`ImaiUIixx(-H@+{JTYdyMaPRnrQLzA`iP<|W|wpk`wF z##4Afsvpt&?LX))Kl-OOJ1|aYJE?9}ytbS9_5#+4yQZVJd@}ZO8}Yn+i})2kcwIXb z0$YDwc+1Mfh|j*f4Rc!KV8Rb&#prTsEJuz_2rI~J02c|MWPA@N`_`-U*S&YRbFcUs z0O$YER!V}UtMC(57KMkQ{@?7ami_vI1%$Yu2M33aNa#nemR_(!xIw%&vR%pCgch!S zeyy|dQr93j3`MkwG?#HM*qd1mA@C*CS!Rh8dQ@6!#w~X9s$5+GC7G_9!B*?%8T5on zbiAHbP$SZu?rd{TpTs0qO)FnJ-SIp}Cmfv@_aQ30Q+ggBj0Xnp`B*6rimo>D>wMGS za2#S@0);`av8Ogr3$S zJeOBkUpzKIrbQh=cq=hM)h4P@uhW_)V)agoBXo4;z+GRfmR_*3@O{Rw%2L<_65LXz zeuYq-tbQt~P7z2~vRAw4yxj#|Z5Nki_8%ftPb~^0`X70&xShlrj02PJrLN#GeOE@B zX1t)!8&J+nHVklLqm-mpiBL*vJJ$H9H6-CwI=w9kgESSyuaL(2x-|ddyXeylGC>X; zp&oBYS}V;QXl){)wfrNA2ni;~A`6qTQ1H~F*a38-Ltc!{-vf`wOfDv?nVHAi8bv87 z9jsyU)@<#{lHwGPuv>?Q(^97x>ul#C0dz*b=GSJD5iE;S2L)X3Dv;o8dLux`DMCoZ zeOPg__JdyYZ|hiN3S0|M&W10Z+4SP&GL)TP1^jS9>-xGG`m;* zb_eT*59*fPTpVchwRE|EO!hpsCJJb>>V7qj6(cu5V*=IgsJ^jQs+~X}i|8OA8{sG@ zbKdkmAq68!;1M_%#>fIH#&?%?ZewRK7#~Eva;oDCd>KbE*FrTpame?r$tT=w&}sp5LtuKGBU zfWPZZD-YY56gyqCS)c5ag+9EG=?@vr#8rmk%AZcDbyN()%8_zLu9G`w#W4Blk1F0| zRTH{)EXYg(=Zb45q4qvye`?tks2M06z=}w%lWLFN@Cu8^gH!3Pb!(G*t4&rJ;PRVv z&uu;0c=%u|8C^@qxRz0^uhgai@NF=CMmshyAs+?&M$>iivO}Ksi6$S~!HnlexKBX9 z<|&R4ibN6#qf>p~8-kxH0|rNeax4m_{M6s^R6zYMm%rI|SPQVW>9W6Wba5$14qU17 zFqF8kbq2gd<3zLx$poQ}RUby&PgB(ffl$FMdOJjR{dw*>fNg4;5LjV(wX`Rqje3l< zFgt0IV`;^U*oN$ajfg0N>0rF(TPw-<)WWI|76pNiCe(_DjWrRAme=d?|MFcdHS;=* zey|(_yA1?l{&zvZLgf7quN9mlWrYVW*f@75E~Hkx*bsjB(LyX z8+rjLcpN|U=ER(o7D05*Fjut_PrUTH+0U@m4oymFt<+>J1HQpYyGlLZ zXYJ6I+dQi(V7i;%cM>Xo-_qaBLaN(=p~EuB4(YDzjJ>$#bkbpBsys#W8QAVHq-#VJ z-W`y9V`!vH_8bCt$US-mkkEjBb>+~&c%JXEo=t6KU9>~3DpW3$T2B^OdTED@!ND6x zIO9u*Yc<{U<QjkS*bZE4U%QWN%0+&h zM`U60KG0f~8J{~D>WJE54z5*lF!k`t;+1q}KZW?SlmMzOFv|?wlV27*cG(spY#PWshCYR->$_CzK@n$E3JjDc z&s$xd94aPlY&!o_B})LX>2+UqTbFF$^O#r;&OrVIyh;MF73}g0F~F&DuEt5~tX$cF zvz63}+zIK2w`JE&`AxEXRjK;qIt;G=Q!E6c2Wrb)hIivPSJX`$R8*w?juRj^=oOOP z`jn1{qOO^<`Rfu#w00yHoe`T4xn`}fYM^m-Z7MogN!;X%Vmxl+#(o- z(9^D-)z>RMpq^!sZeIQUvPQIsKtDr^?TE>@AbmBY$M$`WrAZvd+Ku@`4q7OQA}V?P z$v#w{M=2cjIUG~`c^w6Kqlja|xR}EcfITBJ*K8f1TP(GlqyQg9ax7$Qh&T&X-0^tX zo&vWk*UXbLh(AF)F>}ucsHeBjETc7L;zyxxz?m55c6W%|o4k)KRdOM?LCBW7n&Ic~ z{!TVp_te()@`m#-CiuLHO*R)^1$^Lv2Z8qho}|8F7vK|eOs$jj8?leb+Q5h!!C+4N&dcd9fM8B15ZQ!-GAvGRNx?TWnb>z_V5 zRoQYp1haxqtAuTjn#q+5-d`|Lo{8`xny^WmK;I(|HFeSASf=G1Uk(HQ3f^PeVZNc~ zlt+C|hHeYtWOYy$(Gv*LC@&E@!gP4%ocHR-;K7I`57WNHfXHstIG~(E6Zvu1;ME^my$%W=J}#zAF{ASaiuRT131}{l#2ugYIbPzakzZmB+RF zp(-mhYleZ&AA3*UBS z?uPiGZ`9IW>TPtn@0KKMj@a1ZH{N|Lv_dN(!;!!{hn+PQ(26YX9Kz|WeQsUr`l-Qu zk^qzB72ML@X61Q9qjxJ@YI%TfWw5^z=pCrF($ktdae%#yCMyd0ZT&xD^*SY7{W44>r++;vIUDbA6Hr|H59a`~55ILwZ z1)ORzMLWwig;B*#+y)40_p~<~I0ty@uT#i^n?qqW{R6-ro0K_87rkh7{m0DgVm>=2 zsCS7qQa)NoHmpE^1Ro8{+yDvfl9H9U+QhBrW0tWT)nSXoZ0WDUdfzquk{D=TKbVdK zeyOBV9?Xcy-Dk00{Uqo>xO=#Br1i_?(!*Qt$4l(`xfmY(adu<)OJZ?woW{VRN-!nD zn6mN)En%1Yj$}?CFJ>+%x*?Gs1Eoxd>U)WjNbb=oWb3e<4t2oM5g>FFY?y)Ht)z1( z+Vr^OD~kQtY$rEmW>jX|`H#3qAhc@sM1=a0{G$afT&6qR@t)0BNvYW$L>MmY{3!3-b&@wpVs6% z9s7Gx7d4=l{zS^@kvd; zpzGzNYP=+lZ9_B=N`i~#sHJ3wk{S<}LpdsM`F&#rG*NqRX7>+uXa5KTKcX|~eJLNi zQ1^%BLWWGmUgrQKu@uvX%uAf8rb-*oN{PbBOO>%Ujk*!G)5Sept?RTec40~J- zoTm}qbm;NG6uq?)ShG~H zlIM&t0Nf?)c;u(j1bSq2NjnPYAWRB{%-Q}S5d z$=A-){k$XbE=YEyMlI$<-$_t^BSIwk0 zwX+Oh~R@AE#mQmc(u@iG$ZxoVdWm@y9n2qDG>5>x;2cbr7%xUvdzi}dIa(!zoj0E-GqCJk*Kqo`I zxdbEpl7vz|pmju-9#LDpO(Itf(0QfBxBe-r(;d6&{s$p$=3wnbB6>WK;X?ow= zUi2Ulywz$yp~cLbQ{^Uz0Y)etkFpBeCp4`?0xz>whGs&z#nAV(3#aXjpeimXKCa?3 z*PP9VQd(Q+J{hP?|K6u6rPth%@(S*LJN}!93a*h?z@4W zRg1;QLAk9+*5qp!s(*$uBnDXdd2PLRwxchNdl8Pdqlw#juzijks`y#t0SoB1_`u@h zZ2>*_-AQ3SNI-wR=*_xWBn$haqe8+=?Ff4i!&dLSoDir#4g_Mw?l1EGcvQdm02FSF zoik!vFk$NA1=V%c<06%aNwH!H%svp7{XHx_cXiF=B^#iHZb)Ri?WH4k;gbnq_`?WQ z1^Sb12U_HZE!fQuu}&Q7=_*dAtfW_hHP;LLyG8LRx^CP?1)4@&aM4BA4YZgs*yS^D z(DR|mCDiZ^FDzQLrj{Bl=-&+ozi7gYMp^W3yjk}F;LG--mLtWc6ylf4iaUG4=rC$< zk7LmfqR>bU{E1>B0zepp2ja*9D4;mU`6sClyW`!qz5+1IOYN~f>@XKC_h8b z8Su}zojuvJ|3AlIsr8Dmu7Y}=L5i4QPfvmy(U_HE6%F<-bt9&bf`g)k zS}Wl&M6O}6ctgL}bF{Z4F*y=RB|y)Rckv{>tIRzebK{aX2Y-K(pknR^NAeuyb1PZ? zkF{+Vlx#ZoY5A4OYR|dy)g80_SPce;L`0S$TWBB}Mpsig^)&57NGA2pU5lD2WZ7^n z2zLsGjYOjiNKyi3lDK}Pwiy`U1a)=$wlo$hx-dBn>qcRXRV$XNvbbT{zk!nKQ&lw5 zA=WxVFqVO~VP$XEd=BJW70L5Gz5dMF?7xzk?#au3bmXMRIwJiCA@G>$(-((>TY}0N zd#%%cr8bU01vqMs|TNOutrIgsp7{HhgMiZ>- zXoY9`Vs&(ns~H>I^@#i3pUkDK_Wu92OqY7&f4E4dkCcFgC7AU`%43qmi*;xKIS&A6 zpWK%^7$Z9vtX{8x#~LK_Uj%D&8<9S$J3@Q4DfmR=07I<3uL zttLOFRF+F37dW{^78}TomiG`E0IsS{KZgK5y6p~Z))`yDJxT5Aeg9*@Ort7+20u(pyTTQjY(G+s* zRH67K^VdH2)oqQ+1r7Lt?3bSy#a5cw#bSi^k-AT6^`o(VP4pGjBioW4gJV{@8fV^? zm7I1veRC`~He5sxk;zPx!M;3Tt7Ns!$MKwn;h0y!@US`D_~#jG(TxVEy``f6G)$C- z3#e~a74)M zg5y%-63$>1)g*|=WDBnXN8pIi{D!}Tn0qNHs>zHUm;mkzDErBtddqkin}0AkO@k~@ zxE2EPC-#RttMYyh;mWB31JAZ7g$@alpPI+PPS=-joBd@K*|Za^?uu*G^(;padykh% zQGIK^G|W^K={Q!81Ln_j9Sy`IB(nQ!E5IK9mr|-K-QG|AkHQ z(u=_;S|eI@&KE}mL5b5VOvxLkn>Y_FkG5o831rZ$mywvYTzK?iZ4DB2^#KnTVV<&K+8w>i zK2}_+&Q-bv!l|oF#wqt*%Y5t{am8E2qnB^i#xLzp3Q2Z~_2AhG$3{`ZACRSUUrOk3 zDN$o$P-qkN9>v>%x)G2sLE^T%XrDrixo0vU$+h_`yJmsk|IeC>rMZGb#ve}Se-IA; zKCqHL7F5h{oG z4a@39baXxo787c2BXG8EZ2!!2i=sUoCGhl|og?`NmsY(%RkqFy7y>Y9Fv9ti>|OEn)4{ zoe`@s3~*Acm62e z(+)ZunaO$bSKm3f5jvzpPk|_P=0Wc4UwuphPdoa40Sx>AVZ6blH30uV0KoK#km1=~ z{nJ+(WP2tX=x7D96J3b)%p^}i?%&pu;-dn~D{-Iw7|n`wZz|}z?`qcmh)+hJmsq6j zKH9{OgEwvz8T>&`zs@OYEgI!7z$q-rksgWO38A>L7FR2FlEFEZI^@)<>pm2q{=jD9 z`fL@J`ft8n+>I^&|M4u~P1E;{fNz)k4Y5NS{m(OmZ_=Tny_59|gLqkeH#*4S@ zeqAC048L3yB$erWEpf^Ka&`=XflT3Sx?kS7#L(Gu2M20ti2|9Hhc3@0?;y~)*80Xd z$|$(!POWjFtJ+A0YJl+E(YLY3*C#h{`oSKFc{zTXH*vn9|6H*ReMQ|IHD?tA% zj+}WqwlSL(lSeFq{Gu~Iph<}prI_XMluBPE&S|)^)KC4Xwo=fZ;0WC}{zV1frZ~v208B+b0vX+{ zD+SCFURaA4u@l^*xbR4-%+;D2(UtCW1ZK^q;$Sq4wnQShLJTLbaD7j;umJ)J6T!xd zgO3Prr{pb=_Efb9?W~+K-lqtW%OCdjG!Akdx#KmITo**1qHL3(t1xi(R7D({aM;@>FizUzYAb%5yeek^yQZomZr;jAH3+Eir(hM#{8PEizFuj44u%1NM`oUCBHvb&L*PpH@W&Jiu^bFE^Fo$TW#vChCN= z^?vwkt~2?m#8ZOVx(%6KPLvZL+YG=OY;6;qs5}1oq_y)my7ILAYHEJG&={r`S_o== zPLc-5wUan@LXtbrHKM5KpA}8S{_+cgpKm$#K_Zbwt~09UxgOOilmkdzEPwCo`)isM zIC>YjJwS+YH0DH)LvgXj&$@49(3L(;LfRGV#B1;C1t$KF<8a*kjkiz3V0YExD;h;z z$Apau#D;p7C`_S zfv`E|f3hW|R*Px0Tjg}+Tr>3v|F$zepl9k{O=Nfx_{OX5quX)=apLo>V+81B=rbM8 zp|tr_(y$3bI$&}r+Pf?wPVN=c->ktsqtcTDx6>(}Tlqaw%uABh^tQ*oHT-=}&SU&G zbd_+d(_F0hGtRleNZA3;d95Mz`#B~ykVo1@=yU+BC*B_bq%9V-STJ4ZcUpOv8xH~} z1~Ammf~#ng zWt|o{b~Z=Fp7Oy64OMT*9UUT#j`j+^4mBS>+z$8EKCf#`SV}xQ^hjx6-VVekBG2$2YXzTOAvThN|-r7oPXCFJs;yw*Cjg|cP7yUlf0=nKq^$B#sOwyshu@Hz(1Gv-}K6v!2*S3 z3%ltgX zrl1W;tKp@ik!uo4UrR~c--;P6pp##y_f-DdiE+9T$FZj;1(qlbXk3^J)6YNT3gAahJ;N>ST?C$)h zKF9jz=>euy)K6{!1@jlWF*;j1NyekIyIZ{2{|GYTECrg#kqY(5zk7WeoyvDWEu3 z9ML_GgJTfr8uqkp%i3!fejN|yo7k6vO@&kgoi$dQ9N)dp<VM$BE>bX}*GJ zWxmD;Es)W8Ad|;k!t;NKEEvf1_;Am`D7Mg-1ji<~1nK@IWfS|M-TF5bjio7*taYkp zj-v_zo^OxiXpI2t<(yw6CuEvVPilakg(2(DF!uPAhgc&n5o&77i09~wKevHE!2Xs0Q%TF$fqWI(!b?P4utMR8)*}v- z*Hkgt-(x_(;E@*~+{$A?=l9w}Gv$aBICR(~*s&O60k(HQ z#+t6JHi?3NG2;lp2Qn;8;0|!mv4{A#9Axq`Ky%4T4J>41`@IPJlHNg@@bN``{ETZ; znA@*eWVfZ9FPHaIny36%Uzl=9SK9<&A#`xN+hrI>2-VdOZcENv;9F{!2=VaB@Kkw~ zJU~KxGH+kY+NAu%wE7@zSm6H$d*}A$mO>?1pJ9TzjtvNUAoK6NgE>dPv7Pu9tvFT! zJd0PUIs`VCuaM|f#&GlTzNm(O*CFwJl29Y6;F~YHCJv=+lYiG-PZJiEuuV-PNDGUR z`xVYi{In@ggmV+?x~9{Gc=J`_72R$WHY-0QG3w-@C3y%V01W;D%alKIN}MSwfb=Zd z9&TCX&cm~|Hfb;aK3m0w0}M{+G44yBZ#)?O*EBJ-%vaz*c*{9p8OpDoMRh9W-5m*p zXW-EvV*RsUG+F;az<{oJ!vtJeLbutRX-o5sNN;$SIH*i_<2)NFx7VCNVi|}_)fOLz zl!adH_Uk*79z|63_32CmJGq91F65hrZIY>sH91JIuJ*KNg_#(LJq!LvvP-=$^_#EM zUG-UYdhTJ~E{C#KVD7r*a@zd@_WRHwf1}B|bJq5;g`F_(VE6}4Dc`eeN9y2#-{Aw3 zg)jEbmRl0&z2@O?_~4~S!A+?n18yZFAlzIsH!kj$*<7pMS+6pv>YHOWM_dj$(9pQV zn{sQh_|cOQ>Z~!9*&n3@h5ogULXGyCnWd^Zl+KoCSe=bX+5euIC^4u-_N{rwUlPNd z=grHjPDd`^$w{bbV52J@kM>URzBXKoyCSWujN1r3QBiBci=D*lu%kiY4!H*a51jJj zUf^F47hcF1GA8f&CYIJ9JZ}o{3PM`7AzeBPOI~S}K#lybo4-o)EF}US(K9_dD5Tm88Fw-!ac3b^#_;wtI4RZbfb7 zp96`-Pu93hk+5y1O$%LA&ug8WJdcv&H$D?K3AgFaD|uN9qCvzdQz=SDMK|v@loKAi zAJY=C10$Uf2{J%4bt_e<8U+*u$#lArI7>b7(K%1vl2cO`6uynZSur_Da1obu-GW~! ziM9my8&a3=$Xr}4MaIy;{ZxZ)EpLycA@Z%ap)8EY2&z8Q)P4Zc{?2(_a)2R`922!c z#TBhqV2c&Sefr0m?t2&_qbR1rf}wlcHN|}zxI{jl*`U1}j$hv%cFqzI@$;jS${Hyh z>^uVbM^=23cae{Ojnvn>ljmu zJ;xNWC%kI|L-TAejJr{!SH#2`MXJ#dOohH!Ze$sJ^<0UoTOn>a^IG`4h_~R# zc@{;QY?i(YKfZ#(xPSl0o|X~pxB1e@z^akMKF`cBUX(lw8xTcFnL!9v0~D@dOcsh4 zVu{Q$A)Zz9lC53bm-!sIAd?)oNy!;>Y63_q@+wuxj12Fk`9OSXI?-AKy_*!5x}4pg zI|ZxKS1{KFnap6_!p)}BOn(tI!FC0&c1(G1!$h77)hTN=2>&NzM0lSzrDWt|+Z~uV z#XTIO{tkLs9{iB^TmlRLj+zQ0ZO?0HRPG$Ph16r(iM%z3Xi#0JmpbIFh&LH_o;KNB z3mL_NHyXAqi-nNlwhPJm0$E%s`W11iMWTWgl8r(RjUKszBT4~$=v)f&5_5WxD-}5d2I~gf#6zURJi71E>k2YRV~4$} z0ws9&v%_1ZrNxfXME*pvO1PsHsjw@LMGMCf(XlY z&_Zo9{qct=J$?&0Pn*^Hvebz>iJ?EHXTN!-a>^wY1d_ffBsoP0IUX zhq+AGY}F+sB5AJ5r5zrBOB0*t!RuB8KG4gYb+qk*lBG$k{icoQ>YqpSb z2}v#*11Xf2VG}yOimx^w?{2v~*C>CYik|Bh3qu(p6a2VX`1y@6h=}Kn@%j4>SfDBg zs1+a)s7~r6TiRb6R~u6rbQr`&Pk_{X)e>zL-YBzZo(iu2mME6y-=OnTaJ6 zaPp?6{Sq+SL7;jT8@o{~GCq2CGjU8iYoG?d)3kfb=}GlwL#W|?Sw6%tK35$|&eESx5w}CBrPl^Z}usx7~)A z#oBEr-Vy-j{1Wy#f}X}WCg6~&2g``e_3&j7vVrMWzu~tPMlAnY8D*_szm>-vMZ1d_ zJg>w*6klIvwf6HBNYc*Je-A^Kr1Rdy_#>0`HTq zBu}nc(tF5=FB76NF@edvkZovyGDfdL2;rD3`@jOMa3&yV^>KMHLJsE1ufutJKVrYw5rIABu3Ww4#Z8VQneBVFB97Z1#e9g&V|Ukh5g zuST}yXpH_kPRa@6xSAo1a!x4?0A}3vTRp>z!2U4c7kyoMKp%rVt)aTHrxUhRhbJr} z5}@Ab4Sp>rj7!HH3oQ5I2f?hH_cVmyy-v}O#>To%)<&^*dMH5_B}+byf+X`#GP&hO z_>&?IriIB|$UFR7LWFRt&iXy|^HE?-jGvR8H;L@v_)M|5iseX=XC=#&SRNKriZDD1 z$rn;|+YogekIM-Uo$@hhoyVwBU6tRkp^ypRQB^nv$0uEJy#xHu!ocYss8$+0m^*1H zDVv*_h_!7GnEhI5z)03)9ASuzzpq(E>=cYhXe~Z6U86HqN{A|N@=(!%EHf$%WLYdx5)OQA&5uiP8PI*shGJ^$Ip4khaAL>uvl8b0wIf`qdlH zNOqGB_Qu$K_D2@RZQR$8r#l2l|0lR!VtDn97@R}&Wz@M4NOm|A9!pa8h$3Ed0A*xc zUBc!}>q_|D@h;~3Zdh@ai|!%u^7ajk-Lfr~*Oswsmznf6J>n$jseg5sh?f!ZFy?bB zQ3N^6$iy0VX%iD|)RE-Xbkj;|ud#&e_G!N7fC{&ye^_)4He4v70pwjRU{#+@L=Tw` zn(_fnHPZX>&+l35)quT zffAl$tHjRkGDR)WZt!Z6`eo@@=@s&P5C?kXvK z!(DLYo;?LoXlox6e0y7`KLmbB@RhnmhFR*0LIK*VEJmlM(=ZT%eKA68BCuttCk7fUS|{?zjv&#eU^+RQT}PC{3*FTw{Ffi4ED ze(?P>3eoUS+A;r==kXemv`|j9Tsb=oSzni!V?|9-OM8ZdFOP;I5U^D{4mroaS)|@t zZo9R&do63dEwy03J=c1;McDVlOs*Iso&r!}t0XElf?<8DoAllfFk-i?Z1;}AJ`;88 zBf@uJyR21Z`ZcmnL9f~i8Hm2$QGO|WfA4Zme05UgoDp5BU=}(yK2ehv?$RQzhXwYR zHeH=obAvTYCQUy?lb)9)@Z2mM%nARUBP}L#suV098p@#8n7`ziqj$inhvbL2gyhY+ z#=tC88%S~t%VqsXLhz-9|6OK6=2Fgv7YnXjqsG+AU@ZZ$z{PN(7g})}8CjVKb)k%X z?(bQZ#=~3duL@ymwe(WYMnKF(Q<;EpG?v|GkCaJd=4b}GbbVmfCS0k)GUsgg;s@piV{2!B+8UO05M#JM2*#{t zMsI_Q5C`Cd7~8AA#+}!nouE~9oIw0c{k$;;upqKJ9|hJeTTg3@NkANj34O9PYaU+p zwEz@3t68w{FUHb^noeeKwyL3F%33&SUD}~q9W9s>agCgz#Nw8WiYLdyvnz+C1w!=A z?D~X|&$ZUemlq#+R7RiynG)U4C?uhswJB2=7E1;-PJ>SR{9?F6;@?2JB=na=1XYV+ z_Q4e$lyD79J9vS-u~0tPy9bH_OuR&|+_La8+6vOX*k{TR3&3AIoR*2N1pQ8JhaCCB zyx`SEInjJ6Y9rj@#m`Pa#~VY5KjBkrn3X%Zn*57GNdR%SyfA>TxDib_8c{FjK?Ao? zcaHa4g8j7t>_I`-bUbP$7Y=D10;mL;rDP8q0rPl<{7$oT@&GGUckyFNk_shMuuHW+ zVAz;uT#sw(kFZ}u%RK0ry8$`8+l|}CIV`DM7GCIUw~6t%yPd!Z>ni3@$LFX**pf-K z^*Vs4h39@dx<83{MBjMKh^Mr^7~T`)|WIBDG7EYYniB$ z`WW;f5NypI)Ac5NO(97a%m@nRor@E2T$YL2h^dMVq?r@X^+?=%P&;uSe}Rl}XV-|UbsX=pyIDE}|swOu3Nd?k2Q4Xk{UW$mdj zFISof#_6_7fZeP#tXw-%QAr1%>pE7&uNJ{SfZrNqL(c2xN0PNPA6m{JYU=>|?vcA@ z0O1hS=hXNs0g0yAlT7{T|G{NGO6x4g#OVsuqpsV~aO=;ESF0OY-qu~CbP*ObHzPbP z<+}5DdFX_iSEe;HJ+mux8=)dPnnVN$0wn^DTi>p8>lE??Cq)s4 z-G$GdmX}Cyd?PxTH|C3XUM{!_-@|mp5E0P+Gu0weK>-gqfpMLfPjAU1vl~M8*cF5g zhm%Aco?7Klyr0?NlX6(J9c6TJx(-gLjR_Ms*l-erlY56Cv)tsYNAMei-NK4dysFI9 z^aRH-WbZk>19+G;txtw^?dr6|Rd$&)!klH6s`#ovs*PZXl2y2+j@DxG(+WVfam#E1 z0r@!p50SaACC4{Lh#>)dqlENCjphPJ5s65v3iFi8(}dZ_vjajgNh(wzWI1(;W9_7j z)LHByOmkiFis*-%-|V{tGb$2+Jd5w-ds=?==roER6CALrd%46>k@eTyaaPPdVUeU& zMOu)qt{mX%Jh!LGajQBaa381tQ5u|j#V{691rk?OLtJ`0E(B6(?QRqoD%k6R|Aktp0!JQ)B&YGHoU#1T zI}?183gTYu*GnO&f!18~{CFO(l>BX4UO+Oz@}Wi`4EoR8Kd~A4IXjLhZ{6mU2kjmt zr*Ke6Ox-y}*eUjuvEVe@`{-G10_+!M=TVp7?na8T@trywBO|n9iXzH_Sj(kJnNkQE z%nckMCpv-1*1k25uN`vAwmfrFB<_rGmGs&npDZdghXDVWd>(C50`eNvsP z2kM#!`X!0v6+sp(!VzrI`^iE+cypU6b1W{le>8NO_*Wow>BcFE(&jHrHjm?2`;$P9 z%d)Kb7NgsaAf54R$+|k)zV(jk04c;5S-$gviAV8vuZC`vxGE2Ub+Yb5T#Cl42n=uu zuMvfB!ef@dK4drz7`RvCC2AWRRM3in+6iPhw2!^-6m2H_agI1H%x6UJfJpsOlr3-S zn0Y0z*uth;WgL+N4^K>xffA~|zpu=uE`V{O{35V{LG_dER5%HMf3us$$?|3hu@nwM zJ%jr`-(eA_k75v5d{`u0)7qb+or1v=>V%%%k%;U6uMn?l5Tct^f3vAO7PVXg_Xfh!B$pA(*f>o_@rwcrR-5n!)7? ze{Q*NkIh{>6D#Th6-`SJMX~+7YdWzhhMV@ZR_X~f7_R-JJ6!r{#amb*8FYBf5>AnF zLq(u_>I^Fj{)9T%*+P9g2WxxvPw%Knf?5_q6gOxZa|IC`PCqTI;VTNm+&Ge-@j`A7 z#3hkB@*#o}+irrl-?vI9zsm{``YYKH+SY$soHr9&-tL;7la1UExdZ{T6(6Ce5tM0G zxlss6V2}Q9i&v`;9Z8gFh%zv2s}#Yakzg-Ewyue|o7pbHE*-El_Msxg&dMSP zsHHP#>nPN9YUPds3xfICS_WA1t=LiM!CLT){nQ}bnS8Mo>Aq!mjzQ5PCJPdnl+?Hm zH&p_1{*|Ak#ch%o&ur@vSp5v8>!bpQZ_|0gF?z`#)AhSQ&o?V20YACh2C9v&z!Gw5 z9mf6Du++ENmRgz`NtWI_A-B=DhBO3?gxzuMLGo@JeI^Pb8`NEo1G{wlXRvKDQUzfT zi@i>{8i!$wNJETOmt&5YPo&8z*+-^cS&oBMq6Z^k9!BP#pC%I;nUcQRix;>!k%GE7 zKwB+Aig!r0oOtKwF*5AbGTWYX9DaPEE1WJAly153rj4MM`LH`(ZlJ7zQ{+(q20BC# z-$>Cu;j)7H$V9F&P@-Kgg9ctP8L4L{g*Q@*OOc;3nR6;$gJ6fBZLfr=NHQnZsLM~y zpY0k-R-+W9?5L0`>T8(iuZYg#@M=+%G#vXJXaDW+LPt3r^6f<2OY?CN1x_U#g}LJP zzSe(b@3j|;4w+6?IJGnUzH>!$me~86R2Afi&3mnURO;BJjGnuo5XA(Ck?c&F*jKtR zwuX2`C(EHJtp2W=+*(~7mh_U3WBx>vBrk?vn#Rbu?B~t3YFY*bcw)2Xc0wU5NG;n9 z89BD~4kHFjS+HSwD63ZZ@hS($N{)EcDUUmXhiX*vO?UCVQ8hUQF9x3nY6srNIn+#s z=t1CpwWxdA366By?#AwZp9nk7G%AeQI%p}Kf1yEc_0cLG`@``7An7DKn`>s~_K$2MAoPpRkM8%+3MBnJojuD)PTeIB86hqCM)aL-iB`eb^5S_R@ zhz{b^4_q{uNa#aPvvRLJCsI}?R)=w*|J^i0!IvuJW71>$k`G@yVO~D6W;@+XajH1#0hazt4h8zwjgHnWBki zKijYQvbOzupHalhXMOER;UYPN*y+cBcVwdXl`>m^chSUcN4R3~D8XBaQ{vaT9JWMq zVqMoph@eIJGFi}1v?!v^8HTw{F!}XwTxouV2daDc?8Jqf%p5LeAeFKV?38DqUui? znaRXUb^bZ6LHMc3_;!VA`}~8fAWJ=gSG18?pd`6ZF*x9ekbsXSmQ0mK4L+!DMsztf zFwnu5489;ohE1G%>mWOMBrMcVDtcVRd%Q}*SuRWxg?M=>g9(YP4HWJr6>NY5~P7({xkM>dhw-Kd*kFsZIyanQ(YXbEv4=H_PJN#i<=DCWVs26 zch6$~9eIuY9R*uqD5&0uI3Dr@})^faw1><{erUp`59v(8%;dDjHD-I9fS^&c3nz^BQ4wzmkw zNT4Ialn2){F>gH_`2Ij3+OzI98;-Ge7Zz~*gfh)~bdS?AO4lFq4n&9pT>%}a)>Tb;Ar~kcLt6cZ4p@uX!|Fik3n?{YKY_vNivK++B}}`RS!F*P7KY} zo|U(HiBbK9X<$oC{jbsqFQIgo97?IMcS^#$y`(uQn?)v!q%X#)Ay_ZQ#Ys^}+~L@I zd!qQZ$v`<7%_E5#+pXTpn2P{#(Y0ww>za|rB??wo#Fk*QeyCvRKD)>X5F82lFLiBpB`WL`ZUlt9Ti=WFQ{ zl~niNvl*Bi0yV#eIugMM=S-r!$dLy`@=vS@bl9sjgDb%beMn(pugn7)B^FwI{m&&% z2ZUZVd1dh120G^#4n$QPEv(eUf@Zh6y z@VA_;Gr>Br@QEm7!12S}%V%LG@)-2RHnHezYNTEu9_QalF`(1ZI8)XJNjkaN8|HZn z)~(8pZ?CFmcZbJ16e+!sj8`q4;I7I&d-7B(Je16W>BC3V2T}pJG2;erGkSx>{xjC2 z$N9G_J3*hPS>FbKpwEswS&)M5{(-3-*Ewo5xCqe<*w6PQt6?p|G zimCME+Wm_54T5is)6hsUiQL=W`>8XSdbWf1K@(xid_1`$1?CHbfX)xcJw}To`KVS8 z*s(($ckJ*-QP$W*gJr3OKR{fivUUbRN`24 znc);JJ2ly{Ee)oIx|3uF~GWBQhoQ-A@(|RRM^tNxffk8Y)NnGz-yRd;JED6()wOg zC~H+DEq|;rszw15nFSQH^WgZHiVieD$*{pgt6sHcB=mFv-eb%jvmcbTpt#f2IBTw| zh>*Nb)5#XhFQ~;im(DE{)OYjDzbnyLo21~WYQliTph31+h$tXm>g`0Hh*ThC;ygbR zx11+zU)Sa5EhTmf!0Xo94fS8wml7`gMIXa3gB)1>aCyEh4!bwsmRLdGqJu= zcJh6-DhVoaz;&Q$m;lrKJux^e6;uCDMbdkCyGgKb|s>F1UidtDA7R}kj zKO}G^eMFsKk1>olKqkYcmcoOBhnra{Q5Sbu#w_vCRN+i^CZ=$`RZ0}zdE4Ap_uI?3@Zb>v)i(-TT2%TUkh$8B+wmYX}H zht@Bwr|21&0I(}?ZvgSy!~RRc#k2<{xYmQC#{5#<9DuKqV2Eh)pR%_Rv-`e%m6ZA& zq-~|t#rwS?$~8t@){b;H^oN-@kqd00_{f3-t!u+A61yxC)B*x0NxTuk(X@{udmu z@E2K}KAQMyry3R}vNGU%Xwjbvyb5@}*YH2OxhZkiR&d>aR0un@pn$L7Orpt#`^*;m zAjIOFo*ucgeu}Lz__l?gL;_9f4S(n~Q&U_sffajP7>kE;Z--*y-aS)A!?a_IF>;U| z-iktU!E``=7!GgSahaS}6>Ykq{v`g5?I(W&!S2gAx#=wmp`h;Qc_{ytqU!;rX;?6WXAp~hKWW4= zU!o!+eL@3&`Lx)p{ds))QX*WF}f;HOPBya}*8 z(Ey282I~8Kv1;4~mGmB|a@i|!lAS3acqmm4Crn*qg=Y&}YKZ6G&E1;CP@|a{UyKfd zZ^{f~FDny7u6`VE|MqOwc51$ex%Ghkxu0kfYnYEv$h6+8N{u!&lMp{MZj1YT`Lxr940^A`h>j zSzDxImocMP`nh8T#0s-T+O-5q{z@zg)~cR2z%wuEp}u%R?Z=f1ti6$uAxc3EU&<-% z77nDOOVv1mbTlM$OI1DhtxyVxsncypFNq*Dax$IoUEGp?%9U0kzVs_&!CiMN2MQBE z{nCaG0w=1I?@J|Da-Qz;Fci-O`*S#=sf(e9cJ5m&_ipvxl~g;af`F!W?G;;bNm}2W zQtJ7R5lzv@VpomQn=u?=21_GL_c&?4`p>sF4)(K&YkAd42^&2>aZ+VNrNMf-6X#d7 zoGG&;2!s?=*xwnfP(i3Zq|TISXANtJ1@1fDEE8jGd_6FCkoifAeABm-#xd*Z+zB)& zk2yF4r#!X8oRyzOIuSGV00uS^o(qLc*D(0^hSsV=$d_!Ic z9R+d*u3dNa#a=pvammce{Cc$_6?)OZ@hc!I=CL{g_AMYu^<+GYfR6GBhP^DhIVsu% z&}L^11l>P@T?$?e%sPr9Wj!5ca+$%mV8+;whSa3md6iok8~KsNRHz`9;XNJRUy1lL zdYgb@+U?8Po`x6KWQ%H)J&@1AtP1TH#?z1% z?k;pC|6{dXS*AU079q&;%?#eYExr@kNiDb0=kOF;?4+3ci=}!d>TEG@G|I(n#5%G( zu9#68yKZ)Ff@ly`w0(R&N$^X!$=a5*6Lv3&8@-$a354WtV2|cMFc&rvP49yZcyLDI z=4=jecMBsB!k58LOv~8J_NQG`V2fGa0<#WWEPd%gR|RaN1#u;TB@8KAzx~?%vs(H$ zTRpu++AT_pA|P%Le`s=CTJC2<7xSk9nzW!~gXd}nI=1RV+zINcc&&YTd=Ep<2KV_s z74rv9!}Y5#(>KUHBt64N6qwv-)`W5vbB%!JwRlZRT0#jd)RH>#ME40t?g`$}ls7wX zyJEq|Z2@q-s(%rKU?z?NJ>^xP^B~|cGHB*|+payMQ6`V<{RBKB!4Ly$3MFB zh8A^r&D0~y5%OW_jemtv)+CMV}a@)pU%Iy9i4$Ts@dqK zdV=*4RkC{dZrG#)cxb~w1s)aHd-U6sYz2YD)Q?=f_QHvmKF3rt5ZG%gsOclxfP-qXk>?&Uw5-4H+jd7 zUT7T=Gg!lGG&Rxmf1y(}l@xOh=t-1IJ|m_O7gR`Wr z%8lB~#**Li08gILQ<6<49Vc#4qt(ylK6a;qdBO-x4>pg-HJ{?BU1!t=gItdYbkrG? zYier^m>e&l*Gda%-B@EIP`a*V7Mh@!;t|#tH+?7B4hq@^^~>g(z0XsqMI0A7OFt{M zLVTN)f|1uy4vUT($U|Sbxc0^C7ixR_Vzok1I55?GJz>HeK{(j%x1)l1c|L@hC}qgr z5HJ`{^I>cmf^bP4;xq8KF3bQ(x^H`rA_M< zNjY<+O+j}vo+|nprF|pJo|jn*C3c~wT{{w(v6tytl5qkljMm{gc2S3}i(yTMaO{n910upUz%uhi zNbmsVAgv)-MOpkO_5n2$vT(zPyDjU;OWIz$=Y%!k!1Z5Lk-IXx+!itco zgXNEARcRe%KJ{V$ZEpsRovH(k~X#LI>O%MgkEzxvKjcB52ZZs#uS-iBQ@(*`a*zD~X4Q-&%4B zk;B8>tht8S>1-@-ttrhIr^1KZFy5lV^^`1rpiS~C$b{hWlC2{RmFj`**F7aKMwcb9gM|5D-#YRuUq!;Z4| zVHYlTq&k^hlX^HGYN2YfdG(~Cm{#b zdT1ieKbrJ}?!kC_F4kJF?=a&al#r`YUu4w!-I?eZf-v2PdtPCo;k`g#&7?-^-IE4P zi~xWn8H)o=VUD(Ir+>$>NEjo{1y4<%gQZsHKuIn;ZJmR!06U4f+C&$l5btZ#t-+TB z4Nzs%ocwP@%Rv$j#eMpCX5zMp5xlkz8IhddLnuPAJ71gSvVV#T(*yTVce|~^Pi#bl z1?iNc3Z=vM0417dM{9n*fe0UGwrE)uDp=I3(^&-U#BP?Q_7tl^08{O&>%hU%%Udi| zVHb>+B!=wH@*G3aa|+RCb7lWFC^&8zsjS5P%!CXX3w*? zz||!n`i8t~Ik*XhOdIs^ZLOQ~*oR_%lHyH$yPcBCY&*Qw?Hx{xNdB;i-pW)w2W|Ck za84N@4dV3xX6zW}$&L79Bb<{bMcmJGOE6EGUtN)n*+%j1o5_SluJ(s2w42;q#sL36 z0KjUkr-{V0iLn6TRN`D81K%GvpC!>qOVKA=V<0kTYoWHz8n254A|=$G-bSp#ghnS4;Ef&V0xGRH?NL`EhsmM2O>=uUi$cDTY+in%A zYDy=$Z`vRq6&jY05#bHPQ-kv$MC}Xk@}%sTmebxy*?`-*^2qPH|D*;bwouI^<1xxp zhM=$hYH?9;NE1{Hh5n&hCk-}ag=VHifiRT^!y)&Z;g34b{9G=`rR;Y@fN=IcSMz4X^H#L_)3Qv5x835GAtCKiwr zoccoOC!tijSp0fyyTOm{PeeHrxCC0XC_ z5vwwX*6q|*?Ii}Z7fdDZJA1k;7WI3)&O3jNZWlP0wL`XewV?a8qN&%Zm44UfvN01i zKdUVjgP|N7&65!0puw5^HnlY|U4a_969{%s@fDVn4Rmok5zX7^7A<~R)^cj`Vz#A^OxigQ<-qPQOjKdlR0Bw45E?7Z;D&2EGj5OpmCYmbM zAN5PMd0L-H+n#sq0+NcfE#pe%lfiqG(of*uH#n^kl(dLs8fuPaKMYBEa+muN)aC_t zQQ;LIjSJ>-}*^yNZk0$2@IiJBTIJqAXA)KF>H2DpC=U~1IV8!*0#r2i# z#d4Uhl+Kvf>cYT0xo-CKGF5eC@7P63wAlf}{2($#fj%+^k_DD9(pz*bs730$Y%D3# zb*n{gP6>Xt^h2lfjBHlTSfB5G_jcebK6Rl!RjslHFy*z_%r< z6Jh}s#7GgHeG)>65dD48cNVq1ETZZAluNCK&eO`_tmRP{hO(z2#7|k`G~e$R#PPnK zd90W1brimln&me@W`+W@NCnG49s5D1miN}nK%-0I65OzPqxNm3m8Yn(-R)aenKdtw zZ&&5=1~ueTfgKi?zxWf8u-#LQ5*!4XaG@yhZ$<(4k@%G4gBB)4swRL29A^H)S3e6P zs=D1BMlvgKQj)*4V=mH*!i`>wD5C-arH&G&X!NhVM3hW#C0QWR;UET$LgCG@GVs zzrDnO;evUWqX?PCcv0<&J^UcVEp!aO0|_MEXfRny6w4vm!iFG_F_H77s7K6 zQU;g%g60JxM*6x~1P;MG+1b;#D3(U=a1H1!7p_;ggES1vo(A-6Bl%=?=M5l22qLFM1b8g{I17)IPDb4 z_HB87VnxhuK>Xl*iIr|c@ek<#+GI?Vv{ok6){V0ND(US;OKqEs;pm_1(b5$`CAtkv zZ}pc#%$t=EG>|FS0M{2$8kL=p3o7CrK6N-i_}z$JnfgAN)j;DUOHG966*-$J59;i6 zy7-7rnpN7A#E$)7q(Y2QEwbJt!PU-8tScZ$omE^bGp@(5e(#mPU?(5<(g_mrg}_0~ zUz;34Ntg@>7^z^Gn!!)`H%V@P{6yPNdMP)SCtk*fVV0f+f2;Np|22K{BNu7LONiH% zFH@jElw{QlpLNEXTz$4a*^S?MRQH0VHDBKISm+V!N@fk`^hDzrAK(Y=_1P*_t@?i3 zFx>z6>ub2Of3(Sf;Y>*^$n>4${>e(M5I$8UhPBAV&Kbv~91wgGwjwrp78QPE99N9+ zy+cVzAYqq>??1`eveLV(D7k$0=##+J zYI*~41k#s?!srq+M%AX=G+u0&gPEOhmC=M;Zp*ReS+ARaFf@XztYk97sECL~TR&U` zbHw_(X#CozTH{hP_Bq{(Lblf{&a(3YB>v+KXIY^M_llPYz&!+oxzp_x68B+dj3)*F zqq-Kdt(7F~J{zN{dZgb2-&42vj(pvjuZE#tbVsn=9Gu2}H$a)DgnS&872$M|u&>0T zl|-jTjH1+58K~GD;@2tQhE$9#VUyrVHs@ar#G%?Lo+1?^-h~P5-8S1YPm%W!v<(A% za}hJtlnmYwdQ;Yf_a-CD|02#PJ=CXemDnjH1lcRX@WMG$PLXsCEqbPhAvrSdv|=E6^H*Wb!m&+chrNR* zHw>KK)hm3;-v5$SmrTuN1=`qNy)3)*_3YW9O63mKqIOgAM)-4TN5!yiv~>1J1y9RqKa{YFzwg&*#XJO-k0 z(fnx1R#rF{A6#F7CX6Kph%7?qaJXM<*2@im%y~#p=m9_ZKP#$x5HO%sj`z+aNa{kD zfIcwHr-@>qQ9e-90(p9_p=Vht)`@6vh_-v@I{Oc+-G}3S`AldzI7S^W#Z-3nn^w+= ztaW&2zFU|da3gbd5Ma6DdIUDP1roZyh`v?iNOXti{QjgMPaaiJ2vuq#z{e3fy1REyQIu zw?GVH*9>0htnclQ?Y#x-q}%*B0%fHX)Cb}WgHmgL}G>}_u_ z%a}`n;>aPq6K+uBm%1h7{GBx|=h)XNUE;;CdA3p+YiTb>Z>_hbSlb_I_jnmocs|VN zPfyRGtz0C0{8G|TG;!tPo%Ji7wixhD&Il0UUam47%@1MID_x!joL*8!5}|S$CgrmN zGGP{e2|OxzQp6GK)27|S7U@Nt`G>*)t9L%UE5~wljR^I<`Dpi11~2o-8Go5d)7#H3 zv|#|qhF#imzqSF3t|{^|WVeR}q~e~~D73%qA)9R+Ch`&vJA*A6^B}eeY9VOKg-f#f zko`xb>R;>%CgeEE!Y`d7ES#F(fIuC=lgaf~j;A~QN(puUrrMuMe*hYBsBsOuJ^ zggxn7{v4}37gm&R+eVm`>gu3Q1ToPFr~7VzR#y~ZVeZu%GEz|`3Yzzf*eI0yxzg)y zUP->-mY`DD!?y^-`y`tju+N1kH-rNu>f*`^@S4xD$DcE+EzQLgW_Utf%42|g>89=4 zH0WcG88&{qCOx1c%pAJ>?Zs5#_J8)#BUz_%tNLm@{{UcCpX`-p)6Hq4JS6-=;~YgT zf;YI{)BUStBpHQ|SVa?Q;b#|zGJ)D2@2q8C!ZJr?>1APrHx*7wrbz#$fOB9A_<@l( z-o)pN8qu?@IP}ZZ0>iTWqH;f(l`1dg^#ZIa7{jdDe{O%>P;h)`#1idx0kQH2{&okT zRkzS03+*oFGM6mehb#EXnmfeDn|JKD+91N1n*cH-ye8rBG z8fmdGzibwoLh7zG0#H3e@v-9POtI5n905~aJ7N%3_~%F`SfYU|gtA6wSq@FwGTD*+ zuUPW@f+FF{!xt2^0N7qpkC&l2|D?;doD+Csj=&gdy8n;IDdN43HnsxdikLF@(DWzr z%DOcFeW8T4^NL1g9e1>`8R5Z%^fY+d*48v3soMKw8v7Hpp!<@+DgjcR>lo9KN}}P^ zI{A;QDpz5-fg2%s0dG!u0l230e%XPCnuZrjgvUXmNmJL7uChu@1Up#++xdJtzsPkk z8=7Z%m0sBMal*k_17qwD2mDVS`vRwX()h{px6m>$a8bqCNW^Euqh@rmK_%Ht{3qU( zDd$wuFNRv;SaMZj@nEQDf~3YW+lXpI(y5xLpFXEz0E>HA>Vcvk>C&Ll0^HXEeYQSG z`sXfD^`iwjVSgXN&O&o#=d+L0k@b?l8`qV#ic~MhB*Gy4BoU;Fb4aufOTAykmez6f ziL$MgZ<&?$&jR?xkk>67l%a(KnY5D8%pzA2Y8*B??yP!1uq9_xFb^@oTafBUN#9`5f zwTPmCez?-m9`lq#P*r_d!SRgM{-Uo+`4Lj4K<`wxSmcW^y@Ek`Phj#X6V5zk$ld|6 zl8kk3X!8@F(`E$DwXv|`Jo#r%+49+fW%dnz)G&bL{Nx?yR(9g)+SJ{|xfOa$iePMH zK<*N&hTua*$$c}EO%6~>kucxN@d6f{bo~3?%DHO4@aLC6`#7sKbOJe(KT0{m{F1di zjIcIs%-9W0$~d~s7P{Wr=Y2^^U{ivd4?*fT4ng^Y&JMu)ldbTmgJ=RWnZ zlyjxgHlwI!UDFTko3f8GOrku_fVvM5B9Drbx!#O?d)DnYoS~EkKy}hzy#a80B#qj# z4gDTW3F<7#sC(wA`x89uFmA^ceeTz=&35_KuY33-5e!<&9d@48LnG@gc(DFDhouCjB1Yn{}sHdtZ`l7UJY*gkN#Q^qR>B~p&kI4JAqrys_up*zoSTd@@k zsFg-f9gw($%8dlPYgM=bS|~P=r~pO$eMQ8iws2(-e(HFYtk{L) z2VpPw1NmE~2t_FXR1W;FhDdDZ!5yP_2bGZB?zenCI`c-qiSN+SUA%GwC^B8>oRjS4 zSV=(x0%e>SMBiV#BAE{uQo-P8(g8CG8=yeuRtQqnfG@^t=6y;TPXSBPD+hciF*CG* z$aiJpuM0^QsAVJO7B!08q`oD&Mq=3N_4NpG}&+1;F3s^jFyW=NmDJzM2`$3hH zH31!}WoM`SgV}1es?2chm&7DtpmOuWy)fz>&~G#CTDctqhd=Zq7_q`sD^`NdBTn=I z%#xKKSkn+c74Z$@%hmMo+9>AJVle-HsreP?2w4X9UfkQcci4piwD-wwx1`mR*u$+U zwLO;bGS%D2G^v9$EAn@p?dipV|8nbRDY(($w|2he_e%0Cq!3qi8gK;`et&hT#EPG@ zxY0QSzcXWfb(Jm_HkMWnOs&@UN<5^zCmR47giYM@nJEyt39U@f*efm0aT4fI##ZM4 zJT@y^HOZ1W1Rd|hDo*)dtaraCk=s-#%}PrD@&IankDydoq}q#(=5-0bleJCXDF@S& z2qIX&`*9BvuEGn570p-}#70=}xA=)(A67I_uVyHJ^vpI38}M7zgNWOt zn9slrf{&hL0!S;`oco=F&XR8$jSW0yJx5AwdibT(1XQix%wpjN6#A z%jHvlz57c{7^aeua4kU5IfGVFHO!ZW^LJLEUg`@<~uMsbip%WsNqvf zs0`b1=)oTL3Z%M+{T$SP`K_JOzXI-uhsF0~=r6wQfg}o92A93dd)zya(M@y`bsY4= ztC68r4MY}Y1R4~jnGd-C+7XosbQVN&I&yyjJ}%#84S5e-&;65k^H+h>RE^?jr9ci( zp!I+y29UH0RQJ2{_X$C~T&)g++l?$HDFxdTvhAwhJ8s2Bd=0yXj{d7>AJl*tgT6eQ z!e})4P~+c-FXU76xk4=a=JyD4{I*~*II5KU>dBP6~&;kt5EGTfN>kKzmx=6)WpxdK87viW}qOI;RrS()Qw& z$1XVf%K^Af87{xt)kk_*x(WDW8K)p5&t}@weeCjWoP!`VQD=u?tWH4BKNRH0RWJyi zQ`6V5Y%}Z%Tmy}07-K32&j4+u)S^Jq8U857ajd8&+SaBk7Fo}Uj~PCC;p%ts(KhNH z2Y|>8wxpy^VICAGC5UwaI&d3pK40c!Dy3*>ls`$J8*%$Vrv^F$sy7m| z1=~S6R>FLlXnR|X7@dn1aTkpes0K4i@9*t0^zlR7yn`s^CBQkJs2vs8pW&(_djIE% z2d_Kv)2EjLy+(FoQw^L0fB_lKKU4qMOmwql(z(XaUX=<)c+n|dbX$I2gxKP5{xvx3 zOm>-JWN*d#jn+@gy>eX3zj`Sb`Cg6Ls9EsPsosTM79q-vy(*Tt_RvB z*=qzhw^b5(X^9)(pGVQpX%tEry5c=Bfbm2wX-zz(ppK#H#WUKz^ow~ss%)~TZmH}C z6FF^vRN7xXww=!ZKZlr(j`~SHmYs^Qgv~St%EOx7SLgdqcM%GwrkY7>OkQ59YdQ?l zEesGlLzEGZBH<0ME}F#1qOK%0DX0CMfmWbB^go!1LPzAegbv5RRuy}QP}Fds)(^mD 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

O3lW#(y;|oKHg1C+M#rga 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

;Bo1$pZu{xhRC=i(cVc1p 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 DP_d*X literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511152002-Config.rsc b/MikroMaster/20260511/20260511152002-Config.rsc new file mode 100644 index 0000000..ce41eeb --- /dev/null +++ b/MikroMaster/20260511/20260511152002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 15:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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 +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511152002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511152002-Diff-Config.rsc new file mode 100644 index 0000000..2c7127e --- /dev/null +++ b/MikroMaster/history/20260511/20260511152002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0