From ef0180f706e5f184d3ae28de2818c72516eaec24 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Tue, 30 Oct 2018 17:50:41 +0800 Subject: [PATCH] auto commit --- notes/Java 并发.md | 2 +- notes/设计模式.md | 2 +- notes/重构.md | 2 +- pics/77931a4b-72ba-4016-827d-84b9a6845a51.png | Bin 0 -> 30720 bytes 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 pics/77931a4b-72ba-4016-827d-84b9a6845a51.png diff --git a/notes/Java 并发.md b/notes/Java 并发.md index 8b26ae91..cc2c28a9 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -766,7 +766,7 @@ run..run..run..run..run..run..run..run..run..run..end 用来控制多个线程互相等待,只有当多个线程都到达时,这些线程才会继续执行。 -和 CountdownLatch 相似,都是通过维护计数器来实现的。线程执行 await() 方法之后计数器会减 1,并进行等待,直到计数器为 0,所有调用 awati() 方法而在等待的线程才能继续执行。 +和 CountdownLatch 相似,都是通过维护计数器来实现的。线程执行 await() 方法之后计数器会减 1,并进行等待,直到计数器为 0,所有调用 await() 方法而在等待的线程才能继续执行。 CyclicBarrier 和 CountdownLatch 的一个区别是,CyclicBarrier 的计数器通过调用 reset() 方法可以循环使用,所以它才叫做循环屏障。 diff --git a/notes/设计模式.md b/notes/设计模式.md index 6d779e2f..38713e5f 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -2578,7 +2578,7 @@ public class Client { 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -
`5B7?E;nPy_5yaL9A2>CwV?Hso zcW7B#NX65Umh&BOH{BxrP#`a=$4ur-S+7ab`2NDB)2NHr-Wk<-r%t2N15^hu)M_}V z-SAur5AyRe*2ffRo*4cC$nYp-4zEY3)ZcZ$vUxPGqF$uD542Bk1Eh8moN9Tp^G7pGlg>=+A}? zO+L#B#18IC%Vhr9aAIqts%Kt|0&jEq;OlYnu1DvvRKt8HnT(oiekcj0Vf_U4N=&LQ zsIp{E2PX-a6zlA_D#|4iyRs{AkW)lK+Ns4P-b#k~j;Zy@or#q6xs-US)o9AiU9WuC zqJqkh17DNf0@qetm$zBsfgXJ$Z~WUVaFpjp2>aScDP+Xljio*Y{~N0yZ1zScWEhaX zu;wewFFR0v@FoU6#q~E$!WE)kt^(4h(zh}UO1fHIUfX$8(eWgO>SUy=mMEqY`yhgO zllpWDd3CL1N>%;dg=?^O^!G2wSR(XO_kH|XL-Lde=l*wTK>m87tibu9j&%%=#uVG$ z?5$X0E0a`EC bKS`173gcHQt{CL669 zC@|>GJ1GkR$DC8}+^6Kyk4#KPK`0z~6&>UUd&*{qy0Xlvc6kzxlhSpUr<>=pf4m?y z*1^(O(B-{W@-oU*!*Tk@owwUn{ngm*u 6j>aP+MSA g@$L7O3I3_Y9 z?IZhpHd`DYq_?M5TBI^0>UUJT-DN8Db=t@vz=v0<%YTcX{S}8)HzblsmIZ -Q;;cA(jqsuZ{LgwGZ>DVLk=tbh z1QgnL@t&MCop$gUTlb{YN%fSgE#99WvoBbs6z7u(NUSbodtiM9K!AW?6o6{C3~7+= zE3Nn3O+Dupp(4OUf{h)_DeJ4gtdWi|-+MrzI-a`EI CsSo?@+hAE{X>UvFrrAEIGJLb9(D5Vo Rf^B6%ce7ga$H Uj)Pxrsg1XO2zb5e!1DHC|n zsEO{Z7kr9B#`U$3?luZ4gp1ic0cf$0k*})wL0PUOsLN{=b^>ja#K@*ZG4J!=x?fPu z)Gm{rE`&g0V_Ms@I=7#JCvz{n49jcd^oKiy9acm5)6P(jcRofxv|#0)pCBL-c()Qu zBf1dB2YBBro@^Y3&Se5>tCC}_QOtSQNaD>A9{>rqA=;(=Za;`h=yt4T-rY5iF6|3D zrRTSz)21%$0CCJ&I{3=XD+lZ7X~Ij8i*`v)J}Y0|^)fkE+3bTR7(8BDJDl*GZnX*w z44)hcSpT&DsyMG!aOFuBmQlYjuZK`16fXwH7z08Wu*fg>?(jBg!%T ;V@KwkF8loNyMouMT(p9 zFj^6{*PBrPDyXS9=WY~`PfCSQR?<+;K;kTErdQ1jA#;V5Lj^nSy7e!&UK~R95d{FE zqa@rVwh!>2h9jVqHY?ITkLT^2LJ1N;;vUdd3O_zrp9NHu|Jtvwtw2=;l+&g?nYUVj zKa&|rDXv|*vY5i#4RZ!OBfmP(3%I2m{Bjw4^xU;Ywk(bGa=fX(my;xxy$=*i)4GK5 zG^NEUz!b+Ds(!t^+q*2lu#dG0d@cc03G``XT{j4vtFom>Amguvsy{9`P36Kev}GE9 zxjr%rYiI}sC5S15#GbQ?sEewQu(lP-8)1aer04wFxzxf)hb}Ow 1-+R4Y*uW2h_}lo=c2`yYAvzCSk? zI6D+kndV`TOjA( eKig%OX z?|1QKb7h})3E(&F1M5H%n|D*4;YRs-qHQI5%_{S}Jr-omrho#4L{(Qi>s3#&0qwMb z?fcJ)jcG#>sBf+U3UAUaLs?&+4w<7s!lFU4bANTC51H2%NIXAM?HZ+P 6HbVGwxj_nhZu!&g!!hfhtS+|INP2Xg5L1knrJ}zxX;5k(v)EEOw5uxi z5V SZl(bFO$x5i85b6fve0ma^U(@ zh+fb+F{Q=t@Yht0@FE6uJC;oTGtgRvDbTjv8_V;N`DwMA(z3U1QP9L-8lZ8yqoQ}o z%eH)U?cks`1n!ou32@Ji`N;Jb$LJ110#@hC2ke?o8gH%#VD3ulJ^t4RY5x4Cb2hXi zWDX?uKB*S%1(c<@HI28MAmO6!JQpF)&qX^4XvmBp^L9I94O*H50ZylP2xA^&r}XJC z)^xq17~mqZ7UKy7g5a+Vl2K~pqEBv8A#Xf?!?HV6_kkkgZ od1is?rTvjl4*t*y!I(BcVE MQ!V zBt3#5-EXQ>wMuorKO~##)r~n>j9(}2k|0!#Ts14})+UJRSjp(5eXId{zzZA*D4S*1 z_hN*#gU*^p1YI(W9|w{FjNLq6deG^cjqye^dXBx>Dj43{nbGK=t06|{JR%O$kX^S7 zHD+9`P%cnHF>V9r=N$L}?4@tU+x0=^N|k6;*)9e#iH)`RZ6V2|6~#6RQqf9={kGC> zZG$m^lG-ID5NvCKybsgi*u-S$n=nrG>@vLPmejDtXv*ECuV%@CMJ=Z^>=Rf;y)Cmn zuE;B;c0awJhLN7f*WUA8nuBtdzr#g4$~RFdL%QZ^*D8BshGyW)CQCnrX3Q>QIGfBk z|AM(&xTaDkwV|!@haq#h_3M=ko!|0Xx$`wyIHPI^5rpJA=Ee4>9E2G2$wT`~vQ#by zS^aaOI?82OL!h<%H~-p_Fbgz&&zE!_0F9*cpo#s3CFOH=6f-)o4DMg$uEttdQ*JCh zxH7P{5m!_3=xGzg>;3JaQg^QBbT`=lcy9(OJD6DxwIN9GyOeegC(qsXO-6|{wH7n1 zce;h*kqDmy(7{3t7MsNXa_zqo_$w|m9_SY8zovZlG=^9tRkoX}Nw3E~dPUI*b@(iX z4S>BDw%oknl7F1bj>Q#7z5NGNf)MdvxGuYXA_4R7 B!_9$hoLlQz-E7A?#7ZC?Bak9`OkGz$ zM6AmCuRP@xkUd(B-QL(g01j9;G#B9QIkG>N7q||zfVxZ+A4PfucYx!6c+kjsAh#Eb zK)j82WlgaGbP; @vXDa|0Hv+l>D1xv`0uQB= zamw!dI~6ip%I`YGuB`7MxoImtj1xV!59FoQzvX&_K b?Bk%?*1s-$hh4#4 zfrWs^sd6anULC;0Pz-5QN%LZRa192PPR5RvA5y=bD|i>Er2YHUzXKs0Tarm!U4+yk z;5MOln^0M@e(T;gt1#zIt4Bc6GZ(?*`;Qg%emVyprEX0r{v-K~wi~+~s)$?q%}+6( zN_Ck{+=ka%{cY608C~xupqTg63Yhz~0d=z-PXaAOrM!0feSAqX?OTK5J`-f^c8`mq zVQ?YTiiJIwCP5i{yjOgzUwyQiw8QqY1{6-9UCQRMzQ0*f?CWqZ<5bThr~U#R1y|UM z6)${QGr<~$I)o&{R^dDWx`5H@7VZ5Bk`chXUcwM(5Z2R<51bhaJQTFUg$l%6#O5V4 zg_
2M)#FXXQcP)Sq|$-S0j`H)qh_Sk<@*I#VI+MYrcHaofgRYt4# z!k^pDO7Ok%xDIRNc_Pn?IO(H)$}IS?9U3 24phXzO#Ry_laODa9)`u1x62!1$0pE$**5=T;shNU760RR yS)Y%c}=cit)-rs3M7y(|p|7Z3oP)PW_;H-c= zFP>=TJaR64a^D(l5htTl4O&dJN*tNOQ8BD}ztt+T8yR$GK_4TFw^EYcpV`~u2O5st zMXb6~CV+O{|H@7!rN+oraJ^XX!a99p#L6L%8ZiP%v3kZK@c8HT<&z};zBDi?d;D;8 zT+k5!(0Ied;YY~AZ)u2z9iS|i-k6c`@pzLqKDqIk%_*Bm%%=Ae$txcAzr5Sar1a2$ zYi>ZWO4DgG_PSba3wOtjy%e+>0+Fv@ZdGwnfhz_0`jtOlXZ ~AA#qVrpMIzhs@bF)v_k+KHIsHi)wD*i+Je2)uh z1(GyRnoJSgn)T1E?{ENd+{E}nvcI-H)F$`PsZI>`f%U|dn(N~h35H rNq9bk`Z--wtit !)gv;hH-8u)7p>j=wa=6DsgeHW zEiWA^J)7D%>A!Na6{HLZnC_e*IUkMmpW*v)b9SiAF_Y#)iYE0F?MX e40^$t!Y@Mf`SUO$DORm#H;afoAwOJUE3(ElmM< zJD~T%U%I4AYLZ#!!NX3H=0id${+oq{A3dy#aQ=U$#L%wS_W0%AiHr!M)<*$a4S)7S zjU{F(JEDas$M26}CtYLjP+^EZapw>S1%LZ=F3I>fo-6VU+X(vfD$YAlZ`JQ11QPVr zlV)bTVu@}ceaQJX0h0lxJ-s(w1$bw{Dr|z*-QU0X^jLt`2H4l%VbJD+RD9gMPVme> z=>n@{%+w_@<$%37#BLm8y5Ck=8cpYGZ_ttQd-myI0Qay!e5)O>2Rd(U0<@5SMo+^C z<}@dI6O-`gP?Lw6OQ|e^U+Dh*iy-ieEaiYCn2i>t22}g#Ho$!RvnIY+u!f}{0anru zNRoL{dE$;t<6o1;4S-dcV<&m#4RKXaUf=}AjPnAsqWo)CTE@_<4p`E0RDa*C4cu)N z%mU!V6k=Sl-{#wl>fXISu4?WEm}4O)IN!HV*aD>oIbWgYpM|WS&{OZ-vk1`o@Jtuw z4cLiD(9l;oX!4XMa@qfQA6T K^`Tzoert^go0qC?jXvGhNAOp!R0%yR+8EQlmuj_v!XjEH;8s8sF z;PFfF2GLPV7Z?)^1&;GuESP$;81nDST%gO&rNi_A?m0)RE+X<9mZ=y{0t+z#iv?pT z3R(`OP;c0N(vUC>;jT-Vt6=^~EEF0Cg=s!(Ulm-lr$OJ4ID3lOUJI|R$i_Py;3QP$ zQ-Lio+&w6386v6B>VG86le~ms1|5}!x?nfeRLS}J={u`C8Y6O_95t&!_qC~m24e=! z(reJHUd#aQ=Xty|P9u2P9rQExdgJxfUw*1XG6q*O-)S$@udq%1bPuhkGzTD9whM3# zFCW7iChC<*UOk5WcmnAz&n3O_JKpw32y#OWcfD0$PgQiNHLmRcJc-adm$WtuWSZUG zy;`1NRMA(#!N!H3xPvcvTU0=OSBIhF&M0W*ggH)3JOBA8{p5FG4dV}Z`CjuLowIT( z{Oi%sxaL6lFRORcY_=B&e_=h}lEmI#7tm3o&b$h>xoNe5< +3B;A=he0CHw8l{%phCBTOah376xuHIOOfb>h)6=)K^TsJ#YZ%B~k18_mz z*`KZtnpeX0d3pYrkHhcp?DrS@y(Y$mAr4GQaHK0BDtbstu71Q_1$Q3;{^?~+1kvWU z|M9j$EG)kW^vB{?T9&nnLFZWkcs4AbFU4gUt?jQ0`mXG!eDWHTSmvWJb5eOnDfRoK z%e02>`w3v-1xH-L!C}2O^6|qz?~#~$VFRTKX@@`3bYuxQ|2}2ewHFh2jrV%Hbw2n5 z;MotJ&-y5s_XgsHcL%f^JT#%lYsN=+U0Udssb%Jjfqe^tEhSHd8pOeKdV|4Jk|@B? zVfEk-a )9CDm%CD9*X+{d*|GP-2q*B zIBK$*w4;qYn?10?VldB=->w^I74(1i!U7%<4%20oY3c*w1pR{rD} {BLHk24jrd@?Bt$F7Mr(l@rjFM{1aB`99xCyekBYcBfD*YcxvYjpxXjN0l3o$Q zarho+et79^b~q*MF9lOBXj{2dVPdK{x*-8X*0YFQt@B33_qKp;k_qZ5rKC%?f3M;K zxNK(Q!#Q2$Zy$liAv7M%k{>;RehoZd25PmHIc)mQCg{m!5_p!M40Od|16QZ=b#~Vh z8dBtYYrWPZA>GAHqG#F-@WzH-SKPN>Au`0RVgm+oMKVxNDy8nO3_J9iic-*DcF(nW z9(qqj`2wJU`^>-l0{udc*TJ))^Py2y`%54D?2JKkI^%*Kq7T9{<*G{r#IctPMA$ Oy~c9SDW9UQ37v6}CFwf-)u74?7wT?m|7kxkO$d zs^;qFe=0Qw`gj||C}v?H!1GjRSY>;H#>s!56a^W;nC>E8YriG{b;Fvp&mn)>96z;< z7zJ+^!H7p{hyhX?pX&$P=l&KDAXiA!2lcxo5xu8o2o#WipbALNjGO1wW_ET M&s!Y95;9jcov3o5f{n-?1&r zyBmd0zE=x{V`Pk(V-tlz*$fvHLJxV)#TD-yb} q*q%Q z`f5RguYioDFUao*eemyci(2&~5FZ}Y2UIeKz=7Jetco}-*KG?OK@AFpdF<$$*RrPh zohsXoIuk{C&)=x42- $^4RG}9?Od1XuG?Sj7I@x$hAVuaj3bENl%c#bO&YjIN-VUORi-)0(=N;{8dy^-eU@z z;Ay*H>Lw+lovUFb6iCwNRk|2kqp}r7Ir372+DgrttHR2iEZe+d^S4SIQIQVfNo$Aw zE#OTW|9&SscP!|;wRC~_2)S$>ROGa$jvTm+R5sApywxohf>g#^uYF?{#VC _JKXP!lYR~%^FxFy=+(X4H>{t7w8DyU`v)U;$&+;iZ)Ari)I`BOUDh-Z(AHlbxQ z;H*M~Ym@*>&a<=*d=j2%esW28;wZiL0ed4!aDgjUMnaHzo0XmiRAre2^ (yZ &bjWL%PmRIQ6&+M zRR&BVqFR@Nafgrbx<9CuAP0=(X^XkPwD=-YDUkLFJf0)S3aF9Z3+TZ8DD6mL eA-H_giIf+r*nCW(_Er`HZ`3&}%&02QXd}Rry|%JExSP7@{Au@|yF8%mID+ zrN6umW3vqVs;h7MDe^kDQni|hDW#tg?JL O%YTjK-SG;eag`5O? gqO(%2?9tX!J44ZTPXoSp)v3HIvmJI>7$ZO^6Ec9s5MIi) zXTQ3vS8yycpv8ZFBu=5T7kWEF(l3!Ka5WyYb2aFxT#K5}oLRE02IaVy5uncrnz8WJ zFkTGjU!Ds`hb%A5bC6U!pD#9KU)I^XTy7Y9{P;{T#jR56&b6IG;Azy4Lw-@cc9_ym z?H14f%X@ELZ;m4eoR@85)9tzy#gzwD&ZhcHIBlewn2G_s>QlF6>K5VK{?I^ue7xxc zqh^{fBP+?V3R;f5h!-HL(H85@S-6oldY&j`u(r6c$^F|uz3|3Ic+9(rc0AsArZ{7o zxqWGRYP6SJNa$H!V-;(s<8}0xzn%_)=wEBF*~GvVR?_@fN4qxuSh|-%YuBq;8@w)M z2)}vfcPxj-w~yy9_KJ*%I#tI^pHkH}>wmm_oI2e)PmS#V-`g=qR?+XYUoB=&dYHW` z0=?vB!zVZs&IeR=hBk^%{^#yrp5P Y`*w%O+>MGm8@X+K%Oa2A=anFR z-wp_;TECU|iJ;ZU{|@$drxj>yO=e8bFEuluY3_USUjtbNsv2$F?Ve ?G;bSF=d?vS2czA|iE-dRZ36ER-VXIL z=^DHu_POHn6N8%t8XsE@kyDMX|4(~o9#3Wa@B2& Jgt2nviO85>x-J~Du0SoIe;hxz`+rt8J9Euwo-@l)M$@R_O zEg{Ii_*E8wR3cw(zE>TI8FT2K+k3v`;^{y0D|DD#8v}BkE+eTeM(qNGwL|_aWtD7) zP m3ts}0^dPSF1kV5aX=bI;(hSo{_R`6_>%fx`n^98eLP`sJ+prqusw5~OvmUV zgT?He7B |z5Y-mP?wf{%hHsr-3az@co= zV&Y8U{vd@`GuFIhgXeU`JxLdUM;(Ep?_|Kt>wr_2w=mA%sx8}+WX@k)jR6No2I5@} z=VL>hxYuUEk}I;}$tAFipuiwxNM;)}y@mo~^uhT @cpPdqI zXF62LVt+k9BuEF(uNaU%kLA j8MnLtKu)(KZQ&{cR`>_Ox$s}Cs>zdW#l}h&L3HPH1e}iX5NyDr$ z>owggZQb%vUnl>KY%@GL0AuJXJL}U;obg0zL(@OO`@jwY!6-Ux0`4X%EXy4yhZ6IG zu;a6F%9#zM4z1spk$!*R5g^zqH{ebynRS66xRs6I);h=f1H9iI4MOU23513)djAaW z_mT_~3yc2<4}mnyc>~p3ho@5tcG& @(VIhZ8qa#>bq4Eh@g=9%S2Gs10;|PeIEH;3RG0 zfs3 b{@o5+>6PQ*0ABPqPd#J5b0qh+7>75q3}abe30&~*`u^*0e| zMUbOIEtdH6qfl&iGY=jigy7!k4>_wv4{4%Oq`~H~ZCO>FAl!UgR)e&*k+L4KerB!A zjNv26GR=5Dk5?!}v;U_r_hmIoRW601{n&kb1fe5yVo4TFpRS{wF3=z9mX~grUCl^$ zkeO~8vKa^JLi>W#SU2o*jx0N}P}<>qK1($-o)bGS$|4Zq__!}V%P`FUSdeZjTeAU1 z3t|l?vxDZw>mvG?TIg(piSNB*h;=pUIwDq^)Oj|%=e}nq*n?N*ynED&FZCO`ND?uE z$WM4Q_W{#G;`yBg^jrs!{mAun+jAr8Sny~ZXG?sNr &yMSGyDf(Jq zPC%Qy8}K^hnSP+kTvzt_Nopguq}Gf~ knLuK2vStq)M+> zE&HvByc(Q-_W)^o{Ow~Q0a t7m=FLLgJg$e#n+LTWH01kE?Hnq^czOJJ`QZKve!o|huhj59 zV8~vI!1AOiy_v|FMEksC=x7+!lAn9%@I+W=@wIYrwL>yWm6lgM8QL87??N-5I@icK z`a&kvo)djKU2X)j4V^L%tmkVs=UL6CY`6^wB4}l#X6~|j&JxP_!6ZtDSzrv_2cDXo z34#cvz@3Q?+n0vUHA$sHIJBWITMH{#>XO>pmy5X3i > zs_R#jBX2T%btKB+lydJsR@*n~?UOL}O@Mxj8BN(&h+xrvkSfjpz4!v(9s{FilR9jv zSVf9(mk&3mLZ0flfqHNx9;Gdg=sPQ3En}6hUZg505Rk-4s}smW_HRWmqK=Sca{euV z!T8LnX1tQy)Uji@Q>`7BeMh$2*5BeLm6Pm{eexWu`i2!DHb=ZBXkh!d(R+Q&o7~(l z_nv5OJxiv|Ta#ju%K0+0ET@-Lb$4SJlf<5eQ$N4i_KJVzUX1v3L3yocSHWUKKv^oC z=Uiq&RF0=N5iR-3pvuG&)wDS 72IFIQP#bX<;?kG^0gx1RaQuaO! z)u4B-yZ8ntYxhqV$0* moyP!c=WDPgym2(kPF6fM=UF$A# zpWW7(iaP=OkZ#rTdb%(-joCnUntgzJnTXg<;Vv77z0Qg+w5vg1i!-$| ag{@v#V zi_&&NYuu^bF;3yAq %bT5imO!{N3t&UNwHKzIL9MXUQKcRG51 z7mfFND!z)m_Nu6Q`1Es!w3+EzQ!E}ntz1fS+YkxQwW+vxt5&yIUx;<|jiO~OXf#u| zv7_Y!Q{_Ab2^o4kNvKIhGdCr{zXIxIiCkYx^1MpUcQhs~97JbK8EUYajdAqFE^Tu~ z2BMcz1XrPj*sUrb#=KK*xXNz;6;flsny>WU<==j8 %>}MsP zLkf%UnFHgiYdVZwo!_k*{tRc@^~ !u!mwBP!oa7?G)`PH`Zbq^0+qm*syCx+}SYxh 1l9A}oMp85+MYd0i;ZutuAFe$w&rVYN%XmOFOY+oNl4PA&AN7D zlD--5s-v9sh+^0HeBr8#;z-5T8C#G^xpd!}_mqn)oF}DS5imUn=G>*j#~sGMOy()# z*X8)rB-fs}N7^aYDbbsx_PN4F0;KP4Xxdb?e_HH5=#5RH+wa&I0NX?aAIf5>`oXJq z^DA`kS4TC2IXyp!7M5RHvE+PrM=(U|t1s&Tbm$WstEMLOB-rM7?D7r}cGQv%HY?p~ zp}6DT4G#~!nDIfr 1Rs$Fdk%t(`hO%ykQX zx !`V=C3VRHdLxTLDa?%;CEce6nCs(2aYP~MR;>+3)vOS2 zFR)OkL~gR~zp-~$XMLKKj%4n`b=#StPt1EAd*C8*Jj~WXtx`jR{`*$8^5+><)}kz? z>$aTqZ9}n%v}qie472x6p_E=#>=(Zig=8Cd?rdA`E>rp KIWj2l zx0Z@ITrbG!4@b{LS}$8&APx1^+1>!YaKi%4FpA{=%wUq1v<1PP6p4Cvfg(RMve7{d zrphaUh#EC#RwDe_kS+TMW00@0T@>58R06|ygRlv=x=P&XP`3HlPx9^*>vd{fr6;%U zgqG6M4?&vMPRr< z=7SmyILqwY9)b!6Y!PD^{?zj+$eYrY_aS)m+0@F>+E|gr#GI $0V2jdE#L{xwm(3NaVHQ8T8a_BJ2OCO0<4!~1Oj5%e$O zI2Ftv=XsY>{gH&x<@rimky1Rwh~qzPC4b*+@YRqAn$<9`JeJ;Z{wArC>{s|} !MSC`;zvaob1`eyD${{?0ipNfV$Uy(7Uqm4CaR1 z=Ot36m+}YNKX&PCSAy)YS8DgR--LR6C9js&jPGde!jQX;r)vz{?DojOHJylD?%B%W zyU$ %a)9=+0>Lf2RPoAqj9ACb0|AjeBC kL%-(S|C=w%Vfm{FS^ zWZ+=Dp@(3{?=Ub-#UOxQs_XPTVXT6+{%X$yAc{wYY#Qs1 TjaR$45(SESbKV&@bTJBK6{ @sBnK=Hoqpl}Eo{{NCM$+~*R)0qQ(3A-qKr_;)8fhL7Hl*RbVYiR!yq;e!}w zG +tdIba9_rQ*mf>=DQ8)#7f^N;edr^)EFJ~S zR12LVO(MC;aXC&NI(3!0f8}rvx0$fl^;3Au9Dz1w+ >w^}wkLnH#C94(dsdT+ zX)Y8+U%i)-S+54KTmF|WpmjZTuoC~JY+b_Z9<2nSNw2LQI(G5 !Dnl!xl2k4 zvUyg4a jIo>xjRkLXCyT&jh;k280L5+(UVzqt#Ea*hUo!9*RtH% zBH4e*qnZ47#IdcwvvAB_8Rkjd{_KgMfhS- E5$whuNLa1|QIb C?D>VjVor &WZbtvds=$*AA>%$L71L1JAFimXiD zb1&_?q97}F>Rt0^s>x)$dcZuX$kn`n{*mYKnBgR5P0pcy R!z^4utSQG1MnF)0w^Jh{ zF>-fAuaGG=%kU_Dx;NqU#JFO|xE^aNNi#!ELiT%@<3lQjk{e%d2|dQ!)`Da$X~uMd zQP*9yjlI9GVB0b?{Zg=8jKE>4&?ZFUz1_w#7`ZyWOmg*e)zb0QY7N^^5Bs@= p|$rEq~IZ~5T%N@nxB z)4`svxKlwdP1R2nJJ&4O{XIoqCn863J7vKSHOH`CPVFFqbeND{0cR3X+^6Q=rst@6 zp_@t?-v&})JwCCRc!+E2L2$6=*tchHdS~f>b}%{>5%Q}8r61iV>P(vT98fF@Fa1 *7cT88v zOGfPY87@05aNDmS90PBxD(TEc*(_Q$$nMs|(%cyYoducBy!K1RnYpLmyp92gQg$%Y z5jZA6dA&b01n^JKOw%Exmu-44PljIiBCF!mxUddOx-sqMtGfN%*^ 4d;r&u~{lw$sJldgEQ);On8dDedX;WCV_vZDh@f-$X>Z9cCmZG?wfjig ^2kI^bX|EmeStEu~kd86M ;bM2#0)?AB1QX@8=pRZQASvQ0z#d7-ofF9Q+ zm1Bp=iuu5yO?Swj9O`>hs@2O|!Dv9p-!g^ySbO%26-x@d&JCOT^Jf*_jM$hYjk;EY z#Y*eOe$nOtr>gOUAGXQ4#_I?bhc8R(@%OppT;)Y8`B`qIR+YuSpgj7eV~TC~ Jo|1~Wxr$;kcwOYWw)fSMb@gAV+mvq2y@K}N zlTxOqXMvN0^x#HmXV+5^5e%S%Rb{jA1lX8t)iP@Tq|*lL;o~bh#&10AU6((ha&_un zsZjVsQ1|!d5I1b5&buDNt8CXvEk>P~7rV#?w+y;z2g6bGt^<(My9Wj~2}N~p#jWfr zo|5sQQVG^}xdeoV_?5e9Njp`cN*2<%dKpThrZ4mQVe$xnN_^CJ?O6(uI%&TXz|ETu zppqZN#HT6Xo-(?{^xLk*r#GISl~_19`NRsnvoY31I$kZX_6Sl J5ZCjJ-8M?9?6%r)&01nBk25%HIae)c-M^ywecae %$(yQo(x0#E&;258OkJ7t$b zQRv(KaDXXrbJCGc|zVEU2l4(vg z(?!Xw4|!j~@g|Vi>{+izs#5-lK=EBZ5)xY=-cP$Fnig*ySaZn$D+nhBSXLpa>F8Hi zQ`6F3KL|erHnwqp+iR|v CBw$+%umPT%E{_Z&k@MsV8rSoG>7 z^3c1tbf{QcdpdA`ABo<=JjS25_=hVPBqy{*^#X>UX#o@+YA9I$>@ZD=q9j>4)=`nq z&C4qa8b?QV@_5$s)U>e%Va5rQHalB8$?vVueCb&fA56GzVxxR-aJ&^6?ggBYoS=St zQ3=mU^3{a+R~^OUk*C$|@#txfOc&03)PHpQ (}s=8bUYBaSLO{AU5> zY%Oqo!?g_@&>p%IzfR9CDC|mwp)o@9q=(D-JiSMGk~npL1d)g4FU0s}PqaNXN(P$i z4=EX;p~8CX1?GL3BemcY&++V}k(I$zC)BTzl_xW+D&dch8S1?0gxMdqW`v8st>TXm z2lOp9?0RkK`Iz14c*lLK5gNka4c`p22eC{`kTH`~JT&g>4TP4f$mu%y;Wg?5a@yUh z9b0kf91AqO%91tRupc`+v?4+Nf_AK_x52(b&^q4FK5q@jt^u#+$LBj*ir9l`>@GEO z&Ew|GPs38tNYXbSS<}E{3H1W3X-NXc%n6mlq2jI30O;+m@MP6dp-Z>8DB&S`&b~9d zo5g%(UcK&-ssvtdUu Z0?FzWL=#rOZVm+jI^=o9%b%E zma!G=OUOv4I U*P}_j~1wxMM8zbva zamO2O+$jsL ;z(cM&Oqh)=euv zy7amflU`m Rm!EO0o!f2>5a zi!kcy-=_<4bpD{?6}->Z)=Q_oa<>mZRe7T+iY@=_mCj##GA+0nzy34bFBcX}HAsn! zs8{4_Z_f}0 (=^2${pdG~$f@3JYEnSWp)bBbsze ^pBX^bM&X;f``4|NZ~tlRCxN qnsyHlguWmxGFEZGaj5$=FKDSfSG5TF@Av=znoscG@Be@O`~R=g