From 4ab84b097a1bde7087defe87fac942575a50db79 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 11:00:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 11:00:39. --- .../20260508/20260508110002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508110002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508110002-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508110002-Binary.backup create mode 100644 MikroMaster/20260508/20260508110002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508110002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508110002-Binary.backup b/MikroMaster/20260508/20260508110002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..faf9b14932237f006c5f3506c37e1b479ce4456d GIT binary patch literal 298264 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
    {Y~ z&;)?dS&=*?Wp*b@mUlyG~9a}=lAM^k?JqB7fIF2 zq(mgO|1nq2ldwta)jW(FxX#THaj88fFt3J$T@(UY0O3e*;p3NW zz@BI`zuTcq5ePdU!^xS|tOE2R)I(FqS_DhQ5akXCb@G*QTG@M(9M>T)g;Mk7GQvhe z!gEG=zeFraR|+02^5fk?ZN&}u^=0R~ozCvbIv{* z>2UxRJfy74q>`v`cQ%t@D7gUz`6nga9ezw)F=J<&opE|}0&Z$dPh|o0x6ddPHY+AK zIKdBGqRzgty9gPy+rE~oQ_aGke11x<{&>L;t}YkP2Mh&i1Tdr$5ut?(8P|U&2N{#N z{tbV46m-%!GUxr{!2jvxCC@np;X_`}a|EoB26-K=+*fJ0)ufI8*e8CF6 zgh=d@>J0j{%e$lXT?6cv_Y;EJm)TI~c{kO|L~{koq8+&;)t#D?&WU*4MfshvjdIY^ zPfKCfnWM?&D*x0%_K68y+@9%TZ$BBS?11E(zm)IUcum01`bzx8Ewhm~=(e{2VyfOo zfLBPjaiubcN|OUWWp(=X=B76DcfVzC&z$q$@-qddquy%yu;0Ey%)`E0xffoDo)U1W z=Sn_>Dp8D%ONGyA6978~VTeOoLn;=+caO01vtwuor?WxT`?O}&JEvnb@vqNgZqlyf zLj8r~I1X_xS((^;+DTkcknj`H4dJ2W5Q~Z)vOg+mh&D`(;-)|lg&P@7XL>O+E+$3x zzz=B?GF=(mMl$WQe?vH#(&Wr6aiAhlD4D=t*8^6%<}1TlM?kwmc#{|Wsx;x1s-G5h ziKb$;D2yodR1S_Y-(x`-Lefw3xxw-CF8aSz5HrhlJ%O#j^IL|&-9aw67G%fQZIbV? zI_)s^i=+B*uJ%1AmP-??_;#NqFLxDPHlQKIQ6VhGKk|UClgnI|or!b%K)?uH$cL{S z7aA@tQA8DSPRqofcZEr==7woc%}BHAEE8{&-^Q4m8fQZ~f7_p7SQ9b+RMVhGA>tVj ztt2+c3Aa^5`xOp9BMqAl7#?CTs0S9oO_LBm0fSuggME?yWJnefrsO0|@R))O$F46z;fc1e6a-dPx=Z8j3l@ z&!byWuRk3ixY?061aISoXTUg4Fm11%>m8bV7FoiD;!qk@P6SGK|9OOJM0TWSNZ%Wx zW;W)}>HB^VywXS3#l}hY0HNZ^Hr}{I^R{%=qm#6JK2ew(B6*-&9GrCup7CZ=Z?S@{W$GfAjrQxrsYLGfW&k9WJ&RvO<^aur-DNDbOT z4kyumSW;i$b09Lk6?Gf9BUm)#jkkh)q$FN^!Zx>SYji)cxH%elTKU9FmV1TNN#iI^h=Ato#ifz6IfC7 z;eKpRGos;cqL$FYy#R}^^r+)+s!=7StiFv>6^O+i|eXThNTy5ytLKI_g1$sA8D=?$Hn$w{9gB%!=@9$hEV7n^<{N; zX#;i>dvks~>=)_OJqjd1r1aUp?6vBRKI9@<(`_8TN#Q`fv zvnQ_lt?60aMWD0UhYQZbNBd*%ypcC_p#Nju*-Z#u4WSHD$(Da8F;TC@u=07_C34i0 zv3rxC4Tl=er~eZS5d9FJI~=8th%jzMb}Dv_DXQpEvLd4d2!eX-7mt00kVOTBxjB91 zPQVo|4*Nl3I=HZjp*ptYtie`cCHJXMR9fo?ANZ1L4T5o;K1IjLep9D9Fhs5>u$My5 zx8ubG2y~or2T1FB6A7Ql>4#?nh9A^nQevZ=2B5RVIAI(Q_3`@SnktTZIlx5=oUsb@ z(a<(!sR-dNA1i9R<<9+%C34?E(k{`dDd<-`1}o1LFv0L$sFByRDtC&sI~aXExh zJjQRT2l_1M75(s`-3FOCRHiBHI6vL|D+*n>N&M*8_Z|E6OkoH%&&9#cXDHRNow6x9 zgp0s82*^dY6H`~JJ*Ju>7G*n{AA9dg%%f!4N5XqLLR{<#(Un}f&rc^L_bZ~^c}=FO zt-oRtayatvJr<5@Z=`NWTF9)dh*e23idHRk()67R@LX}XC)N3OAh{PB%m3^nrqr-%uxjw>V-0eW zJ-k3^GXO0n5{*QxR7(eg!9^8>%zznri+*@iQ9LwpLU6lJCiP1Xkh>i4rslL1PI3U@ zz%uM~?qihc`YWoTHXFZZd7jQ6oPIDyes`U$=`}q)VVvjP#~WjFxto<02FOg03qyfS z6s?kM7S3WW(TrheI(K4+l|nhATIC9KHM1T;k3QcQXW(kvH<1%LV@QZ>wWSjmP`}G{ zD0bWSTxe~rj)&V?Pp#+IXt}IxVq5K?AX^u~2v2>l^|R_B`Mr810y>Zbw8DYY_e>k6 z8*C|s)|R>M-m^*s*j^(ixVD_KLO3;9Nii2wtCbJ1BY$8dvgKyHbY9nc`Zw+Qt#U{i zq2{8U?0U1bkAe0`GrNwIH)mwlXg;C9*c|oFb}8cdZ0E&f`+PUTMIaTyn6Zn27p5ds z1`ivqzIK#AMx%^$hMndlKLP+n5E8GfO49c+Gd5mVA=(i=d=TRpy2~c2QDNbGjcI(D zzK&BPC|U;i%_#rNREMno-X<-t4<~_10})cW{-9@ZN%-()9v0WtW1s+CfhMAZk!{jO zmGt6e380T37THN3^=AYff0{4nlP^JReYnIhv#<;Q^QwhO^H?_s^XdY}vwZ0VnL8rf zX2aEcnk|9{$Rn#%zA@Hkr%@R`ACx0$ir4-V(`Qok_+2=4a`9xPWC}9sF1M#^L}AT@ z6#=ZjW;*1^0@4;xmpJ%GFg-a_Z_TkpcVIm`(}t4~?kBZenB#u(fXIpH+4rzbO3xBD zh?iUm$xOkNOjueDurxYI1=}I)W zwmGiLm=VVyPj}kQKEYad$7XX193Rt|o0I!oeNfrODmjhI@;XS~M(-M9xV1jT@%Nbb zKGv3CQ`IsPsqAK>Y-K~|uTLI$u0$Ag)(VnoG)LI?k~m(<$3&Lo(uthh7KNeqoR)Af zd@r{|21)hYFrZT%^)&L>9Q4CKgB?uxVzR1+iud9aHJoaqzub*;l?zp~u*OXrcO8Xf z<@+Ews$#gUU&AF09VAgygBE$zaUCL~F;O5LnmNF6 z_a%~^u!}2DQFeyqkNl#H3Kla6-I+&=0I@NEFte2IT>!NlebURXw`x@SxkF>qDapYU z_yhKI*GeUIRruuT(`M8)uKAw7`74K0I zhmaEv>deUaJHnceRxn7Y6%kXm^lm?`cX~1P9J>IpK4P{;sv#G^t63gPF=E#MyXtdG zORh-3b5;HNLz`XW32N;Ka4@zp`CM#avm5 zW`|r_-N8r1V`M|;8_wETZkpQ0*?ot~?an5AsIAk8o%sbH<&hQv;e;Sf&OO&bP~;b( zO_VL5SUl~@M^7Jfj#RWR(iSq9ig-2spouHJ*wZ+mS6y(7Ad{#%{Y1TyYUT=%A@+Z-LLQF6csTqoIM$CKDRlzP%l@up> zNFuN)dRin;-^zJDQiPZ0IX$l74Dx7Saj0*M!ud;0Fl%0!i}wLqV`tXO-8%@;9%;7Dt+76aW>4gpDK-Y?wIEV_r!)6fN> zq5@^LrWauYJKSEGi%e{a9Et$K253xBZh5?iE&r8@B>V8#3%XfM#get+Un5F@-V|1;Rn z@)cjew7CN)>1H*?>ND+hTL6$)X}8+6uV8`HEa=AF7>d&9_ZR+~+Aue9%WiFreYd3fSYDC0{7B>xp zJ0Kf=dH@oAo^$0=R>qU>GnjxT>2`oE8ADdHET8v3ud^*BT#E6+x*Rz5_)^=;ap#4? zy<6~3HNCfNGGXHnJJ-g}CH3~ZZ3hD?y4_UE?vQ;yL!UxL_#NB^*lo|be~5W%O!584 z#kS^THhXhEHv_4mauQ1mp+OK-e44>=_qwSm8y|O{Srtinf~>;pI5ZXFY7N!rDbL?EebwEsY7bY>Q61}AWw;(ZqxwN!e7zPAh1Dghq zqp4_ZuW1+&L|k;;9#qqAgHsP<%}V=p=w#?oy!XwkqYB*E3D&>WwY<+J;vAVJrBf7y zBTkR?*{>w*NCq?X;*Fl&ZEY{VL)};a)mo_>!r~kCNbAmFmD(Udt z72%a6={e9WoZ)qyH5v(7LhU0K<82Frvy!qLllrUE3JR?tCL-6xK1TepDuCCdG#Fb> z_JKHLJ{~xRX^pY^TEuOd7tFLCtsjzYXRmI|O~Yp%Lbk!X&gZ{85YXg@p3u@wi`yjn zYCs`&3Z8=h%o&^sV>KawcB+ZkiU{STraU%3VR!;9S2~e5DDegZHpsY10FUogw>Eg~ za>jtnK^UHG4RE6u7c39=)^twskyS4o1M(row?e&g%nbDc#^!j;cR`Jjrado3D=K1S za5Vt|8y|Oe2Mew_c6%4n+vb=!E4T;6YQ79t!_yD0Vj)+ZNJK&_m;3OqL*5!O35g9J z3*yHO)2}?2myK-ZOD* zWuH9JGzi}O_Q%X%F}ytk!6CVA->9c-ZD~^Jo~{O?LE|UVc?n+ts|D{`qn{GC3V8#y`V zw4iw&5tuy(fX|ILYG&M9g#uN{$am43D+)RY%iFS1-RTY!^dKhtZ+kcomHPbWccl!j znK;vfeGiZ$VQDs5A+t&i``%scX=$qfI&KMB3P^2L;y@By-kHdJ^_hNTg*+z%;VnEJ zT5({`j{j1Hy3E*LOm~P&CC{eO3fodlh3}59dCsiC)NgO9&_~~i0%spx zf9Vg*z}TJYZ)6x&B1(V}jZ?#Zd>}oH1RH{TSiNRp@5?@@_9Zwkd?gP{y>%ljbxm(b zxJN8}2zXcV)+Ksqq2TG>NO|;N&ZrH$PW=a2=Z)++zy5Zw$)_avkf?}dO|mTw(<0`mPu9wB^VSmH`M>98?8EILLC@(zY}zpb{S(d?mPAo7bx z(T@ln`9G)iem4Z9X8!08fcujsuSWwa%Toy3F;lQ8tXZtEPA>Ab0gqn6FaN^abYK}D zy@A9xAmp-jEP>FIX6cnqsKSl1xQ}`{#hHwr20$lGL9sTV9%fEg`1{% zC_w}=hDWJ-|8?a%TIib6S8S5KMI95O>-2fdw%$67l7kILc#o`C%v-DGH~?YBT1~+u zun=KknKR+PMIe<0Cx{Atbh>lOQqoC*het>1*T;tmM_uP-W=3k;Aw-Q~nmuT~(*dwq zB-QbgZ|q=U-)DtvUpmaumO#u_{X*^AK$O3>St!U@SzQ#G=ddf7N^xknh+`9zvMS$$ zRSG&Kj&Ojz)UlH)phf(A;3Dm*!6;r(OSjigXMp&Fo3qoWa1SgPfr$F|Tj!PpWx;YB z=&vGe!yJ@&GjO5fHfw#L7vdscSJy~F-l7M`KpDlepB$a6ue*)ulGtvNn<-Pc@| z)-B1B4ZzLX7jb24nxyKwSW|m;ggL_ex@;L! ztn@AApsIkeZ#CJ93=5Lg;rXB-?6`cdQ>G2gLTMrkLcU((f5L>{N^C}Ox87o7fwa=fd@Q$WicZvQ#X?f=?P4K<%6h(YHC>6%)o!MC zDZd+2|1A4RoTQv4MzYCSFCxDza*naU^IPMb=^P5& zDl`fv%|536WGi8WYsIP{c_(d25IMij5x+=D5<);@;SO5Ag^CK`{9}Zsm#9$&S0W}X zrEcF;VioI`)E}8e`n;@8$ik6?`|pm~e!DfZ`uolr(EEB_`7KsGpb@%1Y1q!DCyfGR3R)lq#9*3;@XmB7 zVIY=_{+ZCbhR=D{!3nFy-gZV(@PV?^<9;2<}W`AqYMs2Uj zjoCMm;`hH+2tG&58l6U_k&%&s$5e)r6vU3{FGK~mIrnIr;0qP!=~^D9KyntGGL=OK z=G2L@#i-NASM=+}t-p@u3C&YlHkpKx@F>jkGk%X{hV%)zt%n*t7HZR`1m982Sa ze`kIb9ka-`xJ01I?LZ-R%gi(ANQNoSOj3y0Ko{?!jgI|S;; z0e-u&K^Cm1tjpNNB?ouJCiUM7tBrd^9b?Dss{~TR^PnY7^G3fS9gB&gLkRV7FKbcSgr#6)#v6* zEz<2E4gy)c!khE1%)hnR0y08|iM@PBD{5lgJEPhc;aGV0-1uvBU5wa?L}Z9W;KRLi z{-O#>c`dyH>PDd&8aZJZdgUkKjayDSe0R>=K~X6r0qmpZK=XC}3RVb3k}(YoKbE!wq( zF9OK^tPYm^-jnHr>q|=c?TX~Wh0J137^2~B#0#{ab1@?Uae5{Id_c^V)><{G>QRL5 zANHj`m$daNjqX*wE;W%bnw=YQC@rsK-GG&dx?Hsa{p?~vxzG8-%ZKLZd)LHG0vXGc&{&1TNCg~cu{)1hboYO@&mcTiIH zVgDYhU$FAZauPAXkSWGRof%pM@PouP>=W1h*SR{lLTtn`QuOyLhg%!_-(}WLf|rr$ zZk;215BQ4I7FbB?orRW?ZS71E4NXWUQ(>0p3GK(4lvu4(cP&ZSTxi)+#4~kV`A^~b z+3)g*esu}e4!Ov#TVZO!Yk9KPgB=j=WaFz()r1zhalB;Y$tPl2S68%p{oW|W9&4^0 zJFEW5q_E}7gyFA|^q<--5Q(k>kWj92Zi@p_qCR%dOyo)R7MgPpLLw2W0I{r8bBP0d zzo4~2q>+P_Nm4Te8!YJNZy6BjC;OW}IlHCzu#X#FcTcJWc?5+KgH!kxpN=ZaDY}Lf zA1pU+W!0@+u1xp(nuZfW0)Y2KxWru5ic44zwABuCSiMIS7PWueN`!J{`>#K4Kbv*- ziT=4UDwfVZ8yE!iED<#`O7t~4pE)W({E-fGl?Med1n6nLI?%+=z9H~_%=6-5#@K5^ z74b(zlNM$KPGwAxHJiu36dnHQ5WCtR7Y_hK1w+O)w5}a-*Dr!#?bvQ-%_C^f7dMxX zYcluMY#q16)?^}`VV!M-Rl^l&J)B@~B9?1UKpvZTey_ptZ_@a4*o$GU>TEG!pxdwL zxU3cUv>#h<6<_Q>z)5;v)Iltj5`)man~T}GqU@&ndCYbiEn?Xl$a2E3aHx%3O9Ssr zH_BpB6+QMEJW36QcXaIInzOu3MRhtkahuo~mcYjckrr{nXHfdoQqG)dfIvdbsOjwj z!}{&bXixLT2yPnbCBNCi%&~bc9EAX_=#gqZZHhZJ= zIIBi`XR8v&yI7;wU#YDO6rI~k=-Bx+ zdafwKvTp&i?BVJl0O|UrwNs>J#G0)-UT5A@5Sqo4?u^LTUwTY00vd9IhcmxQgHovo zR&*H{(GkaqK`qK$u$?pyjH#TVJg=J9aJPGf#PB$`K?Mi0$qz~F)JkvcNFE3JXE1nT zzEh%hA&G;;JwlAzsFm_Ee`DQo{7ukVyeI;BfNwS=Kj-S&q?149L}wsR;D9oAh#E9Q zxcD1Wp^h4caMYRv`tC9Z=UtofW7L|pO~ipHpat%b`#1oe{~%F57%cE*ySZnKs z1&d1WEQ99LWtKZ1|7b5}63%&-q`YQDox2u8pV+yzWdz#>H^5iBG86PhusJGRN1lx! z0l%N+>Ra&Wy{{}-64XDKd#o?lKZ~CkwaM$s4892sH`8JhjvuJ$3eF!iw(fg1ON6-~ zZCb*T6W4I#Dt?l){1@W#w>=|d$Po}?-6~%bQR{FqVj_sC>p6ykMhR{BtDfMR zmt-t{UcZZ}vumKARQdwjxFV9xp|5)6Su{@h$A<_i+l@n!H%_MMRh%G!+-cLcfI#33>kfTM4Z@?5`qf|m9Zc@2D`)su=oF7DvEX{%0S4EODrs5$zyX8(Hr`bM z_PrAL71PE1cT6&*7Xz1Umz4CP{b8{}JI@9ORRp2`ymK1b0$D-8qge`(^ zG`SZ>wwb3@eGp#rqOJe;&u}AR1cH84SFkuDUp-*vssPWEgOs44C>x< z!9uE&SAu!`4~s-ECo7gZ2#G zIl+M!o=}b!^*@wta{vpsYr3JLiL<=PR}pkIVT6JF^K|QIO7Fs_2XF(Lf{9y7OUWoO z*6k~aL&}V}QAzg*&&eQik+a9F=WfpY=?tU?BO|q}t7tliy{44DND3S}gD2^^x#60` zPYp(XF@f#lgiY^i@}VbqYM|P+)%Ra;vDr|FvW*$6?|o}Hgqv0{bv0U7xA=h(eNduV z`I?A6YwdAyaz)=lUAAqVe|NTi9>=&3%yh7@JgUsmQT?!p>LLvGA&mHcrjBf%>j)&b zoBECus`FJy+_&u3S|H$J5GVMNP>fRCjG|6hwd!fbc$rusF``AK6s$W_Z1(uG={@kR zX6J2&iK^$kL}u8xN8n`c`db1CIL_Bo|9v#^hd{MD2BAU^(@1daWcSwhSuX(iTh$X?pbW%GV%z)qVrsZxOEAe*8s!R zkcvgss0-_+k>-i1y9;#)j?nB4Ar3BfpTc&j$q|k1Pdbro#Cw#1n#pP?cQzH zmkT1|Vb#FXaojG8Ghf*lJ(ww}{FL?FZD&O7kwZRPPqTXt#r)Qc--PnK@u^`ZtOiJW z%Zfsvj}J#sbmFX+i@p<=k_%)q!@@Tg(?ID!b&!~G8d90-DV6|^6bEJbuX9{VbXZmF&y|R$f7$5Vf{F6eEXIRA7dP`uVLAg!N3gQQJ}Zc336;A zY?OUKoUod;GjtDbOxJP;6*#uaHh`aZL?#P;wj4{AQ%H6+UkZUo$z+mge_oq<4rkI_ z>Dz6gZ!DsAxI{!s1^!4sRJ~DIBRG@Yk}kYUI9pSB@CSi$kpay;Zp9PR$|2#Uq$dbS zBkzTQ)#MCImoW!FZv)UrD|8xsya8f`^ur`IT%((0nXMsF6iTo)$0<56zVH4veDh=M z?d^<=jvoB@5z=de$BiYxsUquF-sGhTD4!0yupk6A94E>#Cw@J{4U1B*9W}ngU zwblh`fOKk*GyOj;%BP&B`Nj^GdKgY6Qr``9Rvp+N=7`E>)&h`l&7<8mYN4yKtzHXT zkbw(lutTic6=S@k{zeB@xIS@IBj-}^>d?xuEk)dzDswDOfDsy3W{9*X49= zSS~`4P+8s?AT@DA;xEKo-u>QYx2(y5y*DyvUuDa9eSZ5N`gendKYAqJAX5fV;wHIR zdA3@Qqxh6+wdynrGpCY9`hQq!ms5y;6vt*`29wQi^HV}iz%+!M*>(T%>5C(c zq>-vb705X40im#XV~KXVWZl?zZB;@%j*0d*>yIcO4Vh_m-mLgiK=v6mL+BQ7rm}xD zE_*MK_1slM0WDMZ^uS7REWPEJ--SHdd@e<$u=frS)9z(b)X|D6I|>!)`{qtX^a`>c zwZ(lWRe%FcW6(Es_&)5)BHe#SaDwjEzLjxA0C>Epk&!EwDK!N0q3>XBrDe_XxOrO~ zuH&y3mRUoY*}~bRqSCWQMh=1B3|9GJyL1d{Ss!g?e;o^|#hzZp{5+Kd$5rg*9n(x4 z#qz->G3Cd~QT4p7wXj;?xbLtur6vr@B}2e3n?lE?amca0rJ=?a;nR05JDVt3aXVC4 z(Z1qIDHyN}|20b30cWK3JpNaNB#8|0wbRLh<{m8{@;1k17jrF-bXWpD^(G_CMXY-$ z;{6cI1SO@JHz$Vc1d17ZBwa#Wg}J~qZy8u*VsNbgm!W*FD`hW*EL}Jd9zb{So!DM4 z#R7@RLJ8V#tmLhr-4*+sXCnY&$Xz}NxBCo8Lw($5HT5qkmPtK$Px}iTi>!T_!OV^j zqM_W+(Ta83sGIfTVgD!NF=EqaR!0worisZm^tG}=3bXO~erHBO=ycu}^>{8?xOcdq zbLnLfFiM4irwUr@cjsz&(#0?=2eGnj@ItM}6BisWH=-2t6i(*nut6tbSNrI7_%|)^+*KMI~s@+h=mbR`Cd3 zhTXwo%-uDuZ0!}dxDx5D-4$I#V{Hll@z@-~wE4K6jozjHwWm#7#Eng_&cPS!&NMec z%o&T_S97Ev=Hje-=-{8BBz4;)56&E?__akFKUGdHr#+m2T2mXf83HMuN^q zHLxsqG%kMi((nhbr%yE#sboYnkF2iCypFWbcAyePI_$$fV5^#esSJqN{pN=6vkopU1e1)O(H7NY#P_I%sde_!4j=*x-GI%}a7# zD{4}_eqP?l$t#36-9fc0RakW{pZ~%evWq-j4SV)+X$P3XIr>hOV`v@+Vs1cRLTIEn zmILN3YaqNG8c!c@iW)Y@b2bo2R!dwD#<-XFxN;E(O1ya~UqV=(zI?E1pr`3vA3i(+ z=^dzBjIg3Arw|lR&v~877jPKZ^zZ$lm0OppzkWXujESdY-ZFaC3+lMO+_lK9PoVdggt^gpjB1}rM zw4j-vYB7xzt+C8N8V`aB@%dco z;J@OD@;Y`3a#7o0r#EgojO#xoJ+|!O-`)##PEHCN-M`J6qO8~4E`FW2lp&jmigk8* zX~kn>6fY$GE!t6Dp2j2(R|@%w3p@FJjpYFUKLEf)r+`Vp@h1~2>vj2tUD5-bc3&Pv zCyA|Zdx?kM`xAtVg);zvaZcDuGk+J2-BT?u7Wsc?j1wo!)f#kSpgP55hQOyz^Q;;8 z?l*UT|07aY1nz7}?$|I4rl>#q(Di>XZOX5VE)GA}6tl5i)(mes@O$0aODr+J<&x}9 zgBJt6n1+(=GeY{CU&s8y3CbKd43{G7l-0SFLQ5k6G{)gyodTx%*jm%+5~vQ*LrD1F z-097h47Z1BL#=A94+HmDaZF8ETaIY$XnD-Y`nL2II@#f4fgFVR)jIKRW~(todg{)_ z_4Hsy4SOHE;gj;17>7ozE+?V$Jkr|!xQ%45IAq=rk~nm%4#(0^m!uF<;pl*vjR&;Z zx8XgEt<#3MC}?e`L-MM@RF_wm9UpZuiC%Z+9=Hivb*~*}9(zo5%JtT%GH4ROH7hH3 z$Iax;q<&IEO@U(#W0$$=A}C|tbB^7?ZMAdD*LN=W^PV)&{`%0`bCrgx+To|WtI2e@ zx9vK=+tAkMxH#gC^dm1)%G9mD@o%@=s5NUcQ4CJ5tCEy-h?J5(9wJZH_Us0JI)6)R(^hT#*g@1<#RsNv_GcoXQT6W}9v}zH|<2YT0oKq^)^& zO<%`MaMvg4mJayE+uCy&KH>5WjJxq<#YwK$qX+F2PAp)xw&)3sdRJKlOCEp`$%Rkh z6MK?vw(~CIXIau~?G;23KW97(_uN!x&g^F0Rpr)`Fapj0MdVTqBb^kI&eqLwS252rcAgPdfT)5DTsZ*G5c`Bko7Hgrc zRiBy(`OG%qGlI_5dEQN(Vpl6Ia?%zZ-$8=aC?W3B|A_Bl?nA0J7aHH8iV!aflLB_T zv7-x4Z-FuMWfHBO^`|0mOdNGsQw8Wm*We#2{$EQ}j!I-Eq>hCaoBLY%MxVHr=xtRn zG{v54#q3$J8ain_Vzy9gq-CgXfXkppkr9(L;bRYh+~au4I?>RSyj4uhUkJ#0g$3>|T;=E!y*<2O^xZjG*qwx?OZi`DCtAN%8rR6)-- zK&ZW+Wi!D8GMcf{YX7UDBRolEpT!sI9K|eK`>v_8)K5*mj~-58cZ$%RP+de*)>}D! zyy;t|Aw%)uO4s4E2!6IJcTG*v*Bstx=YDXG zVeq*D&8}KqaO%dIUxN{mBw4k`Nqo zIjkZ!j%shHF(lWFD-6O@Rlk8Z)Jsxh$8)AODdhV6l{N zMl@oqWJz;0Q;TKTMaO51J>K~2QM2Ubb-x|ss-U6z#=~9W#bUn`;x=A~88HQu3?dkB ze~|*p(j|w+e$Aje2*lI68hEmWArH<)lYz>4x^?k|Qih@US~5*Jm+X=rS9~K$m6Rc- z*{@RW{od1F>Sp{u3+_(5myP-q6y37KG;l#ZvFDx$lIw;OT1{Q^YAIfYJXfU*Qxgp= zXoM}ophR{VKu=Wwq+$csz1WN!({wag&Yy_e;yRIYl+~|&z26`OW0R+9pGe>l54mHm z9gP6WFcWySQlzC66N3CtU&Y>ZVoNUgIV<);+e2h`gx3Z61tN+D0ERE+^NqjWLPfX8 zx$zmZVQ!q6AN^YwJw7JZr}$K~jkogO=;hy94dEz4a!b8=yI;*r%|tEMmHBDZFoiys z48WW40HTT}=Jnfv5u_th;?u?pp)K6|l|oHM;$RSZS(MQ9>K*zX?bJxXLjxS`j7U0G zIl-@5gF50Voc$sKI zH#wi0bL>H{Z|_8%nNoFm{mq~?$%u2MJJhwASp&$4{ zVV`WXpmBhlT5l;JwjV?E>7`k>o0LPVMuQVJGWmlIH9W9SY(7$FO|_bTPGm!o44>y; z^~(zhWO`#SHN*=Iz>(Z8Z6S96md;|pF7 zByQTvk*z3eh+CT>&BOaPkY+H)ka(kw%IXyxG)_zucr5{;&dqOmhu`GVh&wOd$&8f; zlzD}x7ryv~@exjtwABCT;%!n>X#G42eXGqgSR6F_{t_vnI1yx zLFpzd$UBM0e*`OibgMee7Oh=1<)7dewb;t_f@;s@4a1_2~D%! z(FB`mr&FT|*-~GJ?jZ|x7I(>_N_j`7sZGfY1I}my^6r!+5+v;VFA_Has9b*n5+Qmd z2P)C>xBLp*@o&1RB9zjBZizFR%<4`QjwTFBd0ajvzA&`I_L9x{J8r=z`kuwie!mM{ zU><8lxvHxB9oOTwv1J&)7m7*_Cv9!1u)5fwZ}6wQ@{tb)!qLLeV4u(~&Qf;2554lN8h z@iGW-uApOVRnS;|RV&vQjKp{s0f^yFm|@8j*%R@F#K@N@=cKds;zY!EXlJ)d`fqx= zPTXdhwiKU0#7F04lp2Xnn-zxy%Ux~eIv*4GszjD-1h=h?VJ@=5l6jQ+uY^h8J<$e= zpD(6MmoYWJ#VK18IfOs)7Mr~RJL7XbX2|x>McafM-&04=lAI!8#y)3}cQ69~v-Z!C z8P>kEzvknGUk-WD=zpV#o9-B0NB?|4Ji^%3rbDGB>QXqCm|B!{C$ZT;l&SZ;baF-h z#QXc(R9-rQ;u^e%icW0>IYzUrnKAAh-{c)GhP(+Q*tk!857+)be1jwT3qyZk?C!_$ zS4B^%(&iB@>N=d2$Wdhm1(BxX3Rqi>pxx6EoAoF(t+Fca`{3{)5Jh4Dsy&37nF43& z7opN%;5!OMY%6BA z%NAQ)$Hw-a)3nf?OO;AyKM55uN!$)RZ9J0zw#7T!e1QvHcBsJUzC;{Vk3!NibhzrC zbFMCv`8~nifAz?#lhDU#laE&Y8y7Eh-j}GOs!Sr5qw#2b*TeCNKE|foeD?*(!b;OV zw8qH|nAnx#xZI=Ey}*?kiH4isbtf@IV7(MUC^5e!`sx;Sdd2Rlpz@zAbH#4O~ zSw%FWF)^nn9|*4mzHJ+%Altpf2<63q1CvXDqmspY^p0P&Q3G9hi?ec{02=1fwU6rU z+6{m)pZU1pQtv`OlJge-G!lTp%$F-Ph6*F>ku8VDu2K+^)QN!rBZ8%zqN62vo0%2$ zrd-lR3VfnKDtQd_xnTQ-4eu5kCcw1P`y2Qe2=s~uU7M4&iW?gF>hJ*LEmH}`w@sR#hnM9L z-gXJd7j!+%#S&|!Ex%0^5x(&)CDOMxH)kT6>6)9s@$pU-3uVh_W{#r+K=SIs9lx?&t_9_vR6UjvO`*a3kF?vc*%Hzjp;xz_Q<*~2enKK4G9Q|9m541+{sQ(^9JZX zBt;j)r6&bhubPeI;0G&-}FeUobK3p%ltw+R{7uf5{U9Ylj%n^lL#`={=4DWl~Yl9B_ zi(sxCc8yEgcW#b4@C{K`IG1J8YFsQ;GaJM^Fnf&^CR}4-2M9PoNF;k6uk|H92lwi~ zLX-I*4~wlj`H}^G)=Y**(A@E{=n>^l_;rV{2AhODe#%qx|G;)r&4nH4M-^A46(qrh z4G6mJa;$8<{<05gvG6)=mTjccp?5~;;o z{%;M>%?rSViTQwBKN=5;iNb1BYM-uFE29*m)KVHq9-?O)g5~(H<`f*hQOIGsZjAVn^r@v9YzDdYl29 zY4NHyn!7w%&IUKFy_iXM!GmYo3ke>#=SP!oOhFFbyWptt3g*b-KjN6tK0`aPd`K;$ zpUFXQ&f0~GYdV^{cCTpeK=v+d7455zFNQUX#~~Kw0fxNAihOn%{(Wl`H`~ph!s=ej zDgQ}RkE3@Lv&SW3F_tb0FC@z@Vb)ABn)8Y<{vK8*;TUmKLJbd$^Y29zIDz!0#rOW> zz%AuOIUUOOwE$2|CbpO|NVA6IR8nW8?>{J7l&KsA{mB6sO2im)F)gsNfdaNc5`LEM ztIzphd<8+(?jmuZxO?|(Jw;!CT$7P7TJjrvl$O;T3~p|%!(^UCo&hbvMXITPf63+u z%%8+(|BWV=v3sS{NJ1R^HL%0=f8p8OG)c=!{i+05+DFg?QgJ5Omx8Q%lC;;4U=?rv zlJ9#4Z?KA<95NeUoyYjS@PAFOj{QBw&9yX=$VxRA^;}7R4h^sxNKDaK2u?irsWPLB zS+*gq<9>6eaHDFbg9-4S1NeMWr-ZEExSl|g*g~ZAS~? zkGKkP5Qx%(k|@`MV;CWf(5&R&12=9q{E<_eg-zUem4W-PC86q#fLC-YGmzA-(rF*l zEywq*Bjqcs$tI_)4P!5~h)Q zNJ2~ng4(*oY%`6sW=U-*lGNGYlc!cjpnKIoX$Bg^EVlyeFIb%a{tmHg=Im9~l$@1| zz-$brhRXg>fJ5r?=jUw?vDKttUHNmT-ruMc3|i@8sGb!Wq2vHDFu_dG^*LNPOE=v$ z*x+{81k#>ySN^PsNX_4fG+#}=u2iAKV786uvv zIAtO*IKszvE^^v`W7mvv!p<|4cMx{gNcijNZ^_x(VpPA*Yls)KTa7j08;O(j_^+n^ z`E;Ch=h?^k=IYd~qMO?}(U4jsm{*Lqxj>0(!YX6@hN5WJW5NG`sh`1V_P1z>U?+^* z-Ekss>t^#_051q0HDo^#S@WH#ifzTT`a_Nb%~Qr+O&7#IK6XW{!iHY1S^!Bc0<`2uNC8aGAU^ElFKn9D!>BcMCUhWI6#${rEl9Dr-TZTu% z@aAF2S+Az2%}n`1u0cusBCqgB>QH}f5h6`hk0~ohH{3cGJiP5J2j&%l;4aHx4`zwx zm3FZ&y1@Qvf$P?D!V>^(Jx?Zk?22uvITKZlUJp)x+7_Cy8WFTn&QdhPrGioiTF-OI z+dJKzL6;0Z@ts`^5~$9iS>I$Qge@5d{K6;k_h#Bb{-v@^7Zv()Pd-?}=_e_CM&8RJ zOa~WbHcPm(6JPoWkv>1&=ZI8IX5BLq1CJMWbjvWmAAKKznoqR1kMO1&O88e}3Bql- zn5*(dk7EKSPZxc4?HM<)puxj>$Uacb$4ikC5)vajSCk6Lzicc8yarG?MNy#;z}G`Y!GKH`dG+qVQ^v0;Phs@wF#Z2#&ow4xQ!?q z?s9e<4w-%>UNfX=+DM6-ksylf8p`9B$N21q?b<@bIBi<-bi3%rxA*Z$9oTi;_}%Sh zW$)a$rlD%PY8`4J(Qh!fTFQe&==|T_=sy0jrADODud4^b>f#dlLD^5CW+V6i9u+pr@4C)0@kT3X{xT4ds z;O&t;UV@4^OWJ#0Aq#8R`z~iPs9e0MtUk6m-npug($@z|N<(1>on{)0>q;1w4e&bS z8@12N(*&6ux<#A&-dP^IO0ElfpKyd*lRvW5MkFQ&cV=C(h- zw9;VuUhbuX=v{ABm{3XUuootHANxr=x%<@e_abMr;kT5R=nQP0he2s-lIJkcKPuhX ziTOcNB6AfDg$1|!+To+?jENa0>%W4WwPCBww1#0;qC4|EhfbUe%8w{iPan`Ll*OH5 zob7+#MGAJLYQ6X(9d1XpaU%oXK#cr1|j_2Eu5ot5G0AfnH|UH<^(;7+|x`H#KtsCJ@E>5P~5R+G`$ z$r7CMjl-H2vtAdof$Cq(uB)&k4K1JQLTCg@mvy1v@qn5qlF-3Iz1sSISr!>!=v-`4Wwt8 z&L}ySlv`&TvDtae26FMVF*@X3bt4gpwZWEwIQcuRU3T8=BQMrUPC9<-;SmcBCKp}p zZvI^oC`#bV%uHYu3lEiqc)l@M)Ksp}-!YQAh$g`~6JRO0Deb`$)ob4&zFo}2@}T+M z)&89-EY;!e%%0eZ&EmB`$vRTd1fMQqjC8R0p}?+}2oplEg--wtKObNaxl1;Mad*Df z0+-fmbS)3Sa`|EEjwJu#rqG$Fq4`*B1BfKQac=HR6>(${I|go^oySlvlBcXGumjf{ z*djZA{7v0x+=P>fgRt_L6PbSLg`@Bg)7AoR*pd2lv+{{+AkP6#%IUT(CPuatCaJUU z*iV|gP0SLFCj&Z@s<`wsCQV~c8lu^>S`fDL8=o+U`GI7iWl$17Mvdcq`dsDbFHAGh zTl!wn#xcvfoV99La5lvndl*)kMA}@cLFv%*T^gU%MD|0fknj?4;*$I>2 zQ`kJ5D}Pv#uHr$Sp3}q}adCOz~|CMLF$Q?%JrLlIG+fRhX^P0DsVQEGnYtOY_;;q5L9G~>XW%k6)Il1Mn-wAA-FIf&sYq`l@c`^l z*EKmGLWd>9oD!z|WDiQH%sFR%xW`8(ZPoGR7v!OO1wBT<{=9v7t|@wNKqXPz@!nPv z{+rWDZqQ@GZcBO4gezKDJc6-P(g6hGrKTM~W>jQ6>l=x*T1UQ5#24ZEWfU70SUsLn zBJ<5B0KCsDqSz1=LSr7!?5Vc46Yg`9AF{;F(j>egnc z3>!C8#0NXq>|H4(N|RD^8ta7C^;Rk6023`I_z^oRNa+iiD(>ooTlh++fa2jN_yNUI z(2n#Ukf#BIJ79vD@CeG9kSdv70~!gPCLv;{SAtxMZBYvDkc!!9TBZ}T`@%I9PMaT= z6gu8x%tQjBXphKA2%$4yAkF$^WLV$xa+kiDL1f4Ap~`GGvN>k@$>$!yFY z2=!VEw^c6z?R{D$BY_*QWTk;D33Q!Dq`c)88m^_Ee38Zh4*|IEqotW6`GTT{OH|Ty*v$y>(ub`J67LIh9gyY{UL_DHeI$*ay zlHqz0ZTgjJs%oq@{YR#a_{vOS*Q^pD`N@G?B+Puh$2AK3k^fEP zv@);;U0xVT36!OXEPTRZY=A!T!8*khh+Gb0K3TlAIJzyti0sS}b8*Rb{9$7r6ox;Z z(i2ly7RxPU{~ZLh@DQ->YU+_;kP;XPFm;i{ro%ulm|Re0^;;buT)v~#{ETiqB9k;b zh94-+z!Q7j!8k0Ghhr&0eXn#%W;-+Y#_XQGNXRn;>t7w;#xpBkl+-k!aQjj@H5$!? zyeO-f)>e=EfUp=cABee}2ZMo@hyvlF2zDSkX!|(zt^vJ8wD{$dBf|=f{>MNMLL@H7 zj+W^Ktz+8;U0{W7Jk6fG$wK%R7AY8mgk4N;dg!x=>Y_?hwSO+{X#fD|z^4)G$YOX9 z4UkJiXjcWi$x3*ViDxsaO&9GaWIZll;LYm;-}r4F7Ci&Bt)yFRQQMS81^Fjn2cC8> zfB^bmPJc1zgi~!9A+)iJ2CYc#g!q`V>qE?2C*qEU>%2)7!(9ejx!j)JQ&YDU@GK5F zhTp>tX)VukSkpMycM}m6XH={xk0%;B57{BGzR=pDY&-|RjcSV&b}5I({gOYKA%H9> zf%M`*1C+xrGS8Ul#=rGt>JZ}XesL72YfC}*;HU@M;P3rvB6jbI0|L-h6UtT5F-m<*_LU!vVRB40B+`K0VcsisX37s0qV5Rq~g9Ov!pWsF|twIIwwl zmuPmNT}zVq>3$R>|;Nvqw_?f|E3OhC_1lIoCl1vYf2KS;d>W^9f%L`;yF0wv8W*x(1C zd`zOkV(S*mop`qwb(8B7AX=J=gw)1UA+UTEeJ6oUiBKLJ2p8{Nxzx}~$+4Q@SDL2+ z@2$EV8lqm*Lg@?3w>+V?n^x94cw#q;(8RJ;=9hrsndAV~It_{en zYTlEo-S*`=3?jt%jI6>@y$LB1MJ)@5;Al~k&;DJ-)pWWI;m{rmNArKJb>Z<)=IC$$ z{k;&;G76U>htrMfQweCUS&JN5(ZEGyXcO0)%~u7VdSp4qoAd%_L%e|yx}B?sI#-gRkh&Xpr#(5|DL|<{AN9 zU}BuKG3<7R)O86EcqY*SaFW!FFzGp*5^l@3lyvme}^j2P7`>KQqHnWb+=fVG6Bln*Wct;hT6*Z10ZzeQBc=EPPwd*bJSXpv8 zhSjE8^mG>AcNEx*O$e7hS47S-U6dN*FrU~L&w%7oJ{`=%wmc`0jQj&>T@e-m`ToAY za4Pv;12bq=Iiv&Ppp{Pc{34s~a8302FobE)*42!4&#khYx&E)M14A?(&g$lc%nPmK zTh5~-H}IonC@$DKpdaqBnqV=J%af?WGn!wCNE>Z64)ifs`y;mc`ss~-JXlgZ02VJ+z;ASnz6-W2*8H~JmiAxeuSwF_><~Wc?k$wJw&v}yQrZ%GT zF0JTC>}5p$>(bU1p zUFVOu+HVFLy}&Tgv`&EbAlV5wjYf+z9Sx~B4ej*lPQ=dTwi4?6EJPCx56y$MjvB{P z3i*Da<1F@J`%`$x%r=nMC!($y$iS})jZ_~ujS6fAj4B!eZZ7z21_hveIk@L`h~UTr zB4U|Z@c`5^b^)%Ew$nr;bhWgPQ>b&e{D!|qvG#{+CV=gSEEuX*49)j>2IIF1YF0F+ zW%PoyJ9qnx1~!olq2~1y$^NlaSG6Lx@EjiRB0&L57HbD7&$XQ}AQDILIG`$a=$lFW zv?zG%*fp4p7c?hTp8Ds3)&wHp@QOZZw)UpWlvWqW-fbdMj=X<=QWD{&!?XnApcZ+_ z?%F%nef1VNpn)L*isB^t-{5xb0A-;Pnsw;S=0&K@00XZ$9%Lf}G8MA8m_t)6i z%9|pUes?+*=f?6MJcq?y#RNf~0Zr@|XPg7_wMmsT2QIi*KhXLce3w4Xeuv^PsKlq!fU z{r;7l<`G^!WU$=R=*v)#bH;UW+VhKxm4G-;$zf6gLKs;(@VSee<*I>C+@C64SS>|! z2YfVL}p>D@t*9-rcWwWA2BRj|0m@+4UU&gI6)tWk+{9R7$`M zYK9bCR)6d1OeNquo^a_Uk1521oV)5y@0=AiUK%Xam!zm3H4zXov3q*iIOa7V=sz$p zHXY8)RB|F6an_k^pR7bty(gi?9qY;&^$Ma3)2w=KDK3>Wh+5uQMsZ~^cYvn`_3m^d zNo7cSc?EypWN;z{z+R`AuLNFYQq`hjZYxhBd@*M$=459v79>nnaT*^a(qhB|O`wIM z{FR9oS;jdtt&aev#!*=W#XHKVS+$~1FFzirWP+~w_x%o!Hfs%_9;p9uCa{kqIHJDG zv80UK39q6J{iJ0+(xD-}_AAi>1_M)9Q}u(Q8BAi|U6w=`TeS=nOQbGky^52}h8hLa zDi|cT6M_eZa%@|*gnlZ#A8r9M`ZJa3iKV5?ILzYAN6;HLc>kt#gxpbHkptX9C`)-p zVgy}|XfBE7n-4+Vr`J<7jS;UK3+Tj~K zm|4~F^f#cULW>>YQV=FtEHb|8NIcN0+^rj?UQ1pf~_h=Z(*gi%TYUxzNbG{qxD z7w_?D%HV^Ilio7)SgJRBqz;r6P}~HRFOUcmIuIvDF^mj0I&&a{^e*lz8KJ7D7{an^ z;}9KD2?V|E3DYjt^QR;y3FY^+6OEmwfmu4cehqS&rL7=&EBG;!5jmHs0 zDMc)WY?wD&ui%^|C5RmW`#XRi`L1kFbR2R6K=?{Xm2p#-|JwLIKnXf?JVI8%zeu7#NIX!$7|(FH=_qM06A3Q2*u}$QU&d;#^b@uN6LM^;#elAL(0nsSz(Gjz zjqn)BSA$b>MIntW#5L$N;cCRK54Y-8QXB6)9#lsvahl%<8W-x$q-8>)yGZVXYDQx5Y zKLwl;2A_wK29wWR1WG=T2j#UU1R_FJ_Jz&-xVax6yIWS|@2`JJ9_ABE?T_Cx0tn!3 zk$RoQFPcEeZu8ntR)M+AWj?lJ=Jfd7*S=}n6V_yx8>29xvhs&w_r3<(Vh1E?u+6&| z1+3#0)w^&WTmHL6H1EcR5=){>71w&VZ$FXR{7Qe3m|V!w7HB3MZ6MkWYJ0%MjSKwO zH_wAAfPAhFi!j$h5Su*X45roh8 z0`j3Y?879k0TsQ;P(8++_w#>!VFvZfTJKKRiGK;0*l$0m|x)x$o#Q`IzO>i7v z5I5v+ad_p33=U4R8{_!Sm>E5yBAy&A@67pARY1=E{eFS1!_=wATWiptk>Kxy?GADValq zl_Jml>Zv|3S>G#%8Vlo`rIiaD(NoLC@bNWVhUN|;YI|(4F8{S&t#BWc3HKA{!6k%$ z#DeduVgH^8?xcucE!ZCe#O2O!*C@MpvfOidH+l_$FKkL+H#IUI-a$^6P()hV5yh01mNUFq6zXV}Pm4h^-$XK5eDG)c*8Hu|OYi2Gz-LX>ZJl zxV>PUV93{td)8JueS|u#(eMe#n`sdsK8_Zl;~X{dWe0v;tdc3eRem1>P^oTc(tjWr zp~18NX4*hx#xOjxwV(HRc~HTu4>P9x>WcXqsk`+E$)BN?L;;fa?vmoZqMR zD=UX|X!Fkx@l|=pveqX+0WvcN{jCRO>@!}#kdgR1gG_@wgiq(2NY{{2XLWbqHKhoZ zt0I>BB-f+w8+>grS}t5)Ts|f)4V2G`>1frDK7Xw(bTp==K69HTKo*mmI4?3$IDNV# zTPCH3cqAo{>=gtk?nHphldf(N8<^gPFjr3_)!HWTLXr+5vIY z6v`;5e$)nyDm>>s&7Q#5kUn>Zv^o~$vuWrU)ro0~5qoof{96q?JT&elTo)jfKey(- z9`#D!{MHVvmBk`%;p-lm6%H+#8l#YlPRp$UpHFyK7Pw$EbPc*vX6PSjwXam6Z7xpm zAl!PPj^F>56kKUmig>}Y-;5Z`YP+Mu;Y3uW)_@) z&-H%9-~*aW)i2R^Om&ML28i*X+W%Yw^)Ekp3?(0geFOpzk-Bh+?J;{H)#gPuwL7Z( z#@`wF*5w+AByaKOrBrEK^>~QI8J0Ai%4h@qLQRs8?+0Cm$fXp7mlOf~q|5gQ3ZJlo zyA>uf?~)!+D9rT=m%A2&i{+D@7*o;LjU%AxNY*7|KKMln;$3DSppt`LkQ>uhn zFz>GOYA5lxp7!gW@Hu|4yI9WhpbU7sW&YWd(Ehw=_^kX}Qh3$D((Xo3LuZln>lsbW z7ZT=$vLET``w-mOr{8!p4{NxX`X!TJX9(t$N8guBA_aueDo$|dS5C_X2}b!+htM_o zEsV<7J6gm0?2(P5*U;Pn%zx*gZZomG#%^?zXLNzTN8&)ib|yaXeECNZ*OvTp*V_(? zk;I1lr%Epftk%+DAW3TbM$D+};x)=Y$>6Cdo%XI(`T zNlp7I6!YBb)^x%u6$jp?SPzDRyI{Y!?ibYwI?WuZLS5pg>B-DmIF3GZ_t2=DRVm;p zwQMfl!_K-^%FM&k=<_#DTu?qE4s|mVbyQ1Q6-R1Aw*vqQ=X}!0sQCcJVIWa^wNtx~ zYjdH_?8X7L#=XL6A>#+#sn(U!Z9OKbPc4|n;r#GwdbC`sN2q>C1Ud;4Fu2^D^QFIo zi5*e(w7)=IYy7$6^l?-~Kq@3H#$ppC;U6HU1}-B4krK~!8MteNB?w$>X6Pi|#&^D7 z5G!TJEGg=S3gRPsJxkfS91b zF?IdY4cHAFoz%fm0VJ3R8nwz*7Ln6SV6Y<1P|kHkxJBNUURatSh&K8b!u`bV{O8i6D2Yj!p;E1~-|Fqlo>b&E5> z?_pKeypS0srMJPM*atuh!%|S<-&oH_^bWb3;;A5AVn2m+9aC#-f473kwjJ5D;x|-p zWxfm8*sSpJrXBE*?kbOcLWa*bZ`+%TNn8fDq>l#Wu!j! z1iTdKXdCyVYASsutrmCl+Fr98Bu1wMz_y3W$j;{}2-E>L2`#=9c{!5N+`2C4>8!_U z=tn|{Qqkd<&X!S=Po2TaU&CIpin38Q0EnXskH|>IevX`ysV@@G2CvAw;e_FV@PzN`cm4lYqN*miHwG`b%MLZ3 zp_z8iizD=+IPnM!w%Hev!29((wNL0?vC$0+H;>&lSg#D>jNbvFrWAwRwVI-cPj*K8 zklqh<)CpN-V#;Y()sur)@XXLaw;#AVn5WHtmCeiHvPKhj9j40cUTOs1TOFf&f06qm z=5rFY>t>*tP%kkw1zyz(k^7J^-ls8tww_t~Qb#3ogZI1f<}p^qLktv&8xO)Q;j**Q z0x@-o-q{~V{1LV5Po83egw0yb58Hh_=6XA zH!GhHx^a9S9!%Ay;6tik^nFh1!Z0wH{n?XbNwu-Js-8-*4z0MrbyXkYz0a&TG$h-g`!3&D zsa{A09+&L)&ICd;06NY30TuqZpXE410`+k40)wY0ZP^0?9cV)6GU<1$Hzi3nDNkbj zj^;b_UsC;uk|qWPqHkS{7*wzz>M(C|jV@3D{TzDXMLvsXwZXIad?AYBO6=M-n@8@$ zMT8F-Ov;Q5ghfU@tT}_gp4N5YpIP@wA@;*R1XF~qeCUwAYsY0oY12W@nF)jXP_ z5UDp(+b~t(J;}1+mg)%lD!`ofDx_K9xN*}NL^m0jr2Zd4G!jLF%!?ScK`(Nq_U$fD z6QP=uWlY<}cMX(4aGo&J1m`RyZhMtEo|#6#lkI*zqG)%dk)G-g+=q{I;pfO*6}HQT z5Fx*$=5`5(^=M@_9^ooA>Atm|91Q{fOC5<({@R_`R$(nCY#VV{qYpOyA$g0IxO3dk3lRN``ZxxJH^PGcsVB&9MtiQLGKGe2jNh*E>&xNLM0aB%z``i7DN|0@%cZayKiz17r^9i zpdHPIhO!{ifDct_YA*8E(8?&D5T}xA*U6(~1r0v>8|LP=l>yq4gHQ=|=}IR+w4)AX z#QLEx$}HQ$hIFTN0^0Ldm+)jF-aSIfYnp2p#A|xnc_B(fTpUGg+MH$>cvN#QBPp(l zVh{_?jbN2tf|>>X!TR}uG&Wls%1*DDh_TOB$2N9>6U*YI>m*4y5Er8DXrhaCutu<5 z>z7Njwph?7THUp3Wemdi@Afn-P)dAK>&j8*WbGV)154g~WzuQP>Bqd`N_S=w?{!37 zn3a#@1w7l|P5AHW?q9!H?@X&0m2dgjsJ)aLe`ujd&uUwy`Lh2L%z5ltZ)v;iA-zQ2 z5DJU+yn_CO-eI@R-7;6xh6_?E5M306wo^+{%7yjszDHxx9ER`p>BZN{%UR&Wx%~a5 zU-b&A-V%fxw)hTj{wY-4AyXRRQK5?fjU-S5+9a_Apo(e^VjyS}eHzmx< zuE+w5i~}6!a@lIvl1QiY0%z0Ovzzw;kj$EIn@xX+mYC9`86a00n-)?KUk#iNB-8Yj zrUe|+K@CMI7nlis<39|Wqzcn1`ute7lp)t(`z6@&{zA0Lar zi6oJ4NnOKkTT#1>D!SHZY^*p=eS+gQM$qzM)$B8-2^wSnc*9F-@VV&7mQ&!wqlQmq z-AVzhffQybYx)C}0eNh&dE)PpZ6q^|e)l3Gyp@GRDx!yE z!a!^$=X(&n9A)+R1ooC`u@0>7$M6asv_lu6Xi*<&V!a!@da>-;sH}Ico~{!RUIVH8 zF*V!`?k6vi0<@}#b8f&~UT|x!oXfWqi!;KRj1iN<o-Fm38lStDV^5q*yU^OsNki6)!9vkn#lrP-YWhk(2%Pwx?GDbTRCx}{zBBNK&G zZcoiw3^ZeM<;gwk!Nx_pPpZ+$E1;B*DlFN=>}5*yj}ddIr?)A{eaJ#Zemqbq&5ML4 zaQHX2Nu4;`Zs1u69_apZFu|T3f5t()>00Fsl}J7i-#H|JH=MT>A9}voh}3;ZMSMg_ zK?Ge4hxZ%VaLh7#Dy(9U%D87NW#~XI0}?&hefX4WufE4)$zhS@UBb)CY32!unkcF& zJu9-7qOf$pJ)$;@g5R%{72T5PmfcO{3cl0Qqg1@%MhwiyA5QA7 zR2p;B)^+*6T#Sl*r?rF0s>@CFTC zM9@+}z%JDoNq5puY=c|x!4w$}cZ39?2HQ}R3d^}6&@fN6J# z9Q(5S*C@-!{V>FGb%Ad6)mT<|r6u!+A@YOC`-qI2(%}}!7KcpwsmCj5d;`A}{LK3NRufA^;CK(dSJ2{SAchje`CycM-JyT<78ajg#-+McAw zKa!6zTIEzlB%UQ^F|zDldPExlA|Zsk#yw=1*PeLCJO)s&jJCgc(iu=N6i>p5d#I+x zgL#c1c=5Iz1qcsV?3egt$yP?~_4s#8?$KAms-|lCq7wAS0}3p=~Mp_-+b_ zqU2m>tjpVBLXl0{cPRW@`x};e>-X2v$C`$qu;HVi=9>4I!a#(Y{Ob>sE9RZ~e4Pzo z0J5mDKUquiT}-bN?SFIIYn^o!cr88}wzk|2Qcajdg34ZK$Nzi;c4#4j$iLK^Zxhs+8D zG%USNN7x)QJ_M&1`}bP8Ec1R@*k7NR(Ko1{03R>3>&6z}%gT+EYibb5RH+V6Z$W5g zg>w3?F`2j4X1xq}rl}JxX%NMJ^3+r#YcR|Ku{fUmoTlkA$j?D7LZ!klZ?$GIFpLx# z-xBAvp)v9iup@IKP%Du{B%j3!+yTPXtWb9vSq{DWe=}5v(vi|91=J#Rf6ouWge4>7 zE$q#jiU59B6Jy4Jf5cRr2me&sgr&?SX>W7aCzutuHz4jx=u8ap7yT}B?DE3JakmI) zb)^lx*MUg7CAqaBiX3e{xsmvXW}GDuJLBWY5(3XKJUE`#K*>ii%M2F9Dw-H{YN9Sr z7AD=YSpVWHvZeb#iI; z5Rxn9p^qYAVS9|U7m^iE@E`{sp+0XNEMRy1OeU8Ye@;dU`l;%ZSi$*^pqI)aJAn2C zHdichGBsD*mtSQ6nu?YJCxkO*gQylNw3My+;Mfklcoa4RIvgm~6I38jeii>REz=RC ziS&dl6Qx-YMbw^n_f_NXdF1=2nmtSwSJBD&JI2c*|DB-wouQrpMIrn@s78d$|I~Ov zuL9Xj@7)*b>ya3w3;mYPhOkyf1PH^`+^XR0ixg?7QlnyP28`{%Y*DvCjtP8k1lr+W zJKfj@oKpqv$T)7(C<-enj!Qm?Tt$s7g^Zidy=Fo_gMr;X1A1rCz!TUW zrrN3@VV%F{w(->TNuQ_0=IAm<*+tusuk8HmZx#!tF93r$Jg@3{!S23f_giPhLJ8kM zIYwK+3Ls+arcgKEo1@ZT)6rx6o=#Ig>_uq>9V>5oyB6izLTF*CyjVK_un~RV-3Zya zc5!W!( zAwN8GY4l1O+p#P0&1h+Mn;4m>c*R@+VFp{NcFn||8nTx~gXQHl$#)s)F7@fT;q?lb zDtmq|aBJgSNjxOl>hEZqFzcG%ucEeUv3W-vx$zi>S4k9{1+s!QEy$fgu;8p_NAJqM zk}=`iuk(hJ*!>>I4o|Nt9)HhW8HFF__RH$v^(D zqX7kpW!oH#fd3}FLMLlA3At*I%Ov^NL$A_W8&2@P@ZW<`CWnl9p`x40ld5MkoXS-& z7*X;z-Yn90)@&0*@=n&6S4QjGMq6oyrO*`E2xLGws@4e=M@Xq1uNyaMp(O->)7qm6 zaw1HJXX05a65ZVh?-$2aGl{F;C*?85x%l9F1$gr^f%wI%_;k*HP{G=ab1D|gdw5`T za-ZAOS6aD1IErjr5@jq;fUJI<4ONP(=w4bH^n(wx!JlzKH|CqGd_fIhHA0jMA!N(} zR+A&3oR`#gBH}kNNqMwng}s(EvpW9Bpx!Esb2I=X3>+<)Sm#S3w-Vb}q);EI{=^o* zYGXz(EfKLM+4dfxAp>pyf_wa-%R{r04#=GvNIDW--M>0yv`*E`Do;)%KRl7X`1sG; zzg8$G&p@MqbBpnZ9n=R3aHQ2$C?0rWSDvI#Sd{PYf_W06Z1r6xfDJg$-WFwKXxFa+ z|3lOx-6Op>15si$d-lBtqA5ON67kn;MA)3*ILt-kX{ktXy{IK<{Q%`Jb&VcFMrPHF zK29i4PRBa>YOON3>~Z~o>!EfOJAysHu$}{#7@gjTUTRsFVX)BGl2Bh_)(kQ&@_92@ zOY--WGqeftwDpT7owFaKr?+DB!L_DRYrd;h7f^JExU`l*u{p%rCAK(Yd>n(fEt^G` zBpEq8h*wx50;m>~*hwe-z6ja=9NDG&tvkfEt4etqoC0nAvzG`XY3J@V_6(rZ$P!!9 zqx={bQrL8vEp>0F^G?VTrd3vOZJ^gMYQ&f@s!4I*O`=&dQ8BOD4ERs3oQ2V( zL>0;EYuH7RE|sZt?}P)n79U3}M99F1nJZzg3$4|Y)j=4JI|zPb20+)I-48Uh{%0aE zQe-(5P1hOxfei}Xo5FuV+N#&*?(@Ct5e=Um!3iJ1_3qhXo%Ry*EXSwmR;(cT=C;`S zSd9H4+dF8dK){VMDs=X{)}PB*JuMIcv7GhTzFHe^Y-F`P-!dfFeiLl8SWi=fm7m4% zQNGOX6z#_iwErE;F2rXmAg`DmM{ETS|4O)qLScO9^${LR`hOfRhTK^sYge1EB>=u+ zyv?|x+({SrKO+ouqL>~gw(C-fV;)E^I*2$Qdr1ysP3uU=uMTEfCNi$S!dr(y*I#MO zu}XgKgfK*t=_~EjG*ASOA{_rrYE+=ePJeNBV;+mj*$>P=Mg*HV4V1(P7qFZPYz>ZC&h7hO5T-D zSMXTGd;Gj4pZsxbs_ENp*LJYBGV<*Xk^}1a?!_bbU~wuHXCKX^<871 zyD9jSZ*D)___z21vTjbUGw^K(%Dh%r5&YmuQ4YC-^8G7IR`h#wEHX`O9%UMGsS~iO zb1JfqlO9D$V_`9pX$HOaM-72D-Fn{6+IZOl?0%qA7w&qI2fVd?efvUF4L|0K;*WP$ z(~Erh!8)Fme+Q0i)(}!U=B`Q?I4^O7_8Ie^{JJYBMhEQeoD7l46jm=2176I7$ z7nU7d^YKj*t6Yvn>H)ZS-eCL599}gQFM=XrH*I` zU3+pWfJ{b~Ly+FDJw{1=dQx)wN@d zAqw8o)5FZ%jJwo+wT%eeq_cW0CL4}VJk>vIGH3TZihtTFnSf4PK@l_fl@Cc*0Eyjz zBxgY?Fns%W!PGF2ujGQ1EJ2KuD(nG?6y@sh>GAi(Ut_#2k5lqiWo96c6!fcL0QZM-0iN0?@Ij$z7gThI-gRvYrn5|5MOAoq6$s_FNNBeakzxA+< zTHUyk&Kh4lPI4Qc7p2_ou6QpYqMC)!Rk9SZ$GwcOV%C-sGN`s?_ZGSu+Ilf1%6r=9 zPy4}JZpkvvbviv&>t=5XH-W)VtC63OmUh zI2q{Ik6No6D2ul$mzJLY}n`K zSkN_n8n;4RIrW2`~ zQv~ZJO8B!WdE(fT>QZ;xhP*U5rqwD3RU*Cmr8M0eoPSBbziWA~*gPg3qvNCsR{C9)r9NtFEtylLh=-~?^?bsRU`Uc6(p@l7sJeG#$l$w2&O`?Hu{tO z^YZ-n%t03(3yT+B0rakP`M8D;yUA(fnhBU>phPuLj-^2%ZUQt(J&Q_o~5QUUt!~o_%#sQ z7GA&AfOGe@^D1N-G|$td0s9pZt!jKX>Oq&{5N8Z*&*OH*`TiT zM@3cc{Pk(z!#VVTtN+swyA!eD>OUA(5k15yMQU!LVV}GzspkJQk?A=A$Aoq`&+iig z;dWTwb&o|59QiiE-k(ShTneGSgO;aXqu4hy1;#RqKM6zv&Xu%tQFh)ofLWs;hk?4d zttqr@v>$LTHbb@C^L#aLxFtTRp}`gu^HmtgEM+EePr4k{wJEIfmit4ji~&3qzwoc# zFJ5y`1sG#@uSlCd$|K2nSkU|N_;2>Xt5{j`WYDouM}Z4`&SuB6_*AD*?$x_6@5!S) z^K3jIyBn8U$iVz`_VO~PSEV}VD!Ozj15kf6KixUe@4z12QmmCprKA=PMc1_PVUUKf z0Q@bP0Poy2@OZj6dQ}*0vNIue`=Uu43dDRj0~mKfo!oyo)rFLgAN-6{)ZuWrE5W!Z zxutW++BhhcJI{3P4@B88#7UnZ=av!z$8)zD0vGondDmcZ<7(Dulk#L$jl-Lu&|4~I zf8@DlU1tZnWxmwKce~aZod<_$Do*+}nQ!(_7D!U?NZX60nocBww@R6%NbJ?J^kCyC{(WT zkw^)P)3BqW?~oHT!c>$l=@R5zzHcY4=?!_Q_)II5A)B&SPpi1a6GO*=r!L~Esf3kqOCBN~g z4{XZk`$Wdpvve`+^U5oJ9vSEb7NYx=TV6eRUC@*-{KKbe+H9(vlM!Jw^2;awo!vy* zrJZ2AS!|VzzOh&FW$}lf;NN=mh|He(q@iU41fEu&I$=BF`{|^iLm+bMqN3l!CN2u` zs#?JUb;|Onu}S^$PFw?_7F075=VsR0ta2P6mLMjL_HY|^mR?gh$Odke&b@?z&|6AV zkQji%c#<@8*TZE9r8xH#!~oL3cJo|6N_-)h@XkH3m@w#1CdXDMqlYJeueW9hK)j>Z zH+u9xHD33SkSqib1~-F}2ZWAuD88Ej`037PECZ&NCGufR_87xl{-_@*b5TD~oE=m% z6S{wJv`lG_iF9Zdo%M$-&ZSox^#tr79EOXW=S%V(aW~Ty^9?tcNN-0_yF%gHqwQ}i z&1^I-cQRskKX*K$u~)G&cMKs0Izhw%5{N?4;PoO;1q;PAanWy%(l#}F!?jy3%3epX zVns+U?d?rJ)$bev-J#jeq=eF$(BvCwZOT_}gzfEOu6VA&Mij`>C-0 zc;|fh0v+R$3eD529;SP!I{2nRK+j2FJbz3!cc^|ZKA=%$vc#;@jYe~vN+SzNg$AII zG_43RFB3x055~2o$rb&j7mxR16+YLeQpNk0x^!b@kfb>_-kc&fT-8oc($q2leaSd5 zZevUsE#gdzKS&8(ki0BjGB&Kdb+xSY=MljRx;h+CKEq{u zl9N6#m8I^iStW8)Me(^zjy*~DnIKEho*=}#f`z=sm(Odt6tTOP)K3CSpw z_oCnVUGUDQ%2;WgiZU|7Y9a*2=1Y>!`SS5B1gr}v8%PcgjZtJatT-g>C0A6*`|TGX z^Z)x09FKSx5&l#FTArFM;402Iwop|2`VYi-?u%uapQ7HAW`k1g)^iXKPM5Ar4$z0< z6I6%>)@W46JurJkN5I+%v6-jzW*`k6L0rY;WG5(nB=ib5SE!%}*UQ)ZA=!-89RQ4dNwaSqMQ&ea3O% z{6?;98d7M?l!z-6dj9^s*ZfqBpA2wBGgqP;Fz*-r+-ya{7^vVDSynROIFdsaU@eA= zO!70Aah|v40JV_C2c3o!b@$S_eP@!-(9Vl8|AcUSQNB`k^V+A|4aTruoVb1bTOnFi z>)*}OP%~0h+YQs%qX;t-VdOx>4v%KQHgBcY8^<)jxnak}S^3i3uk*Y-MHCFi!o%6e z(~NA!3K*fEX{DjFU@9a`x*j1c(uq$uqp02>+=}(kO zC?P|@StzlEvi}8*T~Z|mI13pgfr4@TbL1?J5a<<}b|0n&l97qvn#57wR{U6xC>P$( zGNC4#&T{1ZrPz&gb{F?8UgJ}Q_19N!4h754{dyjs&KW-2Wiah3$1Eq6Vn6S`qWVC9*btGqa1d3BSUfDCrXzSM4c-N@TR{x9vw87;*yNj ziNG!n8VZ96(LUgt4rk#I{i*e4DCS8}E~O&jRepfn6&KMM_-)Uu1ILCoJ}TwV+iAr- zh7Ws@eDRr)pPc}LN~!E%^4|QMNJ=o|glt#NeFfsL+;x`Hjh3UpzFHPJS#vCAzyg1l z+z5&&*kkSI0A#=#9_$L}qXZFe+vNd1u)Hjj&d>uI{2Hmx$1Z}6`sIFLB zqa@;**IUrQ4AVSfUN~@Se%4`1tSKdNA)V1Ku>Q{J%;5~&yN-B_gsM)U_^-9p9`KpU zWPTOU;(px+uV)}oW&ab3NtfAOdUV{W2m^jF;`lFB$avqH1i-hl2JLCikLpJKR!M&G zisT(h;ZxR`i3&dhs#Nco@?E(t#aw2N)!JeU)wZ2`(!FMFzt5e^5#uKL;&aN%;Ti;F z+`n~Z*{0pbKP@pZ8+cPbB)J!dSj4;+J!@45hC>F?#__Ry&D~3B!(B5AS zzT?f`TbTSo1U!xPrX93ceXnvc1IQgq<^Giryjb=YLv8P(>|hNcXrsMG2o#-9~k*5^deN8*{c%C`evf(4z`!_F;X1A z|2kUW+(IzmLONXxlALo6fBQ2*F0iCC^9uYqReOye)9mJ7lkRMCjhzB|%~oOP_aE>0 zev1dn)aZP`E=bG1e6{WC*oVIlBYXWRdM3am_NA{naXj4RERaiS4)7vNHhHyXX-mxXPN+i7#^~rg&!yr#JrRR8Uly~AKl0x0^TP4JURfJ-V0?YJ0WSlv zDmCJH>-g7FD%G#hiB-1_i%ZITTn*6fMh;WV5(7!3BI*gg_}!zoWVZJ^HFWf>j4*OG zQzxQ$zNlM8^X`7NP`;1^_bV|818}QspW?r+BEL@6!R16>_U*Dbh^lD(QZ-i=##t&0Ll`?mjz)*9c4rSx7@HZs7} zgXi;=QKNSGH`tGX4NZfmmsSmNafrI>^A8N@+iLzCMxWXTLQju+6O2RwK+VcD7b4xyoTX`;>#jW0?p*!uO;H| z=0;M8I{knoFEw-c#m*q0^X&5$CidBydF_cH%gOt%oQhtJEe(6@e~PEQD%}1CpEU|d z6U{%9WCD}H`i($VhBFdMzAD5gD%&=+BnZ@rwI?A0VBH?SO^;!yv(Yx&SNrsGT|Z2dfZAp)Xdg!r%4egCz0vL^D-?3^9FVKs?()^98ZqzpIp8J& zzIV4L`v(t|YVi(Di8~KL7CUM0MkuX^ul&6$6G@M#*J!5P<1n^?Rxgkq1e*9uZpq&x zl!s~Zy)C^fc#kQ3u3h_{l*)Bfx$Kn-3KYppql5($DHa%)Z-@LICqty_otJq1Sakyu zYa;w$ltO?6Mg827rn@6jFIF%*D)5GxenrM|Ttv(^=MwQpwko5Mb?jZ?Y#Ad4 zTXiNmFLsyd(%W~lPgZiRh$P2w`K85UmSZ90F9NryY#Uh3(P<<}Bl4n*E&N6VJtm#K zEp&wAipZpB5L@M%O3>>g*F34+mq>_inZ`6CHGOy@v=#8%uQ5*PX$hBV_A=9KrMG8x z5eK{ne7vdd!~8Dj_UyV^5L&3?I*MY}B`=S$s#mO&d|yEdWj7N`him#ZgLjpza`iZ8 z_^aIx)By0oJ}L?`FmdG`(VE55dOu=w-I8mXioyf_GM7k(GZW0H#e}a6?E;8i4$7mS zcz*y!cqRjF43}e-@<-@yr>s$|NxW}Xp`>a?;t_im@At~ei_k->{7ixT8S+ZSS`i-U zeDe6F%-qTod`rA^bA?d#i}*TJxJ41Yx!s|4%k^c-Uj&%yvK)Owu&hc7=-X7w+7)Bk z?vLaDe0(n;Pf+NmFBH`lc|(*M1ns~215D(A1J*ttlE1qIa_eU-RT+S=j88UC^)?28 ze=#epBpmDv6DIMApMUYHu^B$rR;S$s0}z^dsi~h~6VkY=A2ULiNHt4R;++5-rW9-W zD~=4n2&o2uSo_a#d`En#I-&^D$okXD3%13NcE(it4kptDF@d z{-fSduQUDGP|TA3Ul+*Dgb>08>)Fy*+`Q8}Rwp9Jw#4?|xD4Y1>7ZX!%Bf z)&mp~Bs$%s`WV8)Qp<=5CBK|7j$DD05uGJNlViUf`U=-*yHO&32yoNL0ZQ1G`e4#P z5e6GU1_##wn{7Xe*^S_05)h)eAL`qrg}~Kqa#qs|{495j4wV+2|mT_AhK#UxXiA>YJ3wPB9s5WQq*+B%IERTKEx;En zR`g*UN#!i}SYwF&TsV?ae6P1L0DWpB?oo!CHDEHTmA;Mx=UWF^0g;&CzBuYFkoUA3i<&a(gXE%s zTUc!lLw3V{v20D+^NAoB>PX5ZAnYvhSed5@64$ISXfES>yjrZB} zhx@@M4t!6K#PM1XJ<-~!1dR1>kmg>A_>M6QJJp%vTmk4*?fllGh5>?Dc$wG_0K|?Q zXA^XV>)h6X^k58Bv%qK;s;uX3`t5Cckq;|rkj5)}?u_!*EmHxO=R$jIa{r0)>;9MU ziWLb@P#x9v3dacR9ef)VlRK}z7$Bvbgiz# zzy@E@j}yp(0$ReP&ZeFy@8>Mbv7Cm?7^fe~8m$IF=0&_;R};D$)<%OMqSQNC(VS#R zP~1AFj=XAx zNqR26(n^|eqam?w(0cu(X)Q{kF~UnuvPnu7w*0pHvsw-!@l$bY%92?_LcdW8_zfq} zx>Yc9u-u|({K!z*R~bk0LbZmJ`r6d`YfZW=a&+{7{4TFPAa?T@JeE=T!{s)~2N?LChA0aX6@bdpkA))!Ia?SU~~h zv7_E~MOP?apwQHdmzXl4*Lz$oTrHbb!8dHmhj3_fpsuk`Q)wR}^cR($6wK|}1rN}i z*lNSwrUV;2px^R?)w#E!(DnyRi z;>$taMRxLocV0t_6g9(Tg&x@CI%z6%vozzlzCkb%o*=1Y1DBZ|ICORN!9RJh%0HU5 zyId6e)Q?_OL!AOtu?odsl%cxO#;Cs*w;wXwx@0lU>h*jpy4;z-ecT2o{raSZCE-@l z)G_Z#($*}loT-r255AG#|FAJjK_m!aGV!7yQTs0sByb^-xUefaEChNq!oZl!2>t9Y zTm&b7V;3@L4M-TZ$%7a0PukLI+9o*=mSV8u2X$Iv-i|9yu5-DUkiWC&Gp<1;b_;3~ zo+ibf3U3c9{yIsx>p%t8;##PT3Ms4_?WSyf$;O6WQ_^io%+su}tp0N8aAuB*7BFSl z?+-zb(7GAr>*sq*%5X5BJJ zDLJ3ppvslw-$e4Ns{QX8hxrUp8%ovPr$+93@(My#(2lPuQi?NG2Cj71jcIt>1O82+ z*Ln+aj4Sai>?pV=oUS4{XkfVdS1#IVft5(FLcO6GQ^I-^t`b9y0B&Nu^KY44hqRW? zss!UFEmXZoG(6NnnTduK$LEZi&G-?;Vd^aJfIc|G?+NQ5 zrJowcw~E`lnLP_W;FU9Nx(BS&1>M_c*7lVQDJG87z%pK{iqniHk|CY)PmPj2BlEe$puB-m7QD&1|s$g1TCv z_bp|b{7atlPGpedu zC@*EQql`RqmD8eINtvLoqF7M%N^sU^9dxdG9DZk16%~eG0Lz>^WVVYDfllYg9Mcnk zo}cUZ!8w-@lr=Qge>boz%{woR-MQILH8LD?5T2U=Rs`s-O%ehf^~!BBCeh)TPA~P~ zy4pq@S}e?M*ESMvz+X8LhV1aPbVHZKyD=vx83;ft|J~ytGAiJQbNSVc(|^` zq|(kcC+-}XqaL2?Xxn8l<()PqmeNsDvaOYrng=bcpZdV!YksdLg?dv2Cq(cs8;KoFg@xC8nAlM>BUIj0J<-V z)M(zY;SY`=gt-5TG>Y}77S+fp$&6C`yBG#a@s@0}x$&L{y5^MRV;6M|Une3N9fiUb zECCmcuiVtR|GK@K`KL{bXOB72y$^d9oW>q!&3E(4FdK$WPUGOHkVs;pk`6t&nD5Cq z)2&*0p40^CsPD1bGVDyyBwTue6mfN#V_At9vOeB{2VGtb&Mhbd##a;@hN49&?xqub zI11WJ&}qd+C_v!^^O7tgH&~bRJpj8R6rUu!`jc{xEwMYnBdOlMS@{*Y&vPkdpBnrg z$|mMPXz8FDw$X7x?~<1=%Gr*3B^hq$q)1Mo3dE>_42B>2nR%7U?n=iGCI3ZNrU&Tg zep4xFW9?}a*JlmImVrWA_x~1xuoLMGfQD>-b>;lsp|P(1tp`Kdw}5$Kw&9wOiZ{e< z=3@I{k!#)HvgSA@&VS$1%J}zg0miu-7r;m6#MxnX$Z}Y%Gkb&DqpkqF?*F46R@-T; zyGdhz){e|jn#aU*Y9ruNu#b+JHT8^vIz@Ie&XSx<^@mTZ#8VuahVd2L_I zzD1hX#bXs*aoScHYMXedj;FyrtlFqKiNAWvmCmBc-^s7i`*5=)Gv~G+$_`(8Pa|+j zlcbv|B5ANCq&?FEpcu!9?tf)V9-m;=+<8Pskbdup{*sgUB=w_OGu837@=vl96uJJz zKO&1&wOboFBVk@)vaO8T`L4{b^iK1Ws7_hlj{95*#*~)z_W`a0;c!vSM-nmSkxh;I z9@421voD4;b(ruzf%sA1%-vAI04Q=LR+9?#;u>~ucNgbN0T+pza~ThL`16EyeoZ3< z|Gv`MznF)#pi^9s5r7Y4acSi}NDnm3yq@8!f6h1fgr{v-Rd_Pe8I|Az<(o}WJ_oQ7m;z5vw7)I&dE8KH(GREn^gcnu zU&GuWrTF-cCx88OSv3R2VF9zv$n0KSvGccGR4)BQrNK)szvC#uvAy%gB3WB0lhYNA z$w2|POgq6`*qhLxMT^*a`cPN=&`W*&_L9;D%Aio)q{uxKQ*DjhKuM3;p!Fgu><=qwWCwRn8uX}o z+q?LaT&u%kCzR)jxFTeJ<@Y{(EMRug+R=VBjE6^8Zpa%JBY4+=TbU^bND#l%wwQ*A zJgI<%rZT!IRh5T|cMM^b!>KUWgl?t%*iM;a?s9D;n&rjnpmpzZvrA4Cf#j#N%GbkCjf*f6KCkkF_}j2?4DNzpP8fwuHJaKq!f!z=g`!dhab4vnAvh3>kNi+F5P zwFSyIOFBZS^7o1wlA;GBaQRtuJpYn)aEJCfyWyRY9dVLvRP0*9Di~R8!26?NHv@^r zdE_~OeQ5n$4583x?X17Hi*dL4^?j2AUA=Gi&u}X8(&Aj$d6bnTfwgVU=vjQmNh>26 z?@0YCZ^^hZ*MkE`oK)uY>!s=(n^O90jR+I5F8b&cV7|=1EZ_YCj-&kZz!d=kg~Nas zo~io99fH}*7Ri+-n@BM2(i6bFyB*muNj}g(g|~phBsOE2T!p^0?8X+1gujU@PUkpK z7q?F)c%9#>Nvy=os=n+zG_x}<&QX90>7k?)Q8Wo*Jw(KRR<%^t4{#%0(K6S@j(7nScfA;|}8zcI%m;_&lg5#Ta{o#a4ph#EAc6xK_%AgJ7(QBD&SRk^)q zmt-hW=Zp?+0Y}m8X5FK5hdoPC=uf}_7{Qu9{QAf|5piu&8T`gD0ibR(vNx$G_KNcD zYab8p8Z=sh* zA>!|CDWEu1^G>zN$ATxco*C`a^x21f<_oom*cu0kzD4&fcwn7ibIIrcoRpnk3{~2^ z6!1%giWvM(1_ztIGT!m7*9Vix7yBfFE>*QqCJH?iV88&rR=5*cgD@ zKYvZns7m!dLoe|c&~w%l9}5?yylO`z%gPlqWNFfj4uQ5RR6MFcJkgfb+}hhY)(1GH zEbg)gNa$N6u2W$qnxKIo=g`V?VFUSU$+C@gzNN)|?5BWg4CkhLPGT)0sG7-x=7Xm# zvlzOlf3qkxthj%yS2{~3Y^Sv{JtvRinrYL%hv+3CO{$MXad@Fd)Kh<_338#w^NX!t zKr1NsJRd`Y$o=d!Yy)*4RlK5*>DFcWF(*~GKO-(Ov3-^9ftAfAIXM9h0Gwk0R-ax~ z9(wwG@io$HgdlUWw!1>yuTtIkHIBFE*v;b)<*5H>DLaB=esgK&3eRQ1oO40OuVI#t z{Dg2SfNB@#PNbWxc|;||oAj62SwQzPQrRPMU(#q#PLh1MaIe7~f`8F~KS>zQJ>y?5 z!-4N-UG&oeHx7XrB&7j+2%+f$#uo0JK%~naSaNKFfTh(j7}DIyS&jp*0@dowg!>^+ zPU6OVIk4ZrO2?I7CyneAPENX@lnBxD;nJCgHni~;p&Seyxs;!}{$R(DnslscIM%36 z+3YqydvU^!v*IMs`u)FH9KI%|*BtHEjElHq<$6;RAYwV?HT5T|&S-%*gD(^QCn(Cv zcBtu>=W}^uEgxM3h*a51pB|l^Zwpn_)YDB(>xAx_Jjn`Y|L1i8#hq7-Ajl_8beF4s zHF_~f;bp&q49*VuLg_pG6<*@`y5LSj@;~N3kXc_~|AQ{861s!0Q>-`^1Vi9bSmO}= z4UB#j2|o7_S3F~qv_knMW)df%2(C?1N)y}PNBSzb{rIF+^Sp<}^P^QqZIcp~ku}t8 zNJsBH(8nYl$-j4{U-w{~I-{=EOBttOuaS*G)Cj)nV!g=jb7LRJ7Gfu{_1p`Ek8Zgq zet3c&sL@>M0ylxtl=Y!G`H}~DJ7>*yXk?QMB9^L9W{$isXZx7s5Jz=1E@T&NMUru~ zRxHD0gS|HUJShH46d?yYoQTj|&()PgR~No=xB%>`LkidLI@pUVVn5NKCq|pTdL_9u z@wJ*G1u9vT+vUJ^CKxvI=kJ`MUZV8|5tVMf>a%G5)K!Vc4#%@fMwQ+9j?P|b*&-mw z&SpN$GVCCpqJP&~JOOn&PCF3gM|AO1{@1#7;)3(8{NtlxUKfXV$FU6Mf-GAyd6?Bp zC?v2InkhO2#^0ltx0r~#ZS>`3YuSwv19;3sR?&20eukphd*9^8Bqv1FNPy0w8+o@S z?_?opejMB{B^2~`ku4rE%Si}Uk0DYNwcAqVk=DXWIAH)TGj_m12_yAbM?#m1gMKKc zZf8ZXkouuaiHFEY?yUVuQ7b=4AoAxq<8sZl3EP*(uXr(At-?rH+@;>CfLTIO!F8Ph z*c;f!0(3TNSVAHM7YwbcI$i^!-{&z#X_pqp#wp5=4N%@;O*{nuT(hPG-ujtuT-7J4 zldJXh!Eoz3@hec90dQeMao~YDTt6b_fi6S&6zSg-VuOl?mNcW2;MOomQhtZU%5fpY zcH+~pXI=EO&ysg@D61+X6)}d~E`*|>j;%|u6nl%fq5g58DSj|md2=7rSzBXhw==;-e9tqSl8k;u&>RXEfxhDjd5Ab+sg z0XfG8>zHkZwR>U~#-vAZ)|kRas8mGmhLjen@M(8EXqN%&>cCJErxg!$BkrnQ7Vluy zW$l10a490p3rF;zrnsr{B*@39cObm54S7BjtPW#!%U`@&-$U%tDrlVwor){2Ik`$G z4%jR?=w2V;=3B^G-X;Ry+l zLz91aHo(Q(aqar59#b&qfaTgdM2jGN@^bu5DIV}n5)m&nhA*OC&L>oBMpV@h%c;5s zToYo-X|j`SWK0~L%eA}qf=5S@yu?W#I5otm3W~I2jyHUKsn@9uYhqyHWPeImNjBhkjR&*p}v43CpA_LquF*LL#GUJBxw6@z4RH*`8+aw|~0eRf`%C>*p zrG7I6if>dUCLw3xn~-ZhSXHwh{;5m@ReMigU5p;GQ<2BXzK3?uI&)g~L(=+~?@H|@ zGb&u``06u@XQ03VaGlY$tf87`&0JR24i}sg3*(@rc9ymJ7g*Qg+lqt<(;1sCs8V?Q zrUyVP(>l0X#*EY-L2?%Y>k}gwC;uhNkpB`h`osCVtgi=cO4IyhN6CP15sMPVrU~35 z(MX|YB!X`jVd|2iESY}HCeKkQ2ELT>y$l3CzDr1puG2&u)q0A;+c^5!%K;(c%iwrd zi?wX+rb?mg;`FQ)w-Kk-X%{-MR>4l5(UQw4af!x#B0Q;8dCUjTsL_LsYA$MYCD8W> z&vSE=J0Jp4JG}yMP(wR*q#UZBfe4K9>kGL`m>;yZ2I1rx8~~y#7mfsR?Je<|(SSzC z^9GYc&Fhc#mu}e|0#gRhjf2dbSa~yW?N&=G>3=oEZci~?L}gZ>LfC9}I$>ycVK|Xa zyE&nv@4gd|XGg4Rz|-qQ!HR`C;zSv-z6pF$XLc=(KttH$2%HXWy`RLS=TlEAcOnqF znGj{ix1G2vZOxNEcj2?Xg-EPXAHl|o8N_kegT%Dnr#cUf)i_b7T&Q?L$K}CL^}cF9 z%l)I~+tm@Y9gtp1SoVd=>4=(Fjp4lFFXsGh#JVS!qG%VDD-{AA%r6B+4W*{-5 z<_x}>_rB9MF)>d_4dDVBIxyoOxBY^0wBYGI-=@2RrUyT~oL8}p1Au`*aLiF(*%V>Y9V3HJO9>h)QuI|}WL7vykwYBxoLQ->bY zTLw>#o+?*WdfWIx3Qo7#VP>?4rXe)UtLn5_*jAov4!9H-Gs)g@1o>)&)W$~Es>7%Y zS|a`BlA%ehc7-Zi7x0%>Xf>c&i5OFgvU}<$i?Q^+GpnZ-z)7Hn1KKNKV02gi-iR-fb5_9jdBTuaZbL8IfU@t3$-pE21LoVi=1L{l6ef~Zmq2%hGW zUej%E1nQMaj|&FeUunTu3~?{4HeD(?;CwMFuTt6yCZw&Z?E6rq?lTc+0ru3E-#^w? zJ|4#zRf7ai)~S;EZX*xy2`nysBKslH#5z;#vWe(Xf@klI?2$THwt`;m+OhKWInF(G z^0CG#*tVs;8`NutD>VU({E-#@8529XH;rA7&9wU{ImZlV4Z<70B$^15MZosf*ZrUS`Dmtyaka^(H~Mu8}$e$g$H5-Xei5^)GQAlf-2+iQi0T9;=eeWa(2%Fg z8m~<$^L`-6Wyip4j$YV}v=@1uuw%V=J+$KN09#cWfTcWBt*oG#^5|R5O1s#Q zp!{IG7Wq%3iiV;+J zb`8DP3~%XC=R-KXNN@q;9cGs#@i7%@po<17>~$Dv*G91|9a6=_U%!(8@o+uXRn|Ipf4mYBdfh*Yfg&Y7|K2#r$ojSQt@@?E01};}tO=q;{a`*Vf?QRmB*|Ogl^R zvxE{JChJ%^rz0nl6J;gA$RGCK5>P|WCPj4@HY#KBaj=)X=qJh$Gb5uP}10Dv?_#|7PV$MlF)<7i0I3jXC(#n+Oqu7xJ6|Oi{bS5K5Lo7Gx5{fsNMGm0 zQXHY_2vtr*Ew@%+iZN4f3sNviv<3|Ext*#_Jr|>AW2AJX<&<4$&?AQ?52UR`0}Dmaex%+)SRC^=-U+ zW_nSDb7&YypN2Jp#|+RIyx*8(&GQay*#|q(uVpJidlA04^1&DIJdoX8j8F=>eQNJ6 z^Xb~Z{WGm!nNM5k7vQ+3lw`$3Dk@u}d9782!%DsC^TfB^s4dXI$EC-v8R9&*`GrzD zK?XcA;`}oQBC{9*vk@A#VDZWvSrwZUzQ;jE3BfH4e_2wPIHw#>oi;OpR-Q8W zuR{T8ODpR0K3cw;%D zpF_~Cbp9Fo4CREeqst6Ufg_%1A zkv0%u4>QkW9_Q)f9#xD$G>BUYD2u->k|{K^ z=K$v?^@*BL2FrknVgQI5E+pF_JP0q!pjEP~dgmrSOvQq9L5N*EHXqp@s+_|8NUk$f zS)j4shf{#oUG;ZW@MUL7RJ8>Xc3@B_>7;Zx&G1T+-Z{3*k@xb zd@|%UHVXJUV(fwHEO(vt)4^T2pP3urWtDGxaM$`|QUt|lrDSZUyQ zhDxmrf_*wJYk2-i6?3<~%YQ1wH3pgV+7GHn_?QCr#sJd}?*82adg-09ZDJ3VCp55- zboreX(^08a*YojTWdA75gVX1fZP)4+`8%!iI8W3-7-qn1R-29re<^w?(A)To*S6}h zsrAUn5BGtWEk!UMC~xiLS#n`6E}{VGW<{PwB#xNYJ9;>)AwE*(e4V}Z>@uX^dp)=K57Q4z^p_N{B@moQ(swV?@0ZpADrg&`X56I2JHp5X8&90L(L99CwyKPC*qPG)zr|eIyEYZ!GQ>R68OR%{O!MYUQoWuV_ z!h)*V&RfVNh<$`x|MX@6--vC)w8b%@b**vviOhNIKKq8|lT+Q=q^maP26{-xNYVNi+maxymfV*ML?3|KAXyYU&@Yi zBS^=vl9~>D9%ZazUhb$YCta-SA9+gnBOvUNvy}1HO`>iITk}XXX!zf?jM!^3uG}d~$R|n{aR6@gG*KgucZDN>?hPB96x`DUQbHnM~3ep}F^-s0a~gJg$1( z!RhcyeWdF>b=8nT5kXf--9OZysgre`C+mLH?=xLaW7^bTfZQ|L7kj zMX#_>cY|%xH~}|!>%=Pt#$atx{ZcCR!-`dY=f`Ci>*$G9jBrde2}(Z5Fu~Zv+h}Pr z0#qeuxnVY=P{G0oR+^?%*m$a+I_9%zX^Qw|v<6l~X_xx>G`gMH_^G~o3{9w?_^WYd{u@)f~if~9LVg0 zhlL&}&$m2$wUGZ~9I;65=c){MnH-J)Nv;RIlg8U#o_%L13+!%u*_P*;q6HUU{3W`u zv?|C*Az(L|(@=SxR1+D{3L_j}mW#7d`{^-KDc!YM^Vw?P?}ygrI!7SK^wYnE;Ll}H zv!NY$eqHfmcyyh_)o7K#(_(K7tZGeGRc<-L#;w3d4FV|`b)zOu87p&|hvYkbhUs01xFs#+Z31k* zD~~C9T*Xa~5jyWAHKo0@)W#=Vk7*#x`ft}i?@6fiwI53#jtJJZS z20=6^jGW^bbk?qS$)BN0IWdR%k`K(*9WLJCD{UzA79TJoXn9`jm8*3k0=ViI&Y~@$ zoBoC)I#$da*}K5vbx{IiJdfhJNGZs|&?xw=8`kU_;I@NbY|5=v7TW2uHDEfJuM9wO=LyD_4 zj*i_0n`|$kvH~k5km6@chCbk=LB3qY_Adz8&4=}^dC`tHU|I9h3uog!OW2_pVhZe$ zlo$E|+7x3duf?aM;v8ibPS&bk-R5So!OsCYe{>=?iYun*cB=pk$NGHsuLy}^trC2u zEkcE$gA#uD6h+^?mv|9ZD*4J|;#T@hCwqV=mJnnBQg&5*y_8vH&;!RDehTxS#ZD2gr^X;`<4)xEy#{PR%XxZyQi4z%^|~Ui0e8F^v3OM0`*z`yA`MX@j3DFK zqdB3@7o*G{up4sT;Z#=%^~*6?&!aw<3W`Q#AK%!>qF)_>v2<+r!=j_&I33D0aADWB z7F?;$wEwBSyE{}y&gwU>%`!6F7qjvF_2yL1FwV21ECX&>e957rM1{=}FSo`e%MQ`_)>|k zH(>XoL5Y$SVbE6)D}Zc8Z!41(#M%Y97*>v^PcAN=C0CI<;~6K%rn#A5sR-A1b|}}tuZNY~co(wQxfp)#j3%}u_qS_%&K@0U_NqCS!lmiQg!h}$ zm=F_c%&3E2d`pMbeYL!;(%M2P>6KY->-)aPifVb==Ar4vkw?RyiYZ4?bVZU5t9BLx zetY0F46Ri-KZ{|Ki1G4V6zZ}2^DZ#&32GSO__g$u0i4>rPc0?A-1K(kM5!?eJ#VRq zrNnkxNdThgn(Ov#o8A$FiCR4o9GdmPaNc9#1y;B-`8iRFnojaYr{bE!-GvtI?1>d_ zjUks2Iq^tBKszpO%+^Ab5cX?FcBGlsTKr{E7@IHST<_nOS>%aE%phD%F(vY@$|x9? zJ#5ZNE%4PC3O-Vd{uZZC!Hnvs4opg^Qig5gKJ>ljsJ&HY$}prr$$;gJC~O<;+tkG# z`j8$BTZk2D0Ox$ptDnSA0Y!Tn$3!U%^_%fh1R8?EyEW>>xmlQ+2`| zW&iG{z0cFz!y;H(gqUHRIG;2)Y!&#G9Atv&A`cq(~Ur;yu02pmR*1=Lb!0l@u?v?%^vh#m^A6Mrqg7A1p%t zAsmQL(0v-zKblvQ(SbamtO-^Fdgcz8&6_>!-DmSQXixSIfE$2Z+~WzkWx){EbR7o2 z?!A?OleqXO)k^VN?DXRLuV)n9N+eF93_xJ`L%X}K zs-R^bN$4Xjko0)QXZ*buM%-{gxh-Nk_PO}od7jr=XszLnq{`* z0=M9k#wQbJW6mg~ospfIYj2t5Q%7Q^>yt}x=bR`ITgrbSQGV+^Up9y0|_5NAE zL=UtyYK zz;2YXWtuHhAd85qc!mc}&8&exnT1P9YV>KpY1M*aT2zCg%%;0c*j#^4JdDZm0k555 zKn$bi!rUfV^@YTb7(cY_%V|H2SlR;~IoX3`(TyNl_)iLehrQ|@-{|>Oj71YOPUth` z1iggMf#Zo{8@**X-N!)Jews$bH68y8pCTqt&%V=ZOE*kH?0vGAJriD)rf+)dhhOzP z0O#|PG`Ax=>>FU`=hC@RDA~SJC{*G)i!rc0au&GI)bphM{I}581k}#N_>i z@HYLJe4;brgD`Rr%)&Ccr^GEu|dg8cD7BYB|XeZ~VoACl{r+pcH%T3-ZD?uq)!08o&K*cw1@;(?&l z<>S$-ml-Sms84KZe#Ddcm(RQy13M6!k7CZP{h=1jFQqGRKxZbp08gRZ?-h>?8nhVw~#ZBbNvtn8d@ikxO= z3Ttkr58&MVh@464@ob@k2G-aAU5Y7*qw+S>s(Bm?0%mP9rX3tm`?kf3(9$?Cb{IKv0*pnFyPwTZf zSSzFRQwtaZx%(mJto(ChO?~f0_M!%sq%A~akMGEAEi6d}eM<$~7V)f81i`kqXf8uT^(*K^1)^6VL zzfI`%QWu{H=9KtbUa)kEFPi8RUSO>mOTg#p7}otNb4pb4ER&lh^(+=4}Cki zNy^Z~yqsjG>S}F$`Z^ubk~wsblvl+}EI!#WVw?p${kag$(hi)f_jvWL#OuzJ9mupP z)1|X`Ht3_1fg_>;t7_p~^-gt!!VIW%3viZ_38SrW~=Z8=jDThZhu&UaB&3|`LU_E{Hw zjs~0>vJ)c=;{|HjpQY@k+@7*fLRtKBcn~ZU$ZPsR@740ohxU7y>XUC*ExN1hq_783 z`okfrM^#oRiaZbosue?5?6Cn5_;B$QyyAoQm`H_>^g( zBfPplmD#bzL;qa?rO6`m)xjnfRuXw25=1V#*HFX9B!%Uh#Rgdz2?VZrd0sGmMl~1A zC2`F&wxK5{jQ0ettgXFdz`-=_N)Ybm%-`NB`h`BFe{Eht@-23xck|r=%#yE`#D%Ob z5L7~g9Kdpr*<;!$UFY0~|4Ej7o3sZ1jrwg7+kHN5(YmZi`r(|P5m5JDN0FE_X6E;U z2`=bzl+E%Jd}(Z)npl0G1XTmS4M5O}!it5)Cj>j;<2jCOMp1A-Cjbc#*Rd&gLKdJ; zuXK~0gz|Z|;!N2`mNVd06|max5I+g}(N9J+$b>!#E!g=!E%(whxwac(V5om-->c#? zynl{^s|}g|&t6`H_GcvvOmdpYEaV>OAdK6R_GjfVQf|Omg6$V$-HUaYrEQaTw8Wza zs?hPL3WfalEKjS66XE@E`d}C|!FPym(oIsm4wN~@Yb%Rg2%I5J#`Hp+!1v8twZbl! z30pR131Su+ds56)pD3WOlHplmMn^l;kUA=|0>HN8{W`m%vV($)_+$p3T^~zV`SFi;JT`PDU|jV-iO8kK zh@`{`z-A9~xWB^I2Nr}(?tjlG;tAjW%542%r5J@ z{Z;_0IE(3GSDYvA>!Cl%z?*Z8DmyM9bpGU+U%Av7?1O#H_ z@r?>48qo)u*sSn3P)S6BbP-&ZUkU(#NI?F3VdF|4b+P!wxRG?b&3G zEk}*q5u>D0dLYE?lji*-YmPk`5js z{NQXB=FP&3{U-|;V%6}byAi|~>3N-Jek#6JQCT6SZY zlI7KR!*kQxTH?*NmGC>aRRu1E35;^J9DzBNDo3){Nf@{F8wPOI{(9+ZWYR~h#S}h+ zg=DAXNJ?wQG=`WYoYPpy0K Rli;**qvw*za!b}6f?v{Y=ZIn!$Wfl%lZBi+&6P65 z53i|_gE&wK-v)-vG|VYz>uXI`5HlD$Mc5Y}PmJCDsMf{ICdm?l+=I)GXf1G)F2y#c zk*>LY$&411c1TH+kbp%*;puu+_!t%(@uG#54*I6t%@5{rx4iD1?BgIS+{)xan~A#; z5QtO+7RdPBkuHd>V1}Nupd-(*`>f;9VGHcDXo@NCap~T2(KH}Sej{kX?`r4&m)7$gOAU+u z6E=w1aII1d@}!t}UY>=ryvrLT0~PP-HlDo(DcPdXLg2 z1~MSCk7M6dF3he{3u6`g5dR5-Hl&Gy^BLax=6)H~-X%uwP=6=)P3NBAb7GtAUDTX27DMJR z^BSEvV(oeV3r1ALSHW4+8xqwJ1Nhg|Dbbs5Odok#R9!@NoET#ZmGzI0lx2_Ij5EGm zG7c|pTh0+ut~}j-{%G3u%I?LeAsk%=@|mFbVzy4X-0Ge5!`*f64TV7yqeSl)qYiY1 zS~3yJS)T@5-3cy#cP`~Ku90x<4Tnm|RRX)4Xh(t|( z4qwduee8ApWW8Dh>YIC+ZuCVfub>6YS|LtveD}W$IGmcrBUfP2Qtj%bK0w2l z8J5aVt;^GLV+&?JkL69Y4n>VRw*#0T3(~i^9Y(-Ey^vwNR-C{iq+E2$MetJQ*eLj5Mg2y~yMvvm<`*1jISQ1u1Brn=+ zYrv@XM|frTTQt$&kXJ9yVT|1OrWIdE+wq6XYe;r({**k>by5Mh8DaLY=WU7;ZMs@V zMdaMb-e6C5d`vN=z-pfAOKx65^xG=QrA8 zajTLOz4UsN}_5v5bk1xDW#vLpAwy*>m7v;k-jLX9m$uq9A_9xHoXGN&N}&03!l zcq?N3!0MVb_w9czv6fg}8ve{*%dnI-;r2I-hcs^*SwMigj44yCSeIO zvneiu2M`Z_z?o36muF0QHY}x1k+1#0XWZ8k=)~xt@?;jv=jA+eBe_cBE&jWB&j8!@ z_LSsWO}+MLEo^&BD(>F_4kPt~L*4l|`n2)42w!3+d~A4RYnh4Ac==?lAIG2)P4;^iX9zP7PnTC_ds-jiX?hil@mj`B z1(W4;Ob>kJlC77P(>TrRv`+Y%B4!i(z?5daH=}0zZn__ zOf-Ev-1g!Rb$|avvv5eo@7zykptABXDzz~B%5-P2iX#X?bJF0RXth|?bwh&DvoEgY z+Ep2Z9Yp2iRhPra8mjL_AgbZSA50`ZiK<;zZdD$>oLHvA@PMc~MK{zI1H}-rV6AX&O~SG# zT7H@4i8-Rb@_u1!JASQNZMuR)rGvE_j)f#3c9vwm9*bswOZ6pL%&g`~30&_QP=lM_ zOTrku=tNzB!jH`#YwGU}N}M5Y9QEWl>SY&jDjj>(Nt>V*8}34jNjlr6wyWRGoo5O@ zV$h$>2P=NP#pPr4`s?sE(#ed>U|c)Vl-=5mLS8#71K0je16jH-O)q6}+Q%}zC+JzXJjo{wD2DlY?v!{48Jy9-r5~^ zkH5^xVL)7hj@a7X<924@lwL>%S`Kf`Y67)#z-R?XQf4VjxW$z@n zKa@m#bV`Ng=z;b#A^0>Hu$2DufT>>MGR3lO04A3&>s8y%BJ4aF>{k?Sa`x#}2}wmb z>D=^GmHq@o$Cd&&yagOFszzGyv<^z#zqt6f1yw3#Kx z+D)z*CfYnNLAyYLN}c4=;e8*Uc|e=ajQ(+~I$rThy2+a;OQ2d7ClBLR)9DR~2?6^3 zqF&x)g3MSFn!uAX63~wdEsc16N^-AEJ52IeOeMgP9(fBqB$+K zVS;EKXo^8CQ!YX_v@_~bFkcj;=ZRv(&X9bYHB6ulJJ56lhNkpI23=&-b%QG%$*I@C z3>z7CN-@e+p$4WM;lf-0E1XKgw&fP&@OOl!S5NW^$IoyQO>InVx=S{yO~ZKf=<>gd zEZUqkx(@o7D<`E$g4sTBmi4L6?--V**H@OM5wKwW;do)Uq|P8qId)UpcgrJ}TkyH> z8EzD9%`0OX$yeW_y1AQYcRUGEoVHL93-(m8*NSlHE(<2sqJ~Uou!xxlZjYV?pcT4f zCPBDffe;V3)O~tTpG?sHmR9l`=PIhvPN6Vozce7Pm3BW6kLh(RLoT*NGbvH#v@0@j zuzH-$nA#IBy&Nl&;2)qK7ak!HbT81*xhABTIPSlaan_mX{kB;@J_PAHw`H*l5M2!Z z@Ul90n9%^7iP?KII+I&?4k6H`OPqrp((oAcRDI)qq_dD%U%P>x(vAQ4;cJczT#fad zVpH%Yp@b?Kz7np{f_+o|9zPM6z2&hXkD|zgD%Mb&99M1PSF@_2}iCsX%mZw{1d@q%4d8ziY_MO5&*EN(5>Xj#E68?Fy;_)W9D0O z;|OJnjCeK^VWN3+k}^CB6+U9D9}j|{)dt0L6A*_TwKc;p8Gh~TvPM4nlur=1Y|_u9 z+(M8w>qZ!h!+jm{w&ssuJl6T?@rATb-`8T?-9pBh!R}}ykVZS6#y7zuzl9*xQ6W95 z9r{)^-+c$3iFZnkV4{xhuD)#Dw~74-7EOLR6k3@lW3YVt`+Cb4V%Six@<_xzB^Z&S z0SoB%hylF}3s~yoTKLDwzLocWsS}H<7z!%<;T3zd4SU%Ld9|^fXVO$#7hX!L4YXiw;29t1#|T(E~ZWTP9!zmKuKEl`+uDK zgMb*bm%Vqex9f<}y^_2&jjvOR32scWM|j@%Nq1(aN3o;3mT^c49E98EFx>~Qs0Q_t zSCsw}0fa5zMU5N(@8(_!nS;l!$hhiq>X~+s$$w?a5B2|KY<&-e3h3hy{ZP6xs(bnx zuYGtdw@phl3+u%S{dY&GCh(kY)xg>pRH(Z73+EU8qS1UiETj=9S&8K`&M;TU4XW@q z;R16HaFIL9jh9a1-3`}p4kNTbhGqTtX;5p>^pfa(WQguM%&+!8R{!FyhXUH6(Q_iN zfG+p2EZSZs%DaH67pXghcgLP!k9o{6t23!6sAd}3K@E@syfb`mXIz~9v#1n_R#XN9 zcT&7&jL3eFhe(=no9#y1!or-WBomqFnpERVWRbk+%F(#X-irg{ zL$EpI8)Qg9mDY$AVHGLdKIa=tb~4atn!?SCsiM4FY#;rquYKn34q@pl$KIaAUt6h# zn44)l*#pOuNOxsBw_twii8(}UhsQ^RCK6vIv&sslOK-DoMHs`PR;ciF)T z2~EzaDGke~cC;0atO?i>!JmgEI1webzCAgf!ek7ThC8_|Gy*1C;vsKFJCoKN`Wl4M zRE%_Xe@n;?a~Ch)l`5==B>FZ;fOy)3Zb3z~3m0Kwv#uKd+p0HtE?srKtO#hEq9{%x zoLfq*i|37vXH4xXFwd;I*YR~7U2(ids;^_}Uppc5AWIq48O+g>(&conTJeZUPe)(} z#44368Yk1#sW?X7j{tx~E^tvXe{rYoslp*P)GsZcxj(t&gk{4TN_$cjYGrt zYb9F**WU*`iJR=*Ju<5eQYCyb&K>eU{M7IJ$OzkU!~|+`If>b(HmgXM#-)o=bhUDa zepn8Oga&o8`sNM(Xffozhrppe6?hK84jwylVpK8JKe)d)gYkdbCW zVA+$@;T)tlK}uv_?ThrXL+s3uApgzu{@F-9&xgrUZ5I-E)d%2_mfW~cu8{`6jh@=5 zzk}w*pN)0tV?6H+fDow9%rNH*$Y6rq-4>s^|Se)TWn!y;d4v4ID2ie&< z*y%P#*6A3BrjjR<2 z^H)8H87VhLgy9l&lrQIA$p}pT6~kqVH57p!F!Zq2KC`6b{dgMcl$+}b!#;+{ z-_YtIWu*|g53@HqpLHVul9r@ljg8-*dLVp(xe58y-bRDgQZ%SJcJG-?Q1>-SN}9T7 znQWtqfh>i6=$2sXAz&~V3Td`JgmL%GKsnOE9}HAw%6zS4gQ`#dSbdN49_~bvz+Lf8 z&qR+fCV(TMw)mkz9?RTE-x7~VyZ6w|F2PbzBrA>~A2JlfO42)@j>JCt->#dtN#zK~ zRW8gp`i9+HWeU{6M8b2SL3mPsQt=*l5ddm5*k&ApuU&~jf<6maV6VHciwh=@~*Z4JmhCPa?sRX!btRN zh~n@Dm%s;n2>{Vic|6f;S$l^0dbi)%JgFZ}KI$&qwQk@+8UYpz`_v5~2qjh3{n>Q( zIP4wyQehb2&nDU==}19j*y2@f)>)p@zke^4U?5#U$QqOMS7`4C70<_}B=v?%j(Uf1@Af~t~U6T3Q0vE)D`LF|MU zfV>%c0@oZtBfnv3R==zPR}Va#2PbBQf(vI$iX!mF{{Tm3l)7EMTH z_&>A9GHpT%PvvsDKDs`T#t|O9o%T7XZmcqzz*k4zSrD&58;Uc5eO}8(kVX9^T+u4* ziWQK)^8DX%K0FW25C&vb5SwY0O)D@o9Sm=rg_jqEK9|obzOD{p2zcWvN_ubd1N4)? zRJX}Xzj6xO8+H0z!n(B2N9`mVj_j*Halb(zU0tm)dbllPIy?-ZXga~kGDf)Z#J*~z zDMtK1sjMJR@mV%zMIWa&0!wxQe66n!Mro|(p`ap48HfI=va1MbAPJY@n<@$ppwFi!g8>r=Xiq06xx@q;e!HvlDg!(R6C$XGp zxX0%Uzgv||ITCJcwv#_eCjwXdGaY$6sn0r&gx7&7P>+c{dTg=9;rE_h)!=bQDktj3 z05E`e<=b}n|-(kslnwL;4#7KHaa0NL7s#HCGSQP&uhg4#S2?!gcKB! zB_B-szdYjF$yy5;bomCO#%Yo(myZn`&fb#M+POTEPAL}VQBf7Bi1v@L)dH8o!-VIP z^06HcvCU9+jZ~@l{a8!L_A^~ZOz9TA^&df zyq4K8_PMdA;HHy{Dqf6LUohc+uOYc{Pei+RF4%~k8l(FHLd8U<(|C9yqFrob^-8k>!!G|+;=(Q@5VZf zAp|G=C|d0N0*8RF!Y>6ttE&tW+}rBSi}omGD*5!mrJ-W5AMjPSN`4(uSNd(7If_yPy*6FQzJ#vu5BqLV#`(67E0=l)SOR4uwz6VLY3 zs-s|f$BG>~t4p5Jv1F+s`APfJ>7FVG44%t-JdT=ZY#*P?13ffMbOsa^TKbIAmudU@ zl8WV?T6*3M!*Eyux6!EjH!LgMVAm_@cq;E*HC4WOESYe(bY+5uz za@%FWMs2Y5uWXVT&1O72tGNksy?V(#9iPQ{{KT&Ct@f;Lw_oXVHSk>Z7eO#v0lSfz zw8ADb2TzvmShTHa!_*+MGhPOuj|QR%^vm}(&m#6yk&Mfgv@cVprE}=mJx~t!?WVU^!QPIV8Hqu1a zwdkpLbLziz1!qRNcPazDLN-$Ct>eN6bR`sR3!-tpp9nNJ1V>h4m#HrCz}qC=HV8su zyG4aFGe}~|2L5~IGi&~WSAEZC@l))gQWz30MW-%ThDC7Yyu1 z4=NKBLa(Ra=-J49=lAU)@E_cD-8Zmwndn%TnE)H3-?Rb)Wh#2w4B_-#C(31y49;OLn z-DNEOxFU+v$ZRFqjlg-rgfcRt@UQQhaNDH*8wt2sUX-A$xHkoHSzp2L>DjXwnStWrD>20PJ4>`H+s|dm3rc(##*Zk)l5`OqQG|6W1$VaJx??==MRXqhkaZ#1 z%i~)WU^4pnhqV%9_7M$iQwWkgJmj9IvOk8mIdJ_a-cQt zA_n|}!(5$$q5)xe*$I~6DCBd>arQ&?TaH{cZYowJ$3@Jx@GiNpzR0h*T-X0x?*LY8 z?#)V*ai^1jN&S@B^ME)iLAt~kdi1c*m@XwS{0ztJJp9CP;w{}==Nyye^v#IQ_E&iJ zdz0G1RE{fhhvQIRP!0c`jxtvMptf6PN$w%${X;|DoSrKy$wB8L2a71Qe~SyZzl1Ci zIH{t%6HEX_17k%A$?q-@l4sCaf0&REDvRY96Hn{vobxwR!ALBa#IPY$9MP+q2-llc zP%MKt<)bTc!|+&b&zd=ki@Spt_{M|`j~iHpUlu`J>=lA}BVpNi8vytCKo*l0@{PhN zpW`xywzZ@2*jjvSL?@EHc-nw`iyFu7w1aJEpL09uRY0E9#>sm*V;)SKqPDp?m!_M0 z1O$_Uyj*WARLqwgvPlY8dIUlM)#&w)RXKD?{Z>MQ3 z7eLnwSBXjka#*nY09iLKRM$jD);VA4rS@`8^?FVFRL_nIJlsU!sw7C&)rO2fS$(f0 zYGj-??_XyTHqi|byfnHH`l+8ei!3d96AMw*;wj@ay=0-Cz5MABAGxc93)VJ}4JR&Y zD?P=yX&hu==I`u}c4orBvv^)zBZ^oRNtVn%rga9wEaw00#}ZPL|3WB770{8KoOuM!{ zczL%^8=kd%t4*9^Kn(ne9Kqy9p6FcU2*^!^S^5Tmj;e#5hW91XX{GCqjM;s z*cV%CQ!adUUM+l#qq+*D9>3#4F=|hZ9xdOXBK(NAzC!VOt>L@{J^JRpL>S z7`wZBIhqX|!CzzKpJO-B(321L(Xi310BD~H*FI6;-}80SjI@=%lKkIhCo zQpxeC&j9cabnpd~`QAlR-xG-7R?`ig$3m3Co~(Y^y-$=%W}D&rvw$3k zIy$Dpd(6cGHsoxfei9p4&86?!OR6g$GdVI73n_!B#Uye3=+1)sx*+KSSIZuuSE7qb zc)f&h!Prvuv9~28W$AXL6znS-yBzk|jU4Xlu+b2u=L@~n4b@C>gAqKT&H>;B!w&!j zK>EK>JYBG7jk@?~IAs+2vY?AQS&m-^5WqFB37hE9(mj=VI7XXz7*kfy*7S#q*_<9?9p3UbU# znkB!>ZS&(;sC8o_W=Z7mewjf<#5O-UwR`6Uu!bC8YxR0mZLZ(XI2{@?wq$_M5ScuY zPA6f(Vq8)d)wYnI#Q=J5Yc^^5E>tR!xKemo6yPPlOK~h#?Ol9ecG*2cB-G9;1Tq>d z8A*cEo{Q0(uW11x(N>1kzWCF97{8E@vGFEpb3Zc>#_PoxRgugo7P8sPUf|_w2o=SY zd0Qb(kz0^%%7cdpO~%wWw+IXsCy>6xB2ZheFd0_0bSI7Wv5HM1iE?wUW+e9mq~i?+ zNYABa#b2HefgQ)J`rDK?Kn}Uvf{rTdq-kEXT_nHiKUBi&IiBW*Ih8iGoH8))PO^L4 z=2=H+T;OGJodVCT)BPG3>!vcJ0Mhpgi(s`1wfl>2v}8i420p!>NycF86Q@iUoovPz$z3VKYozUkZLfBU$v=-m1dzLrGwh>C zET*&H5uNLI=C=`PDvuSL{x@tr5DnbK-XnV&PKR}@^eRv7KQ}M0FDvup` zTLa^PmYWt3wlx|-9+T007kyw0%zrz-`6BT{>qzo+AeaDVi9I0Goq29qg(x-?VL{mH zFF}(4E^+`d>XoOJ%3_FYq z+KRQIq+H@JYSnbZCG>sWe%yEOWBGyF^EilP+U}$X*7yyHrTuHE`)x}_RzY~MbQeXK z63&gJA8C;CM#tLUcmy-zzUO1<2C#=@%+Ocx58R_ZM(>){t;cZ-9FB_PqQ1n63#uw6}EJnggO$tpbc zauKPwcb5^p4{H)QS;cOW2NevpB+4MDKMe9qocUB9L*hTqWB$e!v8B#(%TJ)3ShNjS z*I`REEYW`ruvsu?+&eIYIO+5iF_*VgRK4gA(%6M)(mJbroTKkQk?R-Qjl$ClHd3&+ zZcMbDrso{0Na`gYd_@P!k~QP5_4G@H+{|MS;p^7Fd-u$9%aJv43mJ(J zY%rq*bbRf$+B}rZUE-c|!0o7r2dMwx^=Ww0Om0Wo2!-*jtn(I)7TA_Tw`3Ho=32CY zF?g4o=P@z10H=utV%Nj>m!#&?H@7tA2a7t{?`y}*VPu&v1%>eVjd&rrR(#}k{1a7Y zgEP5?qCslcvTADMJ4`nk3XRNkKlPUtSk#5bBbJ%fGef1b)3J;yA}|TCyZHvjVMHs( z*-Z{6k}t0YMk|5B*37xfg}bKDVrZ&VV$d|18X_CpiJx7-tm)QCceXFZ32c=eGAN+i zeC&CUr(6y4^!ok>5rASDyIS1U4AJir9!!AIaaye2{(KTlQo(hc7NHkb&R#==pk1? z>_SdQn2ACC)3hd6obch-2Uumhc0}-6!QRh;Sp|qS>;Yy#&DMye-p-SL%i3f!({@rw z!pY$q)fzSYf1KQy385jLZTIRI%{YFIlef5jjXfbfj_Nn@!@y}mwm@&KDW%ww+x^4c z_b&&9E!O|m-2mOAkC6O^zK>9jK;g$ALqaw)aWb0PZDq|LuzZNd8vU+ed!4zYy^V+#<{9_(*kQNaCKxemkLTQq9 zgf^+jdS3(82GJVciz{ zx@Cz24?{X8!St6l=b>s);IH~=Vj^k&-xRx0L%vNai=4VTZSbkmE=xsp%#1h`@sIfL zf|+f+`8}1qP5a0- zG`KT8koT9Id8IKMGFufzI@-%s2+e4pYZOWoqo0g?3E<_TP0j$|>`Q5VOje1Qjj87F zVj_)uXg%~z)}reu@N}YnX{U;g{W(%fs%9Z=EK>LqM$st@@hkNvqd=Jd(U*T0B^6=V z@4S-e0z47-FOFRnez+yaSbM{#+rJ`s*%2sq*jHQY4e;CN zI@B!Udz-{CdqJFRU*tO+c}Dj`vwU|cFrUiMwng6L8miCayjlQ-B1`W;$EEzk87omw z!yiQ1pey6qaNg-cWbPDP_16TP!4)^%DzrJ^zryy{v$9e4soG7zgsZjh`Aq00FCr9P zx;ryQ5v@P_oMxdi>gg`lr;#^T)U?!YotdOYG2-znuiY)r*lC}iT!y0@#MSDOA}G@v z(y>L2t{*G|Ac-zoZ&|QU6&+wXslAW;*NX5X_vy(16j(?f8d5XMUjK(&7{jgNcj(1f)FhqsO_IZRZ zW`HGI-Ez`_(ns9hW?bBX%cq&H!tNm4Ywyn+Kr*BJ0XKAlO$_9m2Qmxg^aHzz z(OW(`6j5YHS2dHcdVnTmbFw1r(ph;MG*)q>`sRRjP%hF$fkBV=t^mnH(yDvb9q!nE z5V24x@W-UU$MLz|R@)oXP_H-x7Vy{`XV8t3g3a&T5c_&wEj*AsHD|@(UdD+NlNfKy zw3bWZA41bn+_;61A6Bk`UPy+`$#MyihQ}+3GUnzX{=P zZ`8GM@+yH@n_hrstt&kc7hB#FuKw8oJ|j z8Qc&lpFWPyGVSw}u!QVcnVOt}FFwM&&uohA1ksig@=4 zY=PKD+GL&gY=_rcmn-Qz7957}sjy?4y)2(q6fu0CWhO&CgvOpEdd=|{Zmw?r2C!!i+IffczE_zfIfk;4RIWS`uDHoPxZ6bQeX{N&k$@s#xT z``0=g%W(Gei0WGT^!==XM6|hTMZZc{)ynn_LQEUo>h<2kTy}vGOiF&XhJPab=sEfFS{VF$hYLkjKZLfBMA+XuxwL*GuVmSPd>ywz7j+@ z1IJe^QfdoLPPi;!+ME@mocBU>6tpCq#fn>s=4HQnyb4YeTPd$Ezwih-qW?N zoFKVQ5W~oa5~jbM;>%$dojSLk2x8@#YIn6^hOG`nWGJ17{bw=M`Y9W2JBHNQ za;WA*0D|$=aA19-V6hIOPh^Dm1VB7XyW-#m$Or6DE^<2ax53+YK@P zc=m=eUNob>R%*5W&{7OO!=%}~T-*z*zvkTsk*E(?J$MIs3ZN&s&G%2;x!;7XZb+?>>w*us(xtZ92*NQhM!tIS zt6sH3IVf>s1gK+tIon=?UyA3#2`ymwhd5c7Iacut^VNt$86AS<3W7E5#Ig_*gy{R2 z8dmec8q08%9d#^eZ7jaB8VQ~*oQFFeXxYB8^p-XNnW#N8)0@>fETfr4=cawViYPJY z8t+PwbOZeXfuk!ADQQ!(c2Wj+Xur>UGud67)xaC1HLlyw*q)gXuz+2E1>yNK(@XCGu~o z54Ux>*qLzja8oGE9(caiz>Tj5=Sy$ zbYBjgL)->NPEs?&-5B-dvNfy}OpIo}S-UwD2>*U$ScXSXmLiU^uHDt|m>1Ar)2E35 z15@gK8yyw*`1J5bJ3Y@U=i3{P1oCQnGMX)5km7*}32GH?bxfJ)>dkUiXFgHQ&wcyN z0wv|eZUp8aKH!ZAS`l{vCK-@Yh%87^*+L&_po<&CwZR%5^Cm($tRM1u`-}4)E`9YR z7UYTQEF}8kgLoErqk-0Dg@t}9RRna*)%~h(KRDNcX=*R3^HiL@JO+mggHv_LfsR;J ziyphAPveEajgCl5Me*H~)BHHJFyWWKTX)B{*)NH}*kDG0yR#ptxM!HF`0V(PFLpTq zoTII^A493oz_&dtW-epd#SrT2S=}DgL2tZKrdwn2MZnNzfp=@385shn5tpC$=b?9JM=PY@XyT*gknl=2Ch(%lG&4Osv7 z%pUWwFcM_qOSxc(_Xn1Vo3=7TLYfa6@0geW`oKrxD2Eht$>-A%2nS`-a9hKq^q3`D z!QUD~x(v*D)9n`WLUPe0P`!JW@?`YT6SG6<@Lo3$vYEKS2T%8gNfh(VM{LV*XSZd? zC(E)0^;%5WXp@ZlF!9n#_)j|p`2F2+KIeh~k&SWi#|x;8#ZnXC6afraR@?cDc0|@P1nWM)pBXI!(F|5WkLBueLU`p!mABi*W&KZ~b@+$X)wf;27zcI- z?6YcV>rqN=f{AvwQ_AiJ^!&=dU!5IB*ZmsNUkJo|*JyhVvO@2w!Kj(9IQaq*|6em_ z^Jt5BQW+&e$}8pMcyXO6R$@l^hzwIV)ajg`A|GH;5o~fyGQjTEv`hVsJ z&n&I?n*@E2fV0kAzM~IYDE{PkmlFCe!F~FS6t5*)cmMWa(DuIfkEv%PpJ59=-PWkd zxw;%vA^@Tf_qU*MbNs(zfl!?No&MsY&_R`ba>E9iLW=Y!BWG%*b@@3~n3qL3Ean&4 zSok16Ov`6ZUoyZ6R9S70NRmM*Ul@Cupo`p`ehGT=vKK(!f>=sFN!}_Pb8*!M8wwEC z<|av$3voDwXZu)@oitJ|$ zz@znPHApLz->%fkYW@GDjKS(SeMAz1-YI0Z9c|<{cY9yec3?p zXQh{ls;PE7&IOifu!qw}E>$b#Rrk#6ER4J=!W zd3&H0InF~G);NqAm=`7m4tktDu@=0H*qf9=PHD&+A67Q$0}2pRN@my@U9yKmx-pac zqX+LYg0Rr~tWLQl0w`7lD(7dEQj?d|N;8OsqR&Y0u4I4BjX4k)bO@p7%;E{*3K4=b z-$nqZY0xFk2>TuOLRdB2*f>u^V6w;)taQaF3A?M3E-nQYu@338sX+K_Uv=@tU27vD zoOUa9=@T{nr~K!WQ69H`-<14qgK|5+-M!IRR<4oVcv}k$RzjSSG>ERX_W)rWJTm086W~68h4NLb(UOwm^)DQ-RmE3p!gNAoq2x{` zV21g@3UTgBzM@|AW~q_6e)5%dEIzh$mISI@Xv1Aq)DTI=QHM_2dHh^Q@_66e4!$c& z;DE)&@$(GtXzB_YqQbNdJFXn@`918D`rmiOR^(xE_9Vgj$iMXN^iZ_NBAb29f^^#3 zdZ1nfcT%q)$UImw96ha~46!l(U$sjSbk^1p1f8NZ)cD*o1>RN=(Q75v$yrq@TV*1T zU`Avfx+KMXDu&r<4Dyf;w{dZQRw48uh+2GTk~u42Tppx7>NjJwkifWaivTt2H0wCM z0`G+7+o;a}wHKYuILomFGGEh! zC=D2j(9L)IFuQXKCk)c3(2(5wfI9&!~VTw`97vn!|QdLZ1IeB;*D$=8E-0a5tRs)_VXi8b?v6(83Z8) zA5Dse(tgdh#|kKW%$NRtpDzjY`Xss@OF)thqZ5 z<}EL&BnLIGy;%-+%coVdJ-v+v>Z(gkyjw+rn=j3USl%K$ntv~01t1RM`NxR zpM>mWYk;7to9Uy|R1Kf}$1K9i88!DB8Bpq14QuP~htn{!HW08tR_!FLhcy8zXczij z)d{a~_-(koeOxBHr{V@%YRr(D;f0p^8kCd+fo^flbo}+UfN>~_jJPcciNt?Z0gz;G zgAQR}eWyAyVz)rcp%)|{cZ22TWrC&G8~J-jiB%9JNRKyzh4yxAHQ=#5lggC-5 zS!XxHVM34{Ko>SG-zZRzI8snYlY}yBdN)Mq2-ey)k@S|wfs;wlZka`$fU;T3ijmY6 zUBp%mvJn0JGU5q#`tOz~Yh`67%5?3`R$F5|FchOz5weaKt=x#O0`ko|O>-J+ zi!Oc&@`-QX!!-vJ$t2#=l9cCgH}Wu5dy9(Lbm_<$ziGu0{_~un7p9p03s2S<=%-m< zxWZT#gQbe{snahlCOb3&{%7s3agBjmw!B!kz;So*LTBE!mpE|9+N@TBNy68yjM2ed zauoCro%Yi@54S0Oj?l{Ou`|%Th~u&oSttIZkwMc>{nIRK#bD9(o!fC@4*EJS%>Ont z1&i++Pu#lj+Ejeze$Efoj0(n(tD=ycLxRY_X8+}$8Lrx#GMvm3P*Cjw8hBcbS z1t*Hh$t7Hqh_PRg%~zi*$$inc4#|e7Sp>gGRnUg9=bjxF=yx$$Y+H4Cr5Z8+5U7 zdCf}9``8itoA!46)!H1_+M0*~8$o6XeHXcVSiQW6YqXNza%9#Z_SZ0%Ri7A>Sh&S* z+^CngJH68k7g`+@0ah{WMpIs}%}d=^ako!TKl&wbz=IltnF3V+_IT!QMG}22CBgJP zpDrDo03h9#`lT$da*SH)U!xMHTZU8}UGr{Agr^&$imZkO*^3Nl=kkW`)pZ^Wywmw$buff<|t;AJ4|b!RsfC?6CHPZ#2!c4 z3)80^Pg(1VDVb&{ot7-TE-ssnB+Qj4q_Kjj;c8W*RQOuks>T(xNI7fO z1Rsva0WK6dwaUbLVQuC_JoV=j#_oI8rcJ~mcqH-wwbaZ<_$U>8x~36!KfU{^S}JKN zTz6q}->>!jG%)G3NXemqzomj>KO6GU_4`C1hC1o%F9mpJ2I;3emXHN^3yd+T$uj_MNS9PI+pw zaf_SicMYoLZc;=|wP}m-zL8{H#6V>}K6^1p`KD=lYvt~fK&I8*0$5l7gyHlO3f85gyjyb|Ho88-#%jrU&2Ewb7sf|NuFu1^US(;f=6f0nzO_HpvI-)}#;VYhq zJQ*vD@B*nerPfQBEs?*q3h6d8+p_!{ss@{r!+ha&>OO9#bOR*ygF|-N7BrVhmR^Ss z!8_vL=*e@`ZF(BiW0s2!u6By;C#2|i!>&E503Ic;R zTch6jPG)R_9JC~O6HTKSmrqG5NpvOl3%^KWP zRdZI4=f+J73ZWtW9pHI(5sejsS97wUmHaG(my_Im&y zMWVopgLZ?jc#Pu%+uZ6-k0i6Gnnw8`ka{&Wx7AMm9Ql$HNG7Z1dd}<(m-$?%bW?Gr zG~t(cwD(e&9wKv%a@9ws@I1;Vpp*>bCqNH0xtKg&5974n(}A;0`+?p8*p9S#xZv8f zTwK23F@nEPAr*JS&d1Hd-Hs!zh{`pp@l0qZ#t{tluR1JLo9LuZ45FhwtU>-%@v_8PFB!gkNd!y^zrKYbUB9hs-faQ%f_!i@`d z;4TM!MslIw>DB*s5+qjy4-?)Li`zxr{++5^?p*G-s%862V`4T&cQC zbsWgDUJ9Ql(D=Q6E0ErnjlOkCF$3q2-C-*<*X)>T5V1`bE4M$CMJ#BMvd}F{9VG(i z7e>HRdve-hg9JCM0b&wRl~+G6#4aBoS#pOMs^%lA${l!Yb;@I*VHJP>Zz@`God!7O z_yz50-^z9S=BIZ_|1wcA57Zs5epZ?M9>ELtIprq3md z6CJqQ;O>|_YOP#BlL=VCquy7{A{*11W1Rul?9L+8+!Q+i;}r-?8b*sWH=w!BvqT*Y z*F`zhrH4M_{FAN}idL*;gPCX7bIrJXh>0fgZX6BNrOY(hm)E(PSy11sLYOpP1IU?h3;(in-X>mHMp^$C7H^D6T{G|ATdC z)IXL?XJED6If8Q5fa+t>_2gvjdP4$4#u7qumWqg$nK50w<2|{=v~8SaIvyL%566g) zWKp|ENY>BcVKr7KN-%riSB&{_lGYF;%>GO-I|(5yb*Q>k0vFrMOBw%DdWLo2^>%kb z#ZCxSRKz@+{90}4-!>ZAFELNoFOR>x|oYAq)Wlu{wbcRq&ebw>i; zh)*EJKACxb{^t5T;86oCNxJ2~e`x{@96+}WLbY&_`(*Ai@@~S2!9mH24!B~mokW$KaDSE^ z=`x}`54p_s_8z4hNpIx@A^WDC&VO(6Gjv_9__zC5x&A|qY(O9T-KX~nYHSE{rR^-} zbzZfC^nF3r2y)nT;ubz2NS)&#?(S60Xw~%5w)O!#`*ngYiONO7t+=Hoo$>Z{DrO~L zzp8wYq5DFF!0lTa6gD)8r@JVxhQ1h#82B3dp-{KuTy^_{+q6&y^t?0W38H4$#% z>Um1$&v2*5;LU+04gnW<)lfpMURT)!MW66GW6G@7BZw_Uf*=+uz`U6#35p@Z^PEQo zm@s37+0b0r-7JP6+H?kVT#s6>vf3EbO~pE; zP?=KS%35QOzhbJpUhSVH@}RNH^&rLfyJ=a6!5USv>2E(*pH#Z1ktZ4tNGti+EV6TS zI4B;?`~yf`LZIyQXH++}_e#I=Gl<8gO8R?hhB4GN3Y9Lb(njYwsD+yGNpA3evHE-L zt48QSKOMIQcOeb9(R|qTVJWyFdf%rXgnvKl&e2)6vfF_T{G6hnxA7_wrV_RIr+Bm@6m&}j(?30Ja&HHIm{)UE3 z!%Ypcs34ZF#)Ql#PnIo+bMFatgQi3!7fSuKvjd@C$m z1@*xpjW&SvC8V0i(o{R+EtEK*j+rwE75R^M4I0Klq6agl_7Vlt5Q}45nv~5gB>NSK zdYexy$uu$7uy;m0E7NP^$G&14kAcscjgZT7#x1sBzgscc#rg65nvpG5klzSy?-qhM z;!rOE6do?=B<6wy#ArrN10Q!^;6;a7_1$E*Q!X@?jyJ6%@M&BfkQT}fR?G0{f!awe zjL{tzwv=(1{HzLfZ4XCqIvwJU!D@h6K`=@3 zKPdnP&5o`wtks3LM2ePB!F*G?cM1tX7!n7qkGnn1EbJ|6}7t7&7OtY?kSfua3^*ojbeoG&td#9Ry~oI=3kEcxqv;aADlvZe+{pZj?F_ zKIk+_xg6)vzGXIIH-o8tKsgaUm`0aYlwtIfzgYoUU7pK34aYT2NMP5XCF3?p{Evmi z53(!0NkO{egCH#9y=vf)8@wQewxbZZQ5$dXG45daRsSDR(>;(LlpAguz_ZBM?!wqs zi3I<0k))@1;((*VcWxeFhf+8}>ORw)rYb#y5i+siy`=n#$0`7U?-fYnFNkls{?M85) zh#R}!s|)L4)O|AOh_Vl!<_8JCha-PybQAE;+j7Q#yq+a4Bl1F)MxfNUr@eZ zFV5Hf6{odLw8*?Gy!9Vc3&pKUOK@OjW65&R$?GWBtVNK*E}3te-xV7`a|+=TBF>vV zJb-`emsm#|bCOnA8<@&X6js&V<%5SVM}*J3CsawGt}CG9 z1_z^VC`H(RkrBP6eaeuI7<7r#TgZ|>vSJS8&ZS!bvj?$^2h0$1Bhme!Gm2j$h*Dsd z3icPn8+VmqxqOYJc0LCFS>c%$4m&EW)Q62=exd(=L5Fk*f}wQED_OZt6&wc0>XUUe z|B=+ZDVf7_-~wCb!Uv?<;g9UBEn=4ziJqq5-m@7rXv>TVFK`9UGAp6=uy;lX-qB$bJ?4bqQOaRvKpL}sAFFpRn&ogGVm)IXaxf3J5oD`Z`q{p+t~ z8n#JV2HgJ%b7s)x24rZ)EZmW5@}|UqdxxU=+P#Z2I-sFX!G086kQmaHtJ9S0hv5zE&?qC;jzw)sZ;Ta?xN=d@g5#} z9p+lA+3ELWJxJ;V_?r`(8X`@lIyyW!yt{Kdf}o1tGs*m%MAIM8CN>Ymz|OEBc{lu= zcQ_?<hmr8Q| zp2!*Nhl!)~5L8Fl&3@rgP(Q_*z-R$t7u2Q%A@Fn){G|Ho{EA*|9io$2(Q?)XXEzd& z2R|l~%=YOZQIvte49CA&Og!<=6tig7+z@sut{pM+b>VRD^(iNu%^~1(KQJkOo(Jru zwAmw9{>RC?Kt)v_d+2nzM~qP$v<2czhP9paY7~fHE`L+gtYYW^Zkcibc`!6&gB5Q` z>sgK2a{kjFgIKWyZwUl%nH&WzBdN`x$Chx`HhwpWE`J}9A%6qBBp*`RS#oDfPm5bK zq&~lFHkyP0xo$XFqm|yKW@<+6aA68%*()p)l@|cvDFiq%l$K!bR8}eDVA?~h^K8bh ze=gl(#onrB#=H;5RV`*x4Qgx0gNuf%ogikn2&t&cQddbkW2_H<6v)^X)!-MXLTnK> zGDC!ZP?a=w*H$S3LqVcRJuJW|K3DGjDNnuBNPD)v4tCpclk;2H z2yAy8@p2Gu8d3JVPY$uV*b0z7BHVJVCzZ z18z&$4JjO@84gh?xP3V%!`KCsF0LiA9es|(L!jK*M(v-zZ0Hg*#~j_si+GEAE*z<* zP^|0)nlJNMo7xS=nvTa!gBUAjy78^R#5MO@hN@rpR5=w#5dp%QpmfuPW2Sg)RpMAl zkk75QQDQcv-QPg)whDUOtpE|~n$QK3n>B&P4AXzwiTn2LQJp2S5I!091BLpx&(J7} zSvLnzODu0C&&hhdJmC(j4o}xO_%z!8dl+zv@1MpNebVSON7)dQ(8DK;$un`r93yxf z_*4m4D}b{1$OdQ{9M$YvRP`I{%1*}X@&v`l!&iS*Q_xdmoXl-@Q*`b7sw-xhP71sD zmIzI41B(2r0>;fodcuj137}OtgYT9b!us2M0bOg6(y0Xs$zx3A5ra3_N5GkjW|lwQ zpO2A%sRk|_rUTZ^8hj9r_Vzb0#sOcLEe+zg)MgvU##B!<-E(#@pI5J3a=#@D?29QZ zpV=tYzZo#P2R5Bzd|-@_;1sDENo?duRe64t1fs)|$R&sLZ+-M~f!7?*@T;ou1iYUw z-A(tyF~p08H~pes2{){)cyB<4wqeDUaFs(@zo*N^9$XALMDEJd`G?cpAXs>t**|2= zl9icK|LyE_IocXlwBn9>(cPoI{m9bAD-#deAHenLFgcyBGd&0-PS!u0l>sxFHH|5} zw}@U=Eu-2UFS?tn4$4-+Zy*w2@_~sI;oW>C-#+r24?S#%%N^$=HfBH4A~F$!+*f@@ z+uznje{PH{V^&?NuE(kMGrBHO1G^2<;zypaAciV=H_yQal{2At7={oGieONDTb+xFjw8TOI8}gtH-fM#v=tf|MW9kQcAE)I{h{*18JV`!{hNO>t79t|ITOnn_ zK|M92bA|xf#BnT7@-KgW0?=(@4FJp_HwmE@0IkvU%W2bWecLtY*e+@M3`!QViNgRl zR-9|t{N2`40J!3&UFU~%{MWq$esiml>=sbZ{X@BMukhIc8=;rNqMI4zPE0KEC_A^(+I(G zcD5nzguu5)(x=!hg0;A6yZaPimGI*vGJPr0mwE>;&>Kd*4+kpfw z%8hQfX(#46%tFwT?OR>x!^7#f%5X`wAO2l_N_t6`InNLctsjf*=_i3?>*~0f`h(-? z(-*Kn6&%$>yd6b>lN*Yn(G(pqM?JY^U2NEN?KC2LR471LoVrWDj#vI7*280%?g)B3 zs%|8G4GJNaB0akrZ3k9e8N!?)D`M45c;bDx^(FublqpVF&O6GIIR6c`PpD*^R(p{P zo(g6bDj^ns(LoMNB1el+a-_mz+$Q&S-MBj6UH1;)Cd>!L7pO)Qy(xhZ*vr>|sOEDS z?cBz%Y-wV5$Vdkc_DVx6)ozK9~@V(qqm!+p0FR%BsiE-p4yzc&EO z(BC+DwZh)xM|9B^y!>?dL9WopGO!sL?eimyTjkz6cI{hjD z*1lgN`HFx-$^qF{5si3_{Q)6r0S>_ak8gY%M?466{f z-XfZwt{_jA9%P0^bQa-Cm-BYz(qNw#bpg=ch=<;^&h;PVGOm~1k%XGB8D_n>tYNDF*nYtH0EltT3g(WC$|eX z*!VU>jMWI(3qvbxkB}n|Tv}Q1V5uP#uKtSpF|*FxY%#RdhkN=0t$K6);?FZ3*)R*J zMjr~|@7fIra=ZSW#yb|5uq)uz7}!2mBYlug#&r^*khubQjd;~)>dw^_-=Z{wB0$n| z1;1Dq$ka_$E739$cUO4Etb|PIqvpT4v448Td`kjtxK7hXW-n)zEH`-ylN*}UfkwgO z)CCJ(31qkL;7TNEyv(MNaHPOntDB#GSEXye$*Hc7su_I5$0Q| zR=ot$L#5(ihOu6evOt6=F<#xsWM`Y^MTjp?idRa2%I$+4Wg?rWhol@WoJ3lBASen0 z|M3ebsdKwdir0+aAcTF}Ih_g7JqkGcL2$U;p%&)l%M~&NcG;x`e8|2zNEB_l0iH7E zW5J`ZjPaNqOP^jKC7N`{#x>F;6nG`qn_S+}FKM^(@D$LmGy-v7nVKIo-E`G=&?OZ@ zYVMZEKSi55D-~bBp2i;!rEOX#bb9l>7}?IzQVb#;XJPl-wH)Qf$!-+1xkExU3DR*^ zltw3#=5LHFT=sl-IMysvib28572y=>52Yf>w-?= zwd#!By?Sc#F*cqv7vAfo$&?YrXE-41ZA!MT-vJw@;#?klHY-eV4^2oeE8J8Zqb9z- z{~t-6#W3<-_#<>egvoW!hPwcW{Bh}6LieG<50_l_WVt;m_MC;yaS9ISB~ec>V*L<> z!59$MLusGQ2-btK$``Tt=^jYRBtob5yNKaE*2TS|N4Nd}v)9 zvTYMI1{NiGwc-#P|wHQj!EVV&o|(9Ggwo*Op2c%?*mq%5$-pEQx;C&6Nq$vt4(vF*4)vf@ zUDg2DdJxG{|6AHgu&^@V^bsWce%huX`aU_H%-p*Hws175tHFdT;o~xhE!0LM=E5N@ zPL;n7!M8RW;0A5d4O*uy{sv6+48OTz$$XGQAMd{TzZ4TmPes4i1(gcz9d|85i^j9+ zzas(VLyO)(KZ7;^><{B;bCmITfUygR^00izU^v)_xjduE-UC1G!Ui|L&e6^Y*W5s0 zvd~JwhYN>}oj@41BXd*C44C>5ITAq;k zVFc@eh)uQm+aqjkmGWd8qllHj+>Ld1++k^ez<=qs86hL$QL=T`x(g8XEJDZe{_mE9 z-RIZ76R2iQEIZXE=zhsfa8SmI5S_{gL&su9))ytjxc)z+U@i><(gv>0`-UyxaoMJ& zbgFZWMQZl?vl~ybE9zEp%twAZ1G^;`H!ve}zmoPubRFxOB=rym=d{=@^t1k-2HvAw zs1stC`-v?RBZXA&<82bI(`F)cN-ou$v105+No?ohsL=BfD&zHd(W4~vG~ofOP&K-+ z;m~N^_vebDw{~Vt$!qlw#GZi&2Uxo7+({y@aw=ml4x};3OO|l! zv1oJ5NknP&rVnuFxKN5OoU^}CgG3F_pn@H(MFKnXwLdKCaWc%sBw-Kq+j#d*o3e&~ zuD_N{6>RX9OIhYz3D9(@0{-H)bwdydDs{-Uwnb*ceJ`eSgo@z^yzhgvrs``FAMZD2 zNmOGY$n(6NCaC}?=jRouTcK%| z_oCTx%FrX}(uM_-1@A}o4-Wu@uax!H;oU`Yxj|hxB=L_hhles8Q8@(A|Gk@nBTHo$C zqoXY)5c3MqC}$D|#+W#Pj;%^7)+hGu7nAmm&YTdTD0rl?2>&mH!1h?2)+`ywn~xb6 zf?OS#BNE6O!ufYWS0J%6)GrQG89Pf`rq-0c_{8EvcBSF{6L9q1EN}caHlr{~ht8w1 z4{inzeCymNzBZy&vKn*JNwXK%O)OT+7=z02M#$JS$kfnLa6VPZxt{FhwxfzD#l2}Bq zgb}UU-RJrB?UP{Ge9^Fz+U4}}jA9fClvge#ti#u0QIoH!3r-w#o;Yu<7Gy3^I{2|M z(TI1&BwmuY(fi^E1r(e2XjZ2cN5evaPm++o5<#;G55|R6Ju`-##Isz*KR!>xZfZ{T zY)VaXx;aUyrpUxO6|OfBBad$uzYEC>XlCo!T>^IES<+fh}=nB~LWWY{}rm*gvi-4RGl7%Bi7I@wl!llgSN}b3+gK)K9 z1>K_Yh8zjQQinD7tc>9Jb1(ar1Ysla`HSEBg!~2|8i{<@^>U1cA&~qwoLJE}^qEFu z$cuh^$5|Jn(dnlx-q3?RW;-h@T2+5bn35aS?(hiAiUwbQK7n%&+V#)8+kb^}oqe|c zrHJ<|V82G())$)=AM3ZmsSVKN*-n+9Vpj^%mL$uBt@@91MNBqdvKPOa-(&yW<& zuheW1&c&2AlezYYBFj4S8SL0-5r~i)mUx@lKQ41#Nzn;>gf&to#)&AN@Dm$H={wl{ zh;Wtic@6fJ$B$>$9b}Dfgy7x&d*U9iT8AXjO85Qg(3{zsp3RfQe|>II>hFnK zKn~{|Q{WAGkDH}NnN6aIX8N=e#i~&#*BvQTH-qaH$>zKkZ@|{v$UmuAqSorhY0VO* z`sx+6&{l9q&4J^+0*M|kb75zzZa2gn9OA_C63Vy{1=R1xp@nFdV<}%rT5ta;cA(ma z-!<#NL_HB>)2lS)O^&464?|sXGsVPmq|hO(9crb=@qgP|Gh81#FT7&t6-^N<&4_<2 zXFD^QpdiE^A^B&0*a2>ar__k|)Ls92Lf~Cu(C!s1))(Q|yh!YM=!V;^Xp-bL5vfeE z51HZxym6{u|4AjCX{$lm3+J{4%;Y@@lO><#kN3BCi7Gwk+EAS~J>pmC=aANf9tmW7 z;zMO*olK#s|Im1UwW06uVI)xr{B(3I-<8maVxeyD3|l_QaJ8d^gh2GhXVwRb=Q4lS zm~_GNBLr`uGF&g6j#dN_`cOy9&Zuz@1`1w|n*bcEC^O{~92n#mG7U}LYa=Fem;gef z1Y}p+&3f#_iLR;BQodj06AeQedNIcFZAsiB5;aWaj#M3l?jx;Qqc0LXA<~NloN8j) zuZ(}q&xx#FybmT3d#{N=oa*d4Bs5NosC(Fp?yZZ)hk^PzuFC~_0f^SZB)Agp9QhJX z20?mmj0AbQ6t9U>tz`w-gwoIqvyfqREE%Sv!_OUfYh`tZFerNDTpr|udIEORNjW~z zX>!#qBcEHPRlr*-2%L=g+BHsOU*O*;^jxy^QDP9c_OS!^z_}|CgvA@rkP3R75Aey( zn(rC>sYqHMN35HGx4)aK@bb`8)@{AGuc-;3*TfYiY+NdGO4=>RJF|8YkhXr4D^}uL z*Z!HvDlRTH+W$}7Hd5uv9XNTT0cWe=?7MQ*WIjg0D-F!-$V2u8j`Ov@CrID<~Z2y1i}Dlxo_V)MFwr&)*`33yOK}D{;y*t z=(l3y!+Ky3kGNN#OwW+k)N$3FnuuNd{mUGallDenIzd7DPw#LDdsOQ65H#O#4oXKa z+{?0&I?W+&G53_hG_f&2V=xX|w&FD$KSw~r$QaPh*jO3gRgmN_3Ag`!B z@H9FcUNJWSfY$d-^qj_yIS~l!`Z7>xDB;;hd<35v+CcUCHT>~!b0B2dU(9GenL?VX z!8w#c@)LK-(!UM7`*Kz$e2Go{yDsDI=HL`hGeMO!V~hj^rfn<>xE1XTRz6%^Jl`Rj zfd8d(;ZQMHJ>$%g00Kb$zs}RVN5dwn1qXQ(lesw{>mC-*KP2xlHi%2|YUWdmBeo8t zUxE6n0W04h-{Sh2;UyZd!ed>f9)B%|y0b6@#0= z=>d89u~MeM1*!q^5??MR9LTe_UKU>%Ra0ogzDBs@9Uco>NTCnzG;dwSGsqcJ@9#LQ z$Ayl5AQzUz1;srAzi>6DT(FnQtwCm>UJY%C&G}Qvj)Ks69NEGEg(L4Xx%nF=l zb`t7P5jNhx{KX2q7O@G~J=3X();PS|J^FFKFv2ZJyQO=D=dc>lT08VkDw z9RKTX2F7R)cOGh2x?SZ)iW{~z;{hi2y zaSB)^2_akN@D4CNaNNh1k}kWEff{ZSxD_$B{|2^~1|QI6A4~a=MZFrzA^lQcmzZLE zPZe~L(>ae2j=wnOG1UuG;5Gy%mBEcy^kJhrAnX3i`^jQh@}D#g($aa$w{|G1(Yj{! zo_83341cgd_@9Wo{sqAZ@#bfefj=Nhbju{0DXquT65!V>%$FHHA!SAS7vBuPv52bf z?Q~BW1@dQRI={mPaLOXDi%)djP9Cu%ahZ;AhJpY6C>P%?8~6#>hf7SGUe21Hn5*)& zKs+%jTLZcX*pO1sSkq>FhNqTM>@~scHaF)?i=y^=CEU*B$Y75w#0EHeJ~4mP5&SGw zz<+>1!v*pj46A6&lIs&r4d(uFaoMZWl4D_va#Xz!(TNhS@v%1I6e!%5agwNC3do?J z60VKU{l2ww>K|sCVc^|vA*Osm1~j4f5k&qS=?gxVLO66;PquVW4Wd0!sdVEi^Z>`o z-hITfT!GTb&Tnr62g(k4g#mDaljmOO8w|zKI6o&-5>P?T*@h6nnr(+!JNBUfnf0S& z=gA%DqRC?5D_fg0-F#Y=DC|hX^+pqoK_54{ETThj2w>GJ;IQ^oNezAq_J zz2P9UOVc)e3##RXKL8$u#4BhuMMMutB|YKMl?FFZY>$4$8AG9)#@)4i&(H}zTq~hS84#+fH7u|ER*8>eb&w*zI zII3t}|0M?kgf!{g+|(R3;)Na-vQhDWPqSAvxxKch!lZy7Fq~9lFO8@{QZ;}r*2r@Y4*A!#r34@A*g+}{0>kYj)MOLEu zUfs~S?f-6;IFj1-%cK=|W7d8`=mg{6(uMAKr4>TR4E^#3sj(k)TYecqqqKT{}&NGe7pu7P#S( z`Tl?d0lTa7={s78p|h@P8|3qu5T+T+Tpx(4%pT2#Pow>)Y>KsPv&@{o>ET+s`6i)_ zjz^GgPx*zHr%k++&%0awf4^P*_B#f)#n`EMT!yh&%&Y`3eW!QZvJ#Xm6meI_!%t<9g%n`M zzfe!^SRvV6Dajh>njV8x81`x|S(x{kKBy8(QVABO?{;=qutnVDwt2xRxi-^sL#>a>7~#vg!i$i9|qNEG|Tk6&WUe&u|G9sd)mdA~VV4kTIz7ulF2F9R>!L&!eud3ug+J>rN zjl}8kW(kyc^9W>>4!!g!hF2+E<~M0NhrK(>#y5MN_h~{ezt66iIbuR`;5O+_*j??6 zQg9M@z$5{uXW>_hwa@R{oCLG1DeVCYevel)rBS%d9A%4<^a6kMHvh!}V`ziU4`hC1 z)02XJ6E)^Pe_jTx1cDTu~t&b)WTF(H$0D65l+j*oxt0D(D3JO97)A=ni@Oh1<4C<%>h1re0yP_^IGHYQ( z0uNaem`Fh)^daYEx?A2$wvpVUB0AcU`{5fp!ts%{h!5$4v^z#DvAF_kxOx@p>?I&U)>v&`RLQ=ikwRFgp(>UdrO3ysie-c|F6s zLW{f@9wME%N_^(%UXuovTh7BH#LGsO+nAzYnqADZKgmqe7VCs z!!aTbv-v+27LOVqC^tP`zybs)yg+p;!apXy;onK4l|(Wf!C=YM1`!#_&VUWGW%G&8^3R7J~X zZTK~;gU++-0V^M(^dn?bf`l(F;70F`q~v-|f*J)}0D9`V1Q!%tV1JpKckr5)G~Z{m zNruT~Caqrn^ORWB$i=$&f%{-#)jR?W}UX z%n#2U#s@j^yK9}#uXZL!tFsPP&cRA*uNB=1b>HzXrC)T`?knvPl-s=J=axro5soMK zlnkFk^A&V+uJ|x;m(rquzQm~zo z#Duy5JHIQJ?s&T)q*)^zX45^aXYKh++E!20NBA=%9QsL{C?ysE!+l*x%SW`vC8@rQ zU6@N1IF1lR8G!#p-5rOHqe^}hnX6pvgCPLz0i`WnY6Hv5ujSQB_wLm#qugKBNi{v7fh4+kMc8aWpaO!Ur31aL zT^tC_{t>R-x`dJm5N)7G^A#Ev0eyT_`(=V{Gw8)IqKxaX(M7wghZWdxs@v_WB~JWF zs)OdMusDiM!FM(KJGw=-xtX%m{@_w|cylu*r_L)Nm zP%gB>?aj#5@r@jB;Th(W?xa4AThr2)GX5^-#%hGQLE02xZFP6TfK=EhbZQd3djRN! zF@;V7iDqHA`1RgiYq`grNb{E0jJVbSc#idjqI?UY1EEGw)lxo$LRy{O ztD$FidTDo=(7(8IG-b0aiI1_$I{V_Ow2o0s;1YumJ=7Y;67%Rdy8IKUqrpLf z&?E-%j`oXEXcdtfkuUCN0^jia4FJA&(G5+Z)LGAA+{;GGWdoAsuzxTWlsfd9;`s~h zslJ-7EVwk?k$6#WcHcb>KIAX%S0 z%z4P8eI^v-Xurgz>QIdBFk36$bk@BiG*wnun{&s@i?2c8ybnGLyuqcx)cbqMT}^FF?_p3>^N z0FFHDFuEz7ClE&kk4BBm;OrxjIp8Kl3g3IT`-#X~hVmUrBCY2g`iSt8GDzQ8EGExy z(+Fec*(IvT7RqkIMPwh|5Jmi-bL>Sw1NgERm?yH_PW|EN)HXwSy<2JU*Eu#*Pp>>V zQ{R@M=Mg5apzJwpCy$xi*yPhlxR)?osagy`e@OKn**h1~`YJ_t!_FwrbRqb@;_4g6 zK1|e7NF}54kr0YB~INsF%^cZV4bd68-5jE zTBO4n|58bfM;yAnH?)-=wpjwF9VuoG3?YoeZfB)qm@#ic@o#9BEfczQOW=u zieZ<>8(PA?{sKI7Gh+yfuEh_qPP9eS~!I+e@lqVFEOs0XW3 z%_lOmBO7I0eUu4~ZRmJ3)QC| zbE4@SealLYdLz*fKHmddO^~5ouw;H0OIAh3o&;v!TcW}G?Q&|DunVB!H+S0;r79T; z?19_9Ti{{BIIouS{RUbj8wgK`4P_c;b1X|Q|=bPvH%kd>A zg>?`eiwlJI*df?rO(vkk6W*9F6ULx!{?Hqz8J%?livv$mmRegwOVb(-cgG0L>Y_GG%u(jCYec6L>`#81a#`nF#n4{qE!o&Lpr6pVrU6F)#c3sbk<5%sw`a>V&eMI zSVWxjCw>5(VE7HcdQ~`j2-|H6UV^vP+t+3B0KaD+y$B~Yjz^MYIS2BqGg38G9pk^Y z`V^R2f#|WK(YF|rbGVb~)FJ(z8 zi0NUG>kNBA?@IV*^pf_3V&f?ie)sQIy?bo$!XrD30^71BTH}f=?7MIpi$kYSEI_#K zPaSb4+;kG(m(|R~6g3BzqA#!0hgnR)k}`8yRYr*U1X`A%a2KG+GblxaV`YF7WbaA@ zlZ##V=|@{58z4c+(wZAplTK}n7clJh{K$_ug%kYJf^8IWSca`LQ+0dnrrCTVBCc%e zdILDE3Z1c|sXwJu8j60;HisDcO2|9ZMGw|hmCb8zKi0RJK~dA=NP~BSADXlq1q#$) zUPBD|31xVXsmh#c(WdLNQxfU8-db;GK%A_jy*U+myDnN^igYcS{CljqSb&NtxKKOO zy{H0KT7EGbX(Bfn-GAF=yEm(y~ z5?E$ZMPbQU22bHbm3!@7TpUaB0QvH7DUBG9E7UOBJ>RYx)(I%Mp?Lwb7!4p#i}FG^ zI%Q?Awl1}~&z$mwtvBf{$xcZq^}53P$48$6&o3U%981FjMlxjZSIa`NJs{TB?F1Y( zgWie`C8!z(`Z&)JJ%F}`gajBQ>`7&fCbxPkqDe43~ZkH5dyNu-o-F#4gVQ`o> ziBv!6s&IpK7(2wSTa*^NsTiC&-JIbfFA=E_q_4@!=tPmmx3X9hcbfOTg$uNGW28Xd zIYnfI5QT|<5Ail{97SLw8UK42-}#Xi@84&^gb^q|R-TYq@Gj4ro+|Tsknr@P*P(Le z`PWQb4Q*o@21{3?hhPYV{^1tkkIVhaBNgKlg0p&ArS(a3Nv{^C|BwNgK%x~1Ytgzz z=s>w^I~48FY2c%>L)R;Y=J^aHP7ge-o_*G_nj2EmrBlSeqkR*`*Wy^Tq~e@{l=+Tp z{Xu#}n3{%vW!4-i*a+E^&z(tis{85vc?#m7OVFHF)wxg~sShY_j49XC`$nqe9mT#c zVYSd-2=V_<1y1-2NZ=QghwHx$fLCKeVH6k|Un7f&cy*$q0`?gL|E=Ac#&I&Y=P8hN za7_3=7s*Q^lLQiXa8~tt>)6YFcyY|Q5WCmMVBGNb(eYtb`lh%~2nK2bhJR?@+ih0N z|D3<6Pi)qaUDI?4guhXsxrWW6LH_``!<;O_JUSS!<~HW9OAA&{mH~J5grDoJqP(Qd z-&vdW1VUS&#Esq$=f{E}7(bxapwj|v91AuzgRy-7(rlt5$pmXMi~O|taf$irqFf${ z8Q-WU%)w-dDFUn&Rp3eMgJ0?{%^h0f%9`?Oqe5-VD3F43FO%Yu3o(HhV&Pb*63v=C!_p>B1`jiJnM|*mgI*$=b7vyAqL` zd{!#7mH`46xUVG=8h0XC{`!?j?HC?urc1XOHfX-uomj_IKGUx}xn7x1kJRn-DZf{& z+uULJhS*Xa*KejX|9tbpRVS~ymV|v+QbK84dBL0hiCq zJt(ogPh2e^d{9Nw<(BwvcWrzRU69-0TX!B?aN$eyW5YN5%=*Z=mdRq7sqZq2D?-il zq9rq$p@Q=tP;vG*;T!u{4_q%)$PcefhMHLX8`IWXmTDsHsX1k%%wf3}1-xf!0}GRU zv5$yrp96a+!<=Ti-)HWh$gLL!n}U?}C|8Tw1niDY;W5a!QzRALjpJC*H8FOKM*a}H zjNXvMXm{;<37s=v>J4hw!F-PdnN-xG(%iIq7*l0&ETwcvceAbw#SvWqKAx!;M$pED zn`m^Px zgDM9Id~e4f{|;5YyAMafF()y%0TmfGGCg^;62=^`r~CZ(;9jzl7br3ecQ{GJVn~Tz z+>8`FZL7U<;N?AU(N6TQ5qQT_m9de(LalOaq?&ww0&4>Zj_Ya@l|;xx&9wEe|J5B2 z&ZRUrYo>j9qBZjH<9l2?fj&YS$M#TyOo3RYij<6eZ`&@q>DFJ^3Jd_;9~rPcM=607 z%o!!Rn2DTFP$Wlne-~%(umtHu+?V~p*n~2VQCTv;t%#P- zJ2l6f+cit0;YkWT&hf(dKEH7O46H+Kif{xuIPms~4> z!m*!9b#~n0`lK6@3(kTG9)k@~w6lJ_00lNOh|s3RY>dd3?Rq-q(i6t81wXH?Nzgye zv69oFhaNpwzbuiRE$Q2jI%hypV1A^gNV;jk8f^}YXM$rUX%)+nGb`Pg^D3o%nK3G4 zcWJ3dIDmpruO_rl)Sa>3;h|An8IjuayFIVL4^g;kJ<+>M`ATIY(cO!E=$GA~X1XI*AM4Z(G@qIdCVO7S5yof3Yicn}*eu{=639Wr>lcr+9R<9e zvmY{gof*U0f1W=Oc|QHi%nWOvz>F{LSMXYkcw~@jO?m_9cdY0}mJL$Cp3)D@M=dqAOHJ&Ueb{ zi=bs-3lPLu(DbM56(q2hEXVfaKluzGOKy*ih4@@6|MSp)7B#D2_+ERoH>U^~!*BRv zw-`EE99dZeuc1s84r{N4$$HM6q5IkV{csXJKP+VFV>$qv)%(mD#@zZcn0zVY2{^CO z-X@Yq#|>Itc8@@Wi29>7MS*Pzu-%UOsB0J2MJ2z!h(qULwr)(J9tIl^O%LSoDVANI zmH$W$T|l7kdZAoan~dX4C%&o>vj8DGaA}jHZP%JbLv^io%oqEtYI>h5AXV!rH0onT z^J_p?G$DLNuo|*ZjK&2PKdy)6bcV#X;&2fICL$?qIVRLM&U>m%%U#ESHjl{`8YG|2 z=Qan7d-<=3%w%vF3=&U1e+#kWCqK=%{_Yo7)C3c@4Sjra=vsm80ftN{E!luk^`E&9 zK>{_;8|~lk1W!ClFu1o(V0;3zY|2^s#1JKmW%GphdSuiR8a*Sn&C|)gNl1{a+!*8y z|APe6Rj4fcAv_1D*5`yFi7ve|uqJ?PRTIia9Q5q81rT@<{X{4G76h5Cs1N|LeksJAfqeN5?Pw-1b}*5?tIKGsEvAjCg8bTpdSdNE7a<{XiHfbs1`EP=44*Qh>cJmc#6*7sPbqm%B7A0_}JqxFdT^+CGiQb$VqwSL>My=Bl5)y zuXjU28kr8|`~7~|eH44teTU+W=Li0T(PR;k-XQ@(?aN$rxNImUB>`BS$CjGJ03G*Q;E@pn~{H@9)2Py(k4Nrc=uzP-^cQN3WG-m9g+rJh(vWKrVlR{KA zl3D59wOW5GX_n7G(L)z?S?=^Wh47|}JTd!x)c!7{4S7WK=u4x9&S@%=3n?Yd2#C^% z6VWYlE&E89b;bE{SMF3;zz<2U7PxUP-X|tN=TN=C{#v!L&l&J4Wr;7wkww07aB#)As>g7@AE>U&*gGp5?h2QI@?hdcg^`U^7gR`*>PxkNZ|-FQ-oA{4 z4{|znFRY{ACfI7i1HpME2#TbXCbgn0N`_R0<+DJH!P9|Pkvk(uhNA~M8qiPVX`Fj8 zDA2Zf_+(o<;3=|mDuzP2^S7ZQKP1?=KuRk>!3&~a9qzXz5b=e{c)e#D0Ry4ecsv{DIV3LyEebO>Q^S#i<1LD2eZ zFXphWRhPx)*FT=22QigDdDY}vPq?AMwH76o0ByfWSw{rEXW}5?23ddlfW2{DcQ2`f z-OK1moL=TN(~47@z%mkhw%~0d6Pj;SvHv8wV{t_IH)uYoM2jgRKZf%4W|R zFLe+tT_uIe$Ts11QIcRNNNl9%XBJMx88Y1I7pp}OdK(ds-E=#vRKpVK_Z}KAQDwa* z_Pt9+8}i(W*D^pf*l!Aqq=OarmV!ATWeNkr8Ap3~i3=XHyCU@_t5_TkESlr^6qpmD z*j79P{+rRQ31uCWj;;swU$7<`1wj>HQ^zg+aYBR5O>Wq^%rN*i-_&NX*+z%W`Qh4f zD8QYT!-VoO?}~voqaSS4zvP#*AwhPkwW3O3;I-ffg|_}kfi)?KQ3@a|ZqfEhiDs@N zpB-C(O~_LQuXMW9WynVSZ+}yAXgaZ5uUEDlwx!9qyENO-jZJ5D%?XUb@F~NTBTzJn zhhX7z5FjlgBLnn1p!~Y`&;M9z8Dyx!PCVmM>z1xz_>D#(L_{CJBKqlj+#kU(Y$_+ zY4+sjg_MfRlDc=U`wv(j5w%*kY&~GE+sl^rrR>3>gUMU`8MBONo)ZV~g${>VjS#$j z?o+I3wazDtb51@cRcd&G$9ZjOEM z*iSwlFBvO|2j_nd1)Mk=9ntCJUO1K52<0S)QSikf$9{Y<%+e|^DrJfQUoG1aqrC)3|K$J8xp6@I-b$cNzl{StjaEL3x zBDJxKuNjTs5`m%q>O0?J?crMH{SY@)z#bdhZ1dg|8ekl?w?aq#leq$7Y=Up;72Jz- zWe&wW7WXb0@J(3Lcfpu3-L))Ri7Vj*+4cwj`Jzr&+JuJ5VV%N+V|!=BcPoe>1{Il? z_2KGhUd}gfy4M{~;O6L}1qqIDmK~d<_k&=GJ@4R4sS;3rs+&|G!KS9{cA=#f5-8uH z$~8@sw2n;vMpk%&h$;V9uIqFXzdY0J(un+uRLyK4zra78dH6yXGFI_k(E9SZ@6#5h zLk~}5jcnRvpbNbDNC08>dI8y^h*3@b&3FoDe;7Ep#5ML?0yyEms8wqx4mMCx-5cQr z2Rzh^aXCye1)K70GV_p%Q4dRGBfjrf06<&??1^bRbhmR{*bNUg^9 z)LA=0X?2`)A!%E|5)M=PLi;jWdlb)WTQu#{8S{UFskOok0Y#Nfhi*44*3^e5ll+$I zpt)_xN}jR(dz6Nq=hy_F!#FP_hpjn~B>!)zWO{4`^)+iMwO`u0j}gI%N|CQi7qfdC zDD^hgN0=lz;Oo6i^P_X+bYSy~Ah(@H-1x5ZV%@N(DXnh^{Zy}Ek=m7y?;}Mf5>p## ztT^xh;lS#>^PVsUzXF844$NOnAK-C5ye}`Oz4oWPC@y%83)E#srrd2d`wKzpM3}BC zgt1m@I&EmA7t|LOdJ)|hX@f-uo+?AX>A1cH4-)7!J(&S?=k$%&d2czg`yc6&#AM-B z^h`8YV9nlE&;8+}oxFfk#G2HWHQa!E#c5s@_$J*x&oeo70&yH8+x)RiCnKwehFF9f zKB}KtVOas^sr2`O?9m(d2KeUi@8}lgux$P$tmlT-x@u;5cv74h64gB@BKU^o@3WZg zcWPBFf`PT8E3^i%(hJVp>W@_xk$&htnF1WIZ?iUcLC_^|h>VSZJoeqyG8)Vd?z!2!Sms=`{Ai(Ls2rWA|}m8NXje7z@yk8Om_%FzHIV<2F@w4g!Z%z!JcFYa;E62p)%Nb?Ln0(VLS3@JM0tPAGRb;$Blv4)rq{mr_@V94p-Ql1UAeM@_*Ta{0T2 zo42P`>*%45J-nI_s(VjYweBh(I)&{XGN(V!YZ)*^*iVZq4lFpNA{;&}WqyhuDpGX@ z(s#}90*+=QV zdV;ni?JO_Oto}h3@k0D`9{a|{^-3fKkw{LfA|%(1 zE?h)l0W;iule)**jqcY{y}RrOswsiqe!N$jLHIRIS#K}Pe#R}3cGBQYU?V|QTJNZA zP}oNZuKUx>m3k+t8691)Z^r_695ZS)*4q4*tw0G@iI`BOIke_q-|nVpVaIHI7O)%N zeHbyfYcn$HPKqKC!i(k)bZT+AgixAw+7as5ujPU3`O-&VEm%SBKn`<*9u60uIh?mY zK7)w})*10TD6YEKqh@1)5=NqI=d%h#;!-9Bs<0S^eeQcvU)HbfUo*vULPuC*!Ic(UpdZBvYMF&BJzTo|`o9 zN{Zevn=FEDX}bUoP#8;SrN#wwmWnrm5W8+P>_VS9Ifa9jj(Nx?OoZrtR1;!k>xb4w zOqAfM@|;G3-Z*as=S~-<#<{I>RtS8VU#CitV0_%I`hA94Dm3pGcnUGPvLoqR8uswk zGrA=)iJBw+1KykM*|pW>wXL&1W$`YsoVO=o^5uI+nt+E;nEeMR-;!LI#c_9w;24wW z(4a9mX46GW4EosNMm3pBRIh?jLnt0xOZ%P~swgTj3(+Ei&Iv}RcT#Fu(QtM0-575MD% z#O|1(@3<>hma$%=v7x|t{jG5Q0dt=g(4(f^3+QGt~mNXA}B%we)srY&%~Bz^+MYK*yu^_Uc? z&c4`tf!1uxG+;rYJR*X{IhPBC8wt{-Y7Vn1MU-VMogfiCaI~n_p7s4Hf)D+U0}uUF z3oz?@*5TU-rXpD*)>N&?B1LlMUFtEmTDsdl56fYf7Rz=0>Lcrz?!dTt0p)q{3-1_#v{cC6Z`twOs3UeRDx!#ri z?Dy3wmSmo-;sGjIEmafr*-&>{L=f?JRqG7ZA4o9;aReG7aV>A~q}Xhd^u~OJ*aTWP zeuciw+H|y!sKf$9;$@nFA&DnJt8V(^@O8RVPU5t?@dgM=p$nlQ1)$^0dL@HXwkI3` z!E=muVYwod2Og%o5+u0=KE$O5`R1pbNBNDx`0f@X4mw(7iRgvh3cn|nh5T$`viDE8 z_~%cej#+OP=YnYu6KN@Mr{eI20FO!hkiGfR#(T3)?}|>!$r8i^!7=*N^ewi9U>^5+ z4gKpwTx~jZDLA7o-RLxXyH8fkI3qv?ixhC>7X z{^_$XQ{^43gGA~S+1~XyS+KO5(B?R52lT1&xVOuH0u8Z|7H2JTN-EP|-|W=M?Kk!k zvP=vvX*ht_323^n$H!e9A&NWnpX_4~-SIOsgMU@Z2n`|PZ-dL)UC0VXjWr+zQL>y2i zi2+BnQ9{r>?$DV9KmxLBB4ekYNk7Iy03fIQx zux4=dR>kMF%3c9M^9M2EG&mTF=|h&>ZNFv1cRtQYUlb+ovnqtT z>^3OC_mPt#Z3QG^>Ky&IsFyCNM<9*lL!xMYI%IjU%!52`jlNGTGmu*CG3M4jKPNwB zOww65wLU;=)q`+iwwJT3-X$~`(#67+-yrVYo<<6%Z&2Pf0IrBl4SL zB7#BvpBK;V`c)dsjq9$QEQ?a&v~KGJCB)*Fg)Ki|i$=oDwz^2nv*Vz;fQ6~Y-#MfT z^v~w%iX!OMB64UmjqJ3-j}p^t;XX;xjFtP75Kv;D9I?%r`dl9ohtC92 zW=sacYQugRQ}cRc+b=&y$2&b4j@-@D>vW-^vErc{~nIo&`t}+Qc_x)9y__GW8 z3YsC>UyeY2yK5DCvykkbDUPEfJagFiLA8_m`7MiP!4>@k32cxz)3Tsz^4l+pQ`GpvXH}a%OS%%#Du%B4?*&c-`8j%C=w##_i9v1<}HUet7Tpej@ z@}*++%{7uH4p$qIy|eW~c_G8KOk=C;z;a~W`O$*L>&lBpvC*1*Eprmc?>yNZa;4Bg zv`R@4pX9_K=}JJOmhrW&@J3@~qDjV9FW9{g!gwb8oK&fk?FoU|3he9mL2NAs0xWZ? z*0?0~Oc5jl^jHmviv79K za4DOVqb3q|oU=B=HfE?)*G=me=e)VvC1}}4xFd;MGkykz=s){&UGUT_iKkxwmb@Y} z2cT_eXPCXM*wLret)o3!@bot1J>D?4-W*hV*Mto?CN2|@6VP=NKmG?J zl;b0vpHk=7MAuszq~{(9QUVc(+q@4!#LpUvE;>mo_0EFz8+;L7E4<+j_D~Ah61?`F zzf^mdL$PS%dtZg;rL}1~pbxy*xhq$>20Tnzqx1!dQ9!K3W=|1(K ztK?4}?n>sGI#SWvFABIQ$LrdJTsnm`6Kv^NwGTJlG?6}E%(S{R+eEQ~Z3OIa!Uz2tcPy|o}r>Z)Qtm4KOt=?L1n zFkTRyM;TMw5+CiG?a_&&-TQKMkMnsbSqmOy*M)fD-~p^6tpwSoD9YE8-Npum(9xz( zY6vm!e(A13r0ek%*vy>8P*0Pt0LK($(^Z=bhn}B6B9O;#)KG`Mp=tS&-wJW(Kam!$ z5vP(g(1;K8i!3EYx}%>!I3P!kKilj@FHUeY4yB%?>`x4av3}|G=|qImDYN@f#j1+H z3%$reF}duaSW^YtiR&~2_rm?Qzxi~!U0-dWq5sQDvaGx95i%Bn0XbsNv5F8mR+S>N zuxb>50GAf_nZxlo3pOD2E-~8&5r?#O3O$cF6qgB}rr~m5nU0Lg`QE+z7KYFD9df2p zP+K}>|K6kF>W}Ot;F9ZZ;`LtzGolb4{9fD(iLNZ!Qb+z^@~BvVmGg%0 z2+^u}`oQ7gkjCJp9I&_Bf#KdOrcCp*cQ*oVWyUr!hLzIEKhpk?VwxNz2Jw=vB06XP z`E}aseuPWojMB5A6mwQpZ5t{TNIEke0v)A?IX#V<6dLNacNgtfn+sZ1th#wRY>)EH zG+~pNWla~Yf9TRj!nCwwoh&l;`f82!ZBXgXvnVgna zi01lQcNxvRys@4v8fcW7-byyx?%7M(UXV}Uf{%oGYOxcr*3BSJ%Wl1y!b5}hD1<~Z z)lo#VhO}j~355?;y042Qs1gWF579`hx5U`X4Mx8nt%^1M5;9~d0xM-N@26cY?}8~5v~)N6~J)Hz7|#sZ>uA~7(RGhxwFnv zT`IRJ#-shQ$DaD8sTFa1?l*%Ac6ml@L!%%QJ{k2SgI1&fSXHbg2Cu{fMb}$t5cflH zM(bTtRM$4ai!||<{v_9jkhmKC?7gpe5ticF0plhMdE`;UWz&;XAIMSI1Kz9~=6&DbI0L*W79+p-}4h{RY?!1`-0 zf_Ew5(4mG{0^DFKo7kcpai|PQ7>y!!f4@rz2iBx}Q*FYdTmMtoqH16NZZtcpNttb$ zJGuUS9taOW4?{9d{Qc1pE|dN}ny}EsVFCBKXOh@@SJKs!CSvk=5$KZwXKH*;e^(d^ z!im{<-1wDApQ&DJA+XN}%exLTnTKOZ^8cQGEX9R?C^mS-+J7Xca zg%+_ESN8LC@toE~O_Nl6iaped&SWU2$z@yu zAr~>qh zt^X5Fh|BrSqN-`aV9?0Z+{tKt7sduuwqY8V9D)E(&g`dM&mUv?F+bGN+wX0wpR+qcklQt%n^!Aho^ffynRtoPwVqc**_TF* z(|8b9-cEFxLqD}c2obyVnGxY8_1T;Lw**rxqN#?qF&Xmi>5AB-kVlVgkyEQ^yiR;; z!OtxvrY31;n3%$C#GPq2lX+zWS1m@!UQqa9aL{3mdYl7*XnJa9Eh6h6Bo0<@~xO&)gYx8l~Crsnpd zGYzWGc#5nlj6O76LAsrKRRTC03cW`yKpr@?&jU4-d@!o@Q66S;yaf3@^4{K#0UZ36 zeij*R2eOmoRJ(*pn0h?BkT(UloXgNeup?3Pj0=Ds%=LekzLEgb96UAFOpnp~1|Uxhifg?FWj=2I#DkCq+pz+}&7>2gX;)itiIeaAvI?piaSzMD8+!Aq zNc2ZDXoSzgUmzSbw_9>~O=bYQn}|%2GF?y%lI&=?D1+45K(tRm*6zaBJIr3}I0!a$ zX-O7w@(wA(MjNmL$yp@h6-{Ng?oaIO9PIR3u%>{1O2CKZ5T`8kMFJ}SODTeFh#FMo z#|a}I=exM6@+Xmxmiz6{{_%XE^F8RzR3k<&UT`}E1AnzX;W{&?a-uM$Rfz;V&qZ%_ zk#PWfb?jZq1fRtCl2D-q6H0~)vF~-&?1V$zwgI1>KH=lFC5<^tPo`G-)nicTL3L{4 z`|-Pg#+ri%o5~EN<)o($D0htXvE<3?kfK!9KlU`M!My&_{lJ*Rb2|OD+Klc6ig?4j zdMcmzipDs90XY$;JDSSeVnaOkzqMG5HXaYc!K@Bc7~XnN_JLQc>ww!n5miEq@A6%2 zU6zc(P{j?}*F0HMkV`TF)Wq<`8ZE^-Vv)A1*(fbeM-#4klQgckB)5T7H{4DH^F+w- zu|dg2*E!YLs5@-TfBA)0GiYD7(QQVyg}@S$=9;@Rc>5!^#yQtBi9GVmCk@bhl9+NC= zFGR@f#YPz8%TAvW!clQJ-pdSIHa?+8d-=EmvXWi|r-lhCnYX*Cw@mE}t|kxLe(0EO zo}C)lXEh9U?&l3_&;{6rZPA^lYq-B=FU!_BlUI#lY7*j7Bu1(o%p>}&r;Z#bXJT92 ztgoLhnp&RBlG#67<&3A^;7C~b*p^s)tj>j|;jhy+MOSFv8ET{+{FD#d7@wnuS(kXH zGF_=QT{b~E+6m+%zy;-s8edp7=HFeMyUIoYuRj>L2C7?;)c$d^n@j{ymcqO{uuUvh zVV$ganHx1)i1c0h5m!K6nQ2Ecq1^iPvF_8Omkxp}+0enCVu2YA32g^CBfov8$ght; zuUSBD?>LDZJ}NwT0rCi`tpNe?CvuB7q8UFVuD4El;&-7GWCc3Sn@as>e6dY4#}5#C z6%7*_sntShRD-zq-Lc6Git#AfbS9Pem%S?jEam zGetJe%7g3W1thN*Bnm8Pu6mA`(@@LqVg*xTsIUVkE?PJStqEI~yVsj;p*1%a7A3X% zDVT)7F9{l<0Hn~B+Qwx_o9t~N_N07t!XI7b%E|IQ11xF#D#Ok6X zwmsi|$YsHLQt*mOpmw%>2( zbld+@U6}gAfxzFv}_ts^PxM zGJ1VOyJFlBGU?zp^9&!qIsUbj{vm_lOq;soqgc>^*RWz!_*gtwdwebb1C_pLxJD_#geLN?(gARNu=zE3^Q6r&CbRohgA03?defpzlF zUii(7Mlo%OKG%{A9>lj`_9;5}c>m?;=_ZPLj86uK8Wwl7sZZkVY5S9pkM3II<+9-F z-JuU40_#M#Yu_}c4Ptx3-^ljc_`%f65P^(#wUizk@!q5~~hX*C#P=jF@AhnM@2G?LuZDJ%8y^6`MT0fsaRD_dZV3Wz;ILp%lQ zJgMcx_4dVXZ!*LQB|#y9Z@>ze`o zzY+s4;aoxxbp3U#Jrdk}2>Jsvl;avZFnu9ILSDs1fJ_W{d0~gVO~Cv+%>6@~-0ZB@ zg}5(ers9~S06!p)OvnWV%SZpJDmdH7(``S*IfPDk>TBCa~@z-80kCLa_4hY=rmzi$mes4jlw9s5` z2ya%^A{xl_u+DH}{d_6&H82L%eCrmZuR*SX^YO+2GE!7zl@(vwFHHZ+HZ8Hn^JlkF z{c}Vkl8<`!@`AB(Y=#vpG^hzJW9Kvh>}VV#kR1W#n+q%Fz~V*9E1T`fMNgA}!luoh zOr0;Q8V|NqXxJ?Wd6YF0SPY6FE{10R<;Tq+yE}WEi)v{6?Et@ z0pRx{mHshG!umkquxj42*^6YOZcfnx_&~?nMAzPjDEe`SlC~*}+__k4^3m_sXGCXO z_qsRw%{Y{8H^|Xl>(Wt!Ug0|(vd>|LHXIa_5z`ji=2)@}@^k|Muv#-|<2?6!#R=NC zM#O!Dy$%K~sJ>Xd2kWdyp4UMFSKDkS1UJTy5yd@}v&wh7R#TUgTD0tC3x$apxvKV+ z2>}CZ3~cS%S;vi_F27@5w;a6Q+;Ol!Ue|T!Qsp`}yHb4WWE5I}!{-eSn1W(Ntp39l zf*!)mXF62DpTWNaZsg5@95Mx{_RCL6KT^pX-*Z>q4&aF@n4+yL=|xA%_5L#@BNfME z1!cgO_o706;C^9DA}1rmqKT48utgQR3#yVb0Ne#ReeDoq;)lqqp8^NWM;(y|?Wnz7wm z{sc!~xr{uZ6OGpuLo(Yj_&gZ_zg#(=2`n~;=&IAxNDNjY96ejcnOPES~{ANV(Jg?&YKG9gdLtMnh`uhkbPu4ynThiu+rTaI*rLWKgNu&Y(DAzja zzGrK_MXmskKLHdB;a$cBq{FICY~tRoc`?IUg2_6yPFm53;8g^|0!}hu9>Q@dsoMkM zTfRmlMAN$}Y4fChP;gnu4nj4n%6osEMemZsB+3$wkf|-&xosB%m;Y4ZNWZ^wJCI#X zfe;y}cBM40m&|DlJ}q-rA+nQc@~FU-%)KO62w_bbd(PSDj;Q*S-#qb5j>CJU|L41% zpf%r?td@NAJ5n{AF?K^?%v#CJGb7>IgE5E<{&o0Q0>+8Tl0~vJAHkb9>dPrdqbLKy zvO6EQB8vcJ7f$k% zhPe?(gqgK!2hX#0!E{RaihQI!81Os(0YmukT2}mAT~mTQ=VR!fZnIj_?7#3)1B4c8 zJzFn-r8d0IL-RJGs+fwMF;dxS3_grgxLrStE|@+kM53eJz?yo1!^zvcc<*b`Vq&j& zIqAF#ZwY@ZgyCM*hu&6_RMDa&e8TudRxkrpcE-$AsvhU;!>G;Y$ z{jbAP%YY5xNQ~8OQH8wZ_7~$6WP5z#Yhz~RUFe8ga-?L6;(kDFF!)*BjNrNioUxi& zS}~Ppa0BDvX87>J=L5o`1jq-xbedM%xiDZ`pp@m=dV20h01Yj%R^L2)Bt=@qKYl6Q z8^n6pU-c2xnCP{U%xO6poez6CF%z=()EPuMzLc5P8e%zkZP&km-zM!eg+iYzg8IYK zJ|XQrH=bv zyGuW3(kvjysuG6aZ{+ldc`SM-+H#SLG!>IN&!NgX&Vnx2?$Wbce_#IDVm=~~!Q&e% z0p7-~M?P+)Ftst?lRwauwB%_9_PN92>adcfV@WbcQs1OK2f(&?xnKVf&rs1LfM{in zU}z9T>f0VCy?QJ8yilmW!`NwS7Sg-z#z}MOdugUCxqVB!R^b`O5a(COL+{Na&y@Z| zNxtd5q~D7`3v${0fQ}y++ToCAwc@2x;dj zWh?-sYpA);|HTk*m;Jo0{Iq5Ro4aKyDa~#rk8m2_5lerz6~fK01wJa3eCHt#tHy~J z;X=Gf$(1oDUmBa_qMuV+3DWA=hLESDZCUg{76YF4v;_q~?5#&F|8|{xNS=H3 zx=tkfIuTq!-nNYkGu7pq4o21JVA^2ftwHzU+lwBOk7$zKHWwYFUNAom^74#&6N92b zN?GK9%QnjlePMg$drpZ`30U2_;)M{XWssmLt6$>D(!m#8=C21ut1@@pPzx5i?Y8)I zOyj2@X0`L3M4)b6ga)u*5yK-~)i8{yE<*AUUC`&x7&cxNgo!Yi@=G6R{$5V@rG7X(rS*Q8#j;LJm~WQWsu0#PBua3 zp*lKW`Ve}zgX*4zJV`OSG(L+(@2A(8(m&g&f+d2$H}TN*nkCslc2N~T&_O%N{^9#$ z`63UVy=bs z%e7UUJI%(23W4y73wEuZmX{J?gN~rE|0~|_zt3K+XvG{j|92{aX3YEc#w)`Di>Ies z(pl>2&W8M9dr%a_Q>=+gYlg0m+}~gj`*VB=xEc672S-Y(9lZe;1)0k0GzQ_|PqVc= zh`yoXS%&r4>GD1Csep6VSGi#lq#FH{So|9d*;Cq}*q4Zxq<$)ZL@-hg=HuSmDwxmg ztb}3(oz<5#E3q{)&Ji|`lypj&1P(o2293inP~LkbD5F^Zk~3OV>7TX8Mk5B;5)+(7 zKo9ep-qZuk7vb-7s?P~BgIn55dXZOctAk*--II^8T7>u>i8S0z4>C4mFhz6}SNuPp zv=G=_6IP`(#d1G4F||ZM*saf*V}1urs9(Bs)Kw;SqFbAY6J>45fOY#}aPbRI-)@+O z@;J7A#uF&J1@%rhvS4|=8=tOI^Ed@if9D#!Eh4BveBRRN7MKaY0)w$ny`oBFcjDa9q8>|&6E;aTxw}92v?YXO95MQSmxTQcM zh?@rdKx&mXvvT-Es%(bN&=DK>o1L9DiUnkwSC-n=Ch`-E7~VZS9Uy!8jp9Tmj>Yfi z%7?L55p;7*wx=KH5UzdBVG`?jCJ@+6J&#Fq)whqhcae*AQE zuQ;HWL9-V#KfT#l*0a`7i9eq*Nf3d>96M8L%1+`mK6#HZB9x<*tx&FKF!Vx~O+taB zXacVTzi}v=otRVS$$H|*4I_cf_-$Gyq!Q8b>WD&#T_NFY5JnmXR+Q`3rapilZKo63 zEt&n($O>oH!INb=l5gEBcfKB2BrMRu`X{P>HtUi+)F;V?BBy+~&3isu7}GTuri~fE z6Mh9)sBLw#SaLxy%@EnUwCdUnkg87m_$b7t4rdI_efXr1Qa6yO0R1k8W94hX+%10k zacV0+;}kDLaVtaFYE=@0QwWy3y2aCNT0o!M`x5Vg&l3Yd+jmc{x#Uj{Moq&4e$HD4 zdQpT{HRyI3keGy%mig-3-dyqv`9qOg~^27y5i98GeHRz zkp!z_SHuBq+CVNjePDv#KzTFxWJ06kp>cs%l_UCYcTe1p8QeoXN0dw{dMlOL7Mwlh z0mQ04#9-*P!CE8M`8;o=H>ABnS9Hj6_<%AzNdbmgGpL!foP3AcG_%>2*4sdsSBOjF z#+*(Brp5QLMh*fxH&r%pcW}8=TVsw+!B8b3a2l#esLr%bg6Z#1#l8^;nzVA4$azGN zBW@+YSenZh-~?aH_=&IdYC9^-7Dy3J?H2Mb^CxLz?a!?-4@e&q3 z1^CMXZrp*i$NsG>`x@YQN}R-GUO>`CH7DTOpe*Khe6eZa+VonSA!(RHp0H!5c*VCd zh-?jF-#Xz3pk#L6)aDpE6{4e0WSoc$r8vzIIydimR?rmDrrhUrO7m;8&z9~ulQ0Pvjf zQ_!f?=se%2zb~f$Mi!ZJc8n3d#I*u>Z3}|BG8aG(upX?Av#9zHd&g=6EC+YkFcEMJ zxxD6_sa}Lot{ZPr?u_+mz&E=TnOmKp^u%iTl^iZcN5sp>ExuIy%#U6v#oWr<9-i#J zzn@+jYH~3i)HW>O*5D_-k-O#y(jp_g(!d`~1Bfw;y!owVo(tz%L>~`s^AxPzW4?%y z61wGC;>t2LyC5RNtnFfr<276`!bZFESmgs{FXKtfoo-yI)D}_z)GS;kr?bEvN94=4 z^d70vf2z>NbKI7B0_>e<)DfmUY6oo&w7!psfXH3H#Q5|x4nT=L-tF}+{7>=Oq#6}A z#roa0jOQPnn7mhEJGg^ylIk^AMGOVi6EFpn(?-XVgEZtWDzU3SvGChx#~*;WE14eT z@e*)Af1${838m-MyYD*}kYp5Iuo<{B0R0r`_B54HE!OT_Tie3_1vv7XOfv$jh*%0p zv7jG%G-lwo@G7n2+Do0>eIgpC&wSG(o?Zup2dh_N7XamgUpLnWR z@Omq?j#X^OMbwZd=nw(|eRt}-#vEbLo#u`yhDMeuI>7k%`@mG|VIB1}4u9|?TH zI%0i3i=wT{ayX}LVkx?6i@Zy*c;zs2uB}<@MJe!GX z>*xyb26nRz7oksR)?CWqe82IYEip~H&vuh+V~T%+eOEfaXKcBo8X+5fMmn?U zdn$!L@F+K&jJ$DUI5<~u=G&^+jjxu)_pZ19q&8d5%=AY%5h+Njkvm=Uf zk-|PWY!FTHrvOc(4eeTC9F6(pW0Vc))8L{ORUz>S!0j# z`^F1SlYj~o9a||hdy$tWjKv59`8AeVfhl<>bYL^J6H*^;uf|N_g!^l2FV3O_9UUVo zV?@S|kK`7S+-8VeoWf)rX7Z{>J*UFVEMylrCX;PR7p^w;{d>`D5L>#`9lfVTv0cm* zz+OT=I;#Q5lI3h8b;c%U$~Hv~RnCZ6LW5TIgmsRe_#>$L5WM&%nd(Y5O>dBw~0bS z2L?u;7ghwG5gNqsxKnX(@u`l@uz-hAL~1+~29x?fzO+~dcRF>9nn!Bc@rscE6JqO- zh1ZGliSH@v?G!T&wEx=M?b)56X;%z&KW4QGsM>CW0^Au)ni6|J3;~oCfyv5v@5$Bqy@93aghKBHxb65@<2?vj+1xMKukkV&-YmSpSqUa9@u8b>q`_wH_Ueahr%IBUBL_BL8a3_a*`hLx-C)zzX)wOlcQ^c>$@~z zmevI-c#U9Vkt46stnI}er!u~0CHPRLQ&$m`!075{5LKCr(qORUwN;i0xGZpck1V|G z`D4|6gZUGI&CZL?ke9%b&FynLnpgy^%D!P|In5jrD9^-$v_Kr5fOrA8`J(T8^83t0 zBMOBc=^tD*JW_F;=NjG`^yn1)Ol8Mz+TP+F`B7i_<~$QU#a`q&Vgb7nLfv6VV2g@f+hd?j5!1s?QpLb=o3tGQ>Dn||W+rb`S zZXJ?|Q4#?#0N?BIg4&Rj72tlF=Z_rj9Y*4~#wV>iZodHo9x{4_|0W-vygz@qDHN~! zb`RS|kjmwZ{GuVgqW2Mq&o@k8kC)sS*nAb2w;zlxs1*V)qS|=WB^&ypN7u;sVfY+E z%}CK)mWfJh$D7_WZUMD$o(1C+Z-5J(it?RDhN!;FUlrbJZ#pKi!27Hu@O53xr)J%; zLp}heW#aqQax_wMXvMawMsI>|BbJd|JXZN@F9!F!A+O=iQ&2VsudR^9@&oJGC_&ah~ zU;AxNb9|NGY4BvIF4`Z$b@xhlgk&@Gk7rwB{GK@JHZo*_J~k@8S4joTc=;+@`}g3r z|2%BaS?ANpIi!&mK~T}@vYA!fJN?`ZBA;3z{c&BrsD0jhs)*><=3L@j2d~5#{4MvC z6yKp(VDpQe%{Qw4qambZ@5ty|o~|**QH47jE^TcJTCIEqwip#1=UF?Mw9gfOThpej zk)`%1-E>8XwtInFy;0ryF9D4VKY?lkVsqUiO^HuboCG|G#|5R2->B22qN<7tt3k!C z1nXkoxaka1IQ`zoYT+{PuYj!?b&ss<>W=lXW_n&yCYWucC7m+P*8-w)8^R<`GCfM9 z`q2uYwD{b<`5uRmvwXz0CsL%U#$1I(*iL-7^1bgh7YG^5@H6lQ2p%9h$8;muCL9V>2>>^nq(Q3$W>J zM~EAw<<;xo5b3(ag&aC zWi&LBPqQ3IkVyxFVKA`WA@wh-(YKidx4I+jx#mD+D!Wq;Dg0&1y}(_P9v8eg?q zI)XC@m{&l!mA;_w!vm+G0VWj=>e6hxI+~Mx*S|#o>fydoOT6#N!(6$N?8|ALl&*II z`D{7S^$u72mo+gUz^+fynesx9+96jVbe&v>rzy2|S$~vr9;JTl3rkCc2Ly*8m)AJ@ zl6_3EK7yGy7Q2U{a&@y%J_5kK>|(NF`2ID&D$gM03*NJ$?7WadULULF*g3JEYlgf< zfwg;N+X=y(IIEDXs{Sc^C5IWnX9Po#5kYie1Ro#=vgp0n0Z|hm2k#AkR}9;sO(#VP z+usQ5w7TF$)y^#b$5Qnf5y=ZvJ>F!M6ugq6!FTSYKT;M+57ZTm?>}CL#w2OZu8ui4 z7@GvAHP*70@C5Q|DgKBiYQ<5OL62n7b1ZGx8JH_ex%*@hw+r^7$(cO1U_G0alg zlOLWiRw`z5Ek-vgh`1eM1j1jk=tjb8nHCZjkPLjRYQGqL^y69lvoKt)&{1ez^DcAm05Fcs&T7>)Q#p>3XQE?*{D5yGn{NUl? zhY@H~)|b}lA!jJEuRG3Xw3uu|WvqPlg6$%g;`O7QHzNyQ1a2)sCou_oLs?A$N{)wY z6KT)W@6qUd^2&B8JYPclz^xQLrP&X^#c)i8^Zxfmo3&DOh7*M8n;-?d1cK||hQz7Z z%)TFUf1U_?91zY0X>Zu<=0JnfuhlCPA(+m4YrGu%0di8d3G*%Tspk{gmLK`q3eDpi zO-r)tkAlg{6AS*)(+a3SbO3-xyz^`puP5vzDdPHA*H`TR+yFtd2a``J;9fyQd{xQVyo%d2jNSPBySZ)JmS4Ioz0vaLtM|N2f5 zr&Q!yFuVMdwO6i=*lwx!0KwHiVL9t8eF($$OX)t-JA_p}ZRo+YGSb+zztaSJIs4`5 zp}l1!Eu-Yg0gp(PK7~f4Sau`cBgE}kXn8SB`Hh2gkwkES}B+S zQR-*{8BNd+@@&3yxTf%lp6CY#T+Hz`!+>c0_A*RT8Xm#Pec13=yIa{;{(SgO1faou zRnj>1sRL?Iqr_GKTr~UVre=eu$e}$lV?C!O7yglcGD+gkkc5$IFnrP+;;*HpDZ*4r zkzXI*5=p>!OkkR13C9r{3vuvOOOh?hP=h2<_Zz2W9RlYC)AleP0>El9EO^n@FiztBBMhaI@F}pX%X?rlefOah`ac)8pD+v?z$|=L>e5; z2e)BM1LoRu-XL8tYjjfo)R2fa!ySQtiHM~8=J5lv=kKqHJ=y|8NvEoQKR9>Z0d>a_ zcn(gO{S@Z$UVW#~awX5fxo_|GtI%#FMyK|kk=k$pp2F_3twX8g;9~}r4mH0OmsMxr z-YYv}(WXq55_<;MmXvDl#PHaX_=<_j$YL0=)&ME|x!F2&KqdD3H9(?>F-2>qOWJJ? z+*U^34!FgWnK?&DVE($galE8a0Ef9}?yHZ{LW5u*Jvu<+6o3GU&nI5;Gk%|mb1KI?gS@mvc0=A79zk@ZyDcgO;)m zRNX*GdKe5Yn$VD-iPS?_bF3#Wy13Ie&3Nz$pXfAD;uz!eMtLlZg;62AHQqmXSBQMtvS5@#?#v@-yZKI zck0n+UVP2m5oz#b8mq%e%2~yi0#_^e3&|^cy+6tE78oJW=brba<>sf{Hrj4dqxGT# z6pszQIk+VhvaKKBV)oSoEE|B*&`+I5PeR*6ZxH|OQC@#xB+M?>mimf9~W zXx^2a=Ml4~x^pb?)~exI)Egpr#9k?z7d{G@q3V{|LNYAAnH3irU?Flq-v@*;LD&{G z`mL-2aRoW(kEEB?^v5>3OYeimZOvKa+1@3rIPV>qL+46Y?sa?D!ts#p?NfU97g*hvJ>_~js!F$ZLp1SUmRY`QsY(G7@e}kI|k;;5ZT38{=As%z+rJhr1J1y9fk=g1)2`GH27a~@I6&; zraQvghS! zWDNE6K3*_x=USwPHPlbl7^qRzv)T>kkQT-qZ!g+Pf>cn*nvfCpSvR*9z_ogDGB2AD zBO8pWNX^XwIQYBz;hW*8vdwP=B3d-u*j7Nl?BTsF$j$)XC~FXF_vSX;E=R=Yu(qkH zOv^3@GssF_#bvFbbP5Yi6ieR5daSGvn%9xr%F8|=a*$%vpHP->q6V1om7Ii_&IER1 z{r-1%n45LZ#bEDNG<=jac-^oFoK~H$UJ=fFuV5O={^2wvAso!QSDb!+icBD`bkNU){F;Psw0UV|LwrWLEkSxD(%=>{MEMN6ceY_FeP-#cZz@(>ExI0=X zR*yJSY4c>N{@WJ%(9Pbl3B`i;rZ!~$t13bGH@H(r5rsF-YWL&19>ta+cn#-8fT+aC zy^WG>{G6~{0PkN64}v|r4vaBfdoo#(JxJaSe<&~LJ1z$I_S3k1!kewc)>{H-7p%#X zGh-v6O1B%MK8^MI0}I(?$F&4CV7nSdsKTtxiBZ5C_RK^cKMHM16Io4MnHG*hOVI=r zVowmjOs+7Nb=@cMadB(V)Tu+nij}(7*PI$k5#t-UyT~=9Cd3zGb{5>9xgsbr7aoRM z01LBHMv)KC$(Ku+u*^mn127OP@hb1-8%HkW4FJ6u;y+ z^gX@tFfu@AZmXvfF1i!^5a~{41MS5V42|AD7a-DsCo3 z;GvqEph{ochC8&jZ@)8YX-O(JtBFMFXgM5Y z1l`9ydvst^?9yIf1Zne~?v<>ai=gKhFq~mRby5i(#uPNHUfV;P|F1^@4ddqUR8n$I zFNBognH*xG=dc`o3!WgkOnX?(_XXU4p*U2ud=q9M(I@yWfvwiClv3i$+hj;?JX(d^ z1x_wusQL!nGs~=oA@WKFw3i+Vy4>lokQ0pJcEOaYAEK|wGv#2wamluPb=?n66GVC6 zV8H_}l45E088Nrx4!7Po6!{UTFbL#l31BTbOby6bVnN;X`aP903_ikVUMl7H!$TyR zRa`w&aUU>#s%#h(1y2RtSw-`Y^BUE|1WjLj`knSf4fQS_fP0R{IuzP`c=JA#1?i8B z2D+e6rCvc^UVF}pL+2rEYSAB!VL~*cGy7#wnMlgZMgD;Nz{~U6EMz+UhCi`XCG+IZ zk#c3E0Hp-$zJ6A&0w`yM`4N{GR$Xp5@G}^?wm%2J=P`gF`CiGnT zRTT*+q^^UEGTD`W`HvgjBWF|FAAnnBeu(90(yLi*Tkd5?YX$z^0su@SsU@f$(6w8m ziaxU2jvx#sQg5^6ZZAhh+r&_-#wQ^uUkf-BQel*~9WNysLE%HF&kixOc`Nz>RXT~Q z`&^3c8UHCbvFLm_H~@D*WAkNQMGscMVFAADmXc|Fm6c8qRDEs1NnaYEa}U;@$)tK8 zIkkM3aD=i`83`7bJAabZuVKb|=_r)O!`g`;KjTpjMOn}4#vx5p#BMMl(tv>~%WHT( zeddLDK3_wl)&U9?49IuH$-}HJbB2D!`BOjxLETTjt;mmT%bP4(MD09me~EC!Y*EZx zdH&!LtR0N5d4>K05G{mbl-ss1fOR_roKh~-+8>ZzD^JaBlZfLG?P~0Zv{FiqR!78v z$?q%l$xm>xuFWAqh0F#t)OiOM0}^Y=88JB*st@~S*MbNX=zrww#PKv?r*!1;+KL3Xn6=c<5?smp`#v?; zThP`@A9(saV3s*VcjT^59>~4q>m9_npFEExsHhvL zs4@r<7~(jxsfsu>=JIyPYegqnWb4GF^YA1$%mpNQ0kVkw@kvmyRwKkdq2 z$SsLXDh`r8Q8Us?Tq4M4xUN$xU`e%)rP`hVlchK6>$TfOl26eB9@{q@m9iM^ZUDrsv@HlE|KxOEq((EeV@llFzIcJMlbDy6Gzh z0v`x$v|#>0QS}T5E2x!b2v_fR455*b(0F+)DZs&33j1VC*YAnm)`BO+?QUt;eW&9% zzx3h|fZ8Gwz1|S+Dz5%@c@zvmL`BvDhM^*(PCXv4YGWcuz$Z1Hh#U2kf(cg<_Q2=J zE|Rh#e-XK!PDcQPWuGn;yIJ#Q%8G69Jz#j)Mx*_M#SN`@ID zHT!FZ1c~N|k1cHnK$ii4J9FFlwQkI624T#)`KsML;lPT;E{R7OfJQ=>+CWwgnp!@{ z+PH|%o6T3O`6{F$8XK9%;&ndaVGKkUSjFSkXR#HJX{s++Jlw^4n5*K}2>17;op!mr zhn&1$`g?*AH;)<(W=C%&0kqpL?`q(m4h@j{Ul~VwIoR^>x?bDp&4|`UXHp>S^Jq8G zdUg8fek+ZaZuea3b^Na9%q#%REvHmI<#q=gTZe|^x9S6fSxf@YNntNF)ZMe=La2QV!zgQ=?&#Kf=o+BS>u;=je)hZ$G7k!;mjKxR@a>hA$cd6|`>3$UE z_289#Y+WCjA2v(eb=@sl@Du_fDzJp=EixJV@uDU^X!<@F1b1g!U`Ixjq|Ef|PJw+5 zQ%Ao&Z2$s1Zp`I#QjiFfgL35@Fb!lqj%jQi>hPm zU~Co%RoeS}oBfwO>fnN-U`5^tp4>|DL~04cJ)-NiteW|eb_kgO%XXvW%TD8b3hG{h zP;I-y%|AI3rQAWIr=-Wl*H~64S@<3GyW}!(f74V@3>veIUv1$997Q$jz4`ck4K36% z;9P)v3*PaEu8t4WGvrCeP?`B#D00+Z#jGp!Yx-y&7O?=cTCDB5-NS?c%Xwm2S^k%| zorIFqUFZs>yvx1BiI3IOs~xgVn}d`cCBx6duBA_uK0m$Q@6YUybPP(P7Zq#)<3wZOb+ z4fBK7!?VSDQx<|DZvZ2Y$II`h^_>vVJD=y~nW;H|^*Kx%mD~baB}2ew-se4|$IVs( z`|nj0_A5XdYC{Is4f!F><6}v@9&{q~(S;pccD7no_~bt=ElGHGlGma1w`^Evaj`$x z*^6~3`+s9vOmTlZU?0vIcru#5eM{~ZPGxv;-B`9xv>B5!qTtAOqRn&5jgR-KUlxA# zlk%;D=#+73HS9qb>0A=@m6e2`tO~VWYpG_!=siDzTTy}T<U=fG-ki?^|wn^J@^<}mdl#eR~%8fse+z*`+=L{`BI z)`UADE0qAD#DdWrU#3cKIV)~JZeo&|5he|yjGe4gl8r{8;@S?oG**|S|ieoW%H-#I0EtF)&ENL*HB zSu@?e0W(s&^}wMYqap)Fz(=Ka6nr$hxQs|N%tqkGvdYf{VyY!jy#R1wHO^q4_7P9h z6@wuBhRk7o3vSF4Q9f`L1h?1n`BMfGe31KtBFbmkSC&qvmZRljZH}I8HKeW?jt&P9 zZKfEnT*KfrvUGN=9cbMU~MwE^~5GyyOBfYQsVB%*NYLC>_h68JeC2h+MI4B^I#I^ z(VG~*xCO*`Nb4Z6=)(?J#~=>i6R|5Q*q+%_!a#b5QDm*qnT#^b(7;y0!TaS7V+6Nq z9J1~%#V+EK(;uU8hRQ(LpChSOpRV2jBQjBdMkYL#0<8&R*yY*W zQt&_$K0^nk>QtOeMy%Ue7NFLp)*_D?<1rn$ zUvrm1a!G-(hgS|_3%})R2!=UHn#ArTTwYT7NhW!WL)MAz4XaIcfHqK(k~r-|jZAM5 zt2OK{s}(w4wLqCw{T7RgH*Ta|Dcc={uy7UFQnTBH2wnfX$+eSB>l zZ!W?R4CH#Vem_Hbma*v0ZQqW_qY)m$1{+805&MJLn7Jd7ei0J@93yCj#>v_1c-HQm zuCZ1ghXgVaI{8Fq?J^ctxm+$6E=zrG4Rt|w*IEkE4GtNwv|1l}>v29iJyacMp4jqp zyzy#rSdT;;Og?hP+t5@ByzNl}Sp1HQEDN?yHewk70zm!0jGyEpu5hw`REux|ApfRA z$i-`Nf^PjkqK_+LwKf>m@gVl00`3P!C|7M}q%1n!A+Q~A!Q~Hx8_CTCgyTSkANt$j zC`%S$%Yqkti{3Y{xGHy4=Ym~8` z3cPEAlg$B>6nTNco4haP6AjeT@JSkK+H(s?tuM5qW6;{^{{W@>HP1z`+nlh4lvF4y##i+3p@y7r2H5!2aZzq`F2u zRew%OxDn-Js+m9l#61HYd0JJ~BGVJ%_~NS;P9^LvnC~8A!DZVo`@z|bpPRUy;gG_d zEgW+rEYY;XpeD}J;~Be2Gh_0wVWLadluE&`n)gaRN3oNWr3t6Srj_Ft=QVCUe}hk& zk{RW3^yDUPP4Z}``cT^x%`J#HaoNtS67mZz;xR5bL4HMQqOQu^r+u^l_45_wK*Xxj zRzW44QT8gvrG7Lh0x*Zi1V)(XRw0i67D9Sx38&~(*3TkCIMUhM+=>Md0)x>)sntts zwB$Fh$9<0vR!9;UI!uqXPq%CeMY=QGFQ^pF;YobXz>v*XOXo+7NQXEA4t%QuNbY> zQZ#{P(!L5kbw9UtgA2S}Cx64Zk0SdHR#-dAn%?v#kmD9VPB{&s-P(yx$8)wl_K>cC z@3O5xbku?dJ)j{6#+aa!7Urj{7vRK#w}VP1Z*Z|=65pSBCy$pp#qwO!OvO})YO9SkK0a!}kz& zoaY&~oU-vR5QFk~E6}6^@+Fe1W!FtkGpJgE3@$6fF`6zCfzeMqVaV3wT7Ob`9zlQX z=`$*VUGZi~$K13h!~ktPdP6@n%&F(wUt;FbITBm6of-inLdxwPa!Of!cL4UZA|kQa z7hgtHZclP#OKx$LdGeo)7{5N4@bh~h(_)p1^k`-BLl-Ku#(#WdK9zD3h9t*SBw*A9 zN|&0zkgt%8#=Ug&J|9H=cb!jQ6OIwjiSRfD$M;1(LnkQ9_Jk4lYc6jA`-RkQO65` znGGz5nJTo|5j0`>d2s)j@_g(ySRfi1M41yHmfDh(tq;MsUI9Z7l`3RtDSPHGsUl47syrW-iP^sQOTJ+JBibnqhv)7$Y zF~Y$$ZDH@^e%fuu4ow3`)^%q0!&L-YP_D!CH!@Fnuz!(35*z*~1zDE8PDydeQO+W2 z9Bi0$_%m1Q2K50=pE~t8m8H~-*cuxVuENrP&r+N=d>z-b2~rA(c-8H3^>7*VmS#rd zu>7xaPk1ECq9sOOB|I~;BD~NMLK~P-UZGC5K%?=%QlKwXvg3I>EDbyt+UHiObXEzb ztWq(IfbA=Z&1*GV1HR>mcEwxm@Z^z_?c@>wvf}@iHh!_dTpVauvG?_!l%xe=RCx_i|IG-cx|Vn_WQIJ_RP=cIYW7XEm>zA`i!o@3KBG{2%o)kATG zDC?FIlaiFz^0=q=nKsULkmB8oEoh<%t-*I6dp09>L8)G`CYy@2ThvLY&NVnKFo!y8 zj{m_<;CIg~WlgE2#L6fk(klS8`shMxgRO`#e_X$s+Xt7C2Al_#l z!A0jlahv-6!b2ZCPA&J;E*!62!bnM;t`84Lc3HzWVrQ}h>jZ<+RT-+yiriDEG!D9U z(lyQH@AmEEUmXNL>Eyws$ie0)*Wia04u{iX%ohg6!m)!^oIlJ=U7SRfYIy-Tx9CJT z=&J#~=_bM4$7&1X*S9}uhXaKY#eWzbQ&Bz~mj)%&O|^I6TazBiq|SAg@<}5&1GPc5 z#dm}7>r06Zy5d+*Qf5~f#RY`pVY9`#eV>h@{%aWU<(Fo%)+!E~k6onGrLpDPi;L|1 z^-7uNcz5zs_QD#ED||sm55w6lWA()eFa>gGn4`2*C791E%s%4~JZaHEx(9(epb;CN zM>~5zv+8wIClM;0QOG$YOMIt$1_huZ`9MceHc6cxa89taxdpKo-l?f4rsYYq2g;gb z@b^xMULtf6j;GjccX$hZ)5{On?NF5&Q-o%nxl7Mt8gCJlh;;BXpoi4gw8WnCpIA9; zg+Q$f))2K$S(&+vb#ZjZZs=n(c@zMIN&NzIZG*tl$<1{r%OVA=ca7lfAB4c_BEi7c za~~exdaw@qoUl#q>$X!?s9iM*(Iw8T5e>ph*tMIC{?Jx5Ww%?-dU12c^algA>WZ0h zAXB-T))+xv4x_2h1BQt~0{cPXE@EaF#Kmd1H&E%E^p#;zsrN5mHPPsCL4+nb4?@HL zbRj(Ay)!It#YE1!-9Hzd;~q$TUfsV9b`*zRFDDETX}Dq`>)=Y=bN?)OMbU-h6YEFf z^*Cqp?6(w#uILt>^P`6FW&pBqq(}}%`a3lKYE~wJ>~4*eDtPh^<}?xBEY>UT{PNI* z((8{xeJ@!2we?z?N&MDx9=$+k$#Pnr3n5TMX3}i7OAG<)}C^X{2kLT!mOU2BHjQqCM0gOsd z-KxxEXL$=s)V=-9hFC0mM9PZ&Gu-I3dKvw(`ptzL;pHs!(|Tk0(2`p+dHcpXuz|*6 zrsOw>^XmVKiL59s)s*Lm<=z^V!MS6>vV)#6W63ue%?SS#-fmZJ!@|qw*b7FGLSP?e z8O%`W+4nORP;%fZ;D#KtXYnCXjU4qXxn(Ut+sbEU^VS2GepqYkP@g#+H8NiSlm9Su zOQ|^vrjH2kyA~`hS2U0!et3m%XC4cy9ZuuTxWBkZ-7{jGiy@%8)jzszb=-zEs~jjZr7Rn;0^Je%M@U6U*KsH)HZ8o^%;z!I%@f62q+=Nziu zD^K`6yv1A6H94TQ#jk6-;ES_K39s&pHdl6@ci#X*4v}X=Ck!5*CSFJh@%(9IMX~a( z^aDS7x7`<_>Dj7QCMg@9?!M{s>N?hbEE-uWF@$Z8fz>6-*}&on8-BjJfsf=&ujK}V z5+qB|IjB^;9VOoJpUv)So?@~$dnt3*HvYrm?E`a2P=2WGG%?xyw?YeyRUcoMn;R+t9^jij%TrlK2u{LVhc0c^%hJ% z!M8@v-17@4vp6;)z)`V8^5%ZcU3S!vyD89xYTj2#wH=J`vE#z#7t<`(NC#E}L#l^u zZBBQVNHSeH817*hs84Ox=f{s6QBWLw-xOsQgou+j>xVm(oIL^~K+B8dM|eZt=5`E! zP?<9rUzG4@9kcO>1{x2U&Wuaz?_bYKEXtTW>WyM&l_wcH30E=B$V9;(Ybbvv!Mq?D z;xY~Ns(a%n&sV_S1%sOlM7xBDqp#*(WrIX0UtFIH>5Ri`dV>#{;Ss;9VirZyT-?rp z+e+^;3YNn&Sxa5>^IscI!xq3X0><~Yo?rX}3D@K%yLPmuk?PUe4tf($EWd+(4}C{b zp9(&2oqqIf2DafyB(7$cFG2N@$qBt4u-cfzLMoRW=NoGNN?``LciZVU8k(2%L1@GZ zhy$j>5g(cN5V<}3^2owed4w=P#b6=+fnccP#{Y|>?TOXk6^oP(ZB@Ht3Uj$B9#q>( z;fog?XCX?_r(dK;JT|`3QX8#hb9LIU1jk_DR-OUvU&wjRERhk(u&mD3wnRyK_<^Qj zI7rO>XrD24i6d0>o$_d710T%gjwxSRf=h!YF4#wE?deLzTmY&F9)t%$^8n6y{6YPM zbufBwSxF{VXnKd-QL8LQmSI#EW(Y#HAeb1JRJ)T0^3BIaTTA*1nuOT(!LxTxJzMfD z#%nB9f8(mE)>}6kv5Mga@PIoYHU9DiXXtTUil~p_dj6HkQG8r5Era@UW`G?EHAoN^ z7)dV**}ZT^u8lD!!y_?R`>QBz`fnAS0F40C@IFQSYA6Me?Y>c=ZC9)ticR!|d+st@ zC^2l|MLc?8u`zJIB~o{2;G~PYc!bMUc?4J*jQ?Z_(K_{db55tgVfyFRY;XT;6$v6h zf4b^V>KR%=rq0=uH_^vB>5nh-pN&e?A%?e(S04&SS58ZyVzJHsrX z8T($%Caw_gVX$)4-}QqU{FyUud^eJ^A+^&0)9TPzVWk`;g{uOXI8QqCb1Qhh($td{ zSftfcDLt9)0PS$WePIAq7yYmQD(`q7_JEp?Qz9fbUjLm4{C0cID6@aG$P;PB+oZ@% z)S-mSVNZWWkMnnEqXGi6?XrHnV~gK8A9V2nwhB6^o1MgL-%lj#hOog=5a3`A{2VnH z#bat97p~(DKsb@=+sA$NR??l<=gS8?I zVtXXVEm<6C8d-q&zN2<<`j6~nOUlHK&j@i#GUuC9Jy%8KQb$>^Fv!3* z#%taPrO5ueuTqS+FY9u(i_EQ9k{>i@9Jb>W6*_wAgF0rg^+GO&y(V`}1tM(?IvH!( z)iuKeLkRZLhJ7Z0JT2h4-9R%BTlF@Lb+_`6V9MZVu-CH$TVh3MS1pO#4JjyEeB|%(f->qkKxI*Ss%2js%0B1Tsua!0d3xl#R(6PPjr%L?3mxv6_V%74jfNRq+ zc#gdU60<7hsQZ8M{(9c??kU4v6$fJkW0$pZUT)pr7Z_33S0@OVnR4=pratg&Vgc7$ zz?YCG_qyRYYHbQ$IPw0fS?*e2qI)G${YH@nNJku&z6FYna(M=^#$>@>JGiB`+>)B; zaVSt-AyJlUr(lvK4-535qDQ(Dbxbu9XDKlX`#q`d5T%hGU)z~j7^1mZc|V;G|Edng z7&%pTLudPVITzeCg4QzTxvqi=gnJmSC&NH$PeK(U#Bjt&1#Ny^{=C9HEMMf~p2`Pg zybmW3*d_w(%16c1J)BQci1XYZk05u%RmQQ=Ct=8gi6#sD*FF1&EekF=1SwFD{UN&mU<^nJF>X(4c|&&*G{T{ z8-J^$THyDAEE$qLQ~oUI#hSQI@U^1aPlt@3mp4a_S>s^h-sdD^B$Zb+1383RSoC3J zzT>n!r;iM!^j8E^d+MRRp6G*ZgHQ=&54k&{>cqMl;H}O6wcEc6*u~N}T{L5qD&DhyiZ5X91+o{=+xX1x!4nt4^kRu45eP;3RCyO? zOlTQM2_w{_k&bn24Wd!%?Yx>fzUWdbt4x9a)3hCBG4>LUCy9If;J{gk&huA zWColPP(~FAJGGbip?;4|DoNx@laj~MMLuvoSD7Oc9Xu!?_`#^_C_;D26zUBT$$p(6 zZKwVyLN18Z+Ezw*G~gEcXtdpo&^%e<((#ZNoaY?gH;#z;gbv6^zaorItpy1=j=qZe zpvM~qn(-XRGC>Ku{v7$f-w<}L@tM!2M*K!W#kHGBA+n=L?WkI}f?_PAX2m1*O*0D( zd^P_P6nZJ+N7d!7^CUSlWG*|r947ma%QmI&(2+@i7M?o!=0w)>(WQ_E%C5Jogkvt* z8$Vg6czA~kC<%Tmq`7U`S+OSYE(dGAq6%_zjz@$5fDtqE1wru8CEcelgq^cJ2(P<- zsr%bXsQ&eT{s}U~JKPW$d&VoSS-Y5~69%0*`*McbVXAlC(2WD@mI1rux7 zAJC0-`gQbL&7EtD5{y4W9H8iq#8dswak_uq4hK(7;10r^Ua@#N%@vaPGoEP^CjL?D z8IT(z7#Bw!teF2%UYVd}jt7WIdJWLp{7wza>Tk&NhThE0RI8{cyZ~@Pa!xNac~W1R zY?KUI*VgS6SqVn6_lR5g+Fgd42d?zdoB)o8&cK!!P7Rzo zZohfXN9;i@4ML37n+eQ$5>k>i4Dr@6^_A3AUiRp7$JV%U)+oCjCelnWkS+ds)YrTk z#+?wOc#bJT_%FQCr)*~)bdH|X2RhNNagR)fi{RU2aTVZ~(R#KJ5zGoEp)8)iDk;-I z!}cI39)yd1)F|Af$MSYWkkdL?`Rl#IvnCFTMrBB(o}vfO+&AI;6=tF}4#R)`enLjLP8*ZRP$_?baAQ%vy)Kex6xlb&8R6c z;nP3o+Lzh&hDUR4>|13xMo_yyXm-vtgS*U(KjjfxY|EEbUs`QfY2R{jq&O?&wvg7&XB5%pe@G>d=Ph2MliPVGj@F$`2G#ON)ElEBIg##vbqj>T_1cDQF){6?4TJa`cbkLLqbf zZ)pK;h#%n4BnU`hU~jBliE2SynBYQ*+#M*q%;W35{-Sgp?imUlDpnVczJKYGL&3iG zOJdeLloe+c6C2v`DVTJC5dFrHc6wk9-x-ViXNwpiCP_*rErXdiEyv_wWVb^O%uvPR znV6%U6;&<64N1*ej-QU=V11a^nq;r#(fA~?4)%3H_SCID^;M|#Y-c#^8Io>AjU6wn z6mazfHnbBC03xM#50C;jJEW|;v5;C+Fv2Eou20DRDYv~43&I0d7bWOiN;M~N$GE8w zHFTK;Q0$T}417D89@?{R-Mu%=#9omLB1W~{IaHlz_LgwsRiz+D_F=m>^l#l24$+*O zO!=EpggFXJh;V(uZLM@cPk|Co=(VSJT=y{s0K#X{TKh)0q;^*OjA(g>^l#_8gFt#t zkxR=L{Hgh+z_@wm1udkzGu&xyvxm$Z=04j)1cK$~e%1r{ zR#Pd2UmaQ{U<6&Bj$FMZ zGe9(Ad)O}eAAINNAV*bs;)N`q%qGM91I5)%Ooo|f2!%Y4g`c<4qZ?0urC_kSZdFKU zsoZ+2(jf5D4Ra);;&A&@s9Jt1jrtm4Uvg2DYr5d;8T#L#FZ1}NAk^Y%SvNy(JPPXW zdE9eIB;YH|n3|~w2~=c+(Sz&!N9Uznx2xnJkAVWGBsZMO5M*KIOtR12AMn@)e}jjsNs`(!bn2D2*>HU3=ra zA}d*%sHI_+`u}!G^61Q6NdPjG#3jL3&PQIZ@=V~fQaZrv(}3WQcgMRQtt^7+-l_cf{CR{gyu4u5I?S z%yJlam+;gUJbf){iuwV@83hF~&JBm(d2VqfWE^8Vcd zY8Ssj5pFTGcDY5m6k?Sr8Rjyp=@HNRc;$og*^(h};C`ObJ5uNI3=igGpsx}UEJjI# zR*u}GUfp@J6^k#q)QNR=x(oLG9>ZUPzafc)W`G%cigeqYC4i~uk%jSy+lmr2>7<*t zk+Rq(wF4xj@_|rtXg>1}7eycKOADt{GkD9^H8zvv4YF$hx?|Mze0`KEMH0kLQq}lg zf(f*!LJAZ9`6I2tk0p%9v8|{_Z^eBB9Pp?B+N%}x#{gy{WJxMi48!-I^wmv6)|b@T z#amr;mpcf6Me5)wBU$$JEp)Ij6n%#X5-e~Q69K_NL-@|gk1nV9dGxuV6)MSF=d>>o zbPi4gc#YZE6D03-5KreOIIt~vQ>?Z{Lh^VP8XV;F)j6#mW|5F%hw?jn#pBctq&V2m z0QP8cY55C*#(ozB(-(-7ZM!c1p-{+*=o<| z9GlG=bL#X*o~?brTufyV$j{hJi#8?!SsbWG=Ogj&szwshcW1Jjexga_U0G@@K%aH% z9i|I)6{z&Kc@U@yeXj45j;gAMT5!CkOz~7S`}$#_=%Ym&s&RnmiLwj+$DQVX&}JvIfj1THrLs%wX$N<7etvfGJ`9 zA*Zx}B7{_yQ{a53avqh3J&@U#RiyVM>d;##?Edm0WcbF2_NEPNzY&^%ma;lVWDGTd zW;uGT6UU`Cl&OPrbRp-~^kwv?gc;>AmZ!))w++ml#sm;y=>fm6v2v_l`TDWf)%7N! zpr&=C_{tcJR(zBs3DK3F-Z5)|1X-d5M#yCnLvyP3%+#K<)I3&J_6yC6qe$V^b8JeikE`Cf6hxO~D6+o$~DYeFS zLeIA&0S$y!fjU=d936D3+r#4gkAnNGTa5-)+;wcwR*of))>261rWR$6Hc)g8*}rUg zUsj@NJqm3G1@sqKn3v0D>&g?_<6Y81vW4p|^TJVd&MrQp>wTML@!&V;WPRrv9L}LT zggI_jjP*)hr@iHMnpB2fk%e-nF6nZVPH*aluT_{wMQw^(4DPG9Q<$?kp2iQt;Hg7PSD zc3D;HRt6BFOLcJqv8v1DElDkx%b1QwOelH0ev5@cigM7bQjPD~-+$i_V!O<(Ge|vq zVRAM^aT=>9C8NVQmlgGmgryU%&hw*+rZw6&JFCZ(hH=u|f-I1eyXI$+#M@;1`peMP z-P_Fj(YB*X#&gTeI$PI~`fk>E@x&59otBzkwpLcsYIb;1UPDq3HqcZ^L2lkO z_BT$y29>PiU7V)9cjg;dJoCPMchD1*uW${*d_{_oMQrW zr8{lqV1Gbn&4)fg9}W%CvmBJus1x6iWMc0Gm^DqW!J{#Ul`}e7y-L)lkEVIiO;XIU zfata*&hWfFdN@efo$}ji-BRYtj(9EEOa2&H5X#~=ngq|Qd^7m4?*^zVZ}Lt?iKA!Nu!-PK8|0^NNSk78x~&a#(a7%Q=VMiFM);T#F{{$z6SK%R_^ zpbd4QClfcc9ja4D`Csb20OV#pc2uDGw!}?nVT=v(*K0QPRe}jJ-4G{d$zV4{?zt2W zFB^_YFRf*Hfp3ksh%GLXcU`?s=%B?OiMv%x4$w~ws3lB&;`VOQUbG1^Br{va5Q#zS zgj}3xPU@kz^m2)kPOxQvs%>A*CP+<@1d}N_o@bMeXjUW&CP{As3JkoH!G~-nctQ0Q zT*m9C(o+WaI<$RCd?vY-h+|Ptz2!`Mho(HR7kn?U4yV^YzKaE1K)yKS@qs1FcV?c| z*~rd(@CNxNTnNJwK*7p&3z9C27C>cby9(<>PUSYujhBfhlE^2e()sE4iK~?8pu8{B zKz9{z#9L%fjG)r3l|)d zBvmH=ZW3$0|6w+4wiCt5s+kJ@hjbNcHxBn{^?sbV zdwV_VSn;#|FF?@xAg5P2)NAk8-GN&S?z35e?;eC~SFEP^%T1Nhr-YQzURwM zq1-=I^R4G9BfbbjaxkE;>yv}vdL}yf#ul#Js9TMt&K#f{g7c$kdOC^a2J#`ICx0SM z;%)9oh6Ribdu2YrqN7=U?nk`&GLrS-QqW#(3y-D)=nth!4C!MN#Akh}fZCbJJi4u1 z@j0z^u+d{@MfFz)c!Ns5beEehM1>fM)L`oHvReLm$A8!hQGu}riC}$EN~t9fwf{AW z2PaRnU1a^>W^O9G@la{y`ZRRYZd&<}F}Nok%^PqgKN9dN6d?~q)cHL3s)Xmv_e#AF zL`x(Td9EtFII_%o(E7TsGe&6MiA$9pk8uJDXj@my6CTPTeBAsaoEm2w`FPcCxL!qe z$X`)JM9E%GTZwc1bIg!=(9n1@tjAye&9!rTeDRj;LPgK@S!I$25P^p$!S zED0^2Le67zY-UuQcvJ!|gt(*oip_uA0*$spJYB`YuRjJo16^r%q-ZW3C3-A#uoW6$ zac4c41X<1DOD(!wdw6fHUCatJjzZXvln?aPSc_Tr<*Kzl0SB=p`+wQuDU?tpy`d%T zMsA#%Yi1mB6|n*$1IRgGBp+Y2|4JVt36hv9fq>&BsmNlos;=08&v#3O9Xs~QPaz?l z!@gnjhBwAQY(#EyDv3=s=Go657Q9-8QQi%Oh$|+ym4dL(?s51HTy+}CkIspmrw`FH zXP{Zfzdo`&#Wsh(}C(GPiAB}f1IIB|b z(1sLi1v@(%g#XL(_UW*@J{6y$70SU%2=X!IQ^qg|So-BvR)FIEhGPEI-$I*P7h@b7 z$-v)ZQgV2uS=v*8c?#4XWe+L*^1lr=U++sm`j&CCD@4CDv7PfeZxs*H`G>z{-d{P) zmK8F}2aRussEpZG+r&-t*F}}r_9Ed+4y=4|Ayt>qzOP;m=CXQbF)YWrAh3HdqBeNxTeS` z)DdeySSHoX;|@}Hp|7^Y?EWR7gja3X_3tUW{u4JZA8a&^bGHL_V|r(J3|z3Sa?!n; z*iY`QbYGc{4{|X8sehPpYq*CqfeM0Mf??RUT#1v-+>n48Vlyi>k(wN0T!QpT$GKlk zrXVW4;qu}#w8yG#0Obla)JQP{#=B0oe! zu+_=M*#!I&UFPf%1v~g4fZ7K&o9QIgH$M4tWY5CigIpub8|!uMjiG_=43h!fL{`Km&i@tHSONYq0c#7jv6 zazed}7>fp78B{JIiO6hBG!_Q5x?^sA+=^HImxr$!dQInwv)Y}VZ zO%OY3ehlyunp|6I!WRM81TccejDMKhnZQKu?0$Z2YVHKF6b}uCa6uJiA;1pDU)y87d4D7otGQ?yfLg78b?NqL~_aT=2p&sc_cxgf-l7^;Re)zX)>f;UCs$-f%XxagNmD z<5;xcQuL;NFRji(ztM~mV~%8A4F+0itiw(1TSjG&P0pdSth$7%4&5499`O(3e#{Qr z_UvldUAz4%zjh$F(%!zP1bT5uoxi6Y=H%&$0`=gJ`Ci(txzpaZwEv%>f`I=;2Yp=I z+@V&RrUNS+u#HT`NjS{3`FPKu8Aw@y`vc?7UvodtPuS`?2|C!Mp}#8?%gDi%hvG=4 z`{!S2(7f6z%pelpIj;8o*Oi`ks8hCQtW``dOXoi ztP{Bokgo3_?u&s_3}TEwuen8EjgWq`TU4Oz2jha02fRVNpR8A*wSm>`I_N}Pl~cKb zu4y!PJ-$^!X(mmbL0Lwg&%Dm+z!xCI6fVIv%~P8+y5)Sp!#mStmQoyV5$+fI6H^AW z;T2zf6bb~fR@7dak*XQRqMHW@1}9Q$Dympk(KqCTLY@q5=HxXHM_Gp4_bXU0%nXpW;~ETVtzEc2Ay+cbM|Mi`(rybt`nq)Tb0CR@^HcqC-a$?(cL3t zFU)>mXmX=#ValIWr~-38@{l_JEj>yis}vj57&NYh!OunTEyBDNPNje&%(Dd?bqU3@ zy{?m44+-hCYi%8$5loILu)tPc-=5k_@SU1tNpxWa6poAtR-Wv=8- zDv}k>dLpbH!+5s*-pWk$lK>f^Xgjn#>Y4iUHRr_T|XZr{vV(+fNcP0`9u( zZPc;0m<>N2-14@1#E@K5cQwD6Qo;^gI{(ja(8N9|U`V90MBI#9G}>4TN5m9DVrpfy z*DYljQm+F-m_*)=*&pZK@F}?Hbp4J4;WrxB@UM^Jn8F)J0QWdc>O#-+c>w0~SYP;z zfr}i<_*G$|KG#l-%XqCM;0K~=JDY;aeA7d+vQs5%^Kg6|9cV1TqK%=lCHUxcsF(5r?F5knb{9lD_IO=CcJ9og+eU;Qp^9$ zmOMBv_}lfmpAaT0iR}4jx+C$d{VYvNvpnTmYqJn7i2y5V$Wky<#j(yqDg?-mP>hn4 zfm-b~9k;SZoPzzcn8!G8SR3(bx`K!!CvEdPhd+l6p_J>6E0&LWygaW zq*%ir*UU1TUOwZ$Qf0>wiP!`L6@$t}UDzqNizb=}H2_OwmEX2mhef$nD~sc2LKRpy zigxmu-XCh6#tAJUO5Jx|)SsfYFlD6$76Gnlz+Ucg)!z%vfWwMak1An*K%uk@2x@rJ zo;Cn_YaSWXihzH%vMtvrbWvJKxoTm#!jr-yUEFye@fWUy;#ndbK#%3==DaBF04m4d zgTPP(IiI|1GA|HA0|US{(cE^d4-mRR{xA_hDiA0)LaJOdgg-R|CmC}_#lRRt&;C45 zVm7@K<*M7;pkhxR+_PFbY`RhsRd^18s-?eSzQ5W$7Woj)4z8Ifl&xJBo5?9`qBg^P zuACJ(H{5YyiyZ(n`kp}rNF%vwczeS&n?*mVC)gb<-}ChDrInY2D`(w?{VqQ$8Q(vS zzVbsJbH9M!tNFxym?1Jtk~KprXM6Z#Ia*L1@B5d^T;POasM>fHF7GFr|JRyJmj8M& zR|mJhTfl@ygB4n<3t9_(X4q&m?3pyO5ra(*L|t}*U(4Mwck0(5e8AWA5Zot)Lh@i` zVss`3)vcf`gC~}r`O1VFjaZS)d z%vVi!y4dP&xxYaXnQ<~j?cqqk=tD}#RulX@O9Qlx*TJDIr=?hOnBL%(Vy_fvZ?R#v z$Bh-f#kz$IJB3|F^b`z>z>+6C9hndBJi~!m)ZqN8Z@fL^A?Dp&p%XN0%q=iX*USqc0&s3d zF)>G_iKSbz{x5nv3LQYL@^5wZ4~zl#xLIfpNO(?aFTr-GcJF-!heV5i>A4nbCTASR zgPZsY+GIE-h-}RTW{q2#`vp|vE}=@wLEECBI%k(k2P`hGI4R52M-G|qsbSL=97S*fWZK_}U2_&;*AW$@E{##O@|0_|S=P#O zW5>s${mp~oNGZ+QJ!Nu8LgZi9wUFxgTP2&q@cvpXuWAQYYp=|Ln#4oCZ_0!s!YxU6 z)Bu!!B~K@SJ=N71Cqf?Mj>1*8kLd~gHFZrQNw+%gpg9e2zT2VhgyM0_hgHTs|IEpH|Z^*Cr8_a$$Dk}uXTk#^^HME<~zDw zM#6!jJN>rlduMi|ghVHkg;gUg%&srS`uQ?sYW@A97%CtlV|Q^jCWDb>kB51gykW)3CP2lDJ-`4VWo(Su z&3XP5=;vZp(Lu>WCjw=q>TpH`0@;y~zk zoaZ&O>uzfe++sDDsc3Jp(0yT7jz)mJK~ z2fy*71j}5ml4$jmKqwwx2aG;S$0 zFTB|V+UE(Tmaq|WpJN0G&uKm6;Lh|Ut4+UB?kgmooOz0KMrO4{D@hEZljrK+4g-Ie zH(30r718)NnMZldLfY#GN`oleSqu?PrsvY6Lp|BL7wqTT+JS!b!kJ zq)bq3$?WX1Rx;D&+|jNvVFFNCz0WH<1B-uUd>oj(ysK>6^lDbN>aJ6$(ZANZI$h=u ziW`&5@N3@tCY=nJ%Df8y7udqyT2>D2bVa@Jd#zEuDY_OH7!{XAuZbYNg+3nsEByYM zqHK;bnAshW()~uebciiitTj;*TkIAD82BZk^F~V^9DSYBPpmP>3a?lmCw4Hbu_vv% zizYPahO8et)hS&lWi19uoBg86bhK-});{*Fj9abm*YaIS$*}rlD5BOd9)qO%q@h1Dn9CxG=9Dc5IaD{X6P?GcX}N(Y0R_l`Gy z=Q2Bw{%P8d>KXs8DUD|&akGFH)9|&Nb^7V?%h%ec(L5T6z{%e}&{+4WeSx%xI&5#< z8g3}=)ecw(l1rLVX$HZh!@W(ws;JNONY_ojSne09_>@IBOL4H|EfqE0}qu=JQSXFYVjDc0@|Ob z#T1E_+id8YvP)FsXQLn%*+AxhvRfS#V)HC{m(JUt3h0CSqFPVbZae!;V0Ljb9H$EK z{V&3oO0ddW7Pnou$cMIezzrRIhvsP-Z?heqbcWFmiR{C}X&E+IkpP8EF!+64NpRyw z$Tr@ldqYM`?l1QfG4u(djp==~!k-%V(Up(U4HNwpod_#RIqyo6Ke=xPZh<6=3R}3V z#vA5V98f(@d2lJm*TDVDN*j&8TjmHeOm=&<`1rJqlv4l>$hflWgWEfVN<~ zR%`+Z@rl8Z!?Yxb2*DY+lsh0f{>4p2(1&u)V4CV#~( z<}B<1Xgs5QB)$a+4{3?F^@Y&ly1Q%2@VN3 zAK|>G%@L<3fl`aVvT*b%ndjHg1a)~0Kb5WI7zkR}kFKb;@=NP{C)S^KIc$t9P)rFG zfapF;34)tga`{1FQ`Taq|5OgB_sz`V%aNO|yK*Mh&(-n=v+g~t2WHy8;~8aG{W;>H ziMH{|R6_TU>z<*5{R&^4o|LB=6JFHr+`VZ>cNeDV_qYGIWV8x8gXcbV(=+!W<{^iA zMa~Tw#z21+1-zUgl>hNB85q%r|4`Pmc73Q*___UWQQgC@BHw&|J zN}H&bqD(1Yh*f-r2Eo1j)X>k$yzEa)M^J{GMR8kaHg0lE9aC-7Ua9O}3=gWa*Dk`l&e_A6k0Y6JT*e+@FbZk|&Eo0XBd2)8=}73gM7+b>H}2VOT;(|?=WOz(jYbE>f|^kNo9n!pc;s-`^&z{ON7Jvu2F zFm@IuIwXd87X@K-Od;wZ2fZ&U%#V$*@dl$q&wW>J3$ch(7A`1`lY%I;^_0@czHqCk zZXBKz3&I=-n?HpO#-=g5=*`J(#mew3!l7E3z>vP2oJeW zCiN&`F8os9HOnqb8XINhH9be@!f@oe;T=NGJnw-QEK-+S;JUrBf$ROy6M9g_ zFAY%b--0sz#oWx%yuD?A$Eg-8l%alEA*LHW<$Ui3D`>qg9b%$)6g>d{KLEgj+yo^E zY3Y<~oI39UC+M47f-ql1_tEiEgz?ZX5PsrQS+XS-X9Px#LiqUVchK0UO(ZA0Nmhe*LGW*nVE3)7fwZN5Q z?g>6NgBlb0y1@tVb6-cm%r^t4i9@AyzlM`PGEj15ec`ADQj}qiS9G?~ivX-FT2#MP z;s+kAuGy#?@On<7Tl=&ko$oLL zMoHEgk?5%t>&-6;;W%(W;T<-7u$ooUY=g@7JD8aZH7#@Ph8EBL`%U1hAae49Fb zFj}G8b8AAy!1J#8Aee3w7;2np<_SO8cfsCUMrRsn>Er~OTkHUr3mJ3V_1w=yxIj%w zdzl$wQGzWs!ZTMEniv<>s0>f~TDfOg#{^p3lBbc~ zKwCmVLUeY@@o?YY)?A5%`%AF9V5d(eFd>A~;#T4EZ$gzv)Lq6ov*b@@%nuaxWG;?1 zB})-G<=#{SWB_lufBs1gTb6f833<5jcyT|E@}&aOnxazLC>aS# zLzwDb^p+!tN2G|k(qFt-uYrvAU3XKS+r(#+awKOY{R0iZQNL^Y{)G@_ZwcjOIAt)M z&y<-xc!(INQicSooN0K+JId9x+q%L2A`bPAO|K!hQ4^RDM@T3{<}iv~@p4bKisuRR z1xV+;BZkbukFc=7>&fYUBYX!A@=;JcA+o(>6x(7&Q-8%HKzD?P^y3Y6Yj=|9Y=0Kd z4^n7%K`j2Uku_F1npn6-x{C+75cSvZ+B;bEDYr0vWNuGV4Q+OyqkD-x@-QzMNM#30 zfxz_r*tF0m148?mIa=SDNMgmQ;Mn}FPpHqB?w&A(RQH=V!92uPPE|NX{amK;6&B4| zM6o)l_a-3PBMUQnmL;!i>OXdah}Dx-Fat+1S>|H#67vG%jQ0)T{(bM#48 zH`m-|9&hL}Qru#inT^_6R(!EgK;>koo zq`FHIK<(E2Hiduc2cTYqQV{mQW!f>>5QD;^>N8^@FjMZ4tAeXHV3+g!jmF8XwU zE?7BSeUbepRGqps!Pf2 zbMkW6TvPCTT~9vI;CQehNi7W`K3oqRZ@ifCbSOua_lDCv54fiAbJK*V(7>lF!ANo>S}u7}nC|)?J-$$-0wj zBN?bj+8{vvQ5$UcKI3ZcPi73+BVV7oV#vWFXTCT}_2tZt)kySdF7MmJcI9__;J2YY zu@RpS#&1Vhr8khzy`$voz)|B#%Y4N*ic#UTNn!^yqGu2WYk=()c4)sd3mw%kx8gAV&8rL}D4G~lb86N!BN`n}EE0TeHME$Q|eIQ&wwpjT?W|GAh5G_U_ z?hTTLRb>%Vy!SITfsP~3=3o_pcotE_l{voLx!fq@(BRwE6qVWL)=lLASm#s8y`MVC zys<7=HMDjH7hkMJHLI6-XwGOF02bS3y@dN0t(S_YK6caaYxY3>wElGHe<#+fBcFa(Ru!- zN9L8q`u3THADtV95|U$2=cA}~mGd|UqmBl6kB|mBwwMi$oyK%7m3SxiRjkhl=6Fwp zX58M8FPY1UZQ6UgzO8FKbFZwBiC1DjXg3tLM~n$stWv<0P27j+nSqwxy*2Ml9U1`X zYerj5q(q&j_$ydvg$~C)!{C3%e-fvUuN_nkGm9Y4*NbttFYYcBlmSabHscx~@*%s< z_j%H`3^OsJ3Jr0>y4XY}$&jA^Sq(5$>hLj&P#Ec$Y2=LJ2a?qMxU_c3S3GQ zkrBVRdKl-+Kp8Sw6;q&;${EA1#D;K~H;RZd)&sscY~lc><1ZSD3PhIs;l4s_NrccIk4~kZ>-CzOj<{K zyLwIWL-`%NeNfKQ3WrY$;6IBlAf$kG)XYFijRHQmbkS6twWageCKly#_Cwl7+t9i2 z^$v*NWxtB1PS_-eJO^`!@~<(CfNmbHS!Vh9o)-+WbQ#JPiy5*qKOL^-ainWYD1w0R zX2_&yI1W|JkG@7|K~n>*X9&*lKhbpA2~4fk6pRxy0Wdu646RFeS>CyYfYjTLK(exU zOD)XfU+lF^WkLoR1v!H@)NZ*-=S5AXG9XMwW$`Ezi!!bd*y0{NXLj#{$OqGHtb-v| z8Lp9eBMJH;o#9<7jGEH6tJHUiUs*6H{Lv0xQ+5(Wk01P)*#)=Mp*v z4Ai8LYq4&rScZ~2#x@$od-V90CyjBlX5mTq(N%gicxu}~hB)ICc^g%*X+(nwhrKaO zRH7Is=@&eNGLOoo&MxbrX)lDyN#l_=r{;mAbP93CS-eih#NXxRQ`2n>ae@0R921ua@T6Z3nm7`#>^vJWB+Fp%!2hLMF@#yIO7 zE6GeMbA}sS4cTPIX&y5g0buY#mdoH1H#-kKnVxGIl1-*HPB$LfOd_G^##=P7YXz)W zt*!w6h$GLY#h*RU^oFWG3h-O#;^bH}!dX6KoBW#GN$rt&@vmSIQP!H0@OTf%`mUh{ zQ$PH(a;(bM7BRWZwnuo<7uch~{C`=h+K}HfWXwWBG7yiQM!In=NF#p0 za*GsY!}U%skg7`ierP4k?@g{U`sGOygAZ~?qHS;|^*a6eg}0c+G-T6VelUtU-o*`n z64zBrPUyVMU&_7A1+xxEY*Vj^c=nB)mF^z zqN2Wd@k1cqXpyq$+y|73sn7OuR#z}@#6m{4eK3K~vQ<4inJ%q_rW{o$4j|^-YHYhtN zbu86`)$v5$=&5{&|3m9SuQ(b!aW!633!mQ^c!j*p-IqH>~N_-A4HT1n68*Xa0nTZp|hvU!J|LpHHZM%Dojm!*!~ z;(eM+aOKe4$wUM>ZJ5Kw)b3_WvK8>ODZ|T72z@SLqT4XEGEy9ZaZ`}l0`jsWl4A3d z3m6SxAH!ldkQ~kr??%_(bL}WoZDU29B*?wzJsL=osc1+e@vDY z7r{wc%HF#*;c^PEqrLQzohq|#yS(9OjF2R#O*0VEwwK4-E~-u`A^u0hyV?*%2nhEU zi>J6=azgf&tmLg7-s;1=cP_7d+1b2Mz@67XS4i>6;x|B)wN2Ol5a~2(2e1L8u*3iF z@|Cubi90_MB>qpyHhKh^BCZY~Ne;Es$`6KS3W_PyQ(c+SK&#BVTEcBiNZ&rNEZ zE3>4n@8(_IFMG3NV1foV(&_4mBev{0m?Vd64cRR&5z@Y>;z38wzgy(V3Ro0#@>%?F zO6;TsT2+74P_b_C$JGD0dTzjT1#=aWixrqzvOk!y{34oQLR=s!U>izbky0@bGK+Ba zwGZa##IE^Eo;nu*87t|AB8L5PTkke+W3khK?HfVQ{s-ZwoJDZUD%*vG@WtbCsa`jQa7g+3Y2a2+fKZ8;O% ztTKT%_LmcF@S4{gR~tsh#2gx|{S7B~8jp?|0O1iXH_SE#`bkpL?Q0K8pyRU@o%Ua? zk_U6QGDn;8zKts!vyXVrr>Ouq^l1k3gdOVG8(N|)C)(JxEabh8D6UvZsi9boMe~Uy(R|{gq*k; zrhSrJ+b2QU9^6zW)nLC}1bi`P z1;ar(32YaSNlA~SQ8tc*fo7M#CwtcdL}8UEj#>F)2vnZj(Ccp}?i)v3CcTr5pa!qz zBM(&`-RhakFh!$^jj42Gq+zOKZN~>@OQf#jZG55d3lLawp}QfW6#NlVHP>)R0;YX% z!1N}z)K|XKo5J@v9nQTT*v~$qQx86$+d?p7P-;4!l`}Ulw~cDP%hZ2&x(km0g>zGA zjxAnrSWSZ{Hj{m7!uM3`XYkBKBGlYaKS^pC( zkVxH8GB`%zB7#I{(L`5kI|AO+LTunz0@t!glMt!%saYzbZ~wW?djPMz-EmcEs4?p` zygow9@8=Jzl3Wz@pDs=m9YY>d5!ku%fqc`qi zc`ti595cd$ngCk&V58`TIyjp{UFI+d5&p>dH&1x?8b6+2joCA?^)r4(U`4aLGH6b!yzAhLIxn zBMU=eyPKocJ6yM`2O&ukn}P9kF$hEG)(``C?#K0ZUUf|KjQIA|;jLbzPerWb;5Xsx z3W?96HO;Bl!F8E7KBm?M;&&9s%|x%kDX%|3bTiJjj6}2P=PPhB@LZ~K-#3qa(hfpt zrJ${>8KJF%I1dVY2WMlt0%2aI6Zlg)wleiBSaD#&w!NECKoWgwIdDC`e^+Yp`WtMO zgPrR=bGzNSl-4st^uRYCYG&%*6KCy*7rZi5!4IGVoY(-2-68zgr51Niu)>sjZ2$mL zh)YT#Wl}%9>YSu+`+QEjw!f9S9Q9a7jUCY}Ou+sA-ZF%}yP7&rlI!##2}@DovhxXwba_2|2 zDUgB-X&2p1m%q=-Eu=q)UPhA>!xG=1FjhB-CP@=nYP-_*WDj&PzDX7?rg5CZ} z?o?AKtWXYgTqF>UHbPrM=SX;&PFfC_h3FH=HhrlUNkC>$rB*!EYxq{y(lz;*zL1M* z*^|$9b~pHC%5cOZTaCJ-bY)yp8#qqq5I9}NJC-tK1QjParO;X!T^MK-lF7+0bF>uS z6iT;pVg7tPjeHZ##SPjhd#EkREhfJ8{u) zq=VAy;HU|KQ3p2*JY2O7*h?ysuk~f~#%0d)AF%#H+nyp0w|r^Zkb*$R6d?{;&Deb=YGEQm>DAj3xS*c&8o7)%#lTJk@&y)U=L~G)dXNnMm)5;r& zWtedXH9L>oXZ{<=@4y$))I~72TV5%|Rp}MS@$dVM^|h1oWY1n0G`t1>qwtx?P(+K# zk;6bl&-BP6S~;wms1Ft_ZIPL3Bb!(~N|GGWVv*7?l49$x^3heF$U@cTcTgB39hlbP zkMT^zoZLkL%5MCqgFdj05T8V~_qQf|`iu01IKV8~zIU&)jN@4Ge;e3BZW~#3VyrA+ zBT1d*>Hz+Uqf!BFy(2aEveU1VV}pLn&rHsM&^`d&WXOxzp=^D4SD!fR5+hc&DV>5$ zTrdj~tE)7kF#szk@!WGGvo+ws6iI=rU*6|w!nl$xk*9hH{#v=toqo?siglsN=`L{c z|C=kdpp?u>JW>sYEo*@|E>j9=9cGi$Hb5N$-Q8u4kszdR_yv!Hm0JAB%?iNRCo^K2 zzn0z}@LTjNtT+o^-Sf&iSy(ko;3(k#zI-@X%DbcGX^U0$)3Gb|J%^;pU{mC`>N?A|IwqIDrUONTlfdagvj$}yX$8>B*Uk}7h-%1qosq-I8B^WV;JhTJ*c7tQ^*t( zYVi#CWbO-v!uu0%*yG=DW{A98-n(*xy$eem_o8`ri9ehCF(v5qE3&+KmzU#PtE+OJ znYE}0VZ=lLr86oO%7rfgb7rmNY1h;JPLF9rPtC^RUP(8Mjc34`=i1alrfQ4=X)>Kf z4{>N6%{1qk@r1Bf)?!ftGW33Ja|-l^PR?|C<8*ToR2L6tf?IO*7#@DcYj8V4f&=eI z-6^~B|1kzb4AlDW!B3Ym-HCJM(BeY`_*(ytf+UfEHmhc^G{}v=asQqdG5f0O0@KQf zUzrI7&UUig!ns9o9kke>mq;Bhhl5l8hjIUgw=zkzW?h?OE|5CuLR-Zq`->KYwv%3l zNnx#vp$E(&d;+I2vNtj?9iC5*w7GPhwsqGsy`p368#=_{H)T{lvBJzfnHbXO&MN>N z(9+sF~9Yff)8Y{|(Zr20}X zAYq@?+qMWk_@noS%R=emYrF$SU$u)yO-`qDxE($0FJt#dmbsX6#(h5rkni1emU?Xs z(Q6VxNRiH{=H1>^Vl$qH@iy&LI{nvr-J&%(IQu>gL&Mw?8rD73jSllSXjOdiGfBm5 zcXn4NE?Vlgv}V1&5AfQJewyO*B4i#zpu}Z^pe{St-mY{-_j>>=y1T7W5iqV2S+FO1 z7MXiiDPan45YGILEMr&!`x$>UQR0^bC8L`ueQCPlShh?iZegsZr@-hcg7+54BsN0M z_qboLYUUzT2qJQzq_4Lzr4p-~H0uV^R_Q;Na)=-Y4j%*^{a&3#NbB$NevTPW{D`1p zw?Jp^ErZ*5)@q1A;rJD@CUkPJcd;>!<*y7CHI+UkAHl976II(no~8xa z=@-+~Kp~@H(Pin9hY^p2h-lyXAu8l;4-+z9nD7mO#&<*|I8*c^Pc#hNU7KdQO8<qz+B6Ei^N8puQJM& z^5$s1{t+nV=Nq>lo{u4f8$5`BKng#LSJ_4t1i!;}`(*YT<3T4eaPYZDd*d02cy7jNs>4aV{8VZ@3l2&xJbfrUIBQESEm` zQa~hHI5MoKGK+&(dId4fmmZuKl5DUPD8{%-6^qdcQYf4R5@7B7k(7+!Wd*0~mOB`( zCD^gA`lYUY zNpj(~nqa3q^4QUw->lt#6V-nG@B3mfyC;BH~*&e;T%^?3)8UtYi+n{$(a0<8>crgRD zd26*hgkCg}uN|_LsZ54GxdB42mS&g&2Fz1WSz2}HT+|$eOVuo84FUz@XU6{01QVZ2tFq!*}!AA&af^HmwqZyFhm3ldUzrwDi52Oj}wDtNG0(aY@C# z$oP`nFAxY88+;4fQH91bplQ@wqJFY^>ffQ)t=NVGbv3vVLXaU7l*~?bze72g$VQ~jc+3ho-gzouttU6%p70!g&^tN} zDJr7d>ft%$P50PNL8m$k>MnEyyXPIWwIx!`@h0qPstWr@$ugq3gUT7ZKo{ZHi>iRIN7w0Xw1mVj#5 zyPkd(ZroG$RD|$3bbh!eMbRM0NN26bn?Kowl_YjFiQ-pRphV&;CRfOsOk+&>PgcEx39$Fw1z$1hjCMM-}L|c1CUBaoH^fp;^%@4-15mx1M z*O1eo!XIBQ;7Sq|VM}l&8=EE(xV&>r0yFDZ_oV>-GYiSDm}Wj?CN;gYI^DPjMU39> zQA)tD@5v9qnE2>rlg)8(6t>3Vk!`y!P`;g#;-T8!*n%_Z2SX8-qz5&qUbFJpO2M3z zq>N7qtPe}K%`F^zFuu&sz*2-Gep^=(DZDZ*Dx2L z=t(+LZq*8JNdtv$UMI2*0`d`TiD!sENPL2*pTVVnN8WS0?}#(__NzykF0sIVyl;|e zemqj%B16=2Ut8+5tt>{7cGAckM4>;*xO~&s>U|4lK9-@nPXB?G_kDxr{k^6-b3v7 zI-j&sieb558zI8Am6%O)50l~qP3TOTj%p}^31xo`M~pIFyyQNg;l6WEfB5nzrIb4r z*_pIOBo>CiB7l7)|0`a(Mcay)xr48S^Ou)H1)#mtI}n^T#qH)2Wpov$cR)qPqTWE! zN^z5NL5^F-n-+xnq2EOpZ5CG8vuf_!89=^ZuYyOX_#j_FL?9Al2>}nGFd$XK=xWS+ z5PbPlOYpO{;~HW#2+8pNGNvE!FLEj4hO=KfoqUvo;p~-xH3%u3TSqZ-rG-BV*wCX% z^$)9HC*a9xpQI6E1Qjo-AT@(2Bt4(8q|0E)c%XMvcxQOc)`*$72yO%+`C1>AezQtA zM~;!4(NQ_^yZtX*ct_El1<^gi{#Z6PNIHnFd=#Cw1FzEenAN}1KDSVRV1WJV=?ZYf z?Q>M0^^FufOm0TyVkw_=NPzjPASL)7l0;2?B|L}E0clNTsR>_cJ9_M#NoDy= zt)Md^^;20%7V-#*^nYGl5BAF1B8X&^o3{s)H^?P?6K% zGyuoQivZ$xP+(y}`WRUkj6!u&NgO>7_#%0ah^)s-TET&`1w>L7*7`)N$h>AN%*xc5 z)tqq-G3b6{E`qmZT&Xqz_O`BDqYmEuHj+^YVYW>Vw+~`qR~HjLRy5qSHjj1^$t2Pq znl|Of9d!AmjKL?UuPLvq_b2v}u_hsHk&jNZp1;_&{x2@ovztnxBclVE0$&rokzT`X z(fF;Z2YJFC=+AiVsMpEm{}+H`@cgj=h*_YAaXSp2VYYv-~b2#w<7 zgnqye8Sql&8K-a-Kzm4;1UOnQNqr7`h#=>_uPwXa9KQC(;WROu0RDNI&&dJ9FkBH_ z3?S_`f9n!dzbzpz-Z2+``dNY33zt$;scg?TZN!qYh|7Jz4~fDfYNBqF*?3G*Y46?k z@P`vhGrm>vpB8GBA(FG;HKqq9r;j#3q?2!Yx6Y>1Sw}if`k~c#wxnHnZI;PCwqI2Y zV960c(S75j!NzKaz}>_UD}wFlmzM_+Z76oQ26bQ!Ti^wFT1R5x56o~gfwot`Aqnb!vNrYYSGT=2hNNB7ZPCPU+3uKUU|FMnlm zeY0EVlLB9%q4VMEKp_bA0ap*c_Jp<-lC!L2SR6cHzX8=J*^(uRgR-V8-4Qfv^~oQM zH-@(IxL3JBk4y?M{$v0Izwys9Kz98?)l)fj*8P11&Idu&p?|l1^Q59smakJ#wRBJ* z3i3|`^i{}xO~FSAzQwY#B|PFy_?Rm{PVtsqW>c2k-8^xI&t4#L$5abB6M+&BFW z{6qTN#`)P7o^SvQ7~P8;ug)E)Vs|0}OYTZB`-V?bTW6#)^R|hyQCE65L9_Mat1^Lx zYd;WzHQl;andAHzLG<&^&5`$3Q>1aoBpODTJBTw0EA<8Mb5hGW$`77Buoo|zX&*8}D(_*wBXqU&x& z0yTDWm-4a6xQMai8Py#QypFHZwgkY?9Z6kLII~~B^;c@&4Ta8shfrXC z53GjWqBtb}kwHe=)`!zT9C>bwKPOgLoMYj81VSdC-aN`n|N%(j|u^6~<$;a{vO zrkEq<3Jt6xIOZ@D@T_0NkR57iCQ$E|{Mr!wR9dTrQ*0qXsN-t(Qe>)u`Y1a|?=WSY{-)!ZeQ zY4C^r7rk4UY6kv)d$-$4KceO_wm;s>pZ>gG(I;w#8xM)tYV6-)Mgylg$Hm>&1jcZlDa$tRLyQIyprn~oGvQR&20m(5 z#h#dS+elw9DHH>>C(+bogbg9!!uaV}Z3*rHl7}`s!P*%tYiZhSt+O4{Fg~b26Fa5} zh{OnW$~~4e-=uEC2OnpOP_!<0?S1CkekAoKW2Gish#WcG2b$C(PjKxmhlkSc}PN?}#?P*O1n zy;XfBDDT=d?iI(u?kNJa_a6R%Zpc~DwA&`3$M57Yl1`uJZYrBI5NB1c<`@kLt&Rjy z#!7$k^>7f{_L6))jQ)FO?m;ZObCI`%V#M2|t^!4>_@^I47!=%-VkLef#EjOz@Fnt@l>SSeAxeb|th8hc%h_Ha z4j~~6G(&v+eg!@d;c2K8%#9)~BLu5<-66gttL211tA^l7{t|r{?Df~p_$RrD7P5*K0yB(^8KNsd%v{bG%Z$cf%$pmn)qIq;1I=3DJx$()=7;b5IObtnpu2s!*yUKGv zjQ@kCpV6F_fr)6U?*eVC3Y#PR`;C_#vl5(VTi9g>c+XQr9X%_VX@eaMMw*Cp5c*k?3p zjBY4#RD)Hxt>@!*3y%tT#X9<$l!8C^#xCm5_7BOY#Dkd*VF)C3_BtD%y7W&U54ft7 zJjj53opN*aBud!n`QNia=vccu(8#ZT>kdl3a8Xmkzmw)9<#QFd@&z(~zYm^$ z+q>qG%6AT8=BCK4Guu_@?!lWbYh$<*R}z zJg8W-oaga2h#%@Z6>|QEB%%9D^4{~3zUTizg0E;FeMz}RT4JGk*Jv?cr6yomru zKoTonWi{};G6Fv}Sxj$~C#VPeERd!ii#umiZ3$5-I$2Dggw-C`eB@a{O*xpL9|c>Tl!Vd zFP=mG9s;|Ukk=uTy6_Qxas==Z@21BTi?rdLZ`lW_`4+ zK!~?D4e=l6klm2v5hVs161J5GR?z<*!pW=Db(uEG=vaHtJGh;`vx_c^V2gWSf7z1y zbNH^QLGijV1T9wwRnFzlWx=50oCRU7^CRhrjjy|sl0oaMUj;do$H2b9hZ3jlVq%K1 zzN!y=aEOBmQkiP1l&7s}Z6V5bw4C&?k6*keak!B>xI1UkyJFo>#-Fg9DJOjzxu*K9 z-R@U&%$Pm@q^E9bUb-g?1--i3(<<3wGg=~Tm4A{Cay zi>d{a$JUe-U38f8}NIf?&F z*o;yN_oBT;0`}%ky3fmb`v}`od>|{FzUh*eU9+^hOM|4r^JUG5D>y7V$ihJfT>D^U z6Lw!P8FIbDA7LtEsOG5(H$Pv2H;yLbrt7jlUZ?QuV>@P}t`g$(ty|)47>~Y=K7<7v z`Jv~h_R;fpD>@6*3j7Gu3WT0>@WbEux;6d-JYv?}nwATGT4ZM8QJl@eBXjvA*0BNU zzb6)-ZT8gMc2>W?NhN%$u!1yogQq|Pv+#1i-of}=k-3#}{_9#8JK<+}|F!GSD|TKI z0zvl%)e2`?`4J<8rg_EIl_O>IIwAs+!scrVi$pal8wQ|35WfuXMkKf1G;TB4U24fK z`Jf-Js0zZO^nnNE$YdhZwVkPERwvX-PU(dhb7ciT&x&oS0w?r zTe2~*aDHk>;Tq9W(F)ABdF5`_gc2f)_ckF=`=>-DNIzQ9q*ONo1Q1hJ;bpmyz`dZR=->i}rN{>R)WLN{|F z0Tr_s#Z${iB0qOY`|b4i-QrP^VJsP>SRHza_K={8G~sx!EaedfJpcRh_PR>lM!hWm zFd8ODlj8pf^;ov~#1ixdu=;ZC7bTcRdNu>WRL2XxtmHd5esx^U%j*{{-TQJ>bbk z*=$DS%Y^4W%lnLrbJ}2_P8RUJ02tJ?p4HqpdQBjIsXRmLO{Q8UvWN(~AM zVa5vv9!nw~Zwt;rEQBn`2@funtkcUUDi~*i2PVevH?*L_KZ3!Hzqbu9OFhT>*xB5< zn>(qK$2h(u59q9<3p>9Cxs@R8&$RYSP0QFi@vUAQTsRE)2{40|y15J(nbm6r#duLv z!<<;a{*lP(;_G4N|*!a0}2toY%l7VM(1g zv<}soVfEErZ?rrcBw|fvlz@C7EF|#_cs}xHzS;C~1k67|VA07t9joO1c1A?81w@ST zo!LLTD3l9m$g$qplb?ph|LKDlk$nd7SS)v2grrQ6aWi^`OR6K+IJZV|I)WxB-}2>c z(&TmfQvZh>G@xQZW2Cj2PQ@qVK8qla`v+#h!R(2r@kDn9;JGYQ&Yf6&Rj$N!Ei%a- zA_vjdQ=;F{Il{*ZTBFm;{BEst?}e4wRfEAX!nZT>UW7Rgf?6I93P)9&{GAv)yza;|~Vf5((4dU^&CcF%Zr`OEZiy z#eb(*&O6Q)2HmrLwCCEvuF^7qm%R9ac5# z<1<;4d%nROP93)f6t8t771HzCu!_oIN7mx|=xmpKollu-NSy2>jvoo2Gns~yz(=iCPw%w|8` z2e_*xtZdz47U8N>k;*LgZc+_LE>QSA+WrPzH%<7Wb@1x?Q{1EsSF1F$a|)T90Hu); z&y{4vZ{q@%M)|j2w9JYs@6FNObqr*@Bm#rxxWy0qB3oureo)89g)mdp;=}DDWL5&q z?%fpDk`tVzF4+5$cYtC`+G^Dw-}zed=8dc}opjfFSxJd$I;6}u;%~FlpC}Azdew~e zLU#{5!R?H%Mlab%(lH2q4?!{Vo`lAh`9$Oqp(b+uQR$R%`nI%3+88&YGK86g9@um{ z8-y^6Sp$da=?lq4^4X0AB$A zlFqSIh!KZLqJfy;z^YIiQkc{;OG}w(Jeg2@*N@-8p@y5fqkyq{GenBXRWFcrtEs9! zPW>gf+Z@BO)a6p9W1~_WeMF%#cyN)b1@kkLAD-FeV#yL+krWEAp_1C@>j@oX%#7p>)`!M=$d&JlhU+H)$(N_|ks%Lp1tqPAPK453+_r>;is7YNPmVgc18gBj{2SP8^84d6-cy zZ&K@imy3-tTuSkGZv;EI zVMcM<($*p<)9srP9PwUfCT9$|Q3IUCcrVQDNY#&|$YKU|Po?UDO_s%sWhX4TU2)@a z?#Ypl=8mtMz$3ERM`h*Z>N-XqEVMG=ua43Lq3~y&eS$-%_q`0xk}LBX^G^QrHK4d* zLn%TdBoqSmpCHg;6V?5rg=ELCZQZg;hIa1Q_dV89%?Advs$5Ea#cIr}Wg&xRekL<# z_i>lZP0}KZZa5F4&qTOo^9D9k6cZK~L`%mbkZliGkV8Z$j)XLKl$eWlaa*@$%9{>xY4K5FoNVtU%g@@1a}}gIaRHJ2#3s>%Re>=`UZH%io1o z-!66>7Xmw}jMa)jI|1)FdcS|$YkOLwtTOwlNSbUj4wfl1N5w#Dpa&?{M!)e(V{2IHWv-UMD$3IN zti&F;t~9K>nJIyOZ8IUowBI912~Q1VD|tc`LNRfZY132tGy&~hjy+E0>R=~G?G?9u za4hnRx25m$LqAKo!{U%fnA^P;{c)B#(!G^&XK?|(THrA87p<8;+h*>X?s?||A1Ju|76N3zdLZ{dWp!&?tQ1*{Z@f~yJxbIycpBu*X9m5LuKa=KhZY)1`L4J`=vnu*GO?*yL{H^`QS zO;^qw4(t;3!8mmg`7UtBv?b0L4P@lzJ2#^u!kzZH$*^bjb~Nd)hOsUJRgKsKsBsYS ztu2$RgU<50IZ1}l_zy-pfG?00MEJ8EP~|4k0y6W~{YX%DIjB!LuZ5WM`*+Fg9QDGp zevzTF?PSKrOs9>SBTG;fA0Xi;uaOVBp?Y0T#$$l$hgk>c(s)=I;@&EE7In?Bb`6DD z$Cb1EIHGXbW*O7)HGR*-T+|*MK9qi|chA7)Y0#saMc6p)KBADfWR0qBi+#XiBC|KH zp_N`Y5Qydjb4hcIGTVIgO15TrzKgFpWbTR~Z*luz5$k^H*WVXxL^z<1T)Zx`?&^sY zsLR2uTqXp~GyzxdQK<0vR@LiU7aJcC5^_-1sTH9x50hcKX~I9{<3c3}LQ17W2_Rq) zWJD{WRk8FgEI|3SXnvC6PROb~HRa`>w&!65UP!W0T}M3p_dgy;Jfo_0%u8qUz`uHo zOk8dj!a1J~4M`@S2$b5TlPEw3DDM>b%6wvo94QBr!Cw%=OS(LvB2?oP(I(RI-6v|f zbsng-dsBPmHQfGNRF(|NiNGZ(WN zOYu2_BJ#q;R^vYqx2$42!v^Dw&oienxxIkBqfwdgQ>N#dyV=1?=;3jq3%I|PFV_6Q zXH^ch`7Vn@dw+}u84>KTvy0B$hgO_M{W-=kK{kxh3op;Z7Jz~1Xm$pJmU|UGA2sSy zMO1YI>Tcn6omBrw0`6Jl5D>J#4VVvgO%f3W8OJvt9+Z-Hsd`A3Z!`F`o6|m*e(%}% zJX2h;t3`p?jO(W!2=VK`T(4%LE``NGe;t<`oi;v2q@neXnn(!oVO_I0!WER45jA+vz8O99~;I$rKpjrIada&6~v#!4KQP zrQgsQ6TU;^TWMncU5Am!Cd{wXk3g5g+B!HjW$i@8NA&W(wIOKESGOj)Nq6%)yXT7c z3L>vsA$mr`y#Xx;=%S#%mGuS`6Gb~t$!2c(2cjT}fLp>rf^$kqzmgYuEBo(#HhML`LyROLGSa@>9*-qex$CwmMMh7{|D&*ad?`XikDQV8aPAWl5Yn=Z(P^qtR4qVYt zv~?0;J>D#j?*WaF;Cu$uscHkXQ8!>t-E)E!54_z+9{077s80+ehwQT|u=gs6yOcd= zs&e+N$E+&l5BGWa62eyqP-C>uo3=Q)orxZ7ZN1CZno+lT$Eu@x;da7-FV&Q7&SQc0 zXCu-{7K#X0wOWBAHwwOJg7u&Cei99$poROtkFHz|vZ3_Ul5y;%9w@O~d2Dp&odx5c zS|s*gP^n8CB-lWY7t^5K-@0S@pkWSL+kzibIPaNT>izZ+%`>^+kW&7Q)NN6m%-e`$ zPAPINDg4I%7*ss$0)jv*Doyd{2ks>w5Ib6QyqIi1=iG%GKjrmbXGNUoFHS|G_+obu z^6AYaT&2E?6vbY68{fJ`3`U+N4f{o7sp7N;^hFmyUmUo38J?pXF?0P>!R*r-3MVJ> zqT}Q*4UqYAQVOh=z>khTbpgL3`&lMapYZwP0HU`SZm!FE62RHHt(%48#*@Gu7TLpG znj?jx!Vid}-ZNR8(OgB|PP_%-{WzQy(lY;aLLqi1Lr$JU{Y`evz7zV#amy2u%{XA; zIw>BU33s1(3h~;K=vLNnV>-?BE+%0~g+&)Ge9NPgHiH%5M?hxg2e1qDz-fP)nj0vX zZ5&GE!0XTKtsuoq|BpChMfDi8FOFNW-n*fL{A1eO z$UK4A1kzXb=6u2dys7?Ia%xRk(+vD2Oj?hN4CMeimfJH+y~rJh0*fu;-E5N?ruZdX zKlJtk_Sq~S$v6@wpQyD+E8w}KB7Vm$FP8=GwX<|OkxFLXDK1PPszpQ`2 z<621f!ZKUW;E0O!=?*nbcP$!5hx}O^nlU^<%dKbmo=?p_fMbdQAgTm8o{4$+8i0U^ zH0z7Dk1jxuHu&6sskB}L89kQu(uwz>pp?p77f|BdKR11VGE*#PvV@orum?s_(g=0gS*NI&TQ^*pR? zuGGYse{>F_Jo{4xpA7X8(J3^_*N&=}oD_A#ru=M9#}XyxYk9kS>|u_k1iESw#102M zT2r32im$#A92hnbsnJb_WrHLd)02letoF4%oC;gd0O5}AjyHMS;X?&9?DDGWagj-- zMOte$In1$N47J?B%L$_Z6MU^n1=rx^+?Bm@JFiS_RS72?W_4jAld$#v{v_?P)+oz+5*)NuP-iQj2OV&e@(I3bK73WRHc?C z{0fUuA(~l&qgjohZ#RG&Ltd!HbghN* zfh{CvC263=HACWMmq*)5|G)+1Ng8gY7Tu8FBjg6X1t8<>TuKvBT?B`jPBRf&d-AWm zIEqQy6eixclOq%ec4t&owP0JEW}j0lxnl#5U{%wCs(rC8ZsSgZ)WuOHcu`+yDj-a^ z2QJJU?RlU&#H*Z~Zb3_7RotJp>)B0i+ka~yYsPNYk%zm&pK$ zWjjC!dc~n-egXP}W@&SB?;J9gALOUtIZU^1Vu`+mHIP6<;OXLX*{4-VU8`Ne#0=fh z5A3bO!)!LlzMIu*gbY$B_by7XtfI*$CV5DCst6*SyHkLy0#S@EqJ*0FnWmy*oEWIJ z6VFtdaGj|CG7gDd&HED^n+4K<(4DU9gC4bTutbg&I*yFBVp= zhkF~_0=KxwGsjhNSoA>Xnd%7}RNOa-74bsy=v>9Jy%sQ|NqjpY7W4rAt#x-)QG6vz&2d`jbwk)g>zRJt{EIW94Ji2F%O@(w%u*hR}v? zK>iu=G#V?>1c??kuD;S;8ym>*nEI2x3ct#P>c5OYJJ2yw7=Lzf;YyCz8I#H7t*>b) z{q@nZQ*c_Uupno3!kJfEqrR#l7Tfp}xTh!f{6I(lyTekYp!metT(FO!W2QgD4Td^6 zXebNCM8EspTc2Wph zV;o3f*-5g-uf@lc_)-rNvqfA@=|=RkZ{-OBT9s|~b*P;Yfk$ZrmHV4PJrkBF;ohT_ z=N3#CX^5nTuU+#njbmtv|7Eg5OR8YCaeyMQdeiQwOCdohVhqI-pea_gll9Yjw^_%! zO?~{jF4U?cLcvRoooR#0njpQJxBVzD_5g277moTAHcqy#u@Z~EIJq?(C^R$5r@5wW zrq;-6v4e)4pmUv!GLlDk$<*YJe?-qEXQjC&6dEy++Xs)*;Yi~@C>Zi&BZ|HH!E?#2 zQ=!cH%ZH1?wNueP+?GElx|-aII1I;E15@UK4`Pj80OenkhRRpnO)W8&!0NBY6R97c zNLrhIT>tPDt9d*VWyLH6Ls|oNgKFOx@Xxo@gxoz@On5MJf(wwBHCwihMvW@`MBo@jw zPQ;DS59|&pln~#6cTxznyDlYk8uNn?)HtgRVA$rKM@~k zpCkyF^}rm>UNeN+5$QvLeE1sVDl$EId-{ho;d^ZA?mCtdjyts}470VXpZ*8rV;YDEHlyCT8Ve&nQyr~)KflP)v(tGlyXLmB=5{ASp0%>-f z;a7Q{AtAkzZ`Rl2)hz9vD7yIBkpit#l1O5rwK!$PT4{H2)St|EQblgOAu|Wm{p%_@ z_`&Bir#cAm1K_7Ex-1)x^nWE${F^m-6q_19XAg4t|$xVRL7hB-y-E+E6Dr z6;Sv_UuOip%84;-dPU^GiJ$2ToI=z1N&FSxQ~OoFDENLJWWkbZhZo309>%480XXQR znDD4Jas;0XW4?uqT4gup8><7p*Tx}lrV|rQndS87##druIad{|JmwNlxv1&19C4eM z67fUKwCC-BNXICQWjG@jQzV1T%}Z3=!4|^%0YW~hP3x7FQJQqgfihH>Q-?GxYvKul z7<+0}C|6xNPCGy*VH1f4c>l+HmLY@x9+Fc;5#7HyPM8JQn>|{^p(oM)o@c3JZ9tys7xt7E^Hov>(k86O096U^zzGt z`82|dR7rRp0gNd#+-au~$>10Z5FY(A?J>ylO^vakiX$CZj;*ak7K4Y_G2! z^5Pxa(Ox2f{m_usg_;4?@7Rqfv8gAP|3UH7=tZPLIPoT$vj$|3imaIFdKW>DXJGTa zt=d7SS63IbV${z(;!18DC5&6H0Ti5Mnq~zaRN*KCE{v%#87VpmJ0pjC-hSHVL2^Ke zH07owpEGA|R?pH9Y6ysZGq46TwgbFi3u&S!Dmp{_L{skMcw}b6gNm7`6;-!GsCJxejX!%{2nl zt9oPe*8}iLrbDKun1Vx{()yb6?j7ceNKlP_sjnkw5Fv`*d~@^Q8HFa2`77u@1XwCR zi!+fyNB*OaL$K9d_s=pdy}wT=^%bEG~ia_lM^=Urbb?xD;{?NfOQ zgy705IaIZB`O%3p^lgI`om zv?e~6-rT`jqc?5xX*@K>S@kELgIH|j&qyP^1^>GgR~TQhJyO!PF?Pm5r!ZU*A0z#N}e_-z(r1?jak&!w?#*n_64Q=ck7%B zR8=V~R=gD}*pXU?@lJ$Zp$alnyik=**#dl`u#pE;Gjf4{%4TIVSMDT|B`Gbynu2`| z|NN-#RHgF4KKO_B2w~fU_4l@JTYgIBF@<||hH5gh*ceSlrJ6IAp=3JWIInlezV5&P z3A?1iFjiGLp}kidt_3|^aJO+@&tF1`NlL)#Mx$x}K>)q=XLwR{g05K`k1dEayUl_S zz@Rq*i_N4$7f;Z%jpG+=66H9UZ9a^G&Ra;K_o$sSc$Ak(TOaus-7-v$i~x0@N8iZ( z-cuRB*0Va8_oUB+c(U*dYjb z$Qq2ldos-lyrm9p=7}7o`)_Fvvj&Z>Gc7?I9G+XqDejIRrhG;Rq9QF%EFYU?Y{E~PDD!~*9!p5*zP#6*owzM!Wu$u`k$7Y(n_Bv(eL7c2a_hu z=F#-&J3x0e>c#7u1O}-?ysB@bo>xR5UZvaQmg71(j-$E5MA#`U7_le?mx@e%xi^p% z>DVeQ#^}E#?1JoBLCGstScSdW1lnoZ@zaJMq0|Jhzs8DiV~m z?Y0jNLw!NFqn1<2y#6`o*Piu-6m4N|qd1je2}s=R9av8{V`10LZD_R1*th*!cz zr(O@?OlgLihl8EMol`2q1NY9{)|hQ<&_<@XqdG61VXrzHiSRXO-8Aa@Y)jBD*47`e zMl~ZBbOr8uLut8b2HzE+d2!ppFD2HD`Y4ap)DmvoQP4T=%ueC{`~W7m%Q8Vp6!1GH zlgd%#=gmDS_rQ5s%vUe?PfbgpoEh)>f0UY0shr~;WOJaPHmLjwroOqjF{dnVZae-X6AOo2PwL&#}mCtP~Ra+Q2EU!Bh8{AVUqP86bMS}*-V z-F&Y5(WToK5%PgO?3}O5mmC*Pb7e2b0cYl1=`|S#Of{&xIAIZDWBS3l1x&-t(f_u8 zxkwWKu^2#y5<_I*xpKxAi&ZYyocSy#tuDKL10% zfOYpjs{FT^Tg$}JTOEPGY~}DoV9_1NtL;u3uW9=3&bHcL0Q*rLGt8BNWI?h!lxEa& z4x~_?i6*<#^DV+&4dI?za5mWoFg$pvhZxT0Be$61wqz<&uwq3&FP!_tL)}PjN{BE) z!)N>~W3WIqTaBkhhS$u{6Aocj%nwBlM*0Z1N^B1zIk+w8DhT!Yg9tvVo7isJfdEIM zHX48det)E6?w*Aq{cWv?$BSMehQ5h;zW}9;D>enwh41d_8ze@+^nxY{6kue zzuCH5oH9pTtrIO@2f>-M)p z%_k2aGoP4YN*H@Bn3Q?~%)@zXhS)9~lSTxNS*R!R*N9YsoKR$E_PR0==zse-91)P*KBV#$Em zbezJ~_Hmv1*U>SjWSoU08s9RD-0f%c!EFv@>1fc$TVo)~$o>MTYgwro zns;6bW5ziq8sdr2wa}yRr89$PxAn8>2X&{|{UUL#ClL+ONvjT6znfdvUZ!&K;1hNy z5Rx<_jq9ofLG-s_%NXli|8e(fsna34j>sg{ok%Q`=+GG~xmo6pvslg2?Sis)%uUjQ zv7`sb-p&wYIFhcxZDQ^(r_)w(9!1@TlMCcslwXbZUq1;l#$Jt`@HWV=6>+>$N-kR` zbSc_S>aC#N?zJt?y7t-QC$8$!5f%8(h-;_yrX;Zzt-jzkw-Oq+6O&ZRZus_s45XXz zLpVg6J|bKJ$Ys$z0>t}m{~ian_is}xNDEP?L-?tJD(HY_osWU2;2c0IFnHzEi4aZ=H108Y$yfWdxFa_OwreMi4}!Z-}=kS^(H zrq?UVsL#IwWezfo0E38)aCF*?;c1)nbQz`8)4ni= z-6Glcx2@!jmsnMbHkia)-#yH2Nj6x_yx!{eO{Zampj|%oka58W$d_&3$W307Ug3vH z73MUrk`xAeK}|{f@X!i6olnmfB|hMyRxx)J9DM$1DooTTCy3toFh?G5_kSYF!?Ojh zIgxjtkb1)or9Uh!@1kY9^so9(Phipx>_!WVQ*w1@VdVj%lKkALk7r_SSKt+TT9TrF z``~?vSDH%Qr;WkDq7Y`uni9n?b9w-dQ)#!q17KBYt9)7aX>%^R{!1ptybH^~S2gb7 zC+cuukl#M1<#Ccf7jZ`|uo;}BoHx;^y-N6xm#NsCsc=-}^^;DEI%%~T7rRX$Jd&{N z#dwrW4s=ZjZw&%q1^J-0AJ}>bdz(Qy)17)9g}Jy>ympVR0v41KMjsQ_kO{BKZp=uwEYFN)Aq-ECOK@TAHc+Pgm0La?4VYLwGlGqU47E z3gos;U~A^!E@k%y?LseM0)sTfPqVlQ$(lrg=uA^HfED2h?(m{O5&#d0+8*>6izQqW&TrnlKeaE?kd4uk_0I#RzN>EH` zKFsO@@mo3zp@(g^N!v@62BOWmJR!Y+9GH&KW4~(DKALXIIipEsMB1J?FZYiWJz>=K zqV&Z~X0+NuZ{`vhkg^s_lcs#P4CdaUjB%R8r?uy1Dq=&6(ZXmEiY=DlTV&oB_N(By z@gNd#x1jO{h`%oV?YLzqh2QQzOCBvf%?RwUm*`o!=R~&cV)gxzWI8&-CBX_j)x;nA z0Jr%bWDAsSPeF2ZFtZLUfOvofE2~V6x5)L3;6+E}lSb(j>~l`%P!zsA6`nP%$o?$G z0yR9wthjN)AimPe?e#wSEGuXiZIIr^>(ofcZ==N*K8>?Hkec1YhbG&a(0nW+`BV@Q zaU#Z?4DKGP>~<^ir<@yM6LRSP zw5m4#qDW*tcK8i1^Ql=OS!&aUPE0t+Ido-F&MQDkNl>?{aug|C-*lJ!21r8$;MaGY zH-m!wGA64t2|z+4uv}1JFJ`m3K?A<<2EJy0GK(8I2<`gUqtEKwcws+Pz&;{s8iko* ziJ+5O@DyYOvAdQf8VkI;OCREfHEA#~N%GF_iY|<>KXSliUauF|N<}XKXIYYXmtswj z?sa;^Pa9ZPbu>^v6a)=3Bg!&D{jlE2GdH+=eMSow-Zc&>GNQJkn+BuHfBG!f<0HCi zCm%60yiCC{^KCli@VraL^|&wf?(bXJy*8$XX3olOns6bAL{h8|Z<8IFa^fA>#a zhI+sxSF3kovT^)gdPmRnCG0NruhfBZG1VhIQW0`d0UE8+kMw+(9YfmvT=GKb!u{W5 z3QdiIlI@48O_MrabP9WU2AF-B)zV+xIOgW8T!jDn2n0J{A#zIN&lEtY95BMd1AxA* z=`*IO90nNyvBc`}17(5p;F}FoP8O@f5M86=s+_3MkNkNCOqmNyqtVz6+Yc@njlX9o z&9?1)6Rq}uG6QX)*6QnpjEnn>XscEnqJ{^fo;Cq!tUR?~>mH-dO7PH2fDCVKef2i| zoSv=^Hi)65w|7U#9aBPTgm?m>EOcbq(LAThGADXK8j?})=7a&Y;df^!ueZ&P`=^YT3n6vD3`TIjAu?;Zogo5*~9PL zTFIw`LY2z9$8Ks$fva78dm3*4E+<;GV<0R4Ku!X%&3+aJ7AHAj_wk&~?Y!$ri42Lc zPFWkcuMb;8*fx?l)>KXW70@dO#^iBeSBp2}nV)u6N9nm9CB_Pg*hljI#~0ZN*Xh9{ z-+Vvy%vjRK`h}k2gHRvA2yX$nCg@mGcvI|Ed9BM^D47urdpKNKwbVLyu<&Ckz?hGD zr;4wm12qaaxLVt$DM(D{1Q*y8Zqte%cj#(>WLEEaABBxB9)>0SVq+`ruZ*~uc9eMH zCTEsOv%co?Y%zYkL0qQQ>Ia~&h+^8=&nH%+u^V4pqsozC;moL#DGLi*on|ea#0L@s z-^X*V9c(VG{3k9`8&T5)m-(9u03@*a*lTa@*dl#1bDNj4th#ZtO6thVM2FlOgpGeSd}%y`VFYp zIis>C^|$09^+)FN?v=K)^@vDo7OShdx|iqezu@t70#7Mhz)Sruxtc7)P|^zqx}#xqo>_3;(9m^nqzt_c(rUXCnRjF+`MwNjb7rW`Ywt+!1CX# zy6QtI1eM|==jOND>z#QC^$$%Qh}bSU6Eki))viARWFTb$Z#2mSduI14uMQapcMrAdXOHnFmuC|Hxf~7RR&UgicDp;7z;R~!w3h>@*iM%u9eFMo=%$_ zuVO{UVrAXjs1VC7C;PI3A|vVDRLGOxQa)X1qE$KL<`9btFU4vZt~tHz)uyw-wJ73C z6Jv+weLOuu-i}vqe9UdKdHsM-)7h-L%^lFs!41|TdChK8soOlM17vJu3Za>+2(Shs z*VMHv4q(55gDH7T#-eZ7_Y&MaL1kIeIo0t<86|Tnwp#UgbCWw_ZQs zM6bRS|F=rJX@6FpUk<;sLSL#^?Q32{UyvT0IYk<$^YnP$#`$R$TG~I|KXt8b0dXsQ z3yT#p%KRaDJl9kIA*8FK%o5WO1a7!v3BRih#Xwh_+(ve3(ilhQ7xqp>vZfsg^Yeir z8sTpnJzXs&KuPchfJq2NSKoTutD0QuB#|&H-s;gB?=?NR6mzDG?+AsmyPsBlIPj^X zc8zEYh(*Qx>d32`Y@6xlIf}YB`5+ElLv^yFq02$>fS^feHMr0fqn3gki)pP4%-2*Qm?P>l^I4h>VEH*HFdA)i`-99{w_-sI|Hniyx z4~w@?&to^(H3%n(F=X+Rll;f|LtLszTym)h^n?siAjeb9SV!r)32@@wz{LwLUiutaX#krP0T|y9Sxm-z&-QkR&Y6@ zqzXe@N(WMWcn;i=gP$>*rUZECqvZx_8RM#&N!USxknYXW*$Of?JWe zB_GWpi9M|B#{^Y;fGgtSVP6&&PN2Wc#5LUNrOXbT`p4tca@*zobIA&v#6be11f*_R z6?XtS_#AbXVuk4yK-<)>0>&;P%jJ1;u#b2{#Q}g)c2~o%X4OrKZK^5nd%Mt!vhA9{ zF(Q$M5O;LLA2#qu&S-J#sqk;vR%@AA>a;JVQ}zCDkb*< zcNa5UYw}3R(?i_)FULs;;8I}T=*DSpj4QWrvT;5@To%u*P}l#wTnIU>Ay&779sU6w zceZY~u_8lLrvqL!d4Y5!edl-WcEyOlhq5C^ZO4vo!*c!Ev|umJ;fO!cy@2hWI^X>N z7rw7#;PKO90tc`QSYH-sZ^;99*LsK;-s#L5F{nD744_A2rT0}S5tsrzm%5#xFRGfS zNJaCc7x>#KAig?eYYE=md%c}cLKTLS!3s6%URARF5b57Vd{UD9}B=r zT1V^+CA0T$^(kz-yJJK6s(3!byZYh0p5u)o?FZ44pZuL^hfnl64xf#n#Cq5V#9_$EnU{8+RFGJnR6$JQ`Hi_1nuAqbB3lJM z2w3x~wnmezPgS4cVt++3zEItfl1y!~3J)Kmyl3dO2oFIri(r{h8+o-2*oMZ*N|4)| zRi}O1L|LSF66=4f5ry?zs7h4`6$RUm(6e0u8|#=~6&E+dj6gQi^P_|A{$;oU7+8*+g34&| zkJrGJa#4M|*^Pa9A>C0VUdRQx?_j+IL{Bqh*AnvY4=LfM`;;4_ zCAXXMT^@Rn#-EPna|)wH0w7DbfhJ+A<44f-=KJI4;!*s8BBx(v$G?eQ<>OF4y_im} zJs3v0RNSZCWA3DUO6m3#(SDcIHNSowX$t1nEK7Ax8%Y_tkVNWN|74-;?;6bMSwplp z6lsvCc+e$`Ph{wWa(I4)DqXwA&Kgjjue+^cMq0ha%wY;7)gQcn9>yU?R2AoSh)j6j0AM zqvR=a3{_Jk4Q^^x{wc8h4ENS0PIfGwuJKc-ZVCyrIxqC*);eTk+2ts@4!${B5<36X zXs9d_5-d zStcoQDo`O7YQJUHC+7rKKF$D<1Ex^CWY-dWNh7m@HIqKbb5du6j?p z6Xx@cs>d&gu@2+?2^b_>@YoAIUi%tmuq@h~#B;Fhe9tM|L78_s{`nhb1Ur)z9L8QIAYbh-Lu{I=>}Th+H5dVjPhbVumIh3)3EDpR>ob)rSe6PEzF# zofuzSf*@}2LJ9@-uXW7A={O0o3lD}o`ALIlB@jsJ#waziNe@!&0!OB9TWh{{QL+`v zE^$rByvubDg>xFQeHgqtr6=pUm4;}N>G!{Ty@bsVa~Bc&=hDOBZN!7Z^7~O&*G)$M zD+=XCrZwq7<@N~VsVw`9IqJSXBJ)er5llIk|1-Y5Mfytt1Tb+dLKh<62A&0{qgV$! zpPs`^kF9j$yl|xM!#E=v_M0u(sbu~|Q1mlb1-zzPd4lR#CVu=y$7ZuJ^0@(l?h0bv zl|F3~OZ(v$fGCe`H8_<2SlY zyyyo#2xvqY%%r9(T%EOekugn&bti!TS{9~r8{VW_#Qd8P(61u1MDa}vjj{d}iI?k7 zo+gn)U}3AGkmB(Zh-Jt)fDWACC^6Qz`q9PHUaqH``^&fEVAtFF~)Bqp=f%Vz_&^@QxufjPTy-~e)f7a+LDIGrb-6zAMVy?UGIUy zj-;t*TlBcC!BqD!EnE0LCj9PMtXF<^9;jWrUGWosQc_R0CYhC-D8@N0PopSK`thQ} za)2?QnDe|;|D|XV(jaR{(VxhzNi0#pC>a+$Wc(Vlaj0+#h`ZNvY-&pKj{C{;FG?hl z!%NzYZq(HAp4$R@nPf9Z-{eAhfv54K9(f^-gmb zekeH}p_O$~U$-|q5%z^b;PtY9y5PY)Gt^Jsu6vFXN`n96vIhA9R-|XE9KHf5Ouobd zezhDek+MyZXHE?dW0dFdIW-)VLU_H^+-*r3wu;D?^x{V2@=BZ{Qf;*yMuq}=>6eQ~ ze?^KisanYrMK>W4y^m9t`Nx*H!Z_L(hR?`qtluzU>QmQM;680)s@qqDo@2(0Ou{ts!6r1Op9yjhZ{mz8DpywsO+}df_i%|P1sdoPc^}tU8h}(JA>Fj8nF}=8T z&j_aPT0y18oB>)^(Ucyrx?JGCB9>tR@10A0K&hTDls3L>KD?^mr5K9?qY?8o92GP^ z69$dCRTCHt8CM? zLU>d?rWW68QZayOINZd!<6JO#Z`{dogm7TvmZUjRr4Rdph*2;y%$_ zseY|fZ%0Ikt9zu1vm55PsK=8T0>;xg0PwXJWM-K(4d!mk8_5EHWkwtilr9D?xmN!5 z27`a!o8MjyhX10{uC=n_zAlPM3c+6K2++sC_~7Z73-jwsRD7}UA&vQnX*+3V>_)~K zT>W954_JFbP!K=h46N&zTbW(Zl5-m&O@5cPQa9Vq&V%D`rz&(-n?%}*y(&p08UAdU zu(AJq+)v$10%LE-eS-xkpF%e6C){4YUlm_Gj<}%t&o$uqu14KK0R5 z$pcaz@iIYOwhD5za7*6mMwYh)?c|WPawonsCq%Jtd#_(~qh1&J`hUWvP~I?6%8urd zkvt4yiM@B&4Rzibe5d|Pnn5yF>x58bdmZ=*GF9NwJcAZe*p+b1Znef|Nn_p?n@0~d zm0sqBIhpuH-mG3$#zfk0Xu4bCHg*EC$@Eds;LNg_?%N7RdRO4U&X~j#tT!}aM7%Q# z;5jy=G2pjXjB9tu;7E$nf72(Ne^zJFcwC909Qk$DW%I-6UNQ)-1N^nJ97RbzhK={`K)sSZp$^8b>t@?h_`+({xh}Pt)DHbr?7A#eL+b zs$guA3ELN2G`_b3ND9_rrWP|+ z!$nQq*hwi#XM5LR`TkbhgJ*BpUNV+KiuH0(S9{P<5q*t$0Fb^3)@U3UPK+yxwKUx$ zd*wzRk-XKaJq`WjJ!r7HAAq;@p>C~f1lTP_MZ0woSgZ}Rv|I@Pd(R~kRJ(LFAl4+d z^*4I7PaXE%74Dge(`#4*m*g)K@RI`;d@TyP$M({_b?(zV(Jr~n5U>#B_0a^?ON)I3 zxKh$bAO%DI5+?mK`Y3i%J!8t|4*t587^Zx-5>yBPKJ=F2*wxR|(jKFuZFg9zi#L>9 zy@WdbZHWX1wN~cdiHMNy4omh6^LZt}g?>bQH*iCQi0ROfzZ%RIIncP3D#v6AgD^;u znYU#IntN#r)whTo-|a&YKI!uT%X&p(w3Ad~O2n&FXt}d=VB)<|UaXFMj4%Npo!*^+ zg{m8;V^q$XYlxPFiG|<&-ovm_U}sHx68B6ieBiIiXh?np8RZm(G!sMvrtxrN_JUS z`75l^`~RYRhQVw}XnZqHKcl~sJP|(ns(B|Em!(%&*px(|=T;NXuI|n)uiL>?cui=L zGkqB3nEf`be;lw9*7WXTAw{GHaKp+s?9%~^dmi!NZAb=69v*%43e2lY21A}?**+{zFtm(EhKO0-%b=zgZ^ZP1>X$7 zv=#&lV8{5!FC>6ty!_8KX_y1lGADDgc^qGbRp_6p9`Kes@}lKfpWHiU)!-(#=&M2E$V9u&^-b8#6VpY@hcXbU zr}y~uK>h49u-_ZG_Ytq0GObp8)4Q_lkjZ_k8(?z*$9(ZY_BxO$rkYMF0I`N*>t9mrv7$h9A7r^8@z#}FLO8#IAZJK?Q zZ|ezI#89jRk3?{1pAkJze2|fFNRxK(o55N;H&5F^srkZ1(saWu04rNCN`(jg2L^}5JganHNfitA2+ zu+z`bneNGHjHQ=onB9vT{!9}*v9uM{i?}w+4o4b{7!Mki>guPH7KtCk zh@uZT4wGc-abn}b$j(UWd&REu7v&|ai8H>>;ZU-weEeY|aF08fx|am@B%?0sR_!i6 z8Ogc3Hk#I&6qN38SA_5pVzkUY1kYizy_=>Qwq(B8Kv+HKS&lsO%&MoDHe@U+jHzDv zmk5B$H<_r&?bG6?JpP5T^=lTDu4FU0og$%kgtf6xPVdusi(Snd7tn)ftg{3a_8%Z; zo*>BOsEzj)Eu#NQPzo9h%l=%-$Du>spy^!aI3jgb9PfG}NJSx*IfFg3?_4cSGVqa! zDhMeQ0ajSL)22~=m=K&bRGOg*z1GN5`+kSa)fy9;0S?HvNfCB|E&AYIc$KF^x=rcm za2xP=Cv%BpQwM}7!`v2q^?FS0{HG2mGgzi(H0quU85Cvh{eNVLq)VA4{qU=_N+qx2 zOrxbA_!E@8YhNlc4sMA{wo(A(?z5`L-Jfe`GdhtRvmb0px&lso3+8m`Mh(^u8V@RD zxF$J`f9Gi_f544MqgUzch4+uo(WBoQw-*VKKVKXyB}02?V{|1wdoFjw-SZX6NFG#> zg1i3+M8m>zT6tTrfN##WJbb?wSJgH~brAFqf|ozh20UxHhqW679_{4?5>4WWzIaDY zW~~@{DI+#swzDQH-V8ZKDWLdq=Nck@E~1q3I$ZHujZj&^NLpMID*MM(|N3E-EZ1sG z#naA8%wM-+tehCr7kCPA9apa&$S4%kn}Q+S|tZ2 zV8^O^Xd4W|%XXqapF!A(ySH|NTFR;-B3l!f@B%nf$vq?R4_6{$`^LyG{8k{~@=vz3 z{)+5)=PZGaXv{leQ;Bg|Fc_c=T5WU+_XLbI^!rAe5q@iZ`NXa+U9ej@bUoqv8jcZH z(Pb-B|2C_UEle}xJ$qwiQkhsr$$a!9SpgHbJ6>@q2;I804!Cp$3C!}au!EA0y-zgV z$KKfEj>9RhGuKN<_Nb@}ex=uU?&Crwn1bk${kYjo`9Q~&evDG(NLtg$p48!s$SE3` zzzcd2?HvqV*)US9YI5&cm#j@+&y6Ti%4fr{B$hGBt?!ovuJj?4V!@4xT*aMJ?!2?q zfj==f#hWv#JBt*QE(vbJ8OD1>Yp^_>+8;}tOTcfJ zY6XwNIXU=qOxd&oj|uvg`$`jot$qdWxk?VDO~8-l?0!O$D5g;XEcA`2K4?W1)V&Q# z9G&0u+-q_Gu%MT`c{}@n^Lo(QzXHbXsn$epHM4jXa2-Z)jN_kNd?uv^gd%MzZ>DO2 z*Snl`PPFwX%(j1O2h(B1D^3uPnBvPRCMA!a=sHV>rzhhv-YvEh08>^tAtNEthY*Xd`5sydR6~Uz62`JwTwI50Uy&ga~jG&;U^2}7!wdBti`AXc=_74QML_$<9HkD$%83e;osUtuLQ zBCQH+)hL2~z;~eY%$C^Zr;i*GYs7*fagwfF00PWn=K~PGbGw&Kss1f1+quT4zy^Yr z6;ps5d_yMQ1jZPgCs0M1Cy4I|{j!VbS|W_`5br-oJbGJ+v=ZU zDVPU&AOcG60>5dTa&l64E=Uvb&p-Dp_92RQVdSw2_@Y{I2G5J>ugFR(bwmvA0^0;w zE}O~$G)}$rXyfk04l_FxR`IE{S;a{zHbATB?F0Py?QrGNY_xJ(Z>0=7N&`VU-Rc16 z${PTh{giHw;!=U42>>Up?i;&_{H}j}oy{9lntD4%y%9wfNfZAKKUaa3xbvyif=fZT zVfmIN0d&yM6s&rT#|7NGSDOScZcSwfFV2QC#J9z~?X9bApyV|-Ps1%bNbfx`*P9VNU~j(LKaOi?mE&_3%{^JQ8Es$RhC zK;^)_X>dPT*>G|$W53$taZa9N{V{NS6!}){b5(3`@sA>V{e~se7-v^U6ebNIpTC7L zpX+L<_pyp8x?ntW93*#dp$Q&Yfkbx$mYGx#n}{Ug4%p_mejBRqf^eee3!2`!)_($! zhx;GpS=_Z>z(T^D5mzpD-quM7KWmh@OP9tD$V@?mJCPm2mVHn^`;>Ou zk*EG4?TRboHZ0j$+&VgdYVf$w6Yn4}zM~kB2E**A_K{2I9O$8psj2SV?tz`2&Rs7s z#dNIX?AsDu>W_0GzAYiIjH&LUkDEnx5+$*9Iwvpf#MDX>lY7lXR=c)i4F;~~lP&$e z?!$v~JpPDF(i#?TXGOm>MH@n7Z~c%Tmc3BTOb_Xw3B&R=y_M5CE&FU)oUQFzc*_@o z%7)}(G7yb%jLnpq6qbSfi`?;Qt6ZKHz-9qJ8qJlB=vN?fiicR)EstEvSR+VG6bMU9 zKSfM7&h9BP*5v|GoMD`ALD;+g-m~J_I6aBl0|V4t2Sqz*Wry*Ea{aXJ-RAygn9S@v zq(!8d`dAZaQ*d2A5170a-J|W|ihEZX5#kdwxla8yQhbD8{zA2RAVngz2oi1540oxV zF`tz!EZ>mtnd*5gdsZv^NBkq+c&4>P&g8c)J?;tJj>w^R41GIymUj%|0H~{;KGuPs zVs$nOJ65ZH2&Y54Kt3!O8LK*ijk*yFbxrTJGwhm<>4_Z};l9Un(%=APov=0&@HDBF zd6oPU-CyJ5C9r+qm`O`Zk^MvgF@l<*%rm^5{4fl@M5G6Z6ph;z^a1?ZuNhS~&*+?& z3={TJ2+`gMkR?1Sp9NQ=59U-giaYAlgk=>ZMJ1xc-l7AA5iv@IGmDT0Ht? zf&1B$!cXiA?CQ7smH#V;lxE)1#5-Nx zV-CaX`odrq3wdJcO%9nJ1Eh*L$u&vJmVsYqf2(V+&{M!UWqtxe8`yH0VH&AQD@jWQ z>)1G@EarJ*sRPPKNU}~)Vs0?$G!;{)#t*oC(9ZAnG7oNny` z$Og&NwM&Qy?>bhiJe5UPEY_jOLG~8(GXw<$DSqw+lR0GK2pn;^ik+XmjY$OBE#=_ zn%oM)PPxgDLz0hvZi+h*u_Zf)t35d}5`{<-oeiwzCX;&;W zhc!3BKJCM?Wny;U(+)7&WXlS+pZs*H@u93 z7kbDT{Y6nJ@%97xUsqf1cr*0Swi*-W_v2e?gs%$Se7pj{j$2(p#Pi z({hQz6E#I&9k|Ngc_>BhE0BW+oOgEQAsf!+-xxwi<)Xxrm}SJozXa~AEEailPjErl zWw}c;+l!}ZCE@4Iop^ZtxK#G$4^^#|E873jJ$e2pIAU588$isApMy#sVu96K-_H^z zZOGo3uKhEAGnyJcSM555ucp2hGjFm>-g(@;61-=ao4$7(2;2{n>IOd)-E(IM(T z38|L0zmIT)a1^6BL+$!tH(?WH2u?)5$y#Dkv4LYu6I#I+@f^-@7O6x5=s&YWTtNO%x(dZ+gKSwMOk@kTZGY61o7uCmUV!75$1qo*gyv26b0rNW3&sBLkzHoU3G2LPtZ z3z{260$H(cuE0($cR*{YuWy%}Jyv7Cil&`qlZ6uTXho|;tYD|UyTy`k8ZgRc4^vpI zf(h`D*N0{3Ar=V)N(4$~HHk&dH8n(_eB7;dYc1=1`!%2@(0rlBYqc+CuL#|y8%B)l zg9~I)0?jV8p2p*$;a_p-FONcEsc644lIQ#D5K?slk!w2N0&~V8Wk~yZM@PT#i@ox9 z4ANEqn8?uZ?2TG#{Z12h_$1zA|!Nb6+#n zBN%BlJZxu{e4AdDa#~I)?T{*eY&fF!-)vmQ$kwj$+&KilO38=|^0Jf{G-OPBTHB|R zkb2{`EQ19kB*vElgDr&l(iUpVHc361pAW zHRRp_gs=n0`5u!YjK_TifvGL*l6Y{CwxffOhXrxhe`i-sJErCsSn2)$WYw1Z9+90=fIKfR`Ko0UNwS^w78j-e0#1d|tu$ab{1{UV$^$TofxGZ&VTSdM;0z@kR&A?-;mGwT1*0JXglyj$ic&-V0lIay zwpQB%f2oI9wTz|&qnn_0{;kZ7abY~n#U8F|6ZxyT0WfXGkzFL9q^W%ll`bqLU{S&a zus>Q|2L@$PkpJE5BQjrmf2GyMo16p!igE(owVdPR-@_vweBIvSZkN53B(q-+HJ>-$ zk*%(plxR>$L7s9dtj335nT;Qhte;la!+^>q`%5r5TX6j~6s`!*MSmd-YGSVrpt&H& z;(EAQtJm|(`1DfW6eW7>QZh*vlPI`OK{^+5CF1Sr$2n@Oo*|?POkuUN)tKjIIq}y2 zfsw@4yrF_ghu`i5gCKRd4odu$i61S`{pUW}^p443yKe&yC)K^t}3 z_Dh=h!O8s?v3If73K#kXgEayv)F+ zUuULa8T$yYSB%yT11-^?|R9nDh3E~!CKqB8E{NqZH@N7_wMN= zd&ndLAqb?RE9D2bTskn9$^GypylIf+%DNF1?N-(L>sGo>M^I;)Qz$|{1&lYvn#$>i zt7T^fB6s_d_4B#J(2`mrs*^#;mz#4H*}VaSQP^h8M$~?iyqnhFguRxP=b6CI;1eEP zF5d7cxHkScS?C*`bNJnjYzB^AFrU%b(L5EJ?(G4o5;Zc)X}%OtY8mwM;}2 zOsFR#M2WScitbYe1#Gj!=2Fo~|r|$~E+qvc~4gz7b^igRBDa#*j zhvD5Bp^T1!5ZJhh-?0A>3KiIgBz;?xcHkF5QAj3Pm0x=L+h-T#xy<~oGj_`b@aI!$t=8J+}g#N--kMx z%3EP+`rkrO=Pb3y&TM@~$ z7su}sv^s((kM0j21+%tvz(``L%9MKVUO+?t=<~luYlH)mf4j>8a7<@BEw-eAKKEx5 z#(bDKu&fC9=M&B#4SNS0ih}D!9Vj1Z_42RS(0_Pcat5xB0mom7RPQR~AV5&g3=vs6YaEH^;f-BjhfE6B3Xe@VXny3DUfKrC zE#DGX9xU#bh+|&D1u=g0bX5_n&4gYIQKt!4H#oVFvTjUItwZMry3)0X7txJ94>6Y4 zOe$-S@;Fh3(R+rX^_Wex$uRPm46v8L0fQJ>2o8b&j8n>Fr{|7rH+A` zYPW{C@f$1>_8`1mC-%#JVC|M*2cQ7&&`#?6F+IA>z1%n0>c!}76?=99>lnQ=G#IF= z?JsN5FJnIJPlKlx)b>>nFEyRoqC}_%4~UM8GGE=S`)bc2V`Bvb~-Uqb+zNtVqCPwpTe1ti}1GF_!2(GzQX7RXkRRCtD;Qu z2H<4?w%Ey4qV*XJ7%p_dqRbhytH@%)ZxKxyGhc+wf@x1D6QBj1b_` z3J^HV*H00~%0pNxRm*YnLJ-Qd>S%!yMB!{#J{@&K^nGCj*zSkoV_z)6y-`R1ycHuC z^qSk^unxF4PI32s1~t@nY$z{xAH9>oOP{-aSS&AgyjT_xt2?Aq)08BiAy}>-lH2Lm4TTm+ub|mu980L40f;Nx3D8&$xYUg#k zGq%>4vNs=vpj^g^-Q$S4CoD;YxmELSe;R!DtSo_+@Pd5V_I?Gbyuo@hC~9)7W2D#~ z49_ibNv>V>iG^r)+!)!iYdWSBIEGaYSRQ%bS7Z*`Hiqk;M?`A@Sa+<$2I4jN4x*^* zAe-M2#8kX6*#br+Pov_i$)~7*wVNunMAwO>}G>_*SXmtyXkr#ssv%1S%ZzI8fq^5gF3Vm0NBL49MhwcNP-(et*D zaIn`a`Kdzq?31wKO#MRdMu&2O(&E8BAi>7DM9nrc@|dXXF0>RxL?EKlD?=6dh792N z;Axk1C|3~%?wCG{v9^D<# znTJ$|ygD!XOOGKnucX;LpBzO$Yf$J(90~WElv1^21lP+Q5zz`gcsm`D!gtwuEof$Q zz5-!-4;dutUjr#}=ew5k{^mKoC|LakBEc^+%ML2c~~M8Ntw*vDZnhdBxVemZO99a$F5)r z^^oJAZy(wgs~N=f(cBO-bKv56g73lZod;22E-mjEiufc6o>g{Mte~~M_(raxq0mMb zwx^VNxGZ5Z7#i|W57yc=flQnHVq zrorTo)={@Y-Do5#)?*C6MTCDQEi`)|su^G$8h$Q!ktjE0RoF~XzpzzWi%5_ zJ$ZFXDqRo+MO9zRp|T}x%2YH3JVcf#G*rf-*(sqI9&*^}2#kbadz8vR0HrROX+5ex zx=LTwgBM!czbQp*9)3@*s*LMzETV;FcMVcw`<5jdJbsoq&j$avAgK0=Y)_o5`c1_V zvZ5}Ql-qV3cGT#w*5-}#X7k*kyUPa;TPdL<=7(6nF!H_#YRFU;0zqr7QO`DE4_eg| z6b`tFEIpcW-~O+Q!{Jt(rgBwegnC>k=%xxh)b=s#ViGL0HaQmFKL{rpxqr{EpcZ28 zxy!M4yskGC(6#6Lu0UjE?ClYD+M1NsPjHbPBZlpGF87;FS6ZQ`IVRGNWcQj$Cps%C8%-B$EUu6EqU#E!%0!Z@V~7TFuNsp2<5A$9 z!t&-G7uTZY$e^x@t+VIxiX;O3d`ZL9!KjTtwMzNmpPp|KYnLubg&A+@APXS-2g$$9=wYvK2TLkYx+qj%NWz=vtVgT@WO`E>imUKH@AxBr|1u5YIl z-vZB%_W{4B4T!aPd<86bH8f5anwC#~v}$tcyAugBJy|)(c@)YMK}k zBEXuz``ojE9JvDtRAf^mwKi7>pezZ=TCKw;x8y*T%{%guuAt+roVTxth(cQLR?y1b zGCNHvgsQz`HbpJRBYM-6|CUpEIVR{>(vhq$TB_iYo@>EUiwA|>PmkWX+i}53FKRM^m_0%+0N?FCr00M^#_5?1>#`)sC_S4`Zw3+@tNo-KbvjoSGTVHHDy&P@U+6 zwM|Amyt=GoQH=~qN%N*(C8Uj(hM;~G+*l&2rfbUjOh$BODa{<=BfOuS&_Y%?Olda` z-|SfdT^Ob`3ukD}Q6+@g>f7r;rVOML8E2oP(MHYc<{s9JLKM*@GgpaP%CLCbaNGS& zy1*)QqFUoNttuw-LqC_jMgbhR*JjXvO;*FkCeEVDKIH*E{Yo)UZ&E-}CSq(r=*vI* z3D9d%u6gW5YjLgawBkg>7*BX5-UU}=M*Ux;bWBY?i3c04^4Ppoum4n{DSS?ZLTX~L zHJ*(a^`P0TkzGM~!SZJ|wIRfYwX*2O8&+)q#Ds1bkN(rQyO5mDk%hU{>DV$=b<8!u zO-o{mOj5|W^^*g}i;MtyIKNrTs?8h9*8x^_t)(?X{|g6h0XI6zIGrwb<%^SN>g})N z3rB@1Q-#^K5gNji-S1?qwJ|-%yJlXc#B5eT1|F{DX^=>9-HSw*H08fdx*+6Z>P#n` z3P@!9ts|1~ajNX2YeKN&pmqrZn5`F+La+mY=Bnr@y#rAjo?B1xM{T9$bc7^a1sR#v z@dydm$3^qKh%QK>ph3o7gUL^hYqfY7uj+&!KQ2_d0rGKG>V(OeQ*P&@*kK-nWihNj zEKM%`b|KU9Ynjvkr;Sxr3Co!=q$#as*h;`(;cW^3rlV;FL};>_0gXq=7Gq}}le-rK z4A;9c3h&O3@Fa^-y#mue#aK+vPnW4xGBshLK*e3c2PS+fc3mZCMI}>N6$c45#%y$0 zoj(}iy${uWeG}^)Vf;R#N$`3i%55gZREq zG%&P^uw6`5L`uLA#9W;PkG^tXJ_AyNV=8f^NO=9}4huPom{M9uC1J%9w<6MEp0wxL z{y@dY)*=6=?{d?0x$c}Al@EY--jATS#-5^z`l0tgeZIuGz7;B?B}&eD5RUzKqPq|M z`>4w%3gRFQ-TaM_YJ-K`1w%VZC&XnQ%3tgtpy%o`BEiOlT;;fC;HAAYGP}gWt0<+= zz*)X~?ol(OK3&h>KFRYwx7{aLg5eS%cN!#R=8T5TT0<4UmcmqNNtU$x zh;jag`H;wAmIB0}e-u}P$c$;07~0n5+<<<6sM-Ee7-oIwc-}t8O5lMGWTAy|7VyeJl6a%)ZIi}2Hb$T|9Ml9sTmXx zz<*@ebqv!Gdl(6S{$NW0N7AEScLc;P6oYoMLphr{mi!~z@Mhh`yzCob z$M9}aI!7>c_M|fmH@bqp-XW~w8trm4Oq3GtKM*eet!TpiHvGxP(Ymu?Ft3+|hdUE+ zoX1IvLoPM|ztyTKAAn5#;fuuv-8^|!1IFv++cxRzFky*SUJ6^hJ}+@T525LT=IKp{ zC8Nd9=(^b%*e7*D9?ZnDI!;&iiO?`t4b`q+D31*4qWjyM8WyNvx54=Xgk$1rW-! z`NaPtFD6x14tF|KZ8(6iixJs&c8D2pLSt6s<<~Aiv>yX zxhyBE1|F!J-(Dp&^Br|+EeF`G7Ur-Q!kuV(+E`YP*g_~}Q)*~ikH9pbQXe!@jiM=T z+$NU3yd5nA*7LJ1?pb*hqf=j&l36`B^D=Yk@`cc*sQ>Xwuecl`@^VgYQ(;%(Xs>Vf+lxFeH07mMd3%OcFKGh-u{=xEg%{31I=jX%eSDFTN#k)S-yeq4LT36rtlYG*HMj=%~gz@AmD9*(#|q?Z&*LxB{-WY!Aw+M8tas|Q&|>nFXW3eVdh zw^{Q`I-W5=x^A+4VozqQik6NHZ(@?F}s_bC2Y0D#k{DVE-wp`8-9EvMu?gJNTJSQS6<4dA^5ZW@SqIblF zEIYNQD#DIu!xsOV={m;2#~BmYA&1uc2r)7+9IdH6^@hSRLgz$mISqq8rl$Lu)Fmao zoKUjhL16~zZs=K!Om2yW5S`cMU!9jb7R9k%`OVytw&U$%EPhUWt~PIr(!&Rt??wF) zy}ZUJ<)RLqjr}9`{UJ;jf~li|WJIh@C}Q_i7XIqT!tLf^XIl91E96&|QsLa>F>U7|LPBj^xJCIO!ibEJ5b8wN1P+3}=J}~jm>l|DaTqaB zdrGJ-pfQhVqPqpeRxT+#qaSn*oout8X!79-c(yN_H-SsBExW=K=uQO?wM{14TICL)sYr@KtX{$Q}rSL#SV6%7oMLjDe zs9vS|12{U`MnD_)3uF4UMO2Mo=jN4@$=>#*xd-;Km+lnl$e|ug=Pn|OcjG7!n_9>nDX^>w6du`LFj8AW1M2z0vAj2aPMSH0n4Gj9uq^!wJME>M{pAa7sF^6c2 zS{8AxIoWwHzzDR0+~e#W@;ZS2)zyr&O7&1K4n;^y#9P;3XVPGKJ(^lwDKVL^m|56i z_HjC4u?7U(9}ZoSPdA3Q$BU;%TS*sAHeHU^v-G<~I!5G28=THF#+@rB-wffuJrqH) zWx$xC$zC5Ik=xY)*r|cn80F|c>a*I>Z^|J!PHBZlt8F^Ng-A0g3f=*bK2`gZgy~92 zdmzPJG$lCtM4)ocCuUfA@hv}iU;>%+LdGEGAI;R<4mZfDilK0ezu<^m!OyzAQ%g&T z!AK<>?hhj8K-U+gNe{JC$rfgdODS${Svt#(waMI^DFKsXyg^nYejlIx1%X7Lz+hre zw~k0L|J^vkVmi=5I1I*Ixn)G1dIm^8xG1ncFzjodUqTAaJ7y?lKS3NybrjM6#jyi0 z12a$UWB<4Pa)$>e#YZ6LcCm2W%SdKdbcu&-&2fPCaw{IO0a|RP-e}x#X1q=_!8<}KkOG@QCKNI`KNg>y6xe;e-+3JNH0Cd1o@;P2WDLM)EXcQtVC;C3%)S~pv0&Y432r`h^+I|de3Cpg z6_h=&>BmsX0F7sHfhx|)!Sp{0wvMr8|8C5ozVDM7<%2Q2frv2a_36SNVN;l0wr?c9 z#9vNu2nRe)@uXm7oCMWYs5@$e5C>1f@cY!USHdS>Rg$d?xY{ofz2Xuhv6DCXWHw6d z*%|4V-M7V+fm(pnW|mo5bToa{IwKZmlsOHoClF!7;Y*aHfSth@AbQ}M=haKEO>Cz; z2dA2L`sa25nz)O}OWFTP0oI9vE6$U*FXPUaGPFWG|6MWFrO1W4u@v@bo0`5eI|68r zXlY)ai;em16a@3K4LH4T^_3J&N%HthMAL><&=N-DMZ32suhD^!GQ-c1x^!q25I+Caon)s%^Olf1+a?sZI|h*TSnizIJPXGOQRb?CH^YT1plxs0}eGED|H}B(cmc z1}@@{51>@9S~S5YlXFy?$OfS0LuY7}%>mF9omW9~VaWxVRMQaU?lMRMslx+oDU$*m zQ)l82mI8Q_xfT;W>P1Hmd|8|DH!|J;OFNO0o?w;NB>P{*rAQvu4rjoPvSw~?Df?h} zoguxYQHZTP!m~qNX=~2@7sQ5xox5=<$vNR<-6di{qWB75Ix&OImQM6lJ-Any;ALCL zHd;{{?y>|RFbbV?UlME?DyOr9ABu9%(k`M9yj#{M*P}-WWEKbz9i8f|pH#_<@wwFb z*8O(AwvYKY^M=OnPGUDS@XrIG@eLI_u@moL=wQSMA_)7f!nfJ?Hyu4eY<_yfF5=yG z-9*X>7O_duFkQ-Y?4n&RF zCA_h(FX%9ZfHpSrZ)Cn;&Ha{+Q=+gJ@J=DJ4O5`-Stk^jH8N>qPksKOU!0z}^Uw9D z>4NTQSx}Rh9YS0w^u|%?u20UZ>8n(gt`xp`g7&+fnaUxGNXb7mkUCVjU7fw#G>%Z$N3R5hYY9f&0zQAkLx&c}4p%xo3 zyxB6xf)upo3>0e^EdmkyKd9V__13Nqk$Dah`qNwI?Xzr*`^-hZd zJ|2oP_~}eU-aC@URM`B&!$J|3dvxIDNTali-e^*yS<-nGzLUpEcYs+QD*%)8ns0~A zDIpdiNaD$D!)PJtL$5eDf&Dgfz^AJbcGTi%w~9Un-Ym2V`iTha3Rm}M9~d@-z(T68 ziq@++Rv6Y2yG?&jNIysxy`^txvT#`j3S9%~B|dyMqjZd2G?P~qqGC>NG3c>BMp7Va zUO6~BV-&X4qZhe;zyO|lz8YQaWycLg39%w3k@prDbB}l}8V5;DrjJz(kMWS5ns-dp zfvUyUh|hu@f#v|rK#|LtuFVST?*eyS)i>2gR3{3$l_xG->6FE1=R z$X8NaNjmcwIw~MR$WANwm-$F%L&Xxr7WwDG2vi z>z*h`VV_D(+A$7_EMZJRBy|3h^kt(c#*=V6D_#-T&$a1C7sxB1H|uZh7&1F#b8_{+ zO?JoQSM*^3!*1q;=}^qAOSUeb4?!%^5b+{eD5~mnJ|fPI9v@-+QGjh$vp&d8+d85D zEd3Mo*v_3O;gERcNP#a;RV-rgZyqF{{84nh51nd8^hs z?WSSk_@=QNEp!&RAJRpsp@2R}Ow7~SUU-8(+wbj1eVCH3M036g!EGm=#FeC`gf0^RA3&Nab;6DwC2mV! zJpjb(Ccqz*7krFNNU|9Uytg&G!sLTbgMSIFtJF9&VY{3_26g+3n>hV?%g}WWA9={n z-O?kZYZFZDKYc%XfxEdihc2!K1m}5^SpXEhnHwQI8v)D0ij>s(|{RLB`DY|Y4PD-~P8f&H2>w43fw&vmY0aj#B z8p0vW4FvbRybZPUiFD+;8o2P9<>_%ad%BbmtuS-+1>&&^4%1|V(xsoF1{S^ZD8B)e zh<`Ycq6$l<68{49(;6AGJ}~ThuhSr{623VEUb=vf`jExv7GJV}QM*^n)o&_8agB2) z6%j)mE}YF(mJY*afZoIZtZNEq)Fg6_U~=YMO0RHRm(b3_tgYaBGee@{y^3$K(wZ6O za!`1G#+Q5lv`N<>d4kpXoh0tgc^XmgKM4ZkB{Xrh+V9;$7^QL9Aw^Zx8PBu0n zVLat6&2m2OCt_NKy89<4*9+CnxS~Yrn!7#W2z7aQ!INh*R435%NH#I&)Ne6dK;hK>Q12{`-cyF6os)P?P7N*! zRw{LOQG)|BtKZBm==HR+bW%?+VWL?X0IQz18V)?iiIJ_8iz`{Zij-^c2B*%qB;+=A zvCT%~TNiLT)Sa?CGl&lU_~M`}1Rf>$gW6}q+HxTP(QTQPW;PP~SbD(Byem4?;>w)- zby4ZfG>|aHDZ3ue(v<`%jJqSHG7&Fk-M)~q>rP6b_7cxsVNx+$6KJiFAf8yL04_9d zQO7l0#<%t^(xW2LuL_G}&xE{1%Ajl&OEe166{RF(v=UOw{%q#$>3%W!p<~ieoj1>` zJwh$wlB9&`k!66p#&X(pMJuFgh3Y0lobZ}{96A29P&;>e8WIwevZKAdZpu1GY`3ka z$bg;A<@*+frwZuKyZhl`L1nS0-DUl{h;&PB)+g+2;~)d@9JgCR)a-u)LT=|7_F^Gs zF4g92(Q-X{3d>!=(ARda_*$YovK0N|9dkm_$8xk@FMB;EWQ~$)wJt{%Fj<*4o`86I z(c1a@NJCe9G9{GK@skN5#1&{9*W1tW__BX34;J4a3`mzSByf95M5e70n-TJYAhp<* zR-b=1;_+uTv(AjerQ#F^>K)JwDf9hnvh#)`M|~&~QAHp>caMHopaUU43>}M|OkTj- zSvEIxvoGLfU);Ol^r$J{qxr3c;0SG=_jWw3owaVljAz(VNN|~g?3g7Q1|)p+(7%oUOZgmA&bVM?+?$Izt+8Z{P#${Zoki)7u8 z@?O?kY9k+{-yT<~eA^JHk+xmUUm6GRmV{Gjy!iG%3Up)j_TFNPcbMb5B284yS% z`?ImCqqf?Tqx2#Ip^q4*nUfZ^fAB6#i%-Slx)~199Y(4uTd(1s3JZ;X8w)ByDE!byo{n3f}63TvFu>KHGbN`Hafg{!G8q_ecMSuzbGS^?k zvLEt_QIM4Yz1f&IdF{s-3%+f`rDatPw5yM&Z5+&IcY&d*J>ZpIytSg3eyXXp8* zZ8t#4=N-EM;Hu9hP#!@pf-hH-%ND);$k+r4!s+I6t3kAI7Jzo6m#(*jVsVg;xEwpK z2R6maJBbW~GbO0xL&U6_ zx)o%f7KadH^JSZ^VQLn9ZUD6{3l{{~3G6UjUs29EwiLzd{ZC-B(=f$}mUv z@1uvqyU~m>V>BBtzEl^=i{}#0!6wmrLrY;*xzTF&JS2tHp={s^7cTBnk8PgCrIOK#>lMT`?jLrBJ)XA;^nSgdcvOF4_Y^0p!JeJsT%%U^>25 z^c=F`0xq-hK7xkb>m3|dJ^{3Bn||Bz>=&zD`O=gzuU3*1(ztgU)~U9``?4PVDUj|zgT0x&dm;2 zLS#sPX;Ch(o-VY~s|k8a8kelpX_RnLrCe9hl5f{E2@dHrP-Ur ziO8VsQIq*KQk!}P1{)uKf6KzR_xB3!sPl3dcco07srQCIEv3A2# zI;*OJ+{+8@!*}SCTdYcEoiJ;g&?#hC6{6CJ<%omVt@xqc>R2C!9qv zXqbcr5FDK9KWk|9cWzdVawRkwr==6evDkF0mMh5JA)4atXAIrVgCR|>=Au9TaDo~9 zVZ6xtPYxs}_rXv@(5pJ$QX~Ca{=!Dc>qPP+5?MF;6z4wpMBf6AgzyZwCXLd)ydBMg zvA^D@RM0S5ff0FEBXk3DQ$Y@2Wso-nD3Bf$Lc^B$!f@*nX#fO6Mw{v($TW+X~n3ts}I;nnfKnlgu~8oDIHHJ(l_v_1EH6F(F_7dK8=3w?ktgb zAvmvPS?IgGc>*)IQ^`1OE1Ghqk!3;eS};}q|MaDA{)rnpGI=t31PB1*0k42AK=7U{ zk!MoI4zCW^Gq~mU?TwR7P#b(VBg2Y>D2R@)bJ&z(#s^V zE_Dkl({B1s4?A?p3DXe_E9X}WZuXk`lBV7B?VrIO?cqPdDl1FB^b z#}q@OaHyoMtn$0{ZzeVCi!Kqr12~&9Q=@k%cjbLNf9Ty-)8@2X}#w8(sOoe zE^Em$2aITvEibdx7^{q?laoS@=B-jD82#z*sYQsX!laKLTuzYUm-#S1WY?G=!H9XI zOpD$VykE}Ik-=KqmID>iSazI}le4nO6pWS-53~Ln@EoRjdZOy>#FA)e=LK=-(n^-5 z0Z9WZ*C|&?M&{|XMleacj=h&S&n0t{?5gdUf!%3(*=x~05Z4AjkL;{)Bt*TNo6S-v z7=Gm$lo!f#U`kN)BBDz{!CQJ56zF7QBxqpx#Zd(m=9V%Qr8~6b$3Ph@ugZpcV4NgV z3*mPbTCzg(OqTaZI(wmsBA~C@@Wj$n%&Z4tE*rIqQE?|LEhiTA=aIgTe;%?RVo_#1 zZS~ne-(`WAJx!@|+PT6qWF#EYDUkG9&$m2_`dP9u!^m!g(Xqb_8DykfARS^ZS|crG z3dN^mXN`uo6KOyOI>Iq%CiO`h4dnOqXFX9%gs0rKA{S-1J%yw?jr;uWCeW>{pFC{* z!7p_)Tt*e@;}l&5ivh68P6D2#Fr@Cf<@-b~i?rm287yZ8k3QCY#>?Um&W}{&+Re$Q zC~s(%91miO(=e=zR-mz5V)SqF_>@iA>46!5OLT@ztR+o3LY+*Ep zYD}Vnx#X>%=GM5e{0#j`C%_gqpRwB(+iV^Y`M*r!x#vA)g+>ZRm>ExXibS=}(3>=4 zqS)fTjn�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

    Ii_mTGLNFArzT8Ex}N*^ayeS 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 okdfs7-sT;;kxd^Y5\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508110002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508110002-Diff-Config.rsc new file mode 100644 index 0000000..2f71c35 --- /dev/null +++ b/MikroMaster/history/20260508/20260508110002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4293c4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4295c4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0