From a8af4dae0c276914c36bad4fe31e2d2f90bf2644 Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Mon, 7 Feb 2011 16:14:35 +0000 Subject: [PATCH] bug 1362: paper update --- doc/papers/2011/europar/TODO | 2 +- doc/papers/2011/europar/execution_times.jgr | 60 +++++++++++--------- doc/papers/2011/europar/ionperf.jgr | 15 +++-- doc/papers/2011/europar/lofar.pdf | Bin 750300 -> 746074 bytes doc/papers/2011/europar/lofar.tex | 20 +++---- doc/papers/2011/europar/stations-beams.jgr | 16 +++++- 6 files changed, 65 insertions(+), 48 deletions(-) diff --git a/doc/papers/2011/europar/TODO b/doc/papers/2011/europar/TODO index 6df2fa74a97..8d2d22d7b7a 100644 --- a/doc/papers/2011/europar/TODO +++ b/doc/papers/2011/europar/TODO @@ -11,4 +11,4 @@ V 12 -> 16 int factor in grafieken en tekst V c vs asm beamformer speedup = 16 -- ionproc stats & graph +V ionproc stats & graph diff --git a/doc/papers/2011/europar/execution_times.jgr b/doc/papers/2011/europar/execution_times.jgr index a18fac2193b..31602fcee8b 100644 --- a/doc/papers/2011/europar/execution_times.jgr +++ b/doc/papers/2011/europar/execution_times.jgr @@ -7,13 +7,13 @@ 5 = IQUV, 64s, 10b 6 = I, 4i, 64s, 42b -pre_bf_dsp_&_I/O -> 3.44 % 4.69 % 7.70 % 4.07 % 6.72 % 7.04 % -beam_forming -> 14.36 % 49.19 % 67.27 % 2.19 % 4.56 % 17.50 % -coh_dedispersion -> 0 % 0 % 0 % 2.76 % 2.12 % 9.18 % -stokes -> 45.21 % 26.98 % 13.32 % 0.27 % 0.20 % 0.66 % -2nd_xpose -> 5.87 % 2.73 % 0.85 % 2.88 % 3.40 % 3.37 % -stokes_reorder -> 4.99 % 4.44 % 2.11 % 5.77 % 4.45 % 4.68 % output_I/O -> 1.45 % 0.48 % 0.20 % 0.80 % 0.36 % 0.38 % +stokes_reorder -> 4.99 % 4.44 % 2.11 % 5.77 % 4.45 % 4.68 % +2nd_xpose -> 5.87 % 2.73 % 0.85 % 2.88 % 3.40 % 3.37 % +stokes -> 45.21 % 26.98 % 13.32 % 0.27 % 0.20 % 0.66 % +coh_dedispersion -> 0 % 0 % 0 % 2.76 % 2.12 % 9.18 % +beam_forming -> 14.36 % 49.19 % 67.27 % 2.19 % 4.56 % 17.50 % +pre_bf_dsp_&_I/O -> 3.44 % 4.69 % 7.70 % 4.07 % 6.72 % 7.04 % The above data is read from this file and accumulated using the following command, where N is the line number we need: @@ -53,55 +53,61 @@ Case (see Table 1) *) newcurve - (* output core pure I/O *) - marktype xbar marksize 0.8 fill 0 pattern solid cfill 1 0 0 + (* input core I/O + prebf dsp *) + marktype xbar marksize 0.8 fill 0 pattern solid cfill 0.494117618 0 0.129411757 + pts shell : awk -v N=7 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <execution_times.jgr - label : Output to I/O node + label : 1st all-to-all exchange & \ +input handling newcurve - (* output reorder *) - marktype xbar marksize 0.8 fill 0.8 pattern solid cfill 1 1 0 + (* beam forming *) + marktype xbar marksize 0.8 fill 0.8 pattern solid cfill 1 .5 1 pts shell : awk -v N=6 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <execution_times.jgr - label : Output reordering + label : Beam forming newcurve - (* 2nd xpose *) - marktype xbar marksize 0.8 fill 1 pattern solid cfill 0 0.7 0 + (* coh dd *) + marktype xbar marksize 0.8 fill 1 pattern solid cfill 0 0.270588219 0.525490165 + pts shell : awk -v N=5 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <execution_times.jgr - label : 2nd all-to-all exchange + label : Channel dedispersion \ +(cases D-F) newcurve (* stokes calculation *) - marktype xbar marksize 0.8 pattern stripe 45 cfill 0 1 1 + marktype xbar marksize 0.8 pattern solid cfill 1 0.258823514 0.0549019575 + pts shell : awk -v N=4 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <execution_times.jgr label : Stokes calculations newcurve - (* coh dd *) - marktype xbar marksize 0.8 fill 0.2 pattern solid cfill 1 0 1 + (* 2nd xpose *) + marktype xbar marksize 0.8 fill 0.2 pattern solid cfill 1 0.827450931 0.125490189 + pts shell : awk -v N=3 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <execution_times.jgr - label : Channel dedispersion \ -(cases D-F) + label : 2nd all-to-all exchange newcurve - (* beam forming *) - marktype xbar marksize 0.8 fill 0.5 pattern solid cfill 0 0 1 + (* output reorder *) + marktype xbar marksize 0.8 fill 0.5 pattern solid cfill 0.34117645 0.615686238 0.109803915 + pts shell : awk -v N=2 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <execution_times.jgr - label : Beam forming + label : Output reordering newcurve - (* input core I/O + prebf dsp *) - marktype xbar marksize 0.8 fill 0.5 pattern stripe -45 cfill 0 0.7 0 + (* output core pure I/O *) + marktype xbar marksize 0.8 fill 0.5 pattern solid cfill 0.51372546 0.792156816 1 + pts shell : awk -v N=1 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <execution_times.jgr - label : 1st all-to-all exchange & \ -input handling + label : Output to I/O node legend top defaults hjl linelength 75 x 4 y 110 diff --git a/doc/papers/2011/europar/ionperf.jgr b/doc/papers/2011/europar/ionperf.jgr index 6ddfca3eb11..7e567d22c3a 100644 --- a/doc/papers/2011/europar/ionperf.jgr +++ b/doc/papers/2011/europar/ionperf.jgr @@ -154,35 +154,40 @@ Case (see Table 1) newcurve (* station->ion *) - marktype xbar marksize 0.8 fill 0.5 pattern stripe -45 cfill 0 0.7 0 + marktype xbar marksize 0.8 fill 0.5 pattern solid cfill 0 0.270588219 0.525490165 + pts shell : awk -v N=5 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <ionperf.jgr label hjl x 1 y 105 : Input from station newcurve (* delaycomp *) - marktype xbar marksize 0.8 fill 0.5 pattern solid cfill 0 0 1 + marktype xbar marksize 0.8 fill 0.5 pattern solid cfill 1 0.258823514 0.0549019575 + pts shell : awk -v N=4 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <ionperf.jgr label hjl x 1 y 100 : Weight computations newcurve (* ion<->cn *) - marktype xbar marksize 0.8 pattern stripe 45 cfill 0 1 1 + marktype xbar marksize 0.8 pattern solid cfill 1 0.827450931 0.125490189 + pts shell : awk -v N=3 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <ionperf.jgr label hjl x 1 y 95 : I/O with compute cores newcurve (* ion->storage *) - marktype xbar marksize 0.8 fill 0.2 pattern solid cfill 1 0 1 + marktype xbar marksize 0.8 fill 0.2 pattern solid cfill 0.34117645 0.615686238 0.109803915 + pts shell : awk -v N=2 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <ionperf.jgr label hjl x 5 y 105 : Output to storage newcurve (* interrupts *) - marktype xbar marksize 0.8 fill 1 pattern solid cfill 0 0.7 0 + marktype xbar marksize 0.8 fill 1 pattern solid cfill 0.51372546 0.792156816 1 + pts shell : awk -v N=1 '/->/ {a+=$3;b+=$5;c+=$7;d+=$9;e+=$11;f+=$13;n++; if(n==N) print "1 " a " 2 " b " 3 " c " 4 " d " 5 " e " 6 " f;}' <ionperf.jgr label hjl x 5 y 100 : IRQ handling diff --git a/doc/papers/2011/europar/lofar.pdf b/doc/papers/2011/europar/lofar.pdf index e00393c58c6fcce445c72279337d57effe0af01c..d61299958ce2e164968d4e914e9c1976fd65af26 100644 GIT binary patch delta 22543 zcmccfRQJ{q-G&y%7N!>F7M2#)7Pc1lEgb3Rna#`%rYEX$YSb^4JU!|0wvYSb7kaN+ zvB^ca#`8<=-x(I`rlf0!X|dmC@8RH`_%xgI(&LlYm&Y$yA?cSTJO9RuJQJzjI>sKe z{@EFyua{r!et&&=dHg-uE6)VP+C6gpruTYX`Y<7VwvBz;#f3NKoH~2{;N8FW+xE|^ zW4KmvGO9((u1V(6&t;c#v+J`SMtAx2CC-txxqrVdMtEwQ=d5b6t#_XXinJ)!*UPwU zix#XqaoA^R-LviAPi(rW9bs(0>g+y_ZkwNfeE*odx>)vh{*5CK&-!+}F*l!h#%s>L z-y4+d{0=#3o}aS5L-UYMeQuYt%qpG#F~K5r|4y2vrSe{SbbgNNso2eqd|A(q*W0Hs zTkH^Z+^%jlThaRv$Ay%(AD_>D*n08o|NOS?dl{eZ%WOL=Z{+-`a@_}~V{uD8XEeF% z$TDx;^}0>%`?+8HbPvubNn5U`xb(ht`mFX}Kc{PSA2Mj^clucD_w$q9IkS|fbFO(V z+R*XntX){*lv7sq+w-=(eOxA=9=Kp%($|Ln^;W!7g4=(J*jpG+mEAml_a%dpmuzgu zybS(cnA=;t`Ngi+RmT^|?OLfD|H1yj%c{s;!NRDr9cMQyq<n8&o5p#AYg01UK^HI6 zZCiUw*~CvIM|dy(VZ-Sa{5pMm@)zE4p*yud)E`&ho_%Xu+r_*qrDuaDIpl|4=vw3U zf8U(EXmh@Lhk55JY<}O$d93pzclD-*V10?4^&t@{lCN*PW@I_+w2m{-N#sv<bq`Zi zDC^dX&eleCYrdSgu}(gBakks{G>6MCzUdUNNp>oi^gXRnyY7wC#7UBJ^JZ4Po5j9? zQI?ZO`pQ1Jw{@X+rNS+jG|HY;cqw#@bIq}evxnPMraYLombqRnNNmNw9fDirw|ALy z{aN=aVE^*4CEI)U?NU?-J#jxcH8oIs)2x><CwJXVxc0?NT;#vE$kFud6N?OZb+lgh zzSz~SW5Ms%zscD`j7?5MSYU6qZDCA~__M=q<!6HY(lmva_bXfK9cZ38M=&sHLs0)M zY4_<RW(@Id>mqNvFFt8fZ}{fsfjCtr2FAYZ+mmudmkT+ZxVCfR%k{ntPt<Lg|LRP( zdREio@kabh-j5T?o66^0SeJOB?=b63fi3C_=6_AlyS!?D_J`JV_okqNGu!SMnrwY= z^fAjNp5t2|96$J~iod4Xm}i2Y(LMbDzb!{a{%$v7e$U}H$&g`|vD+^#rj(!c$^XRJ z96l~xH_84)hiBE3ISmf^U))=|Qg6JSaji_5`PRqnoBFQ`1;?<8?J!`<F#N-{wBald zbINi-V|AgrbM>M>`EOfrsYNm$V!A8rICcHa$|YKUHzy@IUDC4rV|1|Y^HFi01Dy*+ z&o^!7ZLxCEpFT5y>%gYG15Jh@h8hdEDAYf>`!>!sz<R0Vkvq#zJP>?lH|f_}&9%&z zckXQ8y;5@ryFjH+<dbTH%%cmNE5F^J+wh>=)<vnk&`6#8o-o7T5Nq27JHOp+Ha?tR z@!_8D#JaO@iiJE6Fg(b}Fq50MLTicBMY9;=PyS(VraD_yuL+p{=0G5W###9?W|bJW z&zVfZ^@}6t&9vZ?`Z|T_p+x1v1toJ#6YfPgI&7M7XMPOdZ8o-qRoS{Vyen)>=k@mA z%HFof_UF8y73y_a=ML=9;LD%-w86!uTFdXSk$D84mPvswPl{7ZoKC}Wr74$!jF|e1 zH$|E6S#sg0QdjYnt3Hd?Wy&8v)oRhzBrJ9|Pq)L;^J4wNRhBok{5CKgjajv1-OBKE zmKB?0^2%&P%)8TV7SHY!ddp}mP;VNs?`g|ArkrCjsSDMnXQwyX&5^lTabv^7Z3*t* zU;OvK5c{UZ=a_w5F6RT`^rmDNZslX97t9_UvQRjDsC?qzsI>PgHjKtsc74Be?A6gI z-J>7hE1zF9wLH7pqW*QK^zJ7WEd{wpTP(EBuF#F*Vvk7saQc<lgNi&J$)ihU6*EQ3 zZLE^}L%fb@h)F89EelQE$E~ZncfsL36O$JB+pPNeN#W7oMXFcJFZqhRcQnsy`5@xx z^>LAW)R)bkLhO9I^uC3k+1c@M8}GuzLus6fwF_^gZThhHR7l5~EoTnYZ@L>5KGP`W z$akT&*MnuZWx7Z^t-RYC&^2poQjc8pk28@=iunqhK3q)Tt+X!);5(){w?|z2gNSF` z?}dkNIr4ITFnzG}!SUyPzn&dZ&(s(5=eu-rli8lET8jfl2JvrStWsRaCb9C^YQ3N* ziIdKXi+;)9{Y>JcqR-=>Zp$Lqwfv~>b3eDdx?@%5j)w&{hcx8pS9kyWbw)$<b5H;M z|Lu86dzu|Z<ahh6+h34sBlGz7ov$f>eY2+Q7EPJ5b5^{!rnvf!3u2j7*;}lCTTE1U zi=6QJ`1V_U?IP!yf)9zwh>5n;cPvu5>mE7j(~Lcm`^1eH9mCZ*C7svK<Tw=kRoVE) zy80=9*J+%NRV*=i`0+%*V<)zE8)qzK{}|$M<(ZMulk~Go@;3BOTQ6fEq#Y>7#>l6$ z;-y35w~)wP77P{=?4=Gaf$oj9()G`3x|l3Julw;l*tOI2WR1`Lh&I7Vq7N2bbiDb_ zQ(MMK_kByV{R`6{tm`LozDZZ?e;2>bq~N#XraRpAQmIG3-kxLbBc{v4%$zUrihFP3 zg}+N`uNW=A<g71Vt>;m6{CG*IwEpQW{}LU{{%+fU&!pqG%CtK&@?whTG88}SJq|xB zdg&D3dT(nviI>_B;`Z&BWdHd|dnH@?ry1wuG&4h<{1%-)mE&z9)2+QHns)CNX4-lF zM?+C<?!}Uht3CCTic{vuST7KEyO8<#$jgK3(<W%j1UbA~s3tMd^JCPH#cT-^d&6(@ zEZ?~H_+g(ZDhpjc&V6h%N&Uctd#n@gegA5#Ua%(eP;{hK5rclPcfX9a+^q{OyQ4WT zMLAkcd1n2Qm(9sm=a%W~KFdZk1)Wg${EfAlRhOq-5Ur|duU>eKrCyMAiY^b6iNvIX z2`?sa+*|cf!gIGf!=0~%7koe4OKsk<qq69hVVAR*@{&2{+zO^Lthjq*x_VZRa7q0h z{|QYNHRpTyfBgxxYMW&E#)F|i#eJXdNAE-B5!e0}E?fKJ{8RNuE>4aXzpt*AIFq04 zHfPB}M*EYS(iElz=T5r!OS*7feOn~A?j)ZbAHLV@Ro1(A+{0<72cz|~Z!bAkY`eKX z*5QH1dRyIfEB35=#e24;J-?PqJ|iaF|Iu2lkJniixG0L|H@q<P@Z@%x@<O8eQeWn2 z=B8=})`^dvE2TV^S|^m*b3N8SXqDEBxh#xcdn~@?dv!cIvR8h0?d?eW#(U44+Vbm* zwfrPkpETtCwXtx+r!5J0LKiJ<SGwCbLusOL`RU^D)${MHS+Mc9$-%bcKY7^=KA(1t zInp@wTF|T=P3u0FM0AL#36?HCab{1CwwvY5WBK{T<yPj~7(O_Q@xN2xdGD8Jdgo=Q z=-&sIQ`oaI3Qpwv{=8i`d%1btYeV1m^9QS*T(3`j-^1|b`e`#hO`QkY;u<Vpy|lT% z-}_K8V|K`{9EbVSWSBNzy7<oa_uIo08kq{-Recs+((7ZTl`%nly;4Wqo{bMC7*9z) z_cOPn$YheL@Wsfp9z{`4mVeJWeU|Tm=F&&jp4|Jk79~G-53Aad<^Iyi!0GVp{SyCv z-+g(vo>5EbDr3s@x7Ru987(JI;1U%zH&n1NQZP^mQqXrZH&U=L2C*k6D!EHom@614 z<R@h**w}FC`=sWjmt-gynOGW5{}|4tSs!_J`t5Ck`+u*$FtKWD0+Wj4rwPq>Z>+2C zyu0S|6IIIs)i+(Hu3CRi9Q*tFw=|E#M4_!WxBdRM_i2KG1kW>W<A5Ez;#*gL*FR+c z)9Vj^c#-Pjh$U8$s+l@MOT%s-?!F(_qBMPB$|TJk^}k;26<;4N2)}QpZ};%Lf3D5- zvn_9D*UuJTe{W^V)XtdK6{W@Hx2!u`;_ki)vuA&Q>i1S3rj7SJ=CVbtso(q4I_%|1 zt*IQ6&u<*p`(Y6>H!^=pU-P2e(_6io?!Sx=G~A@mzbyH~!Z+Vj-)6j=%o6nR!|D6~ z&K@X>zp}M3JO6C#WhtS=t%bYuRK84nvgf;gqEOhgb;rY#>RpA{T=y0qh|P~;>s+P# z{=2Zz_S4IZboBjlz8|@A?#-!p8MoHuWL5v-KD~FZ<X0KhogR9*%O4qh+9v%_dz-g@ z&hr^|c~<*Bo1R|UJ?*rM&}rk-FC$owZ~Ljr6Y4tcQelejQR5{6*X-BNeL4TctcC2U z^I|V+`cCw_ZlthvU8qD(z0UE1bFYK$e>-B?a$Hj3kDF#iHrr7buN14NsR4p~GHr<; zYVX%Xo;KKUkInht))m{FL%%$@-Mh<T<Kb^wB3ebacHeXs73{0a?s7h!aM3EJSVhk@ zwD#%8Z7Z)AzBqT|Tbg@@=#<j?1_wjLr0RdTEIw~<QTA3;>z_>bHVcUz`QPg&{S^D2 zeMDI4_-bFLT+Y+BC8@RiM!bc)&&lMi?UC4O;1d~rO(ODON7`<E^>2wPvhN)}dNJSN za4gq&wN|hv@#+iX%C8{-$L}0nC4O;b*=ruhtVxwpU#d@(?JqYwscz;eEO_#wy}f~} znWD#o&lBhWPiu76OPX8RB)`^LF~+~Je)$9IptVVB1)?llubtoDwp#X?!nTf2IbRbr z`B#UuXt9N?-RE9V#Nb!{Y0jjGjGW3_1$u>DJO=Y#=yMCDdt}%BTh7{e(7ye$y<?K@ zq5yj}!-%7iR^mUGw_doQ#O*#aPVWSdUFSEJ`Fi}lJ&XV8Yd;P0P-%N^Fgbl|g1Sas zUcH9CP*LKK`?Iws8MbuJI~+2x=YUcrTd-@#;lQi&^?j#y>s))j?b7v}rD7t}J9N&f z&zj8bQ{XvQ=9&DnAf6}P0scEw9zKdR64AbXSIy}k$LAlBJPzgg`*IrI`20WV^5*Gb z|0Dl`rT=b7S^Qzi!~ZwkZVKm2>D&3e;3$Z-M81Awpv+UJ%&#(LU5k0HX8%!<KI*?= zqTS6C_ky=^?6Ps_x^N`#{Dj$VVca`2)$Xbt3N*elar5f^3!K<n{r$fiGv0ny;PSP# z`!9e0ivOlJ9xW_aIeWM1tjZ3xmo}TuseEwX$kJ4~cioC#hh6QaH?3li`R->C?R?V4 zz1IEEUK{0kqV>5F{$5<srCyzzjL)Cv%X@7k$y#%5@ygvrVV6C^KRmD&lW#g6bA}<~ zY`*i&TbF!~X*Bx0_HwoEcGl7GT6rRD-e;z#I*QLfuJ8=EnZMdv^rU8HO;keDE(xcK zuDRA;cfat+bSX3QFIy#%wc<-jZIIfRnad+e-L-h{)&B8ma9de_>+9PMONBrCq*t*$ zP@I+&^ZD7|)&1E!I9geI)t@H6^}NZOQ5I9St=aBvK-oOO$o1x5&qXn+*gZPeeJ9UC zZuYk4yXN^MH?BPUW=GlCyE;4#E7}k1+MFtPIk|_s!-?_#m%A<B?zT97*b(=sG&J{D zT5!lZ*P7q#U#-4Bo4D>!sd|0Bf0a|B{i~CQ+PZ%)t!sAbnBCQ39i>zgBrIfmspZBE zC+TNV-K@5g10J|ZyUY}3cep<N+WAE`4*7SsKh-TQWX|_&k*(kUd*Q!F50Y-1&29d< zCgSfhsWa8Vw<B2o_1+Y7PET{0X?p*{ZpXWCe738+5<9DQw7E%T?#5|BX6vUssh9O) z+r3C%VyE+r{OX|Ds+n#<YJWbwvOabpu5R6o4eum$s+WD|*|jgTyL$FT11+1q#nJ*| zPs}cuSD!m1dBc6KzG9DQdz(-CNzdIeZZ{U?`X5<i$gudHWAftW2^s$vxE;LlKI^rq zan##B&(C^`gC<=2yW^!O|3<?LioV82etEmq{|#gj(-X<J-J0q>;cA>w)_L1&J2>?2 z$VA;b<!fntOVr~3LAH-vQ_JLz3;1>h?CSnp+`IX^b8k%l;a4r6rry2SCG*@*+0UTm zs`Jjp;e7WZTHoDVwWjO#skIt1TODuP*y=1>Co2{_^`+JRt#g_CS{`tp^|lLq6(V7~ zcV>VF>-PG1$<xO#=p}Nv?OP{#Jn7|$ZdQ?Q*SmY|%^rAo%&V>c-4!R!aoj)cfax_) z4%Ou;-gyDHybrPKGH5fXmWnk5xL!5od7Im$@Tsk{FL(1+FQt_0;{PU{n6P)vnzCB^ z+sdVS>48rVJ`-p#k8A1_>fB*ETlJv(*<}-VdjzH4)$2W1|Bm-Tz54o$RdRJ%Q>UIQ z*6KapF1xbmbwR|j9OY<5e$!7IpH|+##NAQdwCBN+7a!X%q{O<tk^XeN{bcEFy;+BT z&EnY-z*BKq@6j>wAWmg<aqg(gvJ<t{uZpx!dhoJ--DU#=p2Ir2_UCUUmaoZadLqeo z=c?O-A9~rvU$-6+YL%?t^i}q49s4_7^~DDKeZHYvQq99M7HqEM3*H>f_v7Z`kQX(2 zXO`E@TwQ+4pnQAJ(T}ClX_G(e+GGZPGy2oSyNlWR&z8A!-Y?n0ckK98%~<0tJadW^ z*=}dOc=6IIaV_)bg=uQB#UD&ukIQ-9srp`e$MOxwDqhyei*=<<dTL)T=G8yc+}>a2 zywP;a5{_xlls@m$dVc%hz1cH&OMQNjz}I^>>|&{3YeL{HE#Bg7UY`?vJ3j79e>KhD zY<b4ocRGFf&+hCGzLj7nm@eZG9;~aok$;(1&~hoIpgDV#=chFmh|5ge`Id3lTgHV; z3^p%oUM?#xe$-*-Z|({IT_3qD_j}6ppgz-7VcMK??(tKeeYqBW?>gTz{_EEna#-i5 z#pOB0W?oC};EU?3UB6#5gH>$(ViN;z|L2|>k1XbwUMcJ4HLcMvNml>P_khdgL&IhB z7Tepmx!=v7Vs3P@b&33zG}j0FUar^?cJoKHV8W4x!=~HkX8w#?e&*w)^Y1ElefSb` zb=uc$_32+?Z_7x$&wJagXCP)IecQM^Rq$`JS9h@B%a5%e6XS19V(Olw{P|w;+yy~T zp8t5WXT|?jm;SFgT4<cxaO#)Ng#M=&LsE0swXeIn|CCy&Q&~~Pg5&e$-n_W<()j(E z8DEz!jlEvGcKh#bD`zjX4ozMl$M1J{_3c?Rc1o{XbnV)upYdS@hCR#E#plT07i6yf zn)HCn%xkL374KuaguD*lW3Mt!IGX4qXsqZ_bA{=s9n%6+-`&RRbS|$uTh#3}{e<S( z#m>9Gt$tX~@MF__J+9Qel;V=2)Wlp6D?cfV%ff6r;|&f)VNeS&h)X{xwK%`DC^@xQ z!NPR<!?_%))BCS;3Qo_y!O_5EX)yim4URx2OT+07H#tOkEWwRQ{U8ekOXKZ{H#sH? zPq+BU!8^UCg2QTh+*=O*>E33XLepd3a_BHw8cyD5q{C!sG+l8Gr|9&vZ#k5hEKRn5 ze9Pg^$Y?oTVGXC)bpQ7pDvYMnKfdLVnLgn?N6qx@ES$pAH*DgNnr``l<Gqj>sJ+T% zX9sh-rRnsC>p8Wjr+(zPB?NIllBC)8z)u_(*%{5J2Y%wP+#d6bLx+{oVtVI)jvz)$ zum|`I4Gcg=f_z|TV7UG7e-3pPMvLi%6&$Y9ds#T4?(b&d)Mc~;IiK0kzyRX@KP;R| z%!UR=(;L}1J*Qi}<8YWB@Qy=fIv+cy#PkjCIE1FZXXOlIHZ(AVsE=XeRAx3bFy7wC z#_7li)(Lj{dv?xSqJ{=0AZH-?%+SCX;x%?o&OgGY7_ufHKUr+|<>GwA%xDVXWbkpe zaxz(%PB#eUFcH#svrw?G0BKavcQZ6mu&|sSAIc#<-B*IsX1kXv=UTRUi~DVsAJ?BR z|G%^QkdfCmqsMJi6!-fzwjVFv`fKO@->r3ZFYbNbvp=!xyyW(zGuF$mxJg;;GjTu1 zvgFc?A`el$mRU=9Hm_JRH-&MNTxV@9Z@}`|=d3xm8NMnw_QUp}Ls#^P&4Dxb?u@Es zj%Cj9)wB6^=-BbJ{0)Df)C68B+*({ehpncR<7;A++Cwux&x4^6sV8-ou`vownypo^ ze4gdLJ?GDd@65QQ6Rzn0{^&2iB|eki{<)~u<ihiibJt$4Ba8LbS0A2ySzT|h)W7MI zozfOP|NP?fOvB~zv1Sbu_ZREF&sVPtc>O}#zVnmi)!q9SoR=?+vT>I<v85}+eU)>H z{jB=WuW#6QOYczSl&gQZ@qS(WaTVpYCr&sl*^~SzZRHnv=PmPB7_qBvKXl}+=QL5% z`Q2Y<CQiO`UEJr+yJLTUW?Y)>8oy@2jj~NX`(GGre7(FceuYoHm~Z;0wx|7qJ%wkU zZ{rXa_|p=V^!Jj7<H^;v4#`nE8jH(c-+XYP;pTxIt`+s^T7K)JcQ1WC*Z%O*!k6=> zU3-^UvGKo!h<?3{QbgR0D|IRjN4_h$`}uaiiCS*-Ynxx{laCGCPF%1$xAos{Mdmec zp1$(m=Ml2+$ofr7l|TRJ)0_Y0l-rTmllx6}_gwhzAv9&1sGX-rckQE}ucx>71_|w0 z;rcR4^&e}%OID*R<!}98U&{OJzI_ePqkwrID>9g~_-^${7_NQY_+t9xp#6*@pHEjO z3itBnJnFn6_Q_W7+Izkh*_V6Gw~8bk3unmDn_*nfH`9LN?`fBA)-!T+Y5$o1@Cm2z z_E0@eRz@Zx!|4}ia9U5FuFvVhY-V6OePJ4>a(zT>eu%k1?f(6T@_B>4KYHJP+)0yZ zYZkM2ya0b9r=ZDfUC)e{``=4eAKSP4rkAdNsEF%p<KxEjHXcv@T^Cek=5<;Af8Mss zhs8Z(@A!EBwUqoS^Iu+l?L5DGS*e@DZlB!sBKvbu)lPxy)3PrmoXuetW=eXzXzS*H zJ85c>=IRUUSq!G{-nnN(XpYQdj)Zd=vwt}--LOy2k#jCpnRTUi<t>q&#oZgMgs$xt zoWbz0DZ1s_#0?iqSD76>{Y30xsY=vM-ABm^F@>jpuoz}<eV-jUTgkjmFy8%8l>H;& z1M{Mui+?OVGAk<9XZ{8j)5AZ~H;49LJF#_5SJeLbQQst=a%t8}*}HGO=eOSfOLORz zsQD2lPF%l^cq_kR&%bs)@nFd84T7iMG<RmD?uptz+i#s+{{4CJtM68q7FU=3PAo6| zobb1>YSTPF{>@?cJ=3OtiR;>(@r>tozy)T`*Mj*aoso`**rXrKNDiB@A#nLkwM5oZ zv+0rIWgU$LnlE=sgrz9N)bo}3h1m$H<P_HN#YH$ClFEJbMkUO#S+~+`W~|Va$jfP= z#hXv-`py*X3QX5b3<#N#dL=S`xle@KT;9@CN95g_r*f{@l~~W_8{@Zd!8x^AW|5MP zbI+RO-qm)St83JLb#;+JyX&(JucrOAT=VkAig`2t7yZ7`<lFh^k*4*=M!$NVr8cc? z4<}CAqRZ78_Myx_>+s!q`|eClEe^SRLs@xd#gPVEvq@*&tCFV6emoieFzI&i9qm~R zkJH|Ig+;iEPqY{L|Lsk;ROy4aKW~<aG+yW0`kq(h{>MLiE38<r>{$?ykZ~kxRbnZJ zUUVbh#jPezK`x5|<8Sk=N`Ks-zq*|JbiL*BX?-~}3~!&ks4V!$U`}tEqp6L8<h|mX z5<F4c8KcD*XPdF@D!siSbFuOJgIQG$RwoO-ZEunKR@<4|{V7n3Ny0_g;Oa)5wD}%$ zdQF%1YKvXC(r5Yfo?dH_sGr!)v+Gk0ziC=^u3>bEGq1mWGg;=HXzA^^M&ZSVbY zFQ&Wx<kr0!_gqV2E5z46pZRDdx8}FX#kaj*pZ@$TaqTrmzUA(x@~U&C&gUIJ5OAl> zX)WucvS~@~e)`MqWC_o@FSt_uMUmIecl(4aOS}43*sE^2b=Aqwg6D0K<G<yK?M*$` z!XhW{j4SJGO%{vRJ<oUD_m1W>A<^?Zi_eO@SS7IgfO7q*9-#xLWH)_1Yoan^0mJ7t z`31FJcWsnsJiplb?%t+vjo)X#tlevVx%THiSGVcUCKc!#Yu+mRP|9ew%K4IFY+8u= zWZqBA`%Q%<b6!mA73txQTCAkIMbhl`mHDiEH(S;SeQn{?Xk2T&;GRvz@|)%t?|q&t z_A0KmS$l{1G#9?=jrDPvyBg%p`MkZvVjUb0gf7f;Ws`p6qr&v_a^@82{TI@1tO@?F zw&6pt`qits4r@hU^Q<uE*E9L8cI)@P%dhUNF8FniQ}eTPBWqxC#GE;s?g^%^F5S7b zxnW{X^SYBJTeL-9+un3?h}B!E9$g?6uHt9LsC<*{?wq%`s`u%CJNK8Pe))UZRTJM% zRA&-7DUsxFwyH}`J%0C7Ly41SFJ}2T?{?gFZ*s3ziKp_-8pl-grIF$Wlh$5-Gdtt` z?|nC{zbnt#XC*mxgY9D12VZl#Uq4I{ah7$G4miM(e&Oofg?AOA-#=85skyjA&hOA& zo9<FZ<vD)l_ji5U_rCk;PWguy*2<o*H%Nc_&d;AcM$NX?(rD(nLscLB%+4JvJ6T_G z=~2&W=gY1v=dOj{^?!c*?$`KNZ{K~sy8CExU+jd7!Dj4>H$TaCbNBpc^XqYZ++E44 zJu0bRKE9Z6G4hk?;$%~${(o;Co=^TFTDy~HMUu8wC+qaQDrNh7x%K;P{xAA>Blh0B z*g5y>SG2!+`u3f<$-KGyer?^mGWN*7Q(Jcz++VeN?yrK<>bk;M`{`TzrrGhemRz`8 zxAXSptNlLj7A&{FbosHW_@6}oM;|;|gYEs)E92kJKKamaMq$a}!hYw{_^U^(7hh>T z=<?|7j6%Q5;(5|F=e|Z(xYYbTe_vx`MdeN%3y+*5&g|3up6-0W>2~^)Y_FtgtX^2f zmmR+t+3f6A1zz+P{bZ5-v+v`K>Fb3!xr~bMcROv$dispR`EBvD$yVjYdsnW=xulmC zZU3d>rT6QXU(DB(9GncUZ>E1W<#cB?H#9M@obG7GDF<afDCSh#-et!5U%B4Txq$Hv z`x`ww9SsYfcTEOAK4{rg2mLVT$#B@IFmY0&$P|@{TxG|@<KtRgR85R@_bggj^momJ zuU`#0_pOcl%kh8i>U$P<rTu^2o*lmazOm#Hl|U~R^X-hGQ;z8HsVr8RqHv3S|C)Qx z%d@q@Q}!;@ic(Gad;9G73;vaVXQ(J9*EghC-I3Y!we4g<Xvj-B@2k3Y(cxQH_kCZ! zt$O9=V=vya{k!XHUMAP3@}#6KGULaZ*g2mvcNff>Fk`dk?h6H13^*q)tm#bLmMyl< z&v%}wF4wyF`Xf$}Z_ls&vNe4};uJyApjZW?FpIwO%*m3r2~Y3Eg?K56^13YI=v}$( zi2nZi)`N0d``ML0tMJMBTwa_fH_1iKQLu(-^`e7+DuY)ph-+Ne!Xc{shTouZ`39X3 z6{g#IjHeIH2oU2<yf1rc)0r;86uz~GG9*(NcV*bP?9+=jVp?s%xiX3^jI&{>^9}#p zThBso_Bf~?U|JZ#CRNgM@@CKdw3me})1AK@_1wgvSN~ifs?%b-$%d00>v}krpRSm} zY_6sx`KZoj>*E83J~Lv}R#eUrP(9c5E4NhZyMH08gjM3{HHil;B;M!n*5?_Wj@ce+ zdr)zs3Qt+f>5uLl506^8HHp0FciziTf5PCP<(tj5_wG#Qbc$e#Y*FERDe$w*_i*U0 z?BhPyFCLP)yz^_lt+V^~FmVGW@t%$uyuAU-bImq}OmFD5*pO5rxF&jqvCcK!U6NKB z(_6T&2>QK#;3Oc*sbRmK#i?_@OZ&!!96|<)5kdJ6Ch)o5YME%lePYIk{m1GW+>-8Y z-N(J_lfS$JW2+1I3Cl+t!!{nQxaYv3A|krS^881)8P1NUMCy;W)yvd;`+7$?N#))5 zBd^N${@8RZEmXMk#2Y~azLR1Si3Uyeejm=(xNv69o8s)UN-ZMIPG!xU8FObw`aF@@ zELbVw_^sB=Q}c(*K12D*t}0!Nj1L>}EaJa?{VdDmv+UCib)3vt`VV;)98dpzF!t8N z=Km99SN|$hdOw5rcB*Xi)#_FC|1YGk_4)t##skOG%UAPuC!TCPZhm0>#97|qX2*9m ztZm4)h;Lb|GGq2X&TX@7oBG!N5%k%3wZ<hv@r#V%JcZRiJ2p1VoyaSAQzZIq+nXDw z+F7h-CanHBqi=1^8IPDFVV@7mM*n=!6%S**|M#`BX;oTsS%_)Gu6o1J`kQB7-DQnY zU2xlI=2V8uD_=Z~F|B5i4gaY;<I$?09et~7j%co%)&FA0Dff`z7*pv@kG1559;G#{ zewKXbRpKw}a}36v`bw*RzUW(1Q&Jb1Wh#GX;#7V+->}Vw)|;f(+?_u0YSQxq`T7ak z(++%8ifmbDp+3dVJ>34)_Vf1s8?ODSpIEZxY5x;@;VoMkR9JRAD&p8V^TAqH1=+%% z6DE6JtMT!3*YRH7*TS8!OXu|QJqD+v815QQ@0YvWJtLd3#68w-*T2qJm9J*;-zuEW z|LgmvDC3<~8imh%OIMZO{I7YxX|aazzl$Gsb93})DJ@Rr@cI8|#Xp<Iv+|zq3I9Bn zapcr9dblUpJrQZtWq8SPrhU$tJ<pQMSe_+cDrh<&cA#YCb%xJ}u4FS-98X|2-rOyb z!&q`W!S0ty^I7({5@*=|W=r}ovj4Wc@ta#irzKE-N;9Ll=Bl{5lsWb-eY^iC`V?Mg zn(*$z3+GFm@1htk6;9{3JQ@4h(E8mcL)O_3*0CDM)|d18R4bP2GQ8iBosd>3Sgzaf zZpUf&`Ont<Tp(NibHVxIaCgo0@)c$#U7Y+o6Ac&6*ekTv?}pZ0v2WjmWp}$AmHhHr zFR=EMiGf`7>n#WB+W))@IPib%?ztPhXFu2TmV7I>JLq7?6azgr?&e!8{O^-nvqB&8 z@@sepL@g?qy)dDEzIpE4$5VA%uGxOM@a9KA(p1mt>D(&M^sb9?U1m$=j|@!UR4uyt zhVSOTkS9-NPkoP^{fzaSaeg+J#PK~Q_Bn^2m~BuH*4(T4;X;gsMW*x1qDrg0vl}KI zxnp~I)7qU|lDpn2=59=R*0nV(AYJp!$5UQ~=T>NJ_r1KRV6L>WZAkshuLcpj*1lRS z-EvG)(q_>@{orchbti(#HT!Pqo0h$(TU}pMv%l}itF!*~(cT6N_pT|@%2^U}TW$6K z3yLXvo;w+CEqnS;@&0ypVPi&76+x!<B};ZEvn*bo=QM?Hn_+BWZ~yN<cFglr!+-or zh+h8vyX(4S7w*}g6|NoHlXJFxM*Z$vJiNQVhP&yUTECEI<<+z6HcZ^`eq-&SlnoA| zCg#%peV^<6&Yihc?Bk$urTVde;QCu!u4fs;cTAlnz*ZQ&{C5uXLgv!#8n@EkI!~K= zLtyWkqwxwaK7A8Bn&z@>fAAGor7K}`)e6)dZ<glwp3SI`7JexpHN%73M0&@MrjBhF z>pexizJ;dUo;sB`f#XizrVqECl&Aj7mN4Qtx2@vHyW^|QZMelc_gb9g#NKCl6D3y0 zsw97moy(OgIAg&}?(@QNYZr0tWfFQWsv)INac|x$vFB`Wvl80pzU?hD)r}UuvTOfi zy}M$^Tm$~p<(545wlA!x6l!GKWd8o@W}CxG&tl~3FV;0So8*6(d2emv*_kU3Mo*M4 zPVvduSL>3vT=Qz%Vb@vWW#tTo=JI!!$8T8nE_vtab6a>W`MfBymDqdtM8ko#);lAX z9y=QFfj7~ObJMewrh7+R=Q$=Y{I**+H6k;=IIpnu@bP75`y%e8?S3^Q@@sT$=J}Pz zliSj-uiY=id+JO*+sCsrb{6jq6R{}RyKuD-J0nx-A~Rj7nw@J`D{u2&t596W7Wp`@ zW7eu>)9pV6a$fmv(cFFhpfyh}cTd`*sGWa(Jf9b?y;mu-Warh}zaz|RYwG%wYNpB^ zG}E1ScHfdz|HTg7{T1v7r@Vf1T5~<`YNN!qwM%`oudUK6W9W-2`B{I9NoIH2&YkvI zUF>^*&ssP2wdKBs>d7kSes&h9F$V5G{WFn4bZ@MXG}}I=zt#;C?>s(LqIK+=%b|(d zLgH=;3=0DHZQ00rCTsm|>0@tqI$Zuxke{>R<l5DB7Eg9Fp9-3ivFPZf;AaAMhPU0q zl6T!s{l0eI;j0Pd8+RW+@xVIT>0W*EmX?X9rAq5U7cTLZa#&Ws*XYpYzZ)j*GiYJD z(QBR=ySzUlQEAEPweL0;<qNOR2%XyOqW8*NfA0IckA%gpru8Jw(Nr}T@!xPmI<Bkn zVWQ)1zC+KFch$~J%sSos_F-Z!|57viv>P&iqD0kSGu+*>rS{h0m6BiHWyXI}KPO%6 zQ2*XbQ0kcUpNmXvd%px(YdkmmnRV+<YJBao{5y(=*Q-_?suPp4IIUXuZiB+!61ih% zAN1a~zchhG<buGr_x^oTOZ!&*|942%gsoO{kLx$?ll!k1?l8I;edqn|f<Bhb%Z?@| zXXjXPoOYhQVpaWd`*#<FoKr6B%f1w7v+v3b%VTXU^<O?uX#T!6`lXlfZo3OJB(9Wd z+Ra+?b!xLzM#sx-#k2o;<lVhCr|<ZdbGd1Px6ddwC5PX!WIi%w!Hu&Kr{ykWR=vA= z&V_#~HzWJv_=#QSY4L}-=Kf6fe7@3uf2tvC`+g11U;ZzP^E3Ba+L!#2>-CuA^6trs z;D_4QmfoqiX1WFo+}t=jAjgfrw_wLV`NTZ+^WbLdcJWlsHbxdhQ)B4RNTheZw7I~( z_v;@lU0Y+|%y<9zvrabFCbwNzZC6}6R=UbvNi*a3d+R$-vr~(he`K(1+-ZEDZ~sI0 zbCbS=AJR}i^PhXa`R{i}-JRc^pR4%4WX_)B|L0q~-7B4Bs3fBNn@_={{H{>!_q*5o z_zgXNY`r;ox^_?U-o&pfrJai(S%f;(bLXu6cK6ZMUw0<&KDzV$$*jN6*Qx(`_blz} z&g#vt>a?pq>*n3L5pDK+{>0|(Ug~?V_N~phdWdaJzU%6Z0vq;;uH`E^@GERfQCb88 z|Jf9FJ?5GWwcP<`k7|u?iZ*wAKbvwr$bC<~+HQZ#2g%>o79MjC?=zNI)xn_ER+v^7 zkgr-l>p+lq*zG*V=HAriJ!UVmo7c8H%rQt?So?hYJl5w^IMX{HUTJ7+JpO6_=cV^2 z-!0thdb3{RNScW0<4OIW1?CiV&3R|NRE2dl+ssDItR08y)-0JdIrx6<FS&%9kxvwl zUg2jeo{-#7`Cq6#I(pR^5rrMguJtkQV?Myaw5ODb;cfkjP%W1k><KKXjZwCY9D16E z6J?dpFdH;Y&3SayBjA-s!m-_7g1JPW=UTQbI&<daL<U~V84G*PpP2ZE*RtWIq;Au8 zMV4>u#a1fyv1||8nv8QLxg1>CjuvLbIJds}Vmd9*z{l|QRR-0VV1e##;WgRZK@6*! zJknR1T@YFF;W}$QW8#Vj7p^T~xRQFXs(pWD^mL{G@iuM0tpd4;Tn?@h7Z&OIl=ZD< zo?>b-ug6GL_VM{>$%iX0=ef<~$<Sb)Q?x8?%E^W<qZos%*wsa%_X4G5g8H~`)Q3#@ zqPjEiD34z7+VoWsY*$uG9M>z^-Jx0@E3tCLq4TNHGng(2xg}5CT3>uf#lcykZ!`b1 zX+CUMS{!e-Z3+=rtKK*(P|?t{b5q7ThaYU|=N=u~u&|#wt7S@VEtf;6d~>j))Mb$s zAFhiEF?|g;mY>BG5Pss}x)#fuVJjG}h#vBFJeVjK5O|`ZW>u$g-1-TJel{&_34DBD z{qwX?W*JN4@T*)7p;ErG>BjZh%RiW}x+O4w`%+DY-lNUOh2EuoV`N>R*SqKr*V9{< zL>g|nHF!;ab$(8{O`fEL8|RY6cPwpGT$tb0@CsY-H)LfN3Tv#`GAScfW4e}YzE!V& z#+`ik?nCB(+Kk;i&M)ltov!nv?byN&!3nxtQ+{`xzu}%Bs5>!*qhRV0Hsktv^_9BT z>1~!XKX<hqIJNMw{=^efi~CM%JZ%-05VX{Pz1+Q`I%E00w&f10`$T6R+hIBVMzIr1 zlHvi;!u1zFpJctR*payMdCDZ!4<C=SzjAqWYNsT3$f>r+iuGLyb%&mCe6;*JTc<Ii zN1*b!T~XRZS0|TghKEAs;+8+3E&WREZa_kP_nk$mMw6p{1*a$JCH~QQa;HUDxaENP zfu|fFEuV|&PK@lBFr(eB>kd<Q4~I^2%W508yYq7MR?OC%_TA3L&2L{GQ_8tpee)mA znHpAc;}L7puTqcmmfE(uXAPYm$^6pT#HAy2NJKTmss6&N$fuj%H27ZsY!|Jh9`D+E zZq8hp?e$ic+U@xrG4FTIt&_i0eD0JVcWKWAi*~!NHB8+Zo;uDguWj~(oj2c}`udm2 zyOhG`nx8x;`EK7S`uxw_e_vyb<;^_oDy{E)`t-SVP5JKIr$36-PyBcPZ2arPwf=P~ z|8|M<AL97EHQGjIU(IfTlH79s_TRJTAM1YbXq%znm3_aq*Wa)&vzxg0S_t2t_;0Um zf0o$1wOw1{7`wm0+eD-|x37P$|C1FWS0Bgw72M(b+n4kE?ctx^^;Y&W{Ffi@jn29D z{GU(U{e63PYr1bQi=H}zEAv*SO_`k`uOZ);Pep&ECG)QBKD+(yuO`homn+QQ<q3%k z7(f1d<EP7_hV);JS~A<}w_3*j`J434O<C}9QkojbF{bSXlkIDE|1d3k)xSKqewNSk zUq9^%6Agk5<gDj=O!;Uqm-*u9iGMylVz!jo{`ZZ`k00wy?PrNJ+?dpKY|(4~D-8c) z-rIEE7q`EEr|JHdhPXXEz6ZtEZ~AI#Cg}I}QE$FvtM#&@w`bdjy-%LFgX8%8|I8Ii z4|>40!}P*pPIp!_10z#I$e;$8x&1*gXTB<np^=#hbT}PRXEZ?S3^m{8CqhSrCOBVi z)>@y+KJBUpSJS`WeC0o*Qau;%6A@r?KV11yx~@idzo46C;=lMGci-#^H*d@7pQ~tZ z<!ATc{`J0z<#Q+Xa2!3cj#==?@x0Dux!>15cIFeRGqe6w)mphGe9gOEhNj1-E%M5! zpAxn^?_*l+o0HRzZUj{s*OUE!OkchF>h*VTSN#t8@=O&}WrTT8H>_A&a>@FzhU;1} zvmaHOS-q_fUN2oyx}bUe^hMK*4>x^QP_r$Nyu)tzvUStN``w=FC0y$D)%H%a`c-ZC zvi9Ub`>=TF^qgHqb5xgiaV$uZNPouuHEI!8z0TH@(%ZTT7dEb$@SLl5-3H@K3+X8{ zGw%P~>dx3@^iaoej?@K%2NC~@ZN6H6+7W+W>Fs`zl;1De+ceVx0~WMAezM{1mdPS( zq%zp%ShZ;%+IcNxlJot$w#o5jeuY{`ubc^BPp-JU=Z%Gd_f*T%=W5<MSKRLV7*zfA z3g5I~*+;YM%X-WiuDsg(XWG(#v&(wQr-in!ON{xI>EalfEX(EdP~=Id-IimS&vNEY zIFvX|@M(nKg>C1H7wuepXQ!2B>tP%1V~%qtCCqv5EbXiNxYUWOUD8dh`TC~5IT3SY z7yJq1^@@sK?BaEI*^+`8OI@<2t<JjrTr=>}7EMhVttk@DrrGruC&_AE@j15bt$};5 z0Bb{=sK0}jN_v!%;Vf+%8C&Nwk-D#D&p7q?bI;*FW@+7wdAFZSG6k;Ll`iv4Qm9E> zX1nY&Nuf8AZCve=Z3nK2`E9636A{0~Ak=jFMy9*e^HcwQIj3*(b2kX{6HV=I%&`tR zCt7ecC*S(aT%E}u+DiA->qXi2@SP}(zo*(d^@@R`PF(DkEiMI)OQ-H&eSE=l>aE%5 z5*nu2R425AYNdL-y};_`!t0jN{@eY;0mDNd@3`mW@9I#>QaUl=!I}=<u)3M0iuWtl zeh@YipJu`+9#<`+x3NX~ec+C!m_W&NiNvC}=QfJio>;kmq3D4lD>_V{ovpumWZq<V z7ct{GiQjEv!)#CV8yudb|EhCVME?Qh`<*fU4<55kea+aTVS7OSqEULs+bj8(Tv8OB zo#cLLWN~Y3a(9q4o^#c(pmgI_#r!B9>D<8RD=sOsJWu(!t@~18^5m9CoU58#&Wu1! z=bY!a7O5$5OA39u;2s$5FwsWo)QpGqYx)|ucdzBG+<cVjerwv1C*S=WdTt)7ka@o9 zL-stUYX!!(szKJ_smr2E&P*_9x9eKP)b%DX#a{oU9I+tYkMN^IY6QcGak-_14G z;BjyEo=;0wH6*qKv>yM`;sJ6kON62G5t-j7LS02pHv5;){cL3uK0W&Orf)n;LT+T& z|GjEg*R<*5rpWDE<JHc`pW%_)_1N^}{`o(yulnv^UvEEg_u)GCzU5zECjOr?Z*|st zWx<}0#k-llq~GRll#)5l_~QA$#Oivb*?;*M`5pR&ml&^S6YTlM9>n_M{5EkW*?Uvl z1Z%%e{8M3ZmwkopKe=B$TmMS-&Ns-Z<GP~rpI5K`ou$RWN<&7wI{TlJ1-F#{|2|xG zTihevUfW%v_{nu0{gxRk>gzvu-dR6CPhNiBHs5pk_pUB;+FGno=Cu4+M(=Zlqz|t} zcmGfR`1-2py7&bP#Md`#{CMPh?O&VHuHfAjuT}RjHAerb`}+KqbIp&tkN*E>+O75I z5*KU*!}M2AIJu?^uLKvBCMKrfqLRhTz{F(w{bEk_?JHJtUQ=W;gKosy8|7Vm+d^pH z^Y9m&wgydg6@KtrqWbZa?PXds*Q6Jpc;Ya5!ci{Qte+D7->>KIcWB%+$LEoX_`-_} z9q#rYN}c~b%6q6ExBtV^Jv%B3>y|!teU@q{Vm`Z-%Spd;v8&ASdEdT1S{73i!56(b z>h+EIyw$tczGPo#^7!4g5})nT8jI_5DziVu)~oGlJAHcl{<ZnHH)`&Tdb0QB%r&zP zmVDT|YG?AXWmDh3^=1FkC;ede-y45723@@L;5_r04<Db+-_X33%Vud(+|ydqoQ35Q z`n&;KHW@^|no#+70)Oc3FEPLG_SgJ5_A~TFj-B^jpVh734*7gE|KC10Zbj?+rHW^+ z-_=#C|8+Op!g}c+*Egx26CV92eeiR`tgW9Lxqmg-zF&OUZ;y`mg2t*tlSK5_O<j6C ze&d%T-$Q=HhS&Y%)jnSxS9$f#@q@|tR8Ri?*tAug{eJ1e|3B_DO?}@wahvuzM@jj$ z9@_e~)4rJY@TYrMeQi}`RMft;<){Xe+U`bYm*nWli`JLc&#H3dxE*@x^rDXThNoM; zcFfus#U8jNC%>9GY|-MSq2iD7cKo@r<wlAA+}~wyxSE%BncDEHSsgy|^{2Gjk)nw@ zx1N>Xzh0jF-0whIyU2`NoSUEIzizl<d7&!kxpCTIvv12Jv|?m$SNz@3wRq|Avn%ZS zQ<ok(a(QOmv<*pf&$g7-e`QTvYBkHV`;LU(L>2~VWpmG-<C7fTwRwjNRmkXYif!pq z()YQ%bHT|~n@TG4U;XMixiS4Z$CLf--!6Oo^j6-xZsUn*Z!H>ly}tj>4b7Q(=Jl-Q z)8FkDbL|uPnWxr%ZPN}NtI7P!zU(O5d3N@(E3a=^7|nKhud~M_mG#ius!M_OvW>^z z?>zJU_bwyV@Efm{x38PIp`2yHVKey|lY*B<H%OdwObX?@w0P=@3#Shi?3*J!$zMkA z^VDytcVp|+&s5tS+4ehRd*w+PA&Du?vf*2-EiSLTG?9tHQ`+IslZrD}y0W}OROkMB z>-grxv`?#;swb_RsUDRe{(i<qQN8KUIFlml1qIIC?YjDC%lc5RnBXaY_H^_5*>WsC zUmg8cRjcaRq(%9AHlFM2`?%4GAy|ZQg>IArZ^q6&b9YVfIIA*kPome)fA^OuDqX(f zefhzSR&m{PTEWe7><5c3Z?#@>!1T=xrH05^R`oAt_O5ESX-jo@vs+9=KK790cY(!? z%arnGTotQ7sv+!f{LmS@h112?pTBRkdQ#-9FuRGxvM~;O?NXmQZ(aPj!Tae#`7`Gp zb45h!*X%HD+9+}Cq%>20#f@;*ocE2ZH`%D14s83Fd3bN|^S{?lSnSC=QMTc5Sk<Rj z%?vqP-yW;m=CyJDF`jFO3hh5W5l*zow`5!IrN?RUW>UbVw+i)h6V|?77@O><@#Q?z zl3Mq0jj|=#ev^64ib@23pKq=^=pQ|`j880CCyxJn=e6o5`z|o=c;~HcTj{<uL3o+) zyS=%p@n^sAE$MHVX&ueZ&%4}l3Dbr7E;&=qmkQhbdpgncT-s#=gW7v36RmF^<)4?c zZS(rJ;{~q@#3xN#kP?=4vpz_LRkUl~6b6n-ik@p%tev4Mvnk_3|K1z@&wlw<G}H#~ zOU~+A(4-(J;r1(1Jb5m6Udi4C-6|XE&MJSeoc^B2C2Q~TKho9@I#*WRkUo?2EBKz% zqAeDim$6PcGJU0RP+E;ffYn9*D>u&YC2tZ=4pQeid*NJmu}NCn%msC44?oGMpZB4t z=k!AH6Km5qnP>#AWRP-y;kD)H2b<&<Z+N85V=iggF7rPev(}j3^h0&r9sT_xYDXtO z%PYPq_0TcWFj%8tcj)eyybJ~xFDQHrnRQmMr}=m33fD=B_Z($@J`nwUf1^@J>sHy@ z?h+>&4<0r55RSLJVUlTl@Zp790s_X8&gbj1)6Q>^lw9s_$MG>>@qG4~7m5^)oOovU z|D=QIugrZsp-f6bft?%0Kj;=RKgx4o$MI<PC8h6y1~th#SL}O)1eLB9X`VXDc<>!V zYqQC`-B$ZJN{u3wCe$P{E5^A--)3fNzSdXb*)2cE^gF{LozDd)i|_7zxzt^qWtDp7 zKDLI4`l(AZXY_wa?Rylf-!#Fk(an0r`g7lHi&dwvbt&^&h4)*&DG@z(diS2J8#jae z???v8v}!Pxdfb?+XnUWtNW-A<G~0#8a&1f&m6tv~{TdTeQzkJvaEj)q=EZy0ds)@3 z=rZhnpv`&7!fBJ?J<biqGVfko@MAyn_2+EOsS>Ny56jle>-`S+d*R6?<(!FsFC4je zv4nHRk<UT$FXR1dRpQpnIl%cep?07DK}L@x=amiBg5oaUUhjEb^fI|nz3jcqq>M*P zq!)gb_%L<h>DhI;YuUHWe7RH4Z}B6E$;Vgp7M7IEX3ldg`K?`4_q)GA|ACy$e@Xt$ zj11dKb1lWnYR<hiU07eS!gy83^i(^K%eqmgHO`(}%er-!6vIEBt(K|Y0_%#)*!Idx zZF{dDZ~C@kd#c%1<={Qa8%}uDZfZQ2qY^pUSCI9HYUteiN{1H4t?kL`s?uqVoO9-S zfc@-+m6v`QmMZt%ohQDlrmg(Ux;01r;}V&yC)P?@Xf#$k``lD`Epx)Xo^i>mxj74J z*u*s7eOURW@9dHn7L7k<3(oc3_2taGhG#Z6n|(ihnQ+UllVj)lCkK_E&e7Orl6&%z z-_7-m-hZSTPu!bhIC-hUdTE>Ak7p~EEzV%55mDvwxpaLi>pF)G^U8To`g0pF+j;C* zv-JGe-SM2a8Ge>|@yOJ=zsp(I5trRvzpk<2ce=Tmz=Fj_j|<E<T04JoOjGXADHKXM zu$9y3$@3QJ38z=^X?m?s?UX&sDc)b%o)i8pCCt0sLH#3tPgs9(RHQ_`-Ez^2Mz4L3 zoAmZ+Eq>~CDDKROHC4a6CRE(A-z0TS=2XS2r*E03>+YY=x^Yr_L&WAw)jsh8C!D;B z1nWJDJQ}X(v9HYx(~7bC;GSdC)+^I-Eb4<|&?CpzvoBR7R99|Z{Jq8Vc!`pvg37nt zcwZ0IgL7g^x2qO-?A4H+cH%di5T8|})Vu0$mIoJk9tro`-u1$fNz#8$I%~t^&F|+V z@BK4z!DDFyzh6E*!hd3VK8v2W7N}i1FU(y(XX%0ZyC--1b$qwDw()yUZ~3P_2BCX} z0unqkUT(SmVA}e3T+OMMw1QM+bt}?(Pcu&CpYpt&bG>rh+Nu2FKdplw8}rn^{HxWe zG5h4>yLW#`G*;J5+VNhl;m7~4&$6broSy!Eht^AJgUh^Wi#^V-jQZ-{$nw~>+$Vvz znN8$poI%H=a=m&{juo?*rs^IjGuTo0s>JA8!NlYzDIQ7%=R!&<Be(i6l`LfcAF%1p zLX{ZjpYspQZ_c#1E#)@pPzN9X+KDQei=O7KY0rv39q?Q3`2Fe!oZm|0c3fXjT=+b- z@`H_F)wDwvAC@Zj2zxPzc=9P9a$kIi@8)*VyFUV5I&a3f%-YE&Sidw*BK;im6O$e1 zqz}(;nS9vt;TO5rE^{imcnaoCZh0u*)Sqtiiy`Y{ZAHo&aY3oJYlowajZR<N7vXf` zwd-+<xk3*ZpB)j<sPfq?)pqiexW$9qtHJ*Sf4mP@oXOeta+%)DpOdCCc-l;gzqejw z%{$fg()LE5_A<Y<6fdw2E&p_~e%~!dt#><|49$CHZ2A9Y$}8VxJ<o5-r>eb3Srt|F zWcer21g;Ie#^nbL+;{#BxcS}JfVI0{(dm7Ao=)4#-Y?DneuU3)Qu2Ga$#u%j;I1#- z>mK~oa-G4O=(yvK)%v(Ih4VFPf4_U#T^TNLGo<9%KAYYo&wew9j`$CUo8uX(;@{T$ z#+v@IXI@dBtUQxDKF*==TG?TL<3G=t|6~<MIThG#`186ue#VX!?w@a&w8gDkaIarL zg~Mh>Ue1I43)}VIIJ^(`nH&=I|G};eP6xTB^u0c`iff0A)`!WH+pRXbJm;J%;QlP* z?)^g7OFJYzg$0(M{jcTV*319iPmi_guHVG?Q>yOgTAsu$aOUN*=cqosCZzE1*SD4D zWsWso7R@*vZm$22-~adWeW1|~k?F?QIe#-6L(Wf_8tGm9*bLNc{~@;O)S{namge^A z^KSHIy~)YazRB!!Na&i#O4gHwbK>{^RdUUG;rrH=MT&R9#s2lu6UsMPe)O~Z|KQ~J zM=#qq&sMNJc}J)5{N>Y~@^0_6I{hc96f)~uRBHLvm6z=*6+dmjIp_1HtJ{LsMzVB% z&VA_KrzgIz{_{Q$rRO4%HOIG{nYFr$Q-AAS!_3>Etyf(SfBDtA@_f`=sk~Lw+C|D6 zx1TOOXtH|tt~XJ^;md7q<(c-sXqC6FU$rOp&+C`mbFyFl&J#PXQ+@UAysfc1%>_?I zs@AVQ6e9iZnrMBdVvbCO@Fc!W-_-@@+p1S-^*wuYHg5W|NpaWfUmSY+taoKdWK&ww z6(0X*OMRzakG`S)Va`*RCoQhmL{})DFuKIEEhtQF@{ifkYolW4eEM+v+LLIx4ZA|y zj<oW5ck(Qo&{<y*x8QVA<bIv~l6yIlp7*jpIB=ozqS%#}BAagS?kSxn?aSS~Mxfm9 zHos}6(zl5E53GVxihCPQ@S4|86}`1DPwI1w*ZZ?uq7zqKSn+;S*lyL$4~lkO@r`?L zn*ZKCPs}w~a^4AjB_lTT6PFiFxx=-~_wS{Bx-}D<G~YxX(z{>l`|9GirP`H@%*)p+ zFn!v!s^s3JY^KW9Ifk(pO#V!jjV}y1-Pv((!_(=->^BZyIxx-cf##3iqgNXPCLFEb z_t0zCn(x*{qB07{UBW(m+;r^iJ^tpBItgWCrG@2D(|3zog|As7a{jc7qKk0p+;ft5 zSM5D`*Kx((wYPWG-Vg3kY!qQMn3%uy)_f!0LrtdE1)-+%Jo=8RluYAGnpd5B_Vj|^ z!SUv6{wDHFd)u0jt7s-@&|s&t^Ua($OJ*5NvaDCk+F>XiQY~S1Htwm@yPqQUtL%z4 zFh9I@i|^{&PkWZv8BW-*9c`CZ5m0@(KWT;BTmFxdo9;Z5yt~%q?Qa>6EzvCAJe@18 zgFk%X%8OB(;NZxzAuxRHTJL3#!b<xYM2cC>=e_<lH8yOs>ckzPLc7mftuNmsyycr} zx3=IO)1_}x>%SKHJ+`(m)}NJfVdWJ!ZMFs$#?#mCrk$R<xLH-;!1)E43{?ipPTTC) z4eHU!;+8hydwuoK*4V503d+5=zUp2m`n|AOWL0RzyaW~LlCq5Jw(_PD(qg+aLX@<* zmtA<OSsuCnf&^=!>GnA*ErJV`7@Ypz$@tBiuE~;c%H4R=B;)#@FDvd}U@tZC(aY}J z&dgdE%H1ig*>PmKiqbQUd)KF|2~9Z|a_45u;%Y_d-_|@PJ1>UnX?q1ZRVAK%cw+OS z`+tizN4TE*89wQzxJ~o14PE*XkNm?|&uE+3RdMUG=4UqHRL#X&=N0QCRBt?#&p9P~ zmbc9=-b-Xs+x{riWpjAl>$x2R6Z7ttgz^5&>EZcr9Lsw0)XpC@+n$A8ertIA&9_+Z zN`4Q9H7pY+9G6~J@@eWE&b9Z7Zaljwl)gCRSnRhWPc)9!&X}NewlLy$_!X^XiAV0- zNVjo&k#Jw4SAvDj(=mpvfcawR)HBTOOzK$@^3@Dnk_V>c?mfca?7c7as@wPa*~(we z{t!sj<8OR!Klfk^>)t6}g3ERJb8jxLbnpMjIP=2dT<c}2EME;mUL1Pz$j~A8p5o^> zJMR8gE08?Lao>k~RmJm%dp4iv<$wI~`2p8Sz712SU){B0<2~+0a(9_M({5Olbt%lV zXgw`_URq9Q{ecs*TADE}OYEn<T$;7g;``kCRA$$9$Ny)aKXGwr^lsR;!|DphRgQx? z9vr4Kdw5PV-g>~aAjDN+n%V+gCu@ltEA7wn&1JAI&=PSH%)4L`$u%{3=bW~Cl{@G7 zHw*2Td!D9WqPH{M^xCE#w+pg=0zDV9&vBlY^4Luz_(!UEhs=k?f2N+5l)E0cDP1*q zqte4`-Sx|)B)g|y?!O~)a3NFm>qY+SLMKLlz4VRcs!5gmJQ0t8hui&6IcJ{jUG$Fa z#Lme7w|uk<)_!`c7~TB+%iMi26~|`0klMBCkE~zf+pN!PGZ(tOT@#S8e8qkdSLP{> z*~=rIwe9A$X8*M6S!l=ZUGXanN;nnmTY5BpbKah<=RJLPbG?p!h}@GSGi4eQ#g4w< zVvX6JzW>9MRm;2uC;X^#U24Bl#`A05^-z(Yn{3@hcxHyFBt2i*#<}QDhU=-^8T+<B zF1hdjHs#CFpcBE~uNU7@YBCS75s%eOxaZ7tXGe8_Ubbr@Q}Xr+g<BR?D;i}i<9aiZ z!{$({U|Z7Fi>6bnCh**@pO>gzyp+Mqz=}`l!?insKUf?ZY}IYoocnsfa1wJTx7d#O zTTF($vt!Oa_Pu=R?evUjP0a|goQ?NZxIOfGXi)rMTiWK_ot|dL*>2TnL~kgY;whk< zma^P(h2oW01=m9@+;q<vuWs1P-?JswwV=s&63a0z=HrGk=}h(pK39)6>ekP>F<HIu zo$I%b$QYiT51tfvO@G8Y&BT@8(pl-f;{qLD<Cy2?^O}CNT<7>;$`QsBbUi+G&!g~` zE38*LET<P9_7<{LUYa*eWuniQU~`Xfn~UY@XVmxWKei}5clZ2@t#Wo}K72n^_FmMy z^mM$d;e3^Irm;_MFz=PiUhpy7bQN1}y>dwBHN(eu3$8bw;}zp9=&>_rdU+?x)aH7^ zeEa^0%iAVNcNVRb+R4$pDlCpE{i{Rjq9yKo+eLogv5#Oe=$AXs@Z@&c|CevxynWj{ zVcQzXy>FD-;(WXA&RM%Y@0{GbY15zgU-!QM^-k@_q9uEtW`yhWR9;UAJ3RfJ_?5V} z_Vu&sou+=0aXHnhuW8;k`&01$fD-;vTbIw*OuksLO}Q^7D6*+_TD!8^q;+<MzgOue zE%@6#V_|*NtG!y%KixJkP3K~sFj*!3wyTJB07q8M%<Kx;QyMoH<~i{fEPmi|b^G<} z*Eb!!@$(N)#NWEV!P}g-{W{#eSETNbe;vzS1&=>Byi@9b?73ayYdu59`da0S-E|v; z=DP1GvRM7u+G+ZM${hCvr^}ywfBLxZkI@(BO^ly5@(Qir@7j7!s&cBVkoqMi`}>Cf zZR14evr0R6oQ&ybP6&G(_-tL+#|4Ee#0)lm+^n{)lJA2{*os%OJtsmHID)TxZ&Log zPEqdG_sq`1bD}IdPW9)l-Ofg&K0O<8l>efZVx($^lZltWQllRRPWzo5enw7{iB{)z zyEd_-BW<noM}cDk`~lMcN>9yoSNz9w{aJ9`;=Kp&C_ItoHrRhPH@hW1uF-H`U37}$ z`R}XQ6t~NIbqVsW;thH(&n>UtSIK?j>+~!0PW;&t(OCL9H<h7XDvqz-h>QQ!>!LR? zQ|A5?$h3RyHUI9$uyxB+AIuS7V`T1m_#VS{@$YB;vd(2+_qjw{TKeniJd=iCj;lPg z5~{y=l(_2s&8=vg(|OpU%vqo+>yw7_WcKu&FB(fcdKTFUDE@eq{Mo7UiCU!1*8D$> zwbk7Zm>+~|nESeZWKG*s6H%Y^tDg6#rs$gslOHKOYLB<KvQe1y>!t6+lD*TW=B?hT z@HyE$g7;VKVrEUwj!E&Rzh5(%tUD&!DE5e<wMPA!!WSoVzp&ub_75dZXQvh{*jRY( z`|rSx&&ly`)~>(i&&?HX@Ty-<>d^eH(rsB)Dckqn`f~fg(}_x^UsB(!tCtqZcRy%W z&mB@If6720<!?~@u763!>|5)YF3PwCukrnN?ADLxEYY*q{grFd@OTur>(1T{Thkow zYCin&DDLEg+E^~%b;S?<=y~hN{9y|#e17o7yWIH0cg6lHzL+2G*z{1eTT(we+caiV z_V1U6753Tgn$8w@#a`stxvC=bwu!|Zm%bkhV3n?4`nm6g`bz2Fk@<E8W*$Z7Kg;La zuYZ3|zT)fg@*NAzm)-s-@t$wC)5NKdlT(T(wCRU#`rz`<ba%zQS$qCJU;gO*cR`1c zZ-pjD+m4s*e%L#6&Xi|YUw`f2_kCislio+0|H<rMC-;2%y~<xT{==+f_T|mYGS;zO z+bq2lS4S>SeiBpvvx)D9Q^^Cdn0;jlG92^YXDOyBl*FD)RyMPX=+nD!A@26C`x9)_ zE?YfVExvwP2Vd~A4!c{QtzFVvI-SgW{;rJt&p)HRz<2V86B30D+rFIt@Yuh%psZh? z!}-th<I5sk87gj?{J9+I{m19xOY8qF5$w}5w;h{fv{Zg)Zroa-TlM}f+;iAd<62b| z4$kGCyWeTW$q5RM2CPE$Oe!M(E}D3`7uW8vUJ+zF`=R|DONJe3Ihxjt4DqMp|1=4= zi>Do)TfKMnTk8o*i9%`Lq;ob(C%rxwa(8~QU31+#R_Bkk(I@}^G_~aRn_F={V#a(P zyDf>`N+l&3ZtRgW`KN#SHT|%P@t5y)!fAO@{H`nSO#EeSnY#IJ-08O&Nq_%U|NU~f zp7EsBqO0u>pKxw}_=JnUl*z(kdSeu~;dGTK?kFY;%k7O(-0#_#EX<}CCvyLUu1!Z; zramQ!`*VhYnTfH20SGAMDR6;ka}xs#LsN7yLqjto3^8K^Oud#CW*F*BOpLd`Pv-V! zb+j-xFf>7xH?=gfutYP*)WX2X$N){9g@K`=(e&y}Zk2iiLn91Z42&!-QFWM`7@C?I zqKcVXS{i|lAp!Xm=3`R}BTEA`^Gq!ajE&Jl!PwHw(p<s7px(g10H)d8*wVt-0?iT& z3nO!Mi!Cfn4AC5DYGGkwhGvPWg@px%qb)2A%#eZzWWRx_g{3jFAjn6i7M5lvXz^rf zX=rAG5#}aF2I!8qG%+?s4+TpT69WwMOzO=s6`C3vqx;U%)Wirq6f8~6(Sz00(##w^ z(U=(+TA(L5GeaXwW3U735y5X}U}%mJT$UiOphk(Afw6@FT8c6=Ft#*7b2LcI5^M>w z9VW)+$e{oVe=`FUQ!@<Brl6DoiV1l7Ff%YUGDnMJGXqmo^yF=3U}|B37FuQo=BA*- zaX<#b(wmuqg>k(pQepr}ni-l}nuAg%$a-i#HZw9e!f>Fmxe0nMF*7u^FhlpTp|ODp znxoB)EiKI<X{H|TJ985Q6LSp5m|K`&7-(*3iDsagp@ji@Vl^|gFfl?8RZvnuF|Xdh zz|7Fn06pH#3@wdK(L=$|(hNNXn;BYKVnm6Nks%f_OB3`cF|x2Qtw(pEk);88b}}=v zG%!W?v5}<-hL4Rb&Cqj>nX!R^2_&fDA#G-CU~CG_#`W;TU~FKD5ue5emPQzwjSaDg zSy)01gqvq#fSF5749qN0JzQ^KW^8VT;X)G=V<YsmU}9oqh@5o{3=GUn3@i=N9B6KA zX^atqCMG866_J^ViHWI2JzCy2F)=|e)6GmwObsy|V`hS02AG&wVq`HBQv-91kTEqe zf<<RNEQ^_#nnOw?q{70))EvE7HZw6ZHpVc}%nYN1Gc_?VLRV*MVuYT<>dnjyjg8S$ zrkSBBN+|^jYBOU~^y1dc%owBiHZwCd#)wWcQ&S6=k6|7*voN+aRREQLNIo{RFhega z%*>6AjnRYO+}ISOoVPGG0i8bpD#YN4(8Ac<7(JRSEDfQBkAXs7J*1^#W?_j@rJ5TU zo1rHfa|2^b^ju<YWNeCFVwxM77@{Xub7Koj^cIV`u8E-;dcAFKVrXuRmeN6D7N*m! zi?|&VoLyWkj2+FKon4*W+$@b8&792K%uS69jZ7>|oXicK?G$VXDv4FFv*Ri*Nh~U< WC`wJ^GB+_YFg4;*Rdw}u;{pI4t{2Pz delta 26848 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 diff --git a/doc/papers/2011/europar/lofar.tex b/doc/papers/2011/europar/lofar.tex index 0652d9643a7..1636385b551 100644 --- a/doc/papers/2011/europar/lofar.tex +++ b/doc/papers/2011/europar/lofar.tex @@ -132,15 +132,7 @@ The beam former combines the chunks from all stations, producing a chunk for eac %The delays are applied to the station data through complex multiplications and additions, programmed in assembly. In order to take full advantage of the L1 cache and the available registers, data is processed in sets of 6 stations, producing 3 beams, in portions of 128 samples, or a subset thereof to cover the remainders. While the exact ideal set size in which the data is to be processed is platform specific, we have shown in previous work that similar tradeoffs exist for similar problems across different architectures~\cite{Nieuwpoort:09}. -\comment{ \begin{listing} -\caption{Pseudo code for the processing loops around the beam former assembly.} -\label{lst:beam-forming} -\end{listing} -} - -All time-consuming pipeline components are written in assembly, to achieve maximum performance. The assembly code minimises the number of memory accesses, minimises load delays, minimises FPU pipeline stalls, and maximises instruction-level parallelism. We learnt that optimal performance is often achieved by combining multiple iterations of a multi-dimensional loops: - \lstset{language=pseudo} \begin{lstlisting}{} FOR Channel IN 1 .. NrChannels DO @@ -149,8 +141,11 @@ FOR Channel IN 1 .. NrChannels DO FOR Beam IN 1 .. NrBeams STEP 3 DO BeamForm6StationsAnd128TimesTo3BeamsAssembly(...) \end{lstlisting} +\caption{Pseudo code for the processing loops around the beam former assembly.} +\label{lst:beam-forming} +\end{listing} -This is much more efficient than to create all beams one at a time, due to better reuse of data loaded from main memory. Finding the most efficient way to group work is a combination of careful analysis and, unfortunately, trial-and-error. The coherent beam former achieves 85\% of the FPU peak performance, not as high as the 96\% of the correlator~\cite{Romein:10a}, but still 16 times more than the C++ reference implementation. +All time-consuming pipeline components are written in assembly, to achieve maximum performance. The assembly code minimises the number of memory accesses, minimises load delays, minimises FPU pipeline stalls, and maximises instruction-level parallelism. We learnt that optimal performance is often achieved by combining multiple iterations of a multi-dimensional loops like shown in Listing~\ref{lst:beam-forming}. This is much more efficient than to create all beams one at a time, due to better reuse of data loaded from main memory. Finding the most efficient way to group work is a combination of careful analysis and, unfortunately, trial-and-error. The coherent beam former achieves 86\% of the FPU peak performance, not as high as the 96\% of the correlator~\cite{Romein:10a}, but still 16 times more than the C++ reference implementation. %Because each beam is an accumulation of the data from all stations, the bandwidth of each beam is equal to the bandwidth of data from a single station, which is 6.2~Gb/s now that the samples are 32-bit floats. Once the beams are formed, they are kept as complex voltages or transformed into the Stokes IQUV or the Stokes I parameters. In the latter case, the beams can also be integrated temporally to reduce the resulting data rate. Finally, an incoherent beam can be created in parallel, and converted into either Stokes I or Stokes IQUV parameters. %Our beam former supports several pipelines: \emph{complex voltages}, \emph{Stokes IQUV}, and \emph{Stokes I}. The complex voltages pipeline outputs the raw tied-array beams, which consist of two 3.1~Gb/s streams of 32-bit complex floating points numbers (floats), one stream for each polarisation. The Stokes IQUV pipeline applies a domain transformation to each sample of the raw tied-array beams, which is useful for polarisation-related studies. The four Stokes parameters, calculated through $I = X\overline{X} + Y\overline{Y}$, $Q = X\overline{X} - Y\overline{Y}$, $U = 2\mathrm{Re}(X\overline{Y})$, $V = 2\mathrm{Im}(X\overline{Y})$, with each parameter being a 32-bit float, resulting in four 1.5~Gb/s streams. The Stokes I pipeline calculates only the first Stokes parameter, which represents the signal strength in both polarisations. The Stokes I pipeline supports temporal integration to trade time resolution for a reduced bandwidth per beam, allowing more beams to be created. @@ -217,7 +212,6 @@ We will focus our performance analysis on the most challenging cases that are of \vspace{-1cm} \end{wrapfigure} -% TODO: getallen kloppen niet.. 13 beams is 80.6 Gb/s, en met 70 Gb/s zouden we 11 beams aan moeten kunnen Figure \ref{fig:stations-beams} shows the maximum number of beams that can be created when using a various number of stations, in each of the three pipelines: complex voltages, Stokes IQUV, and Stokes I. Both the complex voltages and the Stokes IQUV pipelines are I/O bound. Each beam is 6.2~Gb/s wide. We can make at most 13 beams without exceeding the available 81~Gb/s to our storage cluster. If 64 stations are used, the available bandwidth is 70~Gb/s due to the fact that an I/O node can only output 1.1~Gb/s if it also has to process station data. The granularity with which the output can be distributed over the I/O nodes, as well as scheduling details, determine the actual number of beams that can be created, but in all cases, the beam former can create at least 10 beams at LOFAR's full observational bandwidth. In the Stokes I pipeline, we applied several integration factors (1, 2, 4, 8, and 16) in order to show the trade-off between beam quality and the number of beams. Integration factors higher than 16 does not allow significantly more beams to be created, but could be used in order to further reduce the total output rate. For low integration factors, the beam former is again limited by the available output bandwidth. Once the Stokes I streams are integrated sufficiently, the system becomes bounded by the compute nodes: if only signals from a few stations have to be combined, the beam former is limited by the amount of available memory required to store the beams. If more input has to be combined, the beam former becomes limited by the CPU power available in the compute cores. For observations for which a high integration factor is acceptable, the beam former is able to create 155 up to 543 tied-array beams, depending on the number of stations used. For observations that need a high time resolution and thus a low integration factor, the beam former is still able to create at least 42 tied-array beams. @@ -276,7 +270,7 @@ Case & Mode & Channel & Int. & Stations & Beams & Input & Output & Bound & Used \circlenumber{C} & Stokes I & N & 8 & 64 & 155 & 198 Gb/s & 30 Gb/s & CPU & Surveys \\ \circlenumber{D} & Stokes IQUV & Y & - & 24 & 13 & 74 Gb/s & 81 Gb/s & I/O & Known sources \\ \circlenumber{E} & Stokes IQUV & Y & - & 64 & 10 & 198 Gb/s & 62 Gb/s & I/O & Known sources \\ -\circlenumber{F} & Stokes I & Y & 1 & 64 & 42 & 198 Gb/s & 65 Gb/s & CPU & Known sources +\circlenumber{F} & Stokes I & Y & 1 & 64 & 42 & 198 Gb/s & 65 Gb/s & I/O & Known sources \end{tabular} \caption{Several highlighted cases.} \label{table:cases} @@ -296,7 +290,7 @@ The costs for both the first and the second all-to-all exchange are mostly hidde For the I/O-bound cases \circlenumber{D}\circlenumber{E}\circlenumber{F}, only a few tied-array beams are formed and transformed into Stokes I(QUV) parameters, which produces a lot of data but requires little CPU time. Enough CPU time is therefore available to include channel-level dedispersion, which scales with the number of beams and is an expensive operation. -Figure \ref{fig:ionperf} shows the workload for the busiest I/O nodes in each case, including the time spent in the kernel to handle IRQs. Processing the station data and communicating with the compute cores cause most of the load. For cases \circlenumber{A} and \circlenumber{B}, the output is handled by other I/O nodes. Both cases form many beams, and thus require time to compute beam former weights. Cases \circlenumber{C}\circlenumber{D}\circlenumber{E}\circlenumber{F} do handle output, and show nearly identical behaviour. +Figure \ref{fig:ionperf} shows the workload for the busiest I/O nodes in each case, including the time spent in the kernel to handle IRQs. Processing the station data and communicating with the compute cores cause most of the load. For cases \circlenumber{A} and \circlenumber{B}, the output is handled by other I/O nodes. Both cases form many beams, and thus require time to compute the positional weights that are required by the beam former. Cases \circlenumber{C}\circlenumber{D}\circlenumber{E}\circlenumber{F} do handle output, and show nearly identical behaviour. \section{Related Work} \label{Sec:related-work} @@ -317,7 +311,7 @@ The use of a software solution on powerful interconnected hardware is a key aspe The BG/P supercomputer provides us with enough computing power and powerful networks to be able to implement the signal processing and all-to-all-exchanges that we require, without having to resort to a dedicated system which inevitably curbs the design freedom that the supercomputer provides. As with any system, platform-specific parameters nevertheless become important when maximal performance is desired. Although a C reference implementation allowed us to quickly develop and test features, we needed handcrafted assembly to keep the double FPUs of each compute core busy. -The architecture of the BG/P makes some tasks more difficult as well. The fact that an I/O node can only communicate with its own compute cores prevents us from freely scheduling the workload. Instead, we had to manually route the data using two all-to-all exchanges in order to stream the data from and to the right I/O nodes. To achieve maximum performance, we tuned the distribution of the workload over the cores to avoid network collisions. +The architecture of the BG/P makes some tasks more difficult as well. The fact that an I/O node can only communicate with its own compute cores prevents us from freely scheduling the workload. Instead, we have to manually route the data using two all-to-all exchanges in order to stream the data from and to the right I/O nodes. To achieve maximum performance, we tuned the distribution of the workload over the cores to avoid network collisions. \bibliographystyle{plain} \bibliography{lofar} diff --git a/doc/papers/2011/europar/stations-beams.jgr b/doc/papers/2011/europar/stations-beams.jgr index 2ec46bb4d48..c7a2bfa598b 100644 --- a/doc/papers/2011/europar/stations-beams.jgr +++ b/doc/papers/2011/europar/stations-beams.jgr @@ -26,7 +26,6 @@ newgraph hash_label at 17 : 289 hash_label at 19 : 361 hash_label at 21 : 441 - hash_label at 23 : 529 (* hash_label at 1 : 1 hash_label at 2 : 4 @@ -54,7 +53,7 @@ newgraph hash_label at 24 : 576 *) min 0 - max 24 + max 22 newline linetype dotted @@ -188,6 +187,7 @@ newstring : Stokes I, \ x 2 y 18.2 hjl vjc +(* newline linetype dotted linethickness 2.0 @@ -197,15 +197,19 @@ newline 8 20.15 (* 406 *) 12 19.60 (* 384 *) 16 19.60 (* 384 *) +*) newline linetype solid linethickness 2.0 color 1 0 1 pts + 24 17.03 (* 290 *) + (* 16 19.60 (* 384 *) 20 18.97 (* 360 *) 24 18.08 (* 327 *) + *) 28 17.26 (* 298 *) 32 16.43 (* 270 *) 36 15.84 (* 251 *) @@ -221,6 +225,7 @@ newstring : Stokes I, 16x integration x 15 y 22 hjl vjc + (* newline linetype dotted linethickness 2.0 @@ -228,16 +233,23 @@ newline pts 4 23.26 (* 541 *) 8 23.17 (* 537 *) + *) newline linetype solid linethickness 2.0 color 0 1 1 pts + 4 21.21 (* 450 *) + 8 21.21 (* 450 *) + 12 20.62 (* 425 *) + 16 19.75 (* 390 *) + (* 8 23.17 (* 537 *) 12 21.84 (* 477 *) 16 20.37 (* 415 *) 20 18.97 (* 360 *) + *) 24 18.08 (* 327 *) 28 17.26 (* 298 *) 32 16.43 (* 270 *) -- GitLab