From 72dece411715af5959b83184c90d205ea6baf7c6 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 4 Oct 2021 17:49:19 -0700 Subject: [PATCH] report_clock_min_period Signed-off-by: James Cherry --- doc/OpenSTA.odt | Bin 77077 -> 77323 bytes include/sta/Sta.hh | 6 ++++ search/Sta.cc | 88 +++++++++++++++++++++++++++++++++++++++++++++ tcl/Search.tcl | 29 +++++++++++++++ tcl/StaTcl.i | 9 +++++ 5 files changed, 132 insertions(+) diff --git a/doc/OpenSTA.odt b/doc/OpenSTA.odt index 8128a3054ae58a9a49a937f24a982e82b44faefe..692ff99f2c868eb3b21c6b7230f56879e02ecbcd 100644 GIT binary patch delta 47896 zcmZ^}Wmw)o*ENc}JH_3hxE6}LJH_4IiUoHm?#_+7ySqbiDAwZc4u|J?-(x?%A8U55 zZIjF-v)3d^UW1C-fI?A{g@nQa1A_wtqk<7vjYpA&`j4#p(WCO;gG6FgVn9e1QW$N> z!^LClZPg{Qp-!p-t^kKzig8E;O*)?0y%|Rsi!o>gkt;Co5m~ImHHG{M%9suux(bVd zm!^Y#$H=8~tFw#SrJ*EQqwCN2GWP>9jvhJCsftzF0 zrv_(pU7RtL(4}z{4+P*~(g`*DeXvV;6jQc9HJ zF++!#S@&luZw|U&6-F-;Cad}?R@RF{_wDN?$=ROcJ7d^gPhkTew1MO3EOi<_ny%(b z1QV344zT<_QvWWvK?~YD_W4sYr0#Ic=qG;4@wfpWp;WN>F++_MkaDJd{qRPpjJ2|pC@1*m>s}If zH@#;m*T7zQq<^$xRRvNuHKnpfa1N+E)@d?*L3s&%p)_cfbd)6}^CvCLizS+Jr$XC7 zKi}E$`1teje!FcMH;8IG^Y$##)7>>2Zu661z3bz7H}0aRM@Rqlg8O6ZqVsI2c~p~N zhED(u;O?v!;4b>8n5+4-&2WEv5*2jex0fD3)q>brlOlrsK-%pvCx*6o6tKJkLHiK^XGw0 zq%#UyLEh$J?S2`$-tTWQK(|hn{iPLBEp|_f&?8EBQ=NUdsA2uK zM9-2#fd`3{8;E^>S`Xm2b_tM_Hf^lneS)baQ|E=rbCu`{?IDZ~owUakL z&}9UaZ2Iv%JtsPZ4JvloXZ!qNBVyQey2!Wuedzs+?E5!T03v-j7?l7$$;WV`cI0ZJ zuh{kQ<0Xt_OPl}NkeX$Ek;P!u9xcPZo?VbM-xbtAkbC+~D4N^+N3M~IEk3Jl$7LU# z(D@~Y*WKopErJ1PTh9J)t_1etc#c{T_+S`7Rs2103}YbUvXw}3m`DM!wl)|st^Ufk z1$J$v=tHn%&-a~A6BYcAxs1Z*d&RIy0@pkprQ z`EZ=m>MDK<2c_tarn`}q^H9~nN>uRH=h8KArFyZDcHg&-wl&pR-y#~tR#NpAVOtLN z+(iVFuQ&;NwiQ0JUce4}Qtu4m#IwuY0 zbJ1tZE%d`|=arKyui~jGcT|-Qa4Xs@6Gp2Nezw>ZNSJM&gz%rAp$xo?I#OyYy6i0? zmWJByYP%thYf4n=pm1alVI%@1^LjC-Fi&>pDTwk76I57pSyS;1+dYD0 z%~kmHfW{kg{NJk=uYsIh2?N z`>44?bS`48tj^Hs_oG#!JdZyN_QA63bmTSi>B47cxT#LJns&P&@3q@Ssd%|z$ax7Y z$#~M>Y4bNa;ccn_8VUTWYU5_2BdmFH)e#g_o%e08YtH1scS19&S?xim*p`U*q|mtj zT5j%1UA*{>>;qNp4B&V1NgL%`g~Qebf}c5ux39N%N39;yC82lWTg{J0!0WjwJo?I| z&P)LoxGz4=>MG;2a45fC&5ZqfIt2sVn}4d(KUKw_s+dpJr`P_cs_j!%{i%xkcdFOJ zNy*rN&N$I`69D4#F)TwN(JG&WP5HYGDI4+#^jcr~7=k`^WdpDp^fv*EJdeFHWP*8$ zFf(ws5qw$x{RK!2d9}2Yh+sA*hA_1XZmoTnQ-9kz9+8S5GKd*G>jn)=m)8&)h;z@7w1?y?rTDynR_;AzPIW!I-i5{1E{V z>b5Z>tPU=sNDV7;`HsAx_m+iYfA*3s$(~2j}U>66)-J2TeGrUD0e>X&FM_A3byt1STWwd5c&c4 zNO1fFQsYvJP`qO}ve5C)UOZTuuUNZ~&u|f2Vk2!1^uzBopu=!*K@OjAuNDh*B@GJ&bumc35-nMyIM?oM1vUJu> zE`ZJ*dx0tf_7ZFsmLH=HoEpfxT0#8MRijl@ZO_nLG8t<4=sdGZU>mH>EWpbin z_K?LT;fCR3aw1X)JqLvzd@zl1V*+>{U{b12OJ)iS5Fwr&|cxNb?iXGiGw zT%51;zi@pnW=*)27cIM;THk4aY?p9*1P3cb5(P8F+J_5oWvzwMEoBqv!}F6U%UAke zxB?PotO?O7qM+#cv9s;AzJD4-_TP<^LkX0$u=Zj6n^+wowMzItFQ0iNLWKAeC?gT` z@55tK8!?GHG>CFoGB|0pNsM2W`Lqq$5=;ZovxGuob45xNj|R9C8cKdqR-ziPEMd<_ zxrN*s>sfVakwoZMGJtSVh1h@sCDV66EPwPhVm|&UFwDMUkzy4SiG*PZ7siNUquA+UXeS)+Ds^;NNqe~(cNK7W_WXtF+_{#nHsPTIi zt2kfUK0*(hBVglY(y1BR7P|)2tx6$8PpQ#=JBgE{uUbIjW96 z+s6>m&j^%sIyD~CV%MEtz-LI?^u;SzoXL- zA8a$FhOnH0+_N+r$<>vafqoJM|>h&vh{H;5mtX{Xa;)_neg6y-KV2ca?_PbNyR4 ze_qig#9C-7nfaZAMEb6zO=d55e;_V1hXITGn! z{%-?lw>ZpUIG4`!e_=PA8#5R!q+0eIxG5MT@^p>ZF7p$sy-_R@1{%+`iJk7Yu1MwZ zEGmx{pgW;g7oGzp3tOpB$)EAjK5HT5AIhkUq$3$9C}Jf5ziDJ9juPWXk1&(} z-40!fI^iOO>@s5^4C&DlMRwpx)1Hffls1Mg&4NM*R}GsN2pl1K>jUbt?=<;tMuJdjnO%zOjTUPD%(YPh)7g{2m zPCRL?OA%1*_7HFxRl$Pg%)p36U)`;=R#uA_p$NXDt&(<%w2|kQ;QzewT_xdr;ft0= zLa*%{6i#wmpHu=A4m}k-qfQuf#SAiK2sHODOnrY~rXwV1AP|=V9#Ov(3#ZdkFHp_b zp0o_gio%|>0?G>0KF<|?en^&4cLebeaZC%5XtI?u4{eLZ~Rgmb52QUcOw0h(8N^8Lcv_uiDgwm9|Dj=!By-N!8 zR0MHyX6(q%=>NyC3p24J`KhGW>`cOrSowcroF7r%L4>dX1w}XEhu>#AfBv>7wecbg zByYS-?7%{>>_I_r??OB8`V(A1fCl_iDc~XXQG~AD>1eK-=dKblJ=YH(>4-c!2&Fg9 z>fI)6?&5N@wwonJ6cucL6#gx7wOn_m%(tu9kxZ~>*VkVDc8O%qz{=SU2|z&jXoX*F zgU7S~60vlSv)mN{n?4_=m(~|S65}=$QT@=I*bkrczy2a23t)JlpZ!w1m$&OXu)F`` zjW7ghm?RiN0Y5wtLhs6sDnuAptxT1Zr}Ui|tdK(yPg;uje|pUm_@69BKf$8s1&k;I zezq!w0H6Je-W+~W--SnjJ^=r3%?&=-5n0@Ue};RtYnOTF(xU=0tDAe|Nuqk>HOtmQ zs^fZJN-F-n{Z_wzKeG1zxUKX2a0PV&&v2bUJLQEzVx$&WG#gdjf6rCxQzw(1{rVl6atel%lS$qeN4ivMwF8mM=B_+N%z0t7ZfIu^$Dz2^9d9Te1y^i{SUhA zd>~$1DNY%WmMh@TrG#FM8S4;T^Qlfnkh`l?EQfp^L2>&4Lb6~6gW9uYwd+yglavfe zA72zzWCI-cfCcP-s3+tn^$h(F^+f-qo`&$PN@kQ$dL#ixYMNtT%PUOr78kjqk4;#k zk7e*BV$iX~+12PH%}dp=rj$BpGgwm!EJIbq=c3Umt?--^IEtf&>ibxe5{p>1|0sL` z|Ih3IvI(KAfsJsY8alz7!IxAZaV0Sh2#F(Ao|I2zStFbYlofhtQDgX!U7`ss9g}gB zC3#gvHjYs=6;r#A?ZTY>@rx?k-S|#blgm-E<-7!i6VleF zrR!HaZEUiM-`ZEy1TXy4{;P87=!=+!UI@&FVL{`YAsfa`pBU9ipX*~rzgj}^Y|-Sn zT1xS3-uSqhmAnxjhP+XELh)C-6K7LDZctl5rHHLp5N4?oZgJTsk2(TAiIi$`XUy*% zeu5Hbj*!)=)`G9eg|u?!G2fNbaihf))967ojc#nrcge?{-&5k8IB|sn5_F?uTya3( zqJPKp;FZun;g$^4)N&-N8J5k#C#f5hMJ#?lx|aDJucnz%uBL0n_qrydDh*2h;smLk zoSgAlCgtoG%IE>lt*L{Ei z#4}KUx67?dVGlK5#y7gCiPhQ>YVq8dBZXSR`tIwO0Bk+YvFPdwQ_1B;uA&o@x}p=A z^m#WED5@^x5Yta;N0eho%S1)GE76CE)b#IjpM9G{m$ZS}TRMPgE>rSA@gIY^O!93v zQ9zbsMFQ}j<`d0Xj{G>hI~sJnMr;tgM&zOjY5H5tw=m{+5lFm!t@@SwQ~t{7G;+h_ zG;$KNwkG6-s}g@zY5&`nx;Mm(X=T{SNhp2wAg4%A&goBQCWb@k9pwp;^<~bfgZS@q zmM~L(Lh(z=Etyh9k19e<^9T8&Bn1$UBIJ=+tqkf=k`S=`+o5#kIUAvKm3OVM;|k@m zqc*R%a)_m{w-GX>u%mX?;mDWK;rO^J-JUc*dW)ry=}MBULXe&#QYdYp(G*2-Vp0}c zsisxsysuj9_o||M ze6BWRdTyKoH)DbNldaq)LjfFP9?-uGoATy<`JhFq$inR8gRfvUsHR3XRDbl3ll)8Q zM??R)rrEDXMC+@?nCStaOl7j&VJ8I1Umk+-@gAFxSmUGo4n7Er)BL&7R2Q9YB+a;v z2p|q)n@Xq8;;?8xR2&Dw&9ra450Hzr!Bs8Ay>agPJ)1nwexQ6$$V>tX{auEIIOk7Se2RC6?~!r3Pz(loBCqVVhzv)M}zv(1#Nu)&>Miq zS1ae&L$hn!4P_*eWtaKlP7gcdPGcQ0-pkszJQO=@zU=$qe#;X=Mis$S9TdElC1 z4Zni@Y3yX1s(S`^dYz1~LYW4Ru>WjLFV@lXueqFnmZILbe&A2CtYFBl>x=Ak=xmqydvFw_3E z^F8HX_0PK&$|iT1Y3|LwmI#*GW8EA*i|B$-e*S0dWwQ4ScVb5+JVGVvga%X{AXC|{Gzbiu^{P)nYHw*R*7@a8`%m` z7kRBvOi|FryA;oX7ez!K@&0iRI0!P zg{SId!8pJpriZN7#sViBiu6pZ;OGa^Zvtt`?DLCsoJ}beW%r$I=W>YxWz-+PcfQ0( z6sUh33PDbAevwvxEBH9f;qyvh%<0L06U%XpXR@U1&UQmwYlyLTua39%oX*D7`auC- zZSzA%Ay@3ATyZi^)5G-S397dpcWyO?iw(ze;1U2P4Zn{!(L>{Xx>g0;?Rilf0!Q=D z2^S~Y79kgBzjD64zXl`_UDfypi=Dx{>Dnwm`{c0k)LEgRdPvQ-W0CT?vh%l6t3J1uv%gISWniPJ9I$o4hUg7H~HY zq5z1okQPLvQ(wWnBirvD5m7$DQbA_oLPGJQV}2R&*o+Sm4dF;76+O{DQ$u_cJm3zp zp4Vl`Y}<66`B&w39oq$@ett;zfJI$6R>(3!9HzNm2v|@w zMl%{62ntc#_y`-u8+(|f-jcdc5IMagjQ|(#Y!luP<&GC==WhY@cxrLRFc_|^&$km7 z0Cu|8V>d5voevkKPu-}0%Wo4FA5QqHL!@2P&B4vXqKNPh<5bn7=q94*6E)3=x4x`DxOSNjLwoVL1v386nXEgnxTAL(ho zgu%M0vS$FO6u+x|f{UF#SMIgATZ^+Q0PrNW$GhzFp!uG^)xCv2wYxP?3uNH?D#9-; zKT@B`bARyW-tWqzWz12};%?279j>nZRIGNFB)m9!woHfqmDDk3JzeA5x`uA?LG#@6 z`7MREu1`oW4#g}CFfQD#ChObkjKFcff$52QH%-)X)uh2{sD(i$894u?=g?;?wN5C0(^P1EPR`p;xx=NX3RS>OeL^OM{0hsOJ#$XL3{lJivg7+ zokhsI0ge<9>T`Az^dwz~6#53bvY_b+v!mVg^)a>=^}2dI#j>=buMo#C(f1N+^ECNp zyYyq7EIlAoUZqozlZ=^6*=y>@Kcr0EF=Bt^x0l#fsjMW2`5()-bU+y2Da9r>>F+*& zS9jXx?g#%GRp(ny9w{z$)c3%LUof)^CU&p3ptj7eMOq`3W2F9Vofo5u^tBfUzvy(! zy_LKZ?DGh7RVQObMsJ(MDKmGoRn8s4=m@lv@A#nMKw^&V48bfczB=R&t}?tUDK@a( z3-8?75Aw%TxZ;ChUSRSqr(D&xXFF#5k&#P#x9MJToXF7A|L`B0E0k&c5prY-nit$W zYu56Y4fCeU=ZBtmrd@?2_|9+D+-nivA*C($nyA=w+r5$CNvSZ@8k6Fh4Y&|;Z_HIO|P3nfn4wF6xE{01b}Set;t#$C^c z4B1jKVN{gY@eyh#iN*g{ZY{Oi-el#9mqF%V$Wr6j< z2NGVTxtHa*C)}eRp=xf*+KZ!5@0W!5z$q^LkoS0Cs^9}Np=r-^NfMcCnKA4=>b(2R zj^j<^h2^;g1rYjjnL7p?jKE1rT^zlU6@e+2DR&qb_VL`htS=q~up@Mv5OkRn=$eSq zkX9%QTw+_Lz^~+qtbxzC4jJk6S@oj^WqK-#OpFmuXP8PTLLzF+buuOM;(GV zU}L8aFfp<@o+B?*(2;R(6uC8@&x9;*u{QkG8p!enW?6#cM9OSC$bQJ6o>;welq| ziqh{4CP}nL8zXh~(r70EzRUBV>{Z7gQ{eE5Rf`-&mpi zk)2DG@5RuI>uMl~5Ph((>BEO~@h@v>0N%R~P)i~o=6}7Jzl&k)aRHZKnFBa!4}v z8zlEQyW@99LpJG*Hhupn^M41pQ9AC^YP}ORtrcYzbRsaxe*$M+nIb`Cww{ySSZl7W z|NfrAfN=s~j%e%I8?fc)+$N$ytC#;m)!halF*dbOSl`Su^(}EVFmdUeB-BkE_e{S2 z11QPp8_(cY)sfQo)AE}LMnM_LZP;tBV5jsjjObs*J@l9eMDwk^`p3~;LT=cIcy9k1 z1RxIjeJ4h_WS7{6GAskLUXRc651;0Uh5%d8LVE+mMm#xu*ZHBosF4~veb=>n8})U1 zY=^FH#S%hD%bY;;%t9J{q0{RPo}gGFf(Uplh|bH7V2W(6@U(LEeiUBpHe9dgL{)eM zjV_Fk(D@&s{BmtRZS<~ zN(cCgz36>QT&Z86Y{p`XU=o)%mL*GEQ3o|nTPzg#^pJFwSe8d>s3NhOfDZOua(onlJlC=iig&)<2PK8 z>gPi8-b_A!vx^+;-DjXKA&6HwOn{&c68k=` zxY6)jfygg!mHZJ>G~w?=sffR3e4k{#h!@3o$?3z0i>WLlBXrTN<6%fP7D&Ak!>$1= zn}ezEvf^1|et7WxP%~BA$BcH=IszskD;~FtJj(|Z00;B z%@RW}ebwXliDm2StZX}nrJoa8%Y+1|MBX7#uMcv6H;D!)y@vkS)tWClaRO&~PBx1f zp$o^G9+wD)y>fILNYDUrr6vDDHm9-<(uQ9()DStaUTi=fcF`*@4dAT4sgQnGDaTCI zQ~4Eun(qiobw1H{i#(sX4lRkIm(bwc{bGRJPq|US1H+T@y~EBSq2-q=VyGqH(lGbP zD+=jxcz2SoLEudlrVM@yZpv7J=mh&wIba{Dx~#wNq^sZgL}kuJp9iHI;cF}w=}29z z)}QVCTs|%1{;GGmLXPbn0dTE}Vy>v_DI>}>rEDh)V#H_PMmU~th%x@OCr|mteWblD z10wO5zW35XQvc&w+?c0DVJ-p~xww*w6aD;s$lwgF2m$&5Zg4p5T_8hKD&?%{AJ4tb ze&GkMhC%873A3xlOcC;1``Riu5KI?E?#d- z%j=6f;TAsX6C&%!RX01M3xf-cgrO6m5^VWVGS3*>42zl_H|`-QRA#b;!AHf$Q0YkN z?kD-c?J{-+3hZId>USC`geiQI-jvb2LLtrUO38Ip)P3dbqLwco>2a9Lyz9nzyo3Bg z4JUK%g=;X~sL5U&%~pVSqTe~@zaHuQ{0_(^Hz>s_{Ltbi6B8re0iVOB6+!CNq^Bt< zgMXEjG-=p}HsRmcrOxm=>De0K)dIx&a5aKqS`#7KP0v^cA9g3;fz@;cnci?Q5v1za zv8h;-)$|jDdk${TUphoiaI*;0P(8c2?s!w<`pDsX!b1x8)hj@T$uS#IY2iKL3wD0W z*M`+1t6%d-05Nu3ArG12T!wsZY@9ayb~rymy^%n$Fp_0akb$w&c&+>E(;Ns7x?6R8 z{pDZ$<(C1i@7Q^wT6P+#*a%sh=+Wptl<%Lv&5)HTre8!It6N1MKwWW>tH{TCk*dC> z7@cmfDf@`Z2|ohcT(Y7Kwn=zw@ixeAP6pEk*)StHYAEDY|hrVN!?ffJ7283*%k+++Y+l)@RkBal8 z;j;VbUcvdVD}4+3h68NWKA72S@Ecu`l3JdNc9tKKhX9tixy__wTzeoJhlz(d2U zPFgIQnYhY_5h-C4s!jqkPA-fVXzcEuFXaB^w_t2KUaN zFkKD3KobJ}x20M>+Hf21%{1G2C~QEyoE%FgQXeHHmRR=!62li5DyG<`ft$ZiKh%N| zxw7z8F6i4su}(S$zN;(93ko&A_sWCWU8+~Up+cJRBKAEghiWqALsSv4E5%l%kq}$( zNigRFEay^>P|~rJ--@?3$LS~YcHPG1*TdJ|JC0qvc3tD*+{<9NT zMncNKljDw%*hOb>lACY37fmDH>0AFrD;F0Bz{Ja@oc(|e&wxi+VrG8GW0fSnpv_zv#3h9X3`Iui~mz$nw3FSUej{wik>uAWQ}D=n-%oZN~1GETeq zl9((M^6KB-+%UXNv3A3tUwq&E4GNb}Bx^p5{ij0XCfc1uqkb+K z2^LpUIudl3f4*BL2~)Ju3KU$9DcrQ|_PeP`Pa~4q7~L?Ma))c|22nEc8tN>kd`$K4 zIIRS}pGoR~$5jt^h5s{)d5afY1LQfivf(ax1h3UPXM%q#IO zPAWl9#f0C#GBpi9R51&Spn0ynVVra*ucfNpig;!3SbV35>kCK2M_XFP4Rvx#M7QBA zbdj5iMR)tg(7RB?AeLW^*wT#rZP$p{o8bJ~nYe>&QH(MuE@vo$>*Zn^9WY+tTUoPs6X5y4tla^z~YQ)-W%1Y2w;!RXl9;q+*U29t7`y(^iGx>}atVGf-8R21z?5 zh?UgkDEW`urqe68MebIYR+j>DqyF-l-@<4%Mg*DQO=!4feifV$eC&Qqb&*bn=|{M7sYzZ zYp<)#t!{s#-O!AD3Qr|-vSd%&a?Vqin>r|Jy`d*E`@e{eVVpEMo z7k5=R6`Va9GctD-oc>QiO~O1FJGd(#Nq$Z12GHs-ABrwADMPgZMdzx>j;qBwCv)R# zfAeErI@OE9kcgG0AqIK;ze1w%e;8B#zB#hsifr0@I#>QZq+qGAYn|2(VQ7+|y=1O) zw-dIII-FZwQ}aXDp?)+E`L7gH4TC_l5z&z;f1)IVRONEq~Hl!ar!to{z&MI1^#1Mj>@Y@k>Hxk)jZ~rEn!;PF10h@h4)T)hd zo~tk)%1~c9Vg~nKf}bc0*P&nb9{)xDw5}yaS+DSdnZT;=0m7Cve1yL+!x5^Xv@L|g z%h%$~8csmLTIVqPVkqhEdL4ervark%*U}WwpN=B`Dl|p}-``{g^KXCb=1Is2ZAR}0 zzjsgQ<_M1{F$xIz54I)GeHDSzI zi)VNbWt1K4#7lo1z*|Szxf<`OUU2x^WjZz9dGgGts11#7sELfmu5is^{;pceCDyuW z@knn(O?7MyPUpYj5S2s#`QAOB^rZM{F1XkjRwRpuUr$z0aYCq1X_~;C! z$Ge+DC@dM9_tfRU9ZQsTKCynCCZ&s#bPjgh4|^28sw;U;5B=zJ))M1$AjntKNh0#c9&_JD1JJb~Qi-YV^jJ ze-C7~7gPT&vGC3SkJ>#EsTZt|_fTH+V+1j_wR425S%9Od>TkM{UP4Z4;;n9U(Lq1u zHv>1L_?#%^=S~Zmt+iX&6v^gLyq zYfY~VIodeYjk{>#Gfu>NkmMWtTMuU?$_Myt(!j*`hVJe>FV2v+zE`M^k)GlYw3iG8 zNg;X#?c$Zq8m5cw(8WbjBi={ry-hTah6h{jN?zyJ_FgR5<@cL_ulIoTTzl*=?O5Fi zsck@3;`kHfNTXnXw}z&23EV)-NvyUqINV4PPZcjUcF3~F%;}jko4816R!ThLE0HNp zN`Vq*>(DwLNo-BzuBoz;Rh5E&9+QzrD1yxtCHhWX>joEzR8XTNj3rG zs<+~z9f{x>K?|-!{WTEGW@(sFoC1z=lK@kDc8Az+LB&hArsFM^KZh6$D@X8Re88K@ z!f7LUxDy{%q5D{6+$xg(v_}@bC%vZS!k%C&>9d>Gf5TP>m)BDeUogj5J_bU8DWe|w ziZ{#Pz>@1y9?N*gYr#6KuWf-7Gu|+bY3Z|Nao(zhM8Um4P-!s`7^9F^W>fFNw0x`|(%}_Axfnz7m`#J1i5{qOP7@P*i2 zM0S79``ZT2Fb~{Z$1@d*spB5L;UnN&u@7H@(;!@YB+J%fH9y*sv9e_kV9Lu+}D z{Sc*6Kto%slpXC5#a`z_JZMS%N5N=Mc@LvC2Xdn2;a9g?)gtq`r()^Cg(&pk*Y&^l z-i}qJzDZU)$unCG+D?+u5Q5Hjp!-r%yB>k$MKoD6&R|t-uN`H>2F==1n-&Xo|xn2g~5(MJ9zt$6~FFTMrG!wTrPcJkz8{#;a=#&qB_2%cT* z3i!zOKDA~_%AqgTHph9ETz)Uwd0Dv=>G0_6fK#=VUx~}S^Y30V9OnAn^|3E$iSOq) zIq9qYbuM}7q!dqb&K{UOn3vqsXbn&@&t$6 z-fzhw5_T+`4&Pisj+!)3K97RQQ>S*^5An@Le;XL4U2{dZ7wg4-?kR1hLM?%l5t?Pw zv3Tt9xFl~6MHvM3HnEfB=VD`HY9ZDGQxz*55Oqgb#uej9ism5WMN?`@4SDkdW9&B( zvC4v)C`V!c5{Ei#n|2Im`1R@{1?9M2ccG=y?yH?h42y`wC=7<*U!tOLf{RJ&!#_AX zbsjN1NYuciY8Dyk>stP}O&RShdIg1cTg5jW{Q$op`bcl}FPpMBl$fh<3&oHG6yD16 zK>B7u#{I{~TCO;~LCyS=!adQEVE&?z{rYLEUlh1}6FGkckEEt=HN_}u_smqlwJPU# z(r$!lgHc6$SDq10gSDfX%sJ+rryCQFGFXnyUTV73tB9*k3Ug(cM@ZWGB@BM>Ys z*$&4^1H+05gdu5ThCSZ*;!@mneQnZgfhkRJ~<3LDz zS2KU>;^ELHN=N$06q(F8R;t~7Q^WmOAY1bK7sLH%wN1(qkta09-G32tnGxb=MN;13 z#y#|_*R8EUih9ZfsKD6J#=Z@2c=tJ^D~!CytWKZi>W=*F`O65737Jj};5pgXB08Lc z84QyYoc2o{vagQhan<&fE{#fpB)8-NTWCp&Qp4Klz-wq5$ykCoSi zU~Hmwr9xz66(Zg8m$Id0$KPMfDwQ_VmquuQhapU}($Yl;m4C-Y40Q7?OuV))$E-6i z$K28Xlp3FCPEE`q0Lq*xh!=0#d$e_!LHbYoz5I_!4dadfhLZX9&ph?kt_D#hdfYoP zK4-`B)@lrrT_K+??%OQk%tqEoLJ1E#t>M^-znWLmzdkVwj=e6|z~hOeWpHgywms!* zPjO$?;|Ax@>qC~7e`CyU#l*$f^?%2DPbcdB(n;cXtzJ!s0}n21SI^>}2kxD*MID;_ zIlBD%0Wn1+sz2&5=xuEw^E>OBrqYru$mIsv(5d^=;V|puf+MuHFN*-1Op~oKdQ5VF z6PF0bgU45irUZlfgk)o9krm&9IXvN@T~x=9^`J+f=Z02OlgT>m)|yYy>3O}dbw|bc zC#(7h1XNEc5DcBDad`GG^POGx3pg)CeqRqgR)A^*+mY|DWVRwg`OyiS6Ms0EWTs-m zApuVxqTygOdIwvgu+qMn>ZVp12>NV6W6M28N^t#iA5Y>XtMg5PD=3sTSHM z(*2uA&7RtO*B-2ZYC}x8&sEvfQ)gnK$1`Aq zvFVw3xv6aBX!4vnE+$~2W3QeTsf}ISuMuK}OSE=GEAlXXD=-XG`{D}RjT%f2RTRHt zaJpTI&N*ns3H+&iQWm`KV3yGDwsV2(YKhsY95v_eoY|N1? zCiqcafvm2{Ulx{(E5loX>(WU8C^gewrzW}VKa*YlxX@0DDcV8X?cTDfnWu&Aq5 zpAjXk;lirHb74>)h&OW1oBtYu)YFh6;#_zcsPC>PeNWwYQ+2O=(1B`TB4`J!;KfV;z?63h4R=y1x2q&T*k@Yvh>cmbRUi_1NdM;J&v zSCCG5xSGJ@SayjkF+%$#K%oeWb<6cI)l{x06xy-ic_lzzmRcvZo=xcos1@@cSLP%krS6>7o=t>;YB|S{<32 z^x|E#7}r+sL~ZOexxtEc`B8Nh+BYLEHLPTSowb;eFb^d+{K~0rn-8kY1F@SBXH$~0 zJ%h0me0rp>pC6&s$86`oY$v9zMOmL@1+4)n050d@HQU=~)#t^LmcLvJ|KRq6J! zP&+B{UjI6PJkO*3m*>+vp5HAJs1gGAS^mGvJ=v)62L8OFF0<0czLc}-Z@EA*T1veB z-`d|d|8s{DdHi?mBY-_5Alp|P&}DVS&ct)NgZI^gvr@2d*qM7rDne5SOceGu6WI_9 z*Hsz}^4U4g1VgJZDwU)+j|Y4V(eN-Bve;Nx4b>1$$}bcwR4Y$5@}ftAZ6W=fGl5LR zR%8yEYr(7y*^SOzR1aZYDb<*30fZN&o6{GHppMXP5r3`e3|v{8`^bawrgU~RzDx7( zvS_?HpuDUu06A<7vQQc*Pri6ye565|kp2)bU_%j_8Q^)4&r|qdvA0huT|iN5Qc09Y zf3&flfM&a#u-U7YVa@EYsKZQ$uDiys%5*{fT}5B@-(h9NCoOwkd;*xt9Y-(y0p%^m z<$RqiSdE_E0E$_*EKGL8oS;S!C-S9&!N6z%pIyklg%|`R%BGu`YD=w#Wad(CK`tpN z!WH~lVyQkiUy8*=nNAo6KY#PQCL)^8=K8q>eXk!3*)BW%Vy<>D>ur_~DClM=sYT0@ z9K1t7g0KnvB6b$tc!5(GAK zJ{p-&cu=i%Ek6S50^;Wgar&Y53=h7wF-BhMyy!9cQgLdZ&b&e_U7FoJ_}Cc2JqoS= zQL2U8!xdbuH!a*)^v#mdDU({eo{q|XRJe*dSv4I1g=SOA@f zA>69qzfl^-SKgnA{93VnCP$VxA-1XB=$gRn(RylqlJ2`rIdK7Uu=IkTk~n) zwXg@WzDT5~Ul>b^4cjPbw46ISb$hyJIt`)}eeqeVzO9nDUfIM#ogD;%BItUaW?;m23vqIgjaA>TC3@aS6ilO0DFk*n{_=^dTQKvnAGs0L2Dj z8W+tF4Yot~g3%u{ngz`wbgF(;uL6hQ>m5chqYVJ%ncM)~>~E}U=_O54ofGcc!%t)b2U)*7 zpNm5uk>U{cE286G{-OJeoKJ;QXi#^A~%0o{%*F0AN^VUMC&Ki5m;Vn$9 z&ZPMCRN3KC^}X}746@qSb70sc%AO|&OS>N2;#&t}`mP2W)i{m~lblO$hQMv?ESjHm zdw|#D-&%3;z_reJWoh^axH55*{xfBQg zeRKfC+;=L3_7?XxMDO% zQ?W5gRTWWy)WH8m)H`-p7H(a;v29dr+pHuN+qP{dD`v$N+qNpUZQERNQsJAu_jB6$ zFxoZ$!QJ{8z4sZkR@3ZJbgXF@mWRfGnc$M=z>@AF3RbaqMaBk?>EA^KS6er$SO%dN z6{k`no@b`v+te9fbA;GK(@(?P_owwwdW74bbQrF0J|=yCW2QG*_ON2M_9}8*8~}N- zY2PeK$j*Ig)Z+{RQl-s>yp0$ z_G?(~iCdWmkWqO(-{9SM+^i8IfxhYmK9va@+4oriPS~O#{^1P?|6L?=U^H!poh#&AlQS3$I{AkUit+c~#eo ze8sN;SQFkq8TW+KA0Ks1G=5sNZ{kLKZ-uZl9QnQ}%v}LiRK|) z7JsrpR{FjfyryL4{@HZCUr=n-6|?}tT8t!=zW2{~iV+t;6a{W$JT{#sG&p4%rZ4*+ z_J~#_3FI{v?=SF6`Rgv;>7s2S40hCqYha^I85jy-guv;2*27yaBk_ZbVfE zUYGpsR-BRW8=wpua)P<7qJoq$Ha)F9%8Gt>;aSJzpSr73Q)$r`||%ux9K%qG6AX14{`pl2J$g0pl*2bYu(lyi1MWHcLy%-u^2Vm z0b0qvls)4O*sl8qy*v142Yr~AW@X!_Du5qe^KTUVIGZ4Xhv;C|g$H0K`o~i z7e3r_YE=~T38!sheJorlJ5tkC&Qbe9nNIpEi)Xu&_~FS4ldJdB4`)@}40GiU$&pR8 zID>%tOR2MH%oY@S1ysh0fjMYaS0_gXc{Q*~z#|6W!X7oWFu{4fC?~|=;ixe5V^hTl z`dM|dPXN=!Ro=(l(Zze+eHz_cTk-?Uo2W*1#We?<&yW_f3?1p8uSIok)y$ue>g+B9 z6I=Q+$Dt+Kzv%g1imjT^!K@A;O+0LxYJ325vGmR?m-;p7QVztDfmAyt4tz9&8^7uqm@oFHJ~u#0Np z$;_N~NoNl>UO)E$Z7bOBf(LzRxy4b^v$y>KZ(Ue~Pe`z&*tmQVXKW)B5rKJ>?Ggs8 z-o$7D#lt5Fq0WSyC%jmXVL`%-3uOVl(@gin7)JiqKT!pS`nykMu*j=BO{*@=WX!;9 z^?zUEtB<5E9R{7?TCaPaBLA%Ar=V%+=MH()icZNOS06qIxD5u5Ha`i7^{@)fQFIRj zaxK5aeK&5e*RUtKo`~Xw@^*Rwhz#QorWE1_gYw@8YK!vLHDvm{Kxx$7h(R^6-6Fx4 zxCiW1$7rn(v%3b&x#WfHfaW)did_-b%5p8fs#!@c>NT*;j=ntjJLbP-yqrrZKVGDBXWTxXLwafnzB3<@qS;}K5^Xu!Fv>MWXk0)*PQ0y%udg0zkx5r6Lk3i1x{%B zk~!8{ZCvGs#fJ?*udeW#sIYD=-tA;XAmZ$(XL*|vaV5Dcii>A`Y3v{Y3*q=$)_p6(fZe*YK1+16XD zkl#JQP<3Oy?6(?q`ZFv0GjYC&KaVIUa@F)(E_g|+)TjA-8c>^K08Y;AN9X&N; zpz73EiV1B`-Q@O{)|W>-Zkw5DZ;Oa)VdJG0VI~ko`)H1UnE4HY-s}*ni8@djG&T7}Sqz^h{*;6umuRu(y_{tA#q7<&FjB@uZE zs#aG;CsA-yw+OsLy1DuU4oiOuE(X}Y5I?5g9vW;{!>-;E(LpVB=>oeUe;*F9XPiuR`bw4hBM`y;&F zqqy4yLmDFr8z?zC$^-BQAyLTrVwv^zUXGY~@S1QTf;B%4=>I}l>MG7SrR10;p7o?Z z%E7kSVI#@Deg^MqyzIKq8X#sJ?yxX_6w_jL*)|SA0_AhAI;zL1ZIXSaWBY3-X{ns= zmvmg_NM_yh?s!j7LA?7jAMn0!Bt~LQvK}m=^Um5o?}!~II}ZT~-!2yL9dhi%jM#D~_+Spj-@=CL>4DGz`^ zjBqju@fuB#e!xt$L2=5jB4GS@1!g3>J-WQD zHVQ)7KW{gH+aEUoe{I0m!OT~U-%l3op{C-J4^{`Y&k+yp-T2bH-Lcm7;Z`D43PoP_ zuYP1jJ^*?3IP^MpI&X2h1PC-`Wbm&)^IE9PUlsopiB(+qlW0LyVd;Y|4Ca}fC|Js( z3y3@+;2Yd_%i=xFMPM6EBQ@%LY9<_7 z#%pcm)g(jygF*}z%edhz95Bocq-I2#$lUzt$KcWkn*LdhpXy%EX4bMU3Hk%!)cPKh z&IVxC!Rt!R&d4$Guj~M@)mx8>4U zekvf*gVJ_#dO?bSx_kDVv%#l$3>8{k<7JE-U5>;bsk>K&;2ul)532XdF-)BRvFzY7 zfqxA#*$Tn7ans5OT1OQpchXPEsHFa&ISG(7i*Bt&GL54jkAj!4;@%OPHj}gYZbm^g zEv-(UKoJp%6TF-_O+X(?*(LCTHZIjMDo7Ym7nul7n8>s_0FK$hs07m`b~bU(HTcDP zZi_JTA#{7Xl>9#jl^iZaR3$x)4+4rQ_0kv+c?%y^u$oQOob0mn~u?es+ z9`Rj%J3@*{G^wPuN#Fd?vTv-~$k@CXz*MJTKzI$c&Iv{KHTF`i_hj^X*;O)>sW@q5 zQ-8S`+x`Qw2P~hw#ta5)tL~GyQ+-A8FDKB^&nzD(J1YO}W=;)(<0&qpaa22tO{*`e zQY=;bgBoqKM6axq%x61OD>q;V(-L5C9lB|pk7E<;A+_K8GlFBeP%kC^kyHtG^8A+( z8i@ZdQ^JI~qq~B5T+olGS<;XK;hX-ONM^2IRMT_psAp!zJZM+?7#U=F261+T`P8vJ z)V8F9wPllqiDwE-aH$A~8m7kyxK^D^aM>s}P{KW=536%t>xp?Fj9-TS4MYGWWV}Yx zhNmG6(CtbkT#ZJR8e3P4akNG90lH^82#O`QaAzl=~GyxRVU-_z7JiHL0m^QLB zn9p0*?004bN#u^-PmI{9`p}=disrf4KSH+c@c9B@6C!!HyX>sy#=)-O%if}eY6Mbs zt;cc!B;8b5N=h?i&lA!?`1SyjU6%5uTnWJe2ltZi5N_1I9%9q3FyJ0)D0Z&w~)0@EOkvA$=8Is-epOUa0`g>fH zM^#Wz&Mb^c)CVV;hz6Vb)A*cLQ3V?{YDqJ~oBaWZG8z@Ikf+uOD< zB*R=N5a8OXn8LQv2r{)nZzcRp3x`lnL7n7Wj?HYY!$PhFhyz`4y0DMLfuU)0J|wme z`VqKY*v8Mp`}E=tJUq<|D?u#^sfK15#+46bx4_Ok>c`^oOMHtkYo6NVH z*3zVlnEk_7(lnzwEbwtu`5`OSYHa`wZ$hPJi>4PTYOxDOzDPWKcA-I&c&Soo_HdAi zRl}?-)y)f_I_4L@;SR?qSVwc+v<4oN;XDC|HP*XFjANZs0PT!UMNGUXX$Ben3dPL5YXL}|Wg0L7-7LKbNe zW8c)QZnM6*L4BQ-x$&C+EIy6#D=L$flL2yKE z^w}g&tgb#QBDGsvtlA_43fl<9i>rgXOt2HrZ{(o&jkWN99lzu_FsXBdgsl+BYFvwG zBQYky>8Ea*%3^}0Yy0=$P{&iNiimjM{~Um}VN1aFpS%ChZtLyFiiotbQKW#?a@Twa z!BHu7GPV2a(Qi-dRyPW68?~U|xMCe!vG!PI>|e*Q+ca4TPK_b})!Pe3RE7wWU|)&U z&1{e=)~cQfJsRYd4llR4P@QSqDBfeGFD-ANo8@HC%bQ*7IY#sm*P4aYfXDjV&f>E8 zZD%nnADemsTeWWY!j+)s7c4TZo`d8aAZ8odCh|hd`pYA#Gunizt!^#m>Z`bugS1 zXo>8*|8r*64C?LFJiLFKYmACmVyjmU>Y#1*Q{EU$A+FRx>+lDkkT<}+KAUtuZ4X>N z<3#!Lh0wj*Oc5CbJi3!iY3O6*J^)b-Re4#xIU(GYn41sayht0}2z|;<8`MaO`~czz z`u!1fM=0|fFXKHmPLNwj+5hmf%CxqALRR|aJITi@ zf9|z-8dnT%#rYuC1fGM7ZUztOW4xx53G@6*6~)D|Akh%TjQQE79}Kic@((z{JL^)& znm=*b%KjMu4~vsHPh83sBLA$BF&%>iuMui5w+h|;Z!kG8zRHDW?PRr7u`?l-{0RYJ zhUVr%^v`9p-{liH4uKvw4DKm6R0};+B+=kFi9nvXW^Qe}-O~k6D#s^$fz0QS3Vo-1 z_=i)T*8e} zFT>_Yz4>$;i#6o}-JBzYglN85C=ele<2+3+Vk6=@JHbBWKuRQvx zlql}>A3B_vF83-fIWYEo0PevRW+-$?s?A8ivCBM+gd>Ji51;g(_R-iuv z$Ozk;sprbFy@p*^4h{j-3kaXQO(Qh%iRhx-6XWJ{@^vs+ShN~nUaF^MZ$;HN>ag_p z2$1p7o!Ktmoi^#BIwXF!b&~Otm5q}dO!AL6w8LSg=hA=tvqGv=sWLcf6s233jYg9` zax``7SFKD@LH-!fsp3&vLDL3;K3^09{5*Rk<+wi8tt)*_fm;XiOtF7gv|8~XBAc-D zLWv8H)jh1ZZF-h?2DCWao3zLx#nDVFs0p6ed#yUi_Ru9ACAtgfL&-Opcr&diILq4G z@zp+clcOW(SWulP=t*mMX-u2Z$ljLz!D&?+k;3viPEh#$^==XvK@j-9zgX%5hC`Cg zZ*@=pu{lK#DMT0#nrOZ+x-0NMMjk0qj}r=dy3QT30$;Zg&N!=XE!BF|X@wiPW$#qm z1Co%Rp_$E%zkqihiaeL4vv3(XbM*QVk9!*0s3-X6Fi*388F`wWi{G%|6&_vk(V0C} z4IaEW5;LL6{Ag?v{xjio+h^tCq#>NiL z?n}UiE4qZBqH@;Br(QD`9dawZmTv?^9}Il+Yjinpwk5bMsmRWPqqWcOL*l4~aB6g5 z>!B)Cwzw;t)dD0vEZ!|JsQYT`iY3@xYAL>-)C$UvT(twtcC?U?mgs!7e9eBOV-%_m zym}x4@Q5-j`lgbD0LcvSC{*<{uHUFNce9+JJN_G{AQpu0)@MEfGr!i4?}F{` z(M?_sKcFdcJ%MQb?8Ff3Rh3mbTWQ^q;ClCT%PA!VSS*W zQ|2V1dy!t6$>O4t6%Y91Hh6(_OU#tJxdEEI2=;_Y$Atm?ZO;|*BH1&0%#)XJ#dY9U z#@wy%^gQt1n^OZ^Lp_B>g=*m>7WibHlE5*(;g=9V%q{(xrQr_XaM<(m^6t~6?=ob} z(r3n&VM>c05}%$)(yyzR9XZc(YSEL;HV;S7k!YK7kFs3EatKgR_3-O#!0-cEOp2Y_kFE!KA)5Kfu7%j>xgt`6k!7tK4(0iH5Va>E<&~2yQtT^$i)2+q>?)YGB zd;Q2zwkMXvGj zX~(axDDMJ2nF}M$1a&|Rb22`0(C4tz`Jj}7EebHSnNPttK;b$X^*ZHG{kkYjU7%CY zM($&6-j@xae0`0fD;*dJMG-CFK4;vyRIjOAO&9+(j8OIilAtb)vz(TJ_(*v2oWekqs?&yKiu7UoIUL!;A8U|~=q(*Z&SDE!#eMA3j2=`HS5s-?4a@U=!Mn9SqRVs>{80hq<4!3uk2Cf!tpMNe`zGA5;zl?@4vj7(!@ zK`ks9(+Ytd>DB?)+-lU1yy(MobG1L-#_3=tmbd7F1BWdzjn~wvq&q!Olu|2%4rCRo zaG!_uVM+CmZq@~+!6r=0zu)kH|Ds43;@c>K8TVD6ma;I;a;2R7AH??>0gaBzwD9f< zdkm@b;$&}*$flOnrrkG(56GMX#qbf|r3aU0da$*gO_2B-Kj2 zX@VWh*?N-*;B5{m7hWuU{7u5sJeW4msfh&QB~kGJWHp5AolOAO#Oc3I?Aew!8lrvJ4FXV`Su(#xe_k=w}A5DzSn~;cuk@>=cB zp7#i#F;?=9LNFL>8>jl=xqFTQyI|J&!(PKpzLS8~Y|cID>tEsXwW;^$_p;+8y1Fy+fjt>1NF9H3uzO#jO>aX@y}nzmWj@cIS{&KEkl_Q~ zhc*v?0(5C0jZeg4q1$j+{)D6!KM3^b;}k=%wk^k?ySAD>RPSKb)~7{Q+1JJZMg=m+ zl9{52=xZMVim8pctl5*}E;8oEZ4_*Kn~7Rf->lzET=R04QN}!le|3@{Uq&vc=Z7bavlW#(43KG=^#I_^@pt!{!FZ-Cz6AzemLPB=76wO%4TYpwpL4Y!b#2} zno#R_yU7+yy#(09CWJNRcvFv+{@Joi!nS<=24M1R zi7XZ1UsTO|Tzh~(PJ_D(DChnU00HI1$Z0vD(27Weib|-`yHdLlXe)zTk5rX@h%EMb zjEUNd-L}GQ)z${ex^5BR zolJlM3xajB_M*!&c-UApOn!pnYY)@P3)g3_fz&==cb%dp{aIxIKxj(J=dCX(+jRw( zswQd?*Nvt5yO;wf!uUK3PKV%`Yk-zms_;7Sl8v^L_VOP2x#q;8UseC61@0dAXQMEn z$>3@v!Qwn{j}4BSF>jK)P?=ggd5=F<%qT{T)2b58`R<`1shfN+X$1T>&(v3$Bl!q; z3*_nq!r*B5`iN=*Xr7A#VSNyGio6f!02%ZGm>%7+lpd$!`MB8u~?yT)cOrh&F|M&Ny!E zbDKu&MKS85T#Hz0xN!rL^<)$H4^f#CHH-?qkn)qo z@4YjyO#$`6SU1+}059?TJJ+~S&Gr!y?k$si_~H!4!5^{FF2`=<@>kdYEG`;kr|bqw zVcIr}HUgI(4=16ve8c&VdV->!9pj!2SI|r4e$iuYLF2T-oc7Y-`OJ6^|MUcH-?t^v-TUV5 z_w3ltxp=X0Q>Wm@H=kupyBNyU6+G$gSFu7IJ~e*+`)(%?RMCF_ojxXe)(deoqx%A2 zP$cSr`_ZSZoYQly)QC~q=kM^hgl~Q%s)0+dT`$~QL;p-FmWl5bt0R8bo}B>8FK{Sm zwLlYDU_!Lgwv6X{#as^pw7H@}-ncx%O9)`#{|DhA{zmzl)LIuPPOUI|+ic#L+I~TE z7TIu{bNc?UD_HkLz2e4{BK2>G6}1DPN!gD*A$Dn;9zk$EhRcX0Ijf}tF>64cTz+Px zWq55GIsvifKcr^5OG)r#6Az}d$w-lqt~j0V6Jew(1rnY4$K&av<|gn!0CO1#^ycd9 z_##&~($h@niU)i}H%4(LFFUJleMYpRN_6+J|J)}Xv4BoLavN))dg#~~p;89qPl;o( zr*&N~Tg-!@*^`JWcS~KdSk5a=vpg5ZPx)mXITS0hp}4x92qyfF9W9>66-0>|*00H# zgLwYdug3G#JH9ZOMl7Tt1y7LF!j@>igOyhy6_&_P{!Ik_z@z;^6N>=1$L&aBOGAUr zJrgxCC>&IVz?hU$m%2ts0k;m2m8UHa)eo8qn@Dg~8@*}t+UtGDKZb6tCnpM`2?8n( zFZvm)VLSM*TGwEs3$5}cLXjD*b-4gNJxYR4MmB*2r-bkUBOj6l!4_}Jpi#&~966yp zk#d0BZ;hpor76vi1{X1@e{`wh5T|G3G-L}7kDaNlFMS>8Rmhh*0|4AZG42riyxsX3 zMpVQl<>r;99`GMX#`>LPel~`k*!VayxLy^Vnu&_+tAH8l<4+%eJ+KuA8ri4zN5fK| zUn%Ttzl(jLEA)APmS|FTKHk@I34OfV+{rgHQT_aRo`E%_?_Bzagvp63dlN!8B>WHb zo79?wW1V{jEK4@vN2xVKwA=UF-= z2U&#T1CA|S!)&|MU6A+k?mRfWXgr*ya;WR9!&5Nmfx%B_ijrF1EA034QpDW}vH7d4 zjB0OZo02SNnUZW~elx?AM7_v=&c!4VW6pTz<@zY-7~c2uI>3_Pd3Hx=vEgva} zy8CH!H};+WH#7aNJ@lCQS&colyVmU9ec~P7-%_aIiU72V=}rwg(Ri-9@LK5@fk>YJ zNFoE!d2OTp>j){Bb{{?T97X2|Nxl~X>Cqla!4}ZmcZz~My0+W(7rzy% z{?S|@dT;0Jl`D(EhV>{MvW*-p)3~^~5XIsMsv$is(3aAcI5QG=)ZEy@!<`Wv_fY?D zN{BKBfZ;o>N_&IUjj0tj&NF=$@ldv)&d{CwSx1Xe%OhND)m`Nnfc<;JtItRSsnLpypyy#v z{`j9^fK`$i#bsJ&?`L0U^oZb4gvjnO2N_ixfTCGJdgfuy=*0+LvZM`M3)7W5ehbLB zt~h?3I*fy4`o>qeJ!}7bF-B&U-HXJUOvrs67L;5=%bx{L*NHdiSl2LG^HgQ|kCLMB zXH(V{)ZoZOrkcIazm95E3=2Nfqe5;UxGh_ZdabO%QSo)oAvOsY`B_8G)3{Q*? z0QPH$r2^kRtIU%DvvWN3Ph~4~(RR*3*Zs69-ehcLzhsvTwZKC>y+cUpsbX{9z*0X~ z675L@=Wq$1k!dw)EW;zTwqmAcNpq>-E0{=RuO5Eg#9B;>xqp+ILw0s*9fbFSv1a3Q)F~6A;qiE`6Lm&h868T8ux+b}C zzO3c)@hc+poj9?`-DsJla@xgb_$)E3`?;!O_eIc(4UIp)j+KrneqZ}2DL7^3T&B( z?^Y7pWw|>xxCfgj1(cPW+~ix3)sX^v>b!bj&-uNq#NzBh-GC6v-E1YEFnpJC*@il1 z|Br?FL}|npN;&?kr|MqE7b+Ev=EgA3OXx&GGwNvAE=V=!|FJ3KQc~DFdB)Kl1 zf>VOax`g+zu*Vas70&4v=R6zSji4$hv|6i4WIWc{c9kh~$z!P!4+?#tEh`AQkyYGJ zBMbGWhk2ICWczts8Ak5Ym#z${#E%=@gH z&25n(<9*LkQ^w>(HKhwn<(TfOH7j;w#^liS(mR5BQaB<7jLz_$bv>SmvYQY?ZDv!@aVeC7w}VkSS*YQ8u9uDcj!hQ?i`vTa8cuz4vc5d?io_KSf87J$dzaVY4v9v@)xt15 zeDkD66<}5l;jW&}{i|#By%6JYKll-0p?{Gcug%q!d*yOV4X_E2Bbhg%ruU^Bd zaYMt+D0yTQs1#=xlQFw&vYR(Loe9mqZhZPMa9Z$pE*S$3#(S*(UHxtekhAjh%U58u z-!6(#A_8m+SVj&5JgL`SL*OxSv^9>xmXp)+-6(7=^_)cMz_z$mOeowFs$W}sMBYHP z2%fbW!$T{V;AKq+GqhRs!S?JqBrp*QDtW9=)sV2gMc{$1VuXN|y@=-iv)Iep>}1vo zykL%m(>_2E^)#z?_=4HZ!sleG(^U5mDI;}R`s7#Yb(#nTQ`I(Q?Qeyi4uCJG>Z;G= zroee#Kj#jTCo*RIAap=LtZ0gM09g0?6ch&7Z+_{dcj2eDj=Vy~7M_);vm@Xgz0Xv( zThb1;6LNWA?1yrr<9mGG%`8{O{MMM{0B6-*a5x}}Be|i)<~VZLM#^f13dpTY+x)vz zyuFiQN%D*g^~2eVt|DQcNlXOr?RSv?+db2JYywa7w(C$WyC0)mP^-Kjm|uX)ghu2% z_D56{h&UbNgddYoAZ#^ynQy!C8qMgWQ#7r_*mfqYHM+ON9By|sO(xj;AWGq< z>h^-bFb5xi1F?MXsb0>Y^v{3IQagD?mIJJdJtT}Yke@gmI#91W2R>pk|L|LL${B%- zv?B9Xyk(sq)jz(67nzIenwu!-{+%g6a#pgq9E4RE0g7Z)6TsYHl||DOqz{$QQ5mbb zw2nzhKYH{B0Eb#qS6w6}}uZskZB#I0k!o?go8`#Pk3YLc^^8EHwiY)Er*WLgU=Y9VmUs|oXU1aJ3T-^!{j z4_QOC^4Dy|K;M~+%}e7v6;3*Gh4>**EtaaVd`yWa9xjPfxC1Z~R)7f}GTn(6{EJCF zHe!TF4bKNLQ|Zb%^m&D5NYW5&buk0IXz=3!f|S=L*Snm%*3t!=FgNuHy2~!w;79H@ z+B+}KAftuX=)Y&~eLvm&!%3o6e-Qlb>b7D?a!6~rrm0feXXz!N&#DKH# z8!0baljNXioH!t*+oOk$EP8SaIMX{1yz0;}yQeYX38~-bo1E}SP{E&WKbx)Oa2|X+ zjhtB!{A(@BjhjX~rd=Q&fu@k6gighycX27P_m^q~EBjsdhw&2$n{81660FJjsDc?z zG(@S!A2&Nqd!#8X#EE{aL(&eDK$14H#@nV%TYgM7d<8)0)bIi$+{~;}NQC!#4@df4 zNI=!z_SJUErZZ2BbV9_2`vq0qk4(&tGCLI;*}iek=HcHVRnimmJ_?4n%Hrm3_NKpe znGPfk|82!kDQ=b$`a;C=|8SSmJH=z>|8*YL1VYi>4{*=6sG7P%XqT$+OJKk1Jh{5A z@|Aq<$o>QPi!*NSQ3~qby{7vpdXKJY6y9*ORqmMW;8oOtXg`z0CzYQ4mCWxMCl-9z z0?pRsUI*0D`iJ)A&&{20C!iyLEOEbpC)e<JQ>_*R>7UA}xZ z2jnv)*=>u1!hv;_XlV194vi2bsSz7o7+e1-LID6Xo{lzBqZm;C;ZgDXjJxtrRt&%= zSU5O8qUewCxB0w26OyTFHW1E?R%cVcvnizO$-Z0J#awY@PesfY($dw=la1>o2dWRnIyV3)+fy&JKqgQ zu@OWUVyG)^dREUSI?vrm*CHs{Q#$Y(wL?DLYPI?KQkoOx!fuRMWUr1`7`HxN{&;d) z;R~@DVdJuL^>8_uFi`mQ$Wn)M05${$u*!s3;=~}nB-X18(cjNeIM0p0BdnLH|DL`7 zW4$@w1lvPI%msGU!7JnzQKbKJ@}~H{j8#o$MB(2RumtD&^^&iDvHfO0Ng~S%;GvUE zhuB{Vh=z^{j5J!*kZ{2U@JuZNWTTjrY5v%lIE9l~N}{ho)i+irMgi8zjhygZ3e$f? zR{fgKxwgV-l@KYn6m6mWpyTtdehcPkY3ErB1hS*+|6$t;#X;AH`5z*(XMcUku5P0& zXsOJl{#|x?hF1HG+V980dmgi)?~*oIQ*G`*!){SL$vq#E7$Ug2u}O1?LXw zPn>CZpJf2$X8Qz+xKX_MkfPQfmR+QA)49M#fJjRfk z7pD=)&%bn{9)Ib;eY0jTHcitc>BLExq~O9 z@=hIvuKs)W{*U#aAeC%QL56J`)M5ZP|IhUr33(oNEx*eb%?st(eJtzbvyaft0DpbD zEukAE!R+9Pbd0|5yK(&ftd_sZvd`M4Elxf=b=NdZ)#|<^_L9o0fAD>oIKKwIWGpMZ z+)nEmh*Y9vsn;~OkIIhl&gp-CTfyo5Di65EN7XA9@`wnh-r((V=ifCZ&9Iuqluqg z$e#4h{_rK3r&6#uUfv1~%-Ti66o>rrRkt+W3+~#XpLXt?NSx_caI4V7WXnY?C=Qly z{y@>zxjJ_prTGc3Voxpo9u&`(+xh1Y*@Dlk|v;ni2vPkV092qFCk$ zI@yh6s=OO?5=gCmS}+KwzsMG&2R`FvBG>NDT11#O{ax?ALh_S%HXCq~mdnblSxOK< z+8x3O&!a={{%Q(LQ?Cw_4eILn{9NfVLs+8-AauZHkCq=}~QJBAlD zGv8%e!%JI?H@#W}6#&2+qS~&k_e67qjF(R!B#@Ww+_*5&AOgz4L zx9zKR0-KF$yhrEtrFD_*M90_=f8a&rp@0z9x}oD(%_k+PgRX8}6RV-@i1)#jC` zVxx9TdD}8tL0bG2mmW(|ui31=RN?lK;vHJxac{LnvPU_@CXv-;fk>L*u_{XjYxa~j zCcl`6aAyw!STtX#Qao8(o`E|^kQwMy#A;I=i6VDy8%Q)E`CGADED|)advuHX-tM>+ z6Lk4jaO`zhe-%xZ=T7w;C%B>@Bp*Y#(ImfQclY+kp^p_=QRkqfy$zVPyy+otf6Z6Q z@tnP|-Zuqpc^z#xfjt)tpK}NaK<2Uoaul_m8)%CH7@kd|u;#)X$`hBG<#-)DVFA#c zMxZha&sdt{LbTyTdDps>Wd{cRfDpBGw8*gBtC7(d?OfowyQhmbUnfr+!FJX%l7qbH zQ4aDfQmtqAL3sQxo;2xDXx*=MZGs!7K3U4`eK%1MW`lFqR>X!aSEZsT*P++s? zU3LeGAkskvG>6DtYjQQ=TmC`KkZuOX z+$>uqx>q7;Of3u~Oq1}dgfqZCz7-G<8^B=fqXa^ej(czQqjqC0jcvoZ$k?=9IjKh0 z3Yfpz&wS_h9zERRRg7-0?&We6)#Z^r zG_M2%Cj|d&vCgvdvt7xWm`_yY0QqU{As*+ON_4lzD9%>{!d%agxg0K)>WU9IB#)R% zqpQjNFq}x%=2mHVS$w65CxF{!oxohkJC!BEWWZX7>$N_7%CJ zT5dIxzt~_V%5wl`Zt2&mIfh8H+{mLrS1)ZU0{-qRHv8aI>M-*b8{B}KB0E;iWw5i( z_rZeev<u<3`b{FbezCSPWp%CWl2Hp6K!}il4Iw78)WzPHX=+Ua- z1s|{S{H+@B^J+{gg6-;OSr~qR8FZKkHAEtOjv&5N{d05qT>%LAlvWd=q>sq%cz=-a>7v*sU)<6{!t zJ)}mA#LxS(A0ms(cpXuJ?5s6wFH>7E{{2v|X!;$l0CaTc+d?HrstI8l-n8WFw3r?K z%yCH$9dWW(G?NB!OyAxdg6lvAh+hh6)A6|z?hc1(-ECx60-0CP-+h{IjaR%}JNv^U zZ|S~V{ccN#x_M=fmkTcrsWr=*41&;(w+E40 z!lHW8Coh;rwyZJeFRj{3Us58Ex@Cp!8X+-I{$E>v0aRJ<7HZl}BHbgeU}XTb=EY9gpXosfZ*m%WUmZY@2jh3O24t)@zg4Q(&4<3I8#IeZZen1+9GQ4gnI%)y z)p1>ox#q0ck^B@N*_l-z1Qe^L{wk+B85=dxc7aKh@L7R_X~Dsp`MAUrtXhm z_nT>dCnsrlo%l-kchRPY$G7oXz@7}WOE${Gd062~ zf-_@E6WAUy_zc}%=6aPHqR%t-k&BCaGyNIFBiQcdZn%Zv?y7!r6R3=eQXxfEHbva= zxHCp4$bLri=OzQ*+9{02bwR5}&hyc@1<=>DN+QY^i-|%HY%bcvosxet=k}k4#1Obx z+z@oEjp$W5L#%90fl){2q}bPQpGOPZo?Ax@u~x-8To8aBAQ5?4Hk`*j1$d+V#Jg7T zQ(~)W+8k>FcP39Jd;cWbYw)52ud^2LS~M^M7LJ(-n4h4YQA!S>L)D4%robl2&}$KB z?=+%(>FUy|BLFx%Qj$cn{OMmP-Bj7{X@K&yxh8DM?~~kRzzpBjFc&efqSG%~9*i;k z3akNcF>U)S#qt?dGukoLgZV)hmOLyt5y*u3E&Z19rr#)bpX*L+svbFOe~QpQo!4_i zFY3u+`abAXg+3mWu#QC+l;LVRR$k3pb8~CPH{dRzd^(Jssiokj!{E&jZ#aHBOlT{7 zmp9{K+2srHvy@%7S+_seA4`c9{HV3CTP{Bt9cdFslbbJdi*GWaA-oVsarzRMN!ii6 z;}lcGrNU>Qc#j)7ggFI-9M}y_&&&UzOG6}!{VCBkvvXC7!CXh{1civBlhW+8{+Z^m z89WF7M@q91PHCOAF5rgwh*5_lu0gteJY89f0+?eUqnGli;``t4*4=he#`7gyt$>ek z4N5NRNgq}J^W_NY-L|fNH5YMp<9Qu*&DXB?$c(G-ah7#I=Wb=h7#0cfU;$ zauI`_#-ke-y>UDfH8-n6i3vAU zK6#3@tEvIgD#|&Q5|~CyByj7wntGFP@(?&EBw_9B7Ut>}9vzhV3e<7}A`v0&HkS)1 zH;$}DQZ=UNGe+L9sXAW#x?zj1Q}iV)frm!U4KdGvJHBC_zwU7)EOEN781M7p0qAKe zo?Cwf&=C_1Y*yN9rPYa813oX>1BGwLmxKkMc5yPQvI?)nCgk-h2sQ7(znO4`>0mkF z>{Z$Z(NlcklnuOxdc;ry)@#ANMl8LLS9U9~tF)uRpTmG1fY>rTY() z1Uj&U(bw%EQ;$<5ex~E|$t<h}^4unXor@MP^|0Grp9 zWwVB_bfg36>{n0p4sX;)^~lgVyQuWAxCJ+eDF&lA@cy1`#UN86c;hIUn{fqQ;k|K! zel?E9PX}Km33+C_{l3r=nBcVl?Wv^ zO#ST=dl1ucD0V3V*nlMbr_~?_3FmIc zRHl=hxi$V!eo)W0t&rh_1FK>RGANR)jQX_^?N$EkKyCHtP zHvS1&rxH(hu$Tqs{TtuXH-rS1)Z|SjbV&c1&1d=zAoTX3yI>5ueoRtgmUaO8DfSyp#G%R#S0V3zLnJI}$GY{$A)1Igt7I`3` zVrot%B%n(?9^{jW4cn@w)lnzuNy2g&62Ckt=w)Uf=(%Wb?E8UH_XQg^3X-K5+QRFL zX_#*gu*`6m>b*0Msv>`=mkV?BG90JVjb#Mo^yHh=D@JJ8sRZ$h{-AVapvm%=^d1)Y zh0f3-x%f2hcW6!K?#@=UXQ4g0P^G0o0mfmKXBjI;CGh&dL5scyM6oRph*&eDG^%5b%Q2zS;o z11}M35j{p8Pm(a}b9|j*&1QKU{2;)aHod&9TV->uPG9QY^jXV9-6rn>=*eh|Yo4uw zB=fCOFuLweR|)sNWU0yqd{6HU4@uIL&ssl2nh>Jv#ZE-!?)V*Of7a%q{w)h3$}&z& zZ9kEb`*|sV(6HP-9TgxM=3Z0wh3>3S706+CK-JHAgW;9=G(v%voU+vE$@*Q;bB_7k zHaE9AggSR7&pJ&@ql9OkHa)4rf}^MG+E5)%uD@%3GP*|XR{^Q5N;ksY%8YAwITu2E|(r_0ghQx^0$g7 z898R^M^62Vq4a^;5(5HuW1pQG*FwCCnWY^0-Q5O){n>REm8{OscXJX$8bqu5nqZ%w z;@Rr*nKLPcaWh+q>odlVNp$kDLBJlh#jNj1bO!d()wuc=&I9HXU5wX2K6Ak3VKK>p zuHcJ0tXYS+qyae91Vdt*Ky_tP{)D5?t=Akhri@_#-}1S%a>2O!*x3SMQ`Y33*f-<^h8-<6zA}RiHn;_l_5~ znln3om=V!zyAB`j>LutA2(39r)t$?L|`-{RW2c;DRbR@FnXq~yQU zzvJ{8tQm{Kg{}^Bm_f0B2bl;;6CS$Dlg>fqSv}H#8kKM#cLG7PdkgLY zUH$ABuaE};Gs|}-SUdq2B9lnS7}?rObXo)QLiK7!sIZ+`!)_5=TEHL5dj{h_Bxfmtu*6h%4LFVFcU&8$OQYUmf3C zewmT04|A=Ice6ckab3eia3Qlb@Y-pKukc>|P2a??yplI=8NLUJc%=HTSj(n*yR04T z{j+NgiScab-=slcR~yS0+ue7N1`my0fPIpxx=!A5T=&u~6^q2ihnLAVtWqQ^IiqX` zZ2X{AO(m`t*;xyVhi!e=M#{6u*k>l|Simw@K zo*^aJBQM;&o&9A!gCAG}($`bjMLOVD#qNi6zGh=`)YkDpch)av8qiwQ+ePrbu_%>x z7l9QTDdN-fbcu4VcahfUS5(wkXdm1I#DPy~jbWq*5>V@!Bl*nriT6@nxtDjn@*f0X ze@4&p!GzHaMvba`+#NLhBKYU$DU!Avmm-A>NPF8!87L!z+>RH^j_--{TU4twezeKf zs1dY{&NhDm8l>zdQwI0H?ESDp(u=WQ=F-BX9@f4jqzwMW*@;)`Brj5?4bv5aF7z6< zDGo>S#evM{m(8igXcQEXA|G@l`c$-vYBFU4%FD$oqPI=Ss0Rf|R`fTDUvL5Tjh z$gvCMHm(>9YO|la3pZFX`AQ{8J_M?f^cTDE7h5T6o{#rMAV{n2tXBOI%*-9R_foWU zfr-HjIJ7@hK1)JguVB~{=bR^&mY>w+>9A}9mhBrs%#K-aIWO7NyJquZyI!XtIliQ# ztCEE`e5_@+gJkYgR}=3jl@I1s4yMV-|{4lY#KF`qoDCJJ_@fJN1zCv$(AF4>r2{LyeW&NuFiBd-AAhc4p z7dLUueeRf3O=s7&nAK!qV{{qvkRe~g*F5#D*ct1@2mM=*f=!gkIj_k-w+Isvv@m~E zfi=2YF>$5LN|VYjCm1q#n%Zh>ECM-^<^jdwr3!0RTj$k!T-pb?mNUMWO~+@8jcDfIFjTR~gQox2gG3_l{x$F?t3zcv@()il)gdB8VjcZ)|&0npS{;eJIUSOSb*&Kxv0&a~1AK%${Nqp%NXRfteI+jb+QK664Qn8|C!3_c>t?v-`$$jSyY#{nE3FKu#Z`CQK-qh_}XV z?734HQbC1tNRU2rSR)~!_)B7qEO41QhWZ-&a2}WBBerNmFDr>d_#IY?Y_E&zj6W^W zDh4%@fn9UaH`STNZgi&w+HSgbv2i!jChwPjtHe|1!JqAN9YKg1x_KFw2UIigR~9jh z?rPg)jXsFTjqHM5RDGsgC3c8(6ETy{AL7%9kjkX{Z{T@K1FKShfL<-+7eG};#l)~y zSACjwvG1^eyj+lW5QG?&MYVCx+H zZ2M9|KG~Mo`DX?VvCCgPjOM2sv}9Y*8_`HU;jvK&6rdCT=w@^u$@*Yubsug<^<+z& zzTc!uAY9F>=Vr~?Qb(jeu)ur{&R<5WF-Y0MVVFXD3ups_-AdW{S~%{Ni!26LDvg;r z0ZQ~ff9xe$@rYP67f5zL9P9wX9(G}9=5pagqF=QUaFT7hhgkd5L!pyI$T#X-FU}vo zTY29u1XGV|=b0`qEFk;-p!#kd%sg$@Hu}@m)S_XH%0+;dDlZDbjSKkr;v-pYKF0TQ zkFCoYjQ3l7n{x|BP)*^#vO6MZF08;J;nZsITSCg^}@NPvq8>LIzlWP1hmq;D6 zf3(OrUB^jzSADIm3fCtXqgBUA*p*H`T;r&}UB~Gp)OH){-nrKKZGeHCfu8gs7grc9 zR2{^9DmC_%w51g3?8c&1Cxld^y4mGEz<5dogWe4vlg-AO z$UZjc?qb}d-QUKhOX8F;$9PO0a72hD6_!0sB|MB>6`RdZ>FmDcD$6;E!GekE@^DE2 z%@MOv%uC7*3~GJwLp4w9VMY6J$Jhn=_$N(&P1ORZ*!dP4(sZniRrXDq7Y26jtUKvy$L(1doMAN%iiDm}{9FFJD-m$E6|2G3E1OD1m?do@ zkB!ywGr$p!XdC05z=jtTD=ZdhLiQb$SrR=oROt;V!E2tJSBOT91g;HXKhDI4V zMN84FF2ri70K1*~G=NDM%R$&zvW#rc9HEQ@dh)>Ju$wiF`mmO0wc3DsS-2f2v>NUA z7|;bvJ31-g_i%7JcvYumh?$0d+(bWgT-0z*!}qr=;9U9Xn(OhQaG)3UxIXOy67OgB z?#jtM;42zD!Dt!OwkiV{d?u>l>1eV+ziuQd-hyAWI5!`8eeWmmuS(@GOUA z0l3^3Li2eG0POJ+n$A+^8NWEN8X0fKRl%(D0b8h9v#paRT9OA8vw@mTV{9xoz?neZ z^m$!n*KlNi2xUOl_TR*qkmH-wNauh~yb)o8;L=#JbSG1WWdbgrnVqAB&e*}GM$9e_ zVtY|UE}mdKw4NAPbwk`Pxkv;0ONcMFn@U9etiMVq!2)QSd4hLlsHiu9ml;;+pn?^a z@++RNo7FZw`Jj~QdZp6=ymvrWwoYZN#_zp2ba0Zo{uK(&Hok}jmn*8SaLsT4ETT{c zGrrH!uk?~2`w}a?Z^CE#$E{P#e%@CYbKewiz%Wg9^CLsO3v}(MPtCl>j?^7&D_CVK z*uYEcgS%8NjQZ!cqhc%5-_cwinyaq}jM_Y(Khn9#+e^Yk#P)5&lBy zt6y7wQ%F9|fkU`9a%3Hqv^r0fLN{cYJR@zV(Ag+;Qr+t;acr_e_9rIfhB1sB8V7H` z9_$V(S*;aDfzSs46&wlbyzS3RC3-0o1!MiCens!@Oqwlcz?eas!{nZTI`(KkFh7O&s)u09xUi5S&KH}AjR8>51M37Z!MX#rv;}QF>}^3 zDb`ubwm<8aKs}8TuRRG!LnMm(pd-r-R9;e_{ZVyQ*7EloPYr zAMX}in_Wc$ag&F+%w`IcVC-C-w)VoER~ecbt7%&IBVDW~H9y*l`Bk#**b2>7$A_0W z*|ZxcqEqcz@W@xq|B7E;hn%?Bk(tW0h@IE6%XLJU-~ywLDgQFQAB_tj0~2QUa8C47 zMV||7lwFly@qHwzh~xW9$0bON#(&Q#uVBS$Rn@uy*YCcnOP#t6cQ*HwsDcKVYNVycF@_F`tTefN+ ztyVT=l1t>izZBlsRwo}CrcszV74oCiv5`bs*f9%tV(QV|Sj)((^hhp7%qbZ{f4zSu zN5lUEdjvxC%X+`dcm%QoSw(JAdcyKs3v-iXxHQ5Z4x%9(^Z$xN77|z zJBfW(Ev*MI&usOO^3|K)z4~w<)l81vB6H}D6Y*q%pw7{x%5ZIzSQ<(+4By(gzxg9) zx{zx{^P30y2^^(T_OiQwZS?^|Xag+nvF-qIruXeR#$nuAqBEWpQ>TB(Mk_+GR>q^i zrP}2X4GG(cIrh?)F-&L1MXxMM2l4ohbdc%lM&w~a5Y-<@;B9QCAG0{OULd&Fox6R( zC*yq=;t(ZJLinbv5PI01Fc_<-XmmOExYa=qSKlz8bCtTFe(u(g;w|^vxn@NDoMQqw z+EJ37c|uaTW{6?K?(!Lh8yTOcp8wnCLT+v!mmWPm{*Q4P@#X?wxm=LggwxY2Vo{{W z*OW_NEz|QxpVfvTgBEIptScJ)UJ|{TPZlrV)$QJ_3txUz8T`h_%e-5S+lDcHQ^yf5 zds_W-T7{c~$hkS!^-$M}f1Rj~>J=WYgsuMcYhewv z(@rqJAd`R!GyC|h$TxMq?zOZHA#<`|I+@iiS0;v?i>X&Iyp=@zsScIH%^Rfc<)aqE z;3U?U+DvL9qdWbJqT13CLL!6@M2@~xhyaTL`GOPm z`RA1Xo$h$HrUP;78ZH||#6pC*iMDgp*%d+#;EM-qfRH((s64ED{M{PLE2#Ry5h3D< z~O2$no6IbkBANIVcbh$&Vh+Is9mc+VbG%t)*uN*5kq6Bf}Z6g_coS zQa1CAqOgv~c$;+Xv0LE|J|beDkC)9^K;YL8jA!&@_AMAJ=~t04EeCpef%I%hxt^?U z1930|Yn^`OKi3?YPzb_S$IK3gBsU`HpXi4X?y=nuwv$oi zrbp?@UfQ1!bNV_yNpHEMc;U|_Ut)wWf|b=4sSl^x4`-z@ zC@BdneFsXttXgoXk}eRPWkrx)1+I}O=fLxnjX-6iCJ9m9+D^f-5V#6Q^T^9m1>1{o zVI`D`)gRQT))+i!qm{19WMvU-EWUv9&m5n}-Vpe6^&ikRT2Z~ZVTtgD)}MU)j&i)) z!a18J57REJYTj>qkCrdUeDaJQ)qa`kwE@*u5d!2F-R z5ezkRJA*_&^g-clzBx37c;oe^@5^pD= ziG+-(VQGrI@QIpew7`e(hoy)q-m;0Y-6V+6V^E$sI~SNieFlGk8DWyTAVzLkVq&DwL8(wR$S z{*rv8ZZwhQ`7RY!N>~TQAgeIwl#gb(S8Ml@=i_#Y-dQNNG%_voBN!{W^y$h;`rs{e zdS)6m{-PyWf$0s*1?rJeJLNN3>bf_VeSEuaAG+XJO?-HOdUbh_+ z6S{Fl0lREC%Q9~fvw<3l}qS?TH< zna&fL-cBE8wW}t-nBC9!0m7X>6q{J7vP&$7xJ41A}iuxCwfy)6AX`A%+5~nkD z21b-A2cIineZPLAkEEyZnu3p;snE|9TxSMiJhAdk^w=lV#bS73u$-h0=nVRt^qA!n z@Swzznul*NIEEO?aB2NvT9Ynah|8o7t!xlnJ|TWSkbQ-r6&>i3-v=Uw;mNV8)l$qQ z6`M2#N9S@iw~F`R7_kGFuw-Gukx$}fcqOmrj?kIq?e416J4xl6%^MRRH#<5#Gr9fZ zB2JaZaLJ~DzAxLmZMi@mf!4U;iGrP#sUve73Yc7bdniI?GzJ&jKg&NjP1z|jywiD4 zz4yIp}{}Hh$%gsf4}nAZUmR>pg2+db9`X;tzmILoul2pnKT* zITr695e_-F`&^74FS7^*_^3ir{zT}X-3axDy&AiAe1~`!uG!B6F$5xCP9Uexq%R_` z_x4c*sYTs!>aM+v?dVA3bA$KT0=`&PC-?_zzMAP6sEtSuonju>-AE*da6ufIEO~1a z2zOvj#Jxxeh@=CLNLU~-xanNPU1>d#9CVfAi5o}#nAJm!yL1HNJi#{FnPYEOa_GvD6$I;V2NK zl}0j}*D9*EH%1&&E@$kBhdhm-_btex!H8hP0RwFQ@68k$=F z;oTjc9x2tl$BvtIyl)1+6Ij z!#GteQR65XEbE$!sdVnP<6b1wrMO0%waBy>BN9L3pIVG+{_TCt>;W!T3lgI(UCnM{ zf0u#1plqZ9D2@Fm+m$|}Xgl993NNsS7Cq76KU{)+7)t3hvXQ|t_FFC?+bt(97~3Ji zwp}58xwlP0?^Krj4C}DVKGq4PELPkxYuGb;Xf95^S}p0;0?Z^WXV0*iH}bva$|mq~ z;U!bS_Wu$~c)9TmVPe&+?nBPUPzE44u%}lsjAhP7O@dlRdzGRfwl0sm-hKxhFtMK4 zjtF9igi!LMFPL4rfNmkW`h5n8m#Y(@2z-w37w?fXiBkMK_(1&edmTQ*T~lJezj-Tt z;rqElMEr{i&)$17Y>ObpPPGD($oXz3?BX_fWEF=clX>c_{?7OFUgNXpu3exYc{^J*nPd=A` z+M2Y0Ng_`rX6St-ln^njykuDkYy$cjqol}$y|t)L!vj6BdEk1>7H@{Q==mS0xT$1n z?J&ly8Di;V0jBtLOoDNt4||A;#>XBWon?brvcb4jlRbC|1}^6;7!L-=`l~#Ra!tAy z7Nv5?f|P6r%D6vQP0bY((rbsTM%b~uqy)w3Z6jNc!6#gT0l&XBy!Ybc!H;egdPh5O zH=MM!GKxOtq!1h;F}*R79fj)N+fVi&3}}pmMb+D7rnJ z!srk=dl|7gD*O7|lV_1WD>OCd7(|R3IVSPm zaYElttjWZTo>yF(nO{s0?P}{L9$c+DP_(C-Ba|0Yp)CKa)y-F@oL%4Xf(MIF@iq$L zAoH=wQN^r0EbR}KuzoekQm6fU1`OJZ0v_-sla{M_~(bjD^#X39m z`vz3D`LvR_TY_ZOeCbYwd{LwilZuEE33T=i$z>`OgUTA<@z1ehQNET(QXz+#sfsbq zaITfwnILnhFSF}6VjB-)$>sKB0R!udVX=g*4rr6H@57JWn{wBJxe zvEh1H>Gq^`otZ_y?J^F(j=T7HYBt($GYj);X%BLjabf#@Gc8-G&!bYRoFWzcU!{O{ ztSMD|zT=_-I~}t`;*@dkI#skM_ zw!XWuK=M}7FV#j&Sw}q?Y~B7DAZhd7eJQcmn@iKe7G*mLv^Up7ov1`8NOxoDu0?>T z-dknSS<0bGwjU}jX~g)OE#nV)yC_Wuj5`l)fK7g(6v(0Fl3m1DTs|RoK|mE z_cuI5Gq;Z8tV0H;yuM{ml%>SaVoV+@MzNjh$}4#HeZ zqHV=up1m0gLYecDwKz(V6GzHGTk&LLwt_F2NW=rp(@0vfaZ!qE5xz%&@= zX)1++3Tg(?T3YYO+p|0NMnqItFCRT9V${|jS8=aVkob%*!5_B;u^;|j4;7XKhI&~!x$=w( zm5V1+t!cTM*oR3iKUh(KeJ_-nf}!VcBDVY<`dbe2l@IQg-Z^jc&tKODbmYS@PO>lR zEx#gRXGm_M1iefR?!C3e3so4fOaV3HdZ0&PnydTVa65AyxTcgbJRPxurwVW~B5zQ@ zYQ>XD9MfAP6K5v7-fyGsG!EDVL{8og7F-BUVEp7?VTHODFQsmQ@pm5Ygc~{Zeb0o~ z&Me?g#w^%2`KEii-4+A`oA-4^3vd}W~B)zS93&eXN0Sp$4-yIVa$A=3YFy?Jn8_9ffe4CH3$1ywYJ zc@nsPUGaN`J$b$Yo`rD%ce{XZAP>RzwkKZtvlkC8!H&1b>F4)Dlm(lUw-Xeui;dUo zz7v#%7XyLzkEh*Ll@l@(xi4KJvH3Qfje1PhQZZdO{HRx2-ZI++`_jxV`SkOR_?-l+ zzg7?)SyIaAaIB`YcVMm}pazDf-d{;#7pH+)*>+8zfA(D&rUhC0L1?- zuLKF;{#PIt5}@)QqTzJ^SM>7_?EfXuqy`1x1^io0h6WU1{M(HO7eEB`Sm8nR>*^{9 z^N`M8=lRCK8xR|lf`vSFx7Lv^>hC~6H{=fg`Z5CN=tbh1+^=AVp_54An_JY(WdO?m z<_%TMJ-VuV_gdfzJu~D#wruy;YK;a+<7@Zs5;RNmkdKx}6hBK@G1L<_dn=oK0$PRzB6>!87fZuU2+cSLDG*Jcp*)-BYPzALAY3(Kg4<{jSc-*Dd3A8XsE( zmYO4<-@+N%OQH`_2`s6&M2RJxSr9vhdC*CR*VFmC?l=9i zNVsyvuI>hsyX-tr-08$NbBbHollkFzasK(QF-q_L&7IqwX|tsOnj)VzdaXTJPBLmY94+=lD#!B1I6{o`89!IBtKAfD_-?>{IN1fmP!Eb5x>LPCHI;V_@a7+LZtgqmJqea zf$22S`#mCisyk8x6h5LO^jlQ&$h5b}3PBoM#>X8eE%k0>9s&db2$`j=Un+MFm$0cJJ_ zG>(PM2Nle0d^)|>pBvh`N~%U zC2~rhWR<8ON0S6F;bC(y8Po`BrMtJlp*A%z5$Ezpzg?_IzRXW5eWH&o8!FRu82JRUNkI6wkCG=SOXXqf)A9$ zKo`A|!L-{fJ5)w!gc&g>7>e{qnM)TR{aJoaAi$~V-Sm{0em%X&Yj#^2FKW8}_mOl# z0~|G1`cz!ZS+p0sawL#D{CnG6Bja0(_GWcw={N5THtz6Z2jhD}oI|b!@t%z@iqtbT z%rKoAlUC-`bW_yEHj2pE3_`QD45o}fS%tPyu^+$~#Y5|Tmh(*!jmVE4b^;_NrbLLB zfv=c@X$Adqzt^#Qcn}EvdwqVa{Xz2brc{9b;`L;#gA?_^iQz}DTl^5-(d!X_(P+lL z>i3OkIcztF4s)}2xN;+VlH=0MXl=SyE>UgsHREG48`uHKMMWzFsnX@|_0 zItE2v9LB%ogJy&l!2@bu%l){D458fc87ALg*#AKSdZ!?VuP|U>|CCQ~0JAf5HDdf>XUiw}!>(z92w(~h-~h3b0#cD#m>HPa zRav-r*tvOFm_ZAq04g|ENj5n)HWfZ5&^9Rm3xrPwAOipV#`j54SeWft$%WmlY)u)s zzcF)xtjGWYpa1$v2GGW3VIw8}M-z{SgR?1viG!QHD?cd02Zx(n*RxY2%iJ{ zpC?Kc49vvA-qpfc+0P{*NFS82*1Yz(^rMjx+$;e*r3o27n8$3km9^ z`yBWubfW$TI}tLK7C`wQjA2NS`2UaNNDIIPyn~`>0W>84So)tji2kzy#t8)g8A1X` zY5%nl78dru(EA@5@c$O1`d=Mfpg<&a0FHk(|Dy+d6bj@{2cZ5B4mk8bHvc#0m=1u; z#{&%jvoo@{GB;`|MW@a1hLs;d`_Ay01WGOmEeWwR}1^zRP|MW4$ z|0P9)2LN+1b9J?{w{ZFYH{<`;2mhxti1^d8|MtlLYZbYmZ~_|u3@jfK475lOKmnhp Q0v*uRaa^Mi?ARsUxAoR7As)>j)5dV2L==G}p50Ol$MhIY$0~bLK_4ws8 zwspvumW>(3NxB9T6hYk3ByAm)B0^7(^dksZQUff>&uONX{DAxl2naH^CJO=T=w=`RV@LG+()bkYXbxo1sp#R1j}Kse;K(p@Qm3!h-Me9d=|R^yB1>i>L!jha3ADrpH;PoUo zf@N7~+d!c3{sx1?u)^zq33@;IP&Wp8!L=G_TXl-P47W7HU@{;>q2SvI9N931Np;2R zd_-+l4&;-CtkcRj|KP3}jGCUgL{##AM{0T^n%^(}8{3;*u)2%t(965`fR$RkcWAfiF@Y#cv8L^DPT zDa%2_JgL|_iGqTF7=wd={5R_`Ffjj<_2dk7V!$Yn_~Y9LmVQN2Qy`fu!bi@)wxs7G zMWL#*w2EDKJ+p;5>1Nb8DgYTd1DH9Vz9r&VPWAeM?*Rit+y_dq9L@_*U2@xSdg`UdpgFWat@8rAXJ_EI=_ z0xY~7q`$R_j5_;QE>5|ye6~N=*ueQ-);LwK4W{d0rUl9)I9PQ>RZ#_APH5ltrCQ5NYfYm|QQC?(Zyqs+ zgF?0!j@lz!SVC6}J{C6D3S6^H?Bm9T&n+$Y4^u;qlQ~!)oVTd&yP|TjfFIX}n`miQ z5lO-~R?z)JQ>R|rZFCDHYef7jblIG@ilNr6TTw3#XTTf+-4vdh%NcWxmi+B?6XdtS z4V!Nf-VZHZIBw#$2)U{h6p5uwF;&f2q_5`=rFGZDP74}@g;SYXIm00>r zqW(Y>bfbFH4N^~7(MJ2m^1;xp<&terh3m`9cR#}2K_v6(X-{!NKnSfwy5&ieu66uOTL99H>}o-$Q7coYUW zb*}a9UNDmg!P~k403UzoVClHK=O?8{yt;_Tlissc)y2p~-0QXP{%|u(9@EKyMB3f^ zavEz-?&MK2uH0Do2k=^euqOB`$zYI5)E&M0nS3Ka$HJZ$ROEzEfH_C%o(36Or~iz8 zk9%Z993Wd8Uu$Ano8HbW+Risq*2q4hu<}dhPHVeo``}{|;PmwN^yL1tQ+J2wN%q~S z_2&EGz!n8}|JZaL|2g+*_-uAdn_vyEO5SJRWOl3gxrs|9{E6~kt+>Tn7JTqiX?Iz7 z1#c6VM)*@H?ZTETag)dAa6&jdaw@6P%ltndzeX(rwT-_lU^@^R zI&w7XQhiMBdLnfHm@#I8u#ZAbT8zpFEc=uDHrUSVEmp?#@hf&n)`afY=Yi=+ z(d#9kY1&ldC*OV`HC3C6#j4_$=o@(i_E`i;7_VqV0V@-8SpN_B(3b!~kXUhwP;m-B zaeFs&>a_^f@lg=FRN4%BjYjQC`+EGSZdICJ7T@;(*HF{|*HG2~*AlgWhrk06g?FU@ zwSTc!B7-UdDf>>1VU!Eb(-|qZHIy+ZT6O@S`AD4PF5oeeZzsl1skZBTfC zr4dOsEkW7JD|BOON7M|irJF&hEB;Kp<$)23)C7Z87H z$N0F2GQ03mQ-Q1kk@JhaPHo{svrTP5Itjeiyk>uH64_yqU3E=_3pXOzp*ShnVFMsx zUY$V7sws_vLst_K16>#qqoFGPZzOS`bV#|qfYM9ign>k>q>~Zvg!Q316^-A7IDb!6 z#$(V{32K&C1KzYx8_)IwQ#6RG)HVI)xy3wd>824VVJTpg%nzZNVt8#;((&Y>k_h-! zXm~v5zroDVLSbVR&}o@DRXX}s&50q0DQPjVvmUlRnN>#J|G|}6WzB^dCt}yQFlp0x z{(FGrpGLSmIxRk{N{7>^IdQ1iKMll;2cbvHLV)twjCjFfUgUg*P;y}Lm%KVHyEN8) z4BnLDo6)0rq4HdEq$r0HrED612LDJD6{KU-wLX-GT3qzAkiKo9a@(?afm2Q7{H|_t zV2G`PI_yg3L+|puc!91QTBr?!LJHzxE%o~6z z9=#)33U+ghtmOJ&PWb8|QP$(G`rE{VEp*`OCv52ER0?8e76SQ&L#gWOX7#^p$j1Tf zm^02f+5++a_N6NgyDb;8a$!fLLXD%U6ABKR$VM!v)37;bO{S_7kv7`XADq1t*d?n1^xpjw*noR-xeRNT#zdP9ZWkKZxj}^ z`VT@1B4{=OIfPTGD$Gu`bGyiYv|WOm+XAayg5BBz=MSMQXBsw)8Nk#d@z@nHRrBzu zQ|Q@~f%NJl4*9N)vv$N|qHMsV(4VnBL))6C7ywNN;tH@G(K=_MiAoS{KsX+?0jLva z0&D;qkQQVbFPxN?32*W+gjCUCNFumBTY7M=cv%(w2=YD;vLEL=TQ}!NA zM+P>!f*Vp+R<+!$Kb?*sf}2R1cu&7Xc+l$`9OW1ml5`s5pZx!Wu`ewCF9OjanB&GM zl;vG0fUFehG&E`?w-ybm^VYZYV7q8y#II0Nl;i(pz`U!6<2?wWI@c;&&$m}g5AtpZ zpGptD3jY)N^thQhDk<*RGXUCG`(suDdKm3edRSQ0!NLuGHxqlZH;7muNm_Qq_S!F41Y z&z-6BdPSt(Un?G0Ke8lMQ_dFLNnJHQ{t%f;K_6C=Du}Z;6g>)FafZS$p+K} z1I^gdFe`=MDr#_{g{7FV5(*3{ahbaCfY?CR26Ip+$({Y~)Q!UC0pho}`o z!GC!FiKTUAd+v?F-7J#j7XcKA+SFs0cnt{e-8`&+LGS%nJan($G^KPP5MqB<5~CyI zoha^~V^k$&YGS1S`ASMl6aLq0KL7uC6*cktuNAO+ry|(fkgxEge})Fp&|#H3F1$rlXk>Zu~{1!r|XY^m#_D02m z=tjl0DNL$F0Zgh|V^|ec2hod5PZDQhw-RTvucRZNO7BHJ>Jd~i7_uM1L*;-;v|(_W z&p)x1f6yL42dPeIhyDwj5vmihNTpd|l+r9Ta$bHF`hUR{s}w-Q6*8CP-;KQ+>H3E$ z47F33OSg}4ac7-2R8#)l=*_B9`Lw7)v?RV%Hcc=SvG@Vyg3YLqJKAXh;4b|CYCph# z8xZG*$O^PE_L2r`%o#0?q+2sW(VH@SQHN@niW!K+96T_p5Qi2+f^Cs8>L+{&b!LIO z3cDGI3~pF9dF-tnXProxOA@*KQby z6bu8(vpKir&%?qS41;rBBvLzDO;L_2|2gMRGR13Vg zUD-_$4YlY0F`$Gks~b|Ft{cJ<&;%n^^1rxjf-$4EMhR23MiFDCDj!5qH-)je4=$(& z4{a0q)w*q0&CR7ec1|^Q%9XdM6FsnDOwA~?YT3hb4Zi^}UR({y=jXzvQ9tk_uc{SA za9~zl^Jm75cr`9gdNkeuD45X8sFkbzw4j$$D_60wsBS7{CX6U$)|64h=5pgvpM--dq>2H~ zqh<2q9KQiX-3*B*M%vP&)bh!(%ouVctdaITi4lhzWWR=-zv<{>DKNAvB?24I=$0CA zsSOOR`4i4$&45vKvF}ED*7OxkstgXqRgJ3u8RPq9x5745u^N>M?5BXW0r3LOE3{C% z2(%LWh~&UkWGdOe$XThB-cat~I>5-YRRnSjNXb5{5osdho(+TWHU-jq#I2|%}`3VgTD9U?%-kgkrzlM3Vg$su{Bc;|5?DXpP0xR+&q!EO8c}i!~IV%Vx~GnSoGrBZQhmXvgsK_bcnl{@V)$QDNJR z{Q##v6;PpWC&Da3R7$7L*@_RqgZM{i%)h&XxD3?D{x8;C1}>EkLi9=wLgqjYLK5M5 zOnm+L7Hrd(q*xCi_Ptxum-PTK5-sazxJMjl}I?k!Ghnfonr1oi_uHk^(-p06)AmSoXeiEG}j2+j&eO1fj);i^q zygyxivAk^_FW4CxYsOu8HB~pOfkk_9VxRu;jZzVesInis+2z&R^FhG&B_u8 zKi4b?L8iH!vN3A4p$dU7>CX_f#`iDtg%t0Q3LVFkHwQx3sfD=~y1#6iQ}249Np!^Z zOk_VzKLDnDwm0kxp&y|4!n9sSFy7Cex6Wt`O+Q31b@10IwD7>nd@aJzVSWY#wfA7d z?Ot_GsxuVCpAl%^aeIFzl?0fpToOte-1_U%^Y8ph!8g#r^6o;{ z3>{DrHGgQI>yEdVS#YV+Rq)IK#G!Y*E*x||T-D>_A0sTB zIR&H?^jf0Ix=82QDMa}$566sfurggf^&g#J1m0Ir5SUL(f#sYxlLy%(RLMf$acaqx za-SdB7+U^4PKCyrJ;ue#HIz$GIa}19+0InFt-uhBSBmW=ak8<*%z@BcixOXG#x7k+ zlGYX2X0z`~EiSwm);m;h7B51KD;*NRZ3c)}UG)Q?Qf(KLDmx&*=LFmy4(h$W!k*B) z7A4~HQ(xSd$*iV1*Ld1>8+Un>6pbC5$=h1&t#SNNYpMiUgbX$ln~%}7m%AgT9oQ2a zgz>_@&7i&*^2I4HX9msEtLkss)6omvDn56N=K}IG%OQMk}_qp8aL}uNZ)g4)4z+S*z#+=)?xh>SnYIK0mrruk?qzqf4@>X>&$K z9GA;}%}UDFZr;_)de+7Ix2*i=BM4Le^s$gG zCc&kiV<*QZ@QLhG$7g^0x^)l%T=3;+Q1zshh*SLc%QJKJPswdHh(`{8X}*Oi|LL-B zPlAx2t}qWnE3PoIdU$~AxuvU!eE~xvdp1joA;g)edt0J9&cVN*vfs~vFQ5{fFJBPzT4ZOU{Ycrxe4r8i>8o*FMZcbvZ#5~QN&m1Xy4{dGhc1bxS( zkI#zsJuvi=l`e^Cr_quNQ0%2V&OwQTV&CMgj#4F_MSrZ@T96FHQbguL?e{HAqq36| zTVZKV4WzH2=L7&$RmJccw>?FBR`)Wsspcm@=d%3epH`t^`6gGp*+-Wd@!u8P z4P>d^En{b_-M=4loe+n`Bbv)%RLyp2aGey0s6!R){`4x)O7bTxg55sn{5w~3evN@h z{i z`g(ef;G>|rac|o`AqPWfiszaBQ1S>x+z!;SEyR#J|r3Jd~)1Ur4|HWbLlaI?lyu>Eh_6|CzzKIF@HkW zBPRi1-@v!1FiTeAsk*{1d}XUVAn}%8-+AsH7_Lxm*>8gqY*HTLSoQ> zwDYMwSuU$TV%8UO+xmbMsC0c-YLq2Hoz)V!gYBV9stnWJFTd?I?@)&Y=6Jr+F#sQ^ zXdQ+p2xjn!S{u`-geY7iiGO*QEEASzB_sx5wr3Yh$N-Dne2T>Ieo(CB-=)db&Opyfr67Xcy&JWqS$DBv>{9 zMSloG@>KhIEI>mPUxS;lJLB`-?+QchNQlNE5Z;K64!Qc4<~YlutpBbb#e|8iJ{Xm0)fEC#j2|ane?Mt7nDZ;80a@(t+?Gd%v=W5}ZNwZ7`x7YID;MR` z`xT5vW=3`*>4ussGh=aZ12RF3#Hlg8IJ6lFFE*EGo^D70tMGfstR2-%GIFDojws9v zXwGJ%sQeFsW=Xr%6K}A%D>UeO1Y^9)m;fFNs#=?y$}@qwW^9yAjL1@$j)^*?9zk7ND9(aG8dZU;BHu{`o42u^kTox;^RL55)%Iy_ zs2>2jJY(}1c0(6)UAml!oIgdbl7Tpx6FHYhLKeT!1v!JMR%rbvr3+qo&QK=;+Kd6- z#O>D!O9DFc!Ck#nf;ykxsHOm&pQLa;2(PPIa8?RXPn>@zv(leg=!Z27ZG}3glQEO= zeV`mtsCEK&`plEqe|3XkDU8j`U^c}}s|QRlc~(YN(SSh#H-lzf8DL8U@jWMd(0N_k z4)*uMAZ_aV4Dp|L1(hGWaPZEi0*M^7HIVp;cViEc7wSAt+TBe!OcDXemg%JC-qhKl)TbS6fJMKv8n6u^~b78;IW`<8F=LT3V6VscHK60@~KzBH#CJ z+~D+`fB2&_bERS3aN__Hp3yo2exylN^Fe^!O3;Y#Vd$X~Xnif8+&YOa88(>dWcg5i z$eN#-C8Cw}R(D*Pfy$no$FTQ-2hn7z;}QFWQXnDekG@ylYKBT;1hgBK`xC3aQF_A{eyWu~;doHEX&+*|^nIUCO=>~Nbt&%H(9*wt_#<8{)AM8E-u*Rs8x0HGRC8k{ z{dwN;>d$s6#83UMFej#$s>xC4U=D2Ms0~ti@EqJ_#qFb3tU5AzdZZc$Nk$G2f|Yo0 zBna6gqu7KY1IM8h{p%vmqspyp$ z97&aY=cWo|@;vbymI!fV)e#Et16QN&9Z5!q;_Kw&K-9z?w_q2?0sgR6luPQQzHrdz z=#|^rlGJ9qupa7QtTD$(wq#i$bea0urKMU`P+gc?;cQOIjacdi&aY#pli_Om9Go zxDo3J?D=tkWC--FlZIF_W~h65Xad1c5}R-xn7<~NqOQ#+tBCvUj7v*>q$_VrwgI{J+v*PI+qdYh-P6*$Kn=vUHLYM~SP$BG&=`sxhlQ*I1oEvQmNoqv zc12681H^8J?nN81x&Ukp5TfcB3wM%>oji?I1^+j|+CBNm>(IFe%WoA>@*TwsR8rND z-?+LZD()I(6ntNdp7tow-NEskykcmpY8onVHuIQ$Kta^RoQFiGuMKJXKnLw9h}}e`u|Xd0 z$0UC8vq*MLT5_GQX){(`#(n|Di)9sM@PIbTrgGQ8NrT75%(wFxJL-UU9A4)8DF zkF?=IH9J*0=7}wg0Go6+b{8${?;qNM(*0bi&`@p3U>z2hOoPvR6F&fd(-lSgBE&`E z8{_7t;>^}E-eITN**p_g37lbeV5cE^_psctr^XEtA`V3k6`yKXbImST3Chc!(BCl& zN|}GJlRGEu!2<{}I*XV|;^%S|^5WtFe}C-6@I^J5@Q2i3_en$d4w3>*4!IwS z%FKpFG4Fm+yez68Z7L%eYN`BxtqDn(Zd5y}}jrZ8&$mAP(fLJL1o@sxd6 zE%>lESY-D|U0s0Bz?`O|kr+P(BZTm;NQF+FbnF zy$@9Ks?DtNRv0~-Mi=_Bku$2h5**XvgVIc-0KVxNal;dM`oG&A1s$lxYLqqPAep1} zmi*ZWSCTs)b1~=hL_})_bhOAp?sdgcR->xS3KmK~Jnqc)4;#wu&~V!U$^L^;Y<;siS@kAMUKar*Cf)Z z*Yvn&Tn@+X!O#D&D9>hNd$YixYSv44Ux9M#Mtas#+f_l>y=wAhQ4^G2l%A*;#DY?EAGcFz^71urjMSCJ1IqKJ%Y?T&JZds^h&Mi552kaTnqZ$AK@PbkIo6r z7!oSXR;J9GV*IG_I*~<5wau+2E+I9oq$>G@L})Y!`Q$i)KaOI@YI()k4+Eb2hqR|Q*fcnX4a8v07ZA#?%f zQ^$S91m!W)&TwKS=uA?*X~BF5%3b)Vmi|9Cch;Z>UbGZ|TEDwvfgpMj{2u|VZPrAH zvZ8`kCYVsssz9Ya$m|#zTWe`a>{+1Nx>uJeC%bI#vBJCpf;wlcS3Fx_?MSB}isyLz zd0uk}*Bg|2X*ub5g;!G9%seCUXxwf}h}l&Hqmo(izCaX-xkA?{3lflIsDG+Y=qJe^ zK7AJC!J;$(B%Tz=+fU!K$AHw|I}=4O=7fRx_}X1K=9;cJBXsvgq35896NvQ`0>iTR z7T{Du4PNjpOgsVHd$%xw>q3Y>V6qP{@V#_$iur#cU#DHs5+kC&=FdaIEssj<^Or51 zKK3$jdFHWdk;5=gIqsFHjSYoGZ+6`iA~UTL7t3-1cG6xR&u-7J;p_k2IO`ZWSaHsH zPmQFz!EA=r(ZW(ZkAN=XViwIj9F}ut)@^_I(Ebc3iD#?aLFltE3^Dl+Z{buf^2~O?vB09($t9i=Pfsu?D#WeBzWrB^xMbn_k zrW?L^fUUfej4vI#28Mpt;bgl$%RqS4u(C@@cie!dsvz9>sG^H+o!r}kh+KqvdO|bL zqmAcsM;4X!a%O7a>$c0;)1ggdWKf-0x8+O)Fp8r_%0TZET0a81aI2VrZuWl=% z1u(U09IWG6TNB8bl8XElfL=PbPYzBs`0z{W-Tm~|FXvm2zPZ=aykzOMr~Hua%CE}+ zx~ut`=;qVq(0AAK1PST0*{-PryeE9a*Bxp$8W-v-kj(#jusbpLyLJziQi|l ze-&^_CZlL9C?#pwOk^`6$HLiIlG1a+$w}i?-^J&g#E2#wBD;WcXJQ)QsR}kNgqPJk z_?c}pcoN>DJD@}K!ZF}5Y#=OeSYjD~xQe{L)Tyb*ol=)rdi^|+ohE0n^mxgW^PCHf zNJ5l7?Ec+7Jq}LYW1_*7F=P$hEjz0rZsf_A@`N?U8F9@Xp3G2;t;wE1A%Hh(x& zP8bU26Q^v}j3j6$PKW>VQ55{P4CyStf|bdME^$RCJLFa^KzSak6$Q>MLX)i# z6nIzP&HamXy?LjY+e0)DOZ|AL*-OO2P#MS_Ps>!)>Hw`*ft-*5=w!)oN#*XE(W9;I zCvj^SW4W%!=SR~V{dBHZ+@-EGW96@xzhE&))5*O#gz0b@6yOPp!xy>tS#iMUW+FqyF<9a znWhdV5B*UT@A*Tj{Ru7GmJ6WPj}cvM{&$C>P)=$BiSkzOI$iFFt$8c_>ZqY3s)sIT z1;_Hko`k-DVUWBj6g!Bq12`LDb_Ld``{v{EgQnzi!s?C-;Ob0PnYldhWF+18Y@m5T z`Y_O@M194nh1RP5e6g_g5BuIXS^z}&DU=lv9hT9nSzV{5wtD=zJ1eLs z@NIsui|AbQYQfXQ=kYf%j_S7k_EN%rFE%!iG($fCtePRW2v5tLegvB7=I!WDRF$g* z?5=B!&{u$jn5m{~;wMK9OmtE`xwB-FlBOt5%tC%4&ZEhxl-q3VDa0U+Xo=qAwRQ8> z(_8Jby7$Zhg5uDeD5Nx*4Mvbh+kMr+MDK1IoT}odV{@~+%g!2}iJto}Q&Oo?K*1N- zn-}*0%uE%~BZl3?zPd@tg*6<|=(yd&o_$RXT6i-$ekD41qLEUB)vUX%QT?zMN5|02 zsZ`cxQ&ZB71k6J$p~qgLD5+mylCY9&b(Cqm$i&@fz%2kYlRP`Sa8Jy;)zUNf&@C~j8ukHz zXG?1BLF<@)aB2h_@LN?y4mu4Qm_VK7(G$i%FqHV?KlK2i~Ogct3y{~mu-l-P`=<<3kfA7U%L;4=9 z$!4o4uK7FDR*|HR+rX4H;+j@ehiTgs%{kN3fgmg|_>-GM^94GM#VYtNv~sopEO^^h zIJ5d>u?Q>NMK!9jVhV1k9?akt5MCh4=uhk#S_rIEDEYOmcUF#bLYCeRauKuNM<4Tz zkLwsfNO@{+8ifo$y&RK2v^gBRW3-KnERHb5t9*)MF-3J~B?z@#DM(iVK9zcr*?ZV~ zAL>0r++!id%=46bo=V2n52djH%~x??FZ3QnXfKM z;-X*9__{Q?u;)zcd_(ZtJ?mxXJXYJj_lJONzG2Z7p3GSymk@1OGHaNc1Vh7umTTJR%r zOdY>eJGzpymUb|0w0S-r+VmwM+=e~r(bX?G1XdZtx)~HKpOLa>*-=tQ) zs(0U4pF}%7x;kN0?UYs%vN!^JmW_ug7yMqHq)u>pJSG?YGT7$A)Gx>tsZ70ZZ!bgO zDfn>M9Oyrc1RoE1oU4-@^ZM9;L6QngTi5&#B~C_E;=V6} zz^My2zURai)BWFc)2?}ea$RH`2`pl zXxd1POVO+BAPuJgbmNJ$lz7Te(0h?8b)}i zRuuy7Td729sUu{U*9X=fSh1#2K7mBpGENje&SM!w8ZQulaEDUG&}hXF1a0q;9^#Lq z0SXchHQ3Gkn?sq?FWD_2WF)O(yBVmY(>pT()233=MZFcS140oQ&VgMdipT^*0bNSE zR4@lsD^7~q9c$b=r%yvrsFB{kYdo^QpDKkAMqZ4tKG&B3+< zCkiB6++_u*64rPMKn1+_`(|oQu*MQHI<<@^)?B;gTX%cl>f+(FRj|(F}Hg2c$ zF}*OTov-$?>}Px?S9yJSWK$Ri5vxIwO(T@<0to;+6E9*ZCfJdFl<(N=(45#B_^;(D z51R)gnojINu$&Xr%to_0s>7S7`4es=T6L^n4Uk93I<9t-v54%_uFf>q6}kpv3beom zMK4R;JVFJcO70Oknb8jwj1Fzo>N7$D3=egJNDg&^AJ1w8k55C)mJaGNCymaLY zFg5Q)wYBOg6Zc7f_}% zA5RATdu%qYhRDXtc9?^5b1U!f?=Qyi=6fv#d=IKh z3CHya+P!I6@y^>Z2f(f*qafJrSQpPbG9cwXKxzQ$psyDZzZH3492y+?wkKH~_oe0H{_KF)~xEUw-5e zgvA?pJ2I6&l%U?oT zz&A8fhiPx6I)^nOKU>2W?{-{s&LQ9D^)LCGp>S$~U0}QCL3u-bpV|(iXj9 z8wHSzta7B>8*)%BywS&y?P(TKK>=H|xKoOi(Xpjh3J+2B+ybeUei;efZOp@{Pb3Dp zWixIrRg|>P0P($DYv}MqkGqw%XLZQJWAM_T`5wG~S0+NGx&xXVN*I%dyjhsPVvV91 zPZoT;xCIGvBUvnVVccHCW8$MFR(6wkxppT^b`3%btHuUw`+TwKyGkM^urU1%F%7eP z@P;^o5E^j%!<=G`#i}LiNi_RMxy53Qd2qzfJ*eRJ9Am;O}Zdq0)-{aR|%<*Lam!+7W{_R;8_ zD=|?I2<*1LWn);q4uDVpgX^BBYTjPtls`(x5K;j7p%Bg-fYw1A0@~d^qVl79bLbw) zL>WKuAe6aj02EDyu`-+)=0HdcMvQ)z;Ox40kX1e7iXxQ+>;kmtS9STlDcza=WE3w} zOX2iTb@?wAOdg?N3=CL|rWw-1>w~?a*_R}6fD64>tIb!kfYr-;AKOmxe*Z z!np9QxaSVL8fqPZ(5}9Mx5Bb#HKi5DXbd+`%0iEY=TI{Z$01iYPa|rF+b8@r-ZXe! zfMt=v1=Kn2PEJoqq6Baab%_b_=uiJTqK%D5%^_&nQrQV5Vnpo=#FdPCoo(Xb-}g$* z{=wx@%{K=VNF(=__fXh+BjJdbAlXMOOmlcYDx;enUz0-wPVa;O142qfUHEUTE|;1T z?iK{zsl4YFrO+VMXoat<_OGmL6Yi6F07>U1rdQLdu?loyGY6$$l>%4{nEu~$j{cp# zQ5!@&lOUJ+TS5a&$$x)t)F$;LrPI4x^#lp{YJ3R@;bMb*&A4m1>V(|Eyq4#=RW;1wXU>%st_u^9%zVlYh| z@+6)qT(Ec z@SXTz1(QI!#hwz5%lH6cBavd%{lYOY5m5Bb)Z9i#2`=@Ho{m+)*i0(G`9j)5DR+zt zSsqYBYpA{|f!**mx`o!Dx~ADqa|B!(r8cr%G7?6!`%zSC_lq24F~2L~RR$0!WmQ`m zg3#3c+@K0t1msyzO?MEgF)jmiWp`O6qD{=R(}%=}Wq}Tir3Jt#7O6L{pFzlezc=sF zf}dlrUXWLnTg$R5oz@Q{H5NT%ywTQB%GQV5v&7ZstcCtCW?~&u3Y}>Y-OpJ+>C-%g)ZD(TJwlT4d zFXz1H`*HVG|9bW6>eW?y-+LE0e^>T2aKt_uFPku89V&%4Ft{8SZ891lLM*|m2n#dX zAL>MSe@;D4Q{u0_Q67l~>|YF`63IV;}Xlg&S+TB?7nsO<6Cshzh(l==NEReTMhCSdWokqbNVzaFNLhk z{m6*Wu6Egu+;$smpFm&rK%YtljjDUCj#;80Uhsf}f~^Z=_6&th(6cDk=-wP*a%S}G z5bCzjWpL{@MM(*7MrN(}1`Q|TxnnG=mwi+h9KbEFUHdD+?8VED>2rmnEOB!W2mR2K zls*E&NK3C2yM>Tb-1AL|k)luyLfLKcY|X66dQAE&Vi*@GY{vur0-hRH^^+?V3Cj4L z?IR$!qB&puS3b8iY#n!bA)<=4^}H(>i6wj6AT!~(bl|^#^O{8JMCbI8v1*EHGo9`} zUcAWw^XZ)fNFDF)2)&xVmWq`_8rK$AuO_=m1yfv9_qUV^FhH}Rv#i&^@bIWpcw=%j z7*X)e?m5?7C|Tkuf>l4a%0`P|GT-^CPy-Nk$qh!9vW7tTkQ6#ahR|fB+|(2uwuOC+ z%l!cw3vY>{b*lKen5@v9$18^jZN-9Ef!+kHNSac8jcI|2(eG z1-T!on)y1iR@c=fkRaPFtk`GZk2_Ee2Kmx+W<4|x418)GIjG* zZR)#?9l@I`%~0Hnha+it$q@o#uVo~U)``u8$Io_q``opkIT5SfY5qiOKsXI?4;Ku!Q0h<=X&!g)F3`#959&oz+z2plmQe^yP7EBE+hsBbajQ4eS-X8PsUG zjb;&I5oRg9WDZwl$=UKDJSx3G5a%1*F)1x2l~2)!o4Ppn!O-kO*X!j0kB!?!`2=_Kp{)W62 z=hJez?i;;>@z@otNmiou6|cHbHYAL7UJ8>P zkO3=pT9B&jtFZF{I(i;e(~gz64TSIHirut#mlPjtXD0t#Ys}wJy;!*dwz4w*%PgZ9 z&`6zpjE*Dv-j5CbE)h5WR^R_tj+UKoLI2rhtNQ&1ma?cvp$mZv-kmH0)i zKWEzP*Lmhw)Huf+Fr%xTEdy(#keuB3xMhmtgn%Gy3g4y zAceo#WvPC9J<&PlO&~ML-3AzyuV%}DF5*&=JT!`64QsE=pHl034-|hG(EeStU&47S za4lzJ=4MAu&Od~>qML{DeoMyx%3;G&J;;MI>}hW-!0WUIeYU6_%EcX1*5-z~QVT$v z_S^!lt*F`_1PyG^aEha7Wp4qW0Tg!pc(8dG=33x0WaL2 z&f$-U-xMTCXY6;nL$Hdx>bVOXU8(*)uQm*Ek)ov z|9ZU;FzTeJyfN8cPn=e1{Ddz%x34m-_I{gh>Gu8#y#l^E*qrkw%Cc)QnbrNmx@ood z#b_k&X2Ho_CRAMp^g7tj5Vjl#i?a1{kDmgZhYN+gjFh7M`9GAfZ6`n!>1>#3*?TN zj~X#)hJZ!5v|kIRE;0TAV`vX5)DrGkNEu9C-%Js6>%k1?|zG*OhBJCxe`9VB<9^fTUG0jOXWZN-XetvQjveD zJb1Zy*eNSNjuj@PfpV3%Sck4v5AM9CIsl##SxfLN;4vas`}eNrS=^@({eR zFb9J>d~~3w1C4c5d)>b---z7#{KtHIEcR=?6$~4!#8RQ*2v|3D@spa7Tb0!i5&rYu zS|s$^GBQ|7usg2AeJY&Fh2a$F4-;{8t<|REh67Z2BfaZ7J&g{TUl>jqe9}q);9&I% z`T57g0S`r3=T|*;m}_CVbpw$28)!78BL0YsrW!3kh0@C1h9zbp7-8>pHq{!FxPqO2 zyHNX#iGvj(K!P_^>}Tg=!oXHHJC!29!EPNN2flah^&@mfuN@*&W-1`^2w!71Cjq{{mZR0zyWw1KfBn447U zH~$P!zvx$TF<~$FPa}fLe2nQ^th=jp@DYnx|#1mzO?}vJH5zf)0KtT2 zva^;K2|ZpYMTp!LsfuwpuMZo ziOWMq$avjAg@d|ll6PgUo(^V}P^Cx~yo!m~cEcT9=nfj+;4Z~mymT5l&qKl99m*<^ z!?<$~dvhNIUyUB0Hf*Or;2+~w#4QSFXryXQlaDnsSgmQa#GcA*Omd@MM!yL#=D)hx zm_G}|xh!#S9&j)RQ369Mu6 z6sF;lZAKY;Ccs$c+;cEFNtO_>KEP&7B#y0Q0>EnD17B9RE?e*#fTs28LoTD1+q?sg zAN%$|1$@StCESnndJRz$TX5k3vi|5_#Gi3uP@>mTjp=v=!96#vl)YWpDQ9o@QydE;sScc^n1g`9mdLqdj|h%?jdF%=7*b1j z%bHYu)0$LwFfF)7iPaHLTa3``+{TwopklJpvG(?s;tGCpd6 zD5T|LY`5h!rWKc@3yR9Xb~oSA3T@i!jQg9AC;`4D2gZ|G=isdS1W(iG4=1&|-)0Dw z^x@Im15XNcvCFcBnzOLTQbU0))Un9$Z}mE>tp6ErlVuAkZ>weD7_f#)P6MV`Kiiy? zaWiP?HD(z(CtL*vuzE8on@yHWY+MpnLZZp9g;>BVo;L>Vye+rRu!X1SJ5`Z@T8GdU zwu_jqxD+ZeML8nzPc(yQ2yEKVrmvjukDPrY5WfOy)y;ZQn%`%`;&)mYi(jR!bTaWo z&g#g^+xB4T(8g~+ z`BO6x^bn?GkF#8}t{WnMWRVWv=7SiGA^{^$G?ulfK&MswptMiQWU!80+p-wl{e5kS z<~#p-i3jx8)6qPkg~hJ@_Xxt;VB%T=;;n28l7IRo^;hu+-{0%>C=-fvZoues?rd}d zxCULP)5@4!+JGsBjBH5ifGLcOEL2Kr`j4FuoI#vp)WV-wEgxPbyLPFO-MU90Nen8q zWMl&bc+TE!w-33%-{&_16NYj?)@CG;<)t10z z>6W_st2{!N)zR8zX$faO1R05;zN<~_){~&JDww>r?*rdR^DRXpjL2Ig!7pVcgzPD z_VU%!rax9Hc>3q}+AuIXCP;GowMVq0upL9chbW41Diu*ZeL;XCGDLdZ5QU;)R^DEO-lcIV`Z^BpsJh z^*r|}BXjJt7*>p4nh|_^S~$>trAWIBQTzCE8p*a=k!U z!er!LCXzrm-oOVgvpGw>U#V_z2UZxVuj(dByGDVlCxLh1hZ2|5+?j06X;Lu2@-crT-?WoH z8++K(CP}@I04N~D0yS(jF{{rKWdfME$rABpd(Yn}lHa)f^w*DFgO;#B<_|BldQLz7m+S_`$bv;rB>q1wU>4m6y{d?n)eC3A!9TMUZBU-O;3e;yoxF2 za$=dP(exQGXB$0X-Z0zAHt9)6n;+P9 z%7xmftw03LXBTw1=!$>1P@cO4^>mU^cX_@0NO_LVMOl^a9m5)U?Q5Hq$(-re27RelKcU&I>` zo)&o{5%vuS1EO(+7aM4)it>efBF9p8CR_`SWdgh^nB3A!LY;`D4rm2p_akx9&g|ca z{W(ArdrqxQ^u{76=+D6^kgO|wmYGW!N1=&8)1a~Q^XAm7&4{`N9V1s)+My}CL6on@ zsPoF)CM}UUt5&itiVqn_8J7^nBB`!ak3{p|6m-lyTDN!e1nMQ*24)Q+GV?QcXwruc zrj7%um8mMwfB}3PZlzVU^efP}vwVN|7Db?3^QZc0DbLCE=C0Iq^vbeU3?6xSA%3nu zdBKrVixro(?*i_)7I#OZK5e)*scAk9z-=9*X*2E`RkW4NLJ3a&q=w5ECixkwDWXx`L0fhYO|{atq<6OWjO+2Zx9!f(&`p?J^vNC03XeAv}k} z?XDg2lI%H%{yWmI&`nisp>>wELFc@!FJ;<2ZxNDF{ZOzx)Wxx+OMDyN+1X(Eo}~;+ z9=~i|2L#K{EfQ^Ad!cNFPLWi`H3s1B8UoS|#80-a+|o3p{VhJua}kh0I18UvM3rWN zh%HXFfY(kDUW3dv~^s5Iv}AI7FI zL6W>GFfgUWBnUQcFh9eB41)y?p%ki{Zupkhp|u0h>R zfG<94&d6dwdBuz)Pn~8CI>bd%x%!PtGGlt*BA7$W8_>0}}#>~Jz$gfw_T>Y}T>|I@qHUI}$u%EY0rl-W9 zGl6BoJKV4Y#|J>_{;Tq&IU6gKU4Bp)zoakkk4oLlP?@IY(Dz#S5AC>1<&uwt9EVEL z>|EHf!}*+AxpmV4uF;WLQXKicY@Vt5fot*=>Sbqp3luKR!6o3BtPO|}U`yQC;iv*2 zq6o*)3vlusK-G_KS=_hPIIwf?7z^LX3JXii5WqspD>ccr1yOMbMG?k@W-jKwG@hlz zv4{aBTwc@R4fhdT@(P7E+`72B5{lh;A>5o|*HWVXOq7m3ma#WgE6OgN@XVakbS*3@ zSntgdMYWwA$Aw&gm>bZO zuvC2bO^UatmlYXd5vhrfM(O`ilimj7L#^N5chRR2f+7r&5+G3t?`m7>f-YjUfDza2 z(9gszT=(x!k0}vM0t>9^EUiFOk^g6ynbx3{KR5&HhbatxHVss)MN0k??lB5ke?yx^ zaL{}=ooqu?W+H>xQ^9{K)FdB+MLyN!aO1{n*f*eUjEH5Jo&Je~HjDj_eHR3;FuZRu zU=~Cbv8R@2eb6gVf5KW=-OaGyf%mF4*6_i$XP8R9)+rNf2ID>FqPo;i;bf!~t!R`o z04N^1cD9Cp@dOM-fBoQSQDY3;+gebm`_}H(!o0etio)PnpzQQ~26xS@J5P(q{^bIO zwXSglZLx2#bN`((M3sel5d@8fnMadZh>8b;~}9$AELgK)zyuJA;f1@`CqRXLFE zzoP0W&ci?L*o-?mRTOq$VPqObEq^yh=jt~aKuzjtP zxgJnOX2r^~Rm^)A>iuFR;oOOs@&cDW`SYS}Ba${AbCJRZbOCSas(g&my@aX+KfWvs z=eckkAXOI3e@K-TX7qeOmzg*gaAD%!U&X34%CBz*fW6@K8HdWFddWXt?0?HU^+0US zUgD&_96fj0W|CZ2J4**JFCEJoi`K{U9$8uZwo!dn7S|5Pa|_K)qe#sJ%l)DF{wuQy zBgw$ zgu%1TlYg722uV|fyGzGpsY%1RONaeGgzwIr^G=L=$wId`1_q*W1P+P|=!+RgY4$4J z)EG7!h#hfGD$}0R%^_C!vW?B7)1H^LR2tySQI6 z{5V7Ju!f*-3zhZ>Q8NdLw#}9$L+{=wLZjIFl#(v;0-7}JzM&q*1Ntrl^`dLNT?aw& zNR5k)6`KV+xs*vYu%fzwk`?;hcVuHG1ZXce{-i0x?mXxfuWx z7Uqm}n+Z7_9r#Po`fbDxB1Hw~`Vm;W&zKYKW8vfMk6LNZ6-Sh=(g}-r)q z`P#QYe?14k4y?S6^;q^x!KFAxRC$wfJ*^1&V&vI-OBFMlp3jBH)x(E(`pq+Ghes6s z`_&=)ZKjoQ@}ys@HzmQ!X(eMBe&6$5VfDc$BVvG;@Rv~NT+Q)3`dw6n24{PAruL_? zF6a5VXL`eu0CD8B*f?F?$ovi)lNNqCnwviG?5TryGc!}x{ntM^^|i|RMm+mHFtLe6$m(quhm z)G3CvFtZfdfqEIr<532wg|<~Ez+BaGzPyXYgcq2yu^VF@&T&(9L;iwo@zv&%XZkoTYmP4NaC@=)dH z5=!oa>S0PzB~)PN#8s(6#Qe=pTG-D@g&_3X9duMsZETy#KQi2bFr98Oo9ea>{?)GN zWEYeFelH&)T#0bU{j1qim948*%M7}S$~b5*HcVQq%-bz1Zuf|x`_HO1l6~Gy;GknS zq33AV@|DWIVbbHU*ID={?kTbd%ehYugUbB&0k7$hwh!>BB-5h8eeI(euc5SuY>3Kz zKr>b%YS81qfbnbe7~in z*%WGj@q7_SCy&nnLf~@9QCaO75~Xa-v57jr}_2o}DHnYG4AXAo}7H<--sP#I4>K&gBeDN>?cnDQjyX2sZw zCJJk%tc9^Ti%6c(*FIa@pd7zn$@vP%#_e~l;sCu7L01Ee9DvSWX0W%?Q0XW z;InfOr0hlei%}tP1LezHBc)F6e;(PYj;`Whz&dRbiQk?%U;YZ(tkR9)t1fcvE(}9J zrF^Hd58jVt1lOwUt``rS5=J_Vqw!ao9tG!k640H?=*$GE1xzq^I#LE;L&{m*+&VXnbns zsZxv@b#uO$el^YRIJLQQzf9h?3z0Wq{Ppbqtf!*Gr=m_0#mmi=Mh71(j)u3Fm?p`y zNDlfVPFG#v0k>>&e?(h=s8=DG;GpOHs|#jLl$(m>zZ$uY7A1C(^Hc}kCGEk5k6Jnk6o@%8Yu6~pWd80meZ+UZ^n zwO0;Z~%dprE zzN$V8w3~EWJ`!@_=9mLy!MnCNFm%D~cY%1T0 z0W<;gzHlOzx-oecrkefpOk6_fY1g;+21mV;*P~sPFkPEP+ulph^q`Yno&%;g%!Q#) zuMY6`Y)(5G<1$Nuu~s2fXnCde;3X!6H5Ow@7{O#h?fD0*7V{BcEDE|8r%k2hYzn&l zcs>aUQgaFwL#5A76_rSrWob^4$y*2li4kleZT>IQ?Gr__N$kRLvaY$6l1?z?mxz+6 zmCL$f&v(zfDeb65Mm!6(KMk#TYqFI%YqG6a-^BP9+FIqlu%#e%GHz_qzw{{;Lz&uq zS6zfEUZ{gdVC3iFcX@x8qUn3U%c$&G59=YL?(5_%(Ru_yZ@qGM_qk#dhD4uTP3vE( zxxwf;4ZZq?P)|2~k{`n@0H4TBNe8ZUB>3*0zd|-Dm7Cdzd0OlX1Xo+lnyF7sj|riG z7iK=09vt6i2nF#s_SXcrcK_@jF*7X9#s;b7Z$B(^fc3Y8|K1ZFS}GI9elKR2sd_g= z4cH~eT~9KjwQGqRi}G>zPl8!-%fNxWMixe}0c_yUvnoT`KsVjQ(4E5iHyZGV`1o&yddFF z)*$vvF~g2@K`g)}%3G+}h4ff0~X4SlzU#6pTtDWR8jDgRt4;nrm3 zY0BE{0v032<6JaGuIE>Gd+zgYpH!%K>i+#>=(wG=+K5BEn=14$oEW zfuV?Yj>G35&Kwyl`ofp~9tAup)4)4ChHYY>w_9gJzjCC6oLt(}ecoNkXrJSZ&xDZs zrmc3YS68&>dQy^`9|1pG5RV-}xzpn#jeJu!B4K}?PAY6~zKedLEA*~`Q)yCmJlrvI z2z)H!AVUv(=A#WC!zw0AcFWd9TFPtWbV_wWeFfMzVqF? z2D2pwYAd!z>xqRfuymZ(Na5-kK4>Y+-@luWw401_@ufX+3YI#43YJ~=Z!!SCFP;w# z(O!w%5Rj`mEp0 zh1Q<4&n}$tQ}kz4wWJuE&)IdtgcfQuf4GItTM z=M58X36RR|wUu`33xH=zfovWG7_$(X?!;q+pdzYdc(sMdu>K{$S7>^TE;)#+6_ZJNmjn4JkN7pOq#Ew{$+^jyJG;vVBLpmvkp<(onqx)PoImB-I%B0z$G*2fNVzn2au1*N5;IabmBN* z95uKeWAtV8D%?XcSSBd=m8O{_BlRQw*_pmxB%#Xk-9Kk)sfM?;5kt*O4CDx+t?*wd%gt;<6Y4OKa zmEO&(Y9|STf&ADLP@j#CW@@-n_iSXrFyCDM^^2 zkXbCJi2#v2zAR-L4DMxm9w-s(zh*4diA;?Fp6U{C<`RSRf1#9gB963#7HlE=kc3#r zS6{V2fe-Z97I)HZ4?7)aCs_e#@)CaB>O5+b=yX3QQwy94Nw%df?idw{)-2SDe(6`L zP7WrPx78}MVXKrM8AGrLq$rC$XqS6ts4^y_2+cTXR8|~dW1OU%=MY!#3drn()@Fz) zDGJ(d16PmBwo3Dcmyy1Dl0x-YL9|aWtN&VA0ZC+8=_@N#_buZ`=Fc~r5JJ19|Bem( zXb3-v73x1CU)(Y8^jNa+5XEDpDhv2i*el)Yn!Q7M+!*76;Qx3|Hb*?uW?N{2vg1<< zhA?I~3`Rmf*QvFMG;yI2P*0@@wps`+*!N1<88Ag|KWzbt+7NYr8oTJ!&jGFwjjw+* z2b?caJrH@Z(*GMa>v79ag#X6KgOEq!hyRjSfps8N**5Z}KKqNAzByfXu#!^6sA5!g z;ukY!LB&7ZO3HOiF&G^vN4AweOf>B|M~3os6IoWPbbBOCpDH=ZeMQ^5#k4^1`9pkq zNkiy8_}rYPMv%s&NLfUpM%Jgm{F`w|TsQ=4N zq`Eow>*xNWG>*y-g>e4z2E!LzzP`!_wcCw16x)fVbO+LMqh;dv5jF-0)YJf z#K+=%L>R>gFma}eV44Y+sE+CyJm42R-nm7EMf>Z!VOOETlr9)&vL9 zhalbGj;EjeAz~1@4@(s<( zR+MJS>eM9FfxU@Qj)HvI_eh#E>Piq@*i7Ke{neLQ`r;RV?^VJ1mCoy%+SHZTGoJ+k zwy(j$GUI;mr6KX=NOa>6bb|MvYu4+nRy?B;D%B%`pS*#aQc>~?ZplbJ7{E5G3G@9q zAo)YfCbG88)JoT^@%|Xla&<#!G}NmA&xfo zV8~K%YTj=W8%sS05n6`7uEj&b=cGC=_P}65i2AilwhbhBjS8&PAzs!b;|_?vO`2#L z98nF&g&A4^!+j9@)@c~;C$M@Dl{R=Duxg+~Yo^K$bw)nxFQt@e#)?!T(_6wd$>BKJ z)l14iU79xWm12`2Ou<;WMOhQ2&{6`F#iz;SGruHkQZfp)hwg}jlicG25gaFxK}-hg zdS8UY0E^<4&i7WBYU|7`V2|dSkNNkKb4%_sne`AWaNvks<{!Oj3~X?CkIlWFVM~pt zACsKaue=Qmy=6R%8$s^f|LE zCJDAQ-*##R{qteYwM_9iL9M(={cK=v7U>Kcap}mHO>i^vWRwzrR9u1Z$pW5Xz8gHJ z6~fhNgH^7KQzkE>8u&ZxnmQ@T2SD&U%9Ngguch=!@6i&SY8=Q*;9z!HiS2xh;GcQa z^!KOR(qL-?gLwVxODjt|=Q`C^hz=SPQowdGg|kj@-kA8mOMMiH`k~^&ffv@{n6-+u z<}CS@8>M2@i$h{-BGdGxDc9Hyuarct_|6&z){!ko-=CK5?b?8N2|&p|yq=qj!01zc3QvzpKA=}=8fwbw3M%$x zLut6~0^!?EP|1D^$)q|Gggf}kAja&1c|sC;T{#y|9A>1rrAhcqGHkqMz=7_)s0!cc zi(^T$vTFvQ2}m88qEA6zGE{lb?X!@TXq93w{=TyE7apBlKBN;;@~D#ijvq_D?ADn}(O1pw zxcB*ULAeWB!|2Sq6_N+>6iE}kxB@Q$rz4%OryJ*PGEl+Ne&fAcdc8@nlR5s#5p)c& zXAR13U%Wn4(rOg+i%ETxPpB0IAwm{~->}GE*46}_JEF;B4y>NVhebA5yPk_LSHO2< zFIuyJ1A>IS)`ZI09WHi6Hij>yT%*G_=f0Mio&k}6W`a%B`S7w*sYexQ)82?TgJ9@G*CfO9k(?S}oqDMbkqNMl@;{)n{b4y->54k4kaJV6c(${X zC^l8nkK>jM6|6sJA-mUh#wgMZB7^MjcKzX6BfPwOJY^gG55bldBcF>B%A|=C7uD z<}NPURSvIzn5>4@?X6FbyCo~(PkElqRIoV>yq$zk@A0?(63Io7jWeZJA`=X!8ZU)S zh^qeWs?2#g+9XaTfE}9ZGlF1UR_YUw%6+SXIzZa{57N{YKl!ZYs4~P1Xaw(+y~#8j zyAi+Yu4}_i7@78GxX*mw5kJ`Cgj!gV?{X_$)8@KhjxFl^g&*_$iLEE&MlB_v&AuzT4RA2C`p2(ts2hCNu+W4GLjg{WvK>H_oOC5#egxA^k z4$%aHZ0t6Q1{H%z2GNe(7nnLxTNz^hkRfW4qIpne{ zfw&ThX#>cA3);XS!-IbRyBKs!k2*q{W*4VNu~(qWdyk)TVVt!2V1G7=Jsrnvoq-Y;+!dGnhxI%q49v*k+fHxCrXd4$B&$mx1%038mL#;w} zf@|DDO>B@bJd#T^c`2>O38xs!8)U8wOW*qcT(Yt74I!*^{0K19?auXyKQT85U6=Hx zefW*;h~lPAtjwUAaWAkv^IJ<%lC=D!FGYIJ7|(n5kMUi0E$upuJ}yHD+lV~{wB6DIptESk#7i; zC4we&f#jPiB~V4Vrdd>+KIERC2yO!U7msKwwH;&~iuJebfd3nuA=h$>(846Q{}EO_ zyI*z@a2m@SJvA8~*2ZF>x64yc-^v+BJULF9`vAAUn&)cGlmfNkdczz=&N}2UYf711 zj3ANzGk1p2drKefq5>$oTF#YV+iOd&JfLovx%bIHa*#x`Vw=Xbs5!$w!Q-tO^c{s# zSpGK+)C142xRcBn>QpsB=&!f` zB!r;yzR?h+r-^g{Ik1KjtOm)ZZt(;=;1{Iy%018ZlNH(^^nP?ctxZiKj|xLKx33gr zzs0)B(gVb986I6v9;wGX$MPNhBIyEZU|5nExDeIVhc#V+=}cX(55BY1bNB#JD)zUS zMv-3I0IL$m1}_k+5a*{Sg>OX91~7Ms9TYPchQ3%SJv^;86c=#N05G%=`Q%}D{n7pl zUJjklZ-b6`gc_uAqG#n8 zw;mqL(_43jj;3vhw~f;ibbUGCPv(=JaSBa$PE8XLNKC6vhCG^B?67!UW`8a=^MbU( z=(bfc`mOScw*}`%h42faLqHAHCp}R8RN3JAhYC1w@Uf>bL}W=msi*`ywWZnmLctg@ zkNK1t{BVuwszEZlp-?h(QoN-E%d1L>Wc=aTw{0&0c$u`UALl{_O=jTVQ&%W18*gwq zO0dtWDs;3iN9_e!qQV!q+vrN3zM@E)O!W`XtIMC7fNiZGQDdTudJi{gvkN%LSB!1^ zt-f!0;+G-A*CAC#vNUG%S08M43C^~@G}@#%r0t}AZ+lw+>ZCRPvJtJ!_>~7E*0CD5 zmk4SZ?NDM~$+j=KCmYVIOmy0Jy3NoLBhDTW@m&P&I#c6V$eBEhZ*Dsc3%^SS>MXP- zD|$#`3?6nGtt3+CRktnb@#9r7N@Qy)iDRpJi@A64QsUS(Mj;e7a$9t@Ne1wt z0wP;n$cn?=sUI*6%pMeY((4NT0M+8FJy&=5I#+if{Oqih!kc>1oGF&TmPiRD44kCm*}exP^NJ6;R3 zC@gSsweL#}wXIqyFl;Vp94(zkKY#Zhp0%RtqQSNZ9avuaBhPX3#IVy_yQe)RYbdMC z3)+&fZwjyN#JBwW#Wu@OA@3eVSXEG%XHu4sz}~v{`}70{Jgo(*ACsRG zkM1;)Anj8k7Wz(;?~!U7CdS0s<7DO=YT2s)a-4ZM2taQ3kT$IBY;@Zj(2ml9tFdec zuNFdRv;j1e;32SAe<_UZ(fal#Vj))}aUCj^Mg_X^W$`=W|M7Xe5GwE|N_KH{*8*@! z;9-ilgRX@oy<_h*2gG2rp#A46VxTwM2+G|1^j0%LQQ#cPTVSD?bNGadt=xZggr8); z!U}3==@u!O-fI?{*b-FM!T9I^ZTPuX^VRPK5^3rs3C4zy&NPaF!yI#408pI)7cgYv zG}t>U0><^#u(T>JWp-x0QYmcVH67~apHbd`ul#yj{mY;VwXH<&QAZH$l%wofY3J#Y zqBaX`R_LEqP*0U&lc!cHUsrR@NANP8$nG!?Eo#fFm(dph6RltI<%NR4*tM)#u&Y}Y zyo>y%eK-tCcC&d;fzx=qfJ}%wT&KZ@hBMnXWq1o|${f5a-qk!1h6Yt;#E7Y9rCH;= z>hELBJNOIK^mF29Yo;xemMt3VHyQ|OYT#i{+B`s4lkq#>77;Wc=5W6((ERCBcyw{8 zO^F2LVOk&s+rD5CJO zxM!drZwX(cpC<*9>T6gMGL@{^Sn0uUHYo0xfd|1R!i;1y^vrrV&SN}BJLTPMt6T}X z2RXs^UHzbfDOnh1TanvNTpG8EFH^>49iHm-09@W>WQoe1U`FF|6l-vrn;L2S(OfX- za=*!n%CtkRaXqN*_=y+YvOUyk`f@sy(7C)g8Pod$sh|YBToz`S7SrR^!m4r{&zM^5 z6R&r|`KN4Kj1~wDbj*U@UB8p_)qwjVVjY!3EB+f`drH+=Us)lIkkaf|MEWs^={k;GzR*L_Gs z-@iMrler0$cZ1M^)<|X)w`u&xh}&3a;8e~0#W{soE?YOmMUd@nNQ+#K+KxOlhEV0z zT4$8}{&;lCGw}fNrEi-#(@aQ5b!TMyJ|5@eN37_;RquAGxp}HxQ zx%RWuaL}yHq=`vKM9C(9q~}net4YsB-;SGkD@Gf5ROUDdqaxMpV$KjdYICarm24mB z0ukr9W2;ql9&ht0SUtTP#4jJWsLye1X3^-A!Ffuy$=gC^uXw~z`zHyPi@C}xM6Vi0 zGHmh{L7H{2Xm0*e?pZ2cQlE$DsKrZNkLI)Z)M;Z`BeT;?PO1^%Ag|rrQ?*nwE3G@p+5=vSRQVuRqMve_ZgBy3@K?hpKRB zOI)>o`Zi5{yFynt0nk;@7B;H3x{I2wk)}R@Ua}CW@#6nA)O=*k5cZDLF%Dpm5!`B? z>7in~Qc#N#bh2HtlbTeMlYQzjQ4-C+zeL9iPoJFQupDn18aYNk5|-*3@1G zB6jBK*zC>vUO}I;x+XlWJ97RG+x)kS?j|5G<6wde)bU!~s_G=lZm@(G z)5ul$x8qCRxZjq*k$7mcAET51b`$sH9oglw*c7~J27N&!^w4HTur40}cP9&?;VOPuml2!UqKxL9uY7CZ)qo{TBz_pI4P6$t+OgR;znT8cD zDJGJABoqAGH@tkGib?ssMaB^cW^Vh$`rodQ8Tq~E#e6xEl1|}6%PKmCM`>6eqk~2L zvtBlI4|Y*noF}fE8zLRgyP%IKDVrZv_;WVM)2eQdh-ypHc)#W!E~c@`D-gSB;d#&@ zZ|Z4W9Fut*Tg4R>Cy4n*_~}AQ^OcArxT1QSG|N1j`vq$yVYPG5C5@WFo6=ls0|JYr zBCv;}LRM~Q0=CLGSA8B`g#rUlgSdGINU#IVq<<+eF4~`7cU|B3xeXGR@-5mcE4G`6 z&~7m0V%lLxCFGw0BSV9Te)`NikGv#taX8aq-XC+O*0gZZB{xdO**{4M%^^BMwlcaRnQG@{}{Q0`O7Z^}d7ZdFo z9f}D8-gdT}*-LgOWsB7jXn4Lkw z*3<7iHy}3ICyVT&Z4Uk&?4YeeK)FiVxD#vBk`!U+9sKPApN&tL26kchhsuv?AX=&| zdGU}z>3)DIUZLwvS-$~arXM-&up29!A3BJb1ACd)!O&TZCdkX!7mu)g=r$4G>(XGb z^iRKYa~SG&;O!f_+7Uq<=UT1(7)V|1J&HJ`b#n0v=6n|PuL;So&xxt=t2J@v0o+)5 z=bT=2e6XdbjI-AVP-gZ#7-%?T?+C2g?ig-D<|KjKNhbF+F_yG%EL!K;vJyHw$TjrW zp}I-#EDEUeM2R%t@8v6(cWVdWp0nhCnE9(H+z6EcZ6J&y5<2|4qrWmkg!Q4E+($tu zqWe16HE%2KC!7wo4|S)yk~^c^yS%02eNNMSzbL2NFg|q>ez#eMCdVX9I@0S=Qv|}C z-;1$yss4uUn4xk?Un0wVv&qm{Bv5)|<2DuJ5)Zgt8B9fARbPj(QV>5gBCOm~$HTft z=+S}&x>9RHRd;)CrT96*u{BN_p*~z_tBo)r#vE`rMOdg8J+?6fxu&y3$Ik$%! zC+dSPM`wi8A$a?QBA`8fbPjM(7I(xI&i6pqttv_*(piOmi>o!Hxon(c;81Vr`oR5E zHE{x&lVbjeJ+1a|ym;T9$Wcycl=HBN?1>-W(Sc;NIRT#tMt5E;DtXN{{!r?ljt zX15zmhG17^7QFmyq?L&EAZsrBE{@CsM|7Bt*H7NNqZ_tuPgGZxpqlgW)UB6iWV#za z47bPP{{5{gYTjJp%MN=>zBVI1CptEuo?3IHlM&OKgL}0j1}Gy&!RA!nH;|St7meoo zx2bzyYkCaBA{P3orbjG{XT9Bp%qTV&7YH_vc;TLz#&d(jW}@n;xZ_Y_WQEsX$|apg zas8$;85Sh18aYVXtBf?W1+UTZnA(zv(dY`UMyX^&!uDDTbY(GH3K1)rG~ecH4Q)*5cyMIJ0A}8AwS9bY%GKMbK)vbsg=wShuQI0Y-Ef;L&^KVOT#`7jlG+B9ND4#=JrHINnXu#}yu5E!ttGW=`;kqu+4pbF`GN+zG^Up|&r z9Hsn!atF@x+AC;G_49V3$*@m=E77Kr-oH`ckuLZIs;vFHDn@bJ>bzzctU`O>j=0RZ ziU!4&3!P>%ek%+5|VbEkxS+Jg>9tFZWJkQ05MZ2 z{SkvrV{R(RspXPuk~8v6tu!g-NJ&-5T!}nmf$xHN%zJ8{50z8PFSW}+lXkB3p1Hjt zrc36^sFBCubj3G~@}H)eF;(MmZ_>1Vx<5W%%pn@gvNDV|?qs7j{krd)HZoJ`dzhnJ z##b*nf$6H1~PRWHtw4{cN`+ zo@viB5H*xEH9oh+A-*@o25Tww{5nptd<*`iIc7RxC(5P9zjC$l(nk?Z_oqePw9d!r zv)a+hDWO-<%ztGB+u@uUR9HH4icT>{FIR?tZ`8hp*RAY+guV;{%C0D{f6efgM+La= zPM+nE=sV->a3KAZvU?-Rt9won0!N7RdV@U>u7VsHEEe%aU41miS}aJ)9nh@R{id@K zR_>de*Dq@}AW8cfogXV}W=xjIFQjPrd@0d}SeUODw$22!)m+nT=tGcKNnI3C)K7|b zvpUGjL~53Qo6trB7Eb5SO$K^XR&rOQv$fEOF%%4vt+pI*ajD_qLq(O*bNX|sbuOFh zu(rz{hTr4($?Sdloq+0ni7#b#KHiJ&bXq&Hzq^_h9pm2e=XCMDpO3r0XMQ! zd>n>R#f_w?CQ}fSHXcQz^V;)7RdM`*7otJjw8W?8W@`gg4p*KY*$fT+TgWU`X&1_2 zzyQ#BI|pmC72}g7K)+%nhK#bHDuCUqw?OB;oR-uN96li9t@V(IwAMw@iA&<;2r>j8@n-0)8s;o9Qwe*cwB1(G`m+=8m5_mZ zrBfDIpeQ~jS?CdDsHGBe{+&(D)idt<(qmy8IGPK1#RE1f78PHoAD<{RwMf@m8lc-z zq!@OzaJxu*1=3+F0#;WxUTf~<4bPwa31%Fupzb^vINrpw1ThbffSQi8Os6p*+v8c* zONivn8GDLi$Aqzgv4YR+gg)TYPq^F$e-Zhz^HD0YriVQ6j;`|`!CQmLD=pF1{5dQ7 zR5Bo>t9;~T^drio=E$c?xkLFRcizg^lTM&em3U|1a<*y;|1#n*@U62LPws=BTbE2o z#T1wsVjZ*(|1~>$pF3{{t6Rth?&Z?Dgi>R_&k(vRC(30M|&)OznBSWHE=80Eb$RL);&HHx^Q^I7tAIPoxh zyVB-Q>W2EnbF~isj+=j_7TnyErD3TM-vCY`KafSjvwbv)tHp&}kZz!;8(6w^&Z;#o zKM})PK;=-rG7T%k(5NE0dh5HiVQP0$vV_y?#aQQ#VJgRm@(b34K21?UB9DtT@qX2G z8$KG8LFyw^O!*81(iW1I_!ne!<&T{vzV&C=sFw$a0w)aPh{1eFs$7ixt_Z)P0~p^;zyO z;&AL_&gX4A$Tcrm{by>?J#|vh1A{Dw$FW%+Z^-jXuo`RgdU&2oTJ&_^KAHMV zdnRv5J>{de?}a?T%pnQ5=zDs1Q#^E>VG)#R$HU9d3-!5lbeE2xI@rWA<%Z8i&^G2~ z(-KE2f?Ncj(O+S)J>g%B*%Q3XoI6dHh&dEvLZ>YB$6TM<1b9$Sr4fDpf(2#@-Di{kdDW{uSnEqPk z7A~o9HF#*85yLMu3-cA;yuQMl7DeD%1j5-Vn-sQO=@t)zfL{H0gT>z+oMGDRGlkBo zXQ$?qm8tGiN7lJ{UXc_Kp!5uQwHEIF!j)gH+YqZ0bQLgZiZaz7Tx%woAya_`Oo2c4 z##fOJF0PR%mWR`+ap8gNDIf~{QL+op$)$?R&E0I&zM8~nxxJ~R-N zKGq=iQych=PefA)f~FG>lg6<=@)Bz z=gEd9N5$jQv~WC$zqxjctTD6w9caC$Y~`7-38rPNvaUbb8|BsAY+e96b{flWZr<6=Hl8*@#-?+r51;Z8mVcc*q@cWpw(r3G&V!KS7aHnU^F(O6C~3`IMp8 zYZE%Lq4*?z+&uQrL&r_~7q~3B2Y$WlsjNfqPX8&VL5J;I4W~ZZ%p)8~oTx{!);_S8{`%4?0-9!i51%pKu8Qp2x`k!q9@_~g5WC&ifOfNvc$N3ze7io4WmAz3FM!5%SBh_?2#`o#S zun<#e9+q8Q#HgmDo#G=6RH6+$&r`ec2E5;8R-2%WfkVr=3gE3l60`bN^)SdcqGh{g z5n<{09Qb)rx8l+e{cF75A%Zd$NypLBvU)iWv-fZLf2#X;Hf@F8;x6YVe)(TpXnz8) zR+{VZ$*u7Gp6l)bg_>PSi|&e!*Rr9Qmw~?jL~|^Kk6yb6yzT0DDBcL-g2HPcrf&WG z61I2~XY}7iLUK&;X#K}gRT8K(*NuUw%CrtiiUFydR;V^w6XvNg&6#E(*K8c_utSAF z>mTS75#Odk?i+s5XNG25xMrYj;PM&mJd<Wd!>Qf4jyuj~f@sHRFgDNmk&#RZ} z?q!u(vEh03PJRL-lTg3h5&>mdAElliE)t&|<*;1u*BMc$notZkTvFyXZEoszQ>&NmfM0$n??LHG2SsRmap-jwSs~ZmkJ%)qci_T zs2GW2Lktf}eEz=VF!>0n6P$B0X{txrG^qt=e7Pi^UWHFG*@{Q@IPLKlKbCa7|4sJ9 zIR^)0(MPyfLK|HSBxu5uJH!c-f>xzSTi6PVqPC%SLBJpgFJ#Oax%Ic6R?3*fW z(_5#jq2uKUjqviYi%v;}dibtU&5B{1Hi z*%te&OQ?WnK2jUTr5m;w@u7yLbKW1lm|TAhzI9q_hd>BUNCY0>J(;)RvK>-0caktu zv>k}&5!WUFX=cc{SQLT^t)@jFQYm@vN~d!9icKJ`ZCeX(k(PCqV_IM7ZaerN-=0@o zT@oVmoitA2XOfAzRR7p~4|5#5y?2SF^NOls6zL%e`KD<7Pq>~X~`zUdA4Q}&w^X~Iu%$bNosu~KtrVUvC-=2s(FT;Hp^qA zRBL7}c^fHX!544ApUJp4G1$-yX})4xyuo7yY^#);>alr;=Z>2i;Lm}2Zl6tof0nz- zd)Af92deU_B1~7D-Fz*OJDrYq3IT473s+f!klcMU>rgsRTPw(24)4 z2X+TJRCUekmQXjhl9jrR_AxCzma+aRK5`(h9)s8sukce+sYyD}Z-ApIs)7EmA@-00 zF!mKcsLjO*1pK<26GVx}6k{ua9sIlUdNhP5*3~!nU#Bq>&Px2eDD?g>4&c(iOz<$> z=x-L+Xd-m;3_O)ZzN1lhl6g65Plce|Pr9U_WjyI*g*CL%?aI3<6-f-FS$WBXm(|Hw z4E!zJTd`Ksv}mNNQ14ZCGGMEr%bvRS23F0srRFU;3ij$KPB9Yqi_sB)^{gv8Dd(aV z9TX>!z09=c(`p}w&VJ_E_iJ9HXJD967M2#q>;g{?q6-L~7JXCUY*w?D*xWv7no&f} zpu=7hUATf$FYCAu>Mk^6Eek&`I=_RS*Bn?_>t^J9(1%X3dOCHuT3f$6fWygK17Vwz zzfp!oK-3=z#Itqm{|=lyDc3+Z9+dIXR_+|uRp>x@CYSSMxygp7N5I2Zux%??Ttv%F ztKt|sh`a_`tuPOmr%}P%Fq7rk6tdJ${DEvre)!d>u?%SUwr$g1z4|L;8%tJLSispkfd#0sE&whH58Uu}lOs6#M z0=-Ez)e9FA{}ld;twb%!>xTPrb}x}=&+|&*?F`A!l})LBeIC0+tae0Xj#=BrJ;^BT zwXPsBN@lfaTJG&7uT{}Zt4c#}VL3piQPG@Vf}T`g=khm1)1d7X-VDh&s$_{uv$7b5 zEm0M_S(LQEyxgN_zEs!$`HQ}D6u`2a4kpOhm<;psob8kfJ(t{RcME{ChS&aO($74b z(5AvnFmHg(eIWcj_c|FXr*yPhh)-m|dhU$_!;+?yqC9S;*84VA;Z@Q?zKE{HEii(P z#yqGyMD}_n_0cWY6E6MY^;br@7e2($a5PXJUP0_EpF>e9xG0V>5e|*Aa6fqH|v|KMpdfNQmGQUytw27|8tIn78 z(r#hV&diyh^1dv|NEle>yUO_HSH4LsOvwgZP3aKri;tL4bGh!IlnrUmE)dp@nImE_ zKaRm<5qKA6IF6a_vYqVIw1&5LyuX@lEVKMWCdOWNYP9US9}`|brfGx{Pj3~4z45wX z>Y)eUjM_y)+Zi7#`pp!RWC;u(C9%quM`+{t!#(2&4jz0};0Cy%DNPm}{l0Spi{c1d z<7Qi0DWxXk>m0A8@sj3gNns&9BxG&kD}3Ldm??B-534#>6QiBdQk=OL8|$vj(zUWA z{!;Ynn~|nNXg?Rn-nSG_TWYI2`ZLdL`n}Mx6t}hQRz2Bgq4)`tfiE8oE7k&GCK;d{h+8Nly7sL)_wS< zK(DM>Sz;?>Tn0a3_PY#9bZfF+=ty<7JpLyUT}hfZ3;iH;uiGD)F`(Qfqg23GVt~cF zm2y5ez7!Mfb z1u4)^kQftm42pZ${lxRaX|OKmP`L*ZL_&s?*3a?^ga*goFgA!wf$~e zEoI3NB5nTDYjDE`R=PJz2DnTQ?UW9CO)oZc9r>wM z1-YnyY9;!3O*cEjX9u$r*wvk5h%;l+FW*Hal^5El39&P-V_!ePlq&895e_x^0pziS zGem6vphAXrh_V=YsF>LF8iUKCv(C~W(#kINuFi>jd7QGX7Afan=0w%l@hB0_$Ajad z77U0EwVy`DN8};~6%y-j-W6vjbv|9q3FVy#Uq)t z?e18*FE}fm=^ttj`IV#FZePP^fcUSj->q#crieD@WS@_NX5u%Yo&*N2XzY5@JxM6| zE3ll-ZCXm?C3K%up2hc9kXW>IUN#1G=2cp@8h%cataDVQ;w=s~9X9uzYal@5V`lit zPC9c7d{ypDgif&Y8(`fho?+T|EuH!Sm9Mmyr5lX-E$(|t4{MfHvXXPk5KxI5BODWY z$yee7XJ|0|13=NZUCl7gxW{r|SY&B7ypb`_Kx2zSzcv09YS}cQBb8Pg(kFzRWs8eQ z&vYAy9HVF5fL(a63r<3vGtUl!&~!K#Z=FxXe3@0_E`PM9G%Re>r?;5=p0@*t%38le zNO8@4|At=SU;I_Z4%kO^0yOfaV0)c-YG1nvr?Y)SZglC0n}?}p1gh=b1eHtO$S$Y|CK*w`T%*uB7o;V@yc$&!soN_TywJ>tTcm>NJG&%|zQ za&A99?6jFYy<1cdT7*;KnD_ogSEWNTH%lJJ>sL2s9~4{R+*U_oC0jvH#F!QxiG z$neLt|J<_i{s_HGGgL|QtmD*SWL|#K=!MF`CO!ip!_V~WhQ)!FA9Tn;*WaqPd9U_% zxI^j88(1E>mU0ioNGy83c948|5ANwbAtc>&q{_-{`<@H&1f5@&oIdK(+^|^+cvhPq2bbtxwfQ})A2F4*}of7Eo zx~wHwWG5i1apN}WLF(JP)a^)em>=A1rMMB@7Npw#rI}+~%$z9TeaP!}#l0!TTE_DErF^Ja5hKhCRL| zV5^oiHl!$Op|@}_z!+qr3MU`lAsuis271WeS*1Vbg|E46l~33GX*JJfq-6gpDQpd8 zx`6Fx0U8SLzS%AS?gB{N8Ka$E>0E~GysNV-D$vZJ2acYVh43PoJlk>W4OJ-rdPeO0 z!C%eW#3A9Ae-0|cLfs^@7q^(EH87$`KDbi;)^Vvp3k^r*IsFZBr>v71*lPOm^QHip z8n8}mf=_Wnu0Kcz+Z5R{*fH@{-tmG!WE`nOYwKH2p)FIMUUPzMR2I7+baBJwcmt+4 zko*IT6PUZBS9HUl+84!@Qo4*{IWn80CA2bytF05T75M{48jKtq5YjMJfbYk{?F?gH z)abb+t%XdX&8#KyMxeXiE`irIB;s0P0v~(S)%k4y{*dH0B=!hs(NNaL#c$Ps9O)TK z)AEOs78#?Rt6__V2`v}qG`x}o(q(*!%* zDc5XoqpU*yDrkFHayS_NfX*bUY+0=8w%0}BT+3<-@>yoCxD^_q8Z(uY%$$7 z+*+4wXQf=JklQdxR^A)lHQDNC zFQ-iOu?u6`>l$VMGhQJK=`VK`IuOM`1e2H~7YQ3VXjr@qX`A@{*4xC_^j2%Ao^Q&o zqe|KbJKnYIL?kjDhB^6*h6tWbonW_0<)DTql{B7j#|Wmy|x&C{&F>B(?4FEV%|cD45Y&pnQ;`v zq{F2C*3tKaCCn*jNour(zpFv?=I>gG2-)1_yT}NSLNBPUVC(33^ zX=M8KW(0kK(~4}%2v%jedZ|naiS2ionyZgMU3Z`mZ96}aDo`)WoWA|{Yp>p`lX&xm z0C1)b@7FK@q|e)?ZS#sCcTX-^zvo5C66wPrm|POSLOGw<6!+5rA56N-O3~T*+M%P)DKdrYoDXvI=%|7-O(HZ`ZUvhm20l4fI!HC zD?t+h@T}z&B~~G;r;A}Pk(2j$KJ(PV%nlf% z4K5LE0Jmzd=iR}$33Oqzu9`eoyVbj6fXj1YwFUm!!p%LQTg z8&u{(XJ{-$uHRD4FVMgh9j?2(nkrg$Jx)1;!MKjE3N0)`NWNR)qvX(`J5X^YnjzWl zj{e!Nu(etGBN??zXEWvpRXgcW{7(Ksr>zopLt<#Ey#Y}>hslHYJZmLm=uGVC56l^6 zgXm?#q5Q?+;S2r!x)qd!c=gn44)c4D&#_1X@8N{*hP1IxVraQk?r>{<#QzA=@N%hl zVwweLHC66Q`HH!^PNP3s@IRCqW}x?Mrp+a$5eD^z! zHb+RAnrH@}zyL(F2G?6?o^OX*X2djlW2GQyYc1ft{Hjf8ehdB1-`e;4=#r%M_2ufJ zg7;L)EO&QisELGgdLID^EDJa$p)Xj-D8ds-x>Ex)Z4djbxAiP1N|M&Lw<^>;NS3&m zY;F;C{7-}>E;a*0oDRLTC)kDA*zv`RS9Oegk2L;n<8`a0tN&X5`R9Wu9Es{)Y(ktT zdRyrRhhY02hkx8|xydaU|7TaT$y%X7D0c#lV3a`RAY>i6c=xxni)g*$;FQr92I7UZ zssqdOAL`_9Q$Go@;}4{n@N1BEm1+xts=wi_-ES0QR;1m5ei+Mi*))4^a#Gk1SCyY} zgJY`P9?@X(JdZyam))5{R$Xo2I}Qa2UGKkW}4rbVrcndcN7@5gs_R~UDI!84W) z42V3ok6}bcU?T4o9JJX&kuk9#|D&>Om~V4h)B_L%5{gvQQYqyLh94w8?@LavgtT_f zevGNU+T?XbrX4eoC14izkHRW>?gt%1C;*8P)sr9O4FR*XSbt}QFOzEY4pYsX=Z!Zr59Jva!r!>^vj^ngw zBVX3ajyC(TV|&APmkJ#G{B2280pCrn7xLbxOK-@IuYziy20ZS#;-p(E2uqev!JX>@ zzh(A%QVxZuOpll*`TaoIh>84R7gUf6JU-5W>tefh<0jt0gRc`6Mp}b%Z`sWNRe)X} zMUT(y)w7tpS3TUW7|4+!)=s}ZTcPO4B-?QD)R-~WLOW-;_cz#;IhlRol&>rHRO7=43R*$qwN_u z^ccEx_0*)V5JC9WS_#|x?tJFp3G{XNyPmIJF5e!jK3*P*n%F=63f`X{4%X97t#*g> z_^_%XAFKG*+I`-yi_{1r9|`!|KlfiIzH<51(FZPLjE*wlWmaJ<6?X}|5y8C|CxzU_ zTX4p$#T8iLBkYE_%3XPUrOAGg5z!fXDr+RIt+XG4>!)1{J*B!V2yfs{XF~Wb%oA-Ub-h6_|OF=<<#+sQ~R)T=o zp2C30OM!u-fq+1Re65cmS4{c=4qyZSA1xakK$!Fc5&)hQ4Guu~KN!>h(Fl`dX#n36 zApp?-ASB2y2U-XK+P^~)2mt3l%^w1w^j{{vv;a7`|IbaoJX!w7ph+AOzzz7PhCl&w zQUAHo;Q|PNN;~36zFm3-*Oh*?ner#9-6l!sL7>{F4>saB$wo{WsVUHJucs1zH-ydN zOmdb?$C<|;omFk9c3t$s4iAu$PJi4APDBfwA!mpD#*TH4P3HN!sC+s;PcbM^FN8@1 z_z?tCo!|$jQG9;>mRc9L+e|Pd!yRT>f*%o@hTmle{s3+9D8Ke~A#q65)%Zq#=vI)z zsF0_vON)USQ3k6#=h&cIl@#BWR=_t3llA?STIYQOo!A!tFVyS==_EZ(f+pv?SKUhY ztoM`1z2$5Fi~8j+4~^DM5nI&i*VX&PS%Skg0rNbM#!hQQCpF@vD0YMhn{+9SsrSzm zz4{F$VE0d~1U9#E>RfKn{d#A;PsNV%dAqS!*XXA8ps*1Z-4V0L1Sr!)i>I4XM~{@L zC&aBejfciEwS_LLA`OB`dqzLMY?un{c%^CX?}MSB$+YXZ=zSJ^T(u?kIomK`9L7Gq zfqW}(9>cj#^kC{j)dc0%f5@hg^5##PW88ja04pr>n&BHEoTHV$_v<#e>WulH_IbCI z%y*?*s@>N3?HtD?yYyZ4-)#}9&?1+$ShLSy!PU9>>a?|TBI9-;_aXmX5nYE%7$K9^ zY3yCDm+#M6BXd(&Obfm3UG5-AV!MSeJ?l^_qqykI3nA=gN2*8H;V?MG#@s9$&snwF z29D|qB-}i$r0RyEGb@+yD;aCmDAtcbnJy<=RP%>m(Et&BN)8e}t!w09CqS&1K-xw% zz~N9{>GFqj?d5Y(ZhhE-$Zrpof@*l&L(^q>sAfoE#t5bP_{bl+XfP(4FR6bvVk~pC z)bbmW)>K9!!izJG~)AT*akDVlq`yBc8of0J7Cy?<%M&vpv!a^>LX4yQ_Ym5a2|<6t^tI?3jeB^8&*_fu^;lPckH#B>MbDHc!ST1HxU7%wC2}rnx146FOUP z1qXm)WZDUuV?#NVaw>OvX9aqycfL2spv^?mFE%Ztx(w>tT(3k-b&$;aZanf%@&zu`o$Mm=XKzH>nX4ja+ zNoBf zLgJ7EW3x9SD2VX|5&f)hf$UfYqbTeXu5#d3Xgq*|=d0$dw7UoCOgPGWM_VoIu}=(C zUs~-Rui=fYwr<8%>Qo#4^xtOz3QGwQb_T|(1hVHIlBQ^3=z>CjJ6qhPn<^eWYkK|& z$ZEn0)k!&QvN6mbDCDx+)b>f<1VHustkSf2JR7Vgi7+hjMw$f&TTww>QZ$lKz#Abi zAiYX7Usa(cUUkh*P4NCjDb9dPaz@!j8N#-3fM9?v=UXsL&dKI1%$CC(DGIsS2>H0l z0j4&8BL1iI7ysEK#|r@h;z|Va|Lgpl-BPVEpg=${nkoqaZlD0>Byti!BEk3}2Y@4qkrY6Hz+uBoD&%5eZA{0>@q;-@j}*WM zU`fg(1!%JVU?V29F>yBFa zr3T>qiz$*{8W;l@Ac-IR>)`>QXdwR;1qo>YIG`3_N!8Q<@_*+4LBO)U%&Wiwxc^u4 z1+XL@n*VJsPYb{Sz$W?A0I2@?SAO{eg#QDeCauu`aQ~sN|3Ur!p;WX0l7Hy`I4}J} zzk(&k|BHemLj32MFp@@T0Vx0At*<+Qia{j3eaU|a4jll8D;N?0;^gdMZQ?}lZeuMk z_3sNpLqq>hnE&rK0QcW-2!s|V$@a@%^*=B2|Fnm%Ht{t+_^&OG008ozAN2orZBl-r gSY`kSNDep%2>O5dfPie0CvDJuH69hpuhSs^4~7v&9smFU diff --git a/include/sta/Sta.hh b/include/sta/Sta.hh index 9e9d1238..b1716365 100644 --- a/include/sta/Sta.hh +++ b/include/sta/Sta.hh @@ -964,6 +964,12 @@ public: const RiseFall *rf, const MinMax *min_max); + // Find the min clock period for rise/rise and fall/fall paths of a clock + // using the slack. This does NOT correctly predict min period when there + // are paths between different clocks. + float findClkMinPeriod(const Clock *clk, + bool include_port_paths); + // The following arrival/required/slack functions incrementally // update timing to the level of the vertex. They do NOT do multiple // passes required propagate arrivals around latch loops. diff --git a/search/Sta.cc b/search/Sta.cc index a8ca08fe..b1b78be2 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -67,10 +67,13 @@ #include "Genclks.hh" #include "ClkNetwork.hh" #include "Power.hh" +#include "VisitPathEnds.hh" +#include "PathExpanded.hh" namespace sta { using std::min; +using std::max; static const ClockEdge *clk_edge_wildcard = reinterpret_cast(1); @@ -3030,6 +3033,91 @@ Sta::vertexSlacks(Vertex *vertex, } } +//////////////////////////////////////////////////////////////// + +class MinPeriodEndVisitor : public PathEndVisitor +{ +public: + MinPeriodEndVisitor(const Clock *clk, + bool include_port_paths, + StaState *sta); + virtual PathEndVisitor *copy(); + virtual void visit(PathEnd *path_end); + float minPeriod() const { return min_period_; } + +private: + bool pathIsFromInputPort(PathEnd *path_end); + + const Clock *clk_; + bool include_port_paths_; + StaState *sta_; + float min_period_; +}; + +MinPeriodEndVisitor::MinPeriodEndVisitor(const Clock *clk, + bool include_port_paths, + StaState *sta) : + clk_(clk), + include_port_paths_(include_port_paths), + sta_(sta), + min_period_(0) +{ +} + +PathEndVisitor * +MinPeriodEndVisitor::copy() +{ + return new MinPeriodEndVisitor(clk_, include_port_paths_, sta_); +} + +void +MinPeriodEndVisitor::visit(PathEnd *path_end) +{ + Path *path = path_end->path(); + ClockEdge *src_edge = path_end->sourceClkEdge(sta_); + ClockEdge *tgt_edge = path_end->targetClkEdge(sta_); + if (path->minMax(sta_) == MinMax::max() + && src_edge->clock() == clk_ + && tgt_edge->clock() == clk_ + // Only consider rise/rise and fall/fall paths. + && src_edge->transition() == tgt_edge->transition() + && (include_port_paths_ + || !(path_end->isOutputDelay() + || pathIsFromInputPort(path_end)))) { + Slack slack = path_end->slack(sta_); + float period = clk_->period() - slack; + min_period_ = max(min_period_, period); + } +} + +bool +MinPeriodEndVisitor::pathIsFromInputPort(PathEnd *path_end) +{ + PathExpanded expanded(path_end->path(), sta_); + PathRef *start = expanded.startPath(); + Graph *graph = sta_->graph(); + const Pin *first_pin = start->pin(graph); + Network *network = sta_->network(); + return network->isTopLevelPort(first_pin); +} + +float +Sta::findClkMinPeriod(const Clock *clk, + bool include_port_paths) +{ + searchPreamble(); + search_->findArrivals(); + VisitPathEnds visit_ends(this); + MinPeriodEndVisitor min_period_visitor(clk, include_port_paths, this); + for (Vertex *vertex : *search_->endpoints()) { + findRequired(vertex); + visit_ends.visitPathEnds(vertex, &min_period_visitor); + } + return min_period_visitor.minPeriod(); +} + +//////////////////////////////////////////////////////////////// + void Sta::findRequired(Vertex *vertex) { diff --git a/tcl/Search.tcl b/tcl/Search.tcl index e995bfb1..1b154f4e 100644 --- a/tcl/Search.tcl +++ b/tcl/Search.tcl @@ -1075,5 +1075,34 @@ proc define_report_path_fields {} { set_report_path_field_properties "case" " " 11 0 } +################################################################ + +define_cmd_args "report_clock_min_period" \ + { [-clocks clocks] [-include_port_paths] } + +proc report_clock_min_period { args } { + parse_key_args "report_min_clock_period" args \ + keys {-clocks} flags {-include_port_paths} 0 + + if { [info exists keys(-clocks)] } { + set clks [get_clocks $keys(-clocks)] + } else { + set clks [all_clocks] + } + set include_port_paths [info exists flags(-include_port_paths)] + + foreach clk $clks { + set min_period [sta::find_clk_min_period $clk $include_port_paths] + if { $min_period == 0.0 } { + set min_period 0 + set fmax "INF" + } else { + # max frequency in MHz + set fmax [expr 1.0e-6 / $min_period] + } + puts "[get_name $clk] period_min = [sta::format_time $min_period 2] fmax = [format %.2f $fmax]" + } +} + # sta namespace end. } diff --git a/tcl/StaTcl.i b/tcl/StaTcl.i index 1364f882..f4c7b9b3 100644 --- a/tcl/StaTcl.i +++ b/tcl/StaTcl.i @@ -4702,6 +4702,15 @@ vertex_worst_slack_path(Vertex *vertex, return nullptr; } +Slack +find_clk_min_period(const Clock *clk, + bool ignore_port_paths) +{ + cmdLinkedNetwork(); + Sta *sta = Sta::sta(); + return sta->findClkMinPeriod(clk, ignore_port_paths); +} + TmpString * report_delay_calc_cmd(Edge *edge, TimingArc *arc,