From b254d582e4c57c7ebe2ab42c0331a657426dce1e Mon Sep 17 00:00:00 2001 From: ehlxr Date: Thu, 11 May 2017 09:25:00 +0800 Subject: [PATCH] update --- resources/idea/mac-settings.jar | Bin 0 -> 70812 bytes src/main/java/osc/git/eh3/Rename.java | 49 +++++++++ .../osc/git/eh3/cache/TestFutureCahe.java | 96 ++++++++++++++++++ .../java/osc/git/eh3/test/TestReference.java | 52 ++++++++++ 4 files changed, 197 insertions(+) create mode 100644 resources/idea/mac-settings.jar create mode 100644 src/main/java/osc/git/eh3/Rename.java create mode 100644 src/main/java/osc/git/eh3/cache/TestFutureCahe.java create mode 100644 src/main/java/osc/git/eh3/test/TestReference.java diff --git a/resources/idea/mac-settings.jar b/resources/idea/mac-settings.jar new file mode 100644 index 0000000000000000000000000000000000000000..0d958ea00a771477495578a0802c8a5c9c522c14 GIT binary patch literal 70812 zcmb@tbyODIwmnRDcY^}b-Hm{BH%NDPr*sR_-O}CC-QC^YD4pK}?>Xn{d(S!d_s8cL zkHdi*Tru}rbIrAtl>h}p1A>Br0+Q1V5C{707b4)#);12N)>ig(PWtw=E|wM}v2qe! z^hkYcPiWtd9ibJFXyow9>_HtTId4?;+?IR~NJ$PJ?~NLqIExT{D}wyFPBWSa-@VXV zg-83k7hc?xgeH#1O+f7vZ=-AUI8PeOe!POg7^FyEY;vK3leetPcWR7qm=xrwFDir# zh#qAV6BV=#-dXnXgfqSl=+dfHvaQ)DLbwpWPpJrY(xdr?3YO7+A3lo^Uwa6v2?Bk^ zp51o2BxRA}rNDHLI+yWfZWT8{)(uE1635Mb$Ztr2k-d#bS7w#8(dz)t(s!%Nv9S&W ziU{WWQ8bifa$@MY>I&aGrbh3Xa4*(lMj@h)E}N{XrX-eJIc#H7C5giXlLVS35AnFP z?Gq55LG30-UD7J8P;AS%Y>;Q9WsMO@GDcyWyxz1J)fS53d0V#0-y`cySKrh8up4Jd zoG5SWf|Qkjgo;cTLH-B~1VjY}1SI>f=%-pp{}Fw>-=c4z>!7QrYj3Dv=-^;#W&DH&mkQFusNvR3YFLcYzJFNbp*b=%G<%4SrfWOn z3QG64)1M^Sj52Zba^Z)Hs9{!z1{boW7)_-@@E9$H0^`qKEm6>c@>TVta-^;U5f3!p z2mbaW5Y#KSbo4qcnp6f;)mO8^WgDp+*JDt5YxLZZ@U{Sv+hA?1yrE)bDA>|%URj^@ zI2_T=W4ycY=14nF%l!k|4R$2I@fAryz0s3{X~Ne#{As8^@6ux{BnG+qYr=mZvz5}g+p^>hmg~RJDI8m3d&tXSuJuBDIv|pr5 zAz^ZrjEkXxU_uDdHcZXk6&fH~B4NxXvDx%)qiIhJf_Dm>K7MCEkUMj){-jthit9>X zOTEoC-Et=py@;XdHr-Q3_roNl9G6%)qjKlwTi9+Q3mBr!f=eLCW?vYxZJ!akmotDOxo*L^8T$9cj79?RvZZM36eK?_(0_izsQ!~l{08wUHk zc<@Ai=FfdL-Y*X_N7$vZ5Jr$=;Z=s{k)M$ElqBti56m=sdT4}-#)Qs4qmPAYdmiqU z!0%8J*X?u%xTh@|_J3#)`G^Sm(7H8xrcm4Ep^XRVUZU_2t2z!S}6oH*i+SmF1 z!@NbC4`^?I;GBBoH~Qd;#Op{bw?olQ1F#{zWLq4gdDK`r z=Rj|h<|zUbIOS}IK2z4SNPaOW9|K8UTPJ~J^Arz3!}xX-xS=aB4PK{3?5mQf!S9(6;W%GeUql19b zL}ne{+d3XS!IZfpb+8zX z$C(r`q_d%IUzYE3oj=qM*tVhX-ND_I<~duFK|jpFTu)Tw7q<;(xXCQ_CNSavD<$oB zeZ(>{5+U^dmj9J1=e$C%J81rz+_t21Yc6^b_!5@m{Wa$FC@-u5oKy3=EwViP+2s-g z!ogLKe|*$(-0sASF)1e}kHGL4nx^)kib4@fWf@H{qq!*KAi*RdRur zEQ0@#xsW4wAC27ST2p;X-Ly%V0^*EV7DGphd?FLzS@`i8GmBY%+WmX664@q$80>*F z*RkR+DQ0~=1n*!235Vsoh^!Kl?uTUbPkT2*0^akk`=&EW8-CHnCLDqay@#cy1zq3b zy>t$Sfb2e9=&`rVxRUu`0io{ek?s)r2taxi)S8lhg27OIK86$B!r zp(P0WlG#9el~Yb1mtir>V@y#ru)8(bvolj4vz!nom`j&+&{g8+xg8bWVADP5RSzpR z@yj@2oZ|gJe`X%%iO4iWkb}78mGxd3plVf70 z@Sj#unm$+)#Vp7%mJ@LNG~quexYicvc-RNrPpH)Ijix8pQtQh2OVKu_uthkD(-%)U zZyu+hp`XUsH>xi!My?nFS*fwcwnVfaxB_ioH;Q{T5>$?@xK7Sw!fUG zY_B>9ARs)F-`n5csmCAfPuEV@($K-sj@HD~%Hc2OA=hEnMGx0I%BW zq4$~SB;tJnF{8recbvPb3;gyvAD9GeRRK!=OO^BYH9^2dkb>;%c${%QpSY|jFJ@?Z zI+4^pp-uTUD+v3u^JpQT?uo^3zdhOtuZdLXIB@AC1_gCHw3g=Y(Aha2oFI^u6{l55 z*M~cHNLUi8qdv+P?rJ;l@Y+_H+Q!67_NqS=-v%1I3*JkjZ>Wl88(~UXJ5O#qNZL($ zaWYKau|Itc*%_h{{ULx46aiSne`aggzcB`VYYS^Tds=&a6GKbGSH2)M`Vpp+9w}hM zQwG`2M~es}H-czhIG9!=fT0&B(Li7kW_1bzK4YoReUNIb6;+>p>tr4>C zlI`6&(@uQU&uKybi5-2>ezs;i@y}|QKr%ahW{dIsu|B8>xj+jwEPsziceqxchjR6DLHFud;n28IG{Ed$z~_G)d$70r zg9;J+;h2FTt-XV*1>pBL=icB@Ek;e=KOiYhJup00y(KSOAvQWj(?2FLLM7KPF)UT9 zWH%}!22Wc!ECw$}?Q|_(Qxg&WQ5rDNe7Z?}KM1S=w$zT`=x6fD-KX#&1uMFeg-JSg zDMr*1Tpp%mkI(ywOeIzxms>6P(L)6-E>bfTuFkixOW_BEV8KcUwN2>`Ua}s;NH@n8 zafYu$3Yb?{Mcgg0HKO5!LQ4KGPqmWxiuP@q%lRM#h9#C47g(h3!p*qpQGAtcq0&u= z?^1Zz?+yZ;h4naS0n~}DDr|Fq%nuY7Ig=42-1{JGTi)plCSRh z!m9n6d}D=8=}SOZgh2jEJ`4~L6cA97q4OVsg9V(hbu`sCw=lJLum_;#pQGZ$--ean zM@3`PHBcFwzoPDi)K2F_m4oyHPU0;Vkh#$V^%L~WTRdZhNXJ2W-_>shxA(?$7Qm=AIgIg8_3 z#l*zT0W#i>#Z3K#c#gK~^(u$Wh*nRW$ zmD&6;!I6KOTzaNU;d&e(OKp5)(iQQkR?MT$J9Ml?z6Mw=%Z%|EPb4?RuBj@eF%bT- z@o_a{^|LvtU91U@5aEmBqUR^~Et#-wYSTc^9Z5_N1X}ajfe2L`dah0U8NRjvTlD_V znMtzCC~%q8Y`wrg#s_uh<2ABMTP<^Ht52Z%GGm<_J4>AJn5z>aJThY%q;t`~_IZZ9 z7?zNW51T4t9}u%@Lvf^y?y*&e9XuVM_H7=XUN3FhUH^&|t-S1?B3sjsec^Y@thL=N zz0nzvTZ|R2utx4Mx0kW&I&v|E=(TfZpSbm~F^Kk`DzU}m zK?~k4+z>&T+{_)6m%H7eW`u$X)60wFRB~T@A+^@Kp!G97NbWDU-qc3xI-c&oe5(=^gGwA zzF1g(PtR^0dcR^gdnYD-&!+kE20XPI(=V)m%XNeDdv*PLr~SP$iCH-qT3DD$>RK7U zLa#@0!mN`X&GUw;k^8`J2F9;?=BvQ(6vR4ER#m775(>(ct>05r;e*HG4NaQ5 zE-Kt7j+=1vCqmTlb+_N?R8?GkK|+&TZ@15-Z*Q?37pw-_+F;8bMNuK|`i@4WqAp0Q zAfA%uw_J*^g+u@zn+>I1&ZXCTE~yzsx&kWbnzJGfmt-~xv7{YwXju&@)6_P9ELY-#ocHiRt5*A{*qIp4S_wtR^ zhn2oB5U5mwYLgZ}GCHXR@tHzs8k15a3#x|KU_TUE`Lr!;1Hh0BtzHGQ z--Q~_s4+nIhwDA#{WK4I37$tEn7w&UkEkVxX`Ce`jv3V2LIZb^9fTL{(e`*}7Cylh zcIeMW^<_~!xU(B3+-G*ihlT9N(z`9uLNcYkEk$(4*`{x#a{6HgAInw-EHaQ?zgPy} z`@()jPh8_)y2(RNr=U>1h~@{sej3;|d5#uIok+cs9yo3e8yAN{99bI%!#~i3FqwF0 zV;cMcnLhYaKJmS}Z{q%LI;=`cBvp!%Wh;$4=xdKCAkXNo1$f8*UzyMErQbr==#B4u zl|b;LhZDLd_tU^8^R;=&`&6VlqPOaSV#YFJqV9ngEKh4rL%Z5v zImpA!(6+8>0IS`G8kkh2yJk%`fm*WKExA?_bDp(~onEoi)gGzfE|+<`6#VkdR`lY2 z{mo9WBB*n7fSr+m&ufeN_q`18RUijLOB)Ma2gBc68H;?-ANl;f7dYDM8XGE`8alsv z6*s;H<41%QwDGGA&-U(J}GN9qZ=x2t=Kw6}aXn(z=&|m4(Ff5cg>;rJ?hfV3k=N)$8w1%4P>_7e$Aj zeU5!`qGpVJiF|xx`5Z<$x_JP1?fyudhkw`~j{ZSe9qk>gElu5YU%~rUeWDp;0K6#R z<{4(lU4Q>rS>U8o78=;yktP4K;G`O_N&fbVz0i*{7gSHjqxFm@EkjxmDjtqRuT2dq z3%;qHz!QZ4ugq`){?31P(pZpi-oQ-q6ou;^M{~qUQN{>qC50mkltU=4g4GUT6NEJ( zmqwdjAWUA?`3ti45SqPfLy_R2;6{9;JlN?zOo^GY7;KcZf~tYEe8Iv3L4TODk-NW3 zWTE~=a!Wz+njmbplgsc4O}p;-^jD3S!cT;SAs87lBo}Ev) zAKkf78-tieE4?Yji!eAcURl$>ahV*fx%za)T`4~|Kw^p7dX7CPC&*_O_L7ESJf z{MFGAgI(zW{}?Uc^FK^*`)}ru{bzH2x4=x-N%#K;8~)$p2$*24bS?f%@c(zV%oq*- z%GO`&kqckzKLY=I;diiBaIga?^Z$ayUuEzk0-*4Nop}btp%w&r5S^elj3cUcl)mSv z1E)PB%R=95w*=aLzMXCMR8w_c43oaaxM>SLI-l2&0Jo zI-{aTOcDr=VYa1B)bvzu)htyu|3p88;+shlPMeM`?5~>45L(DgE_t#1C_Je^O`2t{ ziva|Vj3REKp+h^J`{N)9B9C7B+|H^@=Y56g7nmQ?s&FxAKO;;WsG`^9tK+Dou4?zR zWn_3?ydEx|2JFw%E=EitkTHN1LQ&%BIv94vg?j9>6Z67hh}c0WNYGNdV4;vKCrA;t zqe(zKHYFJ^l|G2GQ%2>z6AO)_Gi7D7q`O?Ew*m3SP&FEnw53YK!S!Ha(@qo?DA+U^ z6PV(s9#Gh6o?$O;&pbCktdDoat3I*!jn)tyZd$ECYxnP_4@6HkhGL%Q9>Pjkk1keH z{OKOZ+P75ceCcaRe|9zf)03*gm}!mR!r`#)Yh&5&0m7p({7nhQDSW5*2_zp*0HOSR zo3+xMKaT^xH_5T|xZ5GS^M!-XnhkfOsW?*BAgMpo0Q+rcT+fz&!QgqB(ha9sQ0tj` z+1~JVKb<)_uov@wVLZ@tPT=?D&+AImxuK!WR^@S(P=54y^X7bRm^=;NoOOCOIF(=- zQ?0Dl1E;>xeZEl~ImJ@)`N1jQUb!eDiO&%r%MIOWeO@#t*yog1hzgd@rd*kS%^R|7 zh71j{!S}H4#jbvB1pzR3t@N0o@%<6L?t8{E>AMMWRjJbP8I+dZC8699pygXjCH;xUDMr!i*AT$VzwvI@TnjS2xMM#VDJ33<0c)$0%sT&w0 zM%Az#;641B@ft5!O*XFg=F!MbEB>~G(z4Yf?KuNhvrE6}A{9!UZHZwnHN)Db*m9(# zyj{LpB>pHuYXUa7mPcHgkFWsJRX2HLS!*Yyq0>L1<|mUG6(gQ+aj=QtU#biuVVNdw z3Gtm#DkZ758B`smwStQOLJKjJ$%%uaChTWA9Y|^RW*KV8Xe@5HHp>*%k1l2Sg2`+h z!uJ)P2MFU?J~d28KF>1D+QJ7v35hQe~EHaQ=Sk_4fbs)F*ulQyY6jB7JKc*VmGj7T@s| zaQg$#JYm8fSVyiW#RtTfnB|nsicMnj_Cm0AaQtYNzPLOrA}NK$QzzmwGW~jDdahJU ztsMAR2~+z{jXKA*8>ZhDyYvTikRb#1v#NMtkXyE*f2q@r|lakMVaf z+w&v$>DI%K;uk@os+i+JQR9h8 z&R)CnFNuF)XiG&^VN?NmawF}Jr6X#~h zPJaB+x%_5XY9YdP2Q2dxdP&~nfXIbVQaHrWg+@nXQ);l~T3vT@69JX8*`uOS-hb^& zhPlegAc-gH&#be+W*4SD(mrAn-z|nTA+Na579?zn~A;ujzjJhWlCwI0J9;@+8yO7x+}=bW%p~s8zKSL zQld94v%?67bN*}WnNX7a#1)DQ%|yy!nA#2M^(Epfz|!-gDz5-^F#`Jc=Kgo+5dH=o zDP4Uc83iI$A_jVG7VUo_=zFY`3LLbS8O^uzq z+UltZ!u77ZK3AvRxUPPP!9Tf(8ia#!(2Bti%L1ZOzzh4XcwQ6ejHPvDP4`jG2`Ne} zDBfEubO5|vloA1Kd_q;St1>FwUM*@W+)L14wI-sV#Hh>R+)AvmU=P)<#4a$+Dcyae z$ynrJoaj@$4Y7{w1|->YMiKvu(H%@0w#FdH$>0Pe<+DinQL+}3AVGdFw@~uH9fnKB zKE5C+g*l16rA@pn{f}qg#CWtFh%s)jtRLQcxk}J=h410J>hii8r%R$u$2mfhjND8OsEy&p(x`fwe$f+A3vIY4sxgqcOGYgCGs3a;x=D*$Dm zQ!Jl8iR3$e)|!Ynpnq)e!g9XvCl`wg3(m=ejk?6e1cFFjD!5(kN=$MK z5+{KU+FVKAwOlE&y-Hxp9G7S_wxAngE)U46#8rJPo&MD{Tl0lC^=YPdbEJGC-elKnV3tf&T;Vg zWacABxTa)!<86$~v(JVf6))XxN1Yqk3hsGAvp98vG7W?5QS@m_8R?Ux#P)%~*!)w% z1itpxG-C6Mt*9=ryNEeoN^_L)CD+a6kV@Ho$aajcY(}d=3p41Fz|38uCbNkj6{)h*wH6Gkjv}@qaq7sg7?JhGix6=O7KzB*7ahq@s^BR#X5WV+V05?bhaQYvn zUimk17tl(6kH|k9eRZ;044~LY(7mbkO8?OC#iS&tM=0dv$Lm4gm}VAmBpMOmC%o{$?}KtZm3iWD)UNm3(N^#?tLWwvimz1czYwwuARBeuI5FNy4CN6=GpVH zh!jzV;i7r(p#ued)1Z4l<{9{CRH#j+a4n)0T+nvIl~zX$Bv2kCM^N<9wHh7hL}DTT zBKt`=S|?r{3NxBoo*MDBx(aNyjp})ps>}_nRL=AmO5J|NtD44x0(`Do?<8rJfP-{p z0op?aYGidZR{=VVX?5R^cwia^JFUK!Y^>xMl@$Ff=JM+9`QQ^GB4L-|Y8)1sMB~`4 z*}KPLq!n%0>?WZ`wUATJvo~=bIGC^O3=lcbKk_#jr}9U{e&5U(8kjm*+tI!P+|
kU;m-#FuZ3a$Z;xj1u2_t#TW0~YguL{TZ&rE+cRl$vpj1^ZFw zv6j6kQKvL3)=8GxW^S;LHI0;1pSMTySeK3yJSaMuFN(TcB^Xsy)NOZU?h@fN{G|rp0^J9W zo+x7ZU@UraENZMx6L6913y1;6pC2Y+^gG70fto4b{aW4pc}@|AIw<#bHH)8vl+?JB zu8WCWzB%33j|5o>_@_z@f36;CzEE}LLNO1SeC;fpB`ERLT>au&=|gNF9~W`Rm`(qe znCPcI7m7%`3aQevmKDvph#7UKmd>iD0z8b8uX%X2V`g{yy+ zU%UxQ-k(g7m;tdT|KpL+-?iJ{5o=@NXl!bw?P&Vf_4z**Vle#_Qe(rvq=qFVWoYb1 z$0UX%>1f0y2gQ^?C?L)H0V}b9A_RCF!2BI?a~bAr=Wy+W_!IHUUhc1@n0P!|T;AI@ zY$9k$|7{xv^>!z1_{3ry0l0bH>iy5X|GV93WD+{VuYkfsCo&kKDDgg4*|L?t7hPZa_ox8aI?1mM36FAUw6I^7ISq*@(v zrhH6MliFe@AMNg=^4e^T*?gHnc&%bIur7Q)09$kZ;mu!l{qHL(z%m=i;cvC&?;iiI zbXn>;83N>4J10~9zv@dw6vOM3{>ho-RMwGfRc;?Xk=-X`IhryeXTEg*#8f<>kqFDO z<>m5z!?Gfl{{*?G-v%DBEC+Gs)E;b!;PPTGHpoPT7rG>Yfd%Yd8o&Ot3Z zpBfa<;FjY!F?g8443zrKTjuOf=)MsXUe^!D`Sil(%vI2>r9iO=v=B1s9XUC|cmxb2 zy~j&9b^fzKQmycewWN8R8z4N~LJ zHWx+sft)IgqBA0NWhNU#XAD<-D>ta!O|$(K^%*>8`z9gI19Dzj+-k}btD`K!nP3?tIj3y(5sI2rQ^xm@ zzEr&jgM`%l`bdP#QOhRfT2GCHkC#_IJeNUTX|g!4^&SOGZiZS?LGZ*+op#-hKU~br zIMa-#w=Rha-l{0Iaju;P=+|UdX25$aT_=3*u6sLr-ya%gFGU~I7WC*eVE1!rc6<8W zAgUF>i{=Z#49zh7MT9p(l+apt80<1DzsmSGzVG*2j62IlGCYGki$o6K+0oCV(Z*fu z!ar-#3{JsjY?*B@5>fqf1Z6FmqGHTUA(3p~v5A{3_bnzI!8dMNV!mEqVs*iWO61!9 zTPKXe^0fU`MGdZ)^)15&n=huGBvup6;I{_pNly^%1cYPB1sm1U)NiAn^l^ApFFTWY z(VT@ms`|ifTp$j`4YKZ1I=SB6Zf!x{xDUsjI2STY`cQP|9R;M5N_V|Q_dY&1E|&^l zJ&1>V<>Y(W-Vc1zFu=b45^|J{W*e$_jFl*H(s+CJU|N~_ypiD$jjll1OPcoKQdtt~ zPK+;b%UM4(1hWlUBm4scdc7EDs2IoMR*PmUxQyL1OjuZ|tuHFOlKx`&Adp4Rq=>A zsLhTMb+TD}8(ib3G#L)GR%>|q3+z3q3+p=A7C(6xG1WN;*{=|N)*ynys9_?*b8K*P zKcjj6z>`A?2nu`TdxhJC&`)=IfZRI^{@*wZpzge>vTuy!O+frh4+MAmlbQn-egC?M zfJR_p^|lL%h?y`0^x(j=2eeJl5>1u)2&&uDZ_D^2!E_u8KA_T5quvt1KgD_IjMJq~+M8A3r0= zVM~GskdrE;>d|9drOQX@c%C(}YjVwO=~bS$+^s-7RB*AWp+QSQtb&uK0JmvGupr@a zid0$r8gsZ~4-_h(PKx@zIkurIi3fUSB$r5q!bKGetOz!UolIceR<^^l8Up=ZUf`VI zo?JTN0ZmW5*K8h!DI{8wjO3djnD3gTeFX!9egH&_WRgl1{`X+9x|5&G@p{1J7eq6a zsSp|n%e_Mcu3qX9^tT^soY?SJd?`>+n8uz9s4V7CaaapdN_+*Jk`mX8&0QoelL~3%nuV4bB^x{ko(;HPJa9b?$o|sD8C;zP4FP6U06zbj5x>qM0E%V#5B@X*xN;8;HRrO6)^y@&#K8^7(DdFU;ip z(>u!dz^0j1-Kp{hmiP0q_uFJ-yX`Ztgu)knai91{7s4Bp_>kX#uMIFD4)FQUOyYM2 zYGA16Xlx9q#dd~PfEB|(g5RUK@{0ae!ejhyOq+UeHqjA^5z#Fp#wD$Q@w^ z96cQ};=Fy{v(w>h(%C`drZK9TBN>eP+^;4KjNWeOR1My1jSs!o`1n3pk7A#E7w>(K z-UOXu!rte!Yc+zL0)_b9rWRAec@|UyaFyC>bJ`nkU(L$~PfQwgu~;MD&fP&59MpXL za|_l$WoXbsj?WA;Lr{Kox2x9$8ndKE&SMCkqTz|C6j#11g+m?C*yW^yl1eKqhlb6w zc2v_SXkpuE%Hr(Gh^gXI^rP&Z_TnhB^D-!%wt{C_2w!E#wUBs28eHbg9v~VI4s=Xf zBw?^zKrTBoy2JO%8(^4mA0J-EM6on5G1I%&oywoyQbM_jgen5K2Rnc01HP$$E+u}a zI#$*WrbedvZ#%ue9_~fGy+iwS!_yPh;zVc4wka^)H~|VbQUej46qP%^_PK-z%k z^6Poe9Ij&lqZ+*o7HB0Dv9lW+i$|&Gn?)0%4ce&%U-y+PEHB?V#24N{q|rQi6%S;> zF9FU3*zSx--De_aXjmz}T?f1YJ>KThFp~-p#u%jP**-iu_@wt-Fu(AFO{zp)=9$4A*h0Q{)_-~xZYCBLsS0Qa6o&(7M} z{vY6ToLn&nJl+91zxntAxphN)9}j2xjtT+Zp`iiMoKR-cl!c_uwwdMOEWg&CY5wPX zhyBZ@sXm-O+cogirmVIf_ljso^mx5l`Chbc+~baSagTeZEtBr%Cwo^mcNLWff(w6t9}cN71>BaUL5*~=<&b^4@nv3A7u5y)aPvZ>pN}O z%!^LVDy|4zE*zX9GxWGESa-X^gl4}61Qfin0-ffG?A}lCN*h6 zG`$Y9sT%Usa#Da-x4(jOJR#eXR8td>x!8Mb-46SjAAA1m3hAb222hfe=6vf$xzJ-) zzhvuEU`zJ2WRZZuej%fM15yD84@}v|R^Sz?tr(jZ;e2xMBOawwb5j`t=~{m3KY+dw zX_Sq}&F~M0p-js7_#N%1X|~V$k7;FlbDqzGr}s&D>ATsy5f8fentBJBUTzK6i;bE^ zB`So3w0%c2YcCg=uT7Q0CRXru@tpRLJ?dZ0^6zWnrv;ySF5rM+A`j`G!EGon^? zRQiaFBVAc@xt66fYL<0GCr! zSNoLQ$me(+X=r`9s=PVJ$rh9KD**zf)ZB7~QTg;J{4HHH)btPepkF(qEW}WdAX{J^ z_j3beY1p?g_Qb>8ua-Nos#$fX_s)ioHeg$EE72D_QIi53pFg41OSaB}i zwKCnOFaVW;mRRlXHcsbyPHTM&EAax22{r)8#eWoB;LnPGs4%~?zQ49A|4-ofDP1}& zMScF41RxJW0Zb_lzzMZP#2CcTNA&v-AE<62sf5U}aQ2hTs7UrO6<_E5k?9~@v)9C1 z5WiVyfid${50G^4KNA1<$BnLYY3K+LomMl0OgpsXC2ff^9oJ1 zF;NnJDl-m_aeI6@F)4esm4W1Q4d;1AK=eJLxlfXn!#Nl&ausCeDi$mvK@ z{1PW29Ap{E%OfdXy{#LZW0iTa~R=Q$Z^w<*n!7mpES%}qZ8k5 zDNdjGC_dE{R|%%m@E%M~0L!IAciaRUxF-AGS4@4BU-d!0p+XeRYFUS|%3vB+!)l#k zMGjnBv3@NvrP6nj)c~Kt|Ir%$y)pm^IPuq0?B7_HaG=y5>HACVeSNP@r_JvO=p5QY zx_0`G7P_>i`WE&P(f<xZc>7HgHS&aeZf+&``5n>>5n z(JFgW%%25L=GDeVXI6Q-&U!|10dzP#nIYn>#_H8ch(=K8} zX|=g4KGzc{;#zUI5Qf7NWXolt__{*f$D6XNN*Yh}9j;Yj@r7^6Y^^2EaIIW}50k0I z8((P4w6z+!?xe*%Q{6rD-PM=3r9<$wmbZCIWl)wcWbjp$AC*IjviICP>G2}we_q_K z$0%Y;8PSgw*;v7j22UVAt!`?T0iOrnZ^?!GG5hkf4Ikwf z&U1K?4A1zb9U?4*gbokhh*g^1jWeF*)4Jr^#mc^%hnrtJNKf%_XyI0I%+g_S8kl#d-k@wMEI@935(~rAGXuv?-G36{X3oR_WGGJRz+Yucg`&6 zI#>x_ZXc`>w+RQPrncs0v}NvegSJ;Jc;O+$CE)!QN-j<7R9t=qyA^nhP;q##dGrm? zd8~e@pmV=+_wpXY#?kg#RFHU(h@Pohystk~jH{H!czJKsNtB9Nx@Ur$QY{GnZLUP~iohYbafkF*M2ed8^p z|LKe!i;_|}ho2_!`tWMU8r#_vEp(%TX8YWi7MW`CM|=wdMfR0U6kTd z6-`S5JD8Zxka1#?XJ%N~3)o%5byzu#6Jaum#eB3m2OJrRc{1w=&zz-WbG;-3wm}(h z$;tf3iFJZ9{${QS%RyDkR%0AM?rpe%j@zyBGf32rScB2YH!L#GQ(ut1(j~hVN+eH* zF$O(Dcf%%YWqE)3@j8lm&q#5hV?vCMJkfjQ!yWeN;DDb|?$;||j3krQ2;K#)>sQUDE+yqOOS?vk{rg-8W9?ilRZtBGAzNJEYyXxu2qwg zRx>k^YZQZyPdlxhLd32$Oa}W!(eW3F_L1JN6dZEw6Qj1cd?ZE)ZQn`?Sx(b<1L#D+ zS4WJBp85OdvDC=%j~tC>4nFQTWI$-Q8(a?Y(KB|ACq_9aWvM*PKb`Q zv^}DQOF}nwKAT!{*~lY>xx>bAduXXJM@&R!h?4+>uid#p|7;*FIm?fKBZ(Lr#Vo<( zDX=@$lUZ=tM&r8QFx}R6!m8M@cPSq2?u0PWgVZ63vBiq5TNvSlzsG0sMASo`z^x zAJxj$vUHj$(cQ=2;|)=b6IbvhFEz$#aoi8pQyY<_1bnq&7tj(|(T?r7F(^X?s6rbvW16d!WzJ!YLBW$M&+O7J4$!R#4 z`RRXc$*$$fP8fUvGFZkxpt)b8NDL(ngB#!b)e{gDX7s_#5=;_yzf*+1H_ z0C721-4n{)-@*`@USJs0Z4j&8L>U}R<{r6=3jKQ?j=#jGek3HJLlN0F3Jx7K_~iXC zr@|(uFwDAv%=Bdf)J=$Eiq<%V@aiB(2B4o|YxNT_VZskhgD)*dV@JBia9X}5OuMb}+GhsN zQ_4UnvM`xe-zqXQC9jSd;2`*d4hLw*@8-Bh@zMg5^`lU}2Nqq10NW2?t&G^@+rwW)AU zk`SSOEaU{mM$C;;k#_L|A*hXH@=BhTaFGXB^Y_Ns+N5{jt>P(1Mnz-`dl@X~1eVF} ziosT=q7a1>=c$r4NjwvH z!6Q}9x@_5%o}YxBTWY+e6Eb`cZtWoNZQ?U$&So4D9a24Kv4E!5>rC2c#`;toa}m;l z)oXFwDA=z)UG&i<=1-g&%S39oy&wutJG|U(^|ig&|1y5QEGJx$iqBt*?#sP>!3os) zrMVD!`QhneFXQfp?0(>Wjf9UB=&|XbXu(#V$eS=cFvTpMx7O9V_SA&pXk;mCp;l?p zx>jb!6`saQ>_n4!nXlU}gxQ+Mb6a%0XAK3o2F9i`FU+}TJ?=91=E3!R#V2#cFsm6}>c`_faot^*=vwowB9U9&uNYz=T z#j7Q{ahl|gmNnK{{3i)t;f74`;hnLRE5yXDCwoMwT}TM9#Kdivk^HP|&wAK8uLnL7 z#QabE+MU{}Z%r)(!gb3F$)z15Oo%~U`(1YSP~I^!KqO2xK?-q#5vRT#Kg8592m1Pe z#(6R`623k^-kq4=UmXBq{^Z(vGID>kRi3ZcN<&mAE3>HC^6N2({64Ojkda)>wSI1b z_~4;Df7?Bo%HXFpwy^m$6*wQE_v0{O#q}oMK+Y zV=_3%;|@zU%=8^A)%}L*mkz2*rMo)H#w9Lij@UE^8nBpvcACmd#45J287#G037a;` zNkGb{$~<_?QdR;%YU;{=UJ1Fi@-D-7jd^#+RDHv3W#D`&(JpnAk#V$C;0ZgWi^~>t z%l$6Xe(dUD1r8$(Y6IP(Zh8{E`u*p5SdzE`I%t4>ziDaRPoOJmBe6bmEJ^+T!X{}Z zOAe^n`a+uM6fA_zK!~e=jlBW;Xya?cOInC+z~V+^#Vk%7$YU%Qm#pzU_9uHgsL$Oz zmGuEj!}E#)JcbO#+~Q}lz`5zuN74`n6mDz+5T-8Pkhv592v$noXcgY@X4K_{d{45D4J;mtC*1Kg$g@{7aDxNz{ zE78V^P8#`yVT%p+(e!k7Y2>=_)HQ~gs+2tv1XUI@>vPlM1RhV7Gek+JU2)eff#>el z`B8a(+e^}8v+KR>Fa0a;Uk+StrWNOArX1obDC}zav!7XN9y8yIIpTU#mVLR!TES%N zc+BFiS~5I8U15I20;d!4wh(5th756@D!P)-DZ$hfo^j!|=`B5u@H(qUy3`q*lC4x+4_1#ur_B};v^mmk4YWt%>&In0{n)wGSlRu|b+*}F;l zq%fGZfIq)Qe#ic@)O(*_LAVCiAiR9 zof&GHp;YxGib+6h#m1%bUkT418GdSOBa`14qc8me+{Ek655WPmxVFSpN0^6ni5i zQlh3pkfJzRaD%lutaoQ*BlPN^Kl5?hb@dxHpL>4<ak5Y`y??R9HZSIXcW1fpr(s5?`fPo4KbW#Q3`1rITL65Nbq2y?7)huUn&o*6nzh()3OzLx7BBF-u za)C(Vpn!r2<}771OY`bk3NGA4k`d?+c3MTTJ*h1;QCzO@pCpRA`gNMTz76rY*96n7 z;KM0Nt((&!2A8xQ#w%P#iCz}SzIwE$o&7(|BA2o}<>CSoL z>w1#*u8NDJJS#*&>m_e`c7)MRv60I~wi(>7#XYj9Ut7U6$}B-zecLSNp@_L{ef>nO zR()sKBi`A53u9PJeh1!aZgtAMXwk;d6EyG;WiB*15v_J2d6-4QZ%x!~95{@ap35qd z^s5oJ0#WXcw#Q}UEpoCMa+*E|Cn=`7P-ZW2;yVFcsfBYJoUf1@_Ai}BV=7CM z?r6w1?c>FJEUiJxqwA9mi&hC+?Lavsg+JxnH+y!R1#?vzAb~ILufeFlJlPv|T+89L zIPnICVwOqhqAAK^sED!R_{ndY^F|PK-noBTe{x^+EK@61Hcy*`2)ZspT~1_ybLJ{_ zJM*QYL;50wk2b0agN;B&MjI-LyYLB$v2WHDxjn{YHo=GFbb$OLmRq$EsG{{sg-Sav zhsI+|DH9xdfE7uW3*%9so*w8AHgPd@r)^=H$_jZCv=}g2y9r^mShP^#_dr)#iLOK~ z4~Fn+XU@o~U}rYiy;JV$fwEV$@xX8`*5D$OdqWJeHyn01i4V;U&`6$lm9XBr+qP}nwr$(Cx@_CFZQC}ws;AER{y|Jk%+1VIM&w;)MDASsS$nOw_7CRB zA{K-2T{n$T&`uV!llsS>0$6gN(0RfZ-cfNw4DZx=_5$8na~QQ;3+BLrS(btNu8aAH zPI-5`Me@*{=_bI6S2~CL*VtkX@@_Fm@TJZ~`nN9la^Qo~GlC5mgMGI64LG=~P^rxT zK<9u*%JNWthkMhU&23jQ3rCJ-GjOA9Dh_@7O|YOtemk!8sR0Rk8sAYPK<2A(!oR#Q zwu2Ppi92LB$`zqoRrfX^lrUEu)6Eire>&Q-bPw%S^w#I~^cMfzCqaICP=+DZ4@V1R z0N9Vp;WBR+V$<3eqe`-|?)E8Tp18$e3jvRAt?3#Os)_{%>!agsJ_rneMa07qm5jYO zW>JWiUb?taMv5Iz8V8_{kZUQ7)WR&L(t{MA7cWj^|5oYV74Go8aD0KWWXA7hG#(Lm zV7)d`M@v&NStt?-c9>T6&GRI^d}cJv>2=r!I!dUuMxQ6Ulnr(H8YhXyNdARi`sZlK z6Lj4`@)woAb3cOZ(HIxvEQ7H#p^~+c2**P>0x>5d4b*%-J_RBg>WBLrcL_v59*d43 z0nkx3-%*G!?+Ngsdg@j_175-m3kQ$8Febs;MW+BaW;wkmUX^b3Ti&DqdnBLm^Z z?pNdamkQf8f&oZ{8N?f*VHS7sE8_c0K;)Y}$jHk`eA_zctyAxCoZukh&jBvrv8gez zF55-@8mZQ9d_lLTc=KZVv`?vt0?Z{rNLk}(NN>%IW3ozNvM`(8(DWC$qElNmF@BWx_Q zjmnI*64yq=35(>%B8)8+5@6Qjk>TFi$6&Kl8g^iYO$Kw*FnyHw2?Ylu5FG(>1@C58 zv?C)weA?_#1WkJW*cGA4$~cP{v+k5m8}* zh~(FxQ4?IH6$~S`pJ#Q+C7gpIkt7bq5Y{Hs`y1f}>-f2y1w1e1Il>7kwTC^ zmBWz{N%sB4k>wA?l#9f%Lmr8N>Wy9FL;B%P*6K-g#@1bd_P!-@z3~q+=t%>kX$_ z5Aj{4@N>0(k!&M7!Z?C1lc7-)UNl0D;EVFk4Cx9}93cu@DCF|f#}v$Br~5Cr?qdne zy6t88FS6}o_0PO+3-v$Iyn40vY5R=k+BNY-MBUc2K^EB6vV~XNRL8IEVq*(WF4zx~Zi7mQKZ3eEcHdY&6P;Gz-ywE(DB0O#1 zlM+0;*c`HdOte7i|K3%%F!@2P(0dlI1;4hfj28$MFN&}q36MfEYzT!9MDMo$fEhf+ z{26h0=78tY|1b`NboM#rMc~|RvICLIU8M)llQUQ5ckVzB^|!4BAu|)m=L=sRmMYnl zz=FvbJ;$(7Hw0=mOFH~8Vl&M&2~aR14rpdu_%e5=GCE$pt`EpMIVnqGFKL3kWJb&| ziRDD(h_Y6IRS-XMTopBs(8_WYAoZJ2;6!jN4mAl7oJc&LFe)aKspZR{CZM7~7d;F+ zX6{;i?VC}EOV(jZi4%qj7=wfwH6ICuse?6AKW?fXp)-Ya!ib#HCA(1wfhW5XP^aLT z6sBh7_Bd}tmw08s!W9!c?ce{#+AVs0oGp?NT%SxB zuEsv|P!JVlF{@P+my4%wfhkWLq8~9Z)q+6dK=h`O^7GvaQN|ozkg==*F3MTb2h`+> zK?cvj7cd7F=Pv2P@$;1f2AAQ@L4eQ5nKFkGr}670zcs|%iA40^4VVM*@%hYS=kcbq zMHj>!2-JNDM0KRULq^df`1IKVaNw0+3Z57EM0K#|GaD$N!R*>s#iZS`tN_XvnnZR; z=f$xUH+3nOWHX`=68;_l5}sp&6f$`H>IcA%ne{ZGltVt5dG43K?)_j7ZQ%5>Aq?m-qK4oW(Syj75eDMGB4^XfvuI6fZF!(?Hk` zzF889Tu?X39Ox&_JJEJWMwD=()#ilF=a3*u*k4c<83u1T0eC{JrY%?z(zqZLF)m;t zNw@?DfuYys3OSP2v-W)qS<*I>92JwNJUX39%1?H^0UH|wUED55 zZlz*={~XyBX+%VUGZ;ihkMn3=Ji%{St5yk)I5s z4X#vl0;;IVufVPX!w_h7bWHOl4hk+GdVBfuhet5DXf}l zv?SF7^D7-G%)k`4nF8a-Sp8LX>A!eu>p={ksX1&@*lW#99_!U8JO@-7AgY(u|dHi z_bOs`>TaeDa3E@z$F;mAAF4u|D@bPsRbG0rI;7E>fcY402S`|&RiU~~)NN|kr7P0v z6^hcpMM)zU`!)@8Mjq@yYVc87xKl64!nnb&RKd$5`$0-Ux-g=Vx(*KNMzzoc$w_ed z$YFg1!IxdjZr$hVq|R|O6--fk{vg-OX3b@3?-K4r=F@C(58&L}$!(DkJ(2W8>3XU( zMW8re+70uV;ab)vOs8vz0ZT%!k}b|^Y#W*Y(AFgDda1I>F32=#h*9Klu6fqn&pMgf zIp&dhjJCNUUIo>CZw~qDiO|p=^bC=U1*q#sx?63@5#fo9Ugx#*qgKxp;GIFez;Z^K z*%Giv!O=4z(sF=s=(ua`yM{P)$#MsVD~}$}09cn@L`TK;pP>H0uXZ4h1Y~+#kiArGlQ09E%ARkUVVdu{mnxhTw2m z%!q;}nY41&8ISEF7C>Q9Dq9E=-SyWDM(r{dPffcE9=z{C=?TGxwDK+s)CL94)#-P2 z0bmEMM~X6VLD$8CquG>1CIZ;w6@QE)9T-qfL@&PAc0EW?>K9dOO>*q(-}e!aTT_j%k~=zB2P#2^FHFq||}I0@1#OyMO0 zTVfKZQl@xf_v^ zd7WCh9eBZDp`>Xv`c%*|`9G|%w2I(2Ic3jY8ezbNrkePf8oAV+do#hFy%H2O;-WS;1Y`gR4Qp)3#0GbC61~jvnGckb;AmCIJISqS z?Zqq#C7D7(j(Mi)UcpCpw~|(a~lb@%t*XR`;IGS|goF$ciTqi#>#Al$7!)oQaj3vG|E zF$Z`5`EcuXioW}T$G{OO^TXwPNcApOUT8RdF&z_jZ)BO;PC27P&}z)|k*HQw@nnrK z7EG^&L)%YJ;?<9c9{*n^-j98Hpyj6y3*r-%%+SX~@crcyB)T%`k z(%Z>U3P45ArG+>Wb|ADz!qF>Vt| z>g3asM7NxdPZ-B0dA~WMfbbuDb1BrTxxA$f?t8L$lXDBg%$bNob|K8N%;*aEaBnIP)!H=c9m$Xts>3%^WHfu)&cxlq^U5XNs4*>;#Zkg6 zvUtP5RLJ8^04b5X*@9x01S;1mReMu%BsG!@mc(^9Wg18|T=T6mNV;8QQ#pt(TW^eA zJgE(p7tFyV)Jb<~tlC<1C6OWu6WplHAXc_n!UCr`19{x)JOyDrGMWQ09f>@!q`DBt z#Mk$%nH5cia%+FK-S|T)>|s1Yc?rJr+KzLIzX(YTXS_ywG?099%JRt50l$GE0tQKD z3U#h-emEH|ttL1NV0d_YOMag@M=30Xu+PO-ZdE{N3>QIM-hK~wZnm?1x!}5pffFE? zB$mpKihA}#i*Sp=H4xnLA}89;ueARU6D0NjG(nm_2{e^gF)H~6#~G8(=i-f+*k8=s zcEr(jFlSzWY37Fhl11cX*}4l^t~5yNWVBWO;BlA71`9%Hcun@zIBqE)#u7;?z0`HR za0Ym8f($8VIZ`Amv4m7x=hH8{u-{%wkmJOvE_!Qz$pQt!uY0;*`G1@sI8lXd{yGo3 zJhcMww)&MTOlQnBT|!6f+&iO;B|#HjM%)9C9B(| z_4k3Qu+oRaTF}H3RfCu@Jm(IrK6Htf5^u(|Y@C7rOc3K6G;T12i#ux!#u0mcHt2fe zB`8|uvUcWN=#bo@Y)1+AgBek@Fycm!EAD9AP9ymSk?bhQsKfAMfoSi>0DgW77z0!gst_+|c zy7o0%4_d<~IUWQKKaID+p(mMIf6ww`*qcf(7Nq#ODR8an-FJ7fOO}Dr7fdd~lA96ks_<2)t zs9wYw)_Hxl*mY9$JgaCm2^Q?gDDp-nCM#HWj31Q7XJ7_yk!?k-pVt`>e7I(vHTEBr zwn&7O(N>YRKuZ3-026)=4@8$yS#S);(OBu-{Hs^9!2V}sn2h;fJB=vcUl!H>s18S| zOCvwo1K2i1&a8==5%&PtlLj3kXOxi$4p!iJ3LSAOlVwNtth$i;nU}{7bZv_!?)-R- zV!xGr^K&+kOeL@sE>3ew;IQf9@XFYH%xnfTVIlUy6=?}Jom!?ZCy5$#W{tEEhbcXw zeKq@xG3>TF&0DrcUSQs7Wic;}G|JY!0+ZS_1s2T_$~YTGY)!dlqqkRe(@hGqwiiut z&w#>wS1J<-)D4CpM;WF-nU-Ex#u$f;MSsl0?y686M%YqaY6K2U3Z5D{!ym0-orwOg z);LQ4(Hc!gxuRv#iVJxArxA{)g&cJU5KkU-_uf?l_GqJz4i0$qW$xnBkGm%mo=HTc zb_mrDFAp+dX+hTvrtN5p_n8rucQ!Sn&ATr4Wk!{ay0wsCWpMYQ6-|w;h=r2B>~DXW z)kHIy)as2F42dXzc)6c9a4c$*m~n&xRj?UH8*xc~{rxIdX*(TWMqz7rI>-us3a4=52;{b*5)qx4PO zU|0-z2`k2DTq{vAgN2S$gIqPEq%+|v?uREXxB)?Z^c-x3LEao9aEU{qzaRoewsU#R z@(5vA4Rg=NrZ|zmxUaxm9sDtK&&lBkpqz+Ff+nn8NyvbQ>X-K{hj2Z-ORTLara*s% z(Lbcid$=p6hmwM;KqU!@6pUMIQb5DU6k3t$%_V@BK!GlE8Ik6T;KEQrh~N5R1TKmc zWRcMK$Xfsi#~`!F@lH=iA_apVcvD^kfMhtRBo0lhp-&rFcvGhl+mlOABSn%mO6W*m z!Hg!SC{Ih8tEa20Q()hug8T>wW(9dgb}(Wf`BPwxYh3-!{ppynamRHEnX>$wZ-=MP zArgV#oZf#BA9}I~l&iUHxE1cd(^wP#6%cOxYa({N7)dS|8+JYXYGKuhma4sNK4i03 znqNuG9C&>7z|1rLX6Prf2>rM~mI>qkZXtA%#&D)o^CXX7*H0O(cSh{0f2qG&(Kt=J zU1+S-mi68SW#9)DMO<*8TTTW`{>f z$N}H{VO^sF>mHcGf9%sZ8ZSl>PJ{zzU0jdH*KG(%v?q-Y6O}??0;_cH&or2}?zqIZ zYP)D~6oN5vIj;juEiQ6U$cZ%&Sj>-oXIA{Hx4ils2}#1u3VWf7zpLm><$0f*_D5i{ z_^U`y>pa)dWx6_n(LAvj!zQO67EOXqpxfb%J4{rS(W->1z+00J^FFenP8%5H+ujFA z;hZ9N1|W2Zz#Wj>T9WNAgzN4yrzGo}2`_}@U5s(CHKREGzDZ2?ytoFc&xvRAflyMr zJ+faoKMnZ5$6CqlK{q@Y&zX0R!Xc{j*lX+l2p-x8PMiRDw6Uj$2a&4sNrBm8HdyeN z(~H~+0cXpNtqPd|Lsuq7rv&v|(KDj5ZODVz{Ppc+sKtM&uB$FHz9TfOD3DLfgizkr zHv=*xiRASnLW-x_+%q@;W6`pCtYKQwG)UAjPWFo%uBYnus&pVh*&|Vj=Z#3F4bJ=L z`KI*CJI7F)Z#HRgK=_e4X{hj)Nj2Y%R*lbPd)k7N;Vfy_s#9)Iw;zVcZK-0HB@S%+ z$Da}*8p*LcCFEaFMEM|RUIZ`69Y$#dN+H`>(oQ@BtL&>#|x(B+^UIi5{?P?>CsNqUdtLk>?jSbV?6*fQ+N|m=(uA6veU7n{B_Q|wXsy7-L<`{kAk>OKeW1xapPfigo&ZG!im9R4Kx+R4 zvOk@%^ExnrZgf7P6E$C~$6koJX~%{Mp8jE&@L=yLHd8^qyyOEzXoAFmPFaRsa=}Ry z!VRH}oj3y)?-((>o=RjA)qz%2rYtK|$3K;33mGgcQZ!|qUPTo((WpVOC6$zUR)xI{ z8LV_H2;IZB`bV~4M<9bxMYaE-jRm>QI~a*Fp=M1cow~PY;P^-tT-=cTElI)d@pq2A zWd%oQX3ZTBKK%3_4^BF2pN(#lllaP1PfHBM`S&wrIhd%!vAJct)fKUfxKNnu-blL^ zNNAUkHai?;E8Hw~Hpt?^Di8H$U0)Z7qZeTh3ui$|r|qeS%Cm%>saJ#~N{YvriR`0k zkE`$rV~4Y05@6CrYU2UMM`hj5#^F1s7vj{(Z`O%%XXDIT3Y_vB$TpSnl&;o?&5jBe zn#GfbWye0aoSecH2Vo_7glci& zI3i-#Ap$Dn(_ykG%_MBIEuqHU#=JfcV5AkU$rD1uRo7T_5d-F~f5@C^zi|Qf!G~!v z5~9H*gKeQoHqF@9TCh9$pd=VKla~P&A=*(gPAd5vXN??n?ALAvzls*0{C@azurP)d z_&mC&*tRZK_Zq9JP?t}qWFs$RN4##Dzz0+=thE&*I#G1?xKfFNm)I3j_$CB$u`B)$ z6(yL$cHWI34+#08qUk?Wloc^p{}4%Rk=OTMDoO{ua!)|2x)};we4WEhj*wE}GVbak ze6<7B5e6}!01~MoP7R9eaf|A16 ze?W4=&Z=v@BWTp7FiF}yK?qNWVr@nWYH}<|+~?4U?SMx>_cK zggrq=jPoNa(U)AHsBQM@mo@C)8zs!KYS!Od+2*wz3IwOB?QFQA9XT@hF{f_J`i^i` z(<;$KCz4?|lFFKFd3Ou}jyp2pjjn;9L7X{4n@%S*sI;(ThaL*NZCTxYFul8Kd|Ip( zuKDY{{kwbQ$;-E!Ay~fIru;$xBtm~@R0cQ_F~`bJvmdKGW14e^^+DwK-*#!ve^L!Ljl@=h8<0gyI`ZkJ9^u#-lF zq72!;9>^=UM~l=J&)DuA7!4@7~FomVor)gZzXB;?dXgqm80lkbblgzQd0;V(+5`S3yN9Vo%?x1CGqf z3#grw&-@x6C_Ft=nxMvIcOebwJNgn#n$vWHzz{n0;X=>;SE9^C?LLFHAR4%#1laJG z?BnEJxn8W~5ux#zrE+D(}UTPN}h8gWpD==-4@VsV`Q<&hd3P1~CqIb8AgF`03+zj@62F6}2Z z?qR-E)PG26%th@0he>|pHcXozC+8Hw4!z%|kuIRqn!ggh?Tfmj#do~%U{C!}Hm#&u zgM1{C^FIAzlten;9wZ>_j5P@#yklr31(ll-;!1K`%*WAjbkvS>6jbJi^JGZ^YeG|J zO?A4xg?u&8I%N`>V zcEj+td69G^uiekRGr_plKZbr@YG6_CMM-HasSy+Swi{suCZwC9XH4gva`wxHw#lGTwL!9ux-pfjj zb$5+PsVBj3i|chD-17GCBGp;V17pOp%Ax{AQuVGO?9q{^X)SY@SGe^eHI1YF;=t>v zqP!~Y2oQGLRH7Lpk_m(JwgkT4`sGezNcA_JW`>_2V`trZ`v7cy2I^zJ`y3m`HS~6Iq5TQN@kzOd2 ze;0%e(GwD!2Z|3EW^Fzl5JX*P4Qn!QWZCNJ>HR&B8jk!SsF9TMMD-VDjE03{n~z<} zr51#^4zCNyuct~(@oi`i7~&;?V@KndeS2rtgYhySojQ9bi*&Ru5Mt8-sX=5nxNdRg zjOm_JBZzgJ(?q%p?Wux4DfkQzdOy>p2IJr90=uRm6HBAM+6)+Pr`87KPZ8~!3d!_9 zgCr)ZQA;ucKrq4^rs*boia8aLbU^RG(R%Ie&BTnWx8 zZBF?EJ0_B5p9^rA7ixn7f$ZQ=V~<8{ikhLy23p*2;-=6j>)!x2!z%nSX;{vGQ(n$K z0;|RY3IUMRP;}w{?UP)wmK>zUa60WW3Y#){w(zb@$_hcM#%^#H{-5Nt3VZAdh12El*)^WYA5XDV23~iYeTZD6)e<-QE zG0ne}bdrBT&t*|53pRu8EGJ3c>mN$`_75e6gt#9j*(r8;`0lsKuG-uH20Bps=S166SZRP0VuHRB$gZlE90YQgrr|q8b12)mC2I0m zNhAs9bY6SZtm{l3L1go3X!7!$bz~dq(_2Yw7?N+qj6h#0B z-iux#&pZ28gaisSgpAPRdP1TpnM7D!%h4el| zEj%WvKXYARXpwNq(AZC++D|8Tpkx_oBzmDh%{pTrA!$S4Pt{;IlU=H6DBowsh95Xp z4P4C~f9=!U%@E56?7aThXdxrWvz`T5x~nE1MFaw)IUp(P8-<=j#iv7zU!5sUxSx1O z@&?el)HFIR^!HTpMa8AFO}S^*{na8=y!KEtPo6>?w7DwT-b3oYvn}rxpQl&Mf4ef` z6D?mF5tYCk`fI8kf~+vsxxHYz7+m)TDjt1{7DjQ);2x>pm^Cja2G-b(U8*b3sXqJw zEpSNNH(^Y%4Vs^`Zt4ba&y=2{MO`Q5jYuy5A5Ra;DP5!>+Iu-jTAD&SH#LMhL<@U} zaN_C&g7v3Zp!J#)1o!;`s=v=uY?`@iEX^4Lc(KzIjG#Dk%nX`5&ACe)be|k_77cH! zKWo6=nDr`2Xl}Tsi&~?rJ)JQj7QK?HK~N=5U}I>$Eyu0=&D(CZ2v`Lp1j8q2tze~d`AlAyzY@xT2824`AA9y>^)A^< zwFv6tvO(z!E%4PnNfg`!j(bpB*~^hj)Faw3`*?0 z7{6eJn%1(VrkYCm>!BmxPs&liP;2f$uH>FLTd+dfqD3-E`SH2Y-knVg8M!MC;1es@ zFToIZSLlZ5%w^N(D~&E0sy%8TDy$k8KY#a%^;fl4`9Z&;PwoRw>f;+=GT^dq;P~eN z9q#N2;866d*S4(UbnQ|J>mO`Xn)^Zp`W_uo1hwz#GwnTt=11Ae!sZpwb39=GlJ&v2 z2Q|ATY2=yj@DaQqgQoJU=-ae?YXoV4NWaC5x*b8p!y8;d#aXoSU5H3jqktR zjZ`D+%y0p;6I~0Fnkz7b)X;ZnMu4d~91Ed((^(zNx20rqfE1l*tM2XjOB4l+RWWQ`Kvs8iNOMlsS9O zM9@n$?{_asHp)6mw&F|}m^S-f2Y$Vfo@cYJPAh$ktvCFyEt|Szgj;W`}w7RA^PG5Cqd~h=PN5W)>|IYO7AdD zi`>blj+zF&8R~eC4Ui3w66`1GfBSO4@P!VV{8&CamQAbGN^ZNF#NOW&J@I!z-wOZy zX+d`^z>-&(EtKAWF{9Tfr7-R`d*kU?^V0==Ix>E9c;6^7m?PV?V@0YyE^|c<9iV(h zwqmvJpeAJcV9f4@J(}z9VQ1Uo4O!zNgCs9=5XC_BQKs;uybqkQqwB(V&ib%nW@kq5 z<|LNZo=<;RebYEqSW@MRX{Y&RS51K>@jaIMeT~^BGEe(`73d-RmVBHZ#^t^rF8bNx zKDvCT`^i0GiMy=fJpU(t6=H)cEohR|gNzXr;TVm=B{KRz4p1Df&4CAA2CibG{Z8;` z&x}DCu2*P5)WJLM6``vSn?>c$TEo7#SXrmyLwUheof9>EZ+@5&Bz4%Q!?JTjY;mb9 zbQ|G4xPwI(hTjttMJSs${3jpfwzxU8-|1j9L$;$@nQBzA>ksMzVXo`qj;7qfQYD)v zv$AH>6$X8vXXnbb%QMK{BuFyHnM=o|=yKzdW~%*n?oZNv_DJFD4&;1vdDN1Db$2v( z8LPTPb*k;{JN@s+{q?R#%kcvLZ^p3cHO-TIBlc);$~|pNb17Gq2cO~$8OEa&!>;Ht zDoC)8&ZkQLTIDIQ383kyg4fjk)fa@!<^y1&F=wMD8U@K7pJ`j)6oo07Zz>tz6Lg=c zpL|=JI?u0fozD51-?E%|ZknFu4{_N~<-VDsl#$`KQ6SqoMcJ^!fgfH7(n3PEw$+qDShVc-VIL@2it9?XDKs=Hp#{z{y0_-trW`of5zu%_GX& zKP2=9U=z5VO5^-Org=rKtPr97&K^;#ye%?dXYwgMoSUQu=+pQdc0}}Z>M+b^mT}>z z!sHF6B`#NHLL$!a9FT>JKoz}d0mqnTL*H-Dr*WfCaYyIp_m>y7rQTKFR6fVw(k?I0 z405?W-&y3#KhbWgs^0HUzpumF-UYv7zmvaT|9K9hJK;kuhyVZpGUh+co&Wu*YX5sl z&i~q^@Lx5=|D#EvJ6XUkkRE&Zr&kX46;?;vRUiqDveJ-29<5bsu+EfJT!upH<$838 zkkJ&?(6#WXd)MnLP2c1mYu7PeREw7xyC?QRI6(c17xr$(qy_PO?hM`*wl0cT4u$GD zWeHseP(R`~WiWVn7^LAo_C|UeD6!}bwK+Ww1c$5TE9{vncwRq+-X>}fcto9V|GrSYaz~vd3BDI8BW(RucfD}f7x0D zR5~-ZyQS5m8BY38so+i&wHp>8`(Gr^yu!a85MN@IWP+zQIL!xun@Vl>=)wm}&e{!^ zJk0}9C`j09+YhSy#5f<(LuwRkQ8&GmSpXZATQwLm@UsZRJmTA+&j?xJ^0)Aem{?j*7u!kXN{?mJb3;KU+L;I(e^1pg7#7$f+Z2xT#Io7eTJ)A)N&Q*eN z0*D(DArA0>H&396FrxL;?mB|+e~tl;W2s|?9|Lss|1*P=2n;fA19Y@axLu@bRj<6v z$P*5W-jZ+Xr?ai|rQ)J;zexR8(U*ox?tJy36#np`HLMi=_wK~$`ry-fDLjwJ$J~1= zZ<^d=(fghpUR8r+FW(H`pFd%;r;AUU**^C38}&Sy!M_YQcEWjxeg4dRuXkSfo_SaC zY0KoE{7Fl@E;AAHjfe4}ljJ^FP|^CN$mN|bi96@MW+!sG&o-JC`i#3g>Hcmwjhn2Q z9lgu-`}@`V_ha%B+3tiMnv8&66v^Cb+ zUz2RF&NuP;!f7#&=Z8-oE%4m+)RrXP7Xw32IDG0n{3;*CskrD&_uPDh3DaPA1sORQ zp$a(WtardsU|yYEa|6VHF}mJO6%SpTJRA6Tc5>d|hEQNbUAUmWR~q9i-Fk8cda1@= z{8~|*%$)e$l8YZchx~*2*K_d^bZ|+U-&XrBkJM_qcFkw+S3A~GiN>!S z@kEzI_||^93hMyx&I~ypu+th;tVvp3nPtIvKl@Lt&elwkYjAbSGB;)&;(Df($O8EC z1)SqNylFRgXVfT{!-MtUB9>PROsj;J30*PEf$bN|NZoS>Er88 z&Neo$`0zaZBlYp4ao^~(vKC7(?g?^pdH(8^4huckLGPdSU=J${HC<^I|1O!ao-MdS z#u&Di=`CTsY}|?3285MWKBA2o=}8H876clAt4*6OQk+QQ@!jsjxTRs z495BxByWcu3wFqvmwG2x(c^4mgNv4#K|ajWw;g58ViUDyBfUK%wq_QW)$7RRt+CiB zb>{W+9qXB${Hn4M>0N=YB#qCytg;x(T=`A&cSC`-Q;@Dhq*YUiJ=XdVF_)M1TCbl3 zMkdvy!q_@*onUZ~fDfzia~$k7EDsMM3XcWQpc9`R@vh)84MZiS`6eTt1pUa~d-x2r z5j=e^0vN3^8Ox+1fMJe{lnKmVV!#E`ixyqH{3t^g2T|AN5(4S>bwuDcog>9!KfkSb z-`X3(jvwu@Ctxn$jvuz7`(G}r@277Z!}*~GU|*Q6Cg6T7$Hv>#jMDI%R*vW8&ZOU`tF4(16^(N@kgvV5j?Xgr!Sm zfG|UwlZc|h4UEMcd|DVZU1QjFClzTQndHDxcrs^?LYaFVy_gM;?!vHu*l^Nu0=TjT z)&#r_54BBMg>A+@Zh|q~AV>-)zO>JQ=b3Y8$xQh$KL_FpC8E{AH8WCClv%Bq)qf}* zxt5YAE6ih#dqMERY*Z6~#R1LF`wiKRbTBZOAin-13MyY!@PwjL*oFREg$C%)XmDV~ z1E>)r)YRx|>!Cp-3N8xd+Kh%|kccFy6^tUKi}& z)omt<1kG1K@TlUtN1zDe=(?~#EjSjz_Q%JW1S#~ULmzhL+=i$V%2av3wRkN7j}oB@ z$Ez+4u9m;=S-q9I{xU$0hSy_xEQ8Lr+vHyciQN3GWFZf;}WaT zs9r+`t3r#J9Y@KQfsfU6uCGgSM+@OSG4NyA-lOJ_a_eYr_ zEv!9kZk!@w5S#+sc$|EV=Gc6oc2{UPYJIZ7A*6|g--`t#rN`RnCItkccU72qxJtW) zKVA$Q9Cb!q*W(yzNuYzaut}PmCq|@0%XM$^xVn+AkXwQ^wtb#K_Q&1z*ySe#=SeU% zr}e*$qGD=9Tfh;52=;OT2h_?;^2SCJ+Fk%Wh!FZbKL0wBO@$kM8{!W*&sWXxd z6YYB*gl_WzSFtKw7qZw$^FstXJisx ziBDeU`&H+#W7KKRnjZm4k&=ds7s!{}1iQB!C`ZosmDKAy@ z>t^BhI0X}GhsP(QX}c9kKugfr-%LVT&^t*b+8v!ua7K32Fd{%e-&fW$Oay_E-*hP~ z7Ut2<2lr4!F3ahS{Dbt0v5fjk8RZ|OvCuim#f9r8gXVF!{qK9-5AK51HjJMei|rc+ z0p;fBk`-=8Ji_V(jAdj6N@aM&_TMWSOuSkm?2JbSyv9l~K4M9p!c(X;0tg-cXoZ?g z5l=nZ)q-v(_ZTWdI$6h-i2;wKWou6{)+8KA<+>vZp^rUL-&_O_3H zTDY>`j6;kJxg_G_-Z^5bQXvkp0A-WmVv{h%YM+YKxM8Jn(&^^~h32(r#Q@({T~>Jf z?eb@uE0-@k=Dj@A74{_BYE%OjsMdFHT5q^r5v(4{;ju%rZ|b=bM+bOmq;LQ&76k%e z5s9eF(pywUIa+JfnX$Ja1)6=m(cyzbQ`@FWD@`Bx)nI#camm!>L!7%I*~jcIq=z6t z8!b&48^}8)u)s+3%to-<^4d-z-{{yzbNSGepwsO0myA@GjHaUT8hLG_od80NWUHz% z*Yxp;f{trh=v}>u(MAenH>dPRcfIFw&6=q2rv1@#rCP>wH}qBV14+2DDiQ(9Oz3z` zCDK(zmn|h7a24EceY-qWf=NiL`Fx~rbz{IAR1 zWS8^N!YuQveCqVK_eYbv0K8%Og~qa9Py=zZ8i<=RrVdXMe~wIA^aaEz>FFA?Mflp5 zBAc31e8XXcajM^?P6GRbM=E52v$e{21(fC#6*90Zwqnk8V8rDGm5&av&Q`5G{jY}h zp+O0dnNwBqk>n*hk^;6R2~P-e#~m603X{)#@mui7KfZb7KQ9}U$eTQ2%sPT8Z9}db zYUYF&A<)7JO?-4#)YWpbzeRz;0N~S{B#dJ(1#^c$>b?ARo*3bV&R%zjdB;qKLcxXN z^^p&4?VU)Hl+wGhTDfe9!=oVYKu;qdEiWC$Q~_MfagyjrchdcGJCS5Gm8=z=8auqQU-Q5Wyxn&TXPJtPiY0rt6unq{%N$!T66k! z1EcG&k9m8=<}X+f0IE|qHj^8Gl z&I{ahW{oSN9<&!yr7pTKUyp-}wKi7=;TX`;kK3zsWG_6<&G)UGbgIW_Az%)spvlw_ zJr}$o>*tEJxmw>4M?1Ar;son+zN0wlo5DTEWRsc6hTPvKrr3q1fv%i>fguvVrkk~E z^%uuFcE}U^ftiMv1kWuyz#3#Q3Y7FdUHa}nCyF2+IfrmLON`lIYsn}W&vM9oJ!#Dr zM|UR-53>hzmh8}X02bcZmhNS^I)qUgpnoe+4Ve#ud3V*~<3IQZd!pDbjD{63RlduX zW*?uoHpE;WnD_>SBgJ$lLLOd0)HmeXs+D!8-*mvfS*3_9Cu|S_XebyT%k0oE!hlMM zyi}jkDh-R3-r0i|X{(^1IKO&gy;(!n)Z_s?%f2eCrRBUO?Qca?GeCHgkcsVwbXotM z>#>3cpi>U>dIc?`1qxr;hNP?lk9q0NiZ}NTIBSK*nSkAT(TNRc!9F4f$>w##Qym~&A)ImI6{d$1SE5qZC=_v_}n{ysPA@U)qn^?Q4ANcE%WP38Lw{|`S9PkPx0{OR9aFZjRl1LFV5 z50vbz4IC{zO^oq>8Z@o&$^WZIlj1)};kSm>}GVU`s1$bmN}bVwEn~{r^>d9Uqv_HjYlVVw7%PGZqMMJ zOV|75T`y@YWpzCM-S9-L#aX8RnC-GsA_$h+5l zf8qDiySta{EX9vO{a!T{de~1^iVy(|MTpUINS-e#D*t9Qf&uf1}6uyLIkufBBMG`~5gD>}bI^gXMD zbyv~n$WNf#-HVs!#rKTol1I5>>t>7pO?nMeCV#V8hrH(DI-9Q>__5sOif5Hc`n0wh zwnM(*^d+tRO!VThlWf&hvV`n`J?HGsN0#60I5F_`3Rl|_En09`~^QuzM&Z?OyG^2Xzs8VP7L~+>%qJz(E^QBg_ z^A~z2`#c-Iqf>#2HA1X=!O~flcdSgC{25Y)Pk@1jv<*^@|JJS|?N8o4!dESj*R5Z8 z7tL(#Z55l@H#f8TNQjxs2Zk)6%+tR=V$5H7@nX=vs&Yd16nxTJr^)Jj%{jPyf1bCm z`&}uy2&H5e`NL_INEbANvcXNe|M)HYOP{qYLjqT8;fllkc$Ur{T1(;=J|CGQD+Xc} zZj@*@zo#5^z5PJ;!T?ijqlLDl(=c03nk}(SMDv^o*%_aAT)7g-1ivs2xYewhJyZt!ubKJ3loaYrr&oOx7Q(W(z z@gw%VJ*fumDY4FF6VDYi4K2vNbm*|Fc2Q>itIxzYE{`9f>hH^2PMe<_FE$1CZmq%F zKEX|zziS0QTiXpvY~DUnrm=~-J!P|b#iz0Iga*s?8|YUkU}atg&~$j5Bv2-6pQYm< zS22M?vTI#5ud$+Su2+XtBB|xPz0|JY_to7a4tP%Ksl7}^>Gz@Cn;%|gZ$cJ-&7W9f z-ry%1R{gdZMBI-{!{t8TM)B{+lu?EoAe(JnJV0)W&E)<*7sJ=4#8q8J64yB;qS4B| zP?UFRPH3`8zP-Kvs%`;g>e&V~2|vJKz2w5iDAW~*BsgkYqv z_eIbJB&V7@v}wb_nT$PBt>GlQgQUHMwJC**aA0(xb)^LgaR3g8Dwoe1?lS+)Lz6k| zD2UF6v3`09sHfAildO5p3ZXu~tfWH+WwnHv2|FPpM{ z@{)s$)E8XHySjC(^f1LEJboqHK{c(#AxKx(4e|@(^N-*9#T94Cs zwt*(pyV7z|HaS9MtHl|%Hvt-IM9UKlO(<=Ps(u8jEMQ05FHoj`$)FwIm|!QcwM@!Z zyV;z9XVk+{4dH;=jbOAp7{b`@*I@E!h5r%J3UmNV%a{p*T>&>1qfiqmv-tdgw#5F= zTw7W<^j@^!`L{9LmRy;%_{Jnif09}0vG({*c7|2ePn+KTBXd6U@R9a>*}O(+|5kC- z*=5Ksko?}bwWWgO-WVw$HmEru#fN3#!FS(j6msNbsbFgac7K%>C+OK zDMrrl-*;&@!sJIq6NL5CfnSNk*6cyLvGp%O9M7iUe>ojbV5~9M&ZgJYVAl3VBV=I; znPE>hNoDs^ctDt$qMWux!yfu#*g!){I`%vWtrwx#IORlo3E*u)^KdzvB1AN#MTys> z*S18Ru<>!Zm?E#+(>67OKAAV#&&P5ZYx%V(i=9m><*|=+j?OMtG?QrTg5DeND6q4f z=RaVL>>}Ot>@-;^7gRv8BxaXcaK)&9&*Ql2L*wOo1Q29H#$YGQ<2x9|^b$Sq9>|E0 z={=_=(d=utEIMoFplql)5NH0`6}!9O3qX4qx6jj6Tk@GS@26Rt*!59=nW?!jKY#0h{%=9nBq-JLu z8504+&4baZWT;WF{5BwNJsz`3w?av8_r9>CjuMJ5PM4cXC7FbWf&bx1&XRFdL?Il6 zn??4fs{bN-(oIxLBtLQhYOj>6+?sd%4G=_XFewbe1 zD+-$A3a&ba2O>K(#8<3EO^~YGh40bs6k#Ot|>60u}T$F_X%b>Ch4EG4;il7 z1NSj%p$~O9M`H90Z))Uf$HQ!p?bx0M9R}W z3~7uwg6&KV5{W|$2#sS6O3lQA#|(vr-b#8L?vBIxd4Ax^Q`zD)b6Vd!9^29E6XctK z*LY+!rNOJYK+bg&1`~1>E})Z?g9=>DYH2>R3ae+ZnAK1X^_Vh3bLJ;kSta3#l|En# zS=dQs;kE^7Kn7PGdb=2m`7?fQhR=)Y808{zXkzyGq)nOlEr8kQtQY)Xe;H3O#nA$z za;dGa;jN`oPxp}yd)QY*78pNebF;15S7GRn+TujfsvU${z_<}Kx!B56_T#34&9ce=G%C-1l9~akgdIvI(%w;)J7ms}H$}Ukrnd!H?L;p|wit>QB4Ttx^43W>oF_N31${<7GMafktcET3;Ts0~iDOvxw&BTrO*DX6cFZQv;R1)sRY zQWtwfxHx}cao}lyP9csa<@T0JihCT$Z|aV~>{->-q_<$S2>XJ^fwhr5TCT4`oUQG25f)Cu0=@onN*#1^~rEHZ_>56ZMGzx@aT%QlInCN zr}C2`%`ZQ%V?D!5WIEyK+8mYJv;+7RWR$lOY4*Hw-}gAG5SiMdtAiWI#Vs8gag;uX zIl5Md)2E1EHxN8fyXVjNa#$+o*GL_Qa^7YgtyuJEs3Y_ewyd==WvJiUx?`?DETYV2 z<7*AY?sMR0irJjg!V)?3R7HX}uH#xB0aglOU%ie(n;!P0xti0CwrlzielP*wRiR{e zBAx>uewkL3*N1PuhW~zrYwFxD(I4y4mB?u$?9)Y@+Kn)Vib_Z7b}3leQ!5gr<&;H`T|;x=m7Z!4-93Z9+p*R<@{} z$Z8`dL=nQ&VqI*YXDy7&FR*|8P}a#L6yL}NOo-oa2EAos^f#je(H|x1MSz2hAjB@u zgjv577FN|FeJtG2hT^JUh@^m0o=9J2;Dcir62|!uHP=}SQB&`ba$HNnm?q@xhv{!L zs3u}k)(9x!*31;wNg+!Io}IlNKa6c5M+*i|+I-tp%zS07uCk@Gx~YxfK>l199=9xvg25co{^tR6Q~m@Aj7iKdx&J4^Y&P!x+>;W=QnXo zwQz}f^6xiKBn)fn$!XBHXqe?Hg6C7x)n}>+L*Sl(L<+SDNf0w|5cazT3SVI!b0JE6 z(xEG(z@psh?OcK~y^)U)6U_)a)#E(0+r`09=$q3y#~{~*8;F@r+5|qr1)?^iwhCWC z0_ZC99?fHRwDp86%YLnyO^_nM4IAj?))*lt+I`TZ!RCW1$CJZ^5}tZn^@~mfaiBp6 zWhl6Cw07B0aJ5f;_y_hVr4{iAl515RSvn~E^%m=lG?p8_wQV9c- z2J@2&->AH&Z}AG4A_!rnsT|i!oR};DC7GWVQ>cOCt3a3fS0E*>I)0W|6^{XLQ7L+V z*cbc)jf%tr2$0@D$Qxk}-ILVEB&CfJiRrNyG+N194NrwgU+|40o$p{(5(?$fJcbx0 z8%mvoHh;DTT={if#d4fkTb`-(2*|HQw_v-cTRD00{rQpOb9HT8AG^}D2f7y(Q9<44 zkKjqZ5IVf);(KR0gN*>$Db4G0&H?r+rG~Dr@1&%_9e|>PLhuuGlE1xyCO%sHp!(M@ z>)dmbA(K>sGu*Y)bUjo9AWA8V+jd3W1QyDkMa(Cx=4G$YH$|INMRRI#MM`GdjHwFr z*ygU?@zP~dfOLv=IVW>lUAu{*FHe(28m6jC+Sf27hJmp$Got9AW54h6f(zBo0boc( z4XFE(NDK5vkm!jXC6?mUK2gJLZMy#_TPZ6FM7xDVQ(DqKb>XhhnZzTw2NSa!`0!ge z(B~<%u`cXpO`(i%SsvLwb!(p-LdvUx#pqi%Wy3)u>nHS|TXev~L)5^?9vus3bQNX` zNlZLEGKY2EGY0{Fv4I1%d>n9L|F_aB)nKML;o8kf&_8F@2CB4UHN8g{ZSV1b>}}T{5SB)C>hXH6`l1 zo?_9}53f*NfHZaAmW|?oRB{&z@lE*Fz>_dbF%Q|{wuwBKyQ`(tXM!jaMTGT+!!89e z=4g|`gr;s%=f$NskJb34)Quid*#EJM69Mw~-YZ{AAeB#b=pU@!qe)bk0_m|$u}rrC z3Xv(!=F_az+LsGz%ddi%H7S4~A6Z%|#e34u*O)8aJOdt|n-fL{v+g9sHrMtMSqx6rv-GnM)m^+Ac{FVlkWfz!xhpb2_RTqif#|@Z%#s}+0gP+_&I9niA zpaO}W;Q~2xbFO2On7l zVtQ5zJq!S1lmgvcnPbP{YQE~*b8hHSVa9&FFN~?hli~F zr-qc&L+g+MgQkK!W*hR=m1e&jY!<@}3(>yFH66fHS&iI_EF}_dps6{R^G4Lx_&I;3 z21EM>)+3VjYp{u>X>1H}$z`QH#J=%f*ZtYTlr!qlv$njm^b|xqICjI4C{h-bt>gy= z*CI}?5eiwi^s*9z?xl$Qw$;i3K+dfiA-!4Xrdx1g-7HBg-EK~3w+VDbK54qu2;+cD z!=wks3ws*f&cprT`>z1f>mLe<1aLuHK}pvU#U0P5`sBnKf}Xw-wT$)J?h1QN>Pti?7;haz?9`fi0<&FXscHk;%Wq5dWWyj*6QG`!I8emp zfo~wi`BM24Q=Uf;MS`M<&mXCsN>Uy|DD01+nCrp#i!ktSa=YHX2~U)s;7Of2m|Hrf z6Y1|xI;Ni>SQpC30AR~dm_I8-VeKn#HiRwOmyUktb4%dov5FrXLO_M&9~M#IsB~b> zds?PtAV=Q~n`CRy?p@7ERnS~JLv{fJL5)NxL$z@H4JSqpLD+$X+trH|if&oZ5)PZi z5?%+m_oDd?KK_TynmR6S>(NT3OLG7l^Z4q3Lt5bE9T{Kwl5`2}or?l_43WHUK@MFA zBW81OeaxrLBFlsWHEM1&G=_hkJ@hB;?!q z&7iMSVXR0VUe~7c(<#6ajifcISzm9H3Am2O_v}YJcrgu`62po&XH400re6VAptH#PC~?R#AQ2tlcZX0g`6ATZ zW`wVgiB3=)&}k{id7KalE0BauD7)mT^e{Kr_7(DW(4$o{O%V0tG>^kBB|k>%Uc8 zI9lsmTHLjD{Crx~?d}iD4fvy@9a^s_PaQFPG#B(5oVpv@fYS-bt3XAC9$x>laGE|q zzwE0mbYxFzrW>U*HNhM`X$*;GT2zOV!ST7`N+U!#dO|F-J3C|HZL(QpoS|3j$%tST zPZq>6bPxqkr=7X>ZJxk)Gp-|LRw zr&Thy*9G<1 zI*`{$=EzW-y}(NyfGS0ev2BWGW0@5F&gvsVksSn@V-Y@6P<^_{!?(`;_T&!|M_CY zhQFT*64WRPqwUBNMg6{Nj4TI?u8ML9CzEP+UOmR~@`~<*>4C<83S5HYKPYM1OJGXn zOsAaQHmd)1!-3QY#^4tCw!iirXRrp{AmJ?Zw64o&C3YwPq0qL$__k#9Y@v+4!$AQE zR5jN1#&{toitsy3+l*UJBN$iSo9iu8bTVUnRYIzgVwnc_^?4aGQ%XtJ(Ja)jWfb%1 zXK5+r5myvSWmNw^;8p#3u-Bkw z?Jt{LUL%hdB)GP80i>5PsX<-OtS6KD8U60vp+A~USa5~!1WcZ}F8ZZi!vbJA7pFJL z-^YHU!~ko__|~S5_@qti?gDPrOz;r*+;}dAQN1&SpV9V!tyraa~mGz(~BbU{tolM*way*gv2F1s~J~Zh@ zliHiRPJykb5iX#XY)(FC;;kxXs%}Cbnbk&8}TG@4VjL_}prw@LggL5jzxBEyIZb(_N>cg^T5}EdW zqbN)ry#d4E^!5_NFSjN=Ft(b`O(ImyhxT`myo(+*{wP-=QlMuGIC`hTYNpu9Q2|>$ zQkF--u7C+Sss*7~xW_Rt20sNP2E{F7H$QzPB42Q+)D&yr*TVM-n>vYMPWM<6DC>x4 z&5+Z)(xaFHvnJXt=14^V#g0B#40`>|v}?^Dk;s?#=X0czewee{0U0^-%S*^}sKT#t zFqFF-FU;!BhI*|4sN^^|S-^7|>Hvxk$5 zYWL;vZO#MZZPk+|LBAS@HAhu--osDBAlUUH-YK*Bt0YPWD65$SmBKL3n#a|ooRr7a z+{#EX>l>c+F~tsSpE@?WQqZNgb!ub^3E&PZ%`I`Sx?AzMaT2~(352~DOF#nd)U5NW zueDHHp1qFrF@4Dcw7wFZUJyAdEfXr~9EEBOv0CaxMOOR3m39w3c48=1EcT#3`d(mN zY)cdv`nhSsV;RZqxPx}mOgMkuyqI_6ivCERpn@#zlQaWbYyQTS|I&P@#D+Zm_|8V4 z=~uL%;!#F_{(1@*J+r+oH8Bp5#x&d`Qh`ILk_!iLb2fh0ZGRI{~xc;|7|7We>&v9 z^l`nV&UbsdTK?c<3w^k$V?-sb%wJsGaDrC5V*?$HQ~`5xBwk99iTv)29!Rl{O^T#V zB9+zbl!Tcs;r*Lb!R)cErv}`IxNiIqi?@XL>;5#^jpv&jllAe;`K(;e<&t=lLQbJ8~C4;h<#ubKcxDt&?t*-n5z#K0~xiilzUuE@dDA|2zcU z>?j8-=gBASRCLExVYoJ6g#9C?i}$D7?URjR=X)1x#uVDuW^&A`Z0rfLe;}jOU&y$d z>0QWKyjQtB7b8~So!Mz{#kl?p1Q{c`^L54fjI6bD>LyjBlkR)x`@IQ{-bUk=nsl6$oujcKF@uzG9>u8Arw%N<}?C)#tPI5WhK(CV-F4^b70zW#V zARR}Ut+VRBs`i6r9eD|c5^*(cPEjpAA|QChVmwcgV`}{BU#}U{k_)hL_p2^Ev(<|imn4Ir1($~RD^t~U^ z6Yy4S*)=eJ;JNWxD~({4-AISDMolEJgLx6#`Kk1Bb`DHv_@LKL&vD&adDh;3cgOnn z!Q3!!5QPdpeHrY&`TS0w!!GO%$mH{g&1MyhY0lbYY%{Y?6e07Lt;o*@u2vu3Y+;%iZBG{Flqw zL9iF}s*sM1uSSIXt&mL+oz{Y<(~`KE2|mt>UF3VpkcOQrBy)CuJBk=F5U(ng-cGJ9MZA|d5p3F09HcvyE@f9^q znFaOzl*mwh%4EG)Oy5n2q*r-6wcz&sT;pW9b4lx26E(}1Z-sKGGV0UbN^!AF^?^+3 zks+}WtM-(7e1UvxY+gIhY7PpYvo8zp3ZWp+U^k&byRr$^97-0`HW+kgO+9YY&v%zr zyblABvPU}p0dv4qxvXv2TLTAA4W`K3F+6Jqra6_szOR!@l^c@PoD<>2U5A*q1SakH zxvN!w3$pZR0e*GK9pWX>=D|oL5L!S ziwqKNb%MYe!d87>GYnGV<4_||Sg&zjxrD@o;xMSvjK^N4#e$Q&-P%YJ0!ZSCzf{Ko zuV(1fnB3;?wnF{tBY>}RPwQVljuxE=wHbw*V`Ef9=EN!0lG+lf3HsB}?Epz()SGEu~3MShtxXXl^P(#I>8@6~*-2*lu~E4Ad%@f1rhg zLP9ie>M(bO3J9H~r5E3YvVJSSqqCkZFgk*~@pApz3G)(*?E#0@i%xGx#RTXZ{%uTn z)JMB~1EOfJHyZUbI0ApN`4vucfqpp1UBUo#{Gla<(RGN=BQXF7Lb)ehFfSrZ0#O`& z1+qp0&pq|>_gg;bbR^5a>)ah*5W~C>|4$lI+gd`~V}(Pp3E62zrZ}Kri}2*KNmvxD zrJ7o8rvtW0QkcofokzpJbxuR}FP%gEOXo`dp>s*NS;cRv<`AM6-9(N5&^hL0>3`~+ z3FY59XZ&~+<2EOsbki7L{r>F^ZopUy(GS8{2=T6rJ=3n#>+=P@S5n+dXTw$Ch~J2R$a8yG5SvM9yCORaiB*bgM;y<4UhDs%(OA_CAW zGp5w|4|t_`izNvbA%UhyghiznL9>ah2~5`Bg3vq`@yjWgp!AUn?ZNB5(f%8=)8>~K zE(|@8T(@hcprPcBL6-=Fr&(^geRm!pKOTKM6q<>8Mi}E`Ff^1xN6ThI{ZeChbS!+{ zut$N1b;E||!=)fA`LH|SMm=8Dpg2wxJopad7Yjr{^Amhae?C`XET{l9zCCxmrX7j*i~%+KqaMN_=CaT$(Sb^%L!%txHGi_2B7) zkA{(Dqie2swIZ`t6&3<|^>pE5LP|RkeO%bFHa8{ut0kF1MP(eFSQAaQsou2%->K&p zWxbHwnRVrn%~kk9P#XF8;uF=fD)>N4wU{h|;bWA4|1J<(-Y?o&4PM-{r`$+^q(alu zF=kk#G1Sev`7}~-j@|yO)>jpc4(}8iB7h++TlqA--F_ffsqEedeASvR`&u zvqtKlrzqzFS~(O=^_;s5h%~2yZb$GbCnTiRbHg|8w?0;lu&{Lzq>;O{p&O$?tKy z^_Y6uw-sYEdss1{VlVZjd+278Z^;R7_2_Y>;yFwA>7dXeYl$w1`C~sOn|lvnxT^l< zelkrKb<@CzNe{&MuG0F0D?y{f`1i`U_g3Jxgo#1$6rPl^G~BIkL^tSGCC@VLbnaxX4aakS8=M)@m z0Kxik?=COViR@`I1_Z7)c7#7pOQR_-3H2Ho=b02dVpQ%|6g~6VwgG)O$KQy4q3m=s%2(_&<#<(A)B#M#pp3WZ;5RNSu*S z5+{ard|wYK8oF@LYVBQ#u(%yhz=d~$Hq)Kjbo9$KeK+5J2vlKLi@7+$ga?--YL+8S zUsZxi_L?iFlkD!GdWZ*;^e*rds*c$gi8kSC6vrEc$PNob=`mu@fLH@=cR3Irm)2J| z^pDD2Q<72q6^`3|26~Fv1Km>Guv)$ni zfMg=IDXCvQh+l@ACCU#fyoS8Q805Vt#y-WFWjp!U1$yJpai+>acItb1Siq^_K%lGh zNvj~wsVnI5Wwb;NlI6EehD{X#!dMhFmL1?}BSP%AQbGF7*q^^qERewb^>zwXd$p?-r8L6A&W-j>0=O#f zNz|mhN`*g-A{m=IdPwCfFT7;xDDBFS*L%3 z{)^~BSDL;9?R`C%|BL8A$>&0+|0cQ>{HWk}!T%sS7487IFQU5^q#e=GM3WFRzE$Jq zW|Mzp+JljfeL%2ro~#aM@Qo~D1L$B@ORS;noJzmAET@2mzG>Q|GMQ6LD^bGQX522q zQfTSjm@K$RaLyN{TGB;Uo!h3tJ{gc|rEk$@0OO z4Cc}xnZN?^Llu41EX)#Djl*&Gn~LIHa;n&(?DUb&8Y+hO7k1%S60gF7O^rOmGsMV) zJ*(*v+-V*MliCnT!m|?UjiP!xv~0vkS{;5)=F)aofXhLpbdOY5+mVQ3y5x=8x0oKs zF-fwC@6-hC?)iGA22)o45CM*@67>&#e(M9*#T$VqY(|SpUv5^s5yuRXT{l3F1XfQ{ ziu?_Qj%2iwG8sC`AUuYX2*SgLSGxSm69yk=ZpjuRUPTx*;69^Lt98!_!k?9`u)YYa zKf%g%0?(+T0dnPItc1)Fs^Kyg0l*;C#}+$5LyOVve2n%d;!s9v$^k|qiiQk=nob>k z$kRQEg23=sb)cxm5@kPx?ig84!9Y;A2pTXHgbVs)7mZ(EA~u~ju36rICNj{kX4QFX zP!3Dxhx^&^O(Gwv1ypCo$muKFKVXAvSc`i-oPzn>nqj~&shwo%1_H%DhBq(m@Vk_b zGe4Dr%v=goe9gK%3R(xem0e`eQ=)$s0S(rt@EOa<6v@#MJaEK{gB74S)Bu)ryiM>AH;op|?iSGl1h#jsaRy z(Tm6j0ZobYDh{cS)CqqsWt-cqNClD7A{yFU*K^KM*kDT@RxoC1_eIuEw>sgQAC1Bq z?mQkE+)NwU;zO-VHFwNo8r0jK%DJ+&(=v*M_jdEls8ZlS=ZR4b8nU^1v#~`zq%D?1n{q&YlJ2cd;E86_^mQmk|Wp{K_xkbST z=b`#pY35YoH(o`NkeUd3R7F<=b3IAxLJi9G5RH#)0mWrxVBm>eA$>awrs}X zdQJJ|>lo;+VrVdse)d0wF8hBGy3YSa=yVVNUFgcLWB)01-~JN1{GR_s=w$0b{!Qo_ z_EG%SD->EoQP`pi-=0H?Gk+Bz;~$$BkD<|Fm4YE~aRKbjYrntU&Ap9|lxz#GG^+Rb zZaDDYh82UxtZ z6_5=l8Bs2iTU?#n5$SZ^9|M#Kz?jFl$-sazk}cdtK{W?8wkie%7Hk+=oHqKJgM_Ii z?MEIHAc7WoRJ6OD_NY_Yls2MUl0b{-VYkTq!ID6ou#JAu7iZijoE1b52vz-(XEux} zHypATQ2s`wiLU-g-VIqr*RuLRorLBMvXd{{ZmET(Ws(Gm&0)RR-=gVG&-=zwpDF6W zr?sf7>DbW*W2Af5ZzlbquBfB>X5P*h==NUZms|=-q+r3TKFMbdEnQE? zmV`JOLOx*>y<~-lH-pESJLA;Ip?TvK^$&L$v|NLAELHiumka=!$J5QEnJBfAm{@Id zn8F!JuAiT#T6d^x(+6fQ29gEuBm7=nWw~q?=I^|eZ*8i9K;6EwZV3uH5|CutCxj#H z-@WhU;{pZ>tdFdnT4@_?>vn;cU1uQ`zxRJfC(K%uf2|(zD@xi|xrXTB4N_JBCBDv< zqW`T@i%>=2Y8)~q>U$|x(T+n!Z2IW*Mh)eL9lNKj%93ynsV>G@k)bXOs(Gp42p=Uuf0guz7pBKM;hNaJE`9WgSzAB%QYNg?_gP?!*df{06U>l~wH>Hp7(4RwuV?EGNqXcga9f z*JM8ml_p8>t{)XBBJ*eT2yy5^q1bj>!=sUGlR*ugR31fQo_W2A5ej43Q3%JUDRX^$ zDeZ2V%?^INPz0>VbGoC5LO}yoFZ&SSxM}j`5w|bfJRUr=!6j_>XjjylrG04-cer9r z{U{?wQQ&^f1n5XZX9~=KiUUA@5b9=@oHPW)61R#dEQv-im)MSmfAJKZ9db*T6l;Nz z`HDs9AX>5i#F*l4plj9A-RqXUs47qPqnQu;hHJJoIy^HVO&SY5>ND+Ko$M}U)ez9_ z>n!>rS{R`0n_uPY%_$60ItMeO6(Y_sUezZK|hh``NRGxj>J0=76!_w$ zlBA2=k$hvUpBzR-rlWJ~hoqO=#C+;c5s2?ZT&er(*1~mwLO)k&*TVDrVF;Nlu1Z=< zYD7fE-Fjj8d$Zj)dRNm|TfF%VMgl&UlX>H9x5KzlNmHutS&L*Z&jK(wO{&ll+&zP0 zX?-ZRQ?^bv5b_p313Z=SA&0uxx(1dGve~u|g4!KD-Vwq|h(1 z4a14&-0zw0h0DsdDWGmY2>ag0g)68%(MiFQyBuz-!>;bhm>cN8P z^I~fQC2{i~V{KBSY~8W|L!2cN8yNe@acpeu7LG>ZVgaCbVmJDNY8HbjwJb(*ARe&- zcPK`MiZSqmmae4&ONXF0tOIn1B_fxXTy~U=cMyz4U}!knO4x{9FW}M^)bPm$?XVvv zGA$_l5tgngJSj?awEq;kTc1&a>;d>WJ(?rNZUawbdY~i%pe2DZ#;mF2o0nlyEPvN_ zFyO7|kf>gKM!SBne;2x_6l1_}B&!%tT50HmghC|c>%&b=91X;c)f|Q#wsqjwoy6k9 zq}T1))vBkuAq>hA7Uj>$8x{*VQ+oPQl%ED7CQ~zsZbKiI(z`z1Hz~Ddz)IhKjuEQ= zc0z;uUaWW|SX7n)_jSv`Crk@0jYr7e`3NS)crLP%$d#|XaRqC;~bg<8Q)KkAw`p3>rAyAcuUh3 zTO{^mMt$x5%}3jun@lc=;dSb6vH-^V8T4-57v`128rD*x85>NwkQ>hxjQ3OoeX@>$ z-k{9Wqss&VBNkaQ-%7F`b?JldDYNQPPe28uoaiV|8bUk-$tzS}!I&Z}MO>@Yt9dng-x|Su{s1wFhYFWUJ*NGwj+g?gVISNVK+Nvp3?I|BHDd%dqiHKJ;(zfP!Ybv zr<9_H-eDx#(bnLfK(#K7GK?o2Vuf@Ele^+fB#v{!TK6$56{cpIL+~tn#EkqD#rzgJ~i-(uiUG_VLXHSgZEyrH1Ww* zTk3Sy_B`3%w^Bg@YJ$BqMAF9~t#Wh#CKfsHYeU8pXww_2$-A4+361swxHU_gx^X`w zV0LuoZ$(cNR7AtI32#nh959yE#&gbpA}kw$*1?_xw~t#2`f%F(0LpLxQ1PUh$CXjU ziPpN~wDuWmT%5<}x^RriW<6^42RY!d2Oy}!Wl#RV=J|z>- zrdO^pgjy=*y4pABnSY>ItITYhnZ1u%UoT^R2-Eakqq7L8@EHY40ZJ{{0SCwsUq|H z&2n3w$h1SBB>lmhA2*JR&&_zWyD1X)IdW0m@q-RLIq#1rZ@0Tjdz_ji^(v`+Z|mf| zm?HEEi(hWHXzrQCU%f(aYR3Yf5v-eI9=vHnA4W!h9&%)+$H&Tt|G~5fzirB_t8w5Ny}f zw}X=qY?Hs~{C6ran$IR17hY^x;x5XJJ6MAE(a#S(JbIJI*~{L;@j*30OYUT$@Z-^u z@$>cGF<4f@^*Os{k1P4v?U>h%ud#=ot*vR#7PyH{OHGe1qMIE19kTx_$R^~yx2@9% zEB&ey;bL(z32yhXV%*JY+xcbTAqS{hPOsVRyvf-Sx07|X>91g*ku|LN*`p}~$2&oW zOWqPO+b2YSUFszPA9&|rk>-y3kk?H!*kjfO&q}q|FK;i$q`kd@KMa^$^c4rLsVLbR zH`C^i#A%T!)HZzBGDA1z*Qqi`{Ws>GV1GKVE+M+)Hfe3*FKvzmx})4$gnc@xkguhT(@4WX{^m`e9eIitY2~T52>PyEt0%kOjnQBhYC5! zYH;(m?N@w{qE8L!%_+^xXICY?|F?XWA@fmhyJLetlj><*D165GB4u@I=p{?Wcn9KLif~~op<7O_!?n*7Tdq? zjwR@6H$w<)LwLL10Yjy!#e{ynkC);LY9xbRo-sr|O ztyW#_ts_#>)?*UZ^iU?S`Q%l-=S~id3#ZmWx;JBt@Y)My{rVwgYDLkgY`2EUQ*J$F zdJ%Hb!{7zV;1S1>%5#q!0|EvD)c1Jq;uS(mKKSHR;zcgt*`A7veNZ_DLNCwhtf; z;lh@JSQ#V)$XE80`I&-k&=nk!_@6H;E@ekyd&;&CfM9$mXRB{dvV*&ALd($Bd2dOG z>sTb#*i8uQm;|7xnrP$sf3hJi&1X{aKrP0~Bl8RHAqG?mU^=Am|7?2CnQ4*n7Op4x z`Vc>nyifb{>SgC|2>Lr6U1!o#4Z@+iy7+H8h)e#~eJ#LsDm7EslBy5*0!e#(E^{r< znx|4hFgF@mETv-4`GGC$)B$)sc;-MAl{IWvm`WpLX|2-mTE1J<+#viCJ6=o7w*eUa zQzGbGuH~n1kuxlwY^*ZEnN-FTSD3Hq#^0ZBFS%C^{VNC!)8#A*GmRd;(t>uI5x120 zA{rHGwB zmhF3SkTR$bew;*~Rb&WMK=mHwtdCsm7C54l)#5G_ z9YW3^(=E=5-YH)r-yA;|OW;b*(nz{5Z z{jHCn(=IfohYa7??-?AsP5!`Oa4G`@Fo=vV9CE_IpRI_~(K)3Yf&?8B0E@&IYsfZb zkbGI>-}1PA@Hml$uj8U-ZD!l_+OoGOj|-E=LQh62 z;WlaaM>c&hsVNa2$T+~3S>KUI3hTy`OU9J?2Yb%8?gm;xvJxq_B^l~0m;#4XGVH4f zmpGa)nEtc%t!l*0IV4bCT`LRj68UOozvAoGPh2gUiKhWp{nx-TmLBYVp3Siu_*8m{ zUE)HM1J-DvQD}PN9z=cW+IE!S@YDy}I*7?L7heS> z8^v>$dWCxsYks{^6y%9UjchO*n}vj2aF2{4l~(gEIvB|w2sSN1sfXM{4PSsXHwnW# z5@lmmx#J=$8-E^HHp}SQcqHLuLz%{~jX;R^Wv&6s(<3&<4k)ghO+EO4NUt}nS#jJl?$d#e>oNep1+ zLTt-a+QUxJDdB@o!?eSVA7Ng2ImcAeb^f}g&b8&Vz+~fbsHpQpcp;-dmYLUr474-y z>ACwIpj;p7<~H=nh#QrPal|y|#$=V+_@QF3Vhoorm z{(Q-Q?x|icxXfz#fIH6SJ&_l6n6C0e&6cnF+FOerl9*xBFMF^VgFjdM5&iLfg(yBp z7&Bm8D)dn(5EmnJ5dCHzisj7tXJ|PEBSQD!al2Iorxo#cdV(sA*wN0UsH#t z(82jxOfLg2|A&_Kp*|wX-!A;SL9aM&{Y@a>*CoR69-S^3`7wTBbgq5I=Sf%oro|jnJ~$^s2^MWodf-gFT9es`|sM%fkzJ zRUVD5OKM*n3$&M%qtGE&ZGbEG&a{)4g zAqvOGBuwMmuZfAj^J0_Qd3{cd)8Ea18w>{uCrZ~~r3*B`MwsqX$N&wk2)GCze}3RL zrlLY0fYa-9$Lu0}St$r$_Oal6DL}5n>@AS&xYO$%vGmS@D4OqMLHJX};s>pECuG97 zZpBXr@q2Hx_q{LEU9TjYO{Rkc-kD$ zcfRBsQ@I`Jf?M+{Jpn>rQ*QoH6F}%o&dy&TXPp(Ch|itvLrJ5Gj|cEVx;t;#5BLPb zC^H)SON3iJzlFVI3vE1}vsNL|u!6OWaAvRVOok!HrU6N;%j3$X=m;LsE73Bn!Jt3f ze6nn&iyJX)uc%$&jCb6S)->7sqe!-B*@AXwUOUtsOF47w0u-rMi`51Fj#D%=HqkBj zE`!6`%%`duv}3G`qk^QX>0|KyxDW4nF8(y&|8sYwz3o`R`4;E+6R^R^%fEdxE@c%Xj$4N4xy< z3-MolL302#);8zgE@$0ihuPQS&aNoKgyXLv*b`cC>Y-kQ^FD!EVu_YN*bwdNO|)98AhK=3 z^U&jJ?EvdRG5f)&<~aC~4lSf%y_l%ZF`wF_*5J(Sok5`}P``BxpG}>^`u;fztmMN? zG-23gojJ>Rfi@*0+_x7ob3IlF74s2cU}l()_7Ob{5AbyCx2y*bfE8{r9iFf&03eiwSPBUP_WmXvB& zr{S6++8;Vn$4q<{*-{`1ymrUX$8I?of96bRAIxM9JU@o;_0*^*@)00>y~O7s8BMU! zX%vSfESWE~*!F9=2CIGC_)qp9trk`+AW`-*L-lrlc^^hCLSX3jc}Q&02fr&Ik)zu`Oihy*0bu=j}@6^}#Wo5!Z6HVl+Q(Aj#(#dU)tJ;^6n3SZI>z=aM-3^ z%KrMp_pG8$+>C)pzb4`Kyu)esr)++i+_EhsF~V3V2ai zKwF~3#H?0MJ&rYejxQWu!i|GOJjc!IWhrF#qP36NrtXGvDl?L; z?DSRjUPi2~KLXSbq)(KFHOa*5*!ioNZ+-R3?<9HeJT~aigME8L)HIK_dmKBLjHQAB zLfdF9N7OMrI?Ts7(v_0Biw7tb*;f`Pc6697ND^Rd|a8F3Qqy$|w=gr2x zjo%xEUMOyEtuH#$+;StTw-=Y6!5(J#X{P^p#j%m=^a#^kQG1pzkH`9@883x72MA~7 zm5i7U-XZs~E`+!zYfy4Y+zSSXd!E6U#67!31GD3m#O4pWnt>}YEi2tD`6+xo_nae9 zq6ZygQSKHz@9)H=eEGac7o_ncZ!ICA0<&uc^PUhvtUGzoOXVj_(m()EX zfV%gn4I8YOOa@T*7|AON5unaB8<(X;?M7~^EP~Ml>JxV}{DTN781x<)WOSS5NylNM zS@Puz$tJWJat~uyttUaS!A{RCO8^_hX(T#SB-@RY+#yvgCDjmuaQBh{?p_yNZ-~c4 zyYGFBe32-t;qM^kQ|N3-#UMUv7 z3zu*DoO0t)px{1=%GVebL((E*n?r6Bm0r73=hw@dO1qC(z7kKhR@>7DYda}@a8ma9 z4X?1TrD4_dxA3Sx6tcD7spcY~Gu23Rh=9r{__`>(>kyl+7QW8VRDAF5r#A(WyS&Mfn zQU|~?-Bb2S>3nM3S-vYfpx9wEfU;*gwF7Oz?emcuDIPm?QSW0T?CXMQ^m!aQ5>e%4 zm9GI~i*XkG#zI0EWp%O8NZ3gyl#gvj!xF;DTKvH4@_4G`ll}I{l@{Xy7{1PDRGkXn zX4A7^vbQ$XVfkZWEs4a-b6&NwAl;hUX<}%C=_6TdN!+m`VV(?qHH`NJb$;Qa831m!zI(}(C# zaDbu`F;XCSAOSJ?`%8Q76Gj-%Kf+1~`b2CST zKFg;Qneyk>UV>8rkvvU!WYq8?C`6BkAOc!^s5{zFQxmV=u%2H}YZy+R&25;u!fm26 zXTCHVB#_fG^1ZSPSt<}IrQJBbtO3bjs{`?ah{i?WmmsH1^L7u%>SZ(w-qk?(ahiDh z!u7(XzV>j$&u`y#HBZ4XFz6$(Msw8;zQgCwDuvx|G9$#hDC@&?iF@?1j<4h*X^O^y zr@@M|Muv8e63JNa&1#+9ye4TjXJlbJwGi6NeDL0UA>X?bs=ZChh`Vbn3|jOB<(u(x zt);3{p1!Ic1uYD1XvYlQa^eaj;)%Njt5b91mNXOPV>GBi&A?KH^qIMnjyDIx?U4W@ zbbgZRy6ypm1o)La8Q9;PJ;f|e2xm{8ordXI=+FwMNo2Ryz$2t>NhtAmvM+@syOYy3 z{GjEmOt2D--eY=pC0Nq9;n?m{IWeHAtEJAeZ4WyREgE97cf5G7CVW=EB~by3#R;o1tOpTfjzxM=qsDC;6nT#cHEG%6;#<@|5}g zZDCqM+-S7oKMY$ZQ?p7Ga_V>UNuW?v1QsYiS@ERuQ(@V@Iq)z+v=uz={OW{Rgh{Wd z{8C0jPw-1qd5&?1MylI0VV&_9@ieXl)(3+m(N>vqiU@uN)wlf_8ozZ^8tRE5dYuol zOu&9;zcE4H5R0mdzT$2pX_Ur^xc?CR+8msYbAvz(7Kxx20t@34C> zJ^;SS&{sw1h2?3fp2=ewo_4V$!h66`Ty(nlPge7eE%TKHhYLIN8PI6M4vRH4wuqmJ6A zPM_3$>z!=fxs1yZ+YV2q;)YVp$6gf z*C&N`N#w{9UX7IjC5O59g7%N7omX^6Zy75#yr>k9J?MPiY1w^&*J>5@h;yU5>%@9t zgPcw5nAd)52za{-l1zNE{pw-!#rJ3D@C%bKqr*s7F(m@YA9Bpbjc|oNRUl_*mFT_~I)3)jV)bO3p~4R1{(h=&s;=8EJ6r%ERd8aWE^kt` zp^@Ur+t=lJJTSK+P~qPmHJw;A{3v_ciDRb2qL1uoE-70o_IYr!hILy7{{v6yRxKmc z>@2;-DxaF3?kcu1--krhMM1-3A~bSM@TCk*PG-!QGMEU)S4=X5vN?LjzZfF!;68U`8d=9aqn^pMLrIBHgeVK-Amsf-@e;GP`B#Zzu8Np?LOVds6=(xCyY=&%Nl|U&OE72Tv<{m-w`n8;!4hH7=#{V zeqcR!CvK<#us}LB$YQ*#W{Y^VZsKgLe=sPt=d)f6z5B)3Sbz6-0~Tqwi%Ys*+7Kn{ zdjJch3iw}GAn=2$Ye)Xj^)9i%Uwl1vn<-8J0sN+%yKmbUd`G?hH(yWPv9##mV>$)x zU>N;-3d-`7=kB10D7$iz^h6)k#G>AwYN-YC0Yf%|nb4B%`Tivuqn?GFrEuBvmjsMd z7Ze$OT*rGhhk1LCRO#;@Oc1B`F*5S8r!0!FsEe$VyT2TYwmLJZIr+NUKoDATu!?=! zy2YEV^{K-FI44x|D9Z69_{Z+qR(DR@YV-5#8Vt^7!&X})`=J*ZC1@H+XRe7VB@Gt6 z1_#SFJW`^Yt9}RTFH4s$YA!I-H=l-c<`5f&tve=Gp)63~w@lo<4V(&kpTu*1{4`wi zU2$|`0b#i6@Mc*yGEWgk_$?Q-5I+F<+p7hbdOwjr(VxhlCthHUdYS&**)q(qNy!0qHx;>v+`oIyQAfzRk*@9 zdo_NVOA4;WPaeETb+$E}{j$)T0Y#aDmosBO=eiYoZp3cEXi*}|H(|w71E6CIC%5Kn zQ@;(cLU$<=9ELyMJv=C=JSHen3hw+oM$1+F^5F(Q_1gegPlF1fqjTByl5%+AJDV4i z?oE+s=9)9JZpUSwk6-%Pa~Ia8r|p;@HZH$t$XH6r^ zRBiljHs*0*ePZuQ!Rw1O92-3$IyaK=m%Mdc#Lpn$*yB9(mWNuR^5GBqO))wj-6;!q z8)NGlQ;h0x+bJxb=G_<+cc=&`n~x^m;pA&DYx+aiduacV`I4^ZetC|j>NHwdPVtZ7 zidYLb&T7J>=aL-#g*L`?r;ZI`Q$A)YkL!L!46!6)KqDuy7#-klOrlMh)=Bx$xTHA* zdrseB95RBh(5)1GB6*noV<4w%#dOqd_%@+actm@IUC7*#8|JyKiN*^l69GG>l9FxPF{> z;}kg3U)|Lc!$)vNt)*6>w0e8MPEeiNeYv^vR^X&xQM3K64u0R*)-uED9M4AtY}xJn z31zeyYt$d0tVVL7cZS3qt5UyC#7dy8+f#m?>)@5Rc=w_|E{D1*f@Fq^+aMUsECe^3 z{Gy653bSDB+z_5w>rKN@lkd zkJm`(h}n|;-r#%W=7g#8HAtb*8LHi$vPKwOAEr!vjO;drKK7gYYe?`NWB8k zK@`&ENv0eU36fX@9xF0NmHmfu0kn@6B#(;*P(mi%MT|w#BD($24d~;og$Bv@ktMsH z#MZz8Ct;q=HQ-3VBo&Mjbmg5Ex_&X}vAG{Df?5}dzpuH!|Lr9+E%Ti{bd^4bM5x4Q z)gipT)Rd?Rq=DYmD%`5p+~ud8ehCsHJR(?qQOh6C5819DGUedTpAgwswtU$#F8{2f z5A(pKrmuGb4H}OSV~jjFI-F`^wC*xJk7^MU@9r`o^pCppOw@z8QAyi@1_fKE=r>mn z?4I(2zPlo*iku|RR-evy_A|pwQHHq>Nr7Eo@T`vx{S~(>dW@}}C z@_yqjC`{rLcYZi$yCM8BHp>Uq^odKVUNExz)*$8bi_kuAhSlNkZMtK5vV!_;>i!h_ zDDU`O+5k4)CJVr(lTicMbkq5!X#krJ`$Ig`&Yq3)_S87>F3%6jwLeck7oxOaUzs1y+-zU;aAodL@W>j`+?88#C$lhk)2$PnjIbv*>fit!CyxHz0GMZG@Q>y1+}wznfx zX#d)kYo(zBVf%k~kO?60V8*ShJ4J1okIm|k16!?RZ0bf#6T%u&p z#Si{N;l`)&*VRQd9a!R3VMD6YjCQ=Maj_`IX!SKA z1D)B_ToXNfL4%4@*S#&O9ky!BrGMpuB-mdPf9sBE`?k8wS`O8AtigJ3cy~GGUHf(c zZZR$=(eEd^hG1C=b-FJM}lN#L$aLmQqI?3iAd*Pj;rz`H0t2UxBFPXvUw7FTa7*lj>oh9vl zN~IhqWvVfqt+4Ld|8OT<;NXmmCiiY8?B3l$nglD_$HcI=ricy}z0-2YGG)+T9(+Q1 zhHVd!>q>=QndnpQ6+(MXLCAHJJci-a#C5GZ1i?XYgX!^>>0d6&ronr?NSbZwu6CZv z=}vZtPU**JQFTW}IzUoBjLh$PmsK4`Culpr3dT+z+>%>NqLYj@pCa}2U@JMCjsNU z-}jVzG8Z{lHFJtVIaRsq=_UKj^s>XX1#b01p)8oUrxlz*Iu5(z*FoNxKk86gW4}^X06)qC$r956FB^m4KG{_#;8~QD30tHRR(8`KOx0r zqmZ7@&r-q=N8CTS#hr23YZ~spRjv7lZ@LSv5x|EdY8FQko86BU3BMZ9zmw?da+Ds* z23eT0RDY2 z9!D9#M^^qYkdt+SJ?41MB*x8-Dmf|oDvEuu9@8S4kih}vQvz27t6}$!aTEE+Wb}RH zExJJYHf#xN!eV^q%n(6j;2g}X%X2Vwz;tx-pv;0u60-XK5SC|50Lv~eJ|t0@r2VAdeq12;^e;SZa2;MAJNbB_?AvWopzI;`8uJGkZ`g)8^Foo1h9ZeYn?I%Q zKK7mYv%=`*jRS?VX_el)2Tcvp^ZCq4{ciVzDNmCLIKx(&9VcJ6UDWN4z0JV^SJHY3 zo|Sd2;6^(#wNg+^@CKmJsNjX3nai*-ydee-wd~`fE2G@AtE&vH?KFVSxWg6>6!VQ?IczQqGGJ(e8A$fh@3Z+9Hle& z1W7&fhj0{BA}NFM;nm5$C<#0qfRc&f)nHqJCu~sAL?k?SG73|JydiDbzwz#_2M-xS zpG0PR37Zm8i0@N@+T~Q8%xiz>0O+#7*IcnrPN;P>ax@oe?;WS`{Hxu$X|xu#vKvtWH7U{tFoYB4<2~ZLm*Whf&4(M9s70e3Lyq zL1$NACT>*4xK!3l-rOLf3Gw2nXMUgcC3TLNeGBtTPMy41?^Nk`g+Qk%Wv8X@lg`3* z<_PpXG|6FYOdEFlogUaH4^Mt$WM2htVq_VY7@5!|Ms`B1kM==aw9}DAQZ#g=+olXQ z(9Gnifa2WFib>&AJ4Y&hk<>ay>nxRMQMAXcTP=>UxZqJ9^$Qd^DgTOlr(ssUPZV=H zP(}y35gyP9dbs0SLdbLPU`8RwTkb%Pwu zjN5>H_}s+$1r4DSb{(9h7)%Vp%cUU~aYa*vF?60XA-((j-!k^WtmH3_tmY+rj3adk z+4=Z;>OIz<#H6-^=Zr6&sJr+n%KlKk>}vmowXg8rH<3!N@GbMYQBwMNgLy~~H!8^$X^9-5VwVni27JXRg<`Gm>Gloomhw^h>S>&A-)8rStYX|6} z`Sgv)pjNa1_)QV&5FLC0-B12sooNs{Ege4@gO@q7Dc0fqs8C;_4bTM+?IBLNRz!W; zuO!OJ4Ud&EdUO29gVOFU$q>!dkxOIZ?Kez8g8Cwhj`2)PP%E??g4L}^0l+tCIJ^tr zzAxX6m>iJvp)bku5QNKd>+DZ@m$8z8Q2OQxK$;s3I4Ym<0uEA85q@*8L1KUSLzUsW z2hHgT4pamslm`6J7L8tMh*#5X=eLr(9;^t?miOH)sSaUgzlAM!fO+CkS0IGB$evh$FqbTKcNHMa zU8qq8=NwxfHh9EjIJr2{ap1M*f+$6x7Og{I<;bx}(%QwDg53bloFWetP8)O7T~KE) zo-9}mEE5_YIo%cAvdH+ncgRn)EM>?6EJa{gTft z*|PzITJ3vzQ_Ljy%#WMZ=hhEEk0?Kdu_wn&AAe_t0!VXCjxLR@tx{V0ECw7k4`FiI zV)^;1Ltz%5kE&|#Sc|>h*+1!jpKRTJa2K+}i1|D{O$o=jPaSs_TRZ4Zr*jC)*T$TD zEaG3JIY!TE{x~Z{9o1ybejnPf-bsKo2dzPA&+OLWpbC)Y@Xu_I0n^?wMoZyU z6k0j?dO()aSS$?P8|h&bcq?8;+c#g3iKp3)(-x{;tWt#T5g7ezcx)$CqdTbVsj4o) z>d0zy0)DZ2OQ<4BL~z~I>*-4E7%C`AylM1l}bEBPQzcm-*d9HnQs z9{)qm7kME~SdP9A{Y3{;!Bg7Zuh>|Qevrj{b29rF%tc@7gEuhR$`pA) ze@1cOT|&dZ#H2bsO|iMyA|hEZB8RQK*6I4Ev7q@EhxMi4GSI%z*MWlBc7 z;4bJD)@_N#hzr~kmbNE=`Hq}0MC(q{rIsqAFHzKnywMuPF{Zl6W3&@;G1gvE+-T_D z9xTE0T2LwOM{@#4;>8Kqv(iZXGd0TY#}|i(2iD(Noxta3mnfM~E*#zraAqZv&vle6 z$0-I30As%k7VtLEr2B~6P&CM?&T5`G>Tq%$a`K&&zn zJyPhhO4(Q_e=g?A4mwRjD% zG9gwBaHqUcogd zKo+^KO0BNHHju8s zphp`CIWxN{4&(e@WbxuLt+c2Q<_Xx=QTm8xg_lQAtb*~jWBeNQsKf2oM4?r@u&)y= zkphvOrAw_FP3EE>B%;@$`Ov|YNCkW6JvYp^3@6Ns&=_wRG&GXq$1|1RT$}$v4Bi?e zr;KGV_x%FB^!7N=3u=Vj>uHTMksUD#LkF4^#+hvWM{2?!jnWRgUn6-9-*}aii+U4& zvJW7G>Z~^Jm*X<7+j6YtoqHqtqWDa*F%eYLoQ#v96)#iqv@o^QIh=rf5n6)$;DPDJ z$Go(=`02YJUDbQ?GCr4ma|m)Xaf<4zn&VgU647_XR9S+fF3^qX4Yi^j;&i%Y74?!W zT2?%DbUz$XbpGAUDIA0{ner`-ya5UXIzzmEyP}Ln=#2otycPg@x<hj`Zv#?b2 zeZ5v6`P4~aXF=a45K!Co^i~!u2(m7MD>TVz#d}4oE{GN{-$U&rG0t<8Gb}Lm^x?|5 zKryOxyKdjCLGomK^Oc0zffkvKxoHo9OckDuto(*h@r=735g5Wk?-=+{9%*vMD>wa zI+}ES1LcF=@#t3i`ICl2&kPFWG}tQKXH_+yNkv`G3!xE zX&G1A@U`~dE$a%^3_1Ni5$L{L1<41Wv`BV_(;lCKvvMV}Mk|t{rERrtv9Eoya#y}< zy0@Y17vfk`BUMFdF1Of9sv zOi2{xs30gbpUa*|NcSfHQkw_#T7G5$gqwk21CBMmR@{Jpy%N^dvenYoveCOT>TgXEs-EDCAL(wD zw*W1`C9IGSD*luc!160imev-=dOEfYx_bIrcBZy}D}tD`gQm~40Z8Wq2HaG13`|eI z6=_*(nd#XADag>s-1cAFme)O?9|b6C10MW8<^X@ANB*No$HLUY+J?bK$578q?{9lf zZLGnYA>;XufKV*(+`FL$4&}NUT|EXHTPIWCzn7~1VUm_wB-lVHstokZ^{ll_uM9#0A%Q>$AW*!X!;Rnt8gi{b-v)uK?2L3wOpR=8Z5Xe2_8{Qd zvhPD}Uck>G4!IdAbb#QMXAO-0(Jc^R)e0kzhk)7NfHZ)8txgbVX})ZYT4@D z>;(2F{$MWs46SV7*VcgjH~n~Ytx`K1EdxCzBRz+!s;@@;OP^ryy_r0}Z9v6)pgV2` z_8g$`%5EJy8(RxABWEp$8?My+R||kHyjHM)-qANQ)q8rQ75^m*xcyq;|A(xOg|6OZ zEdG~*o3UW^4+Tc%I;Oy#%Qt=5p{@;9MGJ6Z1nOo09+qo1fI!**twccQGA?wijVx_R zM1fY4i0f(T0uzar&GiAZ^q2noH}tdP{q3ROMqXEGtYxnSQTl&t`TKuS3e0fkTBiTg zeK-BT{SPI^EP6lve-%S}UKZd@Oo;^xph=Kf?dC8d214p8hHNbqY^{Mb^g9r);^;~h zmR&xWFGHj#3dkSiI3N&E`LzPvAN*UDy^+~-n_o%oO3Rg7j9%s5nAL!Z?pi4Y>@(4G zGSjlW837Qfl=o%Bcjz0L z>t3013A?yz~kZ_;P`0 zb33DdQ}F=V@v$c$o&h{JV{7c13Il5`T_9;%+nF=`*C6@ZvA|mETFIgYlFmO|3TeXt zKKndmlrsZ9xtT3G0hy~dm}%MT0m;(Z-bm-4ZXE>X!VXxegLFWR37`fDsB0yg=8qak z&oEpizkf94%C$Q-!QesReHSKZ5NH$*1Ol@Ewep(wk3I`q!=Jkh|7#Y#nSS9P{G6IE z1LVdU2+lqqoVADw%L_C?9Ec8JC3CGX0&-X00J_rD{CC>FG8^JeW+(eDJwWO$@Z208 zg+La%l6TP4hWJtsSXlmA2mROZxH-lZfoukZqb0CJ29ov-;~|w(H_-iUapa#z0-^pKJDT(?? zgCneZ$B=M<)Yx#PXMYj%M^39bL4=ig36``fhZTgW#DQ1<+Psr-j+kR9jiTam!~ z(6!QY_GbwEo}T`C%Ym`cpEYpl 0) { + output.write(buf, 0, bytesRead); + } + } finally { + input.close(); + output.close(); + } + } + + +} diff --git a/src/main/java/osc/git/eh3/cache/TestFutureCahe.java b/src/main/java/osc/git/eh3/cache/TestFutureCahe.java new file mode 100644 index 0000000..c666e53 --- /dev/null +++ b/src/main/java/osc/git/eh3/cache/TestFutureCahe.java @@ -0,0 +1,96 @@ +package osc.git.eh3.cache; + +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Future; +import java.util.concurrent.FutureTask; + +/** + * Created by lixiangrong on 2017/4/11. + */ +public class TestFutureCahe { + private final ConcurrentHashMap> cacheMap = new ConcurrentHashMap>(); + + public static void main(String[] args) { + final TestFutureCahe TestGuaVA = new TestFutureCahe(); + + Thread t1 = new Thread(new Runnable() { + @Override + public void run() { + + System.out.println("T1======start========"); + Object value = TestGuaVA.getCache("key", "T1"); + System.out.println("T1 value==============" + value); + System.out.println("T1======end========"); + + } + }); + + Thread t2 = new Thread(new Runnable() { + @Override + public void run() { + System.out.println("T2======start========"); + Object value = TestGuaVA.getCache("key", "T2"); + System.out.println("T2 value==============" + value); + System.out.println("T2======end========"); + + } + }); + + Thread t3 = new Thread(new Runnable() { + @Override + public void run() { + System.out.println("T3======start========"); + Object value = TestGuaVA.getCache("key", "T3"); + System.out.println("T3 value==============" + value); + System.out.println("T3======end========"); + + } + }); + + t1.start(); + t2.start(); + t3.start(); + + } + + public Object getCache(K keyValue, String ThreadName) { + Future value = null; + try { + System.out.println("ThreadName getCache==============" + ThreadName); + //从缓存获取数据 + value = cacheMap.get(keyValue); + //如果没有的话,把数据放到缓存 + if (value == null) { + value = putCache(keyValue, ThreadName); + return value.get(); + } + return value.get(); + + } catch (Exception e) { + } + return null; + } + + public Future putCache(K keyValue, final String ThreadName) { + // //把数据放到缓存 + Future value = null; + Callable callable = new Callable() { + @SuppressWarnings("unchecked") + @Override + public V call() throws Exception { + //可以根据业务从数据库获取等取得数据,这边就模拟已经获取数据了 + System.out.println("ThreadName 执行业务数据并返回处理结果的数据(访问数据库等)==============" + ThreadName); + return (V) "dataValue"; + } + }; + FutureTask futureTask = new FutureTask(callable); + value = cacheMap.putIfAbsent(keyValue, futureTask); + if (value == null) { + value = futureTask; + futureTask.run(); + } + return value; + } + +} \ No newline at end of file diff --git a/src/main/java/osc/git/eh3/test/TestReference.java b/src/main/java/osc/git/eh3/test/TestReference.java new file mode 100644 index 0000000..86ea3ea --- /dev/null +++ b/src/main/java/osc/git/eh3/test/TestReference.java @@ -0,0 +1,52 @@ +package osc.git.eh3.test; + +/** + * Created by lixiangrong on 2017/4/14. + */ +public class TestReference { + public static void main(String[] args) { + Person person = new Person(); + + person.age = 20; + person.name = "test20"; + System.out.println(person); + TestReference testReference = new TestReference(); + testReference.test(person); + System.out.println(person); + } + + public void test(Person person) { + person = new Person(); + person.age = 21; + person.name = "test21"; + } + + static class Person { + String name; + int age; + + @Override + public String toString() { + return "Person{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + } +}