From aef2f3499332ceacc604fd43ded375b353bf0e21 Mon Sep 17 00:00:00 2001 From: John Webb Date: Tue, 29 Jul 2014 10:58:40 -0500 Subject: [PATCH] Added DependencyInjection UML --- Structural/Bridge/uml/uml.png | Bin 15972 -> 21131 bytes Structural/Bridge/uml/uml.svg | 2 +- Structural/Bridge/uml/uml.txt | 10 ++++---- Structural/Composite/uml/uml.png | Bin 12315 -> 12745 bytes Structural/Composite/uml/uml.svg | 2 +- Structural/Composite/uml/uml.txt | 10 ++++---- Structural/DataMapper/uml/uml.png | Bin 12696 -> 14730 bytes Structural/DataMapper/uml/uml.svg | 2 +- Structural/DataMapper/uml/uml.txt | 21 ++++++++-------- Structural/Decorator/uml/uml.png | Bin 16897 -> 17063 bytes Structural/Decorator/uml/uml.svg | 2 +- Structural/Decorator/uml/uml.txt | 4 +-- Structural/DependencyInjection/README.md | 4 +++ Structural/DependencyInjection/uml/uml.png | Bin 0 -> 18347 bytes Structural/DependencyInjection/uml/uml.svg | 1 + Structural/DependencyInjection/uml/uml.txt | 28 +++++++++++++++++++++ 16 files changed, 59 insertions(+), 27 deletions(-) create mode 100644 Structural/DependencyInjection/uml/uml.png create mode 100644 Structural/DependencyInjection/uml/uml.svg create mode 100644 Structural/DependencyInjection/uml/uml.txt diff --git a/Structural/Bridge/uml/uml.png b/Structural/Bridge/uml/uml.png index d378dee62351633f376fb1b392748e924e316603..ace71af32ec92aa81d83011be5ee0eb008cebfb0 100644 GIT binary patch literal 21131 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 literal 15972 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

JxtaI3)DWBvX#7uGIY3ng z=nLF)aZR_5z(+$V`hB3#1CZ2$hi7vP<*c- za&!#1^e_+kR2GWeX+tXvAo`>t&@gOfX2$=5E$NJy_$r!ORDYu>a`sJH2)^$0f69&0 zfQdYys&YcD%b95Y%U3m%6yp79+BZ3z@dy-P(u!2nyTWdjC}|rvsoX5g5_S*gx>3t` zesnZ$U<3Hx@$nlmpM+)*Y~+WGpC+EkIgkZZc;FU-P#G(A8AlxHb}4tOo&jx#5f6c|(_B!VsdC zuL283$s155mGd&Arukn@$YZeI{p~uSc&oE)jlx6?xcA8>3>1!HWepn&wR#HVYUUQx zmxl(l$A1_IhR5#$shUW_!r@KW3j}04O4I>d$Ol15Vez4GY~eZ|RIe)g;&3UgR+T>( zR_f?Zvfeh)$kU^~(e!Rqd50-m;!`ycuQMYDeRpTkZ3nHo0Cd&~_DLpOFUr~2{T$aV z6(ZIq?x*|Hx-$TIMMU2t!GO!K0p&7A`2>)?$;S6UR;H_q@^5B9jj`to`>HG-ymCZP zj}YP_*3mF!^I;&~fKa9LV*}?Z9kCYApk zAipyhkW+x;3&HF);Cb>^Goh)^tHi7mZz}NhbQ_2TjqucktOQWNg~{N28U>0DIu9nb zBZaDnOyNMvYR7d#U@%E5Vuc}{TgQr)%C^-Sc8P-f*q)xoxiY_tAlZ#rI$<^zDAMH@&IxZhD%W|D7WY;2Q&vRIjQ{{`2* zMamQyK&3fQeE<^qu8)>BHokYhsrxzScIjU?{e}cOz1ogGRM1ZSc2DTLDGil_9v(gt z!NB!ASXm11_nXL(qz4Gs^xD<%@iUwnyGNwhxYjEomVBAgBBn?zy20GncmgK zNx3`o-Cns11jYUxjf8rplXbKg+~~XZaU1g6A1w=eytfs~S4u=n;d(k1APx4p5tR9F zEHyR*I8>x^+Fv7VBu=x|ey=!p9h0e?t}oZ}iU&Z9DW`Rhs<5ECSrc*PY_~ zkjpw-TN+6TpYy`c8lQCe)mlzW0@|`pW(UvU4I5gtEE>lLt8K*bp_zRo?1il@!tvO` z_6Y@1!ylYqq<3WU*&YtX-z}|av%W|NqDSHx^<)9Mew~q24?KwZec$&9m4320Mepz6}x2E-a`kE~?O2&lKVghl0Pp#wqks~)g{R8bmu-gxmPh&gz7~({S zEp7lEyBq%DNOn7^j}px;5b%fjIQL}vI{#B)oi3C{j(3BS1zoZwt-tC38f3*yO$4Vi zv&I-Ze4?|ERqb|c=YV6`cQJ*5OXq(016PtqZd%GIpVf)3=s*gWu4;i}r6!=OyDFX- zh$pEHpQ|?S2nudub9ZI;u`t!yc{l+-uTh!P?FRJo*?t+z!MU2(p<|x>2jos-4S*^_ zms*5;y1?0DI@wne$WVc+3CqiBfTVupx93OlsgAaqnwrO}PYWuvnO#pyDvZcxD^0Y_ z%x*GV`A_sd&_#G)9RY5E)c``)mNN!+onaKhcwZ}SHD(kBP<)nJ`ScUGfVuN0V3fFw}JN39>Dd!bDUA!zEJ}mR#nX2H3;;rvDJ27Zu3?4MC#kO zDVg>uqsf9lEu^QVO{<*2N_EOcd=H597@nDdmB|@4E}pgVC-q^4(x07}OIH{QXli{5 zMUp)%b|CDZ87>zF?w8Y>J1=8qvwVLYl~xHXKqa`~={bi<3w`tnIXSA%WG27Dt z5_fgrL>YiPy-ykD7zi+SHUG|NPa)Mw=|tlM&d$z8l3?kUADQ(@2&7aWr^}N<_s#*C zmo_27pgW!I8an*M3cXg|-`~IG%)}k161D6J!23hazfl6}tE~~xI8QTC`B%kP zeNjK`+3s+qz|R=E3HZJML=OFZBo|sM({9iAQAP|lb>(nVxtW(m0N4meO6PN11PRpr v|M(2t5B3M-sdN}mfXkdgbQe>|N6$^-G@mur{spd$KT?uYm#vh3AN0Qf+g4LN diff --git a/Structural/Bridge/uml/uml.svg b/Structural/Bridge/uml/uml.svg index 8525670..e7b8e4a 100644 --- a/Structural/Bridge/uml/uml.svg +++ b/Structural/Bridge/uml/uml.svg @@ -1 +1 @@ -Assemblework()Car__construct()manufacture()Motorcycle__construct()manufacture()Producework()Vehicleprotected workShop1protected workShop2__construct()manufacture()Workshopwork() \ No newline at end of file +Assemblework()Car__construct(Workshop $workShop1, Workshop $workShop2)manufacture()Motorcycle__construct(Workshop $workShop1, Workshop $workShop2)manufacture()Producework()VehicleworkShop1workShop2__construct()manufacture()Workshopwork() \ No newline at end of file diff --git a/Structural/Bridge/uml/uml.txt b/Structural/Bridge/uml/uml.txt index 88015af..a1100d8 100644 --- a/Structural/Bridge/uml/uml.txt +++ b/Structural/Bridge/uml/uml.txt @@ -4,12 +4,12 @@ class Assemble { } class Car { - +__construct() + +__construct(Workshop $workShop1, Workshop $workShop2) +manufacture() } class Motorcycle { - +__construct() + +__construct(Workshop $workShop1, Workshop $workShop2) +manufacture() } @@ -18,9 +18,9 @@ class Produce { } abstract class Vehicle { - protected workShop1 - protected workShop2 - +__construct() + #workShop1 + #workShop2 + #__construct() +manufacture() } diff --git a/Structural/Composite/uml/uml.png b/Structural/Composite/uml/uml.png index e3534467361e12a0c4eb00b49d290ccd748b166f..0009791d75f3fafb9fa3cc47995704fe634b3a73 100644 GIT binary patch literal 12745 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 UBC?0{{udd^_iszy7=8Kw0N&l%IsgCw diff --git a/Structural/Composite/uml/uml.svg b/Structural/Composite/uml/uml.svg index 6c1cb5c..f5c616d 100644 --- a/Structural/Composite/uml/uml.svg +++ b/Structural/Composite/uml/uml.svg @@ -1 +1 @@ -Formprotected elementsrender($indent = 0)addElement(FormElement $element)FormElementrender($indent = 0)InputElementrender($indent = 0)TextElementrender($indent = 0) \ No newline at end of file +Formelements : array|FormElement[]render($indent = 0 : int)addElement(FormElement $element)FormElementrender($indent = 0 : int)InputElementrender($indent = 0 : int)TextElementrender($indent = 0 : int) \ No newline at end of file diff --git a/Structural/Composite/uml/uml.txt b/Structural/Composite/uml/uml.txt index 598a697..933d4b2 100644 --- a/Structural/Composite/uml/uml.txt +++ b/Structural/Composite/uml/uml.txt @@ -1,20 +1,20 @@ @startuml class Form { - protected elements - +render($indent = 0) + #elements : array|FormElement[] + +render($indent = 0 : int) +addElement(FormElement $element) } abstract class FormElement { - +render($indent = 0) + +render($indent = 0 : int) } class InputElement { - +render($indent = 0) + +render($indent = 0 : int) } class TextElement { - +render($indent = 0) + +render($indent = 0 : int) } FormElement <|.. TextElement diff --git a/Structural/DataMapper/uml/uml.png b/Structural/DataMapper/uml/uml.png index 31cb39990ad708583f72fa77869989ba3774c9f2..fabd1a82b9c63a4c7b166b8fc6ff0359dc8d3685 100644 GIT binary patch literal 14730 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 literal 12696 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 $userIdprotected $usernameprotected $email__construct($id = null, $username = null, $email = null)getUserId()setUserID($userId)getUsername()setUsername($username)getEmail()setEmail($email)UserMapper$user : Userprotected $adapter__construct(DBAL $dbLayer)save(User $user)findById($id)findAll()mapObject(array $row) \ No newline at end of file +User$userId : int$username : string$email : string__construct($id = null : int, $username = null : string, $email = null : string)getUserId()setUserID($userId : int)getUsername()setUsername($username : string)getEmail()setEmail($email : string)UserMapper$adapter : DBAL__construct(DBAL $dbLayer)save(User $user)findById($id : int)findAll()mapObject(array $row) \ No newline at end of file diff --git a/Structural/DataMapper/uml/uml.txt b/Structural/DataMapper/uml/uml.txt index a521833..215a9da 100644 --- a/Structural/DataMapper/uml/uml.txt +++ b/Structural/DataMapper/uml/uml.txt @@ -1,25 +1,24 @@ @startuml class User { - protected $userId - protected $username - protected $email - +__construct($id = null, $username = null, $email = null) + #$userId : int + #$username : string + #$email : string + +__construct($id = null : int, $username = null : string, $email = null : string) +getUserId() - +setUserID($userId) + +setUserID($userId : int) +getUsername() - +setUsername($username) + +setUsername($username : string) +getEmail() - +setEmail($email) + +setEmail($email : string) } class UserMapper { - # $user : User - protected $adapter + #$adapter : DBAL +__construct(DBAL $dbLayer) +save(User $user) - +findById($id) + +findById($id : int) +findAll() - +mapObject(array $row) + #mapObject(array $row) } @enduml \ No newline at end of file diff --git a/Structural/Decorator/uml/uml.png b/Structural/Decorator/uml/uml.png index bb14f3d9f167443c92699cd4eaab2668fa16e102..e1e83f23f5827e4adce5053f43aa1919224a0d13 100644 GIT binary patch literal 17063 zcmbunWn7fs`Y$Xl+5ELgjI=$g%F-yNC1Qxs3X~dq^$d&npaM@QG8=t_b+S z2b0x-y|#bnW@Ba!yC-jEXXao6Gkf#c)a~(G80;N{gX5izi5<+z)`s2D-pS#$nYq1# zg&Dh@84O~fMFDElaM#p<{Zr=NJ=c_gNJ;B<3H*S4>~p;P?$4hE%Dg7nl+?@7iuqhV znQRlq#7fs#A^ZZ{_SU1eoY~a&wC->y`P3XOur9Zvmx_Td!}}LgJF;0I`SIEB!#&Qg z`wG*sPZ;;yaW7#B9j>O&4`Ut=)pK!nYFa`S_C3glUJljj52pLDU(q(sW-I6=a?_uB zo5lVx_O|zr)%Ex z>?Zg;r0e+9aQKlrPf%P)CzpQ*8c9Lf;JQ%!5pS|oz#K+n{VV*ch1lki?7@r$U(Owu zEN{k-jlT%zBuU){o6}U<^40Y>m1e#@W$HU|w`phDW4EC0q}7RulJVt?iXBxTc~(%` z;g{)Jl)qk@HC6KXQwi6^Z;{s-ONV~Sqqg)WK|`)s;atV7_nv^2^gdqGqA6&Par!Vv`iIu$sMB zQ^l85i(!bH`D(1G+4*Tk_UIaS|2WyDG8EMW`|?(N;}_Z9d_9k_%bxvkv*S86@m2yK zMKVB>ECm_k1B{*N(`Ax|(qet`b-5i%shUd`^LXfWYng1g?{z;vCAFZ4N; z?CyB0l0}01T;p=>=r~*{UjStH%+dXvttOwC?-s5D-3E?WYl8dUl1-Tx`qcs zhU1T7vS2~N?Pnj+(4-|LCB?%|EEG5J%zHH@>E3)qg#ETY2 zq0~B4(8~LxZfUg~Rf)0@Z8H(&K3H&-!1H-=cfpnXB|lpBJk;og@B}C!xz7BC+XooE zKa>Xj5eElHCgXYPgrkazN)ItMOv);BSY@B^wLAxg75CGLC#*E_+)8!JI{Cly9aq*> zy?>X^jFJ6Zl|vkzoU9+7uez$IQN3gx#Vp`}1p6^w&Z1P8V;%5As@$4a3S>T8T9wdGLxFUvwl4et#7S4*HveXxgadP<6@9Zxw=lJK`qf zp5P%q6bq!XgJ-OH`XS$oOvA&>Gl?{RZK4IywusVjed>2;xL(`nS`Tw3pT znWLC@aGv}Dnojf`3)X$zAo6A>O&y)Lc|n5|5DHYsG*ahN=9h;v*+ZNrj09nq;@C;!8l{$*3bXM#EhZ)r0fEM!KZgtyJeyn` zxc6_ae=jt?9OaHrje)&AG{5|Waf(Ah@__0>(U;z!nY_+=dLL{3e7BY>ngJ)S;k41E zqdRnaDZ?+g_B4r6B@>Hv_gBZt$w~C~beZzG<&T{mp2*0?S{q%@y_D&V5vELU_FdEQ zT(Dw2%&6$@20F%{hn;!=y3?sTc` zbXl$K+|gzFV}ZDtqL+-=A$y`8&Q;}Px}^p}nRo-U#k#Z>8?$iXWWv~#6!Sig45L=| z`{>TJgiHxRpXu2Z7lfaLJBz+~eky*GkeEnjXlyC-4GPzbR=W{)X*VCCwzU@aJ$PAa zu({mT!Fs#c%wj!}Z)YoNy3lY=O&wN&OL#Y^p;8u!!xdli@gaB?pE7v_1PZJs`>!uu z_;{=>t*m6|OgBeT;ZNzBUEe3gVX}WIS&g48E~tF>OJ+TNEHEbRV4_6-a4d_+rh`G5 z94p|*YW!F8p?T!f_O%S!V)Yz#n;q{0kGuf6&@HYd)yVI?7+F3y^)kh$C3&aPu4hm^ z*Bg<*hQmDQH3zPw71-)vV^mMOZK~g^w-;G-cUY4P-y6u`cqNjfSIvBJ5!#0#TBLp5 z-B7+7*W%;j8%HA^#;jk%>g3wjv&#R_OHR`m6Knm2@^K#RU|(=_gUj3_ebukL6%Z$@ z?k=h~13lr5<9}2VI3t|j-+Bw?uspCvCTtlT&_c^4s_@mZhZLLT2@TKSzd_$Ll>K*@K-Qr$OcA zsm0CXQitox#2ld)XKMrT9@iI?Z2ODNrif9aXKRCre#cvrreqgKn%5u<%-AL7x@ii-F54(N#pJ^Nn6`K)8=-8|yjy3Oe% z&-Yttbv6vO|25R4keqHO>KX4gTc;Ts#U@fnNjH0rkBi-BcFxjh4>=hU>Xzsl`lQhV zKXd|fbGD+FWePsRF8ph$weP~aFe51h*wX{R^4%hsE<9eCDZdWH*=`f1W&VnSdiY6< zHfr8O0jo^X4?+b=X!0b>dv3WZ4ox&|i(_ML&_Hi`-J`wAMt^-m?>^c8frA6Lii>Q$?e}6|xMP_XJ&sT3|d%}Ztb-83&LeFF0WYT{v z*K|-^qxom^HFbo!%sfdaV#b1SITDUyBEePFM*D`Q-Hs&4*SAq1zEBKx40r-P_1%e+ z{|wPt8w^f6g#YJH&~gsbi}?NamQQXnOHWN24CU%LT0UX^>)g5z0d*qZJ$?6FI?>-C zPXMvEb;_#2(x7Rq@4~s;PEPWSN}_*%J3fKj!g9ofmArPQv|ru@ZO$po4jr(H$n z|GcZ^?r)5{=l)gq-3Jr+@K4(^28<{$sQ@{~2k-9=P2$D7PnPeBwd*i;|M%h_prm(E zM}qOe-)b}pP7q_k%E=_mKCSkPofc+Y^Q|>oQ^pP#K*@J0+!z+ zZg8nC2H?Ub4%|LBDNn7nUcEZ_Le^o_B-re--~YPD`QF{@V;x|Nbp%q_G~x^p!7IH+ z=TM6g=!+o`pt827rQgJ^Al|P0`jv1yw5rl4>YlLB!uGdE%>1yx#os(mX~mV!Z;Rm3 z_iqm(lk#kTtfS)!3fM0moxOLtI7N)@g4OE0Jr&lYKVpWDQ3FF5OSwIzb*Yrect=4{ zsl{^NdYga}l4HlBCl~~+n4izqt8Q_8pC~_|k%xP|$*7^BL8~&NbyOBTUi_JuMO6(1 zYx?OZGKy^i-r0jND%@m&ANT(bA|6D#^qhA_upRQIZ%)J7B8Yw5iGnsZmCs6(k-yoK ztmmS4BG&r|(OLA;qCo%pmo)MKr|VZYbMvEAQ5N(Ei2fR@`8r9dj~r%?Pq<+Hb8##N z58!Wz7;%%hyFQYX8vGhx*L*A)S7J4hPrc#vxn!vK6EC+_J24@3i{nJTn8e+bcKJc0 zsiH{*5{HP{?dv-fm?7ii;pJhzG&&vduMMg=ks zg&$#uB@Y&slt+9XZoLgN9`N-oT@@mHni!eKl;r!fca)5<;=G4OxpS1sNB;#ZO205m zW2mDea;C88$LNBWo8|=d3z$M_4zhmL+wNGmlX||c=4TPTm_?!U_lfJRB?iro%ds}PO4Jv8FG0#iQ0eaO`Lb6oLV^BY zwTiq~sEPV!wRr`DJ>`gqM8Wa^(IDoz4^x1S(EH_dTq>oVorCih$GrQ*iXM>-Q;Xge zX=&IL#`IrbHIh8I+Y6c^h}G1uFAaG*T`%c$Rc3O~G{wB!)uB4{m9_RG(T6%!w)CN* z3KwTwe~z~uS=T0uD)$!+BO2mPtj+iY85xJi9b;Q>PkVdcE!QH0!h6NbMM&` zN#1p0nacU!apGT_8w~^z)lJEbAvWgA;vdq!77hEPgJy!7;d4oA=c2tO(nm7`6=ev;~mc1}ELli(fgRuiejt?nf=YBnbc7_1n{R za(i36@0D55ug&{+2T22qnAodl4-Z^L$_OV@y}YH(Y3z8v^?37@4ZU45igz!_@$@$G zsWTBzo3v{piEBD}-8^ltH5sWIs@kl&o1K@p!i)-eQmtWS#az!1F4S{{E`7Z&W6U3O zmwwkTdYoR`EP2)Gxuh*nFK#hIG?#L$5Al9X1#`OhE(@&DuuY;)VoYLBLgnPpO4ZYe z)P>c2IJvkY^_b2Dua>pH?cGP(?TP#&uzQuny@7WNB|5h%{!lQ0?45dWoF*M~znk@_ zY)Qa)O2Lf!{y$Y|Ym@w|sz?p#-RLHYEeg3uSx>Y4HR90usbMyo3}dUtE0F|6E;2>s znNt2pT0@)rx89$9KBdR=QJn|dqQ^Qu(0rsxtI44$EF>gUrvP$;T^Y9MD{`yM&CN~A zuI%h8J#|Ku-T-+*6l}-|d-nFn#cmw$24yVaMagP85iQ(X?kS6i z{-u1eGJgM23U6)XmXS1Ak9|bt2g~hjt58DGwGBFzPzS5geXQ@BPd1?6WKx;V^IlX6 zGymTDc#WGJFn*Wz#I0yAXyh@bad@~NpYfU*x%|VEJJq$WB){6 z>`XX{+pl%HSGetqNBJ=n(U#p1dg;jcaIh_QqtWbL25PwbjwymeQIgxKyFE;&@AwsF zQj8QQ{mUasyQyvm=l zYIGl+zy(~$i^s$x!qV_x44Z%7!7)w$LenaBlzP{L?1;r|@i0!f#A41w^+eGz$GGme zM>Xq#k(H}RWXzTI5LMWR576gkQTvXuVJ6H57;zP58D z$dl&=FX1ADxh36h5jhm4-g)Tk5_RB$BzZf&6hzyh+`UXpF7)&*A!Kt8*&XESF=csb zn351t-uK9KYp1g+Nk0s9>(TR&LH23LQMQO#I=QjeqMCvw8pX7;9wy`DmjkWG8-dRr;T@BNGS` z6*7pa9HQbr#P_YNN^9|Wh)N9K*@N5ZG2!B^-~R>1(M$)^D2NFzfSQINA}t9}Zb)W1 zeV=ErJV8rA2bD$5pz|z>4R#iczFjkK{S20yi)0EG7?}6XP44J4gQ{%%AS8VrxDlfy zQ_tJi+VJYq$>rApP!Kr$Fq&WZQ07{^c*O_}D3sZqx&wu*c6DvAMlqQR!R`i|wxLp( zG*4>nKlqU6-@CFumS|_<+ue_c>9~k&{;RbC*@T1LO(q|(HUJQ$HtOa%&~kQmHZd_# zRaN!n%a@cC%716eNZR) z-w;uNoW-9&g>S}lB$b)Wu*D5Gj3adP8cGsDmlqN79`8(_|28xE-8K4naq)5ElCDkkZUzNvOh_+PN7X9S0rl(5d)T8!N+ zv4`Kc@9STz2w&p?90_XY54E?q7fVwKV?3S>`2_V>_=aDZNr0fkmBYD;T{1Hmwe)eD zf8#7BSarJk7cQa?fIiUc7|rBGhI6f~|8D%k$e{2sDjvU1`R5+l_GQ^oNQR8cfv8#+ zNCI-@xLEpSHkze9?&F{-UL+4wTPKn7v+0-GB;FRfC6g?-IUxj>h58WbSFVZfv+HbJ&sXE1S zVHADs)wkC)Y6Fw2E7M6tLkso$I6qU7m8F~|cU-5{(13G$BP_KQNlLLD5NO9%-|%eg zz;`&Rg16O6@$mEv55k*BwR>n7nb%a#XSHda(-cXbzkhCw2)_KJ ztHul&8LYxfX_R^J$zO5Za`=7f2t76QLDa|LoUq_2XHzq1nw^l(jcd((qf1_e*+6a{ zO_rGhv$E2W=12aDjgi-4p3m<=_`1cK6-D^GB|rSaxb^$!Y0%GYpWzdtCeLcS)Y_(@ z_`sJ54=z6!IvBomC4k>ENGU(hYShwXh%sOf1kFu zF`tU+(O0>(o2^KAa(rT&0noD~J}0@bo$IYhU0ir-Y7rV9f0@>H<5~3x-E&*_0(*CV4I_Rrtl$p7l3rLtovmY?3?BzUMt_zSoovXIy zeXD9QUAkmOi~%c5NLKT+0rx9{2$(FjK%!y&=8}i=^V3b5MFu2@M4rRwrcn!kbzKOy z&1Qo}bsJype!L&c9{An6Yh`OcC_3+aXSSeIMjTxI9oN59SHmSX{m`zJD6<2Q?l&~l z&qh)_$M#pmg@Y_E(BDSvy=i>vBA&-d@gU9mMT#i^`ylQdou8 z!?wHB%A%OJ7EFZx{*~>kR}PKNZ0<*#jSc}S^dheKPl_bcHDaCJKiY~3l+8cPTFrMm z)D6maiZ8v@bJ}Jf(-52|8AXD``VVu%>3wH1Jmeb$lfg14g~ta(A?RpNP|+If78+cy z-Sr)$`fNRKZ;ZPF1WzJ=^v1=rCG!I)re?m$Z9D** zvBiyO>L{<2$%_DDv@3 zpyIJW=n#Y(rd@0>yFaJ=eyOr6pXC+$H>z|EtydN!Ce546#Tu>9u_h=t@@SLW3WiU4 z`KA3lMuASbl+FzQ*2D2akZ)_28Wd>cO%3MzunA4M{Z8j`OScgcN|Y}m7qI(=k>9)i zX2Nl)e*D+PaRk6jZ#Ol#<9(av9M<}qJzRVTnC`~SY-Bu~RPQ;}(owy8iDv*7%yOzQ z?G}H0>@;Gv&LVwLb+GattkA01@#r?(>45!r2H5mi0|1Xz z%um{CJkiHW;tl(zPI-Z9nu|wZ5!jfs@jIP zHy-wdd@|^Z-99#nQZ_C?>0J9!VBXtAC$bdrUtf(~Rb$t8eptmvP5ZhLG`l3Mker-Y z{pR*$dph7IH2l<@(q>kDY04S-eZ-B|pJm=4eviw(&e`JP1ds^=Ff8Wmmvnn9%hlE6 zLU~3Ec#Q7wdM4s(BTeUk9^~AP=iElT_idrrS@Ne|Cp!<>EZ)fUGvgyPLvsf8$=~cV z5W_pnhcgFyJrmZxXcbvzbcIu8r;nS+uddRg?yY@8vhcd@=Hj|U`N*bU%bts!Bac_v zBw|)q1oC$4>0wk#J}UV46^I6k6Zu3=h(=!E@BvlW;`^pabc3Yi8dZR^k=3V6SXd0O zywsa6F6e*^zj;}PR%1Q=(O_(SC>fX9W;nxkYa)Yz!9B*#ayI&YVyT_f|c5OU5ZiM_oG0EHEE84gK7R;c$7u$iyBStWP% zD04fYQ;3xM06mt;E3OS*FRftHuX(e?@U%7jPb8V4d8f7mPnvi*!N3deXF-O#$&VV0 z&gc}1Lr&OGk>OqDNW=}Ep&qxjR86k+HuVm$Ck-gruC;rbh3Wxu@if05j<{`?PK>#5 zZ3BGWg~ePuL+ZRENMN-6WOty!*|yQUnQh^!{-yBAo}q4*oD;wawx@Tdk@HifVRu%A}t9=DYBz>1cmvHmg8bT2>7Y0f6%usRubFfe$usdT4lf zc(RC@P!O6buzt57uYg7kziu2M7&jTgplKO1Tq$+1)ul!L*oAbhWg# zo9lNc_HYQ_>AuU;)~E|@>#4z5^7jBoie?kA(hNT@31CBEQ&<>1m)#qDv1oy7yKMXC zlgOvU=nqgWcer0Jl!f-m^;E9xZwQAWRyzCSK>T}y&j23-h>H5O`JZK`$wIBMX?rC( zjMw)eig8NUYw@_5^q=HL%1=WI?n6Z{0Fc(?bK8mtUFlgUSj8kli(`2i_Jo_3Hp*F9 zl(h?6GDO`1=5XkQmbUh~1qxy{$?W?tk2$3X;mUed#wIV6Lqq$>`7IT0)gRp$_tTe` z509?Lp^DL3jb)OZa&X0@^iLKYQuzYD$Klb0%Y?$K?$<<6_+#wj?4}L#R`y{bG zal-aC$>B+G&dmNC?TNqW-b)YEG=jA?dZT9YnKGkCrj#B{V*kR|S65esvs1P$Uh{nK z&Bsix4GirJrx7<^?OmMs!?+VhI%W+Pf6Q~rsv7FHP|S$aq==u2yeWLv53w!HU+2Oh z)#d}JBp*p~2oS4_E8p&rWa1ttYFlBw2XO3~UE}omG+3mfO?H_I(|tx2f+4bblg#1- zyfF(Its-p(mES=$Tel$Ca+FQ({1KS_pCG$g@aATZUNv{VW6(GUl&VI(a}&3fa=;^JG`&{2lWTM``%y_no|A~aax z4b=(f>w)yu0o0MiqkWedKV`WL6%>Fpwl2NG|4Hnm1x1pBx%7=^5M|0vzWZ?F+NpYU!bH9 zav2bw&Pyydm2J_&m#a;7!gdBeh6{m)jWx#ydTcfPLWvf}qdJQkqqk||8KfnEB(teW zYS;6XFFJX}C`E4!uCn)GgaYCFHis_-rSjfps@8>)P87!a0zwH_ z?tkFtMmNH3&Rw60^=kR6YSUQjwI^8FJOF9-P}%ZFjZj)^-(Yc0i}#A-M$^ttF}RFy zdSBhM160@>y}3x|UA_5wqLZ~&BWE(v1`d6XBZTvuWv$(Aog`X;JT|P|Si&M>jHypS z_XyB(m0uBdHpPq=T71a5QXlt&@G#lg4+TjL>)RPEBEHvemQwH)_PD{Ltc9{fY;bkQ z*z02_e@>T;2nmmrYUG)#Mo{dAI431-am<+jB9-jdahi{5a4$GCEB+v5?q>X#e=1DalxH;%Sg349sf2!#zrJv?9Lt;yr8uXg^ClzT zQgHSa_g12lDlxLx&rzVi!@gt1llsJFmv@^3zYP%r>Pysn-q5DlaWKIfWGezTI^S+Y zJ*FxF$5m59)cYwR59-znnN$A+l}$ZuGX|IICaC#@iG`?(9xmqW)k-*nDW`&pxEzL~ zixD+(wLBqQeVX~;@uyKC7=puLRLDjryur!(;=KN=&;9#`ecRc4;+2DgZwuu0vBq?N z9*Ui35ax(2OWMAc%iwtAbwkj_Q`wwV1=DkBU6nZv()w$>Fg?k}GC#4T$e zPWd(G!GYdFp2`h6dS7+1YKF+Ah&w>vcNB}%rybtL#6lyD*bqjtF| z>bZR8nWNGcmvWlji=dZP`2^`2wrO8E3?Z>iHSWh&Ln%U06p{0F?~&YMhLQygtG5K4 zCC$ycRKrvM3$-tP_I?A3uBVuoQ@U0RuEBt6#|{||d4yMM`C4WsC&ugYhLexa{g5Fw zPFlK_-$p0?%owCpYw;p;>H$#HeP7VT2}-!7rTk)RE2p_qD+rba;t*_NUG8_r0%ATy z3Hk5siHPgdVlzaIFV@%|-bYW_wCk`Fi~23&s3%!AhTIhh$>BY<=7kZ)){6CM$ z>?IL&F@nM)xy@Guqhvlm0L@-jOg>?u@q`#7i6 z<0J2M4{G=e{$BcOiK=ISZT-wHS*F3QxxCufEPgwmD)GX5^fNKf{QM3yWrok}Gph9> zILK~#-Uk217?XFxp_poZ*CuaeS}r4k50MYul5YNK`y;L&E8Ez^Lak-BDr$w{zZyUa z>2hZN43+&%D4RFq78ZV5s;eP?)R>@-EfazaQ5&NdoMIwlmK0M2X$#2tzPEy$3LWRd zZK_yp;`*UqIv4{kg~cYOh$J0W0=(i5@4b|l;GVU&Ak54cAqCs-d?d$Ja2eHF@{|ma zU^NXI=t! zoi4fd@0_wTJKgpX9i1-q+R`WL%=~>5F5KVg^=r{N1*>v(CI%-XhZ-$TKTnuLB>m@y zT^Sl%Zn;{TlA7ELlc^%XQF@O@gGU-nJ{J@EBRd7kXv65BR;GQjBA~I8 z*?UFbY>8P7;)3Pk9u_|9<9z7A-vwD;aT>;6(?#ohtMRIb-&Ky%a@GsCzA?(c3pGq~U_#-!VtIbN4NKV=l(!K(iJ zey90nvHGb`=H7VTDz)gK-4e+iu%(^OgGh22po%Umqq1u9BE03;e|k&Vmsk!Kq#4k( zFo9gzbey&~iFj~mXfH2K2>?Gc$poev&cV>pF7r^6$aWy-sTVNnJYm;HrguQ%p+60V zFelbM0KLkgfg`;X-L|K+qpEnbTTopo9na@XL3I|dGUgpNGpI8tFYLJfxXlhg4=hD( z2Ax$iD26f+AaxoEaCE>-i`Q$`90L{7hc z34>j6|6i}_{=vv?$DQoh+4d$#i@-Z%bx`LK``J53FM=ivpZz7H2tLV|t=@)%gL;)j6G`__oAlRFTjpNzZd+(LGcVO1?EXx;4T0D{YU$pSEcKgT_vJm(2 ziQ2XGuzc+jtjh<169t65TJy~wsJ@mm%v2=YJj<6QP5eR*AL}$l8E0Wv$8Xm>-T8(eA z=w*?kg+@a=5z+OVj6(oHDJOd`6}`+$^X67ofY1q<#n03`IV8z08iBA4E+KX0(7xu7 zIAeS9#LJ0ym|mG-vbD@7 zDidz*rOW1dnn)1TX)lWUunGd!9FLz3Gsh`iJ5ZVRc}6DoRU{oj)-`$`02njIZB zabv#)Ek3*&O;%`Gdzo*G30L=#D(@-&DXTP?Le~<$WgYZMY)Ajmin^DrTI#8#YCekC zQMVa8cyIr0oRLXw>;=(hQFBzlWYc$#)qEj1hHL~~zv3;^@ROqdogu(p`4qJBp!N!@ zv1B4mb%%?EJP4{K`{An~iI6024mzA-xNho)>Vtj$w|}cXkuAq-E?Cv~4w#EOd3MbB z&|~m(cSfaZIG64qrXj_V3y?|G^$-T&ocvtYSw#_wp@v0WyV)h*Oug6A#^axX+~_an zPsXTXdLoqD{#8>&jbYW>sMQ*qa8vONI#X>0QON9v2Ugdo!PXTi|hG1#Gw?rS&}nx&@)3I;axY1&w)%*dQOiiffO zOrN04%H24>C51Q|wRn>xx9^7Rl)n#byECD&pz=Eg^te5F?owNi=VR)Eq0vbWsKU!l_ne=9q~Sovzz}y zUU~FwQ_4AG(pZ66OmmN10@V07`zFjy*2dBTD_Z`K*+{f4AV4r`w9xb&+ z+gbHi^%?4@?!#uU1h=MUt@f%(buO5N%WpRpMlC9RK!pn!TxXZM->wS%x|x5A{$gHw z>+wGiy#=(R(%ugsKhWJvrgUYJJZQV#JQgnStBinPaIuj;R6v4}KxYeTrCMoVKyCn~ zcGw2oebE+1njC#E4g2F|qWR#PGJA2EfWlb(@l45#hY}XQ>X`DUZvm%$KASC;ulDLt zW9P}8n&C)4HLdltRY3Yv41}iULzX)2!wqBH3NhTNgjsBc7?to?{}^HJNW z|Ks$^H^(=9hyIpDfd1_N@**;JW4B`vs1P(gQdUo*_L;1A0aa{QcM&;2Hts@wK9;Wy zWcRTd#dV5mhPi3A4uC?|aj=!sp?vb9THdw09ctzI-RI^KKR87h;thdn(gTjae@b+O z({xme5wBb#t?^Q-k4I~_+)%G+7iddNgTqnEBdPMDq!r}DMxmf`t=yfM(CWbGJh&qZIX#4z%up0GT3Z&a0+= zT5q6VI02*ej7+C11vgmud8P&8)DO|C=7o;}E0hBg7S$yK-nD@|k*z|aO2BaE&AlG* zxQ)c6wL2s1L)V>%&x2{wfX*`Gd*nUeYW#wVrpYW{u~cmUtokJ&$iF-P z<~#bizlR;V#Z84b`vgo>VQ*OspG8#er?A`W=#6}Z|7~pekJkZA7ag4ixxf|sT@j}K zA#ZxH4Av%vb9P+rmRYN!a{C#mk=3?gYgJ8;ark-S2J@|k;+@b!7ABDA=_bgSmCgu|QO9*e6wgzfj~|Am5UCb3FB~b@(9z*Y5WG54@E*P!H8hvCy$(^Wp4`-XM+uFO!DUL zv#B3JiM2J<-EKc+UTq{F^$6nqUmJSYcA!KV_gZ>qn}B|!A9H%Mvf!2Rx3sqw(Dr~8 zlYtcf(G&JvSE`c*jFXX*U6u44u2`ubvh1r3GHl_$ZMZ$Wx|#${cGb`)7}Et3g$M$Y zAPpo*y-;X3vTdqC=~uAJgsgZ8UC1%MTfx-vjxyWW>5?T&9TkgsYN3Zj{?y2dR z(*jA6*|CUTtA;W>(0|*|Bm+a~}jN)OknH9X5Nsmh;7!8$f%pe^t z3#nakXD-XCy5wrg5hNLh>)N%0q&_-hJL@C@W|>5>IqQ=smIRQ^_KSnHr^Rnij$&H5 z$AbIS53TN$4NvA)|FB&yudD#w>iGBX+}zv_4h|onyTuGZJVTtRd;k}~4roUp5S^Ve zR&jUdOP;ef5ejVm$Hx3BV`LEfRn00QJnJmBvAq1`D~UA6;8$RQ3E}UX%ice55}{Uk zjIUZrmlr5PzLo{rf;$NY_0j&J2+D=ueSKW)lt#MV0Z~CNy0Z$-Gt;;D_Vy7A`x#Vn z*f>F|)alW~8R32*@$rxN6dkPc6%$fZOW(jUD<-l*|K&FFT!PD2Hqgi)V9rFRgT^n|kX?>4 zCT?LG$~ljN0x^y1xYR;fMrLfFl|lWtv?0%&VfMro)At9;UTS&EtwJlQ0?xrs-O>l> zU3XA{AIEptBj^M)A`WJfB09y(WusSPFw1?bb;!@wxj+_eGA9(1D+S&Sgi&mx=RyKP zGCmQj5s4)OPfMw|weoc&Syd1%yC#9s3VU38!*JY7Bqce%@HZ%QI*2M(!|3}6^o%vVBz~S z3v!mvlX)#&&wiunT5k+d2mr`5R4y-0Gp=Ym6X1M6avF8*@jLxcMLf~_A{+lGH1t?X zx)vx!gR>3?l`g;4D|XJ2R!gim4gRBG_)Z=VVbJ>#TqEam8wwy`Nl80m=9pF=aY_WM z9L(y483Da8jFXHfmxe7bkH#9nLV&iz0tN#q1*wflXWBz)>5))`O{DcoJ{K%+ZNZWb%ixILc7L;Q4(JSUFzGgMEpR2u*@LwE88RU#_R zbe0@o?D#k2mK#591HO7sQNgw6X|0YGNDJz2E&^Y=E83TPSw zX~@l$BPP%j5yNlR8a;7xNXlQudFAs>mA-8JITIg}p_!y(t)wW-?X)$@Z~LVVmKl|t zyl}X|RrPbT{&Qo0!S&8!^HacOJFF?#d@A(0Ed@FTuXAp85l;(%1)c2ZGPR-rMs<}} zjfl`TR9$g>^!(iMbEH}{0?|w(Mh7M`Ca22Y-o{q+DGv|ivGMC_E3N#^erEXq#6)WU z)5^-qLd^oxp0E;`#;sy}DJ$T4xtIhXf9R)odCXZJi@>e`)K@aFxJ}mCZU}7u`Lr2P zM=ok@_kdLSluosk*<1}k`6e=TOrg+}Fesmc72sV#Udm@X$5~2N*T8N%VEcpr^w{un zZvk~KWn0L>OG1cVH9C6dzCs-9x)Z)#R#RRd^f!{Swz>GoKY0 z1nFS?Xp{{lBY$+=ahn@xoU z32>eR+fI%rX$T<~U4ki6-;rXA9``buR_yaU&4v<)Y3dp~@ z22vydl{x~m+Gqj&T~~6j;6Qf)q7{~TDIkWyOakBC_oWPJpL$0|;O`kp(|A+T{~!GH z^k2|vx(3DFDO*Jj7qIgmZ3h7fc-p2)4OeC>HPjt}6asN^jIX;U2$^$r6Cw&tBoY{3(*wXJ zuM#4DzWZ-GPw%JyZRbe}gKClhqc1i@*;&a{IdazE*Fl_cadu7j(a~$0^Bvt0G@PxO zIq2i86X(Bc(;OG&M{KwJbCGpqMQ`7yc!(#|89Or~tQ2uY`v2W^G4L^{YU3eKh ziRU~l3HQ_R=Dq+P)mm6!D|TTfCEkPf+=uBoYc(CKHb>M?(n4KX)JWQ6WiRP7XOB4o^v z;1TO?a05TLE5Xlty@35w=XqE12e63~ocVCoX`9&!%fFQt^Zf^OQcFJiOD|d|(Anom z1svEI6gycVo`$KdfSd0#$K zM44oX>15$j9V4DY4RNT;69I4w1~`?Bw)O-1??wt4>jM8V_(YcfZ-Y-|R*n0v-q({a zPFA*eU8zX>kHrViHm4gQdS~&;rv7X35m*0f@qwTHzb!u9-wCGw1{Ehs3#J-i{+-yd zUwrt}_99nKe)nB;XAw4+vq#b;y*tvQ6ctrZSn2A>y>u-te#Ui>W^UUzjXyP ziBO0^e!*cR9-?gG>^UITa%jG^w(Uu2fWY!29v1OZXi)wq-N?%aNkV|slklFykDr+# z9x&WZrQE!{__sO#l&}B}orNG&WF$kKMb%%j8==G0aA`<185tS9UO_%028^JGis04TqDxv!k)8 znZ2XADTkdY9BQsf33}7;(9nYa+ve6Sw~v9U3(D=!9(dbVUM~`QO&MwNkq14X36Ugj ze{9Iq98*>-A6Ke3Gy6{E+I8~*qeQjxz`X0pWqpi9Q3Z=*FlMN3n@X2qk7*b0pJ=B-4{U?Qabtkix7K1bTfB6vnK(-vD z&3>@^;dTA|a(Z=jQ#L=8C;8iVZRyQ+I(i&S4j8Fm!XM(HtkoGz%6VGM#+?~xnx-J! z^Fh!zZ=NlgxBU7N{FwC7^(WziP0;!jvY7;4n6OvJ z-c6c1T$C_WW3hQVsk-)(_Q^}~$={FShH3tMsQJ^8gU?qM3VZ^+a%2tbvMC4r(Hgblk&%Wd`Y+40n zpW{1aBqY#fR8zH#o|2Q0aI&}%c(r{K@;;fjF}Bp1y1o{~A2QvUYcSopIPRZwT1z~~ zN0)e@@jT%h!+TmxG$e{| zq$*PMPM>p7VZKPD@;7#Dxa3Co;HJ)8Ni=#3{$pty%ifU0=o!@JFrz)8oBm>lN;KJB;O7-xQk7@=KYeL zy=L)7HOc&pPvOzg_#<)els6j8O-z19-G$QC$gbtP_UzHG1@lmn?vTesD^f7(dOw+a z+mXUq#VqFb>K6*v(S;s5ObW~yS3Rk@sG}T|Z#J@;0FmLOes|zrc%(f`z@UGM+{b8Xay*u8^PPOyw$CY- z#K7027>9sv9iJsxfnhATI-|$I-K%*v-0zZj{?>3;n53Yl&)2s`b6eh%=&Dc?UoF|XZr;O z`cGz@oK3oVWE&{tRO@_&fJU}s>v@@Bk4K2-@r9vP5yaZo!-F9h5ra}3kmzKs@W*ckKaLPV@J#xa!`bzq2|5XhT~1C_`1j}gbDuDt z<>l?~%!ki4I0>>ltur&<mr-hAfsLQf3Jt$C#%I)e?fue#AHrNuWXuQuyu13yxUn|M z!DsvW0cDfUgaq2n;mMgOFK6&+sEsN4 ztS7XX=2+SSc&%57>&ZCqsSInZG=D9fD9j77^H`3)KMe|tmz5>IJQ(UUYOxn-*?ml3 zH`ZQd?tnyyIsEc*z*Gyrdm}@|ErU2@e&4;8_9o(3`5jGYIJ`!(dw8uh#wP6*WKr5R z8~hWI40VT>=T6lZDAgCI`zwXt6h#^9vQXUFXo@P&l!5e68Ny(G$d<9zDL=p57_cNE zIzurXQ4eHXl+RrKRdu-M$zx{Iy84ySmwFZU3vkPhPxw{xQFWO0X$vzUiPq)k{Y4!)u`8;F1r6 z24lV2InE+Nn%Q@-h9W4wv9q;845AZd5Yph#Y*Iefa2lVDv?B|pzHeUqrd!`%`3XbJ zFzNgGx!0RZtDUrZo?y=u{>t4uO`ECaG+DZ}tjNf48rKbVTE$fCJ7)7Q-G1x0zu+TR zG1ydMh~mVm4IR_59-^{^cZ0&SCJmzhKh$-a|a zxsZ<@Vfkgy)ZT5mJb>-JC!Msifpwft+ssApa-16DqD8p_7P$FNDPX^k)&z z9d|7)n`I+6oKbJi_D%gB=f+$MxL1pR@0tKVGHtD$cPyPKmkt^O*7G4RHwWjrGDrp+o61iEdQgTm`u5vZ&^Y z&d3=SVBs2@C~q2WM8T3h9{&B;w)54xf|pD3*;FKZ+09imEFlW20NaiRHN5$Hqv>z{ z28Qou0Cf0`_87)0q=OPnhSr0z0&Pyuc zKWnpf^vfn!7lKL?Ma|8~^|4@4A8*H#9TK@Hw_7*UOK^beH<8NXfPEK&UcIifE6rC{ zem*drEfZJ#>YGWz(z40s%1Zq8z_N1Td{f#&Bg5ZqV&Q}b8Q?rS_?T1W@^*7O&hL6Z zE;Zj)XUXgQo2LMBcgSr11smHPwRa?nHr(c7jLsf>{};*hD5`I|id#JKHzL z+!0dwNLv}4wPE?hv@|s!YaAR-mhQdrU&XF0%*@P|w_C!loL$m^eq~_k{c0Gy{F;l1 zNW_m(=lJ*Ax#sEHH|sAj8K!XQEFbAIEdxyQM(#UoD^yC zKeyu`IwS45itlDVVn6v_si~C8^RpRNQInD~A}c#kFA4NqH2DbSe!$_(sZmA)pChliC$hVAFTps&7nhQCvd{p(AS;2;+2wH)S5UK&Rx zXuz*7U5Rz@@LU*%VjlEF2rG@?qRRyhe*QclcJYQK2zENFkR3OtMum8&uMg{ZsW;!1 zp5A9<qZ{cYA1U}wnsjZw@;^Vi>h(IMZLSac%mAS zDSL^^Rm|st_b$A|y|E=QSS=%?2f7MP#(0aTYo4?tJF8~VcMQ&1prE{qku^xCp}uqI zM1yhnE+zlqy}x}QYvnV|w|}eSvD0l+OsZX7EuE^Ol846Wd3i1H-)`Cx7K zSNUb`)YOgXDcruns87;oip(9odrSA=s5e&j8AB)Avs8szGvUY@JiItGG~KCNtiDIR z2`V?&FDq68auU#TmMXzG%lO@+or5=Xzb9_Vv7IHQ#mh7CV|TVKtL2vJXm@l^xj}{@ zbGbgk`()=MvZi_=l<3~-@)I}Da%|kWkiVByfe>LjrQa+d6Vd9e_r5L^c+6-wO6adr z0eAB6Y1{!CqhKrZps}e}bn{sJCt|TpalW<4#eCuTobLR$Hb3yXm$Qh1h8iV+Cc*@M z_9c&KbrHEFLp9-|Ve(xS3$0{mW%8^2fG!vosDhvxf!rpSK%yU!wvpV^mT!PcgeGuv7B z&$9e&2>sR#7O2KGgY^Oa>|n|>k1reiD>UrmcgHcuamHb0W{f*(KvaZOeVz#lro3i8 z6}X6fIXvhkvEBV)kKgt>mFqnE3vB7ssw9(H(ce4u;wahussqMIC$_>h{#LR5tfViZ){8VpEdKgERRpJ&^i$#pawKxsiGdB_sPkizT z$r(|WQgYrlo8Bvr{@WJ}hWDRo^*w0|O0|%c?HV9d>;3Uls#LZUrt8hltH*QMn_}V} zX~$o#*H-u=jG~pva6Q8)bp7Ia)^xIk^?BPbLdEl21snyk1^NXpqVN8^Zvrt2W~5rA5d=&WFV8ELq3ff`HkIg&3`z z-rZS-5sIv=JyDKyv>J8~M8T5|6u(HPGoR)&SMfD_eF#hgijr35lu)aTyFx0)SFHCX zt^T-zy!tBxr~6FLC{ITmyjDk@Z;ANAFx51WdbxIgWaN}jMI8Lh0@7>p4kuEUh1m$l z$B#rM^@`g|5Y zT4Oll^l-5k1@@ofmEjL#N&ITu+DhPY<}LGQ({s8nFzqASo&erB%eWFH zr?P}TEFb<(AQ3k#-^P&%{1Ay#55hR&>@hteh`5?}#$|o(b}mWNTV~)%%pUFUZx2IT zcDJy)b5*1pp6bh>v=w2G@7_jyAYH#)GDk;K`dF+L`1nM(z&bFx6+C{~^bzGvDxqu? z`>gdgT=K!q4g&ZA4D$di;pXcH*_$_${VO|;7?(yC?tOBg0`s@o=*w?jN~~2gKMo9| zKjS6bcr6m9(2;u!n#ENRuT4qV&C%@{kedZ=T#%2@Eou?qt?=sU?K)LoO84O3mte>} z|5`!dF;OWhj|RqAUC*MWrunYvSJr?ryh~KZ4VvF=X+07L^Q<$7|D?$3f_-o)rJ{qm6O5)7STlF}nWu5N2 z+hz-f({Dfb`FAt_$5cOHA3kBkA_G@DzNmQ9Yv)w%7u2FUN@pgof9CzoLKO(l-*nC1 z)2=6eSPHHv&_E;Qv>bQA&NS-lw?^Wd6(qW9J6JN90u_W;Jh`^tE5e|a$EUT^H+f^L zT6)}wv&@zB!Fr0MxA{KnnkQRrTfPH6FmqA!2~BiuhMT836Gve0h`U#~&P!d|7pE@s z^Y?*wE7Fl-v*fp#iHFMJyIARSPu}1DixUAH>i-TC0bvEc^WDt2HpeOzrijQ$B^Zp+ z!_3?q=*1j%)WyfNGl8=&4GW|+SBB_qRsmb-b}_zFeAPis`}=+{Rm$h(Us;*W(IKbe{bAU{r@yssEx<#_iB8w<-cRLuqWiL3 zd;Y8Q`VXyzmGnUm#w>uPOp$MkD(G2Y0 zZd_evh%LRQGm|Mq3G;rVa~m|`q$T7?$rtoo5$4!?;}}8==WtM{tsrA{n&H`WKj^Al z0lt31Qv*@pgtNz~TUr(66IREFc#@thN)Zkhavrbi?T1zz_~QoO-630EQcFC=zM~T* zU}Af6bwB;J5#|eblrYlH&HG}t%~!yxi~N^aXBf#HLjPqkTl~dsQ6nztk{7`BUGTA& z#sS{&*_qP7fX<%V=DGm@kZ=p@?6BC`XD7=_x!<{!1DwqXb$G1L`!>@Q0bPiAG##uc z21gAIA_kZo&JMHKWHweW&t321&P_GBt~o57DW~#;Y{#&%veru7Q}<&u74Uw?pZlP@ zw4`yoRHqn(69C%cC>GCD@0^REctd$Oc9VY z0#nX?i87m$voS;pc1!0cYu`)zdgN)xMhYDkC5Iy^7Y7Hq^I=r&7149DwaxH#r0S=$ zN>k&dRUFa?p9992OIGs(giun|id?i&kw)Rga*xC7ov8|Ejd)1#V0`=?xK)SIj*2M> zCcLO0;Kz~?K?+CwO8r7y@Rwz;d4KjgJ1kVKgeZ!hf1%1$*VH$UrfWg1mP~%uA8Ceh zp$*S97-RbE?Rl2#;S}pOs7ZIc+#nt+qL&jcdRaPJs7`5yY)gE!IoIaH;GStC$eSQn zoXTh0fm!f<)dcCZ&^o`jG5&eC)%wr6I!lso^9(i#OS7kIR3G!rd7BQ6;ZwYpr&>5{ zdY5aIs{ps2uuQ&wFxGSZe!1TK^N%gyESG58}!}pK~P1;j<>I7XUjuB+gC%PWfo&(IZ9z^Qx*PDE!&V z0l(_6V0`%`j=cl_0%~e{xSE+@T6p$BhR?5_BpYPG4-hkt;8qK=gB!QDK1NjiF@=Kt zW*d1E`CR2g{L?hxcqyE5cJzI86JxJR^8ypa;2->8a?vRHaGbfmRxj40qqMHhZ34`> zIvZ_ieua~rRd@H^x39*=?o5^;?g&^xp}F18c~~2~Maum7Fm{9~HLMk@dHh^AV&F9k z`D9OoE^MQ!YK4T=#%glHkjlKWFUfzl##+9tpu*t*AP|DpN-11ZNR8;x(o)a2v}5D8 zHgAUG9UB`t;@cXuY~m6$>yEdTp3JK?I_uQhNYL61XATx=w)L<)KxstEq(l!!FT@AI z{CC^((;SQ94$j`vZIYhqH$F~RdO&H#Q~jl-KZW}>+#<+X7WVPanVs(IheHDcqCD^_ z6eGV~K%7&f&IJgb@$tKk6HCGyEU!POvtWro|p%$+9C9Sp9naNe0J=)wxb!T|i7y~G)#%jE}f}+-LUKoh0!gP(b z3_#aEezaMKq<(yPtWs${1Vet?xB=Ibt`NM|Pn^vQm^N-B#C$%eg=AHaXG+Xp{V|q( z`Lg73;4Q>PC`@qo^V1W!9kQA;81`*K)-9L{#pc}C7B#9n*xA%P6fo zbLA^vt=iev-7Ic?{#=ivBBT!4r9<8*EPYO{Eu({r&q@kO9~{%7q*`akJ_s>gl0cd_ zxIT@&)G62BZt+C)l;^aLr}8@G$bOWTwKMMn=+YZ+YeO7~a5a9ocZ`rz>~7(mG`Ai7 zk#kNbV6+s++KPY%L`Upz!*qhV&OQDL9q(Ww;sIZl|o-8*=v-rMLN=Bu- z(BO0m*qVg~B8Ls6_dbVqwo3i@RDHv*z)YD!L1^2XM7KiBk{m9#_P*v+deVv&?|VQqO?DCgs*xwX*T z_X3Kvx}eC8XsYwR--|5;OUhGJd?jmnN;ph00u}&+q$Hx<4un+)%I_YSC*9#$M zt8a-oZ0PI?^us+Z-M;ojw-GE+o5FK0Ipoka`=d9Rb7_w0iZzo2f%c_D*&dKYZ*%YMbp#g`K>g{fm6_)`xtDJB{sC} z;ygUrH-T+xDA=L-l*oJ$XSv*`Y16Yi$i# z)+TIcd?R#H#lIFlsrj>0i-ghPtMV{#bHDbc6(M7bMO?NO5X?v)E}#Kf93_UgzlV*t zeWNxsqKfsX_$e57b&2O$u#R~cdP4@IkorPG4nHc=)ulKL)Z^3mcQDWTrTg!_CI%3h z)zRI{LyptXI2TI0tzSI52{g|2;1;5RnCXhFYtF@;sxuUpV?+hwI^Gwu?Gu9 zeySl~K!=8J-azw_czN%dDmqC}Y@Oyi(Vy^h2J{H$9W;ioyWc(FjI(`ka2sw^LS&36 zcutOsl9suHcm^Q$JHT(wB+C1Nk}g2U;_oV3jfAt0z;%PZU(8btf!6 zOT;=j@b)+2<^&_!fK2o}4+Yq$DDYA-?r(fv*JX}j`sQWu{!twuxzy`iFFl$7URv1! zocm|?QKP_4ih|9;wwx&00~Xof>b#KT7ga)+m#vcbRh|+h1H(jgXOsq|K$4055oL@U)^MB7&YRMh*AA^R%Ox z8BeJZcbVgJ=>Ndf%>ky)z<4%MR!Yy;o%!)%ecgAC!{n$H%iZhzb+yg(ubG+)NfTR1 zAqFnOU&Wfmk3(TSHKs%engvLv<=6Kx)9iyYXJ0KNn=QMI-<2y{TlEili(=}S!g7AT zdA0wTi13)ZuQyD@-O=D%kaNl%R`B|Tp<$ZOpRd(ld=)o7SEUQFE6xYJEiay(8gtTq z(a#|dSJ2bJ7&$#mSMD(L@2)$sP@rUzR0(XP%9q_OR*|I=w+g7O{nq1t8#*ob;;Aks z7nc=dkNSoKky;AT#!{8X)aP_Igj=s@`WZ?!A_^ACZT?PLM0z8%%KjyhIEB>8vJXJy zDD0Y^^HWwH&V}N!P|0^P=Wb*G5ro#S5s@RkFq`WZHP`!*U39t zx76P30`c2gCq)cyPMSYCVQr|5$W)I_s6-WJNs#zsI4deHjYvKZp}hQ1sbhY1v4`{_ z5OV7g$JWkgOVOHIs;=FM`S96*5CKHp;TVeuqn9P|nBzhHn7sg%3!u0J&tn@)QKzKI zzEb(iFq{&`k!+Ak@Oyxtcm0d^rE>^!lg$PHIs4}qQO@l=BsbD1ZNpbj%&llsK1uk9 zNpGt#CI~|lnDZ1bECh5PthMPaU5GcIrPLV(@xK#E)CyS2AzD6@cm%~_V0|^1-I5`) z3E4cf+`V(}b*xhb2-FO`*B`T5Nl(>rfZ?8m6UyXIIVU#X%OMR} z7kiTmow(WL{$>#puys%Jm*Q@G_+PSpR7LG0GcR`I=?dD>9SsVg6(iMZ}k zCwiP^dqP^Dg~`t+UD%TJ&<4RO5WVG$J=p?q1%30Ln}vu&UZ`h$wzg2YJN1f+}Su1*KVS}r4_}|$-egwHJ2)SS9WQ+i=A|rnao_M8JA#q&e)6-d&*er2)Zy}=~ zD!zFz_T)Vhjh7gaTwJo{Gf@hd^MU(CQx!|DGj}%$Uu!#4iZqrle^tDn^TD|{HZ)LV z5U}=d@!dOy<+VWY@~Je3lr_Of?S#Qx=Pvhmx%>;O*g#m}r1n1b2R0R{5v;MWp~fDc zwCA7vS%`Tm#IXzW**2lXivlFL4kWBEi{$5D`OdOv)w9JJD1{lA7oLc7Ml0zx!}>J= znPh3G5{OineT${v(V+$Dg5nsyCfA@liYL%T`^z@t29e%{XJ_x(J|@RqVDwv@m3~Iv zs+7}kysBj6;-c$2WFIcPG}+=A)4LDdYsL?{S1xYeqvXh#AMjtEcwe#53u5;VS^TDi z2;-YpK1=Bz0}~?luRT2zeSPvV%mZN;hG@6o)!LhJ z%*N6i*Es5!$HQ8<+o9L|oy?R6n5_hDxc8D#r$d}}B=1WZ0Wz>&lL383XHqmr64xDF z*qfQEHT*)<@{iQGFxcr>`be#`yr6n&0@C$Y6xFPu?fe~-hE;(yr;=xDRvunPk4}T* zL^xSKu{>LDasr{WIcqdlw*J};u`II>Wq=@Jc|B8}Knv6QS80Gao&at%WFUy)wB2F8 zv1aOG?&k7lsb5u_n;`R7zr6NX2>rBV?lgQ0(Tkbzg&#@Gb9DMbKWmkUDe`acQzUI& zX+hi`g#2l?)SAl`Ffjd`L4C&1!6sLHe)}t1kiz7BF~Y{M@_yMy%V=_9+MUter&Ncs zzP^8@3%a80x%%@NGwm0d!FaRIYuF=RY`^sc)+`n&^A6|q(;ds2iTjpK##S-bs{WD; zzwh(jRq_&zd&LA#lUe#XU^ESsM7m^XcL|eVSsY9q`8_)Eh3d8b64>N)VL^S5l`4Gx0$haA(D@u8 zU){85p-r&DPf9CnZz&~)j2>2GZ2+t=U*#7ks~Z6kHzaiT)9Q>wHvaiUX9H4KCw|TA zAu)@ueSt#?4j6Y|Ebi5mZSLRUZXv|;I|NeCnN-W2^gDKC4xqeD8fXhDOI)n`_jwt7 z7|TD;Du@IUMr)48SW0y-vPjq2}K9)_e^jbgPs2yJs~|!@T~TO10cSQ+XIX zC@Ioq!U=)f4=;cOq*ZD~V!kQ=aN`)FWfhlU`Qx>e(lebd4IPo;H+@sTnpKOLvk3nL zrTQ(XsP~xfo7gtJT}0P5AR!hC91YQCK0uk=;nFCLifS8`NhDFB6Z^NTykTv>Jc%qq zH6PgC{Tf2t(5Hju`yI8WS-Xy{EKDBQxdc_&7wclgSffmZm=Ev}CAq`O^nwgB$q`aE zz4(O^cr$@FAbR|xv_d<8U}s!O#n46)hTbBOf>4~EZ;cpaF)lp-vnE--RSvG?$HH&s z`#ctB_%ePx3Qy3a2@z7k#~-=P;f9cZn*lwOeD#Sq|5`=(`KM$8S|ikxIt{t}prj=A z|2E2uK{fA04K;oR6#P-@)i(|!ck5{R{SoaV0@`d;|A3N%Vp9fLoU1#0a9%V zyoaGMa@;(}o79#Eh^tSht0R?NP!ilxCU1019N6QG5v0aYml?U|8=a{h0qG^JWpqIc za;TF*tM|iZ{&?tG{qu(PQ zaztoosASfM?xj<4?7oFA&fjS}x24QzkacQTKiq9)(IYB_rt0m*#V9kp&Q+-xoHX5q ztuT>~xVX69!-VnK$Pw%7>l$I=w3#~HWNPBKm$pOGu6%5;$(w$Qms|FVy}xtE>=8NV zko_zSjlXw)mAR96{sM_!K&RsLy}utF>O1H+B0md(K-47;PxMMGv`GqA80Uc?-QTFqw^zwetW1vq~Y8Inf8 z&LVRkqq-9tSt>s02I8laU2H!cxhFZ*W=I-G|H?-7%22w&Ey#uZ`X~dHeDTQ&N;?xB zjm=W|-;Q7~7;_fU;`@hWfsFVF_^06^ws}qp3JQKY?M4?7Gh{3v{`Hg;mPXOpF$@3+ zdSQIJiEQ}L*dn726RcNNfQk{4X!48j+=TZ%44Ui*n9p|VyT0_8tas|9FG8Kx$$^MX7;WnIfT-$Ar1+e}d z6@8ucJp#^iqc1h@B|d}i0iu*)%s{_YNkgRVi(Wq@5Gfa8Ig+V@oms^M*uhPU^H4zG zD|QZVBeKjP(Bh3LH8b1#)rYjsHg_V?{wBi47g;%VTS`DzYQfvELTc#SU=p+*2`Ptdj zc7Wnu9wzydEW;)Iya#(^J^lPw!i8`=o#asJAZ9BB(8RgLC(#)UN_t+^mmMYbJlgI* zM89K~j_K5N%iBFYO|P8r_PE?hwZ7Hx5hN?b(nMMX(q^ht^up>N7;|oKNw4u!L_e7{ zlYR0aR>Ly@F!;G$kju3;{Fv|4IZOFV(wdSFh6`=xkD_QX^jwY!aSj`*ARmR*$Ejxn zWpv6*rXh)cR36aGJ75duz?U(%13>4d9x*N=6Qe$VMQh{PHlp+UXTDsXZ*8p* ziI}P4BbrB&$n3LzfwX#!+|kuW#@YJj)}!|xs18QH=I4DZyEtN@@{jMuk)ozBljxxH zJwk(Cdtq)0_aegl|Mq`Qt5{&&c{h=WgI-CF=tUt}`F=h0%>09VOrd3y-G&_nhIZzuG|l$@}I7A>4ZS<3M8iq zm8&mCiAVO@d@gV`vHk}w{$FbUFH?>VPYhaqu@rQ0Q&te04cKM$`)4i9@0ubIlYk|M z>st|a;Y)~{Ymb?lmsdg^WM_0=oo2kgDL`P$?$Zu3A8@<=lcF+-9d&c`3?<=F>C34J zi$u+zEjB?uOMwO8gB3@aiFi=2Y9Ur*K~6X4QP@~*M5di0HqbYyZ{&o!NiZPQbKey! zdUvJ75Hd*c4G{VNdz$~vLI6`SOrVI#9N1;l*RI+HxdL^!!N7s)fTTb1H?BENqVKhN z)OwBq8q&chg?`oNmL~f9m)+94H-`&)WqI=0EN2}BE2m)iy`;)i*svEyWZFD;W z+5KOoB-LmLkVpZ#`x<87@YEp5MJBtFCp(q4R2(w@!gmGwEzDkdN%2z1p@1#2fbn_w z@PG0JN-RLWfKm!d+O*J}SK@U5tg)i?oghAIs)!&#!3%hHC9*jc4D~XE@BdO+0))7P z5oE-WWGn5zvLnR~tf;8y>FGhTRaI5_{_|UZ-B3dz!2dp;+wLvW$o?*NF*V*MV853E zVAAz!Qrp-X`G1Q`GR@>+_uYAVTCnY9FMngkmmAH&lNqR<4FV%CiB6+Z)$U)`Z*ro14 zEIxALW@ANfoWD5(jQ`{e)HExBlmXSW!=s~>gVW^^6>}BKn-?{CC1%25R~ClQl3;F-A8d7@sEz_8VjXu@9dL^7Fp%dB6N2 z1<@y2M#ZIBq$|&+{3qR(Ajn@~mvaXoJ?29IEGS^>v|Z{t^|>TLgG=T{4F-3k{mGN+ zNTs-L&XkA?LZTHVjz`Q)a|W*NsZH56ot?+S)^=!qDErzX8YNZwV1o($IB+4>s}fk zp7TR_I#gORDlpjoHZ)63Zmp04@2eAOcnznOZ@+s=iz9WC+cQCF1#8`3@ixX!XCB_U z!w>jqkeC2aue~2F&oisgM+zAdWa77mzrv9Pt<@i69C84?{;Dj1MGK_vGh-owXYLQ- zV_mpXQt}$(@`4-yR*WYYJwER#+h@HxOhUA*a{|v#KJ_L&^;wjBpa_Cs3(M*BM;{lz zdA4{sr!pMxE*uSKiFHSAD%%BHrrpvudIPx1kBnB5*`=yhJ&&MbJ}_=BD^kj)^KZd9AabmV2i&ENO^~T+ zC&pdd64g%+dG-EXgvs$SQL#qhT!pdqNEwth;KM_jwxq#EkQA({nyz7bn0B&f%mogB z0I>p9tgX1o0`U5q1yH(|ty04KvRpr*))t`LHB5=gadDZS)crrEQu4PW5auuhG{738 ztPE$`akjSW>dJbdMMy5qNkpy;pD7>R$}!eUyeGD^8TNnj0S+8c$rQ3ZjjsH4Rg{q8 zN1EB{)-2&5+Py_ZsTrr`GuPJ_%08wa&|X?C9>u<5A_v61=n(3OyDoEL)DmiK;AT0Tl!9FR4?8C-Y2Wzpw&8O&;aTGqs@+PH`gh2F7h zOM0lr89$p1_Yp^fW5KKd+(H>_Puiq5BWrkxTy)eOj0@?gwHj+fwO}sm@uHse^)Y2y zkWJR9wf6m*Msx|WL}vTPW`@Vwim#+thN|LUK0id%nj87PFX`!!yEv%f(ze#f36RW+ zW8>#H1+aZ8Z*iNK=W#y;4b)(xv`Q0cWIp&PD+q;5@7>?i9%$S^-npqn0%dGnM8|=Y zWL3en2NN7W3H{Z+5x=ug#2HHOnIPewL+{sG_nEM;Y*Xgwk2W#6*~W%xpR129M^@zSnZfw> z>QZnkdDF`SW#NPuR4xixsUR~WTl^;;sJjS+t!MdJ`gufdjBOXFE1IVS$JwLVABmC~ zS0#o8U^_s!=(awZE7MclSfHTfrx6%dgIUi3bOg{OszN!n-GW?U@hY^? zVBGaqKzmOlJ3CWSlJn$d*Q?eB1YE*@dw48pmg|rA^t>D-DALn4Pbn^;;0~&)Ff+p; zgAGsGpY6;Gg1kL?c&~?q=^%^HMpVKU4hyJad6ORU?vt>fAXX={L%3+)wvs@^ozM-iWYH+sW>a~#ttg>h#{sSXqbc9U_A z-ves=@1ojyFmLKj(4ZrXH*cWBvz2bDRy4YXZ+NWI;ciN$15{>^SYyQqnC4epA zKjk)mKeM>50;sb5LN=v&B~%PYu%vV$MOc2=yUvd_9ylOw)^P)H8j^2)8K6{u93t+w>tKRN%4aLxf}QyiEL&^mz`4ypxlaZ_268x#_H0Xd$= zYyHCK9{$zo@iwMl3ea0|H7rk`I)hX!Pz(v)?2MtO7SHFqc^MRQf<&HAfzdQ^R8#=- zs+#~QQ#q?Ppl)rv*s!t}pa@6%j=k5oyZOkS`2qWRLNtVF>y06GN8z@SzF8HNH{bp_ zF$=kSy#nD?1}f?NxD@ao-hh3-^!)R?md_Tq$;GyNsdSAC6MYA;9%|_*6oO5aX-*;X zv$ORbP#^}ZL}RJNqOSFmz5%5|^)*Veq=sr?)83!J27)Tv{bPNZYpBpriEaZS$;!`X z@{a5&p`p|@Qng!)i}mhRQWWC<_zP$V!&es%Z6BEt)w*qm)>O48Z8S#4&d>toB42mj zmxNU^E7MXHj30etx;(6CM4wdP0w%%Cv~y>s<`=L;pG!fiQhfZfGDU%4#RQYJPTAXv ziRXOY7w>!GzywDbL~UVr)tXF;Q+X`E2yz)&b8~-+j7W6|1XhEFGrKPD(_azY@PnyG zW0f#-rP1q7^crU)Cz3%yD|?3M_I!b=2*~y^LH>Y!{B1-rCGbkJ-Fu(Wf=)zacv$6C z3I5+PdnSOc91?Vrt>U2Ltp&LtMS$0ve%Lu7E90)#7R|c+OQzLg390grL!&o*8W~P9 zNt`mSWz0~+``>aI^MKb>+>ZLv+$x^NrJQUw2l!&iVKuU#UZz%d9}b6Gxw#9fI*pIp zZml=4F`6ZrSjX!s-mSHn_G3Mms-T*f5aFTvdwE8M%j2w{MN@aG;0QW($ys5P@q#L= z*oPQ3L>s9$rK>lchShY<%@IQ&I-q*VDo#|i*z;uPMd)&=Mv+ELWH_L4zw6Q!S{HIB zC!IL|vFVOl0NI)4BKr9gFM$vi&THjc_+#NOjMh6`a_G&Zrqvlm<2=!!r{KM{&s(5b za#K08ECDKK_BfVHOI*EsoEq|-~~43TSH?P7&1sU0mnN_&60AMYcHfZDcGAsRB?XO<> zMdhOF@{gjqsZ_jCIDab^vEllz-AU~{t5tRdZ0{!StC7Lm0d}WBgidl3UKof)Dud~I z;rpzZ0jK@qksb=qpJcH4QlUxd-)JMhfRKnNP?9dX`@lDhrO^X^e_g@M#3bG-_um%g zp!DSu4+kBsvEp4;dw3b8o=9U59ArLlE7qu~YClv}`tUL{4*C=X5^%*4d@dT6W>n+I z_$TY2OP41}0r5`Nr@60e=+Xb^rhX diff --git a/Structural/Decorator/uml/uml.svg b/Structural/Decorator/uml/uml.svg index 6dc608a..2abab18 100644 --- a/Structural/Decorator/uml/uml.svg +++ b/Structural/Decorator/uml/uml.svg @@ -1 +1 @@ -RendererInterfacerenderData()Decoratorprotected $wrapped : RendererInterface__construct(RendererInterface $wrappable)RenderInJsonrenderData()RenderInXmlrenderData()Webserviceprotected $data__construct($data)renderData() \ No newline at end of file +RendererInterfacerenderData()Decorator$wrapped : RendererInterface__construct(RendererInterface $wrappable)RenderInJsonrenderData()RenderInXmlrenderData()Webservice$data : mixed__construct($data)renderData() \ No newline at end of file diff --git a/Structural/Decorator/uml/uml.txt b/Structural/Decorator/uml/uml.txt index f0332ec..2561cf7 100644 --- a/Structural/Decorator/uml/uml.txt +++ b/Structural/Decorator/uml/uml.txt @@ -4,7 +4,7 @@ interface RendererInterface { } abstract class Decorator { - # protected $wrapped : RendererInterface + #$wrapped : RendererInterface +__construct(RendererInterface $wrappable) } @@ -17,7 +17,7 @@ class RenderInXml { } class Webservice { - protected $data + #$data : mixed +__construct($data) +renderData() } diff --git a/Structural/DependencyInjection/README.md b/Structural/DependencyInjection/README.md index 5c8b453..185a550 100644 --- a/Structural/DependencyInjection/README.md +++ b/Structural/DependencyInjection/README.md @@ -14,3 +14,7 @@ Notice we are following Inversion of control principle in `Connection` by asking * The Doctrine2 ORM uses dependency injection e.g. for configuration that is injected into a `Connection` object. For testing purposes, one can easily create a mock object of the configuration and inject that into the `Connection` object * Symfony and Zend Framework 2 already have containers for DI that create objects via a configuration array and inject them where needed (i.e. in Controllers) + +## UML Diagram + +![Alt DependencyInjection UML Diagram](uml/uml.png) \ No newline at end of file diff --git a/Structural/DependencyInjection/uml/uml.png b/Structural/DependencyInjection/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..f38b80b78218db6da486af7ac3c4f10c618a1a15 GIT binary patch literal 18347 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 literal 0 HcmV?d00001 diff --git a/Structural/DependencyInjection/uml/uml.svg b/Structural/DependencyInjection/uml/uml.svg new file mode 100644 index 0000000..1014592 --- /dev/null +++ b/Structural/DependencyInjection/uml/uml.svg @@ -0,0 +1 @@ +AbstractConfig$storage__construct($storage)ArrayConfigget($key : string|int, $default = null)set($key : string|int, $value : mixed)Connection$configuration : Parameters$host__construct(Parameters $config)connect()getHost()Parametersget($key : string|int)set($key, $value : mixed) \ No newline at end of file diff --git a/Structural/DependencyInjection/uml/uml.txt b/Structural/DependencyInjection/uml/uml.txt new file mode 100644 index 0000000..b6765c5 --- /dev/null +++ b/Structural/DependencyInjection/uml/uml.txt @@ -0,0 +1,28 @@ +@startuml +abstract class AbstractConfig { + #$storage + +__construct($storage) +} + +class ArrayConfig { + +get($key : string|int, $default = null) + +set($key : string|int, $value : mixed) +} + +class Connection { + #$configuration : Parameters + #$host + +__construct(Parameters $config) + +connect() + +getHost() +} + +interface Parameters { + +get($key : string|int) + +set($key, $value : mixed) +} + +AbstractConfig <|.. ArrayConfig +Parameters <|.. ArrayConfig + +@enduml \ No newline at end of file