From 5045fd275800100a2574fe127b5a20e67a9d9a41 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 8 Jun 2026 06:20:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 08 06:20:40. --- .../20260608/20260608062002-Binary.backup | Bin 0 -> 257001 bytes .../20260608/20260608062002-Config.rsc | 3415 +++++++++++++++++ .../20260608/20260608062002-Diff-Config.rsc | 23 + 3 files changed, 3438 insertions(+) create mode 100644 MikroMaster/20260608/20260608062002-Binary.backup create mode 100644 MikroMaster/20260608/20260608062002-Config.rsc create mode 100644 MikroMaster/history/20260608/20260608062002-Diff-Config.rsc diff --git a/MikroMaster/20260608/20260608062002-Binary.backup b/MikroMaster/20260608/20260608062002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0c4b350f5268ceb27848be8c526d37acc0abbd42 GIT binary patch literal 257001 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%0D$Wl!wjh~hhMrLA=`dxj9Pdw*=SUGZ zWdos~R2l~I)K?nxop&)4wuVm^C?z=&KRCPn>Y>?Q5*?!vYcB8O)Vzx&3BcuJ*La7x zr$oyUD9@t`T6$)Eqa>EUDSP4-ok*TGN&HWiAj%fOe|rio2l}Wc`_IyJ`*^0;ivl2X z^4i{#smabsLTKGXEiU=>p%R<+p?e;7v{4&1u_qQ=&n!=ncqJLdRz_Tu23?X}hXW=l z3(0gg^FZHGFNqiWntPpeeIdBF`rX_4iB?hLwMDmrw&{-?AGZ&ZkTF&1p@G|+viaXw?9D#9>bn_ec=_y-=4JHNHjD@74G?<*u4QSvMMkaI4>~&#~j@A=}n#IK5#^ zlc!)J7)Zd1+x8DUHASMwkS7ES=uCi$HBO;*ixK%(PDWBgh>M z>#%C zqL&T-;R1)$!tOi&TrIU}q=^jyHpr$2A^KgN#ivwlB(d$3HtrTUsjB#PC4Hf_gN4t6 zVTEG^UdvyTEzZsVQaU&7JKG=3*LE&nrjF8Gi;`4>R9@$4lI=JrTF(7BS*mA|d?fch z4L5huFrVEOX? zk$Ik8!#KcD<~E!=28qw5!%~iG5nCy2d$ZvWKCX>4zVzy2 z;U>fy`G>fOV1*19H+Bi9wav;65)jSAE4Dx_G}1lyDY*6;YfeP>JHQItCelaCA@gyk zMmPNJ30zAx=W-eXH6#a*qXCZt3^46U9&|^0)DGXn2~YO5g3jl*LZuOAcuV6(G8Vr;$hS;nS{8N{Mq2X z?F$*azKmQmY2BHi;A<)>>g5P*)7i>az7Oz+#gmDgQIH*(MIbJs7GJre7}{>VT~F}c z-N)`PJ^1Yz$hE&1o$a46skGnPRiGRdd9Eu_%AA-~U8@ETbLq!T;dQ&Y$gKz`z^v3q zjsTJrTEe(7Np47PjJC4e?l%ZO1G)8Ld(`pd@r)07CP$6|xP)O^V?vY?xjA0%ufy6bRa(}|vrNIvgUJ^)G zm-aA()Z$oS&HCzaB6Q>Q{uUM}_WF@6$h_s;+ys;bMXcLdlXIdI^xLEEbw}%?n`)&X z*U~`0u<7lSfw}|T9Cvz{taYbFqlPQybe*>C7ht$es!fO!+A6_AMiXk6lTE;4dM2|e zVaH(|&G?sV3;2T67Xh_B9x<@Hf1O-sXvX3(wjUB&d?Kwq?EvF~^#!y62a2Rni0984 zK#)ayyGWj%jQ6L7j{6Dg5!)&Qag4l^aYnnUqQocIO)TDh2zPIxn)6Q`IGUQGe*!3@ z{|Rs}(vIl~XvZM`df6fyyeE~HoN1H_sNnA12qiOkCPRC1r)A4iM4iUtymxDIR!A6npVZ(J-G|) zOrJesN_lgSa|Y~Qxo%CM=}=F0y@c-1O9LQh(ga{WuxS(&Ni4ozoD)}$hX~3dS{|4g z3_tx0Q?si`CE)J{me+ykL;d&R=Ist!*F6kI8?U(OxESH&rxn2He#{* z4&lVkMl>So1SeMgZvn#Y`+wQR(#(HZ_XAbk=vLdHu@9s{b*D>q`HQT}F;fUR$yy0Z z3KpB22h7`&4g$G$uz{heb;*eZN7m^=o1d+2JIhe_%R)laeU?7NzK4XLrVV;$8Yryj z9r~qYX!pL@aRnAS+$0A_Glgy`xZOKc{m6kGaqtQyiH(oct)s^qmC@5OP8z{h%&);P zG~_G=*J8?}pTHDrPfMw|@ZJs_j86>Ais8GWD(b2a>A>Dz!MKt5Z&cbzM(Mn#7nY9O z69ohf(yhx%P4r&tNfFf+pKLuS7P$KWOs%bpAT2 zq3bpGBi%gtmZ_3)j` zs?>k2l~3wQj)uF+rZ-L+2SgTOYm*4P=-l5!xch^f7Dj22;a$$RQTF(czL_Gf9j64O z%+Aq|TB6CFLdSub81bMc=_tZyg;#0g<9NHBtAAt{`iZ1zHu(r49L04gi+D!H{?;zh zaP!D;cs7c`D^c$}o8jq)zwBhS(PUV%qI5=iNU{lpAPzx4`xk*Da-`Eu(xg~{(@|=o zIO3@Rw#gYdsa-`hn?#g6Oizpf|IQ+;)Gk{rE&E$lRu2XjbsF71Bz{pMM?RW zwSN;e;k|3BF&ioZ^069EWXI4i$s0l+9a5rEZO&eUZLk#ks@C0CxXQ2p?n_sg;T*lo z6zhj-FGTH|P&-z--bxR;RPP)s0Gnh#eiisEMxO&exl)VqMwA->MN{9IGzYx00=g}J z8_ohbU<{o!q@5L<66eG&yPm0suR{#j`0pWKsj^T%Y=~@-8d&_v`D9B)Saos*_1ZLB za~k@5+AMv^g@&#mv+fZ#E0F>{Z#v}qeME}mu7{P6%bmzc=_7YhrSo{sb`c!4#uRI3 z3Nc9Zq^8G5rrTIPGK}2rSgV#Pu2R)`cqo#8bLO=o`@M3la1Mt<{R0LOLK1h17428| z2?|du(!Yd0t_-;<)5~J@)^|~^m-S$6bmfuqJS$NR*KKWe_M?{a7e@eeH?(GxLwUTn z9~Q{oK5tBvt~20DVwD_x^i$uD?)fpXNOS`<+Aaa_VDKdn@x=xTu3T;WC2b)dhQp)9 z@Y+jsfGs{yoKK`F4-*mP-RPW;%Kg4>FU5-^WlT8FqrVDwM_^*En~du8Oy2f$3j5vC zQ&J`n!Wlb#1{QKo+?+Wp!iaoD!cBUv?Y8dRIy1giQcSupw%FJP$Q? z1S;|AU$JFYU+ZdR+WSGNE&J$)$VqmGVrhnuf=h%<8&sJYB$6Z%Fvatm5Vf10KZyml zq*~=k@@RU}ijqC%{Fy-DK(aA z4I?j&MUxMWTu`IPit5=IPffW5CytM#q8i9%#{Tj#v+TiV0zBj}+z_H|np^@^)E91~ z54y6d{I(4!hSB%+J5I{83IjQ-;ME7c5Dm55m(I$ zNCF3$j1g=?Y9v2?`@pyQC?+|=X&#vbnP(|*s?_O1tEOh(()_#q(H(wsH7{{{Nr08J zh2`2vOv;gY@kqB^SZaZglt0cpPV$D%bDEx(E{Id7<_>5H5g`my-utek>;wK*Xqw6v zQ{lCgOt>C;-nMmFY&dlMfn%ht!g#{#L6e5;jcK^MIeRPAo9GZL~HuH3G?wQy+i0E5sv2U`mHKArPx00 z_^Xv598N(URJs2iX9jmMAAQ+6{aUMt2?nxGV9^$iX~OKQvcfBi z)YmCL4fze@hJZ}DeM#MX)>j3@ux!apgP2vsY_GAz{wTeAf>O=I+SntmBg7VNe9D{f z-k1Z{Tqi$F8ozNLaYr}|2Kx336BjNYslaQ6HWpZgjkAXMtxy$AyqhJOd|k$X9{7u8WVC@yjgc@;JhA`}GDjoS0#VB$dkN^o^H8njvt=F4W@jn=wozV4g)C zL{xQx-scy_WsoallTM;q+&sPmeCD7bfTH2lo=tVXuKUABrDi@2Hg{LEVOJhPKg3k6 z-XKL=fNu`YAzCug-n8#u^sGbo^t?c`Bi_Yyv;g*EEW_5pv|F;&kdZSI!etmK6{|pd zV$KdsxFD~coCAE2Ph1wWueeUf6O+tf849y}`bQ6=e&EHFn}Ab6HlFgM+TLr z@VRw|Y_J((c+(q6&(}gdH#fs+wUg~{q_Lw|ZX-FteLxlR)42fqJI>n?9btkpKJb7X zSSX39xnDP=MJp;f1F*2deeG}jS-WL^A9W{%*YRifyDP{JglQuxe|~d98+6zK1EVR# zv*T`}d0LLa#wdBi*Lj=!`LAE#-l)E4W$Pg98h-#Y!T4BXLqB=f`_pCt4|q_DiUn|| z=j}V%ir!^1V;rZ>s`G60<$!)UgzWGxrD{OPUjkuK)S4wkm|TFa;063sZx~rO2YShL zwbyWeEc|#X@xwL1@v(O5>MDb^B?!}E;RIG)#^?30JMx$RhCjt|{YIHIaOQGf1>dGL zC7)&;)31A&+<(sSXb!%WVaQMFVlBR1N5y6ad~Dd28Y+Kt?=gHy4$S)N13cSlN0+(L zfYF;Po8DFuCOWHk&r~5P1n?jBg6x*oWAoc=Z-o&x;)1n_7fkb zN9pQoDo}Tx4tQSrEY!*yD8xz+J9p@gO4qYFe1OheRS_=IJ)C?1W^QVU8AzW~253Kw zen5Cv3d014oU9pS5t$Ot0a$b8mT1%qUw3wwDsqG2Q_7|cm?%6x{o=50agdFSHZ_6V z#CBUYuZe;fILo1gV_pkJXvE^zO(cBjC(gV92D2ag?fvS5Xy1O@E3tK@39%b+g00({ zUB)80&Z5a=gImch{OweoX7-)6>%F}yB6+RmyFDncfarxTe)v1{inJfl2OfR-UCjvA6^Y}@XnUU(ztTZLsCsXc zCxZ9S_x^J}G|(;8dTc2mp6$RSZ|8E2i#^f0wI)XlkjDW3KLEhRzD0_peFZ|_9&1B= z0AIal8IrDyD-#?--S}8Q`c&eVd8yE%4OaQk@c2#n)p0d>03@q27921`1K`rfWT zv@RL*bUwGL(~#-2fWmqddQnYfY#womH_{`TshX*l(~$~m<&68U>?V(15m!xdVK9~P zCl$>7fXwTd&X;(a$oAlP+S3O@wYKVwI=PA}@aoU#I4c;h%s5cw-D0o!oMar`?nP|} z4_bI@D}8N@OgJ{sWs`>6BVO)gOgA`H@Z1Ew@4TDMFW09dykO5X!J-KMPlD1T9**n< ziR9B^&n~mSw$tR?t&pLXq6Def1HtA4S>!;4Rsw5w{264Gdl;3*aImvTUu%zP!4?I; zrK#po(;*sACdAhzPTMh}#fnYfQwgsogu&LV6apZH z?(66HQuEEZ(zvlSPxTSnOK`+C`tlCaMj(BdL-;vaV++iz(NYuKnDNo(_(b4S7uOT{ zy`YuCVxVTgd@2q2i7p0iBw9fcfsIeMC0feIYvqPsGhP2NAwW|$@!(;)!ky3FyV)E# z&Y9xmaZMjJLL&!~wXPB9a{xT3&8-7d7!tRaHmh3L2g9s%**E44jDtCY(vd4eM zc2jV>K@OHa;^H*JDUf_u1Sjgvy5xyur=8=?*PF@*G;epnEEI@f@YnBa#-jp|FYQ0d zEuYj3xXV>JcWgT#sjI|)`zH6?z!6^XPQuK7>$6MfybZqeQq5dWJ!aip$B})xz0z$? zyD0duK!`oFI&|y{v3!iooRv3cfsS9~knNW`o*j9(hXR~Z2f{gH7uA-j51Tz~T{rWn zn437%@7vDm6i;d~YwM!lbz8~T>-H`i$ZcBWNrX)ESqW{ksSaY3FfohG1Itc>N?d*` zVBI?U`u1)5sqnNQaeygMQdaWg@c8K+fG8&zwo%XDLMpl!LoqazVWr6JDMDlo?6aCW zAN)!?ILBY&grI!o@>7^_YGKJzIlDM#66QCo8pcQU$D?T=#`%!BQxhZq)uFk*g^Ry$ z0_lozit2mAFN@uU{oA8u$j9Y{$D;~aD&Yb&%4V|&uGn8yM5^vJ&*w&#p>Q1@XPPo$ z*9QPzlz?cGj9w+Qu5n^pp-G~q-x`v1ZMAfsi9wGWhU~Jl8dMPK`3u@%I<0U63JdYV zW@7|zPlQeISNAu@binHZgPZZeF$@u1&<1tbW3{aXOzc4sgiJSJ zH{HO@Hyt=q>9@IUnACLJU`nkXjZh&rqJu;**%!B&LIm~0BzV&QsXsC;HH6)o)2=L} zYDzj}^>ir)piol3R&+K}kq10!s#gSg~hanE@DYBbkh|{IdzcU`M0BDF+`l3(5cJz{Ggxac#oaG zHS%YwoG!tD7TOQ6yxPi4@*m=l9xvw;8m$wdP1C6BaxKe6Y&mB@XdMi{C^a^C=yUEr zG!mq?=cg0>T3E4q%*u;mP|Q~`g6RQTi=`LN4weRIdN~y>5~8yED^L?^8pM38)TLvP zm;h)MV=gT{>{Qv;BQ;f= zd;j01?>n-;nH3Fb`v%4aX&VrKYc*|K#3b{w%7Hzzh<~%}(^`IfzeM1u{BzivEzY&e zw9z!6U0(bHX^UsHNry= z+8PibDvD?Km)B?|pyZdWWGr9RJbOQGFeDhj!>Oh3(5YCbEo^iv57bN!-aX$le}3!}QOEPeRlFoa!wR1FQ;m=%I%&y- z+`d}WSKJ7q&>WkFK+_&8kAn9A*kU8Vv352J!JS_{D&C6k_|_~)9Qprlloh(*1U|0G zf!?%IrH8KuP;nthZeFMYya5QHr%UPxMJiNeo34UmhQe9jhfD~gHY~0wSYak`Pbi-D zI_g$V02(R^l5^WfUNTJB^Q^G1ybhN+9t&4SD8K3oWA*xD1W37nZ<;FOpF=AKtUo9TBL~$)d}28M^{mw;`%$Uo)mgvCuzliyw&!*8SI^n zl|bqj9(4>%Fb-G@b~#;0aiE8K2RtuG0-t5Sv9gqFy`U{2bW-0X1bn4nkiz&YBcnG; zU7Suri^Vz>=sYiDm@bAN(7kuCvC9=V&yq`SP7p89;!9?6TUYp5b~LaZ{OF|@h0X{} zSrO~Y531tedzmdMHzRXCR#NlI7Pm_=L4`8AmjS<)%3J7X8XTx+VskYF=G%z%xNLGH z)kr1=v7(hb8CYt3OBj(twC%as6<)ym>99IgQ?~&Ypu1a+g@MX|)YOt{p=*f;tPB$j zQ{J#885=2?wUT4`{XW(>22zGSAGv;x>c@Uf2AQs!VP8sFC9(L93U1K)&HEuJQOg;L zr97Ify<@yu1%ncY?lw2E$f-zr`NGdD#YL_>S+r8{4|IWmLPt-0qlx}Je-_{kQ{tI| zMo=S6D}))BT~gGZ{CT7;w$x&7#f31H*ngMBtnK|CP5F+cOr_oL@dNIhCGmHrR`Az8 zq`a-VVZ7KKh0{!ae2dqqeWb?=8q7Hl5|OrNSD-GwQM>?Euy3v* z(tsEts^fZRD&5)8mB9oyhdgVQ_LC|81;kkBawpHt7EfcH}jTL z9RsO1Kf1=HSetT#W~0QVi4;@u&U>ve9`J21&8jhHB^>hs6CKx7bS zcUQta)&mvfQ6_R|9I@IY^;>lSuU($KCm2KGWfJ)+3NNkh?R4-`D0*A7bU)<#T|eyN z(?~%_xS+SSXjTGCUMtCRZal z6)|7!d*fvAi*|@;Eb=gnIur*uzX2ZNODi!VYRfkOiZ!x=AK4!c;s?P5fu|85auL-% z0v;_r8IucI-0(#}$75wtD12w&PYhhTF_;?QceovuOIi7|G8ralf4h7r`cV--qkHKH zbR)7$EkvbDjDXWdhKH%5s{;^iQ(1_33ETyhK(QX5TFyG%A^FxSlmN@Xc2dFZUo6`E zS>jY>>`^Yz(LNEx{YNwbI{NY1C>KLyH3>Tj?lD@pK+usJ6nQ)U1-P*}eFt6KU1?HG zRPYR>#}Kz@3u}>nODL|*y1Y*%){rE-D8m~OTI$$Rnqz0~o+BsqvRC9|J6!KOQem-6 zoidkI8qC9tJrCh4`eEOFv;EIFP+g$@erOusWSLXi%u={mz?Ng%^3r#+inHm9JwJ(y zX3))75Ubz^?k_$>JFYRHN%($K=woa|M&Sw`tZ(YtkO|q`%;S~1c{&H*P+-A|CbGMq zO74p8_KE^_qxS-G=J)+q$>H5k)t(taMBlru4Bu!qf%|pZr=|xldZRtfZ#Q(XpNcio zz{Gp;tKoM+Djps4V`ZraVzjDbgk9h3Rf!UGgyX`WuK@#3A3y!24i&#p)b!p4Vj=i4S;;QTu;5`VdUTikB{$J)eRkr5# z>zj_tHA*7HxxC*KK1uQ7e1*w32^-W#sN!9bTJn`qG_Q!1SBmp5cllT+dUMetU`15C zpq&%Stwe3oC--Q7qe(!ZrH= zC&wP1w6FMd2GX`KNAF-tg{K((4-xg0TMlWwx*^sk*WPgi!i6RugtVpz|ClacV_Bar z=$-lhW>&v#<12-*d1r8p*$AbR@cWoW()S>SN2b=O-?lf9mBKR`E65Hg*fhT~sQTXR z&6fPX_@&yHA1zd>-DCcF;9;D>NZVVCGG1K{pvib(%l>JZGx~cRU zr0MpbIau7g&U$~wA^j_+g0wgv?KR0MLX=t>Uf!K0C^(nKk@Y>owzZHVyf@6P)lK9+ z0gbs&$H&NxOBjE>$M&vTMw-G80XU zGr={_B@ehxzbyk9=z)=atx-e*jQY5797ADBhL_d5->q{ppfrz1FN`xpu(s)^ytm*bR?sv=%Bbc6+Xz^&W}1Cqum_Fq(1d zEW|&_i*u7tY{2Q=U_Ze6sWg6qb*9(c0t0RuT-5D0T)bLoOJsTjCw8y!GeqT>ds=DY9e{7FBp&q&Wr#>dA8My1 zeD$bg3e^-%Ho0J!hLQwTo!~w_{DXV08x|IcdhzPrX-d~2jW~>9LDYE}7^tYvG_|wW zB)~|gE=o~Y!w(j0el1~pr$FHKb2Vbu4JgWlBK43Yu*?amp~2(F6&et9<~Y(1?V<64 z3mLrUry7{aPvv#Dhho)1xr+BF`GxdE2< zx6bQfGMi8TgYNssG%e(8rg7i>$a_&~U@GyOR8(O2(jDu=_a!N>CAjKj*HEa8QQBlD zx5<8<*T~km-$LAEL6U}Y#VwXIYyW{6;xj_=)#ssiYRUG24fY8(_rng8=0fI7V(ZRj zXQk%1%~n!U+~lMrsEP)Dc?|OEg*JsoxS@{5#ic+e0tZZpZ7@1v z05l`+7ZbezfvUJF1$M*GhOPp8Z$=*t9(o;l;?gNgE3xiTJbY+FY)8OUT{IMdF@JiW zv?0LcXIMgFuxKERv@bx61-{h@^b%tDk}!1ukc4OU)P69r3_1=af*s_w(!RFAH!MRs z#EJ!Ye`RgA0vyhP#!2KeEQ9nrw)BO{;E`LOcus56Lt zIgna1jZw5_L8d%x`+dRTNfCb?D)l}n8p@36Te*c@b%s0Jv+DZU)m5Y(Od7<~vLLoF zeO{&Ab|xBi9ndK%3$2AH;Z9Z{Jur1iNJ6m^T9ygc$#ypnE-F=$w?Wfh=K$)L!D>ej z-8>p<+Pc69mKOcRnO_0r`rjCkLn3|bVuE@rf*3S{i}Z2YphrXdeqtqK zz57k$O2@M>r(Aw)ik+Npap!=QbHs4`&_E=Zj`J4h7JTf31xq*y&j%b^2x}mZqdf7H z++V#g9!m|}5V5d5NFgRRmzhJGRRs+mzB!|60&GY~g|9GcMM#uH4Ua;V3*oH}CR3i7R2?>3s{47xHYRfdUMHSrq6X7rE zD7HCVStaL)Ts|O0Iu9nFPG(GX=k<05^G!yBi~e2y1 zS_1ekgEzhbM3q86pR{6+nidE68;skFw)rBVS?iyZxu3Og&9}BN%ivgsJGjNtxl zcKbR}d;79?L`9u~P3&nqLn`%8nuA=Z1hi(+lSk7iJF}K9D-*ta{LbunYFA^NhJkZ+ zdf_Gbjm%rR4IHJb5TogxZVS?Gb{HJQr5iI_dCKRZ+zOkjf@z~`wJyU8=KIoMHk=98 z9GoKJ*~EJwW~J0+OwaoX#Sl&zF|aW9HKcG%l^-vkyWh2fP0v;P1|^qktb6$L{|RuMKKUtook z@+*`-oC*8b-*MBwqH>%3=n;2Lx%Xb10qy<$Yr5|}+sFCVeynRwijIegyn`HXKb~7K zpfxa{EZ9DHE#cV=qezQevV$Supdw6kP|Ye}Ulr>;H|i}7tTjSiz0(m&^@>W-Gmd`N zYW}fgs`C+urSR*;HewDJ2(yGB-p; z?vA?bTZWzE|1<6=rG0h%YW{2>sgq`}Mk?)_EXjy0ht3uGWThNU(uH;Wm7=aCB%ZwI zwWT#0;_rH<0dG#B%27a0EEv2JNSSg@nPMqTH#^56zyfx6EaIgj*SU)+6&|%PoX|PJ zDO{I|00S7fy&yqVN+yQ#eND89mK-z$umMPXAe-9OngW15^@Vvm_YhYhaKbYeRhDJx zKXV=&Mq%}G@Ek^WJ`xI z-jnd4lYb}viuta)^x#1yTFpHVBV@E($LAf`;_cRNz0Dv-KY~xI!Jab*OkY7+!({L* zpvtXV!AyHwu#we3Ebj^;mDj1?b{+{VIeqh~3`dYSEh=6mc#~ z=J{yW7Q~{KB|O9=pKGI~dD6&SQB?Ki6#DcN9>(|oL_57w{|pyI z!WwqGqb{bxe!qvb^V8H35xxGEMvW49CGf=U;jPinhz5J+g1@~wq*0vOvFo_evou1vs z?-SKm9>JKJ*HLPtYQ~z{PnZ-}-y%0UrFHT+yQY7y`n3D#wt$4pJ>Q^t@ZgET zi7;EZ0?p>ae$!btV!VvV)Fnc&XAtyzr(rbB$5=fhoK?~%LDA5zZukfnsPbhC%pF^K z)NEa{qzdjh37MDV5E|aASO?B#9%dU%QB+mzxh6dVnTT?ZNjukzfJ5p>T$A zOaP-Og@`_EtPSonx{5UFi;MYAEQ<+Ltnz?tRO(r4SY*gR4ityYZ^u~QaKA@I)>lTX z^Ed}66*Ly()6f#qZUc(tzGpbGpx}V_E3egd9YfJHgx_0~K5gZv(7d5hCjz+zC$M7_ zQ`_Pr7^gXUt(PBO*Vt(X6?1(sRE!Z?-5cGBWG0Rx94@!5Z`NC#kMWrmmW3bCubt!n z$#|MP7WtLV3~{okI9=<&?yjIc0MzRkbrOe1(k(w8u{q}+K<;eBtn$-%lw8|$+;nkO z+Ay*PB%K%T))Pi+TboH(ywZ0|Fq)D&Gcr5*dPU*b17$k^EEh zifAR@wHtbvE=x^UWo>A}3C~)@6AwS)r0$#Nt@(C{643>z-;~pQ3bgZWh};w(od6fi zM>1yO#pkKQbn8?VqCbX%$~Q}&h>{`;^&YTaaiA0H@hEoHLQ7YYm z*U*c`^BEs^k?r7{6fN&0=cd%!8Df8bMJ8kSLXV9vlZ=|=q-TRdw(4ny4tXnMIxqF9 z0#4p+hqS@}jpbqp${UBmGu|FG@bG9=NZh}v@JVwL07LV%4IYB!Nd;c&Icilkey4C+ z82?vjAQLFdH90=_3N-~mee0#&jPHS~CX)OU^xZ#&+#eZ;uDA>A zLfqv^0joSa1FWNvc+VlYS;f<8wbNHVtv8=+4Wwg zcjW0Ls4&vj?!Ot3RU@$QfdL3F(TM#ToF!#?p|c z$f`6Qs}^)RKEArbKQO(D7N>!!8?|S49g<}^0xzqyo`yf*x`mv2YNOk4|IbWC-9(>a zx3bB^U2p2RTp=sQw)5gF%n{XKz1JWnH;8AGpAU}y5_|2N!>yt|T)ht_QGEFzfXxEN z%-f22O!NeHhU8k_96M4lu5Vg8>in!N{?QxMl?~tgMZLUl!9ST2eJUZoLY$)SrW)bH z>f!iG?R0xMUeCV(uyOK~Zrtnt`aiC`Coal2-1BwVG2&V;-6RhPuhX{7hSFj*($yQz zk5B;ftb;`Q#NSC=vc3kFOTocwH5f=V`?>2o#m={x9hf#DW28&$cg7fb4x*9Lyq}@8PQnD|!$4u=>2DG8bx}m@ z!-jz)bt!+(6QJ7AmGKHN*U5hFyG~V+_arayW88I^TV;;p7NpDRT<2!ya(P|Q=L68} z3N+Hs97*e=i*G;lol1xap$=*c^9R%UB-(Z;65J^gbF`CL|J_FgL(>4bVreV^04en6 z&pLYl#^kdSbr>?Ty=zyLUzb`K7)o}eUxch6bqz*6A)lovn#-9Ds2B@rcxNAJiC6Hi ztN?Qapc3603qt|D`bhvjsfgJ53?Q?k4L^Mjjpff=-@o0xR>MP%#CJgYd7A3mb@m6S z2Ahsuu~Q=Xm@l!C(i09xQPhUyyNKWMA0yDqIVdv$@*o{T#zIVF?_?V@`o+CRF6|r! zdlzntSg{k+Wp;eYBf6FsE;zi8PhakqP@U6tf15Wc5^xC6ogL!CNgWwtBasjdv(i$Fe+`08;0ktC%TK29F3ROl zcNg9sk#xtEroCBP)4i1Pzz8;{D^a4g8FW7AfmQXPjq)~3m+;}{-eCzrlZ~8}5EKmQ z{Y0wYq-*&S3dMR0Vf5HR5D!R6lM1;z^6uSIUOM&;z?NNBn*AQfLF9(uC7zLQ$X-r_Q$ekQsp@8lQ7Ci zKjuai9toPP;~qU0EhrXvNcL;e-Gxk=dv`l-vJTVF#tr7P4h!IL2#D9Qxzm~zz)edA zbh220V;9?m3A@ki{{MPT^tU|D&J^ES;tQHA|lC! ziiDkVn>HEvS3uNpm6548{)rT7*gsWzhlT<9kFrP#;~NTlA!zqx;{J{J@jS%1GvtdS zAZ5C;cC%<88<{p&4QZ`|Jsd5f`UeB}(jOaY%>X9;g1A$jJVUYgEXE;D%*qiT4kn(qZx8elu7a^!Kk}(QVdD^_8w(M<+Th)acDm=| zcho0Z%-YA<=(FCP0ICB370nJHK(Nguzi55dat*EIyhQhL8NX-Eh% zvps6n!hB3;U#))Z){Ql>DicG!1!00F_BTWZO`_UXvMz73kV)L`tONx+BTpsx{l6rg zrv}BL)Zg4ACgX2q4wOtRMGJ)VuQzBGMfY1Qq@uy)Dxsff9Sa(Gc*9$8nZ}FHTi%5+ zLXb>5f@daM;VoPDlz#@|nD*A(tyLy2BAtrJWHFDF?`xgiZAt9EXP*cvX$HX0QjR-$9=)Iz6NOwkaEpARC!MkCYZ8b|VVKslcPv-dy$&Q^JMs^Ob`LT@Am z`jqs=*KuN3k-x0J0EnC2Bcv|Rd>BaD*8p^?5ns>g`FCeUL|-iZz+HH4fQCkO$p+Q=!w4({+Q6j z9H$4DS^ppjky%c$@-nQyGV!}0Mh%;h7sGSlbSHmsQng>a7{eFJe8k>b@Qf`y&}m5_}dq4c^a$Awt|yU_I6^ zvXUnlgipY}oiwPuJ82VL5-r_U3;2>bBI=fcAb3J{-s!MY328Vc5u3#R0=bStmPetQ zX4eX<4q~vro0e1ikzIa5Yp{bXrXLL}`8RFFql-eg&Xe$hB+3Pn9Ig_L^`Wv2CDTX8 zrZr7QvrmdMGc}duRb(=U|2N_clv(3mzrb+*Sk+AKl%ym?9U` z#@ex~G&WRVQPi$(+}@Eb8XFgESgz+wt#?0QNZnFr6ej4P`W{a5K;=T#_^>RZo;1If zlIu=rgpH!3XwDKDc2#|~Kx0fUL6T=h{K1|VMIUf{Qbs22tEyPo^> zeLPB-sRfZpg(@RZ{yVl#IxwVjveFT%y{B5?uEQAm8y;d*cld;ZyO@VgfL&9;POmgg zob{MC8DI>ev)hyT99snAAKONG!x-zpG;g2OOV8?lvyOD+gN8E^2}zYe6VZH9;-vZ$ z4xqN-TK(ox0Rf(@D#;w(FV6OR6}dQn584K`lq1PNJRCn)%wQY;U$+MLm&2%5U;bl>UFkbKO!iTq5y zvgD9NPa}XIIe2+_J?R8D^a%}Yrf*kPvfMyq6G*)>K*@(<8!M_`8PB@HhNp(hw* zN7Ka1i^xVYusCPjk!6WGQM0Z>y(t$9Z66&*wyWi@hqj)ntT>GAPzgOE`XIlphI(0X zxZtygq0|u|K%H8H2+H!yl8x3S>T=-P`V;?&5G%yBOS5mepKrPngO+9Xp?rliz2kEu znsmgmrp{y5YhxMx92Ga)`Vb#3{=4y}fxHp=JW^>g?0kE#?fxPxMm;D5@7{_BE$C@k z%mU-Ed-&|_0?RkmoV)%C)2A()hb3jXQniu%8rQE;ugL#B>jrKIsV7!)>5O}B!>T714Z2<4@DygB(bV9LOjMD6VedI;(#X?rK7R65#W5lhLA zB+6Oaej^9M*kmPfb#(=;95++JTV^BQu`KJK^?iK2(`Z;VXWjqE*~a@j?B=1i*8l&+ zwoR`Et|QOpsDZ_HZh(O;b2t-)Gxxs80P)5uvdSv^*G0q;!z6c>xM3q_G1yhQQAk9q z3d*x1a5B#itD!>2C^lQozM`cwAsSMQ05~$+Z|Y@EYEuvHwHtO|5d2=}@l2st!`8`| zSa!sA-s6yb-JLa18e=13#WBACb`T{@RxBo#pyJMl!|FIE%n;8J9zUN)%vUVS4@X7u zTkum#NsPoZfdb}(Jf~2@SDWNmVjl5xyVIHQZ`hGPMQmF;P6rlGzqrkCViWWdS9A?G zYSseG?LS-g)m(=~MLY)QhqD+6~7kw~$L)F-Adrr^s`=n)DbxRr8$XFP>p8CXbj$^XOPO-24f41y8CbQz?PB zN#7BUA!ck>Lr9%*ay*)HX4ib+R(H@uJv7SW!#W+wqlNLGdJf?gotE=mW}y3C8eAkk zCLdT(TtGz%p*~VN+r~jPlrMzE5WykTj<#4Wh#21WiWQrE_km$Mme%-U=rx&k_y?Wn>HmY_vWk*8$^*!o zzH7uwXkCpcQ@Uqm;==de)i&UJn(fK9aI?O<88}op{${tU76#O>ynU%+mNaRe(EcrR zpGaB|o1Tp1LB~*s0*#EcC^M?ooBps_jkw)1ABW+YzM(?M;4C@SVlmE^QJi3$OK0GR+@o&K*XkSAvaQ`k7ehS$C0qD6Az|- z1(H^z9GKT(6dq7})Dn&r1P;65Vup#*$tX`)(mwjDNd2^0ZtM~BRKUQgpP+_x04f}e zQDbn<>Dt5y*?`B|VtxYF^W!+gkqoL@rPl1pE5URxke%eVX%A{e&t%){>(PjiCKZXO zE%NbnJxg2t;)7bGA-jwqaiRB(!`>X~D0-tPP1tS z!k=qvtD4q=`ctq-rsmfo<|Ua1dL9jZEjFpI3Gp?C^Ln7fjQPt^-d-C+lohm$z+UT_ zEMq{X?Sdy5!4os=YO;^5+I`huAkN+V)Ij!#l(@U;@wy9H zT(S#SG0V=pUi{Q+KTKoCKk+eE!~d?Ur7#KmG|1FaAD|FkcZ1;S-+y3bDRr~5+cU9f!}QODbwp&1FiZT6Z;idZUMBeIao?38@>b7>kH0P!{dM z875vjC#uF4*zPO8b7?Edk}}G#x_}}=6RD~%Hx8gJn4#flfYeLl1FMk}G^wMAaKG-F zB-4&TMel!=*o#kwPLdE#4bVLUHHA!p75TF6qPkpSb=YvX+MpB(?bp1)5?nQd?eJw) z9j*^ZX47~$!7g0tslIVe&~q8~ga%rU;XNnQlj?xXX4Wtq3jsRX|7h-#p=@u}xme`v zPaP*|37f&N=OwHftQ{MRW;a|*%{>Y`e9(M|1}<|wpFdrGKX%`N{i+=*GsUWSSUPm# zUrhioLt@)|;bM6UIa@5(L6?4YEP!^~_oLnTWS<&3J_t+eBf3Cgt%lt>a^}tRq3!4*R%|*MuG;pv$E!8%1-EF1Mn1b1 zH^0~2ZXM;#i0{=WX~=$H%>|#0bU>9jwzq_;fk=^`uyfYddh09?h1?w>0cMIfF;&~o zS%7TcaDDxS3QZ|H!yq%}m#3uj<)Pi2e2yhktIYJJ*azbJ{1s@_(>=K1fDG16KD4}uKkigKe z&bDlDzj${NlBe!zLiCi{>Q9iUjEmR0j{|Gqk0r`Y8xMF5Z?R539X)h^6=vaHEvb(O zxg63!m%J=Mlc)<>^~{4Jjj~Xc8}M7I_&^!mdbsUHTsvyFZIsdo_sYs;ryci_twb+b zd=X-Q05vVHJty{e=Jv98P$)ygKL0JRC1ft#f-KA33Z2FvA-EXk-9jVzR#DqTFGHK7 zD{J|9^C$|jxcQ(Nar+OLoGgcyQ#-wP(-bL9LX)d$8A;&`(v{!Qx6kao@3?rnGk5o? zTLOeX#Kq^+HTul!Ar$8r*vKctj46ZXomLt3HbRWjd$V<{1OgnPD^_tzl_g+RGz_+! zG})c1pHz;$#Zg&EKrrb*lS~r`co2(5y+;>5d}iA^s86kXD_uIiLL}Nl)BYci@-weY zMl?{*0H0%%BtAU3D3=)zIAA?Tm*pDG^5T%U18c_fBu9;JY5U3Gi=0P0Z=024+G7?( z*n{L$!%6~zOOYtN{WH@>&(&$(xh%Z?LZW^&*@@hf!Vt;sjqFJQ9 z;G?QL=-0~v`azapFb1y{)Nc`I1%M$iz1sJ%S{8o}h^vDGCX*&wtj@>oM2(g|Y`Eu~ zGKD5Uc{#{4*Z9@;{IMXX_9?pd;Efdd^{V zeL1#z>kD>?&@Bfn46Qp!QfK+|Ie}`e@=ZzDLV4!N31N+hjZfF^oE_ec!(o$5eW+VL zJ1nMb0LC5&7AFoWsmbO7q`6Z=-^i*|@nT}v7+aM5J(JDbe*gHH(s$Lv+T)0~;w-K*=Cdi}Cn4=8aCUSqxIqNfp` z7=zEBboa7D`ApIGA5TNl&A$+?evR|)DQkd!KPIzQ==X0u>F1K(5}HWa7k+_=r3j&^ zrWB5Axd`b4EA=+Q6Poo$I6W|5>$Vd?$!MbN6*)uDJ!la8VP*;LHiJ$mWRT07Y4Zkm z+7oL%drZQB_M{%pr=5nh9a=uR4M`yx%vXBNc~dyaPJ){g9x6EVUUfr!1W0ibBZTKL zXzFA*Q$*3t?~rLs0#K8v-M?8HOx%u`w?zpvEw7`}Iq;B%LLKNk8M}#rZ06U*K}xr$c%RV)F8QdBfoF zA*z=14_C+(upVO(4u}_zj}UaSO4!=A=cNNnndnXf?X6iIOZJZmk#YRtElM?ar2sUk zQYYys%eI?;B{gWZ`H`3$EPji{_*4yKM?Xrhyy8(1zl>qMF!fvv@(5HgPHeb}@g^GA z8ALi`LWM4_kZ}GQHJy1u5OgUS zFN;+Q6v6c|MYa9@n1-dT+Y3FCSBKIVQwyr3pyDzY%B0BNK!BI#63mxi`uF;TQYx1V zz9=mUOs742lT&-;6(tU^9d%RNoItwzH$bi5^e!w_L(*38<2xCqib9v=pZ?}hpNOjp zVDr~9UgJZl1NsHqPS`HuD1_nB0K!FaDZV==`u$n2McpT@B7;2#>8x+AKrmJO?|`PY z;7`=x5OUsvF@INnfise+tc25Z=c3{80Npwf#i32Z?KAU-w})ktmpx(*ZX0;y`> ze(Emn&OoftaT7xjbu)hEo4iA!ppe z(+=k$2n0#b$Cxi3np_z~kwD&Z?o8zg$?9VuM4YQxjhibQ`y-gu-^)P=Xqgz{=q~XO z-KnD&>xKMg$k-5E`>YKsah0^_hd4RC-4o`Yly&TYpNM`G3o4-w&esw_y60WHki*|p>N9}Ax4M2I zzvsn*7~toIF@awH-&jwvwdVM@sge7GeWh4`{CQhDg)$~+DB5i}UttW)$O~ zNSVmHDkW~j%l6{=9Mj1+3a%gg3WZy>de2lgxBeh~ti#x66UAJzb-?MI* zxzehv!me2JY$Svc*bAb^COjpWI2_xx__jN0V2)4_b{GZ7lYsNC&Pz7@NqR|7Nmc;k z9lk4PH?hSFwy4HLBA-gQ$b85?hn9off_64JzK0ksS>Gk~TcXHy#4U?TiGhl&}$Hc;qq>@?zx%*Y?1`kNbE7pGLs7CDBlBB{4 zX^i8PoS<5HYVwIED%2RPhvMx|f{_Zg1HO)qkIaynsA$6ql;fqH_asxRTjyMg{WnnH z7M9N&?Yuy*K#?TbzDrj5@8LKjDqLeCCbIsfZ_av|*v((6dbj(f70OYYYF|j%9~ttd zFDE0k>y=PHCc-o9LP5(b3~0aV=4Gn2Cno_?)Khj=VuOeQCQ3(bVrjy;&j9L*c3P_* zm`D1d*yKm`^t;~5@m_K{fn3uP6sK_G@l5xJk_0X8^{Jt-+h0u1QStfE02XPrfNV(7 zcAZVV3$d#Ja~n4I{2oT)%s)aQ>`VXc{;NIO=d!7U(%tSXs9QVQ{=b>{_oC!G_6(B} z3D6M9h)(SG>pQE1K5?x()G8)A03Z=kuT~0=iGHiiBb;FvAZmcKf=}LW&Nx7pobh7@ z?cqQ)FlaH15`eOb?Z9|4nMu5(Kkv*UhH&z!q8tZ`^Fj3OH=kztd03CZbLn1k8H=ZQu*j&s|f zxch+FzPMc3EqdwW)u%0rzFOUeK8^$`}cDa_IQqza=^2ko#~6lxS`g(%3xH9qkL zZ{Tx^mo-d%QWfngZi;L*gBrNb*Pvl9JPB}`E zJyrt<CoIUM)QISBdjt;Y^(!JAdyo(aOKRjf;!E_P9xI697F;jJ@%Gv>q|jlU*}FT1wk85-q;Lom#+DocpbdlC3phYqISE z7MWdy{8z3HUi7eK7R9U2v$;1(i6E!U0HkaHK~j&G}FRckd}K?2^nv^QGKnQ$9tzHI-$^{cP`o= zk1RmFTA%sJQ%sMgj5GYM(EWp^7tDu8OVw*GS#Sfw(&HcUmU41EBKCe8Qfn+HxIFxq z0G`J`VJ3Wz^4!1yjGg5v(RhPjCp5GJvxtU$FrdqR;s|BL{}8o`@uX@HCToc$?S~8y z+qiK`?1-&Ily)XmkD>aE53!5RSnKLEfVLFau? zCISQOK&2O`>LjAhssNjafmmv`BSVOU@-`X=b|>7rKL$q`gch<#-aJLRq$!`8z()dH zpUQ1%$2Pm$=+zc$|8G0pw`RH1iNOnhwM|~DAM=fj)~#rg5qZrBN=Uz z!W&M{jj_OD{lTboIe$&cj+cAEa!NwAx3-ZP8sWwt)9xBv=K!{DPA@Pai2v+1MTlDW zKLTYb#~1lTK<0uq$<6;z8)nZHxHg*GSMxLWz{qpgqvQc6+zI>@!)HXs=)1iQ44sJo zJEzTBhSSO}itBskeVVVg-afA6mD|h-KaVJ8nVMV;muM4wsUU# z*r4a6&O&t}6J+FF_b3(a+*l&mKL~RKDWB&R;$0lUorn6VNilj}{#8QB)VJtI?Vp3o z*f<3NWxBTBHNBMtc&a7JwE!KEq99D7e3xeit-o8DUo+qE1sVzJpf znE9l%Y)n`h3vR(DX0YHra>5`#e|VAhK1%h}pnq|t*= z5Ax;5y3QDyr(y}_v5Qf-OXpyRB4#y_|JeZ_NQ*kID^={?xpwN^O8CMFOvrUx%y0Gv z&1tIneaX3-ZzF>;bsV5PmbQlsDLiBV+G5%vIF&aoYzO0=`kYRFd#JbdLn^AjjUd~r zLYndr3yQf*OKJlLh`uWoF0GCvcCCi)czohi*@6PsY5om5!H)oqhj#!Drp2^V4H~)? z;szg5Xy{okygaySoXrSiq^Jf0DH^8>#vpU#%)|8jue)tYYRs!6>U5p>l6y|iN}D!t zN@AF&t{HNQWMs!cyV6z+4ed9XKJ|3%^EpS|jh32Zfv9L{cAB0wY~ia&U&|vQ?J!~? zdbURGWIrne5>1#uo!8oUkAw8Sgiz3*vC-k$QbYaZ75RCys0{0qSH!{}G5X7w^AtwB zbka;E-wc=Fx^fdpkZNiFSeE7c%zBhTHaBM^O{H~hlpa+sjSt!}!2QNb92*vCmB`8h zHd+3-W|^%NmToK~Ic9L&yibTiPbRjp zHs0M(1;i_+WBxJUS^%aqi*9@aL02{k+dfse~bv>%7hwq!KHh8tFXHhOA}1cdUFcifE9l>v(kNDD1&MtBwuhk?!MVWVR(PQ zdc3$m*TZs08-D9fYGAVK-@L(10Bi>07Lk6t{>n<(5k%Q2u`MLvT&i$h+lB!%tZs6? zmU1aNQV3MLbKc|!bQ=@i^hO9?{1d^qwGxTyPEPLlfL@oUy40Ati3H&+Hb5ACuXJCV zGF#LUBVe?M&Ns!PF$u%eHExA)UZ$AYFD7z4#-cEQd8B%DBDCmf*dx0ce=(<_L$vK; zCo+-x$iadVZZg!SLEPX*+>8NxPx@x00IoQRJ9PN)8E+ZF{Y?-A)V&=EDn+ejhRNd} z6CNywpAv@UgXt?q{K9p^{@%67o~{MTG9dsr8<3~}zmg^Mq5su%p}yQPdfk8Yg;yYz~0#|Azf9$R{xMNRtv0uu&J}oypX}B)39)RIPX7q4be!217~h#uElA z^<8(!dmN-sF9*(B%zDD7>E%r}{~0KAIA79h;=7`%)Nwe$jpubjyDv2+jqu@{D0lZB zw(b?+@S}gzSA^SSCqqiagCHLQ9fV8NAB#`@9y|+cvFkp}GW(xOLe_*6X-u#+ip`ZT_EAmEa{VXyt z#VxW%R#R|}5*;t1^9`UDV=&&LeVY_tQ@|3-(zIrdKx>dJnDW*<B|kSIO-)9ja9L^?*4LJYR%k(d@J=S#WtDJFxkEJF)uiw$4j)6L1*QJ&1SW* zWpu$Yh=?PHARuRqOd+ZN5C0vn^pgMnudH74lw`rR*ie4mf~O|SI3 zg{F>kf40uJ_2IBE^4uup04uBhOpKZh;H09u^Nlb=636RqBXVbmJ z57(nvu7rx;Sk_d%!(pG8ePrZHAV8&*UgZQSSPx`kZ(*(Pmxeb${bsmeJ`es_y#`2I zYd9HsQ z>pqIh#V!)YX19ezo&KhuO5VDkv$1|0vR8av*-0-D6@Ty#DvbP_hUKI43Y0}G9PPP* z$T$$wV^9nAZJ4o!)Usa35){>1wT1Z(zi6V`xDaVr&c-K?4LS_Pg~S#Vgq<3iWz}4K zm9Wy}11yU+o3&I`8XZ1lb!IYyKqT&%EtynOV#pD#(bv}!)%7TlheRNIVU z9Io#?XLvs(bU1Z78JIrXE35$ro|{L zGEnX1AeW8B_ttwA$W~+qt(1e|L(qLgxA}rFJXlK29!MGu+srYKJWk;hzeEgi1F& zaJJ>$vvjK!_LnB?pOaQE6JF6H`DXgaQfAd;*#+j+A37kzx9S1CsDndNSy z$)UmHzhYqWDw1Ro6wb_9)f;{A?1yU8PF|}eoL2}~_hI+s4|GJN@!LW9K{2f+5pmVZ zxoY%w4(y?7T^KU}9H5NKB|G7SJpak#zxmm4S&!78qS5fD=rx-Z>pZWT5zzWRSM!Fd zRH&n+_K=Ehh|(`7*T+G-ucyBt#V)||LbsWD9RW4SDDU9qJ}$pHq&-~<8A0|b+zhyP znW9@SW8;tmA$_a>W9G$^rf8T{LnTXzYYJtM@Y$rL;iCnVeIsc?A@C_$QNvfa1+J(n zNrX~g0wXOxA+!92)<+j53?0V7$_=|cRtlQ||*RD_L z@NlzgS3+Ix80*btL3qK}fUCL$(weelMCqq4vGM%eY<4hhb}?V5dUEFSs7-qycJW zhf|!2qUxW4ZD1c-9A6tvQ=rGEAfcMT*Dr5`W_C?g-4zGYOE};qwXq%n$W$+KA8(8; zO*D7TpI>M>Lec6vl6SbU0XyGwk}Dvqj(*rHbu~f}=pR(ZnKyp%AGyr_?vgoO=~AC* zEOHQ!c?|~;zKf>uu9?5=m|YeZZ&?PVcc%iL$n8O0stDzwif?6cKd*;IdxNWWG84CdN&QNesH!r(ad}0# z=h*UNk?KP??||~vA>tx79Gh5kD%Ag21{XU@MqVf1m+dS?cg9NEoe5muv|LH2F{kw~ z;uDAk?n8BF+Ex9qh4HsdE_Y=YW}Jng_;=Vm(#Pk<^ihdOfQ)skp!)G9`K_rr zx1-pG!MBmat3rA(QkM=O%~o=}%pe3tM>AN_kzS*MlXyhlnbkyiad2_kLlYmoesim( z>pAvf@~IW^#;n67>xkCQh~kDW3DuD8LCqkBPoYk5v@6OKK6$wr`NISI!7S%$LuqaW0Pn@$3niU7XplLXxdK=Z=&wL1OcRKWtpzKvyV?$9b-k!^D8^j z{eypn9oniUYNOoAOADL{_43ENTHMk&KkA)VC0uO}soQ;nq!APS1#n*>#~l`5P;^S7 zE>WJgGvDRQTuS5$fq|o_N;c#6=Sq@}0{DJ(W6IRU6xDKw*j8~M9Pn)M;=#JE{Oae* zylreNj#Mb&mZm4rPH$P-it7GiHVGI!g~x-%N4mRjYLs*NK5$&N{|cg+GWgD`s05q5 zAa%AAY()lcO>Q`p6PFKv*@DBK#*(>opn_6u4om#I3IAryNZb0F6QR`zL72M|DFJ&) z0?Zo-bGEm)rn|xIAHPX1r}RK>e(L(K`Axj#ka{9g!#LTl<_`C9wmjANWyoV=#6AIW z*fEM-w24!^8txX|Q;qCL6>v7xtrXx$CI8C_{6dso3X2X5Zzy`pgj(yjwi zLQA!Aob`TDRs3N1In)`rlS#~$6NpxGr9&_}>o#*EpWMj+s$)CZpMF767VnBqY|cJjF2wq@C*b<@Jt!f$XR*v{c8>VWxmk> zc*>Er%aP~x`&xaI{XXfHy4Ozp&LG(mYfEa|hdN_Ge`J}XDto5Nx4?ciuTNR!viSZ} zV9RfOK`#XkYFy)PIDEzRNWiXMgZBwcu2Zj^H}FZyf^#|MK6oA;GtVDQ?N zzo9xN(3IyM*dBEF5nLopdh{DEJNwBx8=wu|h0CBSLjFxu@1yO1qRf&ruF;ZUSgmj2 zKlPKkE?N8QMGd*zR%=PcvB}zTt1o#o5ZV)sEjas3X_Tnh^jR6gyxWwk;f1Rb?}=mD zS5hK|#GEl5ORAEn1I6}4{77%|B}yeB9DHLY^8-Sij~Q=}U>Wq=OpL5XO&p&6_Lp zTu%q9GF0k1k5P{hl)@NbhGIj0$;maw$Hjti`9z?T7n9vQ2*_P{fnikH;oT7_x?*~b zqhcZeTC4f4K(Phl?Pr&yh}c3v9QMylypDyUZ~OAW??wVg)+Bj;u=MjkqCq!}BuR|j z7aPs%b4W*T({%B{9VlKw#i3J-kzG71iUarWm8kxgw12_)mDoX3=j{-2V)LpE1hA3U2_{~oNj$nvdHH$h`*d5=OHEH`n!Tla43gd zcRV-cNP}JZXypqs<@y7D0mCGjJgd4z5iBUv!H3-?V*f2P4m=hHN@9&>CF$m>h8o62 z!nT@2&J6$$=m{3E@ZQ+vXrX*IhyVx)A`&zD%&SmNH$D= z5Pdi)ZbR@j*R1;d4n=L)5}Y8T9!QUw)3-<-z0Rt7fI_~B>>Y)xWJDZ4=a*iesLcezen+FJM12adw%|iJW`E+nqj)$an87Gi;7X>d2@dZ14Jdg8&#=@|m*q+I}d$yCgq5m1wULbWIM4D)^ z036i22D%kA%*NCa*<$Bd@)O@$SKZ{JoMmr`xCBu&6o z9kaz^E`{3)#bWA78xVC25k*hehO@LR>^y|ngD}azrsP-2RI9XHXZcAc(57?}a5rAd z>>5vo{9EGSA^T2*6-q_7%})3;_A}3m8mSni;|P8rK{{|qmOQ=u!2A`8-_#)Y0I|ML z_y=1zZjC~@y891by`XLiadK)B?jpK9m}Mhfm=^|dha^ebtcH(VRy?MG9|1fAv@6qV z5Q5EZWydv#neay7*ry7!D<9S;eP;kz)DheP6W#LdEE~TLiAQDk7sqJ+iv?O1 ztiyO-hdUnxYHk#Q3qFX+RW&yKg?pm`mUsJi-A2rb5xoQ|-q zG#xcC@9PbT0B#3EfUNh(ekpTeqoqpTb`!C{3O~jV5rg(__ooD@E&V_6Vl=|aRonN; zYsT3?2mR^~h2mQ>Mkc~MU-c|MlGxP9(%Z$xHVF}1VA!ui$G8Y+^;`VETEq#;_+7Z+ zru8kq@TL`92>=E}n;X$uJV*ZWo`y6Ik%NFYr;3t?Yk+9slIxu~km~tdi|?N4`GF^My%T^CC09^?)+-A%?i2W^t@UCit$y6 zGY50FHhoUL9wBwhKq(Ky<$^E}dat0k^B;PSIZC(BTtWnBg>9NkpNf$xwh||G66vB5 zz9kqW6>KGHNvvSz^8TsfR$X|um_s1!C)FYML17rZ{_#QaG-8mOF)OI1$pCaoe$-Z- z-QbChbCTuT@#sCS)mFhi{C2%Qa2BZGLe0>5c#sln-kh$i*Y7_+*jxz9L5V7pN?p0 zSrs}c$>I*R+9uC^PEm~q)b`-@1GbZ<`4}q+rM7UU>xGEP@{YEyQEdd@K`nSJKV>kI znwh~-xQ37_0zHP@0+cC%Bc5Q=pxe$T&ZMlw9%`QHWp2X`kk~=Z9lvDSKslPwHWG5e zC*2rqOf`A{4WnJo@hV>On9cObhO~ffacOFS1ZDpAd$+V7hykZW#r89CTSU=iN9v(N zkMvkouo413BlcAO8>hdBSkZJH0(73I^*zVEzF9Ulg5 zjcx!}OAoO?ksxa#NZ3jLXp0#6R5+g-$3`9*XB{trRXn^en|6RMvYu$Qm6d^T1PhGU z6A6j6(wMh(>zV%LhC1NF@_Nz-_tW$mklS0ZCOOZ@!*onk?HA%UX+~ky>ag4$#Ut=l zH?`or_{vIPO5|1w-nCJN_-z}Q1N_`qyb%(Sivx~cnvsY9H9NPtt|9g3yZ>I<9&@6^Ml*9kwiaD$bpIzgnk^7VST}a zdcoU)L0RU;h<$H}oJNQuCxXIYvxcp`v;6)jteCWC$FMcdMSuND{ZqABFq3V^^g~)_ z<;MB2Y&cF#A`01wSgYl4ec90taw@EZ7*H5Ne*|+# zZKK{RLv~ml$gtPXkV~>gr|6hSPW8)eRc%Kal|9z5zaZ!W1x4OFe@KR)C8QekRsb9+Wbmma^YoCDo0rj8(q(YnxAooZnHg5-JLP)HDkh(EYB zgwtQCGVsHTaQehj&vFy1>gM;>N33h70ID(HHQU;&Lzu?6kaGla=#(($8D61gyNmc@ zIMZ4>jpKlpu^9Q`B}QgL-G*#BQ_tQCYpQJC6kDdB~-@KBWgy6u58#8zr7CM@Hu}PI$b8V_4#`lwRbcb zk)J;1gD0ev1~7MAKXf{PKz4O-J&C% zcgVrD=iHqY;8_RjH~q&Cs6Tn0lqN0%RV6vQmz#>O+ACex9kaTAFP+x=glNF1@L*>k z4GAxSLqVJg&{}vCGvH!WFOPdn z7zTw>8q95vWvUcO85y2=JX?EQLk=G)DcQVc(-is%9KvPNS!6z-DumOzkr}5)=88|;kDfi08^(_;Gfz}srTT0CE`pqKb3eP=e!6t71F;;-V$t5oOr{FP?Z z?m^Vb4|?vS0$_#?`=c}nw}LV^bq+`ZtSk>_!Q|wJY^IAIpoyMD%l?YOzr+&eH=a@> z)RcfuQ)59>jPB^W71-B;M0HZZ*X4{`b?$I8Tjg}If6^jXfEzO^D&#dUKi89~deI>9 zDJlrWoO0 zWt2)F^SHTVUTx+DSgL}JzHwPV(sl&wz@~i#fc4d{EfRG7CFJ6R`>ECNzN~ot|DCM( zm7RNCV#u$`Pr?-s<(rdHOpgq3QAT~45zBt|-a4afK_s!r8r&sa37f=&WM9cZmt%1U zK`#@G??IIoDc2V}^yph&Y1WcdM+ow(ZtyVqRe_O%&#)v2;z5jRU<1Pc3*blKYGVss zof;XUnX7^A1304Sbi(5U@)fY)(ujk2?xs5*)0n`1$(sz#)w2~~?q7lVC20B8Ys=4N8#ZJ=@ z1K)?qs+0V7Qxkn;mXj$`D&>;S1!_@LUdDmh$^7ZhpR#Ny09BIj0|u`t)`{uM(R>^G zS!)oMr`Ath@-XhDhMTE&Gu)fet!hNX;ccA4RMmbN(W@2czi6zP5|snSag4lYQ9`P2 z(lEQsoN4v!G~iHa+wIeAEnsC|>b)tLO%!aBE?*??({ocTgGQyip5mg!O4*&cd=5Q- z4u4Tx&%^K=teZ@wRVz^tdHJHIg3=gYR=ac?tIX#D#W>)a0Q&+@0QfkN*D_VTn8QJ+ zEvX<8CwsZtECW5yo)!~=y`ED&BDD)s4)I(c6Zn|Q|K)N6^oC}72929DQX|esF+Dgdff0l&4cr@% z&Ag7#PGR)?DrVd*6w!W0Op>9IE__6jh8dBYIquMoG1DYa$<%>YBuH-yDZMJwV8_9u zqd^~Bs5?^hP^#f+PC?4>mE&=bBwEOTLte6YmV|KD_=_a{c>%L_U zU08JQigx`>mW5e?Yw|~JCVQ(r_al*v7@dwhc7)IzTLtno7pdgcmWE z@In5BJtk5yur_~7WN2spo2zFyX}aOW z5W0cIYz)U*KWsDYyIB`%99W9rT(;iFSqu0e5boO%2mk|goeV=y=p~EEmoa4lZCts; zCcwhhoexJ1XyGj73x#2#XM>z@G8`q#*xMByZ>%M6a^qG8d#?`oV^P#2q7(dxUIT>} za}R#zu|r>HDQ%!ZOo;$@&M>fWy>DiZl10TD+hoozXf5<0(E1XjOUQtXb(=i%Tqc#= zu?%Eq6n__kVOK0Dr0$_s1-kA)pv4bE%@Iy!qw1sZ?aP1#Uv?B zPs%umc`8wM80s82GW);f)L!eo@+}MYSJx2RmzH~m*{8`FgKsRZ>S-?nV=_tUoPYf7 zaqQoTcX3fuQc?^fltFdwJ1}d0TN!ZFpRnPZdV61Z7t)^%sYMB=OVjB-~!$R?NhKTeLh-gNfaq1zWL_;_pl9WL4y5*j_K zIjn6b+7{U;Q$7m_$|pCf{O#@R+OAfX(Iid`+p9JOFdMx2ky3BZIT^y6%&sz7gV@*K z7PRf?Ft3D21H05nFbH!ZSCIan9m(!;JGqsH=o=;fM~4--wa|$oejv2~MIMYpVe5h~ z8PBxZML@<(pv3o*Q70rFw*_2Avwq;5rbgS_$(g^@l}L6|3%9-(cUaRO{B_9 zC5Uy!oKdU2r+$%=0iRo}r%0~>EBV%TnIT4&eVE8k_dn$nlfjdFhFxGe6XeK$N`wyS zq$Yzv)t$?+g`CzPv=yjb55XZf6U>^Z{IhsFnfQ71?{F3lg^~GtNm|y|F_sJgT z*kv9&S~1hi5|3$$B#tLDEQ~STx&!TB2nSZRsvY!N{p-uL$UGXds|I-j5AI40dssbZ z750+0JkY_=7+^Zsx81(~KSn@ueggDGl0qMfZ4psZIEvvaCu$gcM6T4Jr?|kMBo?Ye zda+@88lM=E%$;gLf*=b;x-{S+5)zm6#c&&tn=ROt3_K*C89s3DbPO3?otF6+-MsZI zu&g1}<3sMhd3PnjLozI<)=WfHB#3SKxUAOv-fHbrfbEr7Z3>pRcL&S)S1KNBU8UX!8I&g6!1sl0?>9DA7W)LYPkra3+FMz;fP&FbVO3xE2zvSo6iTE zqwPrnt_6l`Otj%-ZP>6q`}WiXIbGl-9L}T^816VY7RKaaVIlO%0n)L62Kh$*NO{av zNK^#~il)O2=9~&EBVgB8)vj_~Qek{Q6psc5WL@g5hiw4jS`)9!VBs=U^$#%i_2Za9 zBYu;|6+Zb1#*Vb!!HB>-&-{W+98jB5nD4N}j7ctjG&!B8K9#rmq!m6$10bPLKto}} z6UEl^8f2j}Wy_ZS5-z@p5ZqSlC=hK6+eu>``rSA%A_h`dWmy!}or2ekX1E>^OzogV zHG$yxp~-6RU=f;kdJ2d{)vq1_^VpEQWe7$A`qIZ3J0>!umYWwSDY{_5Z-P86QctDm z3`VfHc$9K_(w;f*874^_fOfg= zjy@x7eZB0B#e8G_kGaDi+x0j!0AC-X2}c6K!kQWLZWmxk?(EdzF=!=zWTzD@4>Z8b zv!&ZBc8@0{M)@)JWMDG{y_bD<>{j|e``)j+%5`LZ3~3fAfG+ys|M}FU4pC1Zxbj#g)U0RnOrbfFAF+< zTNUdyS`?q6b!hep&eZ2g;F`!DyHnE4z~eE_(7+y61@!gJ9r%IF-I47y8@VWX5!FB> zFKrk4+_0%l2U&E4mSMqG>0G_vMHyuG(iu@Dl!gT#qWQPfw!A!DHE-F5gBQ_gbNIG$vrr3mdoi(C|Cz?v0d zsirQ1uuVai(d@$0f{-rC482;`_pIk^Z0v-kOa6rYd}qReY9`agSde%4*$+|Z%jF9w zVVm_hpUIMM!@qRF0tlP!$BzT{36omshmc4b)yUQ%Bb{9pj-Y+tj+P122U;9zXs1f! zUdZd1rrc@=)^GuB{;(FLwCK7pLNx}dXnzR-f~tykl^cE3ht z{|`$5v&bJu-GZ_PjhC3N8>!SErGfY6+ldCCv7}IUSA{FDBz9q&Mmp}%o@`;rQ7xL6 zCk>sXz<3Drk~J7OnV?C%8?3F+{>bM8#Oo1fu==#)Vx5brq)kml5%;*a&t8yg&MiHz zhu|-j!@@DJy00=AkDygQ{{e$C999XWjqgH=*vP~fOmf7L?%x^)yXi)BjXU6rV;Ohv z($#$Eg52}&Kf!OPLk)9{>4X+M6d6r#<3@C+tlZ{j+&x1^?oZDTS;>+YZsZ@2@YYmW z>y9=5sc-GDj@OiY7c#M5S&g0Gm1BxcGhZ!hA5*v^5Uy#80ZO)cga%p5e)@EwWZD&@ zUjaLU!apq^ zcSz~*a^nul#c;bxP^PfUabuF*%jUG(g{TXpgjBU9Wb z<+}9Rl%o@EpiO7X-&)CUs3K7EC@}mhse{GLW>UM<@E|8CFyojla+t90^eXOOms(wqW1uO z%MD;L0ky!HuA4cuN`79TIj~ZNGiI{@+K>ycW%uw)u zEdu`!dx{WX;|?I8#oSmMdHsrFWgB*t z%HK}TFY0(Xe_|q+@|4qGSV_*6s8Mwa-e-(IN>9fm<$ajoaxWspcMHPs!%A%PTp6{TaDg{K-B+H?xXJDNF6H9WztK4;rK+i$_xo z87AfEZVL#I04iQFWjo}HnSIASGVLrjg2n}urUj0<#mdd^`y)#{rDX=&5$RmT;y<&7 znrZ{at-srt6G_mKs?d-E}`#h0ZtFP(G`E2L&0FB zh|TvO;U>*Y{PXuf375yucv%AcyXJ21_})#fW1>&&FZyjWBpk`-A@7zzZc*vY(58Z% zUeBIu-44hM=&e_p>^ty&F)(+<`kc2%Ik2x~VDz=fApv~FO60TK+pe+(M}DFBf4k<_ zUe5?`&A`tP0O@c~)N4tLsTEH@PQ%+1+5_~eIp$-`Njm-yTF?I3#AM_;hhkoow}LO} z(^t!`86)1{XG$AOPA^T$i;m#ZG03~eVd=(1Ve0d<4IqoXhT|Sb{F}nlD0o25L8%wL zvB6b3FLD$cu!lX=txrxC4h;_6=%Yn^K)6KIAc?7!WY|0)5$+~=;B*ucQ9(X|DPAHV zQ>CAjNBZarXA8hc6GNsZ$7Sb3&ObIrJPSM|9o{lQWojrdiBUBLk~m%ci9d~vp;}`A zqrrvz@N;)LHcBpRm96LIP1#+>V{EGq+05DZ-Q(&6T`6p{ID0!2A1n=E+AtwXZF$)a zVrlOx8|(J}PbTkQKZyQ88!$-!dJj4{6uhUGZTYk<((+<1U>Mcn5E8CfE?4C*_J&P8 zC4Np~MG#`$2l+_9UMfjcAu?l<`Z*&?7ANPLpQvBkbs?P z2CFn?#rYdg$q}0DF?`VqLJK|fXpp1x`6J|!E9?sQ!zY_{HjTlmvYbhq?6uA-XCtFz z{HPgK53LANu&FybyN5M4R+pOjI4TohT!aU;bw8`D|AtV*uG!#M%>L4V@!df+qs@!N zp2rBt$n`ivdxwNb4r(aMWLr2vfF9k83|{{&tnAsVcQoz+{PA-rbgizAFwbwF&_$@Z zjF@3XAr3}Di{KZ}4#or4GZI)nmqVi?%6QWszN+YMD*=`=X`-Wv^Pt3TCLQAMb5B8u=El@k5ndr6TZ|P$c-)Fpr`h}T+?ee7xM7WGax(zLM{nBDmj|-S zOPvN(@DX-PW+DCOR=NTMB?*2ZB3A1_Sgix;JE6jGWL*pTXhrQ+BwV_k%2Dp8FtOIVI9Ip_hida(4BWWcf6dii@0D`@ILl!{TA>3>a)Ck znZZPGQEZb6T3}M~3LzhDU=*#;KNHjf2}2*yb;#ndOdn|;E%tyJ4!^A#%=f`LC9_OA z{B93p>#X-&_?SD4!qd#j$Vr};o9O-Cw}vYBz1IP2!cLD=w3#k;9(}?{HByrB7k;0~ z>KEZG(&#}~NpVSXcy|aYyC#4xpMH$F$~s)6KNEbM&N&O{29{l@E7urA-}@2JSAH5E zQ6)!uU5~3z(GSKjS*%Ce$S|tsbr=eAB9PmHOH=&K^nY5!RdfZ&mQe>=b4|#L(JO0=vXR@S*mFCPcULI4ULi4A%-GQ*+zB8!X@yOG7&A7|W${r#rw8 z1`G8&W>%2Dt<=YPaO~5L>r6I-A#NEQNM*C|$Z`M~nt^L=6#$_0zNF;4l>swD;E#QH z3}Il`c=A}_KoF;Ka`|+1b6%|bt%`Qj8*Ek`9IZ(JR+7?ClskOQe;T%nQP$0-%fpm% zyP`2t)j;8!lMc51|E|{^$LL9rwYe=Hz?8Q^%2xeaKitEY%}nL3;0BlOb;N1cMpkcBJ{11}C1a zIQ*$-?u|bm+C2O4#9^s;u5KlLqWWq2vPBt9Z`%i+?_`O-y--;jmK~fzkp!S~9fj0H;$KuBSJ&Zo_jy!E=RVGaqyJaRsmnT$n z?ANvL!Cgp6gQ0_Q;95bnoBG-aD9$0Ukmfb>4+1}qERd+vV& zpLsXqbHL7G$#V9<_@d7s1;a= zT$I3?r0>YjnkCGuC^7-Z#@+(-Z9S>3G1{`Y&qy&&0pY$;M;hq~VOp(;g&y_#S}edJ zEi>2E;ooN{JpG^IbooWqPS)T0m}6d5Yp_3Bn*x`L9H7PlQx&K-RY{c@Gum>4xjbhM zyp6UfbgS87o(Y)1`Zr(KVGzC5ybw=KJUCc*VzyW?9b|)S>A6`U=DC@^a1E^R=9qnzI-S+%3e3I+f3BoyBvr z;$N1C8uLw4r<*`yIY-&?(x}th@K|2Wo8t1b|3F4sQArP_3!3Mi63cB_m#Jt$$w>1P zZtMRTqZ<&jIq*gaLRj~ktabr{ci%(`kohaB=Z(oPeFLiO7iV8+%-70OxAl%Vj$R0^ z_%sju+{1jUUjD?xP=Bd^|*joOiNp1-+_t_ox(Md|W!YBB2VGLKG_nnLyH7(R8gUYpQXUE zrHf95`rK@;qWSs*+5 z0TJEx(`8ZtKO7CCLaI?$(6~6#o&80q|H+OUoQ3|J_+1E&=|91n%EBkJ34}5dL{?T( zS5i@NG`LRy9<3FQcRN<*%m1NS%BZQqTGK^Ggh==!LR)YzsOEj#ar(L;@l-cLmEQUD zG!rT^mOrf2aNP{M99NO;le5UK^oG7vCbPuKX-erA9{{|{qp&{7-@S|-bd_nIg%29? zor`-Cdyej+JIlx2gk7HUCA4^c+4KC7Ga5Mi+cevVG9%~f+RHtH@i4`1dUO|RnIQR{ z+Z+Q*=4LivkVjVjPY3DU(D6aBFw_^_R1?*(TiP=Y(RX`LH3912m;(oR2@Px5#dS>0 zo>_&7q}v@J7oW&k;4AnbJ2a6giTk-fzvqV=Xl8{8k7Y97=%%-wxCAj2ajGq;ii+)@ zy>*%))Kh5;{I7tmSD88V;Br47u%Jc2^e=Z&cm)!a^t-xMN_JWs3wtk8Ctlv=%}I(0 zc4mlqTbeDw7z1`*Ig2}efz_iVF8tVjBl)!%LGj=1l)qb3zFlH6jEevE-@b_3O%{V0 z%Bk&we7*lBavjyt_MbBJxt8lmRqv)+yhwvVP-Lkx9g}Hb9++2g>ZTRU4o7goQSaL5 zqxP#fT2-*2k9n#VU)F#sKK!t=@>;S@kouft8Na~tKDImf)YFjde^3%z>Y|?CxU@V1 zA~_V#7M2AO;t{;_bz#lNfq&_f#PF#JQopx{yvH1GiNrwZJ4A3Y_={=@k1mA@pD-q# z!I$Ud3r&0>nGGutvN)7zs`TTf%>XJKPA{ZI7wR3`{*uXvK?< zZwAH%{*APJ9y?5g_MLtuROAv>l>~n~*Y^beVpF8hjNz5|{a5X&R$u5g-ZB2`^peRi zr{s#b-fY`icP^;wfK5_X_rLUhWK(ia8Un&=JHfrqAwCXiKUnl+ z8)FI*nmLfrV~oe1v2*sfBq(}_S4FfsQ%yER>6-f_^=|U#`C6lnF`=#qaJz>*uuCd= zM-NeDh`}AQFAU-=0=%Gu&%10?GB(*jgq=8PP~ELJcv{X3de91A0e-^i%o%Y*p#t4s zrwG@ZkRc@3X19K3vw<^%1^=+BFbSqcXGM&Lpc`Hz{85$AAQoqrxIy@V|2iKHLh6eh zJHF^f8LaWs$a$~sg}^sd8y;}d ztRaZVKiFI+H?ioZzU9xRdIc|o-7Q}?M~jA8U`;r2#C)KudARSduEyB)w6DKt@Ju~5 z`(Szk%OxxxXDk}K0Pst(xB^T^o&5HJ`q9G~Q=jysSrQhhPkp_Q#saGj`78;-WZJ_Z zC^5$LvhK=iky}4wNqklHgHzjJMwq7#WQ5IoBK<1VJab>8M&~ z>{pE8gFxRej1(?^1%rd0K}@CUO60Oy(?vUrk2JwM3RjjQkpZYs{D>7TW9U4fNhQ@? zbK#3LkK??QDb93(+?&YEY^L&yC`7i{8Rs*B=5J|$7w)a)_Qn%?k9VDK$jD#k*t!Z5 zYy9MkCTWz;RNh#No z=V)Q|R@=A|yndzTT9Avz_K#19|1*UBHYCK4YQlKI&Af1ds#itM7j^{B83MZL_h3$4XhetYrpK*wM z*>KpbJW#&TCSGFYvN=%T-HNzyY}8wAjKO5MCwvl(W91LF2|c|p#YPe&y~-e6Q(y0Y z*mWTGg0!MUno|p6dHr8pmllx6>L>LiX2*JrcoW+;XVXR(ix=DgDD~kb@rM}&mb04z z+r@+Hjd#phQ?I7ZDO3-jjjnr3{AToE$8~9~uCqjS6SZg=WYyX?1l16v8WU1AJoV9a z7yWnS#$*|l(xkfdB(I7Y_L3mD%N}bO!!7^*fY|hWuMlHYeRPfssc73tKbWIt122b5 zT=;yY(jZK(y_D|1vE?8a6gdkOya4R<6K;rXOY!`yaVs$+>cydoq@>u=kLxm+Md13nN zE6!-r9fT6#;e$FWiO#3nFDRKc$sy+DY#zMiwI^%oe*~H0bb@RDY@JrCzokImYJHCF zu6`kbi+PiZnWuqv=6o`JR5z*br1Cq!NBx>^X;g`gt{@A;?Ao#kH=zhSXIQV?mO^qJ z9q2#~3Qp=3+Nf8R>?d=4Jw@oyPI-c{ZPx!U*aK#6w?h9g zP!vz!TO&Ixyp;>ATkPV>-XjUIrJ)4TGtJOA`T>fhq;op8<^ytC7`L2;_*h{D>ua?z zZ@jQPIo{Oy*=o^aNIyWNA!Ce&+CrigYD{l)47&#K&EMjif0*k1?qEJrftya=(pe&S zdrYnbgO4`S?57|qXsvWb9h#QpZchST}D~B!K1Y1JH-89^^zkw@hb`7irLm&&Wm)Wuf(L z4oza1z~Q+}Z!R(PpwPe(g0L1Q36gFvCm)E=p18j9;;svId_ z=OT%Fz^~NB!3%J*!BC0zUXGhuG9d3ck$2qi-3|1rZ*W{!R-G4$4_9ebRuPl=7_kUe zKR_oEY;Jh}<76mU>VQ&W4vCA=p?bmyTmj`>658sMtAMbP%CR{EL?(?IsqL49y1!dW zzQZBr(}OFS`Gp5q1Q&s1d@+lNF23L%E?LfNjFC~GO-_X11H_7qge=hcklt(Pjr%z{ zLZO&t$26EOJF;SlXnx}G+*I9GZ<-Tt-KPE9ONiBDW%_2-J z&|$maS7rC2m22)D2d}2c)L#&WG5H1#G8<<8v=w(IOVpv(A4d`i@L zkR~##aKr^gPj84JCk*->ckZES;#I@%Gvx4`p;!rfYG8i!)$HQPt_LZ+@y(Y=EOQ;b zPlF#B_l@Ebak$oFNM6X2AJ1JwqApN9$i1pqF(5ekeW*5apOBASKt_L%NegB3yq~gd zFI_%0eq2IpSR^QXf}Of%{pd?{0)Qq*CFI@==Zso_=YztyN-OQD31^aM0hNOwnNLUM z#yT-3;t%grVV~1Vw9Zh#X*{NOnnAGbX!_2CHR6Smg&CyEmfj}8`7KdG9o4f_nUtyT zxE2LgRD(n*Cz8&#BPii32)9D<4?1|}?FWU)pqWgSZ^T=J%T`7MPb#PalwNRLQTB=O zv4$OS5F6XstkX@HnT53SpmH?Us_WL$+!~umwLD+-TQjTln5u)VX?(r2%I4VIem`-d z{UEf&O|K{R)qeP0C&G3H(JgcDPNAv1h{$JT@V`b+$v8`4bf=gS;>MYYDF76Dcga1TI8Ru)Zj}YXh7i=usCeUn; z<9`^8e%)Vrj4SB@+TJ^kH43d|WzBOUn1NMuq-#%ehN#F#&uicRNy;BjWoK4)6_{OO z_nWMOlsZ7Vis@wXR_->9D8o10a_BZQ5O5|=MuYs#XgdjGjKFI-4xpaz;cjEv0REX^VWx^7PyY-^}W?P>V(Xq#SCe;bqSP2cSmy zke6-lI&shTv^dj+-);jPE#WQnHBI**y*6;Pa4lY$dqAvlCWkB$vE;8r;!JQ@)9=qy zAGp`rXF%YBrI;f{^mCRi87C$)H4ZyE1hhej$Tkd>c`<$iS9OMOV-P(;u6vA-=xEP) z%nU>1(;8B_x;56mI-NN8(h=x%DpAs2{&5Y2pjsm@mkpb7DbJUP#8r-IT5a?bYzSNs z9u%PocvxNE6Q@x1A2vbD_PPVme01?Ogq|NXc+BZ)Bj-SL*_-g&T|BJ~NAEX2$;PqG zQDmDps1@(G8yte3pqSoShZ;hr3FLP&U|5E{BEaqhx_ej}h?(Nno$?(o1_vL>ynbD6 za|G&=XItd4_kxrGfJ;jZO=e@AS2ebdkFB@auDKLZU6pgoEC@LyrU` zCn9BqtVi1pbb8^}j}^c0dG-SbmezyW&jlpdbMv``r4|bKq~TDx%o#=IIE59T#a z#ZcR3onWtA{{N2B5*~d;3z4>*BD}yd%y{O$v)?td5CbTd1Hn;s;8RFMCXIoKU7&>T z!b+jDAq8x>QdPObnX6PjZ%Ns)e70!Cl)9A+HC9KTGOdWqa1aMXta!&CPZi`W$UBI< z6~7Ds>-%4?+mXT?d0$!Mf1_*SGI=d>8L=0ueRJD_*h%!*(kuR+&(=5!^vjtLJ2%yd z8nhSf>n*Bt^HaQa!y`BM0?~A@@j5EN?=)@d>S-&-jj<7l5}#Bwdy0fL~cL}$}eTMC_}9P%l957ta8>o+jC?uf{b@rq`>~lFImb;$R>`1g;(8`Dz;PD z0pG9U(t>Pdz#fWu-YEWh%j+wjouveb>ntKII-Ek8p0M?UHxcV02G`&pE=e zb^i=X8b?YC#tx`+E_97<1BUMiV|6t#dP7t#CstT5wyFEA#PqZK67$kfGA-3p>+B)n z)y|>-J95*2LP`nM3IrwNSb!a`^}-2%@!PWf_0&oagDKHvet=FDiH?!^Ao(h`s0C!O725*+#Ig+D z!UYmsNx6664{!#H);s>GyoS%nvl~;vdkVDGeA{4O`de|(?|6k4zPMDU zKXtv3^~d;N$)FI%bK`E&PJ2d2z_^aC>Z)kVW8x0WNihGrCSh_OwDD)jT!kp_xk-Qs zX9emNTQY4>Fr=-a>g*nW8*II8?j(+~NLU8RivO7ijqD{8koNX|W*#s<&s{Cz_PySE zu6GM*rau;7%2-FxgzuQcW;>N_i#!=gC$eZ?;8eO=CIi?UXWMGVhambw!mCoy^I})| zg$+Md`o2M^c~L~4X6^XgX5%wDL7r{a&3fK(@Rg&`Mjgu_qHrr8Uzep>v^`6Q&=>XQ z#S}qHy*#OL@>sfA6fe9#v`h0yLxK%p-m#D**^rA+*t&fE`?p1ceV(}sj0`SHqa146*eG3oO!={U;e|xdo1u%=y|}l&z{SbExrL z_`3Q2BGFUrLVJ18k;vPnMFx_gt@Tu7E0)|nT`u&rGlnn@KvAUYg0brESRt0h@r5QG zwHDMg;|Z=US-x;vNU9pZW>| zou-`X%Ler-1&7R+>S~_mg+IF;k}m(x>cM8ErkKFg6y=PD6hn)qaUvUu1 za|1=vJusbJ=w&{qiGpzG`L(S#MO{ZC2K)L9?y_U>BHz2&o zH>Wf1>}Ov|@4BleHr?Xf#!|BvAD1RMagP~`QbuBQPb4@9Bdk42zm>y+laFky&{r#- z(r_i0c-uaKN5?>V1{wXI6V2ibm#9L2kscx&O5Kfy6O2cMR`LEplSEzm+$Nw{He76; zfoakKQ)Fd^3f?1Vb&se!+I6V)EDdTf@Gel-EZI=2HjW5Wkkm%duj&2h*t~5drX4{k z>f>VTn8at6ajJk&AYQlOVmv~h?f6d&r5>T*fT^F-%Wu?w1-l22X&^v?#L~@OW4Pz^ z+&434uTvl~04Fg{GiwH=7-s#56_sH!h&OAWAWf{+*YS8TE`xlecUG;NZL=2kCw^9w z-h8|q+Bw(W=qk#J=tS)HD<>ozl0u<4?5+c3-Ybdl;#(5`H3YI|^yA+?*l5(svuYHJ zm!;7Ajinr&=qthQZ<;(#6myOaW9ce)&6pOLG~orhO5M8;c})T)3~Nf84{HcZV73A+tHvKI0^cV;t*my!Kv6b{FlBG!FD}^m}kg~Kj?vQ+#VLCUi&TNjIMSZ zjj)+|K8{YQAw|N+Ty*Ou8fu8w49Ra)YOi4tQuqZddpsnv`eb5}2D8AxvPOW)?mw$EbXA z7MrJ^wL0^gRD@U5U#IQ%mo81~^A|W+#uZvU-{ki?BUTx#=lV4@ziewrlsqa6yc0~^ zz#n3YY)t}TpfM%E&5A@YOL#BGEDik@b;d-r5e0w~&VjgGofzknK-n)?81*2am=gjd z^VKu1-q*|@_4x24+p4%0@QYt9UftEGPBam)sn zGxN0sX|e1U>Ui(MGg>PWn;}-dyfGbdCpxiXy2n+%8HuoHOM_373yXkWTWZ$Uf8F3V zyNUWv$P|pWVOATr0|Wp^HBPs0dYG26_DjEQ6{-MQ~9XP z+5FXcV^F(S`2m&LF#);PB@^zT$R6L=fEoPqs``}~s`l;Za;4kX8;{lD?A1vvrPQ1! zw8%S22uQ(8|hfE9x1KwgcN8x}w{F0+@FPT8XyOOL& zod2PMRTn@(&i1PNbq?4uFNyWC2>4wqv3YQjFm_dqefnFW^Cd&5EHVWo8__MF>JUKW zzjq&5u!IqH&jMkhV{n8-F#s@R`buqR89h}d_8dqh6nhh92OQCvi)XWXE9tG5GoqI6#q zo;y?Ls(<>T+!uG;6!uEy+bG%U&-Uj=a9J{K3cFoQw9(*}!~;w)0H$%nw|}v{`;P09v3g`>Qx4 zitaD27tO)}9L+&OJeolrsIh*pcC_fek%0_phOBV6M#O5Z9VJ40nqhJeh zb*2O%+LAU7l%QXL#Q5Joq-<(=7z;kx_g>?xCY5fl#->u17FC^_wWWpEP6y3mYw&%& zMDuFzd3{s!OS0gBdi=Tq&dm-cN*H>2qVR~rbzdy-Z(&?B&BcUFVa6h5nGG6Lfd}`2E2#IvCpxAm$&L(+}p< zx_TEeVjLM#rnHnk$B+VRd~6v zNJiWD=Dp+hAO*=~TN8NU3lV@X-oc<%6iJ>Or~??hHj_b`g*O&9$EfDpFCo%2=qOuh z&vI(v$f(zL-ig)ovL@6i^qBm`#B%1;i*Wp0t0i0r+JL(yed@UI%IJw~s4{3m#T(zW z8$U6ZI{=qLt;TGg8!Xv{kD(?A5&(_~*b5rN-~$d-pTo;K=Kf(~UU$0Oouj&54Fn=n zkehfq{u$&R`3LEp4F_}-OZ}lT*lF$sDSbl%htu#zoFPl64EJ}bkP50TS0b!x^BG9x!_=vJ$Fmy|acFtG8)-2xE5wCjub&v;pq2RvLUIBiXd(QUl_?@6&ir z%)n8?sNS;Y2uW-(06U$BH#2;N+uPRTe-8?ffo{>LIsB1LnsVmT=Nw?X4$rT|A*~vr zOPhL959(&&cFCUe6GlbCOPrsm;lcgyy2dFQLpa27m+tRxvl$-d8O+L*fwYF|8(nI4OpEf2h&Fazb2GEm9^CsqN&2#LkbLoBw_N57glY$ow7b4dBmNIdh~M#_ zd$1G(3H1Jt(eAx67@Op@#$DSR3Ve?3r+z`x%}vD~#^&E9Qc#B&PGxc~Sf?nzd7i3t_-m%I&$9k!B;4kURFBbXdZd-ry!McTMe03Cih9P4;n3q;Q2q z_ekh;4rdzV-)JWM@2DooZT!I6W{KYZQu8Z?^wFKd zz|V&ZnW0qc{{ST&Wz)cga5|4KW#v%vvtsXVxPKK4iVH7pp(<4rN`3hw0(7oix$dqi zFQD3@R&o7_n%Bj>dil{-SSuhRSt7d>kgBrA?8)=NMWP!Pixo==jiol}_bPL? zfU0gw`_N=*!|w}-sr3HP*qVS*rc5b#X=&di&~gqgUkDv~B}i8db%0Ybq=vHO;l9|* zf=MM|d+1G<90GmocSyx7PYi2w+{&YArdjw?Dz6&Ajk?x!6_<|yuCN*_B6Rdd(%ljy z`9!rekZh;p1D8PlD-~tA?FxCMLN#f+4t@%MUP*5Rq4){6IV!y1r{tq)GpdqJ^oVsq zKU0+YufQW~_OpG`lq@BoW1kltl32Y8SP~aK6DsG&p@)ETLUw2qccp?$%0cRMoJ+yO z$3dJJfY6Q-gIV@fw$KHKMl^26FxDF|BXZSnTpyV^q7xBR{EnZ85IGRskj5$*Pk=)q zqWxbK=hX9Xm-zepQcX@q0c{d5PB)xN{Ztf(>Br!#Of2h9A-9Yt$_PWj1%wD|vm1Os z%&!tSd3aHt9Wlmd;pDkn%B1Nn9xUH8Tn8%fzn%Qe>nc&te$q$ji=# z`K)pcvd%|xA?xeQvPc*Ry=KT#k*;3xt7ll^4%ohoGJuV&M|EgnLQ|-0AFbjAXcE@d zfzmGT7b2&zz1C1)$Rg-J{bqlL`2jgKs(Y9I=ks&j?_rqMNhMaD#KGcX#K?MfuW!2YwpI3uZ)>E z)lJ(RQJ3-PF;c>d%^m4RBL}f0gzzF`{N;L^BuW`I4}lv?4KrG3Ob#0y2P+f=?sZF^ z17a!aY3x{D=`)@<8B<*^HCr2%9Zk-|0ez#r(ms3IGC7zDn0d?TkDCI{)u_>8B}TJk zxdx%)!4GZ{m);*zmdb%Kn2I?WT;^HHjrIdLS|=|iF3M$@Sbhu#!PpgvESoASfZ4QogJd7iC zM??(L01;yV1_XDmuwgd0^v@mk=B9Pn$n@7PXzlX!KjDw84q9^gZBSca5L_0c0nN??-Q zb2$P??tcv>NF1hf43#KYkYv@niH3NM74-;TT?byV>~mgFilY4mZ1IVXOWoNf(FKm; z1RC|L1AUPyyflAK-sIZgISJkUz!x+&?ib{|- zQz!L8hxc89g+}ngHMPO}p*^{Q!KQllujpI}Q2p`M4&&h$iSVhB8C9$uG&v)xyN@j_ z2-2_y69QXibVbk7V@)QaO5yB})T#VPL}_u#VPuPwg^3Fgm)nFt1%SCX|enEhJl8h!HPw)eWd z+fNjmcGqOsYRFn>>?>W^wa1Vr7TC{qY*V8f*bzs^WCMdG&9HGv8191Cx3+a28~fyO zvCNoLji~7|hv+TiU@JWrJL1|4CU7sJY@D%u9>V*+Lpjk>f@CFKTw2m&pvTg_6gYk zkG?T<4d=9@DyI>O)7zmSWUS)g4`utvPy60-Mk~~rOt8$xop==?RYk&M+`E&Tj`iW; ztj0OG*k1R!{}HNP^;$nVHgzYu4-WJj88^^xzleU0oSob91y#g)d*tR8xQ_mz;+(E3awZ{{edgdxbm$^Fcc(0AhqVPWnh01n$XaU`a(&0QMy`gQL1x zcflNdLNwj}w`)FZcK1~LW>^(n&&~DpIYgHaHd(ghdCKmj@Bv89Z$HO+r%cxQ$>jbq z99x(ZXcCRLrAQMxn8*FyV11ZBFqMK7(wV@8viz5>jk|y`SrJwd()6uRLMH+8XoGUcO7U_bpIUr^h;uBndup4LSZP+>@V$@ z6oFO7Pgcwh4@?njuSWhjSHz3+7LocF#)EC%##}_(X@xtW0T^xE=&KSH_>0qlM2e?Q z!Lk*rP8jqS_==_89WSVo4B?!usG20_xZfOLu=(K518hh|Gy))U;hwzgY($zgi3WlCZB3qgu78ZX3fXx+m6<_i9wjt7R&mx>vN$C^1ndVh$ zq0aU3Psqm+A4-pPg2~Inerz700uqAg-UUb^vIa0>c;fEunebtL-)rY4aT1+({^Df~ zdpG`IKZ*<-#D+uw?j&J-Jx14~$> z9~hL^hp(fbrt8m}1fOt7b#v1iXqHbi4I17wFJVNiK*or9sc3el^z_sR1SX=FfsF6@ zrwkemUgUfmm(TgATlo$w1}4(+z%4s|iVmx~l?LGI4D8`EX#aDqY?8CREN5V9nJ9le zL4`N!*PmqJ2(HzPnHga1IcqGldgjAln~(kU(sxuq{h8NLlbuYHIT~pkAlN%(o*2k+ z*HZe&K4DOj9lQReAPx=3XKafkmC=)%AO&&?i@ODT`FdVF}J~Xg()`rF8YNUv%|BCUZ4VUXDN&Rbr_AvO4;aAg6pjw4x|?UEU%I z{pUtJW3&$S&8AG}5h@o}^ErV})F~F9SahUbAZvZNf}xo(mEIjbA$az)t&w3^;)I+}V)9{b%;;)D^1~Dm=obGpE zPe%C*l5k*#jTeeyA#lv%63=uie$AH{gMzERnlL2?1qvk(W`DL?l-J4<*S;pd=oW#a z$b#kd!UQ(U>>N=SS+aglM)FKPC{cQQP$UxXFKjt^{;l}xLVMfcrJ(g)-!+%`mnEAA z*eqKe^aawR)Geqi()YN2XZruJD%7*j=H5}V#mo}SjSUiiD&SS)RD{jht(iPPJNFxP z(b0|1z-~Ic^8Y?2PYhgdZsws$9sIr^&$wH`G#cU2+P&$_hB=7}PI*NPFV}73=!2R@ zQv|*3feQE2boH(@pI)*B*z=3H86?hmLI?Hs=KTtHA1;z+$37WBA6YG9xa4Xf^bHN2 zb(UoUCL9W#H|&aY*xvxW!!{{vG9a(+CZ1trs@Jth48a3b7req^;`0K)g7EqLWOoPy zp(4?^fXG@gxElqoo!=zWPf;`6{pFX0)puZ_v}rB^6fR=+t2TOZkmx4(v2I^$^|^EN z0Mc>(o74~~n)zm;5YoyL>08mjwb_*83kU>3gN_V&l|67FMTt%Qj_uJ8*($FIgN1Lz z=2!GJO2xzHQCmYHP}HYULaPvuM81S=;2hq|Be{TeAWjzE*rx^&5+$zsRL}O{Xw}zm zXGlLd=;&L3xHE>wT=jrt(|U{j_G(pk7>*>=QH>fLf;>1!JZJ?1dg4yvJb_8CnOgPy zz@O*>uzNb28Z=~HIFjiOBgF7drkqvOVNhV}{kexRyiwyNimXE`4u5hLlQ1&i_ug5O zR_iP`{V)_dH}40fUQYQf)>W9UkeAj>_FO(k+1dw~mMHi=44wkwR2z%l19paoKMR3+ zu{|az0X~MI9AuLAc;Svy?t}+GS72JV52k{gCh##e%kmu*(=3{LQvwUmR>_wWf}ENJ zR!=tnOCPnYUBHFg(k`q?ePtv5bP|{w2pAP7_Thp)gbZMRL=1D30A7V@tOE|4%$o`{od#u$ zWd9l=DpNZjzIW~nGP%g9*!Bm_DM(6UAkbWTf}0x?NgSXWeZt^bieX)wGv~|G~R1+>`!eL09XQIiN`e98Hy5Yo`4EO2^yNMs!gC3uAZPQFUB(#bBqia;)aoZDqFzP81L^U* z{(GOBKnF?WX-J&0JjZVcRZgzq?qWduQw97?v^uvK5m#2DmKB6lAMXe?l)#btNi;Z1 z8uQ-lDZzs8+=|Dpf7~X7IAdU2^0=>v+fgB(Cdv}oz3X^+Vk6T<<4fnLkvOEt3QZs9 zr?AFiK@5)_6=Q6vwucx~82s}|jI-pbHJcaz@w&C3rvvqve2`idR~gxNDJqV6mo&-u z+4`#uPQWzP-0a& zT^*;FsrwcD3y?-HMy{n<@@Bxi{J^&rHURD&IIP39hVaa1{Jey(SNM(A(; zvX$Co)f|u>D!y1^!FpqTP?vO=HG=u9j$%P8t)HmUeGZY)!nN%gvvmplXU!Q(UCJla z+`a=kf`L!8s1}m-*d$a9@=l@5<&@ghhY}~)$;2|O3IQymF+*V@5^hErs9We$>dAL! z>>uP9VJsc0McrFAkuXBpLJG+#hheV9eN-+J>W5KoY~Edl=YQKyOC*1bq0=}tZZrSQ zQkoX<@Z#zCUIPr&u!}qay*6p{NtiGe42Z*m=}j5-WM)41*HQk$w++-QeEWq5y(^-- zOLteb+&q|$Y)=!SZ58Ng0>HpN3{C(-->=DqwoL_%{HHfoo&|;aV+@WyXEpsIWDfmNv*rd-6SXi(TRupiSh#%Tg(a`) zy#)H{j7ln$ZyH|fAWfQw4cG_57&}-$zJ`d^hr}OGuAgN|kNoW5Rfk6}0KzW%!bWBh{VP6fe*S{bLPDm{aLiJJ5B0MGpr1DwC_;*F8i`qmlGpxwd`NZM8eOs-LsxAedWku3{wYy>t3xsZ zy`d3XtN7R7xIp@|Bgl@HiqWSBYcaED4mJLFI4Ed%AjcfSGDC>V#@(e9wZ#WJFup0W z36h`-e-WrJD*=C*<1?FJr$aL&t8gKhHP8LAV(nEYmM#G&a0#B77GA>xU7D_?zjf3e zaSPO)W)ve@r=>FJh|>2mz|rxan24EYMT#>vEoi$^63)Xc_**f*bxjjuF|wGYx~u^_ z1nutOxk0Z?0@O*97TZv9V%Sj?dc^``2neTBXIK|7Nld>epJvnj{Vs(CTNAE)&u!gr zlqku^5-PhmW2Am$^Z|17?{RtA!PQPrd0EbhL&SJ8W4YEW7P-t;d&nAku_}FDC8C-!mi$-8C*~l*iW#$yKXk*Nh2x|@;8QEWyvht;0bjjZ2LJqSk9Tm4VtS)gV zFQZX7xyS;TEQ->Yan_0$GXNrb|BkA8mlUi1#9lj%lgEx6eLonHadF&P+J`TZWolPr zrADNn1 zsF{8r5|*%SQmJy&y$XbUqW*=e;A$f*RxP^_6I*=%TAtSFOMDO21*=h9q+XLZN6=dU z9&XUfh$aX zQ?w2{bIUbrVS1mGB6$DO#{n`Q9S7gkVi1$x9Bd_nJOV=btKz&UqB}JXV)&1v=)dhn zh(5&l=Y}$^mbS>k!{%XeXq=v3fx`H9+e)^%yFoS`CYz)x{fR9FeyFTU3h%aYfkp>2 zu7Bd{m~bU?4^za9Tug%bpOcTZ9mg5!wW%s@_Aish=I5ictyEtGz%2}(LbMB(!k4{S zIVNHd)GbLkG6vR5)4_<~v$(JPsd@gUxDbzZ>)NVPldW3;uPyI%gc0c)U|&SCIK@m--#eaELQ*(iG}aHJF!Sy(}`-?9?gko|jDgnI_st{mdsPW9wtw%K#2c*2;(HAX zH5Bc0Y((m6&2mcnp>H=an++AJEr!^eB={Im(pTYi^%X0O9h}pKjj&(hrn@Ie*_k&J z%#%^0O0+tdLj=o1$wc`2t2PxWD7$)~&X?I))mmE6noztO zJ?7!@V@NIhYSVQXyD@FcOmm{ZFl;;G53hlV8S=t%o#3&Y@1C>xK!ZuB{WxT3l=78g z1Ir1WQT;~1uOo>a#ASZnJITG#<2*KPobk0{wI*uC-gzzH^hvKz8mb;+Yy729%cfx@ zmE6yrgZwU0=-IFco~qlOSIuLv4Hbv~u-uqPb6X@TOTuC0Slo?K8ZKLynY>>y-|SWg~e;mafX5%;a{xi<0N%w1rd{88zGFW}{HTE$i!BP=#sqf`tuW42sn zrkp;IXhJ_>+L4BNw`^HGd46$_qdXU(%r~RpK@={RQ~qAZUR+sL64l*Q zKTlgK!`sQ%P1bu8@)^E2mteHeI?-2G9)tD`nbql?zwvZ>u{2PV?>D@+QJ=Z+3lWA} zRFxwPu+oF(MM2w)S8uytscd94Yh#i}(}A_Ia5nABVW>#bp?l3oTW>aIj@90&k~4Y{ z&*JDnNJOR1rY^gQ=9vM_qBNNUFw!Zu^<-`r`LD{Nc2{z{*kdM}K)Oo%0bCFUTpXff9NfC{pX2spRZXo0T$I|*X*nc>79v4RqRU<zqd==wZ#YpJfoKW@b`s%JwHnkvkzoTRX5$f7 z#9Sp(KuzCGZ5CtmfW!fTaNAxt@3gm<6dT96Q!b0S#8?1Xk^*gdt!<^N>cJWspBO<@ z!QEdAU;$fYswst(n|i$N+j=Sj)g@^xA!oDYj2?*GwG>NfMNOX~Z++R`9&d`0kek&vFTyWLhan|@~F!Xm8er-@S zyJH#Q^AU0D8U9wZpMctV?N`hhFu)|?D_PV&GCL{{dykN6_=S_znzp$SCxP{-ew9jB zIV>ZSa+Z%=3-+cN0H>sWqwK+X!2}~Y!Ph1D;Ye#3VfIo|^eqQ_^TDq^#D?OAZKKYE zC^J+c#$B*H>!&vldz4HumM?DB;FR(xe9c`+d!B2(=@riV+Ki>l;e9XsA7^B$vio*j zCo^6xS?wy>2juH%-FnUCTQ)_tW)W%QJH>Hrt3QgXcBEsghR>gAN`YR2LHE!c=fYU5 zz}f|EsNGW-U$9?Hm`5{G)p_DTN~JQ70P~4lHIg?48ayA?fTGT{ZaJ<@BYlT_L{(%C zK5&S0Js$s$+)caN6Xi2OGrEg5xcnG`LpGr9_^rTnn58JSE#`Pb=r3}xTbVyO*aSE- zd?`IU-1|gW1tSZ_7bhUx8*qdrY~?GL!~75+qZwsoI-u2?h~ubxVxD8nbAw}f>tS-L zt5304H6EoJ{GM*L=?du*rm6M8WU&1I4@t^+^L$Vr`MBMDPHY@++tD13h~DQxG)2-!-K&aC}e2bv*D<&by!o?5tp zHPL@{I@C!7RFc4?oUg)+07HJ>jxpS?6TB{H_4p!)@u-KKL>@sVAF}QYwXPi@w4KcfYM~;nP2x@<-*pOd@v$&UM#;3}~`CtsDbV51TFNkZ{LaMCAB;FViJsw=0QtdskI#LDsi)EGz zM8?oubTKP8gMqz9S%RDG&dU#CnQwZK6rjlL1H;e*GUBVdR8g1DuyoE&Qt`+h3o==< z?j`YvHuze&Yj>tB|65gvC@!Uo311EUwTtc5MvO3i}I?oTTCk^Gs zH4N-jjssXHY6lc368NV5!sR=xMOM%A7(WjBxD_$G7atR-`EzKn$8@%B-aI+*f5EoP z1+CqkhZ8;wl$A!7FZ<3eH@=#>G%qoVV|{mk0ix)DT2of9HTHI*6m%<&*BbjFcdnh6 z>pUjlVy7-hdPC#n9)unD=kgLa7A+f++jNgB#`Qeo)DQIq(DWao{LYM|k)35v&Bu0Z zce8(|*%6#FDHHu%$T0|pq;OG{mTC_@O~SNGUCEo$R8;EyFXh-^B(-ST!^u>13gW}G z+a>x9lCxW#8t{cprh}HtvJ6Pr>~V(3VPpQ*9#Us8K0~)C;dQ}@+c!1R7X`lC#V}ej zFa=MNfaH=Nk?7ifZw`ov2y zG+0O_?VbS@>)%C)Jz*6poeA?L&{ENmw>`>528xZSih~riZ*7lxi)G9nFF%g%iNler zo0HtPi+Z@5A#S{mIn90{boV?Ls=rJxG$RA?wJlpk8?tbQtSi7s@-5!Hh?YBhB}N>5 zaxPXX>`pAbb0dki+%4-0p~2W@)%iqmE-D*F|Xj-amdyjP|=DM|tCDVBJcmSHz z|7^2{B5W0K_6O35C=Sc6CFcT1F_0H2dN-h13^dU@){`EO#UnN9UF6+4Mxk2eeNZ%N zBO4-=qh{qY?6$hoch8KPamDS)_W2hV$|e1#CrGN9t-^<^9yCs}4LsO#2}U!#@rHNS2lorV zwcD7z4laTRut`|ZO-KU#K`;q?JIqL6xvG){xp&rJ^hdtj5*GIL;!=lL?A7adm(Yx` zvPEseFO1l{4a1In5%JWi6aP7zR?C{N!g_GM6n~%G5Jt(Zl{VC|?y$+f%5!5LeR4Esrt`=+@_{Ue~_Ftc?~Tu!aVKH(luPoWCzPUT*E;vs!T+}J+`!_iqrW-vS0vwdK=IB%1#O7R+YOIfM6~M z4!1HVe=dfnxP8JcHtsBMz4eD^tfX1wWE`N#6&A(Z*xf%UD2?gLH6BH&RZUV9?Y2jo z7CocaupP}-##Sc;PN8$nM6c-S24-;Lt zS3(i~Rs{8o@cmjvY~lhpIoBGXK9x;5J%4{rh1;o|QID-6*2M@YXgD+PvunxaKgTDK z1C|k+4z{D(pNJ}7Q+;Q>t58DqU+taFSD_tTt?;=bSdY z0NHW|t)eyT{#0Cw%B;_RYttHop+;#(y(y4xN;Mn~P3Ba+UUNIRm;nOc=@W?rVqNEcn{(#x`o3Y(**DfoI$T*Tz z#uD5+i4B-&$3@GV@OHo-ibMx48(5Zr6}4?SV=kObZ^izhQMW?T%BF<=U^IjyX2Lwc z@N|?qVEzc;zRndqP)o-Qv_ZqnTjK@fYm%%He5GRL7zMesBSQmkoYIqpNRCMr2VjUm zs-l<*yrD<7OtII1)n75xhIL$Cs2;_F)mRLm(7af7d2p^FjJn#;Tzf|B4+&*@2PDOZ zr!yomdjcr{a6<5Xu+N(*NsAk8w9~uOd@BVf@V}^C#N&x6kfnA$0MQ=&p1?E{&nTVA!nKG`)rb-3aW~Qn z$;~&U1DC@3<|^~DYs%|>Tk{50J9<@@!|RY!%``NV=BDs_t9Kbk;8P!daOm6HLl5tz@`T_@Zlc@q$Zu>h}ViUW= z$u0Wd6MWdW^ySU|#@5X&32lr|H!LMVIcK$ZXnEy}IF*L7?!Ian9#Dk#2!gliH3l~0 zDEYJ@k@)`5CuQPs$m9n2!S`Z`{jGIuapGGEbP-G!b{p#y8DQ8X%99<7t zN_R53)FzHO95`@!-L}$)l~IUDud>V7O!1RgrpOW~pob(zaQl`-QGw5+a7242_i%2? z57Bu>3I51dRkCEbL)TE|X#H-8q3UKGdRt}|QRJy>k*YPu&S`2)tC0+tg6ZwUAtJw{ zaZcBk?=+lH7~F0vk1K{<(XO=OiYDxcYE^TA5@i1M7<+!XJj*8O{k_B|JwDe;d06;x z@?yR}b>9$~(B;AY<#^>yeIq}o9L@!VABb~}Q`?B<;^E0C%#&TvbsAgt6ZhBZd8={J zIs)Gf=~lsGwKexG8(!CM?LB=KEl@i*jntFRw>eNWB%{ykxDt#p&;5oyY_NQdc$}o zG?VrNL_sFC6~hn-1tzASrbNm?5gKEY_R^TzuIl1tCXCrg^266H)RC~H-_wT$P(>8) zh4oYkUZZ1+XPwlpO=8g!aS$<=pEGoT82q3qP8~Ha17ZesvVLfkDBaq`8PAya_uG+s z!ip3_C0?4K2f-|1o32ewN2s1!h`-rajFPCqXQL5fJsSHt6DAY7OR-4DB-jmT*#{uD z{sv#aUE{HAQ9h!rh-go9DlsJCE7TH4mFyyDUDf)J@|TUFU!r}*A>=71>Ls2?*7aHQ z=Hzq7Q9gl_)LB34!cQK+ESq2J5STzEiq8}NO4POlXLuu(>-&OvxB=cil$4`YCt=e_tl0?J z`}x!+R6(L(qaj^6hf(jgmb@J|%yH7e^oUnLZTdoNT#8=Q6BT6P;dyr;;h}6a@fsyz zoif@OH{g__SLHF|G-UU>0-KA|l|)OPx^z zPuK@7N3-*06deTl?u4sBPzUo6gM1t(Qa}F0RWGKvF|TZWg-KeiT>j{@DK%!QX{!M*<>%7 zOkE)dj_ztS;MG~dRNO^B19#l>WVia*Nu=2Un|n(`g;9+xcmBEr%pHTCf+s>9<3Rq3 zi9VOl42Vw}2bP~G`3CdCt5g6%tbv%wJMjUjBb}wNnU*$jyo`13Has>Mg&5$61-G6_ zA7Q^1w;axj*7K{O4A1pCFG0eXVp4G-8Ib%0yWM<1<4Pbnb&2^87{dBBr4=6{zZb(V zsTMQn+k$9SlUK7Sw5(82=W|0w2i)V7K)U}_4w8hbMKt@$Vye8Fh6SU%syIWBA7Ic| zD8y7C8<5(?gUJP7*T+I05Gyzr9xL*zCr)018JYH*`hhAn4_qcl%3fH0pPbk8Igwk> zKTT5fHgXL-itjJ&l?($R%wwL~+F+w?<-Xg5QtU9W!%+JCN$ou#6Om?gNfmRhsxj^=zc$$jKl*g}RC6;zRKn&q0*4@Xb;*!Q;k05wEM zP7J=^%eVou9oDW|T(5ny=Og4vaV4n$W$dCFg-Kas6ZK&gF@mfb#4f2(Q3^oaq>Ejl zO%=W%i42&HZ=?eEn`>GJE7^H3qsy`OEgA>Bd>AM;EroFH|IOoRl5cTXDM$MueZ;A(G_QNbk$t z41)I#r!)nkbiQFp>o%Wdk4T1y1qMj>#_eJ2DrO~*V?$tiAk%ecj$68?Icyg>ePnlc zikTUqEjlp0dj9rN;1_BVhbd|jI+t1axcp*`|u3yLa{py3m>yB#gbYyK) z~kd$(R>nfzoesjlrN@ymb6*1*lB4(1A6xY-WF(V!IlqBtdsBM52UkCFbV z;e&0PLulqW=4zJm0p-}(1=hI@m9$c3vdH|h1F zZNx7CNj92}`je6!zd~%Jt2U58T9?+irKA@qn0leB4|sHc-$D^v>_Y^`O-M#cbJ2~O z0;3>^1ly)gf60hpNEfJN+(k&HPhVPxRS!wA=>FR7>OyM8=@7TX<$ zACr7c;jt6D6j5f-)E3mGwesHOObl>s6w8ms??VwOk4gmC0%+D(hJ0G=FxX8{U503T zHQ?%Xn02S$6d$YL4dS`-INYi1TVwoR&P4eTo((hzrujXI)*!K}gV=n^mN7@vLnHL$xY__bh^DO?^@YA@HA zvLIex210ttzN}c?5P%-q4A@y<--(o{*Zj=hoM~bJ3 z9;pE;PKN~j{?Z-^pau!e4IJ|0@N9oc7ZeXDh3}7r8a}e42?lMt!qZAaODH`0^gyH2 z-TeH$>%A>}z;zJZf^OaDCXwzqa@Nmt32t%S?)>*(@ao9ZSsfeO1Lhch@AXGpSeSE{ zlWdvtsR?}+tEHmitS{HF$h_r$p#W~tEeEw81dYq&R5O*X-)IfnoX)fkbH20phq(h* z3cH9nT^6NSW@7A^oOuB4_xQn@_N|;tS;uA9-@w;Vk2byUAT_SnB&;{+UI{#b>&i9 z=XjG%SN3H1M-QLy(ve?U%)7(wPLQz~_t!?x&_w5qWUF?%tSH^o;CPJLA1>oSBp-SP zyt1qf1|#}UDYhW*%si+J8an@g9t;KwGt+8BX9+q+nxvY7Nz)r>QT&OGT<0wF#Xf~R z5W2vs{#t%2^EJclkRlsiY+BiRl%>HOi)=}6&a!qj8g=d(+^@K3PP_39xgVO7Ts-!N znf!e2ph@`}EBw6z!WNfOxHT@6Ciy)denp>S7mgL7=f+=czt_>8kX`Fpu@S0YCa;dHt|@nd zrBwt+m?a?fWW+rV-J)xBb*9JDpJPSNpAPCYG4>Nh1yQlOahwYZd?Ex+I6MH*`tn?7 z2}$@O)jYSagrWi%mt1X0BEjN|N`xdxVR26pW$J?FpkL=B#M^V*iKwdEO-X#$zchev zE_)JLA3(2D|IDqWpm-MU3jNRIW;)0a-gEL?>>^uNE?ggS9gZfgz~TdZB^1c`qIp4vnybc!9NEi_JG8(^aV^(lCa$;ONU=EKQRv*>O0yyJdf$F<4g z@_kS^;kjKX$lbbGdoXu(lIFsz6EU+>+b%ETf;G$2`gVa?m>E%2V_}G2#%zw>nirU+ z_@3qn$V!{yWQe<&oOQ0Jc-sBDMO_i4_)y3>Nsb$|%$V5R#F?uzWwts~wi`WQl# z_J&EoV*s!gz_sF9nIs+u=hUXS_=`Je11IHA*ft)Nk$WEWqLTD-NHQBAzoFsK@#hPm zmpg-)>jnTJ)KwRe01Su#6VVKzquU8BG_En?F2N{Qe=WHN0vhNSZ53_iG)HS^fsFuh zXu)P_QBwtr@D2V?gpw2Q<&#sv#jf#rfiol3o|wj5#5Mi|$tbE|6v|HO2K8evafc@uT!$5T0z{j=`+lQgrvBwM@=Qh^lmg4#>wmZ2G*J-acs zs+sT#Ab1&>7@6N8flX19a}tHc5XnIG^3nO|qA&{hGe$#rn9?EJMF|mhW*2eliDLo_ zq)2_Kuff2V0ji0n3$5DXd7-TVAO0+}bur`4NJN(ZL}RbqI51?^9WigCxpE#>j4>Xz=U&j$_<#8p9Mp#Ey%bWlsfNzw;PG<9n=WxJvAPow1Wc&cHX zytPU}o0sz>3WPe?W?&W3A9*l55Dp3|+=@%!DlrX|Z3dBfsF-fOl7CDrATz%yc)4i` zCMm_tom1FyEQjawdnQI*DKt=eX%0sr5pAxv{becMrA$ugq)jGR`>-#y!w@?^@{zzVqNFqV!f1*tdnE zCy~b0ecI+zWAJf==p|@VT@deXNFdWuKZwHEBP+J=>4EfXxqE2DHh4%My%?j5>aGuE zH^|6Y75cdz`Ya#4@;};@xUI}sYr|JiUU2uwVY<^Z&AG*WZFY7_F&>*e1F*VoI5n7N zt*Idk4=QkHZ{G7G6=&yMb~dLu$o-CZ6!Erx()Y)z5xzQh^H(e7GH_hp)8g2h)iIx)@4P~-;dBmQOo*bRUnf^> zv(vR?1BxhdpdSyWxowPf&Wxi~BDq&`(TlDLLQEG(gFPF{P>O!GUSsE9YrtLDgabr3 z!Pk0hI{ne~4Bil}=oKW@>K%2br1xrA5t6Pc%eo z<|z0|ixneHU&R6P+G=r?ZASND4vgnVTif5hMp)==%}hQaz z6u=N#C?zvS`z}IVMyP=(gCaJce%SNSzB`%{Cqfo^RIhcZo7t? z4N{aEgT^h8OfppCWZOwQ3o7z#+f4O^3@s0pbrCWGgZzJEa6ud3mNcP0&yt_8U_`f* z24EPy#|js_gTO4dTr}0dKO3n=PtFMrf_p&%;kuzBgWQc9Mr${2%m2bZ-YVTS7Fk5GuGiN-<;uLUDPQK(2vSC#(|WN^yT35ju%r7nxtvY?Dpf7LC8 zahd%v6KqY8O`tPNZW9l1h8=F@cBAeqk`5?cQdo%j46YlWL!lf5RdWtv=s2MS_JkK7 zj~c#SE-8g(26pje?;7PI+x-p}z_knH!y`YKyQf7Gbfg?TaTt)qM4LxI%7h-!BM;D~>My!Lg~UvI;UG4xoLk*OY_? zO^*da669iI8R{YS0qsY@!Q#x%N=q~a1X&xmd9voUtBlE_>R}o}s1`mZSUZ6gD za0xAEg$IU~hayUJcJh`>tLv+Yrz^b#LJ)xW$lw~cdo z?DBgFg{YcCt_7~>g;jR3lxbD36?6W(ug0;t&AtqH?woYv+b8`>TyzL)Zd{ZH7I6EN zI6Am~;6ppdRN7x%2N^d6HV9Uy=1|V9@5U%f+aQC6g-aqCzx7xN{dON%EEwr0yyg$LVDS4;(aa`&S! zf9HZam|d~jKwv`NIxCJGB9?Q<3C(DtcRCqbH`Q7H7Oe!cv}$uUNrz5k_&Vzmt_Smh zqE!q_VA#7$rAdlEDN;6Ta$j96QG_aT_?23uvnY&{e$Q@mwGw1Oa1rtLMdaPJ+-r4+ zFwfEmHDA3xT2d@uQU;eySlT`JRB^A@4{GO!U|URrbL5yn z7WJ~xZl{&un%Ufa9ikQ?0f{5?_YAUiXt}|@M_z1WKKS(f4IhVp7|yl9sAS}Aq}gpp zcy>v`>X#$qLF~*B>VvWdk(Nd)h(IihfbcBjbF9Vb7JzI2^<$u`DP9$(ts68EcF|eU zB--3Op5`por&Xx3-jF{pGH4fnY~%GR^ntQr-iXhK!&GF*;AyTy5oQ>myCTG_#glvB z_2{ItI_a4I_AJ=;X37F_{R~9z|IgY3cf%{8R{BtUMz)u8=ZiLe7w4i)V?Lq)%xTND zDw3buI#W1{E^ex=PZQ$qDB`_oa{LT2XF!H&V*db``?N-UBMm?^hkWtzV8a#Fl&<9?FxeU(n9>*9R($e z>!*Glq2R8MzQV_BUd!c%RG5j|CQWGX?;^v1fFsaDyk8wd$cRfUb(U8{2-S8}Rm*== zG)DSBFo`4=sKqrYS1gT-$^zwikJU?&NtP-U97hcM;62`rL9Ww)%3Pp!T9~NHU*O{P zEz<&pgPX8UvtA!ic3cq9NW;$`yLIoha7e=`!17^4VYoUyUIC~Wt5Z=FSBw>a-7@(AhYuh1e{w=thK}yyBdZqpw)Agk-rIU zvt6pYB&xj}EqTD>}u@itf z#viV^H=uU*7*ynjiZ5o(d&^EcHI4i_H4{eL6_?Nf)L|iUfqd^Cz~8nC_j|x0o_N;a zFqm-=JjX^=GC}Qi62?GDl74|4G$Aq(Z}^&e9bufK6@QDuM#StT{$rYF@y;F5eSPtH zTDzhRfJ0Lu$3k&LQ;Ix&RSz4TX@{d_)6EgLLWSin>!QEkeQOQ}QD4emnvlyt=Ej&{ zB{|Rjj*fmK=!6^|C3D1lfL3%faaRVT%bw0bG_%SUg8WL<#zFk?^DZa5h!u+P= zKZ_P(JviT9U>8kMj`O23ZnJkJVXW@hb{7sk*$Z4FRg4BPFo%{zlMmQxAi+?Gw|9Fz zR$nFs_ar*cz1DVl!4)YTkzmIG=~>-90x5Mu?!x zU;pSa!fYT`AAUBTEz1<#;B@mIb-(74-HeUb!MH9n-AhBdY$&eL4GINlT7I;&IM)qq zLK2H0+NX&u^O86@3;Qs`ImS0JZl)HJoXb9uTv=6 z>U5$Fvl#)Ly8kqYC#KGy$N9^$T93Q`7d}_#N`-6E@n_f@09SmZel?jef5m&NLQS@-3U)N`{F4 zCHTJ;g7{-I63wa5_PJ{(B5u@(5gx|&4o`52M^jYFV7@qx3lUSX=E9V z`n-y0x(~6U4u^U=hXdVl?2x!bFcCE#X6mUu*2CE;f#$0uZXDUufX~}a*Hrsh;$WmB z+`N(J9BIB%qUb8a5#I{GrUeE2mEi{_y41$irSYw-BBmk76Ezy3S&Ls)p-HVv_l~9VmHJq z2paI5gj)-T2Z<8Km8DFCNx2=jF7o4g5Mo5ib(mJKxBjExCB7`!rFPAPc>CFqe_@= zU^-7M(gV`Z(PQ7L?FF$61s0Qi?GOrL5l8Y9M^6U8JcX0kN?dLgQIdz`TzuErj9QoL z3y|bY2D_STT(Sg(g+PGHKbfVP?$KZ7vT-s-6iR1{0 zm;R+g@ZxUWQVo4SX&mTz9#zBk&wxChn%zi%Uum|@w&{)xWq}AFKCXy%wCtxVBI)Ow7Gcj(z1}#;jB%yf}%ChnW>I3Js=SFd)hX zji{RVQ0z8iBL`_$UylJ_UIIEwYjSUN(N}asv$MK4aFq)9VVxK>Ts`IOkPDPSokjw? z%&^Z3uq{^LVAu_-G}37M%P1;9Omm`=C=IT~X?3gAk=KnxEVei|yy?Hv0 zlb?Rz^S~i5SyS+(SMRsXbu5Twd)e1di6qx`M*XZV3CeUevlj+G$vC`DknA?yT* z@ww|=3vF7WjEk#23yHA4FV&Fh-$CyBJJnwhYuQ%&JC@9i-7cuZdP^V`HxKa`Lgg>^ zl&b){;XTbl(Zx8lk&IXO<^1dVfRNwRRZZm>fG%fjI>AfTps9g!}lt`E#w z2<+AI&2B=)#zC1vb}LC>KY>e+JAji^*gP`dMsSt1UuYn>un9YaXfxz#03gl25{*>i z!Shr8fPiVWcFN~^>K4xiYH@ZDhW0}{=#OnLob>p#kj|l4x%ZYAWiDU|?i;`%dN!pM z2}TwC_>W9)vn~Od$>Mr2ELW#-8_jRp8@tD+n`I)esJq2vA4>+>%tKfTZiix05{!`I zhTTp(T}oa}ED<*8_4vCsO{;(`ROO5gNzKnVNzI@@>lf#lsPjMUv4P;dl_w&^E1y|Z zzuK@nI~DHXtS))?N7iqzJz%Avu8&8ii4Y}&f_j>`J{ZEJiKp9GAVx5SxNFN=CGC+R!59_q}^m@Q@X1|-Lu>XBLYw0|g^ zJbzh&F*gj*%Ct+3{^>U$1oWbWXv`_0cPIHu6UY!zvdnU$^6^1ttc2E@M1=c17X^0H(e~El`xe)56 zxf|kvz4{GVQxw(u=7BbXuyCEHQMVECA3PHkulHVRmf$F&nJpX>MwYZngWJENYd}nf zOb-(Q74~|Vg$y@4GT2rNn*J-eJmeo&__ja83HJq4*y~53Wkdz&~ z3h!1O%!%(depIYi)U+ov`1#fce)Bi;tYYQVM+5L>sk2OUt8)bIA)k%a?E|*d8L1Hw z9$9)ATqXi1kf2fym#2M21C|Z5nNsc+GjxqHo1G{~8%Z=K%H++{3ST}ZBPe7vmn)L$ zBV5<^UoBp&MHs;Omk(1g?6>G@FT<$wrG4bV09>xox()>y;lO>9I9yKti))#Cjh#=} zU5I)PSRzf{83xTRJO671CV^kd5YL^9t|feaVp%t9A+^7dpXwsSuE;^REJ1n60Ai#( zf|(l!28nMO$q-{nQ>$6V$o;a4bNnzT$Iuo+3>%*`StT3^I9w+{#|5u>cP9hhx<;P~ zlTtcs4>G|qdgAcDo)TFK!dA9)HJ;LConENnTjI_f{pW2vcGVP&0|dG8woAiF_%=zJ z1F9EI^pMxa164yIxDsl7CfC;|SQr<2JUR*J6cl-Ib4p$7wH5=$v7>T%tfvKx-pefKr|sN%_J^~f}=vzIlP+OBro zzcLS4td;{dWV*O)H1k8bZkb>1c@Ci&`n>|d1@jfGju^aIa%9TaX`D&xF!+ghH@d<* zaH0izz(C*2`!M=-?5#s}->^`Ll0VUT?p2h8m?a>B#i;i_1<)3_4 zqIGUO{TQg{O|YOK0Pp?<%dE|EGtUkL8gD)!%WJXKC;-5dU#E!cDGX?Ks0QgeezT*Jaa4gT=44|RS ze!7SrEQ_W^*Qt7|91lY|X?BlH*^OWn0RH|RD-w>XorN85@lcT1qKk0c>aDfG>q+U5 zttKNhY2Do{TAblLy79v+E^mbT`b1$`k@5kJY%4GMkdMA7alnqM_o|oHl#KmV>W4K+ z$F-3VL9z>ER{6#^xc55I$}wtIo6NC~f<&3Q_Bs#lSd?u-u1PRv!*s*=>4NtX<%O7H z)np0HY*FPll=U%Ebm%K;s9)zkTQh>;*Ne_^N0CAgF#Q*F%fnRAV=Bxl+yh_*-0V-w zxO;^ore!bm)DUB)n?C|9lv$#ec1*LlxJ4sjjQiv>ezQRNk!^NCjC5i^4Z_kkAV~he zXbY2aoN|u{6C~mpg%I!&&z(;M@@aG#23$V)96EcauZMJ6S2-51Ofc88_&Zmn@CP@} zZa6rGl3|S}zl#Q{2Oq`GZep`WZE**|^@EagiF7E{2b-Fdelq{uiKh{f2{bef1DLSr z6s^=;x^>kthy4IX2>#^wB}dHZFn+6uiGHVJJtn1LBtpz>2<5+ z7(*>0$vJn%>sv^UNUA*N8}_%xc0lM9V7m~ZQZG|$Av$0I)&aHv=b(zY%fIODt?j#> zLELnP@56?v*3J%>2WnD4nP))h4C0#-*6>CACV?fdmu~Kym&SO3mmFZ!A*vD)xH|9# zhW6UnJHR8x>^J|pU6KAjKW%nNv@3hED00Q}L(?KppY552Q)X^3ph=?MXIqZ>v#{A$ zj?SU6Pib$^R*S5RFeSOmYAkrYaB&>vtuF_66+@AdXCMM*Ef|c$Ls&$sa)dZSS*+ai z#-tnJah)er&6~GcoXEvyAa(`wYd9v7MfR_9N#jerMyLGIp0G+`#%c71^OA&QdYH-M zTyoJZJ>^novVTGulVkeb{vMXbd-9w-&U(E8<$YvaPYa_~EUsX)VkHy)iQ}DL%c@Qa zYi^?43lmjByI`llHkWqhpn8hFfw0t|dLa3oZ*db(l!JNOr_?;6YSKu8%R?}pFu<7W zy0-Glwm7XXoevhlaO`L}WQy_I>x*Vi6H0x+-vMbae`g2-$zR=y0`-s9 z+w+*^{%E;utH9DtX#%~a45QVoeryH-l)WRvADep+Y-{3hAxs~gz+?gLiI7_UTEtTh z!w|($`Qb&JNDkJIePSUofPksWMI(y2yR*{F7ob4io0Q{kzRLZ3pOf|LdfwL`rxZ6jh~7m=ZudE4 zWvFMWgNevU8CDbC%sUT?5})pSqN&*vkJ${W(wtXJFSj*jC`YX5G(M-_51&IxkCzS? zd>DT^E54k3tLbBUeGukn<9&+e4>WWO!nU-$Cw~o%mp^;ER|$&}pov_;Ad}Q*c*Fzo z03lv@l)g}^|vr+Tof><}V z5$=?36GjCOa!J@=+yUyFhwW!@j11}n+Iy`=4kQ6}{<7kaVW&ei`2*`;%KMiB?Y{e&`*Ob!t09=!c%>u2GP6!l zVR!~&PJ?11YWlo=xMvxwrx#Cf4lw*`i|Ku;R_v_b97F=~ZhnJeMiR;F?N z{W9MO-9J{SP-`IEq};0vu(xE)swNOyMJ-MK-iEH}P6E4auc!9Ep-S^(Er0QT9)>I^ z0*Mi>Uoo0JL^ST1IQ)4d

3kjVvifF)l=X!hrVlun1Y+OC?F>Bo%V~X#!`8OznncyLr*A_GdunQvf<6 z!eYCNe;~VP+qqGvSVRBfeF+x}b@4M>g^rnC^(>OYKi;Lk@iFu4kuM|AvqbC^8f zNniV%;yY{S=BLLTmv&R>@VQ_(;Z;RJM8+OjVZK^F)j^98MQ0W7?LkBaP%iF%2kce9 z3fT~~am4A!F|23WJNqvSZL7*5OUeZ?>_af1eDoKx@qXq?Cx>ruh&L-AEqbfjejkE$ zLD~lyCd}}dRfnApoHf+a0W;@phy?Dd6Qy%3$RCQWG9ZKmu$r^hNrI5UyfVvp{Bt(} zN=HuYOlS9L$J-~^zaG^|)@Gu*TiZOXkfLz7vGOgSpCdNFS-X%O9!zdQE~W;OMo`xV z>2@+K&?)-~JBB0RR59pYDW4J;}Q~Hlfa|fu~E+u;`iE9tkd8%(4f-*j?k8b3%Q2xXygO)HXyE^gZN= z1}xnRBw^{0yc?mGk}c+CfK>|NAM|y{{ORzj-#D>uoPVHia8GE@e1x`mZ7yd?TWH?m zZ4NmPLqihhbvVv|L)<5B<5H=Q`|2;REi$0hQ;IDmu_Nj@Bucc}riD+}YEzr!S)n`g1~qA%P-ai|rh2f<8@D4YTL zxMJCgyS$dnP~*;6-Ozh*0@7tVer(e z-s_2v*gY*pReyNfc(5hiz4z?=gPPxBSbix1TRmWJCH4sU%1RZGxK9HX2d zD;g+u%{}%*h{>eQ8UIPwv*`f0IOV}D9f!9?I`-cqSb?&xMk5-HF~)lp^035czIx_` zaq_o;?T5!oCKVfd3*d&{iBi1O(4nc6^0Qzwj)@@xU%;@W@eUwM{!2<$I3$B@yob*f=6;%L zf&^o{px#0ND(dl)1&%ElWtyYE$3GWYB8zT1fz!aC}^&yy0WP(*O zdh^kGm(_2u{i7tE+q6udbXRTm%u8_&=uH>N4a%6t$k1550kCc083zCt@W&IZ!+a04 z5IHSOt1pB!TPTR}1iWgmX&%;cTeFa1hnHF-&X?&RPNc+6=(JfC$+rSH-AWmz%X6#%*3yY#v&`dd<1|I6gYjay2*zxO(oo2kB$S$57hn7Shf&TEW zO{cJ@Cu8Fzg<}#I>alx|7e-<(1P8CU#S{-#Capt@)sy#>P&QS@Z-YNdZ%7$NCc462 zCw@~wx(?)#&??e?79D| zDrln5nRi~0=x%Uv*&552*mAAsx5ffQdHtm(;^QAl*!W(;0H?KlG$X0lFD{5d6>1J> zG(j)@;n4-Fw=wJg?YEjwdmpp#+5H+-NRK867W2q@wEZp}4@UKan4*dwZ=Fz@O6y}X zPk+0Cj2%M|vHA8hwf<2IB_Zk9v{`})5X~f?mp#la7>uE5xwDQ zP(I2iM>_>htgDuM;zPe#v<@>=Y?o#VC%qBAgs3$l0Yr)(-)$Ue3>fFz)~2BCXI%h>6}#hiq7rYW|21} z*KZn%h2Lq7Yr20E{&v%G>V*wF4hxq>N*4ZY`7^f6U*ZmfQv9K0Sd&c1DziZjC-*UR=^eZ8XYz-4dk@>tHZ+uNgV=e+H9Oq`lo<)z&@|}zU}} zaHSdf&?DdPB|wLp)$J9|yq#HavII-&c+ld#f;z!&I;&V;LCB!6o$1v^yrxsN&~ zH$*!PBv?VrVX;O75`=`YsI&-m=GMjAP-P<&$tF3Ri1kkPCF|oF-d%(|)30@C2S4l* zX#1x&1uZAtbSWvvOP>IEQ~nwjAwAMVqrGF61=SbQJHt4np+Utiw82DnfgqG+DOoFn zJ^N5rP`gx|nqklzG7WE3VMaED#C@r{2U{Qbeyj-yn8qq)r;(5O8l;QZ$NH7k0r7oV8Zx9$%936m^|>XO7(J;Y-77RHBTw7 zxrvpc?51f>>=uxZ#>kGW_?;Hor&{~jRjQwK9MJ5Eo||4j)k!pvC=BD!nNv2vx=#)^ zXtGzdTWRQIqysh{jkbxmJxrEo)EH+u0TWlKU>m|5Q9lHLI}O?uJ;oJIydYBL=nPwB zu(3w16ISNN0j){Mt>}|pu=!Q;9Iim@+5gF%9)Z}}b(h|2rD&MPz!X`u2|;NevR0R4g8aK^l4&aD z6v)pBQ+}wBavc>VJ;}z+{YqRkGXJJ7Q(&-S=r{7&#b5^Z(=cnT&u;h{15VNMw@EQ$ ze!ZOv@Qzw63RYTelV?a~*azDXzuP*=xV>j#wxW?-mJ_8ZK^&Yy-cx9S;fw33U^(Fs z$E<}Fp32cgY{dAw4alh5Hi<+S@t4(?4K<4~EAArOhuWcw{oi)|oEF*}PVznL7i48h zaYma`pM@J~wUJcTtVUhX!*{oxw?Y3hNZE3riQekwP^FLiCuY&70cZpSxC}9+)V$i#oDL))xpDj&Ge%S#yziJie3*V4UEN zC%3cRT-zCH8Q9uwW};*^C={@6yK4HdO@(rRO78{+_WOFCti__zg^Xv2D%e?&721<|TgRO4_*f0Pz9W!h85n{H>dWn6tuyTs0;nT8^( z{}~k+V_`z+jW||A+W<{s~QR`v@Fxlg%eX`#4-iXJEvPl5QCZX z^S!do`F2ro#Ok9lQ`y(u-=)M$l8tgpb^Bu}&!0`lc5EtGl?-RYNg-Ve^h?5M_VYQfSd`T4*BKX#3Zm{iRap6F0|Gkrassed zaB1fU0PFmKMJd~wBaiz-Ls7(OWd@|InT87=7R+i5^OKu7&|SBY1yx=uK>>NI@78A%>B7PG5x30$^!+hI z^(-uUy_>7d{R1)#UgAI5UKy9Rqi(4~ZV!~E4mt>^NB(N9|{j_0P;*hi6U zwsJz&yd*evw70JY;4h>yPe@v=b}`xPUjbG8?;Gnzn>eGeSLClgdwF!plSFQ?B-`7K zksxZ!FXHN{6dF?h0mSn;o`Jm_8(G3PnMAq(j5kF2RYs4q9m}F>)ah&anG<$gWr88Q ztp)n2T(g@QbO}kBPjo9#?4f`7kHm~&2FKm$0~X~2&XPi-iyAmURdKS zR4`TAqtJrRT*axUWY52pV5B@pWZV5IzokG-CxjVuvm%3-y0W$VX9#3ufX;|S5?}dk ztrR%+D@jbvya_3CEspPtymD6@^0+!FBU0c)4`uL`U>Qc=$q#1|5pp+*3iZ z(?&Tc6;WR?P&^*qt$vq?`+@A?@HY$To>s`e&H855jyd$IA{wI#dx zjPWd+Yz7tq8MfAoJZ5+=kaoU>to+`SC*E5GZwGC)(CNyyyJJ}QURj5OL7?<%&ZHrJ zT6_${K6qYd z;jM2z8e9JGwaRJ)wdBSZJbL03;10TBoGN9&2OHt(Wr4BdeHAP!FC+QyrO79}3n}N3 z&KIx=wFmcYcZKhOC>+O#K2$Vq2&BV5&l->er8M@1LDf&Ql=tX(+l#1`4)eH<9e>M- z5Dcfa`lV~pWbSXXA&790Kf|JK*78qmi+v+P>PODNGez~$3g_j7Unj`{GFXdy*?_G= z|9OJ(Hs`aLDefSAfygGpMqc2kf*d|85$lbTu4ADQbU^qIoL+8zL(!g0tp8!E&KV*Jfk=a zAL)AE3hOrTwQ*T0Z&@N#;0wL%(xHM=E8)FTik`f?s07w3JbS(2uV|3l{H7{+FNhhl zqx$nsHU~O?M}pI!W!nm6DT2cB5qM!YEXLtH1gKD=Kv?+cmY~4%ArufD1|85@BE791 zkE$}Lb-$wRoyS~gGOBC8c4~7NL#z5gc$$)DWA{$vdzsBP z;7Bv3>?mb0)G7Ru0V?$SF=3SiC?%!5mz6H}MC(F;RvL1m6OBIS;4*ag0+>3e#j^AS z8rUmzI-p~9TeT36MVw-z#&oi7{_McyBpNaYWaroD`TMkn1uH;+1D~SlJs)U$^SfoA zoUxNfPUy?(a_%q$Ag4eQSfSv6TlpcS(WV^tc-KHJbbX$uqh-9a5-YtM05vy1nLqot zId_r1u0ZmAS*B2 z{U$HuRbf~`M$^LXkD1)Xgt3~?wlHvd(M*MP?#xkT`~UnEIE@I6a){s%bT@k~ea%neAhZqM0wa10Zva ziuZO$ki&?cef^n}l>n02QURLO1v?bVcs$j4Zfq7&(JVGG-Y0FV?|Omitf@LK?C5c> z(e;3gx5#l<@)m~7efgE`OY>lc;gei%FWIB^1{;u)oE3 zs=~*%Pz)zR{lN$WiQ6Ne>(NnlD7iF2YZSGbI%q!~#96j(Uh6}6%pn}B*G_mdZ5^6X zb54J^q~m*9Dd%h>|G71_Taq&Tyz^+W{Y*f;^2Zxv#J+R}EzTUPr1GR@ma-*ZLflNyHF+Kn~ zXxv4Lq!j`rC90nXI7oQ&%hmIDQ(aqnjUS4y;)nxtTriArh8vIcb4|`>#Y%0h=m_b(-Va)qG%gl^@{aWUK zkZ1vs!AYTt>whOW#8ct=JqaIkh178jI}1ov8&Zlwdcn+l)9f|^bhHq;k_RpEOFvCc zm~d5gL)zaVud1Q-qMbh4Psu|g9Z8;Mo{6M9Da;()1m-+qMyBnQRDOS-50mmtJO1xp ze>$kx`jmVuD)RFZZRTU_N@go}n;&;DIlv&I#Q)`lS5djs8bzS83SpK)+9vxO9@oX@ zLk|cNip1S;ymfn}5MFOU%_OM810L>=)tH@MpT>Tzc}ihrZL3oK1t(I}xX}lFV!$Op z)Wp2b-^T@|HS&(OTyYI+9TxkgljTK|u$&0yA*M&4xUKM;)VjL8BSkxX(Gjko#eKD8 z?M+yI-J3X9TPTo;Sm9da?j4D6Du^^g45LgvbiG;So0;QM8)FoVIAL&L#i!p{z07N) zAG9IsfchM`@xz&XWg8LG|4Ss4)BqgXdt4E z@V~3wf=drQ3TNZ0(nga_I`@<8ykXlhc*WKpMwxj)ezmq8a%d3`K#(_jppiV4zg0r&moVMfRNqj2b%b%QOI?&_{99>+G zN4OnVCzhrjWswa)k9_QeD~C=;)(XvZiHUHyao}ao+Fp|Q3x<4nCL1#ueKS%e0N_sV zMuUFkEZcB-da?JPQ*k|p?w0X)ej7J|@xb^h|H=lhDdV1Nm>Vyi*uT8++LBXf+v&ZU zPgtk#qAVZM`c1WO))gu{E@@@T|S0Ej-ZrXx#I7m)4_q z{ipvUalWqik#M>T zeo!->;%3?jDW#a7Jm>aV*4dPUH7-CXmyU67Vp1smGqkF0vkhrOI0gnOQaaC3!ON~; z3)&Q>7T@|lzD}XsE<=VsC<}UUn#|!O7zaMjP83$T%eWlX`>I=em!J_f0=;n%Qm`MR zB%C&E9EXyG<6Xy=Z4YYkYymUHkzOWZ@Knb6$LIW*Nd(XmVj3UJDzD3^y{cbxFa)q| z3xd4R(|0OI?(bk^zGg!qWI4pekj8LKd1a{l$h)-QM=n;G>F4u`)nlDW7gn^8J{wM7w@Hr$LClZ1wpLwb1;*+3(JI}BGL&%id7CKH-sBolZ~K;fiG)w3E#k*{pVm8?Y; z&iwIhsS62~bkcqmL$#h$Tc4bdS%EXmoh#Pr-s|UMsgieV1;-av&}b+Is}f?p zOrr7dNJeqj-fBGs&hqKGzyAfCsqv9tmS`URUh$l9hKz(hBfE9WrP(|c%~!YADEz13 zTdlFqj<`zyv>LYW0GJ(U#%u#O=kgmN@lK@>OHa5$QP{hT?@SO4i96q32{T(3z9T1^ zeYX6WH4s>tUT2Vs14>N|(lQ67^|J;L#Y00q_u)8x=jiu1gfPh})qlZoYc5gC+i;Ph zuhU#>Z=!JrkWiAU(fl$sKW8-Ivrv5eSVyMxiD{q43cuSLDl^!caq{HHe8j>@Q01VN zOn^55|1jy6Z8@T5r6L>{%cb zbvW#VuzG8;K@vd48MayaIP39ESC`yBFxt9r;302_?j#Y-%4QG!-AZ^?&z+1MZD_Z7 zAaRC^IbO;1DkW9v4sOXdR)1JVW_!$r?#z-hVbVOIaNm@WyT3M>NYYu{mO4P-IHcu$ zIzSjH#6WpJHSPM#5Z;|tvhH7LYZc_7?hiUX3NnYz`p)Z+;&POn3mqv4Ugz-6b*tnq z@}mrSlT+D-Z0mjYapli)r_oFIEP+%mMeZ)h$*_(NM71lUYxf_9X&=~1>*Y?}yydh+ z9teZRSnk!AnjRpXpOb$X{$$FSY@2eps}}Y9#s~$mw7DsNCCtB^n5t;%i+M4(Y-x zC3Tg$CvKD9`7eZ+x@2j}zO9~bA|&w+sy=lN!f8{sDw*@*>>E9J%TXA>qf@w%zj$J` zy)^39J*r(51q`(L)(Rxq!n|U8$RF(^W{PJO`x{POUX>4+k83 zc=Y3&kQ=emAGIMJ$p0M%iAjBYx|YGm*Y+}_AwVnI*&^KV-faN8aQB4KFHMZJMn`Yg zhNjHeHgX)yH+2bHMM;ypQZKv0Bkz8!%g@g$6cPH$A}Igf>tpcWg|Ud)+iGf|3cYi zHR~Zy8*U`y+ay`%kW73;)G3ccUeP5_zpfYwAa{)ExEE;La}ruQ&w7TU%@mEQ_#g}M z169b)uz;74t*^` zk29cbsRFanQuja4kEY>wx>&hL(C8y5R3XBjhtYgv4czf}gHrvMffu8m|Fpx#tDspB zM-SwH1aT`A^2bBRRzVxzD|M?3WCRjhOR5Z5h4gj4CahZ150zE_>tF7b6B08FU^L!A zwTcMcoo5vQxrTbs3_Xxe{G1oPp2R1lhI4QX{b$hWG=0xGn++;OQw9WJ!W1+^Gk3m$F%l?4@8bU_B9BJ5BA#b-@i(I8 zIj#yHBtzY)ZX{uKoG|`Wsbm9?*}6xb8a@q5qPMjKi{S&6&$bk2I_C?XVG@&XCyGRg zQe?xNK2(9z(MZFE8_O~C*0Mhe%Mx=uYokgUw;%uU5*J@f`z#Q(*C>EX zT?mvD4eUFFA|Nl*aC86jS`8~?hMLc|7gu9;#3*1O2EetWwvYL!g$xExY^YUPp(CvC zY{dCJZ~AdfnUzo&NajuQAqZ5Cjx6J99B|Ng8rkDIM>S)6gV#l-JRyzx2tOH-BYuW; z%5&-xxJKZBX&mkmbG&jB9g>eLxK9*kJ~l7oN~6u2vJNVtB)Z<{B}G<{MW{w18136P zcpz6-atVnHi}oz@1wW6%njwqdG}t$bEUhAt3ts9F-EB1ai_PlwWDDY<9$>FHs8EG> zU8n~yC5`+u6@Q|-yS{W1`?(8WaPE&{y3E#3_FsQ8{BMk_9DZDQj;=R`^iM08f-5OS zzi1HrXj8Ay+K^JxLz^R6z0Zu6F7hp8U z=rTNX)l=?unOMb5GH3tnJXuq49agf+5kH|if@5M-M(b+!ouU$uiSX~UIuR}sJ?1+d zLko4DEb-zrY6;iWMNPVJtVo&&T6)GD~F|9uiFD2 z7_$78`8oM_N~1luqJJL;{-R?Jm9X_{I{!$7+(L3|#Ij9gpy{`Y{3q+09L;Sd_;;_5 z!*2`(tf)HQjs>qSn+y|5zMpAU<^E}j8{G?)mwE)&>H!$+@UY?MLB2@lH~u2s$bAyT zueRz2jRU*V;2(r!VmRQyVis6M6k{#TZt%OoDmS#0*8^%kU0z^A^C~&}zjM?AmCIs_ z>*4iJuQ;2xyRGTS#s1=1Z)!C)&PIqv_e*4A0mM`Bnj-*~8-Kr?vvQjppt~H%Ch}Fj zw~|b*HUP<`PT_=a(kl6apQktC^p;#NrXFS@;+zOapK)J<|HR<+vM&=&w230uKDG3C zmMQ^bU2Ktnf}%7n^m~r972QWhE(J2p7_BwdH*4+G^ zy>5C&T0y{2-KV?d+L$EQ03_u|Y?xMY<2h$0bNk`hR5xm;QWp(;XU^S?P&ss>Eji%g z=DO3+WQ77Rg5+*A(|g4c)?6l&w+gCT`k5l+5|5G#c&2vr2Wn>~b*E`nKNeyR04)*E3(_+S z8{8&%n~BnQtjON<_lgPP^p*^^;{R^V66nnHVfq=sUk;h-H@n0;Gd3v!@rR{O$rv=!!(eVXNC2U$N+;XsdZ~Axj|Y_7 zo{X~d`F`*P7VRSq+Vttdc!e^t(nVw4dW|}@)vUw|KkwNis99$$VK>hi@F!l#Ow-8s zpX^W9;+4Y+T0Ltjfg!*Q#)}w~j{Kf_oOX(3NIW*8ZfiOZLjLy}Twd>ZnYKSR5+53F zoOVkg}`_Bq5PF1`J>5}&np&G3;*^8@PaMrTSdVlOKYMHc@_~`z}sSJFN zeE1R|@N**}Ad^XnV#b)@BLY|;Osq-)9g7tMtf7tI1FJY?X8!atS#U>GRzrK)#<>6I z^V0hrfkCCD6fxY^cDcCQqlRiW?-L7F%hx6FZzty*jSVaL^ z`0AdS;ah(jqeLZH$@atlIKgq^xyyqQc9c|E-duMJ1~i)U$C~;zKRv*_a!`Y#R`&vf zVX%l5PQ!(nHLg<>A!Zd#O^yR6=5M~w_+tfw2|XmhM?*!|9$D;_GhJiyjtm{0N@j;T zQFw6?ZznG+D!Jm^5(J(8hY`9(gw@m9px}}4^WtYF^Ob3<$g5f}8qP{?Dd>cjU=&mm z+GLgmBut$7=wMft^#$_2$?_9vZhFOeHBNp@v6xYgkt#QFA(@!~hLl;@h^{A=S)5MUW4qM9F`L3qyi ztZie77CjnkAV#t|k+KZ>7g0DzfiXNtY*khwWTmykQ|+>blpX4uh^=-uQVIJ2 zn7A(L@T2AFw+6vNKYTbcZ{i-phnQr}X@TpclLcJ^KBSO*vCTUjm6eqrfgGmlxTZ&}?FGUct=xv#^eT{M9o!V2SZ zZI33zCThp|6zavPdbf4iFuKxVbDf@UAF2asSx__OYd^Zq_&LB3PVDExpTB2H`#jLN$JGQH{I0Xhr)-eE z8Tw|?wUTYuO^f*wGjMma#=;Y#YK)pB(np#kWk5L(EsBzH=el)PO77%q*De-eESpb! z{;0-( zv;!x6Ueb0*Y{0lhdrEJ7?T3s^*{#eB6U5#Rm?Q*}II(6<$#}vkB4}_3UIPvvqTHw3 ztUwu4d8bRixoGk4iiYIgDSo!~aRRw(K%AE<9&YT@)P3H*z{FBU=5ncXM3gL(rifVD zc;u(Wz-coZFI%u*)cGNvhP%eqBMm@1$VlHXC7XSn9@JeR1?KfCq~tt}-fVO)B^SNt ztcS;4#z}|pj}|r;T$7*Uw0Z_*PvkW0$_jsa#E^;FT1c6J?S0_QqI!~xw(XanNAN9& zH4Y0Q5+AgeLNL)8$j6n7C4^n+9OsOizdp} zGrC!)0l2eDox)FrACNfc&zs>=&h~HgvDmMN3?v3w>}N3wC)0=F#ta7vaJEmTRprH=1TiuV`Wgk0EP&CwoASXP*S zye*wO_?cgZl0ew&*!}{G*>JN3OY@m`J-2dZc3LY+h z?L1JLl2J%`Q;lxt4(U2A?S}Udw)R+=RYV=QoIXj+1x_IXpF0b>mq8<1V5Lf%I&fj^ zlT)_?ByUJC=|P;(Gtc)4ymq8ZE=lT`$tBKBkrg|`obLF~Q-2Q3{JeI>20pdnI65=x z+zoQ+Y_m>rUkk(OFnRc0n4SE32n2axlkWWHaT<7iwR*8F>BY@*zFI4`;|Wa{dSKh^ zT(&Gf`VOsvDB>G$G2D3^?$UQMbtYbh(+A||?J?%6A32w#y{m>CTej^@$|WPPz*vqV z$(_a=iOWi(nKE5H$qM+k>o!s~?MT+GD&!WKN+JEeKo30LJOu4Z;?@U47iA^$w3$lE&8Itm9>GbB>1gCv1ZdZmXs|!pp@b7$VhSGCf(c7fdbh+h z4iFmc22p@q{#2a%R-q?v-?DSJ*%@V{%i&9>8$1j-I4vU+@kTXUJ{Df@4ka=me#i9K zC=mLkEXtlVudhDeGfNIac1H&@Ls^Q={c6xW9}i8(Z$Q*MzBVv=bW`4ICGuFoG-&Mq zCN`D-%|_m2q|ZLZ_y&8RfqHfi+;>7CQ|+|Y!m-2mKK)hdgCkZyW~e2SV-HY=BqZKSia>o;{gP`d zQ)W$ISPM4Zl$yko;=22{KQxU^sBa~?W!!40-*OvV@E*;!@Yshf(2!Z6Yk7|9HY=Wi ze_;<;gK)mGdDqyoU@CrrRr_7GRfJ$~yAqj6)<4%}oTvVZ*dOz!$s=QX`~=BQP}&_RjF4~y5ZpBX&d72) zL)O6Ua#7vDOw>Dm71<TyU2mn0 znZ(*RW;y`N=%9uf%cGdO-t&=4W&Sc!1Fzy?@y?HV+Uet<6JjV3HxwJQzaJG)P$TD~ z9%9t#RCk&16Quo$uT1Pu%p=HU2WFU$}uxd;{|S+3X*UJW{mYZJQy z=E(Bf^pa3h7PTJTcAgg@uQ|JB~ z>wY#4;{fjp8Sy#7t6-*LT@fcZ_Hcqrxv^`0mkKcIZW5`K8lN0i6Ar3r#^MJXKbRH# z>I6{1102;wQA;mwrC()2Ve~L3_Y=Oucl?5R(z@!CfU0VuOj>7JV_4S$KT1jVwrPkk z69Z#o6;ovbh7Vmb-Gvpisa7xJZmTKl#}aWaXn&}{{SXiIAI=w==jBLa@p4v@fv(|s zMKDP0)bAQbcn@W2WSH!vl2L(F2K3=;%2G5G(gSM|kl1`~m)UmM$tH@GX3WL38x1m} z`+$X#ToUVn`L%YNF(W7Lh9;D4(9@e5OOn}FJT*|<#rmSVZGqr+N6B4Jfq}h9QUhf~ zbo4EENf!AxvPuM06Orf?>DuNs`0sX!NTiNMhYOZg@hcwr+@l;U1zw&8GF(kSDH&;ro|)6_4k!C4dbZX z)NukG8z?t#IZU}~gi9L(3>Dy6z^K=`WH)4f8(K})kaDopKGKf}D1h(Cid9QsX!6iQ zfhSI)(Qw{{M=jh6d2th!t%A5rgPCIkVfs1;@DCg0 zNM%ds+>aU<2r1B>fNw%Hk!&Dhw#rl)YSZ^5*@LgiN`TWOM}&CB6Qm-zS3ms0MZ>~5 zHSVi>&cNBClQmugW-0kCrBt*G3)Vtlni&o*u$d!8;i?rbQh7;{*MGnQ-Z!9xf#050 z3havK*kBX)g(vF1bCq(SJcjC0kvPCx8+(2#3(qp2vzv&F5yeSw+D-GED7G(jgC-OB zzSI6G{{+YAVaYbGJ+p{81CrQj{&=>M1riN*-^jmmM#dLnf#q`c<;fNIGYMlu%7o?L z@E!&1gVgWDobGO{ATn|57N+jsRsFmr+q;U=RoPJKvxq4w)6(mC7fLY3Dx{h)+h31O%-0mmN|exeCa>@O+ud@DAG0qpC>c^W{Jw` z#~7KH3Mp;Fxms)nBqm-=_~UMZ*$v8*D7ClpAC_kM^n4?>X<3S6DgcKnjX-TS`bqFg zM35{0SDQ#gstS@pDSopEt^u98l}q{BSY-v#j@OZ@#PIot#?gU-S4py>sAoJnYEhiG z{HZTRjuYN4@ehbn+}@Ou*$Z_DQjlDZ{#+|#6nY;mnd1eb_f7%P{W)poVex> z%A0O&Qno)S7MC`k5&4J@_FIhXR=Gp{Y~kO0lkS51SO7L_UhcXp?w2{}^CtmSi1+55 zcy*&Q~Y`kSI z^Djx>n6$%J`xXk2&@fMySedvoG@n^UfO2$CLeY5Zl8PMfgd=5=|H9a#R0Jod*j3qs zp2RBij%u901oz7g0SvL=1s`Rjz#5t2+V?ZZT7b>nX&MX1%~R9NPCDIOn8JIx=&por z-&y+YHn@VRVg=CJ=5)YKp0&-~v zFG&L6MAgko3qSRFbh=X%5T#)h^4TgTM)XgrY)td&QRz_f1~-WLQB(gN^w{k?FI*=f zq6#(RBL<3{TPUc$L{2CHzmDE$Kfnl|o2QHn*Qn}WQCO?goAOp|I$TlgiOyotvSIb- zSwWdO@XQ<5StB5mmYjl~DwlQUWC%Rdx1P9sNE0-&z`V=ja?Vii>L4IafhpPu{6{&p zqO4O|#6p7)+p@jI%?RSpWHFbxO;LNJ3ZQ*u5+`V+3>Q0`qQN9`kQzRKeH+=e>QI!zO-Db!UboBl+Cs>%37ketGpuOCo@P@THezEU5FDQ4?8_Rr zzmyWDqNt98wYdsdMfLi%$A{F`bNX&F+Y`S^TBA5J4VO@Ng-ErQ zkpdoQ@i|B^0L9!asj7z^xy7~|L-KbNK_-F|^+x_hp_5FFd9*mGn#Jx4AS2(ANrX=mH6qOa``QJ>QuJOdgf@s3xIpIS%5paOY;O?QvgiQw>Y4E5^a5SsgxUI=VE_{JML?`Dz& z!B;Bmuq02lj+rP6;8W6}MvtJ~HNJrcFVCbD_ya8V!C?Hz*`8K$UnWB%p;r%9HDoTn zhpOQx3Z8yE%%$b8(SxXas13$#1JXN}*a5--Dt+coTnXNxp`5KflEDToULJ1ra`YjP zpDlwW?GY=an+H5kOSCcAh{hl8o4EPfAUtEwZABi_CIjT`beGz!o9(D10I82Vi=kTm z&dM@|?QyOSDoSXbQ&i+{QKN8gk3tu;6wp!B#3Vn)r5+u{&rj0ls4? z_AB^H=_Y)D+IH$Q~EF}+d-5y#9#SBm!3{ECp+NdNiY8!(G zo*;lLY^4s{Su+B-dZg!nA6M`W}>I%T8!< z&OqQPJ``e;5HglDwr-c&J82XaTvPBPreqA^%1t+{q_PMrW)-DX`4x%!06YvlC2;^8 zDq+q(v)8f$mcMLyUh1q;uoep_vjz{e;G46EkC%h1M z*BqL5T!8H1HIIDvXu8_taCKx~y4p@TLWUiA>8;|pO)bB~YOkQ$Cjwm?%O}USH77h& zB&4B4>(*L53ule+!UTjuP|sf<&0_t5y6lF%X;O=ak0v2@#*xX{`j1lfHB2vyx0XKN zbDnAT;gK!`LMaiyhdb3*{6$vw-l9kaHIK9{rjVv*a2A*s)4vUX^^cV+p zo~?8TgdLHWS3)V?dkBN6r=b(sN9e=&*aYp_so3)k`2fi!KxXWpA4KZ+ItBp zO6x?AS?WV5>iV-Ut`kM{OU(UF+uftgN(MOA9HOJk4;oiiYB-k*R-KD_W7X}4(1s-? z!KyyBv;1z8F#zan(2ztt9d>2}&k+V38Xaaiiw6`-%o=t?O}4^2xQ1c0?=Z!Gf%}71 zg;+bS?tYa>^pwU)!;927jezIn?lFY#sRAb%Y;L`vV#GM!)gM!RLx_phf^C{E@FEw( z{;3$YO~lhLYl-f_gjZKj(KzzSo+s!~ zRRRB>e!fdhZ#I-Rrrs7t1bd=X%^~;MXd-?7u@2^;tYjiapzvGqqKEcOAkn^2TM>wC zGu7ud;}@^a*k!z~!OdO^rtbB0{NpxP7yd$wB+-2xhDozVznTd#{y-5k-w4O z2uRLKz{~qc!HE}Ya33Q($Z_{0g=0x$A*w0sg%M}!G|=Z4 zbb?1L$)Z8wv6p2#Y>3!7Vv}s- zCWf2fv-0mGz(A$RbjvLXgb73yy_NG?+igS`&FWxWh8wA3e1o-HC5%+N@b(bWw8}d zavEdBp^OD13?%acdkUGkK-*Hryi)=bcNmsRsfh9}N(C@-aUMq84P zygF8A?bY}E9@K&xWt8iWR-krt`BpxP>JjO=^!dmH9X@;^JYpBmN`5ZmWjN6CURaNA za(GFt$W1{=0pu{-D#-pAIoX#skB=04eXjD^>KCoqRBwHZxofH(i9pUYWmA)fkc7Ij zqrPLk?ZX~#vRsnGscFy@S_ku2ue0>sG<-zX#}$H`{}y#M7l(UB%roO zB(l`al4~-Vip34+4%hL~qmc$~`u`xstZhqhQFjL&e&W*l{Iq{TOVaG&+1tR7;NW2k zWidRoWna<0i!$i)J7<2hsoiQ*CP%$OMwv&G8oK+5E_+$Kt*H9`f$fy`8;YdCsG9cj z+d&$fJI)6Z5pY4qiR~p3t@%X&Vd6<<3<3(-AD|<>*|YI2|M&OD;h~fF7-*8_FQxYD_E= zh-x!%vUNu?qJtCBl`nZ4s-@DWdeJ{{29lN5is zw_10_+45f73C#tx8{P6)u&Bgk=<>s2U@zeA_*CcGyPX9oct6S7BGUV~u)$Rdzg@Z| zzfKS3MmME(%d7o2wK-izepEQjrQ1{*b@Rfd4={p0fW8%6l1iEm`);~%un4!AbAwV`Ft%0ON>9eOd{e}hSi zJv_6&1Hiu9_*-^!v6Wax-dgi}`Dj9tTmEES9#mu(6ro40NNhP4QFe0!RD+0SCJJ8_ zh+v-@ep2b$%@v&H1ST&AZoJVN7N6>B`*v@Zy`on7XPa(w>|uj=)!={mot}~RL3kb% zFAnU|`S4~XDJ%vs*4|6TGB0x2?f`WJA%a7$J7ZyOAyz`S0S>%g8a#9u1q&r=jR`N2 zYibn}NZIv$HK^(~ZGILPhy{;R&&SXx96e_?zcp-HR@fRZ|o##10=pXP#C4s#nDbSn3^k8e=*H|QBVblPJlK^%N(L zJy|wQ^-Mtu1aJZp6I#soI1Q~|BWR+ria%pvULyBFD9#{4)lzNqkaM;FT?CUrDN})P z)gwlCyPau?Jp(XCtCUu(*84nP@p$)OCl}`Vz_~oOcWkNg>l(Q12K8fQ0B!$*=dVIrujWkm@)7X@mNp%&*cJ90vj@BY8g#6TjtIAOmOVUffH+}8(v`tEX zYkrzKMqXh}zPW5Sj*R~(tZ079T*R()5Aw#YoUlyO?6Nugw|!lb^-i72gSZ7V*>l5! z-e;EG+Vf_XS@*Ary)5aD4xhfTqP3!-!O}DMnZj9L-M_xY07n`q3Tx0^w4WoB>Y7Jp zJ>abUscpXbqQ_+V$Hoaw*mriVmJe#z6{=;uY#AKEPaZ}}P71(DoP)fg;laHLk#pmu zUBPqb;2l#ir+u?ne{ncC11Sje$UY_1t@ZgnestAuM{uJr$kgjm$nH0}YGaWLzc8l+ zO~sXNRx4pRNNBd19r|1e3nXAu_O*@N#8#}6oIl~JJF49X8szEc3-Y2#=gEVA+&*@; zvew)hgnVOFM(sJT3O(TM0oU+)sinKP^9$4J5sDpp?kv&Z&Zx?!t?J}d$3b4M%tAs> zXo8Kwa%Pk{Vo9p1*J4 zJa$tZbD;^qAR7#-t}uNx!Va@vDDml~Fw$vtyPx9{)7p z(l#u`KTfPh2>{4`?UQo5-Z@P07p84?kuw?z9y7z3YiW3|K;Ir^ye(Hy4&TnXeC)Q7-k!w6PorM z1{lToPNj2ufVE4a6P>W`>B@y`pANJdCO|+K&g47x9d6a`mTHq1ECpM>gXuy_=@&V_VSnkP^0x1eyE{Eo$piXUa#kTkYMZiA z9s)fx{MPSKZ#WO2zZU?F<=1Z4=ZE48yEzLm*RU5q+*%>vgfKtc(4ln_q^|Dy@9o&{ zOAsG+#-@Lo>gePF(=PI^AYg@usy~LIVYNl`+@3ZfIzow)`<;-d(qzPSQpY#4ysqws zb4AY;zf)QIy2n_8H;CMfVom9@<}fS(djsq77DSBPOlY$H)X|t3^hbm#BC;LD7gKv` zvQ2QUzZ3f>?!3!CTwD33YPFRYS;^nr)rX4rt=C4w)MH~3@Kz41fYv*;%!obIIx2Bv z>qy*<0VA`2gg!I7Hc~rH19RWwiNZjUKnHkyfLc||qF=V8*_QLKos0%D&zryqtvcye zMuax65FUvXRq6FTHbQSZ&E9a7P@{jtpcLpCSb$a%;3}Fkp*Z}^aamZ`T+v@WE`gt| zhY$GHOv!F?@iFx&+SatiwkFk(TkHAgQv_WuN@4&ghEZYAV@1sM>~fFFQQ72ZmeqA9 z(DX~kc?>IC0}4)6(xf{HgNl#&$%XDu!Ox!c$G3Kxkb~L zsUp&%OKFn837NS7egd4n1Z}4N3{#3Rl>jiK$?DLEufY-=w{+GFK>+hJ`6Xe*!&|K^ zow6n>GBK|P%d7d6-?;lJ*QIf)=guzs@1R$92k;k-d4kT4$x8CM!+|L25qD9>Eym~K_5k~eDpT@_kl%xA$Q@Zy;1%}7%IIQHytBvj}Dt1Ph z6+*TIn9BSSF?``>G|p_8FH`7_6m|Q}<(_mk1v{ntSJ@ER^D5mZ!Kd1`a?;A2nF`mJ z(sS>~=GYsnSlgve2hVj+r8vE!Q=mge1oW(I#Rv;RcI7Of&P*;Y{`{HHz<0fK@tvki zwVWDssK!-y*l!iSWg?jhob|~?X1G=p%iEx(#MQ~=WPv3$d|}XIJ144-sNsnB3Kvhr z&Ea+}NunHGcD?%K|5K2A9+))y<`q|4njw$WOC6Z<_x=|+Hcbw0^vI$u?oV|vvf6?~ zof;;_&8CheVf(rW!*|V}NYr3RJikhDF}h&_CCW|QSua>~rHGMj#pMfg?PE5DO*YZu z{LRLtrZPBlZEKPZVV5bX;D%~GW2}8H)t+3o7UFCCMnFPF0dW9VRgSe+f`Aw>q8}(9 z(;VFFsnndX4E4&x3bU^y2kn4mnQ>2@!IUWcrRwBBJLRBNoeXK8TEnT*J-`8pmk`hE zl7hP80Z*2GqD0(-L-#d(%2rPD;37Vm2 zK@129>WpmlFdmEb&c;In@$#h9Yny5%@zKK+lFQpUf#2$BEJNuO`Q@|vs*JR?E^&(6 zVBK(C%HF0~avJ4~VO-2gO5=+_dN=M!l#drQd>`+OMQ&@c#Ny4q#&Deu#utY)THcR? zDF+&8V>p)s1~qQ~Js6RWNR6V6fcpe>&>~;W){_Y%-0m*yp{of$U=LNR$38l!(Eb*> z=Sl+VI@5+O{Z=3Njf^un`uxKfR2T5hhA<($yWNO?ju#gz$;(VPDtI3N!~$ z^@^wzBB9=P`a$m-mrI&0_GgUeEmBX=CZ0^nw97^LHGmt^%(5b_y}kcVU{)Vj>o=M0 zpHG&(iQ354FQau9$E7YH#-wWM`}uGF<%YsmEG4i5XVi4el(P8&2Hmllou?bH^AQct zy+~_9K0AQ&cLQIR%&O5O1YcLar$S9@!G{e|_VO_8z?UvfVi-Uu3Wv;?DszZeaK}V( z>kk*FdyB~~76awBl>dq$uqLp+ak|K>0p8RZDYqHz6~H-#y7dqzW5|(S0Id0vu`j$f zkSWr;QdTF}Yn0IoU-?fo%}43)R9(P`0E$?GQq1I66g};^)~MbdPo(jPS0KA}DDD}d zmB*cP569zH87@N@{3$RNN{7PHv`J#QuKnw8K8)RHmjR>+BqBiM*cY>?XZH z(?0%xDU<}`)B6<3lMx1axd4`;93f(iB?uN<@dTgt1E{r?2+%Rg`?PeP*ILZX1%iO2 z$1duEbS%>TfeCFhjkyE*w9DCULlG|j=8#{LW+2}MI2 z!d3ub1hY1V@g#82Ll&-U-HDYcv(UW&xH(u`l1kJq=dJ{ zC+yD9Giz#cg`Lc2;fuERM0$111b5}>j+p{;$(%x$D^wjSC6nQo+C{vSmD0Dl6{r=y zzJ?93%l=F>(1VCBU*VOsh}q}~#xvhGtJ`y;#I%#cbLSDNKew`%8#HNQw{VpT_i2mS zCl$mL0!BiGYpia1w}{$CE)rjSneoCnJ$se=wz&M65uSJMoq5Wh5{QIN^n(glrP8LQ z54Llsyn;5Y_&Ob`p0&_7tbEJ2@#3^t^W-O|BjkRWMRz`?yQsSYGR0iBosJzxT4e0L2!P> ziUmGYbQ#Bek!R4i3ocfgZA7-!CRMy;Z4pGx@LEY|Te&5qflgFpfzN)Z)N@#)HpZNU z0I|W|ze7-J#sVL9z~n~Q&Qs`Ot+t1Dvj^4D#)9r*#*N))jNOT4u<1;qMQs17B`T+C zo*Ycrcs!nJ!gcRE$*g@pwf~5^%``%HfYjP~k_(YNZ| zj^myGJrsR>Tz24!2qWXizB!~l8i-gCH1ZH0;NPSGrg7luK);MH5HdX!t3;2+?C(|I zpOv8CIN648P4G6%GXVhc;#zAP6Hg|-I`YC6dk3oseQr@91F+Em1_h`)O$3?XT(tT9 z&0J2S+RpXaH-n{@Qc5@*yw~J0QQ~5x*Bg^I$j=(+EbOoT9l9o)CNIfu`=wS+K51*k z^$j`*GfFFPcU?>p^6sT;sEYLW~>VNz%sXXU|%c)Z>SkH z^{uU=p>Ex%DH4kR4p0O%PtWY;r6y_w@MP}BxV~GQ)cdTerN~UJtj`T6FrI-`7p9!c z7t1?74^VWG02zP=}&Ma26|HpXO+V7%K89zU+5#FD}l{44M}B@Lwmx zOSAwPTg1SD^R`qqj%o^mR6Gx4rDECa8BD5BXKGiZv1@@^N!<%1g+0rR+UG~V(%p5S z{P!FCSse%|*96AT2Xd?P=c4_Y$r;fwSmYYW@H9FC8BT)^c19*5VZ!9Bf>Uvqz9kHd zmiuxHnbibF3$ZUYq8&!*6!T)6EC#ojbKe*6fvMUGa~bUWY)%F$6+vV0&o%pjI3!HPn^~LRb)g&Ad z_>Ax>>N_tGsnz-$jyLrE%QUNT5OAIO22?o;C6wH_Xqj`peu5rsC<0`RBFeTbj`2ln zn&5%G+u`8#Ysb|tm2mfdP@cam;*r`M{4T3N`ZRzKzjr$qU@{K(Dv%cX+eS4wjAURjaHcYsIPEC9LQY848!Hqm*O2~-M#pFc)Cf`B(u(x(awR?df zar8P852PI_FKtEq_x;p|Ep>T3Ei!d1#W&Wqf-hg!JhCx1nM*6}E-wDpGs^3y-z>0E z6^4Ftj|1U@M({3kM=3KJ`~|z4b&EZTvMynLT@P_=L4ia$xe0!onq~<|(I$PPolei{ zDEflI!W!?G|D8-x7TcAx0Rx}`*$$KE@n)bui4}xYX5<5Eo& zvLR#&-q+5*;rjh+$>o4NEE|gL4jC&qhi4ixPFR5a614-er%%Lx3a_?1U9;OK`1Ex1 zKfOhVQ6~sWvDFa4QLJwHUHs`uvLt9QsKk1a<{};9g+T^7*|xv&twI+5I~jkeZ#-xFbWpQJWUv#mIpnkE@S zg;)Q^=mZM(y6@ps%>r6cAcu{1INP1=a!m{T&4_izP`J$c_K+>=+e)?iQUv%UEwT@P zjPppGkACLb`)aHuAmF*rb!-O$N?dTvGf)!AO)ukEQM!oO`^z<@jrZ|$8@N>=B;Tl^ z+afNL=6%L=hEPxj=0lq0G%etf=jd*jz%t+*`4YHQE}}BI|7u+_q^(Og&A#8?RW_W@ zUP4a4rIaOm(@da^aheswDIkI-Ur+|0`gikPf?t&6bz@b%3hp$WWWmdAIp?XciJBV zyjcez2rKfoC2TYunSrb7y?E!Odrh%22mz?!aPE!RjBN@jHz)xz{qIrO`o~+3gsrx( zxbD`K*bIZKYrt1Wc$9E79VLzm+^oxefFlTA zS-LE_A5hC;H;Zo$j8w#;q28BeSZXOT)nNoLH+f!0EC&7TxvC|dV{JEYLnw0O6{w7T4>$o9p(phiI?A z(SmG({#CGzBw_lJYg1g-@yQAW&!Q@A;mjM>`0l2d++&dSBjWHbSU|;>j1!c0yLVde zXEOBb!>0(SHE6cXBY`xs<*Awx0VfzaRivRnw&rzhF$j^ZuzA2#1|JM z@JnlzSP!TNjhOSagwcUBsn!^1yjX*fWC5@)8PxSON`5GwQuw2FW>s|`1)iQROI}1ksOfz@ih6mqhuAPN65ht1lm?X3W8qg&JCxw@ z4<)>ApM5BSGcilIS=lupB61}Jb^-u_f*?h9o^XXGOBsnvn1CL*E08 zjNeZlF@SecomAS5tFjw{JlG(6B9{^_CiL`nUli3ZODV8dA0)dUHanTTN!B1V8*Ra^ zpTRs#a4z(aWCJmB(A=V?ewE-J8-F0~k>MUn{`M<=RQG+TDjEZH7vkF}G@>t~= za(-XLntqY{q@Mv7eb$WNmDJa$cpBblH0RRKg9QAL2;I>`vu3wZ%OYRKs)t+pPCd`?99w3o z2iMI) z&i1;RcHF}Zq1Lm}hl}E^p`cQb!PV69bowCa6*QtV>Y-?}Key2DvF!AuEW14l zhq*+r$pzfR4y<;Bj^IxMmGZY$l1Z&tc`;tQqGX>(+yf^g&u)$d@cx$j5OaM1H3f`) zezPm1pB*1mJ+C?1f`vLD_vmF)-v~Vrj~tKPX34U0W!@~&kK5bBwU;)o6qy@%4>+&z zXMCIb!QRQ}=kW=nD&W?gHfH_&LV@}ji6Wz1TN|#lEO;@ssqlTji-x++Q?@;h#ly16 zC65ykC*G#B-!T)WR-vq*y(|EaQ0p_^2(@&MaFNHfb{uC{2g}<$6akm>^>8Sb9-Gw$ zNPy+U(+*<5{5bN#ITI@Ffg;kOsM#Gl!QuiTj-rbfdPNza(yTZ_svlW~E|f8aGb zZ&iwRz)c55e)x=bkfS2TRygxA8-p0aPxe&yooVP3N$o8=M>OZZWi%=Bu{Gvgy5i7& z68brAi`^+%^@h121`ty~3N_o^a^<`BGD@c)DOjNy*jb#Q+y z*(qJnkEa@w3h2#yc4NJ=wtZ#kYge!~NTV-`=!MoMtq>h!;4$y{lfiiua1XGt82<}Q z)k7rnL&RPv<$HBW?As>M(rw7%$~aqUp?MG?29s=z<+axH7|0M1vPEja6EELPoUiw$ z?^&(Rj9C`>FnC}Ds~p+o^+ztMiK!I_f!a&@FeXN#=I}$v0adqML~1`G@V8v0SGN$f z;LycskPi26IqNKDr+ZIrTkX{acl7oQ2P~b;^xJQC_26&MqK#K-j{2yLSz;PLa zB(-*|-V?L%BNf|2Mka3bTVVJdUn1*A2$^4>BG;8_;2A*(REg+Yt-(zGtsTo6_bKit zxQb;}Q=%QIGK!NXHqvN%%%+0cGVMRN?sy=Pa+1wXupPwe^MS&uAwR!~&(}0@mxQ?u zvzl+imry-b(sm=4mIlPHN*#C=to&>d68e(zFOmeUFWw>?~cg zfoO26Wp>uhpN4IkExTAh2gN2ARuz;{spE|k)v*k0;e+qxW{$$93y?=deyF#2)omZk zW|V$;fnK#cC&0;5PflQ8a7FpaL2;v0J+Fv5nC@7}OHjOuE?whJGptFZI z!X()A*|Y@I5&17#h0|PgQMPDod+glN=%BI&BWEfGlSf0Y&Om+K$DUzPYyTgyM4y_|Jp7a z%>mv8UN72Wc&{OAHci&-#svuv#S@bhc1f-!Cav#xvJHBlU*?ws9F5$gdUd$y!qn1&}7A*)P$Q@hbl&(`njEChvdCv-EjaCG{s=kDw`?{*6ckwNgtV|L)__9pJp2FVe z_aA{(PYdqqM({Jq8^~gP*dHawa^~iG)Ocx2X zrj0G=z^B(kJzYj$&`ZX(I3_V8WQ@fuv{A01Vf`N@hUm<(87mx?NFFm)xt$5_=96zm`mCoK-GK? znrG^eFBgqWys=boqyC0aPx+J;#jM*G`%Fy4EPb4eiFFOFF_@rz=-$1nki*8^!J@2N zqrV_3bU4*noj37$RJuSQ$&FTv)cSEe}RS<*v0bG*IM1DauO;U1`lseEAmAW-W&b$;av3{&EDu_p^oE#7=DTY&VWP z2BjF2VB&~d#4HY8c-`rl#JzGRt4h5^dP1V`uvyyMp;Cd7t`PGuDm8-UTK?MjBH^>| zXZDQAeOO0(L4RPZLdR@(3xuIB&mvy9(FFAEKp=0!e-UP@k0CNhi)|5bkpc^qpTE2sYqJ4p2(C0f?%Oj-EE+sAEEg&v+5*6TR#A zjPlZ{_!dnX=Nop2Z&sxGAH7NycK4c626im;hTQGx5sP7UYU@{S1zE*Az`H!<3Urc6Eq{WI{lf2fQ7xWrx%B4vvpbLFMmtgl7s|j zEWwoX>wnC2js5v7eNKgkwvnN#`Q}5R(B0twMpPF?=y=h+{A5$~ChxQKe1lLj$yH-x zWmb6CmSh_+7ebz|2Vc?(qLD>Km9w&6#ZIC89~**%wYj`@1D~_m$DIk+BPlD${TIJn zkR^VIXj6gZ-fDXu=Fs0a76BOhr|Ek(#W&lZWb(ycOat*PqIQ>5LgPvQ4oSFl6TqwQ>N_i0U(R_<)$pr!W5H+a$ z&nQnlA1TA15;eKnGA<69C#u+X z!4&{l3!*fHQq97%ru3WvLQj{jL+REJr-5- z9v-(mG({qMcBp7{iKB%6QN_{Ip0U#$obNXq?N7;UhH7{P96Fh=uUIkIUa&3csukcdwuy}F z)JPVF^C-`V1wiScw_fZH3@!Lg^EUb$ZyqqSZ!G8CcWm$ecn!jway^my9Zv`Ku>=3R z!h3jwU}f$v?v`m4aSybh1gria$li&rY`|6?ag=#W&wl?Z=lfK;;Xt;y#m4%hf_9+R ziS&IJT9@7)3*ScqQRAHTiQo6L+~{w;^-0waH&01UHFMnn)&HI%Ev;{ZoDBE|C?wk) z>rz~0H3-M=)%tqFOkBSo{=VE8=7V}k=_U)=M> zgMGu{@N1n+klE~muILzxmlN3n|DNP7T-{wz!)9Njls5lEtSD(RvM}uMyTwHYjNA0# zV?AvjwJ6foJ_{kEe5z5m1^_g#umn8RgkoezupchRP zBebvErW++Ce2Vi{|L7@AW$jaa|ErRS>t0gwG6|cIVP!6+|1tik>hEfw@VE=-N%7c_ zQb8Oi_$dfBb|FoFKSH1+-u~l}DBo5N3;`pXxTAS8{5gpmBUG;HlhD^6dH5H5i^_t^aQ!SSZ zYSRe2rTR-1s87>t!0T{hn>(N>6fz%{k^v37{KLfb8^J>>w@ucQR|Bs^aPfxsu7A4` zZn3(`bqj!G^cPHfVJKtfI$DcBaV}7o|7+5?0jUUp2qIf)CQ+eruJZ@Ik*yO+N|>(e z_A#1@ZK7|j_+=K(q`dJ(!iQzSIg&U&Rm^e947!c#nvUEM+Old%(^BaJZoWvebkn;*0_V}+WtL=3oMBn z!Rg3X8c|_ zfh1`&abVm@$)3J+m+v@62u~m6-OrBGp=QvDEyK4 z%uv-Q+cxCL!zB*WwAVfXkN~o#>O-AAJBYW;8o&_=C(#+;hci0v6l|nNl@o8<5pl-7 zfBM`k-b@n3%D!K`Hrw+2?**ETiQz0urb!s0jz8hQn&td~c@DSkDNCsDhfiGZB@rr& z(k^H*=4DIOjz*@Gj+Uzd=ahQSC_%9`EPJ9HW-$%fsJwUK!eUl3 z#x6{s3}oj*Ayt0=oN3%@)mKvLSWU0gAqI>D`{sS@GF%TORG&!gkpJ+~Rlpi%u| zNgK7F(K$2y6lAg5z+oNIMnV$#G^R}GkNfNQonl3f@feS~`kGqUpCCn!eS0Xwbgw8_ ze!r(rd}ob=3ix4~X@9|xI==eez!XSzpSx@-rrtz#csI@*6VUqRojVTQXw{)+tM1xFGsXBJao&)o)xMCrCjF;~*IExlnR>8M9U^4CxawVToS;bAk z9Q!+47wXI8-CJNwIn6RRNapfO`OtZp``85>P>p1>jCY*)+dzR$exrMN2{jQ8u^8g0 zrQNn_Ff;vTl3jAby9U0kj%>f~#C(YtY`o;8FN<&Zt3<($BKiJ=J%s}Fk0}zYT5)i# z%DzFm8+C6ew=q&dQjq9y<8VQ94Lp#3$b&NV5+&nwyuy#YGiH@LdfsImSC#u2zgHdE zbOn4c=s+7{2Rq?E?sJ|OJLV2w^c0NP%3fzQxqgZ%^ut48ZKnVtJ>nPWT~h-6=5VAq z9t^y3Q!~}N6EZ*{cuv8lFS_xFL%Y5J%AWW(dUT}!y z*dCLO!WNV(HpS?_BF>Qt_gzabQWoIe39A*EkWr^mB7(LgsMBE&kS`~EQgt#L*mMD4 z@Htk9h+_31t9fWuBFEv(!$Ewbc%d*>)E8+rm(& z8D}ZNE28Rtxh5wd+IpY#;HoD5X$Bvjb`T=kG(fT^$;vfn0#a{cdmq`avZ!;E!>wyr z8)E>vE@rd%keN2ppmIEUd}c$MQtDT89v*_=ZwT2K?hBtbh)Aww6K`V`(aXq&dya>k z()c1>{pPk@(l%A5_A{SI+WAo-&dj{=6O3M6wvL|Zpa?H(AhQ25{GM5f>&EC=bTbLn zpkWDhizg0tKhcJh+78kySHApJN7$=C{2X6(L*$lRk#aZ4towBdsl@ZVVYtcfxJ&vO zDi2DRIy$%rdq^aL5s&Q#I|^DHowcCxIsmr*EMa=H-Ah2zWU!T-JGTGYp0@6hEnW~J zz>PfA%p@s%S_^sZd8AeL6-Pm;Qc zIy!j+3T4|YdWO`flA#6Ws_X-~+o>^rf{vD?j@Lxs*xY%qP9=YLTb zqmmh3nen*1omz^f8h4=wl8yNsmGb4qoGO*^Y#w<3mZ48US4Ua$jKsM@3)ejf=wd2--FA^}nX8Yu)G@-V7wqQU4{Z^F zcS!R}ZQ1Na;foyjD|dTs2rQ4+M2bins?&{u??p{CwS)mNPaF7zORpmd5FT8{H1_Ek zg_3zr`9u4TMHuqugfj@tZ-l6~>)*cKE6KS~SwFN`8SlrCru* zs`}bt9=bwt!*veWHIsl5{->|&pn=$0=v07Tuo=d4lZj}3y){-u%XYrOCO9Q`Mr-sI zbby_o`Y4xJ_viP!+WPe3Lb}#eY6o7CHl!E8ciS!63#5_)md~z#(Ge+MP1Is*MDmlh<9O7-RBdr?VkU@4(0rbsW7`-*o9~1sK!@S{7CDOz^3L)oL$(Zt zRTAWNRK=tU?_7i*QNMp_BzA<-;XEuV2LgsXuo@8&IniNJh~Geq3oj9D4yWEi>e~a- z-5==r-mzZJ16q(vA@96Q0DzZKH2{CRm7AQbJSpHK?-+VHZUxf{PM>9)<4dQh!?J$m zH&PFsM$n!Nw?0}yhSD11G}*OV_&<+g8J^fHy7_^1L7IFy`|*^ge*g!?NgGI3uU zP=X5jJ9)ep#m?GEcaS=knrg*N2k7PMAJPiu)eNSg!?Q&qp#N;s1$ok{rIL~1&r+=& zSss(z(mu%Y4o0X=O^J3l4GbmW=@{>iZ9qBXfY}JExcR*>+|2~pHZgdLV9&hjv2kr6 zcgo+hg+9fln8me;Qi6IN%)eeI%7@+)WzLU&6;>aF19d)j7vIGE@jP}3?3ONXJ9p$z z!9Y|CHD5?rm`b2&Q#v8y!?9fdc3iSYSbAk%@wmqzfiqYw4g;yQ}0 zwt~{c>sG~fe)GitM;6a7NbMqqGBC}_Id+SG1HdcvPNaM7<$V7)OCvM|Mq%GUo=+8t|Kbb~a&6%CcDJRK4dTD4xz7M#rNs#>rouphOB?zbY&^;GD1ym$vH0L+|G7{)C-c(L=#KFsSD3(vR9VWg3JCf zXstmun16z!S(|gp+ph!}MtLq@VEW`nz#NO7^_^|i>LqP)mTfmU;RKwDh=?!pvzVsj!Avo}m63MA z{FIy3&n|TqM$YzRyDaY!S})}zoBiyWo@>CdF&o{(!2th10Kj?ZPGFNTL@_$jI3cl@Vxv?(x>;fF%M_3`lf3rdRMyFHB92w=swM8e3F6+ZEEtzZq!ii z9K;kn$CGYUw9gVc^&ZHj{m2lEo6kkGe;nZ+M!?28CT+abQL@+VQaA^=qrRK7IbrF;tk{#f{zkJA^g)QA*I3YJHyfayW3Tc~yV^&&32{d@7IX+H z@`RurOY!tuN^6!{1{OvCL0OwAHc0+L5-(esd&E`u>Rx^IUW8ClLsu0CwZ)o$w9mh1 z*t60FXZIUwT(Qjd8C7j`P6366r}83qk)nt;>b{i?@xM%UkXi&`F3vZ}&eSsxQjq9| zx%d5k6o*}>^8zh(VysSF_KHzo^q=2Ig#n3K1#e)NP;+{o7#4LhFc zv0ft$;!Y27VRhpv053& z?eWPXw?@M~~ zlWKjZ&_S5uXBj-l%!#hWm4eV$2@*MU*!&rLwnU9xtuK*T-6{KaVrp6CmyYD zufKN_bb!iP4kJZZ%ZW>~g6bK%!=^R#!AdoPrU?kSSJn{KIv+w=uZ3HqBT!OCUG0KnRML}L?!G99bY!0KfUl`SdzST*2d-za z_abn0b*A#na|_Am&)M00FMw_?1X6HJyQ^UwjyxME-TFK47>}MNBXo*UcVK@!Q^|N4 zTx&{QF8pAU7UohCIm*i91GA?;VUpH>hC-D(kB#y?Av#kJxGK$z3Bq}zMdYy_uU!8a z`<}UZa`WL)52Y5ArmJk}&qE*rBF)(-m9O3^srWEe~>D`aSH} zH+Ary7tEi|f9ykbW8A1y;VkU<{MJK26}2?z4PN2s%Cy>_$VI|nHd{e9BpO@{@!aBc z0Bu7mUS(%i>wcu-cRUxU6%-PXbP+?xscykYT`C!Q)JdXLdC>k#x+D6tE)s86d;+x% zqFK}MeP{)2=|=-J1t${~qQ=kQWQPrMN4=E%P}-!trWcn&9ar_Jqw#{70sQB*I;hh; zzcwLfUO1f|dsWo4z{M%RRWN3#=5Tfo9~i(q25xtgU>v3(s9(SX1nk)W5l&u4jkuDh zl{#Mbtp1q07B0;kIVWvQ`;cgRm+ef*Q}=#}k?0o*6)LWnd9|?ShPUxT1{hl7RKoA#7Q8 ztmSRECdpq8)K8_GUumPLxc~whRJG0@KxmvQT?q7I&3E-h_aPyNXno|-BZ`Np-fcr^ z#L1oB3#L3VIzS)^n)26O=&CfIlEb5v>acZJ6ybx8BgXVBJe{Sa`EN(M54Wf^!M|}3 zfVz6?FZ_?co}@7euRqKB0=TzS;%+YjO4k2UINtPOTu$s%iNXKWI1g_fxV2nRZr?0p z_NMHv+o87#^!7=&T-`a@T#28;4eMg~rf+$})tH>L)}RkStJ#{CMVMXjjcAqW2Lq7& z2xVEqAb)&p#Hylah0NpmE4N zINQmxSY^`Z^~Q6Pi!VN$ys67P$o3CxcEKY14h6k;@bAb=K=@kcdR1#rSTlXWm-3$3 z5|36y-qMWr@mHB>Vg=Zl2rm=4G8vLptQ_Iae3BQ`*^05+QHD{&2eN)XJ=!mdXI8O= z0$olqi!#1?{kl4Q$6u&EX+0<)zwCU&m-sb;Yexqs+1-~2W792&XXagw$IKa5A#*{+ z%7Vmmm(siPk_n3uFyJLcWQV~y`j{k$ccSLYwC0l)d|Qi>OOF{=i)^SSG`mbEKbltD z5l%Iedr_7omGr3Z`Pm0<@|fUB8%@xB-JVVg-f(e~|I<4nB>)zH`UhBjJ-Hd?(z;dBbHl62-4Lacufmw4L8(t`S+1Pg8K<-N5n;1% zt+y^EL;4NFnF*$o4&1BngB^xH4<)D9)CTx+?+}gNHS4oMZcrEY8@^ZE$#_ zZryLXlAt4!C*1)?x2;9LBLOKlXtIxn$VecL{;V~OWJCKWTR9N)MISKzYDj$D^@JK3SedVbJI#9&s92}{ZhjFtnAekZQ|)2|I6S%XBm zlf|>kJO$BaT_I!ebWAIff+YyVo(CqTKK;}n zZ8NA&;VMEg{dc!-4i;ZB{K6+$Qiq4O16Vc zA+x4>()LfI{p*2i9VlQ2wX)iQJ$hB>nyEG`1^mF#JYEyHLeHT>OZ+m7G)HeZe5e>3 zZv^b-s=~^-;DUhd>zz^mlK6r_hH(P(wRX2dv(g>`$Wl}VTM@t%RC;iW4nFf|=2GPN z(ZT0bu?#&y2+(csYFTxJsyAq-NTg~ah3hwC#`D~aA2B3wXVR()f(U-|Celz%0xw86 zO?>6vj_?&fmY)r;QQevt)KzyhGUhkQuo06J=hE_xT60L)mBfm3~^(S?^k((-WXf5fkQj#0fM%*N0aD}9%(|cg_f&&;1u*(u+GY1 zIJ~#MfRQi{kZ;ylT`IXuOL~KDOM-m%YIV&H#yO54oqL?W#=CH^|C)7T6~adWUE*#h zQqD3eMJ=K%G$WwpYMy-#7}x)!>e7`TSt>11YLwxbhfaIUpt;zeA$kN$WmwMVKd@AN z7oAhGPYpTie?^eW=@bvfnxj|7F1WezNdkU`%gO6)y!w+Oj+v3=A$JUYReIw>Hv{!t z>?mzn$&h3Xr-hx~N6`?dheZ~Av75D)d0-O4a$~;pvklP#!DeW@^S>qESUJwoVcxQA zxWzBFs=&DGLPE~v+}0JlHH?)2F0m_*spjSSV#R^pE@r})vgx|(0VfH*o|TMh4q6eM zz6y2}az7<+)8$zDRFY=VU7=Qo-)A-h2%Z3jkph4Px`b=A}e-BJg5H8vcna_wK za-oSH$2=!^?tg2|GCtVAGbaqVYCn>cI$wHONMK4S^%bkS$!}q{ryXWKyVyA2k$r6_ z*L1Y{p99v#LM&Y(?OIBvPfm69DQW4^w#z$wn9s{+mU3j8tF)?rHW58GYW?RugYdb< zgjK(=^YfGoD1%N_`_rbf_#Q6yS~n?09L%dGlMjm00ALsX7^!U*3D2z~Ybu2${RuM2 zT$RKH%q8?8{v%c(n~pg3P3Gji^OBey(=92kbGWBdK+J0DccIjk4*lq_9$LYw1WtNZ z1zWyv;LaV!<%BsvZyjhPdKpam4$WAr0I9kb`t$0C%~|EK+r=QoN$}`a9ftVBK2q^^ zqa;7ME0$LpZ@jZ#hEGFvApaCAT@iO#l*60rrSWljT&geGa38RYc znj?5$7iVf~+fXP!Fu2c}k$ebdhia+Dbxn6TLNgymaWHpgrcyIf5($$L$JJm9GhcF|tP-AkAF;b{#>b8@EEU zq!XQY_@$!;c7j)(N+E3-^4mvIKq$&BJ3qFl4(zQ(Ppm*$^a!1igM`V*Pp7Lbmz4Yr zi?q5O_t}O8fcUII!UIYVN9FvM!HaNkR4r6bz?<7$?#9&+IU=kUZSx~%i4T#!P^mRk z9J=BNZb@YQjh5rQ&y;7VstTyN&ka;?cLWPZW8B_6vQ0=#2;PP5fCKqGt8#tFKX>T&LzSMONt3X zw3u+D8FFn8qzn5+TQ4QE1WS}4F`xi0;wi=3NEBm6EuBMd^^kQ^Q7ESFQvT3kdjacQ zz#UfW{vRs-H;ShmT;e_FGTK$({#?NMLW2jUg9ltEUuFea6)Pm{+6z$9!V%M2LWG({ zt6F0teBvj3zJi3oIV2wYOl68EZnzsVs2IAz=C0#5t9!@#mraA`zg6#p7cO>OD|QJw zN!NhNVP0Mv%9UX(Zh09fDvtc2kCX zrm$8&%u=DHaQ=}~p#NxX3Wlc@k8GjVh*6~upER#PtU7>PS0)c%Rc&EBd%5HMIL_3Wf4Yb4)4D~BU1^6fTa*7N&N1b z_?`;cJqNtO9s-L&8*(niwT{QDJcXh?6!<%YU6kWtuSiHRc+c1=9WG`5wM~GL=V`k` zd6i160x0qgH@HF=Tk2Unw4Qb`xbgtYF%UWCQLuX4Suj<3f*jzA%0tD}4i~{Ac2L`q zjwNZdJ~9%&E*s_CM<@|#__dldI7XwHQqw?tw(mD=p*jt0it&FSvcc5OAfyV>Dds3H zO&NGem&XjqAK>b7d$ajm1U70iUmoyLDU`MSfeE}qQigB~;U>(j&-1F03Y_p+xEUFY^f$X;s!|4y$bf>>7I?l4&mc)QSTr8oks@Z6c}a>C5Ee zNew@iZ;KwoF*fM17mQf6KCys&2q99Wf}R~OHSufecW#w}mXUmj$Vv(E#)(J|6WUA- ze9XoB5d@$x*X4Y|3IU&;ezK40Pd3W-tO?zxQsvq(zva;M7ZU|qj$-&e{z|MUpa+M>Pj$* z+?^8BZjTS~@CZh5s@51FCI3Xfs}SGP?(nv9k7w6bSA0S5Ip>cE#4I4hDY@Uk;4(cl zXhH~uR(m9n8y{!;Pa$wEUVpLR5reKdanB)`QFS$RcS^?qJdU{0w#ca_w6U@BTbm3b zj~R8ffx~JBg$o#@dX(Msk?7150fYyuV=!>zlsHR6lYPA&Lxbi>1VLWDmY@|pLEf8d zVkA&QRI%tyky#BJP~<=Vm8 z+BjG9YP&g1{em=5xdg`s8aJNPdel|^g%Y>J8GH432^EoDkrxUe-{#y&w*sHi?J(I< z`Nd13332(5*KirB>8EfV0yojJoKw;bSLWE=D>zWWtPygKJ_ev)n%33ZbP{AHZ^@gM zn_5X>W(u5Fx%zP8Xz$+Enr|qFHrR%#Y6gOx{PU5V6l@tcEe#tjLnGk)6olyFc4Cqn zQAbkXoS>Epv50`M*5+`i!hc2LPrHiFLJ5on?leu_b3&y9QFIHcHMq> zKUvM@Sfi&mPFIIy15`a8NbJRk6k)A8)z*G>v~91IC4pAW+8;t&kB$kz*C4rM8{``e zLn{{ItZ8w8V!c+Qym!#GB||CFa{2;5#1lraD>iss+u?7f?o;45?>@~x4})C)bcipD zOctR5p{S{6Mmg{J*-k>5sJP67RkZL>oRgo2R4c-3tZ(J7e==5h<#HPpCvR#8 zt(7>Q+~~@VX}rYe4I3kBebYH#+%?5TF0Vb3IwI2x!0V5=;wxP!SD;2Wt$VK3+=ic8 z-agwc+7y`@n04U<9LTEm&pcs0a9_a=eJJQ- zI(lNIi9qWxAq(^LV!!PJ6O5rRRbE9W_=MXIJqco;pzL*DG~Q<-jX*lz=$cb=ixs6P zufUsLnKO7iS{a_o!7+yI=$~el+0=#fC@RxvytvLS!(C|hWKS{`-BFrqGE#BFnG<#W zG}}AwFpIXCkvDCZWoMy_-t1kPQ=ZKG6h6f;!AL58zu8GyH(7$1VY*jgPpmtkp$rp$ z7tBhYuwvEFyr*RDI5~^7W&&oQ!As~3har4fg=YTbFsnU{86ss~Q6>-N z$*d?2rAZLRgVsp%t*q6))li)E3tAOGd0SDL<^*Q*Dx#j!QH%oGD(`3Z7~_B!yZg$c;tbrtuCoghAek1fMC7aJPr7YH-^pHU?2>dKN%@ zs*gEA>=XYoX{aVfSBrZ#l+v?yp2Z;s;w#C_N^PyYkfrd(;e0$uDO*e?_{0J0&4D$K zQ{m1KUNYmC4%Ic{I`s$El0lN#;xxSDY|HUR>NCHl_Kvywc)e9$2}t*xzhdVoT@C#K z&lqeB_5d-_EQ1m=f2)!5l=p)wuizz ztKvI5@Bz6C0Tt1`8Pg&J>d-Bh+XopLt6`EmT(!SBreSa8wY*j4?oQ9un%s@7w&U6Rt`ol=H0P=+@b{yH16;V5QdIq$Id$cf1( z`6WR2mqp|@YOTG#{{&yp$}j|jL{Qs2ocrY6rKzu2kqISV53^y)C;R;``G{Ktq77Fm zqKG9q6A1U@EpvsLY+9|EZX^=1h`&gSOtwj+FE#ZjCrg zAs8#;$ylvCIgy>YYuEl$jL0a-m|KQ)HAD?udtPy8!la2sMceirB6R^6C@h^O3tPhF#7=2C5xtWC=0 z804#Sn`T{&8N9FDFFTTDh=jre;RGaWRJg``%lg7^M`Sx3G3qm7AdfBIArzvc`n zU+@n%Ea<$!*yBlp5p^4eOO8N_47IWP(J9y`9+jL57NiuklUDx_D0GB~oLeQ@*K6<) zt!T4&QX0H71v@L$G^l%PtxW?Zpgm}e4}Y9@jwe$&!1yfEMe>C9+4a(0-W<_iQc{7GrdNao zQ~%90!K7KUN1aJZ$d=$w0L|POwUy^wj>Tsv{m4u6s2m9DV1f2Fwi@yUEu?w3sicEv zp?7;VP+GXN?PvgJK{~16XohIz8VhR^vjqX3u=H&(Y^}3Cm!(#v<;R_zi^oqDOVfXh zb#AoK1@lEr9VV2MWsQP1QTl6BlI&eA8@InKiDg)@oPKg=09LiG=f6}>BJk1LX5xEs zsVc!$|L9o4+z=s5tfZ+Mb1@KRug{$mijYWBC9?aYO-UjljYrD{MD4HMs1 zI}e)$)*m4QG=E!+ooKc`35lyj&$Mx6C?b|K>x#(Ux9L4G*d!kuJ1Be!IV!b!468$9 zAe4Orl4lbA@68yO^k1ZbNEg%~h`}i3H^CR}0#2WJ!?A?vz|n{>BS zMO}*_IIXGvKm?8ZGxicBbh%(63~`mQE)&3dThTnOTsr?8Py4oz%IKD*j_9)b<2D8| z#pi)YoU|xbP?FQY2#K^XJ?fca3iRf81+*5}@*w)OP5v3L0*^tCG4sw^X}MK^>Ng=7 z;0#In^ABHsP4Ep7?CWqr`gf=@3+mM}!#X<7Lcq^4ga=zRT2-X)Q#9VwfDH_MTM=IG z7())xqM6-Zy1%nsB!nnuADF+FOB^v$W51 z55X2C9ElTqW^~L0gk;OGCVrVlD(Tx9lZyC7J)xYx1-Zvg2sT2lcK4(_zgw4c14o9+5AoFopgBx@|=r5J}(y z&^T9E9#59=GqY~-Td4iiknrY}oVi<$2RKtj(&z8HIc(MSCyOQqNWVGYwJlV$?KIU; zq3p4ja8+X+y_;|rEXhKRzR1xOr6o?MH{l(02Kr>OK(L(Er)Fm2#OI$fRE(4~1p9oW zCB&LIEr+=kL1TacQ18yViQ@~L{5lphTOh-Db;L0Zq2>SlrcAApg6?u`;l{=%Sy#ye zosg>G>uxc4Kn^DUXaaRadpmoGpN#?X-e`v$TZ$=GvZOQ;p2~}mB<;HPItV&0i>oA= zBoMeT30bHJ7Kz?F)GEoGlWTE#)iL-8|#quW}a zQY4JEg^1X7Nt?p0XdK(eiQ8dn;Y zcG7CF>ovLQBMeGe)C*&;6}O}D95c=3cUTjs&4_{L_29%Eq%$inmM9dqB-hhH(C1Ly z(@d%V%MFPnRAb*Xl0l1oh@LNNkQ34qIK^AFZ5BOQ*6QK2RS$s2xz_13yDVw)P6V=A zISKrit6$^@=aC3VPI9sUhr3t%PJfiuvqK{jxMkxY4u|NU-?u5xFUcGDdFr{ zt?_}7@+!r<>k=kHP^185lLiyQy{sEwFr_IKejF5i9oob;i0SgBo;Dq&&)>W5<}ag< zsV+vqi{H%xLgQ@H(0BOH`Wy!W*+lOneANe z6h58GS4s?~h_ee(c95tCdIdbp-$q zh<9P)Oxrxn9l8g-9zb054uDa6cu|*^f`?bK_f?B>gc&a5!2<`)Z%K4-NRan97!k>x zYp}Z6Xe-_(Lo_Vaz$}+gE>lp|JNlbGZUKh?&a94sHju3-xSu;K0Oa2%oiG9KlGpQ7 z2Uf}ZQs92)@1QRZ{gRv$AluwM(Fdo>6^ZzpLoUXxri)y zqrMUw*&`^lAqY>`PfN#@BTR?bKS(HH9gbKY>teLga@CxV>@N%Tft!x@q`FM-^ zZ*%QoD~s9~Ak^=^<69I7tr)a| z9l6KZJuL!E_$*zGFBe2L))=ajuDRI>Et^p;fQ=2YS?f8~ ztdDlxikwGa{4ayXo-q5pzZB|yT-@+`aasG+4$k%M%tQ1ioFxaJ}55nfo5>^vDbRNF5iz|85{jsgFk4*`XQ-b`UFlGl|& zu;05qp4JDT`UUW^+o+)5r?yV!sRvD2y2_c952;dv$jO60WqzEx-2!mLb_qi5#2*L! z>o&_G>AS6n?``Xp~INk^N-8LIHobim5u!UDr?LZf7M66v3bRZsyic;)i-}}!8ma^ zt$(F+p-(@UYYO{)riJ!e6EUx!S6NuWeO5-Oa>2Jm$BcoG9PjX>u{4R$FA89nBFnZS zd2_qA+koRj4&J&WkBfK8klJzn`039J5c0*Uua3sJnV4A;>M1*#!;13>4ae>5$ZHi; zt{-dlwt29v>!^1p3ATXt$Hvhx(L?rPsyL~$YH^zFW-Ha#ni>rPL$~Ag@CgJDQHN z_5KPh5RSHsvv3`JC$#$Pk@eZZAkV#_J%Ui~xYB{Csg zCbS3`Yj&QCF@2?sE@_~Y9^W%#O`R@)xG=A$!V4qu=7h|AV*!=qos&vI68)teqR5ad zc#|4>)J&a+0_{Jnyge>8xHNy62w&iQW6`b+_T8)bjF9x*(v z&bfIGeLhx_qN0zUkX19yNQe?2W=inzhP$g}RwT$}Qc;$#gWV#%L)*8rIImD{M`>W$ECv;8o+b1UfB2 zty-oUf>S@;-%X%68+liBs|gpIhkhwhDu%SGy5l~cxrRKWnze>fI=+||sKISZZn#=? zvS&95yv>5+8yU@4HZH+t?buJ=Z7C49$pwX=bdFy2Qjvu|5OzRu-vt?By}T$xgPDTX zS2k%`8dz^R#BVgs{J#w_Oq5f{3Lc>z*{1R`?j?cL_Q8Is{Lupf$tUm29;w7o!k4WXd(v2(XR$VBA^w=LB>OMN;#tI^_ z?UvTe82fMz7CqaG+A#h%CE9Eu)gPUE73Cu&QGB7Pfr@Fry~DZRc}C^NU!$s7zo;@7?$Zvk5PKAK zNhP3lWHaIVz9{6WSASxovN)0;Vv&TL29%-}cUE<@k4y_~KX$ZBnx(^1J(jG)nF-mkb`cdSYE!w(fl_>Q!&w@YQ}FrR zpBhQxtuB#E&wcm2;~7Y{As0t%6OqX$lXlM0Pp~@eAV=%mAIwHgq@^M)5e6lu_6|r| zW10+^jVsS9Mw1(lPP2N2O`)Jn1y3EyEv02+-T5FW%KH@3Xk8-70F6Tf_{6zh#wK0% zJu6F$sTuQuh<6}77dS%*%x3-;yh#U4xMRLtz#PuqJ+RZ5C*X}APMRc67~by*Y0ss` zN4t+R-1N`_;1GC)XDU?Z_s|5!Q+U_3Z02{+Wp_Fp?zHVxK+1t0QWqlEoH4Anp3Z@( z9;z`1rEMzf{O#GkNY3HR-Iaq(YLqcwxh}6D7%VYfk z-J$caGg^G7gEhg-aS+;Xj^}-0JH9ZaPE+mKr3!N*XsY)GFal6-H>602X&Mhu`CT7&Qkzmc%+i$WVnH`@|_MtDH{L$xf_T?9W?H`b< z-Nz(it&_WE?x9Sp^;Th^RIia_Z~_P>PX1Z3;Yt*ac?+G8G=d$E-NEF31}!H(XAqrE z!!z(B7E)40l-)$Mo8tJm<1!Zm($borbIR67wjp*%uQc|9E%~y}mE~V3(;V*y)f+s6 zn7;I?j;z2qGpu} z@x6Om{)^~a`HssvJ|mWr&l=5@6Fme0DpB;XydrdwoX zVVfZhEM-r3MZW9n6V8F2@!_SC>c$gHJOdM$63xZvd8$hQ8q&1X#c9Q%Eg!Op)|k^n zQ&lQ>I)}Hik4AMgk8_>Ed+vKC&H7CGTqW1EL;d+y0pvp;HL8#jzy2hT1v9SkQT&{8 zYB}F?DTgmQcv^}Nu`#jbu!a;`p9{62n;VMrZ(@qY0FIpzh7zM2-K!bs4^HC&$_a zGt8_CBdB!x`V{Xh3yI5Ey;JE?tgV1i^9v+DVbx}kzhiG%(w3mpl7P)V zwLO3|Y1!ht*-i^p2PiqB+pXle6@*#}?1UgCtm?n}emklq(Ez|P;8-6hF(B7kNO7K? z-=+UJT(4Qy?K%I5E++9^94Ioeke%~&M*E;REF3b&T&>esInUs^#H9xTn0Yuh={C@l zPwJ(%srtKX^M*MOY%%VxKK$4Y4tN3_xk3;pMEqRX)$zBQG^!zqC8SoEnF2WwPM^p3 z7(q=4pS1?#P43rk?(D#HdW|-+Bp?V0m~BA$p9uZEqryPcxM%EMz#7F61A*20j(@R zwYHK5iNVX(GVhNKbpN(DxrNUuLU%bT`Cj9`WI(;wrbhJgayKQ(a%DeT^7_@ zbkx~gchykN$|m*u{T9@!-c%|{nA1SDTis!2!gBV&#^z9&vfuXEQt}P4Fq7{1=#&)E8G%44l@RHPL=&+!io~Jjp?>B^I9*iF#lc z+G?RQKQ?#gi7sxkA?#^AaB9&i{Dqak_q=ScMA|Kfq3Rf_e+X-8#!&UzY;&wd5sWf| z^hurOhsRzwxPwkd|5^L?2tQ!5=g?5U6>?Esm(%HvRTx70U%JSHg3Surc zUW`i0FYV4nBLY)4oB|)Yk{{v~*+k8t6>j0lIWt*0dtHGFl{8k66=W3;hmqhuXnYl^Jy`Mjt!MCl%r^g#E6Z8!uwd=Kzai!52 zGo9S2l&RngVuA`F{CLgn>~eTJK-AwB^N1OLVQ$cP9|Z$(&Acq2aUQcrDG^odgk*7V zE}m+5w1y2Iv(y)H^sT8RL|ixLZ2bgLoV(cZXOrRokls2PyeWPS}98}^BZZ;pQ$8A#f@wX ztL9fc)o7N%#j8K~tt`>iZ|4hl@4Sf5z3rhTz(VflJi39qNuG9VQVpWv~OOxpodVje~K zAft9-%3W1ZjcY#9P?DI=Ae?TD|pdu!ziG06g&P z;*B|8EUwf)c60;R%i69CAv*jN<$i>cb{wwwn*r<+n&d%^n64#eJqxaL2I*_Xi%ymt zp5cn=nCdZ)(totn7#=iO7ft6%XJZuJA9SJr`5W{!(H#TZQE=_O1)o=}a9`08 z$))4dt%6Hu2REj(TMK4h_cH?$uruLQORga{aYl-{N9q#%r!B*9-JIyWF67d zq?#j_XfOw;K@Us;$Pk+bRMi&)X8v)a42EE^7P`j3C%mx8G%`~n(d1?Ci;$lrX5yQ$ z6`06OHiPFc+XrmEqTPwqv^7)Am3pq@|CR4kyx{7-jfxr=`n(QS)vBm@NV+3FARvdY zX9OgJZ25J8!5WBoMT!|%wv-{>8xAjdiu^e315JGWP{Wu%U?`s;%FGq|Ubh0K5r7JX zp}}qh@u3vO!=*yXT$V+$bnNmx{ZE&oXF8Ce9 zW9#W}OPKO)UCUT?D%44AxM)Gb5dp1WAnH02T+*QiE5FT% z(anJ~=A0uF==Kdx*#v^Vg67W>BFySsj*T-YwlkVs6}dZwH^BGmH%UTTFG7tVKrO;- zNh1!mPet*PyjnCaL^yPw71?mkWF2D}VIR9jPi2p|^fcK9HSgjU5g8Ax z7RwyA!Z+Mp;TRS_Z$)#iSKYA_cWNF#U;>+BrE!v*X40i}G(`rF)!$0;YVVCseER0j z`?_BxiaM|*;1KR~ z|5ndX25FCtw(bvL3dCb@Mfzgb2Fy*;^;ajMrcXr&oD?KQpBKoJj<@_y-y;^<6mw^a zDkO}5=#1^m%t^j38O}m+AbDA2=_m;a#MG0M>?3y&)5c;V2pg`PbPxV@!zXGgeV8lw zkvP%|3{{#eEzJ*g0o@cgwZz#iqGg0aY!{kgi7C1zwbZtStA#hZ@s7W9Wf-EYC@*!V z;rqg`U{goDAL!b=bJjDhzjT^ASnyqD3nDl4tfnEt4wtQB>wgAh*ZhU*g@EkmEhsM~ zRxX$HPxhiBdKvPUWvV<5rdc#6)5(o(88i2ES=| z$~@W~fK{LXemNLMRU8hj$L?}=;s>)A79X?}eSxIL<2kE?Mq_CF!yT|z- z7K&B6YlXYM7KNZLCS;W8ncZT=UV)1y>E7-vIwV0KjNVo&URe zuIfB?{)uFL$<@R6EZ}hsA%;*`IF68o*n!uuDZR2wX~s(+=1o+773>``#bwA@Lp4K` z)qmLIUIN(z{5F~9!c$A!mm)GnsP=k0w`~ss#b4TtdSG5L`);YY9P8C+ z;ej$MDr-8%nodYTUmqXF->^%qjzRlQRjd-TFVhGEq2iB60WU>We{CJ=1m_`zigQTHi>VRb zcH{0@Evky`+(MPn<$Yj>;DVM~HxHEmujIB2>ai@mwl^GXS!)$=PdCEl6;G94tm)$M^t>r}Y@J-e1gOUm;W zAfYX{T+ExQ#Mo;zb24nc%yuTR>!JoQSi5uT;VyicDye}YY!s0iOP(rzbl>syr~w1i zTXxilGz*(}Pki)3b(xyPnGr>NGX>~FQIL$Hq;T|K3X1cJ<$skULdY7y$MnaouhMnR zM9F(AU%S2@RiI6z-%cx*Vs5^l!zdr3bgen&c*s+kPQ^Dc_Iq`ejx9u~g@NfG+Zhg| z-2r#}{38@{`fJ^VUbTIt`PH7{9lsayFJhK z)bKTwGqntijRKb*mIVxNHK~z^ohs4im^rs(RQn2Y_4dBcd%9P-yqw{k^#v0Rbbp3S@{Kem z?|_+yg-Y!bZ7TBfCNHUuY&?8ebLJY z$ox;Zc&EoF&y6b!Eo}VE-R$|`%qphjUa|ZLUX)SW1 z-r%bm)R;g9{)U;b${l!em+?Xd%4n^}0$>RERTnd6xO)uezPu0fz)mv=H4=OjRlgOv zf!XL-+b|Hs%E+LPCC-W1=0piCIhCF;9`ry4zfL`|6|J5~Dlfj5^~5!8osA^XQqmh* zjjE<{uz_+wMg&yF6D#IO^*?i*@oK`}q?OS7Zgp_X^xMbI23$S-42Tmvy5nd~ z2|UD2Ml`dh0O!b039zgm6o|yU`@h!WF(3ofGM3)OU!3m~sS%!3koVXw2flI4SpC&5NB5K27SiKxOh@M) z=AFhwL42Gx*W2uErQ=6RJuJ4{81rOdhq8#c!w}DkR0SZ0gKIn?fALW==n6~ ze02729t@tRq4sga z))W999wvvfm4sDK+?(3E&-_GjP4H=@^GE-ZlW8Wb>0mVlsB36(`d&u%avtTJI0G^* z!y0Q*ToUCuk)aV@KpkQ5Z(xV(YlVkh8(Atq^DGbZTE2S*1>EqRJ@rk0ras^Bo6y_s@;e*+a}J7$3m z$;AG|9TMfFndJR79FqJhXXaX8`KvC`MjVz_s^-*sDV;xzKI<$G|P+to88 zaArqMX85NY_SKa?(VrNb9v%?7IYbLJ8BRAbKK1u)EM}{iSB%F^DXKK#PTEOIJaK!`R&gWXs4h}!E^u$_s><7-<}h}+5F4V6}qvP4lOG~P_;&x zE?9(0er<`%ARK2)MEsc4utrr(;`Wvc~-dPC$g$FKxs~$6F{*yA{tl4QCIOKT*G-*nSd$``}#j5+6-(acxD z@|#n)eALM(nZ!ZU-qx9y`h_C>nZ)b@eU?Ny=xY|(5+{hla49qt@diP^R;(GRC8E44 zvVlEOJ?0@`gxMIB6Q6&@4n5;IRjxbNcD?yU(YDOQ`C>_LewVcBou4+ie#4k-Jgx;o zvHk^>XfHg%9pa@am4lC#HBh+bpMtS7h~LMSvR+x?fJfNY&g3jd#`%)Ms29;`nn=ap zHE;9H{2TET=e?%vfneG4nh_ODvRelrM}a@A^zvWuyTmEH8-K(gyW5s`@HBYZZdG!?-VGuHfd$xE>CWTg37~FyOcyFELt_ zmMeZVmdjgzT8O1&foqG`0W1MJNaq!Jl#jcUj!a#phNX&;hQ=t$FH{H1d2RicNr)s5(96rfmA#b^F*Oh^XyNz~W1vWDzc zFOoBc-ElzQIVu#PQdJoDM7iV2OUClz^#o(+;^xIk`MBVRT0litcg?yZFCrr8$MG5ynkUBm$&#FYh^!v0Ff2K{z4& z+GIym0#ZLXUgj0F^|xfTZ9Yd-63&nusLYkKWtT9D{0+`~))@IpX22uLw3KJrjHyr- zWo*TCuiAs_sxkT-P@&NKm+$xEi^Wn*30e4P=r1oIwa3*VIV<1P9^1bJ`p>17;p* zx5njgHllbbB4OCfsqq$nht2^0)~WUjYAnFQt?u%2+Bw3;cZ0AMepRDX1iCLb-{+pR zWt=|QR6p?{yymX1JKQ)Qvp_971V!HI6W6{RUU#|P7w z+qrM?!N@tAf86ZVh~!2{=nhaSyWbv+x$P&~O);6uaAG&A=p?XEf?* z`)s>F1rf*DLB(u7nkUR~YfS8|fkMpI?L>;*`I^%|hyl*uh zObqN5efz4D+R{+_&G%xdfej|iLi>nq10wa@pctm}A(8BuBYZKM0CsdYs|CYH$ac}B z!AeIm7}!v!j6={ZcdtFzn?-FCtgEd(ae?qK?bs?p+p)o;ahmZoROz;%+bV%}nr|{H z@71GTkp~nj4$8`Qt7@>$!x92 z)iZDF$T)k>Z!oc~mYOIn`$v*QGZ+N0AY-w%9@N<9mm^B|Dsf2lW#J5@d_esOE!b{p zx-_7pD<2)PUKi=XjpXO1`SK*=xI@R}7+|e*$-y8d@&9&OCz0dPuqdCq36zB}<|TTW zjplTSJhtS$%Pj@H0;~BSusr`(7YVBE@r7p{BR;-mEwIn$#yA6#Rt2rmIPLXE1{6Jz$PaqTNB)dU6CI^|GHjRv?*w$ltu#+XdYR2an=1G)1HbI_UH=X z{yoeRp}-pQS)l;?0@u-~Y?5BD_U!}gt0mKqZz*0~olosbqk9L#oJD%JiKO0;|7qPy zBn-DonF(())a=8CiMqZk!!#NF6P`B5BC{JGjoog82fy`3-2qHa=W?=|qgAo8JcW!| zfJH79IXSloDY;AZd*4o^JS$5_zUImt{gomvFJl+218gQF`YQ)mVmG?39bTHPa}2Tw zb(*D_9-XxWufX+bO!K()bq>gY(`GxQ#g1kyLt?lGmzh=sr3fci&oDpcf-Es3c`jH2 zu|xm7phB(;oQFLw_3}kCefOM^Hox%nNtL24*g>)fIe^Cxyu(r%TSN+SI!Rp z|Lx6>9xNH`eaIk{7`lNzpc=KsB)C=?8z-j59n-^OsOQlmYcG2~HOgPq$&Y>;fOPL4 zOpCs`*H(^A68ve)K-FM?tVufklXmrRSx>mIAKQJVG zf9?u|{&9?5?`I3dOI$xb^N_Fn^55}`=mC;LOZ<+fDr?@LJbLY%raZKcpe@SnlC>eF zA~#&~W|QwQ{wh-bYCdQgE9;2goF7!t-9a%47l>oy&vH(5HOrD!4yPv3Y5O#W!WyN$ zbXz9&;K;)2PtFb!0zpl z4pV)EMImJ%Ow^R)2@(Kk8iJJ3JU`jazpM6J9t%_RJP;NPEC~v !UX;nzMYb9>>G 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260608/20260608062002-Config.rsc b/MikroMaster/20260608/20260608062002-Config.rsc new file mode 100644 index 0000000..b12ef53 --- /dev/null +++ b/MikroMaster/20260608/20260608062002-Config.rsc @@ -0,0 +1,3415 @@ +# 2026-06-08 06:20:02 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN port-cost-mode=short ra-guard=yes +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=55982 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add dns-servers=10.30.30.81 name=reg.vados.ru verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/672/7cf8bc7a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:04 06.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +set accept-router-advertisements-on=LAN allow-fast-path=no disable-ipv6=yes \ + disable-link-local-address=yes forward=no max-neighbor-entries=8192 \ + multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + 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 wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + 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 interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add check-gateway=arp default-route-tables=main interface="ether1 - Unet" \ + name=client1 use-broadcast=never use-peer-dns=no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +add address=10.30.30.81 comment=NS.vados.ru.local name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" match-subdomain=yes name=vados.ru ns=\ + ns.vados.ru.local type=NS +add address=10.30.30.33 name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" 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 match-subdomain=yes name=mikrots.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=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +/ip firewall filter +add action=accept chain=input comment="udp Accept input DNS queries" \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ + 10.30.30.0/24 +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ + 10.30.30.0/24 +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="ether1 - Unet" 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="ether1 - Unet" 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 \ + in-interface="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +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 WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +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=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" dst-port=\ + 53 protocol=udp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" dst-port=\ + 53 protocol=tcp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + dst-port=2904 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru disabled=yes dst-port=\ + 5000 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=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=\ + 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=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=yes 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 certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260608/20260608062002-Diff-Config.rsc b/MikroMaster/history/20260608/20260608062002-Diff-Config.rsc new file mode 100644 index 0000000..b305ceb --- /dev/null +++ b/MikroMaster/history/20260608/20260608062002-Diff-Config.rsc @@ -0,0 +1,23 @@ +58c58 +< add dns-servers=10.30.30.81 name=reg.vados.ru verify-doh-cert=no +--- +> add dns-servers=127.0.0.1 name=*.vados.ru verify-doh-cert=no +2509a2510,2512 +> add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ +> dns.google type=A +> add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +2512,2515c2515,2516 +< add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ +< "\".*\\\\.vados\\\\.ru\"" type=FWD +< add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ +< "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +--- +> add forward-to=ns.vados.ru regexp=*.vados.ru type=FWD +> add forward-to=10.30.30.81 regexp=*.30.30.10.in-addr.arpa type=FWD +2520,2523d2520 +< add address=10.30.30.33 name=reg.vados.ru type=A +< add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ +< dns.google type=A +< add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +2532a2530 +> add address=10.30.30.33 name=reg.vados.ru type=A -- 2.52.0