From 06b0eb89d5843cc91b018fa59f968be68de8dd6f Mon Sep 17 00:00:00 2001 From: "Craig M. Hamel" Date: Mon, 8 Dec 2025 09:08:06 -0700 Subject: [PATCH] updating example for bing. --- .../example_incompressible_2d.py | 7 +- .../mechanics/model_free/data/2holes.g | Bin 0 -> 127988 bytes .../mechanics/model_free/data/adagio.inp | 230 + .../model_free/data/full_field_data.csv | 5965 +++++++++++++++++ .../model_free/data/generate_data.sh | 16 + .../mechanics/model_free/data/global_data.csv | 13 + .../mechanics/model_free/mesh/mesh.g | Bin 0 -> 36596 bytes .../path-dependent/script_3d_2holes.py | 12 +- .../hyperviscoelasticity/simple_fefv.py | 3 +- pyproject.toml | 5 +- 10 files changed, 6239 insertions(+), 12 deletions(-) create mode 100644 examples/inverse_problems/mechanics/model_free/data/2holes.g create mode 100755 examples/inverse_problems/mechanics/model_free/data/adagio.inp create mode 100644 examples/inverse_problems/mechanics/model_free/data/full_field_data.csv create mode 100755 examples/inverse_problems/mechanics/model_free/data/generate_data.sh create mode 100644 examples/inverse_problems/mechanics/model_free/data/global_data.csv create mode 100644 examples/inverse_problems/mechanics/model_free/mesh/mesh.g diff --git a/examples/forward_problems/mechanics/hyperelasticity/example_incompressible_2d.py b/examples/forward_problems/mechanics/hyperelasticity/example_incompressible_2d.py index b36f8b0..80b308d 100644 --- a/examples/forward_problems/mechanics/hyperelasticity/example_incompressible_2d.py +++ b/examples/forward_problems/mechanics/hyperelasticity/example_incompressible_2d.py @@ -31,21 +31,18 @@ ) physics = SolidMechanics(model, PlaneStrain()) # physics = SolidMechanics(model, PlaneStress()) -ics = [ -] + dirichlet_bcs = [ DirichletBC('nset_1', 0), DirichletBC('nset_1', 1), DirichletBC('nset_3', 0), DirichletBC('nset_3', 1), ] -neumann_bcs = [ -] ################## # problem setup ################## -problem = ForwardProblem(domain, physics, ics, dirichlet_bcs, neumann_bcs) +problem = ForwardProblem(domain, physics, dirichlet_bcs=dirichlet_bcs) ################## # ML setup diff --git a/examples/inverse_problems/mechanics/model_free/data/2holes.g b/examples/inverse_problems/mechanics/model_free/data/2holes.g new file mode 100644 index 0000000000000000000000000000000000000000..7bcb1136c0d4488643bbb44284d5510350f16bdb GIT binary patch literal 127988 zcmeFa1$Y%#_dR^?+@QswxVyXC28u)R;1Jy1rBED-TXFZ|?h@Q3!6lG{5aLjZTfeo> z>~qshnt$52?fdKdeB9?*tg~mYIWu!+?%dgXp9$You4>rKPh3zEAa;+Az1(`W?b*?0 zv$H48fUZ3|y7eE>u@773Cswb4J>5EV?a7t{h{JZT-W@vjSN>S1K(TpQ#~vLaa(M+i zu4%iq>(O0_xbygWJ-7ZH2bk;HVq$p$(RS^{@h zj_p~icHE^??}7c$b^+q@G4&tNuWPT)?6zeBzS4d5>d*bye~!4U@b4@uf@QW25p_j> zXIZh|Syo&xi-$%m;H$QMy1EVO*sp)r-o4lt1F%=*y@fxD4@^@2zuY+6vuETJy)N%5d@_5AQ)U^lBnd$hAkNrt|wjI*7C!a5zV>b*;=K)=?*tvd2 zwBw=k;zcoHZ3hhG)53ej>+&bYfUX02@CNbWYv-%NU3&NE*gt>&wgc3%ukdeLAg;P@ z2D4Kw=k;|TynxR$?<DVrOgS-^rG0`912Xl06v2&sw8~Q%|diPN$4>oIg zYD52d_IRK4hqWn9BX&V>Z0LWxJ=R9IJ-vQ)Xk)hT zjk7gG^~n3k-y8iwU*$8JM(j3VQ#({G`G07uj&f>;MW-FN0ty~89vVKUeD3u4>f?y( zR<&!79*x`f7-*g|*6{ZEgSKv-aEHy~@!P)i*!{u2wEQIZ6_>}x*_*jn1BUi757Qir>Q$PSgoZyj_sdqOmhF-| zIIekb!TB?9QtF<^%K^UL^@q1LP8s&@ZNRbBc6zquTPF`5UsL*ncG4Tluy^+Z$5UFq zDMhRQen0E^e(M%duLpsYxGZp{FHudJs4mOX4{y?kl+0gD>f`#!rbnQRD ztyA0f1KiBJBbM?0|8^amz=V@j2lj()z`B2R zrhkvk@ag{fCd}Fdfc~I=`%GonefWkPp?_WhAL}~k-;vSu_?`mm{&{`YCR9H2pWpQV z#1D%i^v^5cV_oMr{XZQ5zwV!Z99V0f8#M6wP5(i2VMpj+{hCBx=QsU_WW_qVfBvE2 z{u2ZG^PB#kRmQ>y{i|Q5$m{&3|K~Tb4)+-y`1Y*D)04Q>>2T>~8V@B>wE;AMNyqZa6&XTEfi~b}?C|MWvIIX>Sxe8HHTl z?-r*+ZQ)uJ*5}279YYpS$n5@iufDr0_B^rgP)NKg3vNtkE8LF4R(w9;RVpJr#~$P3 zWOI22r>*^=@lG^YT5B!RY|U-y1TqYjehYgzhjvSr9dms6ZcwQc=tx{$Y# zW7_e>baCXPwMlk0A=95-{BOj+RQ%28(t%;Ca?V&q9=X!Qo;+o{*sI0fK>W2^5gMebQpdKS$voAMT%)GwI@d9Vl?|tor#!U84YHw|Cl4 zr|c|y`sO+^c`bRazPccIP)zdl9CK|nl574EfcQOukMbkAFED|3m0 z?+%~8eB^$Me{Ljy(2E$etIVBBAsMPU3f6l|raeXMH+28_?py1-<)Vk3in^rRwt()R z3OMUF=PBJiki2Qh*y}9*`H}n&+xE=kJ%0l|NZV#lrs0j~;k#S8S`Nrb-rZx)n7u76 zMd$Y^H=^#sOzp}0rv>(cWe?J$wOyvZvwM?w`9ZPnb&gNb`hUJN{6!Zp^1iz%*3s(8 z$;V;`SM{%(f7B5&`4FAF^f*!crw{4qzN_tL`K_blC+3`*F_7q7-d?2!=6EW8Z}D#u ze?{>J(C(EFOZ8n9m-gjdoT=N?F=8hXdlDV0{32_nY58gA&A6N1j`>#XB4Rh9<26cN zI2o|o$==V}`fnebmb|BpNHS#GXL>kbe3sQe2hgMBOMPlR2%-PCKa_mkU)M>VwJ-U` ztWjlD{^61ApmW!2PpiF`f>u0jnbvzdnf9J=yUP0EF-8rcAjN|za7MEA37Zd~pv#jE zuT9v-V!Kg5llgIP&s^i=r-=`JyQV=_(){>UrPkXQ79zjgacV9}(3qag?QyBrq zdHA|#SUGGedBm=EDbg5=1m)WCo%kpWme3mTFL)R0z8OipR5H3kK;_dwE?a_I{ z^XZ0vhi)k@PZIuto;L2We?;bfP7dh!+;h{xqNF)+Q;bbp8yIA=ovw9T>RPScZMwMd zaj_ifWMctMYWVq1W?YLe`62QS1$Lrs15|jc243PEDu78rSjRL8!#h4a#x{>hWK$(ACV(`7AQ=+-kjBYZLKv{#$&7opSVT6S*sz>Q41sMu}k zTJ{bvlTEKCT%Ce9EtykuQZfpzSI>VfmPfMvhmA=(_$UPnhs3V-tWBESGexr*O3&G_{`EyPfJony95P(muT{UVq2UXP_SUueO2AbB;yO%?`Nbak5|TPOVapoQvz*WZ%0}1Ap25lr+1C{g^#&+CXyu=H#5v8Aa(--_^Y* zADTnv@?cqB(z*P&z5e1UK0lDjQ_0=4)4MtLBErSVedC=4D_V3A?n>@g_JyX5b6of& zbRQcWDv(|{Gr7<2k>~1tZ{a88-s)%-|18)a#lhsWWMPl}zU#?n{Nb1f-)@d%dp>AV z%;#k@x_N2e!{AZn$h4a~?W?aQm3WfmC7F!h^U9^tZTPN?a5*}Cr26@zdv6KfCiksZ z#t%+DRCqYuxb(i4cc#=%zWF)bt=sAPljd6=O8+vh`y$eO`)H@KbaFFkzO!sr@1oN^ zN%QR`nCRotajtJ-HXXIn*y-I*Mp#q6^-u2eoR{O1L#$OZe>R-JZLJ_mJoM zb=|M!E-74!ZWc(@F<^IoC*M94crn39gBhvzd18~_jD%*_Dr)g<*|ZfasdiR+o1Bs5xD;; zE<*n2kNAI+Kdx{bdNLr)JweU#PWH=i_)5Z!A*9*&;=2R=Tx*kNpJ5+k&1*l3G<(Mg zJ^Rq>7WuRslk8!(gA~cmH^-|;+PvhoVRX4pH!smcd*>gs^lVAqh40?VSp?4=5&W0M z-zwZ+Vs(c+9d3}f=E)bv?nttkyft4>T>M(rIOHw-q{Z@fIbXYyUzMUEb-OentL@)r zf3uU{8f3Dao{k;VGG3`cP7XNw-hG7YWjyzq9F%aqqlm|3(j1(x-O-;CR3XhFnct zPD^X|ZNJ%N_&2mVRo(8X^PHd^)2=tG)+DnmZy?LB%JN*artOPjmxAvL2h!@C>BhSU zUl6`atBy9@I{(gN;b*k^!{~&qZlWK>Eosf3gvT7kY6>@|wbz!$u_h6;nSUbeN&H=ZD+ZX$&Kln`0N%|f^@vaK-Z(LhOi5*cO00pDb)$u`*z-_92q`| z?P1y(W6=E^@o!~y%SI2fY|1+2!|h1+x>37&J$QA9_V(*nIpk6mGVSwXe@lUg;dWmT*&AH*4zbWORrc;8;f=JeXST{Mt92J1PV1UxOP6JI8DaFBDN~$GWBLn^qP1Qx=Q}E% z6uv=gH(a>Cab>XZI|_+8#BI~dP88Z~@Z`gz9$D;%6tru_-4toOogCO^d!j;3a+1k8 zC?I~jR4vBDcC!D0r6VssIY*kGbWFS;UfQ{&*)P#1w|&F>NVD(ZPupsHRU*wk-KRFW z)yz(sz0)uJQ2bLb((H9;Rl`~*Gn3}~wMu7gdG9Tm{D$uAUlO!8*x$)skN3VCbg2!Q z>_-0c^JFUD=e?8t?)}(kh%t>cKL{Dx*nWQ$nLL^v4O!nj)1o|1_Hv1ne_*P~-CpHe;W~6Uu+Hvmm+Zo^Xjk`4 zTe=NiD7=zZd#tJ*bk0{eg!T;i>fXb4UbJ>-zn%T6T@>3-?EB=NVsfSo_htysrqjK@ zDz3lkY89(xmvQjHKDCWboM1zq*jgG3e2{nYMuC4}|ZNcgVb+!;{`~vTv+!bGLZg zi8Md1*Wu`f`Atc4*oMn9e!Pi1o8oK~w)1=fujR#si&5C>tW_tv-VnY{VRPoV$N#2+ zFj3gdC8w{`GvP1_Th{l)vY!tK@29Yz`j#r0>|Qu;tsJAxx_1<&_$`HPt2^;&7Wg%9 zbsd&JYynUvWip%$|x;WXpPP_CUisSfHdd^0sjpNp~_lq`5-p3?w#WBcdNA;J5 znj8>5NWOb(K3d`1LAVn=_M7pj%i>YOW9dnL-&iN>=M^qU{u4are3jZEjOPch#+?@h z=Mv6~-{m1yZK?VR_otwmud7_OKNSw7uv!C7Wj9Jv*xXV-cIo|{#U4(fYnQ}qH?);- zOA5I@=hEq={VA+d#q{?-R=3!Q_tL!_?mF=;1+H1sd0fRYk?fGFt2{?GOid=IqR_70 zHhL`I?&Pp-1@caahx4nrD1}^79}258v32*Wvn}>4rue-TsWs0duQ>$q!g?;2?Zq|9hxVolam7i%7%6*RFzDwNl%vsosKhnDLoCl zvuNEI_ei!^iz>~&58O^BZzHerO>ZVj_rS^bx=lD0dqs6Jxdxpmm1Aq?kom$3=v=M^ zG1qMicJiGvx1WyAKbJH=N_o81n4a@UvuBg%e#PeoljqczgL00lNv0hlb}hP@u|vuf zw-MjUQoo^JcpZP%%6d10c5V>WMD750mhZ`PAD@7bV^g?v`f z6Z@O@yL`SUtNr+=MiVaWYEGJcN8g(8>B18-*$;89|A=L^lL{vxZ}*8s-d61v&ZV2a z_~`kPyoDdV=x0mNdM9b#4kcg!`xZ&`nw2WLLT)dd>Glr`b#NCcB2;H)K5@<##2`zOue%KhbG^B6`jKqSwsT zEqq9Gpy)LRiC%Mv=rxCmUUQh}HJi&Dk!f#6oT)xyZzA1~X1yJgH<7s?jh(FbQ?ot} zlQ)rhoXAtE%`_%G4w}tz+C-YoacnH(**Ma8M?4>m$vjV+ovhEJ=9{uz&E|EmS+0l8 zk*=2uYP|IIv{|mRrcQR3@z%UY_1{#k+op2ewsCS)b(}BD)j&p9|1wAW%fJ7Y5uj6B zckdsQdIX&;!k=PdeI z=cWqJM&6P?7lbdNQO=>hXEu zOZ4Dzl7`n)eHYHE|BLiMG5iVR#m&|%yKqjrxA*9fr!@--7p6P+n_s$aWEIXvx0Y62 z|6_rcPQH<4Wv41j?~uti$YY`UIQdHBH%&X0I7lY%r3e?fQ!`3Oo5^%njMHFT75g&3gC-OTBxPrQU6=Z`ZWcv2R=I*XbjD52LG3N31{R zl=|{VsV}dP`f^LDCvT8?@=mE21GSU-&t9qfl$Lr=0jcv$ch-5V^&PXG^H%CL*Q8#P-cqkw zCH0v`mby%3sl!~6`b!&2y(Oll&XQm1Dutz<5<5~I#acJ{)AbQ+-6M)Rhqazz)-Ntu z>K2uyPVt@8Ck8}Wmxx$@&~=CMQfIhhsV|I`dcs7hAC#B+!6vB}w3d277O4xglDdGG z)CCGiJ>Zqp0iH^lxH{d>PID?{#f$p!zF*7U-ITxC10LK^5oE|Jb7=)ix-!C zcnQgaca;1$SmnQuNWMG1-@6LE9-o+&Ldm%#yVeY%@0S+2gj5AZ)wT<7M1*NU&-$_l>F`j$?G7FxBil+ohSL(oRXIgkr6r$e%_Gi?I!~zbg2^oTK%EC%;>-g&^L~==iKZ!@BF=2@)yDxI&<`5c|!G4nr-Nauxgo+x5o z3G;PTUZioPyplDKr2Ey|(c87=hjd;@@3)x;Y7{B&V;*;-NckNzud~&e$I;_xj<3$w zbcqxP{mb$+|CT(!U)>MM8w_>k5p>?b%opf9K_bZu{OHUJ=zM^g2UsI<{{)Hm5!dT@ zU&Z&ABgOS*JfB_S_vR9}-;#KJNu)U48khgQak!pOuIG{e)i^wd#NqEH4qqm5cyo!v z*Zs|Lcwvdd8%Z4A+7gEs{+r_PKR++}Ka0cl{AFK>!?#NuUPt;;JeR9^ zvY1Ds=EtU%IQ)gg;l(8mM_j1pzt;Gh;&44*HGH0`bzZ6&hlfcVURvVtc@l?DmpHtn z#Npi}4nHGtcvgwS@!YBAkB0rhIQ*@|;pHU`zbA3{$p0`7|IIv3%e>8q^E5k29G+R? z@HSDz;rT6bxOJYTo>%$bj>Gl*#_)NK)_IIk&RhJW^AIib4u5}sVfehl|85*UO5*Tw z5{H+SIDCV|;VmT&&nR(tQ;EaxNF1J5;_&AZhkHvL{#N4fE)s|1c}mT@8zOOd2Z_T= zN*tannmBxt#NmY{4v#5u_#KJEV@DB(Uz0ezUKDZoVTr@NB@Q1Vad=*d!!Jo3o>Jm) z=u{luL*nqF5{DO+IJ}L-;b0Yq@0U0{w#4DvB@Q1YadxwalT3T zJd=oVc=&u0>--TN|C;fzE9v-H$II6FAQ9tmSBblI9Iox~`5pi7I6QpbhTaeB{EUck zc=$XFoo_JX@WxTZ;oS3;fmi_usO96!m*ux7TsFuG8!KyspdZ zdc3Z~>-zg|>h2Nh?7F_L>+0e4bZh$+=gvHqTD~{( z^3*97&N^9&ycL&r&X=<0#k8%zmzsTwUAo_Y&}%aJ4f%J!QD&;^(_NdaL-yihrH>_lSQFoqzmbUb2g~==`A$nX<$zC-!}@ zE7Qftw+D?hd1`IO|FG_ik?MH}}sV{$t{=BmPR_&q=4+jBPlf*djXExrO1m?TFYb#P*;IlP71H zSUv%rfA`>ZEic5W%KlpHTy&{j-U1U2EfZc%H=f0;J+bOmx?^AZtU)Y;ZqM`!d)~bz z-MH24eyL)a#lJ)RF~sjC{;YH}_kqVhZJbPZ?s}&1EHpvvsbXWEPtrP7Z%+7yuDrOt zf8yG8V!s!A6M4MNP`%WN;=-lq)QcR+>!wCN!?CUXxmBOV#(SS^uXdr+ZdbefSa^}} zaym0U(TBbxyo8_7h2@8`hfIn|XV!E~;!-Y*&P^G#qsE+kba}z7u=b^F;*T%>SK==! z{+M*FeEHW@HGnRzDm|certD$|i=Br&zFt|c&#MaL`6~0w^!px)U0G~jy3(q{;y$12 z3pXQ=x?_X0SItS6w&w_06oUMbvh#}l6P;P|KJqCF|FW6$NYHzbd8x&K?o^E#d8lIACKLzdS{wFU3Z zGjAood~SVxe)SgiA&+LEzD=8bFFXc$t^Fxpt$Qf!LpNp~Z0y#`Q}_l2`B!t_ojwi) z9S?}-*W!94+pl!>gKeAnlkbLM<429VMW&7SnU#H;o=gvzRk&wy;S!i9kSR%%%Qu8? zQh=lGqE%1FIyta)1COMihLFia@m|p{)9a4RY!k_5EupZr(PTwfJgHGr7 z4ouK!h44B$wzX}*@F{!g*wxMPl2(Z+_BpXr(XkV`Tdq1&Ubq3d=U*}M*Gia&qWEWW zzxBW?-JSlz!|8axp)t?4PAr^?j^|!Ac!=jN;e&KM)zSN})1Mc{@A~-~^#+|QL_V_$ zR2*}EH~FmVJ7jgyTC%*bEZ-x`Ym;B5f#0=Col=kmquUxWss8t z;$%oa^Jr(%9N409xuV4mlgUT$dvd7Qqr}&Q@jkFi-iwn~H+Aw^d-Vi!%Hlo1wCfXo zUn2*Zc5$)ulW*f~6So|~`!|=*q>34sPwdWO=O>@X75255o=+Hd%T}KcUv&t(koSR& ztNhDi-n8N-Rb!+K@7HNIc>A6xw2QlZS^ePrYgR-pK=OVs8q!+df?| zK3*LP)!Z#0aQjpIUTf}kw9M#E=P6Wk>la<_PQv@snoDNxJjp*Mg({9gp{c@Ze&>}e zoSPSGoM_2F3Vwb&RkP6A6l$^WRDC*SWdC|}@5iDuQzd9c_r}~GRIB`8x^rvg^AY1_ zk?C(JemC(C75^N%xuoIf^Xc(BqBuKwo}S_H>*RUD3+dWd=N>Iw`AQgh-;EdZg|$B| ze3?$yiT!EUpwYq;>DaSaAAXqUCH#!`l)l@qyl*kuQ>(Z8v+Z@nt|4|?+Ech`^(l2Q zzeI60+Ec&f`aE%t3VYI?qZ9qg#mg^Tk@gNd^$80E%SsI(#@8+hXrMYl4gp7jb8`-<4XbbEl~N$)J!f5lbl z?zl16zCOEEcn96jHgZhoqp5|{(u4ia#<)!i6@Eq!n>S9LZQx|#DRkxHi7Hi|O{Ob7 zmT#ILd|B+7V&5bW5C2BLyut6LG2%n*v@^x_6MGKbs9*nHIp67Y<4Bbm1-_{)_AIfh z(h>Jnxe~lhPP+nz$GuheChgqzFwP~<{hcS z!mH?N+Xj704X!3!hdk?ad!8UPw{SkXnaHJN{SxJcE70v56W7l0%}KZCrHr|7O)s%? zi`|#*ExZ}n>R4;KH|^=w8r_nM-B#?BZ+Og3lAXgU#GS26ShEjA$hM1h|{=c zEaBMXojXc z{luz2oCKWh>e4KDV%;N=PzFkY21Dh>c=RIK&nY@^SwscH0{5am{6%MiQFZk{1 z6{I<|@scx5ce#*epEg^{`i#jzCg&vI-FIiVOEO(}2KmL_(y_^q*TQe;NlUuA!|S;4 z3G&~zs^s3!8Jry8$TzG~hD~_hGC8nGi}^uaZji}0DQMHaYnzTcoE&1CJU{u~5qNLP z+qP?);=+`!>ksh?2a+S9!YDAb%I4C-t!Q1yuKAsN zT^Ig9>+aVc`}Q2(i&vbD)~%?q>(h&`gp1I+`XirvXUF^V%sEohhHTAF-x`rrxD4&+ zS}u)8td7EXUVq)Z`khnvg&)v^uKO;eeO^l6&RfpUN)W3Dg(>b%VcRd)`gujlaNg~G{6yd%A@4;(|VFCSZNVxhQN$vNq#ZR}bgQ=P#r! z{tbm`zLM|g$g$}tO!MH4=i;ux`@q7Xw+eXX=;KeCy~?-lpLt|9yl=~#gYIoUci>K= zVZz_ho#dU~d`h)bcsJebGc9w<6IF$)ljq^U4_D4&{+8mVbS=(~rZulG5XOCe*MtMz zcQh1kPN$okPxdgZpYUM3FWPHz&$6h8D}Ic;vSWVxf}c$;l$h2w-jb*K^f|)&$gf7P zs|QxTq$ldNoke25aN3U(1uST=C?lDinS4HNTU;Wnq;PTaNpmqr`y#o7@pt(Kre4^M=eLgukOlPcxtFn{cX=z0k>SqSqx$PmhCWZ1lI2(+@BsCdHi*%SGk4r(xdNEwsFb( zR5*}4-p%>mu@ry5PBGroi8(ZP{rv4{bLLl-yPhf{_5iV6>CnOF-FC;$Oi;kMA$8i#&gjuM3$MUr#R=+tq2C^Sf(Hefi7ZlhE@9G)KICHb(mU5Bj>( zY+j#uzj&kiIImNEKhkwu{T{Sw@00n}i{!oM?}hRA(bW6T`-P9nd(ZiWi^_Y?H=OT3 zo9~?$alUVEzK=e{S;sc#k$1AZe?HFg{<&d!|9ra4Ge^Ec)vJ-;m-*x7eDj&|{`q8i z?|hAuBfft=N#>zr-nn`Y9jxc0Yu5E}&FcO0oR)d&g)Q%&XK}uV{`>Er-*CQv{>SRw z*7~-tYwJ38a!dU>sycP#`gFuPw5~t5vDB9nNc~yYm#y{WQBp5nCH3N6QZL>v_2Iix zAFe2M;fj{JZ%L{9;_q^+x^Lkq>b&1c{r07$zB^y)yZC!bKYaU_DmXTl-k* ztskYH8YK1Bhf;6F`%kLgI!fxN;q_FrZW<uf%)&s$N+_>XLZ>S=A+NQjc6Jbx0qnGsc!W z<8!Gq7Lq!nA$7$-sVnA^I$|ZMBYI2y&{gV%xussXM(Tv95B_dlFp<;+dpYZZ5$k@s z-lyw)qol6qZK>zQm3rQdDC%{(PIpV{a^s{PH%#hqnWgSFNa}FAE%ml~QeXQhbv5Mm zRb6e1)X`Q+-Rz*$&EiVE>>H_*;qMKrI@utpi+wHiuzgYoyBtluOV_!=>sw|$tBcgJ zj!OLsfA3c6S7x0G^Kn((Do+%3DP51!btqkb(sidRmO7KJFX_6HwVqT@>PBlU^&(v- zvet(TsRQBf`K$U5zSpYmb5ZI&9i+~K{G6)u;QxbA^_;=Z`i@zzX<(_>43T=xY)hSH zzSL##cbZjQ=DgHl#!LOhSL!XLrQXs|>MUiXzH(CPDyWO7x=LKBqfD3j3EmS{b(0)Y zFUb-`ePp}TKZZ;FW4_csZb{t(^?z0G*e-RB`BK-w-^);S4qexXVX0%Rv(znaNS$Js z)F+S^SM`b6mO4a;rT(zpQf~;e)EA~oJ;6ij2fk82K%GF<4`y2G1*xSja8K$2XQUob zMd|>{B>#`Uo2c^tc`W&Uo!>`Xuk!oWe7?@(>-@dW+v|M2&eQAsyw1nhk$n7X$-g6y zuJZ5Je7nxG>-@UTtLuEa&ZCFt&&_=KI?0nSiIg8V^WiZqd2pTo)_HH8@6IUs?ah+c zz9so=7s+E|-jB*($2RlT9l|7EjrZ$SzB;?)r?*O8x|igmt4KcjiR7QFNZ#2?^38ZZ zUFDm0|xtq6JIMV7p<&Iju}u+IPLyzdps?qvg_jN}{fzPrjRUXXku@`@^- zctY}qMI>+7T=InXB~O^$nI|;!gL5M116AIyp5y_COTKTJ$8Y znW@{eCns@n!-doq>sQ*rY(>C)T^+><(ZoaSZ@BO<0`Z_lA z21lKLN6q}ZY2RD&1Uf%}zmKNs4n-snFht`29uoJDlz9IuiSscZLB-$aEPq!{zfZ2` zv0n*~-!1XF`FG;)BzBXRf|iNkkG9KKWH@Ou)6 zSCTlq(qD|jf3d{j^CS*`C~^3w|1b`ZYTk38#Nl2NhtH5W{QD^4a6NzdsKnv5B@V~? zy=wk)R*A!xNgRGo;_xIAhi8{KeARy#hrg9Le51tS_|Id<|-}{Zk;XV?FHC+`lCbAN_w6 zhu62n;rP1=Dh|ir2~qP}*GL@hE^&AwiNmW)93CQZ_z;Q1lS>@FU*hm9|4CrBI~AaQsF ziNo>tdewYK*lNDxIf=tdN*ta@;_$f=hmVpt9PbIM`HOguNzGfd&Qshearh{S!;ms{^cq)m*^GF)(!%IjU{?sy$NzY%h#^LyXR#hCnSmJQ}y>K-zX^_O>-V%o+pQ7d;ZHQu?k)B_q z=N0MsM0y_4UyZ}{ydNEhpO!e>L*nrBmN@*lW&Vzi!}WX}9f#|AI^pwket$j==7FjC zH#!b4C~v4y*+DxdbyRgE-H>r zZ}nU4sQT5*qtk1DRC?{#taVYb)@iottjo0>6$U%%vaS98)7$&A{YSTd+HYmOov2vrwf~RW zR^6Xn|DV?XxA!l)?fqT;sQUT89?z)u%ewrZvaS7E$K$X1t^Iwm7vi(XnOFF$;}PBY z`K$eZSs$nCPn<7(J~Zp`v$ECypW4>-^meSvzu1ZKvF5-2X*;QW&yzUwZV}H<_;U07 zSo0ZH+p3Sww&n}1dTamT`A)r`nt%WL(Z?4)j#j;OJ*)rE*@+|FHzTee-TowUo(FTk zq8lIUc>US&2_F~hIQ(6)w5y>)*P)MDqRpPsjVu?w?g}-CwKUYX4Qe_4uv* z|5@9*Ki2-Oc0w8N@a;srzO8y||KaPI_nE)jwr;74{XZ1(7 zz3B9Rw*Tn#*6msKe|CSZ{aNkk`j2jV`u8NfpNQ9U_;T}lwchWe^GBz*u5Y!i>s#&U z^ncZFecp&}`_}D6ZLdtspQQBHIB^u~Cz9n>zje8`|LT5xS>HU5*75!_E`RO%{xW`F z#_#XAPky{~xuj_Y=K-B-ZZ_%Z@tM&Qc`d>Mf+Bk*MezKp<^5%@9!Uq;}|2z(iVFC*|}1ip;Gml60f z0{_Ga4EZNI{U7Rc=>O2Z{u8@8?4RiLf2&VBcGmzLfC~@Qzn3Q?B`?346si7xnJHs z>)6lz^7dKB+vk1H0`PwD_Icm40=ysDfb2jHASaLu$PMHH@&ddpACMnlEiWqo6a-jX z2q+8`0g3{}fZ{+2pd?TVC=IZNwPk>^0BcxV4qy%Yc>VGKYuLx@6Ho!D2vh>T0V)Gk zfT{p5uLe{H*w4#r05t*jR{&}OtYIy$TN_{vYrh5R0Cj9f3|jXP^tv73ceAAi(FC&uubb5WwenFfard3Je2=1K$B7fROj!%m!G; z{yD&0fOS6t^8mhn_&S;oECBfWDGMwFiU90q-6Eg_z<$;(29^Na53j!zSO#!Ey#8{4 zHS8+|tN>WUzB0f{fHmwZ2dn~C0PN#ybv3XCSPQHJ)&m=WpMZ@3FWUrc23X6>wg6iJ z)@}o~1FT`~4qzw18rJRtSi?Tv#%_Q$?Bi|h0rmpiKliZ@*bi|3+{Xcc_m8*Dnu7rE zA8(sAhk*P*KHxBL1Skj;0FDC30C(UxkR3PyoCHn*xq;IFYuJ|!I0LYTeYt?M0BhLC z+c^iYhJC!9^8jnu$NO>tU=90tU-5L{Q3C#xcNNr_+JEA!@i=xC4e>TD+yc% zSi?TPPObo~VIN;7R{_?rkFTX`0BhLC*OCX|3Gnf|1J{8Y03Sb(!%g58z+=Z_cpJC_ z@YwMf-UV30zMQ~4fHmyP3)}}-!@eBA1AsN`%L8};tYIII@k4+$?Bg+h1h9sEypP@h zYuLy8=mW5ZeS93gfH%NCK90wLAHX{HKLPv!*0KL7z#8`PSOfs9VIPkL0jyzP1>hTi zHSDVl1Oh<-k28;NFc1RpIP>_10<2*le}BUO*065@@C;xL`}jNj9AFLm<^w+itYP00 z;03@M_ALW`0bT;EWB)7QHNZOdzX4dozQw>>fHmw}3cLeY!@lLfdw@0UTLF9kSi`=R zz(;^JD*(PmKLM;^-&)`^z#8`Pb^I&98uqO*f8v#feH&og!K{Igzsq(*H1P3v+3o;b zfEciG9ol08v4GgH?||a~(5P$lCfacUXw)@&8||+EXw)@&7wvceH0m0?hjx4b8g-4{ zM>_!kjk-o3pq&taMqQ&`XeR=oQP=20v=al+sB82Q+DQOt)HUjjc2WQub&cX0v?l|g zQP-$1+Ft|EsO!@Y?c@M7>iWcWYEJ>A1bCcyd{P0a0gRKn*X>0c8g(Ds4Bl^Qly58S zS->7(6R;ha1MCB~06U>g1EfX!Ja7o@bU=EvF91i-&HzB8?p=q`&ImxG?p;UG&ICZC z?hkx^G6NZ5!>7(q7TD0JbBA+i&k8`Jd^m^pYyfN6$LBdaz#8`9JgaA$3SbYw9jFad z2Cf4qp~(TR1-JvpVCMw020p$|+jEHqKE6-ebBhK(zE9ip0MMv=_*t~`0??>?_&K!m z0nn&>IL64HAAm;P!!bto0su5Temsu$f&er;emsu$LO@~I)q!eg7XgZ*T@$Eb`qi@= zj)9Mb{p#5b$H2#8F9vWQ?8AQAiv!#T`>>z(5&&!1$H!6b;|cqI{_7dlheJ@yIO-vH34 zd+bxRaqd{7?y&)AR{@|=_gL<`D!}I#KEBu5dCZ_u_hIh4IslEj53`oX5E}Jt%sz}O zYt*wbw|QKl;qmA5VCQkgavpy^5B6^X*08S*P#0hg`|3g09n2c|)H7;tv{}QxKH&O5 z1E3+$2yg`&15JRYKr?_f@bT}2y*a=d`1p6i-U5I|{e}dh-4cLC{e}di-3ow4{f301 z-5P*K{f300?FK-jenXz2-3EY0{f0b8yDb2X`VILR?REe(>Nn&C+U)^o)bGbjv^xOM zsNav*Xm3B ze*hZw8}uvM0|03FH^>gM4+Nm$-ypun+6MuwVV?mE23W(sl)w;xHS9|b425tqFdOY* zz;Lvu19Q>-4j2K91ilAG0i%I2z*t}$z`1l#i&f^M=dWOA*_KyJX3w-MPHP6(j=dTd7=bIYkYlQX!02=k(Yl`+l zfHmxE2rL3v!@efKVt_U5YXB?(Si`=?z*6+Z`@_e9ak4K%8~e!P!{cOM4y*v6Q~s6U zRRDC#zZ%RMUYEyu4Zs>+m&cm@yd2}G#)|#CoX45RYAwJT-ac=09l#p)@mQ?~Si?RZ zs|^5a*vDh_6Tlkw@i=S*Si?RZhfM%$*vI3r8DI_jFb zcZ9ziDnHN}ZG1=gyTSPZ`xfvxU@Y2Ofo*8x`sEngz8%;BK%;y+!Mgxxly5h5xVG)Q z9P6q$9oM!U%h|8`;A?&_!2PgpAFvW0BG39IRd*o z0FBBY@b~aI0FBBY;5h6j0BBVHfWL<)0ciLb)p48xL&L|Yj^i|#HGGV`k7oeZ@G+e!@eZI2Y@x~OA34hSi`<#z$bt;?E4z{46ufM$$?)1*08U<&1PU|m4v3Au||y{#>v1qvqp^} z#>t2c@YwPgVw?<&D{IskVw?<&D{IskVw?<&D{IskVw?<&D{IskVw?<&D{IskVw?<& zD{IskVw?<&D{IskVw?<&D{IskVw?<&D{IskVw?<&D{IskVk`}eD{IskVk`}eD{FWR zc`OZ#tHER03FwG+3LqugU4YJLrviBF;p68#BQ*dG`}jG}NCQB_K7P(K(gM)1kDv35 zbO1E${ zJ93^)YsTmUrc`E3;1 zxdCX@^V>MI^8nD;;p2OZkr#kQJ>!i+|`9hJCgH0G}Ud4D7e+ zpZ9_L!hWm%c^|m1asV_chDBdSc>o#}!=f)fcGjpEmiyv;fJViz+!tY67$aLVpe^hQ zV2qKi70?m7V9~&*?$IHlfsgOeYHR|bTMDdz&HEJuECVn`Mn!nF4;1JI~vtc_?_0iaROSewwU3P7Wtu{L8LvX~lv#^Pr!TUJxU&shAd zWmE&I12td|1J?v<0kvU|1b+)a!#>+kwD}xB!#>*xwCe)Uu+KIMZ9XT^u#cZ{jQRjH z?Bi!7qX7U7`}i5jXb3>VK7Nie8UfI-kDsFqSD-PF6!x#+CO}gl8GvpKoEO%p`*?Y@ zajujGK6?eUTL93g97H*^TLRFqkMj&hD*zgmr{HtZ8h}RSDKO548vqUGAUMxpv;m+| zc?yiP(H4M)eVk`7+5ynm;p04m(H?+?eVk`7IsnkH&(7oC5rBq$oM$jP0no6I^9)93 z02=mjp26q>K*K)HGZL9@$Fy+L%?$YXxPWks>WOZ8usyh&iE04M)``NJr96J`HG`GA7BmpiU11$*08TAun=Gk z`ziv90M@Xt60jIx4g0_eV+R0@@~uF7 zCjgD|;W&(40QOPs+ivh40Q;!+Z7+Bqz#8`L2Mz$NVc$XE5WpJt@mL%NSi?RZiz5JQ z;8Wvs6m8bPr^e?P+R(6%$G~t0pkW`6fpHvwM)@#K#t8r#<-<4`Cjr*5?-XzvU=91u zK-Ug@7T4QQwA%xnV4s6M9PQ5F@vzT>M*<^&39v7K#{i>EpK%dw9{?Km8JEz046x=3 z?91T$z(e2~Y%Ejpm$&INuEM?xK*K%*8Wm$c0DHg&)bmA4*q*Qf^?cDrd^iSv_F#?j z;TZVYLusaB*>$Y<18l}j*f(HLMtd6CH-Q>Jb>J3o8>kJ`0`36VFQsAMJ%IO-HSELw z8D0Qu*jE6+F)9uF3IZ4#rGbyfh{r~0;Nvke9sxYQ7-!BS8r}epFUFbkh`jHtQF%!0 zKkqwhR2~w?z~|031wfn6A)hQKo*^6cSOpWsGM>`NW3GlTW1Ox-8fipk|5DKt{ePO^efHmxU4*U$ThJAg3 z7XWM6*AMswU=4ig_xUB-tbtGcKEFa68ur;({~CaXef*qlyaAw5zEWtv1)x#B(rCW} zSi`;&z?;X;09eDmGQdZGHS8-3;Jhjg`^o`R0oJguJn#wl3^WE@fnRMl2R5&s z0h^$0N1HY5YX;i@L!+Jno5O}!Y2f4MJco;D;N#~!M+^WO^_G>N&AB+OYs= z)N`U6+OYv>)N^7RwBrEKsOQACXvYPhG2r9pJjYi6H0n9AJ=*aAXw-9J2ejh@(5UCc zj%X(Upi$3>ozPAQK%<@$JENTlfJQwhc0oHa0F8Q1?22|002=k2*bVKZ05s}3u{+wy z0BF>6Vh^;x2B1;Ti9OLy4nU)x6MLbZ0)R$6C-z1=B>;_jPV9qrDgYYwoQP}4ks5$T zJtyLNa-;#EQP(D}QAb(;8g*^r8g--tpi$Rv5ZdVhXw>x^f_4S~8g>2SJL1R)K%=gI zd`BFa0BF?rXCvB~0ch0sXEWMa0BF?j!%t{u1)x#C51Y`=20){Jhqs`e9e_st4sS&} z2LO%w9o~j^P5>J9JG>q3TmUrccX$WdxdCX@@9<8v^8k5aPXu^u^8xwMo&@k%7671O zpTXy%AOH>f3?BPJ05t3~c&rNp(6GV~IEn($u#fW~j$!~b>@#?*iv!T8 zJPMC>2>=@QaUR4`5`f0wG3K!@1wg|-gU7lw01f*%58@~TK*K(R$GR*44f_lp>v8}z z>@#?*%LCA`&)~5p02=lgJk}KeXxL})SXTs~VV}WcT?v4OeFl&9Hvly3GkB~k1JJO~ zz_>fA0MM|{;IXd?K*K%*=fP18fQEhi`{t+)K*K)%eRI?Rpi#el_t35hK%;*99-v(d zfJXg3-a@-J0FC$QE@u= z)c}A-#p&EvLjW2Tr*mJ80BBU4&V9K8(5N__`)Uk8qvCY#s|f&&iqpBTrT{c5PUpUw z0nGs(-yPrc1Hjj_58UT?M?tR>iKgo+MNMt)br~) zw7US%sOQ%WHk&QIsp02eenz)tG&TJE%g^YJuHfXr*I1`N>~3hM0#d>r0K2=XVIRk- zjvl6leH^DcdIHd}kK9cR1Sp0BBU4 z`yJZ6Ptd41cLdtJPtd41cO=@pPrPsNah&Sled2wC&lrU^?-TDEd>p4bc%OLR;Nv*e z!TSUa`#4T@@IFDK;@oj)^FBetK8{lzyid@mIClctyid@mICmo2yid@mICm1-yidGu z?8^)AKJmV>FF(Nh#QTBklygN6-Ur@pQ`n8byiMLW_&9&$;BE50z{mL`2lopN`?wD0 z;C`WDAJ^d=KLF6MkLz%b$pAF$v%8}`1%QTq_Ty+z1)yOc*Wnz~0BG1}KZ*8q02=n$ zPoX^nfQEhc(`e5Gpkbf=4BE2*XxL{zi}q{)8ur=Gp*;tHhJE()XwLTpkbd8 z8|~EqH0(3tpuGlwhJ8j{wATXAu+R7k?R5Y&>@(t_y&iyueMWq=HvrJE&q#pwPXILR zGZLb`5rBq$Mk2H~0no6|NR0Mo02=lgNzmQ`K*K&GDcV~BXxL{YLwg$l4g2^R*0CLc zhJE}D>(~K6!#;k_b?gM7Q9c{myMWyoZ!EV>M0*dg7dDpJCZW9#fQEgx!D#OXpkbel zzngr`L&HAXFtqVKU=90h_?|fq0no6I<3tC4C!k>;$B7PnPgtX3$eU;%1)xze z&!c??fJVic7tlTnK*KR6$B~Y605mF2_ePu7frfn?YdUxxXbku`)^zYTd0qHyQ_<#a zLc>0er5%?6XxPVbsN)I%4f{9_bzB9YVIRk;j%xrk?BiI~;Q>IS;@Ea*djim?IJOho zyid@mJOyicpP;e9$8oHK#~d1taXF54+ybCsAIGr{J_pdSkK+f zIF5DP1E66a$FUARN6@g3V_nAs02=mjtn1)&291h?c`W#xL8Ibe9t$3GXgCJuSlHnW zK%?>;0ci6+^Vq{@$93u8eTIhPWR8XT+GY*=_!{SHn>Fm?Yuv%d#K*z=j(xJ(0RwOV zF0!1r%iCfV2(SiysCDCu23kiD5Dc&m+fvT}iA0BODPIVf`+!E}@{)qN z5A25{6bJ*J0oVtAPOv2hQUKTowcY1n*0G=WEe*gr_WumL0C+!m`{{u6Kth1G&*$hD zfOYK0G21c$tkZrzcHTa8%8!24_MubT=Y4+(U_aFMdEc`D*bm1m;5G0Dc#CD(fb2jH zAg8&^@eceRfR>lp@&Wk)XdNGbkH9D3GnN$s3Ij!eqFDB;xl2j|t*sPL8ek2yE_@8o zsD60;asX?%AFS_!F?MkPIBu61SVlkvpdwI7md6Cg5Y6uNxa+4Ub&~pccRy zXkBnVTrgfPUjgy3>|3A?P#36YE_1w@#-k_bo)B*C&~Ky#o4 z&=SjVt+*ruaK2smx@Zfu1KI-}ungCUOG+RWkQ&Rn0^NY_Ko2a#IZ_(*TrvO|flOF77#IQ!1%`<)Gnlm*#rHjU6abA& zRsiSOg*E8MHWnBMum=6O;95}{-UeT{69LxnHn1(1900Bvms~(@Ec*eN3`_y0ia!rH zFTmFp`)2{O0q9(Ct-0V@cA6ybomn*6{kS^fYvAK;*meP|;eN0U7v6{R z0QZkRYMYJ*8+SV_}KA1R~q=#{pX@+;8XXH8m5MQe4W@X1FYe5!RNLn z01f;2TC!aQSOXtlOD?s5+5nE9$HC?ScmjO#f&d=pg;>@MU=4ig`x`16_|*6J|D)R;qvuJo?r)be zt8Lr1ZBE;^-92sFwr$(CZQHiHpKC|fJTLCG{tcql>B6FjE7d{zgrqlnFp`ZHZ|sj zxij-{dG_2aUWx0pZI2zWI2Q2Tu`v$qaonlxzlevHIiNj$<0Z{J}Nf8e%buMcgH81zy!oIf@TuZtC?$f@@z(dPi z-kzKm4=wX_Z`Xl`mbtt=<-kMBJl)%E;Gt!nZp&9ZWe$H-+wKDoEjemW+jzPv6GfhYacm-gHPPx`4Zz5Q_jGEP^~ zW-PUhxs21yqrC$W4=wX(dqMD&Irc+s2O%C>=GwM8#Z%_kPqiJ4cxahx+o=&xnPcbI zb_n93WqsV1vv|rpoSGhrcxcISd&$O=wR3XZI}GvAQipc($`dVh=pBxDQllfZEi>@Y z+8MKBA|6^V5| z3GvYK9BFUVc*^tRCv7L=6vP*O6KvY}@|@|Nig;*w&a}5^Jmnemqqfr!4=vA`cJjwl zobG`n2sDPk9FYsqIX}L(8+My+h+E&!E4xorQR4 zdCs(VY&_)|^slzF5f3eMY*U_00}n0Ffwr+6Pgz6XtZnjvhn8nW_9yX_b#}(pWw^Z2^89EU%WdPmJV&n6 ze#O8;%R0V&Y~v|w{A&lg_Ogb}Jx6b8FYDYVwO={#(6UZ#J7@9GvQF*g85R#MYpk}h z8c(#Wv3ge{9$LA-jKz4$`s)jA*C3wN;T~+C3ZC3w<^Iey#zV_J+&0#VXJv6EZRuk? zwA|-yW2ty(xzBsoV;W2id1{~S*lM5rBu~8?a3kW2ZoIV5YkWn&Y2cwH*KOmZcyg{I zwM9=2u7ErgU39ookGT zmOS)sLp;fmJhXES@g$FOm3J=1lN`xa-nkS{@+eomQIUH@pL?UxbC0=4a&MIP1Gj6R z6qDc%?XIKjzYp{|=e!f~(0X@ilgD_XwUgV)n)aeQM$6bvd-RrL^zOzz$Z_(0xoGQe zIZnQRFYd$rm{_}WwR0W(t^Kq;fOu$mN6_{;o@jYT(0dT^(9(~#RlRl;&y@wG``skeHcanJ0$Bdar5KpdOKiZEDJjp}q=I`Q3A0N~9_`s7sKB3Lu z#Y5})yZ!XQlh4m+8wn#~KcpsWV=da;m|okHh=*3zH_tboXk~r#)WEZYxV^R)!4s`L zwl?SM#Y4+FvHUxvcxYKm_HqsJ(6UZ!zdG>H+7oJf7V*%sPHex9cxYKC_MSsLw5%oD zZz3LAJ2`hPB?rmH3)9$NN6?H>^jtv$3heJvhZ z_Cf8R5f80BthVGZ9$IfpZNDNOTJ}o4cM%UQ`=Ivkh=-QFQtv&)L(4v>{U_p~Wv|pz zkK&c zhn76`c#9`Fl&A7LUboSbr(VWDJjtP4cKVH{*S)Mxb8c)fgJoP?9JjtOv zb>uakl0$jweU5mNLwV{9+jvS2<*D}t;z%7i{jVD^xg1w&* z4=wAw&cux;TGoQS)F2*O)_I*t8&6p$?yT(>#6!y(t^7M3p0ZBdRa% z=NhrqYOP71(Rb(ec`a=><1gHRo3vj{pIJN?IcGGrE^8E?Xq{PU=QW&!0B1n22R`xi%mCt7Dt+OmzOXyeevYCO?e|3&U~p328^jJ?HueAjiCx{b;T!o@mKI)uAOv!((LH{7xuGtu?TLw$}z8TIT5Xmje&2 ztWT1gS8+XVq~*HYZ)Ki8&v(1plf#>F3w=SzVOe8cO79Ikw5+2#3pbv!#=4v)0r8YI z)@`&!8&6qdU1@z~Y{ru{R@Pdri5pMWSgo;XHOwc~5Ihso7RM4;lD>!bAsbJ$-UQm0 zX*|(dyVHhhJkheo=`7cHqP6y;4c&Ok`saSy3XLaP)=1Sbji;=i?xU^Lc%o$;RSk>b z96R$&=9g8lD&#x!OQkOHlzIFB?dlRwnaAg&sa-tf9mM{$wHi<6_O?1#BQ~BMt#=@8 zoyHTby&!F*#uKe~5N*B26Ro{4&2_{Rt#>eOgT@mr?-{C58c(#mXXtFyc%tQ9L^W#T zDeoW-rESu9qUAk9WlY6W-a#Bj+pO_K%e#nb^u|-(K^#uoqVYt_yNGIx##7!wj7i(7 z@kDF+TxpA^yr&R5+cchN`JJsAtMQcI;GCK=|Bdf_8 zPkDZNj&?Fec%tPwT1}2A&{l&#wPg&LOUpbrqxLBqPqfTqoudaHTIR88s>Ty7b6qDn zcB(GJXlTNc%o&l?3_OE&@xw6GYmYm%!8dX2Oe7H$|^aChn9J;bN0YP%Uqe? zg^Pz)ejm>Gi-(rEvYH9b)iclahSYv8&ZBwuw3eaG(s-iv%u}5U8&9;Bd8*Qnu3U7# z@Od`c#oFb%HN4N4Xqz2#`0lVU7j`bk74%iGJZ;X#6RkHi?drx;erI2fHdo_`mTT-> z+jv^ETw^tNVW=+@@^- z#FMci7o9s14=uTbGr)rUb zhgPXs=fQ!8)_KVHM$x{QsBU?e(ArS@qsHd$K5wK=U#rE%3vj;ngXxcp`(W=zt2__0 zc8Vuj=SkZ8jVF8JYDwC2ctP7U^ryu)@lK;v|DiqGc%pTDE_+O#?2oIZ#NjcL_UGv+ z>x;Dqnm&|&C&5!ReaPA)p8T7EYH9IOOs?%H9@kpl!5vOp21B5a)cj?*-tvrpMcZpK2Oe71lF3axWu57~$xZRllA~%xB){^Uca5EQA&1Fx z`%s!|kEgtcyp)z>@I*@=O6{hko8wZ$)UI_Tj-abywGxs)=goV9j&mkQ$z$8Gs+Aj0 zd54hPf7p1U9>%ke}j?_X|iJZ)P07TRja7+w^s(>_PWu(8|uLYo>F53O2L+t-MP*7-);S_2O) z&*IMah=-PEag{L?53LvdN5n%b&*ya-Pqf}R+JA05(X!62)&)Kq%4Bi@sxF9`o7t~L(5vQJ7nW2>%?69<^vBcYr*c&ji;;=bM0FUJhZIyy801MStsV& zwj6k9Sqpa4$K-*QwP3Z?z(dPgu$w;clyzc`z4gFD%Q~-{Yvd{G#C&&~frpm0U^mym zQ`U*mwjFqAS?6_g4xX}3+)i7Fhn6wc%`te&I&lYW+an%Y#&37vDeFXIwECYXp<5e^J`_ji-!%_eixP;-TgF(4DaHl>6rjZ95?zTAsDti5pLz9eLJP zJ0l)ip0(Xc8&7!-U#)Ey#6!!owmW&_DbL|+we5;{XnEFlr))gsIefjg-LN|*bARY> zcWO-I+=n7H+oSQ6cO+larf)paI`UlY*?4-i-nX+0afQ{IvMPFu9`MC(jTJEZaSXnBTp7jHb#I%-j=Q#{e~ z4D2r1c%qf(<6#32Ezi*IQjI5C=M`;-BOY3w!QEvVPqaLPt0NE(Eqn3qa*d}vpIu9J zB;uh}L(*1gJRMs0;?+@zhgJ1uJhZH(yX!TcXjw~FCn6qN z)`;B=8c$hgU#RUQ#6!y(v%68_DeLUpw4IE2Xj!9nH)%X&{dtqNQxFd=YuxT;ji;<% zFY)<@fhXD*9zx?ao~(bfMz2owckbJ-efA9OZlQfNjOzM#)OK3qiI%-=cdNz|EqmGO z^nr(#y=-@z#uF|3)as0ZhnBr;ce}b!x6 zmc4A(HN{i*xw-ewA9!e)1G}y%p0dw9RNDmu4=wX#*EPkH`7!fkbs;W7#%ac<^LEV{ z8K-$yR9%dCXubQiJ7+x6+IMJI$9SUk?xp3pJki>>(=Kg1(egW7_wdFOt*x!PtnrlJ z=pLlG*W!tm-{Gpu8&8jx-{HFMrFf#XwN+O%p7I;r!!-9wJki?zuC8o60dp4fPzwI8Ql-FV7xbpGz1+<2n3pQc^YczXWsJx@Ee@kGn-P}Q}K zCtB}i+UboaTKi+#b&V%l??amL7*DiLn|6KUiI(3vx@R|@Xq_(YhQ?EV1M!{ixs4}U zehaB?Y&<<$e&^_(-*}?scaAFeFi-gnPqfa^v|Aca z`3>ZA+NF&rT4z|=t&OKg%kLcB%NtL$&hWI%F+AlrkS}TK6;HIzh_s9$o*pglD7#lT zo@jYTS!E3JM9UhsE8p=%%Nn-2bKs$6o!gbqc*^?rA8mKxZr>O4TXk11x^mK%*Vdu5 zdm2x)o;jrJTH}e<+Le|u%o8o|aJ#N0o@lK-X!kXqXxS%rT~9pGvQMn;A9!fhGBno` zPuW8n6P0_Wcxc%tcAYPtvd?^7+k*oSty+QRc=2>-*(X-+nc|^kFWKdfr|co0)b{Ye zL(4w0>+g8VKJ#&H?wR7DWgppnwDFXE`n%fvT|BhxHM_nOPluMhX7$*>L+edNbIy38 zWiMUj96Zr_Q_`MpJkhcbt)6H+(Xv8`tiiehcY**gnDf{4$ zwLLfR(6ZOrvKQ{U zu6R1M_RTbH@kGlQ&)AM9TE=+w5?;nDNZ<6Sn|a2ycRv}lzb0m^MNhk9cRw5G`R*Ht z$1%!xKOcC~e|@RmLVV7ZH9+^vfiL-sra$EvJVpCT%rRU?^$s%5-a~TxHNL^Oa1G_W zsZ)H>b8X)tzUUty=gD>C{NLjTPgTwnUvz!${)qVgr>E~ZfASJNeb4#%%K6j( z^fkH9`E%_*!F5#0p|&d5lJ=kR3x36KOIJ=^Q^r}I-Yprsv z(bHa|KhX1C*IUKo7`=RV2*kr%=|`38aLtu#?hT2dFf@i~+NxZK>y9^Vy*R+b=Hh^u4!b9f>AM=HrG<;IL=w;oTFn5jES+dIbZS6>YR6M z#6!zFnKCYo&)W5*#-+A$*&EkqeXm_l?Rsk0Q@ft>92j4m022;0*HpWvczV$$!o=XI zU1y!^j3@n?1d}2j-rBVkPtK9PPlkAMobj~jORX<;`jTs(98+LQOf}H;qjtUV6@6-P z8t~OQhGUiSV;uFS#dOX1k=j=68q3%-2IK2ZPgBQ?ulVZp(Y59{8Hc?YFe7rDd|yA~ zDP#0IZ8ISrTE=RvFY%NyYOMBVZamR4R%^Ma^|{usI{lgjvtl;P-n7;FTBonco3`?A z>E{%AYkjTtwRrOVxiI&@lkdCE;z=%&yLkql9LG88^iiM7@srbeF&}dLIkf9bxxQSd zYv|37Twkt}r(9g9m*Lcbt`Wr1d=E>ZfIk^0HB0OcD{go!) z@s#;F`Cp;&l=(UN&o%HQ|GCEU--+-f|GCCG#FOjK*jQ=c(Vl+P>Q$>r@kL)5t02DU ziw``>LB`&yh$lIai_Fi(L(4o}=I3~lr!GxBYB?`?PJUOz>PViGU$J;-<^Ek`;GvcK z*Kvwxd~rN&Ya$-wKKF2)YmA4M`@FXn;-Td}uhpYgkK&8IHr7FW(dD{$Xqg9k>mnXn z=7DGf4=v-cw*}&%WvtfnSUj|h!`_yNhnBHg%VqJC@X*TqmmI{CT+OL% z988BPF^#sVk^8{BlzF&Ti(0au zC%IIETCIvF*P44{C&WWb4eJn3>YMv&XT+mDbuMcg_g$H%X3;hTx^PdF`AIF~DRcPD z+IB%a@}0T7R?C{F%<~y@yCR;{a#8JSSv<7N)4kmg4=r`{RW=&L0@XMtktWG)AV_N z9Dt0|j8C;H9$Mzw-hqgRmU*;R&*Dk0laqrG4=rY=rbiFjzev9#qFYEsL4o!lOYqi{5i(I%h8L(6lbcP!$e^iCXjXn97|a#=jIJV*ZT zfA3VwWi4OD7yV?MGVoN}pIaAA3@zC-tD*ui(9$KC=wLBINEzgrcf&zV}TiiehGQTcbQ@z8qfYm@8Zq2)Q#J9FTn*Fvc#zpdeE~daVI8WONkn{Q^BzNcI0$hlT z2D@G z%X6UYU*e(VSyA>U@zC~nYSmnRdiHDXoR;?bzLo4^!)dNrNmE2$IQ9L=; zzS^!qJh{J)(Uuy;L(4tfyB6`#au3&XT|Bhh=jGq=#Y4+|UaMuPz1$^Fz3Y+MCl~Tm zt8<+?#~1wu+=%$1UyOKY$z%C%mExi0ziTRbYLFbsRnb#}D_};-TezTG^j#FM5tW zS<_y0$Eec>*HVs?@86AkkmKb0xkk09<-8t6+r79C_hVvhYE?Y6dSq=6ARb!Y5!5#g zJhb$q_aNe-r609=6wjcqy@v*#^ie?-|5H%Q~^XZ{VS2o!EO8 z@zAnPtktP_Xjx14oae(&&Ok2ZP(*foQG)!n)7As$5XV|#Ecc595dHd`jP8*%yR7X zBiElA#X~FW_a@>=t~b*r*TqB2KB)H= z;-O_9RLgbo(6SHey^VNi*$35fT|BhxgL>~E9$NN6wSE*2E&HI}yNHLDeNZiz#Y4+J zsP`V?p=BRbr$+J6vIgzFk9cTVgVyR*JhZG+dmkVkTJHdDYFTQS9H!Kg= zJjrv$?MH|wIh3cGuXvJYx$J$6c#=bTs@1x9lIM)uPY_RXC{MLo7far-IaNe<BK|JTCi4&;-O`oSN@&O_l=gdV67I#L(4j^{5zc=L|WE@ zwOSMpE$h7APXiAvYr$GAiiehUUio)A@zAmstkt4;Xj!B6ei?XZS)xO%5i98HJ(~6%Q3bUx3f=cY0vRhU zmi13HRO5-3HBPNB#Y4*)sZz&yqGgR#%SZ9hvW}{TX*^~9be}f0tc`~<&%8)87OLTV z*O<-x;!+zAE%SG!F7cFk`~Z4;;GyL`LuGu&lexXOKdsYv$~%aiXz3$QwBCUoS5Aj6HdxpMT$5Y-x>_Qv4@sxKE2h-#_p7NezS6Xt!)1&1*Ltnn*DeozEqm9~l zqV*1?>0mtNJ;m;{(Hc**yl3dEQ#|Dz#2&QK8&7!$aX3xA;wkSSQkyXvPk9G1CQVyB zWT z#(P=kUq@HVc%o&0RE^ts%0B5Rnp(vZE$>09@fuI|PI(W~SF3o+JCglq<2RmYy<=%= z6;Dm8)wG(R@kHw#M^n#uqUAkEHDTk4);pf2R`HZ~Bx+tw)Oe!xPN1o0JmnpU@lZ|N zc%tQ9NnbtVDep+syqcu(l=mnn(bO}Z@_s~3t4SMAd5>}mEji{X&(C*hlQo|5{4}@p zQzP{#^W0ao$uR}m&hOsrt5-Z_p3_!M*?7tvpWLNJJY|mikv3K1$#WocU0=Q8DRbQ8 z+NK_OXua2H>J?9!2OpzN(|Dp~p6jbuJY^1az16ghr_6zW)6^@TnwEL6ny&GbdGars zdc{-b$e(D_H=fLqnFsso6;GKXf7Uj`z(dPC*jKN3${hKNwiyQ=TIRuexWB~+R)1h7%*^MW=(%6|>J?AX{uO6wJkjzSct7=e3vc?I+RW;>U*Zd& zXVa!u{nX?i$VW9h=I~wjL~j_Hdc;$-^m)$46RkHiO+DhNqU9Rr0#CGDV_!YuiB|eC zcjJkce)QEN*O+VTC-?KfHRjr?d9}%R@zDCo?Rsdy z=246Co^A|nQ}HYkW)GnU#osPe~;-OV*YLl?!)jlr@kHy5LsRQMPqeJXt92Vsw5-MZ86!Mpo&GIty~b14>HpA- zg?P#u{d?N_jVEjL%6QJRE1t4O|3TXn0}n0Fu)eX-SJScv%y%}xh8Pa6sjr^#WSwY8 zx2la0Px>;vHnl3AoXhd5jS&wm>%6{N6i?38(Y6WVp=F)dm+Ru8Wt~@Tig;*Q3-(i^ zcxYMYRhuCmTGn}ewJ081)_K+Dh=-Q7U_UjChn96-wFTm#Wi8lOtKy+$omXv%cxYJ* z_SLg^Xj$h~TOl4=)`ETYEFN0cdDYg4hn96-f8BwHmUUjW4dS6?o!3{-;-O`oS8a=U zXju#P*B^LjW&CY7@X*TmQ;Xs;zRLLBUVA*oR~f%**^g%_EU9e=#FO!x+^SVS9$J~- z|2y!|a*y;kMm)KHrqs40;-Qu2!zKd{tvp9}8hGXqXV<1y{dlIpRN8h%JhVJV`)XA@ zwDKI?W#FOZS=(2u;+a~UM%%84hgQw4Z3}D(`ObTgYB%hT$=pBRXy2;wly@ZWXy2pp zly@Xw)6^oK@{Z&^+MbQ4yd(LRrWWzkw7dtY_G&!k9m#hz^@^vwBl&=~cjGDVQNE|C zMLgvl$%nLk8c%tT@&ipR;wkS)KBDd0c*=W}A8G0pPkBf3F>SxbQ{JQeL{p1+$~%%z zX!|#w@*d@9ntH`k-jRGtJD~BD_b9*6)FPhpj^s1ifsLoUNBNbeUh$N7B%jj`YCPo~ z$!|2Zh^M?G`GR(E<0}5~Y{tdp?HjXy6iYHosIBlnaCtCKheYGkcTK1{c>4=Axy=-5tiig%8 zLE9OKhnBr;U#*IVmVIhXxYp5j~RGq*{4=#BOY4zvVHX| z9$NOP)j5cVmc4BMxPgb3eQI?s;z=!2Q?)D}TK1{cd5DLWy=?!4frpkkusR>{&@u=1 z)v|bKnJ23Y5DzW$WM94e>XmVtcSY5OxCr`H#;01v6Ro^Ix_IC*c6;~H)S}N5t-g+S z33#IQ?xm?kJkj!7U3F>WiI(5t`f3qRwE8C6WsRr&M)x31E#irm-|DK%8&CNi?;)C6 z#1k#Q!&O%_p7I;r!!)&sCt7_g?aIbeexrMYrWWx;t8b%S)p*KpbdS>1BA#gV9ki<( zPx+1Rahh7h6Rp;t>YBz=e#3g6rWWx;tDUd9w(*qTs9vV2MLf~+J4clq@|52|KBQgH zc*<`e{FOY%Q+@;ah^Aigl;1#Jq217UdbIq`(O1iO%5NaA(ozGS@*Bt}G_{JS{08zG zEj8dNzkz&8yQJ}y-#}icr3O6ZH;~V0>KRY@4de}4YQR%|1Noe$p7E65K;ERK20Z0A zkS}QJ8Bh5Q4dm2x)-gq>%h$mWkzk6@v ziPkd*^wle#XxS%L?u&{iTK0*3wTLHL_L9~80}n0x#J*Y-53Rp|wg(0tTK0*3wJ081 z_KDSl0}n0x#J*Y-4=sDi>Y;&$mc3+OEsBShePrdHDIQw(k$tr&9$NO1)guEBE&Is6 zdKC{Xd(G<6frpm8X8-nqhnBr`_1M5e>rF*duXv)>W6|7G@kHxQNmH+QqV;E|J<)ig zWv|*-r{baIT}1Wdz(ebeLQ~6lqGcajJ=J)kWgpwWXW*e_uUkDm@X)f??WeS&|jdidt*2DVP02^W>Y>Z8?DK^9A*aBN(D{PHzur0R3_Sgac#g5nsJ7X8@irug~ z_Q0Ol3wvW9?2G-dKMufwI0y&h5FCoba5#>@kvIxR;}{%^<8VAqz==2sC*u^Hiqmj9 z&cK;C3uogToQv~tJ}$t8xCj^H5?qSQa5=8PmADF5;~HFx>u^18z>T;GH{%xEira8I z?!cY63wPrl+>85gKOVq?cnA;U5j={=@Hn2plXwbG;~6}Q=kPpUz>9bZFXI)wir4Tu z-oTr93vc5cyo>knK0d&Q_y`~46MTx#@HxJ~m-q@_;~RX7@9;f-z>oL|KjRntir?@% z{=lF33xDGu{M%}^g|`1|chE%-6>9V`1ct;=7#hQ1SPX~ZF#<-!NEjKTU{s8T(J=SbyT1i(0EQZCg1eU~quoRZYGFTSNVR@{86|oXl#wu79t6_Dl zfiWJh5EEfyOoB-<879XRm=aTAYD|M^F&(DI444r!VP?#NSuq=C#~hdw zb75}GgLyF@=Enk95DQ^pEP_R`7#7D8SQ7uiQdk^NPR1!X6{q2J zoPjfO7S6^wI2Y&Pd|ZGFaS<-YCAbuq;c{GoD{&RB#x=MW*Wr5HfE#fWZpJOR6}RDb z+<`lB7w*PAxEJ@~emsB&@em%yBX|^#;c+~HC-D@X#xr;p&*6EzfEV!+UdAhU6|doS zyn#3I7T(4?co*;CeSClq@ew}8C-@Yf;d6X}FYy(=#y9vD-{E`wfFJP_e#S5O6~Ezk z{DD957yiaS__tZ|ciUnIUGz|)Mju09NDPIcF${*qa2OsVU_^|BkueHJ#b_8EV_-~- zg|RUX#>IFT9}{3gOoWLs2`0s4m>g4JN=${RF%720beJA9U`EV@nK27y#cY@zb6`%) zg}E^g=EZ!N9}8eXEQE!z2o}X+SR6}WN&E*(VQDObWw9KV#|l^xD`91p5^R>vAx z6Ki2@tb=v29@fVO*bp0GV{C#=u^BeU7T6M7VQXxIZLuA;#}4=}cEnED8M|Ot?1tU3 z2lm8X*cY>oQBhJ z2F}D;I2-5ST%3pVaRDyGMYtH3;8I+M%W(y+#8tQ&*Wg-QhwE_zZp2Nv8Mok8+=kn6 z2kyjOxEuH2UfhTK@cNB9_@;8T2t&+!Gm#8>zl-{4z(hwt$Ne#B4s8Nc9H{D$B0 z2mZug_#6M=-)6htYl|Ip(L;qAeGGviF%*WzFc=oYVR(#y5it@*#wZvSqhWN6fiW=_ z#>O}p7vo`kOn?b75hlhYm=u#?a!i3KF%_o9G?*6CVS3Df88H)P#w?f>vtf43fjKc3 z=Egjj7xQ6$EPw^E5EjNFSQLw4aV&u)@gFROrLhc_#d264D_}*egq5)hR>f*q9cy4s ztcA6)4%WqbSRWf;Lu`bNu?aTCX4o8CU`uR;t+5TZ#dg>pJK(?A5j$aL?1Ejf8+OMY z*b{qUZ|sA8u^;xw0XPr`;b0tsLva`m#}POZN8xB3gJW?Vj>ic&5hvkfoPtwv8cxR< zI1^{#Y@CC0aURac1-K9w;bL5ZOK}-4#}&8|SK(@0gKKdeuE!0y5jWvx+=5$i8*axP zxD$8bZrp==aUbr-19%V*;bA<2NAVaQ#}jxGPvL1igJ0f=%R-T zHToC=Lt-cljbSh>hQsg}0V850jEqq*Dn`TT7z1NsER2nDFfPW!_?Q3_Vj@h8NiZoU z!{nF(Q(`JijcG6~ro;4@0W)GI%#2wuD`vy&m;-ZSF3gR2FfZoA{8#`BVj(PyMX)Fq z!{S&1OX5FR3QJ=dEQ{r^JXXMpSP3g*6|9QYusYVjnpg{KV;!uE^{_rRz=qfe8)Fk} zip{V&w!oIy3R`0vY>Vx%J$Arj|cD|9>T+T z1drk|JdP*uB%Z?4cm~hnIXsUS@FHHq%XkH^;x)XEH}EFj!rOQU@8UhYj}P!6KElWN z1fSwFe2y>hCBDMf_y*tNJA98H@FRZ0&-ewu;y3(`Kkz61!r%A@|2DUNyDfImMGqBf z^f3g6#84O-!(dnphv6{-M#M-M8KYoSjE2!M2FAo#7#rhYT#SeDF##sTM3@+pU{Xwm z$uR|{#8j9X(_mUmhv_i`X2eXG8M9zk%!b)92j;|Fm>ct8Ud)I2u>cmtLRc7!U{NfF z#jymI#DB09mc}wz7RzCItbi4<5?014SQV>bb*zCku@=_GI#?I$VSQ|X4Y3h6#wOSl zn_+Wofi1BWw#GKt7TaNa?12AbN9=^1u?u#^ZrB}rU{CCYy|EAW#eUcy2jD;)goAMi z4#irsL98cg$JcXz644%bvcpfj{MZAQU@d{qWYj_=R;7z=RxA6|%#d~-kAK*iLgpctF zKE-GF9ADr|e1)&^4Zg*9_#QvtNBo4J@e6*%Z}=U5;7|O8zwrb0(F&@Up1eg#LVPZ^zNii8F z#}t?nQ(0#?LISQ)EeRjh{9u?E(}T38$FU|p<-^|1jq#75W{n_yFH zhRv}Bw!~K08rxu7Y=`Z!1OAI0u@iR2F4z^jVR!6-J+T+|#y;2=`(b|^fCF(54#puk z6o=t(9DyTo6pqF*I2Om@c$|O}aS~3(DL56U;dGpVGjSHq#yL0_=iz)@fD3UEF2*Ie z6qn(0T!AZb6|TlLxE9ypdfb2;aT9LFEw~l8;db1CJ8>88#yz+f_u+m#fCupq9>ybh z6p!I?Jb@?i6rRR2coxs$dAxuZ@e*FfD|i*J;dQ)$H}MwU#yfZy@8NxXfDiEzKE@~b z6rbU9e1R|V6~4wd_!i&cd;EYO@e_W=FZdO|;dlIjKk*m-#y|MCS@L(=Vh3IHP@zU2 zLtsb@g`qJFhQ)9g9wT5xjD(Rf3P#0f7#(9^OpJxGF%HJXco-iOU_wlUi7^Q##blTq zQ(#I=g{d(Orp0ua9y4G@%!HXS3ueV^m>qLqPRxb5F%Ra&e3%~#U_mT|g|P@0#bQ_- zOJGU-2TNgTEQ4jS9G1rlSP?5>Wvqf#u^Lv#8dwu+VQs8~b+I1S#|GFC8)0K?f=#g* zHpdp&5?f(wY=dpF9k#~~_%C+EPS_c{U{~yh-LVJu#9r7N`(R(}hy8H?4#Yt?7>D3c z9EQVj1dhZ}I2y;`SR9AraRN@nNjMp&;8dK3({TpQ#925S=ipqNhx2g(F2qH+7?_uyXKhx_pW9>ha<7?0pl zJch^d1fIlGcpA^(Sv-g5@d94NOL!Tt;8nba*YO74#9Me9@8Dg$hxhRTKEy}(7@y!% ze1^~Q1-`^r_!{5fTYQJ_@dJLuPxu+X;8*;H-|+|j#9#Ou|KQ(dyWeYz9dyw{g&KVf zfgv#zhQ=@$7QVSG%02{92S#w3^&lVNg9 zfhjQ+rp7dw7SmyR%zzm&6K2LNm=&{OcFch}F&E~>JeU{rVSX%t1+fqo#v)i0i(zpr zfhF-DEQO`943@=mSRN~2MXZFCu?kkjYFHg>U`?!rwXqJ?#d=sD8(>3hgpIKYHpOPx z99v*ZY=y0{4YtL0*d9CJzt|BwVQ1`uU9lT>#~#=ddtq{5Fg=Ve1cE$ z89v7s_!3{?YkY%m@g2U$5BL#3;pbMX8V18+I1FX2&;P%@Ld&&QLt2KNZ$WQi1y+81e&+?T0P&EX4+Wy2}+T^V4hvYANpsIte&vKHzQtxjuIeiAa zRbPBsoAFWhck-A0VyTN7mObG${#K*x5zD>5fVdzQ(l#+Bz=W7c+kBYc=dm%4&$DA0 z>xl`Fxdjb;z92J_LvQtX{d7+DGDG-+7WR{hk%m`}R}?wllGZ&p*KU`rke`<1BmK|Bb))bNk zGi86PM(y|TF)d?W{NKL2+^cu``*fT^yF)xpybJRAzxM~ZPuh=Y`vC9z{2<=+IT$0o zU;KR!^e_AH+<)2k=U&V^fZUgPACUQ>eX4k?c#3$7nEN+l$$iwm53l%aob__e89Pt= zobe==xi{NtlKZr+9=T`RkBOg%kBah=`Qd->Co*T`eMOl|Zua>~q;8IpcO02(^1dVU zPTqa|Zyx&J`;g2{c|VeQD(^}%XXU*~=C8a%$y}EADZO0xd7?a)xmPXz|93;YnV0jv zD06h)9c8|5yLU5pw~g1#$7vV_ZDgG zy~OzT6wefQ5#=`TWin6Z9ZlxUysydpnRhpN2DJARcf+neuMA@#&$agQqHAt1C%V@5 zvZ8Bm?=NnQO?+M$i}<{exRAJ^xS+U!xPZ96IKQ}_IG?z#IIp-4Twi%VxPs5CVl~_d z*VUdCvmyC$&*d54o<+>{%`C1Y&LplV&L}!Y-c4qGkoT13S?apmxt{6#eTe9qdIyWH zDbL-!59}Q%x~AR%Vy;Qw^3JfgpSYH|uehd|W1r=-IibC~&+}kzB=`Gh8xvz-b*!Py zHRfGy)=GJAoApxO;g)CU^**17ll*<1c!GG1c)X~u?c+paw0*3Y@p_DCthSF9bNt!G zZN;U#0AFWe; zR)eesTc>I3`TIS*uWd7J58@&1i)nk;=Lf`h#QVj!#rwp!#Cydz#d}2aLDrY8yM3?n z_v`+i(%*OayY_iHacFT`aVT*baY%70aR_m0u`kXk8mC$3XN}pq)8D)KoUyT&&m+P( z%3dJrq}Cn&mV>M(^Ikh^%DmgoI;t%vSyQ#Q6y>+M9|;h{k)? zX6=o|!^Dk5T60;qyg__Myk2}- zG$#JH{%?Ki@6Y@#7p+f3xoCYX%0=rVQSMqFigMceKz9H z5z%-4|9#M7{Ki6lt7u)R{ddur$bPA1EM)K0Qq%0qS`YjF1U^6I^B=g@-{XtElYLCf zce1Bx`A+sXtzX2k#h=Bo#Gk}5#UI5n#2>`b#qY(@#P7sh$G74r;y2>Ru1$`z*K4Uw z_I)k2$sVw!HrWrh)Fykwmg~wsvGt_*srZDbHm%3Sk41gWzOwbGs5Y%f#MF2TC9&t(Rd8W>4CdoAMq& z|60T2C8rn;`JDdfTlSPKeail_rBB(vwq6xafjqTFa2z@Bo&@=8jp%Q=@1EfENaAs# zoaMblOAfn7iE`RK!ZCffl|0L3_WiB%#Ro-w={_W0D&8udA>JmQDc&WXE8Z{aYd5(w z&RX)(&ha0CaoD=t-#M=_(vqX@1LDQvo#Hv-9pc&I?c!PDE#m3oVXjLbTE;;;c|XM8 z`q45z+G^50$Y*0F?`2xXPI#%;}f9&V;8lvxZ))WsE z*AgAGv$lA!xQ^(Yopr@S#q~tj)LCCVT--pEyUvEW<8oOU)Aj}|u(<+`(}c&xaY zs0N+Q#pA^-M78N`DV`{9C8}L#Yw=`p8&PdLALApRSHucFe}1@e&tHl9+ELq(ubtmTeeL`q>TAc?$nOWO^i!WZ=ZX5-IbYP*&IO{rb}kh4wR4fU zt$4Axop`0Vvv`%bi+HuTt9XsLn|Q6byLg?b#+~cMJ;fVDweQ?0?k(OV8WWwH#eKy? z#pT7}F`UnHVs@WL5a$v{6z3L466X;|7Uva55$6*}74@q#nz(>Cy11Y?hPaS8rns;; zmbi#Gwz#M`j<}dOuDG~3p16cKzPO|~f%qSBLUAc^B5`SPVsRO95^-5^QgJ!=K@lhKm^(NRD#!+kdU*Mz>-D?#7uRj>v& z!g`RGdNr(rbs=xHe%7wL-Vpj;yY5;pYS&zy1Lv;JLe76W&cF${46oos9FH+@8lHr4 zR^5VI@f`NYe)@2(DDU<9;zO9k=Z^TG*hAZA^{9@+5iou#W2YWg{7p0lYPGA?zLu9- z{c5$V<)vN=##Fro)`l9@3t$wC24l81PHWd$&yRVbe)Vja9Vg8cv)N^A|EP{n$Y}5L0v_7w{~e!Bcn|_u@X> zgS&AT?!+Cq9k=0mT#p+ZZ#WF^^L4lu*WhYgg)8v^uE6_v5AWg~yp6Z;Cf>l2_!Xz( z6ugGlaSV>a(atjzhQZJn5<{Sm8WqotcpNX`3A~KQ@F*U^!+b4tef}5fQRUhX#N3z% z4`43Li8){#RK`PP98?FuSf~!d;W!M3;$R$tlQ1(*#<6%6GvO;-j7#t(zQE`B44>i? ze2kCqA@0YFP`7G&Oo!BM8cdC;FeRqICfF1kVU9k&x#!lD~|HTg29@}ACEP=(b z7#77MSQraoK`emzF`s!tZM%-&HSW6C!Wipb3H|80-md(1^{1O_UJlD+S%04{{s&uN zOKgtKumUY(ZD}#}T1Gq($KzNSZ`~ucZ-p^29>&K=7#X8u9884OFdBiJ>qwhQY8H z4#Q&v=wIg+s8i=w+=kn62kyjOcmNOLAv}yn@F*U`<9Gs3;wc=0$>2Pl$uR|{#8j9X z(_mUmhv_i`X2eXG8M9zk%!b)92j;|Fm>ct0C;aHT*MQ@7)vvn>R>BHc4$ELEEQ!Uj zC>F+om>=`PvAT}ib&js{b)CEGI=Zf@>-zfo+}G#6KKJj#y|^FpQU8DK++y*85NXXsvCn&w6Ih%$}L>*)T_xX)w_UTL~%S&C;G^X07P1BQ^#1z}~ zSG0*ISi@S@v61a)XSL=znICw|~Zj`Kao_{#PWb;y3r zm)y^H*6EK(Uq@$B0PU7Nz&q;DQE9wIPjjB-2bHZUL0j&y?jgS5BObswj@*k;Q zE72~|avnpwM8;LLgh$!J93J6b?xQEYaGlXyW;2T^#O=8n?HOs$Xd*qhhwe;g6^oh4 zA{MfM`OIS!qZx@hM0XR{HLl|j1~Hg{44^;#=u2G3n`z7p8gUa1xse7KUr~K}qg|p~ zX-Ny3(~Mhqm~o6{47X94i*R2==Tm`-6y;pbp$KPFn6oHEK`N1-)96Y!@{yNQ$wNez ztI1G7gx?;I@2%?vc^N!ILN+>v5#AI??513yG#BeXJ&BJI zA2VM5n=)SiveNs*`*G~>0s7#0X=5Q>i`vwoF4tk)q_3wwH_(6^X~<19;$|9i3r%QB zGn&%^{gBoVX?>E`H)(y8-h)0%>$|i*OzY3Iaga6+(#A!4KksmWcR9#=9O8Wr^8sVH znz4-IVa79oiA-k(Gns|4lh&_k{hQX$Y5kp^kN!`O^cnjD$M})s{KU`vn_u{q6Bxhg zfD{(eA;xw(LzajC4{YVU#+pb%$Kn6oLuITYnwicy>roJUDYQJON8r5xp{ zKt;}Xp12L-x=&^*aT~<-kLw=SJFc_(27Pc1fon-GXA@8H4BOekPF~~-zQOg!d89aZ z6z7ZL98vroE%e@SE8Fn?(ECI0k8_0K3mDJg%e=xajET@#2=}m;H`&L24seh|9A-G9 z(ARN}Gt|GK`i1Hjs$Zynq56gD7ph-45A_Qdv4o{8V+AW&%^KEGnTx1GRW79()wz-y z)T9=*sY^ZT(}0FFqA^WqMhjYUJ8fu3dpgjGEh_r*}9b0@z+ zv}^L)L_5d7Spw}8IA3t4*DF}e60}7U-x@0$(SXWSB5t>el&37EDT#JY7el+J-Q#J; zPOoDPt5}WePJTP}PdyX{ZiG5udlInJ<%VjOVIzRrF_V6 zM$nHwX!BGr?4OGF?@l+gPx3kOi}GiV^8?>=lp}o2rxd0T1vrD#$xmLgM3m8nG8uiInn>Kwud$1b zJjr^dv4ySn5x-JJ(by@gf)l8FpzeXX2ggwVK;45QsC(cuCHT_*EtUE&s7D>NN$?RL z+g6!MTtG$Z8sd9M>Qdz^yv$4N|+Ism`^+= zW-*(&>}D@7a3QWIxR~u+&SlhO36E0+pTmJ`4wkc$xKFAvh|{@_tEf&sGUO*qbWPks z{^iPCJLJYe?mo!Hfm|HO#erNL$i;zN9LU9iTpY;7fm|HO#etI_2mBN-LQ&487{w`p z+-+2nQk3?y-EaELyT~gf^UfD38L95NRgaHJm(nIrvY*q$=qrqr94(L=PGBG z%$v*GMC*`iiR4<6`Ej|IWL|xJ+8RR@7d5L7+euwfod1FZ`RI`H|z+U&FPQzu4cth6@{yNQ$wNezxXn)?Bu$FIaZm6qNBM>$s9)BxlDY1+%BT4&JJ`;% zJcBWioy;s|Gm{r6f^#`-kafQ7b3Bi+k~Ma+He{SPqc1bsC!?J*+CLMw(+|qH4UX|W zU-30B^LM_(wP(L%G$R?oaE9>^Lm9+i7CYYiN^OzVCRuHh9YBBj(U(3vKyP|+Kd-YM z;~;w`kF$d1EMo~v(TK^swD^+DP4`ghgJjDswSyX-6}f(u7-R%+1_HBN}oe4XCd#j}woP z@4UXA>!?RJy3&Qtw!7alKUuEM zS;|m~(v;vlN^&)qInO72%4dAe*L=fKzTji~m7}8NBYewOUZ0`d&oRDaA8+wCdwGL5 zbKjMNnDF>81vnP*}Ji{lqlRVScTq*C8=}$ifFpxnEMh+?CS~9LB z^APHu8IJ49jARs}8N*n{@i60=z{Hc?-?`)GK3D$CpDXS^_fzOT3f)70^m8Zi|4$G; zDSk|6CbO8$9OQ}rh&i+0VqzSt;^#P$xhF9z6fZ(CA`~CuXS_pkA$fLul5z@hOpEt( zO`+=vA3-iVT*zV`GvfsS;d zGhOJ4@06Ll>CQd$;9h!iAHBGr-aJ4b`kw6m&K*A&5C6>Z(EWEiZD@!4Fm(Tg?!C}` z7nH<38A?9V_3iz}0u z!c?3u_H?`WzN{)6@*Nx|MKFJ8OB1vd) zufSd%dj|V_e#%K2*{x@AU_@kaZ^fKX;$D4w1_pKOshH{~RlHYNP;i8u?{|kFiPC~Y zgDDh$4Dn=6Jg`$}52q0SP3hJPj0lc&>iQD6=@H$6IPY`msZ1N)da0RGYR7InwP`1? zcW^l8bTY_Hp>(I62qk8K-H)Iyff06!&sQi;xzaC`Q_73w%DhlcDKD1uf1#XGoN{(w z`g9Bo5AJNIX}}Y73F{lK5Xm$b5s~5DdUdt)^YY*1?zQ%EE+FIcX?ADhq}d&dlV*29 zX(^CcZFKD2EwEp3ctp3bUPOHf;a9^q=ptd_zevy0B{ZyKB)tpl9oDT^WMKcW@F2!} z5NpTozpf_Zb)Ge}5&)|rV5?u>d%2Tq;Yo+;rB}@BP%2T>jCI2#& zN|#gFxS!bP`nt9XQJea3>>d_ANnB$Z zyDfM8|HZb;Yvf3ZEccxk(Dox^(d3ho@K zwW zc?grldQSgc+1`{*8PqKzGO$a>&XL|@+@3Jq)9!~k@~iGd0;36&n7-%%srEHK?k84X zIx5ZW%Reit{y*0j`|0bnpVDodFjikWMiF=WqH$ASQo;Si>Px2>65YQ1ld_#lQuevN zm`PFlso{QN^`-N065YP&3qfVm!2QJPOHee4ZeRXM*#wS$)xWtou>FREE!Z9mg6Y^KI_* zKXx6)$hS;2sMCi3xb3@ZGn1X={3llX6O{5?`?1z$>^ia9pAftM?t07o7w!KZxBXb_ zEq0w)?N4k*9k>7f9BX{c+;HT~n;D;pKNEkh|Ej4Q&wlIf&anQ;huydCb+JFzEfd~JpLI`;?@C*@%h(_5x*e3ZZrJtq zSvQ8*ySr&U+np!ee17FS{v+qv%a0W z`mZ-0$4x)aIwx>TSc~U>G`9VX)z)RZy)xD{Q|_kS-dt-*(V1flC23~D>R!G3&XMJY zPPyuCd9R$QA17WtPP~~Lcf%LX_xJ7pWqa1rh6BfsJ>L6SyEWPdt<9Lni+^#Udp4^= zn-}`M(;kN)Yunk$;X@v;HskGYx%1`><1TNW;$COmd3DyoQ_Go$5X)UZao3Bp-r`yA zx^m{l-&>#VI&|kL?s|3BcaY`G-yG{s@?SF6{9&zG=cTQ?)ARKYZF|q$AA7v{bLY{$ zPrP_ku430l1etZe-?}$<`_EmoPqWCT~-u-_g->oIzeK^Frm2Xhm7XEr}J@;|fjkT^+r_KB7PqCu?ca>`O zR!M6|f^rYvC>Q1R%e{Zy^RKn1x;iNVXPwKbmPyjtauX+OYQ&rbc4CcTYy(0*S1ZpQ7!d2;)I z%6>k~exaP(|G4YHt#>zDr+vwOif7$^cwt(l-fbBF#|2kLMw)Sd_I!2LeL1r(9-8$w z&%~d2dML)aed6eoWkW+v7;eJeR&>z&t{W$8=C$WM-{x7-ms{kB zuCvS9*Dqg|t$Eg4(NDAWSbBQ6)f|fSl{?1ESzZXaBE+mn2^FK7$%9TjyF4O1*{H66Lzo; z21fmKblzs~J;b@b@HpQuW4!kq=X<7|b$iFwz~Vy#tQ+~RzY|z*9M8jEpVSD7wr&OA zTNpWRi1&SPt8cdXW&gP6)sJx=mzI-$#e_GgcROd(_OxS{zh>^A_9p(sEAQT)PPtp= zJW*!7A2;RhnedjmPkWj7nJUcNj3t|Y?OF>Ub^#K9p%;EmvLoC%OnG=!yleFTw?HjGrs}W-mjwPU#woh#M_zkhMV{l@BVPE zw+;Dwe_TIxh#8;IIQPRe>w2jRT@KG(Xk91R6Y`tquyHYD0(T}w82-PG4VW4%1M9F)H#{oRpm z_{=VMe3*M^)$^P$ z=+k*wzvBEwa#wB~ZN_hasTX6`;VsHPp4y;I2a`Y4^n>rSobPrTJLPxl%9(OyQ-^P~ zt~I(hu8sJ$7>}HG2_s|l&fyq-(%*}-#T7n;q()QOIn9^ zgjcSbqn#-iz`PWgI&A(!Q@^Hl;&7svgPXgXb>*{;_HHvfQ>tRtp&SNIydfrij5%KkuBTd!%Ojs~9YZRdTk|E? zIb?C}jBTHt&u(X-b>+uY!J~t>T9@7o$QoULzIFMvKGUymEN8~&l65@qxt%MA<*-i9 zp3=46%4^oC1?dvDIDWr{cCn`{pnXZl&eIv;#F;>$8Etsj2*A>EYw zTdh;6tNb*)^*-yQ|Mweym{HQY{O8a3QH z8=n2Awws$-mq+;R@7O)N=bUrgib+@d{euJ8 zUliCre$1~;te6csa=#s#$2$LB;~j~bKeA$WA8hewf;-mv>3{Uzl|01VKR)-;OT>Gx zy*F!E{OxUTJd4}!`Gc%`<2IGvG=5f`ba$T+_r20hkM&;v+}Ye z!rgbr-G{mRKKFMDcmL=9KH9S`>k7H2{xUpn8Lc1f5E1HJyv`BZufV&JLdZCJg$8)QIZ+7 z8$Vm(TZ?FS*SAC3@AJObo%WuX?|uJg{kQjZ?*8wQ*M6M!f zD|YkaWnH7$@4ve)Q?+^Q_lpKMD3QneozC4?x%)HcK6|#mch|GKuYdmc!MWZ(%H3ai zzZ;qHaPL?5KHXvee&=uY{kzP*f3?~7$C&oqeZCt$+wZ&kS*M?~y?v)UuFmr&$c!KR zcl&(2Kbv*zK7ZVH+~ z>OQky-E8)&L(K1W^Ud?8nD-v~{P^!O=cOI9Pj>PT_PYggOl--1_rik&o85i?v)>t=@>R_F{k?saJ0H&YKJ@mv z?)W?N;{IOp$h!S~(c`x!U$bsp>YsOf=5M(l2L?C(wScz|cD^@4ynVs*ze~8kPegkA zV)yysJYU@3BYK;B_jim?>sGI?_65)E&Ustzx|?Ga{V4S4{hv0Q=T(S#ey}e~S>d-; zZ|yYCuLCB1mUlj9AJaR|{_vW0E3C};_k*etCcQH!G!4&@^>teR(8an@DDyY#|0v?^ zBi;R{dtbZ1SGeoX-RC&#e-!)nL?as{+NXVcvJn>#Y2P0HYbftU<~ba9Jv;MVQ~UaU z#n1b^eVucky1$n+Gy5Tblb^?gL1sVC?;y|Z=SzC~^_}*6Ziu%(a<1o|sn74p=KgZ7 zk9}{UR6qG=UuB-h?Y#Z5d!M@Zr`wKmUvBowIpf{-#r>}RJH%{r-Zs|r``v$j``{cmuJOhNYkx9CQm_s$ohd7qE6_rcp+)b{qP z&hI1vrXSCKhj917&h_5#es8#$vSVnHm=4y>0u6>086R%e-4yG3)kj;8#<;(?`MiCo zbN*xAKHs@-dQtw?f&IC&m~{QVpx+tX-xY`#$egai&KT>4-|f7Qm$x+Qzn8b~ycW@= z$mHAM>^FO^9eQJ}b^Wu)=V!F9Yu$)<=AD_l3z_{U`%-&9d%%3pl{U{c_xFT$+K=yf z%J2Q!uTOl~#o4ECnB?ux-F>;cUfkc6oc;JTvyc4U?8`G*&VGHAw?B8zA7lD)%d|Vs zl3Z`H{9!CCgpDSm&DVFvr^ zDWg|4D`}mtlkLd6X+ypJ^2t9oZEbX*7{3psYTu^;`|^g{R?U4agx?K%H(eFe&Wbts zI4Jq9aMS)JZ@=t}C*#v&$~9t1k{%G5hn~zh7s#8F%)}-(F4E z@RwrNr7ZIw?Wl9sI-73hzIE@hKMy<>adPAp>%v*TdSUO)cJ8~7e^cQ9|1AA|XY9ZC z)ZhQ>Z$YuDeS>u<(WK!2~Tzr)twN~eMTPTBq2W5qK-f0wJjoz>sBW`X|i zrLrNriRU29Y2vvEbDMY`!n`J)k1#(9;1#Hif>1kZ`&Fp@LMRNCQ(uZe{ZSu_Lj6?V zi$VP_juLncy1oR^HI{__o?q9lKLOUC>FQ5u%bIvO!ty3wfv}>9S0bzo{S96(G1P;I$A*GT0(iP z(Avb`AZ&v-(H3u^9o|NJ1fl~vLh(-MY~n$L!6x2?u&arO5Oza%^gt+jnz-8Qg$@XV z(v`1s_J+>e2jPf7q>1+>?1%o)<7prUL1}|A1n*!dhG94~ckf~Zlr|E>p|z|$&FLtp zjMB8WHRr`J8e=dPUcod>#|$V<`AXNlqjT%L znV|luZz`|0R95X2HpgiRb)C9K&BIJ+E|jl2DzE-1u0G9z`mO$^LNaLFGSMNbyy~>Nmv64 zYonG4>k>A`Cuo8?P+9=$BR-V32#c`<^`Lw|C|z}wrt%8ibT>`yD^Kk#h5Ato>VH*K z!JE){v_&H=hP`-{e9<88p(l}}iTS94X;4`em zOtgm5G&ig8Ih3dQQl8RvyxPRSAp8<4r~WHX*RTdUm(KYWzJ|)Rfv&GN-oo4Hh4$!x zP6)?ZM4%&-7KF|w>_Qj}g(2vP9_WsBSdR_p3gs(L>8hhNQ5~fPLj6!5l&-SM3qvT> zkBv}2bbj?sc}i~wU5~D16V#5{>jU+@FE&HvloyFDP`-|puW`}%D6ZqJNQ*Sk*eXxs zrn%S#rRi9q#$0o!xaKGtngjKzKa@8U6ObIq&<_Lf0S215j=w=Fq{L__Zw%f;5+ueD zC~vGe-frT93E#m;=y(TIc9@APeJDoYU2{C##FhRnR91N1DqrPQR%tt-YZ;C2p)t^Ps*h?@Wp_d2rLoa9sqf0)4ULE9V-GZ*DyKHp zp33fp#$S1ZpmQmIA5?!U)V|tQ{(fjqHGgVT?I~aFs12nZz(H)rA!u!=&Nk>=Dyw|W zb33R_wWs{U*n}fE3a!^ZP&;ZvWwi#?rqWa{5bdGzDy#fs&^lNBAE12Q14>t#%C19C zsN8xS#|EP_VK7ui`KqTpH|+$+YD4GJ{iV7maSBRP-;}O)R8Rd>AJmuA(6wqD6j#4g z_6&4=%F`I=x>WBh*5Dk@V;zlc z8ERi`N8<{bLUmR{=T*M?@j4nnZK^%xUqvG{gX*fD@~`1K^z2^&wW<6Ys0ItFt9r`6 z38mG*EvWBWW4EDv)m;XiOZ66^J{n^&?qG>gi?9wfLTxHd<+36RR9?(U0SgIgW?;9ILF#Wrf<-7-oXfw;~NxJ^`Vg zmph!eJ>n;EsVk_8M!A^FEWeo6wKA z#ztdKV82^yoHY+x3(TeJ+IdQ69^EM-YadE#~* z%Ghz$%}AQosn(^^Sr2yJuf%6T>yTr=%uc?&=C!_6XS%7ce6>Sd>2_H+jWuuQ(Z1b3 z^@+awWr5lx-(LR;KO`+HIJB=@bRJOfk9*NC7jhF<8Rez=!iOfl+Bx6!yr#UX;q}lIC!yZSCSw7?;{Vri<=o#@FRF699hhIgg zA8Nl6l0esA8M+4L>HM6>uBY-UtF$Vl-6GUAR)xlFAED~1p2}7uO=B3tvBpDfD&I0? zd040&yA9=6ck=9KiN;m!E58P`rq2+n%@{)R{c3W|{3_3$Pt7a&ezm|l@T(2#+Vz-k zzdF$R)Hso6-y5uNttEFIsZF~*owFF}TK`&eDx-5Lzb=YHZNa`D)Mh;>Uv-sV1S%5% ztyksMhw{~*22g)>EjpLZqk099n)q45hJ+8n`m_72{!-Rn=UU^s#zs(kYAZK#Q2sih z*6k%ijRnVkjnM>6N&gWKI9B^=Tlvj6zU}1M<|De7n5L7D996MLxVr*}G01yDn|2 zte)HUbN`wtLz~L?dmRO#`YoXA*8H}l{8PfzAkTh|t9{Da&rX$Z1F^XWvOe|%g*uJ$OPSUsuLgakcBe8nfkP2x1n>Uck=b_Y?o2{%5RShP+PFy57cHL zl&`wVPYadl0M23ObtF{2`a}D6+bXO6s4qHaC+ME5jI2;UmEReALQ0&^Yyk z#z|w?7Rqze6<1z5sGQ1Z9yLF2qZh)^8%kHX4Cn*pDP83>&zegeD^F!Rn7GnaR_RI$ zG@;f+IMfH7TWdghZ=wlwALt&}H7ZZn83A3Vu0iRMP@dL+;u?p((EX7cZIBbXzjQC> zMRW9n?nT{iN>@3R>5l;z2$jo+SIx2VR5m|!z5>v>be>%1Sa~|P?tRr)UA3pWN^5Px zW`u*F`l_q`C{KNQ!^G7$9S=5fjfvtKmmyFebiQ{`8^zEVWl&lij(4FvrK?;?lrqQ4Q`rC$SGvk7U1{}9Sd(xB)CcuN-zmzgfsyD6 z&Fd(Hn0O;Xl`8`sk2diJCSHwj3^Xpf?iLse_dls9tv{&rMSsDx)-=Q|&2j zGBhq4rzy}_G=Tc9eyZ$LC_e%k16`x?r$OUfAF8W*%AbxI7=h7Ho61+3#Q7X#|o9Nbgehl6O~cg2N(_YN9R$S%AXCL zM|pFgd!Y%`XZ2TQ=R)_!hnNSoq3az3U6;!0_#@26$7qdyP@8H``MT%SzS7iIe&}9R zd6iYZ?(0@ieH|-QeiU+{4f;dR0hJpFrM->?P`@-s3!(a|`w2qP87i-`YD32=r?&On zP@mKv#nqpgya=D!U4*r|VLlu0{D1F#(e>64jyn&!PDlkJadg5R5`ssO%R|zUr&Y zIH;VC-Lg9V5;~9ab)FvPSYdbQS~Xs}hBa6Q^;z?zxz+mk3Ysg;?Jx|*G`Q{RJYPe7 zQku@GH1$`{5XE(@u~A(8UyF5Ej}1^iG?pvjj-TdKW2`*&O?m2{(iK-fRd*vcLG@Ku z*RmNZuW~D}1NH;;Q>GzJbz}uX{vwl&@ojgQ5N?u0Cyt&ZRm#pgEWgJxkQz8JLM#P~LPX z&rMf+1XTB1doFOcKh;wmmE8yRN9R^~l~umZuewUx zkIm3JQF)bBzOGf{qU+SL+EKp7=>RlV%Gda6ycE|sDXwFM%2(Ng&{&GfDE|;Nf12~d zSPYGq#!X|UvN~4XBTyMP|0u^=BTJw)qPogI2DPg;w?X+@TRQ#$swYZU+HvSwH4Z1R z0$NWep?1}#%Bww{PyN+eQ(Wa$R%u(H`|UGxtag;Y5gK2Ot@4*6%*5B2xbl>){8Lb0 zG)I~fl~Mjytc22Zd>UtbtH> z=TVx@dmg$@<>{J~r*s`(FmYXj%ILb)j_RnqJAazb80dVeuX?Jla+){Q(RnpD8h_21 z=2YXYdC>7isH~f(bhWQJ(|lcm)~V+8GSsHZtDfqsoYs{3vJ+RJ^{qNut4h=Q)bUlQ ztk$v0XzgEv##q;&^`rUHyy?7ZOYK~T`lPyQLv1NfbrWw~wl)e2tmPxcRE9Hq;m8 zxnrsGYTh)yI#yksL&r)}S;bXPW2NiUdegP&Sl6XBsWH{q>UwmnP~)ZfjfVQFV}+VO zt*tH4xpk~iYe?6wYj&?!=XI}HdAbhuQTsA@XRY%{^2MK)xIzF%@87jh#H@**GdL*GHKpdj>}R0xGp1VvE{#ZdyUp(OO& z(mkT*nm_cMD~IyX;8jE=REF*Y-4oSdp*nQG)I=@RhTePh&QlM1@2L;H_cVmQL*4ft zeWx} zDyCsNW?&{};RDRZ9L&Xsn1_!rA0HzM3$PHMU=bE$36^3Rmg7^bz-L&ARrnmM@ddub z8hnMXu@>vF9viR`o3I&Muoc@7jc>3WJMb;O!%lpUUD%C1*o%GGj{`V}LpY2hIErKV z0mpFyCvgg=aRz5`4(D+JF}R3JxQr{fifg!z8@P#ExQ#owi+lJH_wfJ^@e>~5F`nQb z_!+<8SNw+G@duvbPxDIWM;H(BkpKyi2#JvdNs$c6kpd}^3aOC>X^{@;kpUTz37L@v zS&=HCU*Q8mNg{sEsZs?942t`lyLKu3Z55f_FNc2TN^v3`U#2^gD5WIt-7>40^ z7b7qdqc9p{Fc#zR9^S`zOu$4;!emUrR7}Hk%)m^{!Uvd*IhczNF%KVMK0Zbi7GNPh z!6Gci5-i0sEXSu@H2kFulNnW;}1N=pXPPnk1!tMBLNa35fUQ_ zk|G(BBLz|-6;dM&(jpzwBLgxb6EY(UvLYL@BL{LK7jh#H@**GdqX1q(LA;7WD2yT~ ziee~^5_kPA$SKvF$}};E=FJ^MqxC@U@XSrJ-m3EWkp1f<;)2C0L4OSdLGz0-s?eR^fB3#uxY!Yw#7m z##*eydThW(Y{F)2!B%WTG`_)h?7+A94m;WDn^Dz4!=Zr~kLSZpO5sD;|7gSx1P0MthVG(;mbMiVqeGc?ERXn~e!h1PfjZSW@A;w`kp+h~tK zbU;URLT3aa7+ug6A?Swg=z&o5L@$J)H~JtP5r{-z^h19Pz(5SbU<|=K7>Z#Sj(0Hv zBQXl2F~-Li1mYn+5+ETGAu(7NFZYFv0qf%BzK}7PfQgud$(Vwvn1<j!&@ypJ63d;d89U7x)ru@D;wsTCBr*Y`{ir z!e(s2R%}BwzQK0vz_<7gJMlesVK??*FZN+S4&WdT;V_QiD30L=9LEWq#3`J{8JxvA zoW}*k;36*JGOpk%uHiav;3jV2Htygq?%_w=#{)dXPk4mKc!Gc6XZ(U+@f&`}A9#vC zom=1jn^x}sm-|A-pf>8DF6tow^}+rBa$m?8aR0yD7cvIi|1bB2yf&mkTBJjIWI#q_ zLS|$^R%AnVJeh*wbvg;4}WQ4GaV0MDhTt6x#V`!VyBL9y7=_Uo<8%HkEA{Rv-QI zB?i~*qtEspk!$yH9lqpX4167s5{!i}6&Md6*X?7?_!t)-bZ)jFB$`7$;vw zFjl@yh=(l548Ci8sgV_opDzWHAqf~aA7kjtj%M%!eL2B6`f`D>^yLQQ>C1xx zU|fCq!Pxp3Tl?Q88DIO~CmCb=-zXVp``;-UYy00S8E+qBZU37l()VW6Z=1G{Og%g(jGdrf7^gn2rW$ zh*LO$GdPJK81CB0!f_5{Lr3h!4eUWZ>_vU-!a*FsPOvV0rBMb)umjss0>!WqkFg1x zu>so11b#NaY6ah`NY z!|{2X!&%}Pke=hygsG7hb%_6nJGe@`396tn@tcH|kQo(G4Hn9g_YcA{XpPdueL05D`4-`RnbVLUfLvg%`HV8#ow8Ps7#2YA&MyQGkXojYE9nH}Kz0e8`(G$H< z9|5R`y6A(JXpBjigDIGdX_$ctcnj?@8lx~4?_mVqM`sMehZusv7>b#gg#j3jewdBE z2tykA2vS?{NdWup2wE2j3tX+wmhb|L)%_{AqqB literal 0 HcmV?d00001 diff --git a/examples/inverse_problems/mechanics/path-dependent/script_3d_2holes.py b/examples/inverse_problems/mechanics/path-dependent/script_3d_2holes.py index ce88b58..d01b9dd 100644 --- a/examples/inverse_problems/mechanics/path-dependent/script_3d_2holes.py +++ b/examples/inverse_problems/mechanics/path-dependent/script_3d_2holes.py @@ -86,7 +86,7 @@ def dirichlet_bc_func(xs, t, nn): return u_out # model = NeoHookean(bulk_modulus=10., shear_modulus=0.855) -physics = physics.update_dirichlet_bc_func(dirichlet_bc_func) +# physics = physics.update_dirichlet_bc_func(dirichlet_bc_func) dirichlet_bcs = [ DirichletBC('nodeset_3', 0), DirichletBC('nodeset_3', 1), @@ -108,9 +108,15 @@ def dirichlet_bc_func(xs, t, nn): ################## # ML setup ################## -params = Parameters(problem, key, seperate_networks=False, network_type=MLP) -physics_and_global_loss = PathDependentEnergyResidualAndReactionLoss( +params = Parameters( + problem, key, + dirichlet_bc_func=dirichlet_bc_func, + network_type=MLP, + seperate_networks=False +) +physics_and_global_loss = EnergyResidualAndReactionLoss( energy_weight=0., + is_path_dependent=True, # residual_weight=250.e9, reaction_weight=250.e9 residual_weight=250., reaction_weight=250. ) diff --git a/pancax/constitutive_models/mechanics/hyperviscoelasticity/simple_fefv.py b/pancax/constitutive_models/mechanics/hyperviscoelasticity/simple_fefv.py index 1560de8..54e7781 100644 --- a/pancax/constitutive_models/mechanics/hyperviscoelasticity/simple_fefv.py +++ b/pancax/constitutive_models/mechanics/hyperviscoelasticity/simple_fefv.py @@ -76,7 +76,8 @@ def equilibirum_branch(self, grad_u, theta): return self.eq_model.energy(grad_u, theta, Z, dt)[0] def initial_state(self): - Fvs = vmap(lambda _: jnp.eye(3))(range(self.num_prony_terms())) + # Fvs = vmap(lambda _: jnp.eye(3))(range(self.num_prony_terms())) + Fvs = vmap(lambda _: jnp.eye(3))(jnp.arange(self.num_prony_terms())) return Fvs.ravel() def neq_strain_energy(self, Ee, G): diff --git a/pyproject.toml b/pyproject.toml index 41f0d5e..1a53e41 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,13 +16,13 @@ dependencies = [ [project.optional-dependencies] cpu = [ 'equinox~=0.13', - 'jax~=0.6.2', + 'jax~=0.8.1', 'jaxtyping', 'optax' ] cuda = [ 'equinox~=0.13', - 'jax[cuda12]~=0.6.2', + 'jax[cuda12]~=0.8.1', 'jaxtyping', 'optax' ] @@ -38,7 +38,6 @@ dev = [ 'sphinxcontrib-napoleon' ] rocm = [ - 'chex', 'equinox~=0.13', 'jax[rocm]~=0.5', 'jaxtyping',