From 541ed74d9f3be59f30b6409c82f990d9c0221d62 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Fri, 11 Aug 2023 19:50:04 -0700 Subject: [PATCH] Added tests --- .../bld/java/com/example/ExamplesBuild.java | 10 +--- .../extension/JacocoReportOperationBuild.java | 6 +-- .../bld/extension/JacocoReportOperation.java | 34 ++++++------- .../extension/JacocoReportOperationTest.java | 47 +++++++++++++++--- src/test/resources/Examples.class | Bin 0 -> 297 bytes src/test/resources/jacoco.exec | Bin 0 -> 244479 bytes update-test-resource.sh | 6 +++ 7 files changed, 68 insertions(+), 35 deletions(-) create mode 100644 src/test/resources/Examples.class create mode 100644 src/test/resources/jacoco.exec create mode 100755 update-test-resource.sh diff --git a/examples/src/bld/java/com/example/ExamplesBuild.java b/examples/src/bld/java/com/example/ExamplesBuild.java index 36867b5..4c1af5e 100644 --- a/examples/src/bld/java/com/example/ExamplesBuild.java +++ b/examples/src/bld/java/com/example/ExamplesBuild.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.util.List; import static rife.bld.dependencies.Repository.MAVEN_CENTRAL; +import static rife.bld.dependencies.Repository.MAVEN_LOCAL; import static rife.bld.dependencies.Scope.test; public class ExamplesBuild extends Project { @@ -16,7 +17,7 @@ public class ExamplesBuild extends Project { name = "Examples"; version = version(0, 1, 0); - repositories = List.of(MAVEN_CENTRAL); + repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL); scope(test) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 9, 3))) @@ -26,13 +27,6 @@ public class ExamplesBuild extends Project { public static void main(String[] args) { new ExamplesBuild().start(args); } - -// @Override -// public void test() throws Exception { -// super.test(); -// jacoco(); -// } - @BuildCommand(summary = "Generates Jacoco Reports") public void jacoco() throws IOException { new JacocoReportOperation() diff --git a/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java b/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java index 04a02ca..598bb8d 100644 --- a/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java +++ b/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java @@ -53,8 +53,6 @@ public class JacocoReportOperationBuild extends Project { .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 0))) .include(dependency("org.assertj:assertj-joda-time:2.2.0")); - testOperation().mainClass("rife.bld.extension.JacocoReportOperationTest"); - javadocOperation() .javadocOptions() .docLint(NO_MISSING) @@ -62,7 +60,7 @@ public class JacocoReportOperationBuild extends Project { publishOperation() .repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2")) - // .repository(MAVEN_LOCAL) +// .repository(MAVEN_LOCAL) .info() .groupId("com.uwyn.rife2") .artifactId("bld-jacoco-report") @@ -84,7 +82,7 @@ public class JacocoReportOperationBuild extends Project { } @BuildCommand(summary = "Runs PMD analysis") - public void pmd() throws Exception { + public void pmd() { new PmdOperation() .fromProject(this) .failOnViolation(true) diff --git a/src/main/java/rife/bld/extension/JacocoReportOperation.java b/src/main/java/rife/bld/extension/JacocoReportOperation.java index 7b209bb..4122100 100644 --- a/src/main/java/rife/bld/extension/JacocoReportOperation.java +++ b/src/main/java/rife/bld/extension/JacocoReportOperation.java @@ -142,34 +142,38 @@ public class JacocoReportOperation extends AbstractOperation + s.contains(""))).isTrue(); + } + +// deleteOnExit(tempDir.toFile()); } JacocoReportOperation newJacocoReportOperation() { var o = new JacocoReportOperation(); - o.csv(new File(tempDir.toFile(), "jacoco.csv")); + o.fromProject(new Project()); + o.csv(csv); + o.html(html); + o.xml(xml); + o.classFiles(new File("src/test/resources/Examples.class")); + o.sourceFiles(new File("examples/src/main/java")); + o.execFiles(new File("src/test/resources/jacoco.exec")); return o; } - - @Test - void executeTest() { - assertThat(true).isTrue(); // TODO - } } \ No newline at end of file diff --git a/src/test/resources/Examples.class b/src/test/resources/Examples.class new file mode 100644 index 0000000000000000000000000000000000000000..3c5d3b3e7100697ed33c92dbbe5f758ea0f79fef GIT binary patch literal 297 zcmZ8b!A`H)0|;@L)ecV@!<31Ly&w=WUrZOSWCp7UO5h$%KO+;71u} zF~r0*HjnvDA)dKimnq+Ax6s{xdhVPU;Xrb`@<1-RU|YHqVG<6`K0q6JNLWEP b27JLT4h5ZcD7;gT!}ov2Kn6Y0JoJA6Zv8jy literal 0 HcmV?d00001 diff --git a/src/test/resources/jacoco.exec b/src/test/resources/jacoco.exec new file mode 100644 index 0000000000000000000000000000000000000000..fc1f7a2af890bfd9f9f6c3ea4ff6bf038017a6fe GIT binary patch literal 244479 zcmeEvd0bRg|Nj{V7(`__?mL=O=GKV2h63V-q9S0Xl{(B^U}TsX?+hrZfm@nBxsCPLE{BaVy0T0b$5f-!YIc}yR%3!AC&y&BBw6i@p_^8NUp;cM}d>7&hOSU^BT~sf>*=yB#cE5r^=WxY2jUdJ^N2LFMmlrd+!@ zi(!pvjLV&DGugX(W`-8(R%!9BcY19+vT@XFXoAY0Rb%TT92UlANHDpW_^BqAfyc>a zEF(-#`K{qhek$V*4#5w1y1sVTyp4TPa?L(!K(5v1PP7{mvP^6|%bM~N9CkPiH^aj5 z-D#G*Eu|yd77r)9GN{#w;tt znpks|)oijEN5c6Gn#P!Oxh3N*c~+N$4R4Ha^n-?pU!FyK&|sAX%|IJKHAeU&n^E4; z82Hs?7%DEGpT?Tt@m(excL%x|xXlMI&waU-Mu$>Vmh{=9Oi6=y(i%u8D}|Yo3pA3# z0L{Yc2JX-;3|n_YbKH1x>*PLbk1aucRo0g%%=wA^J74Fg~?vx>iW*jE`gRoKQEa7_G%rv*O!Qv=c7)j0WgE1GEq>J1LU~1#mUk-*MtE@A>9i?Tl zj;W?}8lEci3V3vhjRD&;n@!VXrI&w8il^460Lm(UFL(wh53yPpmzlLXfh&z8 z7Vh%L93o<5>6Z6Zpx~^dp(O9O*ZA3jIJp*W9sN6&^$R-UI)R= zMQ2@@*Yc=oN==`o3WDncOMj==A8a-8>enbuewKT=T5?ROZWgYU`wf(>bPsS?SznL1 zly_>&E9jvBAK*5*vR%ehcfO6OTQ>^t*x&M0_#;kJKzbueBR~Uwb?2WyU+xvRN&htgxPx{$8L%Q$iUUATp}ll9$mQZ?`+#CeAG5jrNV21;_f$D03Y9 z?B=n*^hl4&O0}^^gK_K1{y{5Zc7Cj?Qy9VN^OkzNPN{dLLW_4i9-X=4iKbDg34F4V znP$pyf|of+`0nEVDoBen*QWe<;E$LSsE@qkDtSu~wZy9=7D1m&QQD$lbVh?ay%~Jq zp`o+4qJcGD%piOQrx@GKMEZ|r;$26=o||1K=7=iYdfz;VBzRP2AY(J-!$ta-&q-Dg z26oW8;(rT`!FMcmr#4G)e;>%F7FLn`AF>JSI@~mP)`}ie>!zbjc^Qed#XBY@YPH=mkqHtZ(qIKS@HGFSAh|i0 zsMbCWUY>Ju&E#GE4y)-{lhbO1=Y>7wj|59~2zO|l95H}VXfv6aF?P^F5NKc-S7;l& zXvsIh=CjL-Q8#(}J`^OoYQpU%+VdPBqTv{HZSdt`Zw^mdbTJq`D*wIo_~w6(jqu91 zVfV7;_{?1Wt66DnFQA75tfWwdhUl;@_{HA~e;KiBLZ^SLw7{a1l@{pb1Ji%X{OWeD zQ&rYf2s(V=^NgbKBIpL6S|_03X0LS0ms zRRl749i8Mb!4vXAu~`s!(744S!{-}1^r}>qsjgfI36O|DD)$Q~*94Z;YZ1QiNXNU| z9&L5MExWFu^XB&XJ?fhYgU|e1!bx)2Go{-AYv;4R112Rr*<>>sAfJ~HKgm+S%i7@{ zJ&ge=57v*sXdvLj(lfq%I5%iAdR$&kVlP>ziTBF=pFlc~7Yz<`ZVqU`u`CykF+^*1 zcpiIk(V_th^hzgN`VdJ*+e85jmS`@-HraepvVf>2Qk7@P10kQc8};0^mP(x@ttJXY zLdU!kf-soF4nKj`2ih~ab6sKO_~S2`bGOdEo>!fSoWh-mPv;^mW;jTtFY&O)qeUA0 zNb~WRx1U?RT2;bG&nb|f;Nms!J*pV&qpVxI-P6OfRL`dx!XOdkHVbzRUr&T{v6_Nz z(>VJB|jvyW`}S2es(?B~w0svdtC5@260w#nBIse{kc{{i9WbUDbGS z2w|E*O?G=+hxeBK=j5CLv)@qig)dbQHR%^&g_Ak;Io5oJg_x)=4XM8RAQL=nG}X-jRtq@)3;?_w~qT!2Niym zNR0d7L<=yXH3Oo(eLWjW+rkZM@zh#p=Z&2*?qSqj<*&(k3n~zff^*~eN8m%L4mR2o zvmk0-q6Sa9^3^Mz$`7+pQh;Rwr~=-)5gBp_>&SJEFuBcHOEj?sOJc*G3l%{%Uipu;J**|D%uLeUOkA_~UJFJwIb} z_i3s*3|aSZ3dcAt$7UP_KX6wIb|$!D{@TG7i#lD@ph?_y!wb&~eXd}F=J!R)sHP+m z2(*0Op zmMt?Zc&4v1KqGCr8uuVsj&4vc;wuim>+!_D-(Fh0@<=dhUG@G2MXN8-;vYW>i>foG ze;7(s`QO#phrpJj(kDZLPYk3&$cUZvS^qArqvljc@yM2$mx011%6Ji2=Vk;xGiuZi z>09FZq5c7OS+%{M2u1+!JGIwvN2S5#!8eM{&p$aq)zBeNP1f^^=8=7hfxLDePi$oY z9(3cC!lA3{TvR1OvSxyyL5Mz+GH-(5uiHV7-ItH1AAYV;u&V9u#Zhubhi9uZ!6mbz zw1s`)0R@t{))aKc^CP(@M&%cl#65&cniqKrmgrE?T}?S;u_`|+bs{H<(Sdn_inORm zgEq%U25Txk9{hu;!4J=@>eXIVT>Ef=e1klb!!x=~kXnaCg^&y44NkaEoeMV#-gzmh zzWFDmvi0M8l2ie0&oR0M7PNp*?y%R13d0c(K5^vqtH+;IHIJ&?nD1612Diqog6!^D zB@Je)=61=21rUWK_L`VFs&~&W(OeD*b}G1t7*d}2gp6M+ORmfYRDuNL1KnCu?=Bn+{;kZ2!r>>WrSgPvqil-)DBQfat>*V4Y zg1pcb;4fc1Jao?t!`_b{w7T}-a+TAa~Gt<;9IyR2pbnZ|L)gq7dKHQx_h{h zF)4}CO@NoabVGwzKdzkngHosZ5S{$&UhZMC189+p25|x$mK5l^)~g72-EJQ~YH@~D z8OZXJ-{c|)^+}sDjA5;?v7ycWmvZTyhWk|m9+Kh8N2rO!fF&}lnQ}x-NQ=4*(s3rU zjyx-b0}Ne5w7A}Z<(o3hGuzhmx(FdCtfZk(U}Iz0uDm1#id<^BnKIw?s!1vKsytj# zEAn(D8>4U%UxmMWV1a(;PpG4cfEVdA!I9(S$Va3`Lv*kfFKc&UR;x8bn$*<%BRo8k zaZh!y**wQ(fd3@jRG0>@i1}nq(3;^*(U7Y5rs_rcxjmxK5az)dv-)kd{rPNVfUvJ@ z{|q8&X0T16kR%msUj{<|;%PuFP+d(E{L-*-t=fK_{(epU4{{PjgbQ*EuBK?r-HQBM zE2sRQ5NR|xymij*+Yq-av`ATELMVs}p2z`V=^!{(gtrZxY;rl_zUt|NgYe4hPqm63 zy<&+{$dQFa8j=rHBt<`aGE|EvqhiPIBF{Rdit$-TVMTJHL5#q|Pcl`zDm;$6GfIo6 z?(?8RbBPYGULCY+$*ljrtc?0fB17EYAU;1KnFVr;2i)AO8J}i9%I-{6m5$=y6FQXT znXn?LQlZMtrxvNMCkjW^DsPd!GJm(y1^0bi^5;U4+$a_V3>f2&S%DoLY->-cb}8Q1 zpzYlFi{Fh>+Gu2%D#PQ6pxL>wb{>-of|jdlaCPJ*OE7+O{^s>j^-gtH&C-gGE9fP` zc&dL_k8pa6dCM-3O?X*pJ&{d_eGU-2ENzIF)=($Z%?^Cqs&!;|4cda)dalvfRZDmC4ESyN?&HwFB$ss zpy$dx1r{8CdF6~{dCgu|vWB#v`JXcn@h(W=xa)ltrNQT$++JzBab%KU&ShC(5U&bN{FQF_?XPb^kM7zsv0@f9i zy5iC6H2BQ~P5%K$pZ}qz9Oakejs|_y+_UT5_nh^I1|&ftUiTQoraN3r8p|-rAg{Ri z0gx+Z1p3JUE{hS~FbJR8p40c_fn&#O%4+HtX^8F#fyV6S zqdPa=ofYv)9=$RqfGg2oz<=Ce;j)#HJgdz!|e`=KN~4jqar^m+_$hh1DaOVtnkON2Mng2)PN) z+gq^XMdt3!n!3D_4&~J6IqkmlfBgA3U-H_s|XrE_v3(3wwmzPEf@Na1kQ zA5H7sDy|pzZypZ_U}q)AXw6Cyj`(Fn+l`Aq_+B-TCx=o+jn0w%y`}MhCjssOf%eT?+c+XPP*e#^|F1opde2EJW~0%ZinDPjvnyg3y)8n z>%MAI7U23)wQI^C`}YCe4#vF#x5G9X{dZA$DvS}rpHT< zyp*-7BJMX;EkWcLA$H&3YgE+vKd0j_6RyQS+ic-0N;6-2INv3J;kc|FFQ`JA;n0nB z`PBN!4ucNblEfS)&Aom;Tri5B41t!?=q+VMtu=j9Q<4D zpg`ni)V_)o{R|7i5mcNcjw&L*};aCyEV;#DdmAE?&fMd1s5uTv5Gg`oY`_xnWrEW_j#ym|LceD zY6AqJWdnOy!1gSzUWb9`?r#hJnDcwTvj3q@vLquE#*rtl21ONR;D6x^_u$&NIOd`* zJonst%10)DDBh#I7fDwsqmLt)9EbI3;KfvE(6d23MS~43Bk&jFTTFOo+xN-J>;zf2 zst{0E0oFuDf3v;v@$+hbCT>SO5ZQ07ck?fZ9Bx~<;*T~JCCZ9SiK?q1%0 zdCHZCly(<6ML$;cidH1rA?wCpG<2J!9BSD2vtx^XsA*jX5sPESBn|}aCdGq??A~~~ z@z4oJmGY>{?Fp8cPabgS9fZE>;t4?|_|fR^_F3u1#2J7e*z6LTSObu?DVFbd)j(ry84hWPY!mdUg7 zIcPqq&9D|;0oUcf!hYX<(7s`3+%v(db@bt8ulyQ6;mdW1MInorwy;%iFBF{Y%%k zZYmR6e#;Z{l*C^o1~Gv1!hkE5(elos7k^4)R3oqcE)OS|#kMZN`{50M#{E$o9=Gty z;y)_qT~a=7mHg(dxk*$=(IH^qPVn~sT6asn)UC$7Cqy(1aDZKHk{i)NjriL=7ta3P z*6_r?HO7SIE$LW6Pw&|A=11i{e{UNoKqmQTM&iOr+6$KAQbsL3hbAIif6uw|t;-MX zR@w|cXR5Gb1;1TdDP}{_o!UU(wQ$OsKhEoSv^;U2ts1Vb?c6gDtxjC!m{5g>qbvaz zT5chh$J0!FPoc6E_^-P)yh(QX&3BY>C!eR3Z9XqW!m%|ky2o1GS==wKh9fRT;h@c? zd8c>TKUQWf{a7P_7!+g1Vw||U`I_cTWn=_SyHvd9{aPJUlxDVKS>>~GBO070cUG#| z#Ob=}n%*C2))w6G)Iwb0dt)8$*Lm*`7gubHSMr_jGs{#mOlfDy-hJd<53WDvohjF& z%VU(}rr4Bsr3HUh+`b0cq3MuuNpuV9eEQDRFN^z)nXIHWX(2y-&acEt13?S`CCrO| zzw}bjxxs$@^#tdDG|9`Xgq`)RZpYd21BPY&UJcz(94NR7IeaNqow!K*VS^1z z^!TXLdHG9Y+%?rWr1_t-gnU$*DSks> zr8EGm-X$b}K!)(WX1vsI6Y-<&PYwPfv-Q>e;cJhpmcvMUlp`xLF~+9@n~ky$hJvwN z7&#+)%kVKm*#J4vdfmbhws+eS`S_$>b(Es9>aFqzs?uxzU(MYzyT^0knMb=89)}oh z$%WFWzx$VK;m5F6k$Bfv|9xwI@QG+;LaJ)9DQ%P(WUg$43ZqaFLM=csK*{G@EBEM! zruOoxz95^f$~Wb#YrDn7T67Nl+K}>I8-^5TD1%ny?}-$b6$_^`Nm^72?eI4h+8;mD zaD?{Gn_VxX@&10hxRmUEE3IuIx1=b3hW0{Xv`!wBLqicAXO%nH1e47M>FO6Iz1!u3 z?LX{PUXyf!5;5=u>m!PkQ&UFu|Iy=_RZyx~9EU$XI>WW=@s~bQy%X;hz0%D@ScbO4 zUEe(zedyMh?g6|<+46#-b_PNn{Ez~PCF^nSUFVVuy7-9mu(suTe0krH>Y+LHKlpf9!L(sah>wnZDG1>%^3|YZ{D!4w593%iRX97cThw_?K?<&xjFEtDoR>902~En zjmh<<{GPRVV{N5hc`q9Ure>x=NZ#(^MzS$%3oiSLU;4)Ld*Q^QW~db>+d!~p=7RjR zn(W-q#`xq!PNs6*h84K?(p}HJ^!;DMYsx~t8z3e~L!B-X_o=9i%G?uiE}&1LY9)pp z#@8&{Ki~iQzGs!h=X2QAVinR$WY3g2rNNS`XO7U{pVo)DK)JQmXh^S!5g`PelT2W ze8WjlT&Q2ycF3olKANGFw-S{Ry(tN?L_4H1EsT#76cHbW7j3J3?(hG$=o`SVll8`k zTsNmACAm%XPp?sxQD|w@B)l->?l;{Yh?}OARX!Iin?~aK@tYE(>A*>xSqM_^%_~bX zPP#r*uLBpKkC^^mSzE4Kh&KozC7J)o(d!Y3-|JLaQ6dM~Y;%D$<7#)3)RP)6T?9UH zp=kf1_8Zrr1`urWn`8lUYUh7Ge=BE;rjas0>T?7#jSo}$$$}LEpD&(5qcxsh*f{_E z=$%6+=mJorBHP8EC8wlhpF6ZMe*NoDpFjEhlCgn2Wgkn0*rmLoU-Iku*XGW9)uEc7 zGK+2piQJ`eLsOdEUR;KoMaQ16bGz|g<<=zY?u@Zv7(QjeshzN9K~ z)Rz%ebeFQynRhBy;;!R%Z@OF1;NhA^nFW3n6u#JtRj(Li@~ovJe{dJu zg&5Fqxq`Mdz_Ph~Omlo@{qnWNwf|7A<3lpA8mEI2Ofag^o+*+IEG28BCcQQs$0y!+ z;+>yHv9@&)Vhq>pN4-Pn8ei-2Y&5s0uKD0$4~2Gq%N z8OCZj_WjatPMPUgHOyO4CJ+V`o-h*nrUqY}wc~j5{_O&Z!)(Mb)Ia=Hi9Do-WhJEFCJ}~6K-g=?o-VpKi_g8H6y-j1Tfkx6*Fl8uOJjlceUwyodZTj%a~)UOLXey?rkwrQI#KT%amTIm-X zB*z#E6t*4j@x$TvCvOERP#~g-PiycYG9d|8r+FP*9^LZqy?rCvss(wxX<K=q4PL z2kkU`N={ftZ_?uJGZq|cR?Fm2`ju6lHLpVW@f%~0zWm|DxA*7+Sm!eBNoI*Mq0Sf4 za`VS>8Qr7!z`2y@4Hdh-QoV9-UE-qD)N3&E48B4eq{6b)ZQgE=`3% zG|cv7OqQXF0ld6RE%q{rett+4zO%gP^1A0jLTYNx3);)C#DlB7ZU1}5h*~3m>ZzA`zz{>GB)DFrn2-Ch&IC^MLT%{1ThMOJ;x7x z^WxDm%g#XdZD9M4H(mCjg2H{J^XA+KLC;BOhwt~>%Ye?+1t6n?ts#-YSTj)a{-4d zTQs78ZCD!B3bW15&yLPN)<`u>@55=b9`F)uKv!VlfNJ3-99PgkFlJqob$RJ;D@}Fj z`n;uqw^sCP6YZfdp9YD`RybwFU!V2fu)3=<<3Y}o6PFNAg-`IAWtM8?#^G^|x+!0c zN(h=e?pnY@48V|8@Om^i{`2OkE|uq358qx>IU+}Xy!il9apx~zOa4_G{Jt`VD;=b- zCMB05F_J+lWrY0xNgQVAd20M`s#j!U`gg%W)14ik?c031 zQjtk}lol4Ewxkw>ctPe_ZOJ!f`3s%nRNF9U2R^wkQgL~`%Qs?B%c zhlBC@MVlVju`ao-YO08w-9KJAZ$3JON*z;dN%MXnK1$AmlY(%!ZGE5Wx}XlLw4ADV za3AYiO!`2H8#Mb^$ocBxaaP5L9k(}cdP>zL1HV`v2+upDT@a4R86N;)QwZvwr4{cvYuWlo;Nga;sSdQ~TrAJ+CZ!VdJb2 zRXXvJG+u#+RB)VZ&?`?t=Es7TqOYH)j7)vS`2GfgyL=P>mNO| zeSf;r>5^`Y9FNe6B@w&Wf0_U`1-M^vp7{<#VtK(~JoP`Hl|H>me_6G?#(OP(=xMUa z#=sQh7--@OLxtfHxU%T!)8*`Y@k)*Ew;3YW{dqeXN{b99X(HuC5`m-T9CjgB1(Oaqw>m+o-6W$2-W5E@#-7Fw{7KhyJ))*` zPf#xHciaKQ0g=*!Z4Q%HdOzFx^aHQ`gjOjv{k<&A)iAi#h4(H50@C?72=ERFIaC6b}*7l3XClCZsX$)x31SJ$LWrfWe^vq$THO z(!hpapz%~_piKbk&~^MEKXe&8PQR9y_i0SBs&Wi;c>XvCZHA!#wSXxY+x4B7p5E46 z>7n>=noMw{HchM|W-M|PRO~AXhkiWcm5HmTr>>f+T0|ioByR{v8eI0wAUsQsv}5c( zyg4iwFB+85Bl^z7?*jU^z~x+2gWON=iul2q-z5jWd#nwgDb^>DOHb5pyt3mq+5>{zS@S1c}T7y!3+X+Remn+w91nb!b z1E__LD3{S}v#^jO6=tIt6Osm|0NH~M8EA5wAPi&ThSq@-+jd5sZGAs`A?=?#)dX$G zNAQzoapi#As}5$LuigB_*w@!6T`eC%fG6Zcu4u#z6GH27?y^VGtXKJ6E#COf%*jANZipg)J2UjR$3;u^~0r%wcyloDT&aJ*FQ?e<*bQbfxv+b5e55 zL~y}fe4Dw8gxp{z#-@&A6Zda=;WbrGCTB#nzF#0&$f}9{TQktZTKuVH;%DP6Yd0ww zSrT7l!2rUC@U}Q6rx7;?YHaAG7Z(n>x<~n>(wg3!EE0tz7RAF3hn-DycJw^c>%iff z8sNNGMXeJz;2Xsh+aTjsnDHO;sZtBHeq;8T(Cae`3>w*1UhmSdkB zZgN3MX5=ZwtCV$+5PIg<0E*VRjWj3* zx2yk>d(EQXC#h=wf2M%{g?OgE7*qL&(D8N;@&8%g<7HQLp}|? zrbqAVp*#rjW_C>RqmiN5^2*1#j(0}fRt`oa=Oa@AC{EYwTrsiY1=fSw3zxrnUhmw$ z=i>bigK*$ax$mbRYV+9#236nHo92Do;Z~!J`X+ezPxF7gu=>w#N`+0H){h$eiodz^ zxj-ViDfke(cJhUN?YrFX$K*`)O}#g*U)$rCuzx2u1QE`OjZv?ZZwxA$i3($f;@dyB zJrzIqa0gZ9m5$IRjo22;2E2?YaqPCkCW%D(c3cvpOUlM8eTG{)H|{50Rr zi_H z>faTrPfNBHz^o#QZ%j&(v{~5Nl)=YVFSuHMQOV&xTT@sq!@R3l#4)3=9;dNuK{k8* zCqpj{&^W3$Ku!vb@Wjjq>v?Y=ZoQzb3h^6-n}+8rlgDj){M3_vVdfl(lPq1W=8W7N?qme1S8|Z z;${))7ay39pe@4>mQ^BKS*FSoAgQXFa+jgXf8qo~tqSO6jXY3zqhsh8)yfP)KB5^W z_>VFR!=Ui!@GU`j__4}{F>4NP|93em5gmq4)N+-KOmH3i{^`_wU5n@90(uPMAPh1azM$f4+S6QM-mbp@DfA?4_;ca+s86kb>80if`@5(Yc5 z+9(-3kD7>y0IDIsQ*QM~fYLM+> zbb@of<(xK!*QM~f5b719m=sq62__Nb(IypS#sa`hBmm%{4`3P>Uk66%yv)Fhuo;dPCZ zb2*kGX*t|kR3UVSSRUKfTD zL#-Z#*Yz(vAg&bDawx0UrTPe=9*V;20&hX73uEV}$AGry3I`~>F1VZ&UYD>?fTRLR z=TUfFpco3Tdk+*t;dKe`@QneWri7|}h;dPP-N618=U9nV!d_Vg3a=}BrBzOBpzyjB zUYEk_25csk1T%%#HBfk62k7N|Zu*TdnuRn-kbV^kuS?-|tJj?_46sV2@VcTu$#siR zcwIjB?O-XquA3|0^y!SF@VeC$Efijt!s~M5ztbqZE``^n@VXRUmtlEy4RBkanZkQ$ zCxzEl7SB<5T}5?RHRAUwleQ?lu7CPjtO}y=x?F)OKWB=c(V1%IFg7T>u2)TFHMow1 zBnMDeEOBb>oPoa5g=3=D7-F(*QM~f zfECRc6-C_&Pl}(-MB#OP5@Hlym%{7vXuJHJEndq~cwGvw%dpVD2}NxbUYEk_x{MTF zm%{5x!7|?tI>{vyy;j~c<1@lMb{U1&rSQ6391Ng_D7-F90vQlI@doD`;dS{=A{P{cQFvVnuUj>y8}H0ecwGvwOW}1Xye@^;wYe$0 zE(6tG$*d#K3R!vsh1VsmJrrKo&I}@BMiVH!uCfD_1ZF6_t}3p@|1a>mdIGQ8qjxu^ zSD)@YuI`-=8R7dU*D1a(#n%lq$XuFC9dF6Ax*TkHV}zq0G)(;REZS2Abh{#GnZjh) z1h7%QJH;^6%CIKZoRtsb<6(fA%VguCvEHvkf@Ss z9z;A`G6Rio9Rr15cSCdBcyjCHK5LIHL45Y!K@Uss6+Mck7B$yGv76kpd7IKNs23LC}Oy|?)?gx)B=F2&as znmytQ3lO?>Q%mu6DZVZm^^ab~s9d+%kwfuyA^uA7b$vW5V(++3u56c);_DL75sI&C z3}6CRVcAi9UB>PnOYwERX1PhR8zF2%@pW}t9R2WkimyxYb)6$jZgbWWO>DuE*sv!< zBN3W(9C5FqcwyO%v)?b9Z9{!z^UilV0OK;VR;Sy+8i(aNt&nD>_`0gKniOC6-U1F3 zUzg(RD%0_TwI_hJ450YBtLt1;N@XcYMO-N;=Aihx_02z_?p3NTimz)D+rs%;VJFKK ziBWuABVnNct|y6xQ+!>DuM2I&_dqceUzhL>#n;7?QL$rpk!Kx>sZvQPM%_|;-PWE` z?NYq2LEE|U7rz^Y`um?6#n*infd`Mu4A~#-ZVW%{`@*h4WxCm(0*bFo@pUP_u6iS_ zFA@sH*A-B8DZVZQVHD-Hu3VctykQVNwLPaV#n-JS2xj_ZCDuS@ZD?H{-OW*5cRrTDrOUzg(RR&zKX#n-*JasgXb!&%4%AtC{QiW>dSt-8m9~57g z;_JEuR9vUYoi)hrX0411%6wpq0Mu;+Yw+})sb3cN8#5VoQ(-nyFw3I@D88;({6g~4 z6knI(>r#AOim&U{H{vHYrDPDn;Gy`s6knI(>pIwc0jw)Xi<_=5rTDrOUzf8=aa5Rw z;_Fg;-62~jzOEE3^X;Ic_`1wA#>~SQk{&{#OII4b2VO3RGTdm5rx!NPKROQ$`1P+peg5S0OU4HBl!Yxw<{rU-GDK@Mxa8OKug#tJsslYN z@4+vuMP|#UWidHSliQ2SaI@&x^L1`F-mBcY^k-6sGCzYa$&_n1XYu&T03%BV`B8jb zim%JT3P*Z8c<{wpJB}w${*dD9O0cM8K4z9UWYcOk*^DD$;9MHZFk?-&Y=(WrqeHEO zy5Me>oEa2fm*VUC45AU;ed62mgH$QLF7!9CjL}CSDhHlYd|isK%dlDvUY1Akbt%3s z#n(N5`5ML7rTDtSa3L6bm;=)oj9^IEgaj^(pJE=fx~xz|)O5<(M>P0ORP@lESwkMA z__`Edmkf@pS{we45FQhT<)x31S zo#N|Kd|isK`|B{>Hj1xH@pZ#JT0GI&(en(&*Y#^llynNk*R>q`s2;OI`~Nq1WBk#?Ft6IFoSDkAl@Nl4~mza9o|HL87n< zeYU2U)HY0*ge_#uD88=x%q0?-q4>H!Sb?O~6e2Mu+hai7Osd=DW`gVB_fMzh>smY) zhhkNTTQW~=R+pQxLlVZAnwyhjV)KV^znR=tdnT!3>K2PiJX#2%G>n`Xvm$@QR-}eu zAmzn9&r+YUZSNE6KZ~V^T>;CfkpFJtQ zF2&cS__{(hpHN6a@pZpc4m_2@zLEe_l$%H;pvrO+imyxYb$xUuF(xR!F2&caKcOeW zlWg_YeY$kG%YOqpIPnd0kGeBG*R zBLvY*@pUP_u2nH$Qwr@RiG9s}<(Pb5b;mw^Tjq7^xF26gHe&w=l-Y-D)jtu-&!Cbb7r+b z*2`fB!w_&gnriAS(%^H>m%rNFDr`7<@;=?J@5k^yNJtC(@wT^~pRu|7G&ES{gIIVo|4y8Z-$=oqOSVq0bde(EPp##i^`c4Kk(p zx)fj6pDiiAZUG*2VLSyw1){*N>bu#9YK~MeHv#k&MX3iXnugjlNyvqe6PV0RYrNQT$++Jzz;(#sfKujsUjIrTFM2vjA?AX{!k1q zDh@hOX}YRMJ>@_0Q37%k#YpH}aXC$9CVr}kg)(!P^VOhFD}+y(Yo9j6wDklUkV(4p z{if~Jo}tAXx=j4|$ltnf6fN(y5VE28x+Im!5gf(WrTDrO zU-!y62r9vk zMt>jQJR|C2P5bUuszNBfuK&b7F^o&`bt%3s#n+vPaQ!{!&bKZ6a+WYScm&{-uuJF72D#` zqw-olH(S-jm4OoePvl(>u0Q6TDc7URV^n+2NtBHYs*%RhP<&m+Y>4g-g_)sSBUVP& zt=+t)^{^x#P4RUpzAnYrrTDsDgTnmE68sWk6knI(>r#AOim#h!XWa1?3(N3z$`d?Yq!LelzN{~0~W7mRF3Lt*~xRsle!2g)bO>cA9VMSrm zB)lse0L9l8iXd!`Oi-+u#w7U8u%cTMb{Jo?Z2x@!>-(NXDODb}Tnv$D&vTghgXZhC z&5V=l70!YRcmrwjv1iKvslk$@F#Pzl7sC5=t$Y+2N5tn&JFMj$V&Q{9dQp^d*slJfP79 z(u|8tkhVy1G#nYz=+Z^t6Bmm1A8NmG4Qik^$pYlm&i{P=R?ZepBV{9)&k@KZG|YQ4 zsR+9Z@`U2+LM1H4*Odx|MIDr2GG~Ec70Jd+8#U>*;W$3=#uM+<>YlPxIrT*18d!rH zmIT!}Jf@5>KF?&eaU(>@G$o3$6jP*E|y%#v(1JIpq#qD50=65g(4BcfX4uRot{>$msTIo0Vv zWW4~L>O#)VZ@@=%7l``x+IDW6w(0T{sFS=`!iOfO)u=Q=3`y1u#++}qamY^Fj`#TC zaQl>K<~#7i!Fc_mO%Lo?m)sT&t(k=KuhcQcmNf4N!L5?>#qbq(+t&A~t_$k0ft_GA z>sxex0UQLd1}wxT*Tv(kiVr((Z{GA&H51DeU)S4y_e#B|Ia1wR&nKs8z~`-95sJ6D zuYdH=_WkKfr%STgh|&@!CrSAkap+&YNz*F z2@acsO*YvWx0{Lac=TbYFgyZR7Cn8soP94|snPv5LtIK?NlHr6kZdw%!^AoW4Zqj2 zY+2Fvwmqu@VhF=U4i^f@pZjo3PcnH z@K5F3Od8nm3pAbz4GKn3hpt0)xMa#@>^S{eUf!oM$*MV;KtbEIEY>lV3q^qp5}fun zL(u4n!+Ihn``qV@d($wF3543IVRcmT!r zQ_IB9##`2IQZlli84*DE5Z)dNa|>+@+eizR?by&uFD@K%b&sl@y8RPd)9tiBdZU$oVF;w^Jt zhkpw%!ofZ8Ls%r6B1D5{uA=z5wNNXxo#N|Kd|isKOYwCnzHSwO4#Xhx4}(aJ3|xvM zmo;+%5sI&?n1m+R#CT_ecr%sH=ftfKWOhIy5C3;P1*0Pp zTVwxta&J=SYpT|c=$%#(stxUg2gk&}wR`i%Gs@bvdof^1(1POY`d|f;0QUc1__~&^ zJ-T-97Ttx%)qSJEA>n%y9mUtB__`Edm*VT9q9}ylePjFDA;o%%udBcwA;F^nu^vGq zh^1C3Oa>Pb25o*#^Zk=$kLrp%9y>y8>#_~n!WKX3YN5QMNz1zx1|vK;ZSugJpS~V-ikYPvQtCMdox#n+|yx(>EoL93o<5>6Z6Zpx~^dp(O9O*ZA3jIJp*W9sOn zWQNVL@`e3SNEw}VVP4ClrYZk!5}RL-qrhMRV{-S9kvT z^X0xlK{XZNf{ODaqv&3+w*BzjOV=OlXi+WM^-gOD?rNe%Y>0BOty=xyXpMWmnR8^z z(1FA6_wJ%$cR$BJa4!7VgmyJ$AivqeV&O|%VF5z7ZfZ;L;jItcoIGl6hO!Au;v?_p z_h}ap3zou)PZJ9MuPbwFCY&$)Hf z`evygRkJQs$m8-s+GgCCA>3k-;qwh0dR3~*R97yP(h?>~<$mFE(E@MiwFqB$q~qOf zkG8tsmL0{{rTDrOUpE2bD>(>VJB|jvyW`}S2es(?B~w0svdt9~$)#5cDZZ`}QcW^a zlPJC}LX(d38MvW%VcCtd-!GeOLw#ib)h9mZKSPca@^T&L0B{lzI`oT1i zT~#gS2NJ_^S(?d}O`M5=`F2x|)y!L1eBY9TZK*}U_3*xP%a$1yJkuA&s(eZ{V*8Ti z=!Vj9@f8Q(^?2gnZ!axgc_bLMR#{m*456@8U!ui7eiRl}XH5Svl&JE*tFaFu07LP0 zDZVZTOv0DvK(LeI>vDC~FWgGm-1Ktfd&-$uk|e1HZ&7?*r7>8I10(4?imyxYbt%5? zy%h@(-XS7f8qQEO=59s)t(8+$GXRo@#y2+*Hw`oZO#1U3@8^OhR&mlF>5wr*gTq_r z?7j_gyF!bUBPxhH!*xH%gDwVZ5BuW;hw`@*j*gUJ55po4`#6N|}v_iLUzHTDk{^9qnmLGUF zM48MWa#-{m6=5Y&esU`%ic>qqq^>BObsGF;f~Nm~qtE{kuxKJc0h?crI~sB>%{{x` zea~5cXuv@VLiNUD44V!kH@G=&$uJwj4dWrm(2zvvru67bJpCXv^{aK^+|m)7zo{t{ zfO-)^anMN7FXz5_pu3xUy~2M*sC8J@IO~{kkA(`q$Kj_Ae)^mvd9_3NSiYxkb(tM- z_xVOChe>i%B#BA!bx$5RcKm+VYxIPAjqK*5J2&2)6`?v2L1Yg(%mYOVa3z2xQYSwQ zud26h)Uy1#uc{8n^XAflFl#RphV|Mr2dNLc32lmRPEH;E_3ReWXh_WjiZWzF@pXx| z;?6Qq=?Z6w4s@7vbEGsL5XHcc#`RsiDs;ZG#KwndW$TqIG6kF-5RbBP{7_Vu4zVbcVq2`tHRVtQ1akLGQ55RF?G&mNJu_TeJcprSXS3FIZo5rJ5x@~6h0yD&QL z>dC!*#(uC#byFh6lOhYRKxmS~oIS#1hk7qIYCc-x#BbjW+J9|y(=Sj*Rf<(i6XBmk zh)za4(+v08`$Fi8lkT`wJJWr(pwLbHDneYhLvSG{c=6#2k58QIzG_0L@)mqoenh&M{K~UFaX06=(Y;g_-{~s8(Zu3yQDe^D&(U+z?iMm($0Wv8_jto)1 zS{*KZt;9Bez4L!Vk{A6WMxkOUp zas+R!=ZrEfDxBU5$2M%y={&{PWr$EvGhxArb#X@x!rd^0b>uonnB3+p&gg-W>J0n4 z#&bPEOYwC<1Hx2{9OpnQ%TJHZ@6V?k5s+rt!yi`;{^_A>sK3lA5@||eN**Up$TSUx z(qt=axCb0{5VR|_XmfLHRUq*Pn97|D~+MAwnZ? zWFl0DAEx-a6km74&6zDHQG8vBuUpMYz|kOeP7mJWd3nl}hm>{~kvgK{mQ58W%UG-c z@4>i?iLOKrbC5TFVBAW|p@w}wJGSVDn$~p?u{dT-;y}=DQp{nY$=jee69$DwE0iF%4qDGVZyuL&bzNLl4y;jiinF_&#*hFs2+nEy=;ifGYOd z5{a#}Z^}OvPSI~Vym4s7ocmbv!&Q;G_FYK3)w%q%>L6C)EZsv?$?WME2LTyw&u5}S z@bWgRZvWEtt(&UFBxL!jeKBrGE4X4AE$=LP@uxIKnTwF_)2pq4XAv%uk!*s2p{!l- ze)wwM#{E$o9=Gty;y)_qT~a=7mHZ}_wD>Tba$-Nl*QNNnppFA85{|8Tx*ThDXK}x{ z8jiRWg@ZPm=AGVU|2QBlN&wCiW5!~fnBwb7y(+Rkm!yFp20+}+i+{iLQtXYrHEk4A zk4_sn4BR=V-}`9u=Rt+{J6=lhbrrdHk<&<|Oup(te1vx(3F?cJr@0`GEtl)lPxE*V zwYgRhL-BPfzAnYr^_sHmr@bUDA_*~yuS@ZDDZVbn*QNNn6kk`Rn2X};QheP9;-(>r zud7Tq`-GL`V%cF7Ust8T*}#R!DZVaD5Rl?Y5Fh0*-YLGWa(12~?kgY%2MCd+IvKMe z&BSIh?vR%F)`ZuNX71Fjx(~360~xb5$7EAxa;BLbp9G&t+>3h1DFY$`ywlq<46zja zcd+50LJmGxt7B;0+VzxzRC-*W$cIZSyRW&L`eWHk?SaTM{>sb!H&XAmCaxpqLj%#zb_Dh4i??R8uj9x7+O@*`+ z%=TnVmZ4ULHNo1DYv!>_guWREE0&dqMBzKjn=Y?=E+phW$Ems6+xEX_jHos8r=H5n zbZP%2B^N-b@^$1CUw2p)$;f|HN+~9LCUaPG;qyia^)8M==*n)-?(RjJA}(i&P#v6^ zaiU)2gTK65(-JHpMPnuS zTs&)0d|j~8Ts`#V(-5lF3a702>$Bb)R(Dm-@K>sSh^GRB<#TE2Aq*6i@Zu!Zn&Y%F z;hG?v^3|w>pt<9&-S5N^H~#bHsV*=+?In{Ac~l8}aC2mCq0@Xf6XU z*PgeURWP+bZr$_Bq8B#K3Q;Xn31oSvLfMWD`oPTDP$c$f|JHdC6)9U(C&hV{sZe~~ zYL@T`x{TuMQhZ&ai739V&E%talByc$7Sb5^YF@hEp1b#QO{C*QxJl*YetK8L&xTPpT0H(pgJ6&Th2^R}8-dgf7w9ph zW?P*?%S`Q7!5A04|9P6l*5y9dg>ss7Q(A*kecK5|sFy3(ZiEsVn~@beqFhF^&B7W1 zI)VpgH6|ntOaToD80`a1ZW9zunz*5L;Ka6_QDy z#6DlU`H8WwuTi>M#IP2R367eJk&4A|VrU)CUG55O)~o!k7H@p_A&Rd{@pW^-_@nr` z6kivb3;Bc-j9V~Jd|grCO5gsP#Qj)E@pT!t)hHvy*QNNn6knI(>r#AOqhc(CXlf4< zC#$#_y9>(f!Sd#2$<=~v_V`bRUK*frRBwQsG|Wz}*yp_gim%HW<=%a{-GR82QmHm+ z7jzk_{3mXlc&!TPWsN*gc%x(J7}QfGNDBTG=dv1wnNM(?+;4JYBIH4%!?y(C;m0Z) z#;iHG{om!N5}^*=YO?W}C9e0939f_RKb@MdYw=uM;IS+6nWX0CH(3_h43&rM*iuMMaUiNTkm+<)mBPoin=i z?j4c!*g?q0W5`2NZ}6knI(>r#AOimyxYb$>ed?=*r~wLtN8RmOdi3<$;7rTDrO zUzg(RDu%LCd|kfPKLq28hhN7%q6=o-?_w&7uS@ZDDZcKT!3Q21I(w_Kn7}6=D~Bll zae7WWimxlpEV-wF7BD@GKw^mz6zkJ4=2(ut?bG1pIVaal-qr80vX_Kh6+eAfttK^v zfr36WGsX^mSTG$M68@oW@S-K(1e?z;FGk(ua1mKaOv1~(ZNjC?9WJ^y`0}tfhbJw% z7_3ar9JjiDLsf=DMTi~OgNv3qhmcnpn&#+0Q<}BAp%l^pC zdOW_fEB(D+7IzJJfK|`X60U^e>l)SO&sH(dhvMr>gSidSFiv?MdvVdC0Sol1jd(V( z{7ez3t}-agv*dx0&)bc9?pn)0)wX2xh@20ApSUT(;*7p>{PCB}xm#yn&r<~i^C_ZI ziJYd z81RjNFnto*3QmM`Up8yTY6dE+ zJgb?fL0$I5L~BtU__trV{~)|dD!DhfSBXbg>-raeot*M<-Ek!yLg$vw)y5s1^!GZC zXWjfS(3QJo5m1^I0YiY1v!Jpx=7@>n>+*>YKEqXSU!ew{9em?~t+_KlQ#Q^>s!Sq} zDibhRSO5DHMkE>v;Y%YGoV+juV+JPTev|jo?7edys=ZpJ*+y} zk`P*zxtnND%z~(Si5fiZ%2%&=DnHDsDM*KUE&dWsY{8P)uqQ)-Tq(Y;%^+~K1L}1l zZAS5RDZVbn*QNNnVt&19dp!}10N$Hxui><|2A2olC^kR;kd=^Y6w(*bw;_vM|p4du?uS@ZDb7XH8Q+!=j=P=m;NHxGjCYw~Ak>#$A=gf#nK zYE({fhQMoGPZW--Ro)_dW&UoZ3-0^4WC*m8Cl4RovDTha?NYq2LEE|U7rz^&?7$<- zR2d#mwDag701lQ4o;kpWGOmuijTVgGoWFT}RJ~K((L-{O-1oSIfRPZ!s()9HaC(b* z%Px;icv;ymPBtMPk$g15tqrzv@!_ypc!H=;(9O?f7xYl_V{ zkOk6ZMKHnTJmqqiDZL8y_^BECcf-D^Kfb2vb4f5$d|e2fQ+!>Duj{AMxGY9^!ytTW zdrn`9ugf_=aDItolYqMIo&^pD}g$adbw~w7m@pY>yTKG6AKPgr; zNYhaHOu;6)rN>K;yp*-7BJMX;KZw|nRRv$8qR#(09e_7SprN! zZr^ylfjY7>c-9l9CV+TMtsakqaS zbyXqyDjZ{y=IB;3B~%j!JFz|6v%~itnx?6ia)^r%Eabs3jm$*xbt%3siM~`70tzd@ zn#kyHwpTuWURl3E{!ApRVZwla&K(yhz242gw7AZ;g)9DOQ&FO<$dp*48lqfut?Lzb z3&Krej4j*S+PzUl8Hg~8k;Eh7?REz=*FuCYHP`8c{6!}|hJ)~eu;|xz&0^KdS*o!k zim$6crmMzz2{AXXs*vuDAq<1hU5(iuTQ_pEYA~%D3nw`o*#np?hz&;UjK#A~%!RlAznc3oSx+~JrrLzV5UQIF>NN7%Lx-M2HD-Lm2oAI^f3(e zp1w2n%i?}xCab!;ex^5n>fBg!imz+6aiio?v%tJkp68*K$Imn2s{X35Kk13Qw-ir}(-IKnxAsVbN23U5c+u@pbK)LR|<~ zipsSEW`kizrh4STJ5WStW}FbcPcYeRkgk4V(z{(g*#5&#RSo7X)qF&e5~OET{~tY` zSp}t<#c}xKqcdE)9)Ia0)iGDzD~h-~Ne&a#BM@O3+75Sp_h9s)TVuK_qgg(_z8pV< z=1B%dSXp?tpF|bwaqeB`pWb+;^zQQ^%8)^xl?T){iURjB;a53iz}IAcu;u5J*kN5y z2Py@SqjG{dE!AIv8sdry!lxtrW1qtxmU8EzIGd%n)?#(R}p zugd!q`?BH50S$rT>-yD2!zojI-Q&rVKUCUm5-|}P3=s3C_`0o+Y__S^b$B}%NnWf7 z?#{|p?{BVmLi3a|8Ca!2lgFtj{iZCa;HY=ggYa+T+s_DZGPe?So@~iBf+NAO(6VIY zlRq{9Ixr5iWP=Rg%1V+&%$7vJ9t4n=9ecXy-Yh=%3W5YUu{(TrA=~W#9IcOr2b;ZP z*XEaRc|M*-6SZRb9q?!jPP}p|7#}9|wpS%^QK*1}m z!B=|=mH%~`*TLn{E&txzH=?a_00udC?t^8g67J2y_n-~R12kJcB_}MSH)-+q84Hdz zt7UR1{YpRfC1=g65Ptl|*rP9hIPvX0dSyQ;`E=18m6fUFPAcF(4HRFu3bLa3x<0APJX|yC;_d`U0*5EC9nmE6ex&=L1Wf#9@Y>r^f%L z+KeaNi9AzZzHDN+3?xZ=;={Nao$KEP2TgZ&e70}%=}JW=?NM5o&qYa&7+E3SVsgSp zYmL_6@7A`9={d9OQB^zCdl{*d)W^Let2W<(9}dRr7j1fA$GYUU|E@cZx3-+Z{1#Je zN%MYC68Y!x21f1S4FO4m^U2O>i~veX^f$%V zWhlOGPCCQBt=ad#N(gU-O)HH>Wj8zrC!W2nX;P`dAC5!~5G&bLmnrnvSldIwUR*|^J^dspHg|43-uo6Hd zWv{rAi-g=@^y8+EV-xppdf_!yGuPLm_w(k28avT{YX&nywfIxZ#LvcC)^0+BR87Wz z9IZ@vd#K57u`z5TZVuGg&`U2a9CCG!@<}B#)Y}#pEnCSq5D%N;>r#AOim%&TXdzYo zO7V5w#POy0x`8Jol+u0|#)F?Ce$o?W5`LjA220T0pO z3yYgYq+fhsK7zIklHZn=muy*^*d^goc)dhDNwzKVPbt1GIf?%ReBG|*o~8^Yx;Kxj z`{~N_!uK^sim&Tmdu@>3f|;7Bj5|04Kiuj1+FkQD_C?7mW76;F}zUTvcrdAkBEld1&L4cQ+}E5+qg?y?WA>wDQQYuSI;QYSNIp=xKVdl()bbqhc?~lhn z5=ah*vwYXj_xmo;xdZ{{s20%VMinz80Xr?JEU(l09=PkQ_S9^IU* zilp{x60^6zgD?GY!r+HX_SK?6I`@?RO0>%grOOH^m1u-YHc{NMxA{ClwuoX39v=DW zcdlP9x#F)4S_G+;27y@V=!p#nHXP)9-6?LS5Xkq~-5!C|=mbx64}5Lys}HWZH{!Ff zVu>~c6P&Nh`MR91%lW#RrRbQ*Mo_W}e%}~XCJM{hFE+Fo@ug7<9~v~L(@a#V6T-JQEmL}%oUcpOFfD0mO>)P9mC)u$%$K`dvd_|Sh-f!T=2-QU59qt#Vtm|I5t&O@+ zd5M8k$><&dDKzf6)cp4PenVPxg%4goKw0P#fg3QdA)A2i<;yxH4P|X+Q3a_++@UWG~W05qEUA~ zsXLh$;3k7Ati&o1yvk^~C}_;Yx0F>pKKIpgn{};SxWm!%s>5b=s>X)%bv4CBv;Nv{ z&ev6nuVy)y(#~gazHSBQ>vFy>=j#S+&Ilfi<9yww`r46KqC-9E#OhijsylCJf-Y9e zTW8$Jjk1gg{#zG`>I~?aoX$~(7E#3CSQEcluzE;e-TA=)U#~VkrIH~D7$npLy%Ey1 zD700LUVKT^)+2cr+m33tn1{^&p@B+v$rZx^<%#%?NwGNLikm;!x8dVkbi<>NCl+`r z3FDG+uLzfK;i1Gkb$h#Q2(;+<=Zhx+KoMDkVyIYw>g<3p&Q1rnErkC7I0>6Q zXO7ilmsW!%X7)n(OI!Rtb5@ENZb4>9MQ{B4NW4Dvw%0!R!x$GHbTC%xRk3RzZ%5;N z-4a0BwPhEVTuJ48UEp>AX@iFa$!Ao5Gnj^+aCvl^izoZF!Y=pl@ZtV79W_{=b}Wyb=9;!w@? zTPqH{G6>bpGohHchFO;!In)bpTs&aS-KAf@rgOGkTQSN;=!+1dgOk?_Dl*L{Xr2>HW)%U0=$HM3Z&noj+ZPK?CeD zf*-2QtVRcDtabGVpZJ?E=Xbqdw)N6hwlfvJos7`L81YrE*HS*=d|gx{_K3hMlBSle z8MFP+e_2#C1cbDQ4lL>)-N|^3ZqUh|CR#sLrl{y66lug;7mv6z%3N^1z3fa)ZIlj9 zEjEbN^)2vX9prpnY8*n9fH+@Qo9uJG?uAW*>!?CFUpIL0UFo1uM`|v#msWrrF>wTl zMF&6Juld#@^C0cqXs8iXpT};kkTf`iJgmi*$R) zZH{zWNq#tAm-BVA)G&`a7v=dbR=YAZg$oSKIA7Ndif<3qf2*z8AU>Pa2;_WSU7ZOv zUbMk4T`SJlrKF945SGWhknnI?r}!Sa%vpNt|db*LpC=ap?Ld3^2UeY#Zx zmgPu`BBuC#Hle}}Fkx#IxM;ar&Nd=YC*AF*T7>`p^4HTxO)NXn2H#H;C`fR11t{cx z0ZKD*eXR+9=yo65Z5i31yBf9)_rA~umDr*xH|OiNHrA?pgXRasXjP;UBhCHvPWaaN zn*pCLP5yCb+#?_B%3;`3;?&uGlrs~`;Zt1WtPZE&W2ZNp^;qarb5TYt!mf}+c?VVl`*NRKH@)y^NlW1tY0uJz2;+(ARekelk`V+QzU#C3+q>3`RG5- z-W~N>nzkXu!cyw*DWV{_A?7WINvb4Nhfq%vj2iH>4{tY(FC6j@ZJB_cbg0}Erm{eO zZuJx!1^jq!(~$MK2TQa?EBgKPbkzGp;$jLjWEdgoPQ_&71zjdbo_jj|7@8h3l2LnY z+GtyTi8)`F^L5)0zj3}Uyn!Gvviow1i#@P020RxNwS9H<9%nD%p_|)VGY%NsEG`7_ z3M`QZ8rq(UT?e+#duUtOjn84?9!)thUldbNA~9dv@#ySRtNRJhZPzZ#3NSz5SP9#3 ztjk}a@1)rUz)7(NoPW{m6J^Ub#)sIJ^`~WXfM(lohmyR@OB&C1Pfrn=2YA&d;)$Bu z>bj#|#I}K9E%k%_bXZ;FV@po{1Y%Qtes63uzIOR5e_yrt_et%o2?w44t-f|K8aw06 z=9Z+=?Fsv}rF-T+AUvvop#h6iCYP`u^solopoqE&_mTx_j@ zt`uw%rj40uK%5g)pBVsZj$-&p^v?2~S|n)56I4XET9?H6y5~R1;Cx-q*X4X&@EQaY8fI1jYV3X| zArDP2y}0R-gYl=)u#j=9;)6z8ZDnBfCdyj|TX~~yL)L$cKYQ}#=Q|86SdPZ1N77j5 z)@KxiMJTYlW$lhaMu;-u8QVIP{rtv{?`RPQAq^s&kJsn%+kApYwadodSlIFX@I{T* zJ-R7JYpbl-RGKHrzhP&Xn;Lg`;me$_>yxx-N?H_B@mJ)r+i$cw%k7?PL?cR$NW~e& z74tb?SD7Y&`iGhGb&04^d5~I(UHv59mZhJZuWM(88tuYUbAB0=U5q|FviJG;RpSP} zf^O0=x8dH>LZ~kll|j?5IB11~)btZPg?3M+!)A|8!sk|Ay0X*$=;-!_^KvUUXb~#s z>$XMHORMFauL~q6*7MT|pZM8geu1D~@CtH2CGDsHW{Rj}<8So4LeD}U} zcl?}#t_tm&TMw4@T39_N8z&Dwwe*3F3!}Aj*DQq!>(e1IbK3I+TRGq|hGi#LCNvj3 zr(1}kWikl0oR%V?(C2|~Rr-AK%`teh@2727ZrM3gn{=^LpqEEp9?0SoWq18(h$$fb z8Y$i_m?tztl@;oPsCc>a_cO_AF5}#iE+H1l&?LcVCm| z#T;!@D(GZrzn(^ta4Y1JFwD<$zAm8SrD7#q6`d9@yH;Jrt^$5NegB}O*#k%a)%N~4 zr(pH5LxYVjcg(%~@uO(9wzL^^AH%$JL?PBQd01TM0jZhc-i>0`J7nUG0zvT6CnFB( z9SvEzYmy$`;rXkci1T&nMp5Q?XyJs}1=?Va?uv)>IJ48`f8$u#;!v0;K<&*GffD~7 zgV=0$+An9o#;+AfvBkQWZ$a3Z|9!W!tnky$`4o~kXlc@e|$QD0U`#@3%6-Y6gL~y;MrrX*Ly`i&tzcf9#ElXFd(+c-Au=@mX{asTdQg)Naf{SontGlPCu#fTq1V37H>)Y^7Pmr|7h0z zZQBsb(xUFvf;?6%fK!`2ZqJ%~er!6dP2>VjO%t^!p|%{nuqFWLCPxu8~ zY0lSmI$G`FqFJW{s$@>7vqY4P_Nb2drG14}#-4v4sXOk#US(BvU+4#>q^By^?y`I2 z_g4|*{~z#mGcrrk>_e&dx3?F6oxu6J(&zvg7a^^h zLW0+J+0;!y5NN)ddV1*8cb~tfy%$*y9)iS8Y1cyCI-zjelEJ?%E^lv}Da5hKp?eor zq+dQ^!A#w*DvM0yU{cwtP3pz5XL0u%N`KA2A?G#S$9kZM)TI7LO$ehM2i8F&u+g@QH3X#-(tdV_RsMD zWB42+nxv*+?a78lRryqV0A1>He`{WMc;M~JwIM%E?UWQv?f11>t#BPohRUO`Qm)PU zx}2|@b7=20T?7Qc?k{XfsRtAc79wL%!UH4c>vFzsfL(%GmmP?sppzxU8iDh5?Y=Uh zxYZ!gv58Ml%3FFkN?QlK5U(KxKV1ek_P}2)Hf<;?N~zaX_t7v);|e)nm-BVWG~S=8 zUxHEz&e!F9UC!4X4fT}@gc?3ZV>Z3~`R-kjXm9Q8w{Piv3Uwy!l^V|1)o%1=6#&{m z43cA-(+mdOKXd41l^OkaqJBC_6g!5rU!WLXLPv?i?inhsKa&DiJQC08@bz6c&YpIa z7Wo(COl23Sq;YEdRq&*VS@$H}HNk*yKlRaLV#}*#?G+qr_G)Of_?)lH`MMVNG^+U) zAwgJf=X_l|=j(F5t|B$2)i*jK0oGa>p5c65&exU4AtWsfJQbX;tJz~7R1l^EAW{XG z>~NHOFUD%T`@#3eZ=Y{|qrJe^e8CI)6v1V6GI^4>5Ne2a4;kCF+w48qn{bObUsr{ZDzBreMIKz$&fr{sDmFO7l%$5#Ggh-a=xx4;NpDUnsjZ2FtF;#7F1XmghgJiD?O||zfA&S!LD;d z7cN_}cBu9^>~&$?ZQYniVHp_bV@F>LTHxz@KT6km=!5FN@;T5xO2(ntF@}+FCe9^; z`|a&_X_2m2OgRWeIF5t8xK>~K_tl)QJEKvoj=`B%rf2{3-ucKdMQF9+H&I?pF5gr( z%tUMqs3WDjYLAY@$L~44=)~~GlW2f?Q|S{%DlTfR2EYugmLC<54`v-U#`*WZs6`6X zZ&dE1dM>)vM_AY+IOf9CM4{j9c7mQFas6cp_?_uJZ+(9A-h8bPgB~|j35fG`p^{rc zRSul5tLaO%!5PbAJgpF{oUhCIx?u}y(*8YZNoOI%$q<~Puacti%HFGg z{XYHKUv!r<(nm6MXAfGXghf$u*}0_;9xbwmkZ8+%AJ~oHl&v&rvgTW1VW`I?_gbX@ zpldc7iKpFrYT4`JGFrStrM+p#D zTV3FnWT8cj1%JA|{_7Jd=5~Xt=%MBHb?nHIM*Q;2Pj71)d?H1=K$SWd8o{XX6m4NM z?*)e<&XenRe&_j)%}XK}vnKNp?#X}3GEYs=DKDiBw8Ptkotl05u}sQn+D zI5TmU)}e=X9MY>C=r!UOAiO`W-W;F&?I_*FMeIbRB^2~*z~|^Js`kP%Z)G)8zOwMu zn2qa?uXwamY3bjzGW5`A2~Q1N1kTs>hH8j$zAk=X#-`MNZTV)at_N%Vzy_Ei?behj z+24xd!s;`IWh3!xAI|r_a?`49Z2*ud+?_nZ3j2(Kgb5p@JXJA$aQdcQY44q#I#659 z3V6&RN>c_v0i*_N_~mJI_DWtvFrHT*eR9E>^Y=$tXzH*+%`MR913+p7;VJkzX-PuMlV;$1qd8yqzPF#{ zd|l4h4J>8Qt{-z2W_ZmxUpIhB7O>JBE*2zuoUiLAQu#phPAeZ}&?dBc0K80hcyhk3 zwAzKfaeCEy&e!F9UCXT2uT`5UsY5moK;|2RQY?- zIc;quWH?Dm2!y}H5-Iwo#sG7E%+rTIY%JayF1`(E0Hr3MRHNL1s%v(fxoZ)+UZ;Xg zU33^x8f}|#zAoqMl4ZzpK;kFs+cgCM?;ukX=j%qjq#aRX(F%RbLbvwEI6M+luL}D6 zpW|5b;4h~i*Bw=67Fyk@uNLZPbAUB|XtTn5$^PtA95K(`f634u^R(Rxc8=`8@~&%% zaSk__9wDdL>IMlxhwBaai%0ro4Zb7&Lv8Ia#9`PZsayqSax;2V&e!F9UC!6_UD$XH zRK>Ifv7e!7flytwDE{`SnS9uoO8!eWejO4;aYqCmweoC_3C^8+bZLr8p^OF+sxb-9 z9SFhMOq4z`S-7O&s?WQ;`h1jjCOja@0jmd@t7U@A>$7scF6Zlh^gzo&+^Px9yavUK z(xSg9L21(>IxLXWwy+~J0#37Bv3y`nI#d+F_>VrQyu>_kr_OtPaR z`sI9Gn_$xgLUFz>jCB$t#re8Ux4E#4EL-yW#yLD*AMm6(Usna)jh*ecI=wSUR3`t) zL%8{hJ~>@$XD!!Fqo}D;mV^4eKA{5aCy^OT9ZXsLBIi?r$J7DgyPO?ve%4mmue}{t zR^|cRgS3PNew^IWk2c^tRu}Ji{rztBVWc%`;3z9w0v5S+7ZG^ySp~vF!X zzLQfYj;B1T4 zs#0|>mOWrnHwZ?#6izPZ>v}8~R`)j3Y%{1DK$4dZ%?4c1`Q4hI`^QYx6&};4I^>Ra pb6VVU5qQ#`mM&RqcWptFb;25YjL_i;k-^xV<_Vy1_