From 4afc2de253eb33c0fcf631fb915250409eb43bc5 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 25 Oct 2026 18:51:59 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E8=AE=BE=E8=AE=A1=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=20-=20=E9=80=82=E9=85=8D=E5=99=A8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重新绘制适配器类图:Adapter 实现 Target 并持有 Adaptee,request() 内部调用 specificRequest()。 Closes #1053, closes #1091 --- notes/pics/adapter-class-diagram.png | Bin 0 -> 56029 bytes notes/设计模式 - 适配器.md | 2 +- tools/diagram/src/adapter-class-diagram.svg | 60 ++++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 notes/pics/adapter-class-diagram.png create mode 100644 tools/diagram/src/adapter-class-diagram.svg diff --git a/notes/pics/adapter-class-diagram.png b/notes/pics/adapter-class-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1560b0cf0ca86910100e5aa9786489f1fbd03b66 GIT binary patch literal 56029 zcmXV2cRbba`!1oAY?3_=5!rjsV`XGV87X^a&xTF1WzU>!l4OspD0}aaBAaA~-+eyc zpFirAj&q*(^W5XQuj_h5XlW`F;8EjUx^#&^RRyJU=@NF%rAwFB5Lob?#?QG*@E3`@ zqM`eJb9YNuM{`&EOA0;;{Jeak(Ql03UAiP;(c=@Xv*B`fUA%(SC^*3-Fa>^Gf4dwJW5pQoN;oLwgb`B!3;x7qU zPoH+}FP}?g2neLgVtxI2a^A|8nt}iIYww=qgh}~Kf(lD8v3zBS3JYmur>mE!zUgCt97O1uyh3maRPixg9^Me85RD5Yo8W{kut^&L~y zbdjBnrp}DSJHAbZijFhYoINXhV%(Z6q@oJGlJwju!FueCjX1%vc6j|1(YN&(iM9Hc z_m1I5B zkCFKEeI^_u8x-QJlWo}k$KFqbWj(~+5vV{90+c5Yr#;0S3+Xk7hEeY}dP#Xi-0-VLloc0Mlh-Fzy}H?t|oST?Wep$u;ku(IzvMsK#>O>|t!TQ?H zkXEVH9s-A+DLDKzV{z9z=kV>2&9Dwqk5=xoQr?i(ZF0geA5*5_QQ3fk-167a5vK3w zw|SB|Sx}zb^$}f5-Pf2W*A7pIkgdaJ@JxtLvzqiAC$|!5a{rN9C!^VDg7Js+?~NZ)*`&bwoX@?Nl%cQEnSgOu$2rP!PiR$_;1TbiUT z^D(q^e>|eCBT-1v{G6KfQ#>Yger~?*kPW#D-&9?6|1;uyLb0K-y=ERet3zBgViuC! zOs~kjgJaXM{B^5nXsS~m%muhbY*Ex(=cE%>4ocQO(t4k`y!)F%7Ex5!CEdc1TCc(q zSdUx!_IJFi7jt{%WEt+YIEx?(lGq#fY5WDL3BuZ~a-+JITE|~s;y7aC*j^xaXs&AgoO9u$RmAK555zRGm0dw18p zhb(VKDJ9hZsb$c+&QO1Z5P+@Um?RyYBJH}4_^78$p#0isMzKoa-d$zZio|SUdBoI{ zeyOzNy<>kn>&@43Xj7?LN7S3;P@N zZhz4_0)C`Oo#uwcO03TaYb09xfwviR#0sUQg;A2{Z!!EaOuC>d^IBfq#HPnh{z#nw z4;Ck-lVM9((Ai(|Bx)8(@QsT)Dvg;;kh4eHCpVH6UM>=od^{eAIo_~#^O@?AQ(rQ9 z1QYr(PS#f45qW~J4wY4#4~~f^Wl(fex)z)wOQf6E@6w)%%S0cw+823e4LE!5j>Rj( z>SAB%T{nHt%o$0WIk3`hv4^ISQlf%lOBm)tV9kV36THS0AEhn3K}KopMB$7kqP0`- z3~lCwijIhL)yxmMCGuablAiAOvVd?5(BO&A3aT- zsDcK>UB02OnO|jbV6nj}$BuecrMTG;mYF({QHGxVtGV=7JyNXL=qoY!Zhmnfq)jCM|U|=yZGK?{bYK4|_@| z|7!B93;P1unrbA0IXwOYCxV{09&MGJH7a|FKMEV<-sEo$b^mcO75gtl@(Zun ziob5)YxfS2Wu%Tm*4@O%r3;~5)?C>4b#ryqTVS&5?q2f3R&@jl%cw!mz&d&( z<3KmZnrJ@6I`4DdXXaoP&%YK5#YRcDzS;?J_Q)SwiqamOo*ACe2^&A|z^RjhgJpVC zu+_H6dzV|=IN|##HknQ5n{nN!0(p{r&c=33Npv9gw#416_^pg25p`h_>Jlr!Z01H3 zl~++)r7Di;u<5l#_s6XCZeEzp`&wz3bHc1P-Rv0CMHYc_m{IB;%t*W&zM(`DVL;61 zt&U(?t#SC(QB}n*zQu0&`}Fb% zb~lOsr`LryM|!pKsMZwPh!!~P6 zP`7uwxx;S69$#1wTp`RuepXF4Ok@$k3Cp=dCZI92-?-NaxCWK zirN$1)MZx6m~96$oMKrpGTS{ z981Gd$mk4u2Z1_Q9jId67q*fJ$qjCs0kz6m-cR!Ux?X_UNVzE@b4f+@4IeDw*bG2B zP}$l|kw<(TzoAp`^2?G7K|rqI+z`)->9r5nAz*DJOW)PT3vB%d!Di3A8;MY!68ur* z8Oy(SiW;1Cui#bAkY&SZ7b_@a9@Mmt5C6@S=jNs*%=^;H_hDSm_sDd#%6^r#{XHhO zp@d}JV|_dvPHkgta&kaAk{rS<4I%&K=q4UJSC8v^*H}lDzFVZ%Hsg1^C7ll0^`87l z(~ILrx({J$20CNN=5W*murPJW!oN6o@~bCXgW_+SId{Eh9qDBeOhzyL@CyC(0T*l^ zwwqFZ(}?7~W%OE|l7!3(stOdQ1z}R`_)i@Zl8!mqx&)UjR*Dx4*?j}$4q|GOVMiY< z#WvH(-(iF{<~Z{p>gz+cUf4(klb`HdD;8lMx&F3lWj(XwO_z)(f<|E-CYqXresWOq zo5(i#SNWhYv_2Z#m|A+Rg$Y)9L{a0DyMojq#~ksll(FGg6R53D{H1AiX`Sv&EB(+s zBY_5Ze~U1;+*>kBmGb(pG{Xlzhrv_;@e776R{KiYh%_&-YCaRhQ!S=j0385!M^;#kP{kEK088K&6X&OS;HDP zoh%}lu=XRTTA2~lcU;!pUSAJKH3R0yU4O#sRvr|p{{PN+vU`Pb-0g_x3#4@;eA+$8 zp~15L7Zs?NMdA3Ze?OJhOcTL`nRud=@^~493tqB*O2@;-BKH;|AS!VMETcz0=$d4i zx`LS);u;=E2k!`M@Gb4uS{g0aTn&=TUxj@c_7q)5V2_rw>3c_je^8mIRGfMD6w7N&Z@@-4JMm;1kJHX=s#T1CV+|MQ5 z?RY=BU}mwZ3?@ceDt4eHgWf#;kdn8f1BfsR-T_{e@M=GGOf@d$*5jG#_JwrF&xW7; z3aZP61092VC}gV<0`oc?)6Od%1&%C~edJL}m{N)wPOG*QRl0#i2ztVImbzvIs3q>J>$Nj~*8H zb^6US>FlnhfN})}6V`}Y6!NkM0Bcd4089=^s>P*o@4!?Fqd=l*hBgdrUpAmn`M=@0 zDUX1u7wYXdT56&tf_UyXi0s@CM(fO?SePG;`&LC>B!|UAAH%$}q0$GVW`?%IOlVir+>WYB)KLqm&D#5#LT;?Ur!A&h)n7rI2JX4)OZ z1~XgdX(MEs-4TF9Kdn<^sZBeDeG&U;J4NnYduhTxLSkkUa|A`bB$pyk@(%|pNF)x7 zUyNrzdWs#ucS%#gDWJgQR`gYYj6cxCb)?+9ZciQhHd(!4)$yrzgpM#L=`J3amqkV* zsPDC7wzzo&K_Gkd{6sHieSdtz_;CoN;jOi&_eBiqNSAH9?qU&Rz*o7T7#;P znAkL4A(+%u=UXr7t`E~ivQem`|NPkXW+Z-Uz0(^~!;i>3m5btQ_WykaGP z>eiW2!h6(`G9xiB+naQGLQM{82jQERX1A*w{#~%~V73&(MrW$+fNQ zG1>IpzY*uafcTouD8#=RtIBl?Pm~$c4a6nf?@^fZE5vt-SJTcT&5b>J+Y`+JDFZrO`EvyDYL{NQpE`Y3O&f9W`bBpMFSQi$T-4ua@7}xUGi>9W zhZ!^YH$C}aC`zmJ1$q+ti^a}DO8lY|lTw}4a%C*B>YP$wcWHB>w;Lu~lZP$1cc4m$ z^z`2jS7pWti$cYRyoFkSvO5^xH9-I@z%@zEAYQFFi^Y$E_RI}2fJ=|290FDBe%uB8 zrRV;uxB<9{^R@UQU1#-ffjRuyMGJp+{r8z-3xs4WqYjC&X}w>fXmp7s3pKO=D!_t!`L&rUyDw6c{7fY~;28U0DBh9-FJJ-;NORI_r zT}!+7BW)Y4uHE|M3N2T!3d*Q{HWlM2wPsge{IF}@-$Q76l}Ck}z>g4z><{uebTvr= zwCm_B+)`ont2uoaSRv0z0rbWZC67$7%TP*}0}wIj!w7fIvcj$*+LV^H9vXeG!uk%L zmvOkF(F@5Pp#f&f>ryZna|>@{{bb0{tBu6$=fq!yrB$740_KMsu2PX7e+H-+jmcFz z<}rMC!3ziux=yW?Zh*??>k22qmPfcGO6IH)f9qb9d`3qlke1YfGbQ#}c84)LDUKjTdA1r?w*I!#V`_*q1Nk z7+j9_f495~6-Q-S)ytSmHH6lTI8|ufem3{Az}AL+cg9a#KCqDygEB z7KWI1Tno3{g$jv zJcHuH{Y2yX^xau0a$x!Xn}zd+3iGymNuKQcHpQvHY|w-|vOwFW?Doj^T;j!zdLl!*VpCh3=(MaiF>J_X3iUVl|p`(@7HDoJ=Ti^FeK z*k%~Gu<1(+hApxN4Z`^5p0~^|qIJ0c>9bfy_`h2n$$W06dUCz}1x|gmfitYIo1W6_ z=e{pj55IlXtQ*PGr!MzaKi}7g(ZE29_$av#>Kx>;X$pJ=!mGe;{&_|H;s#$rYbAH; z{_49HxrV1VF(o^Gk-Ky$vSQ^ix4e!cZn`L~0j-eG?d4H1?;W)zsKY7-E4$yw*~Ll7 ze-Vx8FIX1Z^gVoH5cK;cwiEt;YasU4nf}G|PDs=SEwbmGFT#qfBOFlIIJ@OohAA-I zY#;T`b&4EHhT_AVr_T!xGKTH8#e3SgQ)1Idk#j#iU;(Rar zaLy}xV{@3sVd};Cv9+pd#Kd};Sxd8}(Uz$MpA}b|j^Zh2@3j^ud%OI!4iJ$u_K*Ze~t?MKSWR8r^Tx<(fR2bkm1# zI+C~^_DgIx{`m3u+0VkfXbx^}(?)MT>1X?6_b*P?-+O)cVOyiq^^v7A z>gW&|Y;l>&;N$&+w;b>G(t7hkZQaVgq!jj!I%G}RTW|F*XFS}R0~pb&pGK(_E%;_C z0e_F9CgBx##V@HX-$UOM&4N?&Cn}#t3U5XZtbF9`$@rtmkm%!aB|Rj?eRlGSk?>sWQVKVjB#vR1P{9sIBL5$<>*p-pYOu zE^uJyHBNK&M^$bs{V~!fg{ETml_LCLn6Xhnb_KRl+Q`W<1)mp33Lhb1VHl%fy zkJa<%=kVg=Fy`P<;%0an_~5Z({Sw^*O*(P+LbH~0Sk2)|mY*h%_gYaw1(uonkRrp2 zf4dNuO#{-Wl4pNMj@H^ju1k1r%@%6sZOt`^*p1qBgp+JHpK_OP55EJssa4RFqz<;$ zexiI1^7#4L$tRnkxA1h^jeCU1vX54MYtx_BGsN6LMUkXuknnWqil(#fO<^hzy-scc zgyny6vYY9hkMqHCX7MRyvu=Rw=S>0ph^p&WWaoH1Q(ZoDxk3q^1V0{2mgl*;Cq+-J zD>l1MB;J{_9KEEAa%w)dQjT2u%9j1F?K%%*-E8x-Q$g10=$J4fhVriKT84(+E16yt zBA7CIrjrW{rr$jL z*-|wqHOysTc=mT_>;BBGWMkLP8~2S}I&Vbl%2PKV{kX30RaaMc)70A>PGn~lt(su^ z{Mhoa25Q~LtlPlmSV^)pzsnEQ?OqzES~&*E_0o^9vCB$P)VoA5>|e7H3kt`l;{Q2q z|9CRiDMY?skGeE43F6hCiTfuqfP0{k! z!h6{fa^0Y`8^_(9A?@aGp60vdQ%x#(lHwGJV+F*?O!-kY8k9ZI?{O(-lQ}&^Y0-PcqCCx_cH9ycn>Dk>__XjJ5yey0><#Z`LmM?Fbg zGRHs3-Z(Lada8W(eBqu#nbWoS%+Kt$&&@ZGe2M z_u4*hxj1uP`Vy67nd!S$Br@+WfEQJ3PbS~}z0)ksIKq2MWHYAOpW;qC=D* zdW%y(2NB^Vd8j(#Q{&@mH$~tP)BWymk<-tE4*Qt$eVrq3PY=+rqX}-)RkmAGzQoS? zpVucpIpGH5pzyr0h1d+0paqaq9=N!mX>)ANF6EJf9*&hMP!8@5OU z^@VOG6<>tSF9jB{)&+&LNnv5C`q`YvgxoNL*R0D*_KW63wp%HSLV#j8oD*9eCp91@ zlmw}zprU>E-_y`-`Q$X`yWE>vH1771_zJtkk#^n{?CVw|`5JxOcp>szS;u;(p9nWC zYb1eBB5AxKF;wm#w|e+6DFn@s|C=}B{uu8^>pbNcPlq-589yl8X5Nb-kef^z{o`mj z8pzZm@3qmQ2#XZH#AsP4O#iM_9|NU^Du#?sX+v*UskYgN&&& zt*>zad%&a+y0COhEeSH*;`CtC7r{%%c@JtIe)ir%5Yd;b32gVqTdzUikUHJ?2%TZ$ z#lIzn2H|hC%g%+TibFihihtfIBEH^D;x;K}nD<%9EPQkUFJ$=`d&ihNcU|cUn z)TX#-)u-1R@0zv#GUDRwP=aDpokIvS3J7rw=>;U`%HXXj03l<} zN>@`%{p8DQ?YwFXtb-hq*s5I;cAQ2Z*dzZ8Di8_T3^KN}HU9h4W1h$l?Ud}EXppnH22Cif>^228Ci~aWDv8b7Sf4h#(^p|DA&g z_tvWny;=+V>l5#xr#)qPz7!>rubx^78GMtRT$H=#>({!!!)m!FO3}2(08zZw$2T!R z44${52lMRFfxYay`GNpSUR<0*%wD=s2kmSnK@u8`V|@4ytATVlj+? zkU^T3?qVA8?dA<8mOEl=g?WFM07IMylWFpfWrmlUwMd^;OPIF>i+ij+iu>!^L9F}S?5FXJ}txL3l)?F1=v)&n3d&a%`8bD2-M|5g~N3@V*(}!k!MGXVRZMipsL+5 zC>;!c?^}|hI)}dY9e{Viv(p3B7nd}r838`l|4p?A#lsPkQUWLAAFb~RoCw1V;YK1H z$&7>|MY=jxG6B80Uv%j;?A3{X^AbS8IAwaDpK;1hqx!{*0l|39Kl6fG{WzerB~HZx zph@=g6I&<}+zkMwq0aWpP(Tv0b2wLIr zcIrDx(7U)y>id(4`WE)O8xrW2pIyYdwJ?}Zp*1CL+zXbs)v+(kY zIP6h_r{iIQ^IZL>!ou$DLlKx)R&g+-82SO8BuVQobzU!!GOoT)dqy=nVY*xx7!K0Si;mRLn6Jaq<`CgCv2 z+f(@*4pjQt$)n=$Z|<8O_X-R=G8wy-Y|@AMK%x5!5r{9dtJ4Mg=UZ;V*jbiFH`1*Z z0~qfR-2&MKxU+=zqlbCN0u+(vr3oO47Yy0xbshZ?{*wZ}ol4S7VLdC}p6bo`_;^;0 zw3LT#rl#N1gzR&ElSXtTn?0Xu@;fx-#BH(vZd#rJXVEUpcdEUmXq%`BF8Xmv%7? zrawdMv7RhB1qF1DN4%4OZV$ivy?)uD~4=8Kvyh51%A zaeUb$DfQ{g0k3JrSwZPttS?X4^=_04!i5TIIV^rJ^b4?ZAepLkeiNITx@FvVzsdCd zzzU#pE2?yzINW0PE<|Zq7;QS~RgdMmgd5 ziN^GEa0POft(yFyI3oUJ~QM({OVd%uFdrYhYDPuuoX+n2tLkSO$9p zYe!dt^&p7w88bw3(f&I;F~Q~3o3h(LGjsKzU$8Qc^h_5us*Ee4I_j@=P{KU6t8u9vZWb%>dD3qegHdgfv)w5O&N* zA9J<5t+bt`fy!96QMSPR-8JBGz@UV-!fQk!bDP;keF|TxjTr)6+-p@tZk7+DUk>vaDz_XK3?Tv0_8D0FQG$ff-uTQb>(SJ6!whz zZSpo2_wN{Q)N~{00@VUChU@MUS)E_Gou?*~xq9R)##Z)@&z^gj-vTKnF3l;v$eLW4 zo6s*b+$N&sN@Cz=Y}#wG2BCnu(mpF_`wq)e68I+zIJ9V%#kD*;kTpG z$2rx-j=J*PS4oaUChgo~VCVGA<|dG&(PCFAw@aGlc0!gkSc69e16B@C&2`?%@l8#o zQT}pE^hCF{Ine74PxZiX5X`?qOXl<17Fys7tw^`=4v>LWZb81UG+q3i?015EZ^uMm@YnIC?WzE8#Gyi#+~WPv?wt ziy4uuV$Z+#+{R5#9)foo=_>OW|F7mu&g~ zxU=xTFv%c)b$NB7?os`V_C!;}}CEWMFeghIWX30k*- zVI48csH#rb@Yy!XFzJ1Aw>WanS={vN9k0!A7+Mg3=p9bZpTC9W18S_57||b^Q4PVT zSeZ{twg>gfVKxWDSezZDZ}RYzXuQ#v0TM*-zn_@lc%$Xw-2DL?ilYpnivs7KrBQda z+@D(n`8kQW5BjCvUO5)e9stb}47-qiAQ-2#_7Hyi<*{n>d1Tj%bIO`FO{FiItPfa{ z9~}|fEf>!@DSG<)qz-4@*wj-#WA?Ii=P(US2kt?v*B!cwitjL8X!+(9a5_x|gSih? zDTPc~oTb6H4-CT#<=_3Q6h7*Z@CIOVo<_Rxm8*pC##S-(Ql>Cw0Irn*5Z@>ktn%yi z$e=j2L+g&Bnot{I|0JbViJwT=9Er{wb7sz|O~!zUba#qkbU5AH$twhxC`0>09puqg zF{(g5w!+vc1?a#{9SeK{ErZv{Yyfer@y>v-L zhr*;-xs@!zb+#fc7d~1cw*qWP3XI3v+Hv8uKwLn>_Zh~RkLITGK8*RQX^UMQQRDg; zY!wvT-oG{O-954TX13v4?q_Brgu^FZG~un}+uv2DA30L2=ZPjT6N4vVvij@`jWaMk zF3{j3P;Xt9zA!7ju3alG0W^2%J1uCDk-QrB$o+E^EI+AXJ*=M2G7l}2h$u*iMFsnb zKr=wuX-4GFZ-@PCCtTF>qI~;OTkPqVyderEp(wx_XU8kqNY`1HE)$?utTSAcLWA@X zOuuxzDCMGy)ndAW^h{Yu<>F}*)_G$MlqXef-)A-u5b4Ci;$YcA@}sGW|7=>mQ2f|w zA2mU}|2fBu#vO(UH&+1wr+6Z}gglzR;UVOSSatu(UMtxx`j{u%<6rPHJ-C(pvW%J{ zHcdaiz?1>x*ar)SI}-7(k5SkO+*{GR`Qdx5FQ(S_-`>R@_|g;*OWhB=L}$8exL#$R z(1CFmr7HCPsw~^I$1|RS)I#Yi+D+{2^7WYa(mC_QK~MJ@{WKiW_FFA%R5l5-Z4WW> z^d|lI`O18^lf!>zka|Ylh9$-U-W}O^G3$E2JC8pY3R3F}g$L9BqQ&f6izDkGh=j1!9M zb$(@^VttYlSaT=R!kxfdCUCzK1g~q)qroMJF{A8Ff#kbR}%>hL*X}{ z)lP0X{1(Mc6zfd_vqX)^BA!0?qgb3|F7_Tt0b+!Ald0ZXp4vl+LqwcOl+x0ttPaol!g)|6iDkALpnC+>GhcewS)h!if4dby4KVB3fB-1t<{~ zM=ee_{d`67<>GV|miXxp!~lJZ|4w(wlqIrJfI*@6gIH>e4%dViiFqiCBF!~Ih6?wQ ztrznDmFlAJBwO^}szX*h?+EWy=zZM*CbO=MS8B5{fnDzd10=&ArbL zKYoi0jumVpjUollLIMjtcVyQRNDd!;I1?Fzv0_FO=h`yDn7`u5&sN5I#b8`@fLu2l z)SR(F=F?faBk>t2nPKJC0P--#U%96MsL^qw^e@sv$Q>NUVn?(S{cb zPKLZd#QWPvmj|`MNhkCO&juOyx%@%CE!)YKyZtzy0HViE4afQwDRj&3ivY6f&}+JM z@0&1q=jSF;CrL`gJu@}YE&GAiV~a1>wO$4v2|6t*=#{! z@wm0hk!B#zo;}dgAqR6p#MYkChXE>z->}PtN zF!CaQsaqq#T)7K;#@BI!3{A%PqoBmVp2OVIxJwf*yEGZlAFH=`rK>fB^$w_ard{Me zXREm99Q{H^VQQ`6ydFq^H9$f*5*^X2oJ}Sl%$)}0&{v;M6HQyAq%4!cuSHp@TNas` ztGqKRlP{H3mi>WjyH3GL90!7nKPX|1OgbSw6J!zC!5QeS6a+RF1RO14$yI&dYs#S7 zLb(f8QPi*op>FZ1C^=p#q15t%>;7Yp0VjD4ZCHUL&Akvdmxfbfd7Tg5yFY+I{r4-` zj3Vx90vm(x?_8i)mmK4YAGDh069^%VcRr(piLhcazoIyt{7DL^Fi<7Dc4^RtTrM>> zT1utfn$fr{ReWj+Txus^wG$H)Q=cdKu>fxiH&Bj`kGDQf>)$uIg#@bgWB9D^dKuCc zbiv)f2K$y-i9+v$+1Rc!D*$qAAc%=InXCmiz>&t>NEn52T6Jp{kfmT_V+B0oEevu` zxGT!8@xw=f z)R(6@p@k%#bapPeoE1llPQ+{8l|a5ROV`_f(XDkm@i<~LT4IYhZm~UVJxJwu6s_2B zX&S43R~dC~IsO=Rl2M{q1u8)=9Am-l{rXiq-Tpf*#@t6j;?fnbT^KR-OMG6{cq~P9 z3hvBk-R_uVD!SbaOxNyG*9)NZw|Fpk3rJ;*9)>xU<-T+gn?c!@D%W4%B6*rcWn|`; zc4=KYNSKwQIXO67{ZBzIx=KVp3yRu!*+Vnn`OW-yJ8NB*PWIO^JcaSoKVR7n*C(7i zU)@;tilURKHfwnfe2Wmnzu$Q=xCGRr@RNY^2q<|MK6KH$Au7b&mT5tgqK_$n{#*92 zhF;S9shr&9X3(l`&bjt*A$1H5C*Pa3G;BB1#9%}|92^`F{A7N{D*W{Uf?IrDj$Uk^3k>;XZrHCbds~NLYYtAG2v`ABY z6%Cua6bK^ILx!$_*BAC6O9O;~NL&`d&}m2Ik=*qvC?Hc8kIIyzsBa-b<+*02=4by) zU4eyks`;6Oc+RZZ7}amqU2lJ&Z|ZwVbxbRc-`+Ew`tT%di6kC}H%J-5?q}*FO8cb+ z?un__=4K3+e(0!EPT!@Cvy!CAYQHa}HA6fDUIF?B4diAVhUbIz`yFn*Z#sAYE{3z`FAlfnFd7pH`|aCD|MmtHEkFqC?Ck7I6Y^Ux ztC_BLjI6&~So+5mqb9ULGFE~b1O$-SX4MGeFso*UAw0XW@oT$Y=4eqYMKnk?lpu({ zH*EqrHz=DSRiUSn8ukI`JrZ_K&fsbHpNA+ku+T^yJ-sTBBhL5V-Sy=0YchS~me$ao zI`cvD%i|AEMLFLs3dpmR(IhZaukTcbM&>`T`4NYn|L&R~HFjPrBI5K`8-RUC@D%##utk;P|MEam-@SNuRv$U)fyQFz;5g}$InT|;1Rate zrusK`?ym(AN$z|$52Fi>xhM9EoUa!*r?$ND&)wc=-B{v>Ezg_69~m57zDm2`O?9|2 z<+j)sl6p~Sm+0C-qKrNP25-P^K+3CMYz3rQA_z;+*g-A_5?TP4kan`<{(F8LQ{b&> z&Axs88aFJ>*Zcroyu2IO`iPSvsD??8f#1(5?8fWVMGfZoaW)`67x&5FdSNBmeR`tH z#%@?#%TGT~q{(4J84kBF8rLKu7PS_o@EtX+PjIck<_)8jo!%9d=ZFEdjd5T()_OSz zhWCQ!v~WX(Llfod=Jv4K!B+Z;wBvMD5uSk8Bl$df+m|T!?g}7N#Ip!4OyD#Wf5J&@ zf$omc62>1o-ykRFG;8+XnEddhE4pca{2^3_JGKSvz=W2FYX&hQG8XmC%Rd+8uaF>Z zN4&s^TFLo$0ysRw>bsSf%AbgI6>N0;ci~0&*SdRWSCx28(g^p9E~kL*?4&<=`a}%1 z*#WVyfUKv0YCC>!-g_wu3<%5U1kL)@{Pe$aZmus?f%I5><2qsDH3$D&bRG$D$7NL6 zG1p!V?VsO-;Q7B@PV5P7{Tbft7(Xp2~1=SD&QoyG*rbxakC zzX8A|xgRI{G|JNDFY%}3Gfsq!J66R#vLoB(En*35U5LQVl<=a6dv-WC;a>p*WKlES zM0&zC6bp6K!TJP`jLbz@&3DqcfB*bRT=brl8`tp{MOvAg=RR-r-M9O=r@_UIv19B# zgi@KAjrqC&s^kSc2cVFGOi$|OQRqt7xoc&^1ak~W`*7#F2}vZ}&0t9BeTqXav~6>fx8f9zo+H+(=eCDyjWJvcG$=pOMoIph?( z=$kRv5s>`O-x~p<{SH_KAuB`5?*Lp^fUTaAh(Y;g#46B8XMLwxp%9AiBB>8Dj^a;X z^;@smg6v26IR`}DtMfuWe=Iag9p{_RKzYedvy$gl*~_4k ze%U}T`;#k|FgQ^!{aM@kKKPS_9M!Vj+LhwhsIv!v+vlaM;*3nkF8W~%#Dy}QM`Abz zY6JnkkoL#Kg|zEW6%vdZG)Rrf*S}kH4^g;8^!|Wci0CD2L3rUn+~_s&-s=;Q@K|&2 z(+1W34J8weS7nG4xmFJL3#Sjb@U#^Rv^vPjcZF zaZ#_LMY;h~s`a9&iExBem05Efu3k3ksoc?PY%&UB>(R7Q&78W%WLy0Tz#n+SxoF%* z(5hs7{@2G0sm8y9KE!##hMq240cFdq(R&vP7+42ACe6cE-7g;sLE~HnXaSK2=;H`r zpyb8By=CKu{|R-1)KSYTE8xZ9)mMR5^W3P>+eMOo9z1=Z`fY`m0ci~$L~gK80g{JZ z*ci-JfEb^XQFn21fl%fh$0%HYxOhO4t8;xPd|GDokrkpBU<;T%Oq+cD#q@{Q1^N(p zZogPi9Q{&;DB$mQ@L*ocBUfax-NfGzT-p`&yqrVN&x!0DXan zbWdx8y3Kkn5APi_h5T6yU7fBkB1$;zZ7#Hz$-c{uqbCZZc; z!iUDj|3IgfU|k}SN2jUh6C?*t{UVGCQ?81pvlXAqnH$J|D4BLR>BI&ze6Y&+m^TVZ zl476hIlq0_FsG|G+G?wNNSZyM%x0<6P6enQ&{c!`s*cBV^!Fw|jQb8G1=OEEe*idP z{Aqu96jeUWmWdf!J2G5MQy}Q3ShTZLzevk8&7(@!xd0p2qm`uDEZn5t^3QEPT zBjARK5g^&;WxrX{ClWstp^CT#n=RKYKceMfL#8B@H+T%Uw1|I?K`{Z zH~h;%6?&~lt_~;ppIB=gfV~K}2)o5<$Ej`MY+&o#^c_4jGu5B|>DY^@ACl|#=PJ%* zlq&#l7K?{!x`)E1=6OaIyrc$F2r&ZY#s4&=QM`0v4h(PcHTo~z8r-YqZ{qGVX|3c8 zmjz1PqsLwS3+B#KxZVRp3SazZ+qS}%D3iHe0~^VzZ|i96er_a?7Al^j-j7!AF&ry& zd9sjxaHP>8zCoAh20zzLPaphp(w_BU1!3763ruyX`W?z`^WO(n_HXdt_tbNeT}n;R zxfVCq&(yW#A{bjynhbZW@O!LG)gnTD+#mR{?}MQGJ3hB{+*6m zsP|t3B91&n3AEu42L`2ImV7lq)Wv(H>Qm1|yPrxK`?<~&BapJJKM62>f8VdPXO;t` z*mu$~{b>17I{BeO3HW6ctLc((Y!-%cPlOlD11whwiXyPy_fDKampQ)AHYLK$L=pL> zrh!`fGrr#?gsR<6+4nLe*46uthbz9^`t3#Um1F1u=HG||&AmTUB6&JJwkc9GO=Dj2 z{T;3oc5wYYu9eP?F-S#kBvUzGX3{xZd7CEibhhB9I=^3V;{9i>=q^sOKZ$Lpx{4{1 zK7YVbJp*P;=mi+xAq*FdY{464Lb{Oxxl{aKJDGyuj?(zUo=VE3Td@11iBB2ve#T0Y z+<)Pj_Lh*sFLus0N?_pjQObU*ewfznzc6ftcf$;iv09S&K}rLzsCE3uP& zrr6qe^}Rw3CyU=}Xd_af(IZ`fpovrg3DBu=SBZp5=DDOZAycJ@64fflt9Lqg(-$pQ zUQ)lcT7HAy8SmQi(=bOd+(MfK(LWV!(qS?hz+S?6z^G%e)nD!C4;O)TLSp0I3phT1 zR1pzPLa%Xv2b1t22stBwi@}~l9g~=tSmiKPiAGz1LeWL<$LUPMq~oG1t3egYHOW^; zXkWw~aeHXAiL!GO)SexxZQlPb7(&ib;y*~b0X!Q~9y%p20v zPp;?_{KfF+D^)!r7HNa0 zT9DO_-hOUbKioZA{qJ`bv`aR1(&vWGGZ$8mv+HRu=ffi;f1gwZ##+9SREEq z{-=St_k8*IVeY?=Kopg#Tt;VF{fw_KTaaB6t^GWm9-ZbF^8b!$BtMv4x{|2{ZJq*I z7tsyWN*|3PTq?3;{b>Yu!Z_V;Tgxt9Ia%!cG(>k0$cP%!U?g5hQ^nNUV7<@gIAx5{ zd^B*`)Wv3GVn*uKl>|!dfe7(;@ViBv64bvO#p8h!nJ-t%=JU(TfRx=|>{rh?edJt+ z&pCs^*ZVzU$}*rpiQQJ5)nA%HvT$_swFd#F_CP)J%q4NSpZg8;*(n?AZvu3ki(4HE z&xxps99iPW6GQaqLqbA8;3AF#n8>q=qmd>^1*Yq8FxyHsngnm8eGUpvsLT+EOKjhv zw2|+RVbYP)_)}P1NN?1z+rt1?BB@~eWc1ppq)MyL87Gg65E)iK8{j!^cl=wfo-a8!Y zzyJU5jqDv|kJE}|Z?eZ}%gjjjCfOrOl$E`O?3ocFtCGF5LLw`Bh9uPY@#^~g{`|d< z>v$j6ab4*=y@O(eW2Ya#YL2%jXeyo{7Wl4djFe zSoS7Qw}VHCQEb^o+~r(qe`4;ZK=WwK6TPndH^zm_1&L`sNl zIha(wn}$4prvSl7$F#)aDXmK3gzp4T<=vdG);9iv_FRcZ#?s-bK;OU)R0Qo`20^#0 z4Jw-cTezIn%^d>iT%@U7dPa7$49tll>=jLto>N+Xtd=jJZIbyZCPwx9s@CK2XZYd| zRaH_;BwEtHtFCicey-wj2Q_bWuWj1h)U>p;zGJ9&LR~qDUDKq|jed`T`MdnqWKva9 zS^4UigN(euAZ^P%E!7wE|NOAEVsc6 zcWElV{KJswH*VCFnWrXH-ioAd1)@Ov-5EnG`h$TS^<860ZaI(Axa9G(4$H6)8c4LI zkQZODlM!F2h>(X?*6;UxCL|GT9pnqdjI*{E#i2h?0^jKjUVbm1yI!>Vx=>vbR-72S zB-{yn#EdiNS?Yb9A8{c!0a(!_aX`Tpo{ds9z* zJn>5bO@f87v}wNj9P3|iW*+~+8#ET!Pxwk-c)(xS;P?Jpb>A(dmYu-OvoFhBgq=8v z>f)Ejp^Y@Ih}^F$P{Vo>f2?E>1N!{iidEnXfy-F^G)7cu1*`&JYi$YkSeaXL40HD_@79$7{et&!Wdisej<5BJ-l`VGlU9M{kf4@gTHKu-)=G6>>B+VXde4F;F$59W3<{TS_f+l2jhrd#_npek) zsT9CMR*J-J*)Ep`=?=jk#Cf#6c_c;V59zMDnwp;s9+@}Api;~MHRZf6JmXu!6T`PdBK2zuicpT^B;8zGf58aqI?F|%)YY~NYvXN!<&SRS5bi~mSfhaN;!GvlB_p91Z@3>M9EwE9(fsil}G>&~ba~obB zs<-K$?1Z?oPCkJ`^&cq6LOO@!4ZeqEpxgh}WheH$Fy2}J zl-B{iA&@M%Lv3^KPaUMoL7#HvAaXFNvm@HO2{(@UXbkb-C&etz>90@t7~)J*zt5L3 zFD*o@QiK~QF61>a+7_=L_rwjzLUfMad~PO2H~g@HoPB?FWyRv2-03^(WQ>H(@z|GX zX(!M@GK@e7Yfv=;?Pshk{@&+Rz_yWZ*4 zdT8Mhmg*o@>TTphZKl1%aMR8B*J*} zhksr5HRgiV=aaH+&8Ba!F11b-7aBJ-MjVEHdmyBilrlKnMwRnd z=j^=W{e9$iiT$N|cnjiKHbCg{B>|pRqWAdVScQO)D+|vv*Go6Qv<512<>QRdrvd^Y zQEfW{{cN7YT~S@)o!J$Olmms|H+b(wx;4u(#j7>s?^6(QtX4-!-#SihXL+uAMZQ*d zj_u|=8o%}-RU}K%_iQs-Rdx*RF+<#n|1RD1N4Opp8sl_DgIl(1RBm0FW%|t@6z&!c zJHvTFbqL3BV!vQ=#z&L!1B0QxvS{{u+F|jpu*QgKl`~$;9`P02AbGmg8luQ`ox4KM zmtQzRG#t9{sth~fX@p}zc7)e7ebHYHHr2K&_r>aoe~b&!|5nzW%*oVa(ipkaD^)HD zor|*xkCSy;)vb3=`$;`17$9mB6Pn2Ww%0RZOt04Y0;&dysIjPHK?O{7%=|xKA(l+a z;BlV*Q^FjUMcminCYrw0+18mY;=7S{T!1)Y+ZT#V^G5@lr+_d=G`^STcwsRsFOY|r zZqYrRmrEX3m1TbdRj84WdYz4qn1yNU@bsq!TdQx{n=EURPfS7#Q{U)Tuan+)O!O-S z0WlP%(3+%vnc}Je4aM;+DX{N3TVh@{5rB?jtjxD~rO(E>TcBb%A=P&0HI3gMPxAIZ zr2?UhXk)jYir6{E`WtlvHHt_@uQ)s`3`lKF378d~?ud~B^~QY8vS-^|MmV{f7VT3a zGA)(6o-_OygE=gHx}lQZzSI}ZvhU?=coQc^@3!D>p_RH2KZe{R2M3W~Hcr#pntFrZ zX0lwW-j_GmFvaz7;zH>8Z~{aNn|^t=o9T}>t1w5Ir2;(~nI=V_#7{gkeX+8LTM|x5 zX9a~R@pS~)^Gl=>A032BqEVISS$x3#KG3%0XIcfV>9rsi?3yRHZ&2vx2j9p+>@Ly(7g{30b5(qG=mqvWaXir~1CC4?X5_YI#Vc)T` ztL?YM$TEL^iF#9H$XmCg+7D}BZ(dv<-Mt~HF{SiwSSofs3)7%pCy1Ci9A7_3%0L60 zG)}L&$K^FEy-&_Ac6a{krXq|X&BIYcLM4Z^y)8JjGqn*MC3xd&(6_+L&z|eT=Ot(N+nm1o{drBqZ$C zwax3lOPlV^@XP$~<%_al*P|)s;8%IJeSZuR43 z_89(U(VirWhmt(joHEFv7x<|OhuNg_&h5CB`RF&b=z`(qpgO{I(!?Oy){G$gST?dP zR%{##X75>INjrLjH{VA0+sJFJLxDrR%RDa;sFze#Evc|iwhg~Z$ z(o>Yr(?KPa-fa=dT%2?D=0hv+M#b7FekT@ngFR~f$Rk5!g48=bHh0TXm_~EOSKlsQ zS*C;kVf+)->dqvaT`i=#M>;bpLT=zpj44R(wR>{L|KaoP6wE-%PMbHuILgvMOeO7W z&P`YDEPN#qVZn#%>x`DHGpLrplQO8M{RS7(i zi7MW%i7at^89FYU==VkU35)t9!bu@53%hDNt!npn-Lc7T3=iMn$k!|S3n77qrZ8ye zphWgu^t2iNn0(<6f|x-OKgGKbNafm!{2yp(#l}{2QD3H(8Ejb|LUrPcXYCT)OHUzKvt$&VIE`Z4OknueD5d?Kq7zpRVMw^l*qt4g+Eg61P=X!h6*eVFd z2pmhMAf}lpBxJDrR)l|_P186Na#m#8xAPgA{2QmfkSB$1ngFO@&F%Jv=t48dE@ZEo ziZFO>cbUX3`^igvM9vLM@{v82lw#M}JNgD)O>0j#v-USp53>qpnD@bE%S!%W+MPMJ zv<2fI&l8m*vP|sb8X|kCOdKi$k%|_%`TU0TdTv^cq2~%7+JXBEjTue>5GhXx#n>BP zO@3i~eevXM&i1*^R{Z^&@9XKM5tqSIRzt)1SMSyQ|u=ZYmHDao+{2eafi>zdQ?09>LDdHr; z#Lv1`bv{{2UQCsrzgXX z47mRlrZ?n!ix;Oa`PU8pXv&R!cdQ;U{f0%dvRo0U?by#Y%x0&+N~fYskr4Ypm7JV`U!C39py#-T4Q z+CzUG{Q=-;v_#0Y=q{I8yV|EV9@j${rCvG${MjU(y^K$A58V&ILhc$Gm#&43!SL(2^oFp!93qRw z^}|V3cak;$K4Z=sOTXKvZqmGQcq(N6xQ@Wp1dn;<=8l)ce}?k(c7U1qs^fL6@GX1B z3t-VV5%vjF}d z9C5%^DZRUz-JNP{*?f1kANW{XyO{SF>Gc$2RB#s;Uqm=Q&8JlWBo2MT7oX?~rOvE5 z8{&RXs;5`r>sS9r>G2@LSqfbJ8;XI0kE7T!6JyG(Q#_%l1z6T%;f-KT#2kVF8z=F7bR`v zr@>fJb8pO|uHX}TGIL~25TK1SctFOvTo+Kb3k$_Hj8K3>b>y>ZG}F&JLF_o$_7?-% zW^-3s!Cl0Ir8~Zw!m_=V-h>rWa?9I}&Sc!{i?O{lt;C7$&|@f(zQVD#2E-orQpT1I zK=*(ss%$&y=hDGaOFQ(^g!XwFoth)5vqdx(qEUB3N7EZVav_u`)T(oDHqEu^t-t&1 zr)QRu{#+R^0bBx~D(mZ+XBr?7vz!Ubh*~bCkLv;GQULMcE}81qqi2^YSi+*(Ab1XNYZMX4W0PUisxPoroestky|}0Zt$IbagHX9i~DpF56wkSOrx8{rgE} z_H+o=Oo8FEoRfR>l`^HMmHv6=O-hNR&v&0=u4%-qEUEPf{@X_S_gZe+%zna8e5Z{2 zgSX5D2#C{s`-Ej07|7LVI~{6t^JDFPTbSSY+-J+O{Bf~`C+w0Z9UXHx_deFK?fhj$ zOp%+7+7`wteZd*R^5~(W{(%Sgnc(6g^(*Y({Q`}B0#^%Xli@#vMn2=7)PdOCDMPpM;jRV1;{(O<99)%Z`jsqJ^`#8A8^t}sXDfKj_-UAZ z@1$~U45`WEddOIw1C!WY>}oXI9MC5aPiBO^dr)y87FqcXZ=WXC8xx9Y^me)7^31ah z{(^}4V&<&zD8MoxBeJ_g7)YfQ_>OXDC`luwR`|W~(>xPjt&9;4Y?@)YHmWy|D*X4Q zA*Ss`iwNS?^KZD3qLuDk-P8))=@$z>z4+zBnXL_`HqbiYg4s~> zb~qH+{!?lApQp5Nb&$vPe9L`UF`8aYy0a7$iHRfhDfDBxza1C0mg`=P4ndtjJTt6Lg5RbkTkd&r%KrWz$QnStFs-Uq^!oH znlyX$g{D$MInsDYWR1Za*nnR@ozhfW@Ky#n4r8|FFg>BkDnec<0NN82C*9~L#)P~O zYMPy~PWPtBe@o^}qp`-)1~r*`P|rqksOwJ>xow`8;JDXK!wk^xq(M{W8smZC&>t3A z-N39{q-%BYG0>8j6{3Uyo;LJ%8ELKaCbYF#4y(qvclpRW|a{=Mi02 z(7NXrMv$!^3C(?$4^P2(4ZcMwmhgp_EGP14|I0Zu%1@f_y(|5GyH@^`<`DoRnUVA!GF^Zh2@Ju-XZ7+$F5 zB#B@D34fbj6i*HxBQS&AjJO`+#W~Bd1Md*Xx0+w27G7X{Bk)p?`wt~p!fGR3txSuH&=J}@O&w_&>JPsGTtD`5I5UEAEWFqfh>(^ zIX?n}v{jQe5go{i&_jy?m17frH+ViIzUXs-Ar(OT<)j&@<@Pp}>u1|wZ+Dzf6mX!C zW1=P}cDlK71E*Tl^ZFGpdX;~rAC3RIqzS&KqFF&vfl8=>OoHzm zXX49ngM_GbE(W(};g!WNs{`=>3nN0Pgt{xCn;;e%WvH1ubCg_=^@#H4sk-i=k6%AFW3Ipl(zMoqhl;|RyqxxN%+WFl=$?3w_co8 z^Nn0#o(6rIqr)Kmp~n$qQxWd}45#@qAjXy8;(Ak|x7`0lVM%%@H|I)820V0pHufYu zIF(edrdD^*v1!(Y_AKLJhr%&(L)^Qb5E`jStQm&3?amuIh$J>*sN2Q$R{X#``{_kV z)i<$rR__z$F!xVQHtOSn8UJzLxub$g07t!)IeW(tUczAawG9oE`G4P^Ec`N^u4_%d zV#_04*VU7=+oc=pLTTJBd_P@HZl z+Xd~>^Gj_9p8^M$$t+12m^;1R3uWIf^is|@Zse5YI2b&|agSO~cuHzXVou~)ag}T+ z-$tzTGXT%yqM)d{+jO?FvI1w|K&_5($2CgiTNDzgpFNa59@Gek8Fqu*A^{!Nv5Op2 znf3x%{a$Li*W5RAr4Xd-;;!}Ym;4V@V272BwqPWBtj=KACo7^taE>dewvsoupU^7} zBykT|wLqv0rBcG(cGU_Vezt0}FLCjN_xxhhNQo*U;fRcy{EZY zKQ%mOnLo0+Kg$YbHuim;jfHjD?!ojzF5+u~-{o2B81Q@kMBkz@cbI-i*4%|7F%;2= z2uM&f*>4r_iXuMnU*2H^4OcDq+|7la%lAcz#0#uv$wHI`MRgw{6E4t0ZXLjEmKdV5 zcc!OYuAzZhM-8rkVmKN<#Fb-WB9DxSP`2)(YR%L9VG?e+?48j=S>08@rxO7a%XE>?Ko zD_Ign1fsLAJsCQXujN*^r`h-uTa1@H4bDRN`iVm?u=2ZB{V}{#9EeAqG^CzjkTjCK zZQ+Upjyt|oz6r5`=bf9A7l`)%|;HW3KtT?}5(r{&p+F~oV6up<(> z)R=B4nJ~w_Y#p8t!;1@_U1glX7Pa@D<@D?yII&dKCLkUdFIB; zNgFrWhJNo-x$!7-;FU|f;l3iD0N0~sBn(vHs#sF?$+=r7G6g+3`kY-?dTd9S8=>^k z;lpw-*1wN+Avd|3p*j;({!v~3u;PRIB%sQXmDua1UED=y(y6N%E~vLxMv!T((w(N$ zQI%_f;|c}>K32ZSkcJ(DYg z|Cx<16cm%+_Q`PsYVAMGVDxqaDaN4tZj5>HJ8lWh5K(ZGZnv}8#BI+NOF>tKeLSi{ zzGv;wahBodF5GQ`lqi6BB+hkZ#73?p1|0dr+4@v|ni&d`5MNgOM1oH+RT^36_p=YB z#yAgJDnYly-GD5iuqz7z0feECUj{()_stk)f8`)0qg_7=v@oD=xB?tBdGu3tNw3eU zWq}!)rkkmiJCxHAi|)_NB~@<4isz>Wioz>keQ`O5OXBfnY~he!ESW^gxFX2O25FH9-2|P>}PAGjh$Md%=qbE zJupQDA=E_ZtNjutk6izR;iWv?KqMZ{^h$hg80Hg@!&nsZuP-E-;khW5-@Y48J(5&^ zF=Nsh$6sc3rv&XdL8|v-FxYM0MjjmiMPB%z7MDavj2Hufn%~Ho|iSrM? z##u(5acLfQEg*x%Q*cd*1;i~ zQ61o`dBh}~hGxxO((&Gy$F%4u@@CTbO4hB0N4A>%>raZ>#+&gwT%G3SY5#p;gH)65 znuE*KLuTXDuC^CjnD77+FaNVd1$iZMYk;Corwiu4-JY`i{fagFIkFw%)$j*UE1Aku zkqOo6n-6vlPk}d^7#u)oQS%r%bZ+JKA3aURC5=K0(Y$e`^`@Vud`lgV?@#vQDL~yb z9uH0Joouay9#vEX)@L_0nWlCrrT;r??W<84w)^}$5E0KdkP&OtxsoR4)hpOhDZQ^> zfzQ?O*%=hQw^KW=O&?d&pZ4!(rb;XI1_Ya?Yq`T41)!zu$_hX2^B7hm&6{T~rq8wt zGp(aX2uSE!|>Rc?t6Lwt&TY6$3O)Q|&Z zB2WTn^4Ao@MBr`$K+V%klLxFt43}Q9Kn|c{T%4@j17RgH zrbj=VN?gPNhz~?G16ZGu@!!r6QDHu)NkDGF!O>pVqUS z_lUjErkj44ZNJ;A)vo^2bvj~*CkAJ`)X7e5klG4s#q8$985V7Y^zO7jJqC%Yl)fXR zFrTPW&A9Wv<|2oOO$iw;Rb7(wkDj5>WIT+%c-MV*_06FeAF{@uo?hz^_}Prscxb*6 zr->78eJY^tnVaBG-OoG9djIFhi_e`%4M5(9ChNnQtj)=oFYw+m`y7~5X^cLz#Lk|_ z{0mBH|H{V@;!}GODRRL`q1ZMwVHNWe9$7O?$-?ElpUy;z>%c^< za`os7+s;jXmQQ@gSJ|Url1p|<#=7;?Pw}1)RPbzh+oi?{Tbt8#l6_Hg;CcVw2og%~ zJEO&#g2XqKHSfQoP`Qt%7H9REO5$J|F1Z96J{Sa|PCY@BHKK@B_3_K320$y|E-Kp= zA?M7FxMZ};O5nR;h8127_-$FXO+99&p#lv93$Us{m$Rn_O3h%40SE*j=bqI$g4$+= zLNTI%r)|)Mws|{$wDhyI#kmVx(T2}yHUOVK0zBwWssW4*`x8_oL1nf~X)sB6nEsd@ zK2i6n^7ZQ<{V;tCB34fliPw%#A41-j&qIm}GCSlbHBx%J_>49)*`uGc#O4oJwS8Pb z?gUmSkU;5B%S?l`ya{|n!p@&T)4V^TSZHEUQ!zMD_<63Do1#kcp<#Ki*4USWSdEtt>sE+SzQ9UaI?PUpMzijGA$)p2+^e|!O`89P92Z4A4`Nvt}q7t{OWlv za(nV<4#A{ec+I!^gE-Wb@^l6q;>jSu1c4OTP!4#N3QedDD?(~)q&jiUxifm@-;Jwg z&L~AtIAjp2-A6LPFfqyX!BCi%mgGidLX>|v1X4!FYWZ>+kn71kc<}nP7a@Cdd8_%D z){yJoOx3)Zl=R%Sf@{Pyeb1|mdPCB$5sKPuf~s@I|HPb59(f5fV)nmZl^#aDP4we4 zgAxGx=)qNagH<3?dP)g6jui?)v;Kx5=x38p>j5cu_kRdyfm3S3Dl=oi3(voN2!3J$ zFm^S0*s}B1fHlW;zBS{KTWyb_R^hU)V{0KnK_JEad_YNbFKGF}{@x?d;R!nBjj$vcYOj4E3Vz>rCoC(grXK`^7o7W%K*z_fKMPG}qpgjaV zv@^VQ@Vz0Fb}$qGF^fHD7_4=|;4=h!GZ=^6!M+4C*dWjcKZI`@&<+AiLX}?toca#t z#(|NM``|MKp(#9y%8^s>rmd{4Jpyy_FE22pg1im*c}r>+oHHiM^H^O6)XII=Vhukfc^y{qA=;dc1zj#sK{^PQc)| z@LwxYb@OKV)V)U+U;@7n4tyxjAmByNp`ZWW__hHqjSKLl=OiVK!}9>3wsERA_zJmA z8wT_E?zilSyd3fU@E;D)uwXh~Td0@zvKZpc22zyTpW zNdjtUkiY`>{Xg-w;0B}-_M2y*w^(x%*ji(*zVOa}AJF@LwKTsP*E4P^Aa&4ruKb1D2INev?i9Yh312;69J~u^34B`bI%{_SgU(ssM>?&GPd@T z&r<&L-dywF&EK$IpMCuI4+zy=!BY*sK2RZoHTLg2FeU3;#|o`)JF^x<+ChP+2jThG z^f#@Yk{lDB5az(Bwc!C(`yWdJ@4vlFN=gdGrYOVL$dRIE1j}a&{4^l0Cb+XQlo8T5 z97#nlov=U9a|Od1J9q%l=c=}!U(|V;6yN`bMaFSa1+Gr`1r22oCvcxPgDU!|(F$_hLNk3|L#bk;(<|^dW0lCs)m^6=ak%&1RY2#+6sV7r@lH zd8aMl&2AHreQi()pY(Dg249G3S8oIRyL))lr4DxAt^1DHdjq`hCsd-MqW0SYlDB~b zAQ=j5%)O@23-DozF>H^QkT5g>0e-*t{hwoAL9!4WWZlT&65r)^_%hmvu^FCCac^g(V2eM1nTKCJB!Uus zWitN@siDjNm9@gP1kU~cwlHlh$0qn8H6l$kpqBd8kfA{ENz_XD7wNeIhiXQG%+Pj1 zdEC#Hh+fB%Y<83#eKGr2@Z&KwAUuCbj(+;Ui|~#58Sye zuznD(IDhkB&0(MmUoaxJn;`h*zn2BC0*O|&0Ko{q6toAyv*#dIuK&Z%5ph5n1EKge zoN#cPpBE(Ef~GXg;apelrqCIv{kl~cC_LY>=S6l3o8v&v+?+vPF!=pnIEV$mS)s@Y zu@AHWnGysS2zXZxK46l3ef0MtAf$tcO;i+lPhHgyKjLvXEY=%yZ+uHf5}tlH^zIX3kD%ewY{(7Jv!RvF zoaH9+uyEBMjU9&h|N2n%*h=fr%7r}3!6?Wdpw)%-UQQ5&z_Iw${fX-8N?#IK_ALi$ z0h^Hf4FRQX^nm~6zMET>qwCViS)L>@QxzW<;)*bJHs`v!Aa8j($gV_%=tpy7L;tD939|b@i;-sM?%(?<=^5 z0k-i2e%|-FIl3Qw?=FVhCp)v(_Kv;}q(Sgs=-Yk1hfPQof0X?Pgw>lRVBhe%my{P> zt>4&5|fu)y?;&7D}BByIn$J+sQ76NM!Alr z;3R3_w>tHMsU9v$a?YD26DSS-s8_J==iWd13r+*|=e=zTi!UfBDUWw%r=&8DcjqK2 z@Qa+noWH((eP#>GENdR27L5Njk0pq|&lNp5e@XCv;FKi+2~Y zzaO416eijQP08Udc@W5+k}78bKuhZ5tf^)nYu~eWW1vTjstoe9z_^D|verkd8TR^f zzzV!cfj^WjIi+z~j8B~(Oa=9%^}t&xdshUAo?jMlYOB&p0f2^C(x~U)zUD8j5qHHL z_Q|!u4C`H{;-18a!E8yR$vM}?xdu4jfCh0Fc->`#zu(l-tm}ZNCfzE`4srd!YXA#K z4>#RSZf>u8$iY)Kti^@?B%b`j*0?1QU=o(x5Mm`%a#$^TGTAPS-ebTlT75b)JU%V57>%oNfyEf1!* z6Qe`&>m7HoET@kx<-!0=oQ{3-To7h1`Nt2bfBDO4P^dV*_-#m(59C2J3kfX)d=BAx zrH-kFQO(>I@QItkzW;~WST%w%GBa@Xs+K9u%ltWrGj(gaym$&EQV6nK!1V_ED^ohC zx$t^Z7MxPRLj}yvjq29?a6y%nYq8F7NlP9M3U;~Q9RVICFplVqv@!&W;4i#5J3%;- zd(B%sWI$n&04pW1M$VU(mcVm$73UK~1g@f}u;i0$WR}8a;Sc!0?fhsSaLaLEq+Djd$Qg$ z2t{E>04B`&%U^H;{2!0~AQdu%*)(ork6z~RLC8wr_SKbeyj$+7e%XfBMW0WFpA`3P zqg~~+7stWA7^;tE}ulPTO9ZHXnOsPP~MaC~-W9)9FkH<(|+^Q}_)g)k8@L{^29bi>fA>7jk7qOXgGB?2&9E zTV$+@;d{(0X3~f}jr4(f-@7TQPs78JbbvEkbB#~-S^@wSwxpII27!b_oQiPxrOaPI zv>oUzqE}jt$>Hpr!^X)?oEE{?)1G^0PSyu85w}d zvU;vK6|(%#-+4%lu&=;~GSK=5;GIIwtx5031CQ2UJB*^no31^`N2vcW>f&PwT&91) zUW%}MdQRqH77HwHP9JqiZsovl-yotufBDK!2`y17^qup> zUcRLSzz+~&8$)%2*^$ohq4Yf(dwKrWQAnC?jZIKb$R9} zC8gl^?~#BnY}DZhAQi|J2Oc&6Kfut3m)p{K3ytFq3Y-I_@%tAok}h-2#}E%gjVGKT zzyZJ_N#=THW&p-mf>l8WBplUy!EnR#)-S1YWFJ9v05==(E<_mOe0RPGZ}h|M#)AUa zDQv?-I6(juKMm(!VMQlIvS~bbn|*e^z<<84t#Jeem$BcatSLA2riny~OZwX7>=G^q zH;k&n)}nsr8?+y{zpRf@G{ru+`ZVkNSv;xym^Q-{Tm4`q8`2%J^kyp5X6JXDsfEn- zrte>xB!~bwvK=_OBY=Uk*%YqQc>kMuHWge(=(d34*jqoRkET{uR~ft~ZfD4pjI2p+ z*L3usX$eu9#BA!|rq4#o@7@|H*f>aSVAxdl9vg(!Nv$8~u9x}Ow zjc%xa?!WE8r@iGDph;<@tcsN*GWU;D9jmMV{AXy@cVnoH*QXGxqXyr2HM%#lI*Ny% z@=B&5l~jBVni#9?|Hys$3?Z`ao!eMO_b*~R%$?f$Q>7iTRnfJLdcR!KL&`DRz+a$KeP`%H|Gl^i*7NYTfDLBzUOIhkb+|Ke= z`pUKc;MaB9O1Dz}!Ri`W{IAiux}d+!ct?EkZPB>5LxFq}HV`h}J;E!~&+ViOcy{W-=d(bghb>!0I$+KU#{WgfX zI#BG69&x-ZFt(&zvQ%J4RD{KNUk9osb{9coYC*m7=_JYe?95dnwf#UFBtU~yhH=Ws$-tSjXyQK}R)g!to>qPuOdbUBh zuEZ7{YiDQR70ZiE^F(|t(UxBMMWPgq;=-iXH?5muVKeDE< zPU9maG{zcc^IiJCo&_P64L(*J8WM?5Fe4R}AXG$Tb`y~vm1UVrCimG0xZ^%eQ#Bo| zdC_tEN??%px0VZs3I+0!K_&Ut`~lK?T|wE2uWBsG;W>ES$ho^Oze1=566XHcI~xdRhc zU!N8)lf`03GXrws4Hl~mf-B*T5zR3+-_^E6apYt_im$i;Vf{-ApluUl6m|r*GdoUc zSrj-y!K6crhn3S1s*BiQXhPCXQI1a3^r5jSB9fPL46V!KVVM@Q7gt2NXA&_Bv+#nh zlz)Zka1S3llp&6Tj`+nP`A-Qb%|OZ{ZttTi40PF^K;2LfJut6s2z6Y=OA$%es0gy3 zG09k;bkgve$y>tZW7mWNXDT|O-to%Ga_K?olLzr|KG1s(^20%RUT1h=1ma{-74D_M zkT2BpjJlL!a16M?oHk&#{Vd){uG^@5_Jy#8$-fY{ z!ykGj<5VETa4etZ1S5d`8k><=PCKgN47>4xG?CkN?e+`}#x)tA|*_mNhU3 zf;2$RJJ}hwLQG04>PC?OcXTksvXEJFkAHshMy4?F=Tp!U{*0gYzx^ZLeAPI$s4jXi z5_hIq`urYex!X->BXMwqgMt(#%u5$hL^5x-#I=t$X*RYU=LXOt9DE2k z29-2opDz7}@oGJ1!Ca#p19GEm0b4c5jA3Swpx^!iq%;TuO=CTw?Tx1MgW{{^>_peo zF)?cNR0>Aj#abmdt0Zh;&MMXO1%WIUInXPB2G`N_DV>w>n}_rz?w)EeTw3;o!YazZ z{y_0xzK+c6!Y3erV$~T;G!uf-oJ5tBv0iaRH%X5=+Q;og#kM%W-+72{&hY1cMJ#oz zKH}~NOg4;+!=;7%{` zI;{j%e_LZ?vnVhhQuBPv6ls4ApIa){IKp>TV;SuHH0uy^Du+RMTGSc#I14?Wi_vd!V)ZmgH;cwkVs~ z7~Nea(#I!uljlmM2j#fEmssS&9EM&`T0 zIH}LTvVg&g>tCA=$yDf&8*gk>_%%b%W)AGE8OTy*`Vl5V{|K($sP0-Z8WEpgM_R^n2)t~@s zVNeb*hD*})e%mBuk5EAPov6;^IGW!DxZ1843aoXVcg5&F-{volq0VH{QL)DEBE2n~ zrWg~=Ohg3&_EaM5P+^~l#_;c>FbgBhhI+kS@LL@OALGHTV1V8QP!s50Z;7qKC~8Y{ zROb8xx(5y-bYA;xhwVDoSy51fnD9Gtt1K=k#Z#@5$_!55C5RsvG~KR=Vkc^Kva3$S z7pO1>r3r{Py9bx);R=TlON+N=tb2^TnqCO*PMm8ddT*6|6FtWq8?giV#%7B}K8B!X zNvN$cNSLlhKkZl)C>j2EZRpkz8d|}|@0T}`Xu%e|K-q5$w1FpTwaCXu|q6oq8vJ)u=M&=PP`G5BUDbw$h9M19Hw?}YvppXRv zW$bT0v#!+Ai;(UeCXE8bo#9r184S(@*vs(J*(p>TUjjc@J(U}TS@2)hV93{oHD7pV!A6-U% z7^>s&LI++b6fSMT;N^RKR7a-|af2-rRw@C{D4c-2aRA7|)XM}KYVz?UTNphDA>+XT zb2wf8z5a&}G_G*Wg3%wwD)6*y*TNHTHu+W$wBJ4Wsed5aYY!JfaNvVIA=mkJ@rR5> z*@7@x|IlOzXaGpr3t+B7!sbeC8+`LjRD@OwArTg>a^?A&Z!5)w7&Iy?b@%mO38Qq6 z6DP+@v}ItD&`&6wA|)WmE|5uikZ;#pv_FAzY#{`rtxBw(j%j^fSY|H9SNrKocl$d> zOl52RaL5yA)~6l<;uk6?NE!W?7p#L{3$P4E1_rJqAO$p}Yx1R@b5BqkxOGqjwn`4- z0mvm#)}Te=x8IJV4W&ECchukP99|{!9o_hKunZ*)8boovj@}2PLb(X5}T!`higUzBa~%d6b1pupNZvgo6U@$e)-BVMtXJbU92LvUp}i_ z5&Db&zf%ls@@HTgwBdU~7UMg1{L4Itd*q<)FDtFnx*Sy>)$9^?@q4v?NbMp68d9c7 z|G>vv2fPQUQmof>5D)C*rASDQ176cQR(ut@0w0auLmK6Dur#<* zjftFDNOc*S5s%JhzZD7{2zagQkof~Lt^D|f5CGqx!NKb+Tr}2dkh_)m^NXruS3<0Y z>|ss^epY;WsOu~gcXq~0MgWPr4`(1CW#O$umCXv;ZorAmYi4N?Ou#+f%%~2&ZY!#? z2%0F}NSFE6Qy^T3ucli=@b3#-gNRZ3AzUYrfW!{W13mLb)!TgFT46%nP1MaycOVKD zr#VoY?>2jh!yGI4pWWfHBjdt;Yt2K-g>(o=7~jEbg|5a!7?z35`-9F=PaI?Q&~4E< zuW?KgDJB#gZL|V5y?`1j*GB5GfM|UM9|M1D(@LVc`NIRH#?LSS_}+aWk3#)s8x}S! z^WRXbt_B)JD(5t``~Dums)EuG{Cf}n({?hCPz47c*>P4L2S6qqPDl;IP1BIw44VQf znt5k`1E949YZ$qrpnm|_A3yKAU-{A_VR%1JQ;eEV;WPCX6Dam?X)()P56@Vdd`*jE=4zgRJnX(IoQ=>`~VVmCgit2YJ_qgD> zBVfzHy^oAXFxFIvWC%baAbjZ1JKh*yt7_SOlC8o1C>u(4L@=`t_A5#t@aHx%$M17w zFO)|VJ0Cox7IV*yKsb=9*2!i!VJhoo*tk&oUn{;RZzir;oo#5n6q75MOBKUzkOV== z#WIY4ggy`ON~WQ8^a>u(`L6?Hg54e=(A5?!gEhvAgbjq*i|E%D5^f3MfJ+bQPW+?7 z!wXDJPDXE_j);&Z9oDG*L=XnnlgB!as|oOifj#TZ2xADB`;aal z%v;6_?}asR4^|~~{N5~QB6AHt)gyybk-p}@%|OIt#z{pwa%AQS#!RJv2{Y>|Nn$ z404IUa90%SR>09ToZ~RI@a%ZY-rOB-PiO<2Ece980I0YybFf{#3#gkoL^S$$?!1L! zn&BIhp>h!%l5P$iXOQU!dFf_S1Hp?!m^n3sN)Ut1?TY(z*-!TB!kAIpDMokSql{pFpu`W{e}DcPLs!XSQ}7)Zh^BB*!)71<}k`rVm%z{Ex0m2 zAv%8n<7jkr_#l2Jd}Qa4h)igPKME=PAe1@~>N$jI28u|X3tFh?GB)jCgVDpyx$2B|C?lMDSt|HZXjDp0^86U`O>m%z;B`Q9r1INHmwH3f>WNHFSLIbFJCiz{AvL9F_;!%JD9>uYBJy~ApJ6fiqwCYG?d2%+;tF6AtSHh zFoL@v?*eLp!W7%c5MDSC;n4Tre%%B8pYJDUzz)TTsfYR#%&S$4lEcuYS?!FQgG&b{ z8n@s2!#p&C=oR2@F;nc0V|)bh4G3KTeFNK)FaYz3KU^#%w~pc?zQUS=8zTTtEPyEb z!h(jbm2RSU`(&A(ieM6a!=79GoKsiKk)weK&b`kNw?m8uzr+b}wFZZVx@=*?!*R3N z;P-@Ov} zrZqt@+5`EtR(j2Pr$5FaAw%bM?1N&Ep}<`+bVjcP=xK2T0UU(bYxYm}A-d zRG5~OwA^3;(K^lKv+%EwaEFs!Dt`R2us@+--1e&GaBCnqfjy{&o%Es827z&G!639a z_+hYY-6k&ueh>hGQ5bRf{F|3-*S3A&&p;1+tn@Yu8O#vq0bDo``4f+1Zb7~|s0{&@ zJ{cz`r)nnd7dVW7j--fy$5XSnun*cHT2Zvw{o3@aY*5b#PDp06gBx#0KQ_QE9|XY} zVDnKPptnV4Cdc|$I|kdGUqTN5*~V&rBIyedFv#b{n^S;;y&ronmmhRC>|FDJMxr;AAy{Jeh`xsa z`w=l^6;f$@AU8J8o;t>rL>HOvLzu|Ss{^CNOpF}-q|}EGD8yC zBa)F(p%9YFmMwcmh|Cbxdwzb;^Ur%6@9Q}Fr-SeJGw%Dk&+EL->pEk1y|Nfegv$iR zDSyDgFULyv)XSd{`iFhqVO;na$5sMx2gcgHMj?1b&^x?Oq-bIEpEc&Szny$Jc2DD$ zIu1<>0h&+b5*T1zloEVn{6zNt0%EaYU&B&$1B=w(9FmpG!23$5*4GN$6_DV6C66U< zY301t!;EM|^@oe@%}b0p#wLioPNSZ%aaeq*?j)97m-wwI@)-M37^mH;)W+#yTVr(Iaui~uwHKX~_N_63$(L~$1}{lQ?by6 z{Ge-taEy?m44j_U&_}KA`Til)t?IY*30kM;+9D3X8%AY9<}+xkEvKf{&!%&sRt(SlE-NtKOj^_ zz@6t9{SejgA@|;1ob;o2Jlc`7<6QNwaD3G(6_!StKats(dy9!`{QS{n>ivrDMX*8l zs2;VXji@CWvx(MG>)n(33Cx%kj6{Vjz24!~qE`j)upc0SQR!)BSW&F^RQ)}bKc7h` z{{oG9^hyroKbT)?!9D2dZDKe-**Q6Soq!s5N5`|_f3a~cX??}ruXYl54)parHTC_} z@`+U!#NCiOh}`m|Fg08;miGoSJp{D)N58?m0a{wVwF!~Kw%osOp8-4t{*yFpcVxzK zb+|%e+HVruj*g2+Y+#bq0~eTZYW~dB)NNs&5dHXfO#oW$GCLG@2{tZ8z*m&h@Z<6P z=T`pDKc{A~+`=h^kSN^%b@JxE)QQvd66=73JwE0uRe4A{7so!S>F(VE;TPAl1t8T^ z6(qh6LPi`%KCUr#;9l&w`TgiZRR zP*nuM=N~f67kY2>i~;Gd?|d`!-dC!upAGq zEr2B*ygybp=qF{Ds8?i3sVLd_?#rEvMwqZm9N?*N zL1MIXeh z43yLr4vJw=A)G}HeF`Hcc;dFG_uVIM44HX3PAB5!A9#Zlza?I9|Ih=-3BB;hh&XH2 z&Z5ZlUNsw+29rsONT?Ku67Vn#&0)4lSS(oe5!^xF?@+?}2qf^%@3$Wn=Y!l#w0EGsUp{IC} z;WUCXz)Ef_N54l`GGZ8%)$N7WlnVcfWk+9E!sM{Ee^Ckyjr5jiCxvzGiR zRry$M_v#Q4qJ}Fg`bo8Z$yKQY*t6@#8j*3kD^6psg4C~l4D*+Cc9&g-Y(m82T%_E4 zawGTnjK(563~VKGOytGn@OH;CoL+g3MD^R`WX?S~PAWa*hhTF1@m7F!GbY0To%G6F zvdwgmd|bQo2;0~hRe2&Wz>|j(fR*{70a0uR>Mwl135X87TP>_4GV%2hMMYM-{=a~?Op>ZWS%IBTpFRZ<)n5WSsMzV7 z!UKBc_)8exj9mcNDfkyG;@#M2-f74;=jHgd7oe`ht^h(KTon=DkVoKky21^mGf%JQ zhX(wYLC6sZr#+({$y&;Q3_)dm`OrTBrm- zCcYY>x;JP3G1gGrD?6mYQ0O;2K0PUj7eV+H4G!<$RF5K5=y&!o;A)BH3BunC@=c!? ze~MVc!!KuV4J1)a7zo=URABd&H_p5;(@sVDXeVVgRr*uCK+UfcU&YWb7#*`yCg;8@iWD#N^< zv#FOuj|WMO+2yt4^%*?j63&88al-&o&CShuY7zup6@#R6)$3%W+|Qv32({uh-kVZm z|N61MvI7C9)_l+Sp>Flo^asBaf z^tv%QUfFvFG3KMm<Lx@4mhNq@7@DfKfjDHAhuREmaw!fYJ)RR~ZQc4Rog$Y7m5I2m2hT%99v%43n)5XCWw~VnP!W6A?=P&E51Prtvn*smD}b zL*}z(=t8}ROnV26W$DA1>i6Am=1DuWH*?3kC=3$(+@M&;|FNp6m`uG6jc=S((n4Qe zw7V3f;AOqyY(3RZ;-jVzQgR-x0`ussHL`vy0+(*TaOn!ZzKFNnA9Y>9OB-c_L>;W_y$$h$RHkIlSM# zUgWtvdF;AN8`0x2dYFSyc-yq%iG%K3A{bnh{ACFXi>@*9kHlMlyjTX|nu=xXO*DJ& zYrb_>f7ihIklJy{7c@2TOmo(9U${?X?0y9?+w){EYlt)dpWdQKU5_7t5sjrlnenF( zxSBG0jND;}meq6-K6i(se{b-vKhKd5G>>K;R-|;s28vsCfpfHglw05I+5vEIl z$xsF4t+D}l#hINT>YB4LLewr1hVhp@xmq_7yiw_h9cL%x`H+MR!N?@aVqv5jS;l(1 zEN&kBe~=suv%td4S8m#i{ROCoZo=i~&>vKZ+olM6D)iGJOIitJi5~n%jj^VQ2Lo%w z(qf(f6ZoQff@*_myL21a=dY#C7Dtra=LbAL22ldzth#RX(~2(jMyEL)kx zd|}0L5QZ6G+EI6=#{D99N*+BNLmf8LmL3@NLbo{QUDc<@r`54{A)l`RzdeX*9XfX! z0jvk{5YajjR0k>@zi`gz{kB^7gD_LW0|j<7J2(F&FWwGX^Yq`Vc#JXGAj{mBNqb&{?TZg;PNHXc1Xv~?T{ zV*3Dzj4AdHGaoP>)*w+|1@4000gY410#=WLwto8kOF)*Rq>4JjUG1>iabYt!uC**m zjHw8ld_E9QRmb4CcE|C|1J4ob&k3(L2@~7F3IuO}HvoR*o!5cP38zDtRW!7SY=MSF z|C~MOkneZ(VBT9&W45$A@!U;@k6**i4ZQ_ZPb3xCJNNZ{P_Uqr_=-pH8dfZ)=ROj- zg!tx<@wb`!%HLB{Q;o38QO`OOd00vK#PTo#SLN+8qKydo4@8t!Ar z8shA^Bm0gXJ&NXAO&Ov+aqjVWj_jSwZi}~{3dUp~fcxqYeWHdD!~4AZ6l&=g&(U9s zVyj4ndYs4};dqCn+apmGrzBb{iRA$-ia}K9H2Z^q_qlD~&|X;7uyb?UcfaT*6iBED z9+4S+r)Gc(vnXA_rEoeO1V1#$CA#%l3C}|@_A(3JKy%|1#)HPEkkW>(&AtP`Y1?{L*x*+(!d`0@LDy1?&eraC{MqBIp6b1)4oMe8aby`M{aWI1}9hh~wu# z$b>*>@cn71%&s%{r+%TC}$LF}L$&`4U8 z5=7Kyz>V2K#Etz2;E=Y&wn50tm#lvEv|iH%<_#5 zgW_>@gH{X57PJ{>n?AZd9lk$*Ueg>g?-Gp_YZBSasuvhjW3KK;?PU#(FjLUyT3%X$ zJ??4d6d#O?@0?2#w_$NVi1OPbg*LMC$yr$8P$1jLxUi7bywO^DxuIN^Tjq zC4FXkPm7Px@sEpSm}{Sm^p+^H|DJ{j3UBkGf1pm1*e_R^1(~z*DnU z5TqE#XZEcj`u7M?E5L(>AmcZ9n=LFQaMA}TMP{2Q}piU(Lg%2`vn3x*8HouBR$ER}% zFd{I5zAK_nBT+=|A=R;CfHH<|46T9WD$xxDxC(k4pHr>b|-G`E?T3f#PS?TClz8fvYG z;AF)+8wlkENI~gXG^wrOZP%MpxBcsUdCBb1Z-_m9aCiS}SzMldF6`jc1sltMZ{&s5 z+`h-x2&F!w&-v}bbLYLZcHfKDz-B=^vp z_6un$VKBrQ3&azg?*4*f?mz3|gHO$GJ?b0yR7BHraTSp2p{n91 zfN3Jf0`XddlYNuW9s#y+;~+a(B!Vf`6;rJl#^|>;mf7y+T-?SypyU){wT^jbB zqIdp-zylzQ2?4b)*fcyva?Wby>&JD|b~ds8`bcRvsWy-$d-s{CMDM$6=@*VSb~I67hrVg|L`NhvaB{A+XT9t=HY zxE#%J(kH<;cqEZL60}YYlC>P4(lofWJDiR{FjI|B?E&Yf-kG5Erf=_ zlFeE1Xcf+BNHG==Kz`o6JNSnUPU(juu_H|1J`f<9$9;i2Ck4U(hHYeX7&yl{>8C$k z!4c2P=!b{6yu1w7<~ZdjPH;9sbSZ`iJeYR*es*n3bnxiI`Ka~<-g6ju9(mve55~`! z=`6fZ_F}H(9mCpHH^nO60s-u>i#PxLMaV(L&l;V|K-c-6d>vLTr2f((TYzB5 z?4sJ)&xhZhfBl#tdLWED_xa9tj&#JFz8eC}#%9c2VL))IR zGK0RpcXtQTtcCjFBGFj6YtNO~P}8N|kJW1bVH$+&@KvHVgLulpOehuIMgxccu)WYK zNDfNKziZczNv?EcFsjLGJm>80WrpE>S>kz%7uWp$8+BCS*3?5ORcG&n zIy=E@FcY5d2N=W%m_eB1lHEskOZr<8^l2hIXhZ8ps_#Jq^c^W0kcJFN+TGIq1n-Bm z1VYSM;3A`im-PVPuw@5CUs_%!>Z6cL!J614pbM{_of&500V-lEtsuGHN#LjI1+;y!i%sMbH;vgaB$g*U~dpbGAUt1`5kh40w{oAYBOzPcqz%LXXdq$cTSV+W@2PtF+ z-oyC_y>`s~u1Oqa5@SIp$u6w40*{E~*Voq*nk^aA-z(D)w6sFXNyvc^i?UKvnRs|^ z;t1C-W?#rKk1>X+oUnm8dp#ZPZA~wx2)G2a_BR{Y!QbWD$tNx^Wp@UbyNsc3T?NsC zETL?~LRx{$0zsHat8S=k2cq$PyZRE24&?-)JUCXv;r`RZC%0hPCGh>91NpHycg8|L54YfJZb?Nu&K#O@Fs_)iy+t(vFYZdSJs-OrLdks zEu09LxB&3H!J7R@VAn85;sdGpyMu!g8Pm}t4=tusTK^m%dnk=0>1XN~-v$>*y5C54 zt3Nt{XpM~@Ngfh0YdE6++NgR*Q+NuH977x9B=*Z+{NvU93-Egj?YKw?ltsQh#?mG| z7n7^m6{h&oHuaHEFj|h~Sojhz2kyF_<8YtKb3X6tj+?65#{t}E1-iBF=WRdpg<)O3 z8zcd8NhrC%yUjqLte#^3|MTm#WA zZVW0o$qejaiE=ESP($>Y;wu(-iRiwOyOr7yDz|$)lsCWzxJ|CRl*gt$V{eJ=nhLXa zj%5QG&-K9Px?v4Inj@P%C36IuKumFngapE6rc?d`e@~v?o^z478x-(vqWnw@F@ZLi zO!Pa`8*7f`gY57YM8uWmJ#LGFFz}Q6zo~++Y)unyFuWKDPWSh}zVivsgLTO9dL^B*ry+m0{BI)CC!6JCJc-S}5V!dm9Vh-|0J8 zChLywlC(TOHRUEvOkcXw6SJd$gl6BneLCgtZJkAW@cvQUkH=aUAwBQtKElhof8*l z;80_}YCeit+@1#68cVkfLr>Cl_epMA9qv~k?L#U)vU%9;9nCsr>oTNN{DD0&bUg2Fm~`W-kql#9%O!nS$ISQQKmiTeerPcoO7nJ@+o~6j>{AU`rI{YB-2TK zT`@jNUf$lsL5ER10bQ?UdY)C`FKmiwauh|Z+f47v*-*uQbLuUb6P~7irnZ+`Z(Z-B z&rur`JwDKgNlh46iwch)suq~P&A#o)BoOHAt}Ee-emCKo4pSw}r$R5FWFW?^AO zM^Y^D;7qvlIn2X-dU}qwSel{AjlWiZM@3Je9QpDcAyqT$J;adAp4J`Pk5c3ej3nxKT{B*3@uzeskO+lSqz~ajzUd#IxvZ*>GtlGtM^no}jlnqatgR2Bury z*rn_nXXc8v5KL$O=mJBnk5Tx#xj~>$-{`$YDk)FVB;oKHpIc~PoDiL~cb@9}?Jx7l zzNzM+yGg%WR?T)jDoTu5&q&(g9&gGRPy5hYC%3EUTDa2jw2LVi!ZRf~68FuM^9|wR zGC?!uTE-PB79VifUf|50%gj}~5UjMNWKNsrZNqm5vn)@C*x9+ob zUq8BxmF3Sb2)@YP|ICMY5TQjWtQjKTji2)slzzT98uD|q&7|QQpOk03OHGoFuOBP} zY!2UHo3iV(8oOMqE4xQ5@71_HBi`iFh9-abPS?P`eO7(Ow6`c*L{kk4Oq|HOmQe2^ zN#1I|QZ%m2QDXO`@teZ4L#sL`WVqWjDc?M`>mT4_q6CK& zEs0KFp}ywCnebsl;>rDaw9nYf0%j*YuDM+tqH`F@SE|3F-IWw_;RYq@e2Hvq#*=E+ zNy*_a`xNf<#^RMRz7v|)4cFH9345Z*s#s9tHBOg%yy5SPeScd9FCavKrQQyZd{tL|Y!dKXUlNNMy{jB+va;3D-G|Jq#(In!eUC*fsql zdD2oZP{U1T!YJtwJ%=ml!MmyY+$Xz_B@OJYs=}@)-cY0Mb^JOZ-9RTqn%kAr$DRwhM%a%jPl9EOG&rYR;hAyYM%_R6**ht;#_n}g-JR(Q&mJkV zmU82zKk(Oe-}5J+rHFJkZiXyMIBIC`iKJ}_CGv@;f2@mha_uN34FUx?c3U=z`I;B% zbH%IpbNIRRSbp`Emf?sFiFwQtC2y;0!)7S;cdFvz-pE|;+#1$nyAndq4w?)8Y*))R z)rpC@VpN&0nOhfd(W#uZtUSMQ`T+&=gAvMuIZW3N|GQulU=%GB9JOZCFH~|s?8`l) z(6Svyu6Iq1oCiA!ORyXIO!TTFV(r20^S)Zj(NT3wP@TU}$ zs_Rnch`!6TAjT6Z_qfr_vc&S@Tg}|)MzbHBL6QAB9MLi?NlMFz*L?>L1d|R}#ox0s z3YZ{qHuAr|?^35_n?H>$9~;K+;<}{rXU|LtFIhS3a&2#wRAsh$>7j6pTW-=clI?^{ zU#Hi;-s$5jQmgeI3Y(8kCT*v;`S!!$GOm-DS)R*r^6VcEmuJTLA`3@2E=f>R+#~ zexmAj_vw**UD6YC91FZsLh>0!oQ=z3kGXqhU3*+#3V!aE@vr;#DqU}V_o6qOt&5V} z<%5sEIZ>BhD%QSJ2Omb+o;lIp3JIKB04J*p#A zTYkjjo0vLQ-l2JgV_D@|d#f8s&;0k3tuX`nQr`75i5$8Yy*J() zCGyYujr-mHekI}zXjlIIme;qvs`n#{Wv;UA$x>~H;^^10H@X;={xseg%VS5G#2OW=K+Dko% zfT1CV{N!F!HSV{0>YP;MJQ0$s^DXXfIh*qe-W_vuz+uUP;Y9D-SRXCy#19~Vlwq`DjNcYSUL+aY8DaAOGjdw3jsF$&dHW$(b>9bCMKG54+ za?rh-toK^=o0~Up{!IC|HMO#`vcA5qqw44*f9~A5V^mayDtoy+xN~yBzYbUV-Tckc zTXI2MTwGAlHSX~?LYtvT0e*E~cvs0s{aOl^sUo$f~l^Nybo5a{V z6BCR3Ab zYik2g{r&s*#DuAqmX=MGMiYOJwV(#MS8~tr@Nh?mdTtl)0PnA-yF2957^r@FHFsKC zS|k{suXuTR0c0sFDG}3fvNecGn~L5Oti{z;*Igo4Pp+`Dv9Td7{5r-+O+7s`!$B2V zs-LgIjt-1JGg?(Mb8~h#c7i>nu;NnF%I$Kgz9CvwO)cwQMbUB3{~o!A%iL3v;&rlw zBp=woiLzcfoT+|d`Nnky63JHH;_Z$SG%ArXp%TrvqiM=YD(uWLet0*>n>TOP*47xs zJhm}z_n&4;M55pJ;9SPT&`)EfrAa4+5S{V}qOr%^GY_RbFP+>ilaLHg)Id@()7M%Y z(JCZ-IT=p{>v_dY&p01)o)4cqY<*D7Iz=TW;JVfi!BpM?E}l9a<`NB#KVUhZNPN-x zz?bsn=Z_yjbx1`P779z_@!*q^k_1T%mO~l&&Ic1>HuQ1Zdz~7w?da$@fBt;sPwA1k z(ep*-cgk{mX2Zt^%H3~zdzTv&;77t|UFFO8W@V6~qT&E%QQ~<+(E7=E@kL1Gy?Z;q ze^z8o_x^)Lke;4CJ3AW~7vAdfaVvCj*a>qAMr%oT)hubQ#!&)6X zwfM!hr1e1d$K+&&;k6U(E7^mC*D0xKXrv;j#3~C5Z_}FJy!pka9K}nrg9levSFL;{ zqs|}x;^yia*H*_w`cQ#}V*}!^2^zM&v6Ow6B7TwL=RiO-*LfApbuO}^9SuQQT6(^fB|4lZaS<{En$tj~*_w?e0+iUcn`5_hv)d?yJX{ z*r$-Ww&YNjTRnD|;Iouxb2CwOWV85cm27sWJBH-QeW}qG;iQMkGnHfz&cysU!?_!q>vxs@}b|2WjTcUsEpt%=V3nH4$@@22LUYK<{OIAk9_F4F zMN*2h5{QtUt;H9(9|yfCD0oBRA{rVU9c>fhj3W^be2?Td*+6nb_9J9uWH5(n(&FBz z>=PIRog+zcfSmmDW?x)wI>`srHjBD8&32?oQgHI{NNfLESvf#PCRJPMy=IRp)wd45 zyO)CmiW=UjbleTtK~D2!SS{?ySWLK>2`FD3=Iv9jXj<6R99DDzgnE}`abJt zQrgN}o0>A2&!3}(HoN-0t#g#p~%NoJH?V(Yc%Iy;h z&h67hQ=T|TC_d{v5(($$<68nI%FD|`Se^g*GbK6ME7^T{@+yC)TO0qZ;fBP&4Q25Z z!+?Y8-+u1#`-&pPv(*+vc_@klzswmQiYLAT58%{FL5)+}=?AD3Cx`*R}O^!|x%Z%2D;EPNn+dDYcB;EqfSfX@RQ;=jZM7 zG^HE;BO@uZIK#ZIuQYkgp&Qn@RG%*{F)2y*&Eog{Ie@#0UGgi!Yi)-lCX4`c+7#8cU-eQ~~tK@w52oF2RC#IA3wLHxd zuc}@bug0@EYizBT+5(#=T$%3Oy9Z6;7gN6PT;ZR;O?JKi0(`Y#Ha#~-4Cii>OC?$O zVEpoJX=$)!w6SJoY}w0#0-mUPq%G%e4yFE~|8b4mbMo1Fno zC}<^oMlQVxgyK^Jy=;vfE_FDd_)}~cYSmqiKCZygB>T=<%th!4znhcmq06h+pL^<$ zuNB*EqQG>QE=MyL(2&RA9s7}eX}8tVR6tmN8W^CX+1f41%g=9;N%lFiR@g!)LDubC zdwY9Ji_(V?pmfNzBraSC%WqEo-u)jWMKeU|TdC5=XTQAQ`U&zmN|80?g7@y)$E@eJ zWtdbL0LJz>&(F=pS@XM)I0#)}n{RL3gH%KNEH@X|MrA=*OXIht_Vz;t&+NHB9Jwl` z`_S#XX5fjT5<9!-!~C-s6POo_VLEU^>&#ry3#Hlb0_vCgpO`dgE=~%EQ}xBYcBa@B zJJuX$EzN)Ao; z4?Q7Z=(%%R>_-exCleNqtv8j)P+^CXM3UH}=_zierlwX_dnLJ!YP22IP2^`g6pZ=W zpFYVBZ~$~7$xBoBOkP`GG^uzJ5D>6?_ijX6L$q-q2N)jqb8#suE2G&ZX=rFzq*t@F z#785tOHzfCO4bxv)c5bCUyv}mBNZUs(c}6P19&h?$H!-D>{Do3TAGXK+~(i;d2W3N zjOO|2X|Vrj8q96B-2b*7@KrqYmGeQscCO96XIeuR8s?j#L!vo3e*-UDK8XHGXO1047 z*)p`Q&tcrquU~HBDVOOE_!TTJE?TNF7qx!>{{8dk0K0w%XR9nv<7Db3hJ;PI*N=nx zXPTNGP&;@-EsfF=IT;zw>E<&FE7R)BQI=m;07;kqD}T-k(os`W)6sqWg2xwQmY1LZ zyRxdZG`se>T6Q_)RsgcaAu8PRdpB-2RJLrVuys%j?t7L+&u?(_>N~hGfD)ATJ=mE< z{Ytv$JR}~E!!8>oWH;>E@nztB*L1nb8#79~MpHgS{u7I-TH1Nz0(YN3X?)O`U5$IP z{6cRS!V*;<7Z(Rn&=LZJHs@~1hf2?p^(A~&HI5V#7XCW$imxROk(8K{%KD2pO(>Xo z%yS6p3uK^Bh&O(FHCqO30!i&Y`heHXO-)%MAv*LqKkfgz8yg$DxU3)vpP0zd%@Ymp z=<4di+mF+Gj5gQ)+HWcff!ixeKi7z-m_IwoNN;G8#HRA{)_gBWKMJP}d9jRnfwlGr zoz*G~y|FY6{72=Mi@ow*3Ud1-5_%6De+g9k5oF73*ZC*fDycR2VX3cI@VTsIni zs=V2@oQMRhSeGkFDX?$2*k{uD`VE@O`}>ssoMMo@G5kCxiz7> zwW`rsF$v-0Duc4mbSZY>bbw~U3%o*iwsRf@%#-wMZ05TnicZz-UlS{+FU%K7#6=EU{66*H>3P9zk4cm8)%{@gZVfk8 z@4XOu)qrJCWl%6;9L0_;R7!ajkTzM*8!|H^559SmJggM951}eoc9tfSCY$Npx^*kh z)gN=OGH!i-p_cs^F6>I>2Lp2yp52uv$)M{3s-L zPn5IZ(CFwW0+yH-i(C4AoW9i#_X)eAlv6Uzc9cS?ez=>=DH-lV z`5t*ygo`R`moEK=u~O9O^Wo;Vvx~=t7v6qmrO`jG_X<9XzBv=%u(CKP+ZzgjmJ- zld1~@yJ*K`mP%%|oRRB|*nLgqcHl|R)gXaEi2&OU4aL{Z`Q3xl4E&rvBirA{l>1XW zwThd39F|tBmMx<ch9g)%at=y z`vev)(cS;5HPDb+A$zr6BDPS`sKu9;=_91 zydBq$d1hmC-QjY?gG(l)B3A~d&7Ca|>zaI$yU_k;hpmXooN>R<8T2-_S6;t38g1NC z;=x-~9CBT2wfytY8HUAMj5kD!yG?}%Cu@KIV*{~T@xm^ugOtHf5`+8qCNvz>bIeN0 z^i)SJWyr*z!fH5Pv{|W^Atv0z+E%lmr+KCE`$(J|i+<0i-Eq6uU~WIQ^Te^Sf7@Ky WXa~qQnX
+

### Implementation diff --git a/tools/diagram/src/adapter-class-diagram.svg b/tools/diagram/src/adapter-class-diagram.svg new file mode 100644 index 00000000..794623b4 --- /dev/null +++ b/tools/diagram/src/adapter-class-diagram.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + Client + + + + + + + Target + + + +request() + + + + + Adapter + + + +request() + + + + + Adaptee + + + +specificRequest() + + + + + adaptee.specificRequest() + + + + + + +