From 4e4b4b378a37cb7f96c10a56b90ca0507f0b63d7 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Wed, 14 Mar 2018 19:58:38 +0100 Subject: [PATCH] up --- CircuitCoupling/RLC_circuit.geo | 33 ++ CircuitCoupling/RLC_circuit.jpg | Bin 0 -> 50230 bytes CircuitCoupling/RLC_circuit.pro | 365 ++++++++++++++++++++ CircuitCoupling/RLC_circuit_common.pro | 12 + CircuitCoupling/R_circuit.geo | 18 +- CircuitCoupling/R_circuit.pro | 33 +- CircuitCoupling/R_circuit_common.pro | 24 +- Magnetodynamics/Lib_MagStaDyn_av_2D_Cir.pro | 8 +- Magnetodynamics/transfo.pro | 4 +- 9 files changed, 454 insertions(+), 43 deletions(-) create mode 100644 CircuitCoupling/RLC_circuit.geo create mode 100644 CircuitCoupling/RLC_circuit.jpg create mode 100644 CircuitCoupling/RLC_circuit.pro create mode 100644 CircuitCoupling/RLC_circuit_common.pro diff --git a/CircuitCoupling/RLC_circuit.geo b/CircuitCoupling/RLC_circuit.geo new file mode 100644 index 0000000..2bb9299 --- /dev/null +++ b/CircuitCoupling/RLC_circuit.geo @@ -0,0 +1,33 @@ +// Just 3 cubes + +Include "RLC_circuit_common.pro"; + +lc = 0.25; // Characteristic length + +Point(1) = {0, 0, 0, lc}; +Extrude {1, 0, 0} { + Point{1}; +} +Extrude {0, 1, 0} { + Line{1}; +} +Extrude {0, 0, 1} { + Surface{5}; +} +Translate {2, 0, 0} { + Duplicata { Volume{1}; } +} +Translate {4, 0, 0} { + Duplicata { Volume{1}; } +} + +Physical Surface(Cube1Top) = {27}; +Physical Surface(Cube1Bottom) = {5}; +Physical Surface(Cube2Top) = {34}; +Physical Surface(Cube2Bottom) = {29}; +Physical Surface(Cube3Top) = {61}; +Physical Surface(Cube3Bottom) = {56}; + +Physical Volume(Cube1) = {1}; +Physical Volume(Cube2) = {28}; +Physical Volume(Cube3) = {55}; diff --git a/CircuitCoupling/RLC_circuit.jpg b/CircuitCoupling/RLC_circuit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d29f1b86a53fab8a4eee8ba2144030aad967e946 GIT binary patch literal 50230 zcmex=<NpH&0WUXCHwH#VMur521O|rxw;7xnm>3yBhzSCiS(!nAjfI7om7R^99fUbJ zxj8vFxH#C^xp=v_xOsSZc-T4l_<4EwKx~j9j7&^S%*@Pe%*<>&9PAt*6{O++2N(o7 z7+$j2Ff%GKFbOg;3o`yc!XVGUz{tu71`JTZ$i&RT%Er#Y$;JKu2*XwZ1|~*kW+oP9 zR#p}k1_s7jMkZzk7C}}aMMFn6;lM<8r9u&-#)%6#l$|yn6b-ugLB%+!sELzHOk6@z zN>xo=LsQGd)Xdz%(#qMz)y>_*(<?Y6G%P$KGAcPGH7z|OGpo3yw5+_MvZ}eIwXMCQ zvuo1iDO0CSpD}aRqQy&=E?d50<*H4aw`|?EeaFsShYlY(dhGa#lcz3SzH;^2^&2;D zJ$&@|$<t@gU%Y(v@zduoU%!3-@$(nRUyKaQU|)d<h{w?UCCI?U$i%|J%)$=x7b8<S z10xf&APcLaA)An6AbVn=u#!<Dhlta}g&PlYDjNrV5KSt&$R(y?@=*07$ZKGq5$CZc zvU~>j7{Xt-7<iZ&8JGl_1sUua{(e~0rTyq!!=f$?hEYsR7<`ofp*g+fYrNclhJ)t+ z88URaoiCU2W=CJ!CtcBZ*#Ghy-Fweo{d*Lv_f)A(V}jTu_p;EC0B<1%mRT!SZ)u!& z*R>}7x5U4ryVf7Jb$?vnSX%MMPC6<pyvoGP{=>>WM*rA9TwA}S!{%lF+r-Gc)^#h3 zZDzI2tu!(BuGn^~Y_3-A#NMTce|`TWY<{R}eZ&3-v;Q+}e%HG0<*v5gwJ-Mb?y*c< zk@@}G``psRLb2&NlMd_nF}o{SZQ5kO>Y>o!8uDP;xrfEKS1jr}!_=j*V8r45iuI}I zTjjUpzuEfX{kO79xi+Scf1g!96weT`y=&c<=lieM=>J{6uENc?+}*55XU(s+$;r7Z zVlqGMVL#ie`&Q`O%QtDi{cqJV|6pBKcX9rf^0&<8kNSmbLjE&!6(1LivYVN^_>ad& zzV_7Q?EefL`<hFV`)(ckCJ}CYH^w76?OA5Tq>AH({~7pxevtpm{?DTR;q#CE{~2^% zzsXMB>Bo6!nzmr@yny9qi`|U8=gmo*l(#2()705d<Jzs}dS;94TKn7H`ML7P{g0Jj z{Hm$C-fd@}ai8Pd>Q(Mb|2SN#6I=WI2ygo7tru^dlKv}_u~|C0eAoOV6KB?Me7k9u z-<+C@-&!aAK2e{1zRP~A{=wDjZyr7{eV2HLjrK!c<wN_JE<C!lZja^aJ2zr8-!FbS zF>6wmcILy=hjUjrm;9Qep?+=4mDaVoDf6zM;8%TqxBkQX`HcS=F4RA6|0h>3@t@(- zx&9yJ=NtYrys-ax_&)=`eNX+*^oUOdf7gEP+W$jI{?7&Lt8eyw|L4A;Vzb-MkK(Oc zZSBs7T``f~{W~)E!Id{c?7J?{y|C)M(0Q2+GX*A`Qtfk5b$gO}YQDgKhNg@fy*)n+ zf9v0?$oqEuh?xA%fA${_M=jfKdiCg^Z$%Z`Bc@$@<hgF<^7-esS1c7i@$RzDYQ^&V zJAT$5djG@x{5SU>@{d=`i~P`kShx5gzi?(<`i-x(!pH6@Tz>!7=EN;co1G8$MGBYX zy(pVFwT!*Vwdy~^AM57_>c7bUc=(^8ef}}~KbzOglULZTbu{ch!$E=n49^-rhyDxw zzW<Z$zOIk_m>ze>(7)o>Hs}8gj;8xRxY++(P;<3@YVG?!eV4z@_;K?;1JBnF?$IB8 ztkS=|Tb=(TB4d{OExXfycdm|$aZg_!QTa47;kWObZyzep+3eW!_MMZq;IsJ~Td#Nj z<NPr{>WA@1?PKBp>_7U=&6=lmaZmUP2i@f#W9Qy}9&n_3o6fYV*)jSz*IqfCo?N@g zEq0!hzvF}d3^$Y?zHj=c`lI^j#q%H4Bd+~XFV+1vp~mr}`jM))OM8z@n|yQ6>FnxS z)BQ7Y-{mRuB&%>nvk1@1e>?wSZm|1@W8EL!5B)0rxAM_{hL-96YnHan&HH@sN4rPK z&DEKP$0a`Nsm!|~xpwXLB}G|gQOPID4tve{;A_JsyHj(2UtnO({lrMGvgnm|*>>e6 zKa~!CuJK>~<v+uE<+Xp8*_qWJwyhDo_9vKc=HK0`ZvPaMQk(d#f75@4ysYcf1#iB* zCRZ62VRyOOc8^?fzn;Ez^@Oe?mCN5GmOlE=&{U^>Z6D7cua8szGxYxnULLi)YfHZ9 zD*^7zKjG<RKd%_dz3o<=x9mFix9n1bn>X%fOq`xRVNyl(QLFT~?Z2a5?z-2xG9r6E zza3Z9(b~lN<buh!Uj0+KT5{pzS&<HBiMJ-!UsF?!ZpZWsF>y>g-uwQx{h?dS`XBa+ zKk9G&^7?P^(f<sbdh;W_d9Cg~-}{ko!pqHJmy-JopT&6Et}u>{&i8n7C1=a=32)ox zY6UE3oqomBZ;|h|tv&NUT)lVdzOb)$$oHua)|l7Vmi(Ll_35)}SJBV0Pv6b|U00KL zrR1&l(W=jXls@oH&;Hi^o}*&jcXv?W$6U#M`~Jbr>gE2dCz~#NPrH@4$x}D)Kg0G5 z{~6Y9c)Y~_hx+!0iBA6+^8XZCyIKCY_*kg^%gcyM2NE))BwHg7`Ko7J?s;1qdV3{r z)aFay_Ribxx%1>7PW$<P*s5DA`u~WWK2){7zaCW2Y!Pc+_;Od<*0rzWdH1*{E`Rw= z?0s=*eWBj;qKVET9^9VFyR}wnsCF_i`Kn{2|Hc1gKR>Yl#s8<^Kf~ekkLCYGUUw<@ z$(8vxZQJ}WkL3Sc@HdTr8ejdNLHUXCf|`oI^Y&-HmwP$=@T1!8jU}?o2j+24ezdN8 z(R`7L#jzj$E{W6K<?ALLoL~E`H?Wj@t-k+0wrdY>s_xh)5an7Z9Gy^i`=0raj~}DI zssCtwIA1KLCjZh}8}|>l<2HOqiR1r~S6b`*$o0r}tGjFW*eSHx>b?E4Qti^?4}Z=y z*=nr0wQj)zw+j+E`)>bdXs`Lf|F8K!gN*%$&p(d;XP8z}e|TRF`+o+<{|tTdKPvwu z|7SRDb$hzPu6)7p{|qe7%m1FKk7cdeJN@2&h7%w3o8;x|GkKl=afMbtTrY7eODexf z&&F|W#J0I=ovUIpE@oUfUiK^W?$SGQve6#v)%&zLQ?vU8?i`=py<^{5-oviB*>CTE z2=Wa+WM%*6iQ32MhyF7N)TC|74ZEkU&k^y$YTE9^mG`VpOtf2`otj^~-@myy#^ZBz zjE*l$kSovi%xr1(H}(%_$IJaYDfPbfPr&tg#uxd!Yw{n?eDKlq$*tG-UrzWjJ#16o zwP)VPrg_gex+arT*!Z0*SCRI{AG*JV{z&|tT@zfm?vK?E_YcPpSlzw5I>LWNMe(6) zR-sp}y?ODL+ndGXtYpRGq?QLWt~^#qK69?1@W3<C4dwec%~@Eowl31N_U`)Jb#L!Z z_lvm@^nT_1-)ukP{XXQsS@_V`+H=oG)_e2$Z{1T|U6J<tFn{{KPvvIQZpFS*J=!)u z?@YqxtrN^Ar}J*onY3!n`qx(i<6P$6PHS`(2_mAY`s4FA@xK#ntUvaDQ~6=}=s$x{ z#pcItOCRZrR>-?vGxgs8BgRg*{cU)-n1HXzY~?Fcg-iO5XK4h^VPIpe{+SlpvbJS) z@3E^>lsTO=-MDghuIgXwm8r6F-}=&pQ(k#`x@mpiADx@8e&;tIkrlvNyR{SkGhFb^ z|0Br%FM}^@|0z&yxcy?BB4%^o1-5io8?E@CVZp5X;L216Qi1g6FWTdbk+UvhF%hNu zv0U|^LF@PZpK|wIE82<3su#cJwEt_$u7A)`|Jk7!TJ!lovOjX4_m9kn*!P__@sDKr z5ABn?Tvoe2<eL7YjhnXKS2{K?<<h1_c@r<Pd7L(CJjt};kJ68q59Z%uKV1Aej_G56 zYfb**TX(ijxqgdnZT`w=SF1(VPM4hCEOMBnEUK<xH7B9#=j?CS{xdXLRCs?||97U1 z?*m@r<MpC8mbL5uPCs>}v|qkr`cbj4f4+B&=NtR)x$>v;yN;{de})}r*4d>*eSH5z zDgBR-`{8)b{|pKIoLRT7_x@APx*jjAyXH^9$^{k2<37yYHf#E?+}Yi3O@{+LmQONj zH`nQU$F-6{sqx#6Jjn;U=IBP7&r6L=S{P+=RX<^C%i=Rj>oXp%*SY>tIA+)Jkf&$0 zeoT!GeiE}b?)!g+#+MiVst_3;uOID0P7YR;REQCS`Uk7)S+~aDQvYT;|6rBv@gAML zum2gOei%ub@^f1sUGw7G>ql!<-|4?y>YB_m?SjsBxxyeNftk`zo#PFDs2{DDvl09l z{^-ts27%mt>VH%}eDBz&nicdaPW?yrgXTxI&e1zIeR$vU<*(YaODAq-9n;khY`Pz| ztNzZZT(zxj*SwETmDRJ`gDvS|D>841e3Cdm{k7=)zX#f<|8=S4+yyBzfAT-J@A_v` z6F>jqzsVniZa=DTvq}EXz`6dgtgnsWgZ(VB(Fdzq_eAx#=YOp}{Ws29`~IernJe@* zE#zC7$0C)wc*YaYn%C?8GyLOh|M>megdhDM--lnSGmXlUDk;hkj?cOk`>b=7>bmwd zOV4hS_SO6HquhUEwyDtFmBFjBg}juuRph1gS-w;Mejl@07xSOtsQeFA{)6lL<XHE8 z*xsA?W8q_do>%kYZ=3YyKic2*m79CNp6fJwBhIaAz28oBJT9<E39@9kYE@(R_|!+y zdT`?}eD%%R_ka40{xdYa$&eSbQ~7ry>OVu%Ke->`$N%YFF#XTK^<$d9pndauolE~B zgT1EdTKiX|?ApF-(!J>2ExRV%lzcj|WdA19Eg$2p`Zw38uetN1`_Qelg_TQQN%7wO zyCz)t<@EQ=cQenukX$fz!K4VE4$m+{PbHz{*_$5rpOI&-f6y7fx&O`KzbpSUa9uw% z&+td(-<?nEGyXFiGX5xiWS9H5_Nn_%ecpF|h5F3RXD8>qdHY#j;!g4X{|s1azH=o; z?4qKbYnT7EX#dY(!ar;Mr}caPGfaH@CA<S$wA(+tZ^!(fVZncf<NSYY{u%yfcse&7 zxp?`BHz%yu{=3UQg`e+_%->Es!yo$(&(rzwaCt@dp?&Pvw)X11|0mAho%UPz>fV;m z&T1!3)!c6@Y2JDj@|Z<%V(iX5|4GRkOE!dT3=LW3W$1gMb-mi8y&HLNy^mIZ;qoe^ zCuUCAy!sFP8(u8x`tf;z#-c6;qVRgT{|rs-KjsI2@PEVj@qE<9t<rDRBQDv=XMf*j zel2+K-m_CazTD0)bJ3&4$fIxJ)G19IECQ~9STaiK7Ym>DtY0-A7hYY?YI#a9VA-<w ztZcWRt@OJuwRL^9^=<E`T9ckV?b?6t{^B>)wW5#YiRy-hB8M-m_$IdFviQ|a{=Y2O zp#7ePXRH6LeqaBDc+1_dZj%4Sx%NLplj47dvy5lMe};ovM&EutvNQU3xt@1_y8WB` zKO*7<_6R=ke>>m&jr@m++1qx--`=x!Ui#GMyDDefocNx5?(XY3De3Ll!t5jaAF<Q_ zIA$;ScR`N%N9nqZ`GPft3+oepO!xcn=E9Hem}@qv-{!wPo9uO2EMs=y75O*!+-F?c zbcB6=Ygp>7HFldDca*mn=X~d#_H1TrmPyvhqvvn9yIp<~_cp5k-h7=pwyE#ltXDnX zxwd1u=Q#o2b<_VdH1uEL=c$<Q`*C~Qm$%t&S8_^g<-@o2eLME+RLPEQdz)Oqk-hrZ zi-S|AOmJio;*DEBb06z}hJ(5`q92+cOmE(!TK?#MPt?-utzWElm9kIkcg1O6%3XKw z-d&~4q|NQYpVlr;YMmzW&*LE19*uRYF>3hh=aLO#%z0cr0*+prA~LJ{o50n0_q8Qo zqh3w^6fNymIxD>E_kV^5#MbZE%~2wW6`n@+IsM)BPrSzcT7B++hUWbObuu@8GzVS% zCtksPTx#jQnJj0smsD)}<oU;1CW`g%!IUohZBBZ#?k=s}aOakD(ZzGqCOQ3^i={P! zEglONPB?o1HME257g`VMAooxB&yeIV`lsSY{D;{O%$wik?o)pub+2(j1+&YgJtFrw z)DQid-u|CqQ%TBo{jIgWZ)UD3^>(i<QC<DYtS{bsWBewcbneO%+5Z^?>@)5<KXRM+ zc&?It_dmrSI~UbxU(5LuzT|ZsbFKQ}c??(dOYd{a`dxS2*YB3N;-}e$tV>Z-b90|c zrSMF=pKo}#_BxUNSg+?;{Wod-KMqiN$n~{aA5<JR|7T!1{A2z{?ML$u_{P0{RCBBK z+Un&$nzC)p9tU6Cs%soP@AR8%m)drT@6zj1o8Yf|Xw9@+H32`pxx}VrJfFCS{rG(@ zo9NX446Hua|G2KMkUD(yd-*@p3wbuurRoh^)324B=U+E>sbjV7@}37f#G+j1?mbg= z^vo`s7ji#z@2E<aW}N=@{<!`RrSLb8fBV;`{%1IJ`or>`I>rACi9h$>y#HZxjoU}P z^?&C-d-J(w{+2BMr|&;KzPnv|&z5s#J^6q1{xdWM{E_-0{~%hPyFyRCOHSa!x#`bp z`#mn&Y5!R7zhTQ~mCTe+588twE|>JZD{GuqrasA6)w}(2Zc=vke+EBL-e=wm?cu%n zrF{fjJ%FV&+knz;g$|owZ}ncE^Y8Ng&3v7|?S7~q`ltC}dzYPIbhg-jff~sa-uFl2 zg<pkTI#~LsR`1d?$=r48pEN~0X{t<4ohTvjyywC7IA)EL8+WX#u(4BHZ|kXXd{&Rp zo>^XR!*jLwM)@w?R4r^ZRasnJbou;0%&(&~7VUGnLsZ=WtwTQY-*o=xeg3Wae}+`8 z^ZywF-t&fUzur-IO8!$^edhk(nql?7+AFg5?%UVjRewM6KSNx>e}-TE9;f;b{f&Qi zs7qu098)fhMGYWq$=_=)yT|mmeMQv$@Q<d~7EHV!ySBA=-pr-3uYS#2SrGW-Q*O?h zN7J4?bM4YxmeQuKDI)B3z+HIP2dVRaMB*R(Yh9jcKDlCcz_iOjTeE+!d|P9^@~->C z*`@QME7h*e(k_!yDLkKBF4Dj9?+ll3;;WuUU3%bt{okcs^1XXJKWuw<{J^zeYztS! z<!{@2`D<+6e}=>V8S*zzlT@0ha5X2)yVvTWl*>##<)*a1CwpCdweB4JB>Mc1u>PZY z6F>AH-zRig?+;@&|M7SR{|EdcckaIWUU2q7h1!)pt`&M~V<JzgcjzhiADMJq<$8az z?UP*vJLct^{R(Eg&?EJI#%#OIAI`V@lde1XpMl}YhKnV)`B{GOJMY@DYy0IbzbjMv zw7Y*lpK<$Ew40p!r0m^`CPW=**?d;U;P{!stNKiJx9;=(Q_TM5*Pp#Idsp7>wXd?5 z+<YnZzOB@kKX_8wroDUJ&9-m*aAtxh+uXXKhZCHYZ=RRh?a|ZppW$unhx*_j_dgW8 zl+yWT@Y*VE_o9kv2lZngZQC>7>*|`X9&b}8ir$iVUTw(jv++cd&`g$~DW7gXe=l2i zKu+!N>i-NG^Z6=%KW1;O6FI%~)~l+JsO`=B?&^1bIlY_L+WTWjz@5tJVPda!-d8@d z=%4WIp^~?}fzP`~CcoY+XPxrs!_<wDYb)K>?|ZjY?Dm$J+LL;jJGWc!%UFF>?ee5F zQPm)$z^2R2FV8p0Gwo6QZB}Ek^+SE52{%9YkGNy6K7G3Gy)kIow*Jym(>sq;R5~6T z`)liDw)7adgt~^xrq-B#bpFR#_$XiQ2iviODIbhq&ExuT{>WV81Lo$un*SMEjQ%r( zU(40oqhFYC&oNv7&28(D*0?*`w|*8b-BA+Ye(^uUrsr=y{%7F1UHp;X^Kx#9t^7f$ z^_`Q0KlHUOKK`v*pZ|uewqILz#oMbw+O@x0#J{U5vP!O-<y3Q0g?YBwX#>H<IzEQ` zuB|T4wRoR3XXWQ&vpbKjx|VJ?%6n-UqON`O*y(@lU;4uqb!k84ZR*lkzz-S`uKCY! zlI{9`hBr$qe*b3(mQCBcZ;$go&d>iDRHWnoGi;jr`2Am>(pler{jxLs&oJ?u^}qe0 z{~0blNpAlqQY-#MB+#|y;fBC?$^Q(8c73?I{q5JsbKQ^M=dMY7w7$b?d2dPg`?h-; zm;acT+su-0e|*WLW0}VvhpuhEa%aUKUh8c)SM`p6(WJW?+jjoD;IVEG`?rZdUVohb zIQ~F?%RKIDCii>4%~Sd?ukqns|3~K*F0IktH_6*xIP;&u2k(=W%e_iY>Y8#Y^qT%| z@wLs%UFs3#uNN`R>YhpEEYENM_ODx%^Ve(9ep5Tse;4hy@^yds?UB#r|It41N6kNl zD+@M#T>HM|*`+_Zt8OoyHsxD)^|I(6(ZQ4MneCZ<MBts3=z@$byV=b-pRLZ4yZdN; zd!5;j%^$75>HV1fNYlo#_7S&isM<%h=}V&GZ~Q2Boc8$OJVo*HW2c^Jyj%D=@7b2^ zZdV$oF(`G4-HYyCI@d~9d;1-|+G<ykFlA8DgN!ZmZ}}hJXZj=gLwMA6JJ}!X|HRsR za%%eD{Ab|#&yeT1s6O-kJd^2v^$L=@Pj@bv{!HF{>XxEI`#JX~|IL1|zh!?$e)~Vw zkM|GgH|IaPEiV!E>R11f)&Ci8{b%sJqW|_zmQv#CySH?I>ps1cxh?aMmg<?4iXMrP zVj}-qR{y;CcYd8(jmnSykB1*VKiq5gpWz$N$Iw+3hm4oJGOSVkXgB|nzf{cGLan2j z73!CtTz;E;MXp}SMO$~<yzO?WYa%yq4f)si!S>X;$e9;fId^O9JU9Euv6ywHqDx*} zZLv(coMqJg?Ahe3EKc{6XSU3d&c1m2^sb$M#RFr^-yHl9|4(xNx6B{qAKw4={+<0# zK%eL3KAC?Pe%s&NclVoh#M(dawTpjN|Ji%H-0aTd!ejo$@#iI01h-}$>iPL-wpUp8 zO!dW^uf}GlZ+x}vmhXb~pyZrdf6ClG{rqpWeKP+UF2`=IuB~YQBdq-|aOZEk`kSU7 zp8uQmcJ-aZ^(Wee|1-p|sDCNZtXVH+*Z<jl`$bpL&us@?MFJRM7&M~9a_T?Bl)Sq0 z^S}AlSpH{Nwma+FuaEpc)WZKPF8)^YpJ7w>!}EVlZ--xexc`ZB=YNLvSM0y^IQH!C zmUsWT`1XrMT|W;eV4DvHyLQ%phEwMD8TP-`_9=s$dlu|mk?SDmI{s(4Y5GzA->i4p zFMinnbH5?~>#z5J2Jg;k%0Gg>)K7f-1(fwx1iFea1jf&qzuCY2y&c=XvvLx9KZGBe zFaM+b@$=R%>$&xh^$Q+;aC)`<509tqVVC$jrOIcS%Bf#b-P#{DN&2+P71jR?{fk*% z>i$uBKmSMj$Hm9)i~ncHn_*L3x$58L`+WaoGvz-_eIX})-NyJs+`s3c-j-YbGccUn zHaRjb!@O8^&-D+l{WhP?S#v()#pKEiWm~T1yp#VK;y+YzJ%4#u^ykT?|1RC%CSt#} z{_tvf>5BS)g3`I}{{%C(>MHwO{AwG1c=FNG^yI%=K6@rEc%?0S#QbvB28T~SnoemP zojYf<)3@Kt_P+nm@L=w(_y*JYx27Kjb@1zCfBa{7Xkzv&^xm{>QQHsi7swE|vkKk4 z{j=%c>fkH7%Kd>?<UBs7ZSpsL<XB#7^T}lU=G!+l12bdy@6fB==_(S&jGO_H**4Dq zxU&B<Xx#a`;6KBgSwH&!Gx(O9zWw@0{zGv5Pq*i9+5a=7Tt8C(D|_eq{Pl~E)}LtS z{m&4;`ai=<iDK11kyZL<TSWrnEwV%cT^T?a)U^!A|EX|`{qL0Z4F4HkB`*dwSn3Zt z?tjvpA^$CC5A%P9m3_VO?g#%fe6l<6pW*te_+K$T8|4p8U;L*(e^HnAb6zKGQ_Opu z|8enxifIQ>G5tXPuTKdiZEBeRnUKr;?^Jk0{a3?_tMR9v%Ko=oAFh|IIRDM?$L_^{ ztfmLFKjK^aU~k&_!$J}9-P}vAs%)I8E2Z7^LUDp$vbJI=N5SpslDyix8DCxrKT^l{ zF}$UYIkuwu$bH6r0u}!m9-cq6I$kt-{Soh2?T2+s7ad-CbFO@3uhiwkYqO?*icwpv z*8Tim<PElIYTLu+W#p_Ax_+SKe)oJC)A)XS!8+xapK9tZ?#X>*&$V~`;k$}<BK~rn zk0W#TBtNcy6KfnZ>9I%JrME|Wep&6Abm!%!?&{Abn^*q*Qmw`NRrLJTRob5~yZ?Cn z+oPiU+l`OYTlOR`{BbCsCI0S@$-epgFRtxcx~AO9r0n|IrQS<kZOE9mZCcdQGldbB z^By17mB}wInisqFV3)ML-+zXt)IYYD_b7h!esuSH^B(d43>^N4ZG(RsWQ2vu^XKoA zdFgHCyJE}9zwOmh{%Q-ReTvXMwr16YxaBt$`y^)jPcfRR7jiqX`1LJ~MH?l+ITVyj zF)`yK`AzMArq92X|L;`j{C^AYNv+RcFYtGY{gXZaF4unxTJxXbE8mB!)wQ+qBL5lo z9salH;eUp&aucV@xBl9Xme4?n4TcNmZ?Qji{zu?Hj?KHaT(*Cx@KL?P)H{~_@GYY| zmAtE7i5s!F>WJP=XfxEkdS>HM?Sq+_r50U|oWalLiT!72D$NM`k?fl<S@Hd`d*`3H zYa3;YBRBq7`e-fJ^{{<6>@F6I&Cgu9cI%uX@4eUVu|_Q95o8EuTL14%{l`i3%;WpR z=kK{_8ms%|KSP_AebL1qY2U25XRcq~k@9zOz|O5*sgV*h*6O|yIhtK?edGS!*Ea_X zhcoP3@8oCvJJ)RPFSpmx?(42keP1fE*;+H}JjZ{A_ToSG{}~pxKi>aO?!8p~r)&K` z%Iy#TXZR&iXZ@ey;k%E^|1;=j-+i&Be%ojHUmWxQvFm@9-`t*36Zo62?qD4INB@Jl zd9Pl_{<tWzvBu%!))`{;5;oE4k{&jps~uXFSWQ|vVM$h;6Zfg7PbSWDFV9cFV&#th z#`|0Dx74TP-?)4<&h+D%dkR}VoSXYm`w@5Cz05e7D_hUM`7!xu)tgH({<1y7HfAqn z{Lb5SZB%1OXPqLy_@8)<*X4csKg5n7iSpgwp=<Kj{miFD*S=`K<@;;qadE!Uxo;YI zN~aZ-&-9jShQ+MbmS6nn&wazb>fWuDOW&?q-xc=b>9gea7TYN$(fTJo)nf^O3@onR zd#~%~`L}zH|7%kJ&(L`K&)L0mtd$ShKfLpwf&V|li^L!A|1-4jJ~sc))^)<)+W$`Z zC;x~4gX`R@OTQnl7pRzgL~7}}=7(=3>#ToVV!K+(J(Edkn$+Z72YHgBSI<oD3U9h} z=~baflhE?lS|9pv_Wv^qKKA<KtIywOsjXhRZ~lj)?(d@PdF~xgEH?e}k!SvvEOE1q zKC6|5MVIbvnz1%d>YMrdgK0aSpN-pExx?vt%%`h+7w?a@ezjIqZL6o{6y;4GhyF7( zxo6x{|1kfJ>Ea*N$KuSc?^FIU`B0q3$Mm-MHoj}l>s-He{#$)#skh23XPrqq&J-wc zq||naItwh?H)TD?e}<;w{|qPhSG4~-RewbPudnH@?^Tb_FMB@ok;<<tvoEUbQ{NP& z@47JLAL|Q|K-WsuR*^slR%BdfP<QS>!<O|&>wETZ)j!n!WA?}C-{yUEKh*IjarwO$ z^R(uF%e%Zs`{CWB%9KwfCl_8zn&!Pa+SkeR;WixwXWM-XRfHrK&vT2v`Rh;6-<CS7 ze@Exp{h0nC>z@9t^l$zDu3j;<74j8-uy5_7-16WL(;8R(++a6<iKdz0nhOze+@-De z>UCy&%)EKIApe$)=HjyrXI}jcD_tw0ml4pL>1c6vch6kQQ&VQey}8_DQuFSW+2@bv z?>9Z$zIyAo&*Apj8H>99#C&1e<NS|vD!59UZ~tc2kK+FfzGYXzHJZ=*pKj0J`~=l# zhv)yw-nM=*O2bH!&JCkOKbC(qcKM<G;rNj{qmQQFzvZ|6QC)iHwbj<=lU44gZrRqk zY*y^V)z)u&CEmKGSsY+_5PC>x&J=}p_d0cNziHgu{CBmTTJ|iriA#QP9~8fT^FM=- zo!Z~^J{P_!@|1f&%vijwQqT0}gVcH>Zl6P|*31jpULGcP$ws^Mxf=f;>-i7=GyLVT zm;KN1;d{m9{|wW%?)`02V|-oV>L2%y%E!gxL2G56PtP{(IxD@deNj}*J-f-vCJLLl zJ<?dOHtp#(&%?2I?{Yk^PTA)1H*Ig!j$1Rl6F-#7<bL$hyL0LFs(XgFthVl%x^s=Y z*0fFTE%k?Y{*(XDaN+RB`~MmE%X{sAX2;q8XJF;|+q8%O!TTHhkEgBAT=yqq)_boX z_3PuDWxpTe7rP&|`}nduR-L)eugsHNtipToR8ODLnl($BzwNDP|AWzNy!(*nxxuvR zCcizmN>~0}S#MKwW~0dCH%k}Y{O3w+39_v|L;v>l1M-{s`?kpQ{@7|$|9AbP{^_2+ z!VkZ9*f{bn)Sq6cxxFvf?o`FB2hN$rn$7jIHo9CA;cT<p8*le{&PkQKm9PK4te?4l zb9+jKJC<PHf-NZCyZV2-m;9f>QTRW@fv5ix-#ol2C-|R%@A;4V{|wIj$Ls&t-ZS~n z@N{j>?Eeg`u|F7dKkWZj^`m*wAC-^KkJt0nIDNR@XzJe)K2PaCL+jB;XPxAEGk;}u zPSVtUdL_ke$CZ?>=nSz`7emLDe(TPsC`^BUzxO|bq{;b){d{_RJXam8ua=69e7S8} zm_~o;%KLG#&grR{V&6QjdA?hx&>9!sr()DL$>TB4>(AkDeLv)f{0RKdz|!@1>H9yS zwyocf<jd4pedO<`$*o+zd#>H{@O=K-sh2KB1}t47aO?JM2T7MU>5N-xlgegg+I6>Y z_DMP#xIS*nQgMr;t|zyumsT%(^H}8F<z2Z)O&;Cdw3g%3mg&xKq%;=o(|Cd0R7Gb~ zt?615{GWk!?T^SuH|qE@?8WQkYl1$;ALf_*W4^21r+14kOZIj<#m!f?=Bn(Q&AT92 zWqWb#&CEv<-<KHA{q~(TVdtcXJ@@}{GXD0g$@;PQw|Dj|`D6T@_A>83Kb-k~%Y2?c zu0KQ*AMn4G*L!tQZU5HYTj%9lzqwZu=*d0x{I?b#<{ay~>wnkn6Z+x(IRDMVM|+u% zTRr{H(7MM!H#~UP^*39a7vK3&`ev#3iBgSq2bnl^)3*0LOvza^!?EDxPXD(0gVy^~ z&bRL8vnj8Byr1LWh5bVI8Eey?JN;H|Tl{E!$HyO=Y{h+d?oOR?i^J*I#5;F0tEJp{ zBEKB!I+Z-t|Mg9G!3XnMub=+7<;p6@lTLAm=FAD%nJTi{DlhQ+&pYc)e#Y-yJL%y{ zulR`I?u+kN|5^XH)Na?Jedd3++nLv0j^DVvx5odYx^sQwKHDF{nct#Umgoz=UVQML z!lftEEOPdp&R^wMzj;spmN&aT>wQ#~?pzS(!t%@hk8u4zF5ZRp2i@z~U+vSoSYrL3 zfj_n)Id=A;TX*Md|2AvtrmTSI+oub^S)Yzn>3VlTx?$rTy^9*L4@Cs$cO5Ngvzrz! z^J;RdkNvKt8lL8yp6VwpcKaEHd+v*K`zL9<FiGk8n|uAA|MD-$K4Sl1!TnE;Tljx# z#xee9xN_VL)a3ln(9~RilI?>1o23=(pkW}XjSv1a{FG0qfBjYeub%Redak&B&>B7D z@l!|wTyOe!rJYgMd@dX2%*2NgI{N#RD;~Y_=dVyZAK-3Pdv4vea&wRCIcr*V722*n zdRDYX#o)HbhBcG77@XY7CA>B;xb6MB*xR*2QQJ3pZc}@+t|(sY*`B{E>dd`A9QL}p z^{x1!I*#9F%O9`xce}c-<aV!Dba(aqjW5E!Pb+dS%r5Btmh1F%QpHjazWH(|7hYLn zDF5MIefxigF9v_g|1%uE``G_q)b*u*1b&z=t6}|7nEi0CR`u^2mtK7i+P!yQN%dO4 zU!PuOpT51bOv`PPe`%r3nTaZeic{7U9+wD-+q73|=F%+vn+dDD1o~!~%jJE_w7oy~ zR#@*Xk9jU%Ctdk~wIO=^KSQ4V4ebN}#D3^5ijB_RFQqyyzC(_4v(o3s?A`gwoc3K? zX2`V64oVebnb_sQP%%ek;wF!d*N{S7`k#kc<9~)!?F06|X1uuizM!pmhPUlO^|)NC zEB~(SpJ$gA(N*{@=wi-)2BrN(7N^m6dVhD;Fg~ciW$yPQaD{sRe};!<S3g`Uh_12w z$a=T+O!V3?@7DcoC)b?aqg$P|+5dTE*juAD>m^UfK??EwxcVO=`_Ejzd3ckJ@;}-0 zAO17^Ym@K$&+wyqPv(Dy(^1%(l<UhEE&rWw_@7}x=YNI=MgJKLz7@Rb$JU<T7xQ<W zonU|ae5pSY^SNpYKQ4Cbe^`Dbp7Hc!@89pc=BZsb`I~8)TXpR~MZxX6@n;z)+`hB) z?fDs^kJ@}KU5bv^U2^``{?_y3<d7eM52U^Mxeg}Qew02g9#m0%(5$M-^76aVvduep zx$RC((adBq+b(WAHBqtcmTPOu+=XraYJXSN@xGkTSf5<a^&{VF-oI}qKQ=#@>-Fy2 z&x`N2TE9LopBX-Vd(oSa-jsQ-9#zg%@_6K|8S%K!V8wpNNzWp-Morl$nyR0vDk|x@ z<#MK%ulcHb+TP~n)d!bP^>90PI{B5A#-e=&c#Cc>jrD3jX8z9qWAP*MarJwiJFlv~ zckJ<8Qdxg%mw!u*;i?~-emi|uj!gVrV->sg@XgAL+kWi3r2Khm%<(<SQ}6S)u8oVC zqVVMVCg0uV7lI~5&$LJHRtEf7{L$U%hyH`;_rgEs{r;`*aB0uB{rfXgCP{P5a_za} z7Z`nNdw<!_^cq(dZ<S5ET%~vYS@_$!?pp7M^^g8D9H0H4L9WK^$JU31kM7Gxy$Tb% zRo}k<q4AEbf<MxowobbBvBpwu={N0$+)D-1-SmyPPnY+c{C!dUik;j?`$qe${N_)0 zGo$)j_9_2hKDuqYnUHs;?Y@nRUz<JIyZ4Cdls(379+T9accfTtc%}WqV%}8uj@EMV zlW$%epY1O8*iA6gGfqEZ@9f(rX9i}St=xZh`u>L*FML0G{}WiU@ADs@S>fOATq`)N zvOjsVai!sDo35n_pHqa^XlrZxf6HDhP?&4kKmX(Tx2_N3+wK`$G2zXQ{VleBY5gJl zZ!7GM7OGGEyLaX3rJ3<YZXrLvU+@-Z`B`0lawA9aXR(F<8CXt#^!TBjoxAq#3wg;J z-|R;#@=9~nAF-`By*B;vdH&36;<NmEmt}?br`ycm)fZix7g`<N;kPM2wNpu4TgQgI z_dmmfzImD-%MZ&7L}uO6KO`@8-u{nb_%HsptuL453cLI}@p0bnwRc`j^txs&vE@fe zZ$iemOUHA}Zy$ScZQDol$#G1}{nzy7oxiwC`*ZN)_kV;oKW6@SRnGQD`-g9@56Q7^ z`N+Gz^ImQA0nKF@^Hi_8EnJvo5bd_@<<eVs&R5KudUWb#&+13c`KD)Q?7W$EjN`4% z;e+)b{PRWr-LU_#X{$cdADIvAZ~i{Cp8vz;v7N}}FP&R_xsOkN`Jds#q`#}APuCV7 z`uO<tzZ;kJTsCKvPq3LL_F81MNv`hX5T&a>o1VYCe_a1o{vrF#`@hA+DbGG49@Vz> z+19@45C1dpWyL99%~NVmnDrns^MZfjw~AR2LY`;pLh=ilj92?gZBKk?FP2$n`(fM6 zbuX&swryRM9kwz4<*(M(Lov7R-#*p&XqINc)Jf)UVc|i}OdKjwKTaM0#`>f6;r^S> z57XO{FK*!%_%Zvye}-GvHXl_#8k>IT`Zuxd<@0I+B7U?xUDmm4^5b!z#Qsf_z1yzm zggHjC%@&`>|3lsVNcH@_S@IowoLBx}K5nPh9s1$i#=?(vpUf`Tq%JtREc)ffS5jtk zlSNk_mz%%JGqL8<lBm`_f&GH_S8ku7%)RnS>-K;9*Z*KFetSy$^W^CN3{4?5!9S)y zv~P~*+Y`O?kK+Cxr62qc?ecHD^e8v)eZcJFQnkxFYvk)qw$IAhm327#c|=9l6Y2ad zvFfwSCQ9-oF0<Qf{zv%M=fm^2*4Qastl|IA_S|9n)spJ_{1wYyWv|v3{9}A+jn13g z*@tJ@Ze7FOYnQ(<#_Y-!-L(g=t-BU&J!4wL`rzgA&$#EuU03{|{`h_K{><}j)AkvE zVDHGW34a*<d-rW?->`$-x9-_4y>qR2i=Ts#n|f1dq_Cz!z>70IYwAD?sLJaPYSzU5 zHvALxG2lnPUE||=o*&Z>ZLgEQo*y54IrTq7YrD?o=y&_Bm7J)tPWx^y>^5B|W&c%E z%f#QgSL#v^?ws{--@3mO_i<<KXZR<YbxUkxVPbK4{o{DCiaztr<rPQwt$w8I9kSgi zHsohF>l3dBOw6lW(*h(`P3*}}FWC9=>O*<i{|t{c_o=HN;@1Dt&z4yiw)mseKmL14 zKZ|a~+^WcPxY7BaVM|hZ^^V);ZZBW$s-t1*9o_o9>c{?X_J6x;<Ug)Hw9o$IzTIp7 zMEMI<%zsqhTfgO<$^5Q5^@|U8{TA=|%4>AlAo7)<lg(;rY3tNm&4SS`dqu)mPdV0W zab7aYw<yx>r1!n4w{k7rQ^l_B7uV~J6%5>-vG^^QHr64N#n>vs!#7j^GkpG5|3lCI z&xZ2(so(!I9I(CDg|(%CZN#QOb^3pX^Edx9JlOG{;nRUVzxDV3V=VtR^Y7$EAHTm* z|2X}jd85*Xi|gxDD$0+FP3x^MwvIZ!^0jxR&gD}-Cb{;md#^IFNjrzfNsVb~W%|+l z8|p{x%>QnDSCgNg_<(!<_8+UAKgzZrkv_e1`ms2+%WuT}#p9$eFBDt9+kgLW-Um~s z{kzHVk@er}%xyb%eaR<sm}!?*=%J7~tFEjM3Ywg|o#l3Z*zMB1+f}>YUy1t^=2`on z;RFA?{SUh1H>!8lvDE1P@P0Hm{^9-xJMP-a4`ZiwuYD;eQ#n2K<FSP{RynIzy#8R? zI{oHXZu?EK3cY6^w_knlK3DFVxqMwXwq7%~F6Gv_uG7!OoLlps;X_RQ&y4F<FZTUs z_`&$`{y(GHkBVv(HvMPt_>eaJX_md<`Uig>=}*^PdUko+6W)&bzunZ!clYjjyQ^wT z(4pp#tvlk&*UzheFw;(E`-lGwZ$3U^m=u5S?*1e3k~i;UNlpFot8eKF)&5RXS+fgw zWA9ksi8(3SJ9X}+lO}zSv@?Rst_0Y%tvH+Owfdm*!zH)APJOFsAGT(<tIE5}Ic=+F zezj5l$9euggWBIm^1n6zGYIVeYI5!M-PecgAI$mB@G1YE;(vxs^FMO`X9)Jq+k0<X z`F{pw8TTL0|1&H#SpGrZVNsX%86EV+6A$-i+V{zSIQyT0wRF8y{UOE2pjCBAKjl9v zeJGpyclFx)m79<AztjD$K6CS#&+^Ztlil+Qn|~VrmjBUxbf50uh5O`R)miud<2o}> zci+d>HMhFsZ}Qq7DCa8`aJgRAwQ5^cPUkkyx58D?E}xtx`D|RX{@2To#~<p*%kC3; zeNS-bb(`>qE56<iX1Kb?c#ZFptY6trjQsP9Ie8{2uiD1<q=3uHCg;R`k$<P-KX}Bq z|7T#f5&ba#$gTTtZ9krW<lel;@^5qTlFVJpkEr@Hy%x_@-Tuw{_RV8vKjm|N%S@Y~ zd!#Ei_p&i_``_jU<2$n%CnvppG&}T_r)q{*(3DEmjHByI?XrKbJwEf(>x`ENyOsxq zDm~ux+1?>zJ@4Nw_74`+asBP6e<*eN>sj^VaRwjzd;eYi&%klMWsmH`mtW`RAF)sU z6!rc@FGEkIpwDLe*(#O2GV31g&TjkLvj4%NeWrhR)R|V?_W#e&R{!z(VgL3xfwTSJ z{xkICKe+sL`&Ab)ar=b%t_Nq`FA?8Y<onDfS4#0jrrGj?7ar=|S{JKxH|Xg?k*8-h z-8h%(xjk5_^89`EzDHA^ESa`(>aMvJn!l}I|E)cKwe*qv2aJKa{PolK1pb!)(f-Z) zhtID0Z*CVqy8YMx(6no>vp>8)QfIN}ijDoFY70r>-*%Q;jmy<$Dn<Q#opr4!+DSdT zeoN<q4y9wUajic4w#8Z&om=V^)Lr)EyK<PWSNQk*b8FsQ`*Th^U{+REtx)~)pYj10 zBjUO3)H3Ev?UVRXd@N3K-@nTr?su2$&Q15+^C_kMZP;`}oeQToxrX~*+%<RIs>2ov zGF^Aqvn^5OwD65wD^<Px<}A>fo(4$&a8Uynw)xWS*H7R7;J3cls{FA0&F2rEALN&J zuK)0#;nDXt8~J4wb@6-^Z6@0$NAB2od2w|6rFVj}E{F6gcb_XxHaT`zwI@bLNLb>R zjLe)*HNG5bPv2_#osM=hShM8q-pP}8Z=HJe)~<a)|5V~9|K(qiv8e0k;{fD2*!3Ly z|1<P#{kt%C?c%@x84k<0R4s{WzI*idZGX`pv&43{u8FZfsUqdmB;A%8$#`YoIk5=! zOY4;C%hz|<KbSLrLwMt#;@`|QQXlOWuKSY_n|-W~_tGE#HK)@*HXq#<ct5MEcTM^A z>uwsQDv&P2oK+3ywYM4hR?m#daB7Y5jkMVESYoTFcClvcYmL_#Tefd~x8_n>ao$Vi zx4%fJYo2|JtpD?O{y*;i{|q{^&u@YY+VVB_o%{Jr@_Xue_c%Y~7mEDPkXccEG%EF6 z|Ej3UOU~a`M|aGUTzp?zd)bS-ZBG&oTe8SVeex%=q~E&eLr9j}TCK0j8e1+0crM%O zYZ~@)`Kk<g<FHJS^?b`8KR=io{%HQu_@=0L^9vJsmmkiTy7Qwy*t@-SQgx+`_1es= z39Ug={`NtQ9Z8FmJj%tm)_#yb7XL%_e*Yfc4@$Sr)Y$z<epJ2NdOv4HeSEXeyl2n+ z`@@-!$w}{+eMC+>{>__%Dg_bo-o~DPS0($V2PSKVOt|xRIkv$;EJFbo*&BM-hJmZ+ zE&j7Nf!214)hF8DJRkaZ_CEQFX{Q4&*(g4E?Jw}7aci&f!8*aY?`&)z%&y-U6>U1T zd+Xj68PDe3s{Uzq>vp5v;sUeXZ1dvtKoboZb5wg~fBW&b=a1=!@NZ&2E<e`i`LX-) zzS)obIV*%?u9eI_|07n;VD_8sWw&ZRJL{b^HG{0LK2_Mnabm5(4<A0YJsQW>yf>S) z*ED;3YW+Qyr7G+5kN;zQZO>`{SgX$5^`l?@y$a!j^D{5+lgs)0bbiOb%lWzA<_qcl zXZT&Qaq~pM;+*T3ms~fyH773eKLe}Re}*Y3br<J<^Re;%&#-LvtZ)6?712H)%-c-v z3cFlhV^S;awzccnp+m>+>b}j%edI9lut)~el8mlZs}`^_FffQd`p@toWc^P!_qUS& z8Bz`(+5anZ=c)sbLSruTpI9q#j!Sz}Q1s7jw`=w8PKsi=y5M~IqAu-&Cg39Av;6Js z$6>2~oBcaxFJ7ngq97vnbsgh}xXq7j?YO^G>Za}3ym8hem8pRfXBmB5k+5b-Q^A2x zwpLx4H}5unp4R_SKkDyvJF_3k56|uXXddw6X!%FwBLXj1nBMrZTDShtieF~?S9Gs* zo12@@bFFwT@4{B8YwD4#k7v)k8pcs`IPyP3)0T>*xpk(me)%6-%k=rMJ(G?0BYolQ z>*96Bv#$O7{M$U@W8Cyy*0sA{UQ+(M$e(-q#3!@t74scJ=N$cge({$48`B>gZ?EIa zy3e=eKSN7BPfneD_V?`il|Pd1AG&6kajW;xjIOh$i;gHxa!6=sPgRjfe*PpT{zLzp zg&(#bkYl}4qr2db=?AvXhjZh-tVI7!Onms-JDdBi&B;>D&C^(V+`c{Yetq50Ky%l- z2ak<*=I(s?HT;jgqP%5I)qjSjg%!`gmH%j7USS;aLv=;P;$v2Mjrot}i@v<aRWDF6 z&pKLr_3hu)9wj%|ny5#2pA`1nnXe!C?{tf`OLw7C<z>eMbvNxlg#2gduIK;HkTSo^ zPUpjah6WqOhd-X~{&>HohIifZ$CCM_99#YQj;`CY{d$?v%Q%<7zw;fgsCOBfo|u%F z$=uSHnWymE`0;d*hrZ4Gcltj=>+}!T56BDrXV~!P{+stdJongUuKv%E{&Tm@ef773 z`={?e-CuSm@6%<=TZRkQ|2sdA>0^3pU+bzL%7>)pbzCq1{@j1p#kI?}nv1_InSQy_ zr?uwvlzn?6=SxnBi(%JMtvwsEY|T&S;Ai@`wI9Df>fctU>6`TUh*f*@9@_`~tT%rw zKPvb`c8k7X)Q`B_@BP)~kECmTqO-!Qq>g8>ZoGKu-nS=FuTFP76+6h^Xa6DeZ}@}$ z!|%l^zCC`pxAi~6;n&>zC0@kI?(9GEZq~WgYks7ij@r4q?cJH1Kh4UD=JRKHiXJHs zHxjtkbM5uB6B}x!*Zw;t&t2pFpMk^t+w{Zn3|aCY*4V87;aqq5;cL(OheDtJ%-8>I zUy}Z2w%vKQ`|4@;m28re9y`1Joo~bX@P1F#_9L<O2jv7d{%Br*Yi--|N7c1bw{+73 zw+9MDr0ot7_LLBCU@{h9G5q*RPuxal-Tw8jf4!2Lr~KRF-@SX9KVpA}zxdC<UL*eD zx5LNq&aM9$-o$Ub^SVxZw#x?j{LLRzpUg`>oLKhysr$op=A7JTrmvcxc68SKXAt|( zaL{L6ooq$)(f<qrrSF+<xPGWVJiSi)(%Vw)c##7&fh*#E6q>s2_kT0HV?oQY=dM?3 z=5M|q<8wmy$s~?sbN$TM{~0*<C&f3*Gkg`@^FjZReVZNkZtorMuhp_2x@MKr^vFUl z_fo=zBg@Z3=<7Y=zoL5O72i!6*}u}?YCed!*BQRLFIe)Qfu+Lf_#?jkS=*%McfS3S zow0SU+g%sO#940xd{q)0892^32pm6tVuxSIZ?@$f|IXHLvp@3w*5(8I%r|cSk^Y~7 z>-(`=;y3I!zyIUB>_?wGpTFpxNp6=GUiq?C>(jeOR}-dX>LxcTO|V^(^i8=?`F8n# zh7bPpyR6<H=f9!+puM*yxc2YLNBI&J%#PQ-R-ae1u)AJayxh^`)6c?H$7U}n%U!W* zu>}JU*Zm*Tzcp%f|IVo2YX30mkLd^Y!{^_g*Z%GPPjEheRHpnbxv>8X+UI`TWIoIJ zoN{}&b<Oc(<}zQj_KE)x{;)?wiodx={J~v)21dTQOJ7vguCf0hv0!_f%72DbLE#M| z)}EgZ=4Y4l2cO>mVA=jpz2|T7|2w(9<3Gcf>&0>R;}z;|+HZMdzjgkb){oH--yb~B zTI2m=>LY!bANJuFOLp&;=RLdRMbOf_Q?7lue{}V${VA8%z2%v7D0Iy`J-LV{LPupb zYVZ2Bzjc3pK10?#^~)vvg8JQcG8N6iySlyGE+5+`weP~(JX1><w_T~*7TY-c?cbfQ zBV;YTy3wNdNy}-Wnc6QmTG)7>(s;Oc&d!HHYnH5C)w9@D?eRyIJF2TaGZ&|6dEYXx zz4X^VV^Np(le6b%?0>L{|KV-_AL{n~`Fldw{s?xs_@#QSbf~$U#znoYYx$m4$EF>7 zbnD!&OIM>Rb@lR;x^BhmMyx5`otv=K|9Sl%LG^DZe}w1$PWVxG_{e_I{psAkrC-jL zAKJ%#$%gSEzd)vZ{=eJT#iOe=-<xVjS0puEtGFdC9l~y(Tf%a}VfL5J|F~xT%J|#3 zPwD8Y*LB(#l6P<2wsp(&!&OSzyL!KV**?KNJz-YyYWI5Cr<WZwRhR5e+R^pQV@bv1 zveG~Q{xdXX{+NF(e*5~jmP^f#-0zUz!naXv<-*K)2AA|}LO+yye$bo#$XDI{TFF~K zM%JTq@9fW;sQ>ixJk8jYKI!Pap30o6zs}2lac_UkZ^wN6u-KE8t0w0zyX<?pC13Pw z*2KwAi=O*!HCvb$7xweKw%DyBM~_$6?OXkHvBCZa3;%IlvQwx(7+j}Pu_)L3n`UnM zf$L#XDq{P$*!OKUpBwnaTDwW7WX6-elP34SJWq{Gn)&ZWzM2rz#U=3z;y-xF-*OKA zyTCquZnE#y_Jcdu?UQ)D|3mxI_lJ5N-`mL6vQ(A!K4JI2!`Nk!xVP`-qSLICuK5UX zxZL@>yhi-D*^m3*`hS!@jPI^v{ZaU6e`mbl+Wa?r)NC9dyeRFSeZ%BM@7*)n#j1O{ zc?wm|Dn!aMOG;;?sf36BR{G=o!~4;C){6ea@oaCu*qR^S&tv1eqQW}p(w17mE#12E zq1z{TR_4msg=7?}{62kzC-0IW&vCVV$(=vuS<dH4EZBS~bgx#)m2{P#$`adsPZ{mr zlWuWN%PcVHndfJRTfK5#m!=zC-D~yzKZEks)mZ1Kxc)OVb)LHLhvCC#&4c#B`{eZ> z)TA$J{w4M2ee3IEeZ?(nbr*-tF8eeqJ+`!}D9-15l=d_IzIcH>v5)+3O+UVicly!! zKSJyzf4Dy26+ZU9?pNLH;-&GYYs=Rix4h>2B+dWL59N!ANxFJEsW)w}y>9UFXZyGO zqx&N}&<wNThyBg@>$h;nw^hAwuyJ2?BXin>E!V$KpC-Ofx+m^#jMe(7{co*TByVdG z<!Z}Rox02;*Cx;XZ|$?`w!gYG)*R4)ZeLjVXuinHd2An!EnWM%YHC~m;*4vX?#JK1 zAEUZ=ZSNkBIM1aMPlWUeM$Vkkut3OzY0vC$1s}Gp{HT5W*8XGmqM6r!xh-FJYhUZb zTCrbuA5C_=kho{&qaB(C!j9!D`#0Z>Id+m+$$5FSFaO+xODCKEGqAdUc)Gu@K1K46 z;R?^XUFJQ1QXl+h;K??Oyzif?`fcWlAB(*<?%Qf~=%vze+qFkN><D9>6dv<n)_!cQ z>FOI1i7Ow(Ms1#w8sul?>V3DXJ3I2&^`h|Cso6KTe4adc>ZBXrt4Qd-Ji*a_>4@hu z$?uxQyKnmXn}7EmyB@sZno{?<NxIv^%qQHtb#h9o`sp3pTfa@-x-B>1l-GO}EDN8o zPRvE=v$`$Gy0kvXsN2_+Wma~`<<PuYRm&Pbo2E^_|DS=O`P=%xlm7&N{Lk=ciq!u0 zn%Msg9PWRj_DfX=>E@k%_V4P&Qr@gw!8c#IQ+t-xo&P)AdXif2;h&2BIwwDgAJhM# z_Pr}-PvnQYZ|l?NH>e-B+TQ;r?(svp$(1Jm8TjAsJN|IJ*qU8${~ov~s<>mvq<@F* zOkTDx-skd^bH_Z6?!Pe~bKVlP{TyS(gM|%C=+wynkO9Jrc6q1Y|7U0@wcmLBU~c%g zn!oe5)N{QS7vnF_EMF1lp1R!n<nk9{-^0I)hy8M$ZM87l){gVhriPA%Y|<WGhnXIU zy#EvYXs+>rdlFZ+?#&O{aPdp7)V1i>zkk1O*}iq-_D=4TCYvm|CN9!8HWm<J@?;3_ z{?CAA>5A{~%(|od_<zKHsCK(j@;Cj_)$h0WR6e-N_v?7fkL8bQi@mRW`Rjb-S8VIs zxmTyYTWGrVjPR|P^E?xMg%_)=;aF?1!-q{-kV|XLdrQ?1u6b|&GuX>N`O6eE$@lih z{|pV)?r$DG%ng1N-oLfJr%vng`Y*lyv0H1o5B<{py8EbF^Mb>b#zzZ+64aXB2g|4L z+Sxma&86LM+bnsjgG(p1{}D<4=llEc{cpkl<o+|f%3Kt_`+7_LK{xv+_xITTXGpbw z`2OFrS*kkwg<hv^QP0+^P}!xjWX(SBb??i|ZgZ}7{3Z9^RV2JE1Gc&n8(p#gt^A|8 z!H?qmxAZs96TJd)p>O$7sjIz*Aui<d&XW@YyD($xwuy0UF71Ik+w!drCQV-ZpP|*g z^27ND{eP79bG_T5&l!KK=9>AeXLF0!M|Y;|_`EKCmt%Q;VR@mo&3lzkF`X&%(q_3$ z?QVbYpCL{E$IAZ<S?_Q8$L{<4Z}pOj#qJ+cm;7faKXoa$#(LSS3DLPRnzyUhWlj3o zBFTSi+cZrXuX*p|_L;5O@M@mi{6kaH-mfZ}60+{{t}_3r>PshI`ZV>C)!ogH{xjS- zeek|)(%)rv_IsZn$#1!QBdW&#@_&Yhif!`kRxQC<Gd?VDyZP^=;&q9rv>QhyJ_|k1 zS@CJ^sYfDT=if4aIQRL%`vS2wSszrV?JZvWV)j>k@gM2#v!2EO@c;5+&5|w;rHx_P z<yWT$U3{=Z;P0aPH?OP3cC_6KtN44bYuC@aQ9C-W6?zsO(^Z)?B_t%OW@Uc%x{a64 zy)@Ly)E2SPeKgnjxSho1(!Ih#8?Ke)rd`v1&HY=tWyjWi+ov)gHwjYI`nbzz)22xh z0*(q-e|_lxp?3d|_kV^|X<sh+$zC7qyKDj<oE75RpLD6DUN9>vZf@?5Kj)v^jJ$pH znPsN@={s-UojHE@b+deXM2)W(=Uq47+OvxuYcDy}rLoQtWszWo`yb)?|9pQRvHuqQ zPqF@0=GyDv#AW%P;mQ3y&Y;xwNc`WjS$C^S_CJXY|5Ngx;mfQR``#-13*W0W7VSB7 zs0(p=7(ezEiy!)bsN4UU{k^09&GJ7^{~4}aj$U8B-rxE^!^A%2KgItUF3lAA$NB=R zQ;x@P7Ju9LVE)bR4=pe3@v2EIU;AVEBmE=4|C;-Mc-~w(UpUq`KmBp7t6o~hmfO*7 zT^9E~UG+X8B5c&)dCqRzhxy$m`{jN_`&=)v^*bDO(R6jh`Y(T-4n5S%&42sU;iIp} z3a^vWi?y{^DmJnR@rISnI-|Y2cISVFmp+>NORL0RtT+5<|919=<A>}tKfY_NeDs_B z+CPa~FU#XpFTYKm_UW~+)#6jLa<@<AGWM=4`6$|UN#VPYWbUD3zDMNJ{xclR@4F}U zcR`JA;p!i0uLCAoOK;n-Z}XKetM@7gUwX%+GSBzw)F**4w>>U;^PHOO()wtgWQfF5 z_k6>nOUt@<UcVR@{89bewIAglrXSnBOKkhf?A2xyH~)_Nclxl^vW1I(RF`Dy|M4l6 zuCCPi@^^ww@yTy17kyeV&2oN@-@5Ac?em4U#CP3dJ+^W|9Jm^~Vp5s<DWyC2ZtI(C z=7A5ddVYGB`^@)1Ztm<Un<gCJv@fz}v75!LE2$D**CuxdmWPMsM&8X@yX(qSi|r|2 z%{3NvJ=B1;1D@Jh{NejB{jKJQ>2V*_`@Tra3s?9bxwh<b;N^8!W<2+4V-Z!H<Wd^$ zDX{w3i*-F~RvrE@{~zb<-}*nK57%$men?-uqU!lS&cE5F?VW3N7he9F-?{7E*2f)@ zdi%~Q>F^fpO1-y+qh77LI&{ml2d=g&1Wk0~FUZ!h)*ZH&-otPIw)|l)tHKZSH8pX2 zKDIY+wWtwI{cV2x#dJI2dER&3<b_@s`b}G1%reWwH?w9}%jL;)P4v(4{QTGap;&ar zp2-%6A7+IF1U46TuXvoPHDPjLSAplcaLcpDv;?o-l#5GP_%?H=>h<l@zb^cx_@9Aw z=a0D`m=Dh5`cb{0ruGN#<Mq8_cGg#(UaYa#Z~eluckku=Gt(}qE(v#fbnnr<>TNEZ zqI+h)6T23wIF-Y$@IM1f=8x<Tj~_07>;0HxpV%MOzgz!tRV0U8Shm+r;z$2-@8ky- z>7Px0#AS!hicHP*auk|y$?N&4-wv#Sq2llDZ~6ZdUH?ZjHv6AA`yYk-AJ*+J{JZu) z184uu`i=J2k3aeOpCRk-`CtDTwA21G{LI`eZ>C-TPprLd|3lE$Uh)47oMP=D<=@i3 zUH>M2`_aG4zu9L$`Mdtj?>+aG&;GqXdwbe{hUu1%_9?R;6V>>z`{atCHCO&Fn*D8a zNqNuC#oiBsx-va)y)4?7U%T|87U#8Zz3b+R{`-5*{jvI6+hsMHA8q6$FYmE`bYH&W z-lwbi3qRa%(+R3xvOT>ta$R0}MNUp~q3FTR^?3>6Y}YCt7@cafdhjRsKLe}qWjo0q z$w9M^&F9`{QW1RQLe%NfB|l>Kn9aJj^wFXfk-1x5ZrQo+P5SPF$p%}@y$dEr`xojI zMjgA(eCeNA-I;$Je;4lGtoAXi^ILDY)93n4rn|XM_v*)7`17`@eq)x|deOVf=WJZ% z{lsftPG#?RMXd_^A7$<ba>KvRQ~Qy*u*P$L{4`ttN5a03bAvc`JIX#=_dQ(jfW&4F zAxEJ-lPm%*S>{hVc=eR1#hQ@xx@}(H-^{m)SsV58;HmH5x0z4hvaenGKLg9(%Qnd$ z^p9<eXR2{u9T6Y-N9Bj?hj;R7N13D6ExT0FbnI8f(u_;#eSu4FwF)IL3MdNB{e1Ng z?~lbF<)i-Y{b%&U{+RhKh7adDAI9@$*GXR5vLbT-=0&@&)OhB6I$!i^lYe2M-0WQK z6(L<b9RXg+)vM=4f0Ow;Zx7>d_kSnsH-{hf@0iE_p}xOP{pKI54|~7v@BZVuI67<A z7jf=X-b-h;UtWA}6L+V|41=0Z+4<I;>My(VIbW95Y3{wAbU8=q+E?ia9lftC+g*3< z+TQrALUB@nxk=&Pvxk+0oMt{%V0t@G=jzF1ZLL|SXL)Yfva4$As~9`cq`xA8ahZ<L z9cJva{-pd}W25*X`^bliq{#JuydS@Hx|*+JBmeMq^2+S(6L#+jyko*qn4NK1eNz6q zTig~;QX}(}&t;#jQ>!}{Xa09zjbQD=^WEQei8t*Nd0iK|=Y#E(uwUmkuRXL$XQkZI z6<)phnNzJ(n*Dm8H&s_W+jjLlQ$N$c<8tbMyZ<w6OZ~xLzc5RRzr)n?>)Ggo_e^HR z|Co^_{8l*5{Sn9G*#Xg=F?%k1uQ<NSW?zVbOU~nf(|7+E|K0e<@NvBKjUU!W%&fj2 zw(p3VKJ%MB*N<HsYu<0Qow()vH_k_sqILaGH-<&l9V{&TRyvX8pZBEZmq8IFtDk1i zJswxTT{^qYe`Bt`>bc3=b-ib7uT@|E_5QCfcD{eN)Y<<D{lWV?Jf=eZ;eUpXI(5f~ z@3|}V4}7a)DV)n4{NdN@Ti153e(}xy$n~fNlcVRId-UkOUst5bOSva*+k?a+BU9}D zK3p6BNcQ;Kje7H!{BgTtlfEePdb#?sTPCw?TbH-(kxkXzGAVOg*<^RYeUoE~Zq;mB za=q9|cggO#4>yZf#rVFxr~D)EVZOwFhW!5w**~%!uGT-)zBJwG+P|C2o$bFJo42p- zw)NaoHLnZ5tzP5u)A8HP9e*FEPxx^CjrWJ-gYzYx{^(x(NBKwcl0S~K-aY&0FMRVy z)G^-FcX}>OkCMwKa`sH>OyzsJ>5=;#zsK{rLZ@t<bp3N(+BRFOE{%1C@U}&T`yZj} z{{koew*1d<)8NDPf3tE|gJ*`P?f=x%fAjpmlkIK$zg*6Zo2&m*JoG<<to>iLh5V1> z`oGxT>(W?numLvT1)7{_T3Ua~$UfuzZ#6m9{|uLX&sOiPaQ`E!4Km-Y{-(i4{eQFa zvM-;kf0Eq(pFzg{%Mw@r#$R&p;{>tI9DJ|((Emd#{Lf<LZ$1ARHYGla|7&vR;-vo! zCyw*~v#5XRp;g0w;d_<#nL68lH{>`$=bk-$%Y9_|G4ZPVUAg)BU+&r;p2vHw#<$dT z@9f*EXU>Yv&Mvs<E`2X*WhGNnS^%fz@p=+h27R8D8F%!~e%H$W&i@QK_uK3QKl=BV zXrC9qVYmImvFqNuKI+ZSmf1c%D)Xvb$mQHUD*|UlpI+Xv#%v<{jtQsp#EkM3KAZpJ zt||L){Vnsu?B4jp=20yZZ`|G5`gPv&rLixi=1ngURQZ&*X1!9^vs-Rm5osZ_RP;qY zoLX>P%bHJDdyBZ$FYUu={~4P4|0ry}R2u8|I{tc&iLJiRo@>I<dq2$En7#Pbw`tQZ z#hz80TdTV2c2?xpw(J?#PI=DCP@EKT_*l>5JF7QKPfIqa*&n@FtLFN4lbHP6w<YVd zSO1zUc`TlLN1&_dp#bEaWZ~!Sx&Bz@|IYaFvrhB%r1-mkY%Z;vq|cDyUu*U9`}@?& z!re!T4-2o|`lh^S>5^}9MR%4M+>E?;`=rSBA{E>Gw;w+m$NbR#&0UlEae7<+{>?R> z5A~U{XPui|`Q*6y&Ahi;em-l9ousY&cB07J(o~CsEGglYA2vUn*ZCp*VSl@g^uyWu zZ|?K{@b=zzam#FbE6;tWGjoLw^F%*ME59wJap%pM!bzSd*9W!CljnGS^j2`5=Gsf1 zmR06wMP}VCR$qKgZqxRp_T%|Iv(n%E{m>r&aoT#;zhBq2W~KEV_IH^caP^%;%l3_1 zdS|*^FE=(RaO8WCIxFKs%^9u#41a><W%fz@XE?)s%#P<{-}L_sK3jS9qc6Wp`p?kl zY9s9OpW&_Y;_qyGl>c#^UH)U<@o%~x#e4o3uE_`su2H`GQR%tQwUW+KX?el_3`ve= zOS4neCl}|MNbK9bX@}5p{d-$NN~US5bpF-;X8S{YRo$8Wo5Nf7$-mn5x4l#KL+|R$ zZPUZ7qF+wi5V2&P&RV6$=Q}32=Vm{N);?{s>4XBmO26`ES=H8sJi8=zod3QqH!?nD z^4_;8m$#h{RlRC0bN1}9TM<w83Het3*00Iye%Q8lb@r|6Er0UA&GkR9Yu@J7F|Wd< za<+Z@c0cFBI(>bWNsnGVy#3ayb+gT<Qy+MpY$qIEb}SW~0X6vlc+|=NvHcjj{@vF1 zTs8h5`oG0qzxP}J+qA9O3-A4D*Z7w=d)57epPM(omA;(QDZPC6wTSokE-mkVt$i%6 zsCV7J!YO&*i=O50R$g3a7xJH>X?NYlZ}T@_fAe<nT<?edNAo+v>=Ztl^=Gr*Z(Oi# z-uuI|da9Prxh5X1nx=1cXOU;FboAML+cN^U{Ws=`*!R{S)cm9VQ2YI@_eb|BeK0?e zf2;bTdz;dQ^+MOKKT47nK3vCNefoBE=a&Br{F!R*+_GOToGdLkRTjN<4o8#8+<@}< z4>9*|E`R8LbpB1(n%s}l2jfIO=52mZy*gL>aJZbtN4v!fGOAR5om-r^eCyLM*Mg4S zPiei!`SiS9?C#c#)8g_5{}~Q)*>V4n{#N^UhiR|A*M`4SP3r}JbRW3YdPVB~!TOG> z_Z{_{-s*1UHB8@nMfWTB?3VZ~p2ayIPP9tYc9s5Y{<D8u!8>V2dwxUHf_JOd&2?3o zy7J^YxBm>!6tlT<&Gpmvsk2J1OSQM!vh?eU<=L69f0lp#-M@VQgZ29b?Ck!S?Eg`^ zvPSU3^CSHtcVlk7t_oc{y|s77=Jq4y8*WFwG@o^RUSIv@+{F2zJFOeG{r25Ef8Gf* ztMB$7yg=*Kh3tfD_&?^i)+tr=KXUI${&2oW-()@C>wi{)yy?*!o9<oH?mj>D$@Djq zvpQFv%>LG1S$E>wePj2hlRvuu5uN<a;dlPq+Q;&;f872~FR{PHeR!YZZ<~2iAI(;O z{QOU#qsBThd-3W!FPSb?COJO!OkS0x^D)m~?^&c|qi0#|<o^sT4S(m<`2IHfch>4z z@A?}1{|v3pOJB`Xn;-n)d4v5!qv=QIe`voU9qkc!|Lr=j`F5YAZ{MA`S?TZYNiw_E z^VPN=cvvCM>(%qpt0*w{R=dsY$@6s|cdm@|nmlD;Wx#T|a8vbiUs2Cf5i`xJYu^4; zUBCLz`NjLxYJxu;KN!yvUorbwobrV|st@-XpZ=Y;cFilnh=^N1C+T=T^VQZ;dnqfB zr>ygeU4`q%_itbSGc-;3ckZ9z57~uLneuY~xL<8A_~ZIP_sfKvKW_WXbJ@QAW8TEV zLc`D*6J-L9s;s*!s9dI^HOcPKkD1GV%n$wG`gMPEX)m|qN0oW;H{NfZs}vh|jK^c? zpVJxZa^rlC$-1fgt~qtQAgK3q_*=<G>u(i5U_boVIu<<XsT}^hzRSk;;eO?RqG4<E zH~$Wg+H~p9+xs6Tn$@h|R=L~2{AYE!+S|jQ?PQm?l)gN-`0t}xPh-xRUyaQ4$_`)p zbNZsY-@=MEZ@czy*W&!xzsvV0ufLW5sJ-!a@Q?Q2CN)kU*R`&4tC7ju`c^pXs>xfY z$c3N&Gi?5DeOmVLX%Xp~Io39Xk5$9vU1EOtd++(^J8iew>_olo%cIUGX0EW^WqNh( zp7-46d5R|POrH35?ad1U5(fnpro>d5x9;Kn?GjZn-*<NOkEI{t11>Jw)%pHyPMz4R zvhr}VhX*HFEUy>v+URj|hfc3ZqbJMa#x1{HD`)l?Y?u-z79Lxg|9QFpr@Cbmi+;yn ze*`*3$7BJtfx&#p{=s7TPx<%cK#SErd<QL76WV(ZRQei%mbN{74_eyBU;owQqW0a_ zmskI1P<j>rc;$bFC6^Uz@-NmcbQKAo5do{&!m*6Yfg39rLwL)P8XR5onZMZLvJ#v7 zdZzz#v#19hukGa+{GhIV_r)0Y<NCMuKg@q~`0w=p4BYyU!W-=5>hmhWCpuNMUH15Q z;nTLteg3yp{EgFR%e~!s`<Ytdj`aQOO_yg+FIcpLSNPldAJLEEfB4mJ-ltl@9Ppo^ zHSyVhhC`{}@&#^z=8mUNe_lENmUN1J%FS<;-z#sM{S-=<mX>8d^uAk8?8n0g(V%m+ zkL+Uau`ym%IY0U87hfk?r$g^gPh2$l^gOYQ`#Bvi$|kqDu}^U2HQmKM`%CzgKc0WL z?vwqa`f=^M*0ryqUY%W%^Y8lpO&`v!T#@ll?yl77{|v&iZujna+uEn_%Y3R`m9b}q zYG3+o;nnkAKYV^<t@xvDjfJZ+#P{cK+<N6JuUur!Or_i9iPfgPS1L+_YIe`AoLnFs zo%U2`iQ(Jz(~>nV_Ni@^bQ9XT<k6Mbt5;`-l}D}4+p6lPd(+nUl*XbRUf{(Z(6g05 zY#ZfA>;EM0f1A3zCScdkKk6U3y)V_t{b<YoIytkdDQl8mqfTLuyi)btq+i#{<gz={ zFGr{ZEWLC3b-b{h=8xnD>znlV_&(Mbd=V$~;oi)re>aC+E9F?DlUs9AOy#rMRM0`Q z9p-}5N|`6I#(nf}-Ev;$M{>|b)4f)QBQI{99hsB=Mt|+4N7sJc3(-_DI`&}ou@`67 ztl>!TP-u?R|Ifg4{3HKE{$K0|?{`*-xBgM9i_Yh%*nCL$k*@yXjry8wQ*!f7es@=x zo6O&_W7ac`367$hZXM?6`1R#^`;is3Ni~~#C+B^e5_amP=StN@HS26v=3L*)_v)Me zkLZ6~&cCgHJU{X)uX9mN^$-0uucOXh2{RKDvopJ_r?-BcYQe<ABAJHi6Yow94G}uh zz^Jx;f0lpGtmTLL8E!>XgmH7f@3?2NYx3cHoSUx*o||91dh6V?mrQSKD|&k<Zr!nS z&T38`vr9VKDsOp=D$Nhi@0q{F{jKO@e))`P0yW}4yvslAkLx~sYw{hn<&R%{-QBrm zH?MD$(Aq__BObT?V^wW=7M{s=W148@-}DFf-)vt{qyEw6pVt1}`#&B(lKndD@_U=y zM-n>sV|Q-W>)Gb@?SeD!-bFJWC+6mg1k4m&mXi5&R;Ja*h!{1YMN__e+WDngZ(A>Y z%CN^WDsx|?S6JD_yT?M7s{VSDU&H*va#`KE{Y-mAKm2x?_wTja2eszphp#!;&y{<X zUF}`*_HkvTsK|*RQ=QNdAwLm5?KO+KK4e{;>$z)kdG5CRW#3JsGMbQQ&p@MR+BjCn z?!mT}_VQ9takKyN^8XA=t|<P=zWA?w_eEFHXJW`h_*lnHTj~#D4B=Mqt*X5Lr>9W< z@%(>NPAvbR@BDfFq52Ja8-J%%xV-vR-uuV#!+(a~%mF{{KfKMGfB2umRg<~lURS^R z%ZhK@%bjey|JK?E|IW{SvVB&f^!^E4=J)!qzS;j^!ae4X?8p5%{)Fz^c)>>TQ7-#$ zp|>^G3oG;wUcVLAuQxY8TO@4Stlo1CyB2QmiB@vgI?uDBYhS=NZYlQ{_dod6|1^Iu z@SowP|Bu%H3@evyk9!~WJaoy%ub1lc>VE}uW#4r_6)*jtA%QpiXuR-0rHbZ5oDX@$ zE=O<upto{K<^kI|<-5+e?}=SqG3#YsPr!yI>!0tF+;+Lna;<!qmXVUmX}<j5$$IuZ z!5==oe&pZzCtIv>`H$I;=66j#a($Lx=L+AIH!}8x^)JgbJSh9*LbUC<A78f2*&Tg& z<GLt?bxJ}fUtbBI_R4d${p<WsIzNLSzkf6TqyEuv@p6BpAMUPaj{RZ%t><(7*3!HF zvAZ^1`J?`AF579R*(WyioyvIsXUCebr{#BV{p>ev`RT~=u14xVLsLclq1ivCKdhI^ zw2E)s(l4?7$a%4f>Bpqr&CLB)>wjbx-%7o`rt{|89y+w?&d;LznL;MU=2O-uNJjP; zO#8L2>sS5P(}ofDD;-xHT<vx8_vxFz^{b<6IJH%#K3bZWy}keH!?S1q<`+LW-*Eqf zC$Ikl|CSm?vHsK#k6o_+5noti(`EfvO?=y=`(c;2n$?TlcT|dAy=K<7S=+u%@-jPF zF=0u#b+YUFJuepR*!)iQc)DoqHoKThyUV`@`c_qM-~QRs_O{kkjmu#jfv%ztW`U0y zsH?9#WYz!n=9(IlAExE?kK%6zAFJoq+j3SYd%i&BK8@)|ZoTWe=n(a}_LM^Q%e9@8 zOHMSL`dJ$1@RxD@^X=aX|4z0M{t*9d_Yd_ow@?0OV0nLS#vkVk3+_IM?~2p8W_s54 z);D93Z{H@p%2S(gMyZp1s*%oQx6ewqmwY<@o4-xcP1@i<n#pR@v!d*BS%#~t-PT^p zTWZc}t8?A-+tXa-X6e8~1=;7<?yfZc#{ZA&{;K-q{|pCh|0$eToz`BORKI!gm35{4 zob`tyQx`_qEzO!fYtO7SiP-w|+a}i!N=7nAX&X%q;y)+<!TbHK@JH-#Q-4=y+Y9~) zU;H9-;UBjTrr)+dw2s`vbgRC@M(|<DHKlDA9`3rjZNBmE_|sSQc^A$qIossVtx_~a z_WU2Q`hUXlKemAm^=n)6pP{w%KZCIS+w-6`LdySy^54dPv43-aOWxn_H){Id#{RZ1 zfA)8N{n@ACyr9PIe}<Op|D>X0e)In^*Z-rv{)b!ozdQdK+PXg3KhgfS+W*b{H*4?j z`_B;gclGl(fA9aP&i}b*)mI}MUM?H<xIKI4tn$C*>AAJSb;rR&f7Tu=DtWANbJ=@| zmy&0_w9f7cin<y7=lzfW3}NmU<G0x#Sl@lm=EvN`^*@S_MSa`+Vc&i4zRNK`QWw5D z{ZKbJWTxt@v@5!$H-g{RXWV|`D%*7@!clwC%=O7FXJz*3KAL~?@Z)KlANG0&{RmC} zxcFgQ@A9bArE4nUkL?#Z-&uOUlTAd&Bs+82o-5)`eNSZ<`9_@&X?i3nd1l%qj<@TS ze}CI^{o97WOH0n*On=C8>+6LLS8N<t-F04A;qAENiqJ8CvFz(E$CtkhICZeev(W6S zk*Ky%<z&xo8cS0D9M(DaG4t}F3ri(!g~H0}A9ZC3)!&~IGj;MaKh1R~FZXTAIs2pf zcR-E&MH}4@-p(KH?OyQGD*xzPL-xb5QkTxIIkz&AZAO0k&9zM0j`_S(vi!dED&6Ht z&ps(-me>2AfmQs6{koU8wmz{_yP~w^a&FkaYt`%dUX^Y9G3)N~u6veS!lvDI+b%Qt z&MjBzm-91)_Wqr;Fm3mCp`tq8{|rs_^@lcG*q_=htM=Go{}nstZF3XXXJ5Km+x4H} zh*WKRYw203n*kaV=5CMLI5Tll?8G(KRbw_DnP<JM{-Du6&HI0>e}pf{3a?|>{GXvM z|HHbe59hO;&s}}@PW_?EzjN1Bq=)v^I!2wde^YP$PcT9$rR9}f{I@xMQt_Ks#r%|* zaiR42n<sbj-rRc|dvmXO)?KSR7tK?P-`sDy4?028;YZZt@DFFNEmSEp&rPgNU->e; z%5C}5J1m|yvsY`MShRE7#6{C2r>b>wAGI-BVR)+VR-NvTsf&Jy$A8#2ebv3c)BZCY ztD61dmrb0{q}okyb=Iw)WwUC+jBT5D)}9NkFW+uGGvtqb>Id`3&kwEtp}{xxqq^q@ z`3BSf48k=om-fW3dVQ;8pYD}h8_S2a7k=>jZrkP?ThbZ#>`}%S<${eTQ}ZXPo?4lh z{ml2J9q5GR%53rf44cB=%=~cuNYswbe{4sWF7I4dWB*9j+kM`PTNU8}m!jW@Piy0z zID7Ss=xOaGN)C5@e7D879rD}Nr?<GrGUeTxTUkb#D!2STc}BhZzV+Hmzaa0sQS-h3 z*!-Bf=ug-MJyTz%?{B}E?V7i6@oD|ZD$#jw^wT!(>gQYKKfO5LD33Wi=g!h8ZPrtt z+Hb6X^SAuBK@Cqm``x>Lcc1uZ-tjd$a(2MZD{0x@f6M;;yWv|{JagF`$6|r0PtwyS zSn8|a&ktK;>=jWJaq7y3qN1geo^Jl-BDcEBF1?N1&BwcAxh`m$R;b_f$I0Ij70wT? zcRu)VWOMwF>Bn!iuDTadVSo7A@u2JZiscoHcVq}Wx^{7yzsmjCEn<ZyPHnp5KIi(Z zKR$ow?8*OK^F!(P;rZfkOY~W5G_U>HT=}3{W9`?u>CvqzkwLcJ0aK;!UDhf)$u?K| zJj=I_XLDE2W0hn5+h^ndTl_ym&gl<w{~4UFn8*ucO@2LVd-I-5ll>nJuBhKq+tYtU z@VME6?Ls>%mrW1s52>tKk<fAT*uv?z>=^%~T(-|x-x$aBqj`~IefHvt_l_Gs^0t_t z=q%;kdv{N{;F?uEr&KtV+PKazvh%o`ehHpyBa_^5dhct~_xrny?&`%Z__C|+-^x$t zUf$MCUGne!>tCPj9Dc0*&%i2m>7Vd_hJ)_=`0LL9;y<F#{vuB9f{kPHLx16$*}GoF z{g@oTW6y_c>&w$~cYRAPQ|^k`Vw894O#Zsk3Wey_Y4@H<e*e#qu>O|%Bl-S4!5{Pk zK8E*f<rleCci}!qzMcBLm(yp}w(eculAl=5Z*=ozZf?HF{bc3XxgL8by~~NZos@7W zZT9QC>4&P~JGRQIeGa&sqyO#;_qP3))pu<7Ou4*HiZl0CMr5PmiG+C--Rn3#m&Cj+ zW1s({__tjJ_k;IcHU8^<xF3`g_^@sJ<Lv$0e{=_2GRe-CUR(9JrvG{DX(8<x&wZJ* zYg+qKi|1@S->tQA((b6g->Y8#t&)oPIs2cu`H}b^&ifzc*B?4`z3%*f2JZTQqW>BG zDB9n=75_(hf5Lx;mizw%^UdpT+Ha}(&#<|EY2NR=^IMBIpZL$<zDB>{Kf{Nh`5kgR zf7}1qKIZS5CwSqjzu?^(-rYYoF1`EWpJHbHL-l^2%Wu^7{?3x-F1fsXmap4|C1tNm zrQYw5p5iJo`_=g$Y5Z;bKkVB7Ftz^Bo)6}KbmD(W)o;kH-}ay3O6}}__BQ*i|GK~1 z_n+a{{^{>NhOe_@sgQerIBb^AKHd*YcG=Be=>M=fn*EaQty{M}=PG(`dD64&>XwPR z55gN5r8$&YJzS69wNpN^oIf?5W!ao7>n1JNII3CqN{_c#<<?%$>dWDKlCDIaeY5J` ztN8Wj<4-SqT+h2d_dkPh)_j>adjuczGi6kXT&kG)hqJtV@sD}2kqOt^TJ9;i^rmjw zW)v}3L(yDi$?CGR9NRLc#F}6H+Wwz`>+s?D+y5DE-T%;^QGaXxt@_*XIlo!rGk(|K z*mv;T-rwbw{~411Gq`;&-hcA%y|S9EJL6SnCv6CQ?iZnDcT!`iYT4y^+p}k$T=Hep ze&-5J?a$V&B7t#%iJ)l*maX6o3+L*;`Pi6(HY{X;M?F>7gQgvdLDLQo*Z(!S9lqTA zpX=57<Np5{JXbjXxW4!=KWO8@868kp0fa%_g_ZH2dirk}|2x^<S^wp7aU70$jW3_# ze@Z+A9jE_SQxH5V09qv!wEwB3{Fd~;llg`IGrU~(3^KGa^*@8giNA~O-^{3({-43u z+$3fHC&R;_i)?-cam{D`Vmbfz=5MUm>~s3N;^eM=c`yB=`Qd+tZ|n^=(WqSm&n@9N zx(4$%{by)$uHZi+FKeUxG3?iIhY#(YTjbw(Z~gGD^}&Aj_{=DqU8Q^11V%+=nOiZv zYP)Bc(<!ss#%Ph&Pp2C?nex}SgmbM`Su?ZD-WF8sAJnij{=ppjvFFzGBlFwr4Eh7M zewel~Q^ihV--WzAj*oc7kA?r!p67kteEP&F_v-TM64hz<)LqPfwq25VGmU%y>iU%Z z&G$5aRF-~JKl0DC+u`yb-;e%BJs)MCRd>0fcIAypyteyglNk^CK4s|6dtOr&<rlm5 z;f?FM0^x$3DPLb{%+2(!fBkDi#1G>~;eUkpKl*+&|Hl2p^33awAMVw5{}K7%ulwPD zG9P8)6!z}g`O)O<Ltp>HWos)_a+G83%zZuXdL-}MV<=IxRG9tq^qoHz|7T!1ak<pw zV}I)&`G@=4<z#;ZK3ct=@!shNKTN)CzN9|i^P|eHwyh@D3?09fO?vMitzB?L*l=r~ zrI)*uX>F-%ZOf1U3}$(D=e)Fxo_nh2<!4ImIrsMUdFh{VUS@vB?XM<Y|8?p9#Lwby zmj33+s^1)cteRgSa(S!CUbF0Y@yKk0my8c42RA*A-8%oUz==gFk;#|7bS&G{8T06( z%BS3etuy+UXDr%RZFbJka%%pXq`6Pm?b}rJM?dwJrs^WM4NXm3oVqmD>mbe3{cWv( zbgn|7hV9C}*!&0Erl&5yVf61~sXou1>0!5IKTavQ&Yzp`;m*p4j@_GgrF7=ryX9HC z_~<;HOMh4&=K9B8FSX{CcDb0Fy8ntP_wSZ%TQ_X)<UVb(X(zW#M%S5hM_3sqIfy=# zm$k|MVEx$rKs`fE^z|Co<V6v$woS;I$MEq@*!|RNTTJ(D_ug2Us&Zk=1h?G8&+jH> zoZWv@cOCDW+)UX+{lR)cYiq={>n^S?TCTQaeXiJgx69tK`D@oa%DeYHdF|hQc9O5> zOYKk0@3rIoaCZ8)`JFb=4}6Q=F6I1r@$h%(-E;G8436$|3-P^V)qC#LVoMdCSzl-U zEPnj_h=2e7js6GLOZ{=$eXUOFPwI#LhySwu4xjC_?{eNA<#ngi)ALmi$9S)B_`Yp> zc$$URmcYzw0Vh?CUR^tpMfY0$p{YNve$4(ZXZvIE!iwa><@@*Vyl5x)V)BiwuC<3> ze#$NnH`=p-<L-q!H*dbYp7UDfqGyI<$5(%re`{H-E`0L}%JQDM?JZyG>AYN_-t`h| z>(nn6XMHK>7pOnx@$beyxosOBAFkj0Y-RC^Z1MV6%cdW>US-jC>6k%LN|Ua7<gOia zw=MXbx8<V9CW-e-{dZq;Kb(K)K2MG42iN|#8tI2;xevujU$!~F@uij7e9_k4^)r>d z{>2z-Ey|mC_uK`eb4NaTuD$iSa7M?K!dCk>?y2$BvD@yi&b{^S`qsPaLPEE{s<{70 zMA*x>{+sp3W3$bV{Ab{*k=c6XZQ`a~AJajjJHZ~8A543s@vQC9t-sT*WxP{P-*#K` zpgA+c9OjSie*}`h?d^YTeq_IRMZUui%Ma$hAKo6D@oVbyBmK?$1h3XuKAgRJcV+J5 zcITaa{|>QF`(^R&+0HwvT1qpWmem|vzkL6L74{-~QXlZQY>3LV-#oq5J|mtfKI-nh zABW_HD-L^JFzMyuHfH(gTd-?NzR1N%DwE5ZgtH_jPE~IE&(M_rpW$Hm9{=B^e+sVF zD6g%t_)++fJJ#B1cDVO>{y*6lY;udWmmb~Yq_+9;$!QiR=4_m~&sAeZ<;3i-G5wrf z{Vb23eys>yZfRLuo75s}U9|etr0Lhx)gD(IDr*S}?omCjRv0>^ZnJF8U%CCZ)4$#T z9T|9}Cg4Z($9A8MKkQ3C?tgH<aZh<-_9N}xtK~(1%(Au275aQAYFj_Y%!WjsUbEfF zM#uH8Pr92vNp<q6#Q4}6&cDm*<o{j%<+pvsAM1~G?T>Ty58s;q&Gy~G#dp@;opiT5 zyLz%r@v@}Zf-#4@-Oj8!bHbyfG#+%!$6|ZX<{aG*o4=j9_@(}q`(Y{B{|x<K_Vb*T zk(%GJPySxkwSXJmwtF_ZNZj_AZvEtQPtcJ`OL$rTq<P4>_vJ7C&+uU0eR(^fe;496 z|GZ+ymLY#5p4+6>uh!UQ((S{(5C3Y199r^STukh(Ov(Yh^m*dNQfZI4CpK@dF8Ih6 z8f2r}wBANeO|WZEmY<eM^h&kcEkE<^vehN-TE~SKMqSnFzJ0P-{mJ$V-?cvU|Ij%8 zXZH8@{co24u?4LtbXi}%p8r2XQ;SA@!!CvdX?dYPOqG%^AInPZlWu!qb#tFsSJ|_b ztlv*6FWbD;(q661US@yhevW_V{xjSxtmw-Zh|Q9^KI@uQeET2El@<M=JGx|>vKv#E zJK7$<`6x5NQ{C`q;NBw~=hm8J-4M6mo_^T>M^v2LhqAe=Dw>Z<?e8*KYaF{_$A|N+ zrTGGx@i%`>xqLXe(rjUJuIb#pd(P%sMyAaaPVsxvBE8!F+no>hkJZamL_1&DCmdDb z<ZB(YyYSJ?ul5r6E0Tk=8RkU2{2n%|_OYYNyRwr-Ox`?RkC<gX9WTv(r2LO_d1d~` z%g!Io8b2(4z<>Cy)8o(&=k``Uj^~e!<rl8-)7880+f>h=`RbaN`sH`JCD%55PMYu6 z{bp9n!Zos!;<r^6_DJoSnLFRTM(pp#e{%mW)M@Ux_(yw9mUww))~((t(`Tvvo1MM> zruHJ!Z_^8lc?w>YWu-REo~=GlKyU4geYZQjzr_pxQ_a}VRwq@_eN0Yu@4vGj-nW{Z zo|_!H`%}v7H`}ItG`Z}#$uzxo<6_wrOZyBMEkr-GE&b2Hvf$(QBllb5IsY&|wytk8 zpC|f5enCbY>qhr|JFh(c_^mhlkv`We@$Kf{Cf!siGqRoER;D{?@0%jK1t-39O!zsu zT5tJp)~qV|H*<gc*Jym`sT2HgzwMuf^U7N_b{BI(-+Za(j*hFyJ9YG-fvec*i2EVl zzn6QLl&Zabs&HDTJ9dVYMAVE`As>aGE_*7feoJ@B-LEgpH*Z+-WYMjtdEY<OKh~T0 z@%Z83SGRQMcfDDg`)=07%SYtIul%tsiVc*R+8oft8D(Q}q^p&aXJKa;^XhfM5B@V8 zT&w(`ylwfVlIZiI_oME_n%>^uVH3FWN81x?B}Hz#g*KnoR5*5AJ;W5*)O5x_JR*7D z+PBZY+U2L$m(RL$?en(jUu5$0s|yx&X-`NedfsUF_2uFJT(9gu9{iudbD7hR`-}d9 zDq^$+Gd=Yu_g7T^J5_)9{$F1cFL2uvBggowf>z+lgDzscG*Q%!{RQ@!D)4$>^u^|q z`hR)~{xdvo|2L&+`GLQD>fgTpooQ!KllkNOLw%t?N*|Xk{O~&Z!}-JcQkm1N{%9}r z&HlT&viRXoliSue*6ZrsxOwWE@k#C5ho5O|Jus2Gbu#mT`yc%5MKb;~2>p|<n0#oT z!4*5%8oLii*SB9f{_yF)m5*L`ua!D==+Y(mH#eisA8q!S<gh^`?YGE>ohm2vK7I22 zmMVH^wWnT4Z2x)R{0Hlg^xxvO-;)2IA$`6?jrr~$$>od85C7$OB`4YLc6pEWk{^qm zuBKmFTX%TnsrZm92^Vu`x*jQrxGf!>oia_-yZiM0<@L$-%s*y(U;C&3<MNSv(pPMx z^^e9&9erdi%O1RQ%Z@8wc2|_h%6r}{xmN6-qf%M2b7>&Yr+%#rZ=(}&8h>|nsYY(i zu8+SY+CSCK?%&D(3_^e6Q$M~xxKDcf2h;n_`!mj){|=A6^7Zy=UH?P%nHO@lXzuCe zc(bhUKf~#+qj}-Ach}GOEa5*z!0-9N^*_|x|7h;-tP}sZZ1U0{(jFhXYkWSYch)4X zdpYfX`jtPP3tmlneL3>w=Q}#uy630sew(Q5Y+UK}jdALX!<_l6UaVjCpCM+mX!EZr zQaw^z*393tcmAgDTelyWw8=A0E9}|s%Gx-YJNK`Bx8wN%8g86$<sZur_XC0%-{Sd9 zeCrQZi61_(c>kru>P+3Qxz@qyA9KG5sqWf!a&_kF{7jX_Inz72T#L7vMEyS3rQL1! zD5k71{C4uwv)bG1Lq)DH-(6jAJo)aXl|j9x8K52#=K|PtDU@b>_@7}@QR|Pdzx@Ol zbU*5ynP>H%;i&AxS(pCqw$pgMpTj<_H#qFW+3(-#c9*YuaZ7c{#=|n#`);+ZO;1SL zB&;3X>*TuA@RsR~-%@vNcuT@=_#C$W7Vw{8(&yj4{~2z2ZT`=2#rkmQ8#$d1^QJ$( z&z)5zwtLx)>?pOZ*}82Dm*2m=^z7QddsYNRq;?*RR4z#ib7L`35pZ0;<WaV}tiP}A zH2MDwK0!u{KkN_xx%r`f<9`MjJH0=pKVD{j2oC-+@$r8K#yc<LKTOIJ-?e5}e%q6e zSJ!{5-QTiw`-UsGtgY8_?m74<y7O@6hwZ<tUUpqpJrsBBKZD~Ru^-Dna(@Hehn4+< z`S?HiJr`=MKRO?;W4!n$Jbgw)#_3i5sjLsSO_lN0y5Xr^Y4k>|w8{O`6Hh0vy>Xj= z3;mJ!D1Pv)`on7rKlDHB{m*dtEz{feU(WNyR74$%mG;|_teLrROGc0337^lCUM-kx zGUw0R`F`uA=BWm+l$zL;r)zC8tE_x;Z1Agj(=J?Gy;@HCx6Z!{QTN}*KaLGQ`ps<C z`?h_unN_LFrlv2+x>ZxQtM}ekmCWK5v*&-E@tf~=HSa{PHtidwGt%8N6jHuxEq-{P z`{h1?4U;Z=US3nOJ96DR{Wxjwk|y(ckJ9H=cCBDIsdLFwd3$)JWT$GU`RbU<qE7o1 z&-40EnzgCxb;{bZUnk$)FJCrIMA$pL40M$7Q}EmZ=qO{Nr?;x8x<g^z=Wp#lZvJQB zvOg$R9yTlekBXeiN4AyO3w~6)MfWRijdgnF(6O{>_Zop?s=IbhvshZ8tE;zM&_hwH zw&zmMt7lVJUJlP&GU-3Vf%zw^_KF87yk)tc+>G@^=ZE%b^-c93&fBw;_;a0I`JW;0 z)wX}N|F*CGJO9o8+q1SlJu-b(?|+5~lGFIN+&f=rKdJq6_qiJlN-JdV7N<>J7%dsK z*1Y0WQ07mwTQb6do~<H*F|6?50|g-n*O~u2F@Njw1AFbme(*1<;P(6xytM9m;g4sR z>?MBWyZ_)c>#a`DtStr|Yv-<YYjMPXhLoH4ypFv-pH_Nt_PKkT&n*8M|84Te_q}xz ze?+fsJ>Oo(_@AM5;bUoe<=^&)?Qc)Wn18GKd9Uh!2Jbl%i#|QdRQ=h0_GzxnhV^ax zB<c?q{8Ra{`rEV*?+@1t{o(!*{LuTa_mOM&q^^elld?W^{nxyH<-59j4*#|@(o>tK zru(m_!Q<U-hC8lxJ0ITTmJZfC7P8PWw0U#(Yl|w~BB#uimsc$fTB@lvYlTMa@w@YF zg8TXO0)xBq?tgn-yDi)0%jYk4yZ$pYbySo+KK7qsL;W#%-iVV)yUzF2$glj7?%wt8 zo3zIJQeCH8-rCxMI%g)XnS9ruM?<n9eX3iLtNh0I?Rj?m6>{GX*{MuA?)}kj>tlZD zidlz!s&Az1+<iIECa|_#_L7pJuKeT`k;W6xq`fjJ=)0YLs{X;cdd~V({hs-Jf5ey7 zU5R?$YGa?xwmaXxJum-j>t$0(nY&R(3t5abg=TxYOgLT^{-jSma_&Qe<2DiXAAJ8a zG{<lF{^sY$!=abz)4I>MOSSj?abM_LUiVM_qsu<^o!!1$cWn1$_WOK?JK|RM>YU^I zj4eZRH`UHJ{JEn>Rcns&iN~?~Gp**mll!t>V#VwDTQ5b{J<al6wlmuMUa6*O+^^i+ zufNy+nx7qhCjNtWe&asr4Sy%^6Z+%7YwN!2|5Sfme)z4wc=eC%N2KOn+qv$J?$x<l z&wM*wU8%D9XvTHP8Bs1T^EMe<9b0q8|MFIB$NbDbcx8%_OmOqoR~P*52Dd40`LiXe zQaQ68aY2dNLFm$P@FgX2^8XoFjt9#B5l;VB9l*f-;qu`I1_Sm#UT;_5(LQ4TU}pTM z-t#v<|2w(9-Tuq<+<4bE@89g8ajdWWf0YH2)qmgkWq(%gzN<+1x!EWwevmIezV-N@ zk#KnX1K#$t{JkZcS5(}4|2M^|zRmSaz?~Z>grE044(quadEoX!C5^Az9ZNswglYQB z_Q}=i&+zozcd>hSebMc*FX6cgD?e<h-YXIqmzangsz_{BexV=!-XG`96`i+n*^R7g z6Yk!QKhFAem%mg@w7=}pJqKe1RJtk_O_eF?mol1gisQ$BhC}fmeD;e~^gl>HpwIAQ z^Ks|Hzw{68Z@p0A9?<Qu?ef<dHm<9@6LXi}J#p>VzPYxWqK{_h7xEPSRI6Ncb=_k7 z^d67t@#z=i`XXmNGWvBt;;_lG$(~!5=A}IPGO4h<J3HiU^=gw@GY|Sk&eyKH{Ey|M z{$cwcO6QN}bNx6SE~omDzipqu>szMJwtNq|>%G2qzUR(H{b!jDg|=rhCZCp;wAraz zB6Lo~=RZTp^^W?3zV%O~=Wmh!J2_tPKf}v)&-U)y+jDOB`pFlM_^N7NKVqJmx~Aa0 z>&5IvFVb1FdMov>Xe{dbnVkI8|A+SZqw#HWqJO7;jpcq6w|n8sY4#uWKQ>2ZNBQ1c zxGY<2mV1Xu_@qlOqHo_3ZF=<V*|CeaPfeYuALYn%TBI{xy8a-SseaS0{<jC$WZdW4 zr(C1?v2OYUdFCvs^mf$?|77m}C_lPS@zT0dUL*G%A9*j|x_v9gKjqrDYZq<2F2!(n zrcZEtdhl2EKkn#tf08ck<IB+hkbI<G(#CfEOYwl$*B>9a$G!cd(yMI+S+{(QqK)is z)?Hil{;i?IBo*_pZ&5A5&60QJXa8q7s9<OOC+o-V-`?5tKkP8Qe`|B}zjGhX{Aajn z|6%SQ*$qD`AI>Ph8&!FG-|0g0+xmSc_VoU)SuyRq<Yzzo1r<eI3m@Lo+M->Px47Wj ztmW?x{X6?GWoz%{{|p&jg}Li%Rps?I@6*#<yY}+eXMgRPcm8K+I#G8Pd@@IdZuG<N zf3)@nACD6K*S{>=NcDP4>C_MZ7O#rqo~u@RN#$zTz08~iyDz`pn%l2-TDh8S?zc9b zZ7=S|{}Eh%c%SaY`t<n{F+V2x-(vkzn|w?-_D4uf=3a3*!+u|>viUqsPnpdp%HMvt z-_XrTSklvMqC(nJ`)v6iTK>n@H~eSV?qkogNB*~d{h?a3y~|{y56wDy{YW=Izw@IV ziEV0oyi<2JESz`Cz2MuUuo><Wa~5<qhhO~9u<<{`(fwWWlKZ6Mv*wG{3DzH){!w<{ za@DolI{!0phA!{;cQr$)bK2{-Vy9NjUQ!u+TDjm;c}Zcs;q1_J26N<{8M~J{2F?m@ znVMy^>apdi@Nb1HUe$O{d&ha`a?jSXz6;-qj##?xe)Fa5_TIJss^r#!u3uth`_C|m zcR~G4uMhnHmRXrXE=WQ<B>AI^{C@`JH~fF=mi}j0dgSF1T&GprDF5TavMTWq)+LO4 zt@eM?Tl&vx{x4r6@ne6*UxC_Ht;jnxFcu|Z?dnxkBKmqAD?ivfgZFV@T{HP;{hw6+ zx7^EXY_>i>RL{NDSN-Tb!=1lByozecRlPTL@v)a@%Ei7L+<3M5nM+Bh$&E9?hgY0P zGU_iE<$C{c*_HcCqW(m0ipz~%x+3I9)I0n|8@K{-6$xO+a(Ut&XDrSCw_m^11poWZ z|Lb%6e}*enZXtEzul_Tbi6E|_Lb~7vw2;#heGe?Se~i9e7S{~UkMj@q{}Fxe{iF5c z`y=zjujlTQc=1cU-Nx}zuW-P0-ydzWrtN>2UCa0EpJr)qwQseBxYwm8zP25^vS&JZ z)+S1_#8h_f|ET?s>*t5Z2j&_7s9qfPV!rTK>-~~HnqrlH9o;AMW7h4+i@DdmuIMk? zYn7e3>|MsQNk<oS3$B>rUaOMxdimXsFZ_RmRv(O0_;=^hp4dnC<$pXsP_=LMqujjv z2Y0RcCUz^Vzw#0PTh%K|o2s?FtH0gl+qlZ9+xE_?&N2_Vl!B9Tt@Hl~cO9zltdsnB zZ~I60NA;ci6n-Qhk*eD)-l>1xwe8irYo{)UZE5$M#+_@W?Z0ux*SpchOE^n>A1Xbm z4Cwe3zj6Q9zxA=ME9ZX*|HrlW!{tZzZ=QZQete(8e}<OkL&bj_KdhbJ_5KZi`_}9i zHOkoqYk1EsFPWC8Q}Um|NPD8(!V2BDc}iR6Roq?Fd$;O8gG~KFmpZW;+aJ>(`Lo}D zC1<eXqj;;{!^`V)OU^UD-nHm_weHfruWsBrnVYUszP;((GwWsBwq>Sym(EIa?c$tg z$L#!{p~>TizvB<fg+KW8JL-k+AHKGad&`g9M;iBhRZc$c=eZ@lbjzjuI}yx01qW-Z zna(f&JL&19r?WhtOjVw0YyVGT^P&46cJ6;@`R~F<_HX<DsQ+j9uyN0PJNeD^8TE&B z|1)qLpSu0j-EZ|9{(a7S`>+1&{`7aNQs1n5TX5yee+JGUo4r52Z{2dX-1*8I)3w4; zTf6=<_+Qb{6MA;--@Ooik&9j}YbNe8+O!M0^ZSW?`uV0?@o#Q_5I*pqfp3d-uhV;% z4}6V@56{|FfA`c|wte%qzI*CZCk942O<b9@YQdy}1qD{Wj^6skgJswC;%~|S8G5FC z-1Vnw&);XAt6t_W|6>^Vds_ct^NlxR&eqyEtG|_MJ-a4Y>%@_xnfVFJw4>Yh_Wn`+ z7XP22XW56e{U4f6|5ZLXEB?rT2Dw+T!$%*_{yp2D_k^^d{kI;!_vO-+w@bceENx|5 znO(5IJp9u0`Zqh~xc~XHQuEg_KL3yNPv3dBe3{ALC%g4u|N76+0Lp$RH$Vph7?5bj z_K*CJ!n!{!ci4W_^!NP@5qGny>iR|Y`AmAZd;i|HW7lkyHp-=*J)*gzclG{a(SV3L zp1M=B-oH7V{oA`n=)?TO>$~nVm-4@@7p@4>4XVE1YPI2`Nz}UD(p1r@$2#jwe%PJ; zyY-uPa4qYd^|EWWo9D}1x6A4I&#-;|*2O=1|1oD>n<sefPx!<6!mqxENrlZ^TT$+^ z_1b!q%y;V-Z1X<8WoKAdw1>~W)N^k{w|U--lnuT9DgB$^-v#wqYpWl{A6(B}6Z}#C z?djr&H@?~m-HzBW`GM}V$r&nL5nM~3cSOBhFLyNE<#)&@*Jm-ebsjk^3p@UWza=Ep zX1d|gL)*14TKx8NyOOBsx?+!RsoIkF^7n$nV>V^!-~06O-B(5FI=T8s@ssUc>>sTE z&%kAJzx)1%XB(4OytEV9n{8X}yt6svqgdChz3nZ`S=%<mWKVK<H*rgu+2q)mlg|yd zXCzI{W4^uR#C_@dgB&`0Qa_yjw)>-elWA|#G268B2fyooG(PxEp4DVNi+<DA8~QoH zzJ0mwzAcU`-HY?>R_ZQZvNUCT*c1glr`q-Z8CXGE{%2HV|KmLSpMgXEkIFu#A8Q}S z|A^Q%`^B#CKZ?6lqNd&c`1GgQq{_)hfB)_`+%scx@yRE?ji03Klm9dP&^Z6c^!bt9 z?|JJFb^KlYPolQnXL9hrt3MhatbgNc^f+as`?rc`pXZmnefFNSFG!QGE=HbR?fCNu zKd$vH(|G+kBhMACxN9r*w0YB%RBN}u+!Yp{XB|Hmt#n&9RoO41RWIAK<od7Q@0UOP zQj6sx#oMp3bTa0n+=O^l|IzV_|1!S)(pa>w;09<)9)_`WP~z@`>U<WAD;Iy+nE&Z0 zwEz06{olk6!|5NBU;Jk<sjdZGw3matlvnhj{0Hy&pKk7No`Vi4JRJWkbKClI@D|9Z z{|u*$?9=UktI0`$_CRjMHr(;RKI=b2U;KwN_M5IBS>IWIv;Ow{59@8TS5?gZZT;3h z?caspqD!{hxzFDCXYaqTyT7IL-n`98`2O`o-GzGAE&FeIKTz+plg-{P)w-_p@mr?< z42Ng6eB+yV*Ezp3S9Q;NVXIwh8dZ{(PHj*~^?2~}V%DqQV&@ruaQ<gt4g7Gu|Bvn? zS@$DnA9AnwQoUQ-Th{qu+V1j?>Ymr%=><Lg&#-yT(#;#Xo;?rQ-gPc}_H2vX6ti!W zZr?GUare(U=SS=Rh^rrvWBf63O-7Y}t4;l**}B^Q1inhOwzt?gDoK{^Eqm;_d;8Sn z%kd|6Z2ZKRFtKIxJ>6sTR!lFu?6z;d{U713!(mtAkIdSBRKD}q`J)ngZ`PUYm%pRe zEw_2m(j`(;_Xs%W^39o*d`$6LX^UF5W=yY_Q+!F-S$6wX^#@gI)UC4CFZ<*CWB$U} z*V}ekXPJi;Wg2;wug=`3vGb#k)lK0W9^DncmcD(x$76L`(A$f-fkE>6rEl_AY_+XF z9KX%}@O|-`<mm^dSsh!bwrzX4Rf)J!#`F&_ZcTl=VZxmox3c;<Htycj;#~afcJz6b zi?gjayjXUtP+tDS;(uI~AL1W}|55f`SkZliNnX5m>Xy^J{s(_uo1F78E>}!k=yZ9e zNI~>{kAJ>%J{!4KTY2(sKC4sYwo8uhZ_6M12j_dr;?(<(>@(PN(ZpULt4{C29_2#S z>EFy6*S>Q45dX^H#I)13DwAcsgVnUVcP?<QS35DmJx}q#hyFjp{0HKAKBTvQ(T<Hj zCKOds?C^oTU3Xse>SX2HKg>fXhg`aQqJddu^QqGX4vZHVr4HRpmf!uE*MD*LA^QhJ zu1a}(60s}S7qlyP`p5l`)n<MWe|YqIr)h-#`(*Fcwq}=39Tf!KRdISn&YQJL_fATk zw7q&nVD+hwN7@1|dCDZtEvQf3-&_USVQ}~Uk5$!>9R~eJ?9BFDz6;r5uyys)MVl6a zb{K5m)?n1hV|H=NS(UdYmx|&^KXEjE_r=ct3~5WhrheR;{`8i-?vwqqPOd)mCTd^8 zB5a3N!-@nD{gMBN=6cZOs?DIwRUg^^HNA6vJNCZnzJAgF3`#QQf9ux&XIPSWX8Om} z7yBU%(v_d||A<|GG_Cca{|)J5apJqL{n2Fa{F9k2yRUmeww?W!4@p1fD(~59UUs&$ z(1vxb&2;Tjk)mUtZl6@q*3mce*suAY;UI^}e}<N@`CIRI+&*BxdH>=5mRTo1)Sj3f z@!>ziTmICKLeHM@Z@cksTQ-MYYR2O9Pj~K!GWvMUJhMRl(*0if&FqKcZ#n-q|0kw? z_&jsP_ut}Y|DFHO(9-X?^=jSWXKy~&thY1&^!;byyW73D#VrpUm2dvfu<`sM{hP0k zY<?Zb_#^zo;{(6WUR@pOTmSGs1JBLO=|%_6^?_DqtV!0F$qAVw)Kxe^`>W03J_89k zq4g6qLcVRCv*gxXk3;XLsyyb}(DG=p=pV1*EWfaes|!O8p9{Sjy;@)OU-<7?Hu=8) z8JZd^vLD*NUHNhKp?ZlroeJrP&!#V^PdxtMF8h(Xu*Pq<IdgbEzxo(=*JE}4^EmI~ zjFbE)^Z!m-u%a?@{;K~BP1XM{R?UB_`*3~duRZfrH-0?d@@0NU)w<~q-V5K%<X?U} zyUJ_no&zp74euV$EH%A1Z+pSNcMmcT{!7z)`%+%YK8?R^|CaV|`G0i$+vl-;eE&^< z_TTyc893#dvse9XKYR1p&$ycWr|&;KzPnv|n_h8a-}*!U#4pzfK3r?<da>lStg`#X zx5=9}Y}mBjyE<D#8Gc}`Xs81h0|SHhv&}r$HC8q}IecMC_9>IcYCkQN-#l9MlrLgs zamd!EWmBK(<yA&`XB=8IZ@q8z{rFG+*2IDD<VCv&349$k#yzV~kZ(s)O|oy*cmD|) zN0Wkg5JdtVKzEk0O8jS-T=(Jo-zonY+V}sOl`-|**N5^S0{efOzvr*N>HnkpKf}sp zopJBu=EnaN5Bkp_>;G46CimmI?yp>*<Zo~Ow){Uso59~%rv4rFi5K+$9bEO|R@mM0 z*nfvEt=+$+G~3qtt$F!9pZ^T$+ne9kl}xJiZ|U6e&bDd?|E>IQwVVGg-zRwXq4wSC zBXSb|89LWZU3=@*E%lpq_m|(x+%<LE(rlfiSCS8MVxnB9PErqxJ<wNV^TPDZ&TYE$ zoIh0m<7$2=FaAfjJLaS8{@E-1SKWEJP4mMuS?@<`b02xEeYkB}uCwQCzm30L-_2)^ zbIdL*$xZ6I_cL`{nvQa2B|qnXhJ%?l!jJFYviJGG*Z#0yB0J3L`jHiTn3w<PJAC-p z*>jWY^Yz=@wu-G3y%ZsxsazSE6cTwN+sRZ>akKU7{muV4k0vg8rTNHL`%(Xqzw(cI zzL#&8THgQmy6fb~Ym?sbn%%2V+cw*;)==5t#Vspl)+v5$vnBa=MNgY=e_;Lxul1}o zsvpx@Yaje)5c~0;;jol{>z>d>Ki0cmSi5|~&JCAUFV~oYdK@=H-{q?AtgfD`;m&g} z=e<V8G>??V)0^{u&vjjS{pJ1-f%VP5=C|&NUe_<2C3Z`_xrF<?SZtQ~JlQL6bxVDv zE;8SFRTZ=8_NrIc3KzQ^tF^h~-aR`>qPwH!EPv~L&{~J?e^whmoSVF=qUmz%m6{We zwp{z8y*eXrx~H^Xj*9uV3msdTv)bN7oCtfl=G0vsx0}<F4@B1=)Y>CbC-$TLVE8}X zkN?&`oPD1mtDbw0d3v#JQ~e?Khi9E66nAXA{G{umT>jmgH?+>K*!tw~8^ieq)90MM z|DWNoSVi<daq~aw_P68|{$2mi(DI+*pP2dN=ZC-Lzvchoy8ofXr)@u@_nrSHe=qm$ z{_{V#zxjLB`CHYkhbv!S#hO6lZT>SH45$fSRw4Z@{PI`madFa*^c&W%fB$}+(7kKN z?&(XsSg&&F#1k#Ijx}e_I0SI2Fvi}LDmt^_rS^8v*$}hV->GY_{2f%2a@9_xg6-1b zLmMLEYur8_y)sYkgYUcreI>u=#;$pnH*wv~NUkVH-nB>1JdN;3+%_>WQavMaa`l7u zgL{o1=pXKm=Y1J`|K73b;j^aRefxRw-K_HK(}UyU?w;NlWICyOb?38`PUTLXrOAC3 zhZcRP-`w81)xR^&?&?3oAFKWLUoy2VyZS|+`^ENa??q<uHS<0>FM80kVHWpZpW1n^ zo|$<_3dvgC%BXqGHqAd{<uT8|rh^CHyjQ;$9ev3>vpmn&Y}Q8E+6Rlew9mp9nu4k> zZ1^MpP3M2!=ii$DXGqmL|DPe?Jum3~=ekq!pW^B>_y5)mtN+zrk+pZ<zW%Oy(B77~ zg8vM^`aMqdANm{r47AmDjwxs}B?|t~x&Of&d!GLcTfb(X_TJwerT^{T%IY<Dqh8z> zs|jBk@ps*)XVI%yCU4z#CAmr8=uu{hwv^Vpi5<+Q@4keG$;);ezJDWRivHf&;oGaZ z0{u%!xtOu!KSS;_`!9m_fB52``EPC~=~hSi+m-!)S^WPqFi-#44!WW@_qW`?V|J21 z)_<5De%16pgV>+4{rk3l+~2(=V~M<!O(NfIZ+@YyGP8}3Y<(SX=H_$dDHrG5IXYvr zd=QpnAJ^0$w5xy8oc*8SThN|b(7oE5<L<{h9-X<(YF=f}a=$HCLZdoW)h2o6oz#9Y zaVm%FrS9xSf3V(3hV=x=yD!$y|9AUL{R^e~A2R#F_n}$%-+cTn{e%0Pl@Gel^H&JF z{5!tk%2)5T#evhZPj~-*8y&D~!pXwQ^75ijF|je$36g0O?`J7J&(i99*QMRIw`%Gt ztF23(s;|zyyZ!F=)w(KECj`2RPC%KA0Zl)O1Ug963)N{<WIs6Hw7$msF~49&oydoG zvp2u3TDP%Yv~}vbpJFDkU9m=PkyH3QM1L6m=Dt~@wd?O{JMp_e+P@Y42wwZgb=SwU zt*3u{+@D=*9DYr8cdc)ntXDS2`}uFbpPun#s*-E;%B!cGg-&f){@(t`{5CnMA7>w| zzRz26`0y?Hu0Pf*bAHE7T@&G2pIW-fb)wCQ)G+tkO3FRWZK28&cq{j}g6?X!-~7DE z#(Q~ol>UMF%~fuj7vFWSPOMLTu-5F}vr`p!Y>Hi#oFrA;15TZC3}R#vj9>XdUM9gv zX18SfTCTpO)!K(j6(;qhOucKhWzM?idKu^E>0P{B{V{37rPUT&v-MT}GnkydzqS7; zf8#&V4<U9^KVCl4Z?(#AuL+;8?e+2Qzxlk=Hh!yAn((&mW0UVwkA&ieGQ*w^WwV~z z$^X0mkNwB%-?2Z^56JWGss8Zz_%GY{&0p^eWCvH&M{mEHS90^Meo2O|=&XBb5sRnl zzdOmdvzY6xf^yrJe!8{jo_?6IXOd*OZfRKPrMZhMeyeJ#i)z<|dr#f>sq4kWEmPfX zb#ra~-NCJu)cRBA_UY$;tL>Bd&u}?*D|mcdSo>e#&fj+RH%&i0|2OOH>iN8&X0rd^ zx`qE4mL##$wMYK>eCz%P)9-Wr;eFU^?sCzTzgNnxcX8Cw<iy0}kF$@NecNXCQNiP3 zm&sM8<5EhiR;^%kU|?Xa<#jE6xbepvt8D(D0Ke-`bK|aWee-qe-MtY@MZRObJ=Yz} zU5H!XeF=9*zDG9Yw?!FN-Eq;si@@cO@o(Wji67hB{zQMg?e|f><&WUnY^%_lKQ2Dz zJi7Mo-j>hK>eJPho%o&NY8@NtXW%F)`pp;H-McR={LPMsoHr<W6*jwjwXeyOTbXBL zO>2XV)^n^X$}CAG_WoVa4c`A5kgxErorB{F?^SY|{~4O%YqUR}Z!^^uj=o}Nl5J(S zIa{~)Z|nDC`4V@c?nj?$RcVX3AEK?2*K_LBfi{*V4%08DBG)Qsx-Q!&>|0+K|BP>r zwNiWQ9^GXX(ubw;Iu~VLL&R6!G<a+=2AQ~qh6XS-FfefKcNKl+<>$NY-OWT-ksyXe zT^hJB^AUS2$Df17d{|BYGfc^=yHNklx5oWH!?NA8zWw@T6aJ^8;QrTN`~OXBH;O+x zebJvAfv%#T+ZMWt1c0Y6z&eSUA^K8-GDCD)@Q-Gd{RzmR6lhM90akTC`Dgw|;KTE` zq8}c;K2)c(ZU3%|>(;G#-?8zk-j>}f@^tkU?%6g=dv>JKJW1spO_HLECwgdD9&@c+ zjwAWy@|+fTk~`NL>1Mun%B=9R-J7akZ2jc2!}Zn0huE$s!FurWUeWEysW=JOJ(_#A ze>?QIr^fih;)i+@S7pfQ{&<^QTl%=3<He;DbtV;ua<5JQr*c^*Z}E{?vl;i@dX#d9 z?dkoUUK_&XQ$QVT$Nf*5GvvPo?O_JhoW1dmhbp&OEvsx^9<=37Y*glQwab24FIT^s zIkmzyc(V6mZEPn2<I0BTky{PfZyw^f&N<+t{2!tF583-le!Q{q=RdMv^2O=W{7Svv zNA+EH8rMszpEs4vQ!GxdT;ZKtEOlDSe7Z?qPe`iAqkV0QW}P?I*m6xNbN&0%e-2)5 zPXSHWr6TvnuvMxcF?pT3gYsMMAI|To-%|coHu0f+M;yn;&~Hm0cjsnZy6=8HH-G7_ z4gTCeimtwU95J{1z;=!gGZ{2g!ko&Pv|m;IX$M_X|DWL?Q_1|BtG})KadgG&c#%J$ zkEG*S?({RSv10i(z4=|fT&=asHP+j)5n0^&(-yrrlsjXSq3e`6t)YK8|1-4L{NVrB z3_5%5!{;Bz|1(T0{cYbR>CX1Bc&od{ne6aID=uvL+jO;BLiOX7rMgLr)!${@UBB@8 zgH=hYeqR+P?|%LK$;`K3!aM2@@2g?|&)^8!iS(oLPx60;(^mEm@7po|XIKE*+4RTe zpW%Oor*rGdzvi_6Ys#*F&{6-{@%q{DpW*lZGo1MLOZx~m<?<ii&u9G4aH0Nj`#-sQ ziT@0r&h@WOvHv0*{hxuw`9H%f=2`1Mt>62fVd69U?eT}+cl<j4cK?U+NBoCp%L`;h z?LYLMq2h7K_R9)0*Ov5)#d+GdCwDvS-=Q<n{o4uG%h6lbZ<C(wkr!oo>5@nMk@_Tm z(LWVG;y=uOVBY*Lcc1zTse6qJDwtg^?Gd@hp?>Js^!EP@n@Uoy>u;^~eKT`SskeJ= ziR$WCW_|JA8{;?mq;pq(eg4P#`GNW`@;@H_XK0^)%>K{j#s6eKKd}GB4_d8z`21t} zf05Tt&2w6O>Z54<-vjOc8BDmoR_lX&@L}2hkIdhCuh^+%%2{4g{;~g&eD^H%LwnQC zAFcA+{=ocFjpYMgr|+>JCSG}4BK_h^npFSfY__$kE5okc3tZ-KQuf<t+3Pp=fAF#I z{Ldh?PxBAU)pz^U&#s8g+Ew47w)t|NsjYO-WmC&H`_ATSWG}2<^kPva%cnb9Cv%q{ z<)5-)VP;xirF1ohYp*kYJpGSj>TipGm+#-K|FG$g=41Je`Wtom-^%}}+!x&AjkteB zs`+R2pB>+GkG<D5p1YVYWJjIXdBMo~I~?_&9pcufe&7GeO8(aN2isOZ%D=7sE$!pd zrN?_rz5V$ru6>eTYj^j~i(9&T=81mP@~k%r)L`>WpLXnyZ_zm=C5s22qMki|E2sFM zf#vWI=gJ55UGY4rTR+Hm*eE~B<$oA^Z}P{(A$vX?z1IDofiu46RxZ!s^5SX}!{r@% zEYtoe6s~Yoy`_IEt=@wBO6K0}56k}uwLiFi;6DS?jUUkm3;qOrXm2aoZ~Ugpt@C62 z(W=_k<ujGN)u*#qO*%GvNqO-Wp3NI=CS@<cl3PmlPIJzSUvuq0!$E=1{~1>F8|;mL z8ejdNLHYIzP%{Z5dzE0zD92yj<p0Y8Hsn9Uv&PS%|3bg-2VHvok^e{e`G)@tFYG}_ z2JzeX)c;I(|AUdjP_#EZTm5JC`}!x<wSgb)JHOm#`H>%ZZR=XM<DM74bZ6@4uV0_; z4H~y{`sAzA=d>iFD{^KB1L%PDer!&AT4z;%P}fHEWBr5aJvFM?kM8$GrC#qcvA(M$ zefoY^oc7hVYvmr@eH59xd3Nxpb;&^wXGz+5GHBf~TsKFKyX|?$a;_h{E;dgJsyig5 z{p!oQd)=|Zb^b}IR@ch9_OJiL@SmY6>QBiB|D*pIn)c~#`7pnyM*C6sTKz}-J^A^H zmrS#(U+OCC`53p^cFrXozoW|Y<nOthZB(i`<?(Fa%=PEy|4?iHBYknfzk~80X8mW# zs|o*jyyri|L!ICJlm9btyj!`ZLi$a8`ftDY=D)3j<+JWSUw7a9Z``rl|2D3ERgW3C z@u82z<eO8ERP5SmmKe2_^ZY#Hh?2?0UO{1Vql&(#Je5t9-Lh+QMWSlQH^Wec$+7zX zJpZL{zX)m$@csNC|CjxrMg7C)AN&6^=)Ay^TuMLA4?9u+LT&p$4p7dQwYge9wf6m= z{`^IIoG~&U=n#H%Gk<M!{?FiOy8nZV{m%uKtNt@+{k{(x|Ep-nOcj_0A{D(3#Z*dU zqK~kZ(U>9Yesz=lFHX>+X~q8xXBnwi@RL&e$Rme7yD1r2)o$&C{|py=^Zy9)|I6UZ z+J9=__kZrhCxDXLXvO~w3ufK_p(Ow3f(&({fB8rGNBM34_$u_iADO5Bk+1z>Jb&hH zyX&j6#Xm;ejCwyY+21HLGSJ-PMYBrkOou0ppybLj`N!;s`#a}<@IBvD|Dms<-T5Q? zALW1S7q-L(|2F%lz5mVaA0@lvtuEE;_D{8`o?epQ9(!0JC7l0vcKtya8`a<8|IW-) z`@lBy@&2xPGW)LoJN-1v>UjSi??>I*^=j`V&(B<bFRRYw_cW!&^>@<3<&AWU_J8oJ z|Dl-Pwm)%yQ`GvFt?N7O1^2|4u6RA^)$7Uy70cs3#BTBU_U$9btaFEh1w9oErWu=` zJ9yP!aBb~9Va|ixErxQJjn-_Ow4PlmKK$zC7L}drR#{c;niO?4=zI9i^zzf1Np&06 zvYt*~`)mKyUuAZ0iOf~6AELyn)y`p%ufE!MfDY*}|4@9ee4on4`i>HNt{>IDH^1!- zj@aLI?9}y|ZmG)2UZ*;Dxw}Xz>zra&0bQ1<GXKbZ-akJ78JhBHg#R<N6d$pY@34O; z|G}<x(X074w||WN&yaTi@X}j9uTB1$Q?v5%o!yITtlmj7EA6Pi9sQ5v;Y0mf`@f}p zG;c6DFZ(Ct!_#m3zr||@UbCrv6fY7P{nNbQT+La#&%vM6?`#y6{`c5u$Ipq`Qz2{X z4|3a>{^tE7bhSoxZH?!T-bcUJy2nfpk3P$M)arZF+ePl%w|BT)E0dbh<;mExapt}< zzEu^y+3!Bg@Z*S4?D#fwYHH8a3X4m>_N|+vsCu?E@bc9wldi3rzH9Gk>wS^l!e3i6 z^rCI^ul`wodE@t7VoR-fPNXu^@hYO!`f~+zz26_^AKM?vci3;`@3oVzs6QsBGd=L{ z+%NZ;mbbp07JB(l*!1uF)VxpXesDUyDs#oR?S`v5=PsQ0=w^~o{9%*$IBXRzwpMVa z-!y0T(oR_6$&|PHxAyz`Cl%t|b>{yrZIc)J6E}}<)5rEsJB3?!f2=e8V7L9D#hX3s ziA!(a%IbZ1`nGM#?c3e6PoI4F;n#WoZ(E+)Z#8AeeY>YAXOH{QeKtQHKD6(O7ygs_ zVR`tEzmHe*Mtgnm>s<X~_c2hX@WZ*?%OVe&cR!z}Yj(|^+j8fpcgrsY-m(?@JI&TF z>6mI@VdnREB5I#&T{3q2pDC?}RDJcadD>Us?EC)Dt^bYm<Mq-to`0v<Xs)Sow%!wM zf9uh%vP<v3++5nFee%)v%7^<lUVbjln>S(0`ft(^OQxJuF*weBWbuLe{QR58AK7>8 z&$usA(f{!5^Zu{;Vn3!o;6Gx^eE7S-E8q0QhkL`^K3ur;R_AHF7PochI^|tEgirlv z$e1|wyHDblChOYwz4jj*-`_0$HtD19zTF?i57;Sw{I)$aYnwopobt!-9b2PU<X*jd zO>|oI_tYMnNd^uDJUxYzitqpM|HnD|!|nrdVwX*H`942p>s^$wZDT~{uiEyb{~5%i zqi#eWX;f;{m>dk+1;1*=0`OgyTz!s`#qPq<mv1=#XPCu)7TWuHQlB8tT#<eFzT7{x zSM$04$-k24wd2W>VsBqt@>cebaQTDTku{FI=QiD%d!{P%>fSZ`l5hDhR=(R|=A+nU zs60E&W8YfhTbna4oJe{9mCP#W6-rSl53fRBKllHkoenBJjKQTx&VPoM$w#c@+y65> zRQO=Gd(q4KTj3w0>NDfdF1=f6Hleb|=H`=Ix08K#=UT9{ZO4}CEBHb8=Ws+mTz`A= zgK1MA>PkQIKa$UJH}lq$sNHed|1_`f$;{PK-Fw7Mb@To!X97?79BeuLd4*fxk>2>w z17Ci4O&3UbomTPc%8ElvQZ=nOmn{0Z?`Y=f(p*LLCyAY<cQrL!&GY^<d=UKBf4IMM zpY)I84|eMdRk$CqlJDAMyE6Z`+RDZEkJhG^ZgT7WvvX0J`)wsF8R51t_6e?e;m7B1 z^#3Dx_)z?&_BSUV&S%J)XZ>U4Bk#A&Z{zY7FaGiS$UgB+J3g;_Hm9<xcHZ(Qj$2c? z%4)xb6@Ru4Uxh8(fBZaWf9s0JuP+`*&JI~DdD5xwkoGJtU$?NS8C%av+a`;z+vxAQ z)be_PU!dph*!l-@_g#r<^Ie~fT!7V3r@=v_-4~Ip9&K-$443w%ME!@b^Pv2a{-1&6 z4rr?#r+P<;J^z1(Lyiw>%Uv)1XV|j-(UyOg_Rsd-^(j~3vqa_QlUuhPn^|_NfRDGj zp47}%6Z@Y5w3eYstRnl{lOL)}E4<x)O#Uc+$ULfSr`Wpdv;H%5mA;pX_Ug<p6zt4- z|J7KeNZ26J=+7&`DTT`6p}$4`Gk{yH8g*ypNq%5k32L#b?7Luh_1P;c`~E%N539BN zt=?rGpT7L&t2!6yuz=<1_fymDjkng`)8{<M-(v9ZywRGE6W5z-#fM)Fo};vL-7Bps ztHP+zqVMx}rk0+TOsd=Pp7nI<+FyUKzrOLCuZy^D`}!7?-rOsAzn$2|3GKR6Uq74w z5!HUYys1v0M)bqf<=r*O597J-X3ZC<k*!YWTfaK`#>sNl`CVT!->dbemg>t0{QDFZ z({cG(61(YDY{lEp<bPc8{~6f6WY}-t|3@+Y#(dE~g%9rkaQS!ldHo^RRoQZuzteBo zo!x%w-^DBEZ<hV!-F@mmL*(A_`qfdt?fDD-NXsc73O!fMbtS{8=F{xM%O*D!b#2kQ zGJUVA#7oZnwNr0BJ9=91P0GrHX20V9T>5kVLO)N%eBY1T+rGTbcDs^OS}PyEt?%2h zU#CiTY}?!9!Y^~tqh<B67YC<Knc&DG#2dGM=04W{44{#Y56uszH}6p`2aR+rz25r8 zT30Fiw0>8d_NCl)_wL<Q%1qka9{g$T;-uDT68}67a_!Mrw;H3Xef`v9gBWujSC4?B z*QSWf>i#BhHQs$~$=9e?lRrgEA1j>|-UYe=oaj>A9HsZn3hlhxiA;WQ|E=@~`y+AE zS85m^%onJ5{yY4!|IzauQK{QIxR2*P)Q!!lNlssUOJq{Swv1ofZ{<AiJ=kXPJoD~4 z`QKiQ{OkF9|1(GmyI)bhxF_=C@5mo+rm=dq!H?M1e%PAxPa)%8>becrH{8fr?%HxU zdg&E8=^pRD{lzU;w+cU-zj@0vd$<1#L=OCxSfudRxW<F~&Hr}YnGJ6Ixj$dl{IUGo z(jUwpjyrDs5IVpA?H=R8RX?^Lk@8!<zCt@({GY}Zy*=sc?}%M5IctAtSMMFO_i496 z4|J(ql)WCXL*UdC{*85eu@66g;{VZp{+s)MhSsJ3892}X(faHDPdNW={M-9KJnSEu zePsW({#*Op=YKc9wa@!pcky}M=d*YB*Pos9IXI}F|9p*W>VJj;&{zfY-ni56>z`Ck z+yC3}UXAVbJ*AnC^Z6_OGdxN^wDiYcw*8MouYIvzFXH>yR?ENLEbMf-+H4lSQt8r< z+);w8b5}>-^3GbOk^6At5&5wH3<s_EsIU5={Vn|R8&h5LfQz~O9X76|5C58dy8Bk; zvW>mn?s~KC9NjtEH;;==SDliX@lyKMA{Aa4U%}pBjAVvoi0Gx?JZIH(cwd3Biqs*B z(&;E^jTv4nfo2;~_di|1mem#iGc;BHvG{lO(z|!>{%K{~-?%k*-p1VAH8sH>-BzZ4 zTkSpL-P$FSZaoi}Bw4fbVVA=uWxXdsjz_B^ZFAZg`xo|o`?~baa>?5_4#rROy!D?U zqHOQlYU?tkMXNP-+{}Iko-EK<v`^y&%EA<+)4wsr*H5xDtv_h>Pq0Gx(YC!GE&g!* zD17`@{iu2FiXZ2_<{vDJTDMm8aPpaJCLb>B+3Zoc>($AkJcIP@@mqgxcx89bb^3#k zQ=dAEM}>U(UYW4$srG93dvi_Jtxvo6((TsW^su6?J)!>@*1J`?zghU7LG}5!+5Z_f zO-=vLu%f(e_3hVB*2~wO+P~@E%!m8=wm1K0NZ;QOXZ?}A@9n;;53PCa56yDFxwXQ~ z?QPw6&wQoB%UvcreY)FPz;a<prp@Qux6i(szw!MW-v{$=Tt8fO>PNc6hjp_b@r%bS zTlmQOFTdmVi@EEcyWEs1xOMo`?ORSQOAOu>E!cfh<??CUBlq2p?8w=)l(nxnYvRh& zesdJ90{iVZ^<;YauDVp%^`vUY?(=v0&2>GUrHp3PYzw=(z3$hy&%d|6spb_4jAtqZ z%}|ZvKnI!i4Rstp{2%6b+PJQ%sCU|UX{)|i%-{7P^F*!J$=6I0U{rCJoRvNEOok}W z_wwMWMt6Kw=7x%d{pj({ak(4yxoGmH-MPC}CS85K$W!m6ipr!g4~<1#2XO8D1<x<T R=9x!n$b9=S4+r-DHvtQ261V^W literal 0 HcmV?d00001 diff --git a/CircuitCoupling/RLC_circuit.pro b/CircuitCoupling/RLC_circuit.pro new file mode 100644 index 0000000..ff8fae3 --- /dev/null +++ b/CircuitCoupling/RLC_circuit.pro @@ -0,0 +1,365 @@ +/* ------------------------------------------------------------------- + Tutorial 8b : circuit coupling - RLC circuit + + Features: + - Electrokinetic formulation coupled with RLC circuit + - Transient resolution + + To compute the solution in a terminal: + getdp RLC_circuit -solve dynamic -pos Cube_Top_Values_ASCII + + To compute the solution interactively from the Gmsh GUI: + File > Open > RLC_circuit.pro + Run (button at the bottom of the left panel) + ------------------------------------------------------------------- */ + +/* + This example shows how to implement a circuit with discrete resistors, + capacitors, inductors, voltage- and current-sources in a transient finite + element simulation. There are three separate cubes, each with a certain + conductivity. The bottom of all cubes is kept at 0V via the constraint + Voltage_3D. The cubes are connected according the `RLC_circuit.jpg` schematic. +*/ + +Include "RLC_circuit_common.pro"; + +// FEM domain group data +Group { + // Surfaces + Top1 = Region[Cube1Top]; + Bottom1 = Region[Cube1Bottom]; + Top2 = Region[Cube2Top]; + Bottom2 = Region[Cube2Bottom]; + Top3 = Region[Cube3Top]; + Bottom3 = Region[Cube3Bottom]; + + // Volumes + Cube1 = Region[Cube1]; + Cube2 = Region[Cube2]; + Cube3 = Region[Cube3]; + + // FEM Electrical regions + // * all volumes + Vol_Ele = Region[{Cube1, Cube2, Cube3}]; + // * all surfaces connected to the lumped element circuit + Sur_Ele = Region[{Top1, Bottom1, Top2, Bottom2, Top3, Bottom3}]; + // * total electrical computation domain + VolWithSur_Ele = Region[{Vol_Ele, Sur_Ele}]; +} + +// Circuit group data - Fictive regions for the circuit elements +Group { + + // Sources + CurrentSource1 = Region[{3001}]; + VoltageSource1 = Region[{3002}]; + + // Resistors + R1 = Region[{4001}]; + R2 = Region[{4002}]; + + // Inductors + L1 = Region[{4003}]; + + // Capacitors + C1 = Region[{4004}]; + + Resistance_Cir = Region[{R1, R2}]; // All resistors + Inductance_Cir = Region[{L1}]; // All inductors + Capacitance_Cir = Region[{C1}]; // All capacitors + SourceI_Cir = Region[{CurrentSource1}]; // All current sources + SourceV_Cir = Region[{VoltageSource1}]; // All voltage sources + + // Complete circuit domain containing all circuit elements + Domain_Cir = Region[{Resistance_Cir, Inductance_Cir, Capacitance_Cir, + SourceI_Cir, SourceV_Cir}]; +} + +Function { + // Simulation parameters + tStop = 10.0e-6; // Stop time [s] + tStep = 100e-9; // Time step [s] + nStrobe= 1; // Strobe periode for saving the result + + SaveFct[] = !($TimeStep % nStrobe); // Only each nStrobe-th time-step is saved + + // FEM domain function data + // ------------------------ + + Vbottom = 0.0; // Absolute voltage at the bottom of all cubes + + // Geometry of a cube + w = 1.0; // Width [m] + l = 1.0; // Length [m] + h = 1.0; // Height [m] + + // Resistance + Rcube1 = 10.0; // Resistance of cube 1 [Ohm] + Rcube2 = 40.0; // Resistance of cube 2 [Ohm] + Rcube3 = 20.0; // Resistance of cube 3 [Ohm] + + // Specific electrical conductivity [S*m/m^2] + kappa[Cube1] = h / (w * l * Rcube1); + kappa[Cube2] = h / (w * l * Rcube2); + kappa[Cube3] = h / (w * l * Rcube3); + + // Circuit domain function data + // ---------------------------- + + // Resistors + R[R1] = 30.0; // Resistance of R1 [Ohm] + R[R2] = 40.0; // Resistance of R2 [Ohm] + + // Inductors + L[L1] = 100.0e-6; // Inductance of L1 [H] + + // Capacitors + C[C1] = 250.0e-9; // Capacitance of C1 [F] + + // Note: All voltages and currents are assigned / initialized in the + // Constraint-block +} + +// FEM domain constraint data +Constraint { + { Name Current_3D ; Type Assign ; + Case { + } + } + { Name Voltage_3D ; Type Assign ; + Case { + { Region Bottom1; Type Assign; Value Vbottom; } + { Region Bottom2; Type Assign; Value Vbottom; } + { Region Bottom3; Type Assign; Value Vbottom; } + } + } +} + +// Circuit domain constraint data +Constraint { + { Name Current_Cir ; + Case { + { Region CurrentSource1; Type Assign; Value 1.0; } // CurrentSource1 has 1.0 A + { Region L1; Type Init; Value 1.0; } // Initial current of L1 is 1.0 A + } + } + { Name Voltage_Cir ; + Case { + { Region VoltageSource1; Type Assign; Value 80.0; } // VoltageSource1 has 80.0 V + { Region C1; Type Init; Value 0.0; } // Initial voltage of C1 = 0.0 V + } + } + + { Name ElectricalCircuit ; Type Network ; + Case Circuit1 { + // Circuit for cube 1: + { Region VoltageSource1; Branch{ 1, 10};} + { Region R1; Branch{ 1, 2};} + // The voltage between nodes 2 and 3 corresponds to the absolute voltage + // of the surface Top1: + { Region Top1; Branch{ 2, 3};} + // Note the reverse order of the nodes in the next branch: it's for + // subtracting the bottom voltage. + { Region Bottom1; Branch{ 10, 3};} + // With the two lines above, the voltage between node 2 and 10 corresponds + // to the voltage drop over the cube regardless what the absolute voltages + // are. The current between node 2 and 3 corresponds to the absolute + // current flowing through Top1. The same is valid for Bottom1. Due to the + // reverse order here the current has the opposite sign. This is correct + // because the current flowing IN Top1 is flowing OUT of Bottom1. Note + // that in this particular circuit it is actually not necessary to include + // the bottom faces in the netlist, because all bottoms are kept at 0 V + // via constraint Voltage_3D... But then all Bottom faces have to be + // excluded also in the region Sur_Ele! + + // Circuit for cube 2: + { Region L1; Branch{ 4, 10};} + { Region R2; Branch{ 4, 10};} + { Region Top2; Branch{ 4, 5};} + { Region Bottom2; Branch{10, 5};} + + // Circuit for cube 3 + { Region CurrentSource1; Branch{ 6, 10};} + { Region C1; Branch{ 6, 10};} + { Region Top3; Branch{ 6, 7};} + { Region Bottom3; Branch{10, 7};} + } + } +} + +Jacobian { + { Name JVol ; + Case { + { Region Region[{Vol_Ele}]; Jacobian Vol; } + { Region Region[{Sur_Ele}]; Jacobian Sur; } + } + } +} + +Integration { + { Name I1 ; + Case { + { Type Gauss ; + Case { + { GeoElement Point ; NumberOfPoints 1 ; } + { GeoElement Line ; NumberOfPoints 5 ; } + { GeoElement Triangle ; NumberOfPoints 6 ; } + { GeoElement Quadrangle ; NumberOfPoints 7 ; } + { GeoElement Tetrahedron ; NumberOfPoints 15 ; } + { GeoElement Hexahedron ; NumberOfPoints 34 ; } + { GeoElement Prism ; NumberOfPoints 21 ; } + } + } + } + } +} + +FunctionSpace { + // Function space for the FEM domain + { Name Hgrad_V; Type Form0; + BasisFunction { + // All nodes but the grouped nodes of the surfaces for connecting the + // circuitry + { Name sn; NameOfCoef vn; Function BF_Node; + Support VolWithSur_Ele; Entity NodesOf[ All, Not Sur_Ele ]; } + // Grouped nodes: Each surface of Sur_Ele has just one single voltage + { Name sf; NameOfCoef vf; Function BF_GroupOfNodes; + Support VolWithSur_Ele; Entity GroupsOfNodesOf[ Sur_Ele ]; } + } + GlobalQuantity { + { Name U; Type AliasOf; NameOfCoef vf; } + { Name I; Type AssociatedWith; NameOfCoef vf; } + } + Constraint { + { NameOfCoef vn; EntityType NodesOf ; NameOfConstraint Voltage_3D; } + { NameOfCoef U; EntityType GroupsOfNodesOf ; NameOfConstraint Voltage_3D; } + { NameOfCoef I; EntityType GroupsOfNodesOf ; NameOfConstraint Current_3D; } + } + } + + // Function space for the circuit domain + { Name Hregion_Cir; Type Scalar; + BasisFunction { + { Name sn; NameOfCoef ir; Function BF_Region; + Support Domain_Cir; Entity Domain_Cir; } + } + GlobalQuantity { + { Name Iz; Type AliasOf; NameOfCoef ir; } + { Name Uz; Type AssociatedWith; NameOfCoef ir; } + } + Constraint { + { NameOfCoef Uz ; EntityType Region ; NameOfConstraint Voltage_Cir ; } + { NameOfCoef Iz ; EntityType Region ; NameOfConstraint Current_Cir ; } + } + } + +} + + +Formulation { + { Name dynamic; Type FemEquation; + Quantity { + { Name V; Type Local; NameOfSpace Hgrad_V; } + { Name U; Type Global; NameOfSpace Hgrad_V [U]; } + { Name I; Type Global; NameOfSpace Hgrad_V [I]; } + { Name Uz; Type Global; NameOfSpace Hregion_Cir [Uz]; } + { Name Iz; Type Global; NameOfSpace Hregion_Cir [Iz]; } + } + Equation { + // FEM domain + Galerkin { [ kappa[] * Dof{d V}, {d V} ]; In Vol_Ele; + Integration I1; Jacobian JVol; } + GlobalTerm{ [ Dof{I}, {U} ]; In Sur_Ele; } + + // Circuit related terms + // Resistance equation + GlobalTerm{ [ Dof{Uz}, {Iz} ]; In Resistance_Cir; } + GlobalTerm{ [ R[] * Dof{Iz}, {Iz} ]; In Resistance_Cir; } + + // Inductance equation + GlobalTerm{ [ Dof{Uz}, {Iz} ]; In Inductance_Cir; } + GlobalTerm{ DtDof[ L[] * Dof{Iz}, {Iz} ]; In Inductance_Cir; } + + // Capacitance equation + GlobalTerm{ [ Dof{Iz}, {Iz} ]; In Capacitance_Cir; } + GlobalTerm{ DtDof[ C[] * Dof{Uz}, {Iz} ]; In Capacitance_Cir; } + + // Inserting the network + GlobalEquation { Type Network; NameOfConstraint ElectricalCircuit; + { Node {I}; Loop {U}; Equation {I}; In Sur_Ele; } + { Node {Iz}; Loop {Uz}; Equation {Uz}; In Domain_Cir; } + } + } + } +} + +Resolution { + { Name dynamic; + System { + { Name A; NameOfFormulation dynamic; } + } + Operation { + InitSolution[A]; + TimeLoopTheta[0.0, tStop, tStep, 1.0]{ + Generate[A]; + Solve[A]; + Test[SaveFct[]] { SaveSolution[A]; } + } + } + } +} + +PostProcessing { + { Name Ele; NameOfFormulation dynamic; + Quantity { + { Name V; Value{ Local{ [ {V} ]; In Vol_Ele; Jacobian JVol;} } } + { Name Jv; Value{ Local{ [ -kappa[]*{d V} ]; In Vol_Ele; Jacobian JVol;} } } + { Name J; Value{ Local{ [ Norm[kappa[]*{d V}] ]; In Vol_Ele; Jacobian JVol;} } } + { Name U; Value { Term { [ {U} ]; In Sur_Ele; } } } + // The minus sign here is for getting positive currents at the top of the + // cubes. This is because incomming currents are negative. + { Name I; Value { Term { [ -{I} ]; In Sur_Ele; } } } + } + } +} + +PostOperation { + // Absolute voltage everywhere [V] + { Name V; NameOfPostProcessing Ele; + Operation { + Print[ V, OnElementsOf Vol_Ele, TimeLegend, File "Result_V.pos"]; + } + } + // Current through the top surfaces of the cubes [A] + { Name I_Top; NameOfPostProcessing Ele; + Operation { + Print[ I, OnElementsOf Region[{Top1, Top2, Top3}], TimeLegend, + File "Result_I_Top.pos"]; + } + } + // Current density vectors everywhere [A/m^2] + { Name J_vectors; NameOfPostProcessing Ele; + Operation { + Print[ Jv, OnElementsOf Vol_Ele, TimeLegend, File "Result_J_vectors.pos"]; + } + } + // Magnitude of current density everywhere [A/m^2] + { Name J_magnitude; NameOfPostProcessing Ele; + Operation { + Print[ J, OnElementsOf Vol_Ele, TimeLegend, File "Result_J.pos"]; + } + } + // Store the results in an ASCII file + { Name Cube_Top_Values_ASCII; NameOfPostProcessing Ele; + Operation { + Print[U, OnRegion Top1, File "Result_Cube1TopValues.txt", Format TimeTable]; + Print[U, OnRegion Top2, File "Result_Cube2TopValues.txt", Format TimeTable]; + Print[U, OnRegion Top3, File "Result_Cube3TopValues.txt", Format TimeTable]; + + Print[I, OnRegion Top1, File > "Result_Cube1TopValues.txt", Format TimeTable]; + Print[I, OnRegion Top2, File > "Result_Cube2TopValues.txt", Format TimeTable]; + Print[I, OnRegion Top3, File > "Result_Cube3TopValues.txt", Format TimeTable]; + } + } + +} diff --git a/CircuitCoupling/RLC_circuit_common.pro b/CircuitCoupling/RLC_circuit_common.pro new file mode 100644 index 0000000..65360ad --- /dev/null +++ b/CircuitCoupling/RLC_circuit_common.pro @@ -0,0 +1,12 @@ +// Physical numbers for volumes +Cube1 = 1001; +Cube2 = 1002; +Cube3 = 1003; + +// Physical numbers for surfaces +Cube1Top = 2001; +Cube1Bottom = 2002; +Cube2Top = 2003; +Cube2Bottom = 2004; +Cube3Top = 2005; +Cube3Bottom = 2006; diff --git a/CircuitCoupling/R_circuit.geo b/CircuitCoupling/R_circuit.geo index 8a5b6f2..77d9838 100644 --- a/CircuitCoupling/R_circuit.geo +++ b/CircuitCoupling/R_circuit.geo @@ -2,7 +2,7 @@ Include "R_circuit_common.pro"; -lc = 0.25; // Cjaracteristic length +lc = 0.25; // Cjaracteristic length Point(1) = {0, 0, 0, lc}; Extrude {1, 0, 0} { @@ -24,14 +24,14 @@ Translate {2, 4, 0} { Duplicata { Volume{1}; } } -Physical Surface(Cube1Top) = {27}; -Physical Surface(Cube1Bottom) = {5}; -Physical Surface(Cube2Top) = {34}; -Physical Surface(Cube2Bottom) = {29}; -Physical Surface(Cube3Top) = {61}; -Physical Surface(Cube3Bottom) = {56}; -Physical Surface(Cube4Top) = {88}; -Physical Surface(Cube4Bottom) = {83}; +Physical Surface(Cube1Top) = {27}; +Physical Surface(Cube1Bottom) = {5}; +Physical Surface(Cube2Top) = {34}; +Physical Surface(Cube2Bottom) = {29}; +Physical Surface(Cube3Top) = {61}; +Physical Surface(Cube3Bottom) = {56}; +Physical Surface(Cube4Top) = {88}; +Physical Surface(Cube4Bottom) = {83}; Physical Volume(Cube1) = {1}; Physical Volume(Cube2) = {28}; diff --git a/CircuitCoupling/R_circuit.pro b/CircuitCoupling/R_circuit.pro index 02afd17..8ec804b 100644 --- a/CircuitCoupling/R_circuit.pro +++ b/CircuitCoupling/R_circuit.pro @@ -7,19 +7,21 @@ - Implementation of a netlist To compute the solution in a terminal: - getdp R_circuit -solve Jstatic -pos Cube_Top_Values_as_ASCII_File + getdp R_circuit -solve static -pos Cube_Top_Values_ASCII To compute the solution interactively from the Gmsh GUI: File > Open > R_circuit.pro Run (button at the bottom of the left panel) ------------------------------------------------------------------- */ -// This example shows how to implement a circuit with discrete elements in a -// finite element simulation. Only lumped resistors, voltage- and -// current-sources are used. There are four separate cubes, each with a certain -// conductivity. The bottom of all cubes is kept at a constant voltage via the -// constraint Voltage_3D. The top of the cubes are connected with a circuit -// according the `R_circuit.jpg' schematic. +/* + This example shows how to implement a circuit with discrete elements in a + finite element simulation. Only lumped resistors, voltage- and current-sources + are used. There are four separate cubes, each with a certain conductivity. The + bottom of all cubes is kept at a constant voltage via the constraint + Voltage_3D. The top of the cubes are connected with a circuit according the + `R_circuit.jpg' schematic. +*/ Include "R_circuit_common.pro"; @@ -252,7 +254,7 @@ FunctionSpace { } Formulation { - { Name Jstatic; Type FemEquation; + { Name static; Type FemEquation; Quantity { { Name V; Type Local; NameOfSpace Hgrad_V; } { Name U; Type Global; NameOfSpace Hgrad_V [U]; } @@ -280,21 +282,20 @@ Formulation { } Resolution { - { Name Jstatic; + { Name static; System { - { Name Jstatic; NameOfFormulation Jstatic; } + { Name A; NameOfFormulation static; } } Operation { - InitSolution[Jstatic]; - Generate[Jstatic]; - Solve[Jstatic]; - SaveSolution[Jstatic]; + Generate[A]; + Solve[A]; + SaveSolution[A]; } } } PostProcessing { - { Name Ele; NameOfFormulation Jstatic; + { Name Ele; NameOfFormulation static; Quantity { { Name V; Value{ Local{ [ {V} ]; In Vol_Ele; Jacobian JVol;} } } { Name Jv; Value{ Local{ [ -kappa[]*{d V} ]; In Vol_Ele; Jacobian JVol;} } } @@ -325,7 +326,7 @@ PostOperation { } } // Store the results in an ASCII file - { Name Cube_Top_Values_as_ASCII_File; NameOfPostProcessing Ele; + { Name Cube_Top_Values_ASCII; NameOfPostProcessing Ele; Operation { Print[U, OnRegion Top1, File "Result_CubeTopValues.txt", Format SimpleTable]; Print[U, OnRegion Top2, File > "Result_CubeTopValues.txt", Format SimpleTable]; diff --git a/CircuitCoupling/R_circuit_common.pro b/CircuitCoupling/R_circuit_common.pro index bb6a5d3..3384474 100644 --- a/CircuitCoupling/R_circuit_common.pro +++ b/CircuitCoupling/R_circuit_common.pro @@ -1,15 +1,15 @@ // Physical numbers for volumes -Cube1 = 1001; -Cube2 = 1002; -Cube3 = 1003; -Cube4 = 1004; +Cube1 = 1001; +Cube2 = 1002; +Cube3 = 1003; +Cube4 = 1004; // Physical numbers for surfaces -Cube1Top = 2001; -Cube1Bottom = 2002; -Cube2Top = 2003; -Cube2Bottom = 2004; -Cube3Top = 2005; -Cube3Bottom = 2006; -Cube4Top = 2007; -Cube4Bottom = 2008; \ No newline at end of file +Cube1Top = 2001; +Cube1Bottom = 2002; +Cube2Top = 2003; +Cube2Bottom = 2004; +Cube3Top = 2005; +Cube3Bottom = 2006; +Cube4Top = 2007; +Cube4Bottom = 2008; diff --git a/Magnetodynamics/Lib_MagStaDyn_av_2D_Cir.pro b/Magnetodynamics/Lib_MagStaDyn_av_2D_Cir.pro index fa9c1dc..3a05f85 100644 --- a/Magnetodynamics/Lib_MagStaDyn_av_2D_Cir.pro +++ b/Magnetodynamics/Lib_MagStaDyn_av_2D_Cir.pro @@ -39,10 +39,10 @@ Group { DefineGroup[ SourceV_Cir, // voltage sources SourceI_Cir, // current sources - Resistance_Cir, // resistances (linear) - Inductance_Cir, // inductances - Capacitance_Cir, // capacitances - Diode_Cir // diodes (nonlinear resistances) + Resistance_Cir, // resistors (linear) + Inductance_Cir, // inductors + Capacitance_Cir, // capacitors + Diode_Cir // diodes (treated as nonlinear resistors) ]; EndIf } diff --git a/Magnetodynamics/transfo.pro b/Magnetodynamics/transfo.pro index 27e6bb8..b3b1ece 100644 --- a/Magnetodynamics/transfo.pro +++ b/Magnetodynamics/transfo.pro @@ -171,7 +171,7 @@ ElseIf (type_Source == 2) // voltage { Name ElectricalCircuit ; Type Network ; Case Circuit_1 { // PLUS and MINUS coil portions to be connected in series, together with - // E_in (an additional resistance should be defined to represent the + // E_in (an additional resistor should be defined to represent the // Coil_1 end-winding (not considered in the 2D model)) { Region E_in; Branch {1,2}; } @@ -180,7 +180,7 @@ ElseIf (type_Source == 2) // voltage } Case Circuit_2 { // PLUS and MINUS coil portions to be connected in series, together with - // R_out (an additional resistance should be defined to represent the + // R_out (an additional resistor should be defined to represent the // Coil_2 end-winding (not considered in the 2D model)) { Region R_out; Branch {1,2}; } -- GitLab