From 2bd48df0e0d676479cb667bf067cdc418aeb1cad Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 00:00:52 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 00:00:52. --- .../20260509/20260509000002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509000002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509000002-Diff-Config.rsc | 20 + 3 files changed, 4659 insertions(+) create mode 100644 MikroMaster/20260509/20260509000002-Binary.backup create mode 100644 MikroMaster/20260509/20260509000002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509000002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509000002-Binary.backup b/MikroMaster/20260509/20260509000002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..30e9de6eea06693184e0ed3565b2050e17fef734 GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXKy#55K?&yI^SicA0`DptGz000O80004Z`T(2&Lur`0H(&T? z!)Z_3n=jcWoXa`Nib;#eRP~c%=!Y*x+Z0nxq*p@-s5_!rf=vz=d%U>IN{M)!m8}J^ zI)*?u>2NqiH%#Z)DEY98@Ge!}+@s~aI|Qm8)QDqMUYeNSq{M3-Gjjak)M-fmI1+AC(bC=bFJ3deZ#8Z43 ziU5+_n%|@qvX&vvvUYBW4-}RJr&`P%srU)USv=hy2;}LtFsQs1P7KfsefXoTD2~ly zLZTZ=w=a%+w@9#U@WUWiFO4U3<)pWJcIeCS>QfVrc%o?>FQKA*ri_`6WeOZz@Wj!qQZ8y5PlLpzLahVVtU>HuFB8jn2AX(^$(0ZiBQu`jY@H9@Y zWBFS0?}2UshhfS8g6Zy$zTt^y%fEC_FSEr=^%0!J!XYISWx5GQCJSRWN0-+778JNB zMjM16zm#gkSJzad%k*tC?pK#(jLPGlqUB$vna+3@ynU^b7hK};H`z_tbmACRI0(oB zKy8zTM(yvzszs38g=*2^HA`iW2o6n%s3P-2zQ=8eV4kqW;8wpk9yG z59X9@r4m!5Ft1g*;&6E}@1a-{dk1_&q8*QjRvLg-!@=+L1)Fw`bLjjEOZ<0A4#AvB zLcoj*ImVFYJZ`u2V|+SA7so9(NW>#WVQ^o}l%eA<;3CO+tP!&bZXP**C6bv&)mwO} zPO3P6br|`fJkgBmBQxqEvh!+T2rw=l0-DzCrV?1K|C!45!YV|Ks&yzTpGQwRzX6;7 zT~g2Sg^rm>J2vv;FcWWvOD4u8hj1y#<(6n>cIBaU!WA+8a%lh5ILH{V2T%q#F0Q=& zqKD>)+_)EBX^WJJUIONw1EJjnnG3`G<{$oWrk$Y*NZvzGvNoGkKO#B@ZWffT zvU5m^+vi^;Ok{V+3XbiyUTn?I+^l8VA|f zCFdcpJ9yVqOMsL>n1`f`RD$Cf41Jn|cRJnxnB47KBn#zu-}rlY(f8^ltSh*-brphN zVG%4Wn7MBtTj*PGyY4&eoA{Dg{JrZzJpXv?jYDQYaC!IXSjlb1^>8F?0W3&3XbLro z=rx_{*IAI{fOXB@CkUsOKum?XHU$49u1uL8WkKAaDU7bJ*pL?ztUpb$k%&wfIJQFr z2M4LcF17wG;Q3>)yv(ua=X_f2b0(0sdImrjV;cZ*)D9yQFBdOP9~0c*mcj|IUyPg* zv3^9h$=^&lZjsAu8KFBsw^(siggS~k%PvAmz!KWjIbZQ7hsU|}IrOs-vv%W50m1~V&Z3T7T0vV2X&&$xWSO5(HZ#A7}>2x>{Pho4V= zqi$4#TOf``u1gb$_EiiyW9F|MV#kh@dBckK$zDkQ48727lBZ9FO1&TiG0)H-&;Q1o zM57ECZ?9!o`|(n;tD3qoMd(TJs=jsfbfwm@`l)-Z6Bq+Z0r59!n%J?@PP~mR_QB!7 zYJqouU}R&!JHC#3&3n{}=zs0pj^g)?Z9G2}4y-?y#h4O~FqHhW1RXwhhbtKcy+7yv z$HY>hl$g`BsgAcb*7Lw#0Sq7JC=22_K9dy%DqzB1&S8{jX4muiQV~NBA=*urg3S(7 zwWAC8^P&zpRK*Y+P$7Jg83iNV$bq1!ybA~bwm4e-y#)aZeFAhtiAJQD9 z(w?$snAl_H6JoQ4n4NLpXu7i-#iNBg)|7pj1<;4H%sBnAVOLQ=C<>xWMO{cw zr%x8Zs;p466kR>V&YhfW=d`4G5Ex97QoJ;G8uqabk+^HB8j!)4Vk%cYwG_ha7z4-K z>5RY4cdg|^{q;xZ#g@zY?rT=<;F4YS;;+NN+H9mkBE&pFEPN3EkBi0R=tl*=ZyGeE z2V*yDTMCdY1P1Jw0X*l_HPR5@BX^8gUvgZzFvfwS{zRblqNg5OAepF@Rh}Vyq7XB| zlN}>N#R3}F6y5jWupPn5fBgv0JhYB{Y}*#5$^WYy_AFCPQ~sd@P9z<_?`tL&nT;hv z65bM-3OboC%+0*+VN_jN?uw;hOCWGGUOV&BMN}Pk;g@?gv~|N$xPpeQ+*Ej{kY4? zrVC*u;bATOFIp6k9pBTDm-7PrssjC!m%Fri1L|Ti^aq9N{)$JVjglQ#v6$>U9^WQ? z7g#bgTGR+eUg#J9oakoD#R_^yJfV9M=<}8ETq=|qJwRNwULd;*R7k7=f_X;v*VDh$ zzrCnaIvm1(98)6$jX93<6jbP__(8r#{{N5~v>sLHUhHD^_3f4E1Ii+l0#1IgbP;dB zXQqn-gPf`G5O{1I>4ga~Pi|=a+m~6kV!fwbP%jA?@$Qrg!QL=va;WY2rPC>m_HS^# zH*Hc3FGQ(Fg5O$*DvCFd(|Sa1+tB;2!|EBHf(#6eN!yA(9{Pm2{}uQ8z9>^XQl54v z`GeVPR0`t|O$xI9*5i3;0Xj{9?Z`{+AO0N%S4h9Mt!}dGDfqFCRNKbC(5L=7>B`37 zZsX_b@+ZPpz-B%beH^roaZIJfdejG3P1C%6q2#3AsrP%W`VW4F9@B!(sxtao)C$I#9)C3j+)HSVZ@F>C9^}0^j?m5kYj*C%!HviZBQc ztWNNFSEda7F0QB{#$*_mWU`r0%>Gv-7lCIebiHHm4oM=^$-@Pd-`gIqKm=@L2(nMUmw9ZxNPTauThvV;z{SaTT{rm1it7&T;_wY( zYlfK!;GB|n3#uXK^<^(U9djgzTKbv>o|~qhvYoinz@cdG)@`Kk!hi|g;3hiFmrlVx4r0d&-#L$69A~e57y)>3@Ys4s zsI?v)hV^=HoDPx_l|Lp!?PnVC`Jc0nFyHDh8CO8dhN-gj)~g7065a{%auxR0=(^g1CHPle zQ`~vm~aR67A<7rWI^c z4V@yqA-xsAUVIU7nXlsz$%9()t=Ti7t1~4EzSBk9+#42K2=zBxbZT402z1UN1oBQ9 zdOD75tZ20nTz45&6~^E6blWluFqfh(x+q_P!JhC_c*^JVHq-S4*?Kj7Zp}Mi9)2v} zikXP3qmO1So#2D_Eaq!{d6X?s!mEB@yNbj5*!=srM|>01A%T8$pBVY zk7}z7G97I$KI>Yrjt2Wz?E~|qc*(~Msyco(;`5%8QW&~nr2<8Tq(%ic7^55vJTOIq z)M#zRB*f(4Ar$?2LpyHdMv zp=h=_+i(;b;#jd`pS~l@S%EE_D`iue3FQ1q_8lOUtDLzVI%yDMP(NR#I-|nTGo<*? zI#Dvmw;ZnakY+MYP@>bkkhge<+|p7IZzx+L+rqdj0U9Sfn_T!$5pceXTx=!Eu} zg)a+`Sma0`4PIl|PwF*Ri*<(9`F`~DM)~UhJ7?sAJ7(#FqrP11_abmDQHeH`#v}f@ z{$uNMbDRb$G`5PTvl*mP{H)aUq+(JS>nX1sBo}O?a)w*saTiSPhnM zBY^a%b6a{rx+n1g3|QWlQ(tR$VpY!uuCRJKPUB~sdt2J8WqRR9NSoV&h^fUpMD~$3 ziRI493i5eG)5svc#B{(Gr#Dtoln3JY*RM6Pq@fA@pR@CUzLoHm+4nI!LcbE8*&UtFI@s}G$eE^3mL$0|wWQz3fXoB4;b;zShE%Jhz z#-Im7;_XhpDki|lu5#sG6yh@jY$^#b94~+d`U4^>C!J@D9`22)R_8RDz%zWb2JSAx zN`+DkVwXY520BN}X8YjOfOLIQ<g-;EwzlPk#M?W2F=xYJC^hu2++ZQHMdNPtL7)Zf?IbMxYA!8uK?tgU ze&c)B1EkwlDKq?iq9+)D&c@(G)3-<;;@)q^ClXDVw zB=z>!u~@DY z{J@?mAhWc8*!pP0KC7G|*fI5~Qd3A>OC90unHAg@5anA0pZukIxLvkG0)u*Jl0REI z<;}I_2}Le(qw3fuq2YAVf6J65V%r3#Krs6oYCLsY*b1)RpNha=fA^Yj#t)!`AZd8Z z@o*z~ucAlVuXdoB>N$>>EcB@^TK>_JH_||?t))H|+V@6Vl=k*91Mb-y49NcP-sj51 zf5l#yJKC-jP}?q*2G8|{9^Zh;TgiiGcg1jv>*^$;Bsxa_^$AQk9fU$6MYtu|-jqNG z>|$i+Ocicl{qShBUO4(4MZHe*F`7yqP=z@;U|?Q^r01T)?G3E zwPnoDRBV}Ek+Ou+Xv-xaAEeG9Y}wN`FGVIN zu}3F4H#Ku9jE|?XYP4vNHf(D)E-3%K>)EJNfH31WTm{h)TJ4?MN4@spEMK z8Rtuz%-Fv685?LcaB0w5qXtH~nWv?XK~-<+&ZZB%JwoZ54G#tR7qE2s<96j}G1sqT^MX*A2c%h<3JkpxAt zATbg9yUpA&?BlY6(0YF7>=bK`qz82*!t8P;N5VZF;nqZ*(&r-|7p~Xk?5ul52p4`# z`IKvr4#19GB7?N5CTBOxE;eiH1^XD5XKl_jkTFs&&7;I_eM=L;P)_NnrJA9la@e`a z6FN@YTOc}BR=|a!i7%nFL{|x@lY|}*`X^eQA=O#*3JY1c6I|LT;Iwcx>$VGhWss}E zsaAne z^rI!pfBDtYIJ+$`0^Vgb@RUZnF`|Bpg`~K(71&ueAdZKbeRN6%OdBMc?m#aTWA%8=m5y1@JewFO5Ix zZ`a`s8_2Z8|AMvfS#D4|G-K-`#a@K|a}|C6)<3|FLn*fc#1|&M$?65UhIspqg>IABgG4PK8C_mVX({4Z zKLP1|Lp7TS+E7_@>ku_0tou^GUjpXWHyE;`tK=mn94Om6wyBvTS{R&Pf<6dm>oRH=&}U?mw}6 z=hP|*O;H<=vA(fbCkpQn#1}wF?#1TxD51M3)N^@dUG?xzAeV_fYp#9c3rRtTw5zAK z;0uAqb?4*v#OHWA<{}LC@2zX~ZXR<5Z9_IJEz>iZME>7&?v8a{M|8vbY+K^Q%C*7( z_^iWu(+;xLV%KLey$4oREay~VrdMEXS3U&(m=$F1<7OJdB4;_Ao&D1|APAz?E$NU^ z@(K2)*0UfihU?yxoKEv$IZSZ#9@C{nXcn49bLKaDUxLmE`M|QJctNRoKiVpDx0$aN zP9?i16EAMhcr1BnDx85&BUZEnNy|mFDLi11P5TkN-UZ8{tv2N+xE;v<%Z5S;k(Js< z=W+JcR-GpVfNs{>yv+rBBdkY6MGqwrVOu?)b{#}8KMqt|Lg9u`Y6Y;g+Oqp7R5s|m zgKFLY)XL@oI&$M^YBMMz*u|}_nSi1Nn}n$|#Vv3f>7!Iik}o>ECVXQu4JxYLC7}g+ zMZ))a)^3l|$l-O#97tLa)fG3!fW?ZgI5IgRQ@%(2yvQ8XuAzCCH?;T8!ik+vCnhmB zb*O~MFN*!;@3a_kz~?~*c|dR;Kf4v0^`Y7J`jZdoaPLq8uu6o7q|IfKgC-H^Y93jy zAejVW%d9*ju5=@UIeoBq+>BTb3-v8IXtMb?H*8LAukU%CXHtUjHHvHu5FOfFz zbz1+)7S;IQR{T6wo?~$2ooPNhLfsIxa|%wX=b;LQL6V_TTR89x4NaI}Mnzz>)K$>Zh z?1yTlwS5~G$+EVL6A^S>QZOn1=VN;;*BX8=`0;&uKFCmQuqrC|b`IT^Lg-!5TjU-r zoB9q4ivX!N!Fb%uw^}eDaX?FRYI$5#KM>2}T4(82zVRxdEQ1m#os+K+gR8g{kAX*D7>d}E z!D)q%PBIVYap|wJ@Ay+6wt2cb{cFlLofnk%NqYoFFVslkH3YfibE|uE;)zC&D6%X~ z)Y+zXc=j6=a#KuzV=!qAjbRPwaQ3M54y>0ukYxcsq8A@$J;pi|u~7V)duEV2p7FHh zoYMqiBv0PqT`UIR7`w(8vWMqcLR2$WTJPp1BWcnZX-u0B{KPLm(u2z9B&AEtpTw?l zhmylu<+}V;B3chU@Sgw9l+TScvb<^8Ic6g!IE&Ss^fg?dl)2B+(OT`5QC-y0WmIjX zcjc7Yl@9WXKR7s00Qo#yUN@;9ZHSPPF<9_UlI*8g9+FPUQc%J{3+E6wa#Yhmq^2G+ zeoMTy7hJlbf$DCUz^Q>pa_9($g7CVC1V)1LMm%-iYovw%Yhcc8$BhF@rcS3RRt=+y z;L;8L<*Bf5EPM&CK4^=u;~pNYc^5zsugQefA~tASN$v}#tO3gXLd%L@KuzP0&F5ow zU-gNaxuu`2oD_SvZb=12DIvy@~W+{81{ zOrVZ8rePzI7rq-ar%dlgVTVr2^U+-ZH11DP1Ci-RoW)4RmwlA*LlU!jH76&vtbR7% zIYG3}vW+ZdTgLYd{`v?YmrLSXRlu8tBuS7mLxxmP^X6bW^-LRFc)dsKUj&?+OxF(05%CghJ`&eV(O(O~C>l36)^_4sI}8D%qE+ttB>>v{o2@#rNC)`OF270G*qdXH`X$h0_SP8WkFMUS{dgSW8uB$`CB zwp|?6NP76CWRAqnm{ne0B#s2C>|fh?k%|vltEAC2pr66y%hzw(Bd_ zf|1k-#sna{bj){7gkYCM%Cpr#p)>|!rmdfd90sFc-$Qiksi z&t$|r@0xfy3Zzpnx8ZAT~#{J8;( zY;yWJ$1YINk&h~)J3;(Umbu_Oa58ABt?!oq9ldFkV3w{d0*}S+zDniwoIIA~Q{)uf z1BVOulI(5V3lIjqtAaGUT1gU~b7P~u-h%C>m=@a@#KV8qtA7jrLvlaPfAslv%MNM7 z$=i-qA2rj7{PdR@>(fmu~ zk2ky=__kM4)L)R6c9RETgq0d{!aJf^cIF7ByfZ*-6WHoGE$N)QFL|<2&x}-f#=Rmc-H`o0W+!_4nW6CNBFW?`W{L#^iJUZ^D5L<*(Y>p#lK3y5ma`^uG z4$_d|)Sx^XzxvK%sr074kQ(rXn-Jt|Vi|LXdXZfvbm7%Kq^19+*B)wlDJKFaToDzQ z;o21erV*x|j;Uwc&vR^NytzdxImNoyNm}>YfEfZb=UNgIJ!++)u+!0VnmXU7a~=aV@xURWOyu%E1C+WKluxLqHH| z75}%nFa2}}9j6B>Mac}0r}_=-emB$l<8$WQ4aN6R9}6BkyTc@|&TEmpIK$f5;cIH! z!nAQ>b2dJ$890T3Pa-{&`QiGcK-1X_bbLB8h|wJ#bM8tgqB70bB)-CFu=*&Zq3Tph z`oz8xbfZ1ISRPTvp=sL3Gm=sWXD7-8hr2sv`iktd9G%NmrVYupz()aNly%$OqxUJcYzW16?f646(xbP-6tr$AdTZA?Hi@NYxvDn*#Ff}kk zIfMg5O6bw7h}(~9?M+=)=$m~a2%Ah0y<=8K70>c3=hNM0aN0%dHzF-6woWyI8pBY` zR#--=Tp{mFVMoNP-UsZry2ReGqG?>_KUCvr%?seK1t78pECEw4Py*v~mRCUg!Q)see5saZ~@@ZWn z6Stm=mtGn+pn!&KJabg#4njJq(u^Flc0Uqp=wNyUNg*)4a=K8q=9bj)IIkJiTGP zYi4vNm*7&<|C(j|Sp`&2LEOSg`*1M;&`35UJ`Fo9+0^P2>~x<>IXmpW`J2+VaN3cUAb_BTj&L6ad=@?svn zI$lL;Z$d4q%y~U{5AyXT8ZkU~m8;W(WHlSYXewzu1wl$~#?sM|Wz71Qjvta!l_78O zgSq!$*KmCrPetzL%4FvHl$K~N1=Oj6t^U{Y_=%#$VUWkIlDK{#!<+<@y5nZYolO;P zsXR3-g4tl&Qt(DCO_-~-8o%D+9wD@3z#9BJUUN*|QyyB%9GuBIxBT&F&HR)Mo<0(_ zpNOD|s68%44j}D2bJyc302=O-x-v>R{u-^H+1h490P`gRwj?BobbR)JhD_OGXxN3> zrbceOO=zl{+ESK$G`N%_hel40Yg6_e)|CN2lS&OIjLyLCFQz?t{gN`ZI;2fi&j#X+ z%g6a?d=Fy)GaFqIz_3194VQ!D5buH1mk0w}i8_0J@#(I{IQnY8i6NU32ACMM3BPfO zbh#UX3!T~;&NV~^5r|jxyTPxZ$}(%!Rwy9sHSE1PCS@H68ZakE`LDSa}UAU zE=9;qy$UcrmhAwW-jPQsKbg0-c~u&A|FSV}x9o1lP%RH^xkYG=oM!t|r|$P0-aPSp z`!I5Er7<2q!4$Q&Hq$Hcjz67*JS>{0& zXN>=zW~dKJavxQSdH}!kEf1^B0VzZ_;OKCV@!~vk8l`X2Zv*L~V z^i(_=9-|@Me4gF+^`;>u2H@|?|NEdH%DVwEA1gq6FY`PfuSQCIiuBo<>t(XbIoa4F z0wX6~F~DUE`fVGS1**vAZTDgd^|Y|?-b21mB*8C(NCIy3yt_h&}o)R$~?292ItskEyAf}t{uc@o|aROgU@p&#( zLYBIpO7~8t_@|y+EW7hM#mQcwk$zKuZNHWhZyCowM>_@F$-#EwGI^mBc^Ldta)Me3 zJP#|13P~K_s8Nj?2>8U*WLqTyVJOiyY_GDb6Le4$8{;0&0E7w*St9%-VPyFgN9r$! z7Nh4IaZRYl)#ADjQh0q~a`LNY2dqC-b96^OutOXUb`pA&@&t8N%Y0J|&Y{!Y7*>jWV1h!MPPO8Hj#*B5 zV4rByjqp;iz+xhRrnc^(z2JVZ!wM@dMV@z>jc<4lQ+Q6VN1qD~=B!D^a_PcTUGp8# z7M2ousIoEF?1xe?%0ryKJDoP_V~}jyK_6P(6=SRq{dKOs|8Bsn`Y}~?VZsed1t0UN zd6KvMVhVRBC8lPyds#b)L|#g!E<3rLUk9p~PisH#(*$8I8D~e6T}yf$JhIpGK0CN5 z0-ioJr{%@`SSCWT^K1r60rX+4u*C;@8-s4E$NTr-<&m|X>g+ZdAT^AgzpZt$LXBqB zZ7T7IaU`w6RQ~&U-N(&ynI#fH5R=1Lvm;<;0u0`a#~yJX~EvhF^Sfk^Xc(&{0-?;4QrxV&f-aR2Q`nT0CfCRaNc z(xDWZ#?XF^f;JH{seSH7p_KA?#0wI(R15XD>ica(KtnlPDfU{d&(gn@E4byuf;6;3 z(b~;2De)~41Ooyne~eRI8^`5NS1?^<)2)MN5|HiKP<{$$hE+#7KL*3xX{)>}FrK>g zTn##>VR1_Pn{Z_|@eqwhzm_QlCpoHK_m;=^QC$+dv|c*YEB9|M*V;sNQ!!q+!i0*6 zgFmn>zi~B+zH%!diP}O(P1*hZ!|J3iwzwyQ zyzkb(tPX=MFDRS;^SsLjgoUiNwG~L*s2Yc^nUs$7)EGSTF2Od4P>fmm_6ofq2NGfD zyIj7(C0Ow?Fa?07wC8CJd4@Hv#s<)#u-=!rqQBDN{nW4L2Thi?cBv|HW`$@M=08#i zK{x9GM=fY2_4ssdpN}q1{l0R;vr!zSuPh^a5nVQEDT}7gTN6}cK@7kP#FK8~LA#G@ z%ys#&o%NdBs-t3DzOWd8J1jQ{jT!Koh0-1M9o~u;@uVN)eS#tpUDl9^PLr}~;(h4| z%+QjhFdHl!Y~Yn?aEk0=;AHmG`*akn?FBBrw3Ur4fSze^PPGVbL^&HnSvX;#+_1rH zq_RmOIf=|b`9Xv$DjZp2TyrSrH3J&HQFTf9(+*X><|utV%sV#X+rw*(HtuX@(+uM@ z-T!Z#<0=nkN!wU=I7{4N@TsG|Tzb;aGl1W0h~!1WV;F%D;g_;AFe^{<`(K2H@MAuj*A~42sB4ZL`qqQ=KEbaM{T0dr#w@URSIXWZml8papI!G@qO?__ekTQ>5v6qpUz&;J>`n&Dy}%k(UB%<+u~W)cx0O84ENy z?>HWNfqPvcmMVGsMF z%Ktg)0(!z#po6>CqRPNo=Ynz$T2Np@v=t1gVU7e%QWJnCKBDBj4`QOIym0zps8ku!&Tck;Q8weV5`JMnhNVlJ zp_+TXTjdiR7H4r%9G{YHmFat>4f6EeZCR`_WIgK|BBM=J#BZ#l1j1~#gM>97Vt6KR zz&Ca(hW&mi&9I?MkhQqsY24fDO$C7pjm|CEDJc{wdmw5KW2yDhqx?jSvtZeF|NF#+qp{5vq&(AdkI68x z&`VwDO9=zn@n^L^ z2ElR1yW0zinp?Mw#+2^ma7qtgg;gZUf4i3=fP?dUBb_gB3HTj4POgV(3O7{Ug$)!f zXtBNkN6>H9xt&?NgCflo{Ot*`g0ZWYCx2mQRK!h6!eOi&Cg?PpFnEl3tGI(nKCE89 zeL6=ZAN%>6W*gjXAh68H96KK%=p*;j^t`qS5Wy4YY!WTW-UrU?9#S&YC-HyN5sIR^XTc@GnJB7_2Ye&9Ft_J(3(= zsiQe~RBlX3`iqHs0wPXauoJH|KET$qv z7iB_8fOpmfW~uuy2p94*IJdv-GXFb7zm<^ml#DnjWFf#o_MO}bZ6$A-Ep{J(Oy!#j zEZ~5h7p8e`P~HoYpqWO}RFs%z*x+KIQH-Tx)R#`SC>sfn$6xE<$tX744p3HQ7=UUi z8VvD0SE@oEA#5TjLwN`CI%JT_Blw5P#RiYmHf)>w6u$%<6lN_u+wDzm%J4ar_McgY zbPCUSq1Ew~8_Lp@9i`s9V8DbOvpG$B8>t6>7$h2!Rg%-~^NV=Cx?f@oZJsNFp%v^P z)mG1|ulPh~_4B#y%bM`vOQI8PNiw`Eqrf;1AKx!=0 zp{=q@wNDG91ht+er)AMyEg3UhhnEWe#;GTkyKGQwQ5|!A?sre{#RWTf%+eU5Cc}!> z=&BVj1EZ8K&7IX+W)GeJL5qc>1Cc0?!IF40BAcG5hd_7T_7W-Jg^xjwYzwWIWZ%w5sY+SE%j58@M zXijGMxRkjw4LOc@u<+za8;=B!RWEQJU66bWtD#P_M0%@MBQW;9fTj z(PwuD6)cy_HvF#{*M&tfPZdxUub3BF-pzF&-d_|CjQN3&KD;&_shwfr0(C`=5kE1e z>cFtrRD38ih%2_?7%SN5p-}vl9>aYwM@ioi1yM65A?s+K<#;oH73r8%NMbR+^B#j5s zAUJ!=6?DMTZyxPM`=c}GVLD46IvlMI-g+!4o;7s&O2h{Ne^o@)h8&&fSSVD(HJEyi z?u5fO^&*s>Jh1Bx?z{?1#^gPq2L+*pG9Er1U;A@sNKri0DAaemik5;Ob5JPqrr$4R zNVkHx%8AkU+)K^5gJmOWJ84FIB#cL)eFar;uFkhZWJBEvkX5C4Ofs8ePJIlS@oQHf z^k=_*PwX{0{Rlcp$FS)a6#;G2)?#7+z_`ne>6SBcM>|zbsc|H6LsVA}e=$ z1gluutYGCv(ED?y5MCu5CkcbtkVv!iE9#j)J5|MVl+h(|zYscwQ&o9bLQ5hIaBW;_ z_s=Mn&ajf-KqCBa=AGuR`_IC=@}$eCPA&jGOKQsW$FED(97lJ=fiIL6;e|7v?3v(4 zo6;_+&NX-In4wzI016dKY-2S1;m=#mxBoxcEDn?@ zc_j-8y|m7^aE-A7J3)x*f55V*rz+lR*gMs6m#8+W*!^*F4RmPDsxRzW?z!jgbjJh6 zpkyX*^E!qAn!s>mix%ozekO>+s%4fTxF|50hF`iPGat!?jvs60NPj8{hfm`cb|3DK zVnhG?y-79tFSHiisgthNuSkk`MS|MjU)!eIOD_pCr-Rm#Tmo4DRPy|$N?RhsySsR} z89N5DkpRAvL_tR)cmukriZnP!`_34NLA5F&Q|>J>6)BEd@>8zA`D+XOSy{Lm{6Ogf z+!vM=&T?$NBvg(6Mr#dMtI zVhpibD&S1$W87CQQ^7OdVP9yyvr80(s(7SH<63hAsvMG+cRWOZOX)iaIkvHUOQO}H z)~pQ~5B+RP)_gf}DLuNReQhrI<{W~DxW$ih#(XzP&ouSYnA!?0-#W$C>b4a&3iQbJ zQOI>Kp%9`JD?*#Fqgk)e;;zf>l_?<%nhulkD}mPsACNl$?I@SkKS14Pu>mCR_mFy94B$ufAr%MX}O-=$*U$82J_ z;MMZ5-dlg`+1>tRlA;-0bfHb4&2x$9?r{8z#(|E$BaBnr8S`M+Sn^4kCfPxg*KNlC zlO8~Mo5EH`b7Zui(P*~nHk2yTuCING+qaYRh=kn8<9rqMMF|m)yZhV$k(_jCg%rE# zhHUEk=5lvX&3PThx~4LzTX%;k|PRpHA z913#z@>q#AocRacg(C)uh%Ev;tz>+I5uE0Yl+|6|=wh?FO5ey^PH&HiiwGH{2mUD+ z*BvYs_RiEi@w#X(Ggg$J*5==-l7_jVjvW_!yoL7tEXYs`02#bTF4?lSOiD(Xgam=t zQmw}vJ57OnKV$gOF=?#FWX<>$Y|~n}NhD`v9kGer^T(M4{MZ`0jpzBSbihn7+VC)XT%?+o zB;e0a;5O2hR@vi(wL+{TiREE;G49al5ZIk1DohBN$R>mL=2ciZwPL+Q#M7c}*6Eav2k_hibsWxCI^GFKG(=U4x55jB%{J((X0XH5(f| zv)H6FH6aINlXNo?ASTH826ssc{Xy27tAb!AEue}Iq?5e!Wv}_; zZ{#=foq(vPzJw~N3D1a zRvk={6i=fzG|70`5Y~x1oJ~9TQQjY~uuU6#vN%w+*Q=vtVV*yUnAqFY_qU@?!k~A} z65OyWmCG|*BuPXOCk82_n&=GhBT7@O7tAH&_?urcgPwT_15cl_=CMGN$gOdEUarbhIc(b$+(bk%iC97*9YfKXs_~lJ>~aUbjadt^ACRbtYbj4O<-TQ z)dx9q*ae*3%t12xa6&qD#RX9v9i;ca59*&;n@DQ$g$0C8i{)f53NG(&S0h;5AYs@X zKSO;`yZ+nuj|k0>tHFU*7(-2&=PPddj$0C@c3Mn#RPn?JD$tX)9TOft>l8}SvjrLl zo1;*Ce5-lt-$}_*nvhcDA(&juu`vwE?VlEi&KeRIQkm|T*ho=}FyU__Wi)qbCF!e& zG3A~*-JuyR@f`h1i2X2z^(xm!!!4$h@VR=z|1EV!vgJY>0?Oltkc-R7$BiE`$2se9 z8|m0|NWgTKH-O_B@VQG_!}I+o`H2=xfA1t((V(AIpV28Rd723P3 zc<8El8NGn{5wkLnTKy^}_-Oa}_(=N6QTQZDev9%~X?cF*UGi-5Gl)M(b+iAD#HqrI zPW-xrykb6XzP{~5<15*|wkm${MM6ivI|T_v-kn;*i31SvszNJ+-@-OrLQj1hLq|(h z@in`5{NhvQO}-^)V&KQ?Up^x&NDwl~Us*P(X{eFThgde|FMbSiA^Au8tgAXhRt!Em zfLrE0{_O*My~?gKBuMFQsgRz2T zcTBZ6a2gt;Rlx)Y;)iI;BpfK|+E#SvL_G5Fo8aoxg@j|D<+wIII&1(3cO-pJWuZel zR+NDdit|1DkuV_#ZwUv(sPnZbk5a)#1r8Y|#++d`n1(3<{7z_&Z&4JxZfgLm%aANB zdb_POH&tqcJ;(t6KLEhnr$K|Ot}~VwA2`IFPia>-1(o0L-K67U+ly4Cq^O=8y%00|~OHpx50*yV5EF3V83pK?O=9f1=Z8H_WfluY4DS$W7~O z@5I)*g^k5SwCUXFnH!zl5qb1y5<2P`r6q$hm=-R}kyVyUx@pV1Qa~iame&)&+nV0I zAku_%-Yi0Z@cX4>vPJu+*ID_t&i1mO|KpkdqvHkk&5f{q3^#T&TBk0or}_n?&X%Zq z>y;-V+7eLDOgCFftDtFI{N;GHF@@Z*Bj;QYb^rqh3Wy)m|FyF+AYVucoJ>vDay;`1r>#0C{Bwk854?jGW59i`{5)v#gciSV$R68 z%}vq$8xwQL^_uG^^QcrYpF#UYnrODD6Homs8#XMeK6XwuzVgQQq+SwGytb76MmZk8 zKE98_kN@=RrWx7}=@@rUuhcq} zcPi16BD3RXO0b%C?kH{cOO^Y?@zi`@pzsB-+ktA^FrWXrqoJ??syLY2kt5G@ci=(w zBu+D<10)_s6S65x>jD3}!U+LnGyD}dOkf!ks*@s=nUudKwE$)v3rOYieJz|vvMXu2 zQqN)X2p~z!l?PiZBK|bI+X(RQPu)!tQOjlH4g{uvmAPHpE!l6(ngSfj^lek_ZuR(l z<8bQonLsHo06_4&Id&>LWX8oOsuu0w*%1F2vPC7?0B*QPf`DYX%SHRtQ_iJUltRyf z`2uHKYG3js4e^xf~|9V_PmY9yNMj_1jGWjb`GpE9BZ$Z_eDE!}jP zBy3vYgOK)}*K_D<uUpa;$7^spW&?M&0_l z9G+t*&No{%uy-ULUG3(%EB;N5&w!7Uo;@&CdN~x;nsx~}z32ORw$OkBU~h8up+2p+ zFGNO1SK_)eThOu|e1il+6)z?~mz%DU^L~+f`#L1gXtZZova+6x9atI0zIkt>_$(uK z`y>MQNCpOCUHq0`&YN%frPJxZ$xGt8&xOi298ljeR?}_8=h#QDDSg;lwFNe~-J?Mi zqfa^ZZN4Upq@V2HUtDz88=3B3IS#$SVc;8*|?@MLR_a(o6<+_8);2k$Ke zmz4%*k85k5BnWRqA6E9-@$`9c@iBaldrsTWH0^y5XKSq0Ns#(2t&JZ7n&EW4dL~X@ z&w(BMj~my?2UU0C5$vZ#&7bG}Wx#Hd7?#D{+zc$P6v9fMdQavObhKxE-27+;C&2)3 zT}D-?OB2n5F6=1ET4R#s$`VGY0we4`t6E5-kG_yy+@W;}`C|1N%zH__+rcvqfxOL8 z<|xxM$n^6>JU~#&T^#GsvJt@8pRlGF5=tc-2TZNK@48HGvt9W|Bu0tU8XJl0)Wo zCQmhOAHwU}&=R0&Gc%K{p-wd07J}11yy55mlH-YZiN;y>pg%O+XnCQDY%DO!c{`lA zgMtvxF}~FD4^ig$>@4)s3SLrNF~1%#@OQ~kZERBa+W~XGt6{C?9V*(Sm`;x+lSh0h z^67N5)=UPOp~a<16|Da3wTs3B8PUG`)x;8Hi9V_ba<9Da9yx75aemzeQC`xF2JAf` zL~RMK1_3%w%9){tYk)u{Q?g4BEI<+;I3BW+NzsSgC#Yf%V`cQKnqN94{g5g}`FV%F zpszs|Cc<}os0Ja46Q>n$*)mPh9k9zQN9OK`KWmRs$YhHLEfK^|RrY1^A%fPGu-PQ< zEr`LaBHVW;AX=1Whuu=b=5G@Xr(_y0XMpxW&4OyfpcgnS?UxsYFDgkKVGMv3`$!)F zpUg<@QsMHn6UY)kXEVhIo#tz~o{mnp!*0QCDo3_GP}!yO2Oq{UpM|slu~vj>I{m?h)O>&?^Cq%QEp{=eDuIj%4i5+q z!`g$nqAR2p>!32@*G=f~Gsx_4q5lCD7Q`KP_TwLG_;O8Np+GCaX*9TwM+Db6rQ^7XY@3Wf>ea?QExUqu9 zJBcC>IEcUpUY8n}Ds*BTs)hf7wHu+=gH4$%_aeZg3N_X)Z|3xEDHD8_l54RN)sCD9 zu@~rH$7iOUz#bMZ(Fo++$3(7o*!#E%D1B)y=V91cwO2eH=N-e$kp#dfw0f&<9;e|F zv5f8zOm+ym_yoJaDY5LVgHoR;Gf5X}n-S?)ESHB`J|`}?ZrqCCb>9!UW=xrS&Aeh| z8Dr`b+d!^mGX{k%oA?HggVN%s&-%tl==+u730^I)*Ntq(TWMSk^FY4lO=nzcwW!fo z=`bE=57i@59%mMP!f@&k;0jrTCM*2beRmG!05pstO0C!&_C_#pPxdjYNTqh)h~AGE zr72Kyopo^r=SgxL4U*%b;s+SFwWcU|{>RZ7VqLaUx%m~wXgSDVc_4$tksPzYH_-+B z{P7Ie@pFk)G)u$`S7E>oPv$RncT{wz!?b~|4ATPOZV4*>N`^8k-r5oxHgC~PT5zxi zfi(S+jIkMeOttxrQ3gJ}}t#`s*_T(9pO))^d8h-$dXEqe*y(d}k z+dr+SuZ~no2mUDCoXuv0ygL>MAc~i%4H2o_wxJX zI+rALiwrma8&xWK(%TG|Zy9*BkC_nY1XyLPRTA8W#GU*=I6;J`HWqr}U}GZ6F4hHJ zjy)n5n4e0=Uf%hcK9Y7SLsbntNx{lz(r z1C1<8R&%vn*v{SG^6&yLt0}_6ckxyLDavS?UL$J?9z zjy}PzA`v(PSIGgMbU~y;FaRND2Vk)IQ9Z0x15R@ZBVQB3>wdEnaWV!Sk1i>K(ew7G zUZ4BiTUs;Dvl3~qv5C={A!aG*unWr4@isqJ*h1+r&)8lNZ975u zc!EHP()`tkO0^%$LhGTA-22b@p&Y+xqNZLZpe>CSy%wy8n0=7GMAQV5lw)xuT9GmM z=LZ*^xaQ+Ql4PH?4qI{t0m>+JzT1J_k10#-e#Wg+3EjV;PD(s7jl7jEo8kDL$~C+2 zwzJjiZ1Bdq6$sc$TYixG>n|Mi;7;bl*}${GBAi80b31%HQajpxXR9`eLgF&kz;NVV zeS?6js90fFqasOUh_tNF^rS@>_DDf$(`5f}TWtnSH)>pR81ofb3Sn>@1L#PSLTJ|qWP~D z`8BeE^v2#-oK^O3fFFy?ZbK29#^y#|bQ!_smuzjSvu13>A;J$%(*@+Z1dHBfs+c==P5vz;B4&1{pe=HW8gO6A(cI9NZGn^JzN+WW02JnR$nmEHJ({F#9 zi+J#7we?g=e8wC`gU~DpYQ=ro5SR`{bR|3Qm^>|=LMvT3_?cJa;WC5h z!CKDqZP0Db!~gTS9fedB8{JFeTsx&;kZS53y6eQDWeA4RI5jLn5obd%=DbRlZuP8q zj&zg08de~>&`~G9H_@+E;FV;V3zmhW+B!D-fs9%Wpj*nku12VJIm_Diz-gn*CUYm; z;p9k}O7GvfHW(J|^{Wz}fxHVLti^55qu}pqu8<+si9e8GCbaXKfaKSK$8}Y9w|%0S z38bXJT~r{rJo|l4(-DB@B#EM~;srh~o@NKlJs1aPTRpwTlDw3ko&YV<~#++$RAQxLD?Y2*)T;GbP&p@B# zHVhdi7n?pXOn@6hbySNb#<;c(Ct&8t!&^m6C5?bX@go*b0z&-87wuTEzx)CZiY`jyEqCxboi*@jT5rwAf z1X&ClhKe(i!Z42ca*S291x+1lsk~`-#>VHhjGoY*P3HcPGP*>afUAK@$kAx#KIzg9djEWmo14=G+C> z$7?5Zt^mi}iFE&iTk=@K%!ltP9`&imN$G20bCSh=1DIEHVK}k6LDC>H)F%!?Nwl=uW zakRaH4XVH+Wd+vUml(t{XQtEzb@)IkKV=F);@({jMG-OOlGafm*8;m1Y95{}y>{5| zw`to!clb;Jr2Nj_dr=)5#(X5-Ao`xv1(9U0W2A{>DzAKD`rGhyAP3kQiXFu50XNpd z6&PSw{?-IC69c`yE#cx^6f@mmv`F;WfQkA%WLGl!r90o0Y*uHkaC2yq8R?|wd;rm9 zqDUy};!xCR(yRzK?Vqq`XhrPE4=UAp_G`%$B9$-J@p0Y+f>Jrc+vcj#Vr2@d8E3Kj zY?oWjA>h$20er*CaaPk`G^f%~-mP=o$hQD?gl}MWu_6Kd-e!1YtbA*bDhMMn<1)y% z)4j6p=#$>Golll2_-jl2k!i>?WGyD$r~dnpIMP-kL2|r$Imi5e+7sEnZN|@aIkF#exz$eotmwa5}M}n``Oz@%Jqky!*~!d zKJ^8#)pozn>1{hBb7wFg3a0Iwh-B9pa0Vk{Xdk~v<|uZl0XtbT_AIK_v=7NpLAQM% zS_ykR!0K3$_d67>+*VNfi`Y@3_t&$}Rc=?|<(s6fD2+Z-c@{I>O>QY#*RS* zExyZ7tu8O#hKBPU2dpLpBVa8ne|wC_>v~`l$*35oys-*g)`s-_5WaTCI>&5RXXq2Y z0aLOU$Crw_6@q=JL*=B!^Fu~xwyP?oYbv$iGOmr$ z-e$Pf^#DdDjF^RoesD%S6f@5&+T8pYa@)Pd`?Q*i|L8z!afC*rlwh#+T!)4jZzWP`#G=&~L8NHEbg ztn>c5c8%XGia5^{wmADCpN|~g2VO{VdQef6CjHC;QOhJT3PHv`vS`)+GXS*L>GDFV z35|CyEj%*))~p?>&^j}#!A#t?=WKsld3hO4!g0o5y{RT2Rbl;Zn+%%H$Q}*MYgG~3 zZWaZ%+a$4O*arj$oOf`8cSAu&tR)f2osu(|bjGH&0mR8JQL@W4QIL81w*ySW+GlW0 z&?b0WWSxNE_YQc3aUdYFY1~!{vpIx|s#t}8*axpE1{6`!`gzjS_gJ_%?C=mdP#2?0 z2`btUSP;=-ak42^z_E49ULk3iAaXNKB}Aoh zpgBveP zTzpM)++K93r09K!obKeuV=I=Ahs6KmAinPY6G<4uPCv0Lc?J)DFuPr?fGB+}8c|}x ziEJ;x)r`YaR{>GB*9jI{&3U+vM6qU%amPD4F*-ID+K4TF5W0DDrU>M%w*?s1oW?#3 zQk9(zJrG6tnR_G3bL0Il>uw}z12`~p|A?zZ#8Say?`uk!C%=qMRb+{ycyi>9Qu2Ij z+VQCog!LY9x)m{X+-ZQ``eOC4sT+XGtmvDbjA{F!guc@PcW55@DX7G9)u;be$KkzK z^5JKS3{(Ld!Sdu*2!bg-?ns`Mtj#gJG-1yXsj>t;@P7T_I1I=Kq=@;K-DvB0ICRgo zo*YS8%yR0E2MC?0=o8kxLO>cbpR`$ON3It}=>%PU>PZc5MmPi5sm2c2GVpgks;+`~ zX%#amhoGL|Q z1)(U5kbO8wgCMy2o1^0V6kCrAvi4EXPcvXhHGyJ(cq-7Ya^NezE5%SPuc5HwnM=zd zy7tSIuO4y}6c}aj*GkBr<4=kuxZlC+*_!{UfVB38zcH`jOiTcm%}HMns91gUAd^$O zQn-WmCEpy@lTX_SA*AUCRg~7tOB}{!@d7%>O^rlujiLIG&slUj z;T^38&8u8!Xy^?}{9`I`2U&VRbzrsYlipG~mKK-eOm#ItL|l1`P_=U+q=%9#w;E z#pm(<|AmiPbsob$*G9805Sv?hk~{;SP}y3|-Cs?X8m3?AW?sOdau=v0?%~S~X=1UZoMCCwGFoZe8`Zp#gq~Hxbc^binwJ+^ekVdj`pAigjx&O zdYJzK5^!W%LAt&Rh8N`*`r*GX!u0aMr~QQqKA4tigVq1DN~H&KjLUDg&1|NrS4X4`ur!I zw9D@i!Wu!8UGTzg#r_l#2Q6&G%%p;1M-&m9!mD8S)R zNlyt8TPX?bNl9ylTd5Xhz7I4gJXhYupDmvie=(>n8*V$-TudPrH1eAS~Ri zHMaGM+M`J4Mpc6xnp7KOgqDM>kOxp0ccFWXSi)a|wmK?BSshMPp~CJRcPekyIV=jO zWHjA}G;~wRpni7@dZsG|0G=wteSi}?7r7QJ1go8&I-vuK!MJm&;l_mvQeGuSJwE=u z?b{Ecm5M2}^`KSY3c(ScrfhMA>T@%&;8ZsLdn*#cxvTA^B_E;5 z_;kL6jMiln!wJ;zHrQPAYVZ%xeO#alUeNH}_!_L(z}&cSNV2@67>2KLRl=V`?Gj<* zmi;#^C#RERk#xHqWV}%JmWl~l&iO7+iC;R*1b8q~u94ZBbHh@@gkEB07I(X^R}Cwo zeuk}$-~?SC-!G`)Cq1$V5iyv;Y@afKK<`2_I$4dVFKJyYZolyf5vMiH*&h%bR%J-V zaK(j`bw5!!x;)5DJczBqGwFk>Lq9V?h0e@1FTz8LS3S|}>wCok_LH7}2)l9=Mdh_k zgaol6Dvb{Wr+ay~QWbHp^dc;!nuyby1q^#kK)Vu8_924=s4$sIer?nDI~@d56n=Js z9o*kf2Qp)$YMoK#Vns@xEThfO`m!Z%)j+ zU4*E$<+bO^0rp>P8Wg&1H=>mtDJOaSI55qrMy%1cuV45xU*&%co?5q!?)0(`3+H#rV>ruRh*{=$ zs-Xuk#8qm|&Vx`8Jd5w)bz2&|sECD$L$UNqL{!;MiX+j84ArX z8sJDy2r|VUCzo2c$%6=&hhO%F#DC#QT0&2 z^k8)tynj4sk;ff51W&^&swAOFiymOA(y@>k+^djSSjm+aOBL&Bwq(sVCYy9x zsO1~5ZW*>(tS~uu260-?3??x4B1_M`?5g*vc$SrL{9EmA`$_P1w~Da>?1y%IRv20m z46t?vTSKGq-Ua<27dl7bY2yB!(^zySu+LTNxV($anuD~Zi8m0>bIoA$1RYLYzpzuK zqWQt_ozXY~eduo+!JH=BHm-U*sfiANmjS_+_m?Nq8)<4*MX5qvrgwXX_^E|U_m zM5JV|rg&+}hH%EO_j^4zH?^IeOV#xJ91CvjR%S*Eg*6k>sQZatBjuTEe!4gf&5&2z z6zpLp@FPFdt03QmGH10ib0-{V|7o#4htNI6bJkAflmA}ykFv@QvwmzVqE<~yFO@Lw zKIpE}rysxQgV)VTOu5y~sD_pAax}+@4{~2|wSYSHEMG-Ew6}qA&!j|nSeuBGsc4mO zB4PbjY%(NFz(1=Q zAK>8A6)NHXN7?;HXVM+)0uEUtH1eYR)c?R!-081S)=ui!75r(vUW?Ut6k`pO>wScw zZY$($r?TMYK_H2u!gL7phiWp453~F{P%1>x1#aHAOf3-uBK`gdkgB^e@Z3i^o+PipC!B@D4Tr72>%@CL1z zmTuyM|1$#g&F06NNqw075h3NjQ1oh{tmP}HZuOi({Q#&wRT^Ci>l>ca<9g@KK&B>| zK%FC)f?hr0z!4tkOqZMM#pya6g2%VAQNa=qlLr6LCWWaZ<_{gutaE%de_w+X{X3py zzCE?F_^}l_pO~Q0PL7eU7RU5VOCiyt^=mgbYXdW->ka=d9v4TXo>OG2D zt%dx#C7R!(#3zxeg}`s~V&VH3rPpwx63v+%|I|$c^N13>yEf)F#(Z(y)Y5(JPR1|w z)7g>*8>3MT^1f*S$CzN&;e3~TU5M9@&pUKMP~fRjJnEk}k7KD3viS2*J4b#T z^b3(dLEhAT*t`G(dJ;@xP*zG!Cm`pw{N?4`L7D8F?7)^eF@7bpuaw$@qG|F_)1kwk zcwErS>9-_s?upQz;e#MVKP>nP%)!QdsH@A|B`%OGNZ`G31d{sYp!I=ug;uOOP0!6& zxi=Sl(l{Q#VqgQylJ?z+El$|~piB}7W59TjCoX#U)^h!xcwJRCL?<0AU?8dyNH8qE zTQmABc$LP3{osdu6PxCcKPq)XxI3w@tMM&+99dJ+4gI$A31y_0`X&k+Q+#E_uB$nO zZm3QI$uVM`R2^|1c>8hBVm)LI+4`h+_b4^56&!tg*Lz)ta<4-KvE8`>^wI?}>B7j4 z#r5TLoYyA?SJ71&8+o97nzJ_{{XJ1xegN=^futFxp!!Vz{VzF0as2kx44NDYBjiGu|ddo0?V$4o@zAquuC3$NR;uysArUhhR8X;Y!} zhd1NYL>b!%#j(o2!)d0gZ`rWV7?|{M+Fyj5Zhb*`xV+#r(dlX-GVno-t8T+=NN1F? z`{K9(N}cB{UTk$+GHBgq;bS^jo4tI|4S?kB)l!2Lw zWFhXpK}~~+5&_mn9|&Z6bT+V7N98KBp=((8J8MRv385n4yJoa)JVJ^m6J7n;m3Y1R zCFnA8OHU-Zjh1uX!K(7P(L}dD( zJdxh%cz)KzY;lWS$GW?KnC(O7R+28l(dlpUiKml7SP=SfRj-Um_yP3m@WpLS*kvXa zsj!hHuH~{*wC)3C&^j8^N~H0ZSi=6`nda?oI*XZ4rEJ2$y0IXGl<< zcH96Eb=OojjLdR{tvc{-JwkY@ zp@J{sPkA=nDvh4PL76oye#62DOs1rP)hVU4a{v6GW2?e#7%d*DDYx+x8#)8BM|qF| zs|!H#X#`hvI;rk?G0j2^wW!KL|4^C>*R}SB*D5A@7AUPBQjg-H2t~@#CjUWb+0=^~ zaX9Y@b0k3!oTB;Z1dzUv8?CFoiGCA)lT_hxd^tKf`0l z>Vk@a8SPf*+cKitW#Pk5>6z4k0j?%XxD`uKwsl`=*soJccpPstfErie`Fvn%K(|B+ z4b&QtiVN!JH+E?C$<~pAfrx+fK~^@4L<2EC0IY6ywM$hiG2*I#I?zJW1X)d?s*+iA zY=GX2-dF09IF`78un|qyPX{L>#I;d$C{jh_>?$%9+y zBGK%nQ_3qiGN2jwtYN+CYT$|la2FdLKNWA1IX+Pj!KMdrk|5HN`RGbnv<(K~p&Gs` z;+H)7vP!ru)8!*hRgwx=MUx`VilN3gml1?aF_Crjg08m%xMjv13vFAC65ha5me`#Y zZ+NKxf&oW~HP)`hZah>x6ccUAgExcWTcJt6(xwAb!HrswTP9~eBBXD(NG39$SKD1R zy9qrs14{sOy~SG{6%IQZtqt}O(%?3lp*`<4JNI|N8i(Bu)y>~c_ zdP>$Dl-~OU?nAGC|Zl}X+hF7xabfnid&|T6-?wKnhnAh=P`JeyCt1knP{Ntm;)Ob0nLY4{CXH}>$&y& zt$C6ysQr{-fYlKkiYqz8tw189;C*xvef-8DA;*To=d?56HKZm^?9sR<)93@8)ung4 zFzURS_W-ouipJQX+mKb*9} z+qoKY+rQF^ErB&}&rcy|ix_X0Ecn{o&1)YQ%fyvZ&5}ZNEvlab+|KB%%SH@opbHg$ zoPI=Hd~&T4NSP299fUC%nz<9T@g0$6Y!KL(6b6Vg)~tIX+E0BlzFZHtF_;H`@`;h= zFVJ_fUTn`}3UT;mK_SR|{JUWaizp8u{FseMYi}%M zRd1ogZUXhd^J^>Zq|br$MX?XS0e%#hVeFd*bq~tmQab0jDFs2ARQW)~I@>L}%=%^8 zB(WT>>V@p{P>GPM6NbQDNsh((tELgYC?x9G7i3&Qu%jR%&ajVQt&m)-tST*F@g)b8 ze|BC{lYYL2IB4`#qoHsQXrQxe=$0y@PUO9*jf;pOYBi-!u6p>Q;``qyib+X9mJ8cW zDR6xFhbVGBEH?Lp^CHf{>f`PJo+6NOVC9hch+XvX_vxckIBYKtWu>sAbW_gq#pbQU z3rz|);iLtifkQulWhd}_zT=;`!xNKEZy%A)Bhl`F4Ok(8_qq3J2Mk0>bXEX!L=JL* zJR0C1HVtG|hy^2_1Ii}hrOggGGc5ksPYN08|BquB%Ni+ZG@J1lnV#3HI0P^PUmLv4 z0EjzUlzat83!XN#p{wv!AXU+4TL~Jl*uid8Osv5|Pk%36*%%>Nv3?@%tzdgr@;uCA z(TsWc(Vo2EpNG@uaX1_O9okbE7c!IQ+(SF%W?U!a_R&mL?M#sxdX;%2eH}{oup`yI z3?9SF!4cledZqzt2C~2LO&9)3I(Ym%qBb1WPuV;64%l`)LS1UXBw8D<=~Md=P*Lj z6u)?5B6jWH)^6XKG8TRX=0>jn!Gpve4xUy9oh6)6No3mHKb-zCI$;iUICFe|>A-AZ zWm9d&?(nzqYT{-f3RMUk&c5a~j{BZO<1FDxW7Y*=AiR9yMf*7fv*laW^fbroTjOug zpEMgMcUUXO51JvOR<^bdA+Bb(Ih{aE*xh3o)vjiTWz={4)9hVZAe_VUv1OeLM_Vhm z&$Nb@$-JhNP;Q||u^FAx27$HMc;a+_Zo%+JjI{HE2J8Audl^w>6>w-U{n}E+@UW;y zFPdbR`3dN$HGP58cF|?T1xjkv zUi<}T@0@?QCaE28y|UHMkOY@_<9ikuH5lgnn4d(x|$`0-2s&}96{2KOuBvd_#(cbhMVKSAN$V6JVamw3l49A+9i zo)`UJ!IhqkKVnK%=k%`w1sfIO&ZXHqB8&-vqVZvyjoo7{iWjjf(vt=^*DwlK&=X0f zFL)Aer3aiW7q0u1-Tr%DV3T6N8u_raXdx*C6%fUCu~ia}bH%AM)V}9v0lP=AK4qWQ z>l<*4>L}A3k$2_+w-XWSD&FZ*KmJjk;!7NkgXaS2FHrv9y%>arjtl!qYc>v z4u%g!xu;tge$YR6w(^}Wrs1k%d8VA`IiZq57EurIQ+BQl7e8ri3S01K%<=HhrtzKN zvj0FN;r9L54lVDurW1UP!8#oDx0fS%U3<4o7?lUT?4z{7__0R&rwF7NlzaRBvQ}{| z)95IN8aja2qsQ~{>1N?@4fUUkOVMed)Jk9~o-$!Ah`e+I%uXjc=Rb<3lrEw(4`PKRr^Q5rs65blQDomYAFYQO9ZJ1izVrp;wsq$U;W18VoFxc0N0emETeYw4s+!OCpm?JnjhWbN&A~goF;I0iwvw62u-l2Rx5Go#HKlCRwK`7@+V!9)GUk z1X#e#UZWRR&z9|^@X(hYS7k%cTZex0tNx;){_+xb?`HcX%-cZ>k9ooG^Tia#1;sR{ zAe@8=49Srh+tdy_Tx6eKL&>*lI>_P7q%|B-)cT#J6YWzPF!}XJDH9+U!7pY#whocO z@rG9kOK#^dUHUNRsF1-V&!spHbt}IEK4yi~0M0*sBj&D)`^N`yuGZ=bpRO+Ct%-wK zi9ek^ssy_i3I4;hbns^+Pg#%x@w87Wa>1j?7G*qni#=>#S1~u1NG{2kfGnu{!ahb_ z0RSu|`rL70G({R#7k?XBzXG{!ix*N-bO-u?bU3d+;zJhAwG<%zn5W2)`CUf{q#* zbf{vP%FAtoAGS2X4~@i&T1wPo)SXDy%ah(yT9@dxfSqifLzE)Y!iC`hCK7_FJ)=9c0@U>t>%S_43&M_j0~mYZKvo zJYlVNa44yTR4vkY7M@ST<;-sy{Eb+bSL2X*fSnbxZb*Ncjk6VWr{UEA$hSHQ8Fa?u zThOYs1(}%dL(A@9bJs6h8&sG@Fkt_Cqb_tpfQvNcE!?WBwcf`3Vmq>@ts5UNjod8LAiS2 z8oZ-ilH#*r3=JZdb{(ON?>RXhlQN)g8R5Ho_!W{$qIgnOd7Qr~TI8B%zrYxi0N7a1 z8MNo?kkJQM^VhaDr~dwRZ%$k+d+>~Dmj)aD$n57rQDms{fp0Now?&)MRa*#`({Ara zx*~xNkLq~TaWmXBZ6aOxZA(tv+X(Bes^@TTwS|M*#$YzE2Xn5rA9o9L3F}&_fiL$@zY`<_lp(bE#irQppEazO$ zk;`rFKfh|Ue8tkU)Ufb{ndlG>DBuHDq-`nw-OW=TY(lAm*ZVL zZL`Z|&#QO-)?haBIg;e(W)=N1@YflU{e>*MX4NRnfj}6w0flLBh~gdS^dRePvp(qi zU6PGuLNw`#b^JzLhT`@oDSJSTh~=K7IwH;56G)t;o!qSm0rD)CP;^J=jARtBKz+FQ zy~`5bsSy;&b%)NIvhNGZsR|FKz&h4666k-ztSxNQ^e_uMlabmDnx%VmO; zCe{vSwRD)ana>Qg#v%8+O!%J+@~<>W4V-~$P&^C%Qz-OYC+>ZD#cOF6#V%*(y1^&=u!gBEI;E)8OiQ4@~o9jfRgM7>|m4hqWr5czLJovpqp;Z zLxuotQW|#pBb(*=G8Wnb8SV@&6U5cRX0q?0%x88|6+76oW6bXLY@#*bb5FuPLo++k5!hLtt8{6GcZ;lf(^m4^mMOlGD1HlYvJ-w5$;gE z1FiN$_Hw;>jcDNd!!IdjtTSCGLVuuRN7dJoL+Q<}p(sk*0bb>?s#D5V%mM0py{!47;V*xHt#H0lN+&03RQT(RbL$hCzkt=2^ z$cz+;cvAUP~z zVJ@mPG|iUef5)bv)hu6(OQrq$mMpDjTY5b5Ye|<)i=?|Y#wBuESj!;$5P4X4t;MAr z`7tGkQ6%nKbT%9wS+=!?4c`q8M_~7_bAl-L8qr8!2Y@M{qG@sVXc}ysOazCL3_>F% znz$jo=|jof;hjq5GNa8(NDJ-5{-Q@>h*hmfM+6f{^O@VSaEV48l9Ib|S&F0}MkF+e zgH}|jOs;g{DG_tSCV>eib zGGOo7{AlFlUNwl0@5(>Nc8TLM{&kcx+sE zFS{Rg{&Kw4>2#OM`@vNdX>yYDxUMNUZ=SZF#h>km+xqo8>^Ty>9=bpKWkKs>Tf>^Kr@Md8ZuSHmeluJF)N9#G0A#l9!o8qakP{Ayg2Q#0XZC40zFcW~N+*Dy6m!p%h`B@`k&j=hIxD z9<0i?iX){ZW?xT$a}OJ|2cK6!Xad2q9;j*_d1Teo!!ya>fYM2Oz_3C%o;7NYSy<8K zo*+(bQVvO|M_-ufCgF1!_@ZF&`7hQM^~t5B0IfZX>jE2}=c);*x-C}>_A^{rQ`#z{ z6SMHfy8MeSITaD|shrUIO0$ekc)%03MVeNrxF?AM9tk-Qcn)Gz?AH$3gYgBeFlqT- z(+E!g5FJPo{4iBQXB0!>R-4!GvB1i#p~ub_&f zmnUxpz|zlfH_CgwH<}u?SbCMK6mM6>2J(ts8l66`=2P8vS9XPFQ{jJsPr9oR!(8Z0 z!a{+pXBK;T)uSYXK4&vdd^Ki;%%=8fi6RVYh}5VI))~6|vr@V>A!1+76SqZ(3ot8X zb5da*7JGBOX`Rh~6Wz1bAff>OKLEg9cIhyjrr%sdAf4sXsi@lxCn=rv(n|V37{H(j1(NC8@r$N)bhpdI;72 zt_6yWG1|{Un>E{bZ&>;2+wgj=o^iNJ^myMw11u{4)RT*65pDI+A{SfdB_^ERD95^} zBBcz0HpeN%Mm8_N`Yyf~e{;T00Rwt7fyXpk&e2a~AO4jQg9qin z$6_$Cvwh}S&su9E{a!I}W?`8=L`ZYdAJ0Me+nzo?E+A~Bn+r>%$9c*FFTcr$S|E;+ z_{g;x=0zB;f`cS337eEM>PaX4^`xB@ut=C+;l_*Tn4=n90sxq=SM&zT0@lc51|s-? zI5cLQ4HTp{SVE*UEcal2rP9;wDpv@M2w5N1Txwh+^So$e?Vr8$=LrP5oEZ+-YAzQw z$n1fF3Lh$KKFM|plNj0|dbrvxzv3QLQ#8-8dhiNa@3qk7w8LidwrhNF;MG$KLeV7` z_eal^0ovt6*>d>aGjG;^TtH;LKJ;Se)bxWZl=`0l&f#reSf9WiB-0;-yfM7>cmrz> ziXg@u3~GEZU6UWO%fzDWoU7t+@OUG_98zPBj!4>q?4~NrD?BI!$o)AslgUP5LtWb0 zI?sc4e=&c`$GLP8*=E`!uBhlcRzEgFk1LIiVoyLxB$&_j6*c8^{Bc_+5wx6RfZ2y` zwH;=QY5)~wU8d;kpeQ+$sK`|qLy^>Ychj>4!ezRx$M{h-n0mh0r{6ZdT{q8zantj4 z>)e~eJgpFtdXVBywdh?9{`~5rIz3e~Zr>-x;n}dLCD*iAKWe>zaJiuX z*an=x)afWX9uOFyzy|jr_3tqgksG7xX-h=_J+OibD>aQ1x=* zZ|e6BqZA?e+O{134i0>$4}LUaz)cx(WJI;2UD6XyXv;$;WWC*PfTs4v2 zS)X?YF|Fxy6Xw=mTJ@+p&Vg)S#Usn7n5a?y&xY5_0R#^BM}h6pfCOt;ep6C*K85ag z>oYD?#V6rSit4d;f@jMg1PgcArUYI!@=9p;mqJ5R&O#cuE`1nxvv%Uue^Gs^jO1rLeV3FoW-Hitx14zN4kdzidWpJLLDocB)TM%v7*f7 zpWy}tMca){Yi*1zf;X$4-=kcJBd2ua-|(oxrg{i4JD~n8%-<<-*XO-Tbd;^|TWs0q zs0ijibx>?sv;SgOc!-AoaU{bVprx+ToxjF3P@hUh#=NjeM zXMk^;CYzlr$tWk9RvG*oXamuj3eB`SJ_eOjlzk;S^}*t8g7XK2dXE}vCu;YX2XpCG zSnz|xvUvYlxE-89)Sppzl1^>AsgwFCGJ=Zrf@^H*b|y8bU*X_@Z8YmWQbnfl z{T?ok$}48dx5o;7ElJj1S3<<0;A+}j zglZ;-D2Ya3)+04au)bx2WU2SlO)u7w9-rHFsT^tziGSrumaWxgt@TnY6Rt_;X8HX* zJ6}d^=yPcTqA8O#LbotbbRN5S)R%wgwev|Un)I@^WYH!!Kqj|dfX}5m>a5_8tr+8N zwQm$4Ij93Za0s};UwyHZ`z%G6DF1Pr1C0g|kxAs~yS{5-wQAz>c-r9)5$GX2?_dcS zarJFHArgI)!Q9wStiw0*4SJjy<(YLptQ3ar9qY1+Sd1Z&hK#N=Jl|t9V;{6rEKC-0 z-8(=V_Db<}EeGfY^wuiZyu_^`U47U0Zw&UbW!)xTF)pvgXH>!9h={Et;McW7;yYR3 z;eMt$2N>g%Ph+n(f!CLErjS8A|6SOSN#SnarE`!3KPeDHd_-=j=9(?RCN53y;ng(y zv#Qk3NcuF7sb(Xq(~M~UCmF0V&V;+OJlUT@1SOqhS%I!^Q#MHo&)@K5QnaqS!p7ax zzH?-30Pz6Sftq#U07$#3eI*O14+HNWDY;mT42k>yfkvFoELjo#y#qtqC+qQi!Ic>kd8vUHd zG%>KKN~3g^c6Z;?8HsE^%VQ&~rCpgl`_J*~4Bp5oPu|X5TO+VWYU*H`aXykYQksC& zrf78pSExH>PN9w1cvKg@<%;1DaLmh=0J?UNRWx@Rr9a60_k!x)?eh@ z7PKv2&Sy%u@p`accpG6gw`cPaTYhx2)p`Yn4xos>Qt9@+dL@8j$tCY}{f>6L2~&}C ziW0VHpwwN5-!ksVaK0YX3|6!|ZdmFm5{5iH7`@iSHBa%bRe>syZ=+Ivw4bbXOU2D2zL-WaQ>u>8Hf?gCg1v6k4O`!LIW-6xGPfW zkEbAWj&lxp3KJ?V0Ik{yLb?t z=x%j(`C3~!pGQh6-K({;oTkiACvgT|S-L;(*O~WJOMuGQ+3MpuW{|M;Pv76YCAz@& zZDIi`Aj_`2?Le8-mOkz#*EU&4g85v^`pHx#gebnEwQ19Tdxzww`bWJ-szs^XT3B^| z+c>dB=)9dUsY2z08BDG(Y?ndAb4^6QPWomJNq9N%(LD_gFB-E7S*lj9pRA$nC2t4> zkzg#ki-e|)pi$CkPPGZSiS8I8G+)E^5u_J}4IGL3E3i3_m5(N{XV`r58XM%kc=`PL z%_mv>Ho?hyr(?#{p4+1{J7bb4zAkm>#A2pFq!;>J&B@Bx=h7hp+FaN>O( z%F7E$5mF9EA8t@^=S%VdvazHa2uhqP%U1~5Y3#xqzGf;39}q(*j+A3g)0@-bJIeyV z1cWbSy-5*uq6N=^X4_Wn{*Fg_WM}Fl3*j6vIDj3~@KHo2gor_*E2;4vLiqBGZuGwB z`FB_e8an;d-l3+12F1wle{o`OoRhB#@eQRCg#O82-?GW$5qu0p!vP6bAP*1wMzNni zjj~{EYah;aT`YHaaap)~kuirdfVLo+S^ENJ`O0L}DzFEkxYZpih_mRn2m%hl?Yv*y zA&37b+N||crqu=SYx#hY%TS;XKl66vDZZ6o$_prLlYfWTSpGcT%LJWW)VJcewR#3F zOUEobXDlE;Q#Zjyn7?tHM$P5Eyw09)Jl$KxN9^*LSHa@;}*nax1TonMw@sbLp# zWl@~ZOY04a!d~QzR@@kQ3dgn@4*afeK3;FNkl#Zf!FkW-n-jDgk9Moe3oy^NL3O={1Kc+;gZ==ul`wu9bXi8fque z*L|fl_-n>sy>tuz)pF5x_!Z7ehy3IzOE-TQz;vza$a)1+QbcDtf<_!k8b^c@y~W#r z)3t*erjZe1hA@qhz|55OOw5Fv9-oxwU;y3Pn{~1rU5|+`TR45$gI>;5KUH`&_B2-u zSQ+@hwH+KLIQt;lMI+3&t`pY@mocCf!u%IBAIpGqM1W0f;GZI|j^Qr7UTqgh8Aih= zPNb=9`N2jwTRJltQ$%UiynzhgYR{+czXg=@&EMPBLOEmLiB^c(P^VUs0Mkz}+=)oV zD%1)vgwZRs0l8WgOr6J=6qhiB+bM^zJ%F;#x{w)VXLn|5*7@i*e@+Pf%c5}6NhbDI zXtk$_VI-tk4u0#4M@2r7CE^HUf{5M#&mPvK3#xRp<%L6iJ(JvXKEKi)HltsF+FCO9 z11WzixqAA{WxF+VS;Z)?H_P~s{3zlI=i=hAL*K>Nz95s{o4o$4!FB;bn-9t-ULC;6mYr!}a@AjuHa=2?mLbI&QL-uy!vT>b6Ph_Oz1 zBI6G_IXHpYsf`__hND)<+g19T3B>tvQ-$XN{H_Thw!Ma7rlJ7%Ypl1vimQ3al%x^$ ze=cQTQcsa#&WHK6W8vi@Ba4XT(14#9j}~+))CHH=*@xR3JvMCFDKN08+pUTzd|FR# zkR_?r#82Ta)FrD&$J0ofWOuYFjiOWVzxlys!{TylSoVL%Pdk#r0o9~IBlWmn3wp@s zig<(AVqM3gIFYDjjT446RUG?boVOj(g7!*10)lma$WXHJT3&zScxU+0Vf--RgI=_k z&^Nwe7|pou5>DX~AM?vEbQ$#mq`_pZFZ{rw9sYN)%R}wVI*`c_G9IL&7}I>Ic<_V5 znbQ5Boo@ZTrh70=^tX{s;o>5V1K)=zQO_mSGTcB1|DQ%V3%lz@DT8RaUJNZ-277Hz z?$^9}>OeXhw0`J);@_5oQZ(=6cgzNs4h8)(HP7 zuhqZH$i=UQ?a#Ibev8Xj0!t$6&(?Vykkwt zy`oyE(;eZ!@0Egg84`g2NK%~vrL((hP$G!4qPRz22X{s!$~p5#tWJxvAlN+KPWVTe z<_83qeEooP)@S;&l5~JYX^`lY&SkYv_+qOiidCSOPTC639>}SvKI4)YIjx#@L(!F( z+58NRE*DN_bCezIZFh>pk_?I0YutP_cA&zPc&OGq3H4yJwG!|B{2U=|MCX-Bhi}v9 z3dougagDy0+T!bOpY>B)IWyWL?z1#QK1O;X3x1f3F{hI_)$H9e3thv$i zD)Ap5O+3$8V$q1guLrO1VcX8=v{8HG-~9gDpseWLKqN-i)5Vh$H~;E83>A>%d943+ zzw%b#K9%t#AgX!z^#)7x+k8Eh92`IiZ0bkLSh)M`4P@ctDX=G${&Xor^oGd*fHZnQ zWH4;pn7nVZy#ReM~|6?f21cv0qH`SL0Pn;1Dda3 zos3eg$HMaqFgbK2H=7eC7Q6&8XIiRTNHH4Nj3`dMVNve+Faz*6fJ?Ei{@z#LG^;P% z5K73dr54yUuYr2=gcqVJFEiq|{u>J_+i53?kIexTb3g0Yi}j5rnpv(6vi!}~nqA6Y zMw;@okeV{AViA(E*?CBB?~wgf@s;UtUe}D$hONfbP&e zV7A&M`J3q8+_}%6j?BL)BupCBYt>I;Rt6LoWfsC3dg$F?WF1`Pa5_(!Bjc3-5Ev&j z(UJ+{VY^Av7|k?o{%)eIEqy9@P(y$+O;&eEf0)&_EKt0;JuoG3C)EjuR6J&6(@ zO5+;-`IMuB`2t~Ga=XycB(r}E2HC(xTiJ;Ovuc6>xQJqtySn6Cf+#tm# zIA0nFOx$!(5WIBx0vai9*=%n%A^6@sd=DqlUH=dV!BNbd6gc$|gZ(^en>Ojbk^2g! za~!P4`Osoh&I5vOOr1z6wqtukSIx!qEg3oS?nHCtOB7RuwW;23Lb)0z6#VbN16wGDB3Ih z;W()1{+kj^uo4#a(Dc$7MhCLIr_o=}1vBt+kP#;c5Yd8uB&_J1c*caGj5d?HrsKe8g}7LWu;eVHP)V@29kPt8lG z8(tL{?T3=mKAB>|UIHW?ViI-Y#ojq3$;QAIU2et=dfSPdGOBBJjaHxV!L_OM&O63Q zdJwo}1kMh!PE+a_XEx&f`r%xO<=Mcbuw4-P`oc4gtML&$O08R32Pyj5Fgy;-Nepq= zS+5(~V!El>(06RP2Hv#E6dj{<=3sQ#s<$=bsQ^%w8T?T!# zWcI|bRND+}a4v8U)HGEeW!9x|c>eHOb+H4htKQo<|wrEW&> z;whKmxUK%UwzJOq1LeprlEjC9OFr(*oXQ$Wc5KBY=H_1)W6aTGT+&jRIr1}SDS?!r z4UgtE6` zM%Gq7n^S|R{)NoQ_zG<;50d!)^2EAerECC}#>;yYp*eu?Ta?t5!T7VcHu)o;L|SPk zO+2@+=m7eo5T-FnE|;-EkfixjJ3(q*o{j!|UJ-lLj=r7Q(00~ZR-IpqQcXG{E+1eq z&mzD4iAX}Wh*;se7VYyV>36?6s^ar*2@+7v9O$DaYSy84&N)J*jmlb4Gkh2z$BT)P zh_p0Kh|DU$F;ZI#zeu&s?((m> znVS}#B+^UQh{tMT+WS{FWxtnCm+7-=UCS7nB$&+{n8>e78lkd{**xXm%!KeY&BzoH z&!)C=1G1n`eTie>@E3GqEaa=f$UU{35$B3P3K@A}zyS2Z(l|z^rIRqcXR6)6FmBf> zCaSt^Uv7meA7iI2Lq^#8{g$qvSKX z6&hLVDh&tuB5rZavQ^S9{Tv8`${dg)&e;UV6)kyg#NX|=hc;MExyZmK44_SaQYrzu zyD+gae^=qE%zVVj_CNQ))_!8W##b3f!j-zlj!crq2RT0s+);xh#U=qt*hr!#g|mP5 zV?O`X3hI%*+sfbY_Yef1q-t(yFGsghHk90%^8g?a@Vr=23mkR>7BfKf;%!K4Cdbca>fK(aT3r>;sivZy70f=N2%r^D zgsn8*rEoM^z`yIys;#Y<-^NSVo22y!LSZ`^arw48pU@`lZ?aN0(HB3PQNqhOd9#*I zHLUuyu#Ti<4)64avOzubFZ6Qct(;c`Qv&FzdxyVFC_6+a9fVj}l+adV#o`T7?v}1r zG3e2+dp0uchC_G`kFxlAS>B|AK=Z>LHpn@j=Hbm4Kj#c^0SP;3VOy{;5k=(hdwgML z1PXFNNgrbVxAXy%kI+-{(DsO>h}ns`wC;E$!!N?cPM~cpDVxA6ebMVOY%8$B9uhs% zi=*DAguZ&j>XrvqwK695u4LV~pF-eLBRiANr0kNz^)@2nJkXL-*7J_KJiGX3WG+yj zj>680d(?@^vgB}FVR-z^pd{PH5CRnJHla5CZ?ESXGRGMvrD(S*V(=uKIyV~ZD7rup z4wInmdz{ED+6-d?jTr7awNpZTz(fg-1DN*(l+R*dQFi$Hdh339+nIb*`C zjYaJA1k5c@e(cGni=r*Pg5gdY0(1S)1REA$A#%1ePK}x(0Jj_KR%~Es{PwO5b_wU zx6pn)YQ&A&OJYyUz+xRuh5Y_=)$n{gD>cX9^Ak<12sC3YX~X@~=TcT8kj_}~?9pDf z`Of2eGrF>Trve?Mxy)!LI&3K3^Eq#-OhF=>)?$>-tF3HD;*hSIKx+Bj6VZrI>Oz)Q zZzbk9yBnn7F<&K1x9xz6FC*%=0UF8gcC)}+&a&mxi@@Q*Jh#!#4X7XSsia>^D6MF#WRvxw{{f&+5Ei8&c>MuyzET$(m^pmJP-Z!w(MvPRJ zRSzDj5k^TJO)7Imz~FKk_^4s( zovf?aW&U(qihNyH&Hu6}TX7Etbsn$4EH}ZidV>I7*jQlgpOlNeCdlo{~L0lXP;gFC*%aSBg8a`;z3A_qn#1bDl@$WM;#~k%t$D za*6u;mm`#Ga^$6O^G+@4bYHwLdLa@-zji6`hnl5&yeEo=UOi*lonGME zh$CU9YYGV}Auft;#iOxei6Jg_j{g?XE6yb?Fk~hR#pj;w*hnl#LNp7qVm(p#sr?DE z>|bT-U|HwjIxIlLiOgS8eIf;$%@^6vuU8NswT^xiv`IQY=CREM6w6{o^Fm=QGCuL& zmZ9QNjdj95AHMM;5dnEs#FigEgW6VT+{`Sz+L>1CSyJXQj7n2ABzU5`9hp@Qlbz~# zepnYW3uz|zfPz%L1fCF#>2ImGx$DY|51Q&wQJ!*pfc%U?d~EQA8+E4fZYj;pQh*Dl z+=dy4Fh`Tc5_m0=YRZnbuC(h}v|*KV%ih(Mbl_shl(C{v`l0G*D^HCgyJ`9PZyItN z-HrieL}xVQS58V7Jq2RQSe<|Jk1u2J3W$LnOEB+l)pXBWi-z|TwKJ1XH!EDqx2(Rt+iZqiS3l^0mMAi;jKTlqC^&2<4zORd8%>})L#qCsSfng`y1qurgG zZ|wGYmsfIn#A@T+cAAsnY=svMNSvpXBgL5Au2ac0A*B5YayFAxnRTrYgzhN-3SSYwj<{V<@>z zs^jOwENK)m;rKH8*SOv7x)U4*!2AGa{pw8bRFyZIU}_X zjbMhI0W5myD$Owf7yJWn$iz>G0InAkVUCuK-62*vUShkiH_y~&cdMKX&XaLT1-FrB zyXL$+)r`aS;q2`cF<@IFh3a`-HY@VX=>M7tq#~4l6SYTj!=+GUa=_{%6VU_cL19dhIpcV4&hje~zq) zz7&_{t)h0JPr-mTftIhxpb=7|s5x2VM1DF<`EE_!C)~>VqVoh-^ZN<*oqd>v6Wl%s zf(X4v?*nwvXlljt=rTKkhQYH**PlJLdJZIY4$J4|{RH4#a9#(@_a;s=0K?gubv$sO zCl7?~Vk6C1Yeq0Hykl?cE_qB{^-S$VW!2w30X&Ksc%UY~;^O+H>i#RDV15k(J*lR+ z)&ufx5w{zpF^quJ6mUtlB%{t0o~G9Wu3`W#`CV@r>!C66IIP(gynTfWS~rfz ziLgxPb(7+4#UuKId{fVacL9_7lyjE!5oH+kvQORa)gE-KrMwft)@l>37cWxPt3D+{i8L30 zbyNU8!V!FXwFa%d{kFFqNxB9v#V#rrU1~ZHxq<+wT}>TSbA&8BBiP-}lIftmiIWRGEDlyBsXxzc_ zzM+U4JGmWiOq(D{y1^Blsua`#ZSS7}GWsPI#eJ2kd35XtF6<<-_d$=0(*16442LDf zW%|6u{-+}#Z}|e}L<`K=b=Kevgn2lsFw)E4|FPFM-np?I6&r&z4`u{ zN>$vucU+d)H>E4WJh6nMN3cn6K_dpFNd~kCD)8Q>DvUV7FBnu@8g(frgc5%HeX8Oy zm&e>tjN6C_j1USCbnEC97Fx|}mNy5fIC~Q_TB67hT=9Wq+b3vw@mDEwRf`*rB^H_*Rk7l{wCqvfcj_65v|1)sCgC8PcdlF)RJaH;y7rj2JPJ3)o-}{6?rwWxciN zU=#&*$N;>Mb1!$4Bz{T%2AVCpLz}y8u~%(zD}Sc$Y#-vP1Ek`{{@sMmVhRrP-Z|J>bHg96X#TTha+fHR^Aiqvjc?N z_liR+if(9QaP}T5;o(iPGTUNB8r4Lz*)1*7vV{LKTXwC+6b#DNzDVDk*Z6{O;-jdx zIcf6aCC$2&W952>?Dm3^CWYkXX)~txO_&EadvE|untFa!cMP`w+v|_#Bf;Oc^%K9& z)9qf_Br57{zslB!!(EmIngXPFDP|p9Kzeeto{hgAnRbePW&Ub%<4a)pU+2j|%;Az& z(UO*l2s${75!|L{lvJO9*X%kVd#b17f-$0OkB@!J84 z^Sx+#K-1R9X-I-Fzw$PewXU%dm2CoWlF6#iywIXK14R=JhPDp_MyvZ+liy&~l{e$p z!cuhWh(9jqA7DrfxC<41QV8+`MNFN}<@?g@J5zb!qAgzR=cH=lh8E~}R!#(gXR`_{ zv`?<*y3lzXy`|j3CNpq<3%Mkq>ZE8+Q-lo}T(mf&MuCS)L<6E?MdRy)((aN3N>rf&CRou zI=G(1ZlqS6Sd3NqGBM90J4W~|mom10fq*LzN&V;VxVcmSu)X^BYuUlo?LnY}a-X@- z-)ybt1b~SYjMKv~*<)ApgfmDJ_A;`lz;#YyH0(?Dhm$Nzn`P(S+Cd46Z>2k<1-)^J zG)m##Qs|!Ivb}cQkMh2{$bkQ&J6Ye_N*_176Z{ByiWebCuRAD$msZPsKQmXDYvljx>9lbl=C(cC%j2ZfeEgg2n|>h!ZI+N4BZ!8T>D4j@E5`4K_*<;37kn$CeWAC?UL%R)tM*G0vo^UbEL(<1h)SDtX1L8}# z<_SM<3zuCtn=6){^@(aLAi{KRw)?s?j1A}Um6Izx=`^a(eIXXUJxZV*cG*Dj^jTDB z**I@R_YqX5m0gj0mlx-6{`^m}B&GqY$5jV>d(Ojq;IJ_+$)+p5HOVPk(53^Cc#jA( z62#qy1c97`RN%OOxfEm?Qj7Y3Ra~-B$!uL| z4H2F!+DOo@2-b8O&hB!NQ&}t1AGY)b$K{mMeD7)$llxQQXIJTRB$F4|uwDG!!FK-i z==x8$Au(_V;VxaM;KgIbMmsM`tI)h=9*ks~=-tV&VGxHCn~aKBQ_q0}lfh4*1RjSx zS+9_?ImT=QOi#e6+;cRKy66k3MGA}!__lvCjf1bA^YY6g3b&2 z5UoZp@44ZO5Z}CzVzGaN!8s3=TkRC4Y3auk~2&)d|J zSU%QqaAhgpk07(2@8i5pQ3GhLJQDqpY(r4CqhiDiWMJHV;b}rDo7Qq!724#WuLehQ zFc5#)=EfKzd>qMu{%ii|ro>fpl;8~9HpraBMQjn(urJ{HXWc9%yIwB<i3G7{OSB!-e5@q*EvgbiZVo z4v5OJUzmU6gUTOO#bX{gpfP30A>gQw9{Ec7+x4kwF1xZAT=)@?|9iBWSHKNYFc8+3 z)-6WDGsz$Z?ge=mhcE;FPSR#v(&h#`vb=uXn6To3c|P zElSJaD_x?2SXr43CQT{xD__3km>HweGKq@_90m()F87L0pD3s(Kn7&F*VhSJ*JJfu z@Q2J$1OxM~vG{|B$_`t-)=T413rw;++avEew8AXrONlKPavaV!48__DZdnwRLBpP@ z#zZKBj=cM#H)yKPTqsSI`vm+gh9+m=To!6+izz%GO&g-sHc+VfkNqF+Sz7WSa(c4?zD04u7)|NqL{dfLJ3w~w^ zWW+102aaHEZ_&ePs1izVATPXx!g?FlcP#UP(bqP*MBr!97vrzc(;;R0DOLsK`fQ#q zoYO=Hd0*A{VKCkuvDW#GuL?+Sa{!O5ZNv{6gpPdTvR9459Je{jQpjma9HavL6>&SB z%MUyP$1Za0zkZa9=kh7X8 z6ZYI}f78nbQAZ{;BW?NQRUda^S*~7mkC%b^70U_g?|pz&6B57MXS}FAus5q4AT&KH`Dty9b4{cvmb{bxQZmA>lbeP zFfR3hEJ9f04>x_g)(<52Fsln?LvT9+?T!N0A#ZYafi{}CR9qN}X12lm13=q-0 z@YU-tS0QVPPEA1g4((JRUSI84CJC`oA017FvG}57m73`CWo#7ccE57Yv#T(?8 z{>r>NX;?6ULc*a$FW0p9rZ0zk+QS|xAD<|UngDrW$l!eje|9;*qM2&yG*HXFvN++3 zOze^NWVAm)=9Pp^0+-7nr@vYK(3bLR0np`>8`)m{6lFo`<>;ba;C&XzU-x2Eo3hUi z8}{f1NIIZ9Cd6r?ZdJt^`=F*6$T}F#mArsgg6LM1~ydwX@EmPi;xe*%k zLWzp^yYK!6IAs<8>OV^4!)M)$a`8y7|$1aHZ zep$(i#ygzYL)P=BP&X>|`*7VVi|V$2Ygj3@xWE`h!eSzug^4R4%YJ~-9}2{zB&`_Z z;qi6E^Jm097s;BbRL8=Qiy8oY)kFg`yH1(I>*GGh6wrxu31=<0J>(+yqJ=FrWw{) z(08s^>pB9mYV~saZS0h~#ZScQrh~|Z4%6MN)p=#;E-9VvmY@&D zfYBDNUp0iA9={fvdL$c386C|Q$eCG-{bJQX)<7A0o8qZ~*(*msv9$M(9r#P*hVrb% z2S^0b!#LGb=&Pq6t5v~6rv>pZn%5Fxt}NM)h0kfSOG(U1hyU`|Q>pYFm{B+`^i7CW zi9ce?#-o>kDK{V2T;C!oA`GgBp@FVn?JY(b&9W0@DAL=ceON`H09Hoj5LGI*KM@Zr z6YrIxE_@1!nLq$5Vvj$TK>s%vwZ?SbT|49_l6}02F`=p=bwcF?QVy|tYXX2+;)o4R zfmlW&>;`Vk4TwvEzm$9$>7VqBiZPk?k6kT_DQo_2Hds8p(BNWe5=ZMTICb_13AhKA z?Qj(rp?XI>!NitV=F z>6YIkCsUK>SYs8`oy7M@JK#H>6&3J@0Zg&xH>Ix{6;tK1u2-fBJ1!1~L7n01`oR-8 zANrRD03evy99)0A?giO+b+eN-RJ7SDv(XP)97kp8W+T(3i#OG1*r)WFKXa2P$A-1y z4+&@q=L z9H}Py4e}_AKp(=@lCdVqSmgPh=!RNyOY_Itfm9dOMbgrAw-gui_r)fLd} zBi>Xev?Pjw%N9$w>VA;T1|vZypV10*|1|Sh(sd8vn6Xl@uSnz#zJZuW5ogG_M;BIZ z`GNhC+cF}ovl!Ey4DYnJD{OpCPQG>H*glK=DUg}7jVXbB6(#89L@&48*UtJ5X|_2E z@d!RtQ%*O@n=N@^qsRP@tjE>DH{kR1w#)c`CkHd$eh2c2tEzS+ik(=Zdv(EwX48f89ep zAYb<3AR^$ZeuqHNn<`(+#+YKeP?WM%E2qh--hZT7;4olR>rxEB9Ca`gr5CuHUzm$z zX=hKX2-xj}Af_0r>Q=1zrjsw8e9uwx!f9YY*;T{@xb3d28oO02@HhYRxlrk9=d+|| zA%i+TjE@?TEYF73fe1oR$rv-A34aoBTfM%mo;F%@g<^OXCYuM2DV}sw9Mh!zeYDC`k8ikCdY2(L7`SwYcMo=sGaigcFw_Urs)M3of1mr zq?&|$fP^BGAG)NClWG4B9WV!`k3OylM zB7TFSxVOwt4({)6Ecy#mi$3{1FeEcT*a6D$#E&UmYyh+FySs3#0gm;brCbfHmW=Z* z#W+Q!c_@B}axX&_JTx_DNYuEG{BgU2(vuR&ymoCo!eG)HQ*Xe(H`znudA2%#jwgef zO3n(%ELgfZ$Rr%p%zXaM)9ZJ?NhY>{stB2nOb5xva8Ui0HBlV`)a#!H(;G( zs2!K0?%%IO!1OyGB4WftRtj;yZA`H8EYYdyj>CN#6G4yinOz*BAw^?c||XTAm-VO`7~MWCAmP)L!J? z)YWTzSf}Qs+?2TY%*&oIq3>5}#Zo3o0v|F)Z|h|^B&L=zV8@E8mP{&{oe$)<7!O}y zeQ^f=+;cYwrh=f{M_7Ij#|KdU~(z_zh+dk+gw4hRJwlRPgDhE3l{^y&ObEB}Gx&@+f z9l>16l)pe{_5BF3kzydeM1~wWqMv7@78uE=uYzU?O3cP^k?yQDGt+AVt(|asd5wsa z?zkO9hf&*B!du`<`xF#$+YHvI#VigCan!xqRO=kS!xf8NCXp%9KoD`iS8)Sdrhr;3 zL3o8%?0oyw2SS87UNIQyN9iQN;7Id9W@n*{zD zW?i#8Km$dZ$M$RJSi24N@}xP&<@#2oAtnhX0U%0z_wqOt5@Q*JYhyY(w~>hvMY7yY z4eijyn?6@8B&EtjWmra|)kye4Z((5b%) z7|t(0gz4utvECLz_(eFY`xGaU=%BmH{{PG{&wM}ulE22!jVPK)s-W6|rKygasDhte zDD?t)39#C!JGpHhK)Nv~AH3JP9?tpsvn?+HU$r(-(%_xA3)#+^5pLm8<>)AZ5*Y29BC=fK}N0znj$Bn}koHn5S z>2FB_z_*u(I}y`UgE_i$;kWo26g@Pg^|Yh@b#+%IXqrTsN-NXgbDLa4qqzyol=7z` zvZBQux6pP)-yQeRMr{|onF$1!%RE#l?&y^>9pPsFyQurO!XODj$ECcQw}*t?+nCxSALAb*)Cs&A>zevqG?bvz!JwoXI}d=)KMHnZuD*~T>q;*f3WR-E)9y$A z&?r|!VS)6UQ20DAIP{%QdUQL|bSS`Y5>mIRhG3xf+!S)TO4j&~Cusc>ekymgq4 zwu(DS4QW=vP)!vHH3mEzAWC6t{k&J8+-1L?-T#n9NeLZcel$0iGokCpyXM~Ux`2OK z^#}T>i%5CNYb4*9ch&3n`hRYJ(0hVLV*MhY@## z8Tyk~)1;wYr6)ETf#8avY0;G(pAvjKK+1U^K&>k5pD2NF10ek4j`-Z08sE}x=!i=` zoQI1N|a94JnGaZR58 zJe%4Wl`x`h!toehYC%x&YN=e`6prcNt~Bz$#n>>TfZ1r9c$Om1e0hSU{6+I~WJ-**W$8Q%&E1A%A4VE9U*Ap zND!Yb)`uYtCzhux4QlcW@3`p&i#zFsO%bM!G=~nMDg7!!;Hh!{qKLxo;f8FY%i6*=cn}409?*r zUytlLAWELxd}3#YLi*av`8<1b5s+<(N^3D#~_P@{OfdF|goc)Eol2UyfT zg2$=GGhV?g^KM0Vq`V?9HJR&YAJLAKAVmipiK^+9@fB#Sh`7mkirTg0FrOCHKsDKqZQt|h9}YO|L3!#{Wqz^?TS5qqZS?0st)$+oe?7l0^v}$^X*nB+ z)Z**MP)&cW;*F2VhI9Nw-s*$N2J}2kb09){s1}G=Z(|ZnHw}lwXeQE)B$?|a?VKCo zx-S}x#SWsJS_#QUwk~x#L7hDBpO|qyk4umiGkdnwmWVLd`e%aFYnqA%h>%=U11VUd z>9G|4bm9?%=+%z#PV(=4`Wpzd9~bJ!=e%>e+S*`F-j`!xmNqm62sY>!d7HYZDjou` zLrk}Tj_NlMSP_cLeR~%$%!O7M_(F+BI(b3Ek`i^|cwpQcDpcmL3A|VlY{UIlALKbO zF!$NWF8L0L@WzVyzSfXHpraN8Hzjr9vzy{|0$XJ$J85cs;K_>$j?1)u;Lj>7+j1Oe z`P+PR&57C%p-@b#n5MXcgbc=BLmHejrw~kr_JLga2oDez&}bz-XL%vo@rY8Bo!9VE z2ZIW$f46aSKf+a#!fJ*~8Mg|n^{v(5?pgnZ-xU}-F#Dfs-30a{W(f0%DBqbre`&1= zIL-bPwv;J|pIFF6LGr^8eO6 z^&zoc0mb*jdN8L!FEKzXD!OF&0qLTo8{ba!t^XZmx+*IC|GYRZ976h%lHv)?+GHhg z(n;INowo}dD98X~4)_PJQn}+(B!fx<+|N4Zo|L@sx|jU{7*>}VUavO*J!$=ro58ay z+mHw=*aQR4pHeN(o)dE6=yJdIa98u68@cKcysvP@C( zgTBAFz#5DZ-bih_?Gl z8Y2550J1$QAbPm5B1h-TLew97G5uZ+&X9ua-CjbU$4DhP;oRPlRf?XN@QV>pAJ8i! zrY^>E`)sO%%5^B^Qvn8q!o@CkH zg2f%JS3DO~)&42Ek@8_oIGPxnh9kbJTpM-7P&eIt)WTdbbRKh8C~IbUK`R7E$^22R z^JA+o3#AB7v{7P+hLe#apyU7TmQ#v0e|~7i4u=C*vZ`HxzSYG6K;KeHe?C#7X-lhO zl0aqfrR9N%yiY`z8v}SA^_;KIhZsIpL3Zjfr*Sl7P9$t+Hb%a`}B|h6dQ(KD~b=nLBurPSH)@6RAA0J#gl_ zAl*hH0_f`D2Pp=k|lN9vt;$pw(D z`rv1*1cqT^oH23i)JPGXs38-e+^M7?L;`%-_C+$ND~(e`r$uKdP%%(>`dx@epQ&4Y zN6}=jIuVpNIV`mSdP>%@ZD?tpxG`mS7pv$x1l<%57+$u~Lg#3z@fjaNgy=^8m%Dzv z{x>u5WV;xv7D+6&;!Z^bNAR+9?rN|H0&@@!1bAsH3@X5+SVNzn!KP2&rbfZGmU))d z`h8Fb6an2Oyna@!d_gnQxr7Ya;JY!PBuGhJ;O5xT&5H-=^ZurqRf-1s%eIzeq7mf& z+zy<|B7j4?W8DPGLh;33*t)lR^S*!@4%BrC;tEXfj+m7N$Gvc}G+nQSBYB(7)q?-r z@{J0Np2Wg>pzASU+T(P2VS|9;VK)H{!l+s+5#RP&W=nu(DPt^D&kA4a4M4KQ^-q&0 zU6=l)v*364fi-6f2&onQ5UU^E9#OKS}TY;q2?ip(I(}zlCzgRH`VP z0US;Adz_3v5Dr-r$#xLZ$(zqh*dzi-q^~Kl22=DpDDQ&?^$a_7+n6W{8a*&(Y-5vs zuVZ*Sa)rJq*?p)3f9PVynEJyNsPSC7Nc3QknE0<0s+|%%pkSxliiFC8eU?dEh?#gk z>0L3?x$^aO<%)`VlmwkwPx+$@zO1v>S@U8z2E~pZm~U%-bHFB;y?CVT2-HpoLqANV z#_3yflGkdwz{O%zYbkyoXzX=_KKL8!NCGfWPqT8hbSsrk-@iS@uo}-`U1J!<#JMDg z?y8x8rR?!cOKenB)qz>gm1Z=MQh2;Li4h< z`47@@aQ?9tS^iWQhuBk(xo^oTf5(x~8 zVU7>C+VX}ZvuMC}G5z5wM8zKJugqXI8as2&Eb{0B2(a^su|^|q)xsY+`AO2R4qhAT z{heC4Pr(J2(hbw6m->?bXhV^s@3w4FJ}hQ!6y)32vuw(Pv!KZ4S8^3izVAOVJol&f z!f^Md)3pITn_!(1Y6%F#Bqn>5dX>I9&G|!0&$DI-VKNGCKL1^DqUjvO%*hVQ=RQhi z)TIPSu%YYO&HG%5z5xAbYQxr#U?Z+sq3vjBY@&^p7@t$;;F>a`vJ$9)9BhFb0Qs>F zv1@_)I$OabciuW1NibO54tlQrkTdW!yK+y#1qYvvoB)KH(^nGP-iGEX;XfI!O_VV8 z^+7d`&Us?<04>PxttQdv?hgwfpJ{sxTiJfx@ptN2a5~ehk{Pvg9jF1+Nrqs5HzxD3 z$Ns$Q9P>|>3Y9oh7laA~`mEv=5K#(yD_p~J)k06+_Qk)q z8leODAyEL1@|9jEc$=#Z1jXw9qjwyTv;E~OcrGK4=Lm<(OZA543!+Zc@_=6~<#MUA zwPH6X_`h{4PQB`a`&yYL??4!IB!QPNsMG}>KN&7IfUD#9fa#E20#Ir<3M8`5eM41N z@?1}gBUQ;>I$%-Df~o18FFloijZ23^pq@>_M{&HsJ=Ez)|MXF2ZS6ScWhnEBKVt`D z-gh$f`Rzkx*}RjgUN3CRPT0*LbF4{jm|s;Npd4kOt+IeRE4$&Tq|{Wy9i4KeM%0^I zXqt1ai~C`)1bZi9)E{<0;mL;8Ql~y%8_wi2WBxSyu1X-(j|D^KbFO@#`UL@o4E7#B z5NLT}$S)o@dP!N<;Bo}mxum&Xzic)7gP#YRBnIVlMGQKVqNvMk^9(jvi6nqGx?W#j9{y2fzrNICD)zHfgk_}%f6Dy^Ar{7F<(9WkZ268)3`M2#!TcF zW3%Ncxd|yJJ0ZDpB0FPFtsL?eSBQMqtFGY3P;ST>g&8uks7STxGPc{ct@zg9g5Tj@ zcAF9iz$i15S7%bq@wiJJX)}Z(l6=hxNs7TD=e4 zQdC!OAaGGi*ja6$E+3#4K)mXOH_>|(arp{yy+mo8zMu(Lp6u`^@r;&w`IMTaS3DkT zvSJ(Wd&e6}{%08H!pghyxgJy0y%y$Md&XE4h}77`_quHvcV>@lZvhcPYK& z$2-kWl20{asNe+&0CXhukgV5Aio<+o`-fc|7N42cS0HrUsjKD8xEJg@l@U#+WmHT| zlz2o2sW$%~_ppfO;Zqv1?Xz693rpD9vs;*Y{T+3h=1u#Aa*#k(5o`+=H@L#Kuo`?x zKx=4gfeky!D%}~9>g*?LYp_ee_;&}tFlD|~*>#IA0c|7j&a@3w1ky2pFP`%-v&_!* z%g|o<%Z3%=Ek6x_?wQUwz{^ZBcZ8Ebt-Gh);Zt*afc$rKx9Jghy~T#r2WqMj1&L+X z023PmY1=H{TxL70G^?mHfC5dA$PfpMV5qdqU8Oc28bo<78^7A}7;IS|ERO2$zY#&L z^8xVpm)5330O)J{Y^>&R^mxr(&;tE*xC39yG2u6He(`HS3nP*eyEtd97CU3~je}Cb z*@fD?lL2VS|3+>>-7`|ekMv|PJ#zzS zf8y+aHzt9Q=To>+yQ>GQT_jI_jxr5VtR(L*?{do0vRc2jF0|Lu#~uv)qAVzuzA?LJ zGk=Q=rRSW4^JB*7>!7%2k-3-brPC!SE(#r}u#C%dD|MU?l+s(iSdd-Vm>By>WQN`@ zE+mP5KAH1m_PU1)E5F>Qw3iAC!x&uAiV~6!r|+p9#8q4iPD2-K@TpHu6h8(ALUr+3 zSoF+;Ouf#;ws3=2Uz~F9iC3e;M7ghUiwSA*?V@)>{=Bg z9Vn&&&#>|jc6zi(Xi>ophw9DucV2bx+I(K-$7v6$j#8>uWn9xzy{cqFRtaCSJ@iM$=jfY zSDpySti>%q{Zu-6b7a7D6IV96L3*g)LZ}(7At!Gs2r8Mm>SuNv1UawI!yF-l;;1(N z71AlNz`gzr=Wms&^X!MO_NR)&+@0q}uI;bQ*^~(HYK+h&wKj!C8EC!mhXwOt>+X+ZjUFEh*zV3Y1zfVZ0(q*#%$1~Uf#cRuuhA=3KcBB#{KtZFnNsHb0l z#2R9(-VzWW%h^@3GWNP&o0N>!oPg#yU<~XAa?d6Gn7+%5)u9AB= zV*XP64S-EQ&i=}VWNCAJ5{g@L8k^E1U4gu>k-2GC=EDre71hKglB~n+n}j6!i87sr zNn{^yC`^XZqHbOqBt*a7+cLljLHjY zgCgX?j+mu&>epAl;)j%>KN~tbdgC69Mk0s6kQM50{frZ#pCnG6>^%2-GzRorcejl( z=S{Kyu-(GYpO}3EA-dzt+I#4>i=>0jm@}2rsmrq+tQfQ>GKI{$H7=_Ps}T2}n4~|4 z*c-Wpvz?ibe478v@gS^Es0VN|+vAU^m@&4!2Aq1~A8HRY`xHDpCXN}of7ITWV3G>l znX5R8K0WDNlK~ds@Vn+J9J%2ttQybbxy=d9n-eLG_LohLf64pd)GD`8bJG#re#4ny z9Q|k6WYuAH%(-x7QcOt;^|^Fi2-ul;(Y-6^B)3(}WDk34H;*h&@tq7_Z&9@k<0S$! zlDWmRnc)ANCnZ5C6U1P6r^Y$7i@`CSFrX3~oF%-4D5eZ^urz*waEU+~8q@jcg)A2F z@xp?iLneL#XJ8V%Wy!6$o-)tRIAO>>oNCgXJe`}d&H+MU_s(R~HHfJG$l z8K#U2Hz#<5&yAYZ+ccL3V;ORwLu(umn!}10ODz%YKKBAGk}oM%e4lc5&P2n% zpn%2#o8Su|Izy*3mS~ZMo5=A*WU02~TnKwAF(`WET=pO?OZ6TPVEJ@n5xHA``2Zv|wrWO{Tk-Bd zBadiwJ`GR+&AsjraU&e>)9hu6Qin^lS%RlNYZ@ON%Qm|{u@!8a3VXdJz3YQ*@bM;! z_tQNJ2OGW@#JNNWYK=N%_Y4uN($GhiH@?vnCe270i{`6T2$F` zp*7^V4=?~P!B(DHVrp+e9`GwGg$W~31r>Gn|sQC3GvYDg?5Pz>^Dmi@jEMQ3qFw7iTe%!qU6Wk>Dyu=%>>m_%kZ{$zx z>W|)nTh(73abO-an4x!{+!C8Cvw9o9{ce2?I6`uXdAbk4fdsBFVfNi=bB33)kx33D zCMI0kAZ%a8oT#MrX*fra;p)#HaK4JAdI_QKeT3*iiguIJWG2%dAFrO2`qvs1Shs`P z5}Bf}>RO0C9`Q;Oas8}0-uGkxKk0~!Xs*Ivb7B*zUE=AK28j%6aq$L{n4=L0p=C8q z@M#Bu4*Si91|&-~fSckW#*`vuZpK7G1|+u#nNtZA&D}Un-`WA3LYig&$J7GLRTzs< z%;@zFmgU&n_s_5-M>LN9yA0jVSz`jJXbung&VH2v){V{j2OUoozmRl6CjR!bDgn5j z8l4giBImz@ldl>~yEPUgwQ3!l{tiM{C6@R~a{;i3`$W*6A5g1iW4%_a!W9-5;=t zcqxWU%(D2s0}*r<=dHlm2Kp$b-Cc#1 zGa>GXMny7}KKdMsUo+F(;SmlAH@v^-4(UBz;A1f!&Pr8bTd-t@Ww;C}js5~RmM1-M zp*6-dN)X0j06jAQP@ z-%>~fPM%6^13Na2<1(zSs3yJc6S@Zmdd80tL-^lF%V>KyV#OjvW41yXUcY9#(5XL5H#WWTC3~OiA(JJPiFE z0WBz`tpU8xtjjU#MJ7hVVo1 z5U)jhGP66E_VD{y#9GmZr)~o{VeC^9I8cftL_>eG7Bvk|ojXEi%q5_j&KI}SdeCZ!q#_oqdnSzL)uK9uC+M1)mi5hh18pO2{NSTBry=<^<_zi(x74C~m-mxikr-uZ-J{!eJ*Hun22B||1*$t_CG_2}x_>4IYR6M9r;H+Z zTWtCTQ>*_jow?OZW+23X7h-_*Z3D9DH#Hao`>_{ly8uC*EBtgV)}nm#RU)n)d8 z4ul1M`3+Z7Ph3#8Ju*rWk~$v4&_MnY=fW2kuD=uun+HqEAnL=cKQN!JvFMGU@(tUT zn&FDPs{B@v!02=eMBZOp+A{cDy*QSky7Sd@LB?6iZB9}jald3*7#1`YEe+-LE1Ojg zz&({~*aM4dFPny`<1#U!Z1l-xD^q^STUF)Zs9!K?6FeV6#}K72;2S~4no^XVl_}S4 zDIq*`1o&jEOvCe|Sgb|kvR7H;A123@i@cdK4 zy3WazX%OlYRUM}v1DP(ge=#}pCFKp6eW5tuBZmQ9&e-0n9yKP-zCR4bU?S6@Go!;D zZd>EuZrtPOPf6Ir z(74YzTe=tRAC?v3XbQkZPNx`)o)Glu_x+h0$iFX1Ks?^{qyigvw&b6}-2#<~2lf2aqbH-^H)ZaLUR)CFeWf$d~e4_R9vfvtj3_tGBCE6~s z94SeUSy8x!Kx_w*b5-z)TF{*gmOm?mh%|yK3%i`DTXiy|k=%;nNcX7T&qwPaAWNtD z`j1<&XC)K)y1(;Sr2Sv46y&_QFZeufdey%BA$4V*1W_!nRmsP3rjurLe^)j9!4Qnc z>&F@&%Er2Kr`JQ^S}J_G^t7{>`V1*AlIeIASTJO@<^c|MP4Y8gHVcS6>VR@ao6L2x z!NAaX5qJkQ)c|(?j>4H4!^K00TN#{frW{_{pd;<*Qs@brY9y6RDRa- z)Zv_-bsw~=30|AoI?m7?gkVzx(X3&tah2d9aS%tY?-rELBE0$J(;+1>r_IUREAu&ySt- z!J{|ZbdNsG-IOLUDgQ?twe&509JgQAZ~mD0JF>3t5syoMdCvF{t*arp+HLQ_@_%{4 z^ej5{{T|jjB2F~4nu(>!3d7Gq zAkS4FWoctV!o#GZH#xg&U{eW6)?>}Km%uE`O zZ>>EF2wC5JEeHeuGyW*evR>HEpH9i0cdC!Y4=c+ZnJ+8Woi%fc{?zcC)BFC(am8@0 zVKcIPz4 z6e+5oBY8`eJptS~R^AqzbQ8ObVj0we#hcN(U{HGVaq8lL&`YWRGH+ypDk*nN={L0| zZrr}}Dk&Am@bz1EKcPWAt{dlQVL{)mHSxLTzDxpjs|%0hE%7-;=Y9PCqjW%=D?c)Z zLXe*~c+JlI!oH|W;Wcuk>p6H*2Go22kh50csQC}~JlVJI2}WCnJV~Ak?Z=%|qx;S7 z>E*nsMYGps!U^E8>Qtx!bBe>_bv+399iTd-ylKA#PJi$y$B^x3bFlT#s61yN)ijER zKfuUl#Ms`oeC(Uj^m1WKT1uev!1b-7KU8XvF<&n~nY6%Fb5w@@JA1*f8Xew~)m@Ne zfH6!82ZWr4-5Ih6xYEA&q$Ywzf{%Pf{*i)KPtRubyG5NF;JkC|z{? zIvPGCLaDA7XRD?jY2|jKtmV5ax;IVJuKzaA)ucS`j~@h_&n~AXAK33KG+)3appsn) zWG|?aY-Sw4j-1Zf%g&n3`_n#6zX^gxTHOg6H2u!q@KK_HN*l(=s@ zQ%S{F>U!AS`((Euly%V1Y#oqPPwync=DyJ1IgkB0CPOWbz$mn#emA$TuRYxB>I1m5w>QqQ1~8-gPbOjJ$|5u%b4a7l?Uyi9vVl71-m@}! z>Oh_ACVa4R1W@ zmCS6+_Zo&8O?nC~X+tYpcnPAq6@C0jf;%~4SuAPaf%pz505{i$2obw3w{#qj$2gF&$*-iOe0*aTGUPF!l_5w>NSOdky$(7T3!TWRlNdTcdzBp35 zt&#UT9w3gWTVdg;2gjEFUGj1cfgpefehg29P&rtV-BopbtAHfEzhw3cBbUb_2FA_+ zY$z|1?I`cG>?_0nl#1>O?3!EGLU>z4BD>Q#xVQdai%%&A06eu~S`>;Bjl(?$2B&?; z2fLThj(*-aRjMr+S@vp&o~H81Jo%JAz-NjGUtS^bv;wp0m9=A9Cd$yDij`UFE(IU` z=SkqgQWYp)SF=DGtsW`TXc3vNM5Dbr;m4uQGVuL#WB8 zu-76u3F$@j`#1FOH`~IUt{ffWuwp%$yfFaq&{S!LfE7LIDEj`c14}4Npk8b7hGa-6 z1IG);knNnwe5&t+lrD`#L>Gen3RL=0Bdto3-;^F8iAsu{!+cv;JExY_%WWoyv&VT3 z+&d%?LKeG1T=luOw=)+o*24fdydDBH&}S=x~Fi< zYnh-{zU=E-H9!f52B8F_$|kvL**?8i`cnIl!*(?Amrg78W@|ut{=@t#9T&$pfY_UX zbzeWMf}gaEV3 z>bP=mmH1Kw;-v9qOft2!)YgaD!W!)YBDCaU}KCrY|WvV-lrZKK?E5JDUk6@TqiwKpf@CLT(GY6$lp4 zf)4}(z;JRMOFV2yH0nCuuq@cQ($NwIwY^He--dQa7(j1+_5#4!t6r|}=y%3}YBTz| z>nI!gs*F=kXNj@E$+2+3(f&fVXB|nP9l#`trL$!wPf$^A-+u;#seVyO2B zP;F9@9c#W3T5VTbmDubDi-k<35w%^<}hmX@6+m@0Hs+xm=& z`7L#z)(Je)sT~g2CnNw9p+{{ymd%C9%+en`wJwrytAY3OqWg9bXcPeQQP;<;pzIg1Pyp*!6EgbGO z#1MH#6VC3{O_|Q#+vQS~Ss}$^2ws4LI$5+e#Nnw7LQ~c^blfY?ggoCCGX5=m&Xgz` z@fVBkAun?8oYK8IY~l$NtcCXy;EQ1y0c)Z4q2g9EmSBGWbnRcp{{7Zfg1i&~?e3=K zhtCn8uWb6S5I*~@tdv)A|E9GIz4%|K16&kZd+oJ=jq%1L1VCrn#`oQ(5g7`IBF={I>2U)$85naCy}ddbk_1FlD#%u{^0=fi57)__v_MLI zpvAfWLJK`(6D}4I!Q2+U|tMV}I7Lf>|NjL~H<;DHW zdkyF63*@GKZ3r9!(918tP$U7D4TWxzcy{~=yvl9@-f+G`Q&bQ1%PP}2+5%T^-kt~u z@Xl5*cJ{vB=O6?P5p;{irFK2>CcF^s1#J~4VraE> zE1lf8l&HB6^>67FuoGZ=FZ$#|0kci>-vd1!H}8+zbtGn2G=6g1^au6i^?Pt zrv@Dyo|!t*i~7TMs0g<&nr4mWH7MM8sdI!4ne&cXXW3*9WUZxAmqV@Xe0vg@K2 zdo;b?&3r<$SW@^GIXbNluFh$~knE|*G-8WWE4n5>W;IfB3y)Y0hlogpz9GLyC2c+NrK6>YA{1-D$h zToo#!evh5Jdqdi|Q5yO5-7F9QeM>E9W|$2tR7PkutOD(PuHOX*eavqab6$oh$AAE^ zl_fPcO!?XsKw9)mR5~3$HB%|zEvG!8+!1<)+J3LTzqNsFPx625d47)XtDC{vKRF04 zmxdu(X-gi0r0v5xe$AS!Ejat1K_2-)iEr;Lk-npYsJm1xWW|Ke2w}F1!vhxa63D1p zF067)5W_NU$7B^XZ%2nr&d9la8Kc_`l_C@Y=Aah;1K4CC-TO!d{ z4u`O^C+p&ql>I$$UeaH7l>9|f@rWb>gLQB%0uWJQSW>*F-*c@IUJrA+1!2h~;AV(8 zYsBmsC=lM$U(Qo~MFF~J#w0lP+zfpuec?{i^debk&? zHz5p^1f6@GT5#<@;?Q~`@MxYS{Us~Z8#7w&8W9<;2; zu&m!D7QBg=ap8Lfl+5Y@53zJ7zjB*~@r=c}Gx&s)f<{SpCkX-*CDmqJE9`7XBLFq^8)8u8j&*12{+IOk z@v`JCx}9e_GGdtJv#-PN1&XJ_#&fHkjlmH{`%&fg*y(py5@OWxXD-jyGW$PlhYa3u z6h_iEqKf*bWl3kX4QEBtG0d&74W0jl)H6*KEK_ct*XaLWCye~iYmk&S|C9A8khsDn zmi5#CYRxNByw9w3dQ%i2z1RHa+)%TWD6Q{I46thf`C`^2PtWMBf|ZYzxE@KA{tU`^ z+2~Ju*4iqNr`Hq`|6w<0%fRkGx`AX;w>YWJW!BmPp z_=9W4btf!Vke4&}YA)^IqP7Lz9sjnD&AB?ji^_EMOYjp}g0%5Ru$C5)d))kDUDClC6x@Q+lDs7UGN?h-!xmtJVH#eFq$0mo~G@585x! zjcU=ykp+Oe-F^>u_iP!}Z2CXutZEA=G>$AhC=Dpx3>|Kh(J+#OZA@_+ZCEp`C8ss9}DZ{tz3H?R&1oLwD8c*Zh?zGI}1?A|Xv9 zDHv%kg86h_?K4{m{ppwkTu?3)N3&O<@@1+3D9E=;dq?&t^+_orPkCpAwAX?pz)bXa znf6o7rXjCchpCEy=V>A}{L^~LW1 zdJZSg3ZzEv#CeP*rK$MDFHTd1T~x)en=6wqe$SHGvIqo7xz%}>Xuag2JEC3{S4`F@ z8zH<34N@3CzI)q@?P2c1bks|2s7?O8Vb*2DqT9LI-ZW2?c%sqS%8QgEuJ zKZYJT`Oqze@0vG}ksyOtQTo?k3ypEVrrOChgFdJ+)!Q8psU{syUK8Y&OKiv!2WT!- zkV02d-zYqfGY)C`L_qM?ZNm|%-@4f9#gPv8&DUu>kgZYBzivu~`5diA(|+r=;T;8Z zkMDq64ht8Y6Q+UxhM^Xf;o(|Sf;$;`hq^{fvQMuG;2Pm0{hHp;j)(O=e}-~2QdAOP znm$^UFig66OGJ6P1fEJ{Ic$=BssvZ|$Ojm;ve$kR9h7io9+txDQMT~2%&5(kT!OAl2+T7X~9j6y(R!dU?)pdL(fKO1eVh;qmjWp?F}2b7;c29%pY!! z;SGpGOfHYr^?$~}Cb8G^$jD@%^)X!yc!;b1nJ;ftL`Gi>@XQ(WAv!zmh2NSXv47f3SQl0hdHgm@YMz3Ny| z&MwdJUBcJ?)nQqLETjm#(;xhmrUS`nts0v4*nHv0$@@o7VcH?8h@*=KcB4b-6votr zC1WmMs?|_fyk7qEgCm;`4R5^{xR5X{H%{e7u!Ih@s|bsAwMa1^*$HCN7L=SMxjtpT z^_*{mS?Xyfar{WeR2-V;dvi42p^E=zHQ{9FS%b}H5W%Y zN#WR&mGfVHnGJdgBl(H0gt7bPy{cPl7Th&_QRu<;x8pP=^3fIXCjZ|X5s_u#pnn?o zDGDzt+0b7W6t`0kq!CtC&^$HcN`i$Ao23h8tL8xbAEf!Nm&oHSH07e-3tj1$8PduwTrGuBh!pZQJm{(Z)Loq>p)4XpYvLuyb zDedftlY||#bTPLIqDxm;L%zJ!XSeSYgd0{jdSACrL;P5v*k2gp|yce=0=oYhTD z`+K*`2hS+&X6@Qqd99+L+LbGjh5UOT^iOlegj6{=N;AzR4s zE8o0Mg#tjrHz}_Dheo4@UHeCk!rxqdvtpmDnT!H#-?98a5^myEWJ>0`q-XCyk<}gs z1>2&<7oE$;X;cW~xF|CM2k$!aw}Z9_r-UvhHSZ7uBD51wVJVkZX$dJXzH7VXj=P2- zQHqomk#~fHfV+{DN#p8ObrXX1%`Cl2#KyV97eId1AIV7aJcrNcr4fP+1wUj|44P(` z!MR=KB(VoXQzuO>V3ez?s0Wq0Nf^CJ%5cPVKeDHx|EQa-5Er0L#(NZF!s%&JIO*99LusJqVLnkcnOCZ zh72=})}UWt2frq6cTYwZ=d}5;*5Z1S&|rO*r2GuQu2gTFt>pc3iP779ts@o}2iUrd zs`Gs%l^RtSp6-obUl!Z*9o_q`>n|JIeyN4{cPjBcH0`X~Y)S3^Rb=rF$ZD)BKLz}+ zjEOn?24O7@A<6o(HCf`jA*8_vMaP@EWFr8?0CU+Mei+IJ846rw876C~54hDJ+dBZ=YR0fVL!)8r>-2 zXo_`ZOtdQYEQ(F<^qBJVeo$Pps$5OBCWW4Y z8NQ#8-AbKYo&nQ2zUK$V)^&f_s2dacecF*)PhjR~+@y>USLj6zpBf0-J~0ua)n*UG z3C3`VJ0}{iRPy^&&6a0sCvsh(;(6VKFi$ZHZ1yX75|zrYI7)_Q{4UY99VG3NTz3&s zo-Wj_PIO8NM%S!tKss9+5&K8~7}N_YY`RsrH`d@_x2qoU0PkJ3yy}0p&x%u-62uQA zRJRtDTU;C|=fa6#xe?P`JTsLb2DG?9Wz63znld0y9ENDM8eC@!rGAHusUB_ZbN+u} zf-W*a;8Rk@3}z*d6J$vKtj_}vTuBQSLp;#USRqW(cf~9aqGXhNyNoFRYmd>c7&6Fl z$I3P5afUq;S$*H_Z2*wJxt~V^5aNY+P<1sv_1|GZE`aYk9Q~-F-R*IdA~ZlBN&3!D z6QTaQt*@r=@pDq&1k8-Zr)?TTGVU5Mg)Al0;2jpR1N3@(d?I7MVVkX)+wL)%1TzS_ z>gdt{i=rYAG?DYnQ|oaO96gJyw*9wR?svrd-%MUDy5$Nm+>Yb4HI!G(M-j(U9MVK} z25%<@h-OzkZKeNVC7q$@lRyHh6f-R@R+#+xIET0E;chn}YNp?lJSq*`DSc=Y{Tf{T zrCh0UO8I_bZT}x`YKLAh?I9=YmkKYGqiTHqGYXS6V0W|I0?& z{KXue_qw?!N(0ZU4pdECD_K6m zp*Iwl<-;jw@doxqjyj@Neflx_yM3?BKQcX8P8M-;C8ZL zMC_6Ytgc{3&FSt*IwG$@1E5#3t1L!%eUf~?(OeRYnFiSecGxzPq_%?Ta9(1 zj3q=MDGP|}D|f%pbs%_Cy$1rhaObM)$OJegor7pbu*bKv$0|-DT3W>*Cm&OCc&?S) zjkh?<&y1=1UdCq&s~03jEQK5+yfMQB@=S=Bc538MfL3Q1H0jW|(2WVO(dQxwsPW5ZbJ{ZRSgtVlS`4hN~gPHj~&=*T^QecwX8-AaV5+cS}sH zt_ORre+Lu}+{$Qq+Ry0xGX*{g#KeULL5$_}7vR|1#0b_MX^L$zvP1ugG8n59AX_>R zU;8&}XLIV8$-A0XHY_d`D+E57?W6z#em4_)FHR@J4LEdmuf)2lrQZ2v9syWWC7*~} zptM#-5*)sDyB^R_QHy4{!v!x(Y@miq2)1G1s_CjRQ0IoEGGum1@)A!JQ>iPcr8sd9 z30t2t83Emfar-NtDg)HlsK#cECrU|3;h}|`01;kB2M5M5tZPQn7YB@W`K~QLaowNS z0<^?Cy(&@jLC@;rO1d+;uSzm&pLtwYNUk42#xY}8Y zEm!UPUm~pLa|<~Bi@3bFLe3*d%cTeHRclm4*8G3C0{}$5TIo6pPq0-xJL3+2B{H{( z9a6!r1ueYO(N;?F#{nEg^8zWwQ5+w<8W`XJ<5&BMN))=1LO8~^SBA&Z#cJyYufuG? z_Xa+L+7b)ye&+lNd<}WR$s@w_TcJAyo{r&;-RJmn-SKg1z0gtv!Z#+!lQ1o=FWQdH zu`43Y0-(GImBpiaeM-mNAxY9neYiUe#kyd**adQHn!mJ|1IcE|PZfy`R^g^Bs;}!} z1-sdLJV53z`4*Q}86`1H0h0gIeUnzcv@qVzzC<%ek9i_M=hkmR@054g?q(n<`tB>& z=@7Q-f0{<{E|B-t%-M7ji$MOdOvZQya^H$%3FCZ6w?a)g`#*!vl<60^xJ9dR$#$pc ze7xymhm5GIbs-QOzrJPr>#o6ZTc9uH(Zbgf4S8jtLL1k9c6-1 z{N3t7v>cQmLNL7CeM1y!Umf^T#mmt+erq(2T6!=r=zZy*4RKWz8hh-2gf{3VWV9+C z-dv59XCQU2jW}E<+uhcdb0uc!NeG@|3X~XqHV8b`;O9Pyv#wD@RH*al{NGvQw0faf zW)sY2K9#WWe{_q2^)BdYVQD40hz}ox$Jghvs!)jHZ|u(3!VR+Nm?k*1VL56l=mtcA zfMAZ`M|(;ww~T9#Zdhf4Wf30AX$HvXnx!5(JbW2UQGmwrHe74x|IDlF2InrGZ|8h6Ci7Uy-~wX!m@pmoEYgpaJ0{;D@(b`Z9vAP#Zp z$tt*>sbs5+VVqPINs#OSefD@O88_jln$ zvP~){VUR;0iJ9+p1o>APw!)s~*=ekz_LsyszSyEwU!Ih@`z#F73gU!dmXdzmmsWbF)r#o*) zZkaIM5YeV|NK5c5JtxH-H zS55*-u2>U5)}9RwzFZa>KBgJz2sCGcPUI-nj!<(QidI&jAD6FpP1SqQ z!ng?ZF9yq-wFf1K)dhp!o2#d6ETiy*Vp)&6gYRM}PX$z7l~ZkG>3)XU49DHO#|xd` zZeoul>0JA%R3)qkoDfG8y#B=I(1D#~j@RfLr%Pm{&}L?CY{M&b$vfoDGk|O-DiLL9 zoC5odGp9YDY=a-c8)v6+IV_xJ@NfUnq!!Bv0@ZtmS0Q(&X|l2xgsK&{BZu-!`s~}vQNztzk6Q{ ziF)Ev83ZBjL`*;G!CV%iKe=(*Gmb9nlsTHKR(Z1^U~yyOMJ8Qcbh9p&=ryvPJ87+A z?$^qyKTCo0KkN&+P{1sxN8eZ{sM_+(zCrY@Dm*r^r(rAY>_L9yS1(0j|q4Eg-%Xz?3C!Q{;HjSjGD*8oD<)jFq1 zE#Dp_QD4XM)vWjO&hF96EC8sfd^=!-jLCiA;oZJ8`x7~$#L4;5z{fevcs&myZ9(c# zaBN^J*B1RWu!@|WR{>>N*-N$lyrt5uasW5xW+<{*gJ+acFWx z<(U#*^8d&}&6JWL!@cG$<@hc)~9;`OYQSFnYETvQNsKS^c$Ga!SBTAt%aFaxoQ zNN1)Kog6Thj4KPrVB`-1KS(cQAXH7hxjjyfq?v+fOHM;OV*!r<)^0ynjQVCIUBfE7 z@>1Xhi5%iQ=f|mg`v9tdc%=P-q}XqiH@j7*Ctpw!=F?HF{o^t}P1FKR8*ggCewS|4?PZ&ZdC6z&oDrVDL62X5f>sUP;q8kPa_^i9TKWx=CsQCn9>E-4riW#+pNmGn>xbF-=|^|rUE&mXk9)KAKgXR zQ~FQGGv+Ts&5UGk9HKCG)yfSC!3%5+)8H~NH<8Lw&&ci--PGdR$Jghng;qZ8d+h@m znxItsc4nr_*bvNoqd5kLp~xJX)s!c8x%G6qx(7 z&#Hw$VIU?o1MU(gsvqiCFbr1#k2_Tk!@_p%g2xrA<>_>8TG6U2&0&=r!xXSt35`wh zr3f7SLc?$!slBD^5_C(a@Rnhv`R^EJDM3oVuP(Y&)7OTTExK-fomcbeYP#Xf>jIiu z6~LkP=1#vNYCMMJ&XB})i7U{cz|vgkq|6`|5%{K7aUADLIlK}X_d>bdBIeGO+*^II zL#7~Wz59MY+-Xq$qAkutdhM{{2@+qGE514n>w2H4YfBsaqn1nank?`Q0|=Bcb<17& zjhqwTIp0PEV*hP>Z-I~}AM#p9b+4ZPhcXSao_#L$xZZr^K}?U_E_qrvvrVCY9Z%1) zZIrT{wZ^(?+=GJDG~@47$A-QYe;8nE^=+S#upqlo)J! z{SK;;#_G_D^i3pq^l>nE(ylCGK6)(>p;q8jxDas}I1Bf~@AXLTW|ndQiXe;be_vzu zf+?$HAlK~ld0q&?z!UI)66jOLnV|F}Mf$s3(MuM~>)Ki(zBPpU^PAZ=yFY`GqmGjb zYZWc-3uD*ly(*dRXv!*&?MzNsMxeW90Q%4TDp$`BJgTT}JUQm!hBpQ2t4*AgW0qvs z;7?C3!2)pQ0sm!Q&V=0T8}i&h|Fa|yPO)jVKpJ!>o2CV9Lou0-ByHMRQ%aLZvQs5N zmyu#MBU7?;hVE6>{B}@#~jYN1C}q_ttc_HGeRP;W9wm8bmGZY{HB`)NgR=h~v*oh3#17hJx+ z{si}rx4zK3O+w~Yi;+Kq`HRVhx^^y*zM<#=MZr5DaTv&3K<%^ICaS_{B;quIxW@QyOuI5PQ zimfH}U6DJl?tpT-C@uq5OTMWF4+N^z0i#uL{=%}$YHzWT@+1ZMcx0l zU}82!MrU{uk=AhExf+te-a{!jit=H*Lk(r-v=JhNp2R% z)o^hto=$8t4l+>O$46!Y^2P;FwJjAwQqW{an_l*e+D8g8dwwcaw*%qJd0Wf^A=m4W zVKkfvltj0H7i{2GSn|*hgZ@o7%OD^y7;0QG;)MlorJzsw{zkg?+n2$G3`qQMFYLyp z;6+WQNMqI^#$1aX+se;8^nx{y)=V#pbE)OAT-&{64gY2kT3)RC@m*W%B57i!No_A( zrLAhzM*!$yg*_wrK!Q#-3H-vZ!NsfwwY!D{^g7K{LMKolUO~#kZ=LEmsI_ zBA+G8KgUgR2)dJ1P7~=vF%d>n*yc;m^PN zXmt;?62LX;wML^yE%Xka6w;xA3FrLWi7w40unV4FjXw3MxR{ShJ0gfSd!sO5!T_z( zBp@r}%@-jMXHQEVgp%xhVo-g*SXB$1u=XvukMTRg{)5 z5^@s*xrCpl9kl_J_@Q=rc)lGi!La^(Z8@cFG!TSLFF|k7%#0A{ zLcuS@3Zj*|BRJ-7!jkKqQq6Z)kdghJED(V!n(G*=UIAKJpfq};f3>&Gf<-B}HFMG1 zb6=)nXoa49BlA?}AqYw`za-pv{H}l1*|ABxDux>!(JdPk`G6gkx9!%2ab5NDn1o5j zc-T);W6qIC)su4-NF1jwP9c34qfR$H4Cll;#bz3AW8fl4aRPj>m-N)QY^;JqDgONJ zt%F?ivy&=X0G295{ziFTyyMJG-4=nAqHT(1Q@4Xmc02k#aghf!)k|3imfgPY31buu zQtr^?Etp>0^N$Z=uyLx36(v67>IC~giA(Y_(|6X2m`4tP+SK+Y&PifxE%&+&s3cBvi5)%4mvR+HNOIta zo0^8fum0(1;U}&FfhXM4aseY?(2N@>?$I$HtQL@aC4*O}ek%E!4=8hCEBAU;}HF0!2xG{o* zAh0d;yirb4TFjG|t)dTyj(0jPLx876B{{S-X%MtJ`2GYvK^s}1VcZ>TwDVf{RhLF8 znzK(SW0O$s(HhdSHRWhPCmJPmWe?~^DEPOz1fcd4K8%*^)p~CR%fMSf6q3#Ag?A%Z zN?K&Ro1oGh|J5ajuc;+dGh_O?SI>_7OrXC!V)e7jKb4YNj;oM$jc4Hy9Pe+LV3&5C zKUzMoy$&0pU0g-(vp%f#oP=6@By9p=8*QxB>dopR35mLpBJ;}IyG6Gx)B<;MB|2%c z!aIA7I+_~ySk{2=RfGl4kSd!ZxaCsghy{qf=?q31_oCAGC*kko7cA2u5*JCXrGqH4 zh?yK@U4e_6%ZHjj$cBEwk@UgGu-rTUV$RC3Q?$&tw>Fs$rx+=bK0E?Rr+0aOJHfOn zVcaJM)!A>WA_3sFOa{RjxoRy-tRXqV#p!ele1isi!yIR^iF*_*0Sc63aqqZw?oMr6wmbb8uMCyc&DVx!kTl@AC6&U-t@m{n# z%*FrbsmpSfD5n~)-Gk;0+3GmhcHBQ$`b$RjuWN?71kt6V`@c4{Itdnt`3ETLBZxc6 zkO@gAD5>#x3A>c{qtg1%7Uex`av2A#7ij}0c!hEgR$Y+ipMGD`_~!Vb!chnu`o4Z% znrI8RGSb<=aMP9h$U#)yrde+z{798toDav7YN=?YV8}NqQ>7VKkPfjkL29B&cIrgc+&Bejx1LJUyo4OD1@2JMH4=ww zdDrdeDh^6nwus|F%52-;3DDkobbRLFXO)WvR7!F;+fn(r<|9 zpK8#?BN753$zI4fKB@-brSX7Im!q>!hFFoos_>eke-$R{&IQ2rZag=!A#s3=PGPzC zCQ0-N6^06Y_4h8o-yl+VS!oqgPfE@JED3&5j?Q)LOgWcGn+oeAxgYG^tY7%w6jSv= zw_y4M`$Ys_@RKt5WFh)STm7%Crun9aSm8{FAnfm|ff{bwY*1Wo04$p{q1oIUP3NU& z;sJL`Q!+C{5r5%l*+;X?5lp=h7o z7#-8tUQ)&R`w_b4v$R|#Mi-C=RFj^Uy};W_`ZsVV)e>Tc1>5sX*WGOO% zhFu7P3Z*4YlosexfBXaX=B?Qiy1cR5-y^XLTJSoH{mZ?r!SmAJh=VFhnLI;fUi)z< zG)2_qXm`u9h71QHxjn8KQ;S_X3d$bkMT`l|H@qDGWeEG!+vhADniebyrw@*OV%}#h znlo4kEOoz>7KS)zlGj7P`zG2Hw5KjC3v8}1I8!6@*+FtJr6tZ9-4rrVnW5|`vqapOapB2(*&mkDC|x~#+E(gRylAhQd5;JbPB11RZ?YSP&7 zx^R)dRlEEW!jYrPzACekLh&`bFF~kq+VkqfI+(zjXR+Kb)aH1*H8&7KOzv~T2NY2G z2$5!Uf20aaPM~VNOfOSImQDeJJwkDM- z()yvB9`ZuXSuDtADMW$b*mq4Gk>}`qxSVuW8!Z(&KmdooB*v?euLkX0QD(j+3ZyH9 zJQP$JzA s9#3}zJY5sMN;sNXnc(ZI?n`uPuS1%wc^C>TI_(V54EQ;O9IA&*HK3Y z*tU(Rl-KvFqyTo!`2zgRY79B}_K0?148d*P=05biQo8DigQtETZZDb&9V6oyf&r%c zA&xsvP4Ns(FuG9OR8#1)8W#r!fi9s$V9JxUHMNUJW*a|l$gai)JcxZ5z^QIDH?Oxl z2*vx2=sURskw5oom9yLdL`{BCcueM}r++?-SQi%;Y&DnbRLr*?WwS^1n6d=G+#`9< zL+~j~3(N{s+B!u+B)>buPih5&iiRugiUqRs7Jpc6(_v_85@gkh8{RM$`JZ%ss!^o& zampN(VI|m>g;QV!W)FrYV6m zgf%v$`(7~5JDStEAK}iElkE7tJV%grCTnKLlfFbDp`hXjTCo4KpKRC@Xi6BH$oBrN zQ5sSNY5RiNi-luVFUMK}+8Y*=pvjYzbmlS8aJwf8gPZ`H{5Bv(w_sytbes`z{()7om z{=v*v$8hBs`4o+>;tdp~MNnVCGnO_d%zWi{h;&3+$%dgYyyeOy`$@z5tEl>ur$KmD zUHa4oeRIRc9(({WRCHje^1x~@Ej5x{^5BZh$CYKt6-JF--WuF^gOBm6EO#pntT{_Y z`EbmO$P7>JAr+>aS#&iPLdNMS?oe;36<7<0ayB2s@{ut6kp3&T6Sc4WY7)c`tQAL0 zG5*nGYcn`AYKLb(feyd6N(4h1l?l4jEBSy)l3DYLiav|uP`xpZkr)@!H!>?7eNO(- zM=Q97b;JAKQjnFwsuG|-M0u5d&!sKch%YGhf1Y|NrtcxyLVD%oIsQ_7J4jx8Sy@I$ZmzbQ|%$R{5OJ5G9a535dQ=;S{KXo^w>FT@4l8+m~B-=Jp|5Ln+HWDlizWKu?WOOU9)I zjt}Av{s>wboj=X-otwguet0QXODgu`5yzk9W)GP)*#3<*1-_Lsd)DXM6K#~9N2NKO zJVppF(-DVoubfeCRN&Ws9Q6L&o-)TQWC4QNLcU#$cHjxhW2-?3srZaW_2LUml2tiF zA5K7e5UP#f8XAEyp^3Alw9ZuqT)=A9C*$*q@1UTuHg4OrIW?E;KQMj8EZo!`#?RgY zu!&0Uol@g@yfI#EeBh;YA0=DS-YYcXP5fR^oD4BMQ@i&nKmY=yk~jfDcsQYc93l_f zF~aL8Ooz}T;G@E01#c-tAg7PjkE%Nb$>~dsL_tC=KD=!PMx1vsin7&2X74E zN-n1q@y8{rolXAJv~pK-s=5Cw4%~!Ju--!}O*AK0NL{=;8B z1Mqy)BAMzzo+`C?r~{%*3C_L9EwiJw(MXd)_L?_?X%YEvr-)q+*yM-1bFz+pLI3M< z?!{mMt6)vmueU#*7QWGDy24^0~>qD<5f`0lMPr@zWcjyCxZMa!6O|A{hjGNTub+R*!=ovFdmd2 zW73Q)3vt9wT~83rDyN~?;@*hxuo%LD4~yY^u5*pWdyufs$i0s?JBc;GM*0fJM23I% z0#)JVS=&g=V8XU#kG1nLl0-hA>kGc|YHDC5&LCzd-8f4l9-f~}yuP_?*H=AbN|{7< zzpX*HC{696|B~>HWy2&flHi#mn@T`JPz&L^N9Ze)T3`(^y6@OP5}DE3tZ-O^WGDzZ z$Kk!@cj5)#&LI1Va1#Uy5R?Xs)avnUSQA^5;SVGf)&!y?8D-A!iXOHO2=+WVb>TWr z6rGa+R3Hr`qPPLd`T*0JYrFLk_(-6hYJpRfim!cT!M6BRsF3GaMZf3iEP@w$S|LcU zdC?&wExf+gZJIKoq@43YOvg*hr)w;~-0Yj%S~0z|n}RaG+%*}hC*h%lmMH^{7yD(heX-pnZ1;iAt4t;~7imz;<@bv+iVEQsn zLXL3KV^19&Wx=6Kg$d8kPb;03Q;kt>a_51K{GoxeA#ZzVSbBL^;wBFzo9@LKnfU=r zmVV1&j(U7f7P$U!7{h((JEVE-2>3!s9K+sqh%8z664hca>T=bQ@={D`5`gG329!fu z&CJ2g=x`tu7HL@WoP!}#*r9+OVP|l@zOA>6KcNfYj1BC#*QQ-H^WdMx%|ayPvIc9y zUTmCmRdFKB+*szP7mUnkDj`jQ&SKGB6Jm|BT}&#C*-;O)&z{&NP)ef-d}eOJL=9$ zUGT2)?n@J3gP+&tLU%?t*O%?CX?$?T0zu@qW=f^v3Sc`mdCmbif zQ~cx=LqK92FaUD`(NlA5@3)L50&Jyr?^1tgpHzyReNW^^;aA?YaPFOfg}+lKEt$ z%#X8qVz&-AaFBsS-+LvF;IRh(O49PGvUu>CdcgLR$d|IkN^%UqCb#}<#^x1ptKTwu zEoL>g4MDte6dF|+{0X++ZrKGl!mpmz%J3gYy}OAg+b$gb&*SF3EshQ&PC*s*r=;%3&)B5>$JMd=`p+`FV?|KH->l4!B z!<;pp?WlGVd7v0L|Ma#r(4DSCj+d2I{-Jg80ZfnkD$RwFnDl7y0OIZnP zw8(HAZ(kL5m2Vov5kTFNmctKwi(G znw(ez78}4$xN(Dp5B7x1!fW-wKkTG3wX8&d=ro#iBhE@{8y7|1r=U^1Hd`KzVJ0b$hVq9setUyCRCv89HN8{3UY6K z2pqi^<2ejQvsV#EY-hGiSiN^U&cSxFbtj!f4qr1jmz!{E2FilrPbq@6jsA{Cab z2v#mr+MCZQf$lueAEi*(@@YJiq{`UPyb$-)&;J@yX8rfBQFVt{<~0%%bQ! zm(@hi&jP!r8te(j>HoyRpEAjm-V6pLs^u9MoMS*H;=)eTd_0vT*6+s~^wkwj8~jb+ z{3m72CICvPTt9QhwrK>_Oet`?~eRk^9Jq}by%~J*P z3{u-&#Z4t^^-Rm`Oce`)Rx5N6U?qc*-k0PDO^l3Tzj6naEjns1H*7A7Gs@T*Oz3fB zzpuyE>r7*X{A9DQ3u?*Q_C;2BZs1G!^Bl`xrNf*7Wf5!>U3v2X0?PLQD}uGE>q)UGK;sX>0FF?Yx|dje%Q;CE9;_Nu zHY0lPfbm>9Op2lCb3E$j$qm||e0|%COYl6V+=|kBe)JbC912`5IF_ELECa{J-zykf z>e~s6a0zCJZcwSejsDt2N1{JYXrzYuU^eQ7kzOV*@JjhfhBPrz|L}jY*PhAt_%|%E zdO@rbH5?PxMfud?i&TT`8D%tU!)4kUr`lq2e1`w>&;NSXKX>#lUj{zFusqE+SE zCn`Lk4Bk|=7cwE7k^7Hkg~07oE+TBTK4YFmhTH$YM-*2tFwY2QGmj1~6fVEM6pZW; z1#6vCK!J27lvmCVc=SIS0FHrB#S|9!Zm6kz@p5i56(om&-xwt=;T-lNuz<)MA9LXlPtHG&v*Pd z9c{2daopp4@CJ&15;1cwI~Imre52v9;wxWBZXzQGX$r9KeHwmig?@sv6fqvgWK=Rt zIjhn_Mhj$ZG%0mW?GE1uvWRC{9aN4TAGFDlXZX!nVz4CBt|e^F}QGUI^f&Eq8bcp zNDo}ZqCQL#N3?d&oWYqmsy_h;$xtU*K20z{?u=dtl=sDl zfU-MtVu^@{nRsyle?8V8E1*=od;^7IYJZiz=z=jWS@MUf+%cppoRXz`BHWk3_N5k9 zqiK&y(yp`HO3ok?t(8Jk&yf@G98t&_98e`$5XK5xAj&03w@WDswYEK@`lyLQm$scZ za>r4ULcBuJwpf{1Z5&drUaWffJFGqk5bERhpKLLU91L?H+y1mV)VoAHPrCetgTBv@ zw-KhWvtjmv^Ig;Z$MzUR1U6lRYQ3ENp=2@$w3b{_4!mA|u7RIP*G*Lm>E`9WX!LBx zSN#=$mL2#e+vGyZa$WRO46=C4_+)%@X0W>RO{xoe)~vPkP}SrB9~Jq)WoXnJD&3l# zi{fVA{&1gsgbN?zRqeVkTi~M?uz9nIi18cIJEw^m^cQLnj#Uzdp}*fGTD42hwh?=5 z7V%L6ipsu6dJX7%oW}RZrbMl*LSttGz_mOMKJTxZv3Z{KiU4jIZZ&MzbT%1uBjqj?Qg-N6iNmw50tCi0+oF2Py4Vowxpvytbh}KGwoVt7VJ+ zd|`KYDl$Sd`kSZS*Sl<1TN}=lYMdHtig&oZ#Z+GVddb?BxD!A(hT2W5Kl2f}`3ujP zp0t((bXb;i!bwt1kF8%$KS~gaky9oTpyA~u zP)U+54e~3l(Q`0l?1x-+qr@1Fg_)RkUuLVhXV?T3r*MU@v@Xjar`-k8GQB6fF>Qft zgGyIoZz7Yl-O1^6jGh7TN+K)iiFYa&>%@9S8r>dKV{m521DUYdsfgsi;CK5y;n}Zx z@cV8rjM}Z=nlgkNhj(X@LY4lfE0IZ^{a$KDP*TK!qn6(Qp%n?wmgwDUNz6H_4IM-%EK?VRE^LK?N&JBxq`wZvoUUrJT~2 zKo8y7wE1xaON^*ELUbP|W(UyTFQz~0LiEPLyqT4TA+Um8WWKNSi6dzO0(8Xr|8r_Fo&gXOi*~qSLXc%XFfhiFXE{DW8qGk~995R4v^t~T z8=cy6c+3H$M}g8uB@8q65GdZgKYR!d*MJn=5d^s9(FBPSFZV~wSCun@H=MXRt3k~# z{j;zTM_{@zrogW(DI*}WniGfR)}^svT-v2W&urt20yIv$DLFk?tSeG|WL>%Nu&=`A zI%uM~kivyM){Xj^qW8pmrrUmW4ioSQ$=+zh#tNmtI-Ea`oK5PmQQQ=-NS!ACh6zJwg>F(LPG5CzB3t+#wf zIfr?(xUQ3?aHSXOr9ID>^7~J6joR(#K*tKM>+60IXFs;BoA&ABNYhQUCiB;(+E;1? zRu+%=a#DgtY}B^)>^fpa$Lt>#Yn^n`gwy`4QlpXzH~3zeEl z#ZRPLY^su1V4=}=-G`{+iG4o66mzj??M}7TBC~ecAs`I;0lK4KWwc}4TM91rVi)E+ z!?^qfqVeOG#B~g%SYZQuf!2e83Ny<7(1|kia1}o7BW>OolXCsxw{vBWalhjhfcPP{ zNiX=eXl?d!{5Vl@hF&WgwEa*;7ws%TCxIpamS%RY!|gW3Z*$}^63Sk_A zu{U zr@e?RYmFa$E7FTpO6mfH)|$}AYJtVFH~=YS(@df}w#+F3yj;b`8o6l}C+U1iBJ0<$xUV^>cnUL-feGGYyU6gBF2B@p8jp*5 zqMeUVP`$2((0>f!3Zafz_}P{3X7*fy1e;r*xRjxq;1r<)E>W%J<9(Sw*tn+XS^b?( z%)zG2Ykpv?0rO6KqK&o<=Kp4LqkH$jwNXmC`J(`;2XDxzxc&sh2d~5-K~-Y^R^AZs z#zb&UB!AP;kL%puu2sL>hvUY0bA3WlXsS?havZUx1FL~zG-VaWzw*r~t4Apq1~Y!} zcu6?VF&p0Jy?Tc>Wc9_7hGdSaQYl6|OjH8PQs`_;%~LDNO3h>UY0and3z>iw>P#U_ zV!#!R#;6PzL5=#CdRO2DG2`S4W5oVm6F5m`{NCR&y$O;&a9PcUzNGLxx9Ncd(it%* z@-TB0Q|x6*wjja#~mn!iAGDRQ;-`2rnG7M1p9${@4$+T>#ANv;bZ6D z!}b}6YsNISg32imE)o^EYGZo46@%uu_jd|8VVfRN?hS(g9ZG}h()nzfwmd(b0kl|N z*n|;-h6&hL8VvfjGcce0%k69Dd?QGV>o-$~v!>1SC)*pxn#Z%Y1!gddK=oq+JwTx9 zIpuhSJgDYxMEGAL%|2e`1-OU%?m}96dyqE9!zBoU5|X7@>88yN=utF6*H`|>uuCO! z+ogcB!GCj%SPMl!snj$xwaHLR#3XoJ^9lkS|EjoIFMta)IDG} z%e(q5mhIQhHezA0vvI@mO){z}lLL%-3?+`+n>N_GJ?OQFi)y{i@bJsZ>E%}!;Ijey z7z_pXP;7Q&aySR--0e-|D4ltj$pn29bW(r1Wq&$mK5( zQ@+y+{}74E-DUP_zx>@Mqgux?Xb767Q$%?P5e>psl}Ae^Hamr`yTBS9a*A>};D@M- zLXukw0MigvEnI+IzLkkC_7QQqI(;#gaZSDPQodg^K3`^C%OmP$%-${bhQ52S1(i6BUn+E7`5Zh6b#B-@h2?!D@+ATVj57 z?FuPyT?YVbN2C*J%h5XO&3P$GLVslt&e__`_yhD#aGUupQwa=xo04;a#YV0c1wmDP zW&6IrptEM7A_r$;sJ~TNa9u!!2uOwHbJdDQgq>E~O0p}ll+d2+hk0kSkbW$Tv)vP! ztm>A|ye~4)mtdD{Xuzz!rrZt&VnMrxXg#&MIfPQ$d-|dA?X{nu+B#_*%^v-8$DZmU z9tE;E_4EJQ$_-UNR`bLfr~+@6vgXH`6<}#PoLb6YR1h9wI-*{99e91)rbb!Hl+oDj z3wF=TGwafnE}&W$EXM=DM1@n|y7t&j5LT9Ek^JHZ2B;5Pn6ujJVAgGuDIG=2!$tEh~SQLSt(9yl9I=d`IRBNXi-ktU! z2O@bWM1YX$U1SR4E0Mnzu&@=W^t$W6B3RfbR8c|BaxMW#j3ePr+b`G1x5FVNgqS{r z4T)pj11f#zgM7rKys8ygP#_|8Zy+9KSk-zqUd}#joznQ_sjzD5@%{k+KLEg)vxo3w z(NEsUz6H!=t_=i--(1gV1NK7_MaMYQQ}MamqCzMB7^X+ST`!k#;oh4#;wRmO7#K6L*8pau^~Bk08r7{dTg(4 zl5?$dT%Ky)cwOi(mWt1#3Dr(PoA;kO)$eaj^NMH{Z0mZAZy3U*LHkzF~ zv3Z}dZd_i4T1Fiy(zX5ouZB89JYsg3Fw-FsNl+s1)fji74{@SPwclpyvlh)zA{!mf zCK>B<{{6(by5wzBK~8vE$ocXX#2|{bX+NE*p$07rpNjNUzi=GnRmbVBcTiL!REW-s zEQH0v+_D~!8Tki=VJG%9B>3Ofl%03h*Y>G69&FEA@dW-Wq(#}cDIPJ2kUT9Vl|fXn zq<@6$F=0CNT=zH}uk9;hM200u$tNxI?{TEj)1@r;*o$QO?9jH11|e2EF~2JecjueS z3pU!csPkAsmdbMeRqd^tM$pLB2U&B~-h$bQNrvh7{K&-V?Ej;@&w53}_wsTI2x$Pd zy;CVY+-w^YL2gjiPw%C)-c6J_3$}{~+EoKxg7963vVQE3w$Kwmfa;uiFrrR!m>plZ z!c!Q4I-*oLfB1DV@V@;L!|q>$T2Y#%;W%##nI1!Ud353r02*q)=YFAyu|sz?9BX)~ z90&0VdrWLh_E`92az>^%8!v*8)(2zCTZMy}x?A*r11`}rIz(4f*!=~jC8!02yZGN@ z+&HXUWWd?;NM8DW$^LVsOg(8!%N2W#6h?0o(~pnH#pZ4Gg8T%=kAREC0?N6hGalw( zx4eyeH3fx4x?M+|{J-Mq>!=0pFzAsWY_UNpvz6W{fk);#`(DqRb!dU$C=#Y59^xQu zV?!v7`@%J=DKjt1=CarH7MKVG*llyrIW`c}1qVe}8$jx-$zmxNXNEN{xOAH$kv9jM~wgLZS#UU18$snQKe8aDtt`3_mdNihnD~*E9`8T=}z!CE|YRA zQ*cvAjHmY`!g#_rAaPe=x#|J9-W%|M@(AwB^!Yw4&}!y*)4%lDoLTLX;-rOcyCnf& zTpnH;rk&dgA9C>^dT41@H4xfw+w>dVu;w*Jn_OU>fc1AEvaR@|VQL|kIOmBA>j%pT zt=-7BN!E5YiO*m(cD=MB_Sl#)9jqs8t2=qn`hmk~Uzp)vzG4Svxdtx~JMrN|X5M>; zLobZSMHnn(9WIvSpLsyUx5S)6O9V&w$4Qe+_dKfl2g2$nb0fq+z z1b^Mo3jkCM$f0*2vn8Fs)5$r{1MAg6eC3Vwmp$nX(h%c6H`fhtd#WRhYdY}CUsZE~ z?rC2&5Y?4!>;;I$8McE)B_+vNj)ERIe?KF13C+2SIhAnO+Ez9q;8mo%N0QLE+7zv^ zKTMfY&g(NZg#+1gwHs9Oh>n8*iIO0)%awdBNP&bwGA0KyF z^k&~`n*MsFOF+(zmaw{_TUN`ua|@9V-%bm>+x9 zFr&yF8wA$RA~Mq`hQX_s)L7#v-=H|2k2pBzADv~OUqLQu8;P{mB@^t=IH7{7ESS1@ zm-|~z6V`Gs=NuPJGHZ8KDNn`k!eX~s(>jYJqDNs*wTjK|28rd^U0!yvnciUOsCTw_ z4|7HIU6+bX#3*G3OmtTTJ!u>bGkXL(V$1U9L{Ovu*y*w49`#iHZJ>M^1~!Na>NU+20VjX`37@7;76D7{D+@^A%LqMrR|`#N!WvGJd?b;=|B13+Nh z7-UOmcN2a^d48*>aQCz9(aSr@V|-5ER1Bi_`Ozus9t(1KAAm7fwRcIq>ytR!y~ z5;Ph14TnWZ>bVNaCAlAF_0gE_h_0|2cL@TSCQIg@VZ^e|oV)yj(n%HG7Hh z0=b1kTsjhiwnm$Y6eZl45gEJKQUH_BfLgE~i?E<_+k4!lb9(FCa&r2_PC^sAHTtOf zyx{wk@Y5DZ%0D@2cK|$yQ3Q#U71#zUI7n$qs4pAQT9`5rpq}p(t#r>Z2lGNe-KPy4 z1Rgou6c9m4BitNOhLLg9ksn2`+^l|B*?4V1wG#V6DLt1?uSrj{^CwxqWjD*xxql&gJIQjsF>Y$q zuNp_|Ynx(k8gW#}MMoI=pQqBBPfiO7gS3-eWa}9jPe6w#+Vn&ATQ$v^U zz84&Ii+sKTjVY`n&!;Ze<4p(KR17**-t=Ko2UAit93f|>%r_QGnNw{*K6{+$V@nXG z_rv%?hA6mY{hIKEg2kyyKZ3b&Q+<8qIexaB3P59e7+sJc?$Zq4$QssVMTFQdcRQY&f%NnuCy=9G=<(>fx`{fhd3ImVwL<&Twn2qQM z;2|z{#LX&{W!EHS)Vc`&qG?~PYei0oYLwb$Hpl`0dd?3oZRi$Ni31m>y`e1bR*S*B zbeB$03!zyfjOAUmV8$Um)ugKtN=A8{B<)rza}IcAUyxMWW9uOR0sWRSYcF}bRw`ti z!-MR?)InC)9E}Lf7dUy$r1Qvd<=iY*pWjQDCy7NnlG5cvZvrZ7lV1^mgeu$rC?~c6 zi;Dw0E}!F@;VsX@b<-<^67r(yS3*cZdhK0*eA3E?Ju--7i3V>*WWN|K zl5uaYFCHTN4`mAM=>?Kg zsJe2)V78!C;L?Mf&fRUTye8l}{xLQN5>!W$X>v>%s{9Y?fv69TQY5^e@t3&w{l~%; zM`*`9bt5TN@=WVrp~OBOA_J1wMh-GWAv707!!4aWXx01^w!^hrTW5}qh_x}O4&aHC z4VNTyJyRO&>e5*U!EWOnq*ygCgAkuP;~MLK^&-_6;E>>0C7G`9f11NcXfqb3%guKM#~U5IR;d zjf0$WnwNyFr5}9gEfYYb04<`<1xxbnUlj9M)E!nd~79m(v+M&O{hsN zzT8VXb*U$PDc>kEuj#>yMkSGU_aEX#=WJUz&AV@QE`tqiWJE_qK8jr->gU1dj}CVf-8Kj_&ov*mNgQL9}Qh!Fcx@9RdN z-F*LoTWs)JIIog;iQA8Ieq7Qi?13V+|CVuoM!>4zBJLkJF7e=AyB2@*xL}`iiv|LD zd_4CxJx9=K9*Dz~o}p`~`LL*DsY9T3aocuAyfUZWsU`38j-WHP`^|`!4RerlaWw(;y-P$3B3^cEg_nMjEVPF zJLH9sgTcVPLj9a)Jf!(!O51e!FhDSP8)A1W8JvZinX{hoiGXvGka^;;xiI*2yvfK- z7gL(-Xk#iEy&gidvG#_VU=qPQ*fjGEFqaby9m1T?{-hb)Pq4PoFN%f#EHGJS_Do{g zzfu90@qJnsP%MQFLS^EntbTKD-JR%6IdrAP%dV-n?o6?Qd8JqCd9Oi)39{jcLFENY zAAacg7sT;;5)!a4wXQwZaM+{531Cyow@o_QPW@@?6M~JN^A|-h58-HD-vs*dBv)2j zBW9CK)tkHWH?y};b6_K3Q(lL8TkCog`tw~d(|?vR!C_ib^P?{0uG!Hu@8!WF7O5x9 zC|_Xi`eXx08+X_%H)=UJ@1`8YO32WXLve+)^@tY=lX9eFgd)f<9VjSo&OHHl-7j??v>`s#F9u5ovO zwH|?oUueTbdXD>$zV;NhrCG}L!LvvDKpxqzisz_KbErYW=I&Cg5<2jOfQ2&_Zc6t{tHb2g+2OiDDhIpvvs3nHhNNw>oT2DYxv9Wtv_*3%8=zv z1h#M9@%e+w5*gbVEG2a=3s-TK76n0AyAWXMh1LP*;XuMdIx+1&+SKg8>G!#Rs|KBl zTRN@{6yIL5(5JwI=Z#p4U$i9I-ErMS8%J z-hi$|Rz#yG>Nco)`Rd=|ObyVTj^A+QXSG#+9Qb)WtT)st(%g08r8TCUe=Ky#la`9@ z93rGS@FbHoc#e3LW95sn_Z&oN7}l+7YZUh+87d;g=%37xj>$6A(5W1%`yTGT`O}3A zMoHIFWqNr@Mo?9k6$CTcI{tTLp3BWugDUi`FN}RK@k9e1D$UadQyX($w<8)-DCOaxdcc{6Jhkv3A>!E z)yW*?uodFu?!yNtMkn@>3?sV3A)sXrEYD;t4_K#$TwPz94GoBTT#z;3RurNiyrH>n zgZ87%ZY?~fXjc*TWl2(=8u)MqB~npMK;$$!JcM99b4*WXh+%S11TiFOS7v5`i4a%3 z`@ECjfevQYF0PSd>%}B6PRCRU9zVTJT|oU6u9Z!=UMvRaD>qaJ0aLVR|FUPPxtwNq zarH{O33}3n^)2%uIX4~v^F!i%bjtDiVGSc54Z84ssoxw5C=%#ewJ0>cUTuBmAlY&8 zx*j@otNf7@xZAywK4sFRoMCu*IY`uXu3_9z#(oVM`_Pc^@6c-^{c9Un-$pDG;s#1==yHy1YKxn2vCkp6~)P<80gDa_Xh>9o;n)EXp@hAzqh)V_*kofEBiZ?V;1CRM5m-22#+4=m3`Ew77A<_ctA=uhZ zmFE_MjOhuWCnh3RF5W%49EmuIx&2cDB{h`XMaG+0E0;l5s6^JX^m;ddz^QT2IymR< z%V!ddxeUksOijs7=P|AYWs@?+^1INP4I;vz{uCwGJqeS>lZ60(85)|iEExaz^acdX zMEl0iCgcL*>}aY(xr?m#sNgfH>UzqAO`8{}t@=&o7?^W`Ex4!lo(X-9X-E6kP&{#3 z-D;aRC{&FW!VUV8>sdwdB{_v)T1PgQXnKuS3i@GyYldM=@73@+F9jCx>=zC_w)jOLDnv z%h@s{MG-Zkc5%)Xl42wMb_?aeOHN}pd;}V46SuEk{mz|?kjTwWQ|IB>9r@6HH@ez3 z#v$-d#SRh8j-pgIr}@7udi%pl__k$#kBGlLuxYPI--KjFK_1-X69xvLD|~WZSwgF_ zlA6-w`$P4$kl_b5il7Tf>abyRlF|B3L{?t?jB-B$SqKQns|vPV8|snHnoP=YyA62g z%!l{dA9YrXS(we}!0Q7i`yZI5W%Ne5RxdbYyiG;VcpHKg1gTAg;{D52HHnfpgv#A8 z7{PUGO#3nVAOR?b6y>eDKGgH+7s9`&K(m#Nk);HZ&~43dZFSL)=u`8-qP7LQ#m*fS zX(J@qJ|X|W;EhU_cWpZlT6jAX=rO_tR*TXde)=mmElIna?;TrFOr}I|zfu`&!pm!n*z2P8tgdTJw$mAd9_uH-U(jLv=ZBr>@SaN4wzvIfY>qy^gz zNG!2vlL_dX`)v-U|8EdMfHt`#=3l-Q5HHCzGOz-Sao|*1+5Du0atT)S$rns4{Vk-N z(?;N@ZljY)S@Tk{?brPSnSwoL;hEFd0Nz>W41(L@F)M4>KQ*_&z&9r1iCzF}#GqDn&%vJK22?)|&MI?^0m0alAV61B!Nvm@&1VqcH z?JOm02%pNtXt%2U={2s?<`t5!hypZf1xgf-NYwj6{rj*&aRBZCmEHr*wQr<^Y)AO> zy#Yv63$g-@{r7nN%+Ktogq~puZ^i5E)_@o+fcT!3o22wMQ+b^2CdHi2T_fd(fFqmQ z%+${{qx`GV878d}@RBzNoF0EQAkUK)qny@l>Nlu8i>+vr`je8G#Z@)q^9%Dp=IDkylca~9!iRSTS6l(yR(VBBz|Jl1`zdkDB77mTSr>t2nwqt^2 zN*1dr1KjHSp?Q!|fryDT z7&l?^-ZX+x=Hc=FdlqpH&B)3v**VpjsI)fPao-hoHi}?j{}d4JL@ei3xy=l zNWNOcloqV!T~krXsmsZUtnOQ3Si6R9^HC!5TD8L00H9m|iKgE?2-)x+&ptgq_6Zr; zJrR#&Br3_i5M!w?sebH~b*v5Fpj?eOe-F5v=+fMl5p2mKu8!SRHH=186pWVzaCCNJ z(Cr}oG3{1pwu99d*l@6IBOv*2tb;(NWwJXI6hI%kILTFPlA*CBUv+=`}tmjoitz77MX^*NqNq1S;DXavgG zOxTa$_j{3!^NMbYy==|H!NVD9KZSW-dz&+3(-?Mn^SaY#hHhRsd@>9wgoBhFO0-(V z7mbU?Kk0~rvKLpa(v&;<;=oGt*hHm7B6Ed>#4hbV1aiiTYnqM|CzQBk_1c?&F^%D} z2SS8acR?^gBz=lD0ac5j15h4}c(v9Xs{jZp`Z}n6f-=wC;df;zGweV2cx>Xf3S^?g zOQFZ1fnegZL{Kmkd}!$WcNcy)&{V4$P2%+=Kv`WVH}2&e+EFVG5h?!Rvr z5~DAxE_3BkZCq&gHwsD1W@IRaLIC|sAR*yF^^}02%asWVASWOJ_u=ztxRWjnIe9R{ z?BOx)D6Y2p{+lgc*?=_3)OPaY?+n&7Q~ClY<766|}@z$yahIuXr}k&7thO zb^Rl07T<}F$2@VPeS-3eP7GC;gz5do0Pbz5dNLXDY>6p&H3%Ua(qZR>mu!&(r=JGq zLL;z@+bI%UH}dZ~O)pp4QkXY{5L>=uQ|^1Z!DB>L43+n9>Lia_s4{s1jG(F^GE%Z! zwTotPl{Fz7&W6M&d~cFuIa5kGcw~*AC7E-SCVeszfS5!JGW1~vvRKhQtU`?UMD-TG z8@LRcwYvhkX{Du^iDHQ#WLeB!>~HYP?3k+$clz2AX~lVok=YQ5wWx$dG;B!AY`INx znr$?A)bSDveCDE_LR`g7pxF8fQ{C;@=%D3W8<{5m~LPPt!HZTxvWkws} zk?NIDZkP3hy)*BET3;ZH23I2$o)~z%s4@wv-KB7hKc%LYF^ zM(}2I%L8Ob&bQ%_QZZV?vizy3Kc=11&r?FHp)!WOghzHtQEW6*&3#7)NgZUb4Th`F zs2A8~-2e%P#)u;@w6xCh;|7m=(OBVuPw99)XQG@LJ#c|IR!7O#-B40*nz)=$!^VsI zu2lD$M~(a&dS+*3JKWwkQgrht#bDrU^SV#G3gF*l`07S`?+(Y&Qy(2x0$PRlDA31 zBC237B##Mq8j8k3)qn^)e4LQ0?)qiZy|ye3ot2KUo^c}@Vy~-P&0+F;Hfx|s1tPs{ z$LXxF206+^$JO^M>f7sj0}G^uoF^V?5c5YWK(L?c+LckLYRnnFID(v{Hi=g>*5fgI zxmttBbB+C66l5G0WduQn_bNAgdSK9+^J0*HcS%5XoStB6g+6oibB6?Zc#<<6GHE%W zcY9&ljsDeF_Oq8oiP_?ei~GxU<&odXXVL`Ln52TCbYTDuPK+vu5c$)gNMv15n{`@V zZa_<=tLJakT9oOz1R`$7dg;Io!bXAtjO{?hK@u5CFBBWms`WdZ37gANv6%-Oqn4K1}6eQ1yJ}B1f7%o?t!&G zAzP`a@&EYXr31@waZCnF+^o--&L5Q6XYFElOM^Z^Bcg>(=o63jbLo_Go}Mn4vLL>* z2xEYW)V=s^<<2N>$UDGZIo_QD7tj|yFVx?Cg{UNv0H~|Vq09EqG_f)~%(LIfJP?#0 zY%KiXJbx0LkZf2NYc7_s<`^?Zuai%lE$2|Wa-YAU1_L3fN03jCuKAo$k`ty5fqV6_ zyAzwyF2U9B^j$@xoDs3k`{~+U2)X*FF!1AXeeB$ocj)$|qrp%N5GeBdnyb1yEL0$3i^Qj)qCn?WI&*eCLW!nzcfL1+T$sqD~wQMVLU`5T&R@ ztO+NappK1z1#V76YxIV}@vs<0f4;r2m{9CBZYI7!SigrT(P!ar-HSBEm*APAvYyQ; zwwTRBB5a`+#bcu3rtlPAqkQ1KM1mkRU@}GU*{YAU*O;}aB|yJil+?vft((58)^b;6#ds2_g$yP%PS#e!cYkbaUPO+v+LoN4daF_M49cv3U&TM>G6{1Qp-D z!bwH$mF`RosNMtr2|KFY1+i5hZI{t(J>Kr-S=%zp9hsyo?Ha59BV-g`GPvXKoJyZ zQ~8)e%2NAO=6Gn4ttVO{QninN!PP%$X0!CdqB=whw1hWD{+f|nRsfd;a>}d+PYPIf z$(&)rAQqbRu2@Xyz?Yfp(mmXQ$n{|z6*}b?N|>5i37<23`1^c37<0J{Kunrx*BPq~ z5%ICUsBWocCzfdC0az2E!C6fj8WpJ+k7aHrGPt-+jt&0G5`_;9)*AxVxi20@v(MWn z_N}dSHlJha`mnz){1Xzq7+#!Plawj`ey2N}61EbU&P@fBN1wOI7N|Q1Wp+FR)d9W9 zS5djOng0)=Y*2VM+9@uIqY?_MQuGJq6ge;fb#!;!0})dX3sAyMa(c~>cO>)p_cmum zZBQAd-80JSGxD71(lE}6@6KAP?gN(NSLz6IE4G9RK(IXIUL1O&A zh}9K5mF4x-S^nh;P)o<%z7gadPMg4%i#3wT_ z@3`_*`-^lh`soLGzW>56{Swc{Sy-(zhLJNVydsgdI~4bdI5Z#GZ`z80jY8_QX3*Tc zjq0;@&arcdZbGC6alVo6aIk|M*OHJG%|`0+SB3w*{aA1M5rRZn30o^_{Zcyflld0s z_Qat->`blRF3JR$`qLbX-W&YQpf?Do9=RFVb+LABf zMd0577YO5u0YGxUu2Q_3Zvos;8Pc3sjpysyA0T7${kTNmYIH~Iz%X87@Ul|PJ;Ti6 z%m9(?uYK8^(2LHt6Oia95D$*5eX@}Z6X^D*5(+I>oh56?6=9bA3H_^BTPl{%LrsZr zd4jdnxg!g8d}+lJ5X?J#D(Lc`18lP=n-LNjf8y6n=M4M;8MA(y<)`NuXu8fW_UF4#!sSnh_& zxUc+Xx>Cbm+GN-CdFlJCU@dz$F(5tz(g!bb2N??9Qv>@;Ajy z{-jEOn=9XH`}7!1LHxZk{g`779I=)dAM)@1B*rK+j@GhK%1jal)_>n6-(OZ8x#yDo zho}2CGgQ4Z^C@gh$SU?ZUAt~?B`?&^M0?uXciqWm3niu-I(@q`F;{&Le}sG(ndG;p{w?*Qe)NU~{4upN zaaKzJ^2*S_=Q17U;YUcLCo(h7AdJWffZCmE`a4fUzS;;Srd`0GClM*MPLSm6uaaw; zzm4Fx7opvm!8m=E232zY#Z)&<__HA;3hJ`KxVADsBmH=pv~E`l89kB`&3B%GD%TrZ znkSv<%>6+u1sHP})peYiY0a=y>Du%9_|l~+bh{W|0KzbKotHk2v)|i&wGzgAl&rGI zRMANitqX(*hfwJ3NaKyWoey?hL?41nYbVNTxf+BHtY~CS9yn>JG14|mqP%fvu7{ug zXQ^9bNc0tt@41vFU4x3k7V=_W814{$xag|`oHVNdM~o4?KxAQMwYDrFNzy$>Qdbo; zwByP}z?c_S^HR$djQ%&i#0?qDR`#F5fA8R~97H zOP>0=8EI|RP#Cb2EDcQd;I>$>Qrp>#FI7j~3(wJ_+k@K_^I+1V&yZ-@*H~Sgg%eAe z!O3%6N3DpZ(rwo8K7Ih3n+1GNH*NALy&I}^Zw+jqoO5obV|?3>a_@w(#+NzJcg>Ld znb;_8)w{@6j2IlUZ(AKZf<)q9M&V36*5Avmf}Vp;gb`lIfiYQ!#4G!UMrI3PJWsbF_OJf0(Z`3Ju$W7gr2_&?yzGFqW6gMsQzVpo5AByQ}+fC7F{Sb zo``Xo4X`<7%%CcP+QDo!(Tp_4X3rzS=|7YjJSxLd-#hIB_g)1dE-f@rV zD#J0vHCshVa%+af@g|CGF%ky`u=7|+-@mV$5U`Nmh+x{?*U_(CBbHLglYmIasxGc- z45N`@;C`B{6TW`0LLZ>w)Ms+9&7;>lyp&VulTvD(9x%3E8YtK|7u@XtANHB@^m;#q z01?am(M7c~hj(kbA*2%bI^_q=UZf(1*dvjq8O@`Twl32if_tX9Hb8n5AD1zVM$5X#&=c_~JEI-%4lwbUXTbBH zN(G^zaL}%}wLe7FiS68qHZ14&wy-OqO2tTOzjntY9Q$8kLNv=?&BYv06l3rMoYx%~ zuR_;iu@5JuF}wtsN~P&EhonNKdd$>A2L~djjMvdniTfK}!?P>b+k6iI5B<>}2`ld# zsN?6N+Y`5Bbr|o^S)0lAUH=~9@A$HY7B%O zV7aJn^N~(Sl>y`}I8XL3UEU6*O5FU|rc2lAE87rJ9Prv3lJ0e1f99f3wBV)sZtj zbsl`+7UM9@*UrO?2~-Np-E1LSLo3zR1q+eZ-;ZcLgP!e@*Q%xK8dcEi-o_D%?IcLZ z&Y7#{F|0Nu)+0$%}ZsA-L(WcRx@n(i;Ed2qahKDkiiHlm;PP}ckp|6b6 z>c1L`q$NaghD7;oub@Kgtr$VWIPW^~%Ry-Ylg%1vZ|_~J)4e~)T&4SU(yjc(GXI}04W>8!>dzRr!02wcC(-r6V%E4k#(m(j7sn(2%cZv~Ysj~tVgLCa<;US+6(V19` z?1_5nO({%Fncw(=LvCn$d-*>ZI`f-?uINf7R@=3Ns_llKGp(C-xGxRvgIJ^$ZsDG7${}j-sR8$Y2XH4~LppkJS* zZeQZSU=)a~Z6W%C7X4W92pPCv4sW*Af@m|T>XNYfBg*V8oDUyj@cY>kes7pfY* zKMdOs&09*)I_)KK2m4n0FU}O@cAtM@nS*NX*TC?Ssh`?2q9UQC)w`h9^M67k&8sBj z7SB|w#Kg(B0j*3wY-~0|p;XHKo9#RLe8lZQQq@O*jtv2+OlRXQ4>-pZM!e>#^I(t3 z=I%t9X?}4C^bV7m&9pA=p&?2BPrVjTs5GkvaWKtP+;_U9{sH5NB_#ViHt z)T(-Zr-1CWo_x2@6g>UDO$yFCpNB2g9O6dBU)(Ze;wTQZNf-yB{7ac{f3C@F4RpC_ zYIN`Yf=2+^7TQ)o8Oz*zGg2*pz?FwUce}HBi{^r}T(S6b;G+VY`RxtP-Emp&5^9M< z9Arkka+y?i4w`I4aheIx^K)iyJVlDK^msf7D8`FD_#2n#(xinD25U$N9b&ZMA75^tsPGo?PAVcI#aq2O~5gCOPSZBzH@D5Y*?fa7a7` z0j>5n93#zT4NJYtn&v}AT<&kGd%E4ZtYH-<$gV=Ea3buw+%<{$UDgO$m*Meu@#(eB z^f;1TI*rSj`#J*b_75C+#+zj`ZCDih0w}Sud(6_XDxX!-n%H2 zv49%vvDu8}|DJn56ApuT0f<<#JN{-|vdP#pWai;>fxs(JZlc4 zB{+G~pytH4W8I!#d;FrX1DwI-*%nJmVPkLs423f{?&GCt>L@c30OfScA6{!mVJEgoGkP8?*@1SN_mRZRQ^Q9`zX9}ne7J1H)g)AF#cQsi z(@Ij*2RBw*&6qOu)a*I!;&oWfz#FtS+3$#r`Voti&PQ)QIQUZtGQ^PAOyzJq{{_YY z_tNoLoj5=JQXQ>gYQp}|S+2B^yU-i&Kzm?K+q@UZqkT)DitOT)9yXe3StrJ8#Z?&C z3jlRyCHP5OR|XzX*AUs_}XWFhNUWMfKr0B;+foX!*9q8fE;wo$LO2{#?u@YhTJyA9Z24k_QrK@ zkxITV+aDmbygLS;cp{wi?>X)Q*mgE%|34!8wAU*!j5t3l_q%(X|5W!|Hsl@|+493M zU_)xG^!(@xMeFK}#N%qCjYwKWyC1sbOwuZRLEQk9?y4@Jz6pYyg+hC%q`o^yKx|^=(o9a|GU@T7k9*Dgc@K%d~>0 zMgP4_ZZ%k5D@ZzqJwL^ddQu8D@pNq=XI0?&ic8 zzsv2YqJw=xl6o!{A;D89jcE~NcYQVBws6J+_rKuy;Hpgcp<0LoUkGilL~-HJWCRkm z>29?C4-jc;jV3O%Qj>a^9?{dzGO@Z{f+Clnoc*6rmY)B_>1HU7tu|M*Bqk-&+n(+A z6^LUMM|^l^Fr@d*y;L3EPhnN8*!{qNeD((jG>cnsUR3oXd@Ao2ij}EuUWPCb{2acv z50t8bW!=etXTUX1&K>?POF}2*5j^3?KZu)=r%WqpCt0tPaX^D4w>f0qp=j}pD?S~M zCFsr3GHHzZDQ50Y4JF2YbAW?vU(0QLkH>WyuGkP9vX7hh0diGKuiSEEf4HR>&V8N7eElGhB~=W@mkvF!G#EbD^& z49p^msNWzePK7MIOeq%icqJs64A$A*C-5M`q_t{W$i(BWA_j|LFj@1N={CQ~ z@4<)7r*$H370N6{i-w%#-!>~8y(=@B$70TZkdN2QK06hCM+YP+4oq>Q*tsv^pnu{E zERZX5S^E@M3;ti0P+tDsVGrFx3Lw$+bT**G+90TG2M2Fmr-(_&MZfMIFEE9ZGQwK? zR};FXG>rTlP);`gXL6OVjHv`qI_Db9!b~6GO71Vd+CfGR70<%1AsTEZbXM?G8 zA$&98%O~eQ_WjdS8#S`&Ou!{tvl9s|-m8?NOwQy8XQm7=Y@Yg$iRk_9MnM$m?9EQN z4w-48)pj@CmpRTi07fO+ZXN9j>v>{@)1i{P&Yp{=+1VN>7nMt}(Uld-aO!-u12RO|i(m;Tg6()5Y}8yAi^MT~ANq2n`Ac-t;toxE z!Ldx}XGWkVGG_d?kGn~ys#2?c%WKbI#@VRX!(aZi&ZO0U;bmQYWC7JuYowmtPQI_Y zJzYs0pF1T{o-Uy(Z7yjT`2;{f;SE4+J54U(Tm3m>HbDsS$3p_qo^(UUBDgT?a>xg< zj(J)0$0K1y^1Qxh&^1{tfJQK9 zy7LW2H1C+1tx+7wT^>Lcsr?Gin$)4&a7AzGtfWN{8vL5NG5q&*WNl~ndZncEME>Xp zEQ4|3zp~~6as6Uy5U55xJ_ha5;p#XgJD(hZKNK_7?8@z5}oP$O@_~K08r^xOrq{6+T!f zTc*}!xsBY>Ab;0`2h8Jx3d!$EHt=z62)i>0W8#Aj<|1Y4#RtUBuU-q``+hL zwmY=Hs5Hjoi_fWNH4x)~u>~sdJoEtzBgB#xoX#Fsc(Qwt#W*nfLF8g|b;*PmH)J=V zoXGji1ETcIRH}qa8I%ka<{!^yVbsJRem&@+m4OU~*MvyuHI8p5!qQr9;rLEz=$WPq z@RAmHH$Dziip)TiTEVd84;KcTUO_a{maOgb>Es9tOy$$Xmo8wyTg}GS`qAE$APM&w zHJwxoulvCe1lh82$Wd~gw%rx5v+1`%lHhljGW0qlkU@dvSBLC@3oLAs*fLmCCx^Iz z#Z`?fCtIW4?Km#;^_OnACtoLDpjjd*h{A{9B8(Y^sQ31SUks$!E$;^cOr{G;wE|O1BP^(4_aP# z-fh+`%8dz3<$Slyasnj?A>W1uMsq5EjARyuk$tvBqVbwK7L5M)jBpvp#J6-xu|xF;3B!;RetIvTQqs`F(csY~ii0H##-eEtAXu|nhMrc>fq z3sN6~Lh8h&Rt)&cCd?duv%5;hL>G)(I^aFX5@J6H2R*(|7^;|+Z!PVoYY#rNZPLL5 zq@UX?S`$h`v#sY5=IXX+1Ca`z6f*?H;RNa|tbTxyKhG6G#JVOW0?{F~LSO6q0|ZcS zGN!*s0qX(Y(CObfEH zZ7l%WKCp-P*f$YB6WySu{^N=J+BA?qZGGq%?5uh`Dgj*lN=&Rj{aD;&_S{ks_`68l zj6`>qhE>*m)^cN@V~R7g7YwZeTJkf?xAvGRixV{<&9K%x8^{VCnN)Jk9OezHD^WDd zT4$z#*Rs0e4hR#bB1&U7=rkF2W&&=6)(Ma34U}QhLxrH=Kwzovj!j4n`n!vZ zta;J~$kV0`I^O}FHdpi>ZHJpxvg&3A3<}diOv9UhcRQ??8Q+`=x`k<~a+D>myB{jN zqYJmY&a^nca{NPkiQ_~(@Xn-wz#rUNNoU&R%_J}r3t|A*wsf|h0$K$Mg!P2_b%WJ$B#D)$C)Kg1 z!mJ zF7EOW_;ylzCqGmGzErz*_&=^zIcoK@Acs-#!meh(Xbtomz%61|;NMfW`)8hZITEat z{QWl1dRVu07ZaaKWs2=?-x&g5n{6TbiFKtUWmm|^DVXFB+A{9d?n*zl{n*JRXwgnU zHRPb;=~*%xsvnGyI4NJZLH)CX0^&%Liw;ZX$hxq9>e=A6UoP02qCxCH%~sV%{cmhGrgyeBH}>cpHB=?-?oHDF~!d=UI19XE$;j z%T~r2+NB&1{=}iBT8}_cAte02+j`Zs-?Y<%8}^Aw9rD4d(jO2T;P6}b)#5*_`2_*I z$xNrTya-0DLqGuhH<%K*L2nZAL$;FUS1-}?Tb6KTd|XyWEi|vWm|CTEwW{BfP6S9M z-ocy}JN4~lNf?)aMc4#BqLhIP3l3*h?4Hr-0VaV1X%BQw-xdeMp&~#n&cxV};d+63 zc=&HwZHds`Q06%~F5d+|XHVOyokmeuk!uOytpExflU-OBQWsa=YI;XkM?O?g)sfDH=S}E5%qr3*L7X5JvKQ`ZrwjYw@D=xQ#G}Q?X%))zo!gPG7 z32Z%6(drX+KUa_HkAXV_N7Wl1gGkp+A1vo$X}oTqoHrxSM)*f!y%L=lyo`=MEs86Y zRTXZOkFT#)-koIhnDQHLsqfh1=XES}I?F-?B|cmqGGeX*5P1M@9ZY9io(U+Tv#l0M zHAYt=FdLHc76~X`T`rcruNl}~X=1wLLY7Odp~T=Fus9yp7H^U8~h;X zWg>|$)x~4R@Tk706WS)(IleXlxAIQig%N?Sah@}VLQ;^%nXcCgJ^1I^FTt{yme$FE zQc_dg8%OX`!IyS}*dkB^CYfG8dVf5`+7%LW;cj0ARsZ!t#n32})DNYH(T>2L{9Cr1 zNY}C8OlSvz(2#HthC%>jmq0s0Y}h{gi!RYOa0qGR=d0kUsIJ;Yzs*@F_uPKBMG{64(Wwc2vdj<_cb1EWWr6Q}7ql<~&F{R|an- z{M}M{LxP|@YoA^E+)cbb+;+`XCs(AYy2%8q1=7u_9GoMtnrX?j?6c-WQ!Uh`_^QsmB2S zKLEh*8XZ7vncLbM>rSDvI(ljI#RszeRA?KqCsS?*Ev5f;3^RXei6GqMrM4~DFu_5u zs8=L&0s8k)?A=!>k4R=5ukl+N`9lo+sFnu6W;=dtyKda=s)*_Aw(Vc+9 zWzXqdeb|6b*}bQ(uSB1Bqn5L+9cXs5=0G+ifoK$e#WMajbK+IFC^ckK0`V@Ck|r&q z^<@$q=@p5SJG&#db@67v!|&9u*DO{;hrpDn_T5Bz95Iwp@YSw?aMo6NJhr|rmYLBj ze_MYE^NN$>xYe3)3R&;U^OvQfqOE+9_-jFn?C~IZT{!KEue&Nvwr=pM}^NW?|D`7RwE z!JXtBToY~*aIi1uyuo8vBugZ$joG&j zuDk z$M~^Yls>vAfNV>bkL)d}vabWGJASHaE;wGiZVl$1*kKu>x@_=3jC+2+^Y%_l$#3k1Q+6w>e4iDuc?Tvcx}aK*&B)2Y-~!4YHIBX41hU2!PQsY zS=AquS0|+I8N(5Fy z&RM)?>&Z=>lT#>c>EfYigBo)r2O11)Z$Ch|V8=3o))S;uY>Y{uVa=JqJD)FtQeG!- z*q0YfkY%6hhHkj)fX?Y@$Fb9ug=cX0M}^}gB9@>GOraTgy@U(d!BLTCU{IyIR7j5( zdx;iLZ~}1Iz@6|K+@PHBr@W5m$zxsxUIl!y2DYpQ#ywR>LONHIz|&lh2owwhR7eH< zutsdKSwZ@RHq+&jcvhNnO`%S#FpaY@6tVTohPrVEOi4ANassb_0P%MstQx^aK|fD` z_u=Yxs%HX((7-TK7X$@DN(=jOS0CB#`^|UO?NL}1Aryh!h+IeKb?AY5qwf33ezANe zhc$W%yaV>Z|3}Db9Cmq1cr{0}rOV@&@V;vXT~1b309WW~76=fr_>ns9AgvahcpJ6w zSHP=9OdoVrMaqR%lERuDd(oprGo%7O5k%6HG(&C6bcY6q65!XeI6TlFX3(g&V~x)r z=0g>(!*eii7dGJdHC;BI*pE7!2XfQUr&ck&7^M^lYQ!=q5e{dPb>pvdNsW~M(MVBp ztn;L#Ua88fk#~X}ToKu7zi+zkV64@iapp^yW6fHiD$Fg9#bpRiTrjY=oM-V?0<9#9 zPW>$}8~RH|$C4~vbp`k9J>{YP=i}Ue>#7|bGP^FRK2zad@lmAFJ{yNgh`5;wmZxod z-W0?Q;eO?oM*ru4p$=LyZpp$lZ5s*P&@@0uBxPe`X#;$MK6yvwz2(VN?bOI;LfCx~ z+mx#N1A3te2Q{pgHKg}Zs$ed(Zu&o(4^;t>T^Oydz-JoXvl629fA|>iae(ILi^Mj) zfioC*lgD&~sYh*-pu%V=O_mBX`x`3;-AeQXd9Xp7quGl8!=Q*@4G6q1z2YBLQGJ3g zhW7&+`L~B_i*k?cul^sqT*;!s;XVQmbYsaKNF$qFI>6*kb@j_Z={vbulZMFPLD7+G zZYy+WyUNsX40{)BA59=IYvBAP8UYF#s+K0T0v!4-&O6bS$T9!%)JEu?tNWoZx+R$` zu8xgy^o$Cq3|56C8Zz7EIizMtC@?8hZv?}+$t1g)W->+6_S`~FaEszWVeYym@f#{> z>%s49A#sFZ5d&swmo5Yysq(jFhB{<-=as&Cq^`f`iBuvV`H6C4lD@8u{q{v1N9GJ^ ztx!t%r79rb;6*`Uz`L%qM2icb7gwkmq6ia;?uD&@$Pb z8nCd@r|#f(Ygv+8Duo4J$c!?g$rl8^ePJbA)`cO>G0VP-g#^Ik2gr<{?4Jxq;<^R9 zDKqfmO-$Z}#*V}`rkSifxnF|2nYS<#*5%Efk&tG)`?CBqu6%8cq!~p$5+bJc8@M5k40W=m1pgxf(X}veGHA$F3*C}{w*mfEelEEtWjcfVsR?<<#22A zjcMLlA_$L(D&#?uuo+LNi<5uza7$$q1y;GDF@yI6ZpqenSWr48H&7z>>veiTDq)Ad z)%{nDlP%Qz-5PDgDNWY<+|H7oi$zijUB05H6#{cej%i9Lgcrn&A)@t2;*%fW+vsYZ z$D-Dg{50Fl4&tiW z;!SGJ98MYJ(K(_ud~+-t6(IvJm|^BjRHgqzzhU_7P+J1hNsy~FTm$B(H5$lJ7rING zJ<>j<@AX;Y8wP$N{t0ph_F30L6HNv({OQwjm3ty!-T>bDc45y~V#<6}mw^F6vfM=c z;1JzkI81rW6*ZLj>Qv5Ucrm$6_mr=+f?YN`G?sveB=h&Cu|xwe0rKOA0RAN`$-M;2={;H%2X(&?hMeJ2--44}keEGJ>205W}qDS*jt^cQ$+ z#bjRZO4$<4Y4cujp^f=Xz7t|EbQn;1n;cZ=EdT_;u5FB0CmIUXQ{4bS7{{~%FSJpl`7=mI%=<_llOfK7JKxslL~5Pfj9z>^i3EEFCRY<@13GCk`m z4l_M zLzR9x2JAO-&yfgK=Wkc^-rG>G$MoJ1OAerghKM`Ajrl#AaXK3ajleApLp;tvVeZ}i z2@X~6AOKg(^22i;`}Sq_t%I?XB!&lT9nn|iB{K_$!{UJzTD^ifJySLkw=ZczzcI&kw!{ zPDNI|IE=mUmwF%1KCz$dPeVQtb4jr?9B^WOURV5w?A#wH zK5JH&cU;R1T1|w#WVX%50dG9G0I-HrgQ$tiDZ;7~5jBK=tW1xJEalak@I?sQvTu7N zJ-|>6?dXrjk!H|lpgt)-ZFkeGw;5gCN3vrBnt(`#E|spjWz+c?SGt@Zb$X)Upm11) zv?!D;s`h`!d;p`OU?mC=9oo;=XW{5m2U?kn)~s4|Xiw=0J)ANf6m_M>uL>Vpb8{Wl zD&kyPG2skVT8o!3$lqjBiTVV*TAP`WOgEerRB=v`mXQhg>A1VMr?+cn7c6F$*AeO1 zDObjj(GD^}w<{yUwzAvz_#=he5r>Vdso_x@L@eKxSMD<0AjUg+EA~Z9WA67(@C;<{Sww?)w2}h(W3vIa3%rBDEPMcG_)x$HZR}_UUK8u2&_Qj&BSAGr3hGk#>82Ik#{$o`F7EP3L#Zl6K%A^p~MzBym01i{7?8>=F1@ zlS7Mc>^Mk?0Pw`3;1qZ~8Nvnq=)8*IjvS*T5;0+zv~-;BR-dzCJAH#T(-vAVnX7(L z2C(Ccd9M7=%R!sXi`0uRL8*t_$Jd`kyCfeZO!-GbWEkh_YtmV*vMRR@-p*<_%6|P9 z)Bc*${fJ;nq^GO2m$|u-mb{7_Ux-qm8k^oUi$Y7XtRX&hP4F>ZJNF_~wgM6=PAbT> ze8TKwiR0&J&%hi#1bTz#5#e2qot4MM|B(LBadoBbW_ZR$=mm9NXI*=`JztB1du-#;aWR#Vu_6c^TSpZU6?Md71codjfWB|5I1dyDL~9ckH1mu`8{EDiG? zm_ZH9qNE)5McO(0ELU5S@P6sJ+6|mX1}xkZTTgvP_Dk_=#u|(md4S~OUKHpI3`-Qy ztr|m+Y{!VZ_vMTP@Kr^RTDdj}Aks*(hr#af;xgBvSUk0`I9RjHhA*70UD`j>I?a(D zF;z6g2dKh2S1)EMz=%X9WdVl2CIqP{T*&)Jn3iYV7nVJa>|YT5zkXRJI54#>LHZi> zELZ-8GELof*Em!5?q5gG8e%ZgUOM9hh+3U<2NX5&N4@a}_hqMsXyNqS)-gQWYvgvI z1>idqJwVuGxt`BqIs>h`C)D7^8dPP^Hm*hgBCLpNN5-KgG)7-tZk#5zdv6WkbTWrQ znPiA|Nx|||k|bprk*hkBVPr5tlL>xpX={z16m&rHIEM^L8 zyQw>bWckVr^E=p=p{M^MNy5Q(8FRV%PTro02oh{@tPf5e(LJgt`e53dQ%KU_#u`rE zpqd_2FoQcGsgfy2xoJvxyaOs1D5+I%MSEa3r=&=$+Q;Xv!SR<1YYn5WecJc2wNjKR z00Ac*1oXlXn5A*9&<5n*4kt^?pe30G*p7G!m8>}ThF)LcUl(#wK6w~Un<5~R%sg>l z|6$k=*J=Ojfr!5F#Gh^6{#~0^6|FPTpi6A1pFLk$e{AHW_~Qd|A((ORXR zWWlje5OG7Fj|Vh>UqP1D``?&489LSinCP7^Kwm&q0|I$PX-jN8V7{Vp(H%dNbWq&c z*r46wclJsmuc1bpZN^CL%;Qe#!L<`l}HaOkz7TXqek)Rv*^QoZw;s%K&<6 zeU$;X`G(|1!V+6B{Sf>vSh79RTl%MaD^<9F+X8GyF3hiW)S3He#^ z=Rep~Emme$qCF-VW2t`5$?#rZSn+|=hDVasz1j2)-ii!1Wn0yarRhzOyu1%z)i{=~JuxiZ5Hq|k z;D>y{mY504&i3oo;s!Slvfw$)toB~@`Df5Di?AWig`TSbXq@JGpfF1Z^Ifo(Mh8l( zb+qx)J&>30A$RM(s)k5$cAZhij9fo==$aGhBH9s_e;&3l#=<(&MNG5UipQHKG`5M- zWbBAf5TR(+97f-XAjP1tpxIuyW!&PBXvDAwP#{^}0}2Z2_g?M*$nZLPeQmJyA&3je zxWdW(h6CujB35$gG>B`^7ctr!yvOgp?l}uN0mwY7%T}IV&#ubVJlIY}Mn{z)Lyp0~ zlbkf9!1`Q*L z7--t}!!uAaGO-Osyh}sb>`Q@mH!OrztWb`84qI55GijsKkzP#hnJhWXe?jtht&>`v zkY}Q{fql05#bq`a>`N*)F*!$MH`xI5M8^noXy1kl%0>m&;w#xrsy(0iQekYLf<`GZ zB8}l=C$s{Y53M{yt>q2e+oF=^_HR(%aQUiU7L>xEAx!0{QO%TY?XTXmW!q_Kou22` zDV@9rx9-pQZqcp9rxQEpP#|9vOpbp3h}jbz9@}W*a=Nv?vSh|r^a>b*{9Bq2uW>sO zQA?nVu<-H3>2MFb6Ex(qVmrX)N5Tb158;n+?7h$NV6vMjF8nc47sN1wRPf>B#3t3uGJ%Rs+&^u6Du?Au8Yy+@XN|5&M2=i?fX~EJO zGex&pbBJ}~tz^a6*EYJE?!GZY9Y-_7=G=k2$K5Gkfk}HsUdo$^_gxYYnW*fHBmC+o z)~M{5v#-ZVi9v*1Qs-AmZy!wKH&So_YnQcVnlzVWR0UJLm?Me}Od7XIR0IA)Y;%@+ z<7EsGF~h;ecN#rD;g5l*J+*mSdqNL2GR+wePBa0kb3^j3#MqD7Nc=nlv|XIniDF8^ z7QdT7na0YZWnoBbtS~8nOFrP;Bz{~mPBXu!JpIoO43NdfRsZc|%R4FdtT0#|;sK*kG<@xD^Z~&5#bosS*>ero5 z68@!@&@*MON-i1_Y#Pmv?%W5vIG6eJ@+3_ZqgB|(4WwAYv{I7+3D@K}wLeMGjJ)sq zu*`B-?uak&m2XBY+I@jiH!q#{M09;4{?VMVQoHuiToXLfq)U}V5eZ|dy);8mb&*tk z-^lLyJ+=>8E@!t&?1RB_XgM)!3;s(Ub?dG?+KZd3U$z?ck75DHdoQ@rvN0bKx!>p9 zKk7u+A7%;P@g3y|=z(txm%zNDFpTdgvejU^8xiEzt=DW0>cd2&j59%)OBF5^0Tcig zq=0!k8|?@u-T)w9*4w+y@l8T#@1wV7zy-iy^(QJ}GU^khD{Ou*j#u84S5ovUsXHp2 z&f3Ka7eUBN3Pks!tl6q%&Q0|tI>kfJ-lHq^*~|+Ef7zCxzop9X!Dw(Pfl@?V$(MDP&xpVmN}T-r|9XDp z<^s>MK5dFCW*ZwkF3$MTS#|Crwun&-FVcr@w2HN@U4X1ANANwQAG>U9xL6EI`piex>746Em&?H#+Pg{ui==}n+5vA*6d4+i`RxU zV1OC(m7F_}GxQLj;)M%x{J*V9=cPnxYcKv$gUFXWq#0$F*lIeRcEgaL0pEVt66xo@ zqA5PlQ^x>JCEV^qR$7|&;*OjS|9MV;nQdYyO>}DEwTe}`sL+E=wcKoLf_1#8 z2ly|Wu3RN%LEVfSdESm?#bBf9bBQ*|=JrJ`-+TKz%yyZLRN#+2+kvwxP13n_XeP4> zP?G}k=+X{)grSz;U>KL3cc|`9ljzVC3o3JZpDE;;?`FFEWHG$27K4-XN+}`Bx{}mGU`G(fRD1Y zRa>wN2r7=CYf|Sp6I04uFxE6>n~3`|q?$cmRBF~ALG9vy?J2EY--b+AeCd+jj0$;F zfZltU5=RC9wsE33YDTpvlca5ZK|cbuJ^kZN2Ion6mqDATtV5@knsJN&c-BGU^s5*~ zHsYtR0UpE>-7$sW&c9=WRI)OuGi!&ZrHbfs=a}kIFEZG$w`Ft205!r}RuGTRCKW+Y2q za!RJ2A*)k{F^;rl_d4fkxYii=VWwHQk?(DUjzzs^6^Hxwka#vswJz^K?@nP2hl=#+}llJePECt}sSKAKxUi&~j2 zig%F8`COfD0t}{RPZZggx~vAxKzF}n_s}DxJQJ)xd|Ma3M&8Y{tTY*Ak|}myB|fGC zUti}GLOjNu60US$yq?iBUiF;!1k$G z24kH(WE+ipP~MykrB<-6{uercdH;gKHp$Y+S?`@R4D2hLBti_=Mv?X0+Z$~gsqk{D z_V)4Q;VBN>G!|v_3JAb}PSE}J>7gYG(`fi}7e9K+u?hg9*N36)fP1*(OO#n7@kx9P zX>md7zqeJff5>za{%tAe*&xh+@TAX_u9T+fxn`8zTme$YdbS@1U=rXclu{05f&@hG z)C2UyaC^JqMJb=XIXl}<07%ql!-tD5H`Hd8+4QrDNisCCOSt|VnFV?z;Xn}9X>`?< zAJd(i8_$cAfjgsqNb`#|-bw{Yc^_TWBSR|>lp{e?NQ1`al zmhmh2)Yj@^E!i3n8Es%uL#-fEbg8r&wC$K-J!U$MNvj<7KQIY;1n_6gtw-r6fNPh( zOP`h#=Yq40&EGnzs8)HYNkm}vKlM#*ZC&>7$U&r`d(uq*RU4j#K$Bo52Sq+(Is@@- zp&is~R&=b%{4F9iGI`?7qVlj#tmwh#tCEDy+s>tPi_mqB&=`Lp$WEjLdZ^#2!cW)H zUC!fwI^~r?kd6_~d~rTdtl_61XY+8UXSd5jo_xh4koZn)#At{tQ;BP_4D_AJ(S_MY zm4C3^q9B&oxyAhRdB?7>gFTTGAb{(9by*0Lh~2qB8kA45>BORdd5)c@Z(u+bJMXUk zS&#MoipWB|B;bb0EmpKxpcUqIe#pdFolSClj2dmS5%xq$hmdUTz~)nxuc|nD;m~=M zRCx;wh~WT=aXp+tIP#xlPe%VsBRcN6y#3FwvlwZ1sEc7tK7eV!w-P1!M}6ULo%fUS zrCXYA9_X^m{!nn71zfBFPaL-KXss8k<3#g(GJxg`t9Ymsz~p!rCJG0u?EUaJn}IC5p#& zxPH+!XfZZQ@2lEatRqU8XuZOEeRe)OVcpF3dw(c5z(L0UmC0i3M58I6qhwcn=yX#2 zl-$*I(cvkQQ z*~GwkIY+pi)RJJc^nEW6=dA})@710rq3zgKLjuhWXn?VR_p1*z7)=AGF4bCq{O85p zwQgOa5FG43AI4Ai@t|KVen*T=7!;)-Yls3^!%h18)NWVMYmz)S&o?2*eO3wd1^-g+HHTzVg3Z%;ssEkf{Vrpok9@HX0d`o=zd#=kYEKt)I zK|Tzt3okIs*I%{XGc!trk@_Zc-%%J_6G1k~jl%%Hs__*qu1PVYx5f};1EYkg?}J_z z@Ih&uc_;RLyu!}jEQ;vc^*v$G;r%7^@KJxfFGGCz!h_lExp!;535;$Z4U~Ys= zz4IslS?_*j(kR6M?LKkQ?B_LI$Jbdui0tl!c{%7U`3#(Bh~Y#nM4hv_mjFz_ijMec zZ6puyN}}F65YkU${o|-eeIuL9Z(B7KFUwC?m-RRTp#xh!LSik9E)d#@%OWBga||}= zs^V{T{GR5yIkRo);ekXc7dN$#PAQL?{W;->+(Zm!UwhVF$=c&)cUa(xOkehJAGeg ziGSm69!s;+lWRfl9ja5_@ntL>Vdu+skywo+J(Y^2bcbf(cA9K9*hl;b85l$bB=!o0 z07TsLd~CGO;;f?kW$oB_mx@p@cQqC(IQcwsYusC&hE}&ElT&iWb|n<(NU=SE5G}f` zUsWe3>^pOvsKq`LNDv{9$Bl>kAJ9}Ugta%?X{hrM!#v1pC`QL41S0TUZ<0%m1G0>l z$MUko0L90X;S#m))_;)kCVOxvj~!;k44*#Ps=t*i+#Q}~8aF)rEgzt1VsbpgGwr|^ zlgMlCzhaIF8=DkhUqzOn6&IEbKEYkOa(O=MnnWAcFTg#N3l+;2;VFRhU&mZ z$-VtP9caACtMzq)b2;jH#C~5a1#>u7?Pe5E@+2Okyif_Zyq~9H7=i(_^XDbD?s?)k zHN0>MEl!u_DF_c5+2CJ%j@)Ln{4Prrs@&w1Rkj9nCLO(sY;o?=P~4-w@nk}(RmBJf$U@)h#o1583wd1 z;P06@?!T$a%>j6S2?_n_^jwFvjCIvV!LMarhbBW~Y7Nl`_^TGZjM7oEQ=l~-5h68; zLuqUAKVSOY7wClll!KMd7fD|#G$N`I`aPZ=iL%W$-0o1PS`9e*!8_}7Q-;!zE$O5s2FBm@O{ z7&DpJ-~*UlTw8xJc>4a2&ZJeim87#oQw{-&d)|yuo-LCqFupva1m><3cqazk6!`8N zrls_0Q2`B~uqZ7NsB-|){W1#e1h+(jP%}A2?n{h*{uRw zX>_#%+|eKnOYQ{72rUdT#wGPtN5BT?%sn$7#Z@;Pgg{lafv)waQq4OE-kPv<`11Ab zCQ1ctam+sx(rk3-=FqW++B4MOyAXl1_dZ*WEpYHr+JM&>SNre1**B#!4$@m5fIl&# z-iefcySre-aud~fvM;T_+_T48<%4 zVL=Jcs~&#l2m{YyQasIa<9^1d0l^FgTC~|xoP((jU#fc6qwGP3Mj794+6H8A5-NBh z7`mnC6&=;U?PU#$T8OtBJTvo#{O}QK3i7g3Unw#D^u28_QiOL1N`LwwbR665+481d zRtIW@ed$y%HmqSMwj51tIBNYNpP=QXqXGi0d#7uRwCgQ)T30iAf2e1S8=JN83#KfI z>|LXwWxE24Fx-eG?8PoHh~)HEEe$Z5>mT?0xs|B*-DIzf5}kYU4!cn8UzMgTaKe}c zta6K-Q?HO>&NJ6>^ppm|oOyVpGNImWGAe7wo{;A-XPGh#{->?(l9?z1@3+&_sKal5Lh!$Z{_T@o)R(=J}0ENe;$p(KP zBbJk?kf5pJD8UE=UMKJ`Hp5n_44@sh#LoaagQkm?DwLcVfr7Dq_(;^6Z{0dciQf|) z=dKh}(SLvd$H2D|R5COWJVQtlBrgaG6n_9Mj-|n6U^PM5vPKgx<&W0*;}Lve~>*k_$&9!OMW6!F0lCB4>lWFhqhH4X862(m9)yDf(36Z(Q zxFSrS3(yMFP(Uw*tI+9l8+S6!KZD^#1Lf3G*nCDZjH*L-|K_ztLj*$gxUu)eESmp z`z`6MI>H=2?N495sdAyZT0j{Grw{HcbCMOZ#l|96w!3(| z^~1uY^8-Ba|2V=YTLmDmuczO4mBsIIxjRH zRwk#sMY0=%A$#9HdMajDYJ@;g$;im73>o6}UI5BC*6Q|Ugirc#5Lajq+ua_eLc9j{ zxGGs)ZiEC)Zt4u`f@O%dY+}LlCSAsy;bAg!_&^44H8>rvB;}$q%B4(exjkvhxg`(^Np-i(%_My_bR^ z7a(&y?GY;ACifyQ#8Z?`-x`Onz1fsp4x99#FwSq-*a$$?i=!wA5P+Kd@TTh0260Ug*9)3gSQ@QT^8L}Z zZ!*MVuAwL_zP_!2!eu!j+h_P4LnGC7EAh+o5)&ziI^fx<=W_4}00caLWdn?Pp_ni% z@si>qwfw9N+olEj!#vB2>$9*r)Nzy`ZHmEhc>Go7x1n1WHjLTowVKw27~DnHlkObnS)=sPBjR&IYi$HR-Nr6 zLhCUklq}pMuC}mJG!izeqClScM2^N6Nm*UG7r}7d&^07rStSM%L%rS6{is2O2Stkg z!YeN%C876Xz=SzLa!RcO61F9v62)ySB^xCbiJ3B)X@+@l&l0HIUnK* zT*V5qf5#e(C!>F!fGUWGeSiNxoF*b6((}h^0BoJwMemE|6*bUhSb)rQ?c|o`MIb^2I@i8N+6Ln95k(eP&3$+IQ%R$ax<|IwoJC zf=2T*;rYQJTRj~Jkm=D_pMTU|CP})%CnK@elxmE4xl`^X;=Kq^DX|YBr#7GBD=cF)|I+4hAQcVnYnK*(A^*8G1arP%0?ss@ZT{U@~ zK`YA4E%I?v2Vz3@)&(qMiAK=bPm*d9`7WhLjo|2<8FLJ*8`%O(Pk`!{3CB*C(wz2@I|V&Tw^@ZU}pek5EZpTA%Z;1SW147 z6IE z_#)glzS1{qF`cWxiewh=DlTZCI|cyr%k3#JgknakQZ@BDKq}y9==CkxuGvy!=VA>z zTlcob9SG>Ip4n5u_#8YpDMQ4>u1Au+mk;}FCAi>GlK0eyBLhKrq@wuTXZeqZykpMS zpcw;&S7of&BzBh`EEZ6WT9H#cCx6n`*E|?g2-A5iZAM8PU`t3&@8*4Y`;ZLrP z-%?TxKcgZ&po0p|4cBRdOZ9_q0A7?>o6t{66P4|q(ZQ7scXB1KCP^$LBho>Xxz?ocl%q%gw=c+nE?C?C-Y8aup+gNSoiia2*1Wvub8 zlU4w5@CBN2DhsrZ-$qvL=2^tZQf+1!F!B4%*E1Ra5F7zt(6zxmMcEuQ#$K zu-BRr9RI)yGefIB{|FSXX&`w4lQwo~JIZFu>I-$C3N%mU>O@KM^3W{oQqi6>b8tlB zImM_BiF3{EI|8?W?0x~o6+kO(50L(*Rl_c#%xr?EB}UXB2$(V=`PcP6E^ehII!IcFI8~vd6*<#k`#K+g0jK$)LH0n$RtC3hpSp|X&ai%| z4-g98d)|#QP`2-M)gsseREtuZE(H+Rm7-OhgBN=keRTqW_elngT?%e+b%Sc^Mhvbm ze)Z)e@A;}r#phcbuix1S_pOT{X}Q$I;Y(|iO)yiVpL`7IY-~~n5dN>sCet)R78U7U50f z!?gLR+9SL8yZJ`X8+dmKnY49HbjFH;X00?VyVNMAVELihwG2K#>DgP=3u4%b2-_Q} z?Nmx)9F|wCE7iNU2A~9#4tdWuSSA_{tg4w}tQw-BLH7>74rzkc_5ZI#;H9C9fMIifFH1ytf~*eiO<$AvDrz-7 zc_5L{ipT{NW`&!pH{nZEe1*)L(8Q5;itoZL!%Bw#Ys|P&`FU zI?4t!f)oZA#rlLPKC$wS`5AC*KYyjbEtg}iFkO)Ugje7CYX>hL-FF&?QuXRiBj=!TWgu2P!$JM8 za>Iy6FOztDCW^Utz?Ph8tA>s-gzucqV79JgkB*A{S`b0A2MYRUCp1n7)=_-uEX*dk}6~$w{pB0*s6xMr&Si2+qUIIM5az_a`HWr z6G0v4Hs^Qg?pLPyB#mEm=brmoLbJ7iJt|cBNiJMD4o1bA)k#EWp|n83JH<^^Hu!vx zcI7^<9TO*%&4`I=2P1l~gsTYDEFD)HPwZUcvO#@CHfwtc3<2sZi8yo+^a#pq0N74B zl=hvLI8CKE`}Wxt!&%1AN8uj^n-*YjWOt68QsHFC8Yv2>wzx%0!ynS{yas;uljyEpm@;AK7IZu{g>WoAI%&X` zOqeh?I}Es&@sRIDTTlTriAAQ$*TuA>bu}kZ-U~j-K#7K;+q75i(zO-O4nUZ7SbCAFwGXAYYDt+TpA0XPJO&Y z!07(Sll%|M5m4=c$#nPac5DRHz_N(S1ym9Z8Z4IHE(W?R4EK#GLO)h~iOWk~RX?haF?n}=RcBcklRXRp*tKMXc)-$IJuE)`x+V3g0GN)WOO& z8qB67p0@H;lDcO{ZSg8KGrOR)e66wZ8JClU-k8a@+%9x>Iu+4`G;&q>(y{jJ<_q)W z!sYUBHtv5t(T{J1$ceVV10t;tffGyjXiTV5p&ra9ZaCeVosFmL*1^EsJ?Mjf?=Zt- zi(@t}9F;?UG}?i0mLe{u2GwuQK6RGW5DS$~HB(^kI{d$b zzn9|YjvOpCl_|=d{J|%&ym~5S8LSqVm*jcW!lCp(a%f-9MMQ3bitqcT!U`O$E;qoo zHqgsktaiHzv-e{jiE@3qi*`(oGbAIc2kKcMUNZJ0ZjIJ8O2+G{+9Ow3z&vH=p3Jg* z&YlA0*zxXe^zo;2G@tVz)`nX0rHdm}r6B zv=m^MxHx! zwOULX4b#z1Q&S62NX7J;f7X>EGb9;88pM2eMW1;*T$i2oI+NIHPm|k*C~v@?GuURl zzelnQnNE}#Zg9TQsFopbIpJ%V*<63EF z{bz4A_i7@GWGqvQ>x?0<>WH3V@bKr;G|uMZC_0Fwu1>&g^P>~(k)L=`cyVQdRL@h~ zUz6?%7s%+-T`>|yoGWJeD^t8#*p+cc9)#B63D9YTmLzhsg4Ll&qH9+Tt3V+|thP!x zP88G$X_MTg&H=|X8NDW4LU|8itA2^gbSCW&-_loiylN;61GUi2ftNtU1LkhjeXx;# zX?S)e#~bLFl6zXQan&WNyj<~H-W}|7s6xfG+1cb4$R%Zx*P}c9e3ILSF_#4bKnZ8h`R_ciLUX25jcB zP)jpjdiVhUKLEh%ts%(Wu0_fFii1jZdHfZu0`s4Q8QENAnZJ=U*c*9aD0qlAa`+OX zsIDv-n1XcSeDO&YP{Ml(?FAWT1;$qxQ-)K+hUpA4D?M6$jayUz!Azo2;$lls z;-=pRBCk|8Y;gwiQ;hz9^L{S&h%cj*TaIz8V5ztPs+*`u^wEJmncA^Z%pEPOU&C6J z8a>wid{|cdoK2s_D5?$K>m3PEa~M=*^Q0}7sF2Lo8d_D7rdgOfItpU54E$yb$-oNo zHJ{iEl&vju>;01hz-tq$qb!={HqHl1Vs2D(x^?siS%G~cp!G~z%g>^0b`kYCCVk$DFca=>DScVaAzWUJbS}THK=w>Yj7EXd8;q9@rPMXX=Dpo0SDyp zID?`2^5~kYx)Bzs?!EwU z`GYX?i)MP|tc=Cz#?73R`@~4T$zkyr4HDHqpt!6e7G#r8AidZYyl%~;dLNo{LsW@8 zJ?R10mwj0U;NAn{nW0w}T0jX(!W}?4Px2cFyz{{`Lz`6a?HUmk5m5XbS9_t5>Hb2t z7K=VGSMIR#zJxgkxK!||j`!OkA3yg0T!}+V4U_OgSQi=}Z$;z4u2(?dQF39SyrA+O z!}TfnVj9A@qXk?6I&IVwHmnBOl+w962{uSDv{NV6OVDo$yvGTiyh{xrw=LS!6x}!A zUcW<&Cb!u(at!JLGSjLr#Kxi$LV#MqgWzG$?IS#RS>J!K+6k^%>_u(Bbi~xY z#EPnylXT3EI2IdeWB*dqOO3Ui-ZbLtF*2kC-dp$kulTK{1cFKiamJflQR!l>c~4?n zcXnnkP0_e|o3Ju;fUuT*ym*^6ToOeilz^e(&t~M%P`431jqRSOV84YyH)*Bf%V*5W zD$?k0_rw_jNvCeZIL}Evy9y_gwA(o=yHST5!g1k~erQf9PO0G#7kJPz|Jbgao5EH<%W>$TCjqiOm)V!JG zv`E}q8JmuPT~{kA-OIx+hbKGGCzdcoxfS%M3oC*2x;fw@@@OST8xKz*wT;q+d)^p| zhs-9!PUMu>!1{9S3Icqf&7VnYkUwf#>1G!$_H9&Q;OU0g9xXEI9?EA=7R1Fet+R|# zpBKKMnns7y`KZA?m`rm2OXL%Bq~AD==8;#hK7P74!yO}1C+~|o9NSqU9~O{>iN6VPb)Kfv=;#HJ+J6F z<(okX_$gvc$3j=Avk){-&P>eJ$Oas+#7b3Xk%3euunoavZE!^PH8BC&v$9B!6miAS zREAc=%&=WVe!{o$wgT4L2&x99c;C8RdWcx9lfbt7l)qeSpYqS+y13}G4Mv{&JpJ6a zQWkhk6K;kovGX76Nz9KFHa@l@5>CV2Ex@-KMCa%WVf|XiMeW?|a4Ps7y?AFB5i6AF z3r)~g3#gC9>b~IqtjtiTnS^e^K@1pMxTZnp%!4vD?0}TU=MtJ)KERLHGf4_?t*ybM zFXiV$#OhzHx(g|URy>y*ROJ(Hg6c1+as6uvW;6Zl=8%Kq%`2 zuYwq<6-^LJemwHElMF~%xsO(LD~d+^#V zcCrYFFLB$P-W!O0<0kIVA>6qHGWtI> zU5j<4@^}esO-ZO`@c9b`O!Xxi8*szvcX{l4k>l0#Q6a1ERzcY=VYRpJN zlV0fDR!(-Kw6(Mk#od|0s(PqbB{ z4+}B}xry+f1R^Po@=)~@fBI4H>qW5e8?d#?bq}wv!#kyq5Hyx2Kxse^{ z+G6ySt@B8Ui)s?&`9rR4d!9rs8f;8p(S2U&07=qYQ=2~iVnG7cbNB-QO+vJiLE zt1|g%S;zeOCAk)qkFG|AFkm^**~u>=Cg8$j##jToI~a8pjwp%Ml}y-=krmc)cH5f$ zimJ?SIO%F@p%M3M=O2D{uq3d@X|;XHHv z*}Hxj8;;uC6VCk9e^+}oISVK#T@BOOK4OXaF@J=BK)UJH3Jx8r{hHWX&rJX|f5UKa zO4T6`Hj47D`gUvS)lbS_r-FVOqFubR0}!=zX*!;~sLB{38f z2qIAc2AU-te{qme0Uo%fQm2nXg&HGNMn$V+<-C4BpChfHh9cwN0M($I7M9Chn3rNj z?zN`9MjjA8Ff_3J+|%M8s1snb3GF}OTti$s=v=n2OywM_fpR>_FOu>1nv_%uA&2NG+^XH$Bo zC8Oh37l_}24Ct@gFr#wX8$fcA$dpIk?V>O;HEAO4*~Y;T1mqit0xGH8{5X*bLi1>#VINE)H{lP!?n3?vsykp7Lm2+A zW{k?IXRMXP+pIovaq;B89r$8mwFN4qTtk+R>#@w(<@hcM^kq0(hPwz-gqvALzioqE zA)07o1K^(k-)Bt*NTvRAJK)pLbGFDv^P@h^lRa7ut5gAwMRaGqz5T(sE8ZPKN50yz zhVEhPOUeuA&_u>M~csR7s%&LbPkb3eO ztq5$~Vr3{X&?mFRIX3IoE^A;vCl6|)>Fa9mocQgC=0_D>NtzB6^giR_Vf92QBA>k-H2uW|;*~#x%2i^4@e>71DQ|h=prK9# zwaso$sJV(r9GI7%i&|y&SJ_L<2dHVHcJO8yG!2joZy8}6B|^8$8>g}Q4H{&0Cy~ZV zZMck?4)#`G-!uy+f3gKyKW5DNUdyHpardfJWn#RIp^Xy1AW+bGd79+Rx{P?(&kz-* zs>leKsN%l+3pSizK|tjlPG>Y_NOe_5K8D!4pM$-%B`8Ao`0^CK`-Jrq_GeIvt9o%f zlmvt6@I(<`?`SJvB+0bZfnMH=sk-Abd$WOXp{R+Ydyrbi1b+D-v|5O0qL=9zIc4or z4Z?DHN+pO2IuxJ%Wo(BmC5bI?-gJMlz)+i*$sBi_h^L4w8DktCzwTQN6AAflJ4JR# z5un(K0ND&bk$%$6Y`QGmvlhh_~LXRR1AMBj9_21Vxe` z(wZ>OB{(;vQ0CE2>9sy-huSvz^P+ zwCMc6dx3R~lPAPop8lvvkl^OKyXI7=#%9Ly1-eP`&rR9pW2%}8sYJbQ;74H7f$LTc z2mwWc7^*#Z}o_(%7M!X(Ew&cq8V79uh4A%9|& z@Fq@K!+yJ>H?C?2e_Hg_}ivS*;fMruQvIB53{s#wp+ip4|7v z9V~?dx>G^RZ=!d+R!}u2TuDec6qSN;FkL<|u?qqi%pmx?XW(N}Ay4_V+#u4?d*k9D=sALn{^t zixTd?dG-Pc$QNkUc_3UantL#<%zCTSHGvLhmIZHPe}6KS)AhB{B`>w0;d3SMa5kOH zeP-LDCC**ELCLr&q=II|N7I8RO%voEuiECft?Z`uiTvM^vE4o`Tn1$zWmzhcgqVF6 zxY=KUF)~Wsn2enoA6H7kUFe#>%CV)I^T6HmOedijk3$XlC+<$IMWg5F@l7(CQ3i2* z+-HKvgQcQ&9Or2eU#^2C*&Epp4#LrS!$1z8M77Q6-|G#!c{kL5{m{nyh zlarN^{9!N##d|H-!t5AqUChSZ`8mnkafvG;nVJ|or#K<)f+Qw%+4*%@xMwfk*9pn* zsDpJVPiW6|2mn8?)GzdMZ~vMHHw930##!kO{sWNim=qphwCXXvp<&+%@AZ0tT^PCZ z2|s9Zg}26$KoBLyswWr#Q?*fYj3F&)OZeJh+0uM)hV*e-@|+3z|2MH&p&O$Atatly zlK2JNVQc?>qbC?#ga^KGKT^UpL@(7*tQDK`ra-vo@M$vHfSA;`nKA2vy6HF*1YDNQ zQbZMr$zkmVGo=}Lv~j-hrZD?A?N!2`%4#Gm zH$5H*9f)it?mnkF>#-)&Fi`(mlD#kYoBIakJkNI0t&_|>cIYH&8Ya>>A((u0;@DV|Dz)~gx8Ona^_HL zm^hTE0=hS?(p-=W9T~K?NC)eZAl=B>jEAj2SxU?nuvv+~j8$fTpOr;ubBobz@nbaDj=M%_W44ut z;G}4CGCzwdco&R?hi(qxh#Z*c0_6}1qnwA8A%A!+V*y3D=MG-`VgQ4LY6aJ7Cn$Fz zG10eawzq%qp9J@jA6?%$+2E$VQzPSSG7EI1i4bD_{p7`Quy(`kbB0Lhf45%4?iIMc zFh@aS?GzA6f=y1y=L|&6PJ{i(`)f83o-&a=wfS-xUez01^MTmRd}P=!-#Wzq7^+p1 zZa)V{4gSKfki@Dd1aIykt%Py#|9i0f$)ri3Eous3D0$kuc#$su@r@b3-WZi<@@LXG zw=^^eQ*7#C93<|wY0xT)+nB81;0+aRa#?JqG_2Iy|C+C1TXQ6v8Q>FZy2L7>08> zp(o_QhKb3XaMqSB4|9Vy&$rNi;UX`EzJ!K9y^M>aCSF!rIUDC z-f@-y$!jLXgyGcI9^3>yq+g`Mh<{~{(SP*voyaOP9}+v7cy1>DH^q>cPv9%w%Yoz? z2QusuKGsav9qvf@9;_2z^*Ob{JHUD@z_UZ%ynH8+ZZG{HDj@amRDa4Xg(QuI~=EN-lL8Uqm)< z?Ev$bN3}9jk5O4Wz_Iqq9MJ3eAT%jv0)VN$0nqcf;Re-0%wv%3&UEP|7<0U9)q3V` zt&>*h;xgBFj_fBr+A#5=YUO>9-gwxzyvJ7xkyQ>U+$fDV0*Y(9QB+^fQy3tN%|Z)2 zk)=0sxJgYXszSp^>#~1G@HP{_A9o$vdV?di11{i-`gdu?W61wRpAH2weG>{@n_C?Q4>Z9-$ zcyAQ>NF>AS86+raBlSRtz92MOG=Q!=4>lBdYjuFR4ZA7dB0MjDMdfzMBkdn2E^WY5 z+3-St7=A#C-kAB+igJXd(!q3Od@h2VrkgBE1z(ho~JI1t$mjE6$8v=@5&b}Q6O zlUaZ!gF^!v`%hjVp7^0SYKsSy1UHAAjool`lO{(s|Eg+M9qbumcE!tlfslPYn%zjM zquDH2%EI>K*w;Qcj0^a{jBQg()3tZa+0{M46G^LFzVn+qRL9do-+;_5Z#{~cRI~5V zG5c^+#Y|NIe=p80fP2hjrEJ|zy->(ipNvpMCej$D!Z;%0>$c5H|3f}qDllvQIG=&` z66eeOTYIb&xw9`N`@qMBDC_32k<^o{IQUTp^aCD)w3PSfSAJb8I>p0UL0MmV@Pe6Z zEXH6&xG>7YrJav+nX^XtrJ8cm4^{&TuH65drkHBvxdiE>sb$GMfi?HCX0*KR)Us%? z1g5Gl?0i%9Q@_-Vp=zO;y{+*6Sc9_UCwpCixW7G%p*M+4l!DL4S5*WTZW>~RIbuOc zt!1M<+w2Cz3P{X>K2lHcKA}es^I1UKflf-}Jf&5Tz7n6$O|N;QN8i|xL-OFuNR^CR z`iq8NE8+CxlQMt&&S@bPm0dazNZrhNh(joEOk$Z0gbW8|$uitGId+UbtyujS2#2YQ z9NE2gDT;+C&hnk-UE*iAnkzB1Ak6xSvb znChm>?muw>hU!v+H6B{3aStdN$oEyE?KoGzF_~;bx;2~X2jnK6_W(Se;vzCzw$dcr z_v1L6AlLunMFwbH&Hf~-p^zVFHAg z>xgfV)GOtoEDVUmXN}+hSI^%@I4PRk?QiE-@`PzjXjUL?*2$d2_0+Qk6dRZcqwrN{1 zKEkXv>M04O<41J?Rf&{vB1+bJlYeuj5*z<|BAWQtR%6IxtUyqljaPvQTE_UZ4QwMo z{n{RxX4bGW!x9PuNTW1t0gb=+H#AAQ!vYrde3&nb+lUSG;i2#kkH~e?Ey=7ZQ`~Bk zNvV)GRdjwKearj;`nTE2v4A1kMY2uh6Cc1l?MFmaOwESJ>gf!=N>(1hKAkP?D~;*j(%mqC%s2xZXI{eW)kYsL_@=|hKRC6@Wa~FDN@*BY z?D(7VZ3?Dtw2+IAPJ8knHur>lp#R{oZ#ybc|~JUvel_mZWGUJEUq?4&i-L) z3P14(q|@GIKVz%qp%E1-kz$JI0cz(O;wQr;>I}WiSoReVLf(^$cqalZXbT(K*qzK* z+*t#Y4S5Y8)3+mc}pV1;vrWSZps9OF`YD)Hz zZ{M8+HqzyWY&4JJDObUUhBx6&AwNd@o|6-HHRd$M9Z<&gx5@iWC%c+v`kpmk+Ken}&2wr;}Y(>eeo0A)=bYQ60fCSP@+VNhJ^? zgg#x=iUY5(%0GK#H+}oi!33`7w1;33sDq6FROjSpVZH-XICn%Gd5YA1m56=XE z1kVUze&R>f?rMFTs|Lf%mL3Y!NeQ_E$suWY7FC$bGK~xxoPWgr&F+vqL|48l^k&%| zzfTZ7V%+p~LbW0Rpn*y3p+(fB4W{3H@5Xi=n{sNu?{e6~Iehr=6JZX;c9;hLb=4)J z4@dPOXM=Al)z$1WHDO>)Q)cm=XqXz2Ki(Z|)DDrPm#tBjSULn<4qKT#36KSlUKJy@+rNVyJG0lnT7y#A6jN% zpas#Ydsx?#$*nw#G74bR3)W(UY94UKg^f%et?c;jZ_3Cm3Y)y?^X!=M1K^FC7SsGU zH|>y1;B4#3h8+AKOR&?`lF39Hl?kbEfmMTOq_0aK;HeI$m7%-yAgoWhSOM%njgnx{)2&Q_s(}DR2DVGw8n_F+DXRjBTb<1IrXiH zuM|3h_fnM-A|?Zt<+L(M_qt5<#BAHihGZ6dU+?3Ydvkwpz~L7QV%KF1gQ$*avl2!T zz&`tIBm+S913Gb2p%QAOl2@>m4THe{kdf>i&)FlmPU50s%!WAE0 zxuIK~agu8Kp@A^~_Pn_cTkDqJ*#ku!3__H4SC~#fQsj+7D$&Y@s(vtlAr~i=pafF9!#Y42BE^5*bXA6@WKAM?njb?PG?nMXilx*fR#sB z{IZqt&K>Z_VmAd$t&rPkH^f)P>%1&m-Bid$KHV3ipvbs2LP%gl+0i*!S3&1%DRk3fB z#O|KVF&&84q24xJ0Q&-6Ipj!0Uf~n6Re<;@Wf0AZZ1dC?v?Mm(T{QFY1{c5_L3`0F z-Bv*dv~dUdwjWV(U7dGd^b1{gjJoB@y&EnxqISl5HT81TcuYp_dcs}x6DbwvoRUkV zAduOoarA5DRNr>~;Rl9UatcN>k?osnC&)9gEh(QT7XQAK-Pu`bS1=SQ$Zxk9Uv{>h zA}z73(lp`j=o+#QjJnG}VbDCe0=Cramzid|$<+ zEAz(DV$q=g^Vsld9JcL#l^sxJx_}29 zwn}w_h-Oo!H~uc%r`iRUwluLl}e`gHR`AIN2lyyRP znb@bP_9UDy$G~5q;Wb1~Nn=VKL!EG7tR$Cx$hoO!{?y>)#O=Q$K3~UW!deab zGCeBa?mxv(+5r{bY}P`%_Jr(88WGwVYAirpNM7F^OahNKVb!y?HV5sGaq7R%V4&~O zDOH-th=uFCZ?OuZxi5iHED3p`qxE)uJQ({Wbv(HMB*_sQV8JA$qu+QL3NIxG(Ah@& zobZQg1n34H8kqACerq7C%LcfPYyLL#AhHyd{-b=Qo8M;NhlMt{ zE_-~u!i}8;p|Lo%73YgADu+~s&{QuJfiQ5;ZyCW{eoz5rrM}92mNIJn)Gl}*fZ7B5 zod0#7Hxa?0r#}2K%7e5zFlH1y3m&7&%DK`GC3?nv7~)o!_g>;9&=Z{{=%CLhcIhOV z&5qcX^jW|@K7KkbC?a=J+iPZi8*`7B-#3IoUZnmZxyBVvg?&uw_o~C7;CNTW_>@xN zd8j7qE_oZbQk}J%r0(n`6pFkDG)V271%!T;C_n?Nj!bzXzp%=6Kh}W>U!SWWxUHJ9 z@mqg2vM{b~O?9Qz((B;5qRaz+d8Iwp^=xIf$b1M^oqek41C_Ai{q$OUaYOUsrv{4y z?W^@J*rV~(K%8818Dvi)Y+>61DmV2VcJcg6%Ouq?(CX0v{Gz{_TDbQ`v=17F&;O|~ zf_qc>!!Q1H64rA63y;G)2%i?(jP1y1tV{CttWB>z_SGmYD_shtqeOb$MZ=g=^B~Jp z4`EJVFcC$nqWe^jiv-;8jRebmF&v&Gw9=^R*LZ_qNaA?za&JkG&2tSbiJJi{nMVaob;Jl4$_ld;(a~3%b zvsVBVFIVaIjIdZ-a{O{rAd!paOfNPM4OSH^mW^^8vUDsiW~Q8OdjaM~htc=kHxrKH z)^?pf2K$BeUbJ5^NTx4sR%$J=8X$z8o~zvbRJq1*ZTI-uPHtR54y%HD@Hfw^ z8b+?B-U;{Dcf{gj!Y>)0SXDCL;1$1Me5E#3mZ3T{4yYB828>O4)6HhTC!HE84ysv; zN8~|;;7zpwhw;3cSz+k&vgo?+cVD<(-x;CJi#^0L)Qb679*xw_moY(RYMl$DR6FRD zYCGCvm9~&wjHqI(f6yLl%fBxKwUhg2?*W*V-7fiwvCI=Vlz2Je8talKkY@yA5VaM! zTH7)J#Wnt$J2)~F#Dkw&W>0{8;PBOM&tI(r_0vMS8!4_-Ga{BL?h=3exSCJsJFEzn zomoIZqASp489aU) z{(8aa_IbgwQFD(0Ul~YKmcBUTBfR@sK>i;f4KreNR8nR%{-KE*`<8_Qo8%Od2R2D+ zfW)!eDd2W{Vo0pRd`SL=48JBetw^033v_}U{!ylNuK64?`CTZK{QVsSBS|6+dAxZRKi(k(~n`3-`Yx6NBH0Fip$?-F?$SK)U z?jApigc=Wt9FfHQHCk0&(8&sugf?lPs7&(eA{(R(;Ol6{Vs?WKcU~uhgUIv>h=3y) zXp_}>5DG|LsTRvpiDlVhu^xsSX6Sp&l9i-N!wNRmKcjRjxocRfmm#2ZUz#187RYZ> z3xN8%+i$1${dWzuXHhdSNV9Fs>kv*{#*p)APs#KfIeCSm4(G~JFnla3C4>;BgfrQz zjE)rD{t?}n(-Nkt#C!L}5O|~*7aP?^aD0$0oi=B2&`a{HQA^%T^tpxjdoV~PIh-RE z1pv;zfRoIm>f#4yl4b)=?j)Zn-L&G$TbX?+tlW3HC{BlKP$Td!H*&*?hGo-#+~@&Q zIUSi&rtWituP(@-t%7iQ7w;P10+WGSYz*Nj&61&dAgCdgUI8t|IO$u=g7&c3O6wt= zCSuuRHC>CJ<|ICc>0HOj;lC~ekTY(TDk%@GDR4Ep61t0(rGt~1G38~!x(&Aqlu(rn zoT3gr0WsxogwuJ=cc4)+VJ{VB{HN&hYHzBr-UFr}Agg1csK^<+QU22uR7mD&ENe;s z6mMowaxD!HoKKNG1j}eQ(~`vN!nG4{5SNkB%>1(8hxlcUOaR6z@Xl8aF(Ha)1f0sE zDn3}I$lopR184RPbK<0R2(x!Be3R|NattI`8!9dR#4%>9D(^56pnGlC??`ICyCyS~ z%k1{rW)kFy|dlDS5ek*?o+;$#+6N z&72aAIX>dPw~SDXp9fI@-xP$im4f#k78oN_r#DzaM_oL(dGyVk7H+|drO$pLt)>Ci zKCrFt87R>2Fd0bLfSD&jkX6Fi?T zx>BVve|MoY2YW)$827P?JLJ86bgTJ{D8ES7?izRHiD9xZu;UNfuyo9WEs^N;8?-S) zvi^Zcqt=NzAP4!|%<-;{r>>!mSnoWR=_+{q0L#@&izAA9S0R;~LP~2VrYy;Yuc#27 zd@2V356znSws3IHRlv>OB^{}=>22++Xj5Afn7=XcV~(hA)|Z^Q4d5rZ6$}i6cH5YX z+rSh%<9oa1JyZ-R#W`k8L_Z3T{mujpSx|c5^a5m?7UDq63H}^Q@>Kv6oPK3*-9e-g ztd6a&k%IXuxxjLCIm?DtB0?)CZ$Bn?X>*SwTrsh0pNq z^Y|JOX+?NGPoUj9HFh8J0f}0?=U?U$<3}Po^*eJQ*r!e94=>AKy56zqyGSV0`-pV( zs9+h_P=^!Fy4#0#U)rdp^lJD!&$XTm@l& zn-Hq!{RX04@>&+MV`?kFTsm%o4{t6P;!lpa3^rmC*3j55jBpfc4`%>}6SZIuwCWD- zml_<}VKVmDFkRp3K5*af9!uyj&iS_82D%{|)^*llaUeG|b5?(6j9-yj!Cq>nq_*@7 zv&TuN12kR}?cJE51F)5c5gaV^(hc`0`*6>^Q0ej2|tzX5MlGIg)=lQP{=P2%DNDm1uD5>EsbfNC%>SXPhU+eDc zEj#rTvG(aBd;yz#ktUy@uJi|4>J#kAXI@w9G}^lK2wP}AQvV?>`77T1yimi+(?I@y z`;AHMtDyNnw|=O7C-F{dZM~EC4%800p!A3--PV8I%om!duEZRRn?mSd&MlMy|BttH zpj6Zx_$&#C?;4R1X=ei%Q3edkjHo#;^v}n`v6sKO#Fvxls`}l!f{o%5eE*PN48pnu z$+Mk^$bT%m*~wP2vQ`F#dul|Oc^G9MX*L4C-7~J<&sr*ydmhK2V>H*L7^uiP6t&;1 zq7E-pa_Sdm-z0!Ghg?VyN<&R%y^8CFWBk36ulH0Zvr>yhZ_v~FnQpm_wwz&}w0Lt# z59_XQqtH$pu)N&8n_G-+hS=xU8VD25`La^w@2Jy-^6RNFL-(PcnI?T<#!Y||8&b%Q zxO<=Oy-Z?W%L0LKG;a+V337j(r5+~6dj(SU$ zLvVqV373a!lPwHpzakFtwrm&ZCjY~OCt(^TR|K0Cw3O%_P^)S}+~}gan1l??KekWx zlF|?k0-eti^zvzqJ4`N>*~~XingD(AUgvuY!k@SyK=t5tWa6QQG)gSUaR{M z4r^Ll(=Zi`V~TMf{P0~bp5?;$?Gq6FxF1@6#}J1w1W&t3zUUa0Yk;SOu+{unUWklC zfPHbXFv}hv(B6AE=F6)dWz4OR@?QJvUT6EgWbDq05)E|G?-Hhcxy^gEK?dE7S~{MM z0u_oj4YOCudpA6V1D8|>LFaX(m*mg_=J|@_I^)B4x@6gzKq9)6+Eqy<;9i;1ZVrxi z1#zoj1sHa4Sph|bHfmso5j#%Elp-W%qEJCbw3*^~4x;&VN>hNbC{kHi(YX};3w{XJf-gZB%4^9i>!o9Y29IDFznvp z@~Pk2*Zq6Niza9V1tUt4m3NI7&9N@SZ)M6K&^4HKlFa)97Dsbl# zKB=BPYw*fSDQwUtdVGB> z2~ZpnmX9*rku65Jmwl5Kw)gfbO~|J>gQywg@;?_;Xw>hN#w_k7cKlNyP1QH2jsc$+ z=;kkm$4`o^se2DUA!Z)Phb;a7A2Hy!PMXba0=NhaeCAr^i)3|ErvvTFzyZx2E5TXj3SmJHk!6$?g@htQtlQ6UdbbyFNzpWq z8`j=>^AS~IH2+}vd#G+jP-YVR1H0+@E#gBmW7V)AZYRASbr+F?Ys&b2XI&!J_*AO z^{4BbMhV#Fbt9+iZ%3r{KMx}SBN0-&;LGik#c_L`P0b5s%r4ECr#+d*+{vn#R8+%h zJn!~QSg~qNNA#X-8paAFBrG$a@iFSI-?N{fouIh#R^7{?II^YNqIX2&#%vJwV{or9 zm}643TBuMEs>5)Dwphyn#?tH>P;kxu%61$7CudxeI&%;rIbSJ1io-+Pa>1kxfb*80 zNUgeVWIzF4ljhq$xOI4kZD6{VL1{~`Z!Q&VO%Sp(U2&w?Tl@PeGZ^N+l(ds|KHz1{ zri&2_B{sw73vL8f5FJ1KTr@r@&$j}na32BU6sAU19|hTl04H0#f||(=8hCFe>Q($! zvRk>#wG8s66W&A5e`06`;?Eqe+dm%1DJ)a7*9H&Y4ZY);!Wc#JgR{+VP!{u zm>;H{S-lI_F0E1}c)_C&3>V@VhYuJZ+uLF+87r}GZLJ=O4V)mn?4f7!@GavKdB`>t zc0$U;BvInssAZ4kdA1M0NuP$cav?*DuO%+6$6I0(1S?k;vEnr%9u-7M_3{ z1Uk=i$jd%PlZW2a-{!rxS+aGl7n&Stze|lclfdUN- zaFcT)-z-VLGAE>?v9d<_bEnOsaH$aMBdDrG1@R1G#m1NmBnt1o>3pWW?VL^*>B$9C zvSgbO+7k2BN|4ck#Y|11S|K$Zpqh<5PE#OQs(qUA@Y8ApC^I>h@)Lz)utz{2FoSAe zZgfb;+dz85zuN&%7SF|!_1Ez7=cCy_w9UUtqbIT+BbaUmn7~Rjbew#!M^Y{5Zx|x- zW|S-Z$^gxIH8ZADo8uFCM`)QOy7W?OY#r32;ISpzOB^!1PX?_^K@s@|1K?0g$Wry{ zk6BRw$_T;-JHzKmup(Tt#!?PRLRJ_-?=e`(71m+mT6lL^SRY>cx9JVf6bhMgk*O4) zFt@`RBUS4z>M&g{6^VY4M5F>|a&kcwHMMFavQf`JVNgL~U|Kp|OYJG0RSqdjPaD<3 z>G?`2x~JQSdV*E={eE?C8;uahlc44B0>rF3EYPyCoxwKnUc0o(QiQneXs^3X;*8P68iN{ORw9_>GBWl>T`h3Kv%u%XG8F7Rsc zvERJNnEY>*T9b{6|I=c~#2GvAwlgx?7nnskKiwtWro>|-uTtod+&sGe;+CN}yL3en z^p1ANbophXyLi_%$TrEyK|>>MdELKVQQgyEBD0YGHLH;VmVRb6*}MX3d;}=_@kDRR zSn~d&6Qesu58pc|wjE+U4uWfKww2hn6wBg<<|p%2maR(8$BaC{MiD06dA!T*lym(s z`=s6@-XI*cGb|>sz(x|>IE;djR}iT-^}*+EC)j(Kr=JfAK9|2sj4zlPbypSg7Kmvi z2A0`Mu4m>(8N)acE0eknFH-AYL(}75K7ityon#VAanK9kr&>k>C|Nl=rSUR^N*1nU zq5#4!{zj}E4sVKJ0nz}HCc~CW5!vhx`k*RRQGPNrm&1K4rGb#u&2z33zULJ8ePxZ$ zp*DWh$lNFr)fm@c{tAivBpl>`QX>WEs&Ps@OJ>GX>MA-D)2_<+gh&6{FO#Dlp0!X< zimF+%tr~=*X}k!rO2!ljvIlW;<*7^%VihLmhGIuQ4*`nXbjB0>b>7(nv9XRQ#Vyc<6c)$|IWoy={B=wVz76?~~#bZN^B@~pt0zDoaAz(UeO z;(=v;rSMlC{LDgZ@_u0oLi9gFK%>Kt9G-!FVh$StSvNy^>dnPle&})F!$US{S<*E> z_6}cBwRWq+?zQd(>T17H)nC6YzPO_#|5-nYuS6E;xCS;1n9$vT4#C-`omP`VN5Ed@ znJ&c53N>ePn(gq|cl#9m1I%n+lxL){vVKvuQSPujkO? zC7OHi?;~b}#dC53WFV0UhY>|FY@)_sMVi zc&QN}k)p{D8*=<2m!#z2y;HtpyT3h2=*B?z1Z>WYu|Wo*+{VB#(>pBUJ|fWO%1sj_S}IOZHA)7Q@#ByaoyM0cM8l# zsm;f2i6jJWW%Cc?SBLd-r2<@}8rjhdY)RKH@Yo-b4e?fr@GNnhPPNI!_KGK|&ae8) zptI}E=0?SMt>*iU+)vT?G9+{hluJDR^?j(*T0AYq@=y(Esc%Nit)0(RqJJUVK`g}CVRlzI~!Bg}+ zL*tat0;@hU*6Xkj(*-CZhwkLw(xSZeM!=1MbGATB$>vAH$->7T=w{(Z*z{x-MH)7feAE)E zE<^8WoqFZ0d|aTOm|#e?(`>Z;tlRf*A6iMM!3E}7YcngII!BnnG}_Z9mAYk}@`!`@ zmeE}e9-Va*M0|$A|rbDc59QlB? zn>)1m;Ykz*&(VzF6=if}F*nkB`pV7jbeEp8C^LvYL(aP=B_$e2NY!=eqkB+N;Y}w z;Di_go_^vrQe=yT8Qmu4ygv%9xxv54q7q2jZ!=rS-P^@_$*4v3#S*^MaQ%{4MM$S$E9oIXN&C&bONlVlrd z#_%l)5_2%y{r2T$e_WowYavX(|3ACv$QR`Pp>kO6j7Ldo3Ewsd^S+6OI*hy+bm(l` z@3?CACb+zT%^m$mnVHo|5ScXHDOx438bIa${Gec`%8wY!2+V>mX3*M@us766z?vUA zgtDkkaK1r9IEVa1EI66|k!wn(r=CRa8GA=QUrLwCXCL>Jh{z$>?4NdgN#D1NQII^e zoE23LUvWGh9e`j=&v`<5y8fjQS4A_C>y3)-*$fdlOeY89#_JFyTd-3<`#js2eV#m+ zBF+}kncAKgF+|N&vl=u=Iks(S2FeD&QRC@JBKl!znmLF`#A22^RY6}9Mt&{5&HRqe zuN~6Vd=VTV`)0%d{%coU(}9+5!(B0v5z!wz zUQm;IXac2_EZQTN0Fb%JM?LZE@xvhS`q!+cFs)=%X%Nh$Z*sEnP}?SL4}A9*1Ti?! zhV8ORF$z=3)c4W&EEU#HcA9?lF{O-p<Q_+e{A6Ur z{nsD1t=J$B*dbQjFf;)FKLEh_uSl>Hl+JinLB$-v03G7uoKLRLDVOdEwT+j)O+M=~ zCV@|FT_DISIC{EF7{N_1KQ1R2dcW;rvN6jfq-4(u5a#HyNh6IWrE+@FE9Y{7gzMLm zbPiu-t6gDsT^p2*<@HTFQ1zo|=pCD!X;Z}=3#-Gt_W;DxI#@}=ECk9?)bpqh2JmifgMr<@xdC~yNE)x|HAF(*jDH^mF ztAqj{^(MehT_Aabt3E6(j{PV0+lc325r~irGp4cX??M~LNTmf03YG+T468hgx)y0uQNea+qO2zkc)4u(UxU#i#E#h;BsBLkj{$mVVCl3RZk3H zSN}j}C#Yt{CP`>FPfl@C(dSSw$c& z0AZm;hDHR6kjV^XOQamogcI)h{XPnWZp0nO#A<*FnUgWPC>jC4Xartp{jzHRLGbc5 zq_Y2)CW@A#`58pdf#xE(u zM4`3}^mv5q|EYSZ3YP`8{SpN9Qe8L-RMb-6>^i6W7#c}btmDyX?xJI{V8h9eM&H;a-Xe z9UF6wi(vnpl`Bc8Tm5zLAzEC0*0QU{m|u|}no#&w)g-z2sN6TXtHd2mejCGxaNx3u zj1z7B6|zI8*fh6S`|X;w%t>En?=JyU@bd;o!0XUFcdR@5(5Jf3TZw|u$vn+?ZhGS^ zMs+}`gxoDubwKeOQ0S6tz`ty@knBuSr#pS2%FiQ8xCGcjij>DTpxM}iO|6?~kH~!< zsOor)q~*n>x)22sboNiKEYMiN;sZ4W5t=L3M6VkhE8LTNuRvt4oFtnSuOI1nQsmtj zqFC2catfeAa%+NGjqfm&DX1#1d*-#h25(Z2@DX-w0Ue$JSH&@St##>7&o=74!v`pZ143Gi7roybv24} zX5C!8k55|;Y#0jWrREle(pv|qib`j-5Huz{p;Ab+^UHViC zwp!n8K)SI*y%$d&mG#Zm77?DqMJpMh0_`-My*505u9#Kd(`#d8W?W8#MBgxH0Hv#nIIfGV{gwB%)nPqF#W z6gXw0HNsMst^{zI*TUsw5iYZRl5TKr_20bn_$qH>aiE==4Can3(fGV^nHh?)dYr)m z=7Zq!R(j9!|Gc&1=>b1NdbwLc32L}mRicm-NeLvO->V}rIKGDRz)UNv)dD;D1{5TL@Q~5L$Xyg%*mU$BFpnHXTvS?27 zPs_@vS%hcalgLca&_)2!Q#(JElkPH`sABgoxw0}vxQe$1J#T#3HvVYRu_xD=oBg_> z8b38*jJ5J$XieTtAyu03HL8jSqGX3kMJ7HTu0kl?H^3l|KG{l! zUz*XfCT57tCfO;G`105`XvlUTEE7&4+~z0^PSlDn;nm0xhD9yrjE7<;I}y{QX3M)g zCZn1;UNVF*^K6}De9G@YO#T>^TK%yU<*1Qv%lCa{T!7)xbP5{Y2mrsN3@% zxkfr0(>qY(HY;3`eFD}!2`Nu1Ec{?Lfzc5)r1ixkP9sSUTL4cWyzE5}78fm)6?1yP z=j`*$k;(;S>5HN5oXrWZmVsX$w)1JFOCpmq9%Uc0lq-3ZHcuDjX&*h{V>94+rF>BP zkrG#3GJgaP5|m!+>%7z7E=ai=Grq9tG}9{G0%R!JDRBf%N|8knCSQX^Ij!lNkrSa| zfk=D$`#U_|Ul6NK6Jy-fvvj5xlx=+u@&o(X>|j1S@OI^^0m$MWn!4s&|qI z9Pl!_MnL8wJL3Q)1EAf(ZBmw#unGvZ_%b}3#2H|dI3_Z1{S-dB6$=mHj_!0+hUIem zMs7_cKAe0%6vUd4Z`F$0G~a|FeM}1$yeB-}0|^$+eqkHpm;8q#KSXU`O)i3h#{-(~ zLxQjQ&*Qh@u&G4h9tpzM`mvvarFd~bEQn;^4mJxKj}*E0U)8>4*@T31o@3@(?d4m< zYt-we6H0^k#96akpl1Dz!{4M=yh>jveYof$hyykN zhw8^VzP23eN!sOG4kS% zZtUloSH8E#nd`>NS2yQtyuWke!uV+0Qi_gjcRdYI2xRoNcj@Kj(+tN*BihN!=9OU)#8pWvL;VhH+RTF@EQ|m}6 z%jVtfzC_lX!bQh|OGtA$8-+rx05+FfPwU)_mNs-Ak$F+xjGLSFZk1#?~D?|$GOySOQC_EmV%-Y0pXx?h{(I$<=KPdB|F0=onQk~sUdnCz=8 z%_re3nz4X6=!QLwWO!!Oa!ZxOsVdobQUdJHP_k&*ING2-d{;B!lS#|z$1(w!4*13D zI!pqv7!dAP9CZ_X(KE?b^gEvwPArxgy73MA$7ASeCX#vP@<&q|$kjIrQwq17DawKD1`T{PbN3dgIXBp! zr7DaI z*4x!*$PN+eYBzQcAN*Ix6#ai!h=M|twl#53Pj$)vgDcdxE4DvgJ>&jl{g$05Kwbkr$(OG)}Rmk{`To$m4#$i?7g3`Jo6R zGH-T{6$7jUkWZ-JMw-o6nB$UUyb@X7RapITXUJ*7cKYQXFSTpYMuj^sY#Y7LcIXD# z>kWY;4jBsumr4u`p;&@SX#B4paSURks5`oSNfuCZoG_PlyTkU@w z=4wNIGw_o8UOx1QGtS4Ec_+qbtMw_1OKzR!m0A`7aHV+ayutaRTh;Rj5=D);J}4lp zg@!#@`|0y#brMaH9S(evqpsinHx2+jK!Uum`NJ=5hHBHkCVjUvX&{feWW;%437XJV z44ni41ycb15X-DjY6^Sc6%IS*;GwnoIVsBz*8*$zpJoY8sWU&op$_3Q6C< zr(_1*CK(TzxH-FDJ%|4v1f0Z7?Y%Hcwu)71+a-eUO&DSu2v1Pr8)p^g^eXB%l;Ns< zp)mFI+PqYUz0L7+3>~LXL9z=ypmb+b@xU7E;%B@r9g zPBDz)v~X2TV3OCDYr)5ye#gbG%&9Vc-(maTH9bv_AUgOdHt5+xj?){ywtd@BA5e{2-f<}cZ z(;5X`9utQP3npLDW-o2*q#};^PQwb2&hNl*!K! z^7BLM_BAoByM3zG{L!1QD1O@TH$mOmgPbXBswUvWR|}cwPEABOB1)#&fljVJtUAt| z-lhU>3svht%}mfkiPThCq%n*UZb2cM6--9TmU7bS1xIBV8C#~j*%S0S0>QDgcQ!B% zQ0uo<{te2=y_SMhQWfJ*z}#h&V#9$UKSMKqK1Zk9M=rG6GAYWH)^%`T1}ES#p$t&! zf%@57URn?Ch9NLyyC>9C@z45ounpeJ=!RctU{GQ(p4{|5Y1%Z&PdhgD}MoW;U zsh5Pzq4EJM1VaWy(m!1_nNh=%Xp1wo?6c?k8#!ALji|(zR4~Va+!F2YvKQQ=hDih; zUx$0FMrB?!q=%YgjTVE~fixw&3rGbO8Y0+iqR%moS&=HY`Dw*>>G%ks6#R>;oYnboh=BuFbp=s$ETQBzjh%(<7;}^;v?`p%4%TEjRMuOLN+k^(Qh-htP03&v zmf)hfutER<9G(k6GK;s|{^n2Pwam+<+_#@~o9D5Uq)#aDGrzzj#oWycizbLBySzRm z(qpH@93fK@%I57frapP!DCspn2H7C{hQ|M{SHY$d#HmV0`#T%~6QAOVZ$k(OY6$Wr zB#8EOt3}_EJ5+Tt>oNp)aJbKI&YwF`;1V~kz8a!mIRM4%66qj-R_fVak6**qS8`LQ z8F5Is;kHuK_dvZf;E8bxV9*DPY z6C-ci&bKt!grVx9a_y)hbaMZNs$&$po6u_`s>vZz9N*tFy`?+_cMq|mi486D)3VT4 z^!`bCC_CtdQD3G(gSXiNIy^O}NxW>jCBh;ITgplbxaCTPULL0XO+=*P@(#a6Kz)hPF~8+J6vWF?Y)Rch%5uyXOal*==qlC zvWc#?jZw3D?QN$O4XFlH8&@t&A_H;HFq;_skU>n&r4#BeaQMj1L(Av01zw&ScYOeC>l_U!N>B$vxth`)UIaSsBt4qjS@ zxi0?LJQmG3n#f<*v%<~^6VenH;CS?6?n&lLLN6hNc9!ezu-P}%Zu*8^n@$>t#q!k+ zHw&IaY8}oqH9}Vr=mmee-Ko*{4IF@F28zTC5Biw=e=r8<|%tAQ6W?eM6zQVhyb_-bgDYqD@!nF^epv?-#Qhze>>l`!F)X~4*!{x)C`zi52b&^?MLq_~&%UnThvqe* zNZO0nE3`So=G3>jx5dS4g&^Z@S;LWcfy0~7qDAs zoq*Miyt>b)KeTRicY#2njcWC;@+2vW;X56bvNu{pTEwMyysEluY=Xyg+fb}qiL7KS zaJ-v=SaIwwN7tv+G5hgLwNqOu5e1sBJ{{^gQ^^;OoZ=+R|6G2VjNd>ueKHk~k0D@mu@0Ojj+@UkAI=Bp*9o z-Q#Yu9stsD_4%?w;~Cd3>js>^ED8LjhOhVwI5JsiV0W4Ub9vw|dGNFRt7Y?(pj|D4 zHY=Enr{lKn2IS)I>L;i3RJFz9+B(jY8}aS?&2~ap+MdFAKa}u1gV8tTZwHa@d9fpM ze2Dh;4~|<%1Q!`g?VDHDHk=ICl|;1qjhzom%3S;Y$$?^K-k1gP2}RUii?A>K9%66jXN zeGWVJ&HWKSDcAhj$b*%wEiw|tH2r|0 zZ6cb8Yq(QlPH7#DWBjxIi$E8Y$vHIRa#S4_SZ|TijsF*&qX6lZ`eq4c{_LR+X`6Y# z-Qb!*gKL|O94?lPgX{|+&5ut(J#vmq&_TJ! zOz1tI|E;Y!bFOuLE!RmFue4~$)6I_0*LjkjC0J384@T)ec6)fgIhP1vA5wn~`9P=7 z>BB4%j_^rtY(7bnd!Q@&Z>3>Yfy5OeBPpAjm3Nz8U9B=xQ+SXlJy^epH?QK^ao;;z z9<$OwFkWzp#>3^%(U75a+RyEWg{!8udoG*1IHndsAOGzI-fsR57^h-Ihk$Ihtm4Tb z{*l`&SXf>>y7=89PT*xlV%&Y4+ImCwiNq8=>$WLVvkAKswet{O)R;NPQ@}-!=%FM! zjRN6?zpgdF^#XK$k&L8?bF2ZEn-qLJ-^o%eR*Lah6svHj-t~_Fs%hKcK7+T$ebK?_ z-RPe_K=ED<8iwPs5lMI>znQMlz2~Wf$IfM%2 ziay1Rb7x&*4{P4+K9Vur{OZK2j7xZ?%IC|y2oD(4IQq}=GHRPGmHr<4HV)mYAR;Ln zUzu#HsIg+;DSR6Hivpm47br#gE1)y@Nr$x*GP>@2+@?Cmz16ZcX*A+>h<2>OUn{J* z+dDL%LQV*F%1YM?E@X^w1*6DF%5))<0JmX7hy)S6PPJ#IHdU| zKF^_Qe5XdXznUY?1{voTo^a6xRL5Rpa^kzGa%xj1+*VT@#Vgzz%9ga*aiJz*pA7 ztnc%GXbWd(7m@GbYxpLc1|-)l96VcV62UU|qQ82N5^W16B_hlpyHd*=>(0`zFegGnW~`%&hprbeU_8L!3`L7_sT&~eCHOM5*bqaB=Ux6AEJMg)gcg5xseAQ zhitBU*oyC&wB+5WMpYIyx8;RLbTS1F_6UEEyx{F-C0DSUk75|(6JU5ZSNq*;5wDFc z`{0r)c+!mPqsU+Y0dT=U2rw)DfzKywfbxAIC|v_97SfMl z8CsT$&#m>lZa*UmR$U-Y-RVkC;>TKrh*g`J059OtxU&$p_#2|q(R-Wx5(vjj&LC1G z+B^5+5n(38lWZTrMPkmu0FjFZY*yRu6FEyJ3vR(Z55e6(hx_NpXjQCsY5~Kz=F;xR#6*Ay>~aK_#5z zvfjwXoky}!R+?>VZ7l5UDP}s&*U=)V`eABKbzed-e86k225oG&3wLOtStMRuzVpiN)JUjPBbb_iwz(d&W9OJ^vj`1vo|-HX=f`Rvu7J4A>8=&+0xq>5G&qa`mR5wXByWSZuP-jUQWwM z(_Uiq#0ohtHj`*o-1K|X7XxJAxHLBo(cuYDuhIyV7Xi-#)XUYq)%c(V>7B{74{_3O zqZx7D!tdrGT{GupH}4WYjC0Wu+JxiRALe(wPG!d!*MF@Q6QLtf`oIMRoEW;O{Ua6`?!q}M}mZjKa)z5*Th!)QnI&5VyA*_PW^AYbN#bjj& zuH{2^Bj%hc!CC73V0qS4F}|L$B`E4`4pV0NX@0STPn%R>;T zTcDe=aeGh0J9-$z3@NWWVg~;B0s#m`k)zM}behLCrJN|7AuOlBbv=pHPLjtzj)$5? z$<~r+Lls_HJk`Dd3i1xtITQ)LR@r0D&xz6dYyIXT#IP_nLEu&)udzzo#s6%??GHv_ zc~OJmrQ%Q>BM`|P`@aQV?rOUv*X;Tf=tza;1M~CUWB$@C@Aabvnr5z9kO)j-A6k$o z`gKu(U|D>au~b3J#)>d*3iutdxud3}^RK797kvb$PUim}PeIIQl#PF|NjG0(cBeYF3*qR`gld3X*%43N06wiI6t&^6G|1BM$u9fC0AgB83`iN%>-NvZP ztKq~2De>=XWgha}^e;)TXN{r$NTt<=xR-Z7jp83N;^hrVFjr=N95 zf6+}(RSIHzD?h63hpjXy6A$Nw>zf2_0HTBU`4~b|4KNoaOf#$RciF zdg8H!5tZ<5yrSF92{!HgC$5R+V>5sHISSV@mK%U`>zso2RbZ>ZW!d=M`paPS+U#1I za~@Cj2baE=A_{SWDI|*+@@z1ZZL`Luy#|#b>Z=q!$X(!us;yn0i2I;5LCn%IA`Njs zKf06|Jb=BX6gYPU@1gy3$I>CBN2-(W2|iC^&C1|i^|4p+p!`2%^+(_W=_juF#i0l{ z5bJ(*6YE`bP}VCp$4Rx|0DI?vgk|i(%s!({)Xrr`zM?{!SQ*sqK`f#7k!Qa2%0T*QY@_bUl@Io#369JPa+BGSQ$>XJX>Ol$ z=~`z*;T`l|4d^>$`NAB7sTzRkDg=67W_P*%{cUX%5ew)HzElV-f5p6+HmNBcijtZK z4$nG9Ficatt&^sj{9D)=M9;bn*-PkpIFjYHs#Xz_m-WOT_KkkqiQUpioHayl z;jK4b6DBFS2}#G~>tGlRrT<6O%dqdEc$42PD%_^}4O5#^wPNhwqfPy2F8v?gk+=I^ zi&#cBs@uRjS8e^+=?WrhqRg2tr_%{U{LCTn-dW0Z;nHBAQ!DTOJIG`F1!FhB1T46) z&I}iwm*Z+P0kEa6?93(~zkb|?9?GWQOT&#H#ugxoNX~}h5-HVZ6N@f!>ITpL?O3N! z%xcGq7xiAE5|~$;<=k88GOh7@=N_0|<&JILZ8Z8)@OQyyTkv|j#V208-gRnAN3^g3 z``JV3)3vn8?;9n56H);LOP~t*VEI#p`lzxRhzZt1m<^;$y1z(tf3E@DF^hpW5eZ>H^h?RdQxH-rCdo=cU2 z5Q??t!5JYCY{QDXy~`X%`y%kZqdKUYKZJ6pHBpX>mpglnnc8 zvCy|Kbj2zBV5*j@WhORzs*IbcR(-R7L`N{3LG+WD3V=nVWJ_HRNMD2DHJ?WL?>bWO z9x{!N+x1LPF=;gQyq8<&!PY%)7Ap(;$wsfq_2lTXeA8uvXd%~+SN`oy!nZLl*Xml# z3yBrzXFQx^3e7UPylFwoZW!lF)cph==$f=Ch&@acf{US6w>n z0->wu^fEy2vZY0kYXOiVuBCRB{uFWMk&8O1vno`mB^-PbJ>BPilY;C>lv6$b(Quft z)%%zTV54$X(XY1wu*867{-6WP8s(B!wRn z--cG^&W*V$Nz*)m@J{TR>a0*QVHL@hTojdYq}n;|`WT|I&+UxzYj$VP{wN~UG3vK? zhJf6;WTB%-_1=-vA#(#H;0CcWhYmcGp&$tAeLV*J++o7BNuM;4tTUI zL*QkSTUtsVZ}1bDlMr+<#H`UZeC^7F;5Ld`e;zcgbg+nc$}DBees=3!Pyp%cJvKL) zU7zY21X7^?rAt8PZHQ>EZT}BW$;)`Jyy2bDpp1`74n+SS{%VA(ir+-E8f@DFFYHJ9 zKMqjQJzGYb|BAQz{hGZL{N-K81z{@SS@}UPWX8QDLRKQ~LRBaIDzs@Mr_W0!FsX#R zOZa-T8BwJ{2zVmMBJ=l+g#XfCy-$1z*vyd{6qtuqUtosl9+OKUVEl9{EnWiRimLSc zpj7O)=QAZ3C4HhAxBgFBk3*Pn^t;6G@0W9rdwThJK(A>um64Nvfo%*`Gd_1m(#}`U zy?)8F7-i4V^I51Mt{=P}-|^jsULRi@%*A7zL6{;SC><%`U1<5(?_ThHrbD|(!`fq-=g(Lajbw1dfv)ur&N6_a#KF@pWKgN zC0B$r2j{f3Wf2^fg_dvFS|5hS-xh!`$il0v*4e4l)LqNj>r4fhbdN?LGJ}R44N6?0 zJWeF0JCm?J-DAHUA7;}g+(}n`7T}SG}5$>WeCuMa|%=ZdL|kuCg;+t!Ewi8`>kWVVIi zWi%O8WA-Wo$&HSN%w5{O%It`WVaUjQ3?U$1bvT~;(Y`xYNH zR*(9Da_x=ah9A6={@;9u+7f#f|Gdh@$jBfSMca$nUUWGdOoB&K1}RrlnJ^*rA1$Z+ zn}uS=(f*~Q(>}j^i);8Mg;rPp9BM@O4|*Ov%MhCq)E8^7F(_`2#qtV-+@kKno(0^f z=mfHcY3G@iOBu^)5u%KsVl%9GJEx-1@4T6R^GDvMo$n&B+${8p^;Z?MKWPPHKo9!E zF+X0h;d8hg$K56sZpvwK@jDP>=mN67ow32VnR8=oI`BAPUP5=QA2(Q5ptbuF+t}@@ zn&Ret6?lc4HvU12@~@+b|huOojC z|DyY1mr`#WGYFH_lw$q~mQ{z{i|^p$a~wXBjzJ;p0S2QJ4daSOvhPA?B2`c@6~V6jj3B2&94m^b5J>o>N;~@ zT5a-9-^B-5Z@4{EpJC&={%TpcVJQ~gy`xZvydw**GU!7t!Jr)_KyTADfFgEm#8gKI zCgMD|=$kNCmGgX*!&8YENLc6r*x%2sJ*R10K>)o=ulW&y(oregw$ui(`jxWa`m)^^ z5r^}l5^fS^-uaaec!L|rYWrxN+1AmxfU#za%pDw#qHHk#EmuwDN|w7&NYg-Hhra8_ z2C;_qRVlRB1GqqG>OHVA?LI)y@4wwo$zLd@-Z>MY7Q`z9FmSb(TgaP=>Y&gKSz`FR z_6bbY;CS^eCSbl23VZA16=9DouP90>TpJTbnjC*a;8$dSLpbwoM@&Eq3&_(Y+A;WN zw3!L*R3SurEE=Xv1TIumuYlfP0~F8&1%(#&$Oh)3UV>nR(@#bg6-WADE3`;?nkn24 z=RB=udOTKsi~$@f>{g#lkP%jWEN~uq(JxycmRrYiw(oa~oz)t%q;pjQ<0#ap#2YQ5 zZAuK|(YhRaPvk*uounyUAXA*>yo79X!K1#I&A6MqFT_I_)_%u%WKa_=!Yd9D|5@mS zl3-)w=c@*M1c}J&tqWCHjxr5{OET}#o?AN@9-CBKncq}A-}9P=Zb~_&VhCs==qZ?5 z9AB;N4m0tS^vI*^Z?5*@7Rf2!2E)`mGD-bn^&f-}|7xof<*4-tF@%~f=a1I8i?IrE z@ea;aN}7c20USWmw!E)MxxO7D#q$d@@{C)T`l6yPveG6CdseV}MC|y7@;ukQfj&t) z-Y_^S`WXCfGl-mC68c^Jz`^PM{&)%h>W6lBMr5R{A7ZT@c<>wCG8X&L*riX?cnzZJ z!34p2vyRO~wx;MdiVj{8*(ndbSR5$dn}ypMBvrQ`Zw&W|pe&b+Q^e5*&*VyTZ00+) zDXW73%;Kt2vt=6Zbs)R^i#y?1q#Nj&T~bCAy=ixI*&6Q30}v13(Zva_*dsyR{n~v< zDq3M9RaqBQsp>tYpkMm)m86$y!VHf!t!83c!L2s4^}tp$6{7U%fv1-od;zD~ak&sdI^i zOZLYxq}Y-)Hvn`oL}k8d9N~t8+e3}!QRd+Ap~+vz27}wHTv6QCo^`>Xej95wHl)qy zD32am_pbzEWfwBnCBDJpF9gzD`fM025=(Z0WLjGioaE^Q3>YsJq1`l~DqB2MjT^UQX-!sJFqYD!~U{y|%YK}R8Xp%HlC5GJ)nsBwc_FD^mDYbZ3hWxDzHKY& zNCFjhWw`ZlQ&pjO5mi^(n8UpPYrrvLVaZlZuIg7@w_qR_ap6Ch)~d~AykLhPVtk(s z%SX9sgNFDUUy7EOxJ(=~TwMYOrE~h6wYMi8aTKa6m`RJPf8iO>4eh~S3tbs8uxbKfLagktjWwanf0^3*)*>b~{Sq?D-P4-+CT}6qZE6q#vQ<42N zkGM73Hfv>LA@3_`f%Unuas6WID|gGKh1~qb4am+hltQ*S#!)JS-}ZME)^tp#mlGxw zYiF`{s@MDOGSU`TWW8sIq5E5c{fe679o4O2BU^}QT;61$Y6+RQC|e#8lwnctNPN39 zM7*S#bryXN6Sk`ufWY-;ad0s=#0}k=t}Vn0_i7Z#jVfkSqi|Nzk|3eF^Q9QNX;oQpNhbH9nWVeAlISb!vbb{*O@?Y5f{2GfN(%xwSr>;Me(0$c8!f~S9asr0Ww<1$odu_rRAZXyy={j$Q$si9!CDN7+oz= z2p&VHb_zJ`etxVHXtOOb+cqbDp);_UAe#@GhPEDb9SOzR((A3t@h+U3f?xY6L@@OK z<9x<+Mt*Ti$qv^-8EOdX$QW@rP7nN?J^viQq-5@=s1DTEzo@-Q6>F{q26^kxn5p@( z%HE|KL6f5Zw%F#!>n=sM|At06dkJ3Ke_0yL*K)hY()VoPsP!{bkw~1G15EcG$2|9* z?;$L0ICS#nhYAMnt4$GRtT|n%`b@C-w-eZgOk$i$Q;lFbXnSdo|HVf9gn3m;e4$zH z$D#zvi0eKX$~?0fu(3?YSSlH{pFGN}2|vy?dd}pi5UFx2bM_=rQ}OW2Cg6Jy{`H+% z^q|m3*Mt?CPhYS9jFG?o8J1mPq0{sL*_#${BtvHUAI+0sns^z4AJ!vma367_yBnR! zy1*i_pvDG_JI}X(U*Fjgzl~`3w7|MQ?aPJyd56)0L9k_X;_d`fFNxnY5)JvnJFPGI zDuAW?K^{;-Wtku1d7-R>fBd;t;h4(u1^*lYu-}wkRJAVg;o$q}`LT3a`LEK@GP!)=t zWMNy4Ob2#M;AE@lROi1XTb`;g*C8fmczS3!n@af|#;w_(cvXw?+wdnI8EiF3)oZa>qtUK?0Um5nX<|hw25u5jpUN~Bs zG1r^nbLM}t-+eNCaNfBK77$l=l$F$A{BC12T(LuNc6pHeohuVSEt4X4q(i+{Wyyjh zcL{QJtih|^6C}ep13f@RHAEM*Us+&Hb&)Hh!M=jS`6nOmhi2^}zj}1Ivqu#y9QxqQ zSJuPQwte!pp6G3>B8Gi!ml>t{9>A8l|G0xUR3n z-$uH`vj@(Y5ID$PE7jGrHve^bC$|g&cC+rA@CD7DHu>TCFpYE)juREwFjU5oJYOqR z{_Nn-s81inb(HQAbh>oco|>$d-b5<#!<>Mq-=4%Db+<3SVD9xN&7o9upS+=K7j94J z2KJ5$>JwfbiDTT0Yol9-F^pllOR*OL*2&vNVd^N0cY{&|t)X5YbpJ5nAMd}6FGlR2 z*%p>dM$_G&!Bp3#c8r&5R20O)jU!A+nceSEF7hd0Af>2d>iBa_FHKzxG7h_sCC1=~oN5uBCKinh5RKj-^mV!D6F zeLK*0h_?P!b3UI#QS)NOQ#|&B6B3rsNAYZv<@jpeN%2Pa8=yPgm-LjS(`rO<^@!4H zpZhlCbRXA8q4`WA{5UG8$H9ee>tOz{ag%tzkSwL1M{p4D(yc56(ij4}z$S5Q&R!{* zt5i6Zlv$!D6bqcXlodNNqafH+GF)sC(Y(Wn+#5fNr~X3crgEApugN>J5fKC@tO!Yq zb;BQ!;;c_(J7Qe%g)&~6j_q6Br?@zR!a18eF1zL``X4*ist7?_Djt{%Xg0i0ww?fe zA)@^S=aQeNU?Eekmt7y~D~gN-S4UBY#}MKq5QHONysiTBvz6P07bdS3!Vyq`k6$Y4 zz?N!Wa}ZALp;WNDK-Vt0|Iw9KkmXWoVw)|hx+Wz5ir&k@pcvIu8am7$ zRkZ`Iu6!iGLWN$n3+x`|*(WB~!Aq+BO+5o+#3M;2^I8P*;s}_`=fb*ycG3Q1t^9NL zLkmo{h!8K8MRqzu^#U~1HEb^GU2FS+4Z7z^a(l+N$Ad$z}X;q``-fwiEDNBOCnI;D{{mq%eepCn6MsN>-Yzp zeUkI#j_73UY}ww~@#a{2TsoOo@AQ zeUZC&SRZg_q)~s3bH;8OItgzEY~eD~#+$ioq~on_X~9RjhM`@)XucS9!N5!~V>=b( z9vnxZbzAiq4^SdKD+2!H+*!WAZ;zyYYDM?$z%#u%HbPLE?=r0Uw@=KI^``TB^=tDb zEfuup&cUhZE=R2Q)m7PC7sxNBCwj0E%%&53b0iOJn(0!)v=5zf6GEzBvJ;ipnZXC8 zD%$OQ04y7i`Bapn9v*w~VTKUO((%1dM$|{`G2DU}q)V<6Eao#u8=*KiKIk_IQ;N|e^n#wS6B5bJeC-sQf@m2bRq-VrZk@( z%_M>vHF+GzRM~%K(fX^*Vh8%nt5Axr*Jsq~hXw75A&elYJ3oBbl!~%dZYLMd_Vau_ zJJ2g0#p*=MxUMZs&e3~Y#18w^ZMc^&c#9LPewLZkbm>vk`B}$FE8YeVwS6SV?9a}V z1pTjxHi;74oJdlnGR@dPGYi(QkMxu?Q0;(wE3c8rjn5})9cv(p2?!{VU1GCKUBQSc zuz`?o2$Z;lq93}4pz1UVHVwu~wmo8x`VFJ`9tm!s=004`HQI5YZa#csyVBIlT!#A5 zb^J{bVlxC%3p1Ui#5fdeU+W0Lk;Pp!p3a9B8JN4MHpAerB}sAn_h<^CS=C9X9Hl*Z z-VxTao|VWqH8fqd_Z3t(jX=U3w(5FIo{Ck_X;NALgsVhNpPa&KKV`3aZYQ@)eL<2= zWRk1Cf`QpWh{-EeZ$>%kG>_=N13LRuq?YIFNpm#e#1`N zocry`{%>Y{y>ux3MeP8Gl;p1~->?AxKLEhtL&B$WP9HtNMngzeP5TCOk5Pd_+{UYg z0Pe6&?#m2guH(jZ{Mn|eKt{lmVXZNRq}Qxi09hQvg`N7@5QETChOMt^x$zs+(EAF- zr`^!XOV!a7g9}?8ZhOve1^5bdb~>#VLgTp#SA3e|S1)xcN`w)GP&ZN970M<1wVi)` zFh>Jp@7wQe^V|hOfi1z3V|F{px8Tae*eeuhkRoH;VhdM8?exyfKn0hpNtI{s;p9i< zGr8Wd`$QOD8s0*1Rrbch>d&-Jguo~F$8Js4ZtLw1s%Ll9X}lgl^ltv*miimp{K)=B zeD0L;r6~%z91Y~w_M6k(3v@~bk;CQ<{bLfUu>ADnI;C=XjwLVJWcb5KQ5~1I z@5*<Fyl98>Df96u)37H+SFR6* zgz(3S_sA?Hcu44)t*I#TxZJ;C8UWW;Lt<@wornstEQS7ufVs_49Ylxqw3=$<22J+A zUa#Z?i>|!wg?tCfm+UUZe*iSm)JsnFP&N^9&Z=;$F&01C-%QLBUm&*Tu>|3J!|2pn#h6g)n(nQIIUQvWhpFmG_UT4XQ0Vp$ifq{VMN6 z1)AmbS9M`M7wesO&sQBcP_j4@0AJu834o^sCf>EhqEiw2@Y-U@7_)dCR5zsTfJ59$ zT#-Y&DGQ-blWKhm5~;WMGVdSmH-bQ{D83HxrDFZQQJzWgVsa%D zsNYbqROeJ#Z}iBJfe)Q(5U#Xr0)Ve3iLN!n{$JcH!CtOt*hmQV?E=swu2t^44wi4@ zD&V!Or~%v_{3Yzs(Q3#)U&&Gm=cMsUjB|8?uM)WJKcrbrp-(BE7MkvlYI<%d@x19_ zQW`mfnO&drA&dpvwf5=0k0ccizWLUw455isS@=Sz>Ya~U8kum1Ws729n`Z%12gy4Q zU$>T3mwQO&Syee(WX)b$fz{KbsH<9m+D0Xk8-5gv;N0d0u*DU^ntMd`gm-cH2m zgB)wqPqtpda9UtX>;<8!od{sz#D4S1*3(bwo`w9MVCi)Bo>ihIsR3o zbmPXykm4MOK6hQ3@=38AI@A`7ClW~Xs19pKjz?5EndB|L?dcDi(ec%ZBL=J_6c9~Y z!>~=LwAD@W6}g6*ru@UbP@5sbE%e~iPJlsck~?{UHHNtc)`0t~9}2v>0R+iKT8ox_ zxhK9@?MN<|*^@y1u3PF;_J^fRKzX~WZFauHx88ug6<4ewQ^*$+>NYl{2x3E|g?r{% z7O6OQ`4cCuLwdy4a(S^5-TUxhJXeZLfnA06I2p$TOvIHw}X)Oj9dv->J(=mBiFpI^8E0DiMz zd_u^j5zPv=<>WCL69FhZ9A6Vg^jT7nyRIo^$4Kfjb$T0+PO{+%pU8Z4lP@2mis0=r zB``JiAiRDXjN@h{cmI;Ej={>z1_UU;YhV;`U3pM>u3e>mh7L=dc#I#i$65jp`8V7YGb(wQ z)|o8V=h`|)sEwxGj1(@l7aMPU#d8*;C2xKS1!9bVW2qOnAG|1lN@O%NlfQi|dGyLA z8SK-0baq8L=8oc_@zso}n-|h!w4B-IoLpP&ZHGm@$aRXNoIjT0&j;ViSNJF2Xx+Ai zXO}QdaPXW9janbV?P~QVE1U!99KiqJANzC;BS{FPwE)~3t1r7`Wd}NyBG6;8)SP&` z)NreF&aE(@6cik7d{=}DY;-1}XbmGZCzV%xm2R_r8#Eb|0w^;p#qR;GqB04&;unIQkUC(Buvq@(OHTbQkJ8V&4%~T#>YaoXu^xL`(^cxA7szgjUbk$mA(bU2i# z(Ok19qlH5`G>ty&zS60ICl&Epc3v!XCV%-&k76IbMxgok@9IyRenv$+#jErMZharx10)2oRzAu<;5xRwluuCAUuY*6D_$_O(O8|D1u z$S@R;xjjy3-{<~lmgTaCHg05=`dZdPD;LntCK>$)F`4xJtr4zbk=QI9oq8dN%f{aQ``~Tq+^|TSPzCHr)W+px#sPy z;*l2O7RrvHs)4|XI|wbH@#j$t3x#EdQ8?@C+dLP2fbh~hL1!Np+j#Nbyzae>s!PE$ zxnG7%VCUYT3N#F7!Tx4#aEN~wq7lJS6!zntL!G5Ycl&{hQ?~YJ24ll1FN*o#SZR%d z+rjf$KH!K^fO<`o$A3e};O1!Z3atBJpuT@lAuD+L%=IDP$T3Qj8mLCvh4xcR2rtWE zN4vG%u_U}o9qbWzIKXjd%-h9`qFWX263;1D?hQ3c2I>L?9;DxrBlM;B=)|X1mH>H+ zSzP*0+tosk`59dl zA4FztqnFE5{pqRE=20%nk&ZPJi=?dH{_;azmbUpZJmYjwVYB83J9#A6@Czmtb`(+QWY~nhu z5kK3cZP4|HiEcC43HMhwE9u+&QKJU3!-awo=h&tu%k7AiZ^K;uX@sprP_sJblWVpp zZYH*7a3`TUV}3Noq(JgY8E8yCDg41BuE^qB31*NAdjAj7=FZ{PhO=CP)6fc4h5AZ-TVYn@n}H7V18&eYS>d|usgzLg4O?|e*M|5iWY8`cQVm+PXf229GywtjNw#jycT-~_MP zNDY{iZm922xDr+?*ZgPKb*3B%$lVmgQ|}hC`&}i z-uQXTzC-^5=lKIbw|f;i;gr7U(nylM>xu_=CMm0)X)-!#L>Tdc8eBQ(H-%1DLRVb2 z-An1hpzeyzw(7j!7eZ*7b&S0=)2HGU8t)kC+609XK={qbQ4IwyN-W}bo~T@>G9;bk z@lWDGx{@=)jXglNJ$is7P32mCTCAPsG50IMaC`%8vt?fdA$VuQF25uOgjG%9DRH_= zkj1(-X*a2iI8kuXX{)7qJuMDA5W~KKb?14;&p9lzwYQokuvQ$*mnNL&oy$gLfN`$? zF1R~7ToeD^p?c>Qg}NUjYVW?10GHj-ohtCR+w!8h=CWmX!xPTxdFPh0E0{Ch0RmGgLVoNkKxvAMLvt#> z-tcyJ#Oz1vaxKjuR0VTkLFo^VB|#QI-gm=ZzUTi}IX+CsinT6mKc)Qy*3RqK2F zGwIFGfisyI14#8jqeLCu!o%D)^@(h3op%Z(AB=XvtEFq9O*wkKzj;SyyK5+Ejs=UEsRf#r;~v*;ohj661y>Xnjj8D`^!c#|-7w|_ z8Cr(+_Ah$2mBpiE_)uFS4APSBn$@0qa>cA$Q?W2{#^{U>kT!S#O-7zScoQ1X74d`v zmlZHQ`o1B{zSjfJV!=vwYKQ$Y0>jyXQG=8WaUjw$lJfxhR*95i&9=?@@69N$RqG~# zdP>4=8~dt0lOe_(sL;}vmZ<$JEGcPuK-3ou!7jw!)by8|muk_#eftIx_lqeylbICd zTfm=ml4Xl@7H>M&byz5cO$fGSxaXh`mL=<+`M6q!n21Fqe$FjXV&?U0+^uPrU-tC1K^JMF%LPEY6fWh_OPb*3i86Xz4Iy5{Sb#G+k?ZJ=Y_cLe73@dR%oclyri;Zyr zPGW*HAYol7gAxD=-CKC0&VkI82$uH*n`@5u@ZdH^^mZWVSovj{j^TCdF7Uef%aL`xVFJq;|z~1&<}d}9lBy|*h3*c8ce}A8MPk9G{ znd*Na)1LY?)PphvniZZs=3+1KH3_n|2I}^MB{vRf$&TsHxGL&?Da&MxBEJfycw{6@ zynWr3w;GaWTLibFQP$fw0$%vefWZg$d@16Rlf>RQ z@Dfg?4YFB3vOpCMx0OJ+ZTD(L<_C%SAkP|IGrFh&qvF0`_kklTQR_okFkbeeCfEk- z$5BsmwxmRx-!yifXLFiASiDsiy@pg2LxnNS&NeZd$m^l~%G z6XTSUvd^fSRwHW4Z#MP)MUf9chWLaSAHC9T3-lCe7%To<{8&}rg1*^RMVR+uS7Gq2 zc5l!z1o$oQN(H2~{yB^lY6I=0t>U2>ho%h-r0E2s3ONKP7+jeP6EI_+`_DE^QGn7G z=MD6hpbZo&mF0N+bt?1rB}A6G{t&2PblTLe+{b=?_q^cNos=@7lu4K5WkF^f{lcB% z1YXiA5T|IMa*&gikW9{(aByn{Tf3-hkxTtD{r^d4-tDS@fODLytHez(y!2TPk{R0r zs-nKo40Z@6U@Jk%JQ*`r!se>)h$+2-9FgT!$Nt(3o{H&VQc9hIu0=2%?aEyvT8M-M zN2qG1x_zg-hMjt{sUMQfYUR?NMPFf)Xaop!1|#RhY7_e6nLvjbG#O>gMqNSST0!+k0 zU<--HBe)~U3PF@@J<{#ak1#w=$Ldb{oH{r|JG%+xKy_|;8cML~%=}I( z#ygs-k!ypp-HgL+4%r0?yGCw7RLZUyYZtdg6%V} z%(+zDm^V%Zk9NS$EzR2+mdjvxIzpJ(D}wk9Wh6~-e`(+e8+Lfp5MOEddaw7 zp*cbETX4M@md`z?xM`E-0^x2FJbF?qR2VNqBT=(7IVwjzgG2+b#)0Zvb=xHYmGDyO z2Fe2)dh;PK3&I_~l0})2W5{zY-#p$JC>+d5&g#7o zvL6&&y|a9G<-Z;`{n%gsJaeuRcWjZ?_kG-*cK_=o8Mp~m-~zC=`(ABWDM*7Vn^}=U zIifgWRQC8yo=kQ#Q5@$#a@Lj;A`U;VrccB_9%f1b)aHL?{7LxL*kX_qf+>?l^yn53 zpz;|!_N@v-A%Q>H+jit0I+S-0!-oNJ(xCq)kR>r-3i0Z@XKa^_P&NhI zV3$c@5Z+1ys^xVAh*nUx1Q*x+(;i@h)Cxr`R6_l z|GV5vl27N{IdJTvYuybq2@C*epPqvWu;~WK^^Ho$Mt&u>C;l$*zf}K<^VCy)!hk{) zpFdl@nt}Z_@9I~EXE!O#g4wGKeRJ{3Cvu%2 zs3TMvcN}k|kxy9z|CVd5BF^3=i0j9ob_)xAT;Jkj%rvgW&4xM$T%1So`&^_9fm>h; zoh*<;a~1RbGCZPDa8!4(L{i7C3 z)LesnKaz4Kmy;l;pUZ!QXmMd<5#+3}kn$z{rRD?-Zq~WN<0IndA{65*Oqpu&1Rc96 z$j_^hZf$_!fOJ7dQRyJ9+CRRa5h>0PS6x11%>%T&oO)(BgD|}VV9OJV4X+ySk01I2 z%_JH#GXg*PKtOV)$yI$=u72l5Y7Cd^r@c@mw9a#O1n*OT9p16eu=K7DcLSrO+if}z z5KqB4SQREN!8yNqCB3G|sI)y+PJLrIy3xknIC$srPb{9c_lDc4n1U^TgMUVBk(QRL z7>EacP8^}r@N`!;@np}s$IIsjGlGsgUfS%_BsMILZ{GsCG-cn)(ToLw z_l0$B-WEm1`REb3zW0O#mrT_jy{L})R8hpYrGDTf1~AF4u;4}K=-ktpIXiCuX(0qy z?W>(=$_m7Uw7f(!PXj2^&PDjJEgqv;#7U zwGJ^8*<@AEXmSeC^Wl*D&o;gn+G8nJyga5&*-4`Z5V88^Hm$;zd)yFJTH*MBCD|=l zLUhSqeQNqCrV*zlUR9J%r)mLbN`HFyn+|SCZ9EBTeqS-A8?ZMbl-{@;$p9Vi+C*t` zp1Me0t=1rV<6cdUnW*zma6*SEdiT{o3=i1X6EKS8JHbIc0#`jNWtN92^`C%T#YP$W z`-h_u_D7gOIBpLF{ZwHwsO0uLHlhK-0Iocr>v1+h>gh_3YFuZc;%JbbnrvDp>L>YMklS;5?g$9rk_!I|*sw;bu?yQ}*sOMp_e0IrabVoy9 z{RAYZW4s6YL`3nydT2Vynj$1v?wrA)ce=Z+`l$PV>2~9ZP7e@v%#FRGF`EF0p%o&4 z96BsY-jR!XE+39eCq2h)+CnS&YK`~^!PRiJtl0U#F)?vJNpxZ>ac2aIp$;E$y@^>y8?T@VpP+6= z#+qYPAT8;Wq!*m;U)_j zXH{);8ln#j<6Ov%$glV{hUUL3cpaFo2bqC5{$mj$TZkAUw0AImu_Xy|Io+Lkupr-B zyfr!*n^!00OJa)d=H8jKvWY8$Q>w1-V_OT`1-KPoa;%gk_k15_tH zRW!ZLr6FwjYk@#6@W)`RsM{IAkWw0Yf`-lyTb7-N$eBYtm#cHbXD0Pi?T*{B-4DZH>Vc@C3(T+iHMyuF}XupsO-7u%%Duy z)*m#{T>Rj#&sNiFE9 zq=fhO5pU9JMNWb|>{+&)y&2qq(_wRjfZ3|^7u1YWkPA!Xb7WQ?=!g{bH$0TjFgFl1 zrLWQQN%2M7L19)Efc@CB*7cm(uSb0%C;}y2D7jCUC7eP!mm#lC~3Z(iZ*xk4WznpU)=_81^wr3F!y&u7Ox1|2V2Hrkn| z+oOQN-`fvbEZ7xMRfE{_A;*YtXGR$ue4Q z_x?gxfH-3JmRLh;o2OQ43B+d&9NpcO z7`E%mW?RnB*^++I^!9H2inon+BB1TV{g}1KI`Eird0C$yE<3b|!I0g?uef?#mnI== z-!9`UvfzguGpzCRun)dRjAoC=%MtxgY?wT<1GvwlrrmTHhelM43}+85RR>F{dDoO$L( zP2xe$H=$SbbHwzk`BL|h@XuviWq=%SZX50AH?gBn{;b;NnAkc~DU9)`B0>@RI>b)a z*hXGokPO25-8pq(yMx&LE*~x*>Lq^$Rx%kZ*S1D1#> zNL;9{6$|y9xYoXpZNGsJq#c-8kEB^jG4pT_l_Ekb# zER?fop#k?tQF_Un(tQ5zn^%3@!`Fu@I~TYD!G^w!a`HTP{wZyZvar@sxx5ka;sG@D zPe~7hT7ys^Es`hn!({n%VS5qx`iUTEcoxM3@Ya^5H@`+}vVq$9u-U)3AEEuUqoRsMB|i!F&b+$>?X=Rr>zQ}u zf*u|`t|MF-iY$YY^w?(s0ybce^qfaq!$Ey!h%_tbSO~B;-Pj7Om!ek`DR-&*Zl7bTS)Ij!3IFOYrgc|ETKRUN>l&3|W-En>gDM@l@y(<% zX$s>{!^T~qKfjd3D2Tl1z24_0>xJt|ZqNkIfzE7PRU{EZur05Db81s?Iz690Ecj=zT+iK#rBSRRBH>W^BT zaX6l2n<+iVhf-V^0+G)Vbh_mN#{A;gww?rIzoaTgpW}_1TjW8(_cY&;nJX{ z9CbHBC3f2LMkM_ix1X)M_O(r;-FcKr&3uyBP#zFO zNLFDB^#_T@M!R&VvtB9B(f5Xxz7b2=qr}<>)iN-I*$yNhV+xT?khW(cE%9n}N~f!C z{EnwvG~Iu0T=Y0_XEQ+cLgeuV!Z_OjKs;;K{bhcPdY#64R|Ch;{e34`^`4kEQjzt5 zefSR#wC1Tyh*X?i3*2}0eF%Zx&5%cF)LUBy5dv*T*r#ch8mh;P3zZS9jMmzB_%Z=q z3OT6t3a|uThq^ zHfx4UCHpibT;fTgbdJNZcsFpPya-)I@@vHOq2#J#Bt)$JO12)pJ$sHS!AGnq^|ISO zW8V)C+J&J7tyD%eExh+#s-Mn}l`cu$qcq_^*hI z_*VqNIyqd=>xOJJrO^ocC}q*_RL!y=UN? z^sTc)KIN;iae&{ZT{AR&c3ZgFpZIEWD4ryP3Z};nr^B!KUKC_lU8Ip%et0jXV`h%y z^i9mJoi6yiUODu(j7NE!(@?N@_D=nBg&EG`L_A5ob7 zByB;8W^|13Wj4*M16c@!Gv(y`zSFX)JHp=YLpfA;hUx+PQ69^Vts<~cvtcL0rE^0j zqZK1k1$Cn(_fZv5v41ZumWkqVccmwh)h1SXp?{^eD^-?Y6nfLxjRpm{Zd$}86YJVp zv6*tHX*5}i(7684Yi~z>2Pbgu4k-Fhc!2g-FAd7$x*sc4JC?_5;p2T#7IXkZDA$gc zYnz`_&#sg}u4IlPHxNzjN=--sc3Cfpy@1nU+|2d?Hxu?OwJF2Pjy2LBj7~JHNIT?% z+N+_B+2hPEn~;X!tE9VtxJPnfFnX`x z>5^y@P`q{HrU=!#wF8N;)J8M}rLD=-uTVQL&i&nmDpt8oW7fPW1o$RX-v)OsnBq4z z5`2)|ZvqRwZ#H1Cd_!~}UFnjt4RI{BhO3hK1M+8@L(ig2-0BHP}mGU5)wb@ z%4Mk-K_Y0pr?$%u$OM3)iHO^6WDSwp)bG9q)x$SiZ&Ir12C1&keQl{1pMY*(#b4}AoFAkO5?yZzU6SM;2jf+ivfXljffOtNAcM)W13MDaE~+hW+y4w}b@{bQwN(>4yjE!kX_nYTd$hb{Xc6_1iiZV3 zt2(;Tt6%0r24edOC%|!d_P&kbPV8yDeW3$1kqd;g`5;YWV&xT zQ*I6%kyb|=3t)6l8!ib~Ea@Jd4cNE4VKVEtU{GFl966sUZ)2{F^AyawTL+^2tFr3H z^!!E+UyHKeNy3fAS!(+tbB8`>Oy$x}@297;%MUsoq4RC3*8;$c7)!iGZIYf>g=J>T z%jem|EvpqFA*a-DE*eK`27O?6sna?NxO6^=-UU8Y!JmY!R7`tEkEW<3T#LSOLeOBO zWMv{-rR=aRZT_1?Xl;qKM1AUK?LP_%z`0G7e-zTS3#v@wq=u#pw?)0C>%hXS^HLSwaUz++sUK%yILIWR^k8zHaQCUw~2cFoI;7`F(I|!84$$1q2 zI}VC@$fiM-8)lG4@m=hjvYtq%pEK`P0=?d3S1=rNz}~aWF^2PQ-RR2Yk;xLMKR?5p z>h)1+WHH#X*z+eCvl;c9$iqW>S2F6= zY^1awCr4-F`%%SP24+OjwWate0=rXPtzrgEj{>TAwfnPu?Hdc%=5;|<6sj6f{2FbQ4ii^Kf<9amN*~BJo&;#s5$hN+*Tj*Q@ z=0Wj*4r};}Wewg>KWQ_-L9yH?C><$~+kS-Gr^Cx38S(;cU_}N}1dR!A@s5;t;P|ri zq_A46N}YaJtD-QeuEmz|lN?^?#9^?{<68!MP+&nQfaGFqM31~(2jWk@m%NTySpSkD za6lmT@d+5D851xXYzv(L7Iziw&p5+)rBj5<)D5kU-Da#+h6no>t47z-fE>3HIsiYz zB#?!@4%PFoJr#FTt!V+kc4_aQuQj)TUeUFGK|$JCN=|XFDl85_5ZxJiI{1ZW{+;7a zt-ac88PLpOcJ4)9rF?p>=+IbEW|YmJ0I7WrtEhpSyAyDK<*}`(Jw039Y z?xLmGomFbfxWJwGy)?2f^Ts(sakO~IK&M)MPBnP<_2&U0bVA|=QV+W=9t~$ub(1vE ze*H-x%>ovH?o9lwxdM5VSk~R$qp)3&krX)}NVM-?`k-fGKIm=I=vSb99nC{I#E{wr zAjO3J4RFQGopfkwP6h6vjX((;vWGUPfjeC*5BoaPvW=}C_dBrZN}8#Ui=I{K2Afum z;Up{Fb@8&KDw+}i=wFD-Ti2V6H^WVP00)O8i?PO95@+wc`Jh2FbzKy|DgD5lg!~dj zeqKd&n~@q$t&n>~{NqdAkw80j*4K~=2edK^Op(rCfGy)0IT^2S6M2Ph+#fHD;Vkc% z1d=t0)5pa;dNR!kC4D#sZ}h1Q|ERBUn*D{kWdzlvrNgSZZ!z>FIeiiB5BZkKtS(+u zmkENGpKyAL16*{LlY(M2SS&}t37)XG=~3hkBX;n>4xkLR|INT_=!|$%jBSV0x&6Zn zJS$6otK`=hFy>MwpBC2jiDaIaq4PsqFg*dhS=FN5<=~?NI)X}hB*W1{{IMoqsH#Za zLxG2iVeB#;^ifj5ZoF98nGl1(nh?BClUkTk2+HYwfDhu;XqvW+tFnq@ZnR?$+%?UH zW=O(zoEwR=paKjHbZY{5GpKfO=;uy^02m%riTL5boPnVa(zm3>oW0Rvdwyt5cuTV0w(;&cRCMPAK#t|M9KP>Y6D^e`lzu5C%9 zw^G^(S0xuOkoKIxg5lYc34S75hPl~3?QNBJ(7q@>?_7BM?!@ZTz`*s>M^)`|-UaSy zVMTHOexRX-1tZl{mD%AeOMSOkOUZAe39OqnVRtBz(@<=YoQEo0H~3`cJi@AH8<*|< zQpzL_N4|T%B47mXLB?t$Xxy&?Ee{_kT|CiIq1eEpU}IqT>A!8?o{SO8pw&K}_UvK+ zVlWHd27DtdF%cj}!&gHb9n>_Ub;{!Q>B)|w-zZ&`X^b<~Y?&kXW2GN(-JPaDF7bMQ zpqCKgTLi=~=#pGHin}w_XHM9O4-^B1Q10Hz&JR9IN9Kk4V>GY%b$qb1QQiJrh7YqO zqY@j*Z93t?U{M!c*HtoNz9*nzCQRE z+#>!N#pzFy2~F2zmNKX;Ws?z{;ab8JYD9wAt__fUe~JDV7HlmtjQHUookyvA9bQHU6Oy_uJ*WIw!kx3 zl!C5rl~o0s)<6z(o7>o`Mx@pjY3tlGqx=4m$~zO{hJaG&iRx_<(upQE;y;g0sg*(t z|Mh-siM9IVyvplrrbdt02rknu#jtXHWqgUYu87mWmX**=BnNC>VDES85wD80Lxv1O zDNDvz{)ufOz1>V^(Q(7I+E^Hc7r(K(?B1)P-|P6hgF=6krp|#xoFu&oE01i$-+C8s z23hnCm5&e#WiOMIkhq<%egLrvli}WXeI1l9+2h|?octvtFIHtT+HR7gS_0=VJQONB zrq(>2WK=IpQlMo}Y~+rsG={>~KpPP<`hV|)i#j|bsSyP=gUzn(^%#j0a{}y_tsWrCLfT>^P+^1S?vReT%wE7M~ru= zK%wwKo&LZlAgSHGSr@Xq6rVA|MY_0Jg5Ad-F6x^tv1RPcKZE0U5Nc8>x9cV$4~vM# zP9;PtfttJxH6DZjeH`h!&jvBG9*Be7oSNQ3$5MBDoQ7G?Q`iR&ZE~`IvO%{E(29YR z4VB?@buT4OR(4pf^tP2b+v~l#_@QX~41}&mG|q0-zGA)Xo)VJj@r7{%4=o?rgQ8lx zqqO=L=zpYpewxZo0ZEsp_w)VM%%ECuS@#_I!LjmQ>{*$kq|a>c9ygfVo8P*ddvc}*DavE_wZiow^(-NmlzIfk%Jj;2_9M-Sn$Ek@+ zGe1EeqcYXUSS<>^?N%u*v$_@NOU@{yN!cc=*FJLr;&h5tY;1uRYHrT{0rehyr(SlcWMy{pMchl0{f3RF8!5aJM2le``*5Ujyib6Tx zRW`Eoh1+*Z(5X_NokK=8=*FvHv-u)wJ=^g$_b?H~F9>)q&(2{9X&usuh_|(vNg3T? zCOV!+2RH%a=!j!aLW`HJoyhFO_Ugn?Ko%?QteRPeKJ4!R0?ni+q2<^>-p2j+ED2w# zOv$m2aC+H3T;RuHTFHN3NV*5bd6M3SN)x(};E+xu$O-7~oYs7&Vlt3D?KPfeJG5tG zzJAlj&TLeENbACDzT%6yoOvxWS$V6}t4dle4QNfW3JtD5O8l(?3ucP|1(K+_v>cg@cn zG*af;yFe*2Xh{pvZo>x&WVj%}$jS11YDo)+Z63R2t*lHFj73Nxz&t+oLg}&tL)B*5 z;$C1~lJ$7%=|U2Tu4zdsstSf^zXFS*JC-lYuf?RQ`;1F!4Z)x!HT=#&yirTF8_*00 z!>iBZnggsmJmO7^&05c%Ph{;xq14C3jr0l*kwK+gu8ItPU42%IW5)AIPpaH znam?En5yFi!*C|E{$l=+h9%LTjfb6)oe`eI+E0o-zLi%7#`C#W+#K;ytdgT^UoozD znx6#DE4~T@n*o}*6pLSxbg^2~#ssnaCz#I@c1!taWbEA7uH1Ndd&aY`ss3X+8Z1g@ z=P#VaOOL)Q=uBN?4M->+{-bjZ?q=VO=sKhX6<&!XMTQ-+;QZ|1Hsr9JAu4DKkbR*S zc0QIjDM{DSz{Q0jYos(3Z29LiuwL)DUWJ^o=0zx{(+O>T8877ucV3ZUE4M)U!imHB`9X1lXcwx;!susoKNeGp4ZpL?7Uo9I8uqAvZ) z%1)+v@#}1|KR)xm>ajU*yeJegNN0X`jV~2_1gI?P6er<>Ok92`ITBbI<&6)`Vvdc! zTed*hp{56MA$PcduiLo;m~5swNYD+gM1E#cF6o@B%U!P=l8?2P#8Pk_ z(Hy*s=abwvVGO5u_y&1%F^|Vm;Mr4Y6a->kd4^wl!#GQ)S>CU%+rdl|UU2j^d@hF6 z;a->Bv5C%9-UuH!Dg-T;2BpsP53@8^RdA%W96pO^w30-I6eUXe#&7KB54)Z|GI*{i zT)jFF8n-47MG z0Z*rE3^O=06NW@+1)Lba*{4g?&xp*AQ_J2+)(z4(!g4~3nK1BNt6%(NHN$@-A*`FwBW zD~G}(uzz+2f^nG~#R;2E1V@-3=0H+W8gVqCN_1`++m+V=A=O8Mfa|-#UNbaWYPp6c z3qQJj-*9b8G1XYkRGFOyJHVOmtfk;gB!Hi4uMNXwPc=&pzwf?h43>S=&*f2Gu~6Sz zlh({FcN5Q}Oz_;H4f-kadk2Dj3YIRKZ4tPBUAU%{&`s5r^b_Z1b8%l^JZb=cD&lw! zg}h}~<4;Hcx3c+^6Naby*W%q&1^Z@*roUBgt zit=E;N&{D%FqN8(NzHfRXpwJ%r@-M74O|<@(#|eJq75FU{5dtlAug!l+?`3jOqlAI zX@hkrtgl?!yZ*-WPHvdE?em8ebfQ?=T!dLM+f&}yK&jE>>I@oDIDNV9B@HOmR0&}b z!4m{XPmR}WMH{VfK8C&E`ZgnmP~cZQE7Sm+;X06s15gUMK*=t+1xb?8`MwWP&Q|}y z{^a?_dHNGsPAkVA2j_RYH@k@yD*>S3s+g&YTE$r`eAqL(-@#cWPz&N0Zl_wUY-IQ6rxVPy4v6;a`PC_HU;xY@7i9KLEg@BV(PW3w}2S_MQtsY|9Qm z5I~>&Zxbk7?%MJ%WBfRP5TTg@wn7y-N%UX~k%+EXh)W zv50#8I)0huujyW`3=eB7US6dv4!u4zz1bp$z$S54dhG$SMzbkNWO`%O3Ov5h=)F4y zjf<4t_+G96QY>|2)0`DvLr_kLigGU}eH6Hj+1BFwVlr>nBevr1P)SeDGJsf1ICc95 z9rN)*q$#yP4qN~Q`KT0IHTIxoIJ2IMUTNq$vDraurfZWtl>FjtRzKJDL$F`x=yRX6tr+Vje> zvFvY^ehsc7Vg{S@6W@2?ZgViakujvG{JEW|XiR#W%3kP0aM-5AtEP$p45A@se|wkp z@eS=;<#|WBM!pgy{Zs8{W7;ymx*=QcxOm}bOs2-lm<;0Prf>Ldgk&f98R4Comh*7o z8%dezros|DsLbALq&{o{r~CSi4bgBPkiolP?ax^8E=+Pnx zdfrnWCYv{$Mc>4lKA&&P4Zv zY^l%9@e#WNMrs7Ab(()hEngDxBiz*Ib5T%w#S&mo= z1fRs+x=~Id{CU1>Z0VU3pgzLaPXLb0!`+42pX9#*)Fxa?Vrf#e(bh{PmWZ)S+< zyZPG^e8mWPZ71T8X0Ty$DT+6Ax9bKw^DNEK6%W`X**Vmfmi*~VDY9u-LxAvPf13Qe zsHR4Wd&AxSd~=0nNY!N^|LPUeWODO(I3Wg7pQmx0`i>@dl$)C74QG`@ZKg%)p3vh6mUud2GGfUKN((gGn>&1^JXh9VKXCT5*p$P|i*?C<{Z*%CC{Hp`Zcj@xgAk-4ibIN!+{Acv)K5^rxjFLdA?@$qQ%tOru+vYTa8byO{wtabBTQ;vhvjFb zz=?Js2GqpcUEn3nvOt3odyjew7u)WG%%3xiItSy7W-ZWO?oj!8&XI>L9HY4hj z94JKNQ7mbfs_3Ir8Q2-Ja;Q%jgU!P+C1x5x>x7Wgtw`|<>xG+7Ct0b3~dE- zC6F-k|2T8ECV#S{DESw9EKALJS9zkS4}?`{fw6^&^JX?e`yq{(3{x-xR0D$Q{Yk)D za=HVrG|Us)C~1%3R8C{yEZW^urRi~uKs03BG5oK8UNV!n79w5ITr+B><9*%9+Lb;{ zk(F_iif`|NPa%;l&gLB+x}#U4P`lDmh~w&jgy{Vlz^q+^@mzN6TkqM)@j4-{?N4VI@ z^W3&(s^MTzE4x5`A`=nh8 z4iQ3U`#ucqtcH*p@!m=D_YwA(0A%U-9P|>bY7)q~vv365wduqwz70;q0v%YP&r^MlBZdG_u z#^Lm0MeOVU73VBe5H?6NX(b&-0CF7~m3MaPliQlKzkP8<5$gPiJjezkg>+9 zGM#JqSnK*v&`&%PYlcOwMdrj}B%=FxL3TH|=bOYVg=;_((z_WILhC)M;20wP%bgA;Y#=6CYvxbSFiJo#3yxBVZLy#Zw^eZ{Ndfpz-URemM_{` zDH?lc+7-kM8h#`R-jS(6!7O~U*w}YSp9JmcvhyyVbVaxHATg`b(FL%J4Y%UpiG49GWME^_Z-u<`iP=bMjU# zLy?$^SiaIFVw2Eimr-YMAkG@YHSB$n(P5wMqnK%1`V6oX!UP$N9^9*SR9UY@6BDLC<6(njPG8lP~xOh>_J@MLM zK++^6&pte{TkhK4#tK^fb(8`MFvK9lg4dYSxQm+t*Tf$psz9!6LIk)82K~XoI2&1r z#~X%5pDL4>(-v&rG{5a?zHE$`J2kevkTShUA73%A5yXWe`{d9Q?^;rJ6G^P~ABdSx zS>*cu2@1z|8n&ao$ggh7SsnJNf1*?4wch0|oH0mg91_#+U%lfr)BgX|rXyR5t)3%n zklBRXG1QSeM|Eac+%!4{y!}j{c*~ZJplE;LEV%7d<45`~cCt7&RYMjN?MnjW5@9NU z^;9PTR>3W>EwSDU3YQ1Ls%MZ zdO`ZVYda+mHf9P33ah{iw%7(Z%B3iaF!94H`vn&I&-)Vm-OZlql;>}yJB!7F4zE!W z7jL(&g}C%KW@C^!J6&PYzuHafHQVUR+XhU?hQ@A|c)FTkdTL(*)oe+~IDz?nczwko z@7PajJVlT*>1+>);zLdb8yw%F4&z!{78ipmF&jM6gxT2wkF`Posqp*U?FmecuxTvH zPZLHdAvx3LhR6y!A)}5fS>G@cCnzSpAY*QA5;U|o;04it^x$Xa1#lRnpT9bXt87! zDc*V_GadXEWjXWCMRbYUid>(Zu3_Dt7JK1jDo*Fn5hk*_JeUmtmX!H=?x|A`&8Dk93CTUZXhCW-ZqIV~q4 zw=*Ptsi|gFwg<0Y`168P#KdrZ5g{6Ij%5YW9i);eD~tS=v0fZeqgkku`tW-rGe8D< zem9PO)xnt_Dw$dJL1>Yd-9!6xWX=8jcVS@|N1Z!;+}z=C{7~<_S)!_U-&*o(euN0K_h+7j*#J?d< zMt((VY$vPEB%ZQ+Y6E?LL%CneyNzn1GUuQQDj=8ccAog#p+pEvurRKrPaR+WzENe6 z>n`#*5?Qlh_N-fSkoDnToAr+gx1C`z$tIks<+c$fj{CRY6rKtouW!c{#Xh^ll*IZP zf25`4<$lItUoQKz8V36@jq)aC;$`c?8UYDUm}`8YuO@`oma!BQH!LV7N%Z#u{Am)z z-Y(p11uc*&ALxK1?;GaBAU$ndDEv#th^{g?*j{P6tUQABPygk`X*jw*3st8V_(e);YCBUxE*M(>chsHo5>@?fdQllu~JBGTwZhyQgAlQq4fOFh5qCs0=@_Sf|m zphk9{E-r}z6mrRIXXxZv4)hY2fbF^dZb4)6T_S&G&YYc1t0`-#Gl)H;@F@nDB``qi zhpRv|u`kzPQ=6pu6+jorq6cdz`(0w(IaAs@HE`0f?@b-+vL^j}q>f>O`MW?vKc*Xu@*JDvOQ0MZ znI}<`I=4UU^u(0XB~Z%)BvE|XEgyPGewpvFXMbVz#4MQS-8T@*X?z0knzMviSVUd0pd?Bz08q<>EMT$pV#wgE;c=YU5u@zqNghF<1W4P zkE00m891h9zP{`9EExA=@2eh-EV%K0qO!PT8TYV%Y%@|dd7tbU?H|ewl~e3?VUd2wgp>EfHb3SKCbXdxFZ+zh|MSY&2qc3Y;Pj zL(B{#-I82WCo##wzdNT*RG-VsRc{7h`legNBf7)3msL5nFtY-`2eILp{G)A34XYH1 z=xPpQIJYjUn#l>5d=IcKoCUUhOCsEROasV%`+yRo*`a%0shu%RhDF(aGh*v1;I3f2 zfd77l&k9oGw#6!?89%n{M&{dB-(n7iizKg8I&Xp?WwY--NGxT@a7#?rQNTi12Q*MH zS@}uNm*~c40e@5SHoKN_<&-p$cKaTZa)$uXd!+KJx;p_w_GNtrZ9&rv%JAwuopXW$ zr8F8Rn(L1ih|Qn(H!mRDt|ExAD*(4J5uxiCtJZY>N#Uu*R}Boo^(Ij3f%Y)WJdeFR$0wAW0^iO|kJxOX<)`-t};noo(KjeuI_ zyvjFR>{thP%NE*w`NoDAU$L4`_k5xQ!ah{m#6wuluJ%M3=YwL%Mn4r-x7@FS|~f} zB<&;5AUn&FcOV7U?1NbonxqR$GJXYYMt6232p_S41{Xu2;Ve)QiWmn;;=j03nws1; zRxxnk6S*0}1lR_YhQre=U$Rcvd#}4+l&v7Gf|vH-!zk&kZfHG02_Sh|Id{o%nu9UC zT={{bT@RO)g}%S1Tc0&a_G-QIdd7!WSIqVXwC?%FhPwG>o@dZq2(|2krZl=vP*%u| zO2f@i=fg%ct0<*>FghT?gxI4xAL;o?niGo}sBv!$eHNp2RPGc%_xr1#9+Tvhprl4x z$kCl?m9-lo7#)gmYb6zq&Cw>CmM&1Q3Q$82=!JS+W(t*3FHf948@ z=CR96f)nrWx0mTPnNghMkIF*^?~A#!dODlVjykUa8`+IGS-RB)j`w#qI>h`IZW*?( zoZkkTK9ONRGR`nv!v8=o%|^F1>^7 z6gta^_l7)$;@2xnfnFtO&-<%6k&o7DYcaw|MpkR17*LvPQx05{Cf*>I^{STE5}67f zlXU%Eu$9WKJIaHUyihJEI#R%PVX9eZdMttu;H>?XN=)M$5y z11;|uUj$DkSz=j)0URlF?w4v-kJU(bAMy(LsKi303%Z^V%6X5jU)R=SFUi_sFx#iz zmf=f^vE9iQZ3Fm6yCz4{rAm3`Qj&!rLO8%|^vs_R`POx_v}4e&;;h_DXnf&e%gVj> zmJx9MA|ue!>2?u6u|8^OPk#yDtSFqf0`hCNlm7py7t|@^+9L%pf?YwSnV4_7xD7XH z|F6W~`;EE$@P$Kvle-J`YOCBw+@j>IA}ra`Gbia|=z=UcZ)bJ6yOf_2v_qlh>@;P*by;jX*j zXPL#Ca{GJwf?7^9>1E0JM*u^7YWq=}6@j-(dzh`LYDV(M!=%!UH-MBL%sBH`F53Rf zbRu2f)tGf1S1z@sX>WMrWf0aH4^K;!g67pP5UDF2dB%ow24d z^*ZzYV3saxJOs{?9~l%9jDt)JCC}jLDwx@|P{XuEkXA*JREl&nonInYN4pHR_QfeO zG_h2$wOk#ec~wa4ytuhAB@bRXMHyTg3X`n)QiZf{`{xW!h@}D45&oZI6vm&V{hC?C z*_9xY7e)2cQP8Rf{feUzk=W}gJ3G;Fz`4lCqB>$hrM$S#{riIw*9_ME3_nfjHDS5s zI@GIaH5t-7Cn}y#``L<@_+JP;U328~W`7x?Czr^Cj<-xp84mq*$U8SkM5JxOAl?oS ze^}bIS|Qw_O4cR(Ppd};Y*IWtok%6F*z($gOc(9=G+8L)zR$6wUr6YNEG)B=)AmA) zMX+2c>1J78|B*$sLIi9aGlmZ{)OWW5j*=H7D9o(}ZLc>XDXlEVa6e_B(HL%dhB}7T zLJ%Ap&r^_o)%maGy4`neEkacmZ78`;hJLmKM4T&v^DEfz!e8+Svogm~%!j+e)3LT+ z`|R#O$j6OCNEezLMnpY_N4it*jk5m^Hmtd(3XRyWnvzgZ#E|b%UT{>LaXlKM$l+#6 z{@s%)kmzlU(jc4Vd_&Y%F8ns4_L+?5&O9lHyx-3&v*(Id!dfP`ye0zo$G_=`nNm3m z2z+EAQN1=gL{q?l4dtI(Z&xGdAN`&b__Uk!ni$xoGfX2OP5rqJrk)F$nv)CCeEhK6 z9M&-0#!e9tto8Sq1ZR8KwsrRdv6cedY}m6At906#*-Vd+Ddc-4>e`TDglRrmovYS2 z6Zz@$g>`JdhpmL5w`cF4FE)BV!W}63&9|u!ZI}OP5aG%ZnEaYzhQ7YdPA=l>%w(Y} zEo@~{&vJhI8A@_-o##X@_u)`SvV`DYjV9r7?v|$(u>_MQ+ueBxUJtQ}@)$tDM8iT6 z+v0uH2d~4mZ}hdPOGI3Rg0^yEu=L^G-CV#gF%u1hx|)pAp1^3E7r5sIYa?^SiYM{W zxG{_<%Dd7?1a_lUjgzW-B%cv~`gu z;Mk%63nfdJKrmo}N#yoCFPVf};hS=nH=iMy?Z63{eV@p8^d>Djk4G2%;alf^O80Ws zvNQvkW}f1w7eALHkv-s(Pe{ojqpA&w^~$29YFjwc+6A%Yl78FnHZ_^kZQ~pLw`oF4 z5(sSHY4mNJU#JcU4G%IU8TxCRHUXE2DX;N+5OZYNAjjdYbLZRcXu8M^OW?S{Hd;YG z!Ec4}?}W|Cxi530Yxta|aekX-njD?LL69c8XTqqRIO~K!wMR|_WyO8~M^C(E0HMNq z>6X_s-fXKq{IKxElZ7DlNe(cr z+{k3ch`E{&dL?Zp+l#yz_;B->(&HL@X_{~}0M_Ph{7A@puXT|(a{Yg&W+YY54HE>9 zBeo3+dG-;Trf(gieQId6K_iIlPu<`)kH@wgwZoGH3Kg_3C+e zE?0+W`E-idnWe5fLIhbOR-&mY_Nt_{@xAkUFKU5!&?~a98a-IUVmInwX9>=tVF#mv zorwjtI8&xN=k>;H@vQTLMshT|xBios;OQ3|3Jyr+1Q=%@+#!J zci!BcT3^PE9 zMOr5evB_~X+<5=JGSK@bO$!OKSRZx%ka z?&sZeEO{B{uL9Mz*YxTpbg&gF<`bNLHfktMN*w5>ScPva8Ub!Xi+?O8u;EhS<^Nuz z;w7jvRKTV7<{jYgu#7D+VecXZHGre|f<+%|##A#PMfDy9U6I)v7Qt|0k0L*Ay$^TG z6|nW&Tt*6DeqsF|n(nM2*xKK|`S(IBi7L&#kWqvwxD-n{H^)wu)xU0^?-{}IWQ|I> zvoGt{rdn3qV}4bQeN$4}Xo(h#M^|Gd&;wYi6eXiC9oS+<`k0)gcjUUtulA5vYFz`D zCbLQM^1qgW&z(oZh@-f~&8Bx9qarC;B}|FLP?Y~dvf zkCBK}x7D3pb3RsDgd*9z_s#hC>2oq+dI(!u)i|H+;0{q2D}%xPRvOlh;Uc*>SO_Pz zc6RY}e=f)Th5JUZPwEDBT2ePx;)_`Oq)gYDaIa``APz<0kY)MVfL2Tq_7&isQ-l7H zax7B_o!sWKxu;Vw=@e;T*u2oD3+4au!l(AIlYit-tV;m@v$diJ|knh+`OUV)J@-+HA9R zES4?n=lzW9-N1yL=z~Q@r;obYo72$W?|N1=H~2HZib*pR$OG7KCr>I%WrQyWh?2rX z?;igAhjZJ0yY*noG9+C9i8x;Z8ei~ek@wM1gi{z#q4HyV4ijq8rwjR=-NVng7-h}R zp%T+V+IsAC+i<4j!Q}eMW!msIe4$Zs}1BTyzU|LNfQdIHe)1 ztQ=o_tT8gDPD3cX=+I^bwGl;&q}q(Km@=S*S}g==O)tewAjWehyW$pe^FfFAgRFfM z!V__ay1HGlj)+capQw_~sF#*1vvLFv4K0r5+W5xVfI8fc$$PWW=rR9B5d0R}=~&7J z=2r*`+vAKXR|h!4W!kr8ZM7aFHR}SLdUJ}(t&Z>(5aGZoRr$iv)=D)(&mgSvafbmG zo%abtPAtpuZH53&>rC~MhUjlBe$G{Ke1mFI&wP=3A(ROKUC<8KV=CQOR>4ylrK|NP zjKHnoJ$~mT<#DQM!QOIM`%U3A-4GBIZI06)8<$JbhH)be-}`Q2aa9dcB7kCICHJIs z6_uV;;qf*8qF;j=Z%e>6ZJM8GVbgF_;ThtC{2S2=ybVkrC{MJ5VU9Q6MkgR?7ELus zb3uF9Ta_$_iVTN`X-R1Cj-|%siAl18h)Y#-qnhW7&FNO8`17Dola7ZRE?)A*ud9Rx z`~@$^+`|MlSl13g2)i}2V*yE<1J+^WCj(=3KInZHmXoHwz$r!fBZHW`YGLW{F2_o}hhxis2$>oudp47~QRjJ1`1iIIL)tNb~q#ZXy;EyW;aX?5RdQ>|pC!Jfd> z#beyPu?>TvV0}SbqChxEPh}?yiPUE-c3~$upz-hqWG1dT*`VojoVAaS{JZg3xp6$5 z9(I6hFi|#hkY8PvxTdhC{ z*(y;1NiC*!hvGheFT$)^vqtLcAv@z0a@X6{)w9sJ{jW&Im)HQ1ftE_}hFLID`w4pU z6HcQ`y(vizw{Hk$X1fe@dN{iuZa-a8&2bS4V9YaRSZU5(3P?9j&W}M+2HGD?jb`RK zHWR)ykQwy*Qfq$km|-m!Qlpk@JM#zJ-<0vl*axngR|U{LbM&_j#{)=~mvf%vU2%Fk zxJ{{v5xcdsw)zF_I+0sWtd-{G+m91T>$12i8# zVx8Pm8?5>2!6*`wx9KNN&4YO$I}6`??i#c}tL#WDRytQf(KRH*PY2j)Mdl0CE$wL8 z75w(2p}zLwh0M+hMr+vN(Y!>Bkz5Wjjek*8%Mk0`j3^+q=VNw)beZ%o##%Rtu=(eA zjcUPT>F}xX?iJhglR@$G8pGZVw{&3t@j)O>$%{N8yC~+Gygia|euf1mW9Fd#)x=Qz zjva3(n!N6JZI=A}M;FcNAAf%j#*XV#`w>cOso5tXi9MJYx-fk{e*f4qvMb9JM|z#N zqe9|?puNsH;cxw#WN|?89!rn#OrR-L_!-yzVg~r&cW<*DB7Qc@lf^w}VUCk*J}KP- z4$2Uc_&uqxj$SvexkeKe<5nFPJe-L5eKB&P_`a!L-sf={_RK!Si&FV04Vlh1^nLhK zZ)a)@#6$%-Q(5o(iw+G@G4@QTTTjbOKui~x8uxPZ;5Pv%zhd}zDjJu)u)Hi4ht_O~ zfpwZXKeoWLX8aRb@~+xT40Bepq=lcOZJTh|Kb_Fzj;qJHNOEVdz`H7~&m-TpKawnC z1v*TmFB+WG@keIf&?2*`l5caAePpSG5Jd~MnC<9U(YwkWhyFhax3kn54twSF>+)qu zk^JTx_U@q0BS1%Ag)A5J2o$883o=zzmfa#nfYfK_p|t9$aKR+XYatin5}o;i5+{^m ziZ%y9cTK)XHMCebiL&?P<9p(_xXiJNROqEh>i*48l_i4(Io>=WM()dDAl0Q;FON%o zvn+?`sh^Kv2Qe@XNYj^~*_JOC(a1-p&yZB`0ZY<9LaqD9ojq z6!G}^MYUgMq8u#dOuy!I5*c6sixyO?$E>D1m-8>z*BMTO^k=%mct^eS0f?|(&R{ff zeXf!7Raq-5*jGz6J3l5uQZm24Kyko2e?1KQaAAz8w`Ss_5T9+|$A(dlIbuQ`bW?4D zq=C{^W$|z;>yTi;^nSy{#z^?`)1LG&L~AeY>DE>8bzY5PAnwRH0u2Rk=^3Sp5|!}M zLp&bRfH^R=Td%is)?L`6;OIv?yI~@P4_1|cGLusNq=WaYGDdS(`+I3Ag(s2{aN{?DMdWg!G9V-WroM5arVi4nzIqXvOI8u+!jZa1nxWyPpM z^ptIeWjd@TxYMcO#_cIgIwx=4ji$8?ge{-JJ9+XbNu-h~qy96++(~_R;XL`J+|Y~< z+Q_-~jrz%qFsWff-um6wng1f_gd&@McxsKb4fTRCM;~~aRSO@&K5JOlgdUr}MNN&q zRd_q#4D(~nr@4NVb%6+u#cT_FJ;F_Z@g5dGeV@Td!!y%xhIV|2F~%YwT!>j4LZNx+ zg*^W+{E)_-Z5UN>c{D{eWJ3%*@MzqJG!=>W{mm?jq$@{s>sH$|h`&ABBm@Y?WHKLH$o>zjZ zj@#>ZTbNeb4~M3>lx*Sdt&)`mYm>UV0`{pn7Lp5_uZ^1UT!@tz-qo`MiN0k; z9orIy-249$?Pz@SL(@3=k~|Fqpv(`#p&u#s%h~|YUlh#hJ*RoT;O0_FwJgOa{w&e= z!3HS_qa*$bONgA4cQm_Dip9d*Ai3RJ%NB7Fqcps_st_L$LhvaDyHM_WE|q|^?FCk@ zRfLa2!!=)a4)z^t4emFzHi*XoGify%herFX?6OXML-pF}j(u0RE;+C&S@8Y!3n4gs zRW$NWVOSItFdLJH$-DcrbMx@c1y8XmJaia7-qW@yvE=AN*Dp{&nSBl+Dr2EY4~a&`mxUmYTYWTMQ_|7-R;kMul#?zWO92$=1Kz4m)4U zZd!JCG%&#it@Qp=J=%>AbpxDpKYjzn5RLdqx`NYz7ubJVPswfhmJg90gd+13Xz(oi zKAMuWW6{gm;Ch?vssX0%aOd}0*)2YE$+m4WoX+r&y`#JDFCA`; zs{aGGEqm<{?~eKOYm?5HR?R^TQHy5rBer+B*a~U0FvRE2l%RRH7ug_hb)nPxR#BPLYK}?`{Rx2VTK)Oyg5CHhNEUM z`|(Ab31`KEUou?9UR@qH^sY0fi*_+oxJOl@2wdbVRR&|enh?pt)ltGRUr)$T4+FLA zKl)dlcj5uWKoKGd2kw*Y3UG6EgzU2NbEZriATGOJE`un2XhLs=hLy{5xPmunY@ zyV!}#+av@x0|2D|p_3@^I}Hk4He6Vx%_G(pHC4*YMZ7B)3>NTb)){lI`SNj~EVRP! zN76Db!NUUS6#X#!s4104F`(o$gVHp$?SV6vs^xU_qSWAx0|q-7Ns` zIfWW&nmuF|;~dXvx>sULaI9c$u4NqWV4746KP{bnZM#Nhup5bYf|{TXm@R}kPd-qe zJ!>(Luu>MWIz7@8(`Rw7&!1Yb_L#xmF(kRckMH_7JH8ja8?a>qvx!)LT-IUieRcX> zBHA%`)z)#vdf{?kdzdyx}*e|vkYTycvYaY&s@oowhAtODV|vY?K8%3 z?(4FmA}EU2ViT?~zd*E49f!7i*q70tHQDR00I$5Pjxum_Cx)b0NHH2;j4pJ_dZ*+h zMo#rdofGWj4p`AAGQ}spCYwwCoEG#(;4(M)7hP8}M@$y#M^I1u|5|rO?TY&ieGX$< zJnX+2&-eBXT2TtRp@1RErpu~&r9ZV|Ijz~Dq)6Xg)hcbLmIdX3NM6-QYHRi?ps(dr zDme!ZSMtegrmnc?0O>{AxMyUQ_ZZ%z0v-_O!o^tS$qYoyf)!4YOtp z62IKe)-q5mWYfYyNw)5&$&2d7;@tjj^kPR>AvkCyV>gT{h!iSfEbi_wmZ$Tjp zQ=G!xT?Q;ZKcA>S?;y&D@nW>B^iPVjVcsPz0P{>W_%fwY%YxXD3;?wV9tCzyD!A_O z8dSp?6H8AOwysLml+I+w1iIF?f*n7ffC65A~DAub1rm8saF)0@A@2n4u55`Br5yIg4|-rWz1)K~}ATuY@p z+i*aL0~jAH(lxrYrQ(zi!afFG1$o>w-z6qgS19gas|Dc*eQ*D?*e&ihPp#Dg0Qt3O z^DTnU9T#d?XADZ@Is64`l>35lswWPCR`VW7coN`MY5>mGfs4{KCX7lAAA|QgA{_g4=ul5Yqbj5JaPmEwS zTx^0>fe@gFO6C&v36OurB8H|fIFib zmO*I448|-THOAVt^x(Qv$X~)BmV^}biYl>J6SOk+DOuKIz-Db2NOnr&`4wuyrwpP% z!zint{_0#Y=w)1kyL!zIX*a=Ik8%9L5Y{7Qit`Cle+8xq)^sU)-T_i`QA%|Q{+YB4 zh&;l8RVYA2%Z1*HGC5y^RavQ z100A0A2k^t5eAw@ZX2-1I18(6R-JdK``_1XE5u`v{S(2c@(rS)CxTAH)~;2pB_O$W zePKk-;4+Z*lOy`9)gUD7oK3sOoXK5L<+!8{0O1RT#l8MSS)qXgd!W_Z^4)9uf7M%|7YKj9wYCi>XDLv)Y!1;PH(?HMkAEG2 zB*k?1zQGm%UBS#W#c|9OmFv8f1%;WqoDi)JknHWi4L-me0SVym!X{lhxuSZm%m>u7 z!sh3Tm6oiQZ0yN2Z6cN>W)kzMhwDnLZmn3+Q_%NZw7(+L~Xf1CXZtEp6eB1c}+rU^G)q z52(iM;;jov94MCAWby~Cyd58pmDeHdBGXbJCkE&UvpP$t97Lt8T# za8tvhi)bkHXjIV{p56ShAcV~w(CmfLY+&)V5?h$Hx5P{$Bc`*`<84;h4+cS<9gM`&p*M@x;sM)@DoM& zFvZYO43eHZ8no|F0V=}!*Mw`uyS~(KV6$fcaQQqk&)$jr3sA!w`Rr-zK~3kg5TJ=%$KC(@W zvV?Kh%RL$h%y8NU^!`Qzl^BKvc{iY`(LXE~43^=hdm#KN5It`)fGH0J%dX0toSi9N&zi9|>VC z-+n=3QbpBYaK^Y|F7rN?q$Z zgjEUzVWvw2(~<6kjQnoCbl}jNFw5;9qm;;nEfu8P3i5k7MiB1L1W$(2-J|aD$x8eEfE0Mk50J*h)zeM@GFMCn=Q0g{V=D0SEx{iSOd)6Lx`j36FgDlDr=eh3=r5y z_w5s~IJEcYgYykp@|a~&N!o_=m>gl;e#W@&zm!)0M{IzbXyb<~1!&eWw2&%UsuV`P z+no<(@{&Rh3cnagHie()qhSuzsBS*oTFV)ijBYPKLO3sE((zl2fCI7S4l6;^Uwmi7 zyK?iXR%RC@3Q5EaS7X7w<(vJ;qOR)!Ci0TR%eh|vtC&Lun7hPY8nddDGoCa3Z+Zk( z{*wQ~PBa1lo1UniZi}h?(U)05$B_wf&ZV=)-;YNSaqeREu^fo7az2iPF|#C5!8&gl zt@O8s7bv=Dbkzx z1Z&IwHrhWZEWK+J^o)B>C2u#&o?F!|It5_MJApr~u2R z29B}(qD*-TIVajM$F7j^&t?(8sw$DF`ICniWcIH2s0j)pHolv)gonqv(NlH!&JEP% z!NXu%>_UjU;nxi}Ni;qHUacOLuTjXqAk@7m%1iOq1YvYv8pJIbthH?+5yvwCaIn11 z@qsD%cC+F3P z+9eb1N3{l)9v1hJcY#l=XeYx14y4Y59t5u9nx{WR0r$(f#wlhkLN!+8TMxE=I-tC@ z-ic7bYI@C1Pt~n0WsbU!z??+|+|(+mi)i`q1Rt)qF8-B5Jwu?ix-Lb=Sd9bToOGOc zW?F{!$U8jX&z~6#bXET+j^8Jk56p=o71;6D%?mkL!5;|-RA3HGGYWhif`B{?(6a|d zu@AL(gc5TW%WTd^9}s7B!SV!Z*%$R{1!%4m%?~apmEG9XN<^sSvXoN=q}o6oV)MaG zpgMGQQ66?D=^!9nfcI!cBvj)6<6oeF3tk;Tr8c-2gCzPJjn|w8zQS|TZIaJm&(ec1O0~Dg_BirCy^I8{f#tpc$_l9S%6Jj^iVke; zIj&$dXlauFX0S$??wBm{t1J#tj~K2v`iU`T$WDhrc~WGha6#eaWKHLN28R75_X*I6 zp})oTOMf)mHXt9;$Im$&vmHloHV0C%oBzSxg~DnfPzA`9TJeu;#2sj@tiZvo1|D)M zJ`C12v}}8??la3^)Mq6vdRFdJ?qJ4j%lY2I?5oC|v0jN`d zCf~sg-=gw(QpSD+vjwVmN8BCaAFA<(k0jm5L4n@RyuOjO1~vp8d6}h{k>+4M@9A1K zpTkSaK`&rw1t0~hz>No&pX;uRGAB=GAJtV0CU)z-w9nCGiWP+xuY(j#7U(X<89A%6 zP+^ZiZ~3uqf}TL$yXUMoVTC>Wc^T@7SX*`Rp|fg9xmef35kS0gY*Yts(0-baaQ5Aj z(}^OoB7z6^QxAJ!6p9`(buRCO`#|i}j<`v#O~>oo_cK@!`^A-4ur)w7mApabglniV zdvL4T2Nc?-=WuMW>0*)c1w$J^8pfH_ZUMbW?y3z6pFGco{5Jp?5Uq>GHEw>e)Urz( z$FsgOij&o}T(A!^=ij-IStKn&DGv?Mx)_rT?|=ADrAm~=$Rm$!SP|v7yHzcYU#rcG zLfoqS^^ol*87APB9b3WX+C$buMO0$4apIhs@+X?dZ5*ss~~CUxEf z3A!Br*r^SPlT8S)TE2F{i~1VpQec?eiEIZEVrCSEP-egFwZq)>d_o7=*XSewEwhFc z=nsqWgh&_SQ+FcujDy}J1CmHa`@ldYP0<4V!zm?|^qt$kjUfP|@bH!#%>4qR&jQjG zf}HqPM5$xHD30l0tCL>BM$~9pQ?BU$H^ZuES_*+iT5&%k*PRWMMqf^}ZTa<5K^IQc ze|Z9%9y2Lbt8nw=;rM((2??7d+^P&Wddge}rI~@i!K6MBzdj90$&+As6R#V$*T(;d zIwC){RY7Ebu>wDZ3RJ7Ybz3taseO|9mO;^$hJm(96{Ql6%;l&h#JuTxLQurbK;!XC zw%j;nJrU8e>tw>1WrJMrrJUJH+q_Tk<&+uLXn&U|ihV`Vve%|X&Oqm_m0~TpVz6{j zWOVE;IT%#jHoU4JUs$2@COA%ehQg9q>%PQJx@Qv(^RP#nL2Ke#Uxx9VnOljg(0fP_Tl-F5q3A7n*rl$%jPpUO8+1WP z1msDUuTd3xpf9e-_G8B8QX_mi7n>wV`jHuKOy!r zaKR^kLP`8bx*4`o7rk-3$&iw+2%)&~;>>=khOn<`DBvey{GQ=MKl&phJxdm`9OfoW zPugu<8SDcn6G4*=DKih)SHk!54aT2H46vkEQ+SVNEI)fA|hF%H=*psiIKn ze|-Pqbw;Y{f)!If0+lM_bg9#AtF*W{FEb5>4@7zY|Ff@S-gK1^3BDU43kYYpe^MQ! z1&Dyp;K`w7H$kg9AD_bHS+-NJ4`;FKEf=c@GKvnRZQ8cQ)o*lnSoOUcEe-tO9r2YZ zy?#W6T*S{Efgv@~uqUlBN<{}}Tqjt%t7f4ztx{a5D1xnAY`NhqVH*|$b~E@bivXJ_ zLm#Gv7}h%0_xU1>E685=(%FX|O|as3*kA!?H7N(zlLpTT^G+T$k{hxr(?{ObzhK)e zVC;j{kKMu@pWLgz!90IDU#3e|gRgm$THX{3|lRkFXgD1Cy)?@h^U$MF7znp6T{&iM!yB9+mDz@#XrHf1{53Wzs?JOQAoIJ(3n>k?;w%A!Qya3tf>-~}D&^W@*yc#E>5|INk%nBDocVCE;$pTv(ntawEb*8M$S2%Jrn@#X{#cvy~OLc!%-4`L43RDkCC2L!)7(>Fhw&XFFwn&cnc=LTUQ#qp5b`D)8 zM|CaERUDnsOOuco%V2}`G`yP0?+}2<8wpr_M&jnbaUNpTKyn!KU@1cZ8l->!G;Bpj z#(#Z>xYf8zFTawZzZnT$DT{q>3i(VnB$kkccC6Uvyy?41enIsUKD}|yWcqk+Y$@VN z9-s~L#Y1`*HF?tK19*`i zFmf>v->j432*B7l~bu!@_1U_^~Kr+RxV)51r5`r0RvQ5w~N5F$N4C=_caXJsz z0T$v|%~Ko0_F3Tj2?{$kH3*S8u6O$zp)}BGhz(Tg-GliKhIA|43TfPTyW>q?%6&c# zo8;ruVt^{*2el|Ug^~zqo9`3X?}MlgnrqAdS-^qak{7wvVR zGM}ID5$>*n+J7o19BcGVntPZxkMMZz~P}0pTzGmWG z0^ln@0=z7fF9h`lJTzKa249=9(#2{$jAo(LUj%Y+8^T66GB)B?Qi|(fL3VZ*2R9*- zEjE}hJ6N>~oJTeD%VaFHR*QhI<=_m;Z;bGa2fsL0+<%{|rVZ3G03w&as>T3&22RFq zBUJK9h^A|qgvOUi?>~vBye23ko2Eic=S+VQNdgI{ed(XYyH9r1Jd7hFul09LW2bHm zc`<$4P=>;?H3TB#U$?%$-T+DdsHb(%%z{-KI%@*B=g1E#sALA761SfeTY?1(@LT#d zQ(nVcV+PTJE7>{XE=bHj^joH_c!uEl5roEJT6V%jy&VZcVd^C_5t*QFQ7;P9uB`__ zxX&ZjP|0_^hkxq($k}>;_BC7gE1gh1VZTD|?qZh2k*9rWaq`T;-GB7M1d@Az++;U_ ziz=t&M1y2ub$a&6$arrR!Q#>_4Gojo9egqtcGx%6xC6Z{PV1Y&QIYmD+c0kGY zD-Dls0}}OjFbt<=f9TYH#&@D0!+jw4-_+=eAMciF$hVU0cUln6da5o&-7pZa+*hf6 z?{6XL^{2b40tjhgtMZ?&xGeEW*J-`OrXTw(_}tgeWJ&?ivkxBdnZ>p6l->x&^<~_f zmMIwGEg1viBd$vi^s%9;6cj76KY1x&XtPR&+VjAzv0V(A@{xw8P+eNGxhl?)aX@UR zMVjvm6;_}pl0XK57#cwIY+82NyLRwF+d8+XnoYgKX)>{SYTN;{Ay#ksVXEk4YVEYQ z)3NyJW(BeeP#Nke@iR;+3h}5wsMkNaJ~Eg3p-iz}o@G z6FhJj#SEi)rvQdL_X*U3hTOj?T2jHG*%lnpqxNKw*5tvdhWBWEFCC)BJH#OmfUku* ziMBcQcDQ3}*tfF~y#iSTDs&UG6ALb1@%?_KB9RCX=C9hv2(hi02X6qU%G~d|K|LRG zCBUl|0Xh)FjCd0D+7u;~g})EZjLN|iDW z3F&TfYD2goiYk#~qs9kVTa2g7X&fUY6Tp${`t`p=w(Xvl{tVs@du*6wQ-;{=sGI9I zhFeb8e-OU{eOfhIFuSv=bBID3!6JAD0dF-9l+C28N|DE$g!PRC9z5X0zHkjT%}DN~ zZjP)5I6ca^OLwwm$k1ohyN(!K{K;@HofO5b7mV0<=;pJ|qWey5Q|S5DGhzAqqzO8- zEzX2RMP&&2cQBW-6f5TcTi(ua`~EdH6;3$k-#XeQ6mYtR+KS@YR&G%$PZ)^B;Yerm zrU%t02;mET=KuBoGBXf7QMC$&Amu17ty8Pzg8nv1!19pKB|PS7qSZ^n_t?mcxc6nZ zRd+~&7XJ-5DUU!qR@gtu4f*wkmpBO2_d)5;PK0oOi+0YJy?3|~ZrJ6TYW+ai_gDUg44Bk?-_&>aNn*bb$231)scuq5$(-p$2RCHQh4fRCd zEV>&fYWEyxYBbBC%yQq8ls(YeG2UCspt!cz8!bd}Iw5qaK(T?-ZfOPpuAO6-C%`j$ z34gTErw~h=`*!7l3{)Yn6z2hB4%GuGuXyKx;PGr|p|G@V)OFB8PKhkv@N&7A(<*CT zau8ldj&yA6cpL55K*5(oR*>mt2yo-C_l)J@22~+skN2451{-?ikQ%$Nke45`e&yRB zGgPBw9J#AG7@Rx{!z(j!RM*Wg-|l>QK%%gwNIrhzEogP_x=Ur$Mlg1yP~<28EJ$BZ zY-vX+)A84q995I3EM{?!6Il?)S0o{hc_qI=HFB%!W~g#fa$k0yU$-0B1nhdWU|Akv zRMwK?m~}ql4JL!?Z9|6<_8hWaH9p$hIO%clu)BOmF6BcMzj_IX!D9rhq1BU(Lcpdl zyA&9t1x!0*@*=tS1ro@a6yJj>nGf^vBTOhvu_jVt#51=4Ds~F3qik;F^0|&g1Y*L* zUjY(Sv>1R3s;1B{`Q`?!lYh6AqWHfhSaHL@jF}@U=(w1g!fT1RZm?Q ziV?2>`crqk7m&OIucjQ%G|Wkn!jXMD2!iB~%yrFlbE;1dAa6o$)4cx3^Fbm@a+b8l zRDLpRz5Fp+od`O{$sjq=;m1LAL24e{XInn?s6CZ4nO!o-`|N&M^*W3IO1c8GOZ!SG z7ipS8yEfE!>s@tAfU~u0Nv|E`fIEY0CctsLyqO`+yv4}yAh%TYm`elCdbrr-6#b6a|1>)2 za|xG1Z6~#M8jQ^POwDPCeTE)U>qy`S%@!9Lm7$OdY6%>}RX~he-DFzo1;5&hj1Ein zKfn3hTu|G}i;-<+Je~9)bu$MeOk&LX%80$q+1jm4F_%^z-~gHBNApCJgJPZMzO-mW z)kD+H4I9DX_7CE+oBkoZqANo4-sCE)P_qYcKS(yhRyK6w$bl9&A&u0V5tLKH?iO*d zd{B{@yPAYf?;%CnGvt&ZwHH0x%pK5pIj{Jq5#r7efQx0b%dhkmDA&M{1H+#IUToxb zRs@apsnBcgqv1tgfu)2krCCVqgB**wt`OQB#UnkR8HBqp`8<8EUYOgk<6z1cD4ZYBCV3s@gO;A+rea6EDbJsC5WmtDgg zzNX&_#?yem7PGfB_R#9c22TT@tjBo}&QOa2O&n#7UeV<#mFq)EGk|w_zUqo3>8YBga2X$#agFoxT0x#Qw7&}S?9{oUh)u2YjB*=inrtvc|3`oU!{BbUHE-!M zYbuZFBigc*&uhT%%}&&k%9`f!%QB~sBNMT~Kh z7=NBH7sv9yDB2LBaB~S#!mAg_D}s%S6eIr_R_yniTiXg-iIN+YKY%0o=+kRMUiDj( zSa~w{wzq^bK=AUe36*SkH9-oV}s#6(}y^CLe%-1Ie^H zyW0|rMMJLzmax`nzQi&Cgyl8oaG?12rH;nlVWa-8gS|Ft%Q_Mdk zPW^XNnK2Lrfp;J7&uVyWtLu*ff}9wK&PN@52cORBL#W5n6%YpjLA5sSY_r?KL5s*~HOB95o=|O@0QJ~9KA;H! z9Z8++=UxoL*l~!yTbD|i3Ix0zf}>mG7;i!IRuXIlMir8lD=|p%mcIr*7SY2@h%qqw z(x1R(Tujk@?hWDkd|xO>!O!xTJr`XsS7gm#F2z`=@eMaqftU$Ru6t(PVGeo!gpa-~ zeqK+Vorv1NZ4|*Z#AjCO!~xIi_oTuI!i=4_13_{gwCUeaL6BPqjUvr5Qw0yD-9=Rm zsrQ(BX1JXx;M~8?Al6AVg39k73drWsLj}b{yHwW8k`(HW(RF_0|JWEBZkSbviBL_; z94>&Gw6&;qwNQhEh)KcTUWk?>7ovocG%smK70WC4e+LEB76+o+8T zsKPX!>R$chdwdoo(3-HsB=2wE@2K#d8zdLuw+M`k31Gqp`c zeMp5>$MRw}l+IJ37U=_09OyJShph{Uw>s7RD?A6(RKwda3zOi{U&ON~gYq%Aekd&a~7j` z5(?AEHJjtF69d8>+M1HSPj-0DP}RoPt|NI)Z8-xY&UzEhy|KbMEW6usxQc$SjMb36 z&Ht~x5BUgh6O)aW!~!0fM_SSoBFTV}H1!8HV?Z_YBg^0J0i{4S``U@Lgue$m2*O-o z;o$(bMY7?3iG=BMbF8Z}CukX#=?3)PmUoDN@>u^`*HOF1yrSpB2?A{dH|YOtPFw8S z?4?g`JidKjTBy=K>1O;6S(KY%c%H(9Z%%_+1z;Hb0h~7ZJTuHSOiXYC{%~w4A0EiH zgvBRDf*#8!5aQ)eOhpy`u{kEtGGO%jOWiczC4_pC&q_>m4VIE!$`S9LP5=!7X4B4+ zR(}Ua&p`FA62RU!yo`pW0Dy3NBju4mw8XybDY2DF%YL zWpwVgK08>FO*gQPPLRJMY9j%?ATX zae#F3!IXa6Nfv+M0tWaLEW|MOhO6HtUsjYVxk)VF*ICvEW2@QSC!K6S zRzlIZCCSg|d{MsdRISBqzKVbN(z2hI*uL@2Tj*;b^qhi?EFVfu1OCb!B+yfe`TXHk z?>z|nrGCFmB*@(3ATvg9QAR@bw{GDGGE|Fj^e4@wo%(ElQ$A$DQyQUKCdE#2<{4_J zV-QM`l3!J(X}tnPAV&t@?(ajk^xqI@w%(j)IYwjPSIAqR-Sry0rz8&OBLzv|91o}P zUkx@$j(!E+eXLw;U327)>A44odjy!>k|CC@EJsOpiJ5kG3fI5}1&rCMT``gc$z;v% z9|irEDA~ncRJ^ut6uq&WS?BC4OF-B2YY*IjU%^|pv?HCB%qj(A4bebDcqZ6w#3ON% zRJU?V*4NzpvL7PnCv6z3&u+c{v`R5Mvjw zu*_f=%waiRt2#ZDzLdVB+u(Dlv4tp;lZ`*|iAckS_G6y!0UF5ncA`HdAb#T(x)^FJ z)RgSWNA^8`IB(AOvE&?uHuWxY*YpitLpGy6Nx~t^x=9iKj0yk)r0Xzw)tkmr{-^+t`>zp-2xaerHmy1SlP=k=zs<@09<|H5WJw`DCS$5U!^&fqhe21ht6nxB;6%CQBrDBN0sPfWPILj z!s8qU)6Q9`AMd%F5idPK3-RuNPh-kQf-0(q1PAxE|5^J)Fqz1)?ACuhLiR8m-FRm~ z4gGwH#=iJ@Zsw)|eSJyI{$jLVrJ+>L7X~}0hS4^uv^p&RVYSZ^^hf@s$aQRsvhU`T z2JJ3aLqfP^O=cHb>XAM^veg1xZBKpsv8uXxUo4EyW2-s3*MEMYK+B(+8FG9{>3nz- z#GiyZU$qsHgm8&60#i1TI%C4*LI`A)!NJ>bCndex4Y-)3SGTeED%GXxF+|mO3(|tb zPC0w{QwR*4ao@X?6|OgJ^WjgkBKjfmVEj;*2sD8K>A)^yGStHB44eX3nM`iM{uLhI z7x>xw(|Dyt_h7hfcAdJ34u_hbaZ}5Ba27<*%$zz76fGtM(;tNn1tVon~n!q6h-NxkE0R8t@|q8f`SgsF6lOYGPDJA0;@NL=1lm=dgJ+XQd`|H>>K>luNVW!SC7FNgnN>g@ggX zS*k5m9q1Uy(D&GgVo(dUJ*xsviNMvt*4+Op(~n7?^h! z+lJU4Y~RC^MlT*;>+X4Ka;f%cysNT@7Q!lnX$Rh(U4D?TMX{l-3BJpN9Dkrm&`@i( zg~t$X`vjvq|HYi@EixQSEQSX3OL0Z$BuU_vuk))J2VOG|2)^?j+M_$sHdGk<+BD*Z zEk|ajf{27opS-r#Bw(@KC`c<%AE*szJpXBlc>cWtixB}5<5B5yl3LJ0y?l?P9KJ%Y zSHc=Dvv$uOI^1Cg+eMPrB9a7nC1so(nZMH7PrY)j_l?S$FF}dh4O+J?RE%WU?0v00 znPX3SdHZwMcEapOQSPO#@kA5G_=Sg%{NENsAw#DVfKjiVM)1It(lj?q{0|s#AP{}7 zSaKOtOvkWvw{A<#~vL4+n9J#77`ZckN-D*RM04hIZ4snHo~+tecK$_8v6+ zawl=rgmr*LRYQj>u9U65p{<9*s0dcASB)a~)lteu4^l4V7DhK_j5FNdc5$YR2jWjb z-6~1*x--;2zpqXNfR?c1xhi}UX_}76Q&-R^V}tPF6MT^Rx|N|Sh-2{E;`fU-1D3Li zG$~!O#=4SIPX2^!9d8WMZiRYiS%ke5EjTi~c^Nbd1pBX?kKH0U!?j8045x|gLU6qS z?d&a3j{P&W_FClkdAL9dhZ_r07GE& zpGLhQRjVG_0<#ZHuR&~_F@AAR;3eF3!%RxLBI2G9j7uQ81DhRayxPY>d;FNFu3VCv zp5`6>>8bDq7f9(m<{6XKp|VQDrZ}hv4$~$jJH|mVvO*HqE|(YuVnw-tZRFih`i{ES zV+AG%sc?Qs_>^t!6QDHBML>(e5G!lhhU})>mNYsa^Z7? zTB=hpsX?0-&pT0N_8gt06u=KtSikjAT?+-YyH>I4_!(l=crFA7_cZKwjTVVXXw{7D zMuHDb!*Np=f={m!F0>#p-a~6T~`2+OPs!BJexz>o`J)+ajx;%cCxO6SW7*8 zI1B@lX5)QX7gu=BAfq+IAd zAC)O7Z4Cabg7CR*nU*bJEa#6eK@YXWHx9*gr&NmOAIc?iFYBf8JL-}DMms^NG(u~6 zs)=>D^`RZ#L_VOALB6O=s6+pFeye`f#AL$bd{_y7)e!xEQCKa<`V^~;8{Qu3c9V)i z>LVjHLN0?^h2y5mmfQyh@JDr8w$PoeKqH@e-`+8l$KS^!ccOnCo2+p?E-`wlwjXyPW9(X5& zZhNFLX3{Ek!|4BDL?SIB$JYoTO6;>R#rb`d)_~|=j9*rvU1Bf-bO@N=TDC~c34v~I zN;OWsv?&X3ct9WW4?z%C_wE&5A5hod5|K%UCSAa$);1|359rQ+E_WH%o%ldfE&B)g zTIwP`Cqbdud&RDv#R96`4;!16OH~#Si(`UPXVgzEgWpa$C~8K+(MuN+tw<{Qn)GfV zx{G1a^ehFXgA21NjMt#n{l+n*b2H3)97KA)2J#-CtfB?Oktq&sntivhPSptAu}a!U zgxmKc4Z{|u-!Y($BbRpI^mNMrbJtD{Q-DcgfaChS5~1CbV%y}C4Y-#{>mD_&vv`Pm z%fDYkE$|7*vQHmtvRBRho?YwvuPf}}-Tz9Ay#T=ec07!c1wEF}8ZL4z_D~6t_QVfC zvL1D+<}-Dfh!L@u_6G>XDW2r)ObH=#2Vd~g)b^pt7#;GRBa#M-T5fTmfR0rT7-QP7 zJdOPZDbKl3e{}nYGW5et#1=!~&E*=78-5*1pByrXf>jF2hsKPW0*p^Z2AXG;tGIi| z=XV+2LI}=V3dX#3ZlzBvn27b_9Zkf%x~h5Wmo0F`Y_OMva5WXw90t9x@RN(2>WE(X zQEq`@Ek^OlvfQwc_?+V+)efzvEUT4UJ}9KgHFaQyut+l#l;@z_z-&z0<^0>0Cj9|7 zdwO1~8@iIUowIZU`zHOSc&m2?!4B=8{h?Y+oG(*$pEs>h2?%;*b}?Gt29k$wj+M-$ zV)$RQlS2V)U#pn_8-mLs7aD~2pF-izc{7FxsJOzu(ey4pUp;zP_&duLqkhnP!-)Gj z`4r=ts*X+&hPv@{zx7$T)2H93&3zC!j^g|~2oKJMFKRW|YQz+G>kG`vI_J8j7iTZHEzxN z@N{cg{x{8D|NBqCWO^AdSm6Z{A!i`w!%Cb)u3oQEuwNp_C7>#?=hZ9iT|~6NE1o~c z+*pBdxZ46tyc_s1t|}AtHD1Tw@jYfzeLgyrAjtNhb%{I6Tz?9 zQL#f|ApDdjyjwpZ1bynnMHjz7y!IuBBMmM|{gxMY?n1hx+=1HTdbzQ@bjy2mXC#J3 zM0**qNjKRm`VI~zyTj1isH&=g#sOvfAT>Msc9^)k_zWOj9P{_51gf}3d`8b?kjBAa z9pxYiJJ}sSP~?l6k#spt1J4~CBAihDh~i){xEz*eA^3N=LcxLEGwYMQ7s(^`PDMFp_o}usV84_(xK%#;JAsJMN)AE5l#9mPoh3_e?R+2Q(ATy?#>g+_@<$o&J zoSa2>T(oPj1q&H>FN!7}m>@lo_|KZV0Ivu`sK8lGqI&F!NS^ZG_l>d!f!BhUl2f8LL)Q?@$w{dT-1cb?-)<`SknNqxG z2V(GtJyDv`0S!D8uQe{M6o&7%IU#YO6i^G-^x+!0l?aPK9%Pl2 zpNW`CDXR8S`}In{W#;IlI)YhQ?Ae|-ik;e+B+cr;Ao~lx5)I-RG%yXNUdbL7Q?X;CN>hSZQ9e9GGz-R$)w^4|6}IZs&c=^xRMvMOT*cVDnp| z)_cJ@VP14rSB-zgr8do+j4}%@s28i(V~=Z95|N?-V`H;dsp^T#E1!2OZqQrEBy=l8 zq72RWJ)~-dMC6u?rml-1X2O;c1Ilc#fac_XW{u;w_y7zpAD2D!bN|fE!r4lko{FK! zM8;)m8BSQg#hB}wPIV{Cry=VDxf92}1(&F@%ZVz6A8fb#Shk6hXVBQ>sc{3wexzlH znzRSYUZC{EMSw84$oef!C`0O8Cm^@72)gm{%Lk;CuHuU2NrBS)znX5Z(1mq}Q_sCRi_eXwB zcaUN{;FT|a1W>@Xz`a5w6si8}4xVyOp8VZOR~lm$36n;9uEM|ljqoL!6r&TF@u;6~ zlit&{8rO>$Cky25di&GE7G&6dIEwYpi9p@zMU0)8r-SLQ-qC*+E+`*OZz2W2>@Uz{ z;Y{H=wn4vVh&85u4sUjw1O%s66_Fn!>VIs>n;;KY#r`R<*}mGlJjX21mg_7^mRA05 zfMe}EzHC!#1#A|a_h1vt848;Bwu}rv3g!iT^sx9Fi$X+|fU`}Ip~Y^!k?nu4PP5Rt z+3f6PChg)UK}3)X2^|coZxG^@?VG~QUr%<|7n{+r%kBG|me&a$%YV$nRc_8O3Z9n> zV_?!{vrNkL?)7Aqqfupyh9>EwJ9IXjm?Dmb_ZfxE+z<>rGq#NOXQF#IH}@5;=#3

#)gkJ?d9WiH^gg)zhkeA4MI*2R$Ytfw8`;`7wOC^Tc-solB672rEUf^*Sw)k1*@${X?`ao)@0O#QXJlN1~Qwp!$*b zmbWQe!*`Nd#&ifGA;W?o|6aWp98F~f@N&@~Mr);@BiUYptacR#4W_04d7qfL!)3QnkbA3OT)s^mhIuFelzCssU$%w|Wyktbp zampZY-yTXCSgmZo2X0nW7^)tg>mpwnW{B5fB}n=P5Xsu_;1 zh0gPi!D)rvH@V^q^L24C$`p$URMg#ZaU)$X57$i|QyZwr0qyus-V-zF80WFb2zv2^6BSlDLdx$Io6y%}Ks znO+H#&irv2LNo-rO_X_{@$JPL_65{}W*A%K<|5Zc=_kn^TAPjXn+zNt4L!iFzb-A0 zl!3y6UQU=VmN|#IGmJM=U{|%Ei3w9+IvQVO3Oy%BsI7Kg5oCsfyb1jF6J9;^%;ghi z{c^Zg2iz*qecBQjYh^9>)WdE`{=OjYci(M4mqOn^==GLR8!VLOjmCP=$}}Fp`+ZDQwX<)OC0xh(BPsk9ieWub=jFO$_vJtF z_iUSfiJ5&o*X}SZrA97mPX#{<&czM$^HW{Jvd=7OvHNyI0eV{`;G$a8B+7)kQyA-X z6!J2K)hM46f{BJRAjL~e_OO}9M&UTZW&I_f``Db%e3zRv&H0>zI}poOsj}d8A>{0I%X%7|1}Gwu-A@Lqp;$@E08K39~?d+1uBeoY~iX*QOAGjO-0JV`3G`i z%i1IgI^KIK^Jq_rdy0BIEjgtKgM*{z^`izh9<7%^gUCT}+;la9nA`gDtvWFMU|uRc zlG#7;u-WP}1sI^yaj($Z@18&`Rc%PGW?dOiSxaSwqiG3eP+CFADC>&ykHmNZNE=jr zf=GeeS=8hEB4|UjvqZl?*@MX(_g=tMvTySt>NpN#*|Q!Y%I}(hg-cH*9sx%rkppb? zex2hi_XAzX*D#JIiv-!3@!9bEsko_XRYsT1iIG9cZa@W|4;dgo6*im#yqPw)=>U~b z3xH+3d6hRB)>9YfUdjWYEUYxXgj1+W?g+O(22%B{czJ?9D;a>|yP{*}qQnrG{bg*{jF*_Fd z&!cBQ*9Ti_LQGk=6&kZ_W~`g$XRHQz_;0K5xX4~s%_{d1g;&bGKxL^{g0_7BKy&T+a49+ z%+m2oV8~Z_T zy1Y0>6a9Hc$ZI%s5+cXMH!6JtEeoR4=sdTOdZE^A5cT6PG}X2#0k{ddo!l&cUuXc!-iUIk&l+V^**+Lu1U zl2)+Ns7lZMNC>W~T}V!Qcc)7$39mRJP^JSn#nr~1LdFGYQD!b z5e1nR4C?%-y-72`Q>P-YaWplXARxEMnmxAlJZ+6zJ{M^+p-VMZJCPoJo#j{WxtHw> z@=2@~MLvvEfndy2_Hm=Ti{B)l|1fRZV`A5s3Ic~Qe9g2g&s^b{XhtRDLV`==h0qEj zgz8t6uj+}{%xW{&_|FlS2Le!++=S|rov@bRMj;MZkKJ@UjOg;<%Z#63H8D!p;9rNi zrG?HJ!cViyA24eqF4~y(lF5sFw)l`H-^lO}0HzrEKddl@&Ai`MiY1ea2afV=D0!+P zU2MUv{qqY(7D3gqi13qE;5eHS;?B7Rnun&3o)W)e%B+A+oAI^5s>#OML48b+zJ4R0c`Rq38y%erAcJs`Eli6)j%Jk^tMZE&ox1QgNp`UTf^zY#6-+x zDaS-GqVYA-O}B$Rv;7z_M1`%^>==Cx#+nxQvy#dd=9CereScWC{%8Ht5fe`f4EPY0 zgB~>5c86euuBjC*7y>aRiUS>E02JDjqz(!H1uxw%;8-di`2EPWn*UR zRavuoq8HMNUZvi`5Lk2WCIKQ;l?|X3Zi5c~+8*T|9*jc0?n8@xF{HQ3q7e9gK-CMw zN<=ziB3BUi;y?kHOrOi6K+sc*d2Bm^Bi{)f1>iZmY3lcDsmHHhtzF3bD)$C`*MBLp*#bwCe7jI+kgkmHxnPBS>%cxA7_e>!75b72}rFJ&$k(6J3XiPo%n_mc( z*&bG%D^iAzy6{dfKL&u4HzS0(&`VC+42V=GMa*_;bNIX*<}3u1`ryA@kxlM%@nYhHsub@pYaWNxLIJl^Qm%fty`{RKw2>*)Vae zF7?TbmL>hosq(bPJIR>b>y^1bXg2LH=q4cj<)-N01*$4F(3QQ8Zr)|_>l-MbxsQCg z@|tlss?kOk;YiXt+td4xVT}%>a8HUTWxoB8VG>^q>x2#fUI(HKCi)hlkhwMQ8}=XD z!lH|=*)kjz{#evRSvCpV+%0`oDbrZd`&u%l;Og!OD?MTB1L**@?N~cxT1(=4J z^~2B9Hql)pxGQoj=zD-+v^=wRJyYM9Z+dFIfaa4D2Dj8tE8T0LOM6hzPU^mTfJFtb zR=0)}#YkT(J3WRHl_O!X(UZkPc}LkM!euiC3Ie{=TrT8$lEO49F4fHQ5-0s@v=ocA z#(SscE`4e?1#2+4$9w2US*k4J@w&E_T63$=htT8DHb%Aj0CAXY*)f`lhK3aX+jVAIReM$(>YUMbW|H?Qo z1sM9W-3W&qUQ5R+$l{5c{TldDGKaQd)zwWkEsCAyPK9xcJW)h`TE$aSP}3rE@6|oR z;nJJ}$6!Cepx%(IC;-3PzRSYtOCKle#$I|k%w9`~qV&LD9u$-StoKAoRtKLb8vual zOj_$?CtO>iafQ9~lashzCFHtj>uDw1=(O6RlhDFH7k}&X8OT4Sl%l%?tPtm23=CRY5~~*PZcU%Tj0f z)=^beuKPiOnEq|Cr8@hfqm?r4~;bCKY*sd14zoT68xEu&hwBnl=%DcnNf4VcbP%ZzJSWk?u&gKCKLEgG z0&XBJ_=qrWVKk;6lhucgSO9+(_+7KKBpHd&u(axXH-ecZaa`m=w3rV2^E1N}6hhy2 z(fm)%t+Rox+@=w20muEoO$n22){VyRdGN_gAA6>35Mq_ie^JXP>E;q4(*^9y+v`lF z0QsHHBbucc0|8AF;BQN5WNE{609hv&x`u|Rh5#t5j7I2B;>4&DpSu=qmCLE0SW@(4 zFApq{7T4Hivbg#{JZY10JnFC00dT)yYFIKdr?7zlgv`GI6hjWrrXEqP`lp%5;sG`1595nwuG z;(4~IlMMEB(BsGd_ahew&-#he!oPi|4lcfmbtNT0?N9`_80u%?E$ENC2EWvImG9(N z;>Q0_t`Zf9`}nM>UwejF+j>hD9gNDCJ%$I214@z6qr4Q3!FNWKBw!;SNO=}XXP0g6 zka;fYp4Q*MQzh>qN(m-KJ!B=tQFdg)2+ zBf=d}?!S(ZQ?Q#y6pHVk>0d!x?~3u0{8ob5Y40qhV#|^6mJw9oPF>s8cU(u8Or2rl6nYy<%)Le?rIHys%%? z_9O*to`MS#O3v9zo=F|Zls#O&A%mIv;ofi<8;N6;Xw`9KM)mf$$DYwDfV3fYK9jm^ zPQ+7e&Kh)r%i*ieZk0rr&dkjd^=P4=tAFH+cvy-x$5J{$*dWN5dfF#lO&8#ix@-6Q zljgg1D#n2AMzc}$gXGZ2_yNfN;PMfOjhV(*LpJZwa1tS*70hx^?xs3dEm=T%A5_j- z{{(7msEC|hH+;`~p*T&UCcscI5@N;6_chqw`MV|^x2I%Or;>%*Kjm|9Ec2Zw^j6tCrwbL^K{b=w>SlsG0ZT_$5?G>;fYF?jE977by zo_;QdnF}*Qm#Z2=UxDE>Sew%AAT*Nf$W2GjkU7lUpj9z2&_!B9g^x{2JkU|aFjL;M zFtOukAPQUdYcKW$dXr>w@UuJ}ky8xasJ}&jhJo9t<9h7o78>fl&zO_dx8&KxJ3oez z_f+JRcGLWgcpUi-c(sY1tAu3aP`)f2y4TSODnu#e`o#pZKe!2{@EAHCcBkNm$n!;n z8zsF!*I9Ah-Jg!GiuJ5&utOT&i_5$}i*&!VWuqgqZqUc_cbRySRDbsm5xvLp%MlSwzN6PhG?KZ;QB*^*HZYl#xE zjx+j6s0-p8SFm(+{Nz0MmBJ*j;qNM}YqtNYJPOG_UXb)3h- zk1%}z$z_6oVWH7RBE`y+*4E3eFgLMWdStm#)(KaeR?bVwEQh2ACETZM;4Xo*UlFx& zZwhqDr1P~iI@Js9XJv{`<^X}&7OCY9N2cc#1EE!!or!j+v}|#Nz$y_>$|>2;i7Rq= zi>x?vw%hyNLnWonfp80gs(6ag$Bn}jlS&3zvRtHfhn)8)Rhj4Aao=`48@5JO`yTTy z;gpiX!;w*OSYbx=1TErEJSt22-1D22fo=;mbXrldPkIf24PfX8c+RDdWM<|)`Wae! z{&*Uz33sU|yG$?O^|O^XurQ`Svh#DZPZP@@TN83{2Ia=|adG6F-tjrxCfT=b_B!zX zIN6$d;DcEiRJ{iXps+HH%<3_4MUEorxUD!Nbfd%sf`grOYXUXeSh=xf-H*}JI19N- zbf^Fl^N0yGyeg3k?rwgRqlzZ8W>d7eyCSQw28pjhaErd%nwVyJObk=;3f3?XZmdCsZ6LZ&hT zOHZ^;m_^y$=Vol&nW9`^SAKA)P|dAu)Ur$4AK2l_!Y_niw`vn?kDTjxEPcBjoI0KL zOaIv)(x@EwMcXb&rT3RO{NUjDYjrj_2WVv9&30%9e;8pkZr}PR8#xb#*a~E^D_3-J z0?ZxmWNr{J1H^ok!lVs7Cel5s0l_ORd8NxyteDg!{`_<1VUIi7L?3*@i{)Q!CQ zz08y{J8^wGlT?OtF#pycEx2fs5Oj+4RpL21*Gd!W#I9&96}aR6;W!%2I)ewl0EpD7 zc9_YU0Yw=_xY~cxp86)r4x~D>QgymWAce}YzDDmV^zQ`Rew^9U`?2O+Hqdw2d_a#Q z@6pOmKR0!oMvS1P@%|bG<8SF@V`h4V&p+mBp*rP{!ma>WODU#C){jb-z)2Q9c4X|R z_jsaZ%fw<(r3|>r8ga4~woAnKm(|h1a3p3d9I3!ZUA=sYv^H6_G-AHFds9H_<8eX& z6&C@xr9x+PFA3ufU2a9BJl)~W8J!wc(IhFHNU~Q3&*6CfHM+Ql_jhBW>(FR1Xav*? zbuvvEqSgz#iIugJumGEQ1z->VB~-qO$1pO(nRs?&wgpl&)ucUHXd$f}=t(-N`mD%9R04yyj9qEdBwW!<&byg=beT8G}wIQ+5srxh8cE&P{4- z+Sy7sVvO&Y&h|>!oOQ(x({GOuF=8L!?(JbEpSFGhai%HCY>v}?=&k~CPq~_M*SA7W z@t->dz%2r0bNqq*@bo;uA`7JC({R5Ksu$BjT9LUW01jCI5a>Hko%1-Lyc2bKS+$JV zf3<0py|9iy+IsNv`Pc43L^AhDI)8nH%l}(tG?VgDVd>V9LuRUejqNWsUJe*usu(HFg43? zdPD1n`HVG?I^d}+iGsJ5{p7>ImOO?6Hnx(98ep*%L|dHc`=S%oTostq28fg?*|WLy zTP2nOl$K)kHn0>n?_5d51alSwv7HH>U+(QrbFGd!f?kfB=~Qhz0PF>!~x> zGkwpc4N^VD={=X0OXl&FfOg~n=anb?$o1d=o*yP_su8VANfE0D#_Rk|6k*b@w}%pQ z!oF!{@U3T{8{n+UC)~(ZubjEHf9>R%`2?GC<K(+$ zbzhF)_6Wbd3I|s3OJE9QkT>@7V^>CC^U|KmKD-Vk^flr*$Wv{7s_QDELtsIpr))Uy zNl#4HxP3x`!cI14RzLd%iVT1+Ej496gAI73b3!o&(|(3CZV@pLHyGA)YaDkX>W6!$ zn^A14S!^#u3q=g3=sTG&+3Sf@PM8}sK_-j2JZ}3uSS4AzedV=Gt z6B(bBl^&7sFU7L`oQJkz|oyaJs$rx`O|!R)jyLun%Xv{;BGMFt_%oNQU=c zNOovT<`u!%maaB=s@V#{1X!r>Gi226R~Q^B3yW4)?}xKvtPgr5r;NOUi`ftZoiWnk zd)|o?62OvNFgz1Lb|DbwshPaYtd|5c{_KIeml|$tApaM6TH(S)sUBT2H$4HFzg>T0 z@c0ajvqMfFk*-Rx{NBH$RhD<@#1~;uxKkPt4w1E6^))uk2n_72qr{4E%RH=65&CXRww?7eM@EnhIr5awp6FtV@8%utnpem;td`lM**QSm z9aTK6=@`ag;q&FQ!ECAndCO{T6cb8~E9f@`4%hBB{6h@YP9y@t8Th`iKn=Z5@ExFK<9lkjj}oE%qWkO72(73XTo)JVdChgVv$$O1z1 z@6(_BWMt_c{jEtxW$Dp`X^2XC!ox;yr5RbrVQ=Tob>HC}EY%c%mF(aTK}$IjbH4hj zq2of;gyjhqf5CAHgwu?L+7Jz0iY9nG7LU_Fwfr_bit%@`uo`GhZ&?5Aua&SJ*GpXu zQA?`qr`6^k^#oY!&`PB!$zZuR2|(sPm;;MDJ>TqSx*3f1blkX)Z9Vapuu%!%&#q0~ zpi9j?VTEMp$R90F1!k)pAgab%avEB`C!_wt3o^ANb1koas%h^~a4??)w z8UUM_jg>_=SIW5h&d%@kA+sIa2PG;t0$vQKawpJQH>#bjhMhL_lCF2OtDVs$4XxzsiFiWq^4M z$#g2Ca>5FFMQK{+3SSMU7JENDKyBmCJx)(5^XYKw6-v((@L2qf?VrPsBK^v*ZN_tG zK`(VQo+S4;JgjjXjEhw6gBZEM>orNXFS>V7<7FZ(6KvT7G(^Ln#e&oh z6O-_0#yTQOQTpOo*=SAEQb4jcsAos%ag0jOZSE4AvAu6WWh|i@OYc5eEf`8(4NA ztn07H2xtserC)R#i7|7Ob^kzoL5kWe5=46zw5K z=z1?y`e9R8L6*39D66W17yL$mMQtLJim}{mQ5FGIq132=lxUT%m6T><<(f1%$ZG;* zMHq@*_ z*W~@^I$C(wWt2I$i`O3=%=))A*`@M70jsA!q63Rd$7lJuJwwL$n*Ar~-D*<`(?YzG zjEwy6N23xhIPfo^%V+ySU)4B|sxp1lfB5ZFl3i$#5$0pypI(2_ge6@%EAKAX0T~OR z3`9Ve%*ZMG3(GUegJ&>#6Pt*r{`s8$FRPI|KV9f;hPy&+lJ z^~p=1U^k6R?CL`w#J3cxPzdZUdrb7wO@Di!zoKzoQ0k9~p`WxW2iuGDTHTX>;WV%m zS({AE+Wc9>p!@kVuqO|#CbAQ{$YSJSxRZm&4ujjyV-4NK5Z@*K0Zq0)jU_*1`GL5F z+MJVZ6U@E0I6eX9N{njHcUU<=0GgqhIhdJrJ^56?aaI*-t@!SdN_Kg=oPR!Po|osR zrcpj9++*4RYEqF48y5ejh-jDS*MBlA301Dxetd4ZR3dxzb9R!lV1+u*1_k~b*{97? zi0Kn4sX)9wW5&p)h-u1?Gb=q9oplS-+~apEj@ljogt|jFXQmAE#g;rW0{0W+d@+@R zX*7h9xi7YO3%o7G0SkG(>$PHQQEn!gX)&_Z^Cif=5~3zQcAqm+vInmO)sYIrUSo3G z$B^+~o86Wm%34YI7eZAd<5!rVs>4E?vJ+UY2b;ef3vb!^V`&-@)37lH;NrL;Jz=O3 zn9Q!dad80;W2xA^GFnV;-@MG@qB93)gcdJkeE!iocC9R6C^3SV+8b>$a`WqWbI~Mq z%D2hYEhuj`EF22A(blzE<^oloflp{Q@k<@aS<7@p0y`YEOt!e@Nn45RUDl_{xY|3X z-U`h*gDPkZI~XbvG;v$3PU^pElst7 z#(2O8&7Z0mkr%l63%kgC>>MNz9^({(^k`pm)-^FR9@RDqvxL|%Rx>QzVBUQEQviPv zB%iSZ1QsSK8_R0t_isQta)VDKyHy>NMmctvbYWsAk+ZDzU&x2iJGd zZR1c|bVyDT9ho?w-J;lu-seKq&jPRItcUusDOBpbQmMD~+H*AQX<4|TNRWDPIh(s( z#5B@YG}R!Emd(8;p+6q*7ne)SoV+l8AI`HT=-ZOjyVE?GZ*t?c`o2_L2`-2b7n5-u z@?@e_0E%^ywpa|TNir$Je(V~W|D0E<#(l5A-logJGFk@SsvoMvsdjrRf)b61rAD>oU3eBLe{ZH5N{wK>-^VVqMTWGro>x0f;k?Iu?;k+w`JKZ6_d(#ag z_GTK=A_6$bSRJM(wX6N2G6gQUsw%|fCCBkgFZwKvIV#K+=_p+>qGg3ZHme$-c06QKy-EY_F@GcL3DsfN$se}<|y6)`CCcE5X8p%5doY57U$g^i&+3k>+ z5CqVMo$UTJT4l&5udMpv*$L^RNXyke;TCU*0&-j1^Hi?V}b#0Sk^ThtQwi(wRNNONefsZ$F z5OkhA7^9prfvn6x2#!N0xllkZ0~E$6=lWC>+65LeBG`TKk)BfGJFzR<+7<~o7n=Ly zoZ=>G1!o^|ASHn;C?g=d%*CKp&@rRVPVfoQpoGuGXE#L~(u>?SM&K?*;91KYQK`{& z2#||_cl?2%((m7pM%nmL5JBrh(Nv?|6d z<}o~T(Zo1WY2!d&=M<%A4*dOK8g;};Y^gl4yJIZg_-AGW)aCnULBJfmRz1cx0cegG zks$rKpkSb6ayM{!Ds|b;@g&s@&F|zx_I#&^T-IN1?7@{TGnPxDWB~Zw`R$xo{n{`{ z(ZBY^UOZ6?vV4#N0uGyqV9UGjt_{}vDf@s-XHgJ&eQEpwm$d8;CvR!-&uh&daPC!B z()UDqQe%isflAFp)6!{P*>;4GiZr`MW34s}<@vu)4}tfP+!~M_gM$n}Bn(u8RIR5r zn}Bn<7qD1ICAzJL<^lj7QsYA7ZlOfQ5yhU7^PnagI$K&)puF#771KXKB22<>I9a6&APxpDxcqP3& z6TqwRu4W|!AV4g7HnQ^u`HWDO>(3>r4{AsHW0<4&S8>c0@} z5$konvXe%6nwrE1%QgRXbtlgJoS%HS|5JJpGXk@`87YXi*|eD&TTUu4n%2T;Qv9!H zD37+BN9g09Kwx#ypaB50he4a4K@a_A(*UAXbS_oH8uE%M%YnLiR+0u_a1gQa155{9snJQhrj z{+gF3o;wcq3Jp41>LRItT2GDNu+N^b%Jeh5KZUP4!<0T6TCT~X$VIv#C!TvaJQwX( zRY|9hvN%5;Z=!HM`M0NpKZ%+o7xIgvT5CjxEMf5LD4`=y|7h@5^g%?ZB=r)ZV2Z&6 zZHANw%N_Fbu3MJP`^p6S)QxQxscWIT@1EKeRFkf-F3fKeWbuTTtkmW0I96(p(+&aV11i<0&g%BD)x{bW?xcPru=Z} zd&z8HYhNE@l`{TMe!cs}N#Ps7NE+4Zcm+2~C+#k?i6Xa3JqC^CoH4|{bKG9S z*yBdWc^|f1y_MzPUXc~p2v_a05i{{7^(j7Q8J4D5ZO|0-Dj`=j7gKb^tlRU5(FgXr zb2DV4I1_6l4`znH)onMaC`VP700EL@Ty!UgEQPDbnB6FfE|bVc41E6nB4{tw_OfM} z2>UpVWS{>)wU6UtZA_a(k6U~2;*o)BYGOZz497)0GtK4+E6SZ@y1 zGRs;Md%gsVlY9MWf#su?<|e^BT@hcqy@Mjc?-OUQkR z$vu3QZ?h+$o`p3wU&3<~M*IZaR^1XDNCjB?{AWV>S`I3Dw;~7!>I^QrqgqgR=y%Q= zir-*GXmYXXJvAA;Rb;M;f#-9+e_J5Pq~Zz&`q^%z%30|=fotD=xmCE$~1{G_Ps4Lv+<9!@U!LXGMTOmi%II{!66&B z>u2>j2Ox~?!xK0j47?#sizVq}&TLJQnZB5vV!@h4E%2`>oT&jY-R7Gtat0KfV*P6F z>QT^kBfMo}?>X+~*u#V8Qwqq_s#k|L2%9ODsi`aThvm>uPI-7Kzm67gIXXBUQTIDI za2=c-gN=d6JYnOlR#>AUA-IKjz^%jW{1$_j4#^dsm&t1ixwGBq@(pzO6-TKAe_N#i zI_{NeN8-HRO6af&$jWUYyf-o>OoVM$8e1}vzw@&YAO6tW2EIoq2ERPy*+I5d1rM=uor7JRH+#HodI28 zSexgeAQ?eJN*es7pg37X*jeLIzJN>5TMpg0 z+6bX)nkbU?R0&Enb66&|<3UToaU<6x<;OV_SuDxrMWZcdXi$#sm-gB!!orxh7ko6s zgqh6k3F2>fK-4HPV)9LkSqZM6pAf#c)QAJ^2sRVWENZRTx}iz59ViY@L{NE&5U=w1 zHNW;f|3l=MSk@i|9YAcwd?fzt0IE$MeufL7EGj83g30yDd+RmP%p+v^R^5k~n==}2 zXV<6uXj}hD)^{)QL`_#@px#cC@Ux715C)DL&ZUH(?8MU72(71N1Xr-yjyP_Yps-=4 z1t(YiG8yI)ci3sW#(%fQ()7Um9x1_^xctP>5ez)`#WI^ z>4Y~7AX-oL?%u;`NQ~JrSBG$A9Atxy*_xym5@NM#Ta7WFxn1bxwwtP9$}kNcrxlg) zlnSHxe4VjCogERv&8WnzlQ)As9VZaUwn2oig%+e~rJqf>2Fq)SJv3F%tnm{2l4!wuCfoJBd>Q|OyF`mxiOsIAmcKR)X zIr1)Sh8a`CVyU9$FO|J-mS8BWg9Hg%*h!?e7Iza>G9u zR!Q;oY9Ha0*J~!k==*m!J=LdP?wk^%RYjjY(y>$zT$G%-h`5DJIs`Yg-ia}lY*QGk zWjq)E3nS_kA&Cf+SDvHsb|Ilcm^2q5a=eIHz?-bYO7=}>?IoXsp$0CQB73#qmeI;1 zaj6s*=k&H^QmAL`3&jx&Pcy!xpE{7%vx3>6V=MMCOh!VU)EFcehR4hWiEfG~-uylq z(~rp44Zj;U`OFw5R)YAoxc&*$k#riI0m7uG23~8)!nZ}aH%akuo@mu$0>)K}BGT*Z zGzu@wWDc2PabG1!{`bF5jHqQL`Cp7aU5JBO$VjW)t%>7Y>2 zE~R7A$qiy;Cwz}73r`2{#!!)|_7E1xN0D$o&gQXIBsmw*lf}6A&vMlG(NFN8 zQSZ>~jo`~iGX5@Gd@y2Wsdu(Lb0?UEP`pKs3bNUQ);m8-FE_BPj6_|XYV03RI{}@1g;7^sD#!SSMho6ipH9OvDElrU9w>FaJ| zvEP#w*pyQ~K|>ng6_>3X@6M|?N7H?93eSUfF|oKzh74-H2s3vn(A>b23<45j%efqI zKl##C8QLLy?ynlcRbXc-z>89fsFZpy%*kRT5QL{3Dpmy#2cMzn3Z8oL2Eq%Ux?@1c z>IvGWGqHv?e>SOV-Wy3KA>zjd1stz(*AJdZHOif2@9@VPSwAG-s1$kWP}U-sZ1D`R zfU`Ab=yJAAI*<9}1_B`GVE2%NUq^=(BZ;DfQ$SVV7!8d_GjE*x@xxs$9@j-iGCv|O!eTHfRNB&z4y9T-cKKofoCtAu1YA>`UFxqV*@Fl z&R_WMRa{jH%kP`XAhdlt{d; zr0)%UTKTGmx*$<{F|gF_Tled7IH;LM+ELiTNVyfwPX%4EQxnjGTYOh%#KxfNH3RV( zg!eBgERabWj0oZtptbS)m84?bjp5&meHv->ik8@xb;i?a$cDro?z&J!s#;**tav~t zd$$kAx^7kqmxNC}m!P!sQ{1@U`w;E`--(dt#Ti{jT|L7|Ub|2t6u>IM@%5f&3uyC`>{Flbi?UkG zjh)-Ez$)VMU3f#ac$;-0yIVxXw_^hnT(7lcj*o8Y` z7f1YGa83@6p8 z!HXPs&*!loo6%g)n{wF)+qReM1Cg0dn&FUonkjRY?|_fe;nS{K9V=4cYJVdE8pb(^ zsK2Ja@1*Wp0miZg>a@ZSSn5=d1-LKfy2979m6xAIc;2f3EJW&LDp4(<0J*1)C$sps z{#|_(aWLwt8LK?6BEt7w{t;qK&s_VCg#ZA!$pic(3+|+g3yA&ID$CyATI`Fy1>YeT z)&Ip@&wwk*sRKjtif_Q6xtmSV2*>;A;<`eIAX6rI7dM81-8cff@JdzZ)!SK=L-X>v z)q7YhJ-b6Y%h4PQ>R@58l8=!L^!C;A*g-~_Zo%~0&fI|YvD-LU*9WE(ItW`6aE7LJ z%}v`ZJz%BjqCSLQvFs74#>Wfr!4(XZlN9?sXbc;U*DJ9&mE|)ty>+Zn(cwIt(LF}I z0NsSMG@2P&235V*q}lTN!T=xY90gL{(&~!Qr#}Y94UmVff5n;ikA2i>0gC;vPMpW& zEYsyoxe$8Gx2o;l>nqn&D9nZ4KHFVs*jPl1$39EiZU zukRy2=MFgm zF)~;GgPaqR3Vkd}8Lk?CU|PGDSh?NCc+yV2i09(r8^1Q+M!BQmIm2m@`Kc|}xxd{9 zzRy#iKgt)X9>6ZqwLs|Gt|FeypHu8NMNEi66%UFtg(GRZ7v=w|-1r^Yb@|kOmV=1T z(RNDaS1o8<_i04Mre%@G2u`vTX`R2Q10>TmGD}vozB3N=f?VMAr&}d%3`aD`9tl3` zaQNyX7phg;>-c@t)u(MJodG;FzPvghZwE>a9Db!LMRHCji&R4+Gg0q&} zoVKP$vic6u(Ko-md32uN357Pbdo=j z!RWE%%Ncc|zqRY_gZ-M!3?JCo5<*nxcVe99t=Ci) zD0B(V>PqeTuF5vZCAPNIU9aeViQ9U~Yz~PUbsD;-2b0->7jU=v!Q`mgN-qI`2KQ-emEf&lGPn=b~I;I5ge zrIpfsg6z9(Hl9|H@OMn6Bk9ah`$zX1dYkhTq~RIbnuzT}!F}EkSU`-Lk77 z8D%N<{X07O?)g9(5ig2`b$f(qm}6HCnr%v2{e_8{yXm(egIxX)=_fCgkEhtIRVCS9 zx||3FndhgozXcb2+StSxe~A--^09UhzRZxx^vA>(gP2(9`2q#zQ{hNp*#edCi=s8Y zzQROB`Z4nkxNw)jE{r$`X~Nib1b*=@T@P^z2ysXYN4!vJ_;59c?a8b&2fl-Z^uEGx zaf0Er)yAxd^(e9SB%FhSmkLsONXqJhpKc|;iwcwg%v54C@+gOxlG+= zHZl3kxSR_l6^kcx~WF&5%!7bTc_0!P#OB|AKd8s3N{4`5?>!b~mx4FrJkxs%Cvd`4w=7}1`@%Wj!%yoyDoR&0~0bzRojupfE0n;%N8nG7dIa2q> zaX9=r+Q25d@MKutC5xxVuBW(&TGD|#;=?#-4|Hm*zX~J$7xPx&#)I#gua0n9s2u^@ zj`FSip8=VG0->}3stRT~3c1bH@zWs_?bsPVh5#9uf?}?FLvso?x~^~RShw&WJb%Y_ zI-~`;_ml<^#xsWo(mKZZ0T>(W!8$(3Kmq$4hBq>@2w3+|j|jm?9H1qibm61y+t3kq z@zn~GDti_x9#(`~Yzg?Ub%y@g+cNL+-qazj@c3+s4J1Aru_fS8WK(^A&c@$n^2qYj zF@aW6gN9o1r>B^;)dz{XAuKt6tm}TGw&ezdirM%|OKhcf@bHPW#KntG%y1#&jCeIT zI%Pus$%UKKo)WHtvl=C`wy-586sTQrlKQguCzzotTrVK#<4uYH?(-_7=to(CY3Qjj zU9D*@Fn3?AWu2dIk;e(;=AIihGx<0B$h>f>>`5niW#Hh~1X9#!n2xf``Czo5a_(a< zkoxcEw{U=*sY$|ac9SMDR^gv*FizKVm}7y|HVYrP7P#4Y(N&w5lMzbgf`yVC{fW-f zv+UfYNrMGG_xea#&;`9wJSOuV0N2>;!<5o4aSGV;t$yb)W9euiw$e}r^HNum+r8d4 z$$2>~8|dsH%8Ed6=HSHX%1N17%<{XH;z56A!;&*@=TYQiq#WA>m$(1Ur`iPKog{JU z&z5>3SogX6CQEH-6$6iJ=J7;jG}~9I`wl0*15(yqY&%RWY;!Wju(rkJeKGfdXq7JQ z#k(j2LU9P>eK>w5`+TdWd?~&kz-a}>g8i&M=VD80v$~eps+45%LOJvc{rcUjSfa0I z(hmH9J6&;Z9_U=%D!R$wp!7H!b=ezmmj5xBdfS*@nLa1U23+M4u-g$u0u}Lgw*2)G zVu7h=n*1?XE8M>C>niBs4vOF-*va?MMv6C>QD zs4`8T;PAY41)$lQDUpF%a<6>lCB)h+3i;Oq9IEsPivbc#3Y)NqiD$_3)n@s-Ub(FW zjU=?>{{TVjpntjh1_FbX@;mu|b9b4*NoT(}hj5)d%Yl!EvIdnRDjtnV^x}7kzNdV& zcSzY1Aqaf;@i-ZY+mJixmzUM&FG#(Gtf4O}7HsE4Rz0D0j^d{;C%bzg`^g(uthf!h zmx&%XDU{b9m_nWa|{FOU79UWdVA^mS)Yd*BjvDhIJ7t2>TeEb>k##f4sSinNY=}{^ z{UJAKm&|TLtbss7*7f{VhQGB_0cF}Xcj!QF{n!~(%g1qWH6ZXXr~WJ9n!gyclDgT` zOEKukrHw9SegBPa;=#?TCxCJ*y>n=b3r0zO1l;dRs3QSuV0!IY%P?&*ZGO3Gd@x_c zZDoFh8rn-hjz?o5xI|zgO<0!sEKTvOdF=?q)GWu?nW(<* z2htp7>ppqMJ6|tNhlEfm9R*)oZXpK$a!W{x42#S60-R;LM7vkrabA^`Q zP`vIkezOH5KL4Em0O?|Ya^mVw_Lgji=;;Z#mNT$U97g@7>ONIpYwEBj*JPJZ+&B;D zO-;=!mKw}WA@GLe_7U0^cIurDz!v*$@9`j?k);%fb|K-@$NUxkBjZv)U2FVlGpezV;>r-+8QR{COa@6ZQyRVZN-p*==wk~3@ zZX?pgo$EXhUdg|T_~IrD9)v-KnO7`B_JwEcQ=SOmdq-H5%~`G~$%~zS{^yz-B&egQmLst4Cd> za)6>UF<0b@xTkY#)~+Xe3pf~f9eCA_Rrk*y* zbay(c$%ne`*@Vm6Ytf^H-d>)5%{XiAZWNaf;!`ISDKzwrlj4oYF(Q7$i#W31Mf8^- zlbChP>Yi|q786W*BTfr-lkvFL_>Rc}%6j@T@FfdMU=_7s8$Q2`RbYrK%|&qxluE?0 zIdGw{BExRKf(IZpcdvo?R9eEbL8t;mL#?!z$Z|*!cd5FaTH`B|HCbD5fT#k`j55nW z_Z~4!ZdknY1cGlR0X%ZGzoQ3Hm0X|Fj22)f4M7;f)brUdPj!OCM|2qGXz`$}>@$#m z!2UCfk%+NqW)pH!CWEOJHAO@}cA`6SK@S19pK{aqn&9E%MCJ|7>^So9E$>Tkg}xrbU<>!GeP|jnZ>kve zC%BHd8A$*)ge>#nz=E(g49$!E_~%9+ZH$msG`{!P4_pSiN@_9 zdph(hkJP;RHvm(WAZ4Lt@;UDEYH6o03_o7egF?JRJkgndqmDKcXx`8v($5Y?3sAHN z9Pa?xHYhBwX~VXr8*1hSy$;{=LArntg?{tHg}CvOY%WT{_n+DYDj|f!yVAQN6`y9)XEEdo%hvQ)? zFBU}mNagOq(1Pu&4{|$02GCW;b|4j=rjrjjESy3neye6-xKuqSvO^0W+-n)kPFASLHDbvg!MggiT8E11_R6~_uCw^*17VzRrBC;Y9 zX$7sQuJRO{t!+EP2!NX*mk{)32ZWW0gR*a%Prt!iLGjLZEJf_~Mt6hdqXA6s&MTs; zxbMjqXiDmL^8Y9z7qLAKl4Zj`WyXaJT683WCLU)RNoA3ZrVSR_CmjwcHo4%61oqZb zPm|B1UDK3|QIXHwG_e3?tia5p7N8=!Xwf03fuoHEdQd95n*N@Mf6frBQGErBGbw8e zQ|%uLQpLk3XIaG(&lx2WP->$9HVn*!+2h2-E048x+K6(wSC0jlHb}n}PxiZTo-akt z>(5xQ@{|rD$>QR-H#;F0kwqtyQzhxx`SaI;*NRHOOZt%nX3wOW#s&Nk-3doAtOuF? zOPu~-6P4pVuYwbW4#)r93yIbBYuGcFr}=}}QG5sJK)S#4E z8BkKpY7w8B?j1E<9l5QZj3x0c=Ox%X8Z0o$JqJ4MQfZVDkwA8rxf5QyBYUaTb#Ki} zw@#rsQQaGG{N%YT@rLl(Zb}?qhd-}bsO zUcmB)zlFw>P9ia4{<=r=lq)lL>>)@FAk0rwzdFK75>|m9o{XtQl!_j z-lxz)PEI9>Ncf1Bo?x1_!!PM+s`(}8LXia9CiP6-wS-32>(4yS9PPv*_N1fQ&10O< z9X7t|aj2)Jw{cpAdqHL)rT)7$eaHVo!2T&#>}c0G|L#>zomHB0SrO~@3fj$zO5;XEG+YBZHH=KT zP=0SO2mtW(^8#^uO~!99bC1)cHN(5$2FLus3{GUcG#Rn01x2PzXiDsWl2SpEG+iyQ zwWH#$G%rX%IyC7AU5jh2!bze@eF#-Y9-EnxOama)GIK&EK$FHf0(|BP4WkRB(+{RT zg@+*n48DaeIOY#nLp=t7MS5#m-Z~o(v>=I4D-$^NZgO1!n~+Eu;^(Jh*b_bdG!Zw#)FuF*R!U_;ttYW8ER|J?u>H#3xOGG1ZLW3K zn{5UmL=jIBBsQt9P#@D=XTb?r6$5%b2Y4TM0Y=_Kkf5jU&`hEwhNaz)hF z63O0ylbqyB-k5@=0ag7-Jnot0JwfSkJU+HoFs6oE|( z`15&)7dkaDZbw%San-y6;Ft1DqjGt~?2U0_M9iH0uQYJ=>KM@MD(-E{0OO|rJ|nHR zY?BY)n^N|mZn;A=bk(!30}B;!-B@3ZJIJGu{;`<+j_MFlUDW_KxDpysfUdOYDXFscv}QA_OTf|H|W^sL%v6TI(EO-f{33vZZtXI?mY`WUF)@u z6XZHJF#U9&zSH)b_WRhOgxXJQ}KxugbfXMpnSIB z3E{G37%&b+DnVopQzzLP${%Bb;bgm zbXXSG^urx8G_~{vW0GBZ;RATGX%J`7 z#p?I+OSDkjfY}ptHnqwS`hgj>5VG zox@nX241TG1AcUehPBuIZ(t=e6@t|vW9_@4|APfyId>A-p6-gI6Tth94O=T}5Be1f zmHtfok+PjD9n=S{&H%k4;;5gF3AXx0Qcx)gVB_+*kZ<}|gu2qSXu)9jcy*AaE^JF( zXq*=8P__rwYO;6XEt|1Qbj$0a*7(?G(^oyPta-N_S=~^3LVscAZeJB_kX=o?n6Afr zVI~>bVI(J{2(B>``{htz#ozMYHd6w*IWPi910!4`#H{PeQQnlZH4R@0SjTuX?27+d zj(tu4!`{3OE$|&7!;?oCxR6@Afx0uHtiJ!=>P+vPra#l4%x!h<=fmcR2X2e@iExVS z8{g139@i0j5s+11AM7BHgXjj5%7+)oeLkTlSgx_f_nnL5z$*X(*ZT=s)%g&8%S5P) z)IY~RQrcUnhCl5H#$wuZ>&phqn{b6LZhHBKp)rKF)8igPxXAUz@W)7p2Z<#J!nToz z&9y{moad8=M*9jp$g>;8P`OPD=you3$M)?SiDZXz{s{Hce2J(d48Y#HJsXgjDl7Uy zK{>}}pJV9h`_`MvDjLGB=8`!v8zqbSDYnkLYqPo!zA}e-)%*bHeuLh`P_iCH_v)Sm zCW8BqA*x9m9t;iOU_5C$yK+`pDh^lPOMNK6^{VX>aDYdw=L4{7I<^?BM@@+S$)5dl zhXzBwhWo23OS`>l@3!j1{47*}(3Aa1J-UheBNb`7z@kAo5HS4TX;&92IPMh@)dJ(e zieT&PR8=OtuwFB&jmGxCA2LDGBP9NoXlx;0_igVzbE`;19~u)VSY6xlr{ieQ#cv{K zSExi(bzI7WBGI}lY>R^v^_Gcu4|K%&+qhyMRDvnYb*A|U>1 z$SD)ZN_n=O3m-=ba)}b`xZnbr5bL)px@pcy$zM*s4XXsFVl5udPwe$#v5=aY6MSbT zZ6wZKh04`;J7jwXBm5a-JGf&ih}Bd!vRTc`z|XE;2b9W@XD&Kc{obaT#9kjjdpQib2zau7QHie z6%Z9sfbST=*AgJKLVS1+xgZutdgH#Ld*J;${KC3zN&1RpDkj6r+VGQrHC?-DK`=O2 zfUj72uzqrsedIa5`koQX<(s1+0uFT-@Vg%-gxaIA0Kc!l#rblsTRJTd;k9jzWuH?4 z`6TMQ-^y(C{bxU4P#tE!vbA`RlA*F4eDs4b!#309K7awILs)Ibhq=+_kBNoiZW_uh zgiYpz%%+UjizA}Yf$(j<3&Mt!!6rt^P$<1yYDSvuG@Ev;mA=n%|9>K1emJY)_Ai-@ zW({x4wJLKYQoifp{1*=aWJwP^KeC;tb0otqGHUwDc|~7ocmWj*PQQ*mNI)>6MdKfw z({}B|s2>#sXvh3~rx3EElsXLjV->8~zrh^|{@~DKX8+7eMbC5O?&%eEa zt2h?BJw?A{{O(-=D~B+TpN$ZV#dKT3g90b>qWqt<`-6nhH9HTp0YuQ&^avJ5XJEC$ zt@mfy*?;4qy z^Xy4iNXPy?INWdy!C(Gu#pjaUI^U86gnkcJ#oEHM^o~EEbR1z3i#893rXzAxcz)Dr zhmqjlU)P0<{j-hEMe<_a%wYjg526%73@(>fX|ANHXdDZzw|!RTyDz? zC{ie!ubE>Js=Se&)dnPg+oZ{a|K3eFisxXJ?QcQho>@m(^%*Si&h#h`m=85wMTrz* z{H7<*<`^0_)@vhw^j!cVmEgtmt3!y``~v4-{Lb4oD+ray;3j{aeb%SLTzhsTJ#El{ zIQG2{<)rm-$u6dqwR*Ih2y3;abaswQ5HPk@sp-$p_wLSOh#uB5D&eqsrD*8Dxm5ob zn?52;dRZE%9{KtnM{{W5$m~C!k zt;?}6fW6Nz%cE57pS3?Q^FA(CvSponK6yJ^?wK>_=oV#kv3f2760SGURshgD>_R9; z1LK*K|;)?#;)ZyKwMDNpPa(0TLxOa z06F(Y9Fd5x;~7`6l%vrs^*Pd4gG*M#BSA4b(Es0)stN89)$J9&(1obka}f3XJPhp& zuRzG?p)PUF`g&WG+wK_!aB@2U+F5t$SWI%=F6jtB{?ueAvlrSqU^s~(Zf+Rn;+=%>**D@b$$l)e zWGz=VxXIpO9)@DV+Qj5~P+$;LX@-|@*EXr~58ILY9UYgp`M$^7f}gc4i|{;8Le-A8 zM$^+m^KJb&@0n|F5Z~A|FmZs2<_zQ#Up2X(U|1$WK1aF3V#_a&Y7viTuHD%q(4{dh zNP}no#QR$x?xJqI2PT`^XQljsMy`S9&t2?H5@=&aDck-iJ&9aP_Dac@KQ6Sn5nC)a zRBaQnP9rR70!((a?0o**1+C7Q|8DL#0^?JVH7gc-;u?5VzEaNVJ{XCVw* z2G>Zn?$GV6w|Z|u2x@H=-PX~^HquRfeV@JR2y}JXtkU-(scTdKGC1J*w5wLX9!Uw{ z$Nn%BElf#oM!&_T41?90PI*lNGT=Y>s#=Sl+*r3M&+_>P7(_L;h+EZ?(ORBRXIUrY z9}^mkhSox*U9PdV7|}Tyn_0ZgXi)@pOOYM6*fZx4=T*g|^10mf-$2RDXfXzH-BFF1 zq_!Dj&!ZF22gLz}!eMo6+-IQ=02mM$35fuZ-;tqHYz7T$)Lm3I5aAANI`ynhLO(UY z{e!s+dp7=cFfBf92ka#hH4S5AQ1NZks*HQ&JMhB;a^P41p2h;WZoi^caNaJ@z87^ z7x=F`Y|xwn+#XkcmIHU+g6YYqk*RXlH=)>yCtz^V2#nt>$VnTM6qU4Zvl(NAgYM;b zOOrH}wA0&6>*nu*ceU+8iLd(TMf$)UW^~1QjNY+WNOBXJ3y)NaOGA6S%U_P8Ne@wv zu!{w%Ih;rSORN0>@(a#XI(|S#MD7RiUYFyiPq+Ws@LzQrPU7>z97X&*EMfbZ0vo-W zjHN@k?RwkSq(Druc@~dU;A)wjbvL{%tJ5mVJPHQCU0%a7cM-TRw1cxQ%1xmtj0$kT zBsqz)x&Q{7D>9wdJS*e=<)44eVGW!m+~e5ZepL|6btQf)E>soNF@}O&oA%5QpK{2H zH{NGeZClIs>I)g%vkfVeT4lh7L8j?gT+A%~pbM!UrhnJO2zipPY?m>J2|ubJSfOc<|Y67XOMOgK+_GI0LWPf%8Rp(uw9x|&Zz!l}%-@>6zeieWQWbL07i zHzzs(HtzWN1aE?h9T6NPH92c{<4#k+kF-A7uw%;Vm!TaJJO?)RPXYRoRM` z^>@;RZ85Z7b=C`TIf?^SQfi|>i_}=c)yJa4fT9|?zr`&*7-%`fX1pRwl83E)o;Jim zdXNnl2*S9^weSVv6uXd`q&*8(s!7w4Bex+`pX^vsxiIl7BCqvpH`Pq5WpA_|uWk*# zf?Kpf0~kROICzWZ+BKgz0gOt7x-JjhUu|A}bzj$>ogo~QJ(6fHhpP%yM>(+_<>DU& z|vB#{9TWu%Fko-G$yzd&!sxKm%7vHTv;IK1EGEnZgISl zk1-LwST-BJTT0p$b~|8W^2_B^o0s=S+2+?Qv>7C!#4RgaQI~YESkp-J3Fm{=ST!)B z&C4+4=vh)#{jPQHZ$dxgZdZJ`w5tK@RuaR}<^fGmLFVXtm7(MvLt6@i{3iO1_)&%< z$Y!>FZFzVFwY1cd{2eP(H=R6iNPi-4!0lBqvI?~)C{0YBt&gMQ91{a!3RDV?Ic_`X zQcG5B{a5+{{umj^(%k0lepN%+a_oDOzkgWSv z{=`W;2i}&4E~MDA)^T1D+ssTn8rV^QD)9qn}-SEx2_i z#}Ng(f@9jUib>;rY9F(q-6!X3{>T5dR6K~XathJlyP#ITvsH&2y=VjQWR@6%prXwk zZJ}S0A{fs&fNeF*UNH(KbxY$9TjXnI)!FUv9XxZyM0{c@L6;d?be_3+&Yj*x?tlDX-v@t?Q3wZje*k6+8r?}B|QRFqSRSeyZv#vOWVIkCjX zMy%0#gNL~7D+1!a(sytd-gl|P1wG$0$^q_(G^)#x%g&U%z<8`1YB+f&zJrU)xL340 z^aA($9p=u;+|LN$a^Nc{qw27(^S`O1=jG2x10LsL$ZV(#i+hfW(N4W5`)`n>{~!g% zr&I^xSthkCw*Hd4toHo6fb;V!Y*fyYjbQw>TDy`xElm7ImkfqPYseaU(h}4-hR7}4 z-w?5`nle-G^U#*dg%{qXfE)5XmbS#+wd9+xECWX=M6AtWjXNt0#ptH(VppCBS_wAW z3g|}|lT%0wwsDt(fAWN8^5-Eo?d}L3>JT3S@voGY)GtCJ$~W|ZCwt?~l?F@bs(fs& zP*%J~KUcbWR|L*3D;An?R4?KMlc&S+LVFxjtY4tXdJ}mGMmUq=om~5|P#7@#n@k8W z58Z4rSxO>N09Lh;Ax_E~rd z_~aGNBz-Xoz#5qQ=6sAU22b7fzXN@b@tB!zJ~2WGPB`YT&aseu)l2j{+(()W7YR?X z6gP=|CZ^%VGr+VWV_E4R>DFnm-5u&VA~HgF#PEB0{d2%oAq$8mvnb~htjVdn4iXq& zLH;QKFhdWBoVL+uzh-rp6m=+g3%-8M(OXobZ_feW>lWkY$|(Y>RBr>^A->me`zX4vzdC8|OmY_FBq{z4D<+u|M}tmp`Zr_ng_ zw3v2-M=GWJpi&V?7|j@2rQE-w*=X^ncgj~3u@2AIIk{e=YuM~!6%K=2ojmuebG;r? zp3{dmeFQ^kw(@CgsX)h8bjrh81{>xKwBL_w3#BfB%MklVDA4ckaT5W((_~03WwZI5 zU7B+oC?_q0=ze$lVFbe(M2VV?o3U>d%c`kgAM@OQBF?&^a-cXMdj4*B?5RCahReX( z&PfL)9>->lI}&3${5D8aGf-W31s-pJ9tLYgleFW$CAXz%Z?m34>yjAV`0S7wc6seB z$K(JtCV-*~IjaM%5hOp`P=pDBH(X-;QAHqOkiPrg;SCO43{Ws~2$VF0)xvjtH~ z+C{n^z$93&o(CD+R;^mWx*s>XF4cc+C z_K-q?6fOeh?s_MGa85|8eqe7bnTx&xO?s#~`N?abEj%Y5OpYBW(s;4P>5JDMRcoVKOF}S3x;i}tsp5X^6t$oXvKYjhTg)!sN09^xNUxJ zvJcE00ChpL(16H95Zpy=(us?`cq`L_nK`~rP5?yzGXbIm7IsLqspO6^OI~K#!2;Ab z-E)#7A(?1GzvC=_LFN56xx?eQyYuDL`7%*k#G1gbOQLhb!WNC@HUeI+Dy6)Lu!HpF&9L!RW&2x?lVe^WI-eb?S5 zHQX3u33fXJ0$H>*^t>UQTg_7{lq8vS0~%%*A61saqPddw@I|=elDkU=>KVi zx-nlZgGg2}Xa=1iU+g;ELd#8wpa;{pft-Cz`_H z>lIA!5R8_emtP`i&70qG`IG|fhqBB!(e1pm`>u}CP6&ccal2F3kt;(6S+NWQI1BPk z-q{;CJ1j!;(Sa51e$9pX0rua(A&;A|*XF=TiY?#-a+``DdZU^*GBUOwv6jAn&wP%$ zVde*ww0HiMxm@UW!dz`g`ZT4QxnTVMI+PkqE%4BBD1s9oy>KyMe=?&-xCm3 zwT!l5aaZrFs|p&u8`88iMr8TgDTyit{pfa|FS*->-1~}d1$#+ay5*o2bX5sBB>e5U zEa~ZIeq^wurRFNmz( z?PMR}xj#etdr`uxo^r0w_Je5u&2BmS$av1X1FLu$}sSncWoDb4cBO54VXlzFeAd#zsOyyu;NL_>fENCI&TfemRxwN!{}z?9JheC9hNhHX0plm(KCrD+D1j=g0HrPo zsIk_LGC!Cm>;6`{mUqW>Ok%Jh6+6L#z}OY5*2A1NEOyG6E1PGUXUU)^b*|2Q{}Kjg z{MS{LvX08H^eok@hQN=Ltov*Wmx)4-aoSii+={BktYu|pp_iwWa%-)o8^Lk6W6kK;e&Pzw<1O0V{DEsbrOmRe+NwuncDqsYjgLJx1g@UVhdok-~M2PH)f(pTqYy}T-SKE$WrX?y0jp-yRz6?bg<&J z#jp9+I=inGEN@0wC^>&;EyVA)<|EkbXjO1mKfOec%VC7D|w>vxiVgdfH`~gVe*V zy_8Vrpx}h#PqTQM&R8JO2wi_%m5cMJ8$L)eeGjuz+3BLLs`4(?nC|%#*IwO4RCh9= z-YK9R#W3%$R4Z(I;stV|qGYr5oE+j_F<)9yRf4UCXnM^652dGeT@F3FSgTzEgx|bd zKb6Iwhd20;vL5m`wt|r)ZI5c$#?WCVq$sq8^j!bPwFY?bJ}GMox1$H_L(mSX!-Ayk z&bCg64i*n(qk-u003EMc0fn3>RM;<;9D(WK)}Y#KaHi3n)s})C+OhsdW<5q+w1%&K z$Noe7xF|OUhPWhCPVoXar4{w!sGjnt+itBO%0tS+aR&=$PPH=QX=O(rs%cn#n1LE> z$RwM<3J&1UeyciVGPfmcyhE#GAIrTSByulog?dMZI2gZ3$V3oYmkZ^1+Ck49yj@9j zthx-*WTHSJMOgd^((q5wG|{oXhza?FVleYQuPIB?mqjLWtMYb3QcG%KI7$9?s3+V3 z`UJPnV7^w8FK6J)Jn~KH;>LVX{X@K-Tu)VNe|IQ0#H&VJIp4ghx$sx{5uP0TaZN2Z39KaPjvFGdB;c9?mucMGlFsY%2SW#}MQk%@ie;ffj&Y<((3D zffc_%!;dA+ZE5&m&{mEzC}Te$B9ee$PL`UrKwd&hu+T%Z=Rvq+6SuwYf{SXOW^Tc?D$(v3w_=0`v_!dlOA`wNmJ4 zwLeHlchA7{0|tg11#S6(N;K!UR-SO*A(Gr6g~tTc#Csv_kjhI?Ao~M^+O<>Gf(e>B zj*%avuFaeg2riojhBrDWDg^JacfM2{PcrPJe2aA{)pM_hg$RU)s&l7^K_X?Ir=coC z=MWhsh37||a*mS)RAXfW4)9bDco{vZ#9&01vfk(yc_?|h)cw~g`3!UsE+QYT4^B)hs zs&~IXS>M#QviDh{9JtN)p{eoZGy8GNoajv zYtQ9#UXQJ|Jf=_1>~)8jkkCNoa6LV^id)~tmfq(yE`$}lO%*KIym@W{N2IFJ7GaR2 z4w~7zs_l0TvUemEmBmZSTr0Sgr7s z)dp!Aef)Ctl;W0l`?yfBJKHqy$xDY`#CWeDaan2qs7UsozRqqN=jPVhcqtlY)OCO( z&M)QV$yKT3yjDiTaXfKH#l1kQy?eO!hKXdy^$@1}TmiSa`zEDx-7~=MJL))G#~YL@ zlc&>%-}KUgI=V%8b9?rP&^0RD22x0Nz<- z9~Kyg!qVm%^Yf5PuJMNcX+$Y6IfH8Lzr>~VAh~mKAv#>Th4?M>b4XWin!)+;lx5v3 zlzMe*0=J^y?<_CcfmhvVWQ3W;CbS~p+l=i!ITENbw~Lop5V}a5Q->8VUXN%cv53v`PG{;J zxJ4Ms20qP@3q9_}&*@fo`FE5#xT#Q1VLLI-!du*fXU{7Qd#fu}#nF^F9_I%J(}se5 z=oPlzT^u^NW;u+DNce*pE3oDfN?I8OwH1(}H9oX9_C)d=%>D_#@4U zs}Qt;Dn36EIUt4oCy$5?a0`yjk4!I$F<4wvb`^&b=)D~;7a)gTA(rouUMTh>xZdr6 z?t1n=l*4?H1sjiWoXuA?SGZD2og)5t5A}t4B3Ds=ANwKUQM%a(BiaDw++`s455vbE za=pv=sPSpf{r0D|lOdyFkfB1TQ!2E!^%Knbq$XoJb`pS9CjVv>4hkn)Be3Pb?Vi(f z7o-cI>-Wd+8pGc~ZgWl5mVsYC-mP>qj1GoKvc(NP+OO2rO8&Q;dwAzn3EMbhJ-^Ad zXScf)cQ^Hk@oG`WOU`5!{RH%GqzuBL9=RWBo~p`JZMt7-!hK~00u79qWq60*^B&?>loQ~(L_WGIs(ukI1_o}*@C`~J~Eq5_*Wjg<&^NCICMxM z*Sn1Gj0Rf@)qu1YnQ@+i)z~)-kd%+mXuvRQ?>;<|o*~Q1GVo2H{YmBSJ%rcFZP_Fx zolyU&3pyofvq>IOfgjH<5a($4?(km(A&8iFv=6i{5*BYS4cAFFD=s69u1?*us7pE2 zIrMj4f}&jVI?_9`2ZkqlZ=Kr(iWtvxyt-(xGI4upj9;TF9pZ!5!bin zgy`Z`G>%Bo=Rd~BNv*XQ$9S{Xh|j=U^Q&}U%u`9;S{!3*r4cp(_l0HUm5}7`XO$EP zKg(nNEc@!+4k@lH=RBgV9^jpl`08d9eyKE2wp$e?P7=8Aa7K4&6&@aH|NZXuScxH! zg^Z=bPu^$#zlVW|ej7w_D@+r4K#k9Hs>W6t6UA*f{^qNHexKmW0FJ4?_5F7 zh^{H{U*UzapmsGDF48=BNMH?@aXZl#ijyoPfQJ_wTUIf!Zq~z@<1p(?8vP{`YVge~ zIp;@e5E$J=1E0R3oe+U$jJ2|F{2d{zm1CQsFgTorSq0cHjV2o9<;VtZ9%ebq^^mq0 zq~EieduB|w@Y(I~^DQGu*cQzuJXi`_&GRJ6(n$G;NLu5oFN+QsJ&BefE1ab}P_^`QfC||+gkf1JQ6&84i>VP~8lH8t#Az7r>cg235fH$D zENWT^eSTNaV!H)S4m^|si3Bl*aIgF>xtM~lkC-4NU0_5?8-^SWLMdOe4rgadxFp>(GK57RzgBIMW`sfnmJkR{uf)^hhq*mOOTCJS29G4;duMjify#d#d)alL zM@!2Lh0gLk(^=yDT7Zk41#NvL=nCnBmIq_C(`ps*tnih8u+ZK`&One*R|Z=U?6i%6 zsm^^&@^@Efix|-3w&q^+s}9lkhuoJos$e+6Fo5VYyPW0m^7@Zx2zmJ57N1ZKrX`|+ zA!`m3kFhSt_{)LqAjw5{yApr!Q#B=cqo2D_x@Z?*Ddj2EukV1D_y;>M&~*pMQ^kbF zGv`}?cLw&Hm1cj_D|5F$YWQA*oZ+S~joYnZj0(TZN$%vbF0h&&m|vaoV=wr47V$^S zEGS_&#EUOsk_axhYcoa1U>Yd?$kJlV`|h3~v6y3!#9e`oej%UCEK3UheS zX~HBMYP^FYVmyIqV4K2O^>)ZSEqZ80{@y&@no0|aq>J0X48(J}0ZL<^TNZ&C*n?^@boR2 z5VuDE)XNK#Hdih@lZPzcytEaKMYYq-qX7%|C{LKoA*c!x0L>cm7h`12SaM)TCRPs3 zcE!2CelVbe`maX(-9WyaLF44In8ji?Zw{-cnBFN6JgN+p07ItbF$7m=gwkP2 zQ&~ZyuDp8~Jow{~HrDj_=(MY!7k57`U`|Dbtw7}+4ZWT&hIFs)iuL)*tmQpnDh=7) zFTT6!U$YQ=Zb~$jqoNV+JS_KJOGa>BZcmHSlTJ;X*qRR_o(FUG`n>qgEYAL3_~2EJ z3ZV&WY#B1brl5S+4hr;P`9()xF+E{81+dnF0`Yzd@rDFXeZQo8BqXo73;c%h({aqa zge4C$!{hgsps>2)FU%pUfXEZ_Lsp5`aKqCfIGlpH`OGd_sSr&eN~Lh@Kxr zi#})Fi#nxO>srt#N~`;&GyR05Hktn8`)NtFdrjkHQ&PB;31}qj~9REVw)1_QFsByQY_xe5A59qB}ckG)CFo6X@mj z`_fkx?gy5BJZ(F;UjYVZA`0oP0Gf)qwoxP?=%U6jo-&J%W#wIvuf*exA5qSp0+1C* z$ZRUJ2S?d)b;1t2Z^AoqSVZD%H`y9(;q1pwuF=a25TYVh)LDUb_UeE!Mhzpr+`v%} zI+hPalv>^K^xw`?sBheC7_?G7-bw}P_u@U4;ngA_h!N2BHME8|m9pgDbDxoz7|%sZ zFkuPxEg^ZaMrM;7N%yiE&ej$W{=WSlzd%kHP(}JGba2lXgygFrWZO^u$uh zqeJH#y^bM}#_wAswNDI=P-t6a+yKnHJVF#mTM3D|^D^$)visY|0)G4SEEWfxgg2eu zw{pbRn1mPv6`)H8UMNcBj@|SPD=5E|Fs?_l;7PuC76G~7XD@}^fq(F~-%)op6yg3GVH3-I_Z%*7kk_68THv~V&U|c z-kj+FWgQyBQhaaX|3+@5MUn1!!}Q7uFq3&VAu~-5`^s1uAe-UT2bE-rVIsD`JdPjQ z3&Emh)K%Ra{-k@F6A<-sUu#Q(igdL%YYL4_O3xICxv1?RqM&t!BB3^Yziw<4O!(K9 z-zuV7YDb7abnv{4dYp6>af%F99$tVCpGiC+FCe#Jd<}pbR}?am@fyF_55Ms>9O0U( zMr(Mrvrrw(aAF2LuC50?0WzKyt)Tl}-1;?Gk8iT2pNDb^7@5ChU`cCI1YsjN75kid zmE5X%BxdL6bs^HoazilSs!4Ov%~e#uYcR&SX~knK4WQF`ZF^H8W%MT>nTzpO5P3-VZ@APDCw@%y{7QD58wdd@YdRlcLn?shI}nex(X0uuJ28 z#G?(K>VzH=V{~^u5P0NZ6Fgij(HH?EA$n$&V@IuTsJaB{2joz55b+|0kkwW^=Lfgs^35 zBr?vlhRoJ*v{Oe09YmPk9{<*wzmNXTzFuU1Kb`ABmxkXkJq5Gq{?M77!bM@7yaV2u zGLO=Lf2h58y2?#lGlib@4~zs@07R&jYEWV(s?>c}o}Lf*&dkZmT!zKQ+r7l~&#kzW zHhMzjuDmGf^dbw^VeOmKif{1x=@&adMJV=O-zcw1Jo4~-$T*R6OlA=j6Zn6`w%_GK zJWnfvu)LSzHxLH6MsG+FyTNah58&r9XgISrB}x9YC18iH!%N3(jl{zX4v3?(Aeo?u zSM?Xn`T*o;ayi`nPx1gV(s(4XBPTOy^nOb*FbNCXD!bfldh0KHDzpI;;x3uXkm1cdH78 z4Jf5u>pNdcDtEtu$Whaqh6x^%E_}_fyDs+*dQ3(F+^wwji9TX{8JjD*3dMjkU&(TU zV?&WpY4_b$dYdkkjnevR)Pas@+SPrKQBeqWe2+k!rrOK#p`2Ea;sTP4wE)UgFUni% zC9lfcvANW;B*gjj7!rf;r=Fab(>^p>3hOny9#{PkM4!IG!kb7}+qzP!yCvtwrqajw z$1i;FIPhK3DFp=ssmSyhL}`Z%hs0#pmpjo7{TANWQbI&n@X|Nw4?(O=*n4Ej>&okj ztLI3#$!V&|IQIx=6I^Z}`az-P(fhg> zLx9*Kz6w?6^R#ciq`~OdHzRQ7%_VG7h7g7@K zQ`Bw_v#6)Et0!n`C$^zMoft`o=D3WCQeYe=MF5xTj$>cY5BgOlKVdYNKCe2dGT4G%Hh{+@dZo&T8_@#-8|MBO? zlX82`+mB8*>tXl#sC9_|EXEfc#EP}P&crqvj;G##72G>d~$! z%9O|Fi4&-?7*!x?il%Q_{JF%`>3q_KrtTGYQNS)$Ov_-4Y=Tcq#?>GM$JfX;gzBo4 z(FX&k0j7yL-h73h*0nnah?hq}2J{hANo@Q{kkyygXe)fQk>FQrtGdDvAAWKBD%r+< zt50}L8>*8gYfq?-dcMfja1M@mjaQ=B*vXIiGXhvw#ct|D`h`f=VxF=KEM>mn?=6K~ zq@Vj9li&jx4vMTNOgwCkx-%P7#1Fg$7w4kvQaKkHhre9+QcOK|y=9a7)jeJ9FLIzA zquN= zui;{kD6H4r$)s&MT9$gL?IV{MgIjqw@dWRxdgTo?_2d>m>%g~&(4o1$nMKJx@km)^{YSr81jDuChIZ- zAn0p!d6k~%Z-kX9RDN|H84OozCNB$`v#%0dai-~?!dQ_(24EQW@M0I~CPY$mKV1uT z91uFm^usk>izBt!7y|JsU<^t0O&4)!ya;Hc*vW}xWRaE-c9b~f*462x(j}w9s4+6> z#7+IW7-vRx;az!O?w&}E`LCuD-8Vq(T4{{(+nQ3g8!z3jcZG-;ELfYwd&vkA#Q(Ti zUf-hp9BqR-l{LS{pSN(MOL*=7>u_kr7Vc$;4i;HfYFG`dtMc zhG8#glj+orv0!nC@DceqHljJ0!i@Neubq9CK@KR3h?1#R%82Lv?OZYH5kV^A7qC0) z0?+&*d1V&mXL@xUsqYy5sS=6x92en#LDV|Rt;LfG?jE>QG5}vjdjpwLZ%cekUt#&m zjPDriLRP`7C%y31XP_7>!r88L3}B0+9ywR zjrpH}f^|-ssa^8Q28+Lv){R1-tXn)!`FZIA8o|DQn%5!OMig9;1Ia|{S)acT(g_yY@F3?7e^_qIf*r8HYym1{&o_;QzHRS zFIs^#TM2{;wX)O5KlO2f5P=itkeGO8JmY)8$$6cxgF#|<<-8+5p#6^T3S{iwJ}x4t z-R;A`lAknnZO-)~AWq}l6xUwPC9Sr>c(2GizbnhK83VLjKAVmXQ8S*Z(6!7jO*#VB z<&u|@)CPLmgwvOcMZ4p#DcKG#KI{(HNSZU1VBl60?xJX)%%p@{BplP4X7NF$eMr4L(0;5sOLiq<5H}4YTgS<-0+2x*n|Xq1JwMDgRfPDk_$i zcx%=SW%MGRRE!8O32_92*ltcwN{Ghb^6F=uM~t{FysyZ2Z{m2Zpat0)17yAarfp;f zI{QB@m&aU%M5sMfAt25=dyWIfm|7T1Vi)MhFmBx7j>? zmnT{4>jw@SeH6#%`BNRfo>q zJqgd7pZhsp%#fW{$$m6mTGmozb*=b6SYBiuX3~+SfZ4bFY?4+_U+Xk)6ClO|5lTiq zB!_PuMU~bC@GQ(&$jZLRx^XW^3G?4(0*cM^(0YYmsNoh}(}ZX_tM z=1!|fuKLs(_bg5t*SpPPdUveu#E=vX{SdOEFw+6&98v!?C>p^cE>MRXio2f!o~Ch+ z^?JepZMhOQ%|5zhY-|CmIFC{nJbNHVZOA$WdkjdK!P@uDGokqwjUC z&L#mCsQSUg4;th#VETL@nd6AyHu2gn3jPCx_opNJGYXOaq(!jQc;^k*U->Q8uX8bDK`7|2@0gUF~0s zS@@Zvkdu_esx_*hi21|)23iJ#Vn6jCm&F1JuvGP|PZEtV5A zF=u`?X6H)Ei$3Qvevd~4s0ATbdaE2^J)DNG$d^VuaKQg!ErlVadO+aAzt~qaSw&P8E#(Jlf;;Iaty<-%}YQU&M_=>OY_y;~mrcX5OndbY_^I+8f3Fo=QgK zuZ0UCJv-bSk%#USwbAK0PilmB7tlI-l9GL{ZKz@h`cq6+cdsAJ@f6aub{z?=huLXP zcxF5C&OuOJ)$KjW-LJ4|&eBz-{Wwc~W;h(Wd!g;yby#f+C77L!rr#HnO%1I#c@vs~ zWM2pho=h`{cil}8xF6t^)F|^4Ctjk z4{lin8^X50xe+XoX%$=yFm&)mMA-jR8n*;(+E*DccEVf{0QZZJyI~e!IVF{VkkaNE663$h{t94+w3x+>3BZGH9a^*EGXzJv~xRo37 zbRLKidh~4rh2u^BR~>xpxx*@qjT=#m7WY7+)~!XErH(FX*_aVpy&Kx1LkGi8?0Ed! zT_4f=Qh|^FaS{=9;o02Tr7f5)1CCdrsQc#q8+cEgDI5szCJMkpKo1&}bhZidhUyNh zpAPqm>X6%1j<%cj?cNtoa+0=$m3^~wPo(L2{TSaET|&PxU_)m|Bw`{|6Pq3APA`WJ zzeM`8`6ZBH)i(C%L1!0%Csr=-21rGYlN)$ykGyx})chNnLbuJFKUo9D4<_h)W423)*+ySUo&Af zZcoEHy%lHaFW;H+U{+CEz+qLt&!xtzE=A;59k2oQc#_t`oL>1EfQzlGIUCzkc8`xg z5%jMia{0PNfSW2LD+lN=w^2!WSK#ra>QyWIb&MgaHbsgXqA*{(f>acSxJ$2M&E2t% z@m1sE9T}A2qumShMaVtZrG`coirCcOyBy^HUjqn#YI(2;=wqLl3sC=nF0NA=05+Fn z1a>Da3ckiQ;PT$If|u=o{jcUacz{7A4%hAEf$*HpY+F5$ct{x2e6r{AIlO}AYh}m- zIff}LnJl@es^bDNM|kM=i&dIaRsr+zm8#6`lVq}867*j#`jx!=Rsl2aivYS$X3OV9 zhb|fm=XccyMEfbF6zmIRo6Q==7ZLV8<;5so&t*iusjcgtyG7LKND~nCjj*%>o~lg8 z9rw}R0p^r#lAyW!@5;-n)Z=tfNbin$G@Yhzm>AKNs1IC?~0sW%nC zcPjTj$9gp~2^YBw%_;@q)V#p6aXw5mKlC?9FF?Tm!~Woh8I`d!0a(BC8^s*gj`bO4 zFu*?E?{Zm>gpD+X6&+Mnx0%<}YmQP+ZNE+7PH-2#_@byE79{Wh7iUm5Npv6#GlbiE z?!lw4x21mBD#aPVHqm!3>AFm!atj~7OtCS_Ry;t1?!H%cbr(`qc?Xz2MI|wpsEQ$1 zm+q%izk#q>!_ood$-+_ia!i1fyK{5yFm{3F1~~D^pne^nYiITU{qEZI9W3*M6F=a0 z&bkOLU!AY5?-ZZa?3*|@Wee=os(_f)*8l5 zTW+7p=KuVes4ZM{CKJ2GU%is*(gZy~5g&!rFq=^XDgCw;X$^+xkO+%%?kF5!hWLwm zM^jwz5+yB%nEkXAQ1xp!oV1qfr(6qCD^B*MF6i7xTDBt8v?GhG=uP2aTgcpM+))<2 zBvyLe3g~74GS4$sNbWwXiT=WV;5eD8L}Ocpv!i-^r&({`x`f|(zYQ;I;o{fGG-SOK z>)mJm%bg1PO#Q!JF{UeL={yE1FgXT>=hi1!)u9=*PR;OPlR8%CBO~m3(x3mWD3&zw zzsLes(V*br0QbtSKRn}Es&zF*AiT!E)p9`wxoYu&2fE>ycDPb3%oNR*QihW|6yyyh z?h8_Gc{o&gU)6oYQl9h3O}mZ9Z5i{`p$AN#j+^8=soWzloqds5G@iXxE(Ej7J%IoM-!^Q59vnZb@` zMU{C#N)&>JLQ9}!Ec0wZ_QlI5?ArENfh!&gP@4F(8O6(ai^|iseN%7DP#lMNuBOjO z%J94@i^?gBVV5{#VK`%bXTeJ{?74eoC1_r4TH~>YU+^E8a=}(UL-`$bkD{Y}?`3%- zH`M%>gQQAnt#DzZ>mUmb7z4P8X$A+B8P zz_%o{kztK0`0K$CUO=JcAglo3*@jSIP&Wi32_nxE#w_IZmKe8kE_bV%Ai@Ty+6DVs zayKv9IR=)&t&2!Lyth`P8-#vggvPhm8y-O3VbfWT}84mA4NrKJs@zjM`$S?EvvIDCcSzcM7#6^UtxjEEZd zx+5RVJnyB|)&*~T#yAa^W(2t9P)Xbo*n!lL zw{?B5K*ZGOhFOyy?dsu=$obtF<Z~71vt-xQOVL@6XT>%n^a)RJnXS(fZ{cGmMpK%VQJ4I*L*nVY;IXTX zxB{YZR^}|Z46~Em|6b>(hrx=0z*P-Slj3p~7-;L0n&txUkFjKthrQlP@)-LvZX=Kt zo$GTS{pg3Sc=oQoUx8F*<6^6??%e+J`#P_2zic29j$z<62tN^#^~L4};K;kdk)9`( zTjB?&8W4LoewqWj+_&Y#3XXYWEXL)Bj#zG?VAf!hcxf`jQK0eU3qLedB~3u7xg+jx z#vgK-&(3}Sj05x;M%M5l^x&hQ0&iy;DIS&_3F{A(Fr*ZyYAg8{kD95X4%s_+SuENz zEG+0Hvo9(R%upEF97uB`7X34Rt%UkBOr`~0z_V*x$3cD4@eS>eh6eVJ=~0JRAFx;0 ztj`c;NGJhz)mA;p_)Q+F(}2{KN@LNfA)K=O}WhX*70tAJUV6?aX&6PyPAvo8gRYRSw^ z!)J+8f-p2&jZ%RW61(X?)mSxLYQr4?=6bzh=B{henrkyov@=gf%YG@%l3kuk4a5&) z7L&8-SGM{TV#cgO)QVS!Z;V{0*Qo?9W$&~vI2s_5;H-gc zCNpj;>%XR0%BqQ3shCSY48)w<86tpXP}KVkwe0&JV=u&WexBaqs0^D}G3{EGwy|7Q zvtY2`A$|r!oL9^k5`YK?j)*oAoHJU7(b}iDO*(PJZH}ZyfMhn`#O`w>BmO(VpJ8!O;OWO; zc}?GB?|kP0qqEJAr_b?+q%jS6N<_XfrwLd*8Jh$|zIDn5V1n7g5$w0>bA~=iYy`XW z*_}lFa%)AnJoe9D5AwCvzSNn%+XUTON-lK2x87n?7|{soF@IaD0Fj7#r|BLCAP3Zq zG$^!Cj1v%R7wP^oX=+6q$aRk~sLN-Ds-Y~p&yfKD)?Vo#8?#@j14KvTwxsh`dkJ!; z{r5?}j6tx%yMkB?6k;ZSpv_YQZW!33VQ%PDV@>s(mm?NglqcR2;z*vcO85K!!rkJU zk%GUzQy=otTzs9c6xE|Yoe}s}a?TK{O|rnTkD;PAo+wLG;0(ElbFS9V7-u*fgcYEI zxAL0q+xVB01*ZIPeC(e6d>{6}5`Ly>Kt8K=Vt8 z4A(=^X(}`L@meF%_S4rQ z(3x+Uu}Av_7l-D=Vxs=_=&nEq4a<$c{kde zvL&I(hT_M_qU(4uK&vNQ`Yd@{!&%g*^e2qt)b&p(z(*Xqd4fzFXdy0)eCsMp1?(2H zz}Af|&vF)E3X9eF(BnTOe@U-2wL~@9E7TRP@Ag(ZArT9tJACZvn{{wzAncZMnd8zA!2m# zY+@d33I}E=U^B_gd~PR6sOj50FQdEpYO#eA8ex%Q6-0BauMe>TrMkZ1slMuoXWWBg z>1s*j)TCh!%*?;|o8vTcT$y48F6S6#<@hgpB;);XKw|2%SD7tKsW=;bfT}YW2}j_P z?w_`S#MX{du;W~5mSr=RCx$F!Ny`Lbx=|`$sgdgsU}*QqVh?=kREd{0MLh*4DAe^5 zVbbanR*kZXiS?MIxeDpF`BrjI$)PTCr4A}{eXvF73qCYd(SO2p3q)P_S-(MY}8i6^pu&b;t&NPMUHGCFrcnek5n-sM!MM>Nb z?KbQOOjOL6`QEuv>&J*feC*I(T9Z=-;yO1*>{(`p>Ek8u0ZL~&3mG~2$BwH-H#Dz# zF8UmNe0=D>Y7q&Pflw<0pUe_SpkI%ST``poRSGRRyoyAuAL>XB-41kIvMk60g1Grr ze+cFXTc1NFH6=t-o9fbIK=>N*nHq)rW;~NDu)JLv*zAIaPZhxVV4~z!9O$I4?*~Kg zQOsgKfXsYd4(W+{jzXeaw(|uzV~Ql=i0r}z#6VEOeNHg&N}B##9vrC~UUKLbF-GP8r0)H#Zd;Z6&hCy>A!6H{>8~iQ$ksF_zYn zy7Q`#B_%XbGqN}lc$hChIpvvJCF$ny10^fCwHXNhg+?`QZZ0{vU@j+=bz)GM-avT4 zZQYA6{i;GOS7;?2xjxVs_P3V?S@O@fivR~jU?63Y{txXEe`ASlnrD@J7CL>}pwd*-2@`>-g&Ka+Em@0fI9xcJjN z=PyUxbSE;>DNALd= zY1`KOPj_gbN+yx772$Y;!J=SH%%Xoz#HiV4j#3J~P(`fCPmZtHjLCr>>mi`j-2KqjZ-Y$|g>C8iL+oc$cIMuT7qFmQ8-UTkOc8X8}q{FjSr; z$(tsZ8-II74nG;q`s0r~eS0!Km~wyIeZav(#eS*nw)(zYv}%d=+q7>4EABp%d(v{9 zgK2ks-)|ckD%@p=3uJeG{H#9ctTD|_V2bTMiSgDEI%TRt_v>P0rX%nJPJniT050@t z!O6tyu6yNh)RHV0&*8r*$%R;3(UtEQ)%x2lC1EeBXGn~tzD0j#o!=0hF5B4Ssy(&* zw^DsA3^SNWm8%9%-QZKm@=Bx(E&KPsP;EUKigBl14>J8vpPNNcA%hAT@rFUTFQ({! z)>RdHGSgK1zxvqoenXYi)UCO`A%K~ldXy~lyoLe$z3j@#D*2AXZAC!Fnz|DeTr0FBMh(rmP>%)-DdQ2J8Cz6?i8tpG_qeHr?$=W&!S7KtUty69*Wl%;vr>xH7%DxAB^ zl}Cj+P;cvxvYrdq9+ZR6Wntnx-p)IGc7NTLJpg2GHjoZT9LA(9bk#1|68Jho{uvic z6lZIqlRq(4KvNjls)=ayI?B_g_h`pUxL4*5geHQ4wFK~Ax<#2%HvSd%>*dZng ziFK=r4ZNTVrncDRWKSvLzH(es8oRfzD=nk26k=0_cP)7ixzeok;bEu*Qddgz=q04O zQZ-j}`y629-C(DS#>FPO%7Ba(HplGrnZ%=~19V6KfPs`(`8qQ}9FtF$lJ@`&MUt#hjiB0a#| zM5Xwx?D8+};8;E*Bf~fzGVi71ii$V*j}z-dGg)%(CtB}%OGx%HFKy^WoE+(?)RquP zZ2*>{YQq2U+=y&jSDz)yCoo6>y$o*kpNpfy4mRhk3XfE{O4$O=6lbgjEHdMFQX<+# zDJyioQK==KgV3#BWF3n~dkh~uk)N^iISJ1m$*(TtmINcko$5TI^zfNqq`v1AVtP=m zkF4pptyLWHa$<$!m?yI1^=5faCiPmVjJmy=7n^*|fiwz2&Td)ifE@oXn+SarH;>*l z-^Z{uU-(H8KS=ShVlUpk-Ae=*XHNV1QAXvXWm*OxAu2FS2a>iBjINll_JZ9sy-)@VG+`zC!cTquG z#s6@BWhBQ)e{LQxA_QXx8czfOE_IN=@eL>(v2t5E_CMD^$H&E?;ie<>NetROmOj7= zIlNYA0zNj2w3}a`9(2fRPr_^%Vzo|>uP!q};mK!WRcJvxP*l{RC**e?mjyv9Le_^s z^)uQm6R_fX*Bwl$Q~lO=<-2S^<@OMJJ@;OkGJ&C>xQ^m0zKht?uG^AqlnQlRH6n9@ z-!m~cFa*-rqECa-#BeroB1RLr5Gwa+U!5bkFd-a!rC(&&JCmS{(&4yZ@N3XG;n8UN zDO=j<-9|Wvr>WXX=9rYaL7snN#3^gZow7tw@lS{MrLedJq|r%LW&@T$=$17E)c9-d zu@7u4TBejly1)_KujBx?H$?vGsTuNs8u$9zbQ%_)qH#H2$fyrHJDF zr+^QgICi#7&|K>WF-#yT=C|mn!En0PAN#m2=sG`JAVd z!^%@V_R4#6{G%bh3^>iKUJ2hM$nKnB{)QOADv zEmiljpYVc)JgY6ifvJY7j=8c`rZ7(EPFe2(S!ftn(17dGm+arde#a_t)o?`mE(h$# zMK*)^0_#90KpS*g$@XKH{N*w-T<-T-YW>2SfNHia!;FO_f8Bo@X>Z7a`L7i^4}c}$ zJ&AWW+n?b)sI%;R^hUSX_7}mk_sD$$ww)Xf8T5e1u+_U^66;=_R`j2OnyDz&9>Hi& zjUldGCie?T99e|v(_m|faXCX$kF$6u3qG%TAnIFi^szE4CpllYyTNFy2|m=3MI}e7 zkD!CMofqGt7d7=1rx!XA=Q243sTc?5zzaFf z#v~DI*;^zr#rctEgcfWU0 z)zupxq^i*<9QNILg5Tp2=%v|I=#g#=_4T`48~00B*N&C#e4;vfc(k#*o5iYv7L!tg zD{I2=GPONkt)>Fr^naRH{{z>_mYv)WEQ=I`bY1wjRFM7eRi8%ziKvU#k+nPrwCH_8 zI9=N>jDH_0j1i%j(EeSuoLF1Z#uU4w;zY+AP2)AKkgEE@Asn9f^kG;0eM0m7`c^5nn&a;ZKywKkw0 zf|*g%^K07(>r0?M`cs>nrk zn%*am1=tulh*Q3{_g$~lRhXnkofo2+hRt&M zg|KWq-dmI$)atBLFrEfqf(&x70h!%&O_-bZ(EkSg~s#8ITMAy9kc2|4PYJnx|& z%Bc}vur5YBPM!dF($gWiyeG6D4q&TIN(I?-7>Ks(>}aPuLEZlkQDuvF@H@+m)Q(yeOuw3)l znhJ}q80p8A#`%w|=6Ki6TE%3OQzQqVEVMj3C!5Y{^+@omg;KE$1s@?$-hujpI}FI0 zn{)?iz2eqey|3sd_G}(_I^k;fzPq;9Dd`by!>6NzkXQzN@JKS=B>kBCP|i~|%X6KU zEjPqBeoTGg`};^2LEdS*yfg877Fl$gfO%SE8tL}DfRUc3T{IUS|H#(|cpTyB5K~#w6?yLN!UV|TYja{V%4K>ATPFLCpLA= zQ`WE5%q-rN3cO?1sobOZLGJqx1+?z$fh3h!DSxv#WXmAJ&I}hKiTqTPcnRCf3Pcm` ziK0+~XHswWVG5C9lT-a++wsdn@Ee(rE55lsbyg?4reajO+YY2m=4Gk7)1J+-kSkU{iy5Rj#!7p@8kcN-4z3x3>Fo|v`#H^ZQIff2 za<@*7c|)~NB=~0&oGrB9pQ-YS5F2@{X$Wf=XD2Fc3d8v^P`3Xlm29aT0 zfL`U;GDGucg^%PmttjV%d;1lWrg{fX8ble_o%BM(H0hH=)L0sL75; zc4kS9d-JsX11=Bit)6w$|L#j*oU~?(okX;Uf!P5| z4^t}7!qb2c)UDCMSVY{QW_g`luc@?y+IVRcB;_!AP;s5R>qlmsLVI2`I`s112lpEA^pJTh+C;LcjK)icQ zUt2TBd6RS})d31Hvqsh-Rhhnd|8?->bX0T~ENqs&?G3-x^}{EO4_q*>M#^=16=#WoqRDtRHM7=Fl^p>2A9f7yJ ziE%Y)Nwqk%MDi{xFeL1yK8~>O{`+Qr6n)cbaM^5Hh(SeH|FNAYJN>XmR(lbU=b~gW z>Mzp1B=p^yhcpy;Is&EDbVyZ=PJNiEj?zo~+_nA!Xl|=O^*-Zv^N`#WX2sURpK;m2 z3!^Wmqyp z(^QDFi?=L%Mki#BXM*_&enB`LgVXLqjXRD8|BM5DehrE7awS8?t`V-1$9>vgyL*R= z=W#e=`wZMybK-5ZSoE28P31|2d8{@_Y@y4{Qa!sAqB_ZufPwbPZt~i0*suB>@t@he zS#PgpPi|F~Dpec1ljTSSM$d;BRY=mHLnz8mcC7<7qx3>}+tKnb-hfVRHLa4&%qobd z`q;qm`>%J|6Mn>KrZbLrg?N+TA*vHkNRGfEyVo%-;)?er?0onAIxyGN&8&`^ABKaj zTXuIp@d-lr?K}WE)?ka^P<@iw}S&ac7j?Coz#b;AbLWAzm zFt29{~v1%2YsfzYAtjU$)G0%4$Hk!R)Glw*&f>qfIVN`0{9_In}>zNb^ z7|TZw|NWd;JyZLk7y^tO7Na-5_Pgi`q)tw76Ha>hg(@uS2II#K;tERaVw&oBvP3*& zh>30hrr;d?ENCY};eC#$#B(9)m6<(~?v|Q`Q}u|&T3==uWrSxa-7mWbMm2C5)`MM1 z{~E;{tnP?H>s)o`?S2}KCPw2XjW-5zU-h{K>#YiFVD4svq@xOnkG7~Q4J#R&BvoeP z>u+J`rtD(pLCPe)j*&QJf|AkKrxwH*J> zd*E(l$-o$)V;Z~Pm!qIzSX4_eXuLhvTe2c2wP_aCIMkVUxMhV}G8w|*e_8^C+O z*2jNZHm>^!0VB6~KAm{x>klM|!F?d6)3-}F#ak@_9c+%Tobb5pW=I;Gw>HoiN)ccL zX7Lw!SWmVLe;xK=+(!#T;6+aPwX0vLnyn9)WvJ!?UFd2)!j}w-+QfruoLvkJuhBkU z2R!d3Qv+qTicx%>Vev@MIaH{Sfo(h@9e4=l+!{QWpzy;NnS&S81+oX1Zzg^`MxA3p zj57w}V=(1h88b2Ujx-95NsAK@5+4r_p*axOA#SyM{12clW%f#i6F6Y|OH}(8$ z6Rkc;A2Eo6D#!V)2mvuLVt6JAj)_56U-q}Fvk9oMS!kZn(;+D`1uKom(ROLQ`7}%# zt_mza3T>W3+BgAx?1rN%T~eSj#MpRGlle=&wdwZ7DSeE%t5@u|(#Q9X*%k@VN%<)P z0Xo!IzU;gRMlaVZGW79xf|P8kdH*!CT2<-g%4Tw9QSLLADGd@DnI(3YK>)B#y@ zSGVXtHL&lbFBM<85MJG#4|DHGE^ZjXIn8Okj;6O=Ppr#*u2cNwbvIN_h0pvwlsw2y5UB|B=6MmCw_` z>-hmNFk#p{<`!VuB=i(Fk+B#DA-x1v zpuPB;s%=V1SG04slgw^~^hmEi+?qS9jF;FM7Y;{gCLf(yZZ2c~v18yNwi^|a?_)>N zH%eyeM0y+qbnxvneMqpIzM>psiu_~&EkBFE8xV{1{pIAo`o+9jXM&a~i$8jebeG0_ z_XB4ZQjO<1`ktHPNMVgTJ`;SY-P-+C|F68i5vztI-Y-;9P*4BV3=A5n0B}G^E=%uITw7rbLBe)AIN$2T+&X_uyo;!>;UNo8MhU; zRD!5F&i(62cbn`{+%C3rsZ)m0we0$4@*G1+UW%ko%y||MgIm$R!o=*8MUU4o`@>vm zm0GD06tg;L^a5kyv39I9gDE?+!$}T=OO(x7_KnwdClCU6ebp#^R93RWd9WKEnTP2l zc>9PA;agG_u1Q{ih-_L5u_^(rge%Sx+#VMt&Qg)FflHy1Rf(!ACZzPsI ze0^{I`47p8oB|4;kxf&1Ev2FY_wdMCy$;N&ti+VNps)i~S{rsd!OYX8y5{76O}L#? z8Ea-08_MF4e>x9?p2IhKz;`DXyn=_@-r0;_jwv1fRI05be`lW7&fZ*7+fCS0Aa28A zwIkwn-`ii)u=wQE&hKivVk_lusBw(D&&=6PrO^?wtpy4^poj6hcxPs5LwaZ) zHDvK)(NhKk%$X@kN<^e=J2G!XT`dnHmGKpum{6MIxgKCdnT56yPQ_#X3$mJwbI#@@O_NtNhwt$dp%9678Sz0s)%sT53V-x7KaL%WrxuBV*>lj{ z+8UIG*#dz6yx2nNmx9Ga1iBBY*bPA2hjG^O7w27U+)j!%m8OI-j7vdKGkjNU>0U?$ zT2yH9>?FwIMMVs-lFIZHm+6vgQZ2IfwNSMIv}nLF;&}b2L1_jvzL1yl-xOpF0J9v= zURlt&W||DOEYz3it5qUHsX(ma`is;#2jQJ%gK_O7at(Ktoj%+?^lBm#Ab24>$&hMK zmVjr90q@K~u9TR{vHD}UW=SPqNzzF!KRj=h_2yH+Oo<$S5cVo}-Y#yi3EL8z{4_SV zchn>k2p8-k<#LPS{DLT^9N^n2W|MoUXw+6z>=ZYq!;6qThOi{qUa9klbT!|HHdv74W;qeSSjM>jRVu>P1waLQbBOI=CV)bp8*-QETU(!lOGT|sBaQkKY(QVY>$?uRicg_Bo zc|g!CfT3d6H^|}QwheVLPV^oQ`qxGg6ni1pL8qj#QIx0n3NW`=(*T&lk+gK()9sj= zW!EK8uxB6UK>~ygMJZxY(d4c>MUq6IzxcT4l2n~V7hnMlH0AN8bk^d#`)S+>E(G%Ijqx|D~)BiNb$}&oNztK z)7w<4@jt4KE30=6F!6uz7G2TQyMLnPuZ(nqcd!2v4h8d5J)Fs#%@c`?lcwV7zhlG_ zx6prx%sh8>*#hPI_qaxS0NQPw`ED$PB1HQV$}bYts}>6lN}u)PCx4q@LJg>x6a}=0 z8Ui1{vPpgJVxf7}SVJ!%DV#6+F%gI0fCSjx$PU>X1(ygyUHDz$Rm&uz_s4ZSjQ zwg*{GntLJ(3%EoUdSAmpp0%z(xgjl zPUP7Hf0&Xo&^K{|v$jr60SW`E9fRNqKBJEKTOD=RXINU%Lr0jD1E8psoIlHf7Px?RWV8m4+I2{~cV-mmPGN<7ULbrDekB1q8u!SvefgsDLpNkO+-(vw zo6pv0k0SpTIddPak`P|!6JlIg(>8eA%J%PBM67V@Rgh_I2gzkQytaQL32*2eG&-DE z2C;1M@ubKMI>26NbgPB&!7bN>@Y@8dc$;rC`C>CB@Ns=u;05)$0Ou+=syZ*%s>zH6?pjycWj|B1F_&Disf(gh~sp=w0YjS{J=N2((>!#hYNzLJr z#O=;Oox$ZLo(&!aBi_22w}q)5V_2E~VtDw^k4A*IhmOKrU0J92ke7qr+&x3Cbv69 z^n=kMHZ;fF3(iQBGrQ#k*B=h_cUJJ20k4;jAfiAh%0+7GkQ0`EHxl+qUW-DQII5MQ z-+M~LRSpd^C&RlK1nZqY3>D>Zt^mzZ2AlnEO_>=mR74w*MG-t=|MGS{}4`dbz!61zk<*-m+>@h28#k z!AF$&NA!O-X+JEsW_)*y8xzJj7Ih?a1>F^m;CF%2Kf^6=1wNzf=gQGv#R1vQed+N~ zr-tzC?^g%;ztrU`Q7&9TKyZqjfUU}$^e`Ba=rR%GBZ+T{x#%}aOxc3c+J^z(KSRmN z0jVpGSMAe^^X8O)chc+%S;n%O=y?<#)=8wa^O?$H*2K|Ltae+^KpGfFj@E5Je9%;O z5S@wl9Z%F#8}N|7FaM7(I3v=K+(M{@s*XJu=wip)OQ{-={UA}3RR z7=z7ZoJ;SV1?~7Z*g;mOesV~kJ3H?6#(DC|vsMJhsUnYPs!%}^`FL`QzI9l+R-7Y#X^fMb z9XyjjI9hA8-rT%$^tnx-7z4_d?ye;8U5w(~mHYo<7y z1-pbNfD>h5S|@#qxcDEWt>J-~NGmt6kFyESoT<%9e{31NjciOXyu;m$dGWf}o&N|r z(uwo|9W~uU{N@6mRt0o)A{GN?LyMKdXlgVdLVERs$Qn3TafB4T5)nI*fis)7z%Po+ zI#s7k?TXQgnt2i#(z&%m#jb(%j7F9Gq6rxT>5Vz7RA-Vmt?iNJk|=aI+{iG#Uq@b% zp&kQHvXgN7j?&TUexaDZlVP1=Huz<(Wt!Fz@^U*?#JzLflFCT2kJIDjL%RZETeYHo z4iaKDN7t5l#DP}!*(SoTj4eFYsi2a|bJ}DtRxD6dTM?n0!~V!FSV8xpz=2Lky6s4} ze@3f;3gMv6Uh#X^kIn0U|gF%lhAk155G+jtd$Ak|VX)p#S@+&Lt{-NmPoC$(x-b)hydeXn_1M1+pMc?!j?b{zYR5Y&DB_-jeH`` zlPF-PncFz?S`#_r+5^sydwpM9mmJy%1Y?C5@oaXv#<&90-3vnvY^+_PSPFhk_|JN- z6B%q62{RN2@Zi`_Ru#L5b^p*Nz!EK0KNY&#o_Vw%<)9sT3x%U#Plh9t26z9E+xXS5 z$(JoyCC(?#(Bbacq@{G90aX2qL6?|XG6>`Z}fzSTH5~{n2Lg2+H-1 zPzo3~Ss{X!fBO|KGQHzjPKW6tzmFwhvlc~fy9##7vECX8!CF%0OkO?Ng=eH-A(IZ- z)d)+{?OHE_OPAoyY1}K%?#1o%LJkv>*cSI7BQX6k-R0CM>rLS5ORy&{aas_8flBeQ zfJEkuHmQiKB;6w4s*S)P(~h028h@rB~pwbG*-d+ zX0JE^ZCLn__wouCNqoeWwL&+4rA3`|knsW^zz8XZ0 z{&qhpgXb=VhWOGbOLQmmySVn7egqaQMAOzbRgv=Tl@s?mW5vNQgKQ8!I5oO)aLw77 z<2wCr|IA?FFZE_O(%&qxP`1;MbPY&x%tqX2CZ|EA-Is2yqTHn@9@50@|JPyvKh_s4 zhLq6ZPh`f=!S$Z$B2F#_WQW4_SnRr~>s?*s`EB*U;>o0bb?!vBC>OhL_kivw8rNMJ z)HLR>byIgu=d^G|SXlTUNA!hJqx9Jws)0%~Og8|wFrNDl+m;?^@vJ$*J9kbgt4N&>UzLjleQ?+cP@VbDuOQEoLE}8&kUgjh;ED zJlg6TezkE|aMM4qT68xqru*4s{n%#T55Fp$2-9?@#Fa1Spjl+$?GxQ)MV}>}_wn~@ z#ytY0nw_NmK~_v>Q;03MPcrp*8X~F={1btrV?~=HZAZUtihLB*7?Q@B4eh9$YiaHf zz^oCIuid0{G8PNEtQ*!oj!OXlKLEfC2P zbWYxCSx@L#KLtTDaOBM5P?a^rTJSAj1CbksLWaA04K|8Ei)$0}1iD*BO3^7tr{FkT zskU1g`t#6`o7VVr&p9cV?tag;%JlL8@_lI5O#bjKsGpqrXcpeAObMWq`KuRE1Nmad zt0R7a`1S=_n)&Zy53-~77tUMLJoCAHPXa4281PY5EV4g{`*FMPE@`i5^t*VHO$|cd zOd(~xzT(KkZGwzRN#uN-8Z=oZY^!|1WrZ$x43V5aEe_?BjIj_Gt#QovjTvx-;2zWh zL;P%=*yq_Jo3}c>8?M+6it6+xu3=_lzWHN14U?hO!O~>EYw$K<-Pa9J9(bwS)ek?g4KRLCm}0FLoTIvnr-()$n_MUwtT*}g8rFXKsWCiPDUrA0O1E+lng zHIY^qT=xcNv*K&qW*f{aKK|9S?z-1QLvXNs9avhKE5!U%wk7N64Tm5tpV^9Id@w5` zo&>Hv$*W}Y(CHdo)oVT)@uJL^(_)@Tkl!9j5+z=oCCPEYqzP}Z>KHplj{L$2L80G1 zuJC+C{GF_YMvt!9LkpgcIqKCQ-*~$++dVQFa{?k6sRFjw&28pw1=mN}(3c+Hqiucc z`w&`bx!xR>M&k6Ix^%Z<9K2yE$58S)Rbv`OlVmEy<;ev*aUuDc4~ds*GqmMIiBxWA zy%jPqFC93n|M)(l%2)>v?<<*S<~=1B%RQq*cIhgeac=mXXGBa*bN`R2L9Il7zvlJ@d=#JSS`*i$%x=B7YU>jZiYeyng9S#kxx_nsBcBtC z*M%-WyqjTutE3po;zyE8Rh8}DxIC3>hG~e;;IN91bV`=7tV+}J=Z3l{oP_E7ds-;r zKod+(|Lu2k59i_U!sWcElf*s$vPkKpn82O(t8m{2@5a^KQ$U{U-w#_HPaZ;-8n*9P zBVI|kI#0h*RawutuzQ78Cyr&OalgfhzOZIyXdx~puiEQDo+pYdN@y4XC)T6h81Y5~ zN@~5QF92RfsO`jhSOJm;OweOhAK_m5jc(JpgeX-GOmllt!~{;I#otf(c*O(@wQ5kp zc5v-JhnX2UjS3G`)vX0%%EnnR-%h82Ey8>x<}P0Vxh>`sgakz(ffv41v*t9|5)15& zx8Vxaw@2&(a@={TVWm$aeJqOO{DGYc3sw4aj96Owv?OQl2#7a8V+ak|q*hIDbRTq; z&*eE6>ahZ4d;^Ak5})N2=iVlkFu9`!;6FjPz3!FSSUfv1A%;oM?;|>%X!r}>MjEmY(8uM~vz_rMKJksDy1ncgyE;gN{n`3d>coRFlYIP+c*(lU zNz)}b7)hx9P-C(F5oyvhADRzNe|gRN&r?mV(88X@PI01Rtf{2uudi8mH;3N_TYc#zSzpMX8%X-)+`o0>KG!2$Av zEjI=dxezb!>Ms4KYlgg=qZ_~n!P#AozUW4j%-P3~9N}05+-6%Lx(mTU*&Bd*J!aD#dM$16jMr)Y?i`)jXAcx;>e2INj)DLEqdWBa! zpnsAaNR|yvRr-WJ`$zMK$WqLc8C*=a-`B}VC`5_$rEx;JC~rB<$Vq$v@o)8rB!1JM z*WCdzDGRank$I9eX`_~O3?o)6Jg7(0;-pVmC(>g#fpvi7R7nEJ1e3WGz|3{)@xWi(|c=VhF!B?4Sr-gMD4a4^busH}L z@J2K`)3z00g+g9GE{ci}yp37yH&@f>|gAGzaEQ+$kH2p?m@GwoPhkLDs@Gxm;VH z$gFM}RwfM_y)_y($U$|cOCpEWv%j8vpGtd|M27r4MwTu2xkShlR!Q$s^`dhHD&Wtz zyc(js@^o!>=!T4RKwIOUnoH887MATbl<`qtRndq#=F_#C$$+xjUB538SSK$wA=l61 zMeA(LppoNu)fWfl>|%|L0K{|_EzAUsIhSfCC|r@8S!&3P=ee2p6^%tMX(H(*GAgL) zaH#^9ug|eA04ik)p>r({!oXAF6~ppKBoBV5h$wE?7na$u*jUtnYK#&))o5LZ+3mCn zO!yKmv1bmGotGeSW60l_fyRAMI#oi@wfW-lMGl+_NDy+hV%dElqbAqPuh_Bc&NJdz zzZGq~;PM*ZA6>%)G+CkQy}qJsI@QbnGdNoh#%-E*x~2lJrMC1~eBd^`1mLJlLlPEw z?Ryi-%iHeb9v<)L=lv&i7b%+O$QSd74^|D9uN!q)%JGF*kk{EF<&}Glm_pgFJ5<)N(f$~4+KK#?T(7&=NeXyaCM3k<#MG#3(Nc<(x6F`C455)wrh*oXhL&vPeGsJV4CNAymF|8rQ+}Q zAbW*2)vC<3M*0hkY`CS%`7#^ul(U)}MbkC)(uynabZb`(W_?ARuPl}oXd0%`ulo#O zsa;R3PV1oTuFh@y%OMHSq3jx%K{eR~j#KQMaRNo180-fp%ygd#50$H zjO)tr=tdl1_T)5$fo6h4WpHPHwLOVS--IxJo;LHK!8jlNM*|011k+FXK<*xov^a%} zc&J%ZBzUwAkcl4QC{N^UMo9t$M7e-TFWqP1aIw=Pf|w0pb;H)O1PWIK7vBd^)B?B? z>2yT?+j|D-#&{izh+GIF$tgvPo&fK9fIVPfMXd`I}plt-5^NV1UAaEAZBYKB@IK=~X|$?l%QzUe+t5ST z0g@*jFOZ=`yoUZNtyj0alDiCJnz`LOVp#u9nn^7Srli^~`m;@&ebm`AeRo@5=qJn+ z>_SBknVr<#O$Tc8=B!WBK$5(Y`{N+va=RtW3{Ls^QQd!9R#*!sgDv<_Wwhqz5ss z@^+5`VuIq1T}G3A@5dK+9+DxP5Uh13E`XKwdb6^{5}SckFRRL+d><$c0y3up4Ilh{ z$|MqjRutPq$)h}3@Vy`7MA7bmMv)09s;VPzTDzU3f=vfng*5U6iB@(SvH7icE@Vc1+k9C+`(ID=w-P8}HxalbISGz_8G@q3 zjvT#N6e}u~>KS&|l8)bb$31#%K@Qm{OE+euT!gdWBM1RL>nbT^QU*RI`)dwB2CL<3 z+=L}ekv^MaO1rGXArJ-}wMe}-;wp13gE)aPh$rhof`;8vuc!Unc}jsB_hm*l=sW32 z2T|g$2d*1BJt5Rd+uS8s3A#^|V2Uc)1)0}a&|E+Y)%6#!3VL9$)i+*GYXxFVK)bL& znGMKY27IYKK9aE?4VLHrz8`^tc?nvE3ASVFGwZMYi>O1O(KZ#OuXF;U@gn?t2y;OT z_!{<$)+}=?ZVlV|8bvC{DDyLY>TG5R99VZ>A-(H+z~@ITA~_S9o%W{aAAM^mclu)z zqRX9#FBT2X_I9-C84fu>XUPU3Z2*$bgGbnON76XDr7=B6>Ds|)DV_qAv?i8d&A_mF z%J|~{SAmyF37y9Gyc&)?kdwB!9n%BX+SJwcY@FBoaacM&5kWU-JK1emjWRK?!_|0D zh(&tvZrBDqHV_{y6Ms}w><1x>*}lA3VFXo*f6o*0sw@w5)elU`)j_@i`j@1ajz)96 zbi$XEK_Helx&;HTH~Txfm#A|y2cvgRN2N2rT?d@4Nq{X^gpcFrP87Dx58{Vyr0h@s z^+(Z!(F|(sVE2SN!k6Or8mBH31bxAPQr?%RsuBwMFv}*F&s0I)34i;AKz;^%39SLT z0a0qWM8=YR_LHPWo2!}0JspjK^S&t}!c&nL&jxU8FoY@`#mT1q!(p6UqVj$m2d= z9`Qf9`=Qd01V6O^g8V2x%sl}kP9bpl&RX>+2&WjZa2vTt7uq`uUx9wR307g_vCa%j zu^M}qz(ui=1`9+;h0oj@msD4gQ^z+#K75lPaa4#pD)bQG_+l6nsG@SX7c&R#&3tS8 zXBUu3ilxXvZNQJVk6oyOLM`8&(Cp4}WA@S=9+e+q{{e@(O_?1?L5LTE9(4DCSswwWV|zs|!7o zE(J)(hmnRTb>`)isJapfWnr#qcdyGachqr_2W%>PsOL21>X{s5YG>yR-%`W)*-4sx zDVX$bM{s^h&ufAFQJkkoA{-_fZsM`v{EDfA{UxlaCnLxyTXCrkz&5@t6#aIuDAY4^ zv_fzukK#_(e-1$VtL+%4m-v|GM%CGc-FYBh)YB~ls~+krG4U|vsRU>E1%}|jy*a?f zDdnxkJvHB+&(TXcv`v+48zv>zq;sPxEh3}W71X-JAIg)BxE9X*-FwE!8)slzWtu%cbCUN+VUx*R7ei-^$Ic)}M4)y=M)^9jke zVI|DmltF;i*$Ir3d@Y$PoqH*q{Jg-wd+kq3AP4M7h&TG?(@3(6N%Tc=HCWj+l;>$y zG1V{i(pKHzyuycA_wa>!WK>Kaw}p9s^mwFxZlArA0BjE2WF;%-Vshb3YNSR#JRrtsz4tQ?MIgu_ER zB`CS?YM5do$tYL2qn~e%;fC!QVz|F_X>4b|f>fIH`MJn2`M%0#0q$9{6lyM%TdKCQ z8hQ-?c#ni%%PM2=MS)MG4=4>52bQ?4R|7)i4|0<%pG3`sjHi_Ib7xcmW5iwuwrj%o zf%5h$$CYmjxPTSxRb2vyiSF9)kR1Fyj9)K+>=No3`eanb zIQqK&FmiBQr!Xj5<`)A;@8p8;9VC&^n6=2>_mev%h78n$f3@~^vDi}BtxnNgC`ff+ z`#6R;9Hi^4-tUDVKU&5om#aL5aOd1?Khp6jcR;?f%W}X*@=$q0s(89`3U)LiglS~z z7t^yZ`NKF>gtv;sIm{GbPProC0qQrdgH3*GOeOm<{X4l)jipb8%^=(t<|D@!}~Uco%fo4Fa*wjJP-vO zn)tD}2-3CPaw4~|NuC*xUO24{!Z>yqNx*wqsfFDFD+1k(I&X%$hpZaX(3sh+*NZYu z_tqo)v5JPz2qh#RJWpt;a|PA}jvw?pvV(g+HuXxet7#nSNNfyoe|prHqS==gz+bPaUaJ z@=ep>?{$qyQeKa*P}5zIPA+2y=OX&=TE~xy2dW}KoQ9xJEWmjm^XmjnsyG7Lu$WB@ zNMJ3Q@(E+=bJ2}G|0Na-Q+%Q4`!)~~F^DwMwyt{?^(WpN&P=CCl$~kMkxFq?%)H&A zggeO<+DER+RB#R(rlk#T?;Xfj2ih(`4|!2R!7 zsgcGIl_p&HToe&c5P2JelNtcE@0S~=c*M}TYBd1fUWRd7{ouANB@Jk z()?MZUMp|WQ6SW%^U%WDc-uLwB{GP0Hk~(Uyu6|N#?S~%mXJk%)qv%ru^D_w6r=Q-@e`IN~(&{>^gpq8kr za~NDipef|U{Ggc3t|M!42jvPtC^A9gP!+?`yPa74Yhdd7JOq=gb7kQpHmQfjt3rjM zjh=OJqN{qz^6>}Qd*)jPu;_oeu>&7|rb=k|&9UGs&^IP+23q?5{ftdcnE%6wlXrz(8J~m5Qxygw65qYc(W8rD#xU*# zqRX(^Me90)@0+9xZjUnrNV^$pbhe$5{Spkcz`KXXIlD~frTWCh+6SB#*rVgydh>yV zHM?JSKE@q2=@~LWY`b(iX)48cKN0zH;P7a&W;QWTXN*ZeK16b+9OBJ^P3&<3z~^IV zrv8HiC0dP7#_J_VM0XVgn)jTIa<|gVF%#!pf&%n4O*lAu@On014Y$b+##Gn-mYp4v zV6W<07T7F(jbTf1AB?z;V_sWt%L=I+$(>K3X@%D)xjz%$6Cu}6nJlN2?;yv`Y+>AF z1!Y8Cj{3x|$#b~2LlM$67iLp6w6H#RVj8b#18%vH^% zDp)29$^)uOuWZ7YQ(-7;2#JQd8C^F~i50)Y-@DgapJUl}67QvoHQxtv%e_rl}Q_5Z_{H z+hu2-EC%%Qw^c);ER<8@u97EPbG#gD*`S{Ppod4c(58XTL1VMPOR?>Vp4WA#%jYYV z@W=*0&+vbB1{*{H-FiLxq5YV&_ZKYa`TnIQ23A3}o$nvF{nWxd16tCK`E=snxX~9A z$8SK*DnuI$wN2S@=-%vz>B3RQ?Gh7tz@T(_mk68ML-%0f=~6fh!&S11w}qk?JF`kF zB&Tul#Od^Q$|{y^x}TI-IUcO!JYRH5t1tZ6+=4vdRxdN1sZr6#=FPnGahPxdOe1AoxnZ(xl#^tzb^sL%RYlESa> zCENfQs6w(b&gLbn)VV`d_Q7SbYjFyhyc)ZHWP6jh2(p5P>NpG;?eY;cV`i) zg)_#jeKjIMaEKAfy3sNiR$f?Ata~MmdZ0rp&~D4 zu@p}VtF8c49P$2TxfH{E5j0vB8SXA$T-1o)m-lL&l8jJaajg6y;#+de zsv)?0h@rQAMa_%~0B?d@K2uA!rmA*2pqk^{M#I-L{I%KxBZ$goqcCYI!%i*HWG8U6_N~Mxr=DrljqXsP@6SH# zf}bP--j_9z6-3{T%RSsfvRNq8p_=NIOrhsMMe8mjh<}*}f&jDzH8r%s+TqJ(Sc1?N1m(d-tW52vbzM&R>+CcTvw~3wBo8{NW zv(6n=dAx8DFH+$$$hTz^Axs&#F+2{X9h*ST%kMO1vl;_F)uFYWnBf2(lQ~D|OGF-e zUs$UgzIPBjHvoOU^wP%8;Ogzab6eKg5QcZo5LZVlCJYrZarE|l7+~);v_TtBaiNv| zANvXxpr|E{uYDq6)IZa2l6E8NBv-$HXvC7ju5qRh%n+Zpt5GmAkN0mnbgbpaspZ;l$T}NM<9NBAE5`vnfa4 z4<;1Y2IoE5)z{xfkS9GJnK{TOatt!g-4>@zK;XgE%L44>je*C!`J#-CEGNW~Yv~Hko^7+y;Qg1CYsTJ&|2_f#d?(a~#cv8Q9#Vy#Wi#&u$3O_YLJ*1CvM!HSm???EnHibI;O1db(pUPR|K%UKFE zbi(L%(qTz_B7Q^8Z=#vTmUGulukE|{nd*$|pqn!FbMqr9`oiq&aTOrY({2eN?*hkm zF~@k~i5z#?Bq=YxXiL5xT1mfk->gUdW3fN!+NUiQs(2k~1SoPJp9sU=HMeyuW6SAQ z9t&Bb-L&*b0cPm9Bqj=CXm^3=f60T0s{qwP9(bj@xg1g7IfiLQusq?f+toQDwmO9a3ALz4@MG=E-mH2aa@#ls^WRfzCMGSO)!ceh#&wT@{7r2^ zwhuG77?v{JgX&=^koSU;UFe+)0<)9mIQKt-^{p?MgzK1Yd*M_~dXeYU@vPadVYXt@ z!L9r{X_~^A0Q>eWr$}0k2KTj zMguUiH3}l^SP-e<(N<|Llbq$IE&n-Qc?A@eiKC(y;r*g>6Gb9;t})jbjqs<J zdJ!`s^~GnLVN!YVvTF9xoa~M?iIjP`@2-;JTa=GD<JZu=X6#LOq;cq3+k)%FuB!78howH+apE*fE?FI#JfLYQX1R=+ zG60Zr*C|9b>0^jg!^yfm__?xKi7U_IhI>~HmVL#d^>w2q*L|sh`AWg+skL4^cz&q96 z=MDJVi{Ad+oDT;5*1&cS_a^u=t{q9kuyncp<321H^Mi|y=E5ksA0OC-eA9}^9$oi0Z zMAYC2EW!F3O@p+JeVj^8p70>3#u9Nqs#dO>NsRwA9U`6tk`O7`{uk!lmsHFIBembT z1e8?X(LR#xjPkviblaLlN|6nW%#rwpod8S+SfU@>Fn7m!$25#EMEPdmol{9SsaV|QId3zxP*@0e{5yUVuQ*0ISx6PZWY40zzrgQf zc^3EW&v_Tl6^nix)FMvu^&6M}N- zP@Grc*Y=*8v1E>qwz*8mrD+>Qk`&T88|>GExk&Mmlo&jSKX(;{6Nf+KG{CjH7gfZ$ zAa=A*vc-GPx_>4}3F&|tZ*Xx?W~%#V_kw+Cy{L=RA#ZP1p7^3Z`;X)z1t2=5w8^AV z{a)d|Gs&GcmB2S#3jAGE#56dx#QVA1ss41lH3qJ{I9dc}QTU%nlwcAG+Thg#IT%Rfh> zg@yGQ)tg$YYbl{g4SEFz!Y9ZrSAXpPQBB7=eUp?z)eSW_W{Mx4A%dHDBE<9-1RLluISbAZP&y49Q6_ zcCwkou|vKfyv@qLCR++`igV2*!kkW&s&z56I`)VX9N^zS=nebAEVn7ySm2=FZxD3( z{^_GzD&8}TnbW4`XT0eI0GhEnDeJ47TJ_OY^ujeELd@=WSqzJFjBJwa2G*-K_MC zj=O~e;bb_@E@eTWNudjzAL1q(&i~~q2Ab^!NVRIT%mtqZ>xQa0h3ajU-Pk{bRH)JtvWt4=6Sr0bw zk9dp^PH`X=a(0)*Tmvd(dk4sgw$7WU$R&p5I8~!n9M59-CS`bO9lCh>Fo!nM0Um<` zQE!S%wnXIYuclB11FLFpoqT-F(Fa)zZXm$3D&a(6$&(84*E{X6Y@6SO4xaippTDE{ ze6%^v02-)K@}#Gvjlv#-6lyPQ>_Dc#0hnH8AR5Ig$>-lz;KWJ3taqQlJF)}JMlB&u zFO#$Tg3jhKomX42#i_Z;{P{i*vBKnKQa0>Qq7JyDP$zA8Q}tv7$uJj{BbHDS-UilL zkw02RV`f$orkUbW9{v@-8K+!!EZPMgfhzdrm)iJ3JH_im0#BX&o4KLS$!GqCx6tp4 zgh7eb?)TwW$QqbclLafgmW%?Ag`=Hd!t#2}kc1km4D$vnDtAh4L77?ug=u}qraf49 zB&;2}Eg0QvA1V6YKGovMmE)v0W-@zDp}_;&&huf@cbd+mB)%M+M81+QsdOnBt6R>I zsJe1`?bvZ4)?c%6Yfx#tdOoF0P5ml8mW0~Rk)5m9HxSi_39+crkfA)m5-_cwpa4) z?_tV-ABO-@gn|p6jws&TZxhaV%j+ftL!V{3!oUKvamuKu8cW~i+nBGQWvDKwX`UuS z5A}jHXLkyE6?87gOj=MVQ3cc)%H9`42lX0B)q`NZK=T5ua3}i}5c|(Uub-gk<1w&R zkns8tA7&_n~&P zBgl&KIwp8FMY>I{d=7onEyN-KqSkEbXhvF4?b}tdXaxaaX+i!*;zrp=L6;5OJ%Lyl3gjPFh<`@r}mO-D3s86ndk4+lcL||gLh5|L%qtxq2b|OjpwIoxx*z> z14r)}Po6O^^O0JEryx@tTt#LBf+9%hoVqdp+7Un4OC-Rluj`xc^)i)XBgAae&V8)R zudgXv&1B`uVr2Zb2{c5z!k0SgU{z+x+f^zT5C968T_o*4;S_m*gSgNKdN_*fy*f-S zL15xJmXsp}8u;xyQl*WaColyR&n1GrCT8=)?wOZbIdY2r;bF1i~9goRpGwfb~M?1!ufBPCxoU~M7gyFdP zz0Lu4jwCpgw#(F7?WsFAe{8{}Xg}CGGg&Sa}Ga0bfo^NTk-J_lwAuuY`e+szUxaX9R zfj``PZ)7SEjHZN#-N!rdI0E;G5C{&*_!j9$Qcu2TlN0%6`IG8)IG^9t&6 zubgg@tz^xwvWAOd>WX*t!vJ_chvDjFbEUv}+0k1`55eRrKM>k|n|fUihQxXB0?pp! z-V8E-Tc}hmg3?hmuSxk>pCr8Tp+1UuR?afM0swDCg&=s@*<(~T9RB`Vu;Ft!dj+Hl zal0M#=)rP-k-ad>FMy%AHYHA&sCFA4;OE_LEbEEb86z%$)MY_17tr0h)7>J?UCr~X{V3tua8=@(5Z zhk*}y<{iZ%EJJ#Qsd+qjRP=x2$*|+{Q1LQ+RhrtF-4(P@!(?5XM_(KCNKc~hv=nA@ zr%LRmG$V%j^XVIpCWxy`lIzkav!bq9{mS1*8RrCmuWQLCE;dS2!EM*y5jY&=Ba+mG27A?q5)@25TJAH`X6m_o08+3&1;V>R^3*{;dK%00@qY<>l4c zO*QUuN%%&3P}C4Jg}0qMoID!&Zi&Q4@Kj!{Z3RqCfT~2)DGojDz4WW{ADN=@K^9d^ zF*zk?^7zSXyLW~One$@C#7msiOrx>Vi>b2Z^zV=Uv(@$HIjap_bz6zw8`;ktsp+$M z&9&1AeZLP+pC?JwNkY$9^c*qmH>r>wBfgxASTW@xWd2g8lZleQ(;R!$LtZ&m@Yf}` zQ8vt|0r87NmUjXM)5~Vc)>u30GBHADVx6B?pTQh*f6eEQv@5L9YQ_6uuWPrU1Ak8P z@%$EcX`jJQG&_N6IzUM%zW~3fCvx^vE-$!OZH~CDfkCz7yOw4}o=|HrY)0J<>C%%T zoTDa9@gHJ{FN`pS6@qh) zY(FyHPWSa>$HjBqAb>8HcO^@_xPhuTSBOj-?*hj|^`-2ZP@Mzd8= zKd8pALf2YVu7lg{Yk-2|o03&})$F%kQClu>8J*LmRLK9X`9W~lcagMeE5wHr*$0Nn0kAv_ZH?}Xo1oK1tI)eC7*LC5!asq6S(boG7CIq+WaayTx)ONP&+<5$B70XZ!kWjspINP#vKqP} zCrMfrnzE*~Vp-%=o{cg$cE^rhmHPtzvwo+Nu}Gf`X(J$3&5!Lw7)mm}^!8}pr-31h ze(1G_p7GauInwII74hRmb+bZW`I(CBfzpL#n28x=)6zRLggn{){Ynp6gVzmhuD=hRVw4u9b6OygllyU;X`$FR^Bz?v z0l{gR!R}im5muASrRkphtXi5m5fh;i#~9v6!U(;uj961XMlV_ZV%58qER|OVY|hnw zoNrjNHCJ7>pt^;yOm%;^uB5x)>iKKTQ zJ2n2Hd7VxI%Y7K}H~Fhz8+ZM*5U37y0tE#-EN6ce4#{+id+A5;PE77TKw6dSs6k-e zH#=5{#>VIR>X~;JA^qfVTbA#%{`I4C)`}X%bcd$r7+m{4Li#)~8_Wk?tk|badE{~3 zF>EfBxY}|lOIoLl$DH#4+X?S6F@Qoct6rWz=#D^h-3tH)m3le7#bf$+F%oLY69%qS zDM2!ZTXm^uUYz6pS67H{lq<=j#H~RcrZ{`lVT!G_%STWpp6m;Mkd6&8b?c#C8kq6y)VnIR=jqYxmwiA?e?x1pJ zJZ*uBb zudHWR^q8?iX1iM{R4J z=oIQry@HbSvna;yRX+JB*=^}+T$#C@e7HL@8FDTwVUhHKkTMo^l0yQb@P6^I? zG$L?pwFpX#JXnHuJhTDdo}55gSbK&JG2WtHb#BAYS=yY3te8j(DgjHSvKSgt6s;2b zUw&o3!r-pN{Q}iLz0sKj1}B9>P$pi5qfK}x=rmOYszRtSuLvy6M{@!j4vs9l(VXKf|HCyE;|8ivzTMJK^7b>6F1Vs6d*0ZlTISppQg%XeH_n*7l+7IHx7POBAm z^K2aypUyB?bh`2?am#vjj{*QdW!YVQkQLqNqPi2R2*-0Q9ill&!)`S_CR5V3AjG@18tviB)DOv;@o!4haM3O^^f5eay!7NvA=T!YQ~J~UM2Nu z+`J9U_9I2`<8Qm6!eriOpD=!c)RGNC?n0*Xh?9mCAKxEB;o>^=3LW8dX%R&17#jC& zu@WLvO^ngjuB>>yNYLTUecB%~QAtU@(gRb+e9bOeb5kBP7Fkrd*xLO!Fw5&0teh@u zPhz1W_bTAKJ4_YFwEn@oQvdjVVRtzjdSzTD8%9rzJ|E+Mi%dK&myK$~IH4*%CoK&9%zIBZ@i)U@(>074ZLW&o!HYp*H3igqMf}58FlziO>ckf< zqmhk9bjzdx+|Lj;`7!pBdNXo_BQV(b=J`-N2q~1XHG4{*aEXh{(y4sgCEStWb<1fs zEkiGWrm?cvEwoV8#l{K zNNLup4oq_}K$g;8=E<~?d!GL3^bq@bafLS%L+>3==Kgbt)h89DjTIuq5le0$vsR1{ zIOi{t+C_~+QkS8Z0|v$>s6kxj@*BPIcYMgjL4t{323tdB7ZbVdA_k0H3EDHGYXBq+ zEq*k%=-qNW#nUityO;i{J|V}01V4K9;`cYjO3jL+yJ8;lzvR?dl-&d=*f$URt~tE@ zCuTv0dWkKZ2{Jly+Uhny4Ud{A+H>mgU{{6_DY-Lb$eHEVrOAT-(OIXZb}Pu_#pVB6 z0;j1V2m2EBXL?Ha^X=MgL-eQpMN*j$i4Xn~zQ{Q{e27YO3ubBVjgVjJYBFEx$C;iT zt9>w3#*Z0fmeQ1kGu4JGC3P=xo8rU(iq`7(V$Yb_ zG4Oj;pqevC%C?2x zP57r_zGPMxq!+c!m9^V(Sg}STK13}NJge)%xVX;y0A_Uf^m@(m=_>k!Q;}g!{l>hO zfV{-AK9}30AbW18(blH7ETCSsR!B$*?neOsKLEhQPW#aUIlaBFDbeD}o9H&@4K5*i z9yA>l;AX0(uC#O zbBWY05fX#W?ICZafRpVw$LdpJM35Cs!JC04fJSnhVMgTY40_nKi01T3%x)>2O@4uh zNFE6*I;UuSD%F&wxOQ(S`Ed`d?O$1Gk}4>UA>F|3_myPH;{b9>-NIZA9Ye#7KXK=Z z%`?jZNvmYF31%Ssg}6BxeC$lHBhb8MRdtWVKBze+IYZgwUi`03znbG3RlYR>r|tnX z$G;iTRWP>F#&EUwV99j$&oZ_V70Kn*${QGM^sx8Fl4a+AM5zOw*;-I0WihU+m|^i}xjA93_`EUljRsdM70n^)tet9S9b3^C z0)|^D`R`8!`clv&m=K+T-WN10*s7aOG2JL}xB%-z{kG~ZR7ACS-UY4f12$dxKb|Tx zVR!r#NB;clGKQ+ctyCFv)=|Ff|c1|IW+EE8-5L`t@P&NC z#l!v3Etpa^=jU+hly-4S7tdn@$AlXt3t!Vbm}=3MX;^JHB@g|TOn9*KIPrt8;1B5_ zEtFybph+5IBug6u$q8|6gYht(;&si+3J%nBF*J6TBndq~+apIB?j7<~YW;&0W$>G* zA0;97{s3rUso~cY?ccnhNhJM zncU1ZPQT$0rHf?W##H1)ild#$vSKqMxGdEqp}@tH(xXLSJL!{cLH|9-_U?@+T;P>B zaYL)CFiPDQ7uLHeG#FmgOsJNaGsQAl=O?dqk34RuuGKEyO`w*(z>HQ|757>wAs4S0a>6MK*6B|KR zIb1wlE>=n0CX3wEK!RTeWSC{32l2vwZ+3A4+js0GCwh3nR{GZf78i!C`X5IHTcoo| zgtVMpu~mcqX!&@3ZZ*wlhJ#)I14dOE5*%9*ym$FZQI4@?w&?Qy%Ix!jzPtEjhOo|< z!)35ZYM7R|Uxg>@pOD;sepBA~v}DpXT{8!&o2p(8gUL;#WE*+uw%gFh^~L_BN^m+e z#3_h(75UTS$J<$VkymQHHxlSR*3f`jBESiV3^C`!H`T}xNyfJ7c$*@Fw!rARC?ExAnt zm%8%AHKvDH`|FuDCq&t6@{;n9ufhx+6as{89T@W?Y}`-^In)z`9$IMc=S^m35blt(4RgdoXQ?%sn?o zB#E=EGekn4On{|;er-=gDBz}6Yc>HZ9HO5OrT~hI%9i)LY6O>JyRpyj$auULIB-I@ zn<@a!bEcM2l|E6=5ihN>h;}gR(MFMT`cy9e{~Ch>M#?c>!2fZb^Qn*qSO@?!=b*Q` zCk23}EtO3@47uzb`PM-qBmr9b{PBa2{z7nRB&{Fy=wPa4sFH*gf zu~(cv{g#B6+DOR^%OKnxquP4NK(rTy7y0g5H$fc)RHFSDB>czp<6Y z!J#DOnLs}_4P!il8jCN^;E&oUSMtdL*7J+9uxU~*uDEYC%#(m~!wCAppZh{7LrUZt z4l=OOLoUD$K}RBo$y9}yih|={%kDd)T}N>E_!yvnz~G?#<|-MiFpw!>?uRlDVMm#C zX-OlUH`N|pR80}Q52KGzi3cQrl9$dfTc4*{8zHtR9o#kZeo`@Z}u2P8kaLVz)6w21_`_cyWbz3TU$`<36Y(vCuV#VPjeSJ zE!;?)CxW6ZpCT*!Z;_$bz4Jsvhl1Hk zIk&-opkR$dP-^s^Pn}`v!lSRj=3r`)aBIO+ygJ{L|l-l%v zWH3n~$1*-2M25={mfbTLlB&rL=iRBiDpBtINm1qeuBhV^tI2egYUGsIB#5d|5#7&-}N2_HbRikl#atzkE^jNy9ZsuqmR zwq$;Y%t@P%SMX5}`?`)-O8g~bLIQVy#tXcla}Stt{ls2$9pc?1Ayv5L>Gr6knCXj* z5QV)wOqWQF$f^?~O(h0P*GSqC_}?hhhj3kN5P%U~RBjUR`!p6kOX|Xw)T%6Ev;q$< zetg;R6RuVn8Ok{1T}9X50_B0;-U@YCOK3H7&%DLDgR&^nV_3a&N5YU7k+J;C3c5ym zz~-Z(V*wqz76YlHPI9zzzeJc+x$q;S=}#(KA8^)_-=OqU@^R_!{9P5P18+fJZ_(JJD|X0@Vwt2qnoBV-XF) z6B@1ddBG>;Q-p4Wuw>+;9D@x)PLaT@r!cI7pXmq;?SkkDjOFO+vhEKQe%!F!HwYEQ&#Gb!-A9%%6vi5RU`Nl%IU?E&xRWy*dtp-nnyd zJ?_Oz9NJ>9G+}lsCQ)b@{;4XkCYQ*g2sCz8VLkjR((Iq>!3?HIYO|R$?{AjS6&Lwr z2|JKN12YA!uZJyv{&h;vOC1WqX{@)1S3^fuxYx5_TZSRU(*?x}ydX~h1YtSlf8NYq z7Nuwr{q~6BO_ksCqAt_j4VAIxhQKGUL&2jGuk;Q2Ff<^E)B}filU*O0Jg%Ywrxnmn z+!MWa5uT;jmV5l6Z26_3HlEG6a6kXVGscb;g`ajlcJ?d)p1M?h;&sgA4y&qHP8Nhw zK7N=R6wu|V~ z{v$&AMkVa!qGzeSP9xH!b5Rh6REN|rUJj}d#LpZ3t6fz0nO|0j7mTo7h*OI1p-w&zB9;B#R*7IR&WEd zVR_t?1$SHja@*%;$Qddqv_Z(c6PP(y-fuRW zdowQEr=R7fY0sVX9?JWMOAp+SJ^#6o?41`HUK~KAtE4rHhrV&pO?js4lCv2W4z43- zzY`SBb4l7Zz;PEaKyH@{XVOA(FPKg)rT;oxW!;o@yQh4nvR0!haGG= zUIXCcWH!EUP6h0e+}TxU8Cso$(X}m&>^X!y1XvykpKM(X?o_!uhDoELQ+@x&A=~$- z8fY_I^9;y0bF9sp*lIS^uF{wkn2*7HtmVBRA-=`ktnnBk+rPnPJ6a9|$ZU+2Jz@!h~l9y~gqFrh|N` z<I|qRy6ow72kq&=>Euy8mnS3IIj4Q5VECm-{ym_ikaP5NnRr!)DkG^^Q zjE;zbk_@Wp?KS0d8svQf9Oc6s-Qlm%77y1`Y$4imX?1HYr~jOGA1;YO@c+fu>1@&e zAdL~p+4bLN6x&>~A+~dqz3qm)&Bi>h^(t1Sz=ZOH$4ON=aPE$$-My0mXFN|*pMGm9 zUZ9Y4Sd9y07n~k9v}p~7jpS2tDMOEZ49TuGPOa}2)#=x++4^5F!2gwY&uer!fAOG> z!LsA{Y?-Uq+IA^K5>q*T-8(ck$L3~j?>^Qxp_z3V%oX-LIdy8uzt9SZG1nU*yJ^FN3ief z^>AipcCC`-yn3eM-2+P=;QwCJll;0nG?;UeKP3wD`iCXRgk%v&r$6)o6^6F@`mD(j z{T|a?zb;#M>(PZf5AF$(OSvubWw8K>br&J!)jHc{e6cBma4Z4J64S<4)uH*)_g9EK zvOO6qV54~BuCu}qh9}^9GkDc^xsAoomH*#qOS1@SnH}2ni8pi=I1Bm?<~-DfY%1|9 zG}_>pIV~T!++HR-r3lFPeX+jAzNB$d&eX7dV8f4R`upc6-(}K(ZvUj03I(g%E+~~9 zeiv;8CuD0conVW?#JyhRi7rWfB3GFq*VIK)i(RFGH7}VzhMPBjXEE=dqIy&5hT9_UrJn6DQ`LlekYm=CG3$n zMNthr1yuJ91nulw4%(arRW&7Y!{?6RBr;FLy;jB+xf^N_liy{3p(7xEsYLsv&mA5` zj*cc>t?6k7DcAiRkdKPYd@Oz!)AdsXApRygpR8|3hmD9{)Dt(g+(OMV{mGiggMvy7 zsce9QY}B#e3X1u8BX}a_wbJA^U7u}QI=mdNB+=^dm5ISX1Xuao?r9{51w^8>S1rB z{ibEGXd$NF~=GLFifSUz(&gq&bsR7KWo-@<>29U(o{L++E1Lsl*FOA zdJp|4cEflH=kGgQO*gT9&!T-Thc*mO@*mZX0(}!mv}$H&{X*9SQ-`9E9a%7L&!UGH zP;fh8qH#WiDR$#<4HWznP**wFrC8c^RZ&sEPo40zfH+F0?o!pX2Fw-oCy6NWz8zf_Fs-#4d+vMp{cMA^x zkG_e|n3i?u`!XmhNfdhpz;>Ws2Gje3$z8%%tL{9p`#3~&45o8ud9GiX6tr_+XK`uA@j=8B?(P;=1Xul`! zWou-w5#?M`e#>BdD2PKr4Spq(?HOXZ zboza-6#MduKV0DOCg&biW8jIzuk(#pggi5(sIylsertIL5jRBy8)?N;E!jHguf*y& zNV7&pa|2!(G@bQt`pjolrdsdXs$PdXGla{B&(p;_avFBhb2ls@2ket)iv*z+t+Ykp4Mi;~k>6-oMB#RYwdY4@mpCPcaV&f3}-@9yW6ubw;g!QX9bcHSi$$ z)VObH4VGJ~$2eS+{vcd<#29EVu>P!9`E3|)L8wb5a7pnH$XA_ubxDJ5EV=?UuSF>s zm5T`7y)kb@u81H-Q7x8X(%AlYv0Ng)MiiPul}01LEg`cS9cNHWap_R`IT`kGC((V572QhtR~8~ zUF33#$%z(akW1ISQmrm6XcJVvMl2Y1_C$qEEE4?%s-xdlUc3pXJ~@Qa)7kY8#r2MB zLC>H}qKM&Ex;h_o+0Y=iFC-qg&JwmktV-1Prk0vefai{(ZkU9ILb6(-EpAr`5z|gm zHb@JF{qI9;N`*`h_9fVqr}g1EL6cEyEX;HgtD)1(TfD!`;6%4^5`&&RJ4(30Z}=P? za{vv2ujH(qh^MlF)~RlmqkGNr5stLRugGk->ckW#tyCw1W9n78B_OoiW`c5G+K%D4 z-M$e)rW%c}3b#3f81Ou%Vl3#^$!K}WPP20j>s)$zQb(%@-Txr%8XW+qbgQC0UFvTg zec48y(hAEhTd&hkc7!GFgwqafM?1wx?aVPhNJ!rpBilzsY$w)YWe3@2>=Ay}U)ilj zLf9Myz8D}!wmrLg2Lmqk^SjM-z5jn_>;a6&daQJ!K$4gyS|O_BMPI@o3}YeeO2> z)0}BWIbmbOK*x#3LiY?b7hAW2*b+nXDUa)=aljO(>Z{KdG%aXg(dcZ;;4Y1-`%F4S zKXS1qq&~zt{qS(gBqPZ2@E4^-fz0K@u!^xUQp$boMG3f$+UwBlESZVB6^ zG=g!p0tC&V_YyV32xb=9JGP@GHAPhZFHR2>#UhL83%vL-EEf{>BHZ2(MX)3rmHJI6 z<0Evk$3rEmG{k1k{%nLt=zTW$b?mrYNK(pfe2u?^3M_qwE72FgufGry%tHHLctvQn zJfeu8a%oMU)Bzg{tcMeT8<7b)ou3mpwnC_w1ynY|^3+gdvoIZz;54ucXT{|urL7-1 z4{T-*%#-XX$E6hTmp-mYs*W) zXI19JSlB0|N_dioAO8e-BHB7IG2N+amTIxr;}2lwk(0~qykS`(M~R>KP^$mfR!DpE zI}R%R)(ST!pqWOHkx<)72zc*;_szpa&j&j&UD!Xs=5eG6Y$ggh7rFCtYLjQ#EA37U zl@0nlzHUixpJ1h%&iB}L@U=kVxHwJQ=l}OEYHU>dZuG2LIpc=wQMOqjW})ZOkshR6 z!*bbJKEjD&zo?#gRn(aBNy`|LZxY)iRlSM$B^jM}cqjp7+841enIu$ zDA2}-`pSB!aEf)>=<(5PO_$)@-!h`W0fqWVWQlMVrAWw!MFqVMLA~puUA03W^Sq1} zZu3ywn0@v_=IdY5Pung(s3;}5Goz;FpV#UgWc`euh7^~QGxlQ0zTp_sMfCl%u2&eL z`itpB!zd(NN%S=n5upMkk)CpQ$!A^D-fTIGqxA8{zid!ejdu}O4snAW1rMQRHIjnX zZU{k*F#}IBtNcOhOhD@jqLmnXC63{JA57l+=e>6iqoD7W!4c)$StDx)|4N!+SS|^` zW}~%K*{*HN8B0Tb55d`IsD{-xi;MJjE{QR!i-~wvn>SjH1)>(~W%{;5Ia&8k6wVb6 z>L)!;*l%^ijRiXadC!mP)GbuN$P;UL6s^vWVMYnT?RJ;ECh1#sho5@ysf0|Y*kTyc zYpzsMen3*;mF_8nM^)E(VGIvAi{;&xP{3Gh`y3OgB)yp1RuTvk=NmN+iPYo@9cy>` zV#W;e0vN(e96Dz&e5eRjKy!V6_HZiR=*f@LW{!GJBX}7Mn&qmU5Z78KphDJ=yuK^4 z@eiXAyT8&we97l_ji!cNA^=DMYt2_Wj-y@?=3R3a1YRwlVDCDdzum-0M_*~H<8!-H zrtXYZ-(d;*ofp2VzC_@-P33wGI`oIog+A88Zb3|xp7&W6DY{m-!nL{2>$B1p7_DE4 zdOe^ZG7`+QL6I?8O$%qSeNxzC)B#7m9z`%)e7;1Qz%oZpC9~VzgDDi`?E~=GHT*=A zftPzVH#}=L-m7q-uJ!XXRwzBICghw6%cv|>`Kx!utQc$0B+h0|$a`u9E8l+CXr@qz zq|%D@r_6$vfu*BD(1e7T{GbgW-`&yKfnnSvgy#2!l&lr5XrXDnB(IT`t{oVObYeZ$e#v`Q`q};98FJ2!@B}k7Fbc&z5 zZ*h}Yy&Ax0xJLPR9oN}?Z9;&9*E@^`V^yDZN`dIr113MQ@sFc*Nzc+t`Op zz584sY~E^`XZ5ren?Sqdt%tvv>!kN+m;M*%mvYODb(>z;Cp$t@^W6;MJO*PIaOkS+ zy-dxrSi>;R%(jm+_DcIJTeTeoO{j|YhO*GPMsmgWuj0z$0k)rCn@Cc?;EJU{&8n#L z9!k!cKyGcplDQ_rwtx4+&qI~0d8GEi<(dF>CCwfftqc%rU_E84+9}8@L0O~E94;~S zs^#uo)JBCX&>wrwOj^+rLt^TtJleP{)=n<$M*dx|Miy(bvx)er1BZGJux^2rtOfqj zF24pt@oxJBuAAgT)~gm>d}cB3<}RYLsUNZ0?9>z9|InhSt)pNP* z{1xQ=s4_d4V&c0I&L5-iUXxx^OR%JSM)GbaInlo^*1uo1e0Qe`O(3}Xx1*6OK26^v z4UJw;UX@!@E2*q6y7ojxbOz~tz(aWpBWLJh}*Bs(WHxcq`ey$62@5{Q;g<-|ia$vI>|&ok5Q zV1zoPZk*l9*l|GrN7ZbdlgPEzm;ZJ`qbf*(2t88NI{~zl*{42^hby9!{{e%UA#^1T7#V>v0 zxOvQIkq_9K!Am@-ER2UtVY|a>h6%Q^%_M>8>I8(*ond{fB#!N080_=Z{1MU9qQ80C z9PKL(yLq_ObY*#0;l328$yZ1eRk?b$8RUF()}8=X>oZ^q&y1gr_R}2O2_qfJj?b zT&mJl`9n!H+A7&f8vdmsAa2cNUBB^Y(s2XFEG*IHWT3}Wl((`;u;zvJ&~}^uJk$nd zEF7wHI)@(e^DRQ{d=8A#ujzwvhgp3=yRXiC#Djq1N|SmQH0N{DaJI$!n)K)HfaL5ix&Ukt5_DkbgNDzV6S96wo9o*G7jF=~-D=O-HMt;R}zwa+vI>K-Rte+DVD zeZZL3AkXXL-NiOL1nEgm-v`;LPLQz^d_d}baa>Uc(Sz^dWp#l(@)3M=r?So}bGc-; z>b4|N{3-JzTfWaPF!s`PFmlF1Lyx!{E9_E{ClPnV)29&*^kW8iP27xGUGop%ux8%L z?Rf;5fpNgqws2wx*9|m!OwDvc)y?{nwx#t9GH;thNfvlV$Y{7X`lfaql||i!`!S2D zo1@~U)j%RO@}waI!tR)*OP`+DkR^g;HzY7;OBABA>!zC`i(+L$7OaP(-s}L9=={&9 z((h2mBd$f#p|XX;H55SP&EzCIr{12GUim{iE*s` z$Wba3Svzl~A5!;!I{g71~V-NLf?y-x?}nw6Q^riJxXZti1i; zG2$*mN8qau;*%}K1J}Qp0&vio*@6M^@_bJye$m~d&UPn;+1%N3lW5Ra81)@T4kz2v zx4T7-qLm|!4l8dd0$S_dKM9_FC%$~C0WP620eKI}jyNa>K=H+RA+mjG)}K2pf=QFI zd4i5}xsn3X*QDMco<(E%|KaR^`fk?q|MPOzic(>)@ZuPN6$9-!&L?cyRz}cEr z`<36JoU5^jV0BQ@+1ZcP;SYY%*yBb)%l0h^@pfUXAkeYJ+Ko+avz0DBUIzF68}2OV zcoNI|YL=p(t~Bzc$u+jx>tB@+%KJ2g_wMPSX{^sCPD>$73e0k#6N!rFUCU^hDStE%JJCdbgHK1%Jy@~x~wm^gvQGQ4hwN@ zcXb(7aF*_e@Gpm~#7z`QGtaTT&z|6u3Crpv^Xz@vC>eL^KSOG^Yekz&~ScV0hehF#c|XXrz>a| zz5Z4tXGM0_5eEkxv=*==Z%Vl};{w6`)gz8*HOVE6YR>)7?S0uk_iA&}l~qY&XYSH& z)rSaTqW6}s7IdY(^`UcJ2)m#q?dFeDl{7~dX4mxw}$};UQ8-I*N*P39&M~kLL2Lnm>d==DQ1(vx9av zlD{MXpdA+m*M|bK`aph3#U(^0134iG<|UK<^WmYtgrn_jR<`A&c%*02bv}s1_Z}An z6($d?J~{5tY7?*6X?>@tmBiIgsc2`fJNQctEJtsw{EC@w11e!Ota2_vNBS3TTm?dCJwcS z1#I-C^#(*6vb5&wRPNItdGB9-PQDa&T~X5M*iQ7_=zpYZ%Xsk&l?)TCcd_XT|fpR!2;#IPLgRW@ttTB=r) zMJK4CGbVwEVpQJ&1iR0kz&|uWK!C1a7nvnjAZP83rB(PPL0K$=fKAxOn=2M2nd>!N zAckyOYOvrX#Oga($Nc0Xv3p%X7;jxZpK?Yvt7iJrG`UiL?@kl;t$ULS1wB1;k_21- zyjqSNUGi!eNrSI<(0YggM7r`@}*ujr7_rwTriFS=cBQ z@xaAR!C%$!B5wJz6HR2)>b9QCDbp3dl!G`<*ff!=4|P^ z+jZ{V@@b%rF3R)=pVW%huV(sy`soz#r2RoKpo?rHk>?R@;cVnh?XjM3qbe$^k;C)? z5Y5KLWIPMc`H9B7j2GU)O^4bM@?ON-5vk_yfYPW>G^6QdNm^L=q`d3~943?^g13IN zr$2Sxqtebdv&lm?czY@PL*ORk_J{j9qYtq_#!{ zM0;<|qO^(L2}azo7o!5|kf)XqWR#~byYoVwE9jhUReeFzwdDJ28wL7_#>t73&^6#2 z11G}JCyAL3otILgK$aL*Paug@#Xu{EbK{9sEe*5}7yK06CQ=hOpREY*dA*iq#18cg ze--i!02#A<+Mu*GEwB%DD^Zk&jY&LQudt%6{%s;`VQrKEBs%(yf~^!Otu!PD?Tor4 z=8_gB!}|N;1n=yG!di< zWys7{v`eqPww9GMCqGPp-Gnh3_G@^Ka``*dwA}q7K#;cAUMRr>w6py}d_ahnra;H! zFuebfhk(Z`>->SMZTPTnigwUtfaMnh3k_l*m7Vd6}PFnM(aiUMl`bCoWm; z5QRFvfzYmeS2lrId`bU=s5yy_8_3^}laE)rN}^-aSmlhxdkiLd8VH22Q#$EE|Gix| zacXJxS3i2O(>4|1)Sp8%L9tp+iWv#rMBvq$saLS_j$IEI_VM zalhOqb`1^=w))TgKgpEmGjCCFMZBb*5pYtug6o3HEnIr3tiy*UtWKj3qSHv8G;nr$ z?lL5lU6!@}gAC|)rr>Ah{bJNv`mp&A&~VcAdriC`MN5&90eQKzs@jHPz*16bg(XN? zPEk?%3qBkzGRg(mf)LPjnyGFS*Af<&f`88FCk1TG+_bFpF;;dZmE7rXJa|LqC=8d5 zE>iM?yI;hWH-Xb62E-0CBFNwNey^6s!MQ7{wmmOpIn#tcGtrH3uL~uhN>JaJMLra_ zxPGY&N$+c7Uy?i3K`dR9Mdx>iQKt8Y}nmQr1z?d>=zV zO?9Kwp5H3#QLZRcL;2rI`NboV!pCB+69^H}jm?E0Xee8Hjpu%Ze!RS7PY^v08GC9c z)#ovYis2zuCu62p$91#|N;ySGBEW{jW2y{XPHSVy3zAD~9;XjPv z1FPWDwe6{3da%1Uel*!yLRf{7J!=)HP|=AYg1uKj!?_wH7^{+=^ACvN<{#_bS`lTq=T7UQq7=f2Lq0@5%cy*=O_wwXW&a&K|1zNbYO)(h_D#303KnF9#O2ixidvH6 z?1vn>KmSFC@-T>4@77buwykD3Y}t*S)>4ZwVRBS z5_pKP(v$$lh`0IE%)7v{>TIt)#gHawqcrNi4CcYPfW*c;V%tibi{Y&QSU-oGp8yU% z8hsmS3ciQ~mBp?BpJ7P0VaF&lZBBx~OsJXof942&@8OqGes@|)m_(D*JW+cr7ww+A z)zQc!7Vw=f%0bR^Ue8H`?!_$6gvma(+21Zg8*a(yg}>q7IpAv*Ead5;B?sE@44~*I z+L$&8JlRw7dQ;8&Q} zjv%7kq&@{$b_5PmHylp}rT7nmUB#wjK=CqQ-tLz>)dbJH%P~S$6~Ici&4LS^OZ2Fb zxeB}P|LFWu9eo=8Zcm#QUBcfc^SZEfxR+Ck(IjZy#x;6vs;Z}C3l3NG1?r$JD$Jf9 zS(fv?v7G#njzge0Z~eXE_Rop$)H2|ESv=;t8k|IzXkI-u7Ws+5^|L7|dwYpo`FIA5 zyeobr{Fml7T|EkYKz(D%EhuxX6iVYcrNxqn&Kg%Kax9n`iq?au$58%a3Ek9iKcre* z|81@j*?vIwC@fYKk}d?mTfqAXGSL}`<|C$o8f-=~fYV@*LcbLvDJKh#1wqPdAP-bS zGx5=O0RUk|s_80DBO7gpTTi&i4(^O2b%(hr<$$W*IMXS%K2V@Q2YUh{3^Hei78i2o z6s4tXYE2ec^v8z_c%c5PX_RTh5>A_PJs9w^*e zgl$RJ$)g)W>9~_F^|!^NPO_Ps$}^XBay4WQPs}MHw#WGKZ0RT4)R@RqN|0x?&8M)} zKwL#@$wIoD7->Ia(gELTn5I_tm6gMA^A87GqpjB?-yNnmthhyHb@Mr!K64C@O7r+R zz-Yv;2`-)a7;6#>F=?j(g-viwxHYzBXXFx-;?;AuCVCNzF5>;dWOLsI-RRUK zOt@>oX0>whs(g`+DeD7GLA>PWuzAjbfkt0S;RKfEMN{OG;`;hPGu?I}g4kG<$$xH> zPo`z4LSe><)AbAgq74b}5FakO9gPf@3GftiW^VunUCeUx6Ex9-XP^2Q5(ddFV)_9W zuy^g4*c>OUWPgOHg${?9%=xuv^4_@PYyDAfagLpb&QL$CXHk@ObiIu{PJLaG34dJ#tM)-bw{EG$vw z-Ug)rs0Ql6v4(WNh+SATG<)B*rAasOnNN#J!ohR7cqLzyI2KPvQ`z7*{up?kuPq=r#e=UzikP!iexiX=*0*D_+2C%U26m|)m)OD^U?f*dl!!#;y!5eskJB4 zNTeTka)ew*`k1H-ozn?4~45M0|#O&v?jNU*n8}ur6Cv{qe^dwH=2XZ)3d67c8 z{0~L%{mj|m&)8Ik6B{TD7et_95Ew1`6c@v7Gsm|)l|}H`z9T3 z9~jv*4lQDoNde`E1euo6iTc21|#+HFauk`f^WBX}#3&$-J$vu_TUVr!Vd<6(tMGuWed3J42zF zZGs9KU8u#j4-=X)6CgN$3D%Kly@%PV%HJY23>uH>isq~|n1=i|Q@ZYP6j0nq#$}gB zv20@t;r__du$C;eaS)Ok73_C=Gw=WyFGuzi-R>+GQZf5)un8@32lrkB`6LK;CH8z z+p_>)Ab(zb)txWr4i`tNh*@Eez7+ao9BiXCyVF;RITC^@bsz+~0Xrxg*{x~E{`plt zY)ia{!VVr?_biu>YvNeb9mMP*a%W#WgDq;+#Bcf95eHCm#$Ur}Vv=^fCYx66a87cY z@aJmq;wd{4I)8a^XCqr%3wfd^x7$+XP>c$2?JGZ@)i;souljq#-mfxsilE@fSbX(& z3H&c?Q=e#+3#~RT(4y8cjN8&;^V>tiSL+ts+6%X9JO-3@Fck4YH60TwDR$2qkJY0S zsBD&dqI$`Z31E`76rMhkWvA|pt*3I1-WdV-3TOv5`KXINN=Bv+S&p+|>HDJ;)ZOT) zHp?&EMbAi}AeaswUM7d09La&h`KBFQ$D~9!^{*@E(hNEw%;I+Gx5TA{45+ktnz&;< zG=;d;5|?d%X2z|Q5w~*-bBb^l{8typkvVdWb$8DX&@62=-O5KxwynB(K(0pqpB?8H zKScakA}K%P`pWVA{OOpc(<%z+2%?IiX*6@_0Ah}K4g9d={*5nJ7eA{$yu*2f6)DKW zLW7^c!>8S4@USN5wgla#6XrKn2|A4E*`acU$m?TIdX!Ml{c=T3Dxo@cg4_{5g^X;G zGR9K*F1#YpYtYdybc7%p;W(B>bAlzWm{!y{gXyV_@O`kyn}poFiaT;bZYZ$+pS)+dfSBUu?L zO`PnW3dBPE#V@gU z{Dh%kaOjoLOX%Y?3&y+aEP=pU4+cg0{5u^o>m}ee}6H!XO&+?j6%z%WmT9Uh>a~Of#=>Av@ov9HDqd);1sBp z!wYTFTMG3zzNu6H!I#Ub3$6h=vgla(L4|#d=SCtXRYGFa_|M{Xqz?YJ?|SxPIP`}X zTJ>d+1+-jCea{-a`1MrwJw&?}?`Iu=!=<|N|8Z>LW^)@p7XlB$K!?yqn&Xhy}k zUQljMR_^3Mk(^~ou1{o9;mOhzQ41aLiA5w|2lKl~;|Lf!I=UpgPZ5ZcW8KY-a@{#7 zyv04YjP{kCu-5B?!gvPKOww{`>BkQwmBUY^NF}BkRq$+-Gni#C#mmfd$|*NxNL-gg z0WbpA_lf^!cQn<0S_+6=l}k4UPyM@Vva!g~&V#%eT57K2poj@9G2j^unMSsAlo2ol zojlV9xJE_U4@lEtB#VxAb>@~lcpeSu!bqXuKJ>z-vgcC!_LLdL;9v3wUIjPK|8%j# z!rd0WmljBfVp%XRfH9k`7Gp!B{gUIDMza z=0c90;pzN2cZ0Lwh`^{5qfSJL@#9fN&6rql@4N|0MP{)&`)-264nBJ|mMf$Ge4ONY zd=>Tkm}yR0wh3d101xY`%c$LlPIi!m<|{D5BJ_mG(`tL-b~{Z2@k=hB9-Caz<|=vf z9fR$nM#M(OJ=8ds4F_Dw02y++%8QHTt`r)f&8m~J4MxW7|JJg)4+!B4S@LG`zQ4+a z<2}!=({9$Qtxr|n_3mASvrHE-jJjjW3HTe#8>$*7vsJL^$K^)tTCdr-HyKT*?r$iy_vjuq(25T*a*kq}Coh%oDf)NYvCc*!lG4iS!p)9JH45dhGGUQ0BpSz%L!tQmgUcFi#4KY;9EG`H&=(rLgfZ z2h^by!SOv0tJ?_O#5A#m<5@)rB#7UsLXe(^Fm~4#feVl+?=J*(qqs04`G?V<3+l_u z`_vi6%7sm@vOQ#hMY+<+m$5PEG^y_afyeKkO@OG)|@b zZ&v6>L7RFP`a*D}bhj5P2Xr=ujWT#wUd~>s>ewozwtE2oKLEg0L(FmTgM;^$pfhyF zhB3s|#lHK?6MRL(@78m`@F+Vd_J^QmysfP*ID!!)ZBND!=;z&( z2A4)iD?E(G8CbPk`!uhGM)2<9Y5lD`;?yGo!Tg$*cWyC(R2wi4&viGbB8Z=ArFGcz zq%&pYlrj9~@p-8|^43|ZsomCSM`rxs=BY&mZb34|`Qtvrjb5B0b5{s@RzvRI9843f z1BN7k0Th*cetogu3Tc{tPo^?eU*+AK9W_STNeJZKwq=q9 z+Yad7P-&clIiwS$`V8zV37@ zq`J%I6D>z2=44HI)oq(z`=)iU2nBs z9S}H`4PgvtV#s@PFNWN9YgNk2-LeJZ@zS>WoVaUAla4)ikeNpd*mPuHPTJ9JD{|(f znp_vVT{2d#b7;F~&}FMqGcqj3BM(rSAdKO>9vub3(3-qQw|8Xx(?W*c*xeGm|5r43}yYcHT=m z;%DPSRLR;O#UQ8(QN8jfaLGl%lVbgG5>MBk=M@j<;8>wza^3aRDU{+6Hr?704Zcvtk4pm++?DQq9q}K$}*!qW=!n)ff!@ z#3nzmdJ_WDI>esB8o}JGTzJwQ12-HQtnc582{-XVY@0}yFgp<*q`D8eCQ)Va#O-*^ zxky^p7nyxJLRGP(hUnC{3!1D)%xyyy?n)^t zoaM-f$DJb<-KD{F!Y5Dvc_FUSp+y@HV9K>Q`00rk=!tb{FFagoGHOdO0DlD1ubP*D z1RwAAcHdFL4XX$OBk@9J4BM^HK@meIlJs&p`xklP(N#|qh{RPKtN_2+_d-jh#DZql z>(Tl6f&5=#VnR&hLkhi+Lp`13$%X`=Mr*PlScthdHP; zTs-yOaFvokSX7P$3ofS{7hZALNts6}NEj0sm4ACh%=zy5tV$pkC{U5ur-JfUBcMuiDQ> z(fM^yLB%4Wdv|bi-E8m3Ttfy^rKd3Sqp(j@Z}j~Tz*)&W*ef>e(L3RjYf0{kjOCW>&>aON={ zKdJ;MD5lhmOS6@68KJ+*xh0Zm!|(ldg$KHtA+R^#%#F?@D%)va{zM;zVAbgfWI)2} zZaLQijE*f8`k03#y@1`;Qa+rY)9}Um?H{>Clg;@|``D|v{44gUt=_9O*YOT6>IF3P zy#?lWNO@vx#F)BtzQW8c)LW&10k^HTUou{NZ9w~Ad)kunWBe=s!V(da+dcCp*RAGE z!+*{{i78N4=T=Ss$QeKgRwo&8j;L~=ph1#f*Scq(77a9cxMdPtfM;v|FC8fcCSE(Tid zNN!t47`Q&~x*7vpFj!LX^|hl*U`(0!&DJydyRXJA?-+85t;?caL%4R5O)Eg3!i2X5WvA6h${3#rN_tum%hRBp4$Y+f~?z%#2rj5|rxQS;SWO(hU0L*s_ z<+Blq{13#VRPxs}{iB5RkaQ$L;WRHT*1OmeWwhd4UK)bZb9TR9jwTP!EbontThT?TYsr_IJCZWdB~=mA_3?Rwbb za@{Y)0w6ku<5_~p3T6LVgm&prdCVj z6#GJZ8P;~;S_m5@b!1erlL&yfZrp*c-T!VvZ^iYQh3nBfL`%7~O+IU{oj5OG?2iq$ zFXNQ4VV4RC;-jU|r2H4)iv~krYWg+yFCIHc?{iOB4%$u^>DiJzO>|&I{iqcT=g&Mg3UTap~1o)_kwCAf;(~&dvHGu)WN4Mn3 zaI81$!p2}=oKn2+v$CRV$$@^Cu_RDJ9!3BULb;y`-?i+ZW0J|~We}w;zP1l#E?6!u z{ke3Ojo)*XdTeK$YxR!VcmY;f)d&&-OA;iyI|+I3(4a0o@gO?vS1bs<3{CEk>9*-R1hD%J@Y1PZSX^8V38cgw z!yDh$HD8NSM!=c=-%s=)1QEK+FNP2Wrs{?|ICs6*S?ON2ImrOht)(RRU`N1^Ii%0L z-;MhfJslFDWu8%~9B~H%&`h-L%>B?tjyEWPw8VuK$tpa&=z-}}4a_&n*Jsc~X+_}Z8g_9++Ehbhp>39SQ6{>9`MS}px#+!Poc-(@Ns|RK5p=(wKWRH>u zS4q)Uqs|rpo5WJ8K78%MtQ}yC&mQ`2dPrMnaZbIZp!WZc!kyq*SO=IytaxD$EBlJO zt_@1mg6QA~E|f3Yc*=IqjRcSMwKjHGFrN@&Cy%8y?Wdq2IOUUGRRC&=n(ix3O{328!!dllS_AYI&owTxLkqBHoALyg%q}lB) zI?1^3b~mn+^3Tt11S@4En<(Y^v02}vCF&Z6k~(VePrE_w;+kM?EJSf{aJb2*DNwMd6^fNBW@FOm zx0OR;ZF9;cLRVZFs!nRb#EW(cJT;vHASD`bzasL^WHuJyI@ITM*58(GI`(C}T*~|Z= zh$Y!@s}+5YY-eq|7g2&a+t9gmVqB15Eu-_T-oggBjOlW*T~1bg&D1`F|22uNP4in_ zC)km z!*7i${+sXbf3$5OQ_RtiK$}|*YmdMnU5cQb*p|dP2S(p0O&p*_s36A|LreR5MbInB zt|^Un^DNCz{I9P2ULzgB!n=h{7`gIX{8vV9y6$ zbP{m3e_BbX_xEDFJ%dv!_fXXe4m5xv>cFhXDh!Jyus4Vg+=Dy67kqgmr2@7X#Ks?u zRKYb@?OiT&nCRgL7Sgu6YR;gFH;+{*fyUVx2$_Zbu{wsjQZMhBRjA-pbYwlja9Irl zp9q~ch`WgeEzm=f?TPQloPgaTKncddLxCNMQup8MuMPw5#FigtiYL&I2!=Z!0^YjlbMW4@_9~x0x0IZbT|Gz=zXgOeZQg;A( zpJBEp(hQC09?dZYL|iw;y#|dSg(x&jFv)LaOb_v1AHyVoD3opsF%9PkUgK?xVum?! zLlyx4v9mqt4<+DZ_oZzbiYd1pmQI&5+<_xs+(8$~*Ol7K75?RIZ&vbApBCo1t~=+M zP8HDljJN)etuRDKnx&hoe@Kt%slsr0frH`atFG*qBE>(GB1DfKRH}qFbh+u4)CF0 z<^$B_RbDz@S-p>nClMP!*F0@9dGRIeU5gT>Qu5XHkEv^j(PgWm8IWc$6Z;KQD?B*b z1M}k8w+}^EV?M$lGRx_lk~~h z_Yvl~zM_{nYwOU#oMh*)VFSlF1CuDuyh7!hxxF~#cwn-pZVG78At7sPOijqyAdsb> z6`0r|Dwpb42e!0GeS29ak7!92B_|L&1~z3k|v+jC8rbxc#` zcXfT*w=NOkF|EeT7JlM=0w(rFtFb_Da|!#xn>a^k-G@3bW1=&A0rh-BEV@iCICgr7 z;`#_lFT7q;kNdgv2RMFT+)KRj^+|;d?Z=kFEr~hBA=JosI)Dsr`&GIih6T+5+uof4 zDk-3W#Ot@YbobOUQov=EVFn)j@2CI%w2ZH|em=a%80KA<4@S9DcJ92AeoEv_b_UQvLTD-UGcz=LbFqCi?0|tJdyiaAbMZv>4esV<5k8# z7cA*xoXmWj2iof=x=B9#m-kZqm`(;UM0PEQ6kDJj%29P$-~8NFP0?q{?Rk>gQ;iv{ zCHdwy2qWiKr87xfEKp*-o0A}!C~QRSd39RIrMADN*Ib=^NLunuIqB6dCxgbHVm4^o zx)5$M)}z#ouk<$vp&)aK$bBRBThW*B0&H(&A<@pw@H z2cU$#Y-DF|wX74M{&M72?T}wqe9DX1rdP;lnaXKFl$PCjFha&}gKBbKOA^S5s^#sv zWz%DlEvC(e9|5(@z&AVIc;z)J&;R%(bo@QYx%8WX!EnKJZsJ}4AQ1pz$+?%;0y2D0 zF?#>{XCnb7zmxeW$1~9i+}kBAsDURd$wD6 z(kD(thOX(Q!YO#($&QFu+Ia)x9d40bUdZG=wYI!nnWP{gCiP*FK^p~kV^LJ-wGJ~_ zaLdrHelbm1pwr{@o4N)qyl8k4)lP($4M~OnHsU3=i9>?GJ*7d#P7WtFN@z_9p`(;-Q^xXoC>tK zO;89sYnUzXWT1GNkRsKh7EI*aT_cSm*{-NLLOeN%#d+G!(I>XyNo~!#+m?4N!61mz zN32bo54-)YFt3}K%brt}b~|lmES4sebiKX_6|JLXA(Hfc+_egEm^3=F`2Bqww)7j0TU4_u(?5}`090U-DSA=Ef*BJ1fi2R!+C_28c|(scHd~df}w7^ zLQiaw)!RZ$q0lsRf_j;lYGO?BMM(vQaN1fhGRR@s?&g31$2ehth7-~zx?MTYuuV}Z z{iD=Oc#Qc1)G*u+PPMw%Bu%6x(21$~%XZE1`SxzS81x8!nnXCvEThVbx1naWm1m}`w)_q|JQ;F z4*k`+56Y2jRPwgL;A%QDB~Z@xv*+^XO9+nU+Vv<^FmlEpnFv2W8tv*j=B&Y?;Zt_^ zKl&IR7!f$k65s>6TjH;1Mt1k1OC7eOC7F` z^-egisgOF}m@ zG0=pRvvKz_GzhLVLDTM6dAJdpQ4=1U)sy8`fo)gU+{WFI=9l6Vc_qYC0s>e`BX!mY z`ny=TQhz>_4IxiEA|cCem3c3+y;?_N%6fX!FJ$Xi_w_^u8IrS$k`z-1GzVtWqZb+= zsj$ABC+tb;j;xO@S|-1LJvF)e6t`T^(FU*w(C#O}sR1V%b6de#!8j?&xc8Fu+*4dr z9!3Tu@rF@uVC<6SO`e~QLZ@)gCqLdAPa1KV*WIPHh-}aO-+|V~J@ac+zF71d$?f_! zJbg3%OI%yfg}rCY>GteMcp^4TORd+&Ka6%MxxK^B@kcd$Q3@#dSKQ#Z?@3n)diVl) z=MiiE4$K88k|@r}>h5P4qB8}|q}Jm!q#xx8=)I#p^0TXhqYDC*LY{#v>3{O}nizV* zPNI@Yh+KTFlL|PRF#L3x82M)is=9_%@3v z;Q3Yl{y~qUBs@}5EjKaX1uDL;&#J)!KJ1tDO)V6Vz%y2_%nuHKIVrtlmb(PoaWP!C zq>AnWvCNUDgkyXr;9PK?t_QEM=S;M@sr71G2JS_7d9d;#f=NB}c_!GlAj3jV+HavO zse?H(izDSL)Z4YfDvqF-{xcaC>jB-aPk|FPrOa4H2G2w7_QRroDyjf7&hfi*$CMe) z1(TD47m#g&{3VE=zh?E;#XkapU&_ot@#Ky%$=0F9sn)gN4LuRD7IjRoAr+HuUr=as z3u~<>FtN5VFvI0);Y$!~Z~fAU5)WH2leiE^kd+rpz`k`-n{Fu%2_vn5fOxD`UREEq zV{%$$?<`KOU}kQg!S`v(T`PqW=U4hwaVKT7b-KVqh9O}N~N+^7^?JMtMq*Bt{hm)gF*R9aGh$Oyt zM64voPZqYH6ej^Q#mo~)6*IW8fgfjeg%zsrHih(DDuFOQ{KcNsNj-??!ca(8?I!%K zAY&0V2dmA`y9EMe*_Y+t^C<0EXcAriERl%d4jkB4D*97!2858wpk*!JRYYYMf+{Cd zZu=Pa(z#nWw|qM1nGzq5po_?t2goq#-i=ETGTZI|9Hj^=aZo~S`+6UVvR$)M)8w9E9ayt2!3 zt^3}%KjU9?GPL+A3WZL;IGqX&Y{>TcfI|2Xw)M`t{RXbWesGzVqub!=&*WRMKhnGR z*zd;ZpA&eQ_3sQNxT(AmxbTlcG^gnZ`IPcBV@JGGroKaJqi2;>{j%lJ{vn42xsZ&( z%P6<<&|o;cvpHK@rO)t6RqG?4&kvN@QIS#A+T$l!y4LavM<@PkfsX^2Yp#W)Sa3rV z-5+_sm{o*@tF3-LU|Yb@%8<-6iJx|}uxSX~aksr9%%9*noV6H7Cp-sFL+K>K@hzx9~m*cf3+QI8X z#~($}_^GyfKl{8G)whU4W`dP=n7h)e*%ZAn#aF|LAQEkU=fEU}dVaD3z<|CDEh2b^ z*a>U!tp9RvW{K``yq4^+(yhSfj8$8{5GRM{uBzwii}(V^Q@nJLP@$b?n&mKov-g;Q z+&5_ZVgw65MrvK;{hEhm_jNl z<$(^XDu1zJkb;_=eEZVe@q0)i>GsO*9RvT_ypwBtV2FEp3P{!4K0loWb+i*YxrW;% zzEJ>jYM!)Rc9r~o*?i!&;n{KrPv0r$CbmyoD% ze4@10eWCi+T5BEi(sReeCz$s8JqjE1LonrvQa&1IUJEZ{G$Dl@+XlL5)%vnF)%Z#$ zZA6T`Dz(X$ojX`xyCx$N;w`P(5*Uk%alO1VqUF!BB7ATmZvv32_4VgA=KRxN9{BNI z%J!V>nd^;kjsiaA)4B?iwuUDf9NdH&Q0`BdIeXG*LF*fF<^;RLI0WbO6VQ*(^V*Ac z21`s2&i`;me}hZA95GyxNyHkS`_e|Zj4op3KSaTVP8xpb3P*26MSrgw-N%OAaY~Dd ze~c!P9ZdgJcdy|ODH2H&&bU+;W9r3A88^fUA=Y#sDmapjh6y z-$>n+R!3a6t_*WC9+W6FMCNJd?~`QB0(2YIn@XW7gt_u7VncOYi5dJ+unglLH}pyu z)8O7(^rGZnACNVIXvTh4;N!Z@oVAD}Lairv9gHY{o}6CzbY2w>YfDy7SA_mfnG*&; zzsJlwq2-_0>1fJHe5`F<*W;<70^*$`eQ>LSSgAAQ!xQQ6Qrn-oFF0Hv^PF5-juNwz zy2;rkSrqWMq}RFTz&h+;G+9}61BNMNsd5k)2Hr&r(dKM?=1Fdz+%t-9y{Wo2Dd?^h z;IX?bO3fb#;G}Kxn|uMg8BaT)6X6MdW&wtjURLoX%6|!ceay)1A|25Jk~%3S+k1}V zan{=~^dG1!jwv>(0v#I>$1bnY`WV8~@XJ#xjaN*DVWQImqPn)>ajsasgCHIk<2gz$ zOt({9d%#(~I*;!gvW=6WSSOK5Ec444bJviyuI5uDn9qLMJt)h3hAt*sXdz*U;N-n) z)CNMc#0dNyNop9GJWha-pkn*24lM1`o4PD58w0h+hR^s zi%CvSSTYYJ8zf9UB13AFOOL;+pzT(3SwbBJr`P+IIYMtI&)`2oeE?O4|TbvU=}0DE_g{BS*}VPLAqAP)7opyO48T3$5^=$xk*~Lx8_!a zEHALb!XmF?;{CaAbQU+hYcdE34DW+{-Y<1HX|LYJuH7qx{`CKZ zP(s8VeQvplR8yH&B$|`RFLA^baWI~^Lvg--=+4OP`TKkWF% z-1DaUsx+#&_1D#zlS`UG!E~chbT_hybibXHMzRFJX4i9mbFXLSDo#d`Jy9IWfI*O~ ze%J<9g+(e28=9?G4iW=`ygbEd=xA8WEx|fCMPG86-#*IK2x{MxCs2s(=c!@?;D1@$ z@&mhz1&W)RnQ@h|CA2+btBWX&H8nJKjJ_0`6$);4c+{%!CNoR4GfT#=6~-wSh+k^j z;Utzlbb7`u@bueQNxd$|Z~>8@$ff6>UG(SDP| z0$w8V2Lr1Y@U&?XYO6xU?od`vRA%=hJ<|EwlHY3!U81 zR{^WGA)3uj9sKg#)@Z^&^LLmZiJYwoRZv?v&ZY;I?2az2JeT@dh445pI;{VyH=1QG7O-E$ zQaw?gjCFN@r}bXZZie3x#*P^j%>JAxbWNS&ODGuzOcBH@J-PK|j_>sB5S+4^qdTl6 zn+zh_0PAdClYj*C_)dL7upM515AP0l49`3F*56qe7_yS9t`sc}pMxY|0JNsW;tp4# z33_LpQo2TY#wruz3-DdhHa`acwFlW9hyY6w{YxpLl^@j@azSk9E(D>OBzlB3lWets z-~Y#`da3SmnRWvzddJpiF53=8Fg`wFpe{)BS;UG%e10t`nNi7SUt*XtB&k1n*Jafb z_|e}Jje7Z<{PD;;?NB5SpA1-??4T6r#>x3KoRJ24!iiIfo8_R@vw}?D@L?yP(W%E| zxk>uWJ<5klgN_rDnXHuU-C6d0k9^bt-M99!lVag2Oky5-^Gx>g!5}G_z^agO^~cp1_?-5yy%xw>Zoq#EiuxZ$Xik zutee|^d}&;U33)*=>%$L7RX# zHB03L8Ws|d$lt0E5TwXwsI3G^YQgui^c&!6+=}&-nPC{|@3Xx;Tm7ruRjZ_YoWWaG z@qTXM60cY&}yAs!xE%Zb#RB>$|cwnRdH-yKhr4 zO74wiQl`ZR-|`!oXtP2ACzRTC)E^ptW@~=ierc^$?cFKc;-(-kciIn)P|~uL`wpza zxKE&v*lbhvpoRs(Y$>++Z~;d6d%)?GIdhJpX@g@1!@1zBnkHu4BQ#&QpiK;i2($v- z(DY=;0NV>w0C2RtJdOcJVbZomi+-<=2*!LOE!w$6y{VQ8Kvxx1@BmL&g$At_6--pL z8n(6}u^(H;vZg!7&h8$IwP6$nLw6Dzn1}Ez^akZW4LuMY53^=7(7$;97CsP6pt@kv z(wS<6>(t!+$D3h(WZyWu-lk1S~8rGrS; z(`IVJ79NR+y$`zRfhKUnZ3y;_g?P43GCOk%^{Vgp)vj8%s|t-HsMWYi^D}9x0$?hc zDEnqOd|w`lDEnt_DGBf)90-X-wF|;DbsbILk{8QA65x=aJK3=9hab`9%&e6N?Cn@S zX821)`?Y6pfVR>(vM^B5Zw>RTxNsjv$M^JeOA9-OY!I}d^j?tGCI4T=mt$XoXi^${jpFXH_3Fe0PA0a z!-3UMPk%@Ygy+RS+-PgW9>euEgMfYQo;5=|ZI^gyJ35TiX}){~(dWgAH!2~ovUubh z9tns(*{HLbeoDPwmmaVGd0B4ZlaMvr4yaHP3OCV1eL>JP;8l3#Vlx8G`&#r^vu8%Bw&bNyVDFWVzBwdz~=9FEhOE>g&TD=2c@%-LwR+3KrU#k=udE zS?rE&mbQAC1_y0bc%+^$bn>}=A@b4Ak| z6Nfy*mgXo8HhhzeqHdQ5i{i4k?T+2&Oq!1;lLf>4E-@IKFzFurH?!iM(M4bhY zX@$t0jSnnkFW!99+Q#z# z{utxK8eli{XNC!ROyTBI0Ahzn)|~(M0{>PapJ)3w z@_!(79^We0s%lWsu4l~rOWelAyq0wde1z9)ufO(_k;OG9^c%lCe=LT@n6o#e#lJT` zuW%)jLT&_f?;zr9CN^K3?)8HpGKQ$=r!jjn1Olxp zdH=|4Yvo`?pwH%5K8Ck)DeuTWT6C$iOJlz)&}IqLxT-e7P{%<$*=m%c17p}k2ijv> z#O#lpHk`=6++xMu8+7dry!uc?pK;p#jmWYzuVneOOFws5pYnea20QnIk;Ad<$X1CC zRk!Vh)J<>iHWhY4{Av*l#%c^kl=L6d56w&7ZaMwmpi^Gr^vqmC#FbLOPDD7Wqzk`2 z1yokM?1C$yL08<@HeeCn2y%AGW6Citf~>2Orz}g8rj4u4fx|oHv1DNrLzKp+8u7#Y7 zf}botV(+ZlB_^uFz5g)#Y%9A3Io7;oRZ?2%*BTWrd2tI!*+0Uk-o9@>KzF5jb88K<)5^PBq^e z`f%HC#GH$%HA8DDZ42UYg?YX_32QI5WDzk%(=*n6g-DBBjsqK4WI7=+Eb6=z;Q>0> zus`%L)G{WTkiwS9Vr0BFykM%o_0oKU?f}4T@qnkriLS zB_uU%CdCQW(_#~V0J`ejVxl>l9rq62l96KCp8*l9_|n@Ex!LKO4hfb-h>3gQ@4&K8 z|GURWCotSzwbc_4ZH@UYc6S*D$RyvBX)6o_KKHp=oQq=2vR5_H(_oWFWY^7T36Hc& zoaB^w-n;zoiO*&qm*A254=F2j@ZYb&{D&={ZT5R9>d#D0e>U8!0GpWOw9>+g>0tnB z%Apuy(j@-b`c)2sr|4B~!_ApX^qnM~8jfqcmu42!I(*XW@O9AYaFK_pur_`dSF3Gh zVz<875?sQXL$)Nwxhrmd&;6Djw-APStOH5Cr(&EI>y(s=5Tz{*?B5JpZYS=8DMw>d zn4#VKaUm1x+h~T+b>J+u|^B#F(ls?E=(Ei zeVpI8eSF0eGTNXSwdU4_-PXq3n66B|LU(+-N>yZ>yateePx4JQ*LEJG*5bFiE1g@6 zT}@()#{z{CEQVj-fZHAKMpjpJKD{@hbG z<9Dvc>eG3-qIN=ae>aIDGRiGQP?A_#jLkT9op9-PShW%$g1Zw^sOn&V z_D7XMw;)z}rAJ&$q|H=*B@#ZJB(W|buXROCGu~)c72FA^{gVs ziJmbYPu9Qv>oI;zLH4Q@WYkQ1mu?22CqQlI%mCHX)Z9y=5qRSAYeKmY(Q8c;a|>2y zZ`=NuLA;xD#n7oJQ4+!geC^yQxZ*XwA<654W3F$N?=+unXTj$bH&k3s%B8g9kVy z*KI-TRSRntn|RRlBR1Q(A>Hss5ut_49zn-W3IS4|zYx6KC3ytG18GQMbQvEetieYc zLe^ay=GoL9qPF4h8oX9qU4MG`D094#YYeassJ|RUY!FM$%L$=7e}?mXQ}*O2+D?-v zJmaOwN;_}CHQw8s%o<*5^c75h$yF`WkK*M7++Wf`dt>3l<`O&|Un?mXQSw>MNT$d# z$&qrTR>R5W9kJjqu~52-lugP-`Va5Di!OBx&%ScAv8TZ@ z$QP#nSbj@&w|U=tTr$i!7aM<58%<@y&7`Pg1lJL~zEfP|EIdbopeO?F!qo+0yUetr z@CA8H87uyO$n~}E<-TJ>ch#x$DHKF_U^dO4Gl^ik%a45$QwZR zLZ)rDxL5Pf>V98Z!CtV2xEY9IU`)(9D0<10q!*4%I*Yy|d6Y)D$c(0xsI?t-4w@ub z40Bjry%PeiZx2y5C!|J#RU1c>-v-Qv%Emhv(#GM~G!*C0+p@-WwZ<&ETEmM6p8632 zs_Zf3fWl_IhU_7xD1Vp3;8o{9%|_>F)sAE7FBUEg{HJ02?BT~|OeF~acIpCX@1q4f z*3r_)QP5piCTd6^z_OU6*1uStwB)67i)#kG<+Nj`;UWb@?rQPa2spZ^kG_lAT1=Tg z9$z`b%n>gd#hQ6x6w;fnQN4}aIYa4M3bh?g((Nv(8(E#fcW8hQ?k?F7ITwg=fDAl+ zw{PtE-RujcCIHU*Z)IpWx_WeyKIfX>^H6%HaSy+|6~dToUoq&_Bp8}O|uqE5;{?0s2gppn&!7DGv=i|aAgJV-`JrmL5hf$+l z$0?}6C_8j6z`yga9B1h~CGida3g(o&*973Phj?692Dla|5N-QmH^$&>=>)x|exnKb zMq=!WmVmmw0ZBU(nCmR~T(rso?QR*12QeInsFGV0 z9XJsNgq@9Ws2=v+2vhQ21}XQ4StA?gj5#yYlR4X7Be4%@6t#!1EnTemUF$Kn-OO}B zU&0;%izdGJ3M)dznBOOz?PzzPt>Yap#a&7;KJE)+fU z?9;a(DvhwQlfD^NSi^kp_#tyAeOezd2kLE~;nu`f_(!*3%)`XaPW;K#lT%q7iK5CW zxdc_nMRQV7ByxbBpEPSw92*eu%JfKya-(hBfaVzjN;~WGa)s(WP8TyI|I_+Tn17|- zPVz#!kylC<_qlR{Vl}m7V}B1n!9t7*p&W*@2De&V-gW;aTn;+mb|}Jp-8oUzXc$5* z&%pqQ5>i4{Ph2mq$G-bc*ou4-Q5UL;-H*a9MsB0acKe|BgB!G$d`n&yRoXPw%Vo~f zMo@2A^dE+wsrz}u-V}$!6-luAX^Cgk@)bRGzmcL6vWSkwV&+fpWed=V3cE1u&CD!4 ztrp;(57$^W^QWDzN9a8}TkMkHT2#};$I)8_ZX4^pU*Ct08jFm^TJSoT|LG6+U);p4 zx@PwS(RaWNU=XDP)s?7ZwRg!!m7pnVKq56IDV*>b&YCQ$@a<(uvrbe-I1dh4LSZH^ zC^T2VP^Z7H?k-$W0WpzE>z@JMix+da+en>*PeiZ{Cylr^Lin2IigBGZ#7Kn^unl2j z$aD6GFg=x-7G1N(+h>s?mGq&_;%ksk>j9m(6^i#6(D?t3glN2odA%sBOLpTjss&Y0 zCErjO(G+PH4CN*(?kGQnAwxcq(#_^=(!HNZxjZ5I6eKTOn zwY9GoX#Y^SLh*J+Nzh^vF|wN2jQm(tiF`APnN1Xg+ExN`;WMhiY?lJP7jt~y(mdnN zx>*7T#Ug0%xGTD2r&_6lEgrdpCTsG<-b@W1Ike0aQFG*{O(CxpO1#n-&B0^JZ`u)EJUUc_nv0{4X0cLk&h*I{0;uouqY#$%(9n$ViO@4h{QYuWVDKbnuh zwz9U2tr3nkUjj}xjFRG!g`Vp^5uCOiFb&Vv;e^=`}LJ2Tu=0+r*#}a;He4 zuE;t^*}XQaY%AqIfNWPsufCpKrpr#6)}VIh%trwu$C!7Pim)aId=^%oq+h>NiR{~j zftBRSNsRPT-8UD=p9jIKjNa81vJS&&t(AdB5`o^_N2s44X>nQOO!f@q@{woe$9og= ze2QG!0aDV?M?gR7OUY@YDon!C#)M$N-~CiXR7d=Eh!QMB+<6SqT(qIXedXV-#yOi>L57}HsTK;#)fQXFUQ70uSW~k( z)D!Hexd59Cy=@Tr~N-79p54)7r3(JcKegH9&J3q8~cKFYu}{D+CAAv77%jX zvB3WkE;yf3Y`?HgSrHN^syWB?!Y)5318b;o@`szf;<9vkpc1tmtK+;i7@=P1+$Zy$ zizybTCi1^VZ_$m~3a5(S9z-}g1HifB469cevx7-hprdOwKF1=*w6GFz#_1Tm1wOLQ z#6b?JbGxh(juKl@V>6m=_q&(i}H`mb!RBYFhmjvFa!HZ1Pr#BX$K zaRsAGUAowf!!4?tsw>kxU{sm-kbeKG5y~QBOR0tZa&l*OPpFcG}FM9MR z%TG*Z-Q20GwYrv#<<@PX(w+S3B|BVFEC>cf}WM5 z#?|jgBwgjpc6V4uN)ftLWCUUQGPJ}4UZE>`d>5#OKoXZr z>04kUH5LQu*wM8hWs*$q-JU21<25dQ4N#w#LaE4=?YwUAQ$uwl^3U@~`J z@XM|p|B*Zdgwv}UMR~UGu!2X9A$^AE6bucgps*5DQDJOY*^x&*E88oI)Y`MktI+j6 zk+U2ai?H2~=hl)=3_!{RtBOc{(sth2>LNs$WmbaUy%jfjIL4^&EQ1x2UcA(&w1>gcQ z2MJy(I6p~R;E3(MaED=tT|BYw*!xL|kUgQ5`G>JN$xuTaXQNw^TcZ>qrN;s1k-php zJut~)MVF&5PP(p_uYig7Lhk8QaLH;wlEVv(UP`Ln)rk78(9=qy9A#K2^NU1uLo*TD z4j8l)ZyrbAw~oMIA*bX;$yM5x?4~)&`M=rT$T$!jX;qc#6tDgl!0t zYGT!-;A>9o+~eV30J57nkmC2$g!gVg96za89wJ}RfsQf#ZY+7u)Otj`( zGX_nuRrNw=J8iz|Z7J)BmG9K@FxTq**JWh`qKG=s5> z)||FS`CO@K)3z3N=?O+HwDu_E`BVT{Q{@G9Ia6wA1sDGe9>QlWiPsQ}5ACg9t*CGy z5S_L}lfL8&c^0QwpaS*zJa-05Lj9G8C{>OlDUQ?{oWs&f66U zr{LJqf^Ulk{p2C4f)U_}ZU{FF`y&8go@b~m2?YZ-zvHH zdBl=F)xI-%=S%g=z3^d`btS z8*(qXb5X@A{gcp*l4Ofc<#MP_HF1LX1nxP}<14k<+60RCu?u`CHe9W8M(&eXqLL9b z@MR+9q?&9!(gK&kiP`m6?);jHqF+64`hekx3~AJVf7pIP+DJogBoumE4{JxV>1If? zRD>o5PJ1H`!i&%6H91XbO%txPbYsfvMI&jjYn4YM@lI;a3GQz5US+GA$cliOBkhx4 zzKpj8g;O{@%sjM5{$~M$vxjg&2>4!zCo!}NdtLZ4!M?9f;K7+x9OQg}XE%#Mr>Fw1P6dVV@>nlfC(kP9EPP*efu z7`jWPP%cj)D@PFD0$1RUDk*kXb#3i$r<(hRH?h8nj$#uLzogIZvyyAd?FOJ|08d{b zDBMv=G7j|_DX_0pymg(SiW%NmopjsY*6~D?Ju;?8o9JeIF^e-qb{~x=CIEkLV2U7gD*#tp_)g`5gaj;?&z)uGe2 zJ=%e@rinuKhpEbQznX?vwi{>3EA5OhNYRQe-ziz(9eZr5oZ3h24_t%g~l)3 zaTL%2WHYI1tg6SK?ajTh%We=N><_gXUez-x`XNh?=%#L<>tEgjW!|Ti=*3PlPr{wJ zK0t7Y;mW^4dPnSg=?2&14pG}2gsHYpB*=^*aL5h_Si0|?7njHipzL2vfCX}7?5UBm z+?&cAH~9dMZoX`FtblL1JcZi(xkX;hTQxE@a!0m7whV=0y?XH+NPe6Ar|+guvv0Y_ zxrkK^+24k6pwm6_=|~jAOJ5~U_=cya)4;-=t`vaumF`qLz}1_vG9Ox6 zJlB^CM#@pxP-3)7K%$JCb5}pu;)wxE_$Ml*7qG>4N#8K#AlB0%58Gti*OlM9eroIp zan}{Pae{YM1H|2ZNJ0A)nC$&lWYDWT*C83Smex$5N33JnQ!f%)>q`w`!_GKjU5Z)} zn-BH}aDch_Fy}|{)uKo{Qx7M$o#|)sWorMBEEq^cH>^+Wpm4s1)jH8a4TL_|24cy~ z?}=OXJF_ZK9N5j;A-6aPQycjKoIM0S+J$dIYzB9@V#JGowlIL!P#g?nVIJzgswYqQ z`0EdR@eC1Yadpb$uW}D(h{@U>xo2FJj{#~V%7oY!FoJ4s&ffFkX9A?g3fgf}i|l=7 z;bFEu4lB+KzNW%$HzC4SFRpv%)P>ZA0uuPe@?T*$K*5w>ABh@l?h6MP>fSP|-G2SA z!OJtB7qyNo<`LJ75ZLLty!ldlFJP9<0#lAUO{?0EJL||i-Apkt$ZS>Ryp5uhfkssf zfs*0v$5jDQ@SZq^FAz!1`c z$BtEq*2C*Y|Jl8zv0OAl7tavB!p`wXBcy!u?a?kuWub3}lhwGHw!a!G`OJ>of&|WW_mN6iHHd|W6UT4X`w|J;VeV1MD%hS;xL_T>kW!c-WL!ctfo8ejS40qbFi|O65M~sUmN+ z947y|zKz(*MO!w)sqL-3;2oZm>uf?Yy5|t~C6Nu8+~a$LD?3nEh}-6r*x)aC*J*9I zFJ)oZieIfrAg)m2$AFTKy<5WxXFoNGSp7zc(QhB2(g`3$A7mYTpGgKyRVdM0D>GyD z`9t&0Qomck`6&E1!#3krQ~;utJe^frAHSuPldHpD#deFJOmq#$QE6l6Ba$P0YztSc z26#}8rR%ye0PeEuwU593)UY&dq?|^JeS0Ad3<0HRH-MnyYXmAps;Etq4nZ9qtRAc0 z728a`WytLy6lHzno=`%iuu25>z%G;?R z&^co(l_Y*q|AYdvBc>px6Wp9*6TBX%+z$D!nR$4zinSO{IFtqJ~u}GTr%h3H9WGpfY;la?=fr^!eMew2P}6KoYH= z#@6zMS|l5xa@<9(%&vRG(OdQIIc!Fch&_l_xLKqk&1r)H?y~Kz=mF*FGa%R>V*BQa zVI^EyOPL$(4v?Y+o|k<^u>7t;uwm45&KmWbY(CUq{VQ$BMS|%ZQdtF8ofYqpyqY$? zGYF0b&*oo9OW3pEupw54ENy!Cj5ZKJ6}pKMg5okgWA+}HhE=gWj& zsnMPX1DrsE!N1*ceRUMCoQAIaD{<27mB>ARS9yMrU;RitdyNstiZ$wYH=MjPKP-E* zi=Yo~uwT58rud;l=cKA)or><4M)qnFR+ckzV7<;tVwa4@iGD`10m~cLlPBzwis+zi zFAsxDE3xN9ym;8ZmcvSOb=vvmZd=>X6v4hr?*GDIks&HVU9!^pMp_)jJnyl-CT6H_ ocHYx?NPf^AcQHRr0c5(?K5Q0FPUs>ekE-fm`w4lt\"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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509000002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509000002-Diff-Config.rsc new file mode 100644 index 0000000..7e92c84 --- /dev/null +++ b/MikroMaster/history/20260509/20260509000002-Diff-Config.rsc @@ -0,0 +1,20 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4292a4292 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4297d4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4305c4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0