Mon Nov 23 16:03:13 EST 1992 From owner-mpi-ptop@CS.UTK.EDU Wed Nov 25 13:39:28 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA21716; Wed, 25 Nov 92 13:39:28 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA09797; Wed, 25 Nov 92 13:14:37 -0500 Received: from relay2.UU.NET by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA09791; Wed, 25 Nov 92 13:14:32 -0500 Received: from uunet.uu.net (via LOCALHOST.UU.NET) by relay2.UU.NET with SMTP (5.61/UUNET-internet-primary) id AA22187; Wed, 25 Nov 92 13:14:33 -0500 Received: from kailand.UUCP by uunet.uu.net with UUCP/RMAIL (queueing-rmail) id 131337.3987; Wed, 25 Nov 1992 13:13:37 EST Received: from brisk.kai.com (brisk) by kailand.kai.com via SMTP (5.65d-92031301) id AA12688; Wed, 25 Nov 1992 12:06:04 -0600 Received: by brisk.kai.com (920330.SGI-92101201) id AA08958; Wed, 25 Nov 92 12:06:02 -0600 Date: Wed, 25 Nov 92 12:06:02 -0600 Message-Id: <9211251806.AA08958@brisk.kai.com> To: mpi-pt2pt@cs.utk.edu, mpi-collcomm@cs.utk.edu, mpi-formal@cs.utk.edu, mpi-ptop@cs.utk.edu Reply-To: William.Gropp's.message.of.Wed@kai.com, 25 Nov 92 09:28:43 CST <9211251528.AA12985@godzilla.mcs.anl.gov> Subject: Nonblocking functions and handlers. From: Steven Ericsson Zenith Sender: zenith@kai.com Organization: Kuck and Associates, Inc. 1906 Fox Drive, Champaign IL USA 61820-7334, voice 217-356-2288, fax 217-356-5199 Bill Gropp writes: (Warning: radical position that I'm not sure even I hold follows:) An interesting issue is whether we should defer all nonblocking communications to a thread-based execution model. I'm not so sure this is a radical position Bill since even nonsynchronized communication will need to be defined formally this way. Nonsynchronized communication is in effect creating a parallel process that has the job of passing the communication on. Al Geist earlier asked the question wheather buffers used by nonsynchronized communication should be accessible after the communication has started - the answer should be - no, unless by some explicit mechanism that formally amounts to a communication with the process mentioned above. Any nonexplicit interaction (e.g. a write to the buffer) would have to be specified as formally equivalent to an explicit interaction. Also, there is quite a range of terminology in use. One common error: "Asynchronous" and "synchronous" has quite a particular meaning in EE and when CS people use the terms in relation to message passing they usually mean NONSYNCHRONIZED and SYNCHRONIZED. Also BLOCKING = SYNCHRONIZED. Let us begin a glossary that defines the terms we use - if no-one else volunteers I'll take this to be the responsibility of the Formal Specification Subcommittee. So I'm looking for volunteers from that subcommittee. Steven From owner-mpi-ptop@CS.UTK.EDU Wed Dec 2 15:08:45 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA12207; Wed, 2 Dec 92 15:08:45 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA24266; Wed, 2 Dec 92 14:56:52 -0500 Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA24261; Wed, 2 Dec 92 14:56:46 -0500 Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1) id AA00585; Wed, 2 Dec 92 14:56:38 EST Received: by b125 (4.1/SMI-4.1) id AA02506; Wed, 2 Dec 92 14:56:37 EST Date: Wed, 2 Dec 92 14:56:37 EST From: lederman@b125.super.org (Steve Lederman) Message-Id: <9212021956.AA02506@b125> To: mpi-ptop@cs.utk.edu Subject: hello Most of the other subcommittees are having discussions and (hopefully :-) making progress. As a member of this group, I was wondering if there has been some discussion I missed? If not, I feel we have a number of potential issues to discuss before the next meeting in Dallas. Given the holidays coming up, I don't think that leaves much time. Does anyone have any topics or suggestion on how we should proceed? Steve Huss-Lederman From owner-mpi-ptop@CS.UTK.EDU Thu Dec 3 02:38:33 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA25221; Thu, 3 Dec 92 02:38:33 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA05999; Thu, 3 Dec 92 02:10:42 -0500 Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA05995; Thu, 3 Dec 92 02:10:39 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA06896 (5.65c/IDA-1.4.4 for ); Thu, 3 Dec 1992 08:10:10 +0100 Received: by f1neuman.gmd.de id AA14748; Thu, 3 Dec 1992 08:09:55 +0100 Date: Thu, 3 Dec 1992 08:09:55 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9212030709.AA14748@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Getting started I agree with Steve Huss-Lederman that we have to get started immediately in order to get something done before our next meeting. I'm sorry that as the chairman of this group I didn't take the initiative earlier, but after my return from SUPERCOMPUTING 92 there were a lot of things to be done first. How should we get things going most effectively? At the moment I don't have any input from others. So, the only document I have is my own proposal which I distributed at the Minneapolis meeting. In that paper I tried to integrate the concept of virtual topologies (Tori and more general graphs) into the current MPI1 proposal. I suggest that we take this paper as a starting point of our discussions. >From the (hopefully starting) e-mail avalanche we can then distill the open questions and controversial points for discussion at the January meeting. I assume that there are some people in our group who were not present at the Minneapolis meeting, so they do not have the paper I mentioned. Therefore, with another mail I send you the text again as a PostScript file. I processed it first using "compress" and then "uuencode". Before printing, you thus have to do the reverse operations. If you have any problems, please let me know. Rolf Hempel From owner-mpi-ptop@CS.UTK.EDU Thu Dec 3 02:39:47 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA25246; Thu, 3 Dec 92 02:39:47 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA06040; Thu, 3 Dec 92 02:14:55 -0500 Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA06036; Thu, 3 Dec 92 02:14:41 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA06999 (5.65c/IDA-1.4.4 for ); Thu, 3 Dec 1992 08:14:11 +0100 Received: by f1neuman.gmd.de id AA15778; Thu, 3 Dec 1992 08:13:54 +0100 Date: Thu, 3 Dec 1992 08:13:54 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9212030713.AA15778@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: proposal Cc: gmap10@f1neuman.gmd.de begin 664 virt.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP6(.R4D3,G MS1LW(&JXF)&C!@@40U*`B)$#AXT6.6"`D!*&3)HQ8=B`*)*G#(@I;\S0N1-F MXL,25-+085,F(QDY:43*<;$QS5,H8/&IYLS:O%DU*G3 M1@P9('#0D/&T2-LA;]JT*>.&SIRT9$&E M#!8B/^F`D`%#I\\QHLF4,0.B\^?0(!(J1OG""8@7JEFS>=-3X^K;0O:(64S& MMYD^ME],N6UY#!H%NWOGOHUESW(G?83!PYI1')A84 MF_39-\.9"O#91GAU!&5&&660L<<<=%14QQRGB?;"H6XDRL:BC8(`IE%P:(@F M$`W"D<983(Y0ZJGL88&F$4U4M(4"""IH8*T+)F>$$$(,:"M=721'AAE,SL%: M@(``:T51:F1&"Y&FP0::PP;HX6W&*H#%;)$09\('S;%'AY;":$5+%Z%#)P=5A+QA!H-+4' MS$T)T3(;JLF!W&U^->B6NDD4$2UAQ9%1!QQ,FO'&&RY*IG1A??`U\#Q!APK=GBT<8NM%G#3=#P-H1";.==" M&H>*M8?>9%04AD9OTT&P42]HO-@9AA?,XM_?@2!6V)&+/1,(/:$7X7%XOZ#W M'6F000<:?Z/10N"1$LXV56^-GI*+=8@AN61HZHU&&6F<@08=I9\NN.H@L,XX M&B"<-4?L"DQ>N^EX)$7L77H"_KO1JQ,VO,&PRSYY]LNWD(?SO:,^./706>\Z M7L=K+]E,,MS`_92`XQ'^]&\+[WJ!Z<]^]VV6X[<9S7*PFB&,9_1T%."C+$GNVMYS)Y\2TL98A0W\IP MJ#FL`003@=1%TC@E(C!I#&-8F0,;ASC%M>YP/^I/%S;7M@>";'MXM%KDP%;( M%YR,#BG;X/J68[GEE*M`CW.@`^U'O!@H('\.G&!;*MC!]95K6V`C)"-+.#;+ M%0B(4KI-$OZ6QU>.$01$R,YFQ+"V/4QJ)/EZ`2_A0,.EO7$-;GC#'=P@G+45 M\PUK(*1RDN`B`XI)/[E;C+G:\`:16`1-9>BE%ZG2E*-0,XX6F8B+T*!,.*`1 M!+^40S##24QV0A,$R%0F,^GYS&A*:%20:@KO%!#/8`94#G3H)SZ3N5O2!HHZF!#3`G!Y)%BT`I MK<$>4+H<_"V,8P[4R:`HV"Q&9@TEJ52:S@IU&Q+.@9UW"!YOT',;*2BLBN8R M$["2(P0BO$$T>O*CNN3#)#D(J0Q5NZA7J=*L;UE!`6BRPA[.,`=KMJ8[+0AC M7`O$'3A^M5EC!:N+8&2?R[D'0$9Q:D7V4-6KJA&-;5Q#\M`Y1S2%80_<].8; ML%4&-J3NA"^8UQX0UTQW0.N4XD#> M`K'W!4MBVWK1%""VF1=-O&/;6>Y[!^7"<;3?G)+\=+(4+PAF@,9!S;%-H\%C224<0$*TO;6G,8R)#!P6X M!C2HX==LW.31&?38HT`XJ*6,,+A!U0`OP^(!#'Q,YS:1B-9AC@^=+W M@?0,SJR`&YP9RE&&`1'4S&8WPSD)=B9TGAD-:2?'8`BN=O2K2P-I1$>:TFR6 M,I,?'6D8.%K/6RY-$?:L9V(7P=%#Z+.F)6T$8AN!U$8PM0Q\0$VA14QVD&;? MH)+LY#L;80C?OD&?Q\UG2UN:5H^&`6GZ#`-&%^$&0]"+J'U0@QS@4LE3#O2K M2>-J/%1#G;#J1P#*LN`R6_&P:&_ MG6ZSE'H&9O%!#NQ=9RE/N=>;[O67O'^/O2L#UUP01N=RIW&,Y45OG2E/QGF#I=YJ)TM[/M$>=\.Q[J3"\YO M&-0@V7G&`=@=KG!:'7G*;7XV#JB-;WC?O.OWV7,,9ETG?1^Z?7B&M1"B[/:H M^QWB8^:R)RV.<4TK7=^//GB;05X#MM.:X%:N4Z0#3NM`4_G03>G^CH'<]3WZ1Y=>]#E'O=`)/?F3PUP(MZZXE$5_Y2Z_O/8RKSFBH8[PG488$`'/.0"Y#7QPGQG0&=_$1KWI&QWSZEO_^C.G-9,OCF<:'-K[ MW3\T#LJ\Y2O3//JR3C]I"BUH0\O[3GBFB>Y+(X08&*'41;@/\[W^?)/C7/J/ M9W([AWT$6(`&.'V+YGPF!WY2IG&1UGP/:'3JMG(4B'NX9W.Y!W7S5WDOEW.S M]W\XEVBV9G(B*($M)WQ@-F@Z]VLV<&C!-@,V5RN1H.AIX:4%FIFP6]I!VF.5W3VIP".!H8C M*(%EIF@:>'[SMW.`F'YYB(<.D6A[&&8=!87"1AIZQHB*V&[L)H)!`(MW@Q(`3,!R4EEV\?N&L^5FNO.'UT1WI+ MEHO3IW"9"(RNAWJA5G3;&&C=&'4*%VI+!WJJF&?.V&HF=P-V.'L@IWC)%P/+ MAVK3*'TT8`.SV'WB-FOC%X:6AH3]:'IQAX!R9VP":7I;-G3Z%FATJ)`):728 M]V=.9W3$5G`[1R&&"(!&F'U2MF48V)$^^)$/IX6/)HS'1Q,@=P.8F'_$=G&S M6!H7-P3?5W`*!W[J&'X:5QJH&'@G&',>J9$;Z(&5!Y)!Z1!Y2&LJ-W?#^(Z- M-W=GD8QN!VGKEVZ,YF/!!XKN9F4)=V=+QG'V1VRT,G%+%VHV();$1@/LA@-1 M:7^(EY2,YWB^]H>"Z($[YX5$^&]0!I%D%GCFMX%^*)=Q^6H0N'YH*6B"J6QJ MZ'E2-FJP%FWU!P-SF&;(9H^DT7P'EVYW$F6"B9F"QFAH>(2>F8X;J8&BF8'^ M1AIV87#_-FM])G#F!H6!UGWUR&1?*&MOYHX@%P3,1QK])Y:/5FM.=H^E.6M[ MAHO^QH![YH`5Z8&Q5F4[QWHPEVB$5I=!UWI7-HJ5MI<-9QRH(F)Y(VIP`U:I?.!F4!=Z:@%I\@=W]M!H5K9P,ND8QF MUHE9>F;.1FA$0&@0MVJF].J,ZRJA6%GU?&J@B&:C(NIT31W,*<*6!RJ6= MZJ4)1W/0^JQ::*U..GO72JW;ZJ-(&JU%FJUAVF3<*J[A2J[:.JWIBJ[2VF0* MH*S#JFO+&J_L^F^_IJ/0&JW":I=0^FN]6J8R,(MP>JLSR':_NJ90FH0*RZ[2 M%Z@+.VGUNG3;292!RF2Y-I7HBK&=.J"Y9G-LIH.>=JDAZ[$JF8Y[MF>WMV<< MJ[+7R;)OZ:B61ZU*)[/@FJI`"*Y,A[)/-K-9RJ]4^JM75ZCX%[!N>:<3**]Z M.JE+UJ?RNI&26K$TAZK$VFO2IZ@3^:E)^*FXAH%;^Y\0NX/7=ZE*:WUBVZID M>[5J"K9;F;9LUH'!2K)-UJ,ZBJAS*[=32Z_VBK?)^I]7ZJMR=ZFO>F<8Z&F! M1FF;>'^V"H4YX`/">&\_"VH^&[E3]JYZ2W-[&[&6F[F5N[F82Z_EI[F=&[HX M:[G_:F6E*[K)FK*<.[JK>[FLB[J@ZQ"N.[NQJZ./^VF02Z4R\&8#J[@&"[23 M^[!ORZ[#JZ_">[S$B[S&BZZ?F[S.N[Q`^VQ%BG\AAVI0VFO7:[*;JK/:>X0X MRJG@^[WBN[WD>X24Z[WEV[WJB[=X:Z[NR["!UKS*B7[L:H@3J:[_IJY<^JMX MQK^/%@2T&J?VQ[@V\'QI2X)W";FQJI7[&K/IL&3!H.Z=J(MN)TB7,+9:<*+EK_W6:HI;*2DFL)/68/9J8R0)L(T+,,I M#,+-.,,Z7*0I[$D.ZL,0JYZL-L/YJV]&?&=(G,)3=GQ"#*:U&G]&#*1UR,14 M/,5N:,325Z*0JWJ@A@,*K)!?+`.CUKLS,&W66ZI1B[L0=V9F9G+GZ6F]=IXP MRL3M%JAT?*5Y;*24MF40>FLM[&AT'*V##*2#S*6'S'&#G+>+?+$O1VGSNF>(&FZA)G'O1K*.RF8B>\!Q>\S*[+'(;&;+ M[+;-[&G%_&X]VFP-W&R_#)-&JI:[K)6Y+(X+>Y!WEJ^U[*5&.IF(2[`HF<9M M^F2]BK]G6K<,>V?RRZ7XRG'W'+/CFL_1BJ3WS+-%"M!`:KOG&[*PZLQ/.[[H MN]#K6Z_LR[P,_=#@^M#E++F/%\`$2P-N.:4J!V5FVG"\;*3%^\T!;LW#;++-!LW+O,#,'-.F2]/)S,S3W&G$7,T$E](I!V_<[&V%VK_'9R?B M.,YG&M+8R\I36@0KRI.2]G`4R,K.?(1BZVD8.'PD.L%/1QHSV&F)VSZ_^\5C MVJOH^ZW/6[]VV[/TFG*JNY6]5K=Q?;5SS=9JW;W3?*XU[=%6#64QFFNE'*\I M&JT3;+M%Z&PX9[N)K;/`NJ?=*[*.3:\U:K%9*VERS6A4.J7>6*IN+,?JQKM# MN\Y*IM7]"V5WXL7BF;]AEI.7"80@#<:S!\8X8*F)?:P''+A2?,"U;-`A6:RT MG-@A.`3QBVC"K6O%3=RJ:KFR764UBGK4S'$R[(806JNW:GQL9]"@MI@>G=UN MEVOP)K$WU[6^)MY#\+#'QJXV(*[IC=[J_9_AF[X2_=X1[=#T#:YOW=`37=_R MO;Z!^\W97:2TY]0Y0`2[.]97E[:9?<`PR[[W:G,-[G\,[MX.'N$._>#45^$4 M/M$6CF;W_988_N$:GN$+#N*!NF4;[N%+1K->&MO:VJ4/!\C:6W0"2-9!:J8X M=[A#NW;LC+9@?-NPZJCV2X*F"YIVW6XO-Z3DR:4QRLTQ:J_..*EA/JQ4;F7O6N99>N5IWJ)EJ]=;_>4[&[8J MY[6X1^12)@,U0*O1)J=CS>/MO+9*IZ59:>MFGJZ60J"6]W1FEY MAW!X(H=F>6^\-HCA&>3NW@+H'=/H(A"VYJ6NZ>]VHW M(`0Y4']K)V?2_LMG&KA-YHT1673TVW"4!W/GV9W!QH-".8WIV-%82(*)3?"S MY[%-3K5._9RPB-`(6Z,&+7<@=Z/M+H>H9M";C>#MG+`'V(%AV_$BS[;_72>^ MYIYS6B!UULEYFI776H,3292#^YGN7-/F?-2:%Y&LF(J\!WKBB,-;^=$'OBO@ MK)YFX7&V"G)KEP/N4W(L7]6SK)4@K'!$MY,^^>]0/:*D.?-$3HLYI\-(?-`A M>^BT-HLT`-;ON/0DAV_Y.J3Y:H)P+X1!:*4$QW#9'O5XUJRDBI>0[GJ7AV?W M*W.'%OB$/X*!GWF9MW%Y3Y%:.:5N#&5[]V<]_6AY;O'NGH-R*ZNWO>\/R668 MAVAU2;_Y_M_]ZK,#1_-=YO5#1VAA+])N'*[!=A=(G_;P6:(&7=IW*7J'FG.' M3^Z^?W2__VH<>='$JOE&RA*J&O!-??-BS+92K&C)[:-W$OVV!G1\YZ=1[V@T M_JW%=W_1IO3[YWPE5X(:\S.FM2^H-#.?]`6?^7?O_R M;_\]*'$*G+VUC)3M:0CT'#ET'^H4OC%$/B^$L?Q:T,I$$7`OT0! M)Z`%]$L7D%940+\TE6`;PH%<6$W+-:(;4&K2C([C`7YK;/TD8)/U5F!'>E7" M9NSI&1CH;X#.OM,S`(C@_)IWTVN*0#4S4TO-7_4:']-V7<4Y!9[,MIAZW M!/V:'"L^B^GBGMUI-&7!K=<"-1#6PX)=D`N"P3'H`O=:_/)X M&N_15+Q2<_DR7GG+/:`F\B6S@S:K6!-`RC^R1B4%(N&W!R%3Y0%,Z0<0_D$_ M>',$82$DA("P#RK"]*,!*]*S>83N;._(04]3!VD-G:`!-8CV93R"LZ=^W'\# M<]H/\(&>\T609$XI/(6M*!6:0E6("E=A#?PVP^?)8)^&D>_P0]SI9Q5#WN"%`%92H'D-R/;\PM[4Q;L6.V!+& MXP$ZK90U&T\(`<&'H?["BD=G*1W#1^-J8I[$)$BIL'25_J` MHD2LB$'H)\J]HVAT(A$Y?(HRQQ!JMI"$!X=SCEMI:(L# M+S-B)3MG]:2:3[H!9#'8K#OWAW)ZE`XJ/M1,%_8WA%8006``NCS6">@0)=-H M2FIJ3KC(!1.`NS"$3]JHU7\CY1^X@W0N#B^("_ MN`L?D'O$4M/.!!H[,,82AJ`;DW$R[LS41W`#:;[-LCE'[W':'23]-/O>#$H: M%.-/^PT]'@7,K)F:BEX0$FB-K)&U:6P<1[-+Q*WCM`^>B)+4C+2+.5_.-GI& M@U=]/I7`\UH4J/XM'!+UO>:<#EJ181!&%KS0)",3GO61C1_H1K8H.& M"5U5I1`.N'F(H/%+'KDE`VDXU@+T?'/N[V6]$L3SLEZ=8T66ZIWE2`IT&$$2 M!JJ31GJ3+:=- M0C@PE2=)U#K*0$J/T22VFJ!VQA3(R3\"BC0,@2M7=,K?9YL3:*D2O9ICU'_D ME4?J*%A*!'4^*2<;+P]GU$FX4MB`/!%%FGR6S2F%J8?X-*2@E)Z&Y=?K-%:I-8^RNT'WP:N6FS]2@">1H`!\)U&"7 MB"6TR@5UM.@3@(*5_.D\03GXN&NN3+^[<(#HVTF@9J67[-C#U$"([L*AN(Q) MH#:FQN28;RG8^"=+QI]@):P\F.KFW>0``%8G-EKUF7/^*C(4 MYS.CFBD+-B[R+O1#&,`R<1"J$78P*6P6'7*#:2;0N@%0[B:*]9E+9):>S]@C M><1&(44Q`.:8,E[^\C8RIP9XG74G;RZ1+%M`-@I%S;D!67TVW:93ZHQDDCK>;4 MC)P:E M(IBW<+PF(`<6=Q#1$N*]_ MT1YV-SXWVI>Z2@J*XFB9[3."]D)3%$Q\!@+QF:[#9ZJ2T3F:`8_*72IQ6<^9(H21DK. MP]6:.P0.R]'GR3H#:?K0BAR*>GKHZ7F&".GK-:2G9.].U:V9`4!')OW(^?-R M`!XH\CT2B._HGO.4=_J3K(Q!;VK=#;B*0V]V58@RH2_*^B!.'/4B$1"6W$\F MD@:82`6@1E_FI[(Z),KOF-!/%85BSFH"D7+4W)A&T*-E.DJ/8D1?"K?U)QGI MQZC!Z(! M-'1=GB>]US&C$8L30;YI<9I&XAF@3J./S(U':"WJQLT82TLDV;JEMC27-B`* MY'0Z4$2B-46IHX@@1A3F_-/"_%H'ZK3%J`EJ!&;1#0@"E4@!S"(?H*NDG>,S M5,#2>)ZR1+/%[E!NR^%W09-0#Y21YG3^@#3.@X#6*1_UH;D1];P@ M:90A,=*?N5?KTO.)TQ/YG892$CVDEJLN#:#KB1%1U2.D;E`(C>W"T]5-3YD, MI3GL!@"Q&U(:0GUD)/HU%W60NIY+LR*+$$?%2F/N]X"ZUR=Q3*=(M9$'"O6D MU/@T(QG4KY%/+S6?9E0MPVYDXR%U1HF4EEZ9+%90>R&M2EP#3!Y=4UGEE;@I MHW.H#XCF6*E?LU1WJ8]LJ@KJ-RK2C[IPMHQ'!5!/YV0ZG#)'U4YJ`%JI!7/Z M@-5D>BE)9)`*D5\.1];(M7I!<6=9FV`[]*=6-[_Y13F.?]HZ,M31F,NH9@,W MXP`B.BBG*/D87=2E:J,9G4`Z:/V@U4V5_M1J6ZV1)567YJ[,*+=LXF[TC+6' MH%Y6!)1H=BC#I%\I<_Y8QB]D,$W=XW&FT+29>LV%>M!P(Q;:E66TC(K(?`I+ MS>HL9:N.->GHTC&%2Y>HC621*(J,*M5UV5&D)\'$C["4D<*XWQC'(LV]"I28 MU>YM/SJ!N!1`=2,"!,R:'C-")>I:J@J;/5>FXARE\(HCV\>=HXX&ZLJTT?3: MG^CHE8%M"^C*D,7X2FM>9&5"3QB(C5J<%XF*O$^,$D_^->:()XWS7\6/B(1` M]P%'!J;)%37O!+]IL&9(Y12F/"J8+*L)90E\],+FA#QZ]J`1!E(V.11PTAVD M.>U.H[Z1?&5M7[ZJEPK`TIE3FQ.8[ZA1PPQ[HF*F>*VHM`;HQ$R\$U5=DHQ3 M.=+TQQHH(=N?>J@=-;(+R.C9T:PC8!V.NN2@_`EKGIPG.V4%$'&SL5?6RDXC M+&MZ=NSCD;!?UD<5S`G&GR:8?_I4=W7)MAQ\.B?#ZD'C"T-6KB;4&-M:I0^U M:EI$I:[(PX[:W]IPZ-!VHJ=+9AT!(%^[&6VC,S0WQ[:# M4J0X!YCX%9I1ES2LDB)4:1H#?`!:TJ2YQC\!)OLDY?*$%8NAW/.8GJ.)""NY MZ9&+0&?RE59:$2CKCE(S@WJR#D4!0<9*;X-4^DLT_`G?3L1\:\<'Y5-1*%O@G/3":*)7&/EB8Z6J'&-(&>LQEU M.&[&-3?T*-**7$@[3POG8CVK]?:V8EK'VB,;CJ7JK2/WL$+:F9LEWZII)%4( MAV!56P4`$/WCC^NS4I663E5@RD?+[)T;D487C$J?+1-1(:I#;;H:U39"50`E M=?/I316Z6"GV8=VBBW2[+A\]LQKUR\0UHBOE#E2R+*V^)M-!*N/#;T#CG&5G M<:N(IK))V:-`*-%%3&2WX21=@]EPSNR$@I%Q33]MQ@-U<3=CG[D]W2E2M MVGN.D!@ZJS-S[!BW.5=P*.\5`GDSX`H%*1PU6]4MW-N<6M7TM%V"I5"?C"?Q M=D,0R_35/^F0%)+O]'L:-/8^(=##>6JO-,TZ8.?J@)W>V)F^CJ&Q-%6([&@? MCR,`3Y+(:7I*ANJ)M/?)93>.19<\JS70IZN0\H2MLW#*,"$?J M7X0W(AGMI_I4`I3+R*>*:GC,'/%A2DRR+?W-"SJD*I`%O4!AT"/%/Z%D!^]$ MZOTYK8?U$AW7ZRR9CNSUP+/WD\U=J;.(<.\=?36=J>#T7K#C8\0."*4X9X=) M/IO;2<,>KSI*-W*'[M"ANZ-P]`[?29Y\%/#DI9'D8[M/`7Y*B22"O\I/X=($8UB%Z;"7D8T/N`(3(8EIQ;.F4K/ MR@@!%64$J)P-(&7_QQZY2X#IE@I.OS.OA5`FVM!4.&)]HC3JPT%T`[?>02R( M8:/@\49_L#K)@%_;D4">$V6?RBFU25&(I:RH%GMR3^]W%]J<"5I6]5\$#8H_ M$U=:((S4@FH.>'HR!^GA'493JH&A:RMVEI\/%@.^!%N"J8P-=@A:!\VL3313 MN%*?`:5N,]@MY<%3)BZ-Y..$.G;"QR*HF(2@J$Q.BI^@E7ZR'_@3=OP,F40T M3$8#2IGZ$S[)(EWMF2(R',M.8VR`=B5MK4R._D89A4F=1F+.G`X7TM1U<9ZH#D7$N0!I!DY,J&41!Y MO6`9;H\EL1Q%>`GS"%.\M(0*$5X"E0Y)TN7?+O.&I5SO=$D(N/CB.:6LPF2` M4^8SX@84'1Q)YQ"RRJPP,9O2Q=R0:!$#@C]53SR=HK,+I[/\QNIY@PI/`GJ]EU%NP=`0DOBTXXZ MS6:^G8!I)=FC6A.555/O,3C^J#*A'A5D9PM2<>ZA0'0=+22!Y_4Z7RPNA_/( MYW"?GQQP<24\=L1;N*P1'Y+D#[GHUTPSNKDM#^;O@W!F$@8&S)*&",'C+GB& MZ=^EJ\>AN.503`&4E]\1#F)*'Y+C^!B->Q\4TLMZ2YK2K6;$576'S@]YTC.A MYDOZ&F(C;]9O$2.0.]$^YZ`'%$KM9T\>,PKL!O7#)-Q4SD'_*BF9@2<S7F%(6&U1,\PT M`VZ)S2L9EY^(H(_`S-FDT>GY+J&A/:FFM MG'J(I9?..<043^%BU!2C@U(/!,C$Q^PUZ4PL<_Q@,IZ!G8A&@S`9#9Y#42HN M3LN)T=SHQ#N=Z)-S8C=_.N'*:=+/6),M[2Y%7% M$U6,B.\[^L9?R+DF&V73;F:;W)DR*A54LU0G@YK6\XAJSYYX"HF??^."LN^^ MU#-YHJ/HA8)["6W$K3;$IW0;&RE0*-%N;%%^KK7S-K_>UO[[7_7H6 M'F2`_:\WL<$>V`=;7U\J@:VPLU:;PF[/34U5G/:Q[H*`9(HS:\^=!2%65A35 MD_.9=W:OWL6M_G6U-EN6,ME;:4UY*95=I``5L1*U*9M&;IJL%NJT6JQ*DR:R M;(6ZMX?E-F_I9+G!U>1JH+VTH>LG-_6-0ZE7"=M>U?S^&W9[@'+2?_FO8D2Q MB8#%)EKP=X+1N]OS"?,7R^-BVTB29BFZJ.4\&XOR;/;,2!VUP?GZ0E*)O),[ MFZLU,+NT3-OVN(IHHM%$>C8$YB=KMMB:V2<2<-:O^_7C1F"#"U(-,T?LJ-1=;1P_ M'FNBN>SL$W_!%>8)N`ZKU/8E?"6N@AR8`9:VBW\!K1XG)_6U,'O;P!O4:2KA M';SGH.NC<=A-*Q(X$E@$KG;I=8NXLV_%NJ+HLY9:VXYU_.K7>!ZQA:-ZI??N MWN#;^M!"FXN]^E=+%'PTYPZ92)[]Z=S%>?E]/F]/56 MZY'F#/N\JG&\P:_/!C?'4\9F;RH1?BXK>*'JWCC0TZ%L>SAK[#9KYFI'!X8S MG51W>6CXR:X^5\O1_B&QM<7L]D!]HPX7@?7ND4CC2FU<`U9\FS.2\"ST*V<< MJ8VWX_*C)60,R:^*WX,\8-<4'O;"-B4#FBG3:]X:1Z/1*0,&M"*>QXM>)?M] M;R7W=\-QHP@O438[LI+P&I[8VGB7T6JVB$";93S.@?FX0_HVQO6&A^,'&(*H M]]I:M(=\1FDU1:Z?0Y"->Z5^/.API8<7R?U48Q9C/8B$#YWW1XU(>-'QY'J\ MV,ZH@V@6U[B\"N4<+7I11PCIL\Q:^Y@3"QPM8==SYO+*?R=Q'#E\WEY_4XH& MG(AO[+TWS;=Y6]5J0@B:GVQBG<3#.9PCX=& ML'X?`UU$%%:8)ZRC=;/.MU951%+J97N`CR`D5=EN%EV7ZU$4#SJP<[OH'*%$ M;#9^?2(6NT$GV-LP81]$KT\=A75.A]>YZ=-:[$\/KBNI(4<1M5#Y:6-LJO5! M[7@F#3=[.KVF"FD2Y?,@4(L8EQ)6;36MK^V MV')C3Z_FM7/3%MH;Z=SX7[#B;LI;ZTNT2X^NC5%>>NW5F*:SKVY M,_?EKMQ!=W5WE=<]N2/WH*?5F_M8_VOX+-2Q/W1NML5[X[OM68Q[Z78JGM`; M&%H;4F[/MHW4A%[';UZZB>,XX![ MMR-NWR["Q_LOU\\/WI)C=Q$.N(?/D9ML$7ZW5_@,3^$AO/O#Y`R^EV^C=Y[@ M^]M!,_'*:IVK>'7.XA^G/-_M21R>KW@9W^)7NSU$YNFT4 MY;5\AZ?RI#''UZ<-9[?MO`';[$_WL>EW;=1\ M=][.Q_@RC^?W_$S7?%"]G4\I/W\]Y_R/8_).I\&S0[.6LJ7O<,QB@U&5P<#] M'.0!O+7%"X`10H[UZ+7I<[EG:U8>/EJ9>6D>YTF]S2Z59!X1MW%M1.8IUY6' M.:_>W\1Z9&C':?UNI]E#$M0/R1>/XV-\C=?Q-7Y7\GH8_^9_?;$']A-\V"M[ M=M[KQ3RR+_;"GIT_[<%UNO;:K$N/J#L(W``?8VW/'J\J9X*4T1]RW/?Z!&G, M]JZYW?ZYL88XWYDB>S^3Q+W.Q?M--U(A^!_&PQ^LE%X MGO+X+)$`347LL[W',54L0-N=WAN@N=VB\FO+-T`/'^3`YZ M']Q]YI7\&;$28]%[^<+YH=^`X7P1-^"$JT(R'#_EUK47O<)@5*3<(]O+>_>^!U-A2WU?I#;O@5_^YX; M[G?NAZ/#W7[0]-K^]+54%_%;4*/V7?U_OJL>/KO?W8 MI=-C7_J^'?&K;=(%^4&E6--G4;8O'@YP:%8B<[;O[_W`O]V7-95O MU7:E<7=1=&>;:;\*':R:E@[JV@X=@(W]-K/Z@^H7[>!J_MZF_*$_MMF<[&S` M%_[[PW#N3_Z+?O>'Y^)?EK;L!AP'8SN@DVR"OW'+[P!^_EW4OG)KT7Z]UKSE[[D^`F!7I_\E@"X*\G?\"'Y925PSW+16\XE. MUUJ!&MC?&M?!S2(R@+;7O,D)X%IR)^NX?\A*_'*BG'>VG[6CMHUUWM.^TMW, M*XD=R]:I''E)$L<3_`U_5@WQ%ZN@?[I'OH+8!"7RBQ>"U+Q560A(4W],?RL3 M:5"TW'_=$#;SMRQU/\WO01TQ*E1@090E-3!88.:S`QY^71TNY_5]0HK=%HC7 M98%B8%=G!I*!7"`:Z*YH@6D@&S@&NH&W#T(3Z,`J4(D'"$W!9-B0Q@;'G3O> M#*GR;G!SX<8+DV]\(47/52>L'((XCR%XU.1M`QPBR-;<,R);2=/+<7-1C\Q" M`=Y;ZM^ZM1!IFR(/8#%G#`6I[5AL(Z'CL5$@, MRK+A^2E_RP^8(I%C(]6:8A#F:VR*LW&^)(0(863#$*HM#V%$Z!!.A%5ZS=>A?2I2TKECMCAQ""JI?G-Y4H,5U@<6-_F$M]BQ,S MZ(E`N)TZV!0659/?W4;[_7S_'U7(%%J%4Z%4&!6*,^I;Y?>M9(5Z#5CX%4:% M82%9.!8Z?EBA6?C->(5K8;XV%K*%76$55X?X-;A-FZ+2U8426W:#V\P`><[8 M9ZL$`3-`9P8!73,^EX@':Z!N8M:W@?T\'$[,+],8"GY1G]O&;JF#Y2`[&&Q9 MAN<@]O(.>H.;X62X&?)RFB%G*!IZAJ,A`5@/8COS()+$V?0TL,HL4HQ0-Y-( M"'CN,3]-B[&"Q*2`>4M6Z*R@+"Z@%>C`](;L76#$VR5VA='(1AS61<;AQ`$$ M'8?`(7"H&T:%T(H6(@O^AB`-]%:'?]]Q8;ZO;R2?OH%#[ MFF57'AI^.F'F=_G]*9'?X[<>5GYF!EK8'E)^[^%ZR/FQA^DAYQ=]1'E-8>A' M#2(X!EO(TM$4*LL4,6@@)H._X(&(#"Z(Q1L1V/LQ;`[B?G(7,&])(+BV$])M MA(M?(P\9`<<'H\(A+G5=D6#T>ZALVAC!9B(F;/W:B8BP*2WNX(I84+V(DDL- MHQVN2OC9^(/-O(A>S,1TK74;60:KLGR-\ M0<1-KZ6@"1K'#QCC&Q%'`4>YDW;A=G;!C,C/X1M<"-%D0?U?OE6*@JC0+=7A MU_?U"3UO8!FH!IZ!;B";J";*+8$>HY+6Q7!TXIQH)R9$1$=`)*V<)XL6EZ)F M^&6UTZ]3C/PN?@K_5RC:/8'"*'QLWQ3G&HY]T<8DPA&B=,_-9J/%=8MHRL/V!>9O]4H2 M@EY1,6Y>S^8(D6WXT22E+$%]RA)=A\^0/3X0-1)>`7;UHAP%V-TH&9.N#+ MU$5+V49=W&N8+9XQ8\W&@Q&)C-G;]C9Q?","H(*%S\PY]5OO5T85.R%2RN<` MA3PTXXV$P1EW[DRXA-^)'@L;<@MH_,1%]C-G9214O8$Y$# M+;$<9*/F83;V-L@;VBB&24MK(]PH-Y:-2C835V;ARI(U\(]KH-X(9 MIR&M44DA'\^&,3)WM$J(RIXAB-!0QE/CZ"AU1I`CK05J%#0G$6QF+5F.Y4CF M6#E>CIRCYN@0H$28X^:HBB1]@!V%8&ZH2K',`22IT'JYF:W1L'Q!GB/HV#F* MCC"'QS,[MDFRHX:6.]*.N&/HV#O>CKMC*H+U8#58S<1V.CX;J:-)0_"T4=J6 MY=&+_4Z6%9.1:(T9Z%6M*.]%2FDCW1@W;H\&7F+W-I899&.T!#X.8>&C]B@^ MRHT9W_E(-XZ/?$CY:#?:C>QC_'A[F(_K8SW(&IY*QZ/K9S=Y&[(-_\@_FF0` MI.KE!^?2)]Q M-L%9&J2YH2\E4#B)K#9Q=9`.QS"C*HDV".3&!VN0&V33+I)N<%QIDP#$PF!7 M+,&'Q)_X)^A6P92M$2@`4N4$FGD9ELS#]`4]7QQ:T49$&I%!9.#Q0T8US@BM M`&ZA..=)R92.A5V,2'KT;EAM$P\I;@5(2Z0EPU2173>D%[EE6)$+7!8YH<%'8^0,I6FH'6W8 MR(&R`5H8TGX$2,I'`A(9&2#5&IG&3F0[%2V(4R0I1DV2853I)$E6DDD*)ODY M99*J1_NCE!ANC!M, M5[E1-JU?[$8,*6]@5VF,$E0:F$=RS"M&?%&G\%+ABB>A(NS M:R21'1/'U$=:*<[DOV7*@$R7TC3I0[HXT&0;*4,MDM3D-GDUR9$?4X!".V&1 MWMEHTZ/H=`DNIT3]A;CR3M>:JA3OM4T7YH5F47AU%>5%^ M:&Y'QT-[B$_I)#6("$$=^9?(U%%93R*;U%-$<2,"7/X%W,Q2.!+6XH,P36C1 M*@DU>4[6$8%BF(10L-*JP@U)4AY-_'&1.90A):(R4LH<@)3UU$%M4-!0332F M\%^S$7O&A5&#ZM:34DO14B*;2ZG"=)2@(E>IC`A/-16?]G%%16%3TU+V8#0/ M98AB-&4]391WM8@9*#8'#6!S@&0X";62>[QC1Y?3-5SME7T42>E7RAR`&H$B MK[5MIIH5)@;Q/W+'FY$:I96U!I.Q_(1\LXS\9E=J63<3V45V:5WT&4ASFC1K M1%<`1LTU9.%8<*-/34_KR#<2^#A%](G%\;4D(HW&%<50HI4AI?G#:S!2!XGN MD6A(&05U56&5;M7]Y3M4E=9-68CDO1Z`A:WPMLHG219BYDU@*0OE< M0D/(QWF`_7[G(_D'$TT/=E$R"4]Z6(&E"+;TL&!Q3`P@!`` MB]0=H,_UQ9`Q1;92S@/%U%`$"I&6;F16:1I:22N@D'>3;&/PJ3\II))I3%IJ M/L8RV63JB00(",?<))D*!T>U+V4:9A-]DN<$0,G'O-%SC3QKWC%&$)Z9*)_# M->WE'+"&K>(0J$=V@285>CEP_]Z_%\'=F5_.?&5RA$8QAYX)3+U1>10<95Z6 M5VW5@P4XB4B&!LYQ>(E(V,@N]?PA,[`22#,B19I'%XRD7(%1OU&'M2[]6D^, M0`3A`7;-E)EQ24T;F=2WU\P`0WY5K%6BE!]VUV\DTC`1M9/[&F7S5Q M-)K0T/G&VQ1;SY49]6JYFH06H:5JF3^"EJI5?@R;?4>K!6S"2+?F$Z-2]E2S M1XLUM-1-(4JI0J9A&8#&4))Z)1I?AY,='M=4/E7 MKQ%U:E2R45A)=8);LM&PZ8RH;>3>1Q-_<&/4RS")TJDR:IO.R7)N75)5SUGM M2%D7E-IY4C*=<.?;63PAG0//F%.38%4;5=.9=\:7EE;*Q7<^5JRFWSG918B6 MT,PI>A0M-8IR52;-'W)E'O)6$E;M5/:A@[!DEY.(-)7<./>FH7ETO9LW'N>I M%LF;GV?H6>X$4LV3C=0*PFP'"GZX6\AE\EC/#9_(Y"KF:OV?T MZ7M.G]`G]=E\&I^HF/3Y70&5O%L-4L8,+=RAUX=L!ILPDK)9?)J?Y.=OA'Z6 MG^GG^JE^KIUYRW\CM.PY^H<\TK65/Z&EI)5_3EHB$D5%6^V?_Z=HR7\*H`&H MI$51*58[2WY$8"6@R5.B@89$&IW)[J%P,I242/XAVI`^CUPN?-J*]!,U7@-/T_0U8B6%3?*Q*8$L`(S"(T>%(^E(75(K+9RY M9JJI@UJ?[:>P.7CF&D*/-N,?"2UQ"BS)+7I/\>5\F83"EQC4"K&&_I2]5T0%1W:7O4G[U4P56ZX MGCPE.[5O^ATM6M11HMR&:A^I)WO7[*I`$D@-4#TP8;:H@B* M&X*'"EZ`&2\:8,%*O^C+H5@23"?8('5U#%(H:+KYJN&;\E M2J.IY89%GV1>49?F19_46*X5V(5CJ5)I66@;T M1Q,8GF)G.KH!,\QZJ6L85I5 M,V)OE3EWPI4ATP%Q3&94*]4EQA:N.9%:(\TF+/C\ M0%*%J:H9:\DX@><-.H,B=[]99N2Q6%@@F`85>%U0&Q3B)5LR';TF!\.9*J.= MR@.:):TFT@COYHV$7B",Z.&2%:'5ECR2:SA7-('@E4&9F`#FM..L[5)\I8(" M)KHMC4Y-9\Y\?LJ*:538!"$$J(UFIC5\K\EQRF9B*:%4S!-U4!IO4+^TRP0L M&2E-<-V4+N%(Z@FF\";LQL?5G9I00%@+!GK3J>`BBZ:/]U*<)YIRT7>YIA47#RZ7MJG\:GNU5[^O9,///8.=J:HG1"J/D6"?Y3.V>!&G09 MJ(F49HI(=:`,*MF54R&H#>J"ZJ#F/1)JA3IT6:AHYX,J@>1;5>A04C)=2C$3 M@W:DS#W0%JHB;16AX6?8-M3@3CU*&V*JX!I;I(PT4U%=<^1318S]5B93>KIQ M>2UC99S#L92@KD?,5'00IWCGD(J%:%6ZSU8S6($Z)2JTA6=N*B$2)E@XI3\G MD_WADNTYN2`(E/LPC0S'+`I\6FMHY\2Q7Y:?P\VE:?Z8J7U'OJ57E26PU'SE MG\@X;NI6*F@2'Y2+H)F/VJDMCJ%)\#Q86I5FDHP^'8DFX_5^Y"+J$L*1:!:J M]@D,$GD!(]AEY=5EG56,ZE;C5FTD)Z"+!'&X2`_I9R2^Y4HHSJ;#178@,H`- MAJ6*G0(BK"@0)IO)U6^E;25HO!7>B7"@&^E(,VKF"7^NBD^G=V M7I#*EE&+5A\>3&PSP2188%;Y%M#%G(LU!V-3405[1 MVX4"^4#G38>IK;XEVVJWZA!XJ^`JMRJNAJODZKBZ@T@\M)-_=Q]@5W1"_V&$ MX203UP@Y@720B5>]6F[`'E^'!6E!PALPB#)50FI1P9CU@JT:.59)P6J>&*P( MZ\&JL":L#.O"ZK`VK%:)'[,-`2JT$\VWKF(B51Y?=8J='-N3&&2%/2V#1DZ\UJ6')" M311,`D)!4:Y0*10[KDCI5-%*M!ZMKH=7,K26K,2&O81LP"0-2"GS)XJ:R.,< MP@ZE7>#9:5/WG#Q91F3U=XQ(0^D>(G0('8RHXHCE-)+NR;9($2E]3!%\YEZ^ MK6ZK%[*UMAO%B/T%F#J7\Z2:I&+NK=63<>FWQI-HDD-RMWJD-E#=RJVE'%-K MJ5&UQF3KI`34^W1@96.*V;=N'$B2;Y5'@6$22/SQ=R$>5<9Y`L0\(`B81Z2V MFC\%5W\$)6(9#A0?HKJ6&1D:];BZ,E\^V>LZA,FN8\_Z13@"&TS81$)PO&@% M!XTF[*!#P1-*&;P.KS0H\"H5.35>2&"C+LU,EM/:8L5)5_[9]!''=*K4ZW"3 M9T!OA0SU,9;->:!-M&$@L6AM7V$I\Y1A.VL$%MC4JKM&/[2L0E&KV'`3BW@@ M[VO[&I;-K\](_1J_JF+XZR?C(*49]@C5:IU^9]M4]`%:H9GS1^RF*Q61:20" MRT8NL.J4%M)B(1^*HP_`K&P&RJ!LRQ+1E,QTG-<3)UC3$0 MC8*]W`E-E%>6`Q&1>\GJE8%1F*05=C&2>+0A5'?%%(*0_M(#_ASPJ$M4*U%^980^VR)*O1 MFK2N(I%5'QMY-B=0:Z(2/^FLR"P,&R=1*U]F+)L\@C"QA[DT:WA;I1+>2O7< M.RQF-IO,;1R3JS8K4.*MGJPU$F@LC#B0W!JW4JCQ&=P*BFUPQ4=[0HR<0(M* MO6:?`!RI">4Q<&"Q56P^2\7V);H-)BOS8:PYP6!UBUROZ0;B@7@\I.5=FI)E M0"2:J^9Z8IU8JL85HJ<9*:/&V>.>E%[F4Z5)*5U,Z!M&!`[ILPKL?\+`BD(D MK;]1TK9EE1D"HIAX1?5'Z55Z@)KY*PO4R$ZR,2TD:]/2M(\L_&I<':MY1K)8 M!_&O_NS_&J[Q*,03(>RRMZB6/A6!''Q8F] MG$S]ZZ35SL:R)U#@,O@(950M&6*&_"$ZRTY6?N)@O4D.II#P8(^*L&$7)F&B MJX'C'Q&VP%)+[60D0;UY16E&8T'@/=\($=25(7[0LZK`$I& M!F_<)$E9M//M'80UIKIQ:>0$=!6(FU-J9D0(H#&'C!E`"JP!PLJN/.X'ZZ[L MN#ZN7)0_B1KJC@!4?S0>\$Z=(>,B3A/<];'D+J+G$9WPQ>8)#.YRQ.0>(#)N MOR'BZB9G$P3*F3%)_9G_1%6I+#UD;.IR:B"LUUQ'?$`D4HK'&4"I'+^4;EJ? MXJ>6JWL:Z+6GO%1;Y>::&R4(=$5TI2<;""/5G[2Y/5;0\>;,'G2""0F>45/( M5SV78:&,I*AG!'G6BGX'F+HN@31`F`?B3OD=H&CD>MZ(D>6K*6ET&]56J6CQ+8SSU`^^1;0HG>NH^,WZ&(3B":21UE=/VZ M4@V?6`512II)5R/5E%GX5[HA:>I=NFZS.\,\NX]:DRB&AB%LT*H$=S6B[FBV M^[5JNT-IMPNV?KO9KB?J[6:[88RZPYBL:-M>+>)LJ MFF[MCNM'`@UX96?)6KS:DRU<`+(,F:(!A\@Z\[HARF5KELH@ MKO_5\_I6JLP8:OFL2I^6J0DF/G]5E6=D&^&\GE$DY5#-O.,IJSM0(5HGIR?A M]X&)(M(-E<9&5V"OQ1GV@B/8BVA4E3H&0D>?'.I_!8DIEA/9:PJ:>DCRBGC MNYS&1XT6.709@5'%3;^$_`V5;8:Y-F8.AEG5\\BJ?J?YTB@TE751 M!J?OSZOZXKET[IABCK6^K.^<*_OFIU$E[6O-?4*P+DM[>,HCMV27R4+:DA-N M\(MGK&&%`I:YCUQFHL;)`TUQN"('IL<#O'@17*I@>89<:?M1'!Q@J3%W-!XT*Z\RK:V_V5E"1OV"('V'\6$3B*R. MY8E%ENTP!G22:.`KQL<*UZQH/"+;4I5&P$ M+*6A)XG7?*L-38C11A:I`+@EC8]](HR0NP4] M&T[,$+1,3D0J&+)Q)R0D0*SF^MBBL?ZJH+&314PD)L&UI=A&;>GHU&[%/@J, MX_-GC"`(98DIKE8:&9.`J1`%)?3AAVGNR@EJQA)LO;"_[B\B[)XIPC='_)N+ MH"+&AZ2!EGZR')CJ4PE?PD:')9P)8\)_$CFG"5.N7]'1TYX8P.GD8PMT93H$ M+*G3H6U`T1Q[Y$5W$7J"!-,)!,">\RE+"FW`] M_`[+PW9)*/QFM`])\)%IMQQ,J&PY5&@)O3>L3:,-V!C3B6$FWE0<\LPNTO M2IR0U5FWB5.X%?FH(-<:)\!H0;;I1$DN)E]%=0`O_Q(Z'?Z(5AUW2 M)-"5MN3$O/#.X0LW6V2Q_%46=Q3-Z",BXZ09VEZT(>4:+-S<)SP/#QT"%3XL M%]/#][`];'\Y5[]1_D'.]JO4T='C$Z>379&HQ7HM:@032V7#9AEI5F-X!>]RPI[$. M"Y5$'E3M3]8:3QFBTIMJ?XAZ#K&/^Z;JH;8&I+Q1E89DZ^C"7:)79*74HVI0HVR:G`,'":` MM,1)\'O2<^FX6U+[$:(Y'+L8<1*X4:@1:8`\H^F7XHG0CJV#]##^!`W<%RAPJW5 MR7CR-F(GISAPG"`X)\LN.Q\24J<).VX(2;+A#HJ,JSCUK'4C<7*<+'6<19:* M946-I__(BL%X"B)1@P!1Q)C8+%;+WE>BQW(C*C4\_]/=1'&/RF:PF MI\IH\E=2)J/)9.?KLRD'QQI-C?C\?HC@[6,$:<1O\5L;$^B<9DSC))4`)20) MR>C1*Z.X6DB#G`&W3#%9-5DYA1GT*=OKUV0W%FP%RU,),=4RMES"JBDR?NVA1GK!1.C]Q21O*]=W!<9C#O3LG:G48HW;PR;\,\?3#,#[/# MS.I%S!0SJZ>=0LR9B+)FJ.66WK'!O*-1'W%,]LA*]V\X4PTDI&$(JY/^!R#294R=&55&1?=,3P$' M-E(JJS"A6LVE*-5&Q2EO>:K=E"Y.E@,U6Y;J1K#!B+`;X25B!\[$W/CI#9?!"<:E#`PF:8S&O'FA%!ZLOJ&#G& MA?B/"B2I(0#YRW_355/_=*A,)!>J48%9>.?MU5$@84(:DS&8F,Z61G"9+XV^ MAJJ`7&B@P6A):N-@R5$*CVO6D=9Z'J1@!/I-']_71P+'%_@^G5+V-:GYCK> M)%!'*2:7'$KJ$.UUI*1NEP[%%(Y!Q M":;^)LNI=0Z;)*O8:YEN1LVJ,B(;B;49T@=-ZEV!51$#=H^2T%OI!PVHF"I, M:0I=0HO0#-@(W=U3L1&(*8VF'GU?C2`8LRT?C M8FH*H8*1^H9R_M&!)V^D<@[2.30A+4@7THCT(>T3;:",M/'62$M5CW0B%4D3 MTMHI)/U'6]*8M"1]26O2F#1)L]WPT5X-$+V7]9(U'2,W^-9<>+,Q26RDTEY' M6=*CS!FN])X92TL9;FHB18_8TF4)+KV,.1H7V2Z-EY4EC&DOG4"5)?1(,0;&KC%7(YT\TT$9)IL*EM;\A53;.IMZH(]:B&7-ETR(4TLZG? M-(+2<6K3@H?0RGH25/-)VK)^@!HSB.+5S-"'4(5'0EUTKQO)M2.&GUR9US- M9B]$W?9>HX](TP51W\R\[4;]3.%8I!S>\* MM!4)65=/4=9KOI7DUXE6&6-789UEB"EB2OKF=^B7FNNWZD#),+1)`YUP;8G[ M6@$F\/191Q4(K)/P-?4./+IB!\L2)%*4VGI$:;\6;(AJ(),"ASV=8X*WV]PX%D-UCC^9:\ ME7T8CM9782>B;.T88/L;1E"!K7L<:#60L;:&(""=""NBH*DGI2/VW+Q=UY@/ M/E6=U,/PSX[F/`W8$<\-)/2&UP]8%:IO^<*!)5PK0?ID9$V0:V,#N7K)_-C!SH'[TG1FE/6D8\:L8BX]P7TO#L2/(,P" MCU$JS8FU8NW&;)W(>BN()21I4I8[TYCS6)J,"A*P^'2$D24UMP45QS9K+I?- M9>-H?=JY9W8X4]%&G@//SM;V]64\!N&SN74\%*#I&>`00450!8]X=JG%.^;9 MP*/ON#OR@6I'=3U9[\R`B.Y*C`U)&&PJDUQ/L5BP`PS23L$-K*.Q'=9.<0>+ M]KN945GPHZUI2[%1K*.=:4NQ7*R@_8[9A#6K/Y-H[=9&]NJA=$PFX>G#XV*Z M0F3VMU0*`;&J4*R=A\S:>Y*LC8SEVK?VKBW'VMHYVL@*:_/:.5IJF!=!(<+( MFN&]NJ+RTO[BU`1HHK++>UGQV4MKM;UGOXW4-NT(:-5&NMAS9V&!DB%(JLDN=TV[!ULWUJ\];_ MY9U]#C77VEAR+7`3UP0WX%"MVB0IC#B M_7C;.S.:&B]65_(:[3!5C`.M&>XULZQD9+28YOEDRO0[(FO- M1=9\VIXVAQ8@1Z*/Z'`R_(QHU5B),G]6-ZL5S[,,>KK9]@H\OO;98+>U_3O> M4+P)">Q@63^+B1,);7C;OXL?*'$*/G]E`LUE$-#7Z$>UJAD=%%HS^0?-'))M MWYV.Q$R!V8[9A9E,R;;)+1@^>A;HM"-V$$`7QWJ[H0@%3]+<<36&*`V90?H` M3GY`A__&FU*AG/<2VGE/H4OHYNUYC]Z@=^E-5(?>G_?I;7I+H:IW6W6M3(Z$ MT1?S)]X?04`0`(546TGN%\4Z-:_2,\%G\OG4V`>S-WBV.MB'V%Q\;X+WL)`M#$43UU@8)\'RW,]]&2HI1/ M:'+8!=8L,U=:7/G3&WW@TR+0!()OI23X3\V!C^`FN`<>@I?@P18*?H*OX"FX M"ZZ"L^`S>(X)@[_@-+@,KH.+@?X/67,XGB1$`%N*DJ2[IJ;-F!?U2`*B&5A' MPW!"`,W1Q0%9](<3SH0[X:92G4"%=SG*ZR9X<3CA6KCRVJSH=\KK8.-]..%B M>!B.9BFON:K&X82GX5_XY@GGHN&MH-+,;T#'<#@=OH:CX7BXH[5^K.'<*!K> MA_/AFN@:_EVA6&"4D2+YD-^#N!PNL@E3@C@2IHC3,#^U?*(8H^$I3K+[B(,P MDGBEJ9Y$(H+X)AZ)OSA#,Z9Y9X3BEGC*_8DW&=HH)=[$E.",5"HNB"O-JC@( M8X!KM($-*=AF!3;*'V7G@V?91_C?=;WPA.);S5N@D_CO]4,WHR;X,VJ M,EZ"+Z7B7O?-@M_@[/@Z?N10BQX.%DSR>#'[?ZK@)WH[KX^MX/UY@ MFF/18I)7O>TG4Y(PKFY@5TGO<(S&L4;8:3P:K8:<>E9F=4Z%,G-,:?6E<%SR MLZB4^+X@5%,@A7<:*A\YU1*2!RB2?#M MDL_D!,A+OD6SY*633=Y%9]$X^4KND\?DYJ`/RG$RF$N$5HQ!>7`L[+J1^6/?WN5&7NUMPKN`;>H'D#]S\/?@Z MJ7IX/9Y>_M2XZI6B,T+/KI6S*'CM2HT/\3UG*B-B-60>CZ-=6RFN.D!!:M>' M>C*.:>:9>584?%NC9`MHGKX`Y"`?IR)I"6W%]^^-"H, M_&VOE*N-2-U,7@C0);7^68NVU#I6QEY&UB=5J!&4GE/3U<`+M-#6/F MCSND9ZE1S_DV,YP+_="L=BL#<@:_)*\@-)'+6-,7T?$A%GZUG M,%,L^=2BO<4,L)"N..*O8)QN;CARF18K2Z/_$V_ZY)XG3[YRG5Q,T_]]6.&* ME":FZ8%Z($V.Z836[*2]B_&Q!&<:W?,'XM32VQ8P#:.5-F?%*0#*$`V@^F>% M3H!Z@;F,ADXBL7L8>HA>@(KHD)R'#J*/Z"AZB9ZAJR^[YJX)CYPQ5%#]4;WH MWLMGU0V9$">#SY'=92S<$Z>,4[4XXX**3@W,0>-#NI!.I/?FS/G3*R/QC:'/ M7X^4T;,6QDA>E*8#B1-/_:6GF2$ M&"$E2*Z5G'@9T[`(*'J5*HIK8BODEC31806=:!MC@2=JV'N^G^QGG\ZG_^GN MI_GY-N\/1O31@%D]Y8VD/JL2:@#ZI-ZH`Y_6NJ%>J6N MJ6?JY>>@SJE3ZLSFQF/NIW*$?N?ED;%@P**3U46=8 M'(SLEYO$Y@_KJQGJR MSJQK/M"K'9R]2>O4UCFZE"`C6>,RU8092WM(8AI/"4LGDG8*!Y_09`?!$U/F MJOSC4[D*GD7K>J2\KC^5YWHKB#S92..Z&45L7;J.%$C:II?KO*+,V8K^IQRK M=+CL%Y2K3+%?[&LHQCZQ M9^PO=,>>&W70,S0'_9Y/&0H[.**P-RQ(87CR<0?LU'-+"I6_I#1P^ZV?R#"DK`$;C(KIJNMT6OY&CHRU,KX)C56>W73F>VV:)=[ MK-M^JWB4&4:/'>VFE>/38:?HX5@G9J$_[AXZB0ZY`TV<*QU23UWNS!GF;KEG M[F#:5Z5[@*!+#JUQ]H2JM5/]D3P.ZW1@X'?>53/RFV[$JR_KIBRRWJS/[L,Z M[Y"UV+7Q9E5Z]50@D5CF\H=';S9 M2%QS1ROZ?FDH+P9$X!>0`3+&;G`&(`:S`8UQ-#P%WI&D,!%D!"I`1J$C&`Q: MQHT!&\@&V@00H";`&&2`]PX'?`5H1%F`%@P3!H-ZBT2Y#X.#$<`&H`!!0`H0 ML,0&*(",`0>D`'(`"M!A!`4I@!F``@@5*<`9@`)8`6D`0J$II`!H``I`!:0` M+4`!(P8H\`=\`H\AO`&*P5@@P!<('_QB$,&C`$T`%)`$Q``I@,91(-`I>D+5 M8`2L`2B`%.`"I``>T@>/!+`1!WP<@`)4%@+\&">,K!1Y``IP!#0!1``+@,$K M\2,!IM#`HP!.0$7`(3#P&3R)0!'(`6-`"O`&H`!HP`H_!!`&7CP*H"1,\1!\ M&@`3!`9@PTB0`I0!"@`*,`6,`:>"&[!$I`!VP:!``IT%2?R6<"A8"SJ``*\3 M?/!2`(9@!K@`/WP;$,0/\6P`#S\H?/!`0`J@!J``9T`;0`9P!65`"B!N\`7C M!Q)/Q;\!9;P=4,:S$66\&)`""/%N/!F``MP'3CP.3Q/("3%\#7`6!-$Z@0T_ MR0X!(D\1`\#K_(OP$J_!L0Q_,.%D':<,HK\$6]&3_%-PB" M01G/%OP$X[QX,,5[#/#!13_)D_,2?'@PQ4\!4``3_\1G!B0\>"`8I`%>?!PO MSZORW,12OUKL\"`'`2]CM`#^_$QPSR)(!;>#'+#" MF_*H_!-O&60&ZWP_G\$G$^J]*O_>[P9203^O`&3PC7T8[\#3]AG\&-#93P0W M/62OQK?P+_Q*;]V[]'W]2O'!'P2]?1W0T)?QD/UN[Q@$\7%\AV'"\_0S@3V" MU]_SF;UD\,0G!1K]&-',GP28/0N?TL_S9@!;@!IP"#,]"G`'8/==_!CP$H`'L_Q+,(7$#B M`=E3]K"]\P&/W`"S?1E_!Y3Q20&&0`8$\A(\-E_0J_)BP,9P!DSQ%T'.,,]7 M]J#\-`_@0_>.06^_SEOSQ/T8$4?$\V?^-*_"A_G%O`0?3XSUCL$98-;O`."] M&5_,J_%S0!X`*9#R//V1V>LD\>(]#Z\G?/#W/5%?X1OZF3RB#R9P]L(]9>\& M=/=5/4R_W5?SDSQM+\$?"CO^XE#.D_AJ/&\OQ/OV)OPUW^9C^D]\S"!/;/E? M/&#OSQ^9X@8(D,2[^GG].G\1?`0I`),_.DCUBST*,!$8#72\//_?%_,9?!C` M3;`%%'ZA3^)G\#Y!2)_6._4!?F#0!DCU;H!KC]9_\2?!#I]\@$=T@OM@PV?P M,#S;0$_0[V)!1H`7\`7X>[TQ$[0$F(.S(,'#\+1<:%_-NP%F?)R?P#/[W[V] M#\OY^LY"!D_,9_+:_0>/X,/PTWQ'_]%G\"%]X##22_`0O#W_Q,<3>P!5`,TS M\O/\8+#7HQ%I`SROZNOY#OU1G]/O\IF\!+\%S`!=P`I_W_\$4@$;4-!/\@%% M94#1V_M\X:"0Q(\.%0$//\C3\Y`]1P_*H_(4_7Q_59ST*$!!'\T7_7`^*/_% MK^ML[='_;+Q!$ M?*L?Z)OU;<#BL,/;^WV&O9'$B_:+?D\@P%OWICX*(/%#]EB_@T#&/_3@@W^';\:[_"S_@_01D?QG?UPKT#']\7^,Y\(Z_&U_."O63/]$\$ M'P.*+P90!2D`W?^&^?HYOC=O\5_R*4"Z[/#/$8(\`5\BP`'8/:3@VO?S:ORB M(+Z;\&9`'`\Z+!"U_CT_]8_RRCTH[\`[^=F\8#]&R/D,2W]HO^1:\AI_#5?(C_XI/S#GP-L,*3^'S^ M]/_WK_`5/SA_Y`]6:X;=CP(\`2S"/$_B/_O3_V-?\:OZ5+[C@0EOF9?LH^TY M\&(&;8'6GCQ/C4?B@^,U_TAXSKUY'K#/MU?\8^Y!`'E_*``N@`)/O2?!^_'1 M`2YX]KX6Q*_CY[5_\QX)4`A'I$O`BC!B^Y9]F)\UK\[8+2O\F?.JPS4 M]`1[,;Z2@"*/]*<&(.Y1]%1[&#TM'Y=O#[#J4^]=\]``$X$M@4^@H5<20/%I M_A![H8/YGTX`SS`"1`$8`5(`_[N+``\/A4?K4^/]^1QX,SY07B/P[2?M2_9Y M];IZ.SXX8*B/`5C-F^8=#ZY_-S[BWA1O`CCGH_AM^CZ`E,"^'S0)BX'R0(Q/A;AR#8D\:H`QP/<7D%/-_'!N_H]!"F`V+X]H!\PF7#IBQF$ M\HA_^T#C'PH@GR`*;/^M\%QX1(`G7C5/`?#%D_"5\I9Z(X%DW_[/66#/:^0E M\!IYZH*IT4>P"?C$8PC2^AQX$D$R@!-/"LCTX.,U^7""0(%?PA,/JO?MJPF& M^^*`Z#]JGLU/\1<&6`.,\CZ!T#WRP!V/OX?>6^&Y^@J"1$$ZH,9/@K=$0"B\ M"RZ!YSW=P4U0$2@'8"<,^=QZ<\#.WT5/"G@X0_WY`^N"&H1=(`&/"YC<<^`M M"K9\V#[U@#>OVJ<'G`'R]8Y\<5C.;-\PR`0SP\`&N/YC?EB^.!_S8$\CQ['WE*W4?]4^/A M]B2``@6:7W0/[3<4O`>N]\R!;CYH7QR/\7<$?.(A^%(`;(,""(&@'V'7LS!\ M".`1X`440!+`"7`+_.(]`8X`3[VU`,X@+XC-4P?.$9QXTSSV7APO^2?\0P%\ M_(AZJ@&EX`I/0D`1S)!Y'U!_W<'I'SEP)##]V^B9]B@"5KTPGS`PQX?A&^+1 M\#$ZW5\\&A[TSR.GVH@RF<68!$<]WJ#FOY5<0].IE M\)!_4[Q*7W[OHJ?&,^6A]LIY?;]$WZ+OVV?8DPWB.0H8/[]B'I//Y'<&<`-, M^!YZZ[]S7F/0'OC;2PE*],!YY$!=WY(0+;C7&_:M],X"/CRIGXR/A^?@,_2] M]-1XJ#Y3@;./GI?T\_N=!#)Y#CRCH&I@7D`1_.75"5!_+ST)GO\O=)#\0PV^ M"!*!0[PDH7*O]C?/B_\A!,5Y!<*H7W]P@<<&<.))\.)Y8T&B7PZP`+@'W`]6 M!5$`F[T[H`-/->`/'"44^(![Y#R^X+K&_D?;4^6Y$Q`*/P$A05,@^'?K>^=Y M]HIX!+R%GZ2/@*<:>!%@!>``WSTYH9*P')CVV^9Y`"]X&3QJ(`U0/V@!/`/D M`40`X$$PGI9P/OCQ&PGD!4\"6T&^X%[`DT$T[\P(0`PZH<9;`/(`F<"4Q+[W\)/N*?*PQ=N M":-Y"X0]`$O0J"?CJ^;M`XV`DK]P'X30A)?!@^!-\R2&\KP,7E(PLW`1F!24 M\X*`G4&*GCMPFF?K(P/@^HA[G3Y$X%"/KB<;K#?@]4Z`%#V<7Z0006C/2_:% M\5![?T$!'_)/9[@!'.[!`J\$*[VAG\T`LM?#&^(5"R^!8C_3'NR/+Y/\)]PB`,D'CG^_OG6<.-`SJ`KF%GAJ/10#9^^*1 M`R\":P!\H%ZP3[@;$`5."2&"PS[.835/-CA^H`V*!5@$:\!Y7AQA+<#%PP!& M^B1X,,(,WB_AHN?`&^BQ"(=XV$,ZWN#/C+<5K!$"!U>"H[PR@)@0?G@4)`)& M]:R"U4*3X0.PMQ<46.EY$CYX2('!@-SPW(?Z6Q.^"P`$7,*_GI/OL5?.@^]5 M"OIYDSPK03EO,/`Q6!&>"/N#.;V+`*;@CK?,4^3%^<"'0[S>(>/00!CY0Q"J M\12'VT/#H&/@VX<4A!L*\2YZ"@#9X,BAEH"$U3Q57A6AC`)N$.6(3CQ$@@C3`=*$>,(2\2S(3`1P%,(M!$V M_6I[Y4"DH-H0#0#7&_JI"I%\*(!D@EO/#UCQ8_J%#=]\\41B7U047`BS/@] M$U%YX;X%8#D0ZR?Y"P^P"%Z!,S\ZWE2@H/>_4Q>6]C:&1@_=."E M"Z@"J`'FWY[OJ.<0O!46#X6&)D"EXFB@%(/Z0QYN"*N*`#PM(*TPM[@_#!/T M#_."7CT%@#U/0Q`8L.)U\8J(J[UV("+0!'A2M!8T\B9YDD55WG<@0)C1:QJ6 M!(J$7<#I'V]/`<`D]`-F]`Q^$"[:8%SP:1A+W`"*%S&))($)8?O@/9C$4Q4* M%!N+*[P18>(AW/?=R_W!"Y^'#KSC(-L@=C8:$#A M_HJ)[KZU`;RO*H`]<#[4^PJ(^+[^G5#1')@^_.#-!VT(%+Z)(5*Q[T<5+"EB M!4V&<;SS8(9`C-C5VPV,"=]\/@$2X0R`/G@IM/R1`3"*T$49@V-PP^=C_`-: M_M![;CS1HO.,#)J M$'-\?`-KP:@PS(!U>#Q,/3\:3(I=/2$!$["]&#&%_D\)G(SQ">VC@&P[. M&?M^K,/Q8H@/ZG!J-]U,(GHQ.0I8<"0`(,"T=YQ4(YP%QQZ&<4/.W] M$]-^;\`L8ID0->AQ].^E_M")G<$$H8]OE$?0F^)-!,X`HD*=XSQ/CMC[H_5Q M_X2)?C_)P!FQGY=M^.`1$7P)![S/X#JQ[U=T?/RI&]&&UL9XHQV/G`=()`R\ M&I&$LT3U'KS1SPV.8#P;`@%A%4@8:`5>]LZ+5T.PH.SQJ$<&//(Y'A=^R4;8X]%QLYD(N]1/*!OQ!9> M]"*.$KSN8U4PC@=^+!,J`3N*F[]+($4`&I@=/`BZ!3#T" M`CU_'#V\8;Z1G#?)0_[Y%.>#9#PWWP.2*3@G0/W)$2=Y24&=X*SPS==6H#)B M('N/,#X%7ZJPF`>/*.T5(#.$;4`9G]IP#]`4H"56&_V*P$/AWC1/LBA$S.JM M![6(M#VF()Z@"AA.%#MJ]*2*6`&T(]41TQ<@A/#Y%AN(X$2IX)#Q1EAU).M5 M#,N$N(.6X@F/@#<%"#22!]1[T,'-X(.Q[^A\1!/F%BE\;T%!X)SA/K`7P"7. M\XH`6``H@!2@")!B6.%M`6@`F4::'MK1G?>_:S0V`1Z-,($IP,7P/A`N2^() M`2`(Y\?$WV5QJ%<2"="X6!F^']4"(X#POTN?`:R$J M`KV"?KX#WF41)M@-E.H]"MN/;<+S%UZ/Q(=0Q!RZ\?*%8\9DG_9Q*HC;FQA* M&#L-]8@,60W`)8!AA`YN&*>#40"8X`[/@5>"["A.`CV1S4:HH+:1!H#[>PHR M(HF+`\$I'NT0'%A`=`VA_A2*C\3`GOIQ+CC$@S-*\#2`1<<48"F0>>@]].9! M'2^1@+X](`60;&A_3`@:_AQX&L!TPJ0@!:C@>ROR%R<%<\4N81DP?M@('/*= M_3"#W$.YH5^F$+@8@!#J'R6/WT;A8`$O"1`33#]Z(RF2.4$](1IP8+A]U/"M M\#2`AT&-I.@Q&@GKHQH2!GU_\\(;WWUPY(=1+.>9!-N.!TBYX1G#*0@CM/SA M`:"!NT.`8SBR'J'NT_>A`&8`QL0[X[0GK=&T!8>_M1XYX%^7IJPP+*`/P#Y<(UT):'WU2X[!FQ!U:$MT+`,;#WB8Q)"B$3#\B M(K^2YD'BGWZ0IVAR-!/F_UZ$.$%O88CQZ$]C@"G\GUX)1O@6CY\TF*\MH`@CW60;7/':C*,RR2 M!):4-TIYWC"R'EBC'`N8&\5_L3TWPVSO=H!-).!M$MM_/$+)).IPFG>8]`J8 M(*.)SL6V(D"1F(?LFRLJ$-]\S$@XI:]PBK>"9#!J((>#FTBK'H>/F))]A`I* M_TAZ9<.MW_317.@L1!?"&I6`IK[18:ZO=(B,1!'*$W5]6#_0W]DP0_E1Q/ZE M"#E<7_7E=01:G\>U)V M_D"1D4?+XZ#RC'%OQ.9]^U1Y$#S48=6Q3]F"I/ZQ]<*+8D4M88#+7MROB^<@9".@+,]\B#^C@9E/YH<'P$]^]S:6"`?X8.(Q!#D:.#C< M&U6%B#X/Y$$0ZI?QBS)2*U^!>TK#8*`2@RB9I$Q2 M'B%[^,7Q7!*/"RBR#`W"\#!^TTL6GR[04VBLI`&Z*:>*![P#H)5``7@&6.D= M'U^2KT?'HU=O0$GAJTR&^NB`#SV5($PQ[1=JK##*\AZ21D"R7]-13DE&I";2 M!N&2.<;Y'40`+!#O*QX4#PYZ:X.4`)#1)="_D^#!(OM]]S]1'L!O)("DW/*% M1V*/YSS\86"/K!?"4^#9(7>`HD&@HXG/\6?PTUY:$P^*V<1LI3-2<4EQ=#@V M+M>3H<'#WX2Q"GGP`XG@!9Z#*X4-XPZR!_G%^T$>(:N-,LBYPWCNX%>/5$=L M&(\`'<8/(R#P[`=?3.X9#YN1>\H5I<:/YS)`O,*F4'1H!#Y*KP@[=)G-\)!:^$[$K3GR?OAAE3S&'Z M%ZJ0]8B50CTRB"D==`)$`6Z1[CS0(3J2/$I^'_F5#\,E(410GL@01$A. M\S]^ M,?V`1D'4X&'RBJFG9"O&\>R,H;USWB$S/@@(?#[R&RV55$/.']F1D\GG.P;& M\?*9Q;P0(%\(6XFXW!`&"W.$BK[*0)I2-4#':Q7.\SJ51L?Y8GTQQN M#.,$:\8`WB1O1#E/9%$Z)C&![T7$HA93&HB.9!(^,X\&@$"HGU?O1ACF&UJV M_H9^20"NH>,1MYC)3/39\;9]J$"X):#P>6CO(P3Z!8=\14H)HMPQ2CFDO&=J M(<6):;\YIM4O6]@3?`5^"C<$"4I4XHPR'2D_%&<^]5Z.`D(S168//AD.]#J\ M*MF--\N"(ROS8'GLZS?V'16#*<=U?&"EV9=KVY0UX@SC3+C`[2 M(@%X/`;<%J@181/@"OU!-&'!F`^X&$8"./*=CK(P%Z M%?IZUKVVX:D0H0BA=`%V!.6/>`!IG]8O0PG/D_`%]@B7*[SCH`(@.=A`66WV M^CJ;0DP>I`]2TFC8C/&9*FF$8T6GG@EQ%#A^]#TR)-$-/@;47U(0_A=R#.R9 M&N.;BD4U7AASE(D"N`*4!2L4=<5^(UJ3'XC91$H4"/J"34S/)J,QM*G!V^"= M`E]Z`L799FFSIH>0U"):+9N-K3WL90&1.9C$PVDB%-E\"4;UP!BP2'DHC!W@ M-CV*M\N_Y3UQ+)!R=.#]$65\PD=3(!%PRI@?I/X)%OV+LP$&WODR65E03&46 M$,T"K$=@9@6OH$>=O&'&^&20>I,"!E-B4(#>K&5&`7:01\SPI@L/.5B#?'`B M.44$';[H(#Z2&TDV)#\N^@I\!,,XGCKPG-G.-%PB`I^;-\/]HU7/1^A12.*Q M!SN/O$NT8T:/:XGCNVT2.?N/OHZ`WI93OS#`"Z+),L.<&\;/9J-Q0SC:A![. M'066S,.YIHSO=DDV_$9>$/&`GLC%9K0RF\E.G%8"^=J`Q,>*IFP0Y,!ZY%[Z M&L<`FLKGX<,067K%Z.%W%X?DZ&I?+0Q-C)["1R`ZN1J$?[8>SP()#_ZPGJ M)@][!D&ZX/VQ,G!Z9!&4"3E_F$#;`1&86,R^1?KO.SA)!V0DT6IG].RZC=DW"Y:!+Q[D3_IY1+2XOAPW!/B M%AF9A3\.P830+&`O!$Q^,#V=Q,,T9#+3N>B'C/;E.QV#-TUM9$LS[:?'1$L2 M]JJ-,S["@-^S.ZY*U>,0[P87\`R#*!EW"AB.BN96,S8(F@PV:G8^^R5 M]JJ;U$GMI'Q2;F@TM$)N`K^%&KV]GG=3#G.#BDRQHAN3#!CDA%K*,/>44,7\Y<73IHGC:Q#P M.)V`LD'588&13)FA9`\6+Y,`7,XS1@%1=5CEA&)Z&$&,7;VRIQ\0Q!?'*SOR M,\F=84EXHQJOZQG'9'66&S67\#V.P%H@(LC)Y`O:)YV"7\V*(UC0]@?\LRCB M`12#X,*7)2%RBD?\?`6B*&^3Q\S$XA>3[\CC1'KV,Y^+@$X#XC33(4BR-$:N M$$>66D=K04&R58CJ[`@X_BR/$<=BI;[0#MG56V'J&YV$\,:JH[#R7:E<;#70 M!B^;1`22GHLP[3A+9`M4&XV"J[U&)<.`>1@$(%IZ-:J)1@`)GOH/@QG`:[QY M'7.5I#_[7G;SZ@E,O`MX_UZ89,@O8FI0NTGZ"RS&*LT"4$=*X/+W!I4I0CUDB8`,4"T^$64'[8$=R=QAU3#!V M%Q<#_\,/GA&@@L<-5#Y"%*V::#XYP!D@/-`CJ!/>#MH`\`$SZ%>0MNE`1'N2 M#-T+TT0Z01E1[6G??`5*-Q6/.+PB@$H1^Z=\5%AB\SBQY&O:!1^)RTXOH!G16D"])/&% M%/D,MLM"(O9O6!EL#!TX*H^1.<+8P2DQ;H#.,P*H\B8"Y`$\`)?SE`E0)#@R M^>:/=\":93C4A6DG%8MHOZ\?/(R`6+0.;+((M'PZO3#NJ M\4J+-KZTY(F0"^A;/(5>,^V6_D6Q8D31U4FGK`D2^T2+S4U,GW`/5^E^9$J. M!D623E`KXJ-PJO=D-/?1&`V8J#]89`)SQY@1<`G\.O!W%X>5`DN`@FE-]/J) M!3"1[D+.XKBJT#'*&5/>:@&V/NM M%'8SJ+\%H0H`!\#T:S6B`&``.H!,`PL`.9II*.,Y1D&6&D#FZ*-A.9H5I M)!UX/8`5'CS"-]IIP#KF116C&DD)7GQ4@D<<#0?&(Y-XW=%CHD3`G`G3^^NU M/6V&($>DXZ\2QV<4I'U^/661Y4I-*"`0<]G'?(V*'FV2!DBX:$!+OQDZF.?% M1QUX#E*R:$O`_G<:7>'M1S&;9@D/A;VOB:D`2&\2,5$`1LR+)"7O+MH-7`7B M1=FCV5$W`7000!K#.R8F`02:SD0B9*_3L1F2=`P&\FB.]"W:2/./@%`ZYFN4O"F,H!5X26FCT4';J(X@1RIYP^L% M2`EX3(!&H5?PD(G3?'1R(^=[VS[OHR@TQO=0Y#[:1/N+5L))Y`?O";!,*)"* M1T62U4`BX"DOPX<0]`9B`#V&&L`T``M`#<"2U$F6(GFDWE$JWJ/TS=C@,T-2 M`D.E>X`8P*C4,:H630.L`&2EI-+-Z%.2GC\Y)21A&=T#T,Z9[4/9H"H(_6"?Z72;S>J'YT_;]T;(J,$@VH$N%8UJ&+..9@`-H*P4.UHMA8^N M^6*EZ%&S0`0MB:6\^*C:KS>Z)+TR.`4A(PV M*]BE#-.`*6)T-2`O90&X1:NETSR$*3WO5IHO];8`,)&,_H6VB9KATW(FA9]'I%T^A(=-97@M"'5$R'9C*2F<`*5.-*5IO21HG8#WV M2]FE/5-W:8O49$HP90'@3#&F*M-Y7G4!AK M3-=\A[\EJ:3C8RH7C)D:1ML-4].!Z6+4:IHQ59IR3,^E-@&?Z5'RE,?]$P:3D/%KDDI1-\2:%^8M)!)QL%WK&3LC>43,><1,DG'D:21@H*K0E^ M^R:,I:/"*G=M.IJ:F`#,`G97K4 M`O^D_KYF7E#@/$J==&/N-P6>QY#RRZ/IAS5C2*U>6 M`66D=0"S90J`#I`!-)>FRU!?LXU2Y7[P/J"D[`',2TL#/TU6I5D`KU<[E7&& M0^V*D$(IZ.ZT=]HF#%C0(%&EQT0\H\^J)U`#F3K>*(%,000MB-(`^%9IN&#>G.=)-A%.0>$H`(^!9 M`9.,W<=,GNP4B7)OK)V&1Q5X&@*P`?2TU>@[72GL+M1;?;QL89T`/-*"N#?. M04.@R;\80"!ODD=C`#M:^S".S4QII*9/04H)]"H:0A5XFP5&Z!7/J[GVR^T] M\=QYY+XL:+208=@+93HZ1=%]'%$4@/IO*KK`K-^!`'ZC$$RV@221*YH`S>&M M!KB,>CU@H@M3*%A%B/DM$V$"V+TDP9Q1%YFA3.B)3VF4?K]R9UY0AS?%4P*X M``)Y<3U0I@.O,9`"V&"64:V'+SYYWL/SS5=87(*>47EY8\LXWIDR\0=O#/"= M4;U]3-$S:JC/Y&$PZ&+^^LZH>4310GB@BV=&M8J!,)]X($F`7^3QU+5 MRXB6>A/6XQ;`EYB7).#!#*0"Z02A'R72!:`\M*)"2MUZ6M3L'Q=UFN=%14Y. M^GB"!;Q`ZAX1D$K&]!H&!1(%YD12J,B/=$!(I>;E_P!^P<4RJ@KRI*A')"5N M"=1[CU1^WAE5_)??5"D\324#=P`48M*PX.GI4Q)D!NZH;U2!:M"S1`!QS.O= M404#>52`WS)0,EE$;*3V4R&I?P`ZA0T@6#@9W/;9 M`79X:KR@*M%R6H+Z>_DY4=>%5H6WP-1@KFC=\Z(2^M1XB3Q_8*'PB:?#(_0Y M\'YX_DP.X1.O`$KHF^9=`3:$08'4H]0Q@T<$^*+6]N"I`3SRY1WU@/=(;2L< M#$.6M,(?8-VQXY=$J"P$"U.+?@-`IWTRIZI'S2N>^>*/2@*='CT5N5<.=%-F M^Q8&^SQN)\"OVC@8&.@%"`D#/[X[JI&0,$`'V.$5!X2"3X")918O=!!YS.!5 M\="0*SPF`#&3OK@!#`/85&>!C3?G9D&/R6^4Q!-J$-L8DWBORJBK7,Q6&_CYZRD?``$GT(%C50TZ" M]N"I>,:+Z@:3!JC*BPE4'>,))X`R(=213I@7M`*D`*"4.4$8Y%NR(9`7#*J. M0S-X1,M,@R=!NEH#H*[Z\(!X.,&QJO)1A^=.I56&,FFAUKT@0'#U!;#$ZTZ& M"Q&J)DS!Z:*Q#1!-=326\2*-&LE\(,'S%@BEO`A\!_2H6L2P(5]U`Q@I,%A& M2T6J$%8&WD^0B->(A+"^`6ZK;H)J2A)/T*='!4^>^29YDP+>X)L/L>J)'+&: M_,:$XM4,WQF5QBI2M;'B&D%YFU6\Y3(5(S@22*]*%5L&_,[OI[(/D+H.!*0> M-L14Z`IX%N^,#>$A48PWE50R*GLD`P<(&*[@0AFK"K!O` M0P]_^S[E`[C0CG!V4/]E\*8`X8$UP))2FDI-A0T^\62E4[PC0!1OI_E/G&SV M'^VDGY8D7E.U[1C/G*G*1Z^I.LF@Z!;`!N!?K3D"6%%Y`M:K:`[/!=!6K3FN M#?R!>4$D@`N@!3`$X+1^]8X&00&595ZP`!K(>R,<6/.J<+Z]ZAW5KUJ8//Q9 M/"5X[CPHI2T2%QEI+/2U]LI\>M09J"$PLEI!W&#N(I,QOCXSA<(/S`H-'+,V M\A*'9E82*[A0S3K%8[-N$R6K",(X*SQ">4AG'54R_?"L;@`]ZSR/SSHI\+/N M^Y2'@E9!JN?/T"K!6[2F**-YC=:*Y*%5\D`;W*3F5W$A5=4;0*5U"2`'X`+4 M)SEX#E#!WF``$]DE?`*04\.;2SU_*PD$X.JOA!2B`:24XE/<`4:4@"=J;;7" M4U,&4\0XH]?QPRI2U:S.2#&`W1M5MV'C53QJ@(OHSI>Y:B" M]!1],%8U`Q*ED*G1=`(:!82";-86*MX2,*#(.Q&,":6,?$L40`Z@&[@56.$M M1J>!Q=3LWRQB!K`0P',<5U$`2@!":Z)`V!J;R@'<4&N,.51,(P^U!,#`Y#&Z M#_J,$;P6_$%7&^!'3P"7O@2.KD9/!TB M$S^=A;X-7MPU]EC"E%K:0P]^?TF"XT"33X@,/!<.0),'ML`-H8=U? M0&&5SLE):NE5!MF,*![8(T2CEE&^)Z-S@Y<#N%7H.OW%?3*PVR@HI\%7/:,J&8K]>KJ/^5.-#*'!8> M`B&264>98"@4_)@#U"*6'=FO5@X:Q/LU^'ISE;^"/OT+$U@5+/[5RHG+3`'` M.\RO4-0PZZ!4T\K2]"D2#'"",#V7@+B!C^+"DLSIF'/XND`))+*2)."&LESXF:/:.@X&S7^ M_'Z5=,T;G[-`E5?^LR;6-V6A4L`IQ*N2R3<%R`(X`9X``X$D@*3Q16=\_;WB M+W%Z=5'PY<#3.*@WS1,,"NH1[ZT;Y'/P7"P3@`JP"H6&;MR>VLZ M8^T$=THRI+LP<(HH-9QZ8:65?;_18^N3DXGOC(BV]T:HS$<[XI%O?JH7\)FN M`A>/^=AV86EO(AEQ#3_."C^QG,B+H^35/>G87,@Z'W`=]K^\Z$^3%TC;ZQI2 M9$6A([Y984>Q)NEH[?8E8--\)DGWG_[Q"$BT'#FT)4NO?8HIP#$O"0`%H`(D M`9X`3H!G;`&$""L45!4R^^S)X6]B$X@@6FVFF4.4% M8R-XUL3>9B`0[0@`+?ZQ0)>/0D#(8&E/",#DG)\B)2B)BTU5GY8T?`HIW5GF M"J6E^D;Z9471-0@!K!W6-*61*U";H12RY(EDO*+N+-U^F-(J(9SQ16D%U!%J-/6?ET#"8:"Q/A!?/(HF8&$$94!@*%+1@Y@V&(]6 M.I>B8];7GD>60IA;!4Q6,_VQ%=F4+)]2A9J195+R!P62AD7FWSI2N[B)K<8> M3JV)KL[)(+?3#EI;/$*N_V"%9P2)9_7UC`GW//,19B=$]C_<8JI10UAE+!%$ M%1N)=\%'(B"R0PK7+,XJ#Q6-'\6-8X"O#^EK/$.&4M5XJ\MX87#/#2F4M1,` M"7V-%\5+I1R2SKBD-&E*2A.OMU>0*"B3$_N0W5V4]CZDJSQ+J3413SFEDFJ(8-S0MEZ#$\^0D.0%@H:HSDVAU<$H`)4`:0`0=E)GGMU[_K&K`+$ M85FQ9@%AHC7Q1TJ(??.5]":&2%D*X*=RBAG3'`)F,L>EY#P/:-_/L0D>-%,H M89.#+('(J9R!0.!`Q4&R7C5XZDU?K#7/FG@:[>SU.$NRR%@U@^"1!!@I>.Z= M9$FPJTZ$9KGRZ)F7=0+B\#BT9@?F967S0[N@'(^.:`^14+]^H1N317OT/,Y. M)8*CD@$?[=(12GE/3?[%"7-\[L3QH@3O30!0#.`Q^3RBF;Y#;#)5EZGF#-/* M`1"+E+UUXORR(ND8F&J*)`5\DM0"IAB6.%J&]:%Z*(*H$LPU[-BU#?N&O=#. M3^FPJ#\[;(@`4JMZM=$F7R>C:2W47[&6#E"?985^",F0UKULYP9PVYG\\PG$ M0KEZ!LE_(B&1_HCC0PTZ8K^`Z4N$H4(T[6CC;!1L]M22X4"VY8(V)[N3[@X$3(7CSN*FDY73*-G^=&<2GK'30P7JDY5<2 M#[RASEC2*S4TN+<^-.[1-@FSI@8K)/<0SID$G!4*8'>I"459J1M@,>H":-J^ M18^)ZTB$HGTP]VD2L!E6/@V4XT6]Y0N6?<"V#-I6.7NQ,%)=Y#SO(JH\?$?" M(^),7EMHZ:^VPOF,M?4H$8WZ%S[$^L4'DCS"/@ M;/>U#UFV`3F4.ODCG2N:)\.&E@$.*-;S9JO*@]U:8P.N\=$,'H[1FFB[-==R M.'&V2UNLK%`0;_L]E=D*8&6D;@"E[0R`!>`&H`&P`)JVLDMDK>KV#5/(U/5) M-5.V'EFN+>O1#NMY+:XN3M>VC4X<'H93!RK?-=-^\E!2[U] M\%"@Q$*FX]/5S9:N23[P;YY;O]HBHK'[B M^%Z<"DX/)Q`60\L2H)W";5E_LL$9[2B60>N@A=`"]R:TSL2NIX56*"O+N\EF M\*H`FT7Y;`<2C[#.:_$=#/V-D@%5)[96!DEA%-)&3FNTS\%+;2VR[QFLY=': M:7^T7D!%[,R6>5BS=;3:<'V-Z8,#+I7D2SMCY632'#-Z\D)IJ%:2MH=XI=)2 M$16+J$I,JVZR0;GR!.#-0N&TY\!RWIR6YEFGQ08R-CV?N4X^K2X00UN7:2[V M]@"U3D!!+6DOB3=T+=0V,*$$7RDU+$V`#4O%:]0^8R&UI\GYZQV64HO&?<(^ M,:.8($9?'@XV$-NS9?B19+V`*UE8E.Q\UCG`R[6'LNL!2C>:C&;MMA6;'-P]?HN';^" M&(6UPT:UGB?12WF'5`W@`3BCNTG%X#'6R*",[>9.\YRUR-CRWEP4%DN-!<%Z M-%FQV-A]+C.6&LM3T`#"1H&OB`9Q[#SWAZJ"U<;21?NY\5Q(@4%7=@N.16`J M6\>Q]H9Z[((6':N.!>XM.K]XWMHB0#PVFYL7(#!:$\FU#DH-Y3XV72N51BUT\RUA-@ZKKRU:-MBQ*)Z M-%6T#L&B8_BV)>#)XRGP/(>:HP1Q:*^Q6*A]5+XF/3SRJ;C@U_1C175)J M`.&=B$W&K8RO5(JA_3`5,M\"KT&>9Y<0@M3+'CLD^!%9>NXXT&[8VWV*JNS_0-2_GJY] M!A.S4,+%K#@1M4O/S/%E-!E]CD=8HF0V[D>9M8+.#I&B(4YSH$;6MVN][,R" M\FBK%$#P+$D1BRAS+'*R/*F30ETW'E'W.&O"Y9?V=`M]Z]N`)"J/CA>;%4[^ M+FNSR02/IBD3OUJ>I0+>_=P`"M05I=:6R^E]^.=1`4NFYERE8\MPSNC6W3B. M$->Y.4#&83OQTH?7794>!(E]F[^@J__PHNF>S']:'MNU'44,+9ET>WG@=#R" M-)FTL]V(9)'4IEEU/-/6&G6L*L$F(W>W/+#2:^16(ON'LU""9CZ0:JA0G.:% M$A^E8DT,[3&IN7C.X\0B>+6[ND5X9>H2ZA?WDPO"'=..?4XP)$[22:C*4^_Z M!P&"^C^CZ+//*9E^=/#2!?.V=I>)5O1=P=>MB_PZ\"T7A:PK/!NNOM";* M2P5X*\\B;*QR=X'!4FOVE="[\WV@Q??->');K5YU5+$[/0OK4O4K3KV M_5Z[!T&M8D0RT9CLDR,L^\IY03].+I;/-&GH32B>^7Z"2SW%H$+7&RN[_>#U M1MD#0D&-9*L7!4#HBW:0_]RY!]TUZ3ATS_OHI9XZ0`6]43Y";WO+".#JW=$B M=`F]-]=;KV4@UYL!9/66>M%ZL$=KX@H`N& M\$I[;D[RP+-3DQD45/:*0WN]$]UGKWQ6VOMGG><>F1RPT5)%8&5OZ+@?[/M9 M*<>]DT?`[EM6$5B,Y"U*)CN`V[Z-8AT3K:L8/%Y^\G:SV<3>K`KT"[@PJ.%6 M)XV[@@')`%9@#!"3M/*59^"$^\@AWL'5UJGI#<$&!=.$PM?XX:V5<>IFS/1R M.A6*M%5^)SRU-]KK38;N:?NZA=X#J[:T*VH,3%[^(>=[5EY.:285YGNS!?GV M>KV(8\CLGEE6+P#\O/"E&'VPHKX/'BQ1CSE$+(C.&2&W(]$8KAW5QJ>#53+V M>'N!#TW\;N:2\@=U%"1B/H&,IU)6[2JRB1NAG>`U$\^'3(`I[G%VY%##V]`* M-!.^GDA#K@302KM`3'V6:$^$4]N7;+\780O1#.P5'0V%K-HD)KOAWGF`=Z@H(S3DIMH9!RR8D>5YCT$+\TQO%MT!3F4]CBT-,^N^E5P?K5KRC'$^;%<2\""YTUT40#(U?OCX14J` M:2VY_3Q(13TVY/$;-YN%(E1MD9-6Z M8>&PKUQ792QW:SO+=54:?FVY5DXL9TO@#YO!J\)>(PFQ.,V]+8(4IUL?/#=Z M8,V"<%G^HQ105;O$M>:^:F.UR5K0:U=46EL0#5328E^PD41=;>I5%YN#S+]B M.1^QA-,O(![@37HH[(/F!8F1[MYMKD.7GSO5Q.?2A?``]T88*`@W8O0#<>B>[6W@X*`+@;X/QL#1`"S>LT4%5V%;K64'+NJ+;UR M=+>U'UTEWCM6I`NN9<5J="^Z*-V(+"&6']O27=>^=-VUP%QX;3&WZHA2/'L. M9P^%_ZBUVW[5]2`#N6?/V. M\JJZ]=0>[9UV8F@G/(]6>GV-1%+$JU'0SFMT%-C"9#VE^<>#[">&_Z208"](9V7[Q<$ENG*$SO!7T\LL#-V>R<4?'Y2 M+)%_047R+]Z7I'D@C?%!)>V_J%WI(683S^$2N`MPS[ZV.=JP[:^TBLC*1&'" M1FL1[(-G,+04'_G_Q>DM$&)\3,9V9)56IHO5!#129A^&B%<@[3\O/.+O=@O;HMUG7RHPA1JXC>&" M">.:?T\6Y7@P&!QT;!1D*"^AX+W:[//6C)>[U M0Q=[\-UWKAL@#T"]U0.(8P&:M-!&KA48XEB;51M@$(6"_].'WEMPZ.@0K`># M@FV:@;^2I*>TP6?ETYO8_6JSP5(6`#;2FL@%C*HB88^]L,AR+SU/^)KHA45Z M!8B]"<5S+_%6/LH4'O0FA4N]O=$+&5(X(@P5'@DC\*;"JE-V'W@/!6P5-O9^ M\(;"6V'2*Z/7)#PV((>N.P.:!$[4X"O M^0Z!*]K^+,.PO_D0'@,W"CNE"L%.)$@O30O(10'4!Z*18X$6[^57H.EX5`=W M^`9X'=$[<#I!"R@1]@-G92F*+>$O,"]X9YO14P0R/]D)"(6\H`S27'(9Q@M4 M.;G!^U<9YP>2I(D)'0GT:?.KIJ,E[MCW01N4Q>%!<=&^:E^S[/S6'HO%'?)A M$P63FSW?GA<747GUC!4&?N>O,KP,HWTR#VNIA<+^?R^ZEF!P<&63\BNMA.%2 M#2&59,@@K<:!]?BP1?7-`>&[L5O<;)NVT`?)Y71.7> M:/&1&-B<`/<7!>#]5>!=83]XX5]SO/&#N,$RW%HSQC-<6 M2IVRO$WUZ]HP[7>@;0_2\):X:F`J`!L8AQ<##NG"@6W`'I*_9%_7IUOW@@)W M:*\*QT7N,%%W#GG>C3\>/0^,6^+!L&F7:%F#\/FQ:E/!J^"/K4[7+VE-C`6? M\9ZH,=U0L&_P#_RRU49N=CNDBE\PGFWR%QSX)'@^0L^/GD".(UQW2]SL966R M8D%`D5I9KN<55%SZQ.4Z1M.?E]?B(*YV:ZL7)*'Q&WSTQ/J) M@V^LFLQ&;&/V/)JDM0R[2_2;I-UW<+:0LL5Y$*:=140I^M))^ M\FB[A%B/(>5W"#AY;!\"5<.2O&`?KT+3YV#WR(E$T0TW:'G#4[S?\(,R[>NHI9*8)$B]0L'BL")PM!?=3`YW M<84$T\A$98'P.,+.87]G[P]FB M]2+%'MPQ\*U8*+N[L/_A#N>*CD=.ZE9XT;L41O26A4G&C5Z*WL\7T$O`X]"6 M3C7&)N)QL*)X(1A97/JY%W^;@DADL8B7#KBFW!2C`2J^?TU/WF-XUH=;M`2K M)0C0A>+,XJ M_LR`_D!IY=26F#O@7/_J3=J_KMH6QJV+8:#AW5WLC?I>V MC3V,T--@;(Y42+S$?0%[=-W`W]IL;B01^SBN[9"6:]W$7<,H,=U6WCHEEB_" M:P>RT$PO,:GR3WS8505[;!6[:.*?'@;4$RGI?$<>&82P'I+7L"VS!CLK1B/V MC.?"BL5'IP\6CRBM9&E^>-N;SU@2R+T1&%S->Z(VA%6V",ABGF>1;TS3-77V M_0*G1DF7+I*V*NN,;?DN,[6\],?+HMR7%4MA_/6-1Z>O1$WW(2FO(EN3773!EF@HF)S+PPR=B`K M0HV_@3PYPZBOE0D42#;><8W`7]GWH=Q3_*>"94H4`F4`(61WI0KOD%E"]D2" M!@F;I-U3W\TR?.L7H20&\`"^9-I^J&K6@9=,%027"8W&_,*ILX.Q?M$)H/+0$"Q/4!ZN!B6Z(&#?JT#7<-QQ[)`^ M:^NY]-_TXP1PL:O/'0$W8QG)G%-G;P<8@>GG!0$W8)NDF>3;X6N0`YP"_@"W M!_.U&]TB<4?W2`S231)KCC6Z)UW/\1.8UO<6GN-FCWW`)-@Y,>C6,XLZ_G5B MB37%!-CQJ<_8F>L^6`(G\;K$(=N1PT-RD_S3=1-/?MO(?EIX(AYTP`MQQ$H* M#,,)YI#J"J:NO%92.\BYZJCQC\E_7$XG\$^O> M`-`,>RXA+ORPA]G M!!F$`6%-)HX/ML@_B"!>MM>)SB4&`HR#!#.`0R'!T/N,.(5J6B.+`$[ M!O2X=CT%;5*VX*AHS&1>(A>I0F4]<4+V53HD']YR2GE#L\3AY+IC9?27N M:2'"0$0@;!V26ES'U`:2_?P&.D4^%>E#O9D-TW8N\)>MU M\;*]*T1=<(,@S7<2GE.>$/N5I;W!@,=3/0`(G3I2`B?%9%I!(V;P2*K>JD^N M&55ZD0'-H_2QH#=8\3KZE@F2,V6K9B#O;SR?32@ZEW^:L=>Z+YH6ZM<2!?"I M];#)FULEK5^&2I(J0?TQ31]YP-[/ANVP*WQ1501V\5;&`>4/GGOU?R?PI?-J M!FNST^617F@G?TR>R&SV)0H)ZKT/PG3DQ;LD.;ENVN$XFXT5@(D#7&S#? M^]X,A4PG[TD`+QGQF\GF4U.2_=EQ)PHR!%`J)1-+%_>?_V"JP"P5IKGUG(AN MD_^`1N977B$P3(@3W"V[+._&O]0,'T$8#,GV;-(J#^6(VTC-6;;[U\2MYS_U&*J M>S$AG@374-N7R)"?U9L4"%Q#"-`/'J'/\=@;E>6]FB5OK\HP0*O9X(>4P!?+ MFM>#%$$'*J[9AJ=K+B;:!5P"L.97Y:]9@M<;I5,@FX?-SH)B,Q[/EY=LMN$M MFY?"5%55HAI.==?;6!<4W&WK;OL#DI/!,^\5"*2O&[ZCT',W.Y*2PXE3*(8U5Z`CP%XH1Y$KS)[3.VA-.Z"N2G,0-9MFQ8GC.[ M;(.7!]9[;]&O-LL'@#H_!O@`REOU9Y'Y49MQJ`)2EGO)!\5(\$I8^"IQIBY' MBK^$[-DI7M-W$;L\+&W"!W2-I3W=K(M92EOK7![F_GR5ZUF@IPDOSQR5X>E" M_;`$'=!V)C0OLQL@Q.[)!2?+NT*E\Z(4E>GOT[CF^*#*S,.@H\Q1>0C!Q3E* M<-^!2\I(7YZY(%>H;.\-%NV0^,ZLYJ.9UK@;\!BD(=.Z#T/5'O`OLUR4%#V# M(^F7(DLY:I;``/J&H>;R5M_%\6.S+X56BLM%?N7XB?/%65R=F=?17[S76P[_ MCY$$O$4!,N+TU6R1H`ZG<P\K M"-^X\^'%+L7&_N?5L^\QD5VC3N3\\.LU:UQOE8JZ&+K&4`'P@/A3#H`X;`L0 8%.J.\X2V@$(AG]!0(!I$%"0$?8$G0*D" ` end From owner-mpi-ptop@CS.UTK.EDU Mon Dec 7 15:09:32 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA05769; Mon, 7 Dec 92 15:09:32 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA21151; Mon, 7 Dec 92 14:43:08 -0500 Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA21147; Mon, 7 Dec 92 14:43:05 -0500 Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1) id AA12334; Mon, 7 Dec 92 14:43:03 EST Received: by b125 (4.1/SMI-4.1) id AA03830; Mon, 7 Dec 92 14:43:02 EST Date: Mon, 7 Dec 92 14:43:02 EST From: lederman@b125.super.org (Steve Lederman) Message-Id: <9212071943.AA03830@b125> To: mpi-ptop@cs.utk.edu Subject: thoghts on Rolf proposal I am sorry to have started up this discussion and then not followed up quickly but I have been fighting a cold since late last week. (I think I may actually be winning :-) I have read Rolf's Virtual Topologies proposal and think it is a good place to start our discussions. Before I go into the details, I thought I would bring up a few "global" issues that came to my mind during my reading: 1) I think this subgroup is likely to get some resistance to inclusion of topologies into MPI1. I think there are some good points made for their inclusion but anything to strengthen that position would be good. 2) The document has two classes of topologies: general graphs and tori (including meshes and rings). My first question is how useful are the general graphs in practicality. I must show my ignorance on this and say I have never used such a capability. It appears that it could be very useful but it would also appear that it could significantly increase the complexity of implementing the package. Can anyone give some information here? The second question regards what topologies should be given special treatment. Tori are clearly important. What about hypercubes (Intel i860, NCUBE), trees (CM5) and even less common ones like a ring of rings on the KSR. I don't think (though I don't have the proof) that all these structures can, in general, be embedded contention free in a torus. And even if they could, if they are common enough, they would be a nice convenience. The general question is what special topologies should this standard support and what is the basis for the decision. More is nice but also more complex. 3) An argument is made for including topologies at the start since the onion-skin model does not hold because of the calls needed. I think this group should define what information and calls are needed in MPI1 to support the type of topology system being proposed. I think this will help define the complexity of the system. Also, even if the full topology system is not adopted for MPI1, I think a good case can be made for including the necessary calls as is being done for collective communications. 4) A small point: I have found all the references except the two to PARMACS. Are these available electronically? These are just some starting thoughts. What do you all think? Steve From owner-mpi-ptop@CS.UTK.EDU Tue Dec 8 15:42:15 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA27195; Tue, 8 Dec 92 15:42:15 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA23925; Tue, 8 Dec 92 15:38:55 -0500 Received: from sampson.ccsf.caltech.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA23921; Tue, 8 Dec 92 15:38:53 -0500 Received: from elephant by sampson.ccsf.caltech.edu with SMTP id AA27482 (5.65c/IDA-1.4.4 for mpi-ptop@cs.utk.edu); Tue, 8 Dec 1992 12:38:41 -0800 Received: from lion.parasoft by elephant (4.1/SMI-4.1) id AA16279; Tue, 8 Dec 92 12:38:12 PST Received: by lion.parasoft (4.1/SMI-4.1) id AA00574; Tue, 8 Dec 92 12:38:16 PST Date: Tue, 8 Dec 92 12:38:16 PST From: jwf@lion.Parasoft.COM (Jon Flower) Message-Id: <9212082038.AA00574@lion.parasoft> To: mpi-ptop@cs.utk.edu Subject: Thoughts..... Just a few random thoughts inspired by Steve Lederman's mail... I agree that a general version of a "graph" topology might pose too high constraints on an MPI1 implementation. HOWEVER, this appears to be a problem that research groups have spent and are spending quite a lot of time on. Maybe we could get them to volunteer to contribute some code......???? I have also never used a general graph in my code, but quite a few Express users have asked us for n-ary trees. I think this would suit both the CM5 and KSR structures quite reasonably. I believe that a hypercube is a torus with only two nodes in each dimension, so it IS a subset of the tori proposed by Rolf. I would like to see something to deal with the periodicity (or otherwise) of boundary conditions. In particular I think you want to distinguih between a mesh and a periodic two dimensional grid. Many applications need to distinguish these cases. I would suggest that the function that returns a processor number be allowed to return a "magic" processor number that means "there's noone there". If at all possible, however, I would like this to be a different number from the error condition because I like to see us able to pass it to the MPI1 communication primitives and have them know how to deal with it. If this is possible a lot of messy "if(this), else(that)" logic can be left out of user code. Jon Flower From owner-mpi-ptop@CS.UTK.EDU Wed Dec 9 08:39:32 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA10629; Wed, 9 Dec 92 08:39:32 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA10654; Wed, 9 Dec 92 08:30:57 -0500 Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA10650; Wed, 9 Dec 92 08:30:53 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA28376 (5.65c/IDA-1.4.4 for ); Wed, 9 Dec 1992 14:30:25 +0100 Received: by f1neuman.gmd.de id AA15353; Wed, 9 Dec 1992 14:30:01 +0100 Date: Wed, 9 Dec 1992 14:30:01 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9212091330.AA15353@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Thoughts on Thoughts... Cc: gmap10@f1neuman.gmd.de I would like to comment on the notes of Steve Lederman and Jon Flower. 1. There was the question of what the graph mapping is useful for. I have two answers to this: First, in the PARMACS project we had requests from users (mainly in the CFD field) who had very complicated geometrical domains on which they solve their partial differential equations. The parallelization of such (large) codes usually leads to so-called block-structured domains, in which each block is logically rectangular, but the blocks may be connected in any way. This cannot be embedded into grid or torus structures. On the other hand, the communication is mainly local (between neighboring blocks) also in this case, so a good mapping of the process graph on the hardware helps a lot in minimizing the overall communication. We have implemented the graph mapping on a number of architectures. I did it myself for hypercubes, and the result is near-optimal in most cases. I agree with Jon that there is a lot of theoretical material on mapping strategies. But even if at the moment it seems to be too difficult for some weird architecture, it is still an advantage if the user code contains the logical topology information. If a good mapping cannot be constructed, an implementation may opt to use just random mapping instead. After all, that is what would happen if the user did not specify a topology. Second, there are many different topologies that users might come up with, and you cannot have special functions for all of them. The choice I made in my proposal was to treat the case of n-dim tori separately, but to subsume all the rest in the general graph structure. This makes it possible to specify any topology, and it does not impose all the overhead of the graph definition in the special case of simple tori. I would recommend that if anybody finds it useful to have special functions for other topologies, that he then make a proposal how this should look like, and how it could be integrated into MPI. 2. Jon raised the issue of handling periodicity in a grid/torus topology. I think this is a good idea. The MPI_TORUS function should in this case be renamed MPI_GRID, and an additional argument (vector) could be used to specify periodicity. Do other people agree? Any proposal for concrete syntax? Rolf From owner-mpi-ptop@CS.UTK.EDU Wed Dec 9 14:10:01 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA18505; Wed, 9 Dec 92 14:10:01 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA17251; Wed, 9 Dec 92 13:49:23 -0500 Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA17247; Wed, 9 Dec 92 13:49:18 -0500 Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA27235; Wed, 9 Dec 92 18:49:06 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA01554; Wed, 9 Dec 92 11:48:10 MST Date: Wed, 9 Dec 92 11:48:10 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9212091848.AA01554@macaw.fsl.noaa.gov> To: mpi-ptop@cs.utk.edu Subject: ...and yet more thoughts... I would like to comment on Rolf's comments and generally toss in my two cents worth... 1. I agree that grids and tori should be handled differently. As a user, I would like to see some sort of error message (or at least some condition I can detect and print my own message) any time I try to communicate with a non-existent logical process. Any time an MPI routine can inform me that I'm doing something stupid, I'll avoid hours of debugging. 2. It is possible that a user may want periodicity in some dimensions and not in others. An example might be a global weather model. Often the polar regions are excluded to avoid singularity. This type of model is periodic in the east-west direction and non-periodic in the north-south and vertical directions. Maybe it would be best to have a single general-purpose Cartesian mapping routine and specify periodicity in each dimension instead of having two functions (MPI_TORUS and MPI_GRID). Here's a shot at it: NAME MPI_CART Arrange the processes of a process group in a Cartesian grid structure with n dimensions. SYNOPSIS integer function MPI_CART (gid, ndim, dims, boundaries) integer gid integer ndim integer dims(*) integer boundaries(*) INPUT ARGUMENTS gid the ID number of the process group to be structured. ndim the number of dimensions of the grid. dims the number of process per coordinate direction. boundaries the boundary characteristics in each coordinate direction. DESCRIPTION The processes of the group with ID number gid are arranged in a grid structure. By assigning neighboring positions in the logical process grid to neighboring processors in the hardware the system can optimize the locality of inter-process communications. The number of dimensions is specified by ndim. The number of logical processes in each coordinate direction is specified by array dims. Array boundaries specifies the periodicity in each coordinate dimension. If boundaries(i) is set to MPI_PER then dimension i is treated as periodic. If boundaries(i) is set to MPI_NPER then dimension i is treated as non-periodic. If all bounaries(i) are set to MPI_PER, then the topology is a torus. RETURN VALUE If the calling process is assigned a position in the grid, MPI_CART returns the total number of processes in the grid. If the calling process is not in the grid, the return value is set to 0. A value of -1 is returned if an error occurs. I'm not sure that the constants MPI_PER and MPI_NPER (or MPI_CART) have the best names. Any ideas? 3. In Rolf's parallel Poisson solver example (p. 5), array dims(*) is set up explicitly. It would be nice to have an automatic way of distributing processes among dimensions so recompilation would not be required to run on different numbers of processors. An example of this kind of utility is Parasoft's exgridsplit() routine (KXGDSP()). I'd like to propose a similar routine for MPI-- basically exgridsplit() with a bit more flexibility. This routine should be fairly easy to port since there is no machine-dependent stuff inside. Here's a proposal: NAME MPI_MAKDIM Divide the processes of a process group among n dimensions of a Cartesian grid. SYNOPSIS integer function MPI_MAKDIM (gid, ndim, dims) integer gid integer ndim integer dims(*) INPUT ARGUMENTS gid the ID number of the process group to be structured. ndim the number of dimensions of the grid. dims the number of process desired per coordinate direction. OUTPUT ARGUMENTS dims the number of process per coordinate direction. DESCRIPTION The processes of the group with ID number gid are divided as evenly as possible among ndim dimensions, subject to the constraint that all processes in the group are used. The caller may further constrain the operation of this routine by specifying elements of array dims. If dims(i) is set to a positive number, the routine will fix the number of process in coordinate direction i to dims(i). Processes will then be distributed among dimensions where dims(i) is set to 0, subject to the above constraints. Note that an error will occur if dims(i) is positive and does not evenly divide the number of processes in the group. Negative input values of dims(i) will also cause an error. All elements of dims(*) must be set to 0 for completely automatic process distribution. When the function returns, dims(i) will be set to the number of processes in coordinate direction i. For dims(i) not set by the user, dims(i) will be ordered (MAXIMUM, ..., MINIMUM). Array dim(*) is suitable for use as input to routine MPI_CART(). RETURN VALUE If the routine completes without error, the return value is set to 0. A value of -1 is returned if an error occurs. EXAMPLES integer ndim parameter (ndim=3) integer gid, dims(ndim), ret, dummy, boundaries(ndim) C Set process grid size do 10 i=1,ndim dims(i) = 0 10 continue gid = ALL ret = MPI_MAKDIM(gid, ndim, dims) C Should really do error control here... if (ret .ne. 0) stop C Set up Cartesian process grid for weather model example above. C Dimensions 1, 2, and 3 are East-West, North-South, and vertical. boundaries(1) = MPI_PER boundaries(2) = MPI_NPER boundaries(3) = MPI_NPER ret = MPI_CART(gid, ndim, dims, boundaries) C (etc.) Suppose numprocs is the number of processes in group gid. Here are some examples of how MPI_MAKDIM() would behave in the above example: numprocs = 27 dims(1) = 3 dims(2) = 3 dims(3) = 3 numprocs = 33 dims(1) = 11 dims(2) = 3 dims(3) = 1 numprocs = 512 dims(1) = 8 dims(2) = 8 dims(3) = 8 numprocs = 1024 dims(1) = 16 dims(2) = 8 dims(3) = 8 If dims(*) were set as follows before calling MPI_MAKDIM(): dims(1) = 0 dims(2) = 0 C Restrict number of processes in "vertical" dimension to 3 dims(3) = 3 The same values of numprocs would produce: numprocs = 27 dims(1) = 3 dims(2) = 3 dims(3) = 3 numprocs = 33 dims(1) = 11 dims(2) = 1 dims(3) = 3 numprocs = 512 ERROR (512 not evenly divisible by dims(3)) numprocs = 1024 ERROR (512 not evenly divisible by dims(3)) Any comments? Is the extra flexibility of allowing user-specified constraints on dims(*) worth including? Is MPI_MAKDIM worth having at all? Tom Henderson From owner-mpi-ptop@CS.UTK.EDU Wed Dec 9 15:39:49 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA20328; Wed, 9 Dec 92 15:39:49 -0500 Received: by CS.UTK.EDU (5.61++/2.8s-UTK) id AA20006; Wed, 9 Dec 92 15:32:23 -0500 Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA20000; Wed, 9 Dec 92 15:32:19 -0500 Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1) id AA07951; Wed, 9 Dec 92 15:32:17 EST Received: by b125 (4.1/SMI-4.1) id AA04444; Wed, 9 Dec 92 15:32:16 EST Date: Wed, 9 Dec 92 15:32:16 EST From: lederman@b125.super.org (Steve Lederman) Message-Id: <9212092032.AA04444@b125> To: mpi-ptop@cs.utk.edu Subject: additional thoughts A few thoughts: I have thought about the definition of the torus given by Rolf and I now agree that a hypercube can be embedded into it. I was thinking of a torus in the less general and more geometric sense. Given the fact that you can embed regular graphs into hypercubes this seems like a general enough topology. Some of the latest discussion seems centered on whether or not it is "too general." As Rolf points out, a grid is a subset of a torus where you ignore the extra link. If you had all the hypercube connections, then this would not be a major issue. However, on many real systems you cannot embed the general torus or hypercube so that each logical link gets a contention free physical link. In this case the algorithm for placing the logical processes on the physical nodes needs to decide which links will get one hop contention free physical links and which will get physical links that would require multiple hops and potential contention. Thus, being able to specify important topologies that are simplier than the tori would allow (but not require) the mapping algorithm not to worry about the links that will not be used. Given this idea, I think that grids are a useful concept in addition to tori since they are used with some frequency. Do people agree with this concept? Are there other geometries that should be given special recognition? I still have some reservations about general graphs because they may scare some people from the complexity point of view. However, given Rolf's argument that a random mapping can always be used then I think it is good to include this functionality. It allows for any easy way out for those vendors that wish to do that and still allows vendors to write more intelligent mappers if they can. It also allows for future research to come up with better heuristics that could be incorporated. Along this line of thinking, would it be useful to include weights in MPI_GRAPH? They can always be ignored but might be useful for some mapping algorithms and a new algorithm might be able to effectively use them. A value of zero would be given the default weight of one. The negative I see to this is that it takes up storage and adds some complexity to the user. I think it might be worth it if others feel that it is a feature that users would like and might be used in some mapping algorithms. What do you think? I think it is worth while to support periodic boundary conditions. I don't have a strong opinion yet about the MPI_MAKDIM routine. It seems simple and can be provided to all vendors for inclusion so my inclination is to include it if enough users feel it would help. Steve From owner-mpi-ptop@CS.UTK.EDU Mon Dec 21 03:27:57 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA07780; Mon, 21 Dec 92 03:27:57 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA21765; Mon, 21 Dec 92 03:27:35 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 21 Dec 1992 08:27:34 GMT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA21757; Mon, 21 Dec 92 03:27:30 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA11139 (5.65c/IDA-1.4.4 for ); Mon, 21 Dec 1992 09:26:53 +0100 Received: by f1neuman.gmd.de id AA11153; Mon, 21 Dec 1992 09:26:23 +0100 Date: Mon, 21 Dec 1992 09:26:23 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9212210826.AA11153@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: draft meeting agenda Cc: gmap10@f1neuman.gmd.de Based on the email I saw so far on MPI_PTOP, I gathered the following points for discussion at our subcommittee meeting in Dallas. I tried to order the material in some logical way, but for the agenda of our meeting we can of course rearrange the points as you like. 1. Do we want to add functions for grids as opposed to tori? 2. How to handle periodicity information? Is the specification of periodicity per coordinate direction a good idea? (suggestions for syntax?) Is Tom's proposal for a function MPI_CART okay with everybody? 3. What about including functions for handling general graphs? - is the inclusion of a more general topology than tori or grids a good idea? - is the difficulty of implementation a problem, or does it help to allow a random mapping as a last resort? - is the proposed functionality sufficient? Does anybody feel we should include more user-supplied info (computational weights of nodes, volume of data traffic along edges)? 4. Should we introduce special functions for hypercubes? As Jon pointed out, they could be expressed as tori. Is this sufficient? 5. What about trees? 6. What about more esoteric topologies, like rings of rings? Are there any other structures people would like to see included? 7. What about Tom's function MPI_MAKDIM which automatically distributes the processes along the coordinate directions? 8. Should the pid inquiry functions return some magic number, if there is not such a process (as Jon suggested)? 9. What can we do to convince the general MPI committee that virtual topologies are to be included in the standard? 10. Do we propose to include the PTOP functions into MPI-1? If not, how can they be based on MPI-1? Please check whether all the points you would like to discuss at our meeting are somehow covered by this list. If not, send a note. I will send out an updated list on January 4th. I wish everybody on the committee a Merry Christmas and a Happy New Year! Rolf From owner-mpi-ptop@CS.UTK.EDU Thu Dec 31 22:14:03 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA14662; Thu, 31 Dec 92 22:14:03 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA12437; Thu, 31 Dec 92 22:13:48 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 01 Jan 1993 03:13:47 GMT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA12429; Thu, 31 Dec 92 22:13:45 -0500 Received: from carbon.pnl.gov (130.20.65.121) by pnlg.pnl.gov; Thu, 31 Dec 92 19:09 PST Received: from fermi.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA21172; Thu, 31 Dec 92 19:08:30 PST Received: by fermi.pnl.gov (4.1/SMI-4.1) id AA11537; Thu, 31 Dec 92 19:08:29 PST Date: Thu, 31 Dec 92 19:08:29 PST From: d3g681@fermi.pnl.gov To: littlefield@fermi.pnl.gov, mpi-collcomm@cs.utk.edu, mpi-ptop@cs.utk.edu Message-Id: <9301010308.AA11537@fermi.pnl.gov> X-Envelope-To: mpi-ptop@cs.utk.edu, mpi-collcomm@cs.utk.edu Posted to mpi-collcomm and mpi-ptop. I have just taken the archived discussion from netlib@ornl and not found anything more recent than december 15 (collcomm) and 21 (ptop). Since I asked for my name to be on the mailing lists and have seen nothing I assume that things have been quiet since then. Al Geist's proposal (Dec. 5) for collective communication and the reasoning behind it seems to provide a resonable starting point for the discussion of interface and functionality. I have only a few minor comments in this regard, but given that the efficiency of collective communications is critically sensitive to hardware topology it *must* be essential to more closely integrate the definition of process groups with topology. I restrict my comments here to this subject. For example, on the Touchstone Delta efficient sub-group global-ops would suggest that process groups map as best possible to square sub-meshes, on the iPSC as sub-cubes, on the KSR as sub-rings. Currently, if one's interest is in performing efficient collective communication in subgroups, there is no way of performing this mapping in a portable way. In this instance one might want something that functions along these lines Create NG process groups with P(0), P(1), ..., P(NG-1) processes in each group and assign each process to one of these groups so that collective communication within each (and perhaps also between all) subgroup is optimized. Such a mapping might also be readily accomodated as a sub-partitioning of an existing process group, with the default being ALL. I could envisage writing, for instance, a fast-multipole integration using this functionality. Comments? Robert J. Harrison Mail Stop K1-90 tel: 509-375-2037 Battelle Pacific Northwest Laboratory fax: 509-375-6631 P.O. Box 999, Richland WA 99352 E-mail: rj_harrison@pnl.gov From owner-mpi-ptop@CS.UTK.EDU Fri Jan 1 11:53:58 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA16856; Fri, 1 Jan 93 11:53:58 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA13825; Fri, 1 Jan 93 11:53:48 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 01 Jan 1993 16:53:47 GMT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from msr.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA13817; Fri, 1 Jan 93 11:53:46 -0500 Received: by msr.EPM.ORNL.GOV (5.61/1.34) id AA04566; Fri, 1 Jan 93 11:53:35 -0500 Date: Fri, 1 Jan 93 11:53:35 -0500 From: geist@msr.EPM.ORNL.GOV (Al Geist) Message-Id: <9301011653.AA04566@msr.EPM.ORNL.GOV> To: d3g681@fermi.pnl.gov, littlefield@fermi.pnl.gov, mpi-collcomm@cs.utk.edu, mpi-ptop@cs.utk.edu Subject: Re: groups and topology. >I have only a few >minor comments in this regard, but given that the efficiency of >collective communications is critically sensitive to hardware topology >it *must* be essential to more closely integrate the definition of >process groups with topology. >Currently, if one's interest is in performing efficient collective >communication in subgroups, there is no way of performing this mapping >in a portable way. It is critical that MPI be portable even if efficiency suffers. Portability is primary reason for having a standard. Efficiency is important and tightly coupled to the implementation on a given vendor's machine. My feeling is that our MPI work should specify the functionality at the user level and not dictate how MPI is implemented underneath. Mapping is the key word in integrating topology and groups, and mapping is not defined (so far) in MPI. It is related to the spawning and placement of tasks. I can envision some implementations allowing tasks to migrate to improve load balance and fault tolerance. This greatly compounds the mapping problem, but I don't think MPI should exclude such implementations. The hope would be that vendors would supply MPI implementations that map process number to node number in a way that their collective routines would be efficient with default ALL group AND that the vendor's mapping would be documented so that a user could specify subgroups that could exploit this same efficiency. Al Geist From owner-mpi-ptop@CS.UTK.EDU Mon Jan 4 06:22:14 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA06430; Mon, 4 Jan 93 06:22:14 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA03279; Mon, 4 Jan 93 06:21:55 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 04 Jan 1993 11:21:50 GMT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA03271; Mon, 4 Jan 93 06:21:47 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA17137 (5.65c/IDA-1.4.4 for ); Mon, 4 Jan 1993 12:21:14 +0100 Received: by f1neuman.gmd.de id AA14884; Mon, 4 Jan 1993 12:20:29 +0100 Date: Mon, 4 Jan 1993 12:20:29 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9301041120.AA14884@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Agenda for subcommittee meeting Cc: gmap10@f1neuman.gmd.de Dear All, in my message of Dec. 21st I asked you for comments on the agenda I proposed for our working group meeting in Dallas. Since I did not get any response, I guess that you don't disagree too much. I am looking forward too seeing you all in Dallas. Rolf From owner-mpi-ptop@CS.UTK.EDU Tue Jan 19 06:28:43 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA01032; Tue, 19 Jan 93 06:28:43 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA08439; Tue, 19 Jan 93 06:28:14 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 19 Jan 1993 06:28:13 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA08431; Tue, 19 Jan 93 06:28:08 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA20278 (5.65c/IDA-1.4.4 for ); Tue, 19 Jan 1993 12:27:30 +0100 Received: by f1neuman.gmd.de id AA13250; Tue, 19 Jan 1993 12:26:35 +0100 Date: Tue, 19 Jan 1993 12:26:35 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9301191126.AA13250@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: next activities Cc: gmap10@f1neuman.gmd.de Dear All, this time it's my turn to fight against a bad cold, but I think I'll make it. We should plan the work our group has to do before the next Dallas meeting. At the last meeting some points were brought up in discussions, which we should invest some thoughts into: 1. If more than one topology is assigned to a set of processes (i.e., there are two groups with identical membership, and a topology is assigned to both groups), then it might be useful to do the placement of processes (mapping) only according to one topology, and then state how the logical process coordinates of the second topology should correspond to the logical coordinates of the first one. This was the idea of Marc Snir, whereas I favoured the following point of view: for both topologies the assignment of processes to positions within the topology should be based on that topology alone. As a consequence the mapping can be optimized for both topologies. On the other hand, the roles a process plays in both topologies are not coordinated. A third way could be to specify both topologies together, including their alignment between each other. It would then be the (nontrivial) task of the system to assign the processes in a clever way. Also, we would have to think about how the specification in this case could look like. Any ideas? 2. As it stands now, processes in a group get a number 0 - n-1 following an arbitrary scheme. Once a topology is in place, it would be a good idea to base the numbering on the topology (e.g. run through a grid row/column - wise). I see two alternatives how this can be done: a) The numbering is defined only after the topology definition. This means that there is no group rank without a topology, which contradicts our goal to have a topology as an optional attribute to a group. b) The group rank of a process changes with the topology definition. This might cause some confusion among applications programmers. For example, global gather operations before and after the topology definition would lead to different ordering of data in the buffer. On the other hand, there seems to be no conflict with other MPI features. What do you think? 3. Should there be any special topology definition / look up functions for trees? How should they look like? Since Jon brought this up at our meeting, I'm most confident to get some input from him in this matter. Does anybody have brilliant suggestions? 4. Bill Gropp claimed that topology mapping could be done in a portable way if there are some inquiry functions about the hardware topology. Are we able to define a set of such inquiry functions which meet the following requirements: a) they must provide all information necessary for a portable mapping tool for arbitrary application topologies. b) they must be applicable to any weird hardware interconnect topology. Frankly, I have difficulties with this, but perhaps somebody has a good idea. 5. - n. Did I forget anything? I will work the results of the last meeting into the document on virtual topologies until end of next week and send it out to everybody. Rolf From owner-mpi-ptop@CS.UTK.EDU Tue Jan 19 13:53:39 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA22518; Tue, 19 Jan 93 13:53:39 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA27886; Tue, 19 Jan 93 13:53:14 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 19 Jan 1993 13:53:13 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA27878; Tue, 19 Jan 93 13:53:11 -0500 Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA26554; Tue, 19 Jan 93 18:53:07 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA19368; Tue, 19 Jan 93 11:52:05 MST Date: Tue, 19 Jan 93 11:52:05 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9301191852.AA19368@macaw.fsl.noaa.gov> To: mpi-ptop@cs.utk.edu Subject: Re: next activities > 1. If more than one topology is assigned to a set of processes (i.e., > there are two groups with identical membership, and a topology is > assigned to both groups), then it might be useful to do the placement > of processes (mapping) only according to one topology, and then state > how the logical process coordinates of the second topology should > correspond to the logical coordinates of the first one. > > This was the idea of Marc Snir, whereas I favoured the following > point of view: for both topologies the assignment of processes > to positions within the topology should be based on that topology > alone. As a consequence the mapping can be optimized for both > topologies. On the other hand, the roles a process plays in both > topologies are not coordinated. > > A third way could be to specify both topologies together, including > their alignment between each other. It would then be the (nontrivial) > task of the system to assign the processes in a clever way. Also, > we would have to think about how the specification in this case > could look like. > > Any ideas? I'm kind of leaning towards the second option, though I might be swayed if I could see an example of code that could take advantage of Marc's idea. Any good examples out there? At the end of the last meeting, a suggestion was made that group creation and topology creation be married. A group would always have a topology associated with it at creation. A default topology of "linear" or "ring" might be supported. If this idea is adopted, then it seems to me that each group would have one and only one topology. There is no reason that multiple groups could not have the same membership. Each of these groups could have different topologies. I think this ends up being the second idea. > 2. As it stands now, processes in a group get a number 0 - n-1 following > an arbitrary scheme. Once a topology is in place, it would be a good > idea to base the numbering on the topology (e.g. run through a grid > row/column - wise). I see two alternatives how this can be done: > a) The numbering is defined only after the topology definition. > This means that there is no group rank without a topology, which > contradicts our goal to have a topology as an optional attribute > to a group. > b) The group rank of a process changes with the topology definition. > This might cause some confusion among applications programmers. > For example, global gather operations before and after the > topology definition would lead to different ordering of data in > the buffer. On the other hand, there seems to be no conflict with > other MPI features. > What do you think? I would prefer to see topology inquiry routines that return the "pid" of a process specified by logical coordinates. Inverse routines would also have to be provided. I think that this is safer than either "a" or "b". If topology and group creation are married, then option "a" is automatic. (Actually, this is a good argument for combining group and topology.) I don't have any brilliant (or even reasonably sensible) ideas about items 3 or 4 yet. > ... > > Rolf > Hope you get over your cold soon! Tom Henderson hender@fsl.noaa.gov From owner-mpi-ptop@CS.UTK.EDU Wed Jan 20 05:13:45 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA11399; Wed, 20 Jan 93 05:13:45 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA02944; Wed, 20 Jan 93 05:13:23 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 20 Jan 1993 05:13:22 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA02935; Wed, 20 Jan 93 05:13:17 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA16345 (5.65c/IDA-1.4.4 for ); Wed, 20 Jan 1993 11:12:40 +0100 Received: by f1neuman.gmd.de id AA16629; Wed, 20 Jan 1993 11:11:44 +0100 Date: Wed, 20 Jan 1993 11:11:44 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9301201011.AA16629@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: topologies and groups Cc: gmap10@f1neuman.gmd.de I'm not sure whether we really want to have a default topology. I see some problems arising from that. 1. In some applications it might be completely unimportant how the processes are mapped. A default topology then adds an unnecessary overhead in group creation. An arbitrary numbering would be much better in this case. 2. MPI functions for group creation and topology assignment cannot be separated. Otherwise the system does not know whether it should apply the default topology (another topology could be defined later by the user). I think that especially those people who are not completely convinced of the value of the topology stuff would not like to see those two concepts integrated into the same functions. I favour the following strategy: A group is created without topology (how this is done is a separate issue which we have to discuss with the CollComm people). An arbitrary numbering is chosen by the system. Collective communications at this point follows the arbitrary numbering. A topology definition call is a synchronization point for all processes of the group. The numbering of processes is changed according to the topology. Consistency of numbering is guaranteed because of the synchronization. If applications people want to avoid the different numbering schemes to be used at different phases of their application, they just have to apply the topology before they do any collective communication. Any opinions? There will be some functions which combine the creation of groups and topologies, but they can be optional. An example for this is the subgroup creation along coordinate lines in a cartesian topology. We have to talk to the CollComm people about those functions. Does anybody have a good idea for another topology based process group creation function? Rolf From owner-mpi-ptop@CS.UTK.EDU Wed Jan 20 09:56:37 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA10131; Wed, 20 Jan 93 09:56:37 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA19145; Wed, 20 Jan 93 09:55:55 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 20 Jan 1993 09:55:54 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA19137; Wed, 20 Jan 93 09:55:52 -0500 Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA28601; Wed, 20 Jan 93 14:55:47 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA21143; Wed, 20 Jan 93 07:54:46 MST Date: Wed, 20 Jan 93 07:54:46 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9301201454.AA21143@macaw.fsl.noaa.gov> To: mpi-ptop@cs.utk.edu Subject: Re: topologies and groups > ... > 2. MPI functions for group creation and topology assignment cannot be > separated. Otherwise the system does not know whether it should > apply the default topology (another topology could be defined later > by the user). I think that especially those people who are not > completely convinced of the value of the topology stuff would not > like to see those two concepts integrated into the same functions. > ... I'll buy the second point. People who don't need topologies (or think they don't) shouldn't be forced to learn about them. (Just like people who don't ever do collective communication should never have to learn about groups...) > ... > A topology definition call is a synchronization point for all processes > of the group. The numbering of processes is changed according to the > topology. Consistency of numbering is guaranteed because of the > synchronization. If applications people want to avoid the different > numbering schemes to be used at different phases of their application, > they just have to apply the topology before they do any collective > communication. Any opinions? > ... > > Rolf > I'm still uneasy about topology creation routines changing pid's. It seems to me that this would be a likely place for users to make errors. The problem is that I can imagine situations where unsafe code might work on the machine it was developed on (due to "good" luck) and fail when ported to another machine (where the pid renumbering works differently). I know it is not possible to make everything idiot-proof but we may hear this objection when the idea is proposed to the whole committee. Tom From owner-mpi-ptop@CS.UTK.EDU Tue Jan 26 06:23:47 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA27461; Tue, 26 Jan 93 06:23:47 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA26404; Tue, 26 Jan 93 06:23:22 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 26 Jan 1993 06:23:20 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA26396; Tue, 26 Jan 93 06:23:01 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA17536 (5.65c/IDA-1.4.4 for ); Tue, 26 Jan 1993 12:22:13 +0100 Received: by f1neuman.gmd.de id AA13867; Tue, 26 Jan 1993 12:21:18 +0100 Date: Tue, 26 Jan 1993 12:21:18 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9301261121.AA13867@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Updated working document Cc: gmap10@f1neuman.gmd.de As I promised last week, I have updated the document on process topologies in MPI. With this mail I send you the PostScript file which I compressed and then uuencoded. Any corrections/additions are welcome. Rolf ------------------------ Cut here -------------------------------------- begin 664 PTOP.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP6(.R4D3,G MS1LW(&JXF)&C!@@40U*`B)$#AXT6.6"`D!*&3)HQ8=B`*)*G#(@I;\S0N1-F MXL,25-+085,F(QDY:43*<;$QS5,H8/&IYLS:O%DU*G3 M1@P9('#0D/&T2-LA;]JT*>.&SIRT9$&E M#!8B/^F`D`%#I\\QHLF4,0.B\^?0(!(J1OG""8@7JEFS>=-3X^K;0O:(64S& MMYD^ME],N6UY#!H%NWOGOHUESW(G?83!PYI1')A84 MF_39-\.9"O#91GAU!&5&&660L<<<=%14QQRGB?;"H6XDRL:BC8(`IE%P:(@F M$`W"D<983(Y0ZJGL88&F$4U4M(4"""IH8*T+)F>$$$(,:"M=721'AAE,SL%: M@(``:T51:F1&"Y&FP0::PP;HX6W&*H#%;)$09\('S;%'AY;":$5+%Z%#)P=5A+QA!H-+4' MS$T)T3(;JLF!W&U^->B6NDD4$2UAQ9%1!QQ,FO'&&RY*IG1A??`U\#Q!APK=GBT<8NM%G#3=#P-H1";.==" M&H>*M8?>9%04AD9OTT&P42]HO-@9AA?,XM_?@2!6V)&+/1,(/:$7X7%XOZ#W M'6F000<:?Z/10N"1$LXV56^-GI*+=8@AN61HZHU&&6F<@08=I9\NN.H@L,XX M&B#0`+L8"DQ>N^EX)$7L77H"_KO1JQ,VO,''SR[:'+$OWT(>SO>.^N#40V>] MZWAQ+_OD,\EPP_'>DX&'^-._+;SK!:JO?>V1X[<9S7*PFB&,9[1T%."C+$GO8MYS)Y MFF<&UN@-?"VTFNENE[O=96^%SI-A"T`GNN=D3H`%^80BY@C`QFZT#N^A:4,$>I;&0XU MAS6`8"*0N@@:IT0$)HUA#"MS8.,0I[C6'>Y'_>G"YMKV0)"Q[XY6BQS8"/F" MD]$A91N4S`4MMYQR%>AQ#G3@_8@7`P7HSX$3;$L%.RC)DG=XLQ5QO>(!*+H*D,O.PB59IRE&G"T2(3<5$Q[P"',X+` MEW(`)CB'6(!H]]5%=\F&2'(14AJI9=*M4:=:WK*``-%EA#V>80S5;TYT6@-&M!>+. M&[G:++!VU44PLL_EW`,@HRRU(GN0*E73>$8VKB%YYY0CFL*PAVUV\PW8*@,; M4H"FN&O:P M6S2M80^W11.]V&9;$-P!36U(FX$&]=TI,9.[>"GO;=X@7C/=H:Q3BH-X"Z3> M%RR);>E%4X#81EXT\8YMQJOO'9#[1M!Z`QC#.L4UAP6-!YQQ!0+2^M*4QCXD,'13@&M"@ MAE^S<5-'9[#CC@*AH;>*4UI6C4:!J39,PP4780;#$$OH/9!#7)P2R1'^<^M)@VK M\0R#9N>YV7\NP@S^3(,;/-K@2W[TI_L-Y84_^=<+EW(,I"P#);<9!X7N]KEC M4/`USX#C/L@!O><,Y2CO.M.[[C*75V[E7P.[Y/PNN;"A//-&]]KF#8\UH'/` M:"8CG-^%CG6A!P[HHDMYTW:6,L*5GO0FOYSA,?\TLX%]GR?GF^%79_+`]0V# M&AS[SCCX.L,13JLB1WG-S<:!M.WM;IMS_3YYCD&LZX3O0KO/SJX6PI/;#O6^ M.SS,6NXDQ2V.Z:3CN]$=S\'':[!V60NYZ'NW5W.X]W3Q1WDNAW.RUW\W M=VBT5G(@"($L%WQ>%F@YUVLV4&B_-@,U5R"(`[ MB&LI-X)`J``I1X$PQVK"QF1V\7+A1W505P2D(75[IFKO)GM$`(`OJ'&TMFD^ M>&AWPH4S.`1L)H.@AX:2]FD'YW:(<.<6AY^&4&?,N&HE=P-T*'L?EW@?9P-Q>&;" M1@,V$(O;!VZQ%GY?2&E&J(^E!W<&&'?$]H^EEV5"AV]_)H<':9!%=WE]UG1% M)VP#IW,40HC^1X37!V599H$:R8,AX[?AW&E88J`5X(PMY$7F8$<2'D=Z9,.<8>REG)R%XP>AV;%:#S' MV':.EG[GIF@\!GR>R&Y4=G!UEF0:1W_"1BL1IW2?9@-?&8_JA@-.27^'9Y3( MQWBF-FE/]X=`J7-<*(3]YF0-*6:`1WX9R(<5"6B*9H9%N)GGB)$8^)D7R&^D81<$ MUV^QMF<`1VY.^&?;)X]*UH6PUF;L&`-!H'RDL7]?V6BSQF3T*)JQEF>VR&\* MF&<,*)$<^&I3IG.K]W*')FAR"72L5V6A.&EXN7!V,7,NJ),\*9$S>'`,.&5, M]FN*)FGH%H#T!X!M1@3"F'QK>7J*F&GC1F9A9V;T]VCO!W.*"&7JAF7D)GLP M1YYL*6OX"7-C69/G=J"O^6229A=8B)KVV65U0BNSJ99#$61X1!H@D!/28F^@ MN9,P=Y[4!Z+3)Z(EEV4H1WTG.GU@>7.)]I$RMVS4YVH6:&:W]J$8MW!!J6OP M"7,\EJ*XUFA7V9EF^9]-QJ)KR*(]9X&>!J,N1W]+"H"/MJ-#:6@XFFOU^:.R M%J2>F*4J6'(?67,*`*-SR6Q.]F]BZFEYEHGUMV9.J'8VX!+'2&:;2*5EQFR" M1@2"YG!Y5J.#^&_#=W]:&GI2"FR#BF><]I]\&FF)NFYBZJ4S*J8;V*@-]ZB4 M.GV+>G:(BJ/K5J@KJ*EG9@3/.6D?N9O8V6<1-ZD]F6ET>8Y82'_T=P-$D`-. MZ(XV@(YSMJ22BJLN6J.'2F7/IZ5\^I%\.JS8&7$SIP!2RJ=7BJE9>G`SMZS* MBH71FJ2R)ZW/:JTY.J3,"J34RJ5+=JW=RJW?6JW.2J[CVJQ+I@#%ZJNX9JSL M>J[]UFLUNJS,VJMSN:2]AJM@*@.QN*:R&H-KIZMFNJ1'6+#G"GU\:K"1!J]* MAYU!R:=*=FM0.:X3BZD`>FLUIV8XR&F2RK$9>Y+GF&=Y9GMY=K$E2YTGRVO; MJK+*FG3/ZK*R![,A.*PP"W$R"Y^Z^F0YVX_^ZH31MI9+IG'YB95UZJA)AJ?M MBI&-"K$S-ZJ_NFO05Z@0J:E'J*FV9H%7RY\+FX/5)ZE&2WU>BZI@.[5ERK5$ M"Z-JMH&\^K%!&[)4ZK98";?T&JSR.G/$RI]2FJMQ)ZFJ6F<6R&E_)FEJ"JO_ MF@,^`(SU]J2*ZVGW"H[J^J[;>K<,:[>4"[F2&[F5>Z[CE[F8:[F<.ZSZ2F6A M.[F>2[*>>[JDF[J=J[J7NVF?^[JHN[B=QKA/*@-MUK-S$K`[BXX*N[;GZKOU MVKO"^[O#&[SCNKG$F[S&F[/-!J3V!W*F]J1CVKA-)J;*6@2F.Z7PFFO;:K)` M>:XC6*,`RJPL>FN.MH&8RKWCJJEG1Z_?ZJ/?NJ)%6&R+RFGAIZF'BJSXN[=# MR&PW5Z,=J[#@BZ/S"JQ-*Z^/6Z2H&[F?]J1]2[T/;+NORJ:Y>P,UT'Q+NFL9 M#+<<#+D>#*\?O++'.[^6.J.7>L(FG,(EO,)%F,`JNZWAVJT2:7X'VZV$")'E MVF_E>J5ABJMVIJOO%P03+*OTI[L6J*HXP+BL>I7VVK:1IJ6@]FE9!I8I1P36 M"<56G&A\UVB3J,7#U\61YH*X)J(KB)UD#*)3?,;62<8Z3)_6V<:\QL9,.8-O M/,=RC&]TS)]0B6IL+,;+^,;GJ6J`K*!`FFA--I]LK,/X]L911@1RF+`.AUK,S\+,\4+;5J[-EMLI.O+7R M:"\M)-G,`ZG\`FI&N+,M* MO+42C+N&"[1.FG+2"Z1TG,,`7(RZH&W<0#+=`")]`M>94$V6W\?)58N*/`V\]:6L]`&J20 M67^QZH0E&;T$N\J@NJK,:KU3>[!,_+3,.J0%7'F_RM/>NM-1EL!76L`W"XYV MJM`RS;%+J\(DW-2>B<(LW,$@/-4B+,(F+;V_%GI#[(0TT'@G3<_M3-+X[+]O M^]'WW*R#&J:(Z:@6W6X?"]%+'-%P+;IS_6L33=<17=$?V]8`O='A]ZF?FL2` M^L/&9R>.6V?>;,_T:M).BFK7I[Y[!W/MK-!%Z+6BJLDK*W*^[`U_:Z#6J,^RMH&3*6[YMJQG=H#G*/&RZZF_="M3->:?6MB M[+8D.M/]VV2A.M/_2];ONJM'G=QL"\XS[=BW-GZ^-\`V0;U.RHU*;+_H=KOV MYSYQJ'$_[&1WTLG?J<-5AG3!E\0^N'".QMY)3,__*ZRJW+>2K,K2J]0>&::Q M#<6[^H%#T&L#!^#_C6M#4*IV^]Y3!J.GUVY.QII.FM4,^MG%MW9*[6F(B:NN MYM/NUK`VE[6\YN$%?J[%-L(VT*TE?JXG+LPA#-5.O>(F[,(N'M4QWN)4S>)/ M77-]&]+X"J2SMV9$8+NA;75E^Z2-#<)URW]4!N-'+GU&[L%+'J")^N0OO+*, MAKQ,3N5.GN5-ON58;N39"^4U)^5BCFLO6ZTQ:^:ZYZ6/I@#CZ]LLZJ103*4W M-[@4K'8N+:9(C*9T*K,A:.5I3F:=^;:W[*/7NFO#]Y$WUZKP/91J"Y%-K;[$ MG-GDC)5V9H%7^N8>S:+QVDDIUV3WU^EGI[[OBZ)&,+Y4:NI8.:/B.J)JW;6@ M?LC5=WN!#F4R4`.O^FQM&MIDF\3S'=-)5Z56.>L^2IZF?>B`*+;,Z,20SM&W M=Z+C.Z2:OFP!.*G)+KJB3K0A&K:-UNI@J^D*W.U=Z^W+#.[D7J+?SMGBKMD- MI^EP;NEZOI*V7G^X#K`X$&=$4*$14QPR.R$2/`&2'0F!W'?K/'N-HEPV)X]^+T]>69G]L.M M]HT\Q\1*?-W\V<3VJO2ZW61'3_2NAG>M5HX_WY,]690%%ZO`J'8*8&JMYH(% M;029=IY,=I+N5F>2AG<&AR=P2`-*B60`C>?9S8T.270TC/$OMW`I&YK:B?73 M;O,FWW!6*(+_N^:?5_!+ENA0&Y`VOZ=Z_M)*'7=WVA^YKK(YZ8%,F>)3;16*:TSZ.BA:9'52]=9VLJ'>G1+ MMWN^?XJ?!XYY?+9"OBM&?9X<%XRQ^G%JEP.VBF2OS[&Y?Y5BC'!#AY,>ZO<*8LXY\>+G-2[K:UWH?RK'W(C9V_TZJ,\[(,B^(/R'_^&)G`*MROU M3?V!771,;/*65^E]#H?%G$(C``O@S/)_)B_C])G]!^<:F/'K,QFMT=@Z&:4` M+E_/@WX$K%7-M\EC=.Z>!XPYO\DG[;@1Z&G2T=_Z?@?I_1PD03/^@I3T\U:- M)A9MO?37G@`54OMAH&SV"2J<(P#_GY:Y/`?0Z/BDYP.R3IK%"U(LH51MH&E7 MY$Z:QNE;>TJ2(1H#YX.H(*WY.7LG3P&I'L9H1-NJ(S[R+OTMGWI#@I`1E?E? M'^C5"2#T5=GRE7R[>DP0#LK!G[3MYF`'HH,!2'IM,.E5E-33$.`Y<.@^7+!C M1(AZCB$42J*OP2F]!O>6CAU?^D-9S1%*PD9("??2)+2$4$F]&1S&==FPTG-B M::-FZ`6LFJ.WN!]/TG[9+Z-)G1>(O535R_DY'!#/^!^!TVO:S:XY:*--@WVD M9Y.O4A[?ZS*8K3E%H[F$F'A=,6QP]HOX("8+:.=X0">L7G;+:_T]W/-KIJ$U M-(6@Z1JF0E-8#;$A*CR%T9`12CX+A_J*WIK!?!0NQ#6MF*9W8I],8$))$8$A/82#R)(1$E M`B[A4Z8NVTKT:,!H(L(`&H@!1]NOZF'UKXT-'8=$BX9@[N%#0/$GYIZ`%W@J MSP*,1N,'`K8Q..>1KI4Z0DL6T=2HF=^V;#0B.=QTS,8C@J.@I(H&H$-(Z&9W[;-\R&WO#O`:ZF*+J&CZTK`L?'(GX]9UAG M;HV3F41[Q_A1O[YHJB"-6QR&!([^P;_%B`A9$&,L@T!HOYVI[*;*B$_!>386 M4>[0@/W#:2P/9=1]/^SW=<6NN,7(S+7Z2)GF"FTMF>056V,V^F&AD7K=*U?4 M]#0CX8J*T&_^/4;FHQMUF^?3.#L.,O9&X:@8&^,/*F[=)RPJQ['H#W.?&SPY MS^?C.+]GTYTH'+<)C(#1(=@OW7>"L).LHD*'CIX-(6$(%Q&X5+T[.I20CQMZRTA-HDD]>6EF8)LI2SMNQ0=''*WEEA0-I&*[11**"\P?!D`U2`/@1 MWQD!UE`#!L64W%`BR/=8H)9D$VC/J@D[P`Y#>AL1E&0ZN/-P2*$1EL5QN)H\@:N02"&!*6DI"69];)S%D9FCI4S01E MDFHDHI[AHY!\DGGJF>'OY-2E$-0RZU(+?RT/5C`_]FEY#.:]LY^J67Y2F2HSRSP@&=!N364N(`)%I$K.T$*!1GLCVM\YN% M)B2%!WDG9Q*>QRI`Z1H`Y#M+SOCJ/S\H>!HH`'07\"(,.)TV".RUI%LT<+IG M:=HSEB8"RK4$%*-&5*P$==?NVJ&Z=*8IM5?NY):?DOJ@NESI/QNHUH*=6$IZ%E#E:4!U M)P)MGL%S`S%0&^5`+Z@'%9X4-(0RHR4(0%&4`NV?T\?;O3K:1,HXS>EL:1P* M5)V9KJDL^4/AY(X_(>X[0[)LR@Q(Q8KP@&D2I412<1M:(&DTG;10G M7^,.-8N9)Q5Y/[@$@*7A/'9+F;?F!)&`M$M< MIN'%O$H(EQPG!)IY1')5^1O\F0.V:.K44E3)0$F<-/>>ML]?TC-_M,T4G;V@ M9>11RRDZXTL'>5!))2O;7!$:0I`4TBR=I&-GD$[K:6#3\],@FWC$@=C/X"QT M6/15_4$[:NOV#XQ<,LGNSQC.%P86M^6*B2F M9/=$5:V9`3_G)=5*N!@QI9#3N1,X#R^1)[RCGUKF"_HX]4<(U%%+F6;ZYN!4 M42=T^F"V#S6C4&7++-Y/#/K#XXI^L9*1&(!;=@"`PB6*1 M#ZA59+`!-CX,A+"RE0`T0'!)YM5"6@E&=\\MG)`^-/[\''76=]*B[-D\!HB] MS=(XZ7_D$':"1@E07L5)=RGXJBIW`DK!U#M=2'XICCP2(\Q2KVJE\2L%<(-& MER8C>3MUYJ@;__.(.">M+*PZ%3'&)TM::4Q>)(6DU6ZZC39-)5D)'_=R3X4O M/Q&D-%7XXJG@>T^]!K0F5L&G;B2D7%V>^K2?IBO"!R/]JD*4<$:@KP;'J-6` MGD]M79VETJ(&)=W:GP0?;SVMJO6QMLH9J3H9#F2+:>3QLG+6K_HW_\_0PJR; MTO"1S>G:PD`=J32I%*\\2C9VR;,D7"4"6@IL/VF=%P802P/81)RPD.(%H)V( MI5KFRE$R.$ZD0J::64Q;K*6JL,;2UX MS.BWZ1S2&7\<)*!!0/MIW#D>H4I4@VKVQ(#<-;B)5%;)814K@6.#]E73Y=>4 M2F*'*6LUL5B&?7G3%=M-9XYN59DV#\;6H4TI4+=44ARHCT9>T=4GFB,;$)U0 M:42,"!RNLT!R7I^<8J[K;@F20J)D8%=D[)$U*])]T#I-)64!)Y6M,N(4/Z&C M!:2I))-YM4!>5NZ`68J#*KUL++)`IHC[L*COI&9MVRZJ-*#R.V&<_@-H[H.3 M#4S8U2_EV?6#7=./$$)-`\K]L-/TDQ,&+9V MJG6U"2B6$JA.$G=FK=5AG;>VY(3&UTE)>:W)\;4&Y[E6O%+;@L2.9S6V!RKT M1%B<:CV]:.A1M05UG<*ZQ&HALXQX99TL1ZU&S.8:'Z]IJ\VK_PJ5.<%`M96> MU;D\L#6O#JE;.6GSVNVZ18P_)]Z>5H.#\P9?R1-\F-2N)CI7R6^Y:;\50?E4 MNMK*@7M2"VYV-;C3UJ["'%H!J&"K#[`S296QL4`D:VZY#,+2K<%TX,E)2PIO M3ZO(2WP$U>3E00$K4B>;<5VJY?7_^!_H4W'[CEE-C&45K4K*`Z=8K1]K"FI' MD9)&(XYRE:K>O3(SKQ,9%1]]HU=CP,/%"W'JUNRGJC>?TER>()Q"J:*^I<,) M8_WIH:FZ\;0,TLKHZG+@UU<#0`[MH7VHW6:N4*K9+8X8Z=#D)[6[&-?N+:LR MU4QQ`IY:N%$])H"BB%",A4Z<6)4V&X^N0J)IJ/5`)I,7-PDO/1V<:VAP[AEU M*C>A#FFP1J*6Q?[;Z$IYM^[6A94E%N%B5T3+>=DIYY6\#Q3TBB`E-=FJ7OVI M=T[(Z$I%1:@1WRT_S:Z=!/:>V/RT<&BO%^T[S#:Q$E;%-U@%Z\;MK;WFM])* MX"I[!Y]J]9NU=_82OE]C>P'GB;VVK':/8JFAE1SYC]=<5$,WRF!([,6O0EO0 MZJ5/!T=U05V;^%0F>U.^B6\_+1QUTWD>U."+;?>)X@TM3-0J(RQ,&JZFLKCR MG@?J;E[GUNF4$38:=;J!,X"K$(\RP*.7NDI7]!4N42M-M4+Z9OMV7Z"%,7=. MS]&GRPG\$1T6!`1;#^;YP)_GE8;@$/R$;`Z@;36::>!H)J]#:"C-%"I,$F<= M[3R2%'+>!\FQ?B[P+B4\E=>6)*'5J4+8('V&`Q(1+ MC^AA@:M'*E&ER@!)\I@H?CET M4J`0],`($!%_Q$7L>9I0"4;!6.?KA"<5;&58,-B90F-'UIB=G==LN*C0!4-6 MQA_)G;I3=^S,W>$U^'/OC-]ZZW=T,$AJM=NG\`A=Q#.#D1)X-:DT`<`)/CM1 M,;M>'HZ+P'@G-4'`9P?!)>\\QC-3#T^@X[F'L*LLE5/+(ZC1FQZRC'J(3T;^"@68@"9CH>A&*ZA;.C,2"<& M6_&T(="CHMSIT&`\N(M[W%]Z6D]:N.0JTFU+C-&N8S2.R;@(5:051'.ZD]/Y MCQ#YEA)B0OS(#'$'OL@?<&-"32D#BE\-U^$UY]/,!*XMTX8:&<]#1UX-L$)5 M<=TW3ZC$U5,@%H_M2?/RBR]F>U M$WPF*@VVY*4L@%RD(5U`M,>RL,!#0E*H"F789D&8J1>R1W/@CRO(`LAT*:&XU+.!*- M`D,>#`(O81L-1&Z4Y6V:0\2(2G,BBC2/:-=$HGO3Q4JF]FQCM9R7;&!GRRF.-EQU%O?CH(DA61Q``4D(CSRW%+X`_UI*.K*Y%]9BBJ2Y?' MIM:E)+20*IUT1J2**!RM&TG#8TS4'8I% MI\QO#LXI<15UPV>T,^NS+%)`[N?Z?:=2Q(M^8(_RF7:!6"(?M3MYH"48EY'Q8VQV'\HV=F@; MI!E-Z1.,0*I&99UG)C.2\]7]"UJFJ@Z5'\T3RD*9L($W5EC1<*7[A/X^SH5% MK9_YC8;F,)/=.+->TCDIER^9T<;)=3239NK)C;E4"KV=1XUCZ]J<-';BY2#+ M941PQENEQCDHFC6-(>;$>H1AOBR*H+J&`B,>>)MF#2(RU9`)'BDB,&0U%U_0 MZ9$=NAE"IR3#8S!1K:[4<_838>JCHZF]L*_N3V\:]?C,88US<.J M7$)EVP3?^1/0=/A1Q[&#!%^)3L6Q.6+,^Q1I[L,#VW.L431+*#D&R.W#J>/3 MX]Y14=)3!K,"(LY+I<0/C>/1;+LAW,`J!GWXSLW<0S>8*CZ`6/>?/X MJ0Q>?K88R0@;:OURKO5ILM2ZVD3?HTT]JUOVQNO3QM:V?V/]N3 MRHA1@ASXUISO(7C*5/IP3F<*@#Z.'T0^[NC.$4ID$R;EL6T*E,I27VWG5@K%UMTYM9?]7K!TVVV>I[\-R9-H,-[8=-+3B) ME1AW:HR4WJR5>;,"-G%3768[8A^I!?6V.-?$X/:Y0U?1\E.:L/WJF38L8M31 M,*\'Y^0&=(&!4K!L@$\05Z6C7]DE@>4>]&&-9DSB32+0MR-YMV\T9QCNS>OH7KM7+;9F-5VY5%F=Q5)]4`764[ MF'(NL[&HQQTM*_?C=FUFBDJE;\O=RH1/I)R+MBR6\9U>!9\26P/DD-*;7?;K MOVIFC/![R#$ MXG,<;O?HI7E5Y5@;/GM7F2MG\3H?)L+'MN=V;FQ;LE4J%<[9Y!KY\X(5;@;] M.+Q9!'JWN)5&?VXPVM5&%1P;ERXDNZ%O-MI$;\@5J8^J.^)&W(C/Q1VNP7[8 M5*6T;"G3L$'WQ;T#;D^#MT>"6GB#?]OP.JQUBQ!+AL-C:_2INH;3L,$N^ZI6?WS/51\D-LBY MZSERWZ5[R2!RSH;`#8)6W1$G>W*U4^(9G<-<"V*J6`N`X*J\ZOA&*>K.=1;E;,&5NC253UL<8/QQBVZ/#F,7.0@ M:I%#'6W.R0.=\%%;X9L6I6D9[;XU<%:RR$_P`Z5S62YADPS.5.=7D4Y=6FKN MHMRWB[3GZKQGYBE]#LOU.36GS]I*&VR5<]<<)[AOD?OJ MZ44=N]KSI*[3#7&[ST3HC6 M.W6G4]5\,79VX#Z(YWIR_^OO_=S==PEKK]Y=5EI2Z>C=42,2:+WRWQ.,1,Z/ MK+>9PV6#,R5E1VHD%515'LZ-R?J/?(N6)P=8X2C31G;MM]=R,L6;]$9UY;VY M?UWYVNEQKJ>G>!1?2=FY(7_<+QY&Q7@S-8!E_(JG\9GM<3S*]/'J M.Y:Q.DVF''CM-=7:^U:VZNM/SC)ZJ-_KI MT\^UNJ2_])$^TV/U25^Z43E8WZXF]Z(G^(U>S(-FAO*"O MIQP2P/UY62_K%?V?+U:UOM4C\#QOS7?]K&_UZ`C6+_E-;V01.9%/])DMLS=T MS<9\I)6F8O.K'GY%]'JN`7%&EL-*H=S(WRWN4(>,]8W.K+J:F1)?2K*"<^\^/U('_0]/:6W M'31>AV9WE`IITZFA4W)B'PLCNLAJ]0_?FD?\053<<;U0E/B8/N-K^D@/8A]] M5-_XK9[36WI*?]5!_L(AN5#!B3$#P( MW``>\W#CGJ>G;SE2J(>W=@;T8;FEH^7RTH\3W"V)# M_HQ"X"MVK6LZKL3>O)V\?W5?G_H\;UF'ID-ED6S7Q4`NY_8XG0)3(VJ>!WZ/_\8'D"'G;)>\A?']^-Z4 M_3Z9(T!OOUMB=",PYO%]-BNRW!6_%=2/YM/$%5#+6]5]RWA=KXO=,QM8*VDP MO-NDJ#K/O"G=-UW>QYON*6[-K;AC_]226=JM5UFQZLX21#HK6V2B#![UZU$3 MB8RN\\-@VN[!/WCG9L+1=O-_V^BKRTO_/3[]NQ;UO_Z=Y,,C2K!6P0N_/W,X M&NR`F6T>'@WY>/E_V_T]&I[W80_.GO?2"E+O?_V7_@43) ML@&_>!JF'7QB`\XT)4T^];PM*RE*%>@"+1PIBKV2!6*!\!\7>+@%@3A1#RCO M=8'MRA>X^GF!K\P66`:F@74&[=<#4H$EC542VW1!]522H7>@?F0/NR1\$'*Q MB`R``&IT"J!7T\C!>TG+L++(1%M7RK+2^BTS_=V$E^0X@NN+N[+;^$7/7"78 M`6)YE8VE(L5H@";@<::E(#;[$]:X%VE!/(O MAPK*$0L&1H#.[B,M&7=,3P9TCH!VN*##@=G]@G=5+L@)]H+#(-/#"PJ#C!\Q MF`PB@^D=,X@+@G9*S4&%]*PJ30D"2%2%;(%;-H>W.7%:B;MQI7P;GXJK=J/8 M-1H9.&(..C&]2CIX#GIOZJ"R8]1D*8L/NH*%2(`?34+3WG1(`!0`15)=?4$= M[#;]@'CWSU5DMXU;989;M/N$1_P-@E-0)80)(=_1T2A6L53$T04M,@>?1%/^ MM"FJ("JC_&D[T9SUYQ'F<2!A"_<1BH3FS@EG$C)_SE]*^+5U;M+./#?0A!\P MSK*A!15^&?&%BF`'UH2M%7%8HV?:#.Q[L%@FM)>[3(Y"E@H>66V+5N M2]FN1!=]/LO-F9(6KH5GFUK8%K*%]-];*!>:+39>HF07_ALW'ZP2!`@Q78U+ M8Z;\A7,ADT(7LH6#86!(&+J%A6%BB!@JA89A8Z@8'H9'#9HB&0XY?J!>*!'Y M`.:&GL#,37A?(.O%^F$A#4X7$MG0+5!)G0$)QBN+#-B4M\@9]8U4.,V=@:\A M_-?3B(&S81`XS,V#JU]MF!O"0+OAJM,;:BN_H8ZS_G4T^HS\!QS*AKPA+8UA_<*H!(:>C)H"IRST=`EV:&%0]_,`+9.*NC(F$XS M`('&"%DT/QVZ-_4D*MW&3-AD&!_?U'MH$R)O04KGD8T@A4UA?H@?[H=1H5,( MVP"`3Z%1R!3RAT=A?Z@?&HCZ38&HM5&%4Z%H&@Z[3N"(%!U:<$G M\=LRDPC"?Q/@UY:L#'=MB[UB"U9SDZ!^A*:!>$M>B0@?G8@1AXDHGZB((B(M MV+;LAKOAG/;M_'?!3M/S`F)]H48J.`/Z;F6*D86WX8&8#7NHPQ%ZBPW_!\Z0 M?X1>^W?_O3*,80D8_]E_\I^0-R4ZB56B^W?^Q85/'ANG_R$[Z![HUFW-/6.< MI\.QM'B>CO56_86$+!R;^/R!,]'?]0>V4'8T7W4X??2!--R$N`"R7L10L.=M MM(=BC!%@?!PJ@N+],B<1BK<@H<2-S&UQ&]I6"@&(@%B?>Z(&JWZJ"+,D=$F(DLB>6+82< MGI,Q8HSDSTTB(K(J-,]_^)F4!<-<'07&HU# MC@#SW5$RXIV@DQ`U;^T6TK.;<2%68Q7EW>UTU4K`P35><:$'<.2HF$,72'B' ML90HX@V;%-&(AM-.9W2CW'.$$OZ3R@$IK\?<""G)=@!Z@)QCKT8O8V^+588C]I1H",]JAS6(_>(/6Z/X*/VN`M^C^)C]"BZ MJ$*R1D)U?#0;Q(C<<3(-*GD&(%)1G1ZX2%/55-%ERYC,]-*X4A<:_\@_1GVC M4?\XC@R0HI$`64#ZCP0DY\$_OD3W!X5`;O`\G%:SXK[<:_>:!3>2D47P5/+8 M=VQ94,>IPC*&2L]C\\B9R#HA9)I7ET&/T..8P3QJ9RHD&K5"BI`I)/"$0K*0 MYJ,>\D+.D#`D#=D\LH`Z9`KI:7V*9898]T`&5>X(QZ$^`1I]D;')&XUY60S@TX$E2:A29O3E:-' M]I%^6HZR26:2>PG5%:5$4-5,\`5'4EMH(@RP2.J%X->F\DN$,"!5+PI(# MU`-%2V93$M0MB4V!=;.+I[=N[$JUY"Z92\Z2Q&0PF4LB,\*D\X1+*I,=B&06 MB=@@W,<1R6THD>G9&$ENT$WW`;(4GZ"1[\:>(62Y--@-H]&)N`]U1B?BJ#E# M\]-[(V5H/FE&-QEO@%==V)]#2<(R4=:3G/D/8DX!9+[Y)03<`T?Z(9ZPKO)'5P4_.B6V&S^)&<33NW:`&FNV4>AI/J5/VE$`E;^137F8'AV5GFK0;HY2')O>(7W[(TY&= M)9((Q\$!8,6#:5Q5>11E9VB0P;4B42UT4/CB9CU/!Q0$Y22Q)8.)\Z4RF2I6 MD1PEVIP_7.06Q5>M)8.*0>14BB.PD0>F,HE<)3(H4-!7`K"7U5<]`` M-0>41FD\*[B'5=9%^5XN%N[A$1TBU]16PH@DDB-;^&727&4.&S94MB0_(=(T M1:3U&;D/*7<$:7&@Y0.6=?V6LU-P*7=HE,*B'W):DF2IDEQ&>=US2Q1).5(. M0')):G9/75,N)09"+3U^LH9D:5L>B\,'8)*UT\91(;M:`M1 MDQ&+=$%1"*QSA-4EU$]HE)1M<\ZE25E?-I<_T!(%G>%04XIT@GN0)K(':'?^ M^"LU)0\0@)T^T:!NTUAJ;-=40#4]!6"=#N(37+Y.KU,`%H`13SR;E8:0+3V# M9:I4AFF5T9-,"6X5F/&AR@)KU#)I3O8QI;B4[-GRQ&(&'CK7:^+80#-,(J#L**!BBUE]Q1KRH]`F9$X:IN2+B5/%4_4:D?E7QD!##(DI4;)N MK)2/:5%"CQD'61245)G/)4=I7V8>*I(A-L>HDJX(W5'_W'/@FW(I^BE-+2;" MT14Q&I#)`T)[C"K:98$)1K:!Y")39F5P&^ID:6#K0&OO)#J)9]:93)D6HK.H MDXU5&7EN%%[JAJUSM/$8WR1?5/KXDBV966AG]DJ[2^@"9!(NZ(8-8A>84L%E MP%3'-6`@$QX7#\(<&1*446J:5PT;.F5.?2B&5I359V%7A,;-$6OR3R[2(]-9 MEESVX(EE?ODGB4^-Y6MF5_L)T<%524J28.S6$NH;ST90U5!A2OLCK`."A%S7 MR,?5;\A(TQ86Y'%=FX./"Q0R#GCJ%!\0#,3E: M2,ZT`Z-)'Z61&2)K:D8%D9GX3V^636%N=2;@TJA1_A$M0I7I-=@Y-&C=N9E=?1FC6XME(MU5JE57! M2!*2#D571ELYI^38QO2<.!?/V<295$S,T`ETYIP3DL[)8UU<_\>-U7'=(?%6 M=M6TB)O-9O&QU9!)9QWX]WDXG;E&,%5\I5:G57]B6DU(VJ]+F)7J.6/R72J6]E8(_UO/"EJ$J$55U\W1PEM_9N97`X"ACU<*"@T`E M-P?NN4Z51OH&M'7)_9X29L*E5UJ<%:=>^2MV2$<4BO2G0(0L4)-2>S):8162 M96`]5?08;T:>\![>Y=L6>@A5?!>RU!>RG"-<7JEM@ESR)OEI?I:;Y^E@>*.6%K/@W'V@(VH&2H,LE"GJ"#DXCZ"$S*.5J.@P1=6K]')I)6$9\QD"2 M2`.I.!)#RXR).C/H6\\)[WGPD*#ZE-F2(YUC226C!TP MTK-PBBZ-E0?26'GNII4'902<*\G"`8FB&Y)H:+5^"5:7J'ZR?E49Y51[AF5T MHEX6I;%^!1U]AP*B:HHBY\;Z%6N48(#3*EJ*NJ+KEZ_13NE4P$DI*IS8HHA9 M+)J+ZE2[J//%$J1?AU8INED!HUZ560E6M990!XA"$4XOGPI=4NM;A8)0@ MSF^'$`12`SP?CR@V:F5E7>N9W]2-JDQM%C@JA^@GH0=!HE/E6K,H.&IY\J(7 MV[@1D>A46@T\NC$EDLT+/0J.VC6%5GPR`R!@CP@_"@\FDB**^D5M85D[6)HC MHB@9'6&R5+)9_11Z`R:)HY M'NF+=)X$*AA/2&J2.J(AJ81TB6BD6XSXDQA=I`:(TXFZ3:1>*$0Z(YU3@0H8 MLG<556IH$,?LP%\]";2Y?^:?V"91FFT6I=:F'(I^@J%!J<]YUX2>I*?F12HY MG5*I?I5Y@9ZCI^D)ZE5,7,Q64\3(,]$;BP3509M_!T5:*ME<4AU&>E*RI"SI M4G62@J0H:5P*E_(G(ZE<"@^FI$N52KJG:*0P*1-E5MT'QJ.OD6ZT1^E&Q-&) MN$6IQTWJ-]$?U%AQM8S42Y".30+?+4$&W*,B8JE`8QU/&N2(1Q;22IE6<9AG MJ43*;8I<'Y>(,IK6I"_G9^K_[&98Z!(#64%(&*3K%)2%^V3F_`:\6-- MPL_P*SMIL\%IQ7R75/0AIT$=F=UH"JHK%7T!Z$ZJ!.JY^5YN2^3CSX$JG0W*Z<9"M)4HW&5 M\?5U!J&+IXAJ\IBC)FJ)JJ*2J"RJ/]6B9ETLZG-R?,VH(ZJ+:G4YF-]9Q/0Y M,1KL%W`FI,@_0=>HDE`QI-Y7JK/8?%1KR*YQG^J=)A5B-3WY5L,7@H5D@4X$ M*FLUM/"GD4J+:?+87TGH,/2#+&MQ$E$RCWY5Q17](>J`*D%JT!5JKJDD53[X M*<5*8!>R&6XIIYP076(**H+5*.(9ANZ:H^;QQ7<\3>XFFPES"JIR4GH4;#(: MANJFE*CF1*KF\HE.B4[,E:KIB/:A,U+O65Q=)OL72Q5K,J&QYNN$='2JC]0* MY']-(E_-*-=H M(@?&Q"QYUZM9&NF>\BCYQ:^%C,<7H$H65F;ERFP9)+Y6\XY&>-",.*J4B>FN MMJOPZKOJKJ8C\6J]*J_:J_CJO9J#H"TMU!``/PE9=,+^$8O5)(-7%AF!3)'D M6L(Z;KP>7@<3R42Z&RX(RD:)T%&=V"@$HU"2X\E4HK%FK!SKQNJQ=JP@Z\JA2A,(U$C]C89&RW)`J)@;6+))DWPW0!``9'](ZBP M/5<&*U:6TJ0>9)<1=`0=KFA[6K_18D?)]\D827$:)G&T.\UE@VLY\WOT:^H: MR[1?II09I97)_SBN6&;DJE(237V&XCJ(8F"(ZYB)V&QB;T@$*5$"(CU0$$1# MUG=.5.GJ()I8^,N.=FB\'^[7X3%E$#OTHM;C(T$O;(>QH6JH-Y2)E2&5:&8L MSQ'&'=4>+H\K%KSRKL+KPR/]6&'KHZ]1AT$D`D>U5K;>0ST*#Q4;?2.M:7UJ MO;92`U$YRH6X110F!B4[J2J^7$!XD/P?U^>4Q(Q8'>-71%;$";#-2`'[BG`@!RP! MF\#&2P)L-`>X9&-D!@1)GA4\"A8-,VDN3`V/U-I)[I&;9`?+@]U5F=;Q$3]B MAD#+K_*/BBB.7TOFE9Q8O6O<2KR^L,-K#-O"2B6$S),1N'`Z\2$8DI9]1ZMG M_1J,/:U,JP:[#;4RE9MC(YKD'E>3OC:FMD4R!^UQT&@PR!3-09S-0C14[I%> M>6KQ4J"(UFVNP82Z8(&V/2$,EKT*]K MW*1B%]@$R0[V\H7$K!TD!I)OZ24Z$TH4G_VQ)%',P57UL2%1(,O'IFZ$;"!K MR,8?Q(80&[9>-`Q.FB*#8484XMI$%?&O#=G_6K4BL)QLK*'.*+"=+`,KRAYG MHZP!&\J2LF,*X$(K!&BS:P0YMW1FU9F,UA.]0D,1X?-WW+)*2ROV=^`E>,FG M]JDE9V=/V97\7$9#&OUZR=(A5&OO\<>*8`BD]'J*.+-<:\[J2M5;86OTJ9R4 MK83*PH._SJPY2:2RUBF:K6P<0IQ$&LXISO%TG92+*U[9N#ZN`%+I"KG&1ABE M.LM>N4RQ1MTH"W$A]L]!P>Y":)1Z9<&0T)Z\JZXC%X M#*I1A8!K04JHL1FM)^)6?N+2#I2I&U6TJC"T9NRPJ48!0#@MOY'34FX17JTA*4L9@/*'K5%[2EKRB*UJ*PL:O-PJXRFQ6.6F`41+?+!:=$E M*(>BU9CXJ#&'O80C<13UHP^R=F6?=\*.NG096Z''+$<`CD?XHV95'TFTS=!? M1-2BLZ'8^.J)@#^K9?5UKC$G^Z;/<7/A(A25V*EGC+.`!AWK@X0?,E;X8:54 M(:<,%9)D="*6U2R']8@>&\CMRC_U)UH-,7O*K)PO$4EI/UY@"58[>G70'!%6 ML:&V\$Y9I7[265)E)@C;I7-`9K34H2CMQ$1"&FZ$U2(VM92QP=4&:UWM=^G; MXEFTQEC[.=$A9^W2->(T9#('6_N+25NW%Z[JW(I:#X<&HZ_5HY$&]=5_@+-P M[=K1MQ!`IADD)H:0(7V(3YBG19VB6"PE=-@=4D:M`FQDA[281/M],G:6;=BA M5'9GM1H^DD0N:30)?'4_$666TEU@@RE+:8#!0&_+AD$L=A2KV1?E,<25#B:8IG MUPG3,C,,;1ZIQG)F":4)\N?XDYK3+9-DSDZ/9&D0B6B%&:C'4V^DN=X6Z&3H M7#G53#[9XOF35@\;Y9GMN6R4*!F(=%U;[N54CMQ>5*Z:6QFR*?B'J0$D13:7 MQL8A/C%LIU:&0Y.43.D3R#,DC97$TJ3[9A!9`2BH`1`Q:D@)G$$&F2\T2:J6JO50:F8/-=Y8L,:E/+F]="#+G1[;)12@I*QD2<9NZ#NAP-L5$W4KO("O-P`ML81 M!BHZ&K$'&.+7=KS]5H)+OSQ[+;X,F2P:2$ZE+- MNP`(J61J?2BDTJKE.H%*^BXYVK"U&6`6JO11D1L;7EYYH*BD;1P'*EJM),76 M,^-[E4J]UTY%%+56MEM?HI[P0D7,FX+\Y5MTZXDUMWZ\'F_(F_B`O$$)R=OQ MCKSKS**6F/0;D=U'IPO]G0D7U*>E;$BC%I1!\X(DN\;->^]^62N)A)0>G6(U MB29E6@F]D*=&V8W6)%&E:97T0IY+K]EZ9IA40I2:TYNDC^^<\\-*;8*#9JC$GN"-XDXG8Z M$U\L2Y(]<9V9#,F%^K,^)UT;)UE+5VA'6OAL>+%0],$+8B.#;^++7`&^=I@9 M%R<53377C@7N.CS?"WMU\:V!LL;\P46"8H?+^A/4-6(46L,;CR6C'!#B*_B> MOJ;OP@=24J]1ATQ#6R5VBFC)ONR4[!O6`".6#]Z`B#J:Y)"%]JU]'ONF M)A6?"+_C5P1"\SQ>^FF!&H$DJ/0N@TJA-K\-JH7ZH+I9TF^%.OVB6!L&91_7]0L!H^6N+FK^Q*/KK<@BDN&KZ>_Z^O^YO_$MMR;^) MY/_)_D*W\^]`*DFF6O"/ZA1IP1S'VI61OH)=`(@0P^Y^I10M:G2"S#SX6#'& MX0%J*%M=:WN*LB$9)"9ZM)>4&(_!65*`$@>>N&;('8Q'TIK*0&,^&ERFE?%L M'@C?\>3.DZF'S\0OT6?N*X8K`T^X'(A"LJ#9FI`&_%%=HH!&FWWDM'6%(UN> MA#J:'..5W.704D/F3)C!K5F1C14VRW?<'^[#!SS1"CK+;14,O%)(6+#=VFXL M&D_6K)&-B)#IK0&I,"4P6*L8;&N(D!'+E+)PM"1?AHY9)Q0?H1!E*<9D&<]K M=S+N:AX+2M6$IC"TY6NFN9+,&GW9K$$5^;?/1BNIG,(ZFLC!5K+QSU"S`1\"8HVF?'=L.+N(#+7TR+2=$7`H'+-&P-PNZP:"8+.H M#T/Y054[\TSQ)KFUBM'I>3IDNJN3QHOYFOA$)>#YLPS%(A=,P$("_\(GL`E, MVYT?0HC$P=C^'[[L1";+&F+@3S/,##_#18T\0GPN3B8.@\-Z;N!F7A4?WJ\JY0L'PQ";,.P.M\/M4CGG7`*9/@GK M!CJ!8I3'6?NLR(REAX%%[F)KIC`Q/%&*0")0>#.)4#YP,,9;1$89B4LX3`YS M((&:0RP1E\/CL$0,<00I=,+%"XBY9B/PK:&LO!OY60/R-N4$Y4ANZYSA9,_( M<@<#+VB`R$IL`[?$/1-+?!(C9^DK38P2Q\0O<>#&'5XEX!DY22?DCAWQ^6&* M%!\Y<#"D#%/#R?`R'`U#PTDQ4GP42R/-77:4_/C$$.5W`\FM4MQ9FN,#3:>X M\$OIR=(P8'&\UE\230:IEHK>4<'G#U4A\Q7"$P>=&N(4'\N(+31[?"&4&D7\$#_& MQ\Y=Y<@0PG0"_J$9U1L5[9V!T9YG]P%'FXK*@9:;+E=GA+2Z!DFK:Q2YH(8G MLBN&492QW*&![B>P,;4EZ+Y;LZ5%[!C;0WU);NQS^5QQS&F&&)T9@['(D>B. MP(G@,SP-,\5/\5*L'#?%R+%2_*G]'.*EY)&Y&J[7<&NL5)89;HYR_*ZYKD=L MR79E7%L]*D9+:PA-)P=\F#X"(`C8-HMME4-J\<4HQ7D;$U?=YZZI:\G6G]&8 MYAZO!]6D2F:?]T=3`GE`8J@4@!S4=$S!IA!V`[7=L(X_'ARVN81ZON^CQ#PN:6)BE6X1)^&@P MJA/98XU]H&]P<-PB2QO*DAJP:&8:DMU5?0'()MQ\`Q?E0>C/+/F5@ZRJT' MS>N"U`D@S6!#?*C%2.OS`\1M>)PR`8SF_*.@\BDE*I,H9FK/)>T\+D,-SCG\ M1"3;2#9G`^UKV\CKS<\D:U#)AW-5)^%@QRW\`;ZQ.D^J7]G3DE4#I4^Y7/R4_[,.W-0&30#S?%@ M+]=O"%7^JJ[QMWF*3.6)J674G8@58A6E<$"!(H3V?NAXULA[@N/@..'I>>FA M,$$AIO`T`%=0Q94BHHBH&XJ(@\F,M*^$1N\+#&8EFZV:T8E<0#J@H:/);!E0 M^I6_T''CL*3G1T)'%91G5JLJ2/=L%Z=&D_+"5 MP,31+:R((1QG\`M3JCT@W,NHEK$0A'P90$T)_,D^:47)/MY;A!L`T\<$\;-1&U43&(%Q)! M$VKE35E;09,E&(?/C$%+T!=T#`)!!R>!R6WV:R70!@79]GG86G86->5B7QIPC7Q5Q M>>=E"X)`F;,32N)3E2\*DNV"0Y-)MZD:WO%4;OM.E M0#(]XYQO2]F2?G@:,0CP7,/=!4*6W,O,Q3YP&&*IT)G47I1*_3?9U6>S'CJ3 M$:IMUET-HK6B_.E0?4V9(7+)V2QX3=5W=?1A6$-7775BK<,8UK]6(OE_Z:.- MR&8T8;6_D/71C*L.5;CJ;Q-L*6V/2A=J M;YE=;VC;47\*TS[CX',8!5/%-!1G6^?6M'50`R&YH?82Q0,J/:6T*8E%,.U8 M)RJJE%Z=5((EHC64]I]'*7,]A$"'@^55XG$M:^OF@*IN\5Q>DM1DQ_W!-_1: M;;OP5?F>H'29F)B6[;Y3%&]FP4P2[%Z/EO#UX*2I;,EDV+?'WB0T1!_$>-P` M9@AU9Q*J(&93!HJ+XG8I754*8))X2.QQYQ5<11:'DW<03^/&A='#;9_ M1#^(DQDGSBTD'J9#W5_'OIW>CO:''AH<9W_"'2,APBPOS&(G'R('IUDVOB#< MK-.J'F<_#=O3HHK`GBH+@T5P"D/I5752R^X]5S:_DUAHQW!0WQFUQ=]P/]\>]]RB!.S%+XVRP&<@2@28+5,BQD,1'SXW"WVVK3)*-O*28OY;!]-`U`C3+/= MK-$'$00"17QD=]H=\>$]<9(`!*JD(AY1LZJ<2"G$]I+]M()XSXHA:A^U&4`W M+;1LR"//5I/4=^#;-:V][0#=6B=WF\&E&9$DQV@\+]/:B;`+5I.\:2UB)46^ MO<(CCPJ48^589.ODK6LZV)X48LB9O\IB-)PX3JHD[2V;0QWQ:C,+W,)W\1US']^,F.WY MM9:U6!!BTG/OW<'R9/>I%$'2K'[[-YG1A=26(5U&*7*)XV0/([@RQ]#B77O7 MZ1F5$6'ULR-(<65N,+?>5ON-_PJD1/(C:9;U'WKWGUV;G#]N]&R[/,FW:L== M,"A424&&4*`ER1WX@H'KO9I031FE=T5?I>C.Z'/'$7X3A]\7H4C@`]R^R_?U M*]8'!EY].)S4!P=N2WK@,,??[$*+FOVEJF-3F>"UM;2EOU`?.-4?UX)WX+FT M^@7JR.#3QQR8R-G@!Q3V-;H`UD-XV8J)HI;P&8!!,>/2S9&$ M(Y*$97DJNO&:"=BM*J6(.J9IX$>$NWX)#2S7X#@T?0L8(G!$P?-'XL@G"RR@ M7@_'L#Q[I!!RQ#5'X:S2`%>E_"V"-&`YP)55J29V\JA@E\MB!8X$C6XI^*@Y MP"W*?3AB5(&W6U=?Z\VC&.)1^"".-17B@?AOHX@WXH@X=OF(Z]9X2R3.;EU] M:IJEDHE_UY3X;EUB,1^M=2".!;H[>+CB,\#M8G!X*=XZE^(DRF'DBB]9',S< M\]6I>1;(S8>L3!Q#`#5F)QQ5`/?MUC&6XJ\X&TZ)!^./7]>U-0OCQ'@*GHP/ MX\=3:12'A"7E&K5OK&PQE1%Z1,^0) M>4;^C*2.#AS]- M"!A)KI0/Y;6U4^X6(2LYN6YM$&Y;PB,9[;VME?4F.NY^93#@X<>Q:>3B1PN# M=^;%GDG'BO/ MY4@V-^Z6I^#!E`MSD-HMLIY)4X$'XHQY)ZZ*5^*#W-HGF4?FE/G/6)DG.7F. MG!U67$R7"."X=.OGE"'JYW,X]5Y25%^V@AW44)T%R&!WA4,N% M7G'>XT/XN6/8V*I->'FR"0+0<)@&SFK!*_V*V$+KHN;87K M481JNBR"!UTBRHT.ME12)_ASBPC[C##T4@2D@SLON&].6+[@D*HF_C>!**_. MK=&"G.9$4KHW3*5O?M7'>3('!EWPX):>I3\97GK7$F>,7D$ZU$.F MVWWY:#E3IJ\L5%P',X?@?0W<>!ZGXWV@TN)7IRO@E=?BYS6A.A84+-FGSY)[ MP2G#:10*>@:^]^[^A"E+T($T(=56)!$$EPQAY0S?(?8$7ULE:RI\,LM2-*9^ MJ=NAA3)$^%.SRPQY\E4B)]C\QC;3<]$Q$@[`"KC]A"\'CM.0Z+U/G"9C=O%TC%55_394N<_HB!OBX[JX3J[/ MZMXZK:1T5H]R2AV(?L4H6C)@?76, M9RF8+5QW0L`>L!,A1,@((IP9)Q:7R8CU]:JJC\J9?_S?RRDB:"K#O'K?N+T& MH51J)<8^@8ZA'_L#*K(WHA0HR%ZR-]_W2O@):M1J-5RS$6T(0IS1:!Z]`>M8 M:51:LUNEZ(O-#I5:I0MX5LJ`!YU*SX"WT^$S".CUV3_K4T"IZD0^3YY)$1,: MOLC2F]#_HGC\+U7H.7(K5Z]XM/^#P_'-PO47JG]Z[*-F)8U;\XWHN#3")=TK MZ0<8[G_G'^_N-P(L@>TF>]S.@(KL(7O=?K+;[0DHR2ZWX^UT^]U>@6[AC-`7 M[KK,'U/P-U(;QD?UK2=R+R]))NB.=J+OG?G"U[I&T MN5VZAZ:I^^S^NI_NN+OLKI1V5?P?',@XPGL/C(5#O#,N9-Y6W>_<.N[ONNGOX#KY/2.%FU?>]>^^\ M._INOJ?O#*@QO;Z_[_.4!B2^RHZ>(4\\7'8WC`>$7<6-'5`+T)2'E*9G5=:# MD3)HBZ^$Z1ZQ5%LE+HUGJCD,H7C4P#/P#KRE;M[,2!FU[[%\.FNUY\LE)TF; M0RD,G$PE@J9[=&*42&^DN-@! M#P\BO#6\2<65Y/`X?`_OB,[P0#P?;5(YTK3IV`R.L/!+AN1^A*B&W@F0]++J MZC^[SAYT]NQ2?!6OE4Y6BIAWJQ@/.P/4O.C.$@4 M4V-<^Q67AZC*782/\D!RA^X08)B:$O@LA(LZT_"QO MRP-S;/OF_S.4HUC\US\]^\->_-7_.=::CBS9,H_-0Y M/]X5_52:$(#2T&1.`7D`$PQFYP!B`&LX&,<30\ M!5>2I#`19`0J`$:A(Q@,6$:-`1O(!MD$$*`FN!AD@$`/!WP%9T19@!8($S-! MO6,PR+V#@Q'`!J``04`*H"6)`2C`%9`"M`!G`4I_$:P!BX-)CQ>@]%-%"B`' MH`!C0!TP&+@!*8`;@`+0`2F`&8`"G`0IP!F``L`8-CU./Q;,`2G`@`6GU<+P5@ M"&:`"S#7MP%U_5W/!KSU@P)*#P2D`&H`"G`&M`%D`%=0!J0`V"YO9,&``'V] M$A`>9/:)@AR0!PSV^XY@+]33!(H'63\\MP^:#W3O+!3W08`8H#&$`:C!6U^. MPR`73%K_U5,!MT,*,`88][S!;R_4)P66_>BPW'_U8?U8+]1S`6#]4G]&#/90 M0&;_,90$;\%AGP3P]).]DN`>*!%<0`K0U)/VBX%4D`8H]G9`9K_,Q]UPG/?UW?V M1OU@,`>H%6+!8-].[/@QO5&?&5SUX(%@D`9D]@D^&8`"L`69_8;PVW_U^OU@ MWP:$#F0`59`"C/9#O1G@V7/W,X!;7]S#]\N]DM\@&/E)`J-PY:,`8D`*8-?[ M"3S]5R\5,/43A[.T%[@$??T=D-F_]"F`DD_4M_A1O@+0XGL,)0%3?]]K^4;] MB?_?(QXKOF=_%80!2H%VC],'!52!C&_4]_//!`4'G;_D4_7% M/8[_T\?W3KV(3^);^$0]AX_?M_A=?8,_$CSXRWV+;P:P!:@!A\#JWP%HP$^0 MV5?V1CWW``?T]A,3]S_]VN#J6_58_1Q@Z:_W M18:M7P4@^&?`F:_?PP>>_;*?VNL('T$*H`!P^%%^BP]/6/9``4]OU%L&F<%2 M/]A'^4*]/_\3,/8G^63^_V]9>]+Y/?1_LR?\0,5AX*.(/1W]B%_-D;R M3_<8"DI?!J3X-L!IC]DW^);]@9\[N`$[?9-OV>/W9@!I[_`K]3M^5K_66P1" M?\P03VSZ*$!3D.RC`&<_Q'\1Y/O%_>A`W3/U\_U$8#2<]@E^KZ\>1`H=/\R_ MWMI]7$_ZB_I&?<`_V*?Y:[YE3_##$?"!C._F\_1*_HG?XF\3%S^'[P88 M](Q]B[_ID_8G_F1_W1OU@'ZCX-D'^YJ_B2]&`/O3_V_/X4_\%?_%'_6[]@I` M7T_\W_5`_60/]S,*/+U0+_NG_>I^"J!X9$ETPON0UK?X,8`4`-M@GH#1$PMD M!/`"?`&.WKQA)M`2P!PX"XQZ`4"/#DIOP=?3^^DY!I)Z?S^GWP(0HR/>,P*T M^,!\;[TX`TJ/TG?F6_0I!09[+[[`03S!LM?9$^HY_Y9\\($E`54@PS?9P^M] M]71\/+XMP8\/WG?F*_:1]AQ\Z+WEGE%O"S`#Z`(8__``/;^?@%2`#7#=D_@! M_;)Z"\"P''0OYP?SV^IU^(!Z1KV#@*LOJ]?B2R8`]$=(&7K\$7^BOG0`>6"#8 M`,N`1+XP@)'O+>#66P#N&>@-?;T%'Z2`(B#CJSC$]:)\64#PP`F0P]<@2.UM M_2R`Y0&FGI]OJ,?3X_/%]XQZ]KYFWTE@YE?[B_9%]B9[U+ZXW\5/J#?[*_Q= M^)Y\';[Z7]ROXW?=`P-Z_DH$TS\Q@)7/$'BDF0*F`&-\DC^I7A-`CE#;0^F5 M".``2;\-P8/`^_?56Q08]+)Z8$#0P0)!U9?]0P'0`.]ZJ3\0GU#O_3?WRQQX M_UI\Y`$E@:.O1#`8&/MI^81ZT#YI'RK0JX?]N_@M`(L,>(&^7LIO$2CCN_3% M`@][\`%1H"RP!F`.1/H)`5$`)D`RX"\PGF#IZ\ZD&1"!*(`G0(GOJT?V"_\9 M]=8"A@'"W\]@L*<>X!YD]6A^I$"$'V7/2I#R2_`Q!+5\6#Z%'XS`LW?_8_59 M!+!]"C]H(`H`P'<1L.QQ^^@`WKX%X`JBO5?N0PE>]5@%$3Z6WTSOJ'^ME,U!ZE<`60`I`)B@GF`)^!SX&AH'!GNVOLN<)_`<> M"E(`WOF/XF<:;/$9 M^@"!:C[2'L0/!0@F2/]M_AR"*(!M`J3`LC?]O**@1+`E:]HJ#R;VQ(+V!3H#60P&\ M^S0%3$"M'G0P[O?M6PRN!UM\6L`U'RG0"WC8BQED]JZ!@3Q/]1 M!$F$B4'C'E:`#"#8NPPZ/TA^W$"@P-&OQ:?X8_P!!F6!)X$8(9\O#+`&T/`Q M]1I^Y`'5GO5/*I`*=/BI!V=_CL&NG@L0X#<2J!:L!ED$-00HX;E/#F`=Y`RZ M^LB$IS\9WV5P^:`3Z.M1"!F%&@2U()_PL'?B`P66`>Q\6<#!WW2/ZR?DLQ$" M"H.!,T(GP$G@40`C"`/H`I=[F3]GH%-0)9CRJQ/6`!&#[T&"7\KOM`?4^^K- M`S<$>L"AWZ10'S$%A/3U_E!Z?$!E8$=`L1 M`3]^&<$.X5#/LK?XCMB_V9 M"L=]1KV3X+G/GY<'$`%T"RE[3\/Y'Y!0#B#8JPJZ`6*$D\*]0,Y0<;@%;`NP M^L!_D$"_X+101R#8^^I9"7J`^;ZVX+9P(N#H.Q2<`DE[T;['`05A<:@:*/SI M!.-ZGT.7`$HO%!CT,^J5!M>!P<-\3U]/[G<==`Q@^Y)_ST+/WNWO3@@:O!0. M]N*$VS^`($4@2UC[VQ0*]>:'$SZ^81KP=/@_C!D>"JY],3W7(4+`Y[@")`56]K1_E\*<'C>0J<<0W!!^^L:$^;^J'PK`9@#S$Q_> M]8"$J\$Z(#$P^`?:VQ66!RB#8L(L`>*0M/="A".<"`6'@D-)X8#K35$@Z.O= M#BQ^@[^?P/%0*8#94_+E`4X%.`-R'XM`9K`VV!`<"GY[^SX4`!Q!2)`6;/%M M`6X`F;TN@*6/WH#24PB^]7:"R4.JPL:/:&@EZ!UV^-R&VL)_(-8PF1#4VR`: M^.R"G+V6H+Z0AUB*F`+^^X:&]L(M(+Y0?H@Q1`&(!*M_9K_7X7900!@>$`N$ M_;A^'#[9H'G0LL<%6!UJ"&&"C+W880Z1=F@[1/I!")=^%X&F'WCP:LC4(R5: M3::`\D&@'H?/)X#UR^E-%@Y^VD!!8H7P:;@[M.R%`T<";CV/"N7OD1C78_T= M!!9_0CT38@)Q;)CCVS!($UV):0!;H6^O"1C^X_R-`LL`(41+(,O/(8#2NP)L M_"@"S<0!%UFBC?@VA/,U#4U^*``>(;O0;O@J7/PU`UN")43TWK0O;D`5W"!N M"D&!:,$189-O)%`)9!&D][YZ+(+X7P5QJ"<'6`,X"&>!+8OC!_V?<(PR,!(:#VL02@<5/W'?8$_YQ_U"&_C[X83IQBTC:N_H) MB[1^A;\8X5Q3J M^\:*&@I+H2QQ#V`12!O($EN":SUU(@H1]!/7P$^C.K-",U]-[W.(!20WL"OH!-T M`%M\%$"XWL70+>A./.R)!5@$?<#!'E"`WE=`3/99"^T%K47P8*QO9`A#S`T2 M^FB$L3[)P&$/OU%SF)=CW1H64O!=A)'"&V!&.'O#XN(6-P++`W?!YB M&/^!C0*Q`"FPH]A:;!_:%[V$H;_SX6%P`QANF`*V"9V$6,7R@&5O+9@RE"BN M`Q^"VD*6GPC0*#C6`QVB!\^`Y$+'H!W0;[`#M!KJ%^6+1L(:(&:OT$<+O`Z^ M"S:$3KV@H6-@ATA=!+RY&.^+\[VN'KO0J/?[@P,L$L&'_T3@WHQPDU@O3"@R M"G!^+<"I7O$PIN<\7`-.^\(#+`)8H*Y0"3@5F!BB`'2",\((HMR`>OC6:QJ> M!WN)4SX@7X)O`VCKH"EV!-<`(H`OX9%0J*&0(C`:Q##J_`J(6$,2HSZ0(LCJ2Q=0 M!5`#W\![8.A/(\@Z#";6!&>'5,;1`$-F"GC5LS-^&3%]?#\:(1=1/(!/#!-8 M`BV)TST%@`M00Q`84.Q%]M*)54./H(&0,_@9E`;^]HI[/$(EWW<@7V@@+"*6 M!'J&N$(3H[ZO2]@8_/"M&G4S-$5$H>Y`4<@9'!"2!"^+2T/@GD/`?1!-@B"& M"2N-ECU'8^//Z=<,9/8Y_81Z13^V`09M-`!NH/%E24(",X'WP1W`KR<%"`)` M`9``+$4XPL\PV:AE+"@Z&>V'64#!H4I0H9CQ(S'4`=*`9,4Y092LKU=<'`"N M#0J`50'L`?-!`3C@:@"&],R#3<80%TIO_I6.Y% M`9^)?;TYP+W0ZXAXR"J*!T>*UT(9WS809=A.1`U2$X^*B$6O@(71B0@?/"76 M&UU\\D6CWM$`W(CZH_E]`;&/0@(PXJ'@J9CZ^P1F_#:*><4@('!Q+T!0)!\Z M^PZ,G474(!O0B\@R/`XJ``H.-$4*X'PO,]`W[`C`!FF$\SW_(U'OH4A^[/?I M#U-\CT;RW_]\\4?+WK'=\&)P!G@B_L"`4;YW8&11?S@O\/[Y M&(<(O02JGK#OO9@\A#B:#U&0><23H6RQYDC4.P-V&F>/I,+Q8_WQ'VA^?!X* M]>`(:P'(WI:@$L@]F/(-&N,,5A.:HM'`X%CD`/T M^)1]X(%AXZ"OZU>#-/OI!?V`OST;Y/+P_ZA^I/Q(HV!3$B5(/N0B_@:=`,J%2^0)+X`8YA'T3`%+##2 M&Y.'';\GX60O2G@_=!OB(L4#_T?GH5P1/IB-+!R2]J*$CD'\WB<2[1A#5#;> M]6R,AT%[XJ(P1%@9Z#I.!/2!!L@91,Y0SPA4*`,(]AZ$1<',@09R:"AOC.\1 M!VV*X44NHP@2<;XGDCRVG/2) M]02`4++#.#^VWS1Q+-#Y2P-\ M"\V$%&F,+;[B8GTQW'=?%/*) M)8>%-0$7(QK1+%D?7.[-]WP":DD.@5<1S+CW^T%:$:6/JL17H&?/VE>2!.H% M$G5]1\0P8!(Q=E";+".J!,F,[T>/HH`O(SG2,T""P&Q]0@`(@HQOOD?4XSK& M_LY])8&@7V5PT6@-5"XZ&V6'+#-U'?3U)XF:ON":A\\ M!ZT`(4?O`@H@">`$B`(D"=UZ0CT08(&2WRA"9#NZ^*:/&$BXHH?RNE>0Q!U` M&4E[K\1,9$+1LPA(%X%)04[0I&=%A.]5)]5[8T86W]C0_H>?+`F\ M"N6'(#X>XBF#Y+<80!AJ"/^!),3P7XLO0FG42U+:$(^,4D("(B=03KCKVS#\ M`P%\BX([`)12TGA?_.K1&,V'A,7#H%-OUD@_]!&Z(6^%PL0BY7A#*EG\8P6^ M&M^,;X%&@6BR[.`(3.L9]68`QL6X7A%@\>?32_/=]!H%$\&59,NQZ,=#G$>\ M]IP%'\#XGI*/.[DH]$[6'EV"_DG^(8!RJ)<2=`RN^N1](#XU)-MP)DDP].S% M`1,#X`&689[O_K@;?`^F&@6!G\([7TEQOOA>[.^))F<""K(I(`4P+WA0L!PV M(BV))<*>X)\0=B@F+/WU%!T$_44U)4*1&[A.E#AZ_P:#P;_=`'F1JKA`4"MZ M"$F*_<(]H=Z/ZTA*#)GU]0`#4L$-`9"P,!G7`PP(!MR$UD=\('GR7ZGXDPI4 M!A*1*8`V`Y@15K@3S.F%&AN'B<.')+[1/_B6G/O%)5F2'T+:89$R"C4%/$RB M%>-Z\TKYY'P16IAA5!HL$'*'03[LWXY/IUUU`@.*]%]UL80X,92_;?>4SS0%-F'Q\@AY79R^AA,C"6R M(TF!*L94H*7RKW@K_!]F$[^%SL.47\_P7CEX3`4"*%.6+LGQH'EO(KE/!#-Z M^*)^(@>QX8&/9^GT(UHB'M*"/T4=H;;/0)A+'/5Q`124#S_8Y!0`"@#80SYZ M%MD`B<;])*12'7@8S#KR#YV%R0-WI$90K5`.#/F1!L)[?;TNH]#/,E`AU!#\ M`RV0M,OW(':PR&?IY=?R_2@K;"^> M#FV28[U"W[KP!YAA-!&._H2"^3_PT,;2I%<@B`YZ_N@`@<5WXK"O/]GM8^S% M^29&S@_-H"B25=`CE`UF*F.'=$)39.EQQ`BO+!TJ&AM\VD#LWQV!MMCDD_SM M!!V,<3V7I8]/Y0A@Q/FU'`&([TM^Q7?/4I@E$$LN+1.3?4I-XT/P=TAO9`,J M]MZ4YD/_(7S01+@)[#+F^TJ6&$).8PU0%A@IH#\6^C8"*8`VP&JRP3?@FT1& M,'M:9L';P>)/R=?9FRI*'#60Q3VK8'RP]_C]^Q%J^.0`Y`&[X)T0^X?ZPQ'F M`:9_4[[(GE%O(J!9E"H"!.&(P4+>94[/Z6>[G-KD#/V(&,N*PXPPN=B^_.W9 M`[V7+$EB)1#16"E9<%#>`_6%BLN])$=`%ZGO"V)J^1:0H$CB(/C27\BZ9`O> M`VV7@3IHXM?RNI=+O$%2"S6!Q;UC);_O;XDR_.H=!$I\+D"M8[SO2ADRY")J M*9N3@[V.(*U1C(G26PZ.]"Q^VL+DXP]2JA?E`V2:>?IZ/TRG7^9/'J+@F46T7%P$@P0DC54P`$ M*-.6&\!YA-@0!"A$O/;U*EF`OTCV)3"Q-SE,7&-6&`-^/,+M8_'OJQR$@R!%F8YKY)9(O/6WG8>UX^%JF+M0J$X"V0J/<@=`PF M#Y^5D+$1" M!.,&A$$T),Z/19!L-"M>%EB.JL=D8K_0MH@AB3OZ*X=Z;$6NXZ#0#2G#O"S8 M--^`-$2CX>8PS)=3S$/R%(UZ`+Z6XH[OI1@_-/9!]DX"'L5>(3RQ]9?O&_@1 M$5P`J;ZU7MX2EYFGC/+M_Y`E_;\I(*K2YWC1@PB`!0R`Q8/B`71P;9`2*#JZ M!(Z.G<7YH#WPNWA3%%*.%[>&CL'OHUG`FJBF5$I*)*T$,;X>P=QO5BG6@U&2 M]"Q_Z,HP(<_/Y_2+#N0A\,`XHD/[C@%K&F^*96.\$0Q0#^3WG@;3$'^ M#XD&3\LC8P`Q;N"";!PJ*RN$88"CG_OQ79F"S&"2`5N8ID@7(`RSJLF8[/'% M+BN2,,FL'QS2XW=Z;!%6,:.&:T2!E!*,56B`#*3$L"$8(;/IS<2X`AD M*U>96KZ\7RMQR$?5BR["#_E[-TE4(TUR%-@NK`$T2ZZ+7,'EGH^QHNF2S`+" M)#.03C]EWX(3,9EQ_+/H!!R<'"B M*'^2)$>3(\JQT`?DPS>R"\6-:4RT)381=2@3G(FT-D&1[B.47I=1&#F^?`X* M.;F6Z$:K)>Z`^/C;S#=R^((`3``F@&>OR^CH2V?6!9]__,$*XU$R>3A(O"8* M*G&/I0*[8$Q/)M@+S%!N",T",\)D(?D/++DVO"FN_,B41<[W0>AP-1#<]'+F M.%66`DT"I=W20.D8U%UB!&E[1TMG@5"/D^ACO&ZR#;:$3,.4I/.1WD`AB#L> M)K&;/$:4+42LK-GJ"R0UFV3`R2 M]G27Z<2]GYKR6ZB0I`@H">J/)L.[(RL080B;%!+J*1.*N,X_)3<2/RB^S%!R M()V%@\&I8K-16`G?3%ON52:`6CZ@X':1@KB,#$`*+V6)[4A!(7S0SYGS6PUR M#;F7B\Z\@'6QK\?JM#/>#I.'M]Z4QCH0*1SWD1%/TY M!'^=0D'VH_;12@@+5'.>]MH)J,64X]V2<"CL+$K6(&^>5<+@99%RW=!&Q%4. M,1&(";X(Y(9SQBC"Y$,._L2.L3^]X,]O))#_HQ7P&*!D.\<5I99OE]CB`W9N M!$F!W$#,GO.PQ@EIU&!]8 M.E64G4D3YTB/"A`3`%&N!HE_1<4BY<2!Y.=+D/&M_'&* M'&$"@D^B9(OO6&GAQ$`Z)FF$\D8-(O91%LE#]&R4%5V3O,DS'XK0A3B7W&"" M("F9Z\'0GZR3)A#7NP)L"N.6YT%?)ISRL+?BG-J\#Z`'?D]PI0)@Y!CX%$H. M/F,"GD`/W_?271G\F^[)*1N.FC^>WEKO*"E]3/F1`8%_E<\?8#;1)S`'F`N^ M/%F08H#,9W40O-GBFPCX%U^0@L3:(1RI`F.7`0F%:.0JP%=Y_GQ]"FA2"F@ M0,>$H\^IX,=O[*D\3/DE&Y62KT[UP?BS.W,IFP*.*/D5PT\5F8@`"4K_'$HF M/PF?<$ZP8&``2DA1Y$]&/&^)/\!^X$)1G>GMPVG.#EV2Z,!-X52Q\V?L[&CB M]R:%*06$H`E3\E>F5$F6+[6)'X/Z9.OQ]TD&/!=>,Z=[+D!#IM.O0)A@I'PB M%".?'(+/9QQPAB@&!5^6"=>(M8[VG\LQR\CJBR:2(I^*S\A'9N=3DIFE+#C2 M(^=^FLQ`8?V/-LCAVW;"*7.:\DT`Y*UQFIE)[$=.&!D%WDU_XZ10-Q-W/$HN M-'.!5KY,Y3KR1T@NM$)R"LF-RD0IYDPR!KKG$W5"%%V.#,%+(;6P@;CS:1&" M`#-_OE!NYA\TOCF&5&WJ&[&4"DG^YZ/O\%F;A#6&*G>>;$D603>Q"U@A7$]> M]Z`#=\840,B,&!G?(R7Z$(F5]<#C8KT3<'@_-&+6`.4`=P"L0)DO\F?28X%R M!1^7Q\5+X\Q1@QGW^SJ6&!^4=\X*)S6S%%KZBR+N&&F?;SW;YVK0,A!M=#38 M.HJ%S4A'W^2R'&B?).E%.4.0\M!CI3RSJ`CK8PW>&R6>KTZ1XFU0-YF+S'X* M$[<*],,J9O/0HSDIS`FT"%><+U'X@YY`!WK48T7H8X33#2#8RS)V M*VF@!H.H)$W@F4@5/0*4'$^.73^V9\VS$RI&3!TN1">>X;^O'I13RAD/73_. M(1>82`230`NQ,4K5LRV6)UJ;E<.@W_G/R<<_M`P,_F2B34S-WUT04F`M@`7N M+1>6/&RZ"=,!(:"`C>`"%2%V M]E*C7[T(Y:`SV@FHI$@2^BA\Q$R!8W@2U1FHO`>&,_4,.4QK91Y2(QF='`7N M$Q6=,DV47CDRFKG-!`0V%#F=^,`:J88/YV>-O$KN_)0$&#[IIUNP+9E&W!LF M#XV:UH)TI)8OG$F-K/-M/LV#%,1HGQBA)RHHA'=.&&,'IT6@II90R3<1(`_@ M`7"2B$YA*$]OOD<12&U.,24+88#RJ.1S$4C58P5*%$./?LR3)1O0=QE0Y#B& M/5D$=KZU7H:OJIDA,).V!-&D+CX:`7@P=KG]/(YR0P.20+WFWS200^GR+/P= M#VV#;<\=9;YQ1KFN#%\^0L%\/#WRYW91_T?F&0WD-?MZF4F^)M`Q(^`2N&`0 M'1F`ATVGY[+42MAXQ#6N'=^/$$T3H;*2MJ@"I%\:]2R5V[[DYOD1<'G7^U2B M`FN)A$L:XZ`3BC`G712")0>>M,:UGIG229CO8VW2.\.,K-#[(0?3FRBVY!^^ M&)>",<8W9\[Q7@`P@U09$=/19D;`/#)`%@`-`"M*=Z18HJ3U(P, M"NB;!8(7IYY@Y&@J(`,`^-*F*8"E:)+RHE@0,&1HYS4DC@1`.H! M35,"J$>H*8!Q9SI?!)<*``^0'AW-QU24#1J6Y`SF)SD$6-/?H-KT/KGFPPJD M$3.G?(/-:8?O=J@&*$QF,U(*)+^!(:S454`WDXW?F(#14#+<,>P&%O,0IH&<8>'4LJ<_Q5[B M).$>'DEY!.#T^*GI7`(0`9(`30`O)=64/O@;W!M:38>GV0R+5LNSO)$C;6^O% M$:AZ3=-6$D+P7#C-!/!-4(UZ+@!\(I`4!0`#2/5=,.^HIE,H&9X@%2E?;/%5 M4(VH!TA7%P'.)8!%W8&V*+6H@\]17Q<54CCH!*/B")6G8U2_8PL5(&A)S!TR M"?6>,0A^ATL4<'KI?!^2_U)]U<_2)`#UN,@$0"/6"=&<*#V-)GQP"0KM=!)2 M*/V.K#Y='S:2;;J-7!1&$;^*"4$.XC138$I5O&2*"`N>7-0T``M`#3"FO!DF M)V>I<3TG`#&5[B@E)*#:*`%\SX48P#15;7HT30.L`,2IU-2\:>H0G#I-W0/` M4/>&[%0UP#D5A3H3``_1*3U[^M/[GN.4OQ"_K!,,SQ0`5%%7JH[@A4I/37X0 M%$NG,M2QWSY5P'4#;3-T$@*J^,E7*@I@:2KA.YQR')`J?3VN*7\A?7)1C7_" M.,NF*`!Q*@SUL*<_%3^&4Q.I:`;;!9*2;;I1-1ZD5(T'E53]H1G`;,H"&*ER M^$JJ8*DA5G$I1/?/A5,VI`4"+Z@H"'9%19:D: M##BJ2]4-*MET-4!3+:K>5#U[I5.EJN)AI9HHO.B1>5RJ<8)!@5"5JAI290', M`!:51U64J@6C4MA3K>S]5"<.F@^`:HIRY`A2/9N>525\5]6OWG0AJ>K,;"EQ M57VJ3U67:FYF@SK_E*F^4-&F:%5G)4K5)B`VU*@&5CMZ*PBI*EV5K'HVQ9L: M5;&JYU1]GT653H`0W)OF1?D=G%56JHJ2:^I(/?-E)C>K%@Q5Z!\5!?!(I:)* M4IT?E-2Y*J;319D$4!*V^$2HG-1>ZI)O\7?1TPL,/V&KHE7!*<74DNA8O0_T M4X&K8U4SP-Y0H^KU9(C1!)Y[,=6Z*2R5NIAD6*-N3UU^$\=78`)UPME*W'Z" M`1682$><7T,!9KC9A)2J,IV9CY<6H?JS,E@7!&LN^1Q]6CX%`!U@)5A11:]R M'&Q]6D`(8/74_=@#$*F6!@2B##%^1:/!Q2CSU":Z2E%\[U468`I@OCI=9:CD M"::`;-3C(M_1'MKCFV:.#ZB>A,>VJI)2E%C-S.KUYMX'F8C$G[%PX.W0O0 M%-6?N-3W*=@`Q4I/M5V$OV![J+\Z099$-],B-`+D#MJ+`$#:7G%/QA"&%/JQ M,@>>V\FY)`S2%>GQ2S(.]8BB',E=Y!SU$DD5$%*>2(=Z*5+Q(!E14?H0=>NM M3,.>G4=Y*R=C3W/IA+`!4#;^SC$!@2=/,$*X'+/IU[3#A.3\^.Q$FWXEO`3?H8!0`* MQQ23%$"S9GTP^_G5`PRH'L..>\58ZR&0VLC3*^Z=6+T]I2QQ<:#=2YAR M^M@`;CVCWEC/KC?6^^H!^)`")T`OJ]Q/;0K;O/9M25>4KKXDP('`LB>+%.JM M6U>4M@7!(&DO"%`'F$+.!R&`PK%OI>9#;+@%\"W*]!J6T;XD@7/0"IAHW1LR M6HNIND>`(*15_-C6._--6G^6PTA,*Q3@V'=K5;5B`X.<5\2@0*(@PTG-U/&1 M#DRN:,U-*TZO'ND&V&D2!I.)I,4MP89PU>J[K`#6`[^>*06V:DCQ#O#2B_C) M(2N#2H+,0`40Q.?34[46%<>:Y$>8JV"@U6IR-6W>`].)P5:I:VC/V.KT1.KY M!)6M:85(XQ1`U-JWJHU;Q@B50.&_C2&,T#)PNUPUBB+C+5BN]2N%<`\8+QO^2<'S+7" M1T]\XD<&Z,)`#-!SY;0B']<(%P%Z(V&`V[=T]1D6!MQZQ8$MX1,@?]GBDP*$ M#AZ1B#UJH;.1":!6]&8"+,^N7T^RA-@0G7#=F^]9"+J3GKTG@!3`"<`$X`R0 M%@A<'X=_9$(0-8`0$$L6][A[#`&Z9-@3,VEXC>M]6\$#)8(38-P2,"`'*$E2 M"W^6C$1,*]]1Z6JN$[%'*'_OU!?#74Q*B M&SM_2]J!7PD$ZP::(J@O]SH(C/<5]R8%0;YGYZR1I9A[%32F M%LN`/;T/805P"_MJ[<)*^9BN^D,A9;_512B!)05.(:NAX=7#GA$V"KJ'Q;7R M-_5]L=96DM@04Z`I2+>N1X>2BD?*7HP1%F@![57>#FNPCKXSJSOQP6<:C%V^ MP?*NA[TZ@MF!']CBFP*$!]8`:DJ"J\$56/B!=?0=`0I[@\RAY.+5(4"`8ZON M72^5=[U?:N?4LL?=J_05*1F.4\`M@`W@!"O7H^NI8*V3,\*VWN;5:6C.7/-9 M$I$`+H`6P!#`!4!Y+>T=#8("W,3,*^G5C5`E/+VB85>MJM>I)6-ORZKOVR5" M*#.PDD=-)VCR\JCD2_G)-G.O_LQ88.^5O]E`C-1`]\(4'T!$[.%P$7OF:\06 M'.D`IEC`7B3VS@&$.J[8B]H2;V=EEA],2V_M2:HMA)`2D6`K@W/,5^ M%E*Q=4^CWBN6;QF+S76>.$GFQ2P`Y`!=@XH!(7`AL M!;&59TZIWA-`T3I%=?6-9/$F*[WQ6BX5#<`ZR'6"_(Z+R-@Z*J8U91!5M#MJ M#'*O--&P)E>7(BTRWSD'N,** M_(`IJM!]9_[/*+`E_+_N!864#LNUZ]:1(HLA2+>B`'(`],&M@&7O;,I2I+N* M'V,1,X"%0*U#_BK=RT8V!3"$SJD<@)NU7:ISI"DB$N6L)8"_9M!13\`")6R. M%?.L1KT@@#GS58D@?)6N)$MZU901X$TR/+H<9.G%]9"CAP.T@=?97&+EN:15A,Z(TR.XF!Q$'" M/#>$J5$%HG`4C+@0_:YB9D&E[T'%`!;1TN?@+!ZL&SJ`ELN)0U#/63#?&U$N M(PZ0QUF@H-CTVE#BO(J^]<)[S4NP7@7S@OD"!`HX)$L"R4[S9(712SDF!%,B M10VIQ5EY1#P0>AH?1212"9NS>-%E1/%@'@$XG9N"]8(`'E00ZEB0!>KT!`V@ M`26<:46A)Y]SL&?V%`2>-YNG^,7O;-SSD[J;9'"6'>JEUX;D9='RRL><-:(R M]`H$P+;Z+.#3*GKBC`D0X*"#7=?-X8:`BPD^+1DJ:/.+XEDT0[W4QA>F2,ZZ M9RNTSMD!:YHAMDJ=C7$"1N$F+]B!YG;6STB@74A>9R\8*XBFYY6D/;N<-0+` M9_.>%UH2I:55;IH$S71N.LMQV5F802+VEFHO?7KV9/E\MDR4H8J61"F#0,X2 M:;FR1UI)YX"5R2I7K='R0#&I1$GLK-/3R9IDE>H%"J:$;\^')(J6?.IA5,/* M_U:#`E7PX)86W'"K'-).:-^S%EKY+)^V3&N?Y8'Z1=]ZZM(U+7$`TFE*]4L^ M"O=[NE5M)*`R?BC^]-%N:=\/7MH)+9@V4#M@Q=0R:2VIM%4EX?(!1+LEK*4N M**^SEUFJWIZRMHJ@]:5:9)EZ;U::(NSTHO$--/")K[4`6BD1>P% M`9H`10"OX*"@UA%W/(.&"(BU2-#IK'T630O5P[]E9X,`M,03:]RR2(KN9+8. M"L&?!K^RIR9[4X`L@!/@U#<%2`)<'LT";U/Z[&DV:KHAM)8. M&VFH8ST%P!$5XS"?'7Y^''V2QT]F+8(5?[I<]:0"!$&IUT%1ZN=4P@>P50#8 M.O:HBU/JX"956)L2L/%5/C5[C-,O*M^`9+N"X`LH3C>**=N+K7<3P+^7H6610D%J`)` M]ETTQ6;1>03S) M:\.10S]HJ6\R;LM\:`D,#Y6G`-9'Z-Z6&TE`O;)6:YV5*U$OZ;MR[LF=^T$G2)T5T4N@:ZP#.]_`44P`?:!*@U)<$>`(X`4BV+3*E[980!#A'?=P* M*BV0P$Z+HMX/NZ@D[%.2;<62J]*1[;&UW#DUN(?&#]N,6#[O+-PS/-L>/+M& M5N&O9L'VHKLUA4@&,,^**5,`C-"XGA#@NG>;6#NR/<&27%.,*TDQ#)NG97!> M#=>;)%-M)FP2R[K(1(H";]T'DL,98OR6FQK3XU`B'$^*7;UJ986QO;G5/!)6 M^_2=:X2B9)MOJN='3*!^&A-^)=/1+=ARZ->Q98[F#"&:ED6T(RY3ZDAU/61J M!8N<7\%(K2P6KZ@'E=D611F<;C[Z(7;2*TE]Y#A\/ANEHSUW+=)T98NS#8@^ M9N4`WEMG"4L@[@@>`"5&7Z^"TN=]G*43+W#0OBOX:>QW4OR M"D&)U\Q:J6F0$KB\JM/S"3B4H\V!+J]U:#?]L]7QFWPT>AW1+* M2,^7WK\BHI6R!@R8+K]P9P)6AZLE..."4Z&4:UPFI:QO;=O!92?9 M;BVT%QV17]=!0SMR=`+H4(627%DQJ4:R05LMU.$>^5*Y(4\+H/?T-LH:7!*> M!%H`H=N?P.\QDNL5G!'*/`>YE5R3`!H7D[LE9!_&%V%^W]N40MQ1*0FCI8$B M*U2@:`;Z[*?VJ,=$[>&&-GNB9LMN)Z)4Y)F5G!00;E=9!DO$'E7A=QDS>#^^ M`,.3!(/9Y,02&QC#11WV;UN(`DL_9G$1R^83-W"*I1"SE:%Z>Y$EM8;N'4XON?=[^*Z6FU$QL9_E4(X@BE'WR\Y`7ZU"]W(*K*VKV>L10`6&9*U(,<:;0?U@]H$L-N2 M:D6O"<(TH+ITBMMAU92B#K&U[,J+YS9!#TC:`^1>24>#_D%Q+4.O17CBF^\- M`;RUX-G58$]W__A+NM>6]O2U_%I_+>"%N<9)Z`^4#;Y4DF M=CFH^%G&[L36B[K#;0-4396GAM3(ZL>V9VOL8YR._@ZHX-R2K5TR9%NP+>ZR M;"=_+]OFKA3TA#JTO>CY:0T-(5BD[=?3MW9 M!-ZQ6\*NK9V@:5C*M"**;56X%EENI0,W3(H^K3#.2-NVYLD4H>96+]!8K=O. M">B[\;UIYN)6+-FWQ7$&N6I.C%O=S*;D>5(H=`ZWSO">"T;=H^;3V3F;VI;=7V:@N\[3KT M:1FT3+T,+WY7?KO9Z_!>.Q^W(-[5K6EPQ`LB?-W:(T^\8,.4ZB<7=ZN[Y=WZ M;O^WB=/U:'S/@#OT-'W&#/V>NJY?$6;`>Y75LM(7!6(_F?;1G* M!I5\*LR[WLA4_"@;E)].+=V45CZ&[KYCZK?9C?<=(P>YSE,QKPLWS)KOBQN2 M)P\# M%WV94M"W8#YS)OG2U'6>%PV]8,+W8)LS6JE>M'D"$"N@/TU(IK@TUD=&=>)* M".Z("3Z&+C"%IBA96"/\#'V1:UU:(BB1*ZODLYH^3F.E+;\Q[J5OD,O=3>,6 M:9V0*$`XKK/S!9BG75AR>9>"*]R1P#57#YOJ_0>Z&T=]B(=7*4.7^T#RPT;: M=,NH+=Q%;U&P0>!,K4?NYV^%)]/5R6GYP3V4JCK'W& M]:Z]JMP.+IR!K?HM+.X)7[$"Q%=I9:&OSEL"Y.<&_8I[;,GH7[MW9OONE?"5 M_0RYFESYXB)SL.>!A8#"!0.]I-8I:(;QJX.@6<,MX%%7T\@*I`$6%4>FG]3_;%/7Y&MP0%)N>#=[>K[W(J\3-[G4+?WI M'1%[?H)7YJV0@+H8&+*V^*BZS5+++AD@3-'K=?<:>_6\,%\K88E@#1C<-$9^ M;W<^MK[I'H?/Y:N6I0E\1Z>!M%+2IK=T2GCS!?"I`(:H3D^KHD)V^,=]Q.KZ M&[>ZJ<,TXP#2&4E/#&Y:!+*A0C\3(4-W"G7]5!P$?%>:'5R;0,[0GXC9F^PF M#Q^=MU*GH'A`,-CWS?D^?/>$T\"E8N%7UC?Q_32.;;N\D]I=Y^-V/^G4:Q`$ M<1F`I4H2KY'7D6GP52\.*\(3F8>G7V)O#1?W"`K^%]SUHYE/0J5OK!/!I.K$`(%2JK74RKN<"*/_N M#9L`+,KP;P@5?1M`A-86<8F0"U^_+^`7XKN=;!E$"MZ42%CRXYJPEGN_]?K6 M&PV&U5Z2;?HA9W@&+30DI`!?N&=?NV0CVR[MA0<\NO`/E"4<^ZX5)+Z&J2!.S65:A2 M+.6Z;E;F8E]V"FACO>O&3-U'1D[#K&&SK^NK!=8*@`^[A%V\:"@762N=3>S: M9^N?'=KMZ6.W*CK9RXSJ:4NT,\J0H1[37SA=DE[(\K=KG&6W_&PE:V" M@>^?PUU(H5%/7TD'T)SJ;'F[`MN3;64@9MNUU=PN=[.[*%LI*"6X;BL3+(R1 M=TVYYEVH;8Q7O9=F6XTZS\MVOK4O7OFM;W?'&%L&]9ML1)BA26ZNV79BV M;4&A6D,!;]9VY\-6'06O;(VL>-MB(#Y7]XO)-/$>;,6E;>!/J:DT#7PC?'J2 M!DNCGCWLKS9QAUA-2=J6%2E^HLIVH0RB3WN[K4PV>:D`O=O?K>:6U`#AO#66 M=OZY1*62U6"%4GD+>43HWG?7?#.8A^^2KXPK].3>ANMG0R2 M;%.\/=OFGXEV>[L:%,^:;,V@6N#BK"!D,Y)#Y=!" M@N.6A-!G*C;3'\S"/6V21(\&%<7"98*6(2P'=@^V->&##U[@K6M,%8K?R_S- M-=NY][T2WR28!\G"]37*`M]\/CZY7^%O`@N8!)2N)&.WS^"&8`'48OET#(%V M+[7"8K\.KED@9YBBM2)B#9NXS,<<9P-CM8B<0SRN<9.)B/O>8T^@`NZ:[T),.6/"6`!EO5F M3_'"58!1(_,2M0GQ6_8Y-KN(DH&:Y$BW:UI-J?&A([K`/LDOL$WXJ1<34.D" M@3."&4:S9S_XZ5NP_1"2(1.\;=QV:?3Q,>RN)*!J=4N!%%#XH%"WHDO470_* M,WU[Y\TH8M.PI&!M[Q:2JX@$UO\I M@5FF<@>7Z<]QSAIT#''=!?:Z4^"0GE\7L'L%+M9J@8^UAUW@\-ATY.@7E7$R M]X:.3D_W+\0449L,QNQ:,W^C\$7^KNXRJ0LNK#`R-L.+VMK"Z!*R!,D-'MTS-U0<'4W2"QAU-RV M;*/$3.+JKDZ!9NO=C9Z&=R_!7-H6H6VW3VDDAA1PB=FS1=N])EX8:?O>/06[ M>,^[45N_'BN8QCO@;3AR;0^H\]T987W7Y5<+Y@F+;//!<,E=<']W)/PM+!`& M>`FW\L[.JF>1J9=62P8K>)G#W`]R`Q64\K\Q)4,W!J(*?0O\ M"BNB4CVHGQ51B_N/-4/*+2.,50%E\*V8/NDVC-^>(RVFZD8JL4J056SF^PY+ M%G*'U=0!5^W6ME"':^\7,MXKF6/5;LFA?VZ M3Z6F8-X#ZO26W%D0)ES:@3>Z3LI4H)946$LKX%>(#=>W9[Z(9QAV@$LG72N.0E@%KE"/@5L&1@V6,K.V_BV$(%5VWYD2C>O! M%ON(AL?*L`*7PP>Z[(IJ<#&$0DP0+KC/^[H>?`.3-'>9.,B.)T%4P@GR]!/3 M(O%['5P[0;FVX,K[B7J/TB#NDE#!Z=UM\B.*^:=QQP3=DE89: M:+D/0MRR8$R51XQR1/;F?\]\O.(/)$B12'DU)&9N_&)CZE(T#6"6343> M.PV2AM]))([36;CM=775^02AV.'4YE11677`@>>%,Z#[<)3#YG).='$VXUT;_*82FBYM%T\ M3XT`@E(E;E:OAYOJF^\E#V_%.&!RY#:53HK,7!0C2N62<@1:KLZ/H5NKH/,Y M"P2E\3XLH:MO\!?>[>Z&*5!ZI5/VP)80WOL^1@$X7M,GGF++0/T85IH\YA[7 M5V,#+5KEI?6X78L_]NI!CZW'7-D`\JN4>]S=[1\?^>Z\6\(5`+G/III`+MI6 M3_NX`$"WGL:RDSF4;`E^6L'&Y('Y(#78X/?/PQ['`C_%%&0",B%W:>GTU"`# M`)'$(4=+*ZV5,TCRW7$^*$E[&,A$G][8S,)4R$[>3>0#!@&0`*S`&:`F''&%"4%//IM=X"VK+/1YK M":^&.E_'(.[Q='QW%%2RC?U\F-;2J347Z2>;91OW<85Z"-5,+B5R[3LHY(?. M']]`,,T(#:6T20?JKO$W^ M+S5[:%W8Y.%P2EL65G4:)#-^16-5X!0R?4FO+3K*4@.Z18"!;D%7`AS56PVW MAB'&(@?UZ)90`PQ%?@]NAW>O!=36H^<3YU?QG'M>3CF+C%[MYT*2]-NK77&> M0+E[-]`\KA>XL,HT+NHY/=?#CL>T(`^XZV#K8QM+$5W&DC]DJ@98BE@7O"(; M-^.'2WG`10E&:CMY/GE)//V]A^F^1F"<7GU83H``Q`\?AFNU>-UZ:CT50+RK%1!7 M@0.[PUHL,"@703S\5"8'AYNT40!-9X'O99:=9=/6`Z5Z(V`K+5DT2]NII&96 M/%V?Z--1Y1[XD^L'CNVV=Q?!A&"?;76W1@Q)500/@GV[$%N,LD8Y$BQCU7R0 M@S&=;V)5<'IWQOLB#KI".&/!"-[!\02P3PPIS@4G#]&V*67@XEEOR6L.MA8[ M>=7!D55@A/MX>!LF!/W6E%M^6F4$,`]TIYQX7"`X-%N)M^2#HPB7T-ME%4_> M%46][\6&9]H88'BLU-SB30B*:4^>WDK2"'DJ2$K.$/M\,T]XZ*!8**PO5+4!;PSBQRG"A20S+;FY@X%HKUIV`:@`^N2> MAG^WJ>%6,J:/-0Q1KH"H#YV>L>%S7VHVKL<]N",L]6S#',)FI.EP-ZQQ)/.8 MEBO*.F(SK9.VP&<<%OW6/F^@209;W^PT8WE/4F\-P!0S6G?NAAP.`[V!MXCYYY^``P:N&Q/F!)#-T* M7'F^5U,P,6UW29P8$-EV@I6[2F)-<).YNGLH"#*O;)_$)MLQ,67XZE=!_NX: M;??'8.(K,9,Y9@NTW6F>B;W,!V8P,\NV2SMF_MGB)\_,7N*?,7VU?]HF7MJB M@E^\Z%TY,5&99$O@/2KCB6W+8%M:\)*PJ3S1#!2+<'G!NE2,9J=0/8C:C7N^ M/DG,G$,^LX4W7I@K-?#*@O?$HJO77L5W#`4 M3"MS^YP)AG3B\%`2B>$VS%5H6+Q7@3:P8C1/+>->[=.+O[4OX-/NFG5/& M]9+(SL&AHWZ9I4L6C1F^:8^WR6$L*'R4>)P*)/?F<]&2.\W>[TD@:#PM9N0F M<1V+^P[0;14WPNA`)=U:1&&-$)?!1=YF\,46C$LO#MZN M4*>6`E$5J#SY5*Q$GF:NA\.P15(5LR$4DVA_[(IV!''))D(.<6&9?,N1G?-2 ME7.W5F5L,5:9QE<:CA#3$2N0W4OCK:DWV60(:$W+"H(O/V^"TE^;D`IH5,YBCQB-D'F M8=V/Z4C':4CP)C@2Y)9V='W'AV,?9R)0N=JU3&?^A?V1KE?N96\0S/J:%%)Z M5T7*P4+FKBCJ M<-T`>`#,#I^'?5PSKC#WDBOAFR-?#?NK+`"[ZM[P+0P#[B06 MD_&B9H$BJ-T9L7M1+N6>.3K\,1JPEL?NM2MX<*PUS,8`WH$@B;^46!*Q8'IVJ`5@`=4)8KANX>=S'K1YG)K6$T^,'6^$W?)'6(W;\^7Y?K`A`[3 M^."^5]`#ZGS//'D"#NIV<5^WL\1_H*P/,5H?(.IN,JV`M&0B:?(B6>Z7Q+WXES,;6("5C@:/GFDXE0P!-NB*EA.Z$&4&H`;U-)M:Y@RF M2Z^3%+_:L)`@@/@!U@U?GI&T&`=G"9N!WV%17A#/5E.Z\,]JPLPLI[MN& M"EFYEMUI,KHA3UJ4/-'B)OG/SN=W;=TV^-O5%?K-DP65Z6&!(1"8Y?@F'0+# MA].9`>:$(T'971KVY#CHA_N:"N;^L!W77BH%;BA#F`G$$V8#,9)V"YP@;D+K MEJ,`A]J_B MF6W-<^*7LE$9%OQG3BI?9VV-3&5SL5ARZ?P/9*::/17-(X83+R-JJS_'[&B[FHC\YU\+X#)CR(+LYVEONB?U$D@-KTF.G4.T7C M1?4"[X.'-.6T%9W?DRSXG"F[:66#,982RX?OM.`6F@&T@X*:0-P1XLB=#8UB MA1^"\=-8]-R/22B,[IP.4O>NP&(X'_B4@N@R)ERF&N>@V[W#+]FW9WP19!Z/ M`7)[RN"$M*[Y@0C*E0G32PL&4DT M@%M\/6A.8*"4-OQ:'D*;C&7+RT3:-D@L_8D.P\_NF"/">Z@>D%ICW:X.=-'E*:@9HGIX#9TB+$-/,^?)_L%Z<@#0:3QL1NO>*RE\_>65Z'\YH'Q'$#`G M@0O*=6A^H!-XP8<]&!WHFS8O3![@3'*$4IPPR+:EHJJ?403 M^,C%B&5@:J0X;5CK13:"$3&FI619*Q^X5_MB#D7'F(6W^TGM+I?5(CT$M2FK MHG/+K.@6)9^R20F+=@/4_?:&SF82[]XP"6@FO@3#B+'$4^83X0'5$QQEUC+; MIVV$]&(H<9NYNIN?!A'"F6VV:>:<[74W[C@F-OO]"A_4:>(O(?*N.87L3>8%RWCF^\ZBH^+R^&:-`N7&-TV9B$[>MV8R.C^IQ=Z[%?=A3B* M=OO,T<=S-+UX;HNDK/MEHY/!UV1"IV&F7<0#Z\*O;%-=6 M0*R@/\13;0U0QJ?D0X`RBUW%*EAH,?MW5ASBZNLUJ%>`,0@Q;OCO3A#7"U)J MI@>TLN=;J&67(OTY=O7*A?5]Q=NAIVCW/G"D[.M=J:O31T98<>UO*AV\;0"O M>%N\YEUI]"J8&CV8+E4Z/?G30#T>@T(TP5NE!1_;/.?32NKM-'P0+OS$13Q\ M/L'3I&'C:866'7U5!MZZG'G0W`.)8?PY3/HA')DR(P6_*5.5('`2F]DJC91: M$&&/?T3^X3?ZN>DVU%!6=X=\1F=N[Y712XARE8X>]AJ1OU92M=L6TOP>!/"E M/T'.X%KR:1*VO2Q&E!5;1(\`68%.(X5X73H5UM^:,=NX6\@OM9JZE^O2XS<; M*L=^3,[*KJ-O1(D0YCAH*(R?A54EZ'VW8VQ/(`4B0*..%P$XPJAQ(KBJ%=5" MC*ND3E\5-==S0@K?^U9/,R'5S.'D*`OS=D"4U6TR&N&'3V.V,NVUR$@(!-Z* MGFV=&^;*+CC:2%T\KB<>];:\V>G.J1HY^L=?+)/FC!.3N\J;,0W`^S<`->+" M![N^;,4.;JV"M.N(U.G=>IG/?^'E^%@$YH+MXD[ECIBPP032L#,<+NC.F6-FNI;ADV M"&E[:MJ8M6,@LO?US,XB%`?0&E_S8L::A=NWG8;6>_-ZSI*1"1.X.MU\?@ZX MD`_4Y[[(7O`WV(MH=W^_1UJA7_M[*((:FV^:+;61OL@L6#OI)-='-L^?!Z/92RER`+9P2 M+K<)CT(A0;+28OV-=G7BJM'6M`)VL)?ZOGB_W>\V"$*-3=R3`+UZW2R[Y:+Z M)I&5K5ZTY9A2BH@2W1FN1,NC,='`:.\3;&0WLFG=]3DL&H<391GD=7D$" M*:G34VJC']W5TKHRIHN2<;76CX%3G M]5!ZCE>+:.DT_%#!AF`+&2;8UL7_=0<0@[WSLP_K"<`SLF0)=G&1S8".$&%? ML/W'EKW2:4T`Q$J`ZP"JL-]Z>J8'MI"6A$WSPV&7)E'8#6`)-JJ23ET@<&'W MCQVO1KW2J6NLB%W#3NL)L1&U&`HC-K`W:RM4R1D*)J=\C4B_,0J@8@BS1"?# M!T^M(\4V;]:PQ",^.&(NMD(\31;+UAC"(: M+Z\UMCZ&P-YULNPICNQZ^R1^W6D=075YWMO5BTI>#!&*CTW+\[M69IU&WDXJ ML,^/+\!T@:MZ6?F--L],:@2VD6FE*V=PKBU6I8K2P\". M]#S-9TX[*S#W5MQ;9NDR*36"O-3M]<19^5@EU%]C`0>Y?(`#]6.`#]"/!@2* M!?W7%X===6.PN M?(&-3,KJ9?0OZ*LC)%ZKT4A^S%\L@95O:"C4,_KB%>F-T;Z!HX580JFO3CCR MLE&S/ME8M6I3$^KLVQO>1T>*:5YI;P]032G\\U^;YCB5V,"#=2(WCOOKA..& M3W<#'@,AY:W8D,WS].P!K`O:K+Y@,ACP@(@=/=((;\VO-&C4<-T:H5L!5DY/ M)""<86FB7NF6++WC@RTS(]N`&4ZU]"R"X^@(5!`?HB.4U=_:-&)2!DP!!A67 MD\.ZI\TTM%EWOZS6I1?O;1""TSTT[VY:GQK7]4W;AX'3&MDX*X(9#TT%``]8 A"T8"^[ZVP$`A!BA/:`LD%$``1,)\`M$@H;`YZ`L\`4`5 ` end From owner-mpi-ptop@CS.UTK.EDU Wed Jan 27 05:38:43 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA09209; Wed, 27 Jan 93 05:38:43 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA25168; Wed, 27 Jan 93 05:38:24 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 27 Jan 1993 05:38:23 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA25160; Wed, 27 Jan 93 05:38:18 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA16655 (5.65c/IDA-1.4.4 for ); Wed, 27 Jan 1993 11:37:24 +0100 Received: by f1neuman.gmd.de id AA16117; Wed, 27 Jan 1993 11:36:31 +0100 Date: Wed, 27 Jan 1993 11:36:31 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9301271036.AA16117@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: working document Cc: gmap10@f1neuman.gmd.de In an email which he sent to me directly, Tom Henderson made some comments on our working document on process topologies. He wrote: > In section 4 (Overview...), all routines except MPI_INQGR and > MPI_MAKDIM are mentioned. Is this intentional? (I'm not objecting, > just checking to see if this is what you intended.) The omission of MPI_INQGR and MPI_MAKDIM in the overview section was not intentional, but I didn't try to include all single functions in the chapter, either. What I had in mind was a more general overview of the functionality. Since it now turnes out that only two routines are not referred to explicitely, I think we should add them for the sake of completeness. Here is my proposal for an addition at the end of the first paragraph: ------------------- The function MPI_INQMAP is provided for inquiring about the topology of a process group, whereas MPI_INQCART and MPI_INQGR return the size of the process structure and the position of the calling process in a cartesian or graph topology, respectively. In a portable program the number of available processors usually is not known at compile time. In the case of a cartesian topology the function MPI_MAKDIM helps in setting the numbers of processes per coodinate direction, depending on the number of processes in the group and optional constraints which can be specified by the user. ------------------- Okay? Tom also found the following mis-spelling: > Routine MPI_INQCART is spelled MPI_INQCRT in section 4. Which is the > correct spelling? I do not know what the correct spelling is, since the names I used are only first suggestions, and we still have to discuss them. Of course they should be consistent, though, so I changed everything to MPI_CART for now. Finally, Tom made the following suggestion: > Would it be a good idea to begin the subcommittee session with a > combined meeting of the Process Topology and Collective Communications > subcommittees? Maybe we could all decide exactly what a "group" is. I think this is a good idea. At the Dallas meeting we already decided that the two subcommittees should cooperate in the handling of groups. Rolf From owner-mpi-ptop@CS.UTK.EDU Mon Feb 1 12:32:41 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA29157; Mon, 1 Feb 93 12:32:41 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA25164; Mon, 1 Feb 93 12:32:07 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 1 Feb 1993 12:32:06 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA25155; Mon, 1 Feb 93 12:32:02 -0500 Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1) id AA10551; Mon, 1 Feb 93 12:31:59 EST Received: by b125 (4.1/SMI-4.1) id AA09570; Mon, 1 Feb 93 12:31:59 EST Date: Mon, 1 Feb 93 12:31:59 EST From: lederman@b125.super.org (Steve Huss-Lederman) Message-Id: <9302011731.AA09570@b125> To: mpi-ptop@cs.utk.edu Subject: comments Well, I've finally had a chance to read over all the topology subcommittee mail and look over Rolf's latest draft of 1/26/93. Some of what follows is small details, but I thought I would send it to everyone because you can just skip it over. Also, the volume of mail isn't yet overloading my disk space :-). The question has been discussed about how to deal with two groups with the same membership but different topologies. A few thoughts. I think a useful aspect of Marc's proposal is the relating of processes between the groups. I see no conflict here with Rolf's proposal to optimally map each group. The thing I don't yet see how to do this with the proposed functions. For example, you can use MPI_CART to define a 2D grid of a group and then use it again on a different group with the same members to define a 3D torus. Then, MPI_INQPID can be used to get the PID of the logical (x,y) coordinate for the 2D grid or (x,y,z) for the 3D torus. But suppose you need to talk between these two topologies. For example, if you wanted to take your 3D torus which has a 3D tensor and project it onto the 2D grid so the indices aligned. One alternative is that you have to use MPI_PARTC to create the 2D grid from the 3D torus. This then raises the issue of how they are related. I don't see anything in the standard that says how this is done. Will the group ordering stay the same? For example, if a node has logical process (3,3) in a 2D grid and you MPI_PARTC it into rows and columns, will the third member of each group still have what was logical process (3,3). Am I making sense? A second alternative is to figure out the mapping between topologies. The way I would do that with the current definition would be to get the PID for one topology and search all the PIDs in the other to figure out which was the same. Is this the easiest way? If it is, part of what Marc was suggesting may have been an easier way to get at this. I think it would be useful to allow the user a way to relate the different topologies. This also relates to the question of doing a collective communication before and after a topology definition. If the user could determine which was the "first" node that received the result of a summation before and after the topology s/he could relate the two results. I have worried some about the definition of trees. I have talked to a couple of people here about this issue. I pass along several points that were raised. Trees are more complicated than tori. If you restrict yourself to balanced binary trees with 2^n members, then things are easier, but there are applications (probably the majority) that want more general features. A simple example of the problem is that if the tree is not balanced. Determining if an logical address in the tree actually exists requires in depth knowledge of the tree and not just a couple of values as in a torus. There are also applications where the parent has more than 2 children. Another attribute of algorithms that use trees is that they often change the number of members and the depth. They often add children (leaves) and after doing this enough need to re-balance the tree because some some nodes will have too much work. This raises the issue of the cost of adding members to a tree whereas a torus generally has a fixed size for the execution of the code (or does not change frequently). There are published algorithms for embedding a tree in another graph (such as linear, etc.) and they are much better than random. What does all this mean? Trees are used, can be mapped intelligently but are more difficult than tori. I think they have merit but I do not have the expertise to propose a standard. Does anyone else think they do? If not, I would propose we either solicit help to do this or let it go to be dealt with as a potential add on feature later. As a general comment, I think the error return codes for the routines could be more informative. For example, MPI_CART could return: -1: Sum(dim(i)) > # proc in group -2: period specification illegal -99: other error Do people think that multiple error codes that specify the type of error more specifically are useful? I am will to take a first shot at the other routines if we agree to this idea. Now some details about the draft: p. 2, par. 6: There is no need for opening a channel explicitly. I would change this to: There is no requirement for opening a channel explicitly. (I would do this because channels might become part of the standard.) p. 3, top: On the other hand, a more precise specification.... I would change this to: Additionally, a more precise specification.... The sentence before implies weights are unnecessary in practice and this sentence implies they add complexity. The "On the other hand" implies to me they are opposites but I think they imply the same thing: don't have weights. p. 3, first complete paragraph: I would something like: Also, the mapping of grids and tori is generally an easier problem then that of general graphs. Thus, it is desirable to do the mapping as grids and tori rather than obscuring the information in a graph. p. 5, top: Add something like: For example, the exchange subroutine might contain MPI_SEND(...,neigh_pid(1),...) to send to (i-1,j). (We can be more precise when MPI_SEND is finished). p. 6, fig. 1: I think it would be good style to check for error return codes on all of the MPI calls. Also, it might be slightly clearer to replace the value 4 with a parameter. p. 9, MPI_CART: I would make the hypercube discussion more explicit. change: Note that a hypercube is a torus with 2 processes per coordinate direction to Note that a n-dimension hypercube is a torus with 2 processes per coordinate direction and MPI_PER. Thus, ndim=n, dims(1:n)=2 and period(1:n)=MPI_PER. p. 13: MPI_INQMAP In spirit with the rest of the document and MPI, the routine should return "symbolic" values instead of specific integers. Thus, MPI_NOMAP: no mapping MPI_CARTMAP: cartesian map MPI_GRAPHMAP: graph mapping MPI_ERRORMAP: error occurred These, of course, would actually be integer values that are defined by the system. p. 15, MPI_INQGR The value returned is from 1 to nodes. It seems that lots of other places in MPI it is zero up numbering. Should we switch to 0 to nodes-1? Wow...What a lot to say. I probably owe everyone a beer in Dallas who actually read all the way to here :-) Steve From owner-mpi-ptop@CS.UTK.EDU Mon Feb 1 13:26:29 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA29899; Mon, 1 Feb 93 13:26:29 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA28026; Mon, 1 Feb 93 13:26:10 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 1 Feb 1993 13:26:09 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA28018; Mon, 1 Feb 93 13:26:07 -0500 Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA25619; Mon, 1 Feb 93 18:26:04 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA00489; Mon, 1 Feb 93 11:24:59 MST Date: Mon, 1 Feb 93 11:24:59 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9302011824.AA00489@macaw.fsl.noaa.gov> To: mpi-ptop@cs.utk.edu Subject: comments on Steve's comments Here's my two-cents worth of comments on Steve's (probably at least 35 cents worth of) comments... > I think they have merit but I do not have the > expertise to propose a standard. Does anyone else think they do? If > not, I would propose we either solicit help to do this or let it go to > be dealt with as a potential add on feature later. I agree. I certainly don't have this expertise. > As a general comment, I think the error return codes for the routines > could be more informative. For example, MPI_CART could return: > > -1: Sum(dim(i)) > # proc in group > -2: period specification illegal > -99: other error > > Do people think that multiple error codes that specify the type of > error more specifically are useful? I am will to take a first shot at > the other routines if we agree to this idea. Yes! The more detailed error codes are, the better chance I'll have at finding my stupid errors. Also, error codes should be symbolic (as Steve mentions later). > > Wow...What a lot to say. I probably owe everyone a beer in Dallas who > actually read all the way to here :-) > > Steve > Yup, I read it all! Are you serious about this beer thing? :) Tom From owner-mpi-ptop@CS.UTK.EDU Tue Feb 2 10:20:12 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA20600; Tue, 2 Feb 93 10:20:12 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA21021; Tue, 2 Feb 93 10:19:46 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 2 Feb 1993 10:19:45 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA21013; Tue, 2 Feb 93 10:19:37 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA01293 (5.65c/IDA-1.4.4 for ); Tue, 2 Feb 1993 16:18:14 +0100 Received: by f1neuman.gmd.de id AA11127; Tue, 2 Feb 1993 16:17:54 +0100 Date: Tue, 2 Feb 1993 16:17:54 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9302021517.AA11127@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Re: comments Cc: gmap10@f1neuman.gmd.de It seems the discussion in our working group got some new impetus thanks to Steve's mail. I would like to add my comments, but since the Dollar rate isn't bad these days, they are probably less than one cent worth. I start with the easiest topics, and then proceed to the more difficult ones. 1. I appreciate the corrections to the text. I will work them into the working document. Almost the only problem I have is the suggestion to check the error codes in the example in figure 1. I agree that it would improve the style, but I did it this way because everything should fit onto one page. I'll think about it. 2. I wondered why nobody complained about the (1,...,nodes) numbering in my graph proposal earlier. We had lots of discussions about this in the context of PARMACS. The problem is that a zero up numbering for a Fortran programmer is at least as ugly as the 1 up numbering is for a C programmer. If we want to keep compatibility of the Fortran and C versions of MPI on a subroutine basis, we cannot please everybody. In PARMACS we ended up with thinking that the C programmers tend to be more flexible, so they can take the burdon. Any suggestions? 3. I agree that more specific error information is required. However, this is a more fundamental question for MPI and does not only relate to process topologies. A list of possible user errors (inconsistent parameters) would certainly be useful, so any suggestions are welcome. 4. I have the same problems with trees as Steve has. I know that they are used, and that mapping them is fairly well understood. I just don't know in which form they would be best suited for the applications people. Trees of the most general form are probably best covered by the graph functions, anyway (e.g., varying numbers of children, to be specified on a node-to-node basis). We need much more information from applications people before we can s t a n d a r d i z e this stuff. Perhaps we should leave this as an open issue for a future MPI-2, and just mark it as such in the document. 5. I now come to the most difficult point: the alignment of topologies. I first would like to comment on Steve's examples. If a group is assigned a 3D grid topology which is overlaid by a 2D grid, then the latter is not necessarily a projection of the former. This is because the 2D grid can have as many nodes as the whole 3D one, and not as many as a face of it. Let's take an example: the group has 64 processes, the 3D grid is of size (4,4,4), and the 2D grid could be of size(4,16). Of course one could set the size of the 2D grid also to (4,4) which would mean most processes are not represented. Such a projection could then be constructed by using MPI_PARTC. Steve's example contains a misunderstanding here: if a 2D grid (4,4) is split into columns (4), then only the third column contains the process which is (3,3) in the 2D structure. The third elements in the other subgroups are (3,1), (3,2), and (3,4). We have to be very precise in what we mean with topology alignment. If we just want to be able to communicate between the two topologies, then MPI_INQPID is sufficient. Any process in the 2D grid can look up the pids of processes in the 3D grid by specifying its group id and the 3D process coordinates. As I understood Marc, however, he wanted much more than that: he wants to be able to specify that the process (3,2) in the 2D grid is the same as (4,2,3) in the 3D grid. In this situation you can only do the mapping optimally for one topology, and construct the other one as a kind of indirection into the first one. The alternative would be to specify both topologies and their alignment at once, and try to optimize the mapping under all these constraints. Do others think that this is what Marc had in mind? 6. I just want to say that I read all of Steve's message very carefully. If the word spreads about this beer thing, I guess this one will become the message read by most people in the whole MPI effort. Cheers, Rolf From owner-mpi-ptop@CS.UTK.EDU Tue Feb 2 13:58:35 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA25972; Tue, 2 Feb 93 13:58:35 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA02369; Tue, 2 Feb 93 13:58:11 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 2 Feb 1993 13:58:11 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA02361; Tue, 2 Feb 93 13:58:09 -0500 Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1) id AA01734; Tue, 2 Feb 93 13:58:08 EST Received: by b125 (4.1/SMI-4.1) id AA09873; Tue, 2 Feb 93 13:58:07 EST Date: Tue, 2 Feb 93 13:58:07 EST From: lederman@b125.super.org (Steve Huss-Lederman) Message-Id: <9302021858.AA09873@b125> To: mpi-ptop@cs.utk.edu In-Reply-To: Rolf.Hempel@gmd.de's message of Tue, 2 Feb 1993 16:17:54 +0100 <9302021517.AA11127@f1neuman.gmd.de> Subject: comments Well, while we are on a roll.... A few thoughts on Rolf's message: 1. Ah, practical details, ugh! Even a simple note that checks and comments were limited for space would seem fine to me. 2. I think we should ask the full committee what MPI is going to do about numbering so everyone is consistent. After we settle this one we can go on to religon :-) 3. I'll think some more about what error code I would want to see. 4. Leaving trees for MPI-2 is ok. Would we dare risk posting to comp.parallel (or other appropriate newsgroup) and ask for help? I am willing to send out such a message to state MPI topology goal and say we would like ideas/help from others. We risk opening the flood gates, but I suspect we will not get much response. What do you think? 5. I'm sorry my note was somewhat confusing. I agree with Rolf that only the third row/column contains (3,3). What I was wondering is whether we are going to require that the third PID in the row/column is on the same processor that had PID for (3,3). I brought up this one since I thought (at least at first) that it was a simplier case of different topologies being alligned. I agree that this is a difficult and potentially confusing topic. My guess is that Marc at least wanted a mapping between the topologies though one of the topologies may a poor layout because the other has a good one. This also raises the issue of whether a group can have two topologies. We had better hash though this one in more details. I'm open to any ideas? 6. So far only two people have said they acually read this. Thus, you may yet get that free beer, but many more and my vacation fund is gone :-) Steve From owner-mpi-ptop@CS.UTK.EDU Fri Feb 5 15:59:44 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA12320; Fri, 5 Feb 93 15:59:44 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA27071; Fri, 5 Feb 93 15:58:58 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 5 Feb 1993 15:58:55 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA27061; Fri, 5 Feb 93 15:58:52 -0500 Received: from b125 (b125.super.org) by super (4.1/SMI-4.1) id AA07077; Fri, 5 Feb 93 15:58:49 EST Received: by b125 (4.1/SMI-4.1) id AA10426; Fri, 5 Feb 93 15:58:48 EST Date: Fri, 5 Feb 93 15:58:48 EST From: lederman@b125.super.org (Steve Huss-Lederman) Message-Id: <9302052058.AA10426@b125> To: mpi-ptop@cs.utk.edu Since I have heard no objections (and one private mail support) about posting to the net, I propose the below posting. I had mixed feelings about whether to have people send their responses to me or to the whole committee. I said to me for now so that the real junk would not bother everyone. I'm open to suggestion about this and anything else in the posting. I will post this message Tuesday morning unless I hear that people think it is a problem. You can also tell me you think it is ok if you want to help my ego :-). Steve ********************************************************************** to: comp.parallel subject: topologies and MPI ---------------------------------------------------------------------- The Message Passing Interface (MPI) working group is trying to create a standard for message passing. In other postings to various newsgroups, people have been invited to become involved and the proceeding of the meetings have been posted. The process topology subcommittee is attempting to define the part of the standard concerning how a user can specify the topology of her/his algorithm. Each vendor would then deal with trying to intelligently map the algorithm topology onto their hardware. So far general tori (of which hypercubes are a subset) and general graphs have been tentatively defined. The question the subcommittee is trying to answer is: are there other topologies that should be treated? One area that has been raised is trees. However, there are a number of issue that have been discussed. Are trees often used? Are binary trees sufficient? Do applications that use trees vary the number of nodes frequently or does the tree stay relatively stable? Other issues? We are seeking input on the utility of trees and what characteristics users would like to see. We would also welcome any suggestions people have for other topologies and general comments. Please send your comments to me (lederman@super.org) and I will make sure they are passed on to the rest of the committee. If you are interested in seeing the previous discussions of this subcommittee, send mail to netlib@ornl.gov and in the mail message type: send mpi-ptop from mpi General information about MPI is avaiable through netlib under: send mpi-comm from mpi We thank everyone in the community for their help and support. Steven Huss-Lederman lederman@super.org From owner-mpi-ptop@CS.UTK.EDU Wed Feb 10 06:46:03 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA12556; Wed, 10 Feb 93 06:46:03 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA28434; Wed, 10 Feb 93 06:45:31 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Feb 1993 06:45:28 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA28373; Wed, 10 Feb 93 06:45:10 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA21176 (5.65c/IDA-1.4.4 for ); Wed, 10 Feb 1993 12:43:29 +0100 Received: by f1neuman.gmd.de id AA14624; Wed, 10 Feb 1993 12:43:01 +0100 Date: Wed, 10 Feb 1993 12:43:01 +0100 From: Rolf.Hempel@gmd.de Message-Id: <9302101143.AA14624@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Trees and MPI document Cc: gmap10@f1neuman.gmd.de I'm sorry that I didn't contribute to our discussions for a while, but I was travelling for some other project. Well, first of all many thanks to Steve for taking the risk to be bombarded by all that mail from comp.parallel. Did you get any feedback yet? It is still unclear to me what we do with the alignment of different topologies. I would not like to see more than one topology assigned to the same group. This would not help in defining the alignment, and it would make things less organized. (I think the 1:1 relation between topologies and groups is a good feature) I suggest we discuss this point at the next Dallas meeting. With this note I send you the latest version of our working document on process topologies in MPI. As before, this is an uuencoded compressed PostScript file. I also sent it as a first version of our contribution to the global MPI document to Steve Otto. Rolf ------------ uuencoded, compressed PostScript below -------------------- begin 664 ptop.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R`$# MQ)`WBP*9.1S$H[9>2XV)C&*90P9\K,R1C#!DRG0M[4<=/3S9FT>#*6+%DC MAUD<-&0X+<+V9)LV9=S0F?.0B)4D`_VV"<.621HW5#5R]*CQ:M:M'-&6.?,8 MBIPW8Z:4H9.13AD\+N!\?AA"P0LJ9;`0\?E21HV2/<>\)%/&#`C8LFF#2,C9 M#8@73O;P-M-G^7$A>\0\)J.Q=Q\GQZ?L.3T&S?7C6/9,`>&DCP(AQZE(V4-' M#N,Y;"J6^?XB#?R/9H#.*8K]A9TY:>A15`PQ@'!#3FW4$51_0*Q4W![VL3'' M'EN4U$*!!*++IH'!H`"JA`"R?N"$*"096D'HF^&8ED MCL;5>&.2+_X78%%0YB1E@3Q11^5O4DQ9T4IX>%B''!,)MEA[:>"A41UP[-DG M#2"$]=)G:U$'*'=H@``'BWXV6D.@HX%`*%L@@8"HHBPJL!\==\))'Q#QL05D M&'"4L4=]]X'07AW\]8'>"T`LYD8=0)E11AED[#$''175,4=N+[T@*ZULV(JK M`JL6M>B(KP+Q(1QIB'7J",]&^Q$6KAYG1!,5;9'AAB!<""Z'_1DAA!`5CKMA M%_VY85Q)3KB61!'@]J>;'/4>1X89+?":!ANGN@L"#C#J1AX(`A/WF+8@TD%% M'J6",,/!+QC1,+=XQFF&8'+H66[#Y[ZAI[GH8;?K2FX=)T88^X&`!0A,N9?' M'!AU9/!YJAEOO/'C M:%0+UD=.,8^H(_CLJL1O_ZR`7<1>\"!$L+&1=WG MW;5`1D5A*.`YV8&=X7JE<]0A!J2GOQ`[ M&F6PY!+LJ<_.:Z-3N;4[H+W_+BC.!E!E[Q"`##AXF3SOSN>\^_.Z)YH3^8+"),,-FI[_:NQDX,&^\F$`G_,252#ZC09]+4C# M8L+R/_?Q2540*X-K3O88W4408:9J6_V$UQX0M`U-9*!.>4H$-];EZP5RN,,) MY3"&$YZA3_!RS1A@2+$CG)!Q%!N:'(K&!M[(05=AP(K$8"(I%05E/+=[P')6,U)]I'[CV2#_OO3IZ>25.]Z8VR!^LS@ MF^$5KR5TR-_OSLC&-*ZN=8E*4QK7Z)M-_:0[N"H#1\90E-C=<7=N--Y+DN6M M<3VI0"UP08'HV$??[1&-DH19"+O`/@6"93Z>#,MBYK`&28G%(A.!&Q%.-886 MOLQSR+I@X?#DO`M"9@]=P!+G5,:RHM2OE1[LX-H$1D4ZV.R*D1I/V\9CN!@H MX):W>U_X"&B^W]W.B6R!8A8C93@I+4N7:P-C,/$%0A&:YU5)@%T+RPD"(L!- M#"C9@Z^R`BR5H:0%:*A:*=?@AC?0Q M"M!0&]Z`%8L)$^98@G0DVYJXL490[YO`,ZSG__4%:_D0`>SFJ=$%]42 MCI1TN!?(%4S&>5D,8,!7&,GH!89)P@+KVC3;F*5K,\-.20IDFQKL85Y2)"(% M4W:[DDSLB7I:VQCL8)QO4@U?-JC!#7`0`Q?8@HQ>QP MJN5.968XLRX47S;35UEA#W"SZ8]X10=?U5-AQGF!:MX0-8/=@7@3R1Q*U/:9 M]N[F@?#;W0T@M8>2[%=0CS&-'.P`%#^A8#9S@$-\\I"",L3!4GCH#K@`!6#! M9(7`;%``"IP0&RHT^,$7H:D709`?G6(II_NA:8E3C%.=6HHM>]C#&>:P4#:% M*Y.1+)!ZB%C`($E0NWK2[LQ67)3=5F0/0ACNB$)9AE&6\@P3*6HJ:2IC&@MQ MQSF^L8[;!&0%"/E'/N8QB?539(PA6OG6;X`;P/J$;!#<`6YMR%RX M)G;O5P&4WCGI]W'>H&]Q"?P%<=!W@0[^PSX%_)S'F5"?^`TWF/[)WG#S7TG& M3`W"'+R&38$I4]A>.<;)G109M:X/$*(ZLK%P_%1IQ(]3]L+6SP# M&M'$$3BS,1AZ)9:#&-0`!]NC2PUF@`,8W,0L>^WK#*3>5R!\E:W:"N#$:J"7 M??$`!E/GZPWX:@0C\!4&8Q?[V=..]K6[7>UP;WO]F[WL9H^,'+P`=)0'SEP4YZ&(!^ M[#$8`O`E[WOB@S[SW.-KYP%_]M$?W_-\97STI5\$ZA-_"(Y?/>]A8`3I&^'O M1A`\X9.@`'I5['>@M]_$O#[VQ!MA".^_@>/GW_C3GU[U,)!!_7M?A!L,`2^R MYP-U<7AB)WG!IW_`!P.,]WU%$%'?)WE%,`.21P.C)79-AW87&'O<=W8:V(%O M%P-I)P-A-W@X@'GOYWN^1X&!-P,Q0`,^%WUDYX4;J(`*L%=F=X`;:(9C)X$("`,U@'V\AP-NN($5:'0(&'C?AP.X M-X/^5WQKN%>,1R`&.(4QP'01=3]-)WQ"8'9[&(:,Z(%S]WDA.(*KEX4&F(*` MEP,L6`-Y^'D1N';.I'D+^'F2EW:8IX56"(9<^(4_F(HQ\(<&Z(J^!XNM2(2S M.`,*T'2U>(&,YX2,)P07:`,@>':MR'8[2(P_*(29!X:N17QFIWG&-79YQWK$ MYWLU$`-$T'286!8^L%<3(X-@.(NQ>';3Z(/D6([F^(.#R%<*(()-1P.8YX[M MB'DX4'=Q%X329X1$R(>3=WD`:'F3AXLD`88P(`0Q8`2`IP`Y4`1[M8UL2(#B M6(1#"(ZB>(X469$6V3CA>'8V,'J-IWFGIWG<>($AR5=KB(/&>)(^.(3'"(9Y MMY+X.)'".(XO287-5X,TB7PFZ8-L-W5T1WEGIP`/J)$>.0,1.0/;0UH).8B; M*)'<%Y$R^91%.(X>284M.953B9(Y"8YC!XQ>.(_11X;1IW](%,IWE,AX;[V';^F(8`"'PXT'1_N)>]%X8M6(*^8B,>8SVB(SYB(^2F83)1Y.)V9AT%W5%H'\*R)F;&9;*YW@W&02" M:79%D(>S6($B"'I"DW\S$`2]YXZCV)%92)N/EW;2AYMPEYM@"(L]B(^^67E( M%X6W.'BS:9R/%X4?J7BJAXM_>`,M>(DL*`3;N%<.N8C%-WI3]WRR^(>M:82U M^(H8&(YSN(O.&893&'OIF7F2%WL5Z)YP!Y\_N)V5^7LF.8V#&)TKJ(VY!W9^ M)WTT8`,R<'P4B)SS2%J2YY6SJ*`*^9O4EY'EEY%_"(N"*'D5ZI]$*(59J'BU M2872)X'X>"":!YU!>)(M*9`HNI(N"94`.HJ9#2)X(#2I(2 MB'D*()L5"(\_&I=\Y94Y6:1VEZ(JF:11N:0_.9,S.97/]WD$HH+9J(E3>IT& MB'2\MU?&-77/V'O&5:(7N'?))XV^UWUKN796&'LVP*8`*II:NITGJ'I4FHF; M:'K?:'QZVCCX>)FPQZ&8:7>/*9#WN*>1Z7>3IW],IZC,.'O"%WX$ M"0.&Z7?7)Z#ZQXT4B(),9W:,"JJ39UR.AY4_::I(FI*JJG_`.('<9X2.%Y1\ M*0,)VG@!&G9Q:7R#5Z=C&`3;J'\$R*:^=WQC-Z!\F7]&R'C(J:R8QWAO&:+Y M.'QJ!YPTV8#5>JV@>'>SZ7EL%XK*)Y%$J:1`R*2N-:;<,Z)W9URE-Z#XJ8$I M:(W2R9]?-XN(MWEY]U:G2X)Q3:TD+`2A*3,X,I.J[E6)#F2+(C"Y3FR'HV MV7PW2(YM.HX:Z:)`B*;D*'PJV7?,YX-C6(+N^GD\2XY3I[(^**P1[-K^;1%")?N^GSVVGS"V++;=Z8U6'H%.8VEQWU#T))#2+-E MYWUGRWUFF[:K:9"!MYEX&%H.B78G6*^PMXJ51P25IX%`N8M!2)1B*XP*J;6M M>+5":+C1MW<^:`,YJY&-JWQ0RX'2=Z*12W8W6[E-28Z8^[ABIY*,V[,;";JL M=Z*1IZ\XV)[XF85_JW@:R'9H^I*L5W8VN7?&]WT&200)*0,VX`.,&X,\\+21 M"[PRF[.*NW;WJ+6-ZZ*-N[Q_V[I-:[B-:[IH%X32&[TM:[U,F[79NY;;>Z;9 MFW=?V[G:*[[<2[[>:[[A.[U9.Z;4>[WM.Z81FGG.R[+&6[_FJ[S'6X/$VX'` M.XW`.X3K.*!NF[MXF'O"NX#_2[[$>X^Y.:B-NWPE:KY3%U&-&W;,UZ7BB\'J M&[;,-X2`QY2NY\%I:[P@S'B,UY(7;)*,UWFCN,+<.H0M+(RJ*\/JZ[,U7(5B MJKY..\,VJ+;`Z\-2VXH%>8F;>7O]*79UBX.Q:YHXB*8SH+?TJXY06\%!Z*+@ M*+T9B;CSV;.Y";KFJWSDVY)*>[.6:XZ86\;E>,:9:X-I2[-+[+1N\0^:9(GV'EM>P.XNYDYX`/0>7A2&\EW M*[5X5Z*6;+\WW,?FJ\F9?,F;[,D4[,F=C,FY\'+3+YX MG+^8K+SQ&[BSG,FQ)[5+G,L5W@E]=9RM>^1UI7W7N` M*Z<$.]AG2K`D6Y9VG=B'#<9S;8!V_=B-_9>*3+%RC7;7.-F==[67S=F1[=D$ MFY$F>[>U^*=`V(&W_NVGV/"W@'7@21&\*&O.`CK(X,#M4B[.`4+L()+M4& M7N`16.!#(+01];7_?8/]+11 M;M(G3LG@.[A$W,OVG>2PK8$E/N,%G81EV+)A+N2("Y23.MX8WG\(7>$-/N%R M'N=TCI$1CLH6CM`7KN$#WN']7-=U[=2#2]37.`-7BS^)%]Y"CL4G?M_QC(P< M*8<^^-2HS,\JN7?@++\PB\4P(7<86?,)TNWVN;EQ!_.NY;-OYY\M;WN)?9Z9$779SN;=O279$ZA"C MY98:^*DR#.9.;9/#J[PC3,@HOK;=C.0M"I3ZB]_++I5#,(T2*/`!WWQ#L+IB M>KV9.XO]I^V`;03@"[&*G)1$D(=(#GN3VK][R'S^9X6N",%]!_*1M\Q%\+VD MM[TV@/(H+^54WM(P_?(T[>0MS_(R7_-5#O,J">7RB_$[K^T%.8R!1P1<[N)\ MY^BY;/0HS<I+7_54__1:W_5]9B[5-/+'KS'Q36(2D/K0RF\@:7<"_6^^R"WNPGN-*''HH M/7I2O9/OS;(U^+Y7O^M.#]%1ROB5J=`K'>G)3?>U3>LJ:KJ;_GXSJ>S.M+)- MV?CV7(Z`%^GRN\ZE7XZL1\:H7H1J;L:>C^[F:(Q&2I+5:)#A![>CWO=.K??\ M7NTU2=MW=\_EC.KM:JAHW/C%*_DW6,MTWW3K'+XP^_G1WWV@3[>DS\8C>\;. M=+0<&/W*;L;>#]&:&_[<__TZ:_[C#_[J[X/W7;GM'X2V,<2WOST^@`,Y$(,: M6S'4H;OV\RA>%W>Q!QS%/2<4`'>:91I3=H<>':.'-J@<$V0Z1@I0`5ZFR%3% M:!![2E-2[.T,@5YV`V["'2H\)4$&E9[6!9>,3P6T0#YM,CW`!DCM-D\"?(&- MB05")A5(DP@@)[J`&,AIF;<-2(&&P&`"/4N)1<&D(8BICL\#>D]+**IIL_M& M?"A8JP-SVL[73;0D2-2"3P4J@B))".:C(4@@HA/N@DYX2`'DGN!#E!"<$6`] M)&OLV"C_DW@ZSR$:+3B@&N$A&@`HO-&`$ZT'%O5W$]X`8)4Q;^1*M(H%(65$!3ZGJDSMN)5W"H0,DC1[;PQ%05=RX=*4:A*MKF> MJ.6>%!&$ZU"\Z0?IIBVDBER+>LIVYL+&D:P6Y`6S$1[*`?C#&\E"7\<+%8]Y MHD(63">IJD$H"!^@0,H[6"D*X2(+57D@FY?;A>7+]PPH"H2[6-`SS`$."8L) M/]-5E6R25;*'^##S1*`,9"YP$:D#43?(!'6H*X23/E3H,8CSZ5AYJ(*(DTP1 M"A2(_LETM;^)E@RMH;TR.E:P`6U"(-B?`ASMBEH?REN5H@Y5BA@B$=II3RL4 M:KNGU9HNG3;,4./P[&&H]D<+H:#Q68<3SQTNI<&EY(C::4MT-FH[0:"&2!2K M4%$LB2>1$UVQ*'C?X%)"JDDGRDF-L/:7VM+6'/*%:@?AU22MV)8RD/JZB!`O M"LZ]](41;9\S9$C=*-S-KG]WG_Y>*?Q)%.DCPC@^)K.#1O5`.9D&/T:6_QUS%!M66H:*!EU%/@ MJS)J1IAT&3GC9CQ47ELT+';3#?@$OD=O!>\`MDV](8J2EP=KF[6 M\+A00*.-XZD'`4*)%(&F4?\Y?`7.Q+FH\.._'"`@O#O6*ENE)P*W^R95EDI.:#3AG2Z7#(>14*Q4&-K/`&N&]3^6E3[$D8LZ&)1 MQPCT(96@6/Q/L*]$0B-A"(::E4DTDPLQ39J@^!2?%*+FC,DAI^J41'`1CI1#/(`,L5\RLY@4D3),"#V,]:U?=2:(<2!D/$F M29>'$!S.KG4Y M^W@0%UL[\?(&"`&Z>"VK5D3RDWMG0W)$'K#$$"5IE%I%UGE^'+(+:K^N6.Q'8;Z/4D3:&V-)6FTVR:4/-I2LVH M"34[3UZ@0#;@!^(A[4$#\)_Y,0)%`5`,J(\EO%1B>H1-]^/_"`$1Y`,`YE^S M86\S;AZ?U8@&G=H,N']+2&WAP+C'=^YF$@0]FJ\$R4V11#AM&)V:>(.'1MDB M.\B,RESBB5T9KS;*26%&.859"`MAD+,IZLV9J`YK63L$0=OH43!&J3>TIA_0 M,IVET\F1H\VG[E864T*!:4DG>3XRYH1BI^Q9@. MXYI:HP7^_+T.*#ZQECOD8.IH*LD=]4F*5A9"%%FR+QC"STD'O,Y2E.1!U(I) MJ:3\V1=55+9RBYL/"L&L@!83`6@[(X3KLVA%R@3Z$M7G9JM!>4=^0J;XN8-4 M)>E\?@=3?RHQT&-5[*-90VE!LKW:2HHY907E0R%)1(>LG1JX328OPDP$RHEL0/"'1&WJ3 MA"1.XE%%,8K*'6)DA086;N),_4,Z/]!7]:?!Q7K0(!%`0?I'_]`?TN+IB`]?2HUA[33=S;DU ML+`HP!))9T?_Y)W28WP*Y];B/`^P,BXFRP0#RUGI>4QY9QIITL2W2)W5Z MGW0:`:SLAD4'UL"**(A4!O2?''#4E-(1HZ$*"P(I47TK#,.I%S:@U:Z-. M+?'82XNI2:6E8W2DLE/V1YH,HQ%HI>".`SG+Q8.,BN2VDD)/E"2>RO'DGA2B M+;1`6LD0-J,FN%2_$-\<3ZGI/)4GJ/I3V],%5$]#]3WIG:TJAJ95$J))]JG[ M":/:=QAG3TXE28GTMWTHXO,N69"ATCP$U*>AJT!%J%:@9[RK!U"NFBNAEN08 MD,C,`6:UR]VV(-2AHD[8J5?MB%$U'L4Z>*A07I`[`:KMB![GYQV?U'C;G6_O M=A["AX@"KU#H\:QA*/9XQ?H#CK(/\>%':!7Q?1ZRZ@,#:S42E9,-[40IR=-( M\12:'(:IZ`Q-J'`TBWKK;NVM1Q3L?"-9^B-,2$`&`%G:(EAM92;8I24U+Q?)T928D%3QD0 M/&E`>PV>HC&7]BRPA(/TPCSS=#TK5A6L^SI4/T\C7%CNBC-I+7O'5T13[>2+ MM7.O+JS<:$4O$!9U0@_V%UE`B:0\LY#LLD:E*8#Q+M$)LC)7A.6@,(D&'$M# M^#"O3U]\2O&F M+)<"#6#'>*Y5H:8J%.+RRE4W;%3&"2#4*B22)! M2U$**2=M=JVTO]#^[-6-.5,Q4.-K1O2S9X':)D9,Z55:PJ(?CO%@T?1J6*=1 MO7*UF/91&M@:I&"?CQ-JL&*G)05`BE@)SQ2B36J+UM`*0)%TCXCM-DVO)5`M M)=M8BF>7+3N]M1:0TTI;4@M+1^V^$[6E5M6>VFV;"%M^VDQT^Z*$T8T-1I#()MV/1-JSQFZ!+;MLQ[WV*_P1L/(KVXF7 M!;9(OLY.A:Q4$MT=4"J)2,DF'W3N]NZ).G54?57M'HW_ZNGJ[SW-?OLUH'J6Q$6+9J7GN?XO-@L)1-;%!^% MG(GTJ*TX8(9R>^&5_*\F*Z+,4A!T@6:O$YJEABB6ZB@_6E_CGMCUO;*TMR(L M9_*'AF\9\KS'%P>=RE5K?T8+\]U0SQ<#K=I6.WNC41SRK_YI]G(BW,N)Q&[W MK:\0+Q[$0K=3(K>*+7!=QR;Y8MBGXR%P)'/YI['5BX`I,A]4GP76PF!*+:AX]_-L@:6V[I';'-^K;$[I0 M-60]BP&D"03AKN\C1Q'/#XNJOPF';BH4F$>*XJV;AB6PN`VI%#@5*UP>RXIUKBL>Q>FU)3%@H*62&EU=&RU3V.))1A#9 M?Z$M['0FAW!@:2`L.HQK)C%.J^DUTD):FZF,R6_<0Z60TME*XU\FS!7,T4QLB8$0&L;ZR66I;^VE<3%N&N6M6$<&?ICT*X&Q.6NA:6ZG^8KQHJ MG;/4/ZTL"321[^C0LLA*S`&;8M)EAPTJ[D1`Z[@=WZD0.GGR)KT4M`(4&UJH MT(,4":*][*RJJ$3*Y)@LEHJ/?@T^I2K[MITV='E.S_]I'%C18AW&&?6"K.S7 MN;,*CZXZP+IZJ$11&;JCY!0V]48Z2=1,4-HQ2&3G*E_E"<658Y$K*H?"Z4N% MJ;4&V?PK`HHY/U`3';'HA:B*J:"=JC`XS];2&TN7>6;.'<`X][Z*8[E3KY#L M7_-(V(E7#F6,=<1TYSW;LQT35>%)/`D87Q5E,LE-2!=-5IB(H82D0WS)F#FW M:F94!)K*D!ORS#DYH+FAL<.3W]!/EG34"`'YP.]S5H]K'_I-X$D089[:8SLY#)M7ZWR M+FK!N#I,A6FD5,S8^2621YT%'J7S2CUK^DL(B-`2BMYDDH!JH8$T#UG?2VIV M^2-"#(8SV6#R5O$$GBC42J[,3Y(J32$I5%6;)&#R.VQG`\Y9YZP7OZJ?A:M8 MD?\8/F$T>`SC?E++\\HUDM&_J`4I93U$EL5()]G9C22$N.47HE8@.KBFY!%M MV>XS4CS10E4!&5[0E':<\/`I26Y(^A2\Y?-Y'NO$8\V%Z8@Y6M$6_H[G-C1T M.JK`OJ,1E';2'3@;5)VQ+C$=R%.;F%/F"3LOB2`9)!]HP@1J,)U&HD:%V)!8.R*&24I_'T@]$Q$3)-4+AV[""BH[&J> MPJM]*E5/4E8-X3239[K5H(GT0,L:1)I695@;`J@I'@]C#MWAGD^!TM5XB@(Y MO^0#H$[1#Z*[P["0^284^9(>5+7V0BI0'$XD)`161?2?)9+VQS(362K$E;`A M7QK7F&>-.FL;L-D:!ZYRL%-J*-N&8'W7=!QR2)ZD MJL<.1^K)JF*HD,TTB2I7E4^W\/F$U0*$)8-S-LJI[IDD"2@")7]@E0"VV>&H M4RVHSG%!4K]*!>T\8HT@EFX:R40B5C/$%3 M)Q/O%0ME>L:.Y.F@X1?&(3'6E83L$6Z*/>538@*@O9*)QQ"5M$2?,YS.JS^; M5QLW/GQ^4RW>U/])\ZT`6V`@>UPN*AHLFV\ MES#!#D]J.B+H-\.C*>2.B!#=;4U$ZMY*;S`4$Z,.>-K6$\G(2A[MO7]@U40Z M?!,,W&H/ESV1E)U]QZO](X:AW#:/_=;-.5O MV*VPP#4HWE8Q,0'Q;^M]MVNI$0)5+0CRJ@HQ-U\,(06#[,_;V3V1B'A2?)O%%AV!R;Z#9Q69 M=\:4*$OS).A`:'I$Z5#BKH:1;>\NHE?TLH__@4.@4WLL3NKI(V8`U!F;VM-C M&C*HABNW7<'4VRVJU(G'^$;'@Z,9R/"W(_'L@) M>1\'Y+4LE5V\VGBV0-#]$)E!0%,5'GCXM@G:4YN(9`[[_69KZ?L2>2BTL)]< MAG+RU#?*T5224W3%2]'UJ!>-PW3811S>4<+BT4C(KJ( M$V\&I-R7/<#<;Z2S4@YF1+EW]R;*TI*R+K(^?DZAWM/H%SV]N MR%ZY#8)9I%P`HJEPOL_'^3LGY=H.H!MS!);:0N$H.D&)W,+RL"0'%OE7U*YH MI>XL/7-%)LW=<=-615$Q>&HQWW?'.WK4HGL]*S6*6G?>\,JV5&,Z@X^CRR%W M10G[HC\K1:V+MO5"R)3(85+RHX5S)[?Z/F&V^^HG3_?H>]QI!<]>)\C3N2"_ M>//Q>H$T#)L:BT!%WT1:=_0HRB]7Q7JML?QR(>W!^3!(B!UW+A#]ZF0LK)>C MAL?5Y:^("[,5O[*K%52OF//)H+LF)LZ1\PG&Q1Z\Q,T;&=&IE1W'GZ+Z= MHZ:6LN0O2-_2KF<FJ(SG:<)4=M8^LNL9P^2-1CX@R#FB-NU4O07^ MP-=UJ>3$&/R`%^74JK]'GS\6G""\B':RJGI33;!K:5N[6H3L>_%OK MO88&>7T^A(+\%BOR]%V^W^_\?J*=&,5B\O;0B47Y:RC@N6[+C/(IEXUY]M3G M@*;\S27E5DG*J]?[7>7#/)E/\LVG;Z&^,Q;?JSS08O-PGHRU>;YJU:D9#:[S MO>R[1W.D0YVX>/?Y7PE,LW_TJ"6+J;NAAX*(/@X/>LR^Z`4]HW_T]ZW0)_I& M?^@5/:2O])1^TJ,X26_I';VGQ_2`/I7]+T>N+<,[(G9DB_/&O_GS2-27F-F4 MY5&0LS^J.EZ^$EAH]O=_/7NZM/->QO$;#??7_OV"O[ M84\P]9<@1^G(Z]GS+`^*P/Z>6]>-S%X6'O!LSRE#(9/M]M)>;46C<><6NSFY M_WW?_"HS>VZG[MVBF4);;O$V#L5P_^[W.!2B?HT3@.)[>\\/I7BQ[_?\$%G" MX6-?Z?A]P0_W&YZ/3^:$3_`57\-'=0T?W1&>525]FO.EBN^DSY@D5?5&HXO_W@A=FV.V&&Y(>/K-Y]N MM;,31,]9UD%GZS^_4MYS3C[FB7Z5]^QUO:W?=;:^U^E>A$+Z`IWI&WT"K_3- M^5N_[1_Q(\8Q8[[SM`/M6I, MJ^>?M7G__$]XGP$NJ`-"LJ*VXGGM\MSP/!YJ=?,IYL]5W4#W^0D?S$,MQ=^\ M]E;C3_Q.;/%'?G#&^!$_=/^(E[_P]_4?C^"]7,M<_&K^S M?GF[]6\$_ M[`E_R;R.`D_R)__'GWE"/^1G_L_?S4=_^F[B7=3E[WWTO>>C^$%VY!(\*2SN MM1W"]SH#W\4TXY_]D_ZW?T\K_],_HT M%/H%?1HB_K6)CZ<\B3283BO"S%%%Q%WLPGM\?.>*"X)TR%.5TT&7XTE!91.[ MQ_5MTKKPI;,(B*@HX7\*4E\$@H8+H59)Z`7T@*J M*+<=`-.`/V:#E@#5B.>'(X(`VH\P6!/*`0V`,.@3:@ M#^CD&(%,8!$(/)TRUU:=U\S!/VO3/.+4W0!31_U3!_%^5$M?A679.PD@J?/' MS%>PTF\G]]0S!=>6M[+4=NR3BV*H\3/+G:63M&/X6;F/(&3 M%/TT8L&!/102*/N(0)TU MW]U-)=[5/]W-E47[&7J`#9G3GL`Z!QTLE_P8ND<1I38EB%5S@K!XD$U!)\0( M`9=((E:4?31GC-QG'5%V[&`:4]G%?=/49>4.MH.:RSMH#]*#DXY"XOQ9+J[' M,>BW1'3,(!X'\54Q!&%Y@\9P=!#/=6001_S9#X'\^ M3/-BZ_1SH<>/HR@I=`&A-H@3IG+P'MOG$P)U@IQ0I[D,=43A$K@$&H,3B5L' MGB`FS`BUPUR5.0B83-(J'37D8."A>KE;LAZMY_EDAOSU>XH+UY M8:%7.(?],65A6KCF"2S=QU<(>U!(\@L;$]*@+2()Q*/642UXH>43$#*$]\Q+ MEQ&V.W_A6"C;'&:#86"H%Q:&`=]A"!@FAGNA7XC3T3K58%[8&)HY;(E9)\BT M?%I>5G<&&7;O!V>7$JZ$#8B4I;O<*?$=342_)"][2_E2XF6$W.#WX\_P?*W+ MTS>_Z$+5GOARP$R!15UN2-01=<7+UH<4?FIFSDD(D[@Q9`Y@HQF6@<((05(5 MLE**E$#5\W6"XXWA\K70$\YQT:A:I@>/CE^"\\ MCZ;$*IT_[IQ*!_RLA^IA>Y@>OH??(4,6'ZYQXJ%[5Q^RA_"A4;CUR5](3K\C M?\4$*B%+6,/!.(#-SD/6B4@&3J`CMG2&RT^">.CL0\5+A#C3^3X2XE13(5*( MQ]"M(PVN)1&7_Z(@WCMHCV&W%9IB0XL#]@6:.GI@>7C*)$_W#FDD$09F[D?: M$^^T/?C-C!@).C7I4@7#'2([D$T72.$(+MM#.3C-Y3UD3-I2/*F#!V$^B`_* M@_7@DFC9.8E)(I.H),Z#\Z`[1_U$;0[(;_2X=!]TW5RT%Y9R69U>N/F%B5\B M'B023H-HC/!C)AJ$:B*:N,:TB6*B&X/]O8DFCINX)J:)=6*8%M(:GS&5)T+>$F4B0=?I5?Y9>^7()>761TUR$PS\X:8[9$BI,B&E,I2HK& M#J6H*5J*FR+?XRFV,3(`.1C-'34NB(L#*>Y)9DO\03"4=[`A8[B+17Z58?SQLR@B M58Q[Q'KD3:_ANU20^"($%__B#PV#<)PL)`SN6GLBMW@8ZCC?(I_2WTR$Z9`P M""[NA?1?<7C\C(OK(IES[*2+X>*N8RZ6BQGAN3@ORHOUXN?1^J"+]F*^B"\J M.).C&6BG1B_P(DE(\F(,JZ,>6+*N!?2BB[CMA@H M`HH;#LUH[PPH,0##2)JXA$D>5;2&W3!S"I7$&O*+M@['(P)R=-KAT:@+%4Q. M$+*WMRV-3J-M`S5.C2(@P>3>^3.*R[PXNI"+TDMEV"/2,;M2>4C?62,YHY#H MCC5RP4N&,R?%A"3A32@0#D5=B3`+/`@E3G938I/HU4F.5&*H M=;FH@U(@LO+(686CH8O3X:`LOT[I:`2@2X72-3(T(7M#D][4.N)+'%MK)"7* MCKK6GT8YRHX+X>UH.Q)_@I$VPQ+Y+&6C51A\5"=;H`P5=E`TJ:$-5"_%=,PC M`I2`H2E"7?<7T%5"'Y@4Q`]9?PF8Q+0JS5D]6/FD+!8DL,D)W(ITH M,L:,+2/+N$%ZD+6CRMA!CI`?)`G))G:0.`Y,A1BMWI#"'$^)?O4\XEQ?ZD>6+ M@K.MG"^"9,5"_122&DY&M)+@>P?)(IG"H4$B3%QB'R$QHT4=Q>"5.=3B<'>F M9)([#XICDQAN/6'6$DJ*52]/^'BY="^'T,P%E_!%^K5WR%Q>)$P8R`&%M`WI\AQ&C)]@`X:Y-%?S',^R M!BH^O%5"R*0,,FH=;'/O*'/7Y&QC&IZ1_9(:B7N4']I"HM"!:0\$@_:DKZ@U M#DLGHM_=643-@;)]C%K.&E>U52%3.4@\.445*:X+<6=/[I,Z"#^I[N"3`*5M M%U#*D_>D0&E0$I1L5SW93RZ4F\?,>"[I']B(*PE#,4:("^.QIU`FLXBAEE0E M58E9TY8+;7RI$GRVFZ@Z(>5(F469E,-02EE2GI0LI4I)NIV4-I)"-A=F1AHT@!AY/<2L74`99KJ2)$9!190=F3!&5265!^.5A.04F/ MQ)/.VE/)F$"5\F14:5`FE$[E5:E5=?ZJ,`YGDT MI?$'X(D@N..P":.QSIE7]65]@.&'_0'WO4_8%'[1]ABO^!D)@=%<\@Q1@94L=6(?7;=%(J&UQR40D^ MOTUVPP!%;C(04[:4'2/93>FQDVR6,@SX4H-\4NN*,*)\D5^UU-K4?T1S!(([ M5H,`+*74:VGV=#>_#<8&-V661!`G!5H.EZ)E"Q1:@E))EA@&7&XMHT=V,XV8 M8>/5(54IR98476TI4"E4V&5$I5V"5-RE,D6Z9)?=97DE7EY3E8\PL^*54,73 M0D5>JIN.BX2ZD"?3DCK25[@?\(7P@EO5'.K57 M2$^B26/Y?S@>%8_H^,Y]4RY>X@&;['Z%98R8=MP&HL6!&8`49D+71<5;_F'" M)?2Q7%HMJ"6'6=N$4K^E2'+L^)9;2VG98>(I'Z9FZ5(UEYUEXL-*XB?YAV%$ M6X)._4E%J0(E<5^8LX:B,5!&&ZZSGHQL5U61260>F4-FDBFR*9GHR9(YFTQF M1EN4B4,A1<='YV$D?27)GS`BP%PB@=6OY-,TB)6;K*97C9F-6YA)9IJ9PI68 M66:.*1??J])_M%8X9K@SCTDF8`AGDG;,6L]6Q,6R!43Q6'J2G]F9;!&.=6,] M5X20FW:BK#,R23:%4HDFIU7":B"'(&YFR904^<>4U)4Y45Z,5Q)5)#"`TPA(1M_YIK"?\<(_K',D98'2/3 M4IW)DN":^!OTX=[$-P3:=^0=84*#1TGW78$[*19(%+4`=W4A]<+^G)M"EFN9 M;DHIN([OT:K8,/<(W!%UW%C6F8SU;:501B:3^:%0++O:O:*-69D""?`V1GX> MO.:WN3ZF+@_6@D7F14EQ&3O9*'%:S-FD@]:87",260+[7&6`2D!T*F5I36;' M2;*1;*1(?V:T"4E4)I`U[Y$>*!;/-;X-,%TF#Q"1J4*2IJ09:<52G`D>QDY% M9"L+([1@:6/YF%\&6\94=]'95IU95'49PB5H0ISF%D>RM4\5A7QLF MKJ*-59DVC)5)6;U-1=*4"20U+'_)UT(FBHFT2P*7Q]@QQ^/56;\1(1?E0[)) MK9W;E-5IP&%?]I7GD642G$A-TZEC_EG'4H])5MI*/Z6[-E0QF1]GOKFM;#PL M6RE">HU,7PG^-94E2PO?=59,:2$PG*ID=(UA,AA^4G"VG!$F][!`=FF9Y^99 MC4AP%^:@M$_%.XRB1<+\O!ZD)^JA:>$?A)NG(YI4(UD<)A)Z)D_G':5S/*67 M7=KQ9%[2GFCGQ..:\"[.Q.@$2RU0CUWQJ4*Q;#I)]`-WT5LWR_VS/]U7])5K M67;=7(L7^'5C71[C"/8Y4'U;ELVQ&=U9=?@8]L6(A)_C%81U"!U=(=<4HF;5 M6;.A,7Y!W-U[9,HA-5?B6"\9][$SC%P&D8%TO&B@[=(.*OO183+H)H=D?5NF%>?E?:XD")#XN8?U1>:7V^%$XB>)V(U& M97%Q]N>CA'\"3:GD7L5Q,EAGEB-T:Q55B%#M!(9>G"$-#D6&YFWX0QEZ<'V: M:*@:*H::H4Y72'/<_6)=:#A":_I?LUH2FAM5,0?H]T*F_`R:@8VS%4J M:8TQ6`K6LT5KZ4Z;EB+::54@N]1XDI#-+IY=N8*07:+1%B:J.]F9NQ0GBHS5 M3GBF7P:*ZDX7*)YR:V6@=TU1DS,:;D1,03+J/#49H2$*:!VBIR@C:HO*2L=6 M@H4"35N9:"^*5%&B!(V'YHO2FKSH+FIT'J/GEBJ6<"VC#-G"%3EJ=5'7-=.G M@2QHRH-7VV,#XJ`^ M:`_JCH9V`Q:51YY@78]2>"*+Z6"=ER,$9Y%@-,FP^:R9EMP2^Z5E05F+V#JR M1@Z,?14JRH+E1@WH(=20:J`0Z1WZD#*D#FE%JN1,I`MI1IJ!\)^,B$;:"'FD M'>EH19%"I"/I>,*)C5\#8$]'6K`V6TXL^0U>H`#8`RJ38J"J3@!FD\ZD,2E- MJI/FI#QI!A(*M3Y:SNVSD/0G8J,*=6\"/.$6N&5O(J5M&E-Z2SJE2VE2^I1* MI5&IIR.:H3M\4^"%E4Y7FD>I4GL%/XOD6=*.32])";A32Z(N[EH=:FM!E^8G M[`1O`63XED!6D&FBLI)")CC56'4908.)+#M%AP=SU'@P(INGB7`Y(;1F$W>` M0E4YC`'ZD=ZD.RDSDKT@C&'1?P*"GEP\)"EI;A6=1R MJ6:*AYF?I.FQ4WWV'K=7;N257IIF:=#:$#"CV%>WUBJ MU0AI7N_IF]5QJ2(FR]>8MK!VB4?\0]\T8G9='_D8;7(I:+S)5]0``JI.*7XJ M:PL6@CJP[%T+JB"27;4B'\ZEE7S5'Q.J5[J@>EJ7%HAR:0DQ&RH)M7]\'^07 MB%I@@4,!R?[QQ#AC&%FDQ8]--OL8;)EVM6K%%%H3=JAWV-=(('4?R9@Z#G+4F6RJ6NHM:IK0L'XZ2 M^JEZJH=-IEJ<7:IC9*6ZGLA9PB(O(CT)'QR(_E$^H1T/)OV54TZHFIU"MG-B M())/NM-)GBAM7BTGT"E45H(FI MI$J$"6`6T!,4C)XS"I%@:@%147#HLBJN?E;7:KGZK;HJ5\AW>F=]IW.*LZ+Q M#9^`2RLBF&PFSH2AZ*S@-6C4O`EYD&M5)[SIKRHLS^:SZ3[2(%L?K>>&D8?- MR\O7F1ZE2\J?Y;#R*;4*VFG#'$NW4!C"PEB40\I_TXXI8C6E+O;B:%6SB'%Q MDI(JFMB'BE;18PT[HFOU6'-@7F9YW:SW%*G+\9@T:)L*>"#:RU83FO5 M&K4VK50 M/12Q)JX0"2S%H8ZM#A4<@_\F;LH6G%K/YBK M#HV;G/XIQ1VBK8OQ<0@M(@^6!G4X[ML/6' M+]*&P)5PI?]!E.QP@.5?Q9IQL&@*;ZFN@"E,[!+KQ#:Q4.P3*\5&L53L%.O$ M8C4M+-KQPMY4,2QJLOC96VMIGZ)M,B8&FES-#%0J-`0Z*2[2C"Q6E\K-A&'A$E9(O`>8;08P";2-E2&E6(K#"4 MR':ADXM+>2+E5G<4/A+PC!XER#W"==`M'6N.22*5+O])N8-YP*IJ!VY6,^5F M1&3P@XM`(=@IQGH162+[R1J9+&V-:UJ]*I2;:_\&EU8B:H?7@OT)9I\2-K.692I_C0WF"WTI2AFM!KG!'6(E MK::;S;/R;#UKVQ4].JP!*X:X6R'1Z-8;"45D4)JD59EL!.U`.]"B2=12`R*7 MJ#7,ET-F4AUVU=`L":51<1]<,B+PE+`6+=:"W#PDVEKBR`R918G3)J+'9IOK MIQ\[QOZQ]DCS%GT(HY[9AW8P&2%J5HB&K;VT-.U,:]/*9SAMA2?3RF?J'>U2 M%GBNSRR]5GJ9-=B2*&@\)33V"-E"7(Z6QV53ZZI%0:H7-F)11D]'S/&"`:$U MKJ#QM*;43/9L*-O.5E)=+3T+UJ*F&PC2=+=U/K;.!J2G/473Z"*9;>ZQ)BV+ M%-?6A@'>HZ-M>2$+W$SEH=))0`@QHN"$-(2(-.L;\48.D'7%BV`K!].4]'Y< M6,UL_+DRX2UJB5-;7"ZUDBU3"UHJM9-M9KN4C3!K4UH9>8BTRQ`@`XS,!%%* M`X*@-()$I4`B5`XJ1!3`%K!!)JVMBK1^QK8KTFL+(\&V3!EMJ]M.>+CM*I+A M-#RJU@SW*>V0=-)!H](J("QM/M+2YK1$2$Q;TS*W.ZU.^]Q*MS2'G;Z?`M2M,7XH$8MI!.3)22=;1JT/I2 MHT4GY6Q.Q259+C>D5S0BW;:KR$I9@3"R:6R`.YX`N%G4`/;(RJ?`28=SN#1` M)VV#VU5926,5O%+.0K,RT2\2$\1$75@*MD(`DH.EQI%&V/*YFB[9X M'_1M-N*.%20DP00S=O1DE4B2BX+X68CU"UT>^=&MWANGPN<;*$,[-2!,=5'?H=V.^%F,\YDYR7)4F^, M[@^"`$4=&F5-HH>QK8B7*,)39F$>;(<&A'!,$2?XI8[P2^4L:Q1_TKD:;MNA MG/0>VAJN>7;N;T^(JT(OU2J&FHCU;#4>]^H_4J[]([0;>S*/.!]WU*AV+H$= ML$FG\VU-:P;3H4E2)2SWD:>$B4RA`9.?8U5ME!2LU6*\FB%"R"Q5\L0QSU2@ M66`=FV0:6+J$1E>\U6[5>E`_.!+5MB.UKZ3%;V5B.;J-;MHZK;@=9=BD*^\* M(T+#I2NXC"/>E*;;Z?).#:WG-5#]NQN(LV1VA#0TU!IU,\6XVRW>L\0T*[@: M3M9XY24S$+43JZU@2^ZP\H>@;\A;VO$]*2`$HR52SAZDL&E9@GH`:'G(!'.\ M@8_S",5826X?C$>%69;^*E86]90&$!WV@YE@!LP@=U`)!*T,0%MH7^+@9D?% MDJ&5YPZ]=FYUZ^?NN4BOT4LD78>$$C-KC6`C8TL89X7AO#MBJ?.:7DNHRTMB MM%BAAPV>9:VA6;D3$=7;BBR[78HBS#1.?Q^UAM:Y(ICMM&:MK;U;T-N+VUYK M.*W:B]O.6RD2W>OVWK1VK\Y'NX!(!,[5BZP\O4['\[2-=$V,D1@&8P:AT=NXU*I M;)\4>0.6OIB`3^;[6WY&25KL"_LZ4I5;YQMW`&(>IN)[6>(@H&\KFD^)GJCG MHK37<$M!BV1%LK(ALH<[Y:@5'H3EZ.EY_E/7R/(;H!`@G*4=@]ITM?'L6/O5 M;K]B+6."D/8^;ZX/1)!H(H:'-S+0V&!"BA64[MI"ME"YCDT+5LY(N M"A@;I@)SKQ-9P96<#2T%%S#BN1!?B\OK%)AZ'CW+#4RLG"5PJ&G8\URT0ZKU M%=JL-S:3E6G5-C:RI"S)']E4B)%2$UJ@@R7AHSK*3L%2X64&4"O>!ZNU]6=VX0VZ:/]M/2%.[U"!7Y`Q0.[7!;_"'4CN53XS+ M:LFFS,%W\&J)K5*,XL@5-`?[P:LEB.).,G&KT1PL",_!A,O<""-40CQ]YY&9"V_# MW@HW#)B(1$OF4,5KN3<;Z2MV7PVLEA%$F\$KO$+/$'P@I'*4`5AZ>J7#H(G=Q3A!PU`+`K2I1"9R50_I5Q M,6;7$?LWN0`N!.YFIH`@34NQ;A4)$R5=2GJT**U"VD._1"!H(GAL>0<)/7&` MVH26IGW%^XSOX0UJ<^[DSU:?';TN;5H\R*K%R^URJ['U5M^)(@*0=#._AZXB MX2)&.=75+DX"XP6PV_&,ZG"/1??07)B+V3!G2H/5+)&^. M2>T4/<#;#L?^*L#;W7:W!9>R@_%9B[$>QF1'5:P8:P^89OYIH3Q%'1S&2N;* M8X\BY4NH7,##,5-6&E5'WT=FDS,5=,H2TB4QM=')3=;YQP>'N?",AQI_M@:,?9P?X\==<8I, MH0&!8/`15=2BOL['"Q>3N*WMBY9%IO'!V4D6]&5%O7L*2@3C#"8(#)!,%4?( MVHCA!X*%4%Y8@O@A( MHN[ZKKZ)P19\9$8$6\&VIQAL9O*VQD2*R6?RFAQ%KWD'Y$4)DBG2X@F?'">(ZF1TGB>MPQDP4%O:H94;*5[&5['V,Q4+.5'6A MF,6^25NLW+[*^VVL3)_19Y5'7`Q5_<16S6&Y,D$@J5RI<1"X0?VTX0\(=CR[J'4@7@3WQ;& M=*QDPHEP`M",'5:-N\I6D%4'>BK*OF3RLJS@!K3T\KP\+Q4.U2BN%5\3$`3?/`Q'=25&H^B6ZNP M2[>D$"/B;U]]^YS!I/$&A09R.A#+."K^Z$9+#]D3SC!*^F)^<^7%J"T+E!;X]$%.-3SR*QR5<\Z<=V\E@@MX0T-3.0T M-L80>V*R`$3ZT/C\P"G/#K/YK#Z';.-S7?,+?<^M")A$!@5`,`IJG#,:)BZ* M";,?L<]%E4E4BKG'GV+F)N] MQDPS8BM20?])0N.09#W'5MBS]AQ;&6[9L\H%BU)W#?1N[(),RSQ`05+H8"`B M;U_2EUB+=$N$L@MI3AE@P?,S%Q]?63HK./F77\G]$'@0"(H;6;BT7ST'NU'_V8_T0("90T!L`D05/[*F:OE%0-W>**_F[T$V)6Z>XCA:9*0 M6W29.?QOE4SL3^2X:M*;4*DM6.&S2;F=(V>*%F1.)`&0R';`^<)V*)/D2]]`,=/Z=+_%JTT'`6MZ M&-/`B+FD/&MX)S)D_$0]GN@Q90-];"J(%$=BQ;#2X-U?(X!$SYVGK\JE==,3 MYM_A`ZG1(JA+-),`/GP8W#1+(;O:F/#! M%UD>J.VB4L'YTY;;/XUT"-3;0T!M4"LFVT.LIA<@)XF*HV:!]#*4#5Z@J/`5 MOLACM7J`'BJ<'J1[Z9;^+D:U?K+"4Q175[N((!1=.[:[^&YSBSM3DV@?8`B' M%ID8;0.8#)8G17?2BODDE=B;EZOAQ7@=7HG'D7,*P[NS`X:)`4C`LC[K58Z1H+IH532M4D9MF,'R5$SK_EYE2&%?&N5HJ4HWHJW1I[: MV('EB5;6R-LI/5Z-)P-99FT!<3#=JJ_CP836%8@"`%IOU@29!=19H]:!JI[* MC$[2K36@FOX@8!')VM1*_TN.C$-PA8E6%]!J5&>*7A'Q(+8'9:M,UB7]8FFE M&,GJD6@>GX,PF)9SLJ/NJ%"-C@;0_^NHV?X,FLTU!J)"59*+T+=U5-$@($SR MT>H`65)2#5(93R,H+GC66\]4_DP>E56;U*-.THH-CSA<*!UJ7]?7^/6MI9;N MU[\8,6-LY=?_M7Y]7R]R`W:`;6#S*?PU@"U8+]@9B8"M8#?8`7;7FF"/.)!I MV9%'W=:+==YS26[.AXY4(GT0L"V),6U,#Z@`BKLRNYK8)38.,KO>6J45B]VL M,=``RE5:=PEI1E=I%??@7=SKC0V-Y9CO]DF2YM]:R)9 MJ?5JJF>K;TB6J45:W;6>6)R]P^C9TI=?MK]"2UJ4,H9H4ZX^I\GEJZ"%VF]Y8%5'#=.4P/>1T+WTZ;SQ5Z:AN=(9U(2I+6I)87 MG.J00IP%]%WS?T:LL*M/*CY'CZ_(Y(I\IH1NL%/'-55AU*^H4L6)O/F'!I.: M("/$3=,REH$QRV:ZG5:IPW19\8?H%7;#7LY?;Y#8U M#2-BPDJYA%B11A9=327U_?P3RS!R"0B+H21Q[*-:(H.EKL%TR#E%#41LTN,! MG\17F=H!=J`$(X&7"**>"@V]534B6M0>0!`T1(#8CJ_36ZMRLU0K-Q""U;Z; MR"W24DRAL0OW1,+`L$@,SPUT<^_<.G?/?<1-(0B1?/*3L3`,]<_RHH@@B5PB MUN?Q2!',Z`'8$4F[[&5J#JO#V):.5;.>)%]I5YJ/)%=6U/!CYLS'E\C@P3,B M(R'D*-9RS[5G6MH=JA8R1ZZ,EG]H;-G*84O>+DET]Q]4=^M&9/=Q9-@"<3XO M.+*]\2;EDY,J4Y+43MV`LG2O?-J*,6NPI61PV=U]WO&2Z?#4[5%.+(J5IX./ MZ&^Q5+Q%2N8GHD7X(7:3AN@LX.16=L#=;_:[_9(Z86WJK?WB':MW!&1A)3J\ MV3^=G#6<1IP+:1S%!!*MN>KYQDS;' M.Z*]9)[#@K5D85N8SY*ZI"X/D]1\K3PA)R:GQ'6`(.&''"322HDI=]IM-R$"4E]4QG>0BU1 M&Q*]@KFG.1(I\D;(<8]KV1K'!SA4BUASL>W-][W&$+8(>')\@"]E9JX!+H$G MQYRM_MVK-2`,R;!HOMF$EDN8XIM9T%KLJVP(E4@L:$*D(F4KZ^?_]#Z=2"ZX M3P.#WULO>)E$@_LT+9(,;H.OX#?X]5V#GRU-S=ER/X`?@H=**-(:;M(@WD:" ML]].%_TM?]??+65(&7_;WU"X(ZMVX-][3>J,ZU''K5A,E5W.UVU!TD M4!E.@YCA%@@:KEV/X5X1=2:+)+8($)DV`HK<_1()`MI.-/@R<')UHFPFT56Z MT_#`8D%/34SQ!'Z!NVH5.%&)SQ+A@P?TA$+/-8+3:"'R9BE^E!^5ME:-&Q[? ML7;KNL4'74/77!^N^%_3ZS:G<1+M(7X$T5\NSXE%/3?-S3?R?_LPW>HG'H'7 M']]I,VY^->/C:;@&BK6Q9A$#YX"W'RT=F^6$V]_KIQ4>A5?AVSA+J127)>V3 M(8(A0TBDA18^>"S=NYB-(N#B<+74C0)W&%B*MNI)A2PF76M;EB`!(:N6%I6K MB1T&V2S5XHJ?!+E5ZNGVG-Y80D[PWI9WFDP"G8"TI][X!@4W?.^5""Y,?6#GEN"JL5(D8""0B`(3FRCWD^ M2SDYTI3S79@K2Z6_;#JUCALF!19S*HFW-7UZT.-5J-I1!S4_)]<5D=4S1!(EK0W_> MA@B8@B?1K.4ZE3WT-V=D/1?W-.Q=.F^U5,H]@2LA'+ARN;3E-1,K6#K+-!H7 M9$=K.]Q]VRG&"BJ>M-A0/G!^YL+IFY*_:8MSO[$Y#'1FWF=[7.,C1[T(Y2,,@2(9X8.[^*!5\-*G6DNFBOGVOEFSIU7)?]6>-Z=<^>4.7F^ MG8OG8R1X/IZCY^?Y>NZ>E^?BN7H.G[_G[?E\/C]BY[A(?N(YB6>@$Q9X$8L^ M^1+#)0JGAQP=>^7Y"`'PSUF(H)-=!SK\68.S(OIO9E@MFTKZ M4%ZO?-),.N`2=R;I4KJ3GJ8PVL@8R8*E\YR)1V\^7G7I3KJN!:DDZ9A-6_Y@ M861DNB)CIK?E9+I:$]`PZ;2V6G,CM^5[H'U(ZHQ("*F0/FG.`$N',^%_4.=E M=E<=M?UT$8U:(Z/.VLEY9ZZ6"$"PDFAN/NMH]J&+N MJ#O,L1-YGJB+YLS50W.H1^5:'K!W")[J9&2JGOJAZJV@JAZ:M^JP^JM>P+[D MQ#EEWIW?ZK9ZKCZ4&Y,Q:Y8W:?8K??J?7F/6/P!3\O2Q5D[_(%#6T[RAP/0` M3<6A6\=O.KI.!=6RZ@`=T"P^`U:G1;AHZV<)M^Y:8LTH"+@N+,)%VWITG<:< M@M.U=*VN!]7I92D85)_K)SFZ[JX3U>2ZO&ZOQ^OXNB-XKR>!]/J[7EW_Z^8Z MP%ZOY^NN#\$.KY6BD5,+.)!]!&KI]W5A97A\*=S M+B]2X7"N0LWD-#&EOFY&ZNFFK&VNTU`S>=T30HMH98X"L!^.HS26GR4R M>W0-H0.\Z(^A,X\EGS)Y8--I":$"#%I^PP@PBZAVCI/OJK3VT4Y#[7(2*G2I M/:O9DRM:`[7+83Z6_-J#CB&P=D2&96?M\/J2OFF+54DY,\6R)>6]*\\>MK\^ MS,=1;H^OY4OY\`DDM>WGS]L>?KGMA\U4;FW7[8_0W4ZRV.V.X/W#O_;M?[L9 M4Z*>/5H[2T4'US\CW)09"4`B0)9YVFTI1WZ9XXN;827;=4P/5-2+L#JYS78=U\!T\2H*23"73&K12?S&18^/ZNMM,6508-Q*L**H2D=!H;`?@QI,Q M.=L1?6YJ3XJ3,J8Z_$Z*F^[P0+Q.^@T&Z$T'$<"3.'7?Q^VA&(E*-!?2YT7. M8G^D$7*D`9@%^@`U)N'C]Y2>5P! MPAZ*B@\=YYKB:`@%?OA@?91NBP_=N.P")>W`'$A`(J]"2I0VE`USK1W!+O?1 MC$GO_[40&AQN5OMH66TS'5B]O!CJ/GH#S9C M"<8B*9I,TLL];NMD>K22\NF+[,+.RBY]J#PO=M3R[@G3Y:50PA]4>]%XI&!5J=N#$$ M4@NJ4WPWC\5;\;)U`'NTB(U;'?&41\FXFXFI5DGN=:N1H40\DP0;#VRR\=QG MV[6V&YIRI+BV:*K89Z:,?6*/V(>F.!;,A^_<(Q+/V\+=NFT\4EM6>=`G3I7; M47W_+<>('Z)L2I_2Y^PR_+6;5=(L"1UVDO)M^(7UOO8SM8D,(EI"4ZE2^H!1I0RK M<]])3_?0?2?]G=19V#WGI-T[J-L].(N=AB->U%O:KM1HZ\BD$@00)!2N07_* M37Q"8X%3%^;S\/UF-=#C7`X]?:_0W_?V?7Z/ER7T^3U#C]_[]_V]LBKP&IUR MO,KUA2)+[%52"F=OW01-![PVAB])#LYHT6\-!<`C.``$8`&X`"!`$IP-@D!J``5T`* MT`*8!4_^1;`&5!!-?D[PY`\7*8`<@`*,`74`8.`&I`!N``I`!Z0`9@`*`"*D M`&<`"L!S=/D:!B$Q!\P!*0`:@`)X&%/^<*#FPP%=OIJ_X5L+37Z0CP(\!BE` M&H`"-`%00!*0`I0@!0*[EA/,#$;`&H`"2`$N0`I@="@`3SX2T&3P^7$`"I!3 M-/ERRTP)`N0!*,`1T`00`2Q`G5_J9P6R`IJ_850$2@)0H.H;"10!"Y$"O`$H M`!K`YJ,`0T!@<.N;^5D!FJ]A?!:%/J__!K0!RT*P7P:@`%/`&!`MA`AE0`H` MC$P,J1'!0.J;"HO!OZ`#!/IZOA2@(I@!+H"FC^RG`)W^I\^2/_E`0`J@!J`` M9T`;0`9L!='^:?$H^"6C/@I@!*0`2GX9(`8L%TP!@]'FSP"I?IL?$V`BBWX- M`"AH#P;_J(_DK_M!@!AP,H0!NH&ECP6.(4":PF\$&/I4`/&0`HP![+[9P`:X M^DC!KN\Z1/N&/J*OZ*?Y7,"A+Q;0&&&!J@\%_/HL`X#@%KCZ2<"8_P9H&`)& M?D!(<`$I@*K_&$0%:0"L;P?\^M'^LF\?B/QO@*K/&W`!*0ADH.J'`:X^T]^" MR`&[@JK_5;`%3`$9(/';(H-(!T;J$_MM/F`PYW\2JOY2,>=C^6W^>@%EA`%_ M01KPZ\_\9``*L!;\^BW"QV_HC_RJ?AO`.I`!4T&#H6&$_(;^P#\#5/KK?L8? M[8!D4_"B`&D/N>_AG`&!3[40&=#X),#"W(U%'OWP&_OI6?`L3] M:[Z=C_Q\$X6)P`'0#3#BD_79^8!_&@:H'Z[/W^?XZR7,`]5\8[X3H/AO$QA"./_Q M`S]^RSX>H`]0'Y@$K/8I`$A][<#1P*]/$W@K&/.E^;:!DL`Y0*4/$R$V*3KL M%R!]=KX80`J@3R!5Z/%%!G(">H$"@9`/)``/&?@=^8P``C]I'SSDR5?S(_.9 M^3Z!7C[[@AUP`+&=L/C9^0Q_EK[[QY-/]W<`C/TE!:Q^O`*LWU-AUT?L2_/= M`^5^^X$?PE1@Z(?K^_09^L1^+#]3@=EO`W@`9/_A_+(".C\@(`I@"S`#Z`*\ M`_$`"@:?0%2`#P-/O`)CX(P.:!KQ_[#]@GQP@+7@`!/^! M!3\)F8-#X,PO"+A4<`^8'+R"CL&U7]O/+5#I&T#L*NI]-;]=`45`ZX>1>_+A M_=I\3L$SW[+O0P#ML_G]!.4#=#[2'T)0!JCQ:_.%`.E_:,!='_YO#*#_,P3J M`]-\DD#?8(M`UDCYTX#-0##CFL_,Q!:V"ST$-PUI`(EA>4`46 M^SX$I\$0(9W/SA?RB_N!!.=\$\`FW\3@R9?Q._J5!3!]7SX000L@!9`EM`O4 M^]H#+(/!@*KO&ZCK$_T5!U$`BX$4P!P`!:`&N`@$!@>"(+\U8-J/*0`4F`I\ M_`QGF\`G('RP_A?PVP(N^Y:#S4%+83%026@F!!3N"2F$C;^N@5N`0+@%K`O4 M,K@.C\(NH9\O`I@+A`@B`"L"`H8\@ZL/5A@A?/H]![&!IH$6X";0_@<@0/;U M_=9]+`._7SFPS7?FP_5I`@D.!\`\X-T/#3`1,!7T!,1\``(009(0RL`Z6!&6 M!+`1];Y[GY(O#T@@0!1.`[&"P;XTWWLAZ9?V^PRH!GV$DS\G8%PP"KCFDQ$F M!!.$/`=N$/T):82202=CF8Q>^ M^QB%\!"U\MB8X@`)`S&#JT(H,-2H%60*E@&X/SA M!NT#4<%%8+_0:\@-%`FF`,PXB$(G`(A`5Q`D"`-X!Z-]P\#Y8)VP/I@A3`-H M#KN"Q,%9X0L0"A@8-/1I"%L$HT%L(-00:U=TJ/>5"LV!QT*V@EQPJ8`^Y``N M#Y>$@T,VX=K0*J@J)!B.^2:$'P(%0>U0&D@$_"R4`5)]R[Z,8+%//\@??`.P M#G`%",(20?CP6<@1U`>J_M:'4PIR(&#@/=`D1!'B#'6&#`99X:YO#KAG0`8N M"Q^$"D,MX#'0Y.#OTS!,!.(`.P-5H+O0?M!XJ/<9!'H"7`*K(;X/!2`,!!38 M!C5^RSZG@G(`$-CT\P+>#X6&@D-7'YWP![@"G/R5_@*$T$&X8-D@*N`%-/0] M_D"%"D&UX!P@#R`;M`7J#W6'NHN2`%]0X\?Q.P2>`1*!A,#&X(PP9E@8-//Q M"W-]6;^/X;,0!T@Z/!)0_::`/D04`!+@,7C_L_2=!\&!=+ZO(*D`6C#S2_,= M_>Q\!P&GGR$1:<@;J!Q@$&<4]3XMH%I@,/!`#!\J$9\%`<(VWXP0D%CL2Q$2 M#?4`)D2&89?P[T=C8`.T"F5^G\/U'V*09L@M]!J^$6V!8BI!'Z"<$*/@$%`5,@/Y@)A/E-!*:`YT&D8/KAR<<;`!*L M!.``7(*[X;90P\`%X`)8"0V`@$/F80RPE?@`W/#E`40`",1<'Q^1(U@VE`/8 M#A&"ET/=8?.FWE=+)`R*"D!^!T.*X2`1"H@,3/49^G"'9<%1H*R09&A40!`N M!B"$&@8FX"WAB6!+Y`U(!\6$>CYEXJ/@R7<<'`$J!U&(S4)UXDS`?6A!=`P^ M`.6!(\3_8?COZ+M@&F"$:'?9+I#[#GS[0'EA1Y`B:'/8`:<.;W_VO<)@SU/_A M`F&(;41BW[(/IDA(Y`#:^9R&+P!4PBDP(A@QW!X&$MV(!T!,(!D`((@KK!D^ M`!>%`PBC@TN!U/?GFP3:!1.&S4*KH(]0US<0Q!FR$'P'A,&K8AZ0^.RJZ!]J#PKX$857Q!^@C/`.X M$FF'4$.80&C!+$#J(Q[,"9"'/@'['U(@6G@'S`-$"WH(WC_(`-``)=`B6`Q\ M_$R`J4"Q@()`4FCGVP+<`'Y]70`*X$X0!0`CM/2-"2F&Q`7XPJXO2#A`7/^Y M%(F`(\1;83\AL?@Q_/5E!_&`/T,18E@1.C$U5`&*_MZ("0;"(`BQV(?W6_8A M"3]^K4"NH>J/3L`8$"6D$0^`V<+;X:ZOFGA-E/5Q$Y^$WD1P(AQP3R@'=`/0 M`4.)-,/E8M:DWC=1J/HM^WH"@4`PWZRA9NCJFPA\",B&1+^?89O/0'@92`'L M+'I_MD4]'Y[A(&`+3/,Q%7&$6L#ZHFZP>_@]]/1=#AN`&K_:'QK0P<`J@/9- M`1T"3[XK`!$P6QA61#KP#CF);*4L(-B0N&`(=/7-%*<"MD!#GU(14PCQT_^% M#MB+)L52H'$P4G@TY`*R$$`$D(&(GZ'OTJ`V#/[)`=8`,T-\HJ$//C!.=#$V M#`6'HL!S(J&OQ$A:J/>%!2`#IL%B7Y1!+9 M&3>#)41HWP@1V?<)A`P2_12![3_['[-PED@-5"WN%]-\9H#/0(.QXS<[[/1I M_10`@$;!0[TO9L@>(#C$#/.`DKX'X\R/3R@MG"C0#K,"TD*NXIXAGS`5V`,0 M"NJ'IT-;7X20BB@QO!5^&1U_F40\8*%@?:A_J$9$$L=\<3]OP:\/02@#B"U& M%@<4LD9(7YM/!J`3U/-9`7R&5\*/7SLFH2CEZVY4^?A\7KXOX21P`-&.<12B M!%$`/4&C@Y[OI6@Q=/5=&;,"_L`O7R^!@`C_B_,!&7.&T42(X7)!8A@N%!66 M`ZU_&D'4G\.1C>AL#!A"&\M];#X78AD`!K@?D`YZ`>F-?+JIX151,4@)7!@6 M_T@%:(!>H*!/F3A;'"ZZ&B>!_+^HH-8O,0C^0P$J#9N'K4)\(K?P4H@K"`OX M"'F#0<;&(,4QX^@@S/]%%.$A$#5R8.10;H@+%!&H!2F%KCZ*@"Q1=)A;+#!N M-!"%;`S%`"J M#T6)8$6D8X""=]@\-!U>$)F!QK\IX&Q1IQCMBPD@"K6`P\4TWPLQAE@&Q"7& M__*`J#];(HYP]??ET_\Q!B`#=C]/GQ11+B@58#!D&%``O<`Q(=_1@)@X1#IN MW]R'ZD$40#51[W?V2Q]:&M8`(@"[XX]03I@5'")*_6@`D('"XLTQ!HAW1#G2 M$KV&D\`A(XMQ:S@1Z"LN`D6(0<`/`9U`+/``9!G._.B-H@5RX-!QV9=J//9% M'2,,CD>W`);O*[CR^R0X#]<1^P6>X!608%#ELQP2!#>(RL*=HU_0/^@>5/4! M'1&.=L#U']AP,S`5T`T8$7N%]P][#:!@C!CMX_B5%[&+;L1N8@30\HAY+#D& M`2Q_>T7&(V]P/X!4A/;9$Z^#B<4P`(O@V`?K8PZ&_0:):#^LHI>PI'@?C#R& M#4^` M$2U]$XS[`06BWH<4K#TB%D>*KT=<8#11QCC_BR:F^=J`?8*!VLA!_H`_8"OE M!&0$B;,[0*E/"A`$@`(@`9R,8H$T(J^0T+=SU`(N%=R*@D'R!.<+$(&O@(]OB&"+T/)M#F*--\';H=IQW?CDXPBZ M#MM_.,+47])PZ2CW:SJ:$">$#<05P8+0*E@V*"32"!&):0"IWPP@*_!==`&2 M`7R.E;Z\@)[OS5_`H+#_> M%4F(AP838H_0#5@U9"%:_>H`^<5GG_(0N:@M1!VR&KV$D$5\(`22-?@\S"/> M$!V".D0EGS!P4%@.Y/CE`]6",$!GWP?05VC&P0!&%\M]SK[7HYWQ$_DM%""Z M^A2(8;_T8)H/O^ANTB^^_LB1Q#^*H7,1JYCFN_ZU^?@$YT2=XZ!OE5B0!"VJ M(]^,!,=>I%#1_?.VT.?GX^PG'AUX$02GRAX3!',"0@)L`,T8)@/R^)`54`XH$`(#Z<*'H/>OKA@N/$7B_#R%%$#NXYV/>/`!'$3H M^9Z2W$-.(-#06C@:R"GP#,M_+8C8X_KPM#!_A#:""L>%G4#?X-P0UU M"]&3*LE[(J01**F@A"5J&.J&FL6)(PDR)*AZE#HV!P.+L,.V@'Q`,.@S1#^" M"%J#;Q1@!:DO"``,3/5A&!M_ND8BH?IPV<>>E$/B_MR(*X$CX*WPWV@:O!S* M(1.+DL9H@8#1,4A3+!'6)L&`P-I%Y2,"@6\!E:#_M^)LC[8M*/+DECC"G._.Z)G,/#(1D`QTB:Q%&Z M_>Q\[H&1WRDR_&=Q1`@`"6*3',`!!":BEUA=%`*^%Q..6\"[HX8A2CE#O`F( M$>>3C$C.8UD0:9@F($J:(.-^]T(>I7GQY(A83`S^!-@*74J+(W[21ZB'9`I( M!R"%&4@2);IP*%@3;#QT-[Z2^D`Z),+0_P<[A$FF``8/"46-GZK2`8A>W#]R M*7.0CLKO7TIRS:<`R/TE^E:"B#/_W%YA^F6$!`$@(?<+2DA"FA1@A^AAJ/U9 M',.,^,(;I27POB@6&`.L!*9_9L;(8K2LE]@.S"VB`MF3:4=II:=PUS=R)`C^ M(SU](,3I8^^PW/CZ>9')PNUCT,SA* M!_\&`LKJH*NO"(`%@`)(`8H`4P!C9&N1!@!;/!U&`]M\O\@EGS#RUU>,1%$^ MR_2-I#[IX650(3A^1$`:!LV3HTIU(?XQ!0DQ\!V"^:"5'$4$9!`0H/"@S#/$ M^B*/4L69(=31SD=N/"(*#F&.ZTI/W\\0C'@B(/6]*P&`\^2/4"KHH[R;D'W2RA6ARY!I" M#BV.>$8OH>;P(LGGVSFJ!=N&N[X*Y2A2:LFI7`/N$N,@];ZJX\^P!;FA+!T^ M$4&%SDJ3@[H2"`D"^)[`!)@.'@V,0A(2W^@$B`*T#2M]:;X:Y.S1=-E5K$B2 M+5^/CD8#) M^=2/+L8GX=GO>DA=3/J%%4<"Y,#'``RQ1$D5_$G:'#&7;3[GY842>BE-#"F& M$,-_*P>U8,K/5G`'H%[N+@>'ACZH8YMOU%@IU#!\'2>!R[ZQ(6?2'=A*U%;6 M`!)^&$$HHN1QZMA=Q!6X+,L")C=Q(PI@!E!N?/(5`6R!9;['GY%R>0Q,(V(O2O`SBF5$&J M!>5_WDB-9?MO,Q"G]`*2`=J+U,4,X_?//0`8^!8>&9.4A[Y$'XH2)A`'X1WV M!$>%\D/](E/@G&@XI",F$9>2SL"6)(B`D`!-W%)2)SQ_7BX_$(F M,.68)@=$(Q+Q(F!"_`>>%$.3VDH]6;WO))`G;!&4#2&63S[%0)T1OA@]L#0F M"A5_C+](I$P046G#?/*!^8:/N,2%9)?2`RDRS%=F$_&'BDM+)I20P0!HM`&0 M`R66RD(TH8J17`FXK!RN#0^/)H=Q(MHO(*@C1/:-`+=]5;&1`^GAT8?D6_9) M_5Z+M4$>9AA3T?>)U`*F&F\%2+^6I/XO:$A*[`2Z)4F.V\MMXA90O$BC-/ZI M^JJ""$A088&0>:B-Q&*2*6F52,PS`/]1%5FE9$1B_W!&Y$#]I'WRR3=<7#*2 M+GF)%G,%#V^*""9RDP88>-O#-BJO&:N M$K6'3,26XJZO#4BQA$8N!+F&>$=GH/.03Q>KQ!YN,ML#%`%.P7?Q,:GJ2UQ> M_DHW#R`N(702T``[;^D7V(0XA=`/"@^ M#S6/&K^80,1R5SF7]`1&(3V.-\K#)8IQXM?+8#K,&CV*[$I+7QY1/QG`9#%J M$KV/YD?!(JR/?CG!/&32"+.93$+AH)IP%)A%Y!D*$HA^UD%>`4A2];<12`&T M`<*99CZRG\1QZV>0R@&<&(D'ML"X'[&/3*G'U$':`==]?<(R99Q11@A@[`HZ M&D"&G,.`8#00D9@'X`?J_1R0J<48I=(/3_D6#&I&$W6:'\S7I&UR"FB+>/*= M&PN`LKX.X0.S23C75&+F%"J7VTP:X5&R';@CL`_8`14`R,TU8$U2GUGL6VV> M$(V.LT27YCOS&4%?O&8R&)9]R,FQI(%QW;?$/`$*-IV8Q;Y$XJP0*``BL!^N M-[N76,OO92>0TV!7+&_:^W:(1/3LD>,"[B#%&!?,BU@%S2^V?[L_]E!"$#KT?6XA;3^6C*U#!@ M#.<$Z4V)IJB/U'<1\"%@^<26ZD/4YN!0P'EWS!`2"VV`STD#8SISG9D"$$-N M-!)GI#X6YAF2QY>&_"1D!``%79-!X1NR)NA2""#\#3F9BLWU()\`;=D8!&$@#3`/L^_I]1%T?V=202U#I,_3)"^5^;`7XPH@3!GEHC%^2 M(GD%]$L\9ZU2G:DM5'%&$V>3D\30P0&P(WFCA`SP"@>-_X(II'NQA!A-Y$?. M%[^2W4I%(R)S>.AIO&T2&K^4T3X&9QS1F'CX2RT>"4Z34,N4GQMS`1AE%$EJ M!L^/0L;NH1L`R=@J'`V,`5P`SC]O($Q3U\?QFS$6)N\?>0'>H82QY"BIQ#_^ M!#Z`AL1;(4,2S;A:Y"]2%7&'6;\Q@>K1Y%?I4P"D^5B41P(VIA9S#`AC3"/^ M(6>4",-^IGC1-8ATN`A&+2\"P,Z^'S7RR?=H.'2&*J.2P3^#I'_P:1#-%&AV M`D,'X)`4308F>S,2C;!&A:!6N;WLZ+93087SP(,_=O0($H#/F] M*!>-3L)X(T:QY/>K1#4R-O."\)!*DE$0SLD]L`VN/1>:.$CS'Z`2ENDC9%T" M(`P$)8CLWSK"6"E9M#?P^H*1S$J3Y8V2==F1H_9E/F67R,HE9!/R":GZZT!* M"QF/Z,R_WT+3!#D\=%(.4DA]7$,"09HP[VCIDT\J$_F,Q;\XIH,19/@.[$2* M)Z&5?6LWA86"1SS<09$UN M#.V-`$`_(J*P--@BX!*H*X6%`$=:9_JRK`D_7`XH(/>+1TQ0YW%1_;X;8OF9DW'"YJ';6;?8(W)QX148@4U%,""U&2(D`[H'J3=5GQ\VW2 M"&`"J<\D0.VR"="$#"[J*\F&#T3(V;B4$U8><1)C"DV/R-&!F`RTQ@Y5Z.!7IZ``'(+LT"2D@):!1`61GZM%&Z M^H"0OT*"00O'!@H!]7SJ0(\`R\HVWT2@3GBDU")*//F$1L+!)7\S"-BOM`I& M`\.*I(??9KF3<%FO3&[>"VU_,L4GHPYP93@9=%9B*@$$=B\O#A> M&D&*#<)_IK?3%DF_/&56(D6!KCY?`;%@S4@S1$7N'M&&PT5O89LP("B-K`G2 M7NI]E<%HIS3P/*ERK`*.^>*<>\B!(Q3T=-A$/(,&_3:A"/\0X!J M#\&([4/ M*W.&B<@4!*^P7#D([00Z%?:6@X@99$Y1XS=D)(<^+S.;V<\'9AN1T$>F)'4Z M&.>@6,&_)D*R^)?6-(?V!9&&W$D.8\#Q;&AS+(0V*-6)-40F9Q14&AK?-!PF M+N.?;$\[:#L&49@$6`-:/>64:D'.9L5PCK@.+8;&-B^%\-"/:"^R%?COS/X9 M%X*%BTLW:$$41U_.M%YPM,P'6$!!',N M^;Q_VDU^Z$'R;6E&%%!V,`>;%]!*Y*X/'NH73#NV&;F%I-#GH:#/"MC[O&'> M"AF/6\00`4:47`@B"!"8$,.*HH5>X@,0'PH"Y$Z")26BGA]';(%"B(LGVB_:%%<\SBT_M9K^S%EK:%!XF M"HV6LD'#8_RP,RI@N#YR1A3R4<%&`*T M))^5EDS/:$U0_M!P."#K\Q-.0>&6$L,IH'SR_U@7S1I* M"T\#;#\RH.V0E]D[&$32*5>)I,^-1DX`!.%20'UZ/GF@U-'\H(^PN/D>A?I! M*C&BWT+P9(GQ@\E./$\:+766!T"G(4-SL5A17/,I)2^<@TK>)RKT"G!2G&>: M'&U_]6-?YQ/0&Q_7-$)Z8_Z!=Z@B73+21_6<@[YL8*HP+L@KG%9N"\^C:L(9(D3I-.1/!H'C!^6/Y4$[U%\J,TP>K#:7(&"&PN4G,1VJ/UOX#E@]!X2 M_=:,Y#\00:ZP$&GAO%HV.36<=T9>J8!S>+CLNW,:2V.B_<8,A1`H.`Q.76@*U$*Z^KB0FT!%),)Q;0@3A7QV.MFE7E*](Z*00*IUM#B> M!N*.(X?'BON0/XD@K&@Z2&V.RD_F)QQ32;K$'#N:&:M_OE)$X/O1'%EV#)$6 M+=.3D\JDY0$P1GF`Q"&4%83K(_+1T$&#)!ZX M`5)][5"'(P-THS%R6#I,#&2E2-#5IR'0/0HP]#Q`_^ M.?^9X$/B)7A1?#]R-=VGRE-=)7*TL;D.A#4B'8L5];Z-*-5@VKA(?/JQ M*KVA/0$\@*HO"#`2Q/N,(;VB)$L>7TNPS+F&?!1X-'R(:TZ;`#S$S=GF&Q'2 M/;^BM<$$(<>SW(D@Y4]&%HN"]T9EHH>SADH&[$6V^5Z/?\F*HDJP(NF,O/^M M%9N,S-"E).O`[6CL3#_&0X^&'E`]Z>'S.BHMW(AJ17N1_,B]H-!R5/J2[$FF M!I&:WC\FGXTT,AIP7'@N(NL$=+^R)=%1)+H-[5\B+'FH?3\$)=NP\V>.86RH8_06RH-+#+^_42D\)!.18DT9ZF>7#*R M2&^3)<>-(2Y:V0V*<^+?9A+E&1#E$GIMW0!%KY&YK> M(560D-#,9-3S?E"-#'=*&^>4/0%Z9?UO"JB^-''J^2J468%B(2`4(0!C3"QJ M`8\$;(!`JJ#S+?DQW4BF/V&S_=Z!9PVWD>/38J.\=_1H"XWT0@/J!!#8#:^6:(6D(]Z!W00YE63"WR M4PN9BL6O)W1PE1K@'!V^,2^9R;XM9/&PK6G;U!OR(HV#W$FBYI:@6:JFI`K6 M0AVHK4OPIU]0TO<^-/0-1J6#FL6-H%E4>$D0I!C&#`6D!%#;:5)PWZC%'/IY M.U<$;42_(.M4,\@U9#-Z"0L%3`%`7YM/@SD`!&@Z.".+'0V18X#0T,<=Z)D> M-$^*`4P4Y.;24V@Z77>&!$NA3[Y;)[U0/@E'/2!:$EV`T,<(80E3B>@[L*?& M"#&%=TBHIY/2Z0`*W4SF-I&`F\WKJ/F4PJC71)16(QP"\,)B)1(2!\KL*P(X M`8@`*3\7@&"5!1"*U/4%(?D?\$)9*;2`#)#RBP'P_%@`@E5\9\^O`9CT._*<#_G_*`5VA3M:AR#TFB"\&I0%)@#\!;C"QR#$V>A=6IZNA2]#CHNQ"P M`-0`Z$M)7\HORI?O,S1Z,K&CU<^=:.,O'VD?6)_:*YN@M$3[::YR1G@+S9`, M#.06LM(I@%_5;;B-;`7B*I$*)DSGGYYRW1BS)"XT_K:EH4E](#U0LPC:'&?F M&4N*2TGE-`F:/$>$8TZ78$;`+-#=6"AN M#I:F<=.)@9M3P#G%#`O\#*&<+,,VP#FQ#=!/!0ET8"J;FL\CI.44%"E5Q:]N M-+2GI$+`@(#A`)CR"[#V`&0`!T@"*[!21#&&O'_(2@NK/0`:@/,/O\JGVT3B M0S<#YE#.0&]Q:[GUK+">"Q^K7U.I*H_O\EEBY842#)20RX&4'X95PSKD,]Y( M#&H`E5-]HQ*RL`IC-0S*6"E^#8D:JX54";E83?GQ6(VB@`(E:Q%TR(J"A+$& M,,FA/#Y'CF4!R`HD]7P65M^@&D'\JNWAVL@%]*^"_%2J*\$>Q7QQS*I8E5\Z M!%VL"H0B:]0RFDI.A;.V`>2L:8!PHAI`4-C="%!@`%>(P$JPB5,3[!!HM?/A M`-R`*3\8@`Y`]<`"4+2J'GY],%;A9J)UT>I[:+126G]]CM6>W](4UGB2=`72 M#B*<"H2KX@O@:WHNK/,U-9E^A%:\H9T/!K#K&[5:"..:O+Y%']=4(M`1M?0% M(&VF2]28(UXRJQG?=)[N3?E\5E#98RP5*KD)Q%96)B>,XT3K(!?4#HA?W4B0 M`U6LQ;X>@*O/>=HH]&B0^JRC]@\]G\_!MHH"[:A:_R2>J,Z/H"N2G$IY;#-N M6CL:K\DEZ*Y/VNJK5/3]"0P/Z%9>:.K3%PH,;0)(+Q&'FD(``Z2-3P%+9D_7QF3CT,/U1V'[ZUIAE@/2?R6Q&$,U>1JZ:UB\:-Z"5* M$*.N!%?,X\$UT((J$A]J](OU(IU#;FZ&L^)R58#XY!O>W#&`3OX7$^>``(N0<>U_X$!E""B M_.JNNSZ#*QU@D9IP7;CF$1NN4DN(*[!RXHKP@X=87#V?&5 M6V6M>CXF@"M1C['9:(P1*GAQ(I6%%-^>5;8:@J@XAE6=(--#?>N>CX.@_H5=FCY.P^^ M4UFK:8#LP6L5QOI[30.L`&(`"]@40,"/FCCH>ZUF#ZRL"-C7Z@-V]QJ8R%]& M6\^LFE`9J,FM`QLK7;`N6T$$(]>M*]0A0\([W+.V^3BOL=>)@TP@^Q<'*<&B M"9FL;E;=:\V5`VOP:U[*6"4&\92;8H&@Z9IC10%`8#.MKCYIZX0P`:L2O+S6 M!>GQ:6\O>`#;K&IIP)I+XH+!#VX`>=&,*:87L#.E860!KV`+B%W;-> M7D\+&,(H;$`C"`N(K<+B6/&P1E@6P`R`Y$KY<\,B'0J4 M816QC%A#7[FA"8FNNJ=A,+*>P#5NZ@3KG!5;1@B\6$V&#Y:NF5AVLC8<_JT;P!7MT=;A3G:^A5!PHI9:VJ M6!&$3T^YGRTP""F)S,868U&0YT0Y[%[!Y&:.)<+V!EJ%@MATQ'ZA'1MZ;;*J M8$<.7(J`:]0/^%IP';O>%2>O+0A$(?+UXY8* M*!:9LE::J'$3*"#QU#KV*56DQU$]86,41;A6F##:'*F(<4IF*_1P8T4+/(S^ M_!J#*;\Z`()P#4@'$#W>8Q%KO,/!H,"/U?KS[`$<8?D*74<.2QJ(;+;5A1E6E;NV_"Y]S,1/:VE4=)A:?8B& M/QVA5]&<;-R4!D!W?!^"54F8Z=7$8$H6'ON#/2U,#'H97-E:K#WVVW@;>$WN M%6"0FTS>8!I508D]',E^,)6.[T.KYR1Q6;"/!4>^9"4V]3Z:9T)TY,`MB1>R M!)B(*<%M'ZK0Y]"8O`.V.'NJ`-*\I/FUD^J=5//A+"&4*-()86FP5/CIL_.] M_()_=53T7X(0D!I@[*"6!+VB-@!@Y0BU!*"&C`SL%_`'5+X4JDV0A3KIZPTP M(J%]B,\4']SSS>DM<`NJ*GT&40%4P@%P"N`".$#R!::J6DY7(/_QG$CI<_4I M`5P`VSZ>YN\@;^@9\`E&^\I\P`(LWS#0YGAF7$3Z!"-^C$X+)M63$?@3[00R M!\M\K4X=YWEV$_C=U/SQZ3"$?#Z\)Z8Q&ZD7Q7O:%ON>HM*'99EOZ8DI7"WF M_]"SR#ZAY@M2U4HFU";B"F*GTD2;X\!/)4C\ZPE.,>4`&$-ZJ*'O).!>O,U^ M#KFB>]3AX+KO,TLAY,SB'RF1@L,*`NVOJ!K\8P-4^MI\BKY.GZ+/T)?R.PH\ M!2NSG$`8Z\H3`0@'J/1)^E*T^,8+P:X//)GFP]$F`9`-$]@E7QW@+UGU$_CU MR\:8MP$,X1:@V[@Y!'+^SET$W`/EOV3EL5!&8 M"GZ&Z%FAID^00ZCY`[)"8D<#=P`K'PQTN"D$%#"H!GR"2;\RWWG6S#CG^TFZ M:?\"ZEF?X,>3T.=@],\^:I-]`UIE)HB6D'"@=0L$$C4,4X#N'[LR\;>[N0'L`2:+X43I(<>TUFF$-52. M,7$D]3ZVH&]V3#A<<`MT#;23>K[G[`Z@V"?NPQF:$F=]+H!E;9I/TV=YU#"< M$SFHR]IE'VU5;_AF#$S:^8@`T%E*X)?V*^H?1=3&9]5\I40WZF0P""A$W`KF M%,*)%TSP)%*!F64`0:T8(W1/JL_O"!."%^!>`(Q@)X6.YO2;#)< M!`Z8@0$"(*(66#I\_?Q%-?.:=CXI`.N@-_GJRR&6%)D`B$8%`"DR#%"JU?PA M'3"$J`0&`\?/1D#G+/8]`:0`3@`FP&M`UZ`]6$VD^N)^3P#=`$+@H[CN&_@Q M!-:'.('7Y!:`!C"LG40:$UD&F\5'JK%/#H"V1`8",W>"XUI6Y*$6[\DDC/M9 M1Q.#3H43P(YR9\`;."=:`2JJ68'TY`%P\!>K5?7!:@NM_4,[-EF M^C9]A,%GK8V4TM>E'0Z,:W6HO;^4[0O`U.(7HV/DK:5-Q2""6U>\,,X:IJ1V-<@!7/?Y"B*0-L<+9ORRS'>O=3*2^?Y^/D$HP^96[V+=4P*R"U78M2;:V9A]+#K6U6=UN?=08389RZ)!R03O&K(J1 M`[<`R\C-:;,V;:N6I)9.^J*U!\`]X@75TW=.1`*X`%H`0P``;IHO5+M4P#-" M!J^UX=I20MZ0R5>N1<^>:U<.LK[)K'#0'/GRNVWV;8>1O#YC9-ROY7FX1716 M!TF2UEF;HJ%C_@B4.`KN$'.1N3[E[0&0>=NJ1!`^;WV1G;]=P?2V62CP8T%< M;]M\V=MJ8V*Q>SOO?$B&;XFTZ,-='P1VUW>^I<^V&>61N[[W[7[PTRB_O8-2 M_-*AO=JB0_V6!1NLO0&8;5$`2P#I*PCBM;@0H$=V1O^KY\$G0'%VJPGYXP*, M<:5\O0Q$81T`#=`\*(+!ES"Z[C69A!G5&^>#"2U<5JI*_>0(FK!K#XR M$!Y_I-L/(,&V4CMKZ`@<;A.UC4>FK1W1ZL=%O-Q:`/5I?,$F@_.P*/#FY-`6 M)TV%JCZ_P+*@?1J(/-&B`'(`F4NMP*X/P^IBG-5."`<4,X"%@&W@98L"4`)< M,VD%HCJP_.=!P.?H$Y`'U'0][#XS#>6 M.+6`@T2P9YY`B*E592O@&92(O\L41'*R,/HSK*5F$PNHLD>HJ:V2YCA%O1T^ M"SD#?44*((FTL6+QRVB"(-!\2#Z.'P.TAD+011,J6-,/R4K2JZTUR*?,M!E0 M7K.&YD?@*!H4:5@%I!+KNFH.O4/.CB#16Z2->B8(`BR'IC/?0% M`7ZAP5!&8>-3F3D;Z)AR6QF/\E?R*-NOPODUS>BZ0IV(+%;,K+)P#$$BY3JX M"$^M3TU.+DK7&EL4-.K:6*.CF%-FI76T(X?IT]0:$\^E:SXHISGR4HD7?(5R M9'>M%,&BKMXGNB!H/68B=(T`2UT9*#E7M*"-A>BJ/IV0?T$M7T77H_B)O`JN M08T.'HV-!&41J6O23>@B2HN">MVGKJ`T"D`!??GYYZ:S=CZ?`0R7^^J_#8MV M)Q6#-TZ\;DB5F%G63>KZ=1>ZC3Z<@`VVI:L#)91Z&&X#;MLWY\4O&FCU;!*H M!6>$7-W@Z%@9+'/)/I1[-?&2&V/DMUB&DG7K*O4U>T6 M"*2[LDO.[J,T_/H7+&\J,[6O3T+&KIZO^^>9Y>[B4N6&SU`"9GO5*WIH%:&B M(5FS9DZAJ]#U%F',[1/`(=V<'#\G0!"@"5`$\".>9;FLI+Y6Z8G`L-#Y?.BV M=#V[MD4^HS(S",!=3*_:2*6G/5%I8A_4E9HD!;;&-U=_>\Z?+D?WE,HH#*^P M(*:&*;^DY0O`:>C\F\H6^I!\<3^/8`LWJ'LBS3.,,0FZD#Z.WQ0@"^`$8/XA M%(R198&)08#B)*C,/+&:66FA"U1;Z*]2;6!@U?%RU?2JH5<$[^_U&YMO52!8 M75FO:T?7JRMPX;J1X+1Z73V.9E9FX!(UQPL2&.N61U&L0\H`JW^W=0D]Y*-B M>8-]Q\,6*PH@T)K1)+3Z4UVR8]ZLR=30QXOFG;.N!*RBC-4U;P"TS2OF5&8> M93L@8D2_K@04"E`%\#`P_):5N+XC0!6`O^L$H`+@>*N\>`$>[YL3VKK"I:GV M'?>*W-WQ*WJWBKO;-*]5ME@WRIT(6DB34_*%=>`M=24X7+!>9CC14@<14E]_%:YZ":3N9O9U,NN M1".\&DL7($/5+OFN'!IF+5>ORM03Y9A7];")S+JZ&D%]LT5K[];2V5=V9#"P M)L:6TL6`:`O"SEA!7:CV,S6,]%=L*+27/GK"O%+$>`\,(,LA@!0`,4`%2`(\ M`9P`T][8U.(3*2AXW5="+3>)"T&+J"PR68IO9*Z^>L6Q55R_8=P/VDJ@U8GJ M"GVFO]Z$NRYI-/"'`U!#$& M3L^(ZLJJ+##U`QK;73D4+GN,YE3DI2.TCLC$W/5.>[<'\%*;H(740J:E'RHJGWLZ0:1ZV M*D^L#0?^)L7:9",N&<[L:#[X)2ETHB3/,*=8NA:6>.RDRUK[B7!M`-Q/D! M$>V\!$M78[E5G&G3)*C.$G>#KD2BH;H7]J<-E0*V(VFB:T`_((H7`4AGS?,F M(M6P/=X"+.:/*]M+M$AB%?V&:5T>G^/A4=""N)XX=#F?;MV6Z[(R4?#F'/E) M"P^GZAGZ[21& M'+&*5=_;P/;OLHMTO1],2*6_@MT-@^RWP:#,M/V**H6Z6%JX[^ZW^>O[[8CJ M3Z>%=$LW0`M@^.L38*8:?\6?64KL;*Z:').6%,`J;UD`5EE=O0R2 M']NB)U#U+^XW]#=+;"OZ+.&*N=6@)>S3?(EC1&B2&T6)^,,V(A82P_DO5??. M*W.&=]_L5@K3S,=1Q2>:7(&5N%#)X@A6;`+[Y:O*?G&7\TGV99.W#=`#N)TR M44.MC54=@!N`YW=A%7V6_:2\>=X8@!*8"2PY;1^B,/$'3=BI,9R%AHCQ;?2?E._V3^,W!IX0FH6,/!>2"6ZO-^ZZYR@L=GJE0"3 M!,B!%@%>P<'0:0A3Y0G:1.63%,,XL(R2:VCT$RY> M0@E]@BV!48&<537OSY%<^?RV!;3X8@(WV*VI_K*C2 M@HN245`=[38R"`@+AM!.(1V.W]+D*W>2>?C)=!ZN=S&$J-Q@+GQW#6F=&##M M!(^Y*U2_KGZ7OSOF)?`&>*N_`UXNZ^L7"=G2I;?&=*^.B-T#0\M0,O@T/?P. M'6>]IU+M8H77$#A1&`T:.;^_+=Y;;X=WO_#A!3UR_(8`&EVOKA+U:>@:'#"] M>V>\-=Z!0!+@T6ODE?3R5X%]/UX%*G#R!FS?+4&H67.A/.!CI>?3'"P,7?+B M6P.8JE=$9(OU[,HT=>J:>4NM7-[`[DFXOUKGY;>F M_-*LE5TWKY^W(9OX]*"^>P>]A=XP*J*WU+?H]:LZ>L>\@-Y1WXJ7TNM!A:3" M7WF"XE>Q;WHWL]GIQ73F=+V9A,D'IP+1E`K6-6&.>2.]J=Y2ZZK7TOL4E@I7 M<5>A%D\6KZT7&'P'O!="@,>\J%Y@;ZA5V/M,K007>\.^CUED;^-WV2O'3/>. M*!&1T5Y>(`;Q\V#QX_@]`0J]A%Y#K\KRUZ?H9?0>A=7`;`C;[ILSV%L4I&?: MA:66\%^0Y]`QV>OIXPNC>[V7ZE[`,+O77PG@]>OJ+:8`\EYZK[T7WZL&3@GM M>S5^I$M_;V+4G)K_'/CJ&`N^FB M?\6M7L+YI@\+-KYC7-ZP69A5V$N&*A`%.X=C4/_C@#`6C M`>^AJE'LZF,4*UMWU!_2)4&]WM>NHAK8*,$[U(IB5>&?GF!SX.;7)CSHN[F2?R^K1,\'YU5PV?K(O+(* M%<>^=<,$<'\QV>GT*VT.)TNZ-``-JAH8'E%,S0W#>@VAF&$3*$N4?.LOE?R. M*&F]@6$!H/CWK&N"5/BR6/NM'>*>W]RWR9>EW-1R*+6.%!&V(D<)*82$PS-*GF8,&I',PGZD+2:VH8['.^ M-H6*@0$?Y=;2IBM"5`.[,J>&Q%[,L!K0=5J"#%0:?F>%J=+-*8=AQHDISA/? M,-T`?%D[WRP8IWHK[!,")2C$DN+/;_'VS:DHUAL>"2B#/<\\,>8/"\0'/!@B MBF6+:U/\(,Z M)/N3%\9-8,BT`7D'S'UF?+G`)5(*@L!6_5GU]4K4^T2,OKYV\!.3-*H(AM". M`HW$'&)A<9K8D#E7W8A>_XZJS%!-+\(WUCND7"-&>`6W7T@FV[07*)]NYUM*J+MPW8%SB56:"34V_!.*DH5/!GA@I5O,* MB]^^!./(HP+1%.E#4$QF?&4"O<24'P44"Q`,7?3V;_5\D=5681-``MHSMK?N M7]V.#-X(\5NR99SRVQ:CB9N_2\:=0AX6`N6**I`N11:PL%F:2 MOK[!UMC&@M>X)"`K]>R.,6&YW(-W[Q1@<^#RD\T<#)4<>U:V#2G%H,EA;NBED%E+^T[S3V]"MY)6^N M3;FMA^-.X(Q0&$PSY/*V8ZR-I+[",?`W5`H-#!PK7S6)ELQ6PIS`&;QN_')B M"-^RTN#6+%D`0^!,6$MB@V^"^=W];AJ8:>H-1I1:?WNG4(=",.RWI3LDE>I& M9-/!GESYX7?SUHH"5HL:^DB=K\*3HJ&/XNO5K4AR>-/"J&!4:=KTA@K"].LB MA&V\"^$Q+XRWQWOFG5.23%N!K,L68=*U&IP1#KWVCHND^U@F[X#18OAB)0G; M(G:\9%::L!ITRUL2QLC-A"'"==ZRP:Z@U)HEY'O^A)T`B6&A,&.X*-SH90BW M+D]A]T:F,*LWL8GIC0H3>P^A56&7*H67/"KJQ3B:5$FGZ%)3KRT""U2@U!_3 M`<3"QE6G\%VQ1_SL%0U/A%FJ[50PJ=NQC4GAA2DN"[VG/M7^8&H1K!A>20H# M>WN`7F%?X5Y",LSQ.PVGAI5_JV&X<%KVWD@7=0#;33?'V]*$L4.U[AA!#OAB MA7.,HL-,KUF882SL@_OVAI69#M\&+\07,DS./0G;`UNA75U-)8>WTZM2E'AV M?-T`$%@W`(8ULCIBW2L21-NF4$CJZ2EP>?P^Y`[K2$^N0E@:J!UV=FDV5O49 M_HS`D.&C0^2T^DLB58QP#UBN45WTL8UT66HT!+RFBH-]I4SIL5C3[;BT%#AJ M>)6(I]1_,:9S`SPEQOR%2MBIPT"JZ'85GJ@6=.!2)NN\0E%#HI"S-)A&E-HN M+&.JV,,Q83*5/HH(A><^&A9_><@HJ/24$XA+K/KJ>TE]_4HHYZ53\`N\;/M* MB#>_'F2Y[XIW%UP3_1DS%*F$DL<$Z52`90SW328K$#:G6U@SI#*S?VLOE*EN MC$&1302MAY0?%#&WR MC9NE`&!@91PD%SJ7:)0:@B^GP,BGJW4T$5PX]A':',FC4N1'LH!1&;@VG!%; M-H')XV1OYDWTC4@5M7Z*@J>IH6/:HQ.37VI7=$?"#R/'TD3*<8!X-+`(YF,B M@^&&T$'!\;2W2ARZ9!2/CD>"I6,R)*F/0*":?>^JCNT']@/V;7V7)JA"A1UO M&&3'W6``K^TX')P['CGLCCV?P5.X[L0O'9PT'JOJ/IW"F.!><11T1#Q!]F:2 M026^*=`E99;1L&A[=!Y??/?!$@,GJ9GO!_CBM4XD2+CE^ MC^VJF4_X,9)W=AE6?D)ZA,NI1DYRJEB@58A9.$"Z!4VLW>.,(F\`#W`3MA#S><&VF>7)KFC9-!`1OBPC M#UO+2%TW[XKWS^NQ^!\'D`^]`V3'L`$9+)Q`7J*N<+O)E]XJH`-9-SRGU$-* MD.^?M='T<`79=\L59NW*$.'"MM_V[[-M'1@Z5(8H83=`" M1;V9ALS;L'EWBHPCEO7RAI>H#=^*XL.7CZE1Q`,SF$F]QT04L\;7;WG@//GB M`M.'.U_8(8YP#2I>?CEZE!^<%.:5;\_7!3DSC!X;#M&>Y,Z09-47YRL>;(K& M;[6.S\9Y:-/78]JG'&D&":2^/,/D)M8W<_`)U-@F$9?'K%]'8=.UL;RE/#R^45>I`<7EKF3Y""CDO/[M-NV6`UA2Y"B0'FC*O4V& M$^^%GF;U85IXZ#@COIYX#`F^+>6D(9^95:S-3"EV_(9_6$56)YV1Z0@?5`L. M/%&-@\0E`/#CJ M":6,$T:]GRC2",C1[`1V'`$$C5"L8D20;+DS!"F"-H.`KH,_)JAYV[SR-2T/ M@#>14$>,EM&NK[375#P3)?6! MC&.H"F9-L_(2;Y@%?%7Z$/V\1E@F<6@WH]G+$!(WG/&&%&>2)>V7GFEHIO.] M>9U_'#^*H7X9'DPQ3#*3(MV.?.9-*K_RS7#^]0N:BL>Z2#YZ)@>0;PCY*S!_ MG/6\0(DGWY[U(_#F=/X%0)]\R]IXBH=PO7QS#K0VG#_.6]?A`%`BXWSB-0+H MG)O.3&=.[M#Y-`!;UO/&G`=]CU1EY@K`^Y>%73H/6EFMM-^4H"93SW=P/FNR MF.,#5;_B\1LSYZQ>ICH7G7_.6.<4H];9:QM;OOSQ#D^JUF+^8A*5FMCZ2SMO M,:&9VL!+,0?X<%DVC"]_30G,NP+'\9./4%P6WI9:/SL%ZURIZ9(Q#_`7&`VL M!,8`),YEL6:7CPH$-C4?`46ELV:_H2&14GSI-$>:G,.?$=%9,^EO7+MG10!_ M`9/!LV;:;YK/!=O\5?T!`UFA1M90,^J9I-QD5N[*GK'.2^)A8*'0W8P74#Y^ M!MR*W5Y;JT`6M[HSC5:J:Q&<2$.L;^JT\1@A7.SFDMO"#-'V8J.90OB7!#6: M^9R'@,;YJ1>8G\PV'@.W&P/*+V>"LFOGZ[ON%0V'+^5^+RJ3#FQD'IQ& M>0>9N5>.ZGZX\1>E#/A%E(=\H@EA9OZAP+L[+L6^=5F?RLR.\@A14F@Y9D-@ M`&?-=T61$)[_WSU^JRY-/5C=&ZS#[`LD+8@+P]5A.G MEH&\)V0@J/BXH5L^GEWJ0*G0C^6C[&V`ATR[_"TOAA.]!.3'<)47R-H%GO0: MEYO"K.`&"-3&=W5X#L0QY33N>_0>N M1Y>8FNB.1@25,.CK4U7&)=^/IM+1'WE8FTD>K213#+F[)N*%,=F7PV=%7J*Z MGDV@5%%SZDN9RUN"F!KF/OVWI>>"[518:CG&E#WID]?&_F04`$"Y[BM01C'+ M!/:Z;\Z#\I-P2GR?[`$N`!O*@<6'LHOT_SPPP/L@)":*XV`RYA2Z`LI1GD'' M,O<2+-#;I^UXG`0R&T/4H?FJ-=["+C`SA,PY]KL^.!V[?5,GICRU+`I!['UR M#]:QO,-6*4':MWE[]>PJI!=][>53:);RX-GXZU0F%IG'DS]!(A"*9P_:=/R#[O.N9I_*;*6`[#P3":T-QBHS MH3>13FC<,0%:"CW81?#R/=/!X%W)95F8O&M)#B-_"#F\J$X^X7$W#ZS^S**> MH66\:N@;K_;8K\P]1@F+)P_+_0=J+8FP9?GP_IBVGA(N[FN4KKU]ZU[<86$Q?DWN]H>7*-)@713@FP"WG MA/N\/6?W\6EYMCR:CNW26=D33FIV3\V!DZ6T8=9CA=4NO M=@.DV.5>8F=:+(R(;O7N%3G);.&"*484X1A,W?R:=BG%2L;Y[\J!^^N&#OHV M$567AJD``>3FZ5"X,6P4-B`;DA>?YVFC1!ZQ\"R?/<(8S-+RU#`P'I5/,]5KYY6$S2TF@IA?N M%0_4Z4/IJ>!96@CPG5"3-(>$D%'^)AG4^LD)UE8VA_7)EFC5<"9:`IQ/OC<& M`9("RCXIJ&S8Q=P)S'_>F&>.*UX-YA07?-AMGDB[1[G$R.)+LL+1NCPK7&#. M_V+`73_QIA>5`6IX2%-WI$FO&%C#(O>+CKH8!>=F"W%$' MI;NBO<1FLZJP(OU*]?O! M?<_3!-J)@*%:M'"H9(+>"FV.KH-R85':%\PK%A*G>/$`A-4\`&%5#P"V#2?: M@.>_RM])L>O9D&B3U<,J8BG+MT)QL6`3*`$(+@NX?FG58VE]M!(2@'P`5F9> MJG]:FTBDX+JO1NV>[/NNIZG#G)&Z%>>-,RBRG[KBS3Q+%F&M*D&Y,[^:9.FOYL+. MO!;69UUZ)H,!7_#FS$B>+"/.5TR(]Y!%B3+!G.H$AB-<4ZT1Q#[;OB MC=_30&KY,Q)Q#$HS[!1/&"G2PF%?IVP74.D.51;C1P72*E*.'WZR5>@=]@N# M+[N:_+_%\=E00/!D#!3>%?NN]$B*(;DZ^F>>EGBZGK_)]%_V0A79!PJU7D^K M@>'%]T;]9,IP=DA$17D*C7>DL,9!"H64]5N'CH`.2B6ZI48Z)U:T*0UQ/6': M/XZZ:&AP-+[WGWQ^)D>GGV_&H-U[HSK:2W@*W2LJE-_1"@*WX[GXU$F/+D%@ M_GR;BX4HM+9:](K@[4?;JN6,]V!&M"6XT\E)5BMW@Y4/-6(SJ'6:"GI*]3_# M?<6\2V))'P5WBGM311Q'1)'2(T-_]#&8Z)@,SD&C_G;0I&.8H%+9"!M"M10X ME>.[^L9+7XJ1*XV&W@8/E,728&-@Y>V8P)N/=NL>09>5)`$K-`H@+:WF$^]> M8$&BR\`])WQZ%*S/'&.:H?7)U^,U]%XZT-N>EA]K M"P'32-8I`5);P^9Q*RD9@TS M37==B\\G]81U5GDIM*KR+GO4S]-TX)5Z6&SGTU*7B"72&D7\I/Z4E]EB7$K: M'J.N)%,NKS.UP()%ZHX&G3$@G)(RUR"D1!E1:/F>03^P%Z_%:Y)>*9ER,;T=BD!PV+B1W M))JQ8.4H-A(`?1EBI@"/G_O)^-XTWSC:#'RW]B3CL?36"&4;Z=^:H1RXAC/+ MHSV"A>N^)8$`CU6\UNZZKWG8_6)EX?9Z1>POCJ[_3#.3LUBMM-9D'UH]E9+G#/$%ME+(:!ZB2Q3QD"O M$F'69=!I\\O1=+B*5F-GGJNOATJBM6`3.EWH%/Z3@R5/BIW.9/*7E&C0Q!:OMKY/!2*+7G7L>,E-.VX"0T.?D)W ME2_*HE?,I?Q!>B'L&7:>UP+I0BK4W6\ZVO8;_L:@`F_1KV"(K>!K4(2E>KPT9.7V(7B#W'?FNRV4ZMCE4E_V$HDM]I:&:1FRU?!)O M,LFWC,?=)'_VTRO7WL?^1L74_6U-XI#2'#F]O&PW/DM]M>)3J-FYE`S:'BH? M)N/5V-`"+'Z6@/C'U"3**3':5U$$(>OR)H`1EC628@>[W5C&-I+1#0C?]`X/ M'\^5(((:9GG7;1C]Q1Q+M-F5SL/"7SZA/KE73&XSERN.Y5E8Z,S8^6QI5HQB M"@VY8L%[[;=:4%P[-6N./Q_&($]1XO))<=!,Z;S,<"7K?J>BBF*W>@R=DQ+CE2 M`;Z%FDU$(6``+&L?D)C>$Y^%BM!-("-T*K#_)*:.<3>1I071P&;6-'`YG&"` M>P&2@]_W*,5QVP?:G,W<[]I.0.1A\WBM>;9&W!>KLX^9WS3T5)-"FJ]^JC.#BX*2ZP5T-!0TW MDA.W"6R@BJ-O@C`0=?1*NX6-2TYZJHX=7#* MHE>9Z,N[(H&TC'@@Q0-(D[VJ=>`P'_:0=DR2R%RWF.&2ST*F(F%0]FC7?`"? M)0D.G.21*`F8)2UG!+^Z#86#RFVMYJ:[VH@!S%5#,V&&$=ZNIAVYV^QV%'$3 M_6Z4?(()=%G3"*SY+7-_!IB#B>!A\BWXC0CP>U2/L7^H?>=58FIVX1V#OO9) M!U<"?>8HYZJ[:C`59$8_N2G='42!M=N/M'"6;=E:_,(`$>=J-#X69GEU7M8> MN/>L\PB8H,\;T@?T5@G:/Q@++>^B]PCQGDTP2`E1=H'>Y$;!@TXVZKW,7M:V M^?:L,H%Y[-(;R8?U_@LV)'!&A6B@\]1[6*GT+CB3O5>8?T%@Q-`[[8T"\'IS M8:-E4&_JZMN;A5E;*@F@O1>?R,0VY/&AWM>PM$4Z&JZTO8P;)JX7TZG=G&#" M_.Q_$L[@H>@0"(IYQ<>.8A>LC>7HZ4(PC0CSOA9OJ=&5PMEK]TX3'8WXHWES M",G<3V[];S0SYDOKUF8K=Y/1"TJ=:=:61)BOM&=>N5';=&7$XL:T$FFT5FHF M;S"`#`%=;=]RZ+P.-@#:!:G%(<)MWPR2+)']\>;]'Q53#6? M#:^"/0*A7UWUSBSZ-N.@H^F9AUHOH;";S,UT1OZ='<"VN[_$MWGSA6MXQ@+. M?_7+CNM%\%71<-B-37@OJ#6C>;/'V*G'FSN:G#:^*$Y2KQBFH>WBC^''L)N^[%LW45?B@>YB3* M&-.:3$0Q95RQUQTW]?*>C'T,_,4T'U?PTGC`9`**(FNFL.]M=-86CV@*A1^N MM\&2`4&QY`BP55A$)2>F)@\K%,8&[;+`RP#_J ME[6:",ZY*I-;&5U^U4`+?#1$-6I0,*Q<`VK#(-GJXW7VUVW(->(XDHRZ5H*J MKH6M=^,VI.+S*XEM5`8WEV'72&79=3X[-2L-I@+XB:<"<@`3(%M``2!6$`Z\ 6`)X&9@6K`EHAJ\`6<"N4"/8"3P"(!SX[ ` end From owner-mpi-ptop@CS.UTK.EDU Fri Feb 12 10:09:41 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA09820; Fri, 12 Feb 93 10:09:41 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA12070; Fri, 12 Feb 93 10:08:59 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 12 Feb 1993 10:08:58 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA12062; Fri, 12 Feb 93 10:08:52 -0500 Received: from b125 (b125.super.org) by super (4.1/SMI-4.1) id AA19655; Fri, 12 Feb 93 10:08:50 EST Received: by b125 (4.1/SMI-4.1) id AA11977; Fri, 12 Feb 93 10:08:49 EST Date: Fri, 12 Feb 93 10:08:49 EST From: lederman@b125.super.org (Steve Huss-Lederman) Message-Id: <9302121508.AA11977@b125> To: mpi-ptop@cs.utk.edu Subject: Net responses so far (2) Well, I haven't been bowled over with responses. Here are the two so far. If more come I'll forward them. See you all soon in Dallas. Steve ---------------------------------------------------------------------- Return-Path: Date: Wed, 10 Feb 93 18:09:12 -0500 From: johnn@eiffel.LCS.MIT.EDU (John Nguyen) To: lederman@super.org Subject: topologies Some of us here at the Computer Architecture Group at MIT have been working on topologies that span 3 dimensions, but have lower number of neighbors than the 6-neighbor cartesian mesh. Our most notable result so far is one based on the 4-neighbor diamond (or tetrahedral) lattice. I can send you a draft of a working paper if you're interested. John Nguyen johnn@lcs.mit.edu ---------------------------------------------------------------------- Return-Path: From: suhler%xanthus.usc.edu@usc.edu (Paul A. Suhler) Subject: Tree Structures To: lederman@super.org Date: Wed, 10 Feb 93 13:29:35 PST X-Mailer: ELM [version 2.3 PL5] You might want to look into the X-Tree work by Despain, Patterson, and Sequin at UC Berkeley in the late 70s. The initial paper was in the 1978 Intl. Symposium on Computer Architecture, pg. 144+. Despain and I published some traffic studies in the 1979 Summer Computer Simulation Conference. I graduated in '78 and lost track of the work after that. I know that no complete system was ever built. Good luck, Paul Suhler ---------------------------------------------------------------------- From owner-mpi-ptop@CS.UTK.EDU Tue Feb 16 08:48:29 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA18685; Tue, 16 Feb 93 08:48:29 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA20450; Tue, 16 Feb 93 08:48:02 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 16 Feb 1993 08:48:00 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA20436; Tue, 16 Feb 93 08:47:58 -0500 Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1) id AA21547; Tue, 16 Feb 93 08:47:55 EST Received: by b125 (4.1/SMI-4.1) id AA12885; Tue, 16 Feb 93 08:47:55 EST Date: Tue, 16 Feb 93 08:47:55 EST From: lederman@b125.super.org (Steve Huss-Lederman) Message-Id: <9302161347.AA12885@b125> To: mpi-ptop@cs.utk.edu Subject: 2 more net responses Return-Path: <@kakwa.ucs.ualberta.ca:myrias.ab.ca!bhl@myrias> Date: Fri, 12 Feb 1993 16:11:37 -0700 From: bhl@myrias.ab.ca (Brian Lake) To: lederman@super.org Subject: mpp topology request Steven, I haven't read the info about mpi that you suggested, but I thought I'd give you some comments in case I forget to later. If this response is way off, please accept my apologies. At Myrias, we describe interconnect in a fairly simple fashion, and it revolves around a hierarchy of different fanouts. Our last generation of hardware had 4 processors on a board with their own interconnect. 16 boards would get collected in a box (cage). The cages were interconnected with user switchable cables, so one could connect say 8 cages into two clusters of 4, or whatever. It is important that our OS understand the interconnect topology, so we can optimize the usage of the network and do caching at the right levels, etc. A regular interconnect like this is quite easy for a computer to deal with, and the 'cost' of communications between two nodes is a function of the depth of the tree you traverse. Let me know if you wish to hear more. Brian ----- Brian Lake Myrias Computer Technologies Inc. 8522 Davies Road, Edmonton, Alberta, Canada. T6E 4Y5 Tel 403-463-1337 Fax 403-465-0130 Email bhl@myrias.ab.ca Return-Path: Date: Sat, 13 Feb 1993 13:09:36 GMT From: Damon To: b125!lederman@super.super.org Subject: Re: topologies and MPI Newsgroups: comp.parallel In-Reply-To: <1993Feb10.123714.24760@hubcap.clemson.edu> Organization: ExNet Systems Ltd Public Access News, London, UK Cc: pgram@exnet.co.uk In article <1993Feb10.123714.24760@hubcap.clemson.edu> you write: >The Message Passing Interface (MPI) working group is trying to create >a standard for message passing. In other postings to various >newsgroups, people have been invited to become involved and the Would you like to write a letter to the Editor or Parallelogram (me!) about this? I think that a lot of the potential paticipants in this effort do not read USENET, or at least not much. If you want to direct a version of this to me I'll put it on our letters page. If you can do this in the next few days I'll get it in this month's issue, space permitting. I think you might just catch that slice of people who read more paper than USENET. B^> Damon, Editor PgramEd@exnet.co.uk From owner-mpi-ptop@CS.UTK.EDU Tue Mar 9 05:57:27 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA16057; Tue, 9 Mar 93 05:57:27 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA23618; Tue, 9 Mar 93 05:55:57 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 9 Mar 1993 05:55:56 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA23610; Tue, 9 Mar 93 05:55:53 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA22780 (5.65c/IDA-1.4.4 for ); Tue, 9 Mar 1993 11:54:23 +0100 Received: by f1neuman.gmd.de id AA17533; Tue, 9 Mar 1993 11:55:45 GMT Date: Tue, 9 Mar 1993 11:55:45 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303091155.AA17533@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: forwarded mail from Lyndon Clarke Cc: gmap10@f1neuman.gmd.de Dear PTOP Subcommittee members, I found a mail from Lyndon Clarke in my mailbox. Since he is not a member of our subcommittee, he asked me to forward it to you. Best Regards, Rolf ----------------------------- forwarded mail --------------------------- Dear process topology subcommittee members It seems to me that from a practical point of view process topologies can only provide support for a small number of special topologies. The subcommittee is currently planning one special topology, cartesian structures. This is a good choice, because lots of programs can make use of it, and lots of programmers can undserstand it also. I also seems to me that process topologies should provide some general purpose capability, so that the user with some other topology can hope to get some help from MPI. The subcommittee is currently planning a general purpose topology, graph structures. These are specified by neighbour lists. This is also a good choice, and I can immediately think of a few topologies which this might get used for. The problem I have is that there appears to be a striking inconsistency, in the working document. I shall explain. Please send you comments to me personally as well, as I am not in this subcommittee. I am lyndon@epcc.edinburgh.ac.uk for email purposes. Now I try to explain. In the first place as discussed at the meeting the capability of process topologies in MPI is that it can map the coordinate space of a topology into an existing set of processes which are already placed on processors. The intention is that the system is made able to implelment mapping optimisations, if this should be possible, from which the user will benefit. In the general GRAPH structure the user constructs a neighbour list. One can immediately imagine that this is constructed by a rule - such as a butterfly topology. Then is it apparent that the user has defined computable (I did type arithmetic first time!) relations between indices in the index space of the topology. For example, the third neighbour of process 9 is process 13 in a hypercube, which is calculated as 9 ^ (3 - 1). The point is that the used defines the relations which exist within the index space. The system maps the index space onto processes. Given the index of a process, there is a well defined way of determining the indices of neighbour processes. The user then find from the system it's position in the index space, and immediately knows the indices of its neighbours. In the case of special topologies which are expressible by the user to MPI in a more compact form, consistency with general topologies requires that MPI *defines* the neighbour relations between indices within the index space and positions of indices within the topology. For example, in a 2D (M,N) grid the process topology section of MPI should define that the coordinate of index I within the grid is given by (and I'm using C style indexes starting at zero here to make the expression simpler) (I%M, I/M) (or it may be the other way around :-). In the description of the CARTesian topology this is not defined. I expect that you mean it to be, perhaps you thought it was obviously the case. Please note that I do not mean to say that the user *must* explicitly calculate neighbours in this way, and of course there is much sense in providing (special topology specific?) procedures or macros which do the calculations. I am just saying that for consistency MPI *should* define the neighbour relations within the index space. For example, in a cartesion structure to calculate the neighbour of a process at a given displcament (dx,dy,dz) is a calculation which is easily defined but if the user spreads it over her code and makes just one typo or error in cut-and-paste style programming (typical of some fortran programmers I know) then s/he will have difficulty, so for his/her convenience the process topology section of MPI provides a routine to do the calculation. Please, if you agree with this, or disagree, then I am most interested to hear your opinion, so CC: you email to lyndon@epcc.edinburgh.ac.uk Best Wishes Lyndon ----------------------------------------------------------------------- /--------------------------------------------------------\ e||) | Lyndon J Clarke Edinburgh Parallel Computing Centre | e||) c||c | Tel: 031 650 5021 Email: lyndon@epcc.edinburgh.ac.uk | c||c \--------------------------------------------------------/ From owner-mpi-ptop@CS.UTK.EDU Tue Mar 9 09:23:00 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA05803; Tue, 9 Mar 93 09:23:00 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA06876; Tue, 9 Mar 93 09:22:24 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 9 Mar 1993 09:22:22 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from sampson.ccsf.caltech.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA06868; Tue, 9 Mar 93 09:22:20 -0500 Received: from elephant by sampson.ccsf.caltech.edu with SMTP id AA26746 (5.65c/IDA-1.4.4 for mpi-ptop@cs.utk.edu); Tue, 9 Mar 1993 06:21:46 -0800 Received: from lion.parasoft by elephant (4.1/SMI-4.1) id AA10427; Tue, 9 Mar 93 06:14:31 PST Received: by lion.parasoft (4.1/SMI-4.1) id AA21439; Tue, 9 Mar 93 06:14:36 PST Date: Tue, 9 Mar 93 06:14:36 PST From: jwf@lion.Parasoft.COM (Jon Flower) Message-Id: <9303091414.AA21439@lion.parasoft> To: lyndon@epcc.edinburgh.ac.uk, mpi-ptop@cs.utk.edu Subject: Topologies & neighbors. I've now read Lyndon's mail twice and although it's very early in the morning here I find that I can't really understand the dificulty. My impression is that the MPI topology computations "don't" specify the neighbor computations in any way but provide functions that return to the user the (opaque) processor identifiers used for neighboring nodes........ for the cartesian case. Ah.... maybe I see??? Is Lyndon's argument that this is different in the graph case, cos I suppose it is. In that case the user gives the ranking in their arbitrarily numbered tree ... but then what do they use for opaque id's? I guess the tree enquiry function can still return opaque id's for the nodes but is it obvious that relationships like parent and child(ren) don't get lost on the translation..... I suppose you could arrange that they don't. Hmm. Still not sure I understand. However, my feeling as we head down the slippery track towards opaque id's is that the topology stuff becomes clearer becauses to get anywhere at all with opaque beasts you're going to need someone to tell you what they are for the processors who you wish to communicate with .... and the only thing you're realistically going to know about your target is its rank in some real or imagined group. Then you ask the topology call to tell you who that node is. If I've missed the point entirely, Lyndon, I apologise and please try to clarify for me!! Jon From owner-mpi-ptop@CS.UTK.EDU Tue Mar 9 09:39:15 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA06237; Tue, 9 Mar 93 09:39:15 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA07677; Tue, 9 Mar 93 09:38:39 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 9 Mar 1993 09:38:38 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA07669; Tue, 9 Mar 93 09:38:35 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA12565 (5.65c/IDA-1.4.4 for ); Tue, 9 Mar 1993 15:37:06 +0100 Received: by f1neuman.gmd.de id AA16778; Tue, 9 Mar 1993 15:38:29 GMT Date: Tue, 9 Mar 1993 15:38:29 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303091538.AA16778@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Lyndon's proposal Cc: gmap10@f1neuman.gmd.de, lyndon@epcc.edinburgh.ac.uk earlier today I forwarded you a note from Lyndon Clarke in which he discusses an inconsistency in the treatment of simple geometries like grids as compared to the more general graph structure. I assume that Lyndon does not have problems with the general graph definitions. There you have an enumeration which he calls the index space. The user can do arithmetic on the indices if he likes. In my view this enumeration of all processes in the graph is simply there because there is no other obvious naming of positions in the graph. I do not see, however, why the user wants to have a similar indexing in the cases for which we supply the special functions (rings, grids, tori). There the most natural way of indexing is the multidimensional coodinates, for example (i,j,k) in a three-dimensional grid. What does the user gain if he knows that this process is number ((k*ny+j)*nx+i) in a linear ordering? All the lookup-functions which are provided together with grids/tori don't use linear ordering, but they refer to the grid coordinates. For example, if a process is (i,j,k), then his upper x-neighbor is (i+1,j,k). I would tend to see more room for additions in the general graph case. One reasonable addition seems to me a lookup function which returns the index list of neighbors of the calling process. Such a thing would be useful for library writers who work on graph structures which have been set up by the user before calling the library. Rolf From owner-mpi-ptop@CS.UTK.EDU Wed Mar 10 07:51:58 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA28067; Wed, 10 Mar 93 07:51:58 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA10346; Wed, 10 Mar 93 07:51:14 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Mar 1993 07:51:13 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA10311; Wed, 10 Mar 93 07:50:48 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA08118 (5.65c/IDA-1.4.4 for ); Wed, 10 Mar 1993 08:36:34 +0100 Received: by f1neuman.gmd.de id AA15791; Wed, 10 Mar 1993 08:37:57 GMT Date: Wed, 10 Mar 1993 08:37:57 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303100837.AA15791@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: mail from Lyndon Clarke Cc: gmap10@f1neuman.gmd.de With this note I send you another mail from Lyndon Clarke which I received yesterday evening. I really think he should join our mailing list. Rolf ------------------------- included message below ----------------------- From root Tue Mar 9 16:32:00 1993 Received: by f1neuman.gmd.de id AA12221; Tue, 9 Mar 1993 16:31:57 GMT Received: from sun2.nsfnet-relay.ac.uk by gmdzi.gmd.de with SMTP id AA15110 (5.65c/IDA-1.4.4 for ); Tue, 9 Mar 1993 16:29:56 +0100 Via: uk.ac.edinburgh.castle; Tue, 9 Mar 1993 15:17:08 +0000 Received: from epcc.ed.ac.uk by castle.ed.ac.uk id aa12023; 9 Mar 93 15:16 WET Received: from subnode.epcc.ed.ac.uk (onyx.epcc.ed.ac.uk) by epcc.ed.ac.uk; Tue, 9 Mar 93 15:16:20 GMT Date: Tue, 9 Mar 93 15:16:18 GMT Message-Id: <2102.9303091516@subnode.epcc.ed.ac.uk> From: L J Clarke Subject: Re: Topologies & neighbors. To: Jon Flower , rolf.hempel@gmd.de In-Reply-To: Jon Flower's message of Tue, 9 Mar 93 06:14:36 PST Reply-To: lyndon@epcc.edinburgh.ac.uk Status: RO Hi John, Rolf Perhaps there is a little more subtlety to this point than I had at first supposed. So I shall have to go slowly (I thought I had). ---------------------------------------------------------------------- Hi there This a reply to John's and Rolf's replies. My thanks to Rolf for fowarding it to the subcommittee mail list. The first point is that perhaps I should join this subcommittee. Please can either of you - suggest Rolf - forward this to the subcommittee on my behalf again. The second point is that I think it is unwise for process topologies to talk of returning a opaque task (or process) identifier from the enquiry functions, as this presupposes the decision of the point-to-point subcommittee which is clearly not yet made. I seems more prudent for the process topologies to say that those procedures which return task (or process) identification to the user will return them "in the form appropraie for use in the point-to-point communication routines". The process topologies committee can globally substitute the actual form when the point-to-point committee have made a firm and binding decision. [Personally, I strongly suspect that point-to-point will yet make that decision in favour of rank within group, rather than opaque identifier.] The third point is that I think it most prudent that process topologies include a general graph mapping facility, as indeed you are sensibly doing. The specification in terms of an adjacency list make sense. The fourth point is that it seems to me that there are one or more special topologies for which there is a well understood pattern of usage and there is advantage in process topologies dealing with these in addition to the general graph. One such topology is the cartesian structures which you are including into process topologies, which I applaude. The fifth point is that from the point of view of formal specification I believe there is advantage in being able to describe the special topologies in terms of the general graph structure. [Of course, in an implementation we would expect that simpler and better mapping algorithms known for cartesian structures would be used, but that is not the point here and is irrelevant to this point.] The sixth point is that we should expect the general graph to be used for structures other than trees! (For example: Butterfly, shuffle-exchange, de Brujn ...) The seventh point is that the general graph being specified by the user in terms of process ranks within the group of processes which are vertices in the graph, seems to presuppose that the user can compute the ranks of neighbours of a process given its rank. This seems an entirely reasonable presupposition. [The "rank within group" is a convenient abstract labelling of processes. One could have chosen textual names, but the rank allows computations.] The eigth point is that in the cases of special topologies for which MPI provides special creation procedures it is reasonable for MPI to provide, and convenient for the user to use, procedures which will return the neighbour identifier "in the form appropraie for use in the point-to-point communication routines". The ninth point is that consistency between the definition of process structures in the general graph case and in the cases of special topologies, and morevoer the ability to formally define the special topologies in terms of the general graph, suggests that the process topologies section of MPI should define the computation which given the rank of the process returns its neighbours. [Of course, we would expect the user to observe good programming practice and make use of the procedures provided for such computations, but that is not the point here and is irrelevant to this point.] I hope this is clearer than before. Best Wishes Lyndon ---------------------------------------------------------------------- /--------------------------------------------------------\ e||) | Lyndon J Clarke Edinburgh Parallel Computing Centre | e||) c||c | Tel: 031 650 5021 Email: lyndon@epcc.edinburgh.ac.uk | c||c \--------------------------------------------------------/ From owner-mpi-ptop@CS.UTK.EDU Wed Mar 10 08:12:06 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA28499; Wed, 10 Mar 93 08:12:06 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA10954; Wed, 10 Mar 93 08:10:15 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Mar 1993 08:10:14 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA10941; Wed, 10 Mar 93 08:10:12 -0500 Received: from b125.super.org by super.super.org (4.1/SMI-4.1) id AA20459; Wed, 10 Mar 93 08:10:10 EST Received: by b125.super.org (4.1/SMI-4.1) id AA01738; Wed, 10 Mar 93 08:10:08 EST Date: Wed, 10 Mar 93 08:10:08 EST From: lederman@b125.super.org (Steve Huss-Lederman) Message-Id: <9303101310.AA01738@b125.super.org> To: mpi-ptop@cs.utk.edu Well, once again I have not posted for several weeks after the MPI meeting. Let's have a vote: Should we: 1) Do research 2) Do MPI standard 3) Do administrivia 4) Postpone the vote :-) Seriously, I have several items from the last meeting that we should probably decide: -1- Should we allow the user to specify a random mapping when a topology is set up? The main argument for this is that you may want a topology for your algorithm but the communications patterns are not those that the standard MPI placement algorithm minimizes for. As an example, MPI would now implicitly optimize for communicating with your +/-1 neighbor in each direction of a mesh. However, your communication pattern might be for +/-2 in each direction. On some machines, the optimization for +/-1 might make the +/-2 communications worse then if a random mapping was used. The one argument I see against this is that MPI may not directly support these other communications patterns so why should the user specify a topology. I don't think this is a strong argument since one should still be able to specify the topology even if the mapping is random. My current feeling is that the user should be able to specify a random mapping for the topology of interest. Thoughts? Now: what do we mean by random? -2- When Marc Snir raised this issue the main point I believe he was trying to make is that you are usually doing a permutation between nodes when you are communicating and what you care about is minimizing the time of that communication. We have implicitly assumed that the permutation is a shift of one node in the grid. Is this what we want to do? I think allowing the user to specify the permutation would be great but messy. For example, the user may wish to minimize contention when doing a transpose on a 2D mesh. Any thoughts? -3- I think we need to pin down how we are going to talk between topologies. As I now understand it, a topology is its own group. So to talk between nodes/processes in two groups requires talking between two groups. Is this correct? I also seem to recall that we are not going to try and optimize the relationship between two topologies. Is this also correct? If so, does the user have to search the second group to figure out what node/process to send information to (i.e., find the rank of the process of interest in the second group). Is that what we intend? I think we should make it clear and decide if we want to provide a routine to do this. -4- The question was raised of what happens to extra nodes when a new topology is created. For example, if you have 10 nodes and create a 3x3 grid, then one node gets left out. As I recall, it now simply gets a different return code. The question is should the node(s) go into a second group so they could be manipulated in an easier fashion? -5- The MPI group agreed to zero up numbering. However, the question was raised if the grids would be row or column major. Another thorny issue :-( One is FORTRAN oriented the other C. Some felt it should depend on the language but this would be tough when they are mixed. I personally liked the suggestion that the opaque structure (that great idea that is not carefully defined yet :-) hold a flag that tells which choice was used and allow the user to specify at group creation. What do others think? Steve From owner-mpi-ptop@CS.UTK.EDU Wed Mar 10 09:38:10 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA01079; Wed, 10 Mar 93 09:38:10 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA15108; Wed, 10 Mar 93 09:37:30 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Mar 1993 09:37:27 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA15078; Wed, 10 Mar 93 09:37:19 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA26003 (5.65c/IDA-1.4.4 for ); Wed, 10 Mar 1993 15:35:46 +0100 Received: by f1neuman.gmd.de id AA16743; Wed, 10 Mar 1993 15:37:09 GMT Date: Wed, 10 Mar 1993 15:37:09 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303101537.AA16743@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: comment on Steve's note Cc: gmap10@f1neuman.gmd.de My feeling is that at the moment the whole MPI activity gets more and more diffuse, and that it's about time to refocus on the short-term goals of MPI-1. This will also influence the work in our subcommittee, and we have to restrict ourselves on well-proven concepts. I appreciate Steve's note since he gives a good summary of the points which are open at the moment. I would like to comment on them shortly: 1. I'm not convinced that random ordering really helps much. If the optimization is done such that +1/-1 communications are most efficient, of course there is no guarantee that +2/-2 communication is nearly as good. However, I do not see any application where the topology is a grid, but the most common communication pattern is, say, with distance 2 hops. A more ralistic asumption seems to me that there is a mix of different distances, where the nearest neighbor communication plays some (perhaps not dominant) role. The multigrid example of Oliver McBryan at the Dallas meeting falls into that category. Do people expect that random mapping gives you any advantage in that case? If the majority thinks this is a useful feature, I suggest we add a parameter to the topology definition functions for selecting a "don't care" mapping. In this case I think it is no big deal which random number generator one uses. 2. This permutation kind of specifying communication could be a good idea for the Collective Communications subcommittee. However, not all communication going on in an application is of this type. Sometimes only some nodes in a grid send messages to their neighbors, or the communication is not well enough synchronized over the whole grid. In such cases collective communication functions are not applicable, or they would lead to unnecessary waiting times due to synchronization. So, the specification of a permutation function cannot replace the topology definition functions which just order the processes in a logical way for easy and efficient use of pt2pt functions. 3. The inter-group communication is very tricky, but this question has to be dealt with in other subcommittees as well. Is it at all possible to communicate between processes which are not in the same group? Can group ids be sent in messages? I think that however this point will be resolved in the whole committe, the topology functions can deal with it. The lookup functions for process ids already now contain the group id as the selection criterion for the toplogy. The generalization would then be that one can use the lookup functions for groups of which the calling process is not a member. 4. Another related point which was raised at the last meeting is what happens if a group has 10 procs, but the (3,3) grid only uses 9 of them. In the current proposal a topology is assigned to an existing group. The alternative would be that a topology always creates two new groups, one which exactly comprises the processes of the grid/graph, and another group with the remaining procs. This second group could be empty, of course. Another call to a topology def function could then be used to apply a topology to the rest group. What do people think? 5. I don't have any strong feelings about the row/column major ordering of processes. Probably the best solution would be to add a selection parameter to the definition functions. I think this would be completely sufficient. Rolf From owner-mpi-ptop@CS.UTK.EDU Wed Mar 10 10:51:39 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA03065; Wed, 10 Mar 93 10:51:39 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA19284; Wed, 10 Mar 93 10:50:56 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Mar 1993 10:50:55 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA19275; Wed, 10 Mar 93 10:50:53 -0500 Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA26712; Wed, 10 Mar 93 15:50:49 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA07653; Wed, 10 Mar 93 08:49:35 MST Date: Wed, 10 Mar 93 08:49:35 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9303101549.AA07653@macaw.fsl.noaa.gov> To: mpi-ptop@cs.utk.edu Subject: Re: mail from Lyndon Clarke > With this note I send you another mail from Lyndon Clarke which > I received yesterday evening. I really think he should join our > mailing list. > > Rolf I agree. Tom From owner-mpi-ptop@CS.UTK.EDU Fri Mar 12 07:30:35 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA18907; Fri, 12 Mar 93 07:30:35 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA28091; Fri, 12 Mar 93 07:29:52 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 12 Mar 1993 07:29:49 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA28083; Fri, 12 Mar 93 07:29:34 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA02607 (5.65c/IDA-1.4.4 for ); Fri, 12 Mar 1993 13:27:55 +0100 Received: by f1neuman.gmd.de id AA16470; Fri, 12 Mar 1993 13:29:19 GMT Date: Fri, 12 Mar 1993 13:29:19 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303121329.AA16470@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: IBM paper Cc: gmap10@f1neuman.gmd.de Yesterday I got a paper from Howard Ho (IBM Almaden Center) about a library for the management of grids on top of their EUI library. He asked me to forward it to this subcommittee. In the following I send you a copy of my reply to him followed by the PostScript file of his text. I processed it with compress and uuencode. Rolf ------------------------------------------------------------------------ From gmap10 Fri Mar 12 13:17:54 1993 Received: by f1neuman.gmd.de id AA16182; Fri, 12 Mar 1993 13:17:54 GMT Date: Fri, 12 Mar 1993 13:17:54 GMT From: gmap10 Message-Id: <9303121317.AA16182@f1neuman.gmd.de> To: ho@almaden.ibm.com Subject: process topologies Cc: gmap10 Status: R Dear Howard, thanks for sending me your paper on "common group structures". I've printed it without any difficulty, and today I will forward it to the MPI subcommittee. Here are a few comments to your paper which reflect my personal impression and which are not meant to question the value of your work. 1. Your approach seems to me quite reasonable for the IBM parallel machine. Since the optimization of process/processor mapping does not gain you much on that system, you can do without it. This is different on other machines where a bad mapping may kill all the performance. Of course this makes it much easier to implement the CGS routines. In a standard, on the other hand, I would not recommend this approach because it is too much system dependent. 2. There are different routines for different spatial dimensions. I know the pros and cons since we did the same thing in early versions of PARMACS. In PARMACS we gave it up because there will always be someone who wants a higer dimensional version. If the interface is not dimension-specific, then you just extend the implementation. Otherwise you have to add a number of new routines. You have seen our proposal for the MPI handling of grids/tori. Since that is not dimension-specific, it is even possible to subsume hypercubes. After all, a hypercube is a grid with two processes per coordinate direction, as you correctly state in your paper, also. 3. In your proposal the creation of a topology assigns each process the group ids of its row and column groups. I'm not sure that this is sufficient for all applications. Sometimes a process wants to communicate with a process which is not a neighbor in one of the four cardinal directions. You gave an example for the nine-point stencil yourself, and already there it is a little tricky to get the ids of the corner-neighbors. Therefore, I prefer general look-up routines wich for arbitrary mesh coordinates return the identifier of the corresponding process. You can see an interface like this in the MPI proposal. I would like to invite you to join our subcommittee. We certainly need people with fresh ideas about process topologies. Best regards, Rolf ------------------------------------------------------------------------ begin 664 ho_howard.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0N`$" MA90I+VS`6`DB1L,4((:\@9-'3IHS:.BTS('#1HL<,4!("4,FS9@P;$`4R5,& MQ)0W9NC<"3/Q80DJ:>BP*9/QC$TR+C:FL0HES)DR.VS)DT;J#(>3-F2ADZ&>F4P>," MSF0%+ZB4P4+$J$X9-?(6':.33!DS($23-@TBX6,W(%XXR>T:-ILW1#6^SBUD MCQC(9(2;Z;/[Q93@4?`[>._<6/8\=])'2&XJ4G+3D1/&S1PV%9M63]X\ MS?F/9I#.:=KIK&R-LRC@'AMS[+%%7D&U$%1>#'8QQAMN'$5' M'VG`=H-?4J#U!AMUT)$&A!JE8<=??EF1X1P;=O@A;D6-Z(9C(,QQU%8*G)BB MAR":J"&'..)F'WY-O7@&"&W4D11X1%9D$QX@C%&''!,IUH:2:3!)1AUP:(0E M"&R=18<"D\65'%O1H0$"'!UJF>656=8`@I<@A"D72""4>6::\]$QY7A5,I<; M$%O1H9D<>[SP8WXM.<2==R\`6AX9,H8!1QF%#OC1>'70E]NA32D(PJ)_AD%# MH9PFZH(-@0$UPPPXU(##I]V%.D.`AMZ':`PAU5###$&!VNA69)Q%:*U`MF0# MK(P"ZAA2I-JJWPS(_CFE&W4@948999`1X!QT5%3''*OI],*TU;)Q;;8@8-H4 MFA,F^R`<::!5Z`COQOL1%K&^8$03%6VQH%X@>-J@$Z`9(800!P(\<&YNX,9? M;DD4`7!SK,DQ,6]FM-!M&FP4VC`(KX;[*0@?VP99P1#2044>DX(`;7-&I,PO MGTR:H9@<3,*<\L%O,&FP=[MQ:Q-=N8D1QGP@8`$"5>3E`9H06?'K4=+$U<$Q M&4.@0=4>65,EA-5LN"9''R._0-B#/Y///(C6L;@B9VQ/)USU"'&FY>1S:CS:)1Q4T[-&P]] MMVI25_WU;&6_O9?>%]\"'E`YWM>KSI\O/9O4TW4]M.[CGD[<%[\7."\/]0M0 M_J(WO:WXSTQ^"2"<^D(2`H+@>^;#0_F>QT#^.=!Z9@J*!+MW0=`X+PU3.LL& M]3<].K"L*2\0&F2L]T*242IQ<#+@>)JTPZ`0A3T46@ZCDJ<7!31'#G>XV`OD M,`8EGB%+#S,@%,MV!"6JKFQ=D\/7KE8&0LTA#'9H"K2",ADV)&4*"N#?"XR& M-#CY!3F;$:!3B!,U27T$3L_)X0+1IS3<94F'%GM8_ICD$.?1SPRP.6#]FF2\ M\(UO@-ICY/P6Z3SD*<],/Y0D`A%)-SH<13K9*@-'QE`&!50R>=<#G_APHA-U M^4MA`4N0"X)BR$4&4)&`>98IS6$-<4*+12:2+R(4 M:@Q-5!K_7-BR&/+)?S5\T1ZZ$$3=%>UH38$3-'DH!P4<[F,O@!H=I';'R\PQ M<<\A75"TR3\/KB^$,8HD_]XHESCFT9V02Z.([C2A"A$4<3M,G`]Y&:T7)*%Y M35QH4(:+CF$K5''*2R?"K8N4<@X?O0,<@@F"C,IAHSV% M@T=!"H*1EO2D49WJ2H.X4R!PBRITP.A\GDH;:X)5JR&UJDGW\%4YT`&M+=41 MBGBTHM+9B*X@4MI^6"*Z%Q#!"DE(8>G6AAH;*$!O?-L-@D"`FAKL86W/$>$U MA\2_O$`+CDPZ'.!PPRZRQ6ULS?DC4DLZ.."P!S12F-DK5R_\PEB?Y'6MCWLX0Q?#&-LPM,"738X!@I`4E!$.*.F M'#=.N>4;@)N2VHKL00BQ+6@*RV!,9'I%F4;M@WT/G."F(.G!"GCP@C&\%28) MEV^1VDI+=KQAHU! MC:YA`Q\!)H\@)HYOTY7VG8@U_N#!HU[,'.^5K#'N2 MUBFC.I:E.&,W7VVX7<"@=8=\G;33?BDUH]X@:D_=00'YBH.H@Z+JW!`J2ZG. M5X&R1.I\A35+;*GU"S28E^=T&:=?SE<>'LW8.&TH*7`X;$7?4"#GQ#.F#>UI M@7Y*$8M-P=@H9J9WVC88N4B&,I;YDFQ*<]WH)HHE,X`W2[S:+;?FQ@C28TL, M8@"MQO%@)3`P0A$`'O"!`SP&!E\)P@F^<`4^ M9O/SD,@"*$I><@"$%_.@S<)'6! MQT#C?P>XP&TP\%I_?-L[3OFR+WSM/2?[Y35?^X@Z'L1EKZ2T_,\ M\*$/^-E?+G&3%W\(QT\^V)&__.+C(.T93SS0@=_QE_]^]QH_N]FWK_WNJ[[W MKEV\OWBV10;_-,/4AC/S^]O\X#6"P_Y,G_O4` MV'\KH1*[1P0XL']%X`,T0`-1QP-+IW%OEW("MQ)$=P,&&`3[X0-)\&\`IQ($ M!W$P`((0MW41=W@*9X(@)W<.D8($%V\$=P-:'"'EWUR1WPGYW!4R(,*(.'YX+;2('52(B]"`-RYX&'5XZ,R'^+V(AFZ(S\]G;&(N<6`2-YXFAV(+["'`JYX^E2(H$MXF]IXD&F8^=V'T)F9"?:'7] MZ)`""9`1.88Y*'.-]W;,&`.H:`06B'%]X0,W`"U21X_L:'`)5WP3QX)G]XDL MN8V'YX4N"9$@%Y,X1Y$V69,XN8G_F'#9UY#91Y`8B8(:EX_<5Y3=9Y0-"8I= MEY0R.9'^"(Y.>9,#F8.K1Y`HYXY$X)%&X`,GEWL<^'7H>((X:((NZ"J8B(LJ MN(UR1W6SJ(,*1XD1!Y=[I9)S^87\N)0FF(\61Y5_YXQ\"((/R'5]V75_1Y4X M&94J27!>*'=[:'6,"9>-F8[AF(2328,TF'!":()%<')V.00J\8B)1W,Y&`-! M$'L=:02DR94BR8&H*7>L$HACB),BUW*".),LN(4RJ'*Y>7*[:8P%N836"'3` MF7U%L(>`-P3[=YS[!X,CMYQ[AYR+B`-#,(Q)V(XC,00YP"MNF`,WT(`UN9>Q M&9Z4*80)5YXU>(+H68*`1P2U.`-X5P0\!Y\G9P1;R)&]IXJ])X/V67`H1WG^ M68(B-P2S.86]*'(^%XO[L8?O:'2XHH$<&'9B.83I*'')!:(=D^IL> MNHDZZ8\KV(8K(7\GAXK3R)LD%W$ORBNU)Z-2"8ADV9"K8H(WT):4*9Z02)3` M>9XZ>JE_>7`WN*D^FIB>:IJ.66*IZ:JJ0V*.8FJH$QZD(>8,JR"LJ M^(X#Z8,V\(A)B70RP!.[JG$)**.%5X-H*)851XA@QZI1NH0'VG$DQZP]1W2U MF:2<&:W4BJ$?1Z*,9XT>QZ<4*`,)-W(\NJHD&*18B'-?J'%"2(`]R(X,&`-$ MH(:&ZJ#>-X*`.$5X.)1YU4YZS*FJ9&6IM'>J%* MBJ&\.82XZ9@AN!\R6)Q)J*9'Z'%K6HM-6(L?EXT*1P,*FI5F*J^U:'9J]W&4 MZG4LV[(5YX+RMQ(TL(4S*[,R6(2L6JE:9XL\VWBLLG^LPIGB>(2K\J-" MX([8.7"_^F\).8'V&K4_BH5ZJ:^5")>2VJ_,.:3\UY@#-X>0N&\F&7LFN7]I M6HP*QYXIV8QD";:.*82L`K>!ZIPP^+!U>X1WRYQ[9:!*B'"-=X8;1[(-2K%> M:9M_IY82JY)?*(2,>ZHZ:ZG`Z7%_R[/I^866ZYIRU[CB^:B0Z+6>V[D#J(AV M69ID:G0.-P0.ZG-P!W`R$+#VUY8CL7\V8+8V>XA/:+/A:7`CD;N&:)+E&H*- M9[#`*;R^RY8(^X4'6IM8N+#HZ7-WV["8@:&IZW6HTN M^(6QIY%4F)VHD;H?)W.M&V_ZUYVRRW\JIQ*[>X3Q6[>^.[RL6K_.FKS+B[`+ M.[/9&Z@.YZ41&Z@@1[%6%V\N>*!\4:BI*:,L6H(\&&]MF;_YVZS2:\$Z5Z$K ME\'6R',]>;X0F7TJ)\+A2<+`*<%KB;,K^,#6.;[:*:_;:G"M&WM_>@.HN+Z+ MY[XKM[L+![82UWE`_'G.^GO0BH5$?)N\F;T.>\+(-Z1^.H;_>HF7FH_A"KF_ M>\7?AX?N>G(P>J8QW*>WFH@F1[,FIW(C88PU/*%5G+-L/*[U.K7Y>K6.291D MZ(,1YZ(NS&]/IY&%&W!$!X`JL1]_?*TGJQ(FR(QO-X8R9W'96G606+'9AWH4 M:'`'&)=[&,@U1Z@=R2LS`,-KB;B*B[GAZ9M5*9[FF;,[FY[&F[B7ZYAKZIS. M^;!%^[<)U\3C*P0!)Z_`"'(N.'`QZW/^"\P2O+Y86(1?.)NI>LP@1XC.BY[8 M6IW7NA\^9[&S2,U/N(29'_V,)9&:]] MD1IXT^''0:)=7=W#D[*YY;`,P+,]5E[FM28'V>'*1*;-< M-YI<5]1A28L2.I=]RG7I3(N-N5]UX9JR!2`,>*)UM'=<*YYI& M:[0G.M4F"!1I>'&&K'-^. ME]_T+=_\_=_^'>#X+>#VW=\#?N#[+>`)CN#W_8`3Z.`=-P,*6J8>9WLTD`.% MR\B"E\@S>;A)&':CR'L32(TC_G(EC@,36)BC6)A(ZHQ[J9<$28W^"'$/S'+R MW8(0-ZH].HL'JL2S2*(F77'SB9$DN8Q$[N`0B)%)3N2X,K(,BKHR"K4;]WWH M6GGD7-=8OHR)9WW$Q^5;ON5:'G@R3J,X_H(F>-]_=Y(<_I0W2)#Z[<<#J=(% M!Z'D_9/C;><<7N>]%X35%X16*'T;1W/O;8M0VX8*6@1/;K)MG..,_H(0)^5I M+M\)YX40NG&5OGL["Z$X"*%V?:P0FG*[''8_CLP@/H9,:^JK1W,1J.127NE@ M.>..'NNP/NM5F7$1:.A?E^@;>'M/37I!28]6R.%]&7D9*01G/IK(SG"C:70O MV9?&'7,DQYL=QYDY'N/6'JO6QYDO-XI[>>+>3G1#Z7K4F)LBU\TE>-]$3J-K M.::G6>&(VJ^HJHGUW75^.95>Y^&$>84M*.7[#H(TZN]E^'8K6X:\UW7(W77V M5^_M6>\JJN\ZB.]@&.DMN(+\GHX5[X%KSHL%;ZEY.)!*7I$??W!K>840-O)M MVXS?.I`I+W@)]X@;[_(_";4?'X'O_7(*@!JPQW$8*`-!X`,V\(KK2LGR'7>0 MFL@(A[S,")Z.O.`UCLA069-OKG)C7KU6B9M6.>J"*>U9SY]>1W,`S_7T_O45 MS_(L._:]]_6N+J&O+O)3OO53[Y9O[]%^R8-S[X\H2(-C?KH"#JIY+IB_SG46 M!W&QE_-$L//B;`,DT7>LKH*LGLCY6/`:KLBTOO%COO$-#I1#2I`0NO&OOO'& M*,+6+OGK*OIDWO;KRIO7;OKJKOI:WO8PCOK[#ONGS_K@R?FU'_JT#_K[/H:" M/NN0)_JJ_D;**K4_`.%_6C?GLHYT&_OG"H M.%``@UK*R-G1-/L'I`B=:PH_4R_\U#@6I>]^S]Q366_O2%T][M>JUE[W\W?G M2^S)P*YSD6:@US%[8$\3\:2@5.F47!!RC\DH?#PO6N;@C!L,?VR)] M0S#SR3`83H`A\@FS0\<1!?&?YWB`FHH-P4/C9P3:(Y+Y/']R# M%PC=X!P$A'AP#0K"16@(5U@>;(20L`X>PO,%_\I@&,1(Q>E"/#\,=/.@'`]0 MR3ZW9/G&H=6C1!LO-^4IU:?["ISH$W&-[Q8P-88##CU;SX-O30E5]*15*H!$(H&R`0`Z(6&HBN#O%)H80X$*<> MG_M!\J]5#40T1WZD$$4\F!D6=V.#& M&B]J<$21&=U$#Q5VTEW,8W6\2,G%FWK(;RJ@P,M(J^[[#+LIAX(R'\2Y:AGO MJG4\MX;53-!5DWA[K1=)N:NV>MI:^9,[;#'RL46)QQ:Y7EWD<'6QXRF`NJCA MZF*DJXMM$3#R'L&XW7C1,P*,:0XPTL3P`_,4X])1C)'O$>&[1Y01*2.+HHR? MR`/I)4KHYC@CU_DX:(@JR@!/2/]0$(WBAX(')>Z^_?;X>-(A!,(.,8OEH^!('(_C@_.- M+#`0YD8B>`2UW2M,1;)QSTT^UTC\WEQO!'SPSQNB(/G#!?M"$%``TP\JRD.H M5?#:HW$+@MA/]8$XG60&VUXZ1%>$D/?<1_GH#V%=.JR/\/$,ND=%=@R1G(3: MAMXP0<:@;K@@%>0S=)"/CT$^2(^'&ID?`!*-/&T#L;I'Q^I$4>_[?>\Q_VG' MXH>9=)*)=(;[L?AEGVJH(E$D?72&5Z@!.J,!2?_^'H&,;Q'R[$U($$D*9:2C M>H\_L@V:/HC7`&E.D"R$0S)&`DD.Z.$,(']RDHFL^L4W+(CB,!(X2F2A<1.: M1ZX4AP+AM#1T\A'J$4I`J=6E.P<'[IA< MR/.!1@YJ8<%OE?$*GL^R=F=N"0;*DU0$".4"?),.*<])IP?TM59/R]%#:*CP M09B_XZ#^(&Y,?EH//.%&ZUB39!!XVD*XJ.9P-?`TS580J=R`I1!5*CU5R8Q8 M)5R,?5[G%,)*@//Z8J7"0X6S$CP:)ER9"V,!2 M#*)&9G(CVK*6S;`M84O6IRW='%!3=MGR6QX<<+0M MRZ6W#)?HDEN*R\^&!O6?N027ZC)=ODNV%R^7466+8"Y.P3VB*T3C4MGLJW?' M\`@2I-9U\[2D#)!^&C(\KIX[QP]IWEAT:P\S2)&\D;?R'(_!(67@IP-YO+:F MR"[4NHIV^^Z/'<&40^\T#F4,.(+.W^4AT[B,#-!20HU#[][AP)GI[VI@V;.! M8>]FZLP;B#,KVW$D>WXOW?7#390EE\[.ZWDX`,.-I,?8C*8DNC*"Y$SD0!Y[ M27T11@D=.2CF)(^H@T`D!VQ:320HZ)!@E7L]9W--]B7R=\F')S'=XDU8VH[R)-?OFC?-[?/-O^LV]*?_4')5LFG4JP:F= M][@W>X\5$CR/4SO:([.9&AW/<@R;E7-R8D[)&1\G9^1T;Z!S2=XTA)-RFEW" MRTCSZF?E_)TCTMS1 M.A=XTR18]L%X'P?LX$@=2:B0CAJ2FTX'4:%%E+>4_-U-*W.`SWI"')^E/:NG M]\R>WU,.7L\')`1XTI:+/*A.>F6=]'G3RF3&V4;O"[9SJDSB? MIN-$?B@N&%5)^+?X]%WXT9]F+H0.S]$)YBP>(3-RA\RXR4VX*3=['K!R1JK. M%L&GBO,0R12=JXB.\Q/YI1U:D7JHO1MTR/`*\=`?ZCB)J(V#G$9TB"+1)7J? M?"@3/:)%E(D^(*"6D20M!X>SCUZ(^*G4#Z MCT:.*AI2"2_!'[OK,V_19\2Y]\!6A[0D=E&]*E*>Q(K'9VNM''"4HCU2FNI++6E5K.5RL]8 M-$OKI]]1/0+O>JF>!,HZH9_K-%^ECT8>OZE%V9KIAKM(C#.7(JAH.DT;9S65 MIM0TFUK3%4GS9*<06`LZCU?`@/1X-ROI)LVEG709#L'`^4G;*3H]I[$HOL73 MFM.31IX2(J6_2\SQMT@5>$80:FISKL[9'4%)=N/F6Z`+E$NO:NY->Q1/[:DI M_6#@)Q120HD:<5;G`L5'>B?Q&<.,B4VWJ4?MJ"#UFHK4]XA/0ZHV-:D?=:0V MSFX*M;YI,2U-MX>H%4$>.J`"YT_E9X.(96*4HLJ M43VJ)W6:EE2DFE*3JE-MJA]UG8)4EAH*J^K"O*H'TWD^TG@C4W?@VFQ&=HW0 M[1^8-.!@*;6[I6@UE_;2M8I+>6GDX9YIU:W&U5BJ5G'IK0.FOQ0)8B`6.@1- MEIS$H%?'[=3/"-K-6!291*1,,+$.J?&V6'GGUU&LILZP!B%$BC_!7$-MGUFL MT#TJ%NKN-FKAW'"'DP\]U+-J5(6JXNR'@4.GZ-:?1YBRIGS23:E<@Z#>W:W?EKAMN*+TWG*95XV8K@%*S1DWF`Q^O-U5U*5^5J79VQNC3'PE*X>F-[K(W] ML356A+%2*4=\""B!U'`%+N&1G+WZ/"EEPL0^_K!*0MDI5T+_D0:%>L-(4.D_ MW)BMM*5J/+%!I]RA.B)`,M?:UL1[UPO%3291JF8#):LHC,U("!@CV"1X<)D% MJD@BQV7"NK<7=OCLYE1*"6FCX:BV9()0@_.\.'!(G.T;I6D,)=!$Y8I%=.MP MNUA59LF<9+1YIO'B4*6'6?K2*562@E:GQI6AZRG4W-Q>A*+UR5&ESQ-FZX9< M*'2U$2=I(3Y$BW#28_6QJA)/_HVC)4J#P@]F,D>H;NL$5DJK_ZRF#Q)S\HX& M7:2>$(/.6;,UC4RS6`++W_I;ZQFKHE0L\V1M/8#$WFIB14*Q<8XRH@IHR_!6 M),/YIBQ6;OXJYV8$F@);B#UIS1CB2>M745\/>G.I/L`A2!UEQ'^ZHAF:1DBH M+9$CLJC_$)C(>T3.=D95(R1$QW)0PM5!>$\R!;)7>;($KF2*-_^V*_);5#1^ M;D`0R`%;D)SY@"[IV?2?9T,^TZ@UT:<<`)LX7$O*F#.`Y:(>''1T`&[)G47V M3:Y)LZ^6`U#1F4)X>(G>!=T0=9>DF-HC01SJ*'4HI1MAZ5G25;J'"2$!O*9[ MQ1Q7T26Z5U=$`3[3V'BRK3/]NF"79?7!(8U%JJI/MH=S#;F'#JY!N M\?:]I5QGA$%_J&64._PV<9JTN^34())2JSIY=^48)E%:]NR8X#F9>V[@+5V[ M)W:]KJ@%.$96,`7:/C5YRY!4_8P>BN#,)[Z4=#4455)$HM8UW2`_VH+TTJ.C M=31O*](>=W1QBA-/PP&O0O'1TR\JD9Q1-E)!H/?4GB,6U98^45V28:1WJ4F< M?=IMXQ*(4FHO1QDQ*=@;@]36"W*^P3?K-J4'^W2I[C^B8S%,*2DEI?;#<:I2&BM+ M82P8Q*6`ECB"3L)'Y[`[1->:')MWBEQL1]N&W6:J=6`6S3K"?\J?:2Z,>P31#9-?S2R'";"BY98NSZ.*1C!*^C$W[S1R MJ(YG@CUQ:0;PL!2D<:"PFG7$\$MK&=VLI8'KJXZZ9,"L`Z*C?SJTBM/'^5.: M[7M9UY`EOA`=K^AY"\T['<\[]K!H&$0KE7!.%'(J\20R/IF+@.&MLS29ZK`FU4@ZS10C'0W$;H<$#FH) M;2C>J@0(%([VSU<#N-)/L_W@".:X\)3"\90F2@;%KSXJCBY:ECI"K^P($3(E MM[DPD>8:3P12FK%-[J3'X%`?$\(M$.@*)G\W>;W0,AQ628T,\1]0M9`_+T/. M89H7Z4+DM[2!C:\_Y7?;Z_U&JMO+A!)76+)+GXRI.6&_Q5&'*092.DS'7?F\ M5T3>BL`&?,DG"R;+Y)A,DVU%1 M/LI&.2D;%J7,E)&R4V[)&PJ?2<+!KFS>ZP./T\?M6O+F&2F MG)+CW5::*C)YG`S(TB2=ICI)[+@$G4GDU<2(E5B*>1;GU/8%TF1W@`(-R*A@ M<$VF+6V[<,A.*GO0(RU"8Z$'/;E.FH6&T!,:_#"[B!-[J"QJ6F[[H7").F_& MC2J6+K+$FP_LJ.CT";`&4,6:RQX'-]$ABE6;.YF&5-!6D^P\,U[,O/27C^9? M0'I_">D1G(Y*SM[D6?7H):7GEJ:>4>.`/FUMV2H*J(CSKE#.1:-FV+F196?K MG*734X&ET6IV*Z%7J?-W+MD2VC]["#2>K"IE7VE4V.1)0^MYG2SU!8`T3O]I ME6`:`LDK9<2G.6;/DDG#M$MS:>VLG;$9QHK!B!ICA2#1)7>2UFD#N;R1&I,U M(X!/4D/G0[D">1VEEMB>6GK5YZN)I68\];K:NC;ZZNU;]Z5P=K7WT][^0=W3?O"CLA MGYYWX;Q3'=23*;>;N;?@&`/A''/D3R#NRVH]H!D\46:@W*>^.L):)7I5B=SK M+^I;AZ?ZJ!XQ>&KIY"_DC$B05[RKK+2L;_./W$0QY^90QS[;-ONU,:H\'E0H M@6LD"?$R;(V;U=>NQ4705NCMI":*PYW[.E.>K[!Y7Z&@W'Q7B*Y>2\]]]/A$ MD5`*E&3)V/FCAF1X'+-N8TFC6`8G,W/$E<71V-_)6NKF,^I.SW:MU!7>AV"F&V9MM<9;P"OAG[&M*># MWE[57JT3+UDN.#U5L,.1PT.>F-<%_L*+O/S@96W\@!-O-NI+16@8,^(\@[&5 M613*3E$8AK,PQI$!AX\E^\+UB$A9M!,4GNYM%"79AWJM"%WA%I"&>[0FSMK' M!DF@\E28!/#OE4D1EDIY;Q!\C3;[P1TR,ZHC=S;G+CC&"'-;[L/=^@SKDI/; MZE&4VNWB5`%+8R$2@\!+1\X`,FLO._>WLJUB)PG"IW']]K"/(TI[SU5O$D1_ M-_:*-_$^WCDS!JE,$#1KU=ZHM4I8[3.^N8G-]BI=BRO'PDL,AJ&;.@0[DNM- MCP&3;\NZWQ<;42]LW(ZTLO+Q25J'%`5<*%6*37#5TL'X#99(Z6)EV^_[?O-! M^IV_Y3?\=M^5F>FM[U6KOM%W\-1T,U)YAE<;N?QJ]NMQG6JH.(FSA.D+&]^* M[GQLY]*MVI\XA,@=$EI[.;$7A7`_A.IV^G:-Z7P4]9 MI>/@'V[E6>\2GHYB>!4?.#)\TGV=%.[`53@*?^$O7(:+<5E'QENC-5S>9SR- M*V]-I#!_87X+DT9<,#?0K\0TBQKLAM4@AW9WVE9WNX'GXLQO05QO!G*.![T+ M2MRX^@S$SDC+X-<#Y*[NB7N^S3?(']U`5K6Z;<>>+Y7K?7&4WA\ M>FIOP.1Z-&/=]MZ["HG38TK.RB]X*V?1KGQ%_VM83LLQ>"U_Y6`I^:$FQQ/! M-1)((F>*#P112:%)(,(<#$5:4P\?8!S9PGM12ONG$^A:)?-;2"+-,5LDQ/O`.-.+S4H[/51$6Q^?4**7O-YU^N'1ZP?'I/A&?+R.?CA:7,K?> MERV/C..JI+ZV**.MV^BEK*:O!7>DA5/Y>H.9]!B_M>]7!P(?S\@[Y[,3\ZDB MH(3I'-TDA]HK7!FR\"[.UM@A,>"8/S<&=OUV_7]U+ MI+O$_*L"(`F<"57Y4X?<`91]"MD]!<0''`*_X;HQ\D#V[R@=RS<"W]8R;B0R M3R1'1?FX&B?CP].0BVVQ/6:QV.RK4[;C=DA?FKRF*5/N-A+;UE=32=JMT0V5=C:*?Z7.^ M0G>N3N/B]@O/@71.S`*_*Z[NMK&=_(T:G:AM)"/>G;ADAG,]9!>@.>QSI<+* M&!A:@&KVLXG#'5K<\Y(7U][T*!AI]#77QCGM?`U%9.GACIP`'\!9A0]7BORI M03^@3\Q(D0YA5\FP/5/18]5KP\TXQ[3AP[.3=VH,7Y@UO!"N='JOPV?X$2_B M2[P+]/#GVTV2^!._XCD\B[?5D(JAYC=":,>8D65DHP)3X8':4U[5Q5FK<-8W MU>72WG$'-7'G35NCNYJ^*C("*N;8J!N-FC;NZBRR?%UU7$\-`'5AUL@];&Q] MO?ZPW>$53N!F_'$HA;N2MTJ+_6B M-.K.Z_F>A.>7D9VO\Y0[SD.?,+EXE+QO$Y6'CD$1@=O\0!^GN+.M4OYP7VX3 MJO8"MN_LUO\=M-^TENZ-7F+F>X36R:9W,47W,/V[$\VP'#;5.]%EN]_@#GG[ M-2WZ M>806IV@.55FA!W]6T`J:02_HS)MY'_O2ZVPM)(V@#[O$C01R![8FP1>K/_GHV4]_1^VX?0CIWO\3WC_?7VVN>`^%RL$?*LS/4=HJQD/SG]3, MX_PSK^9Y/IS[.X'/\?"%QW.^OER)_4G/IZ$J?:2_]$4LTW_Z3C_J'WVI;^($ M#A9,AE@0V024 MS*?Y[TKWYWZ:)TK`YY=:S'B:2S&GW*M.&H?0P36.1.AN*L8AG&*'-^8<"W9] M/(]"K?JGT_<<>SV4Z_YI1AW/,0_MF_W-_U1!JE3E_)H_FJY]&(!NU9"OFG[% M45/BH\'$-!$.#`K:%W\YL2?JH_7R?NV7/+D3]Z\XW8\YI>KNSZ6_?\YC3N%O M-8E_WC=WQS_W`W^2(^B,?Y+;W57_SD%_*8N&Q%="&XVHWUKO;LHS]*%KB=U, M1W_9-OVI3_Z['-4OH>:__*/_]=]0@ZFRA/Z^C>?*Z]ML(LUFM*ZLE56R2E;( M^G4<*\?A___?8J7_45;11V7%XH`^0=XY)KY<'*>8[9$P>3AO1V"2YOQUJ=.< MMUQM<8!>GL?G[7D:8`LF4YK8`^G]VG`@J!45T1V!>D'8`8 MK\#3C&G_QN"Q)UUIOX@4$A`-(_`1EW-TT#Q!7R%D6*%HQQ/QP3"=,^J/)B.- MM6XWER@3RMPDU!+9)26=+U=2EA5%05!OH!MX1/4A+,,9`=O8L44+]C-'T#:&R_1.:0]E)Y$P):H(S":0,"4)C`H2AI5[$LX2 M"(CD0\)4S-,,(E%BR"BBQ84=W!Y[`_11)9(4U:;-,T(_$3WQ#3I8A((,V/<'#*/$A*U_HA,YHX/PD>/`$;MVE)2+[:K<9,55T=WU!5BM1XX%9J1!D-6!\(TL5I M*5V`B$[#`'96`1H6*`HQ?+4)N.?><'HBG$@DL"DX4\\^:.Y@/(1(3-319$&! MU>'FP?PZ91>O@`RV(B_%I*8&W#P@05#@;Q!@'!4^5H\-A4)A49X$/%O1ZB"Q#B_EA!+0N ME1(C%D$-'0$@QV'#D&%H&CJRAX2(?\K0@HH8(@,--B,B%B28#H/BABAB#Y0I>4?,U<=$)LH(^_74&$:?FLM6<'UP0*%AY-,- M9ZY9D\@DUFI,767BN)!C"U?)Y:D)=?*9YM61#8G?%#YB@1!#C^DE0IUMV')J,I(03?B4G MDTFWM&V*70?BY2ERBHX(J"C^Z$UMFU`W*H:*"QR1D_R M>(=@D(?@'[F!](D9V,J<@8H+.#(RGHPB8\K(RJB,)./(.(KP;$#*CAB/ M:%&M"EO"JF1DH!<_4Y-0;E%>T6F-8 MLLL,)\;=Q:28&6.KRMN6XJ`B,Q_@N('P/TT3L5/XO6>0CF#B.C(B9?RU:D=D..*U?)@Q3$*5X?2-A*-*PP$*9E8C1Q)5C(_:HVHTBWB MO0R)^J);@HB3W%[%V<72Z[!?J^&9LSS. MC](BBJ/"1&=II&@B@Y![+DS>L8'T05R4<1>=W9'\RAVY*M*1HV%',H;Y/)^A M[%A'+25420!CF#Q>B"3+=/AQ'8LDP=%(OB57C_[E@I&*"DH.4DD6CAT**D5P M:)(=65)R<]`B3TO--I=@;:.D($DTS2C/8_^(DR@CG\BW\F)IL2 M-,CXQ)1RHPHR_\R4+:54XE)ZC6L)V!%4WB0-F$F9N4@D863/6/.<)!*=$6>C MR5L9W2^)DR`CD@U*B52Z2RI(,+E[994VBT\)B=55"B1A MI40"07I>&MF&PE8:-8?)6!572B7:I+9UT,B!KE[(,S>=DTX65,G?_9)HS,)5 M2,TH<\E=*95HE?[CAH)8!I-A93CI/YZ5W-;V5J.8E35)6@E97I8U":5B?1V2 MG"7_Y5G&(`!EIN7``2+=FQ96:R$J$T@JF9I9*HECXF(X4I3"2:J2D`0R$(HD=*4H]D MAV8'^'+*S#84B=;'K2$<'&4M"0AR4.G@-`E.SBB^I)T231Z3Y&5.`EZ>E^6E MRL$;H9=3CM`T7IJ7Z:54^5[.E_+EE<1>TI?BI7RI7]HI<"!W27PTE5I8P02^ M46\XB3=98&J5!F:"B6`NF#9)8'E@=I,,YH,I88)WV`WKY9&,4_/(O:>D+8K3 MUQ74.WJ861>(.8!UF!NFB$EBAI@?YN$!A6E0.E3*9GV<7U^(>;A*4B;Q1DBI M/"9Z7=Z`N7H0F.W3FGC0H)+2)%R)D^R296)-4M28,6BE6`E:VC%E3"EBD?@C MV8DH`A30.!@(C=,PVB2:#TXI]3R3'*8RF5G^*_NEA)E@!B/WFQ5T>LB"JYO\ M`;YQ1T%F`_E`7H\2Y)OI9L:9.J4#26?"F4]-`8:3[):[Y12"=\V85E9@J;H( M*AV26;:ZN8/S#=P!X+0WFT@\V:=`K2<'[.F8`4UQI;IC'`21IY??9\B-8'85!`=U5[2.)TE M:/E9(B:;Y=1Y55*=42=BXO#82.@'7YE<64@VSA`Y,?Z"7":8N73^670J' MZ-$G\5DA:BM:5_-9-#J?=@KT MJ7]%G\_GUEH0/'574?I;QU.J5.V*11:6W^ MF"BE8UDFLI\X26$I),:?A&7]:57>GYGE^SE_PI_\Y_[I?ZZ?_V>9"+[T(."( M?*9B1BW\EM##M>DK?Q?)LQD:<6&BO/7O8$>DX*AH>TDE.2.^B4,V):*72(9M MHBQ-C;;YH10U>:.]X_+8C38)O\5S[""?V%TRFFQA>-\6=@097A86[S6CL"BII/`4 MA29.DULAQZ87N4Y=D10+/_!_'5[IYD*!2 M?9?)@4HI-6[H3`*'=<=BG+DH=/)'NHS>4Z55+GU1+F=B9E" M5JD8HK>EX;74%#6C41!ZMT6+ZN!\0C\95@.8?*:%[DWK8ABJ9)HY?=?(88?V M5`-9X#5<2IW\"E,RVE6;C.35HT;"CA'6A"/^)"7%II88BW2%'HK\.21NDX#6 M_Y9ZW5469G$2@:8[61_=9=):`BF0CZF_@@Z$L(I8+J'Z)*Y%EV MC";U9IUE#;U]^=[TI8URF`2H#NJ-#EW2%S>ZC9JBHI87-TOVHD,H9U?K"2'T MW`Y3=L0D,0EC641)E6B'/I)UB6MFZ-K2?;@VBR+AN8G]F9N(G%?+="(IFXJB MVQ12JVAALO@X>!6D1Q))06TYV4R&D^ED$2E%:I%6I!CI3I9R1'14"`82=.2> M<@C_D2):,G%)B$@B#HLHZ?XA!+0*P")CY2':'_*)ZA*"+"@EBX:$UBUE3EE3 MII/FI#SI3NJ3.F4F'51V(0!M'ND,B!897-5E,D:N+&:#X]OFP^$C90>`)50. M)V%+<.*%;F&0!\4B?>P'K`+BTYB\F,U3$MB*<"?>"1X7.H*.GV-3BI9"(B$' M%>/-%"141[)RF6V'KR%7HW),I7BI39*7FA?:X0H6=)0KYPP/,HUH'>Q.P@>( M:%&W2Q-S]$@?6TA^ACWRES!G9$H4>C0>#:O9"M).8B",`@BBC;K6%LE`>F1< MI&>J0+(R\LD`,C==*-U)]:B:1HQ+9&L:,+JF]0EL"C#VBPT++X:;H*84RFF* M=>PE34[E=YC.(Z'A*@-@28R0X1%B2'8PMV9]$AYYGO77!9:XU(/^([AYA)@A M]->^L0!JIB8+BU+0T%R,V'1J%"*%X&E4MX1]IT3A45B>AJ?DJ00(@(2'P`L% MEG4\-&G9,!.CL2!3J4MIGV*9^"E]*I;(4+H9+P,Y)C6`3X`:>A([\(VX4W;0 M(/$,$D*6N(ETFCJB,?$@Q\L'9(N,=Q>'SZ7+J#QJZ>"85!IF&>I9NJ-<3ST5 M#[*9@%CERG$B6X:#!DN*FHO!82PJ/=FBGJ@PZL$2HSHKR=!CI*NP6.+AZ2A# M[5+^$AZIJFAPDPJ<^";&B4*JG(BLA!\8B,QQ^*$NHJ>- MBWU(GEZIYBF6"IX2*/1&E#S^TJ3,N%RJUQJ!YJFIJ65C;&&(># MXXE9$,UYHHQ(HS(H6_J!B"'C#>/#*E`Q6\?U8IZ8)^2);**+T9-2'NM!?!2F M#,JY-YQXCD;JD.JH-JJ0:@V"F!&IE*IOUE+M(>PI:;1<34[.56H&J>`CB\=$ M]I/D+*.J:U:_6&:6RJDZEZ*J*\BJZJIB9K#J*:.JPJJLJF4VJ=8OFV!=Y\O8 MA%\>ACB/1'P%1\T"B9!8)FJYZ:(>JZWJBHJLRJC,JHKZHC:KRBJ,FJO*>0M, M.S@<;FU:&7K2L/1HP5BE%7,TG.!JS>E_W2GD:J`:J!)I1!KSD"R7"&IB:K:+JN'*HQH*RBRY@<`@=G@YK$'"['R0*55JJ1*LYJJ\K_H((]2M!/ME#OLB4JPB@8=&HFH MY[/**Y%)U@HONF;X4WR3LPZI265P=KN,K4L(V4J]%#!F!QOR`^4`24L$*J/^ M4LLJ5/JL.JMQ:[0*K9X'"X.WDTX'))!7N"SXM8HH(CK M[F5\^285915*^;DRFDH&A(-Y?P++!])%8F!D2&22=L"1&^&Y]W88'<*42M.D M'"GH&@NB-\:0R(PBPD81CZ/(M=1O)9;\1^09M)RM*0CY49=,)R')P<&>''P+ M&AF6B20EPLO!0I1,7)ODGGB]((.Q1Z54$_U&9XG) M@N9[EJ8A0E'2F"J)H=:W5!XNAS_4Y56M7(S+FC"E7(#.Y0%L):[^HP(*/68L M8(CC*K^.2Y/K?/9PH"#@7^6*N:*&`R14X[\6KRD8X_-85J-;4-:%*VB$YIZ# M(@99+Y^+_1J%Q:&!ZLQ1KBPN1^5^T*:T*40'G(*-0#*WCB:S$;YV2D'!D!2P M3O''=/,6!HG69F32+=J.1Z)@N;5>)K32URK#OK!3(I)H)=Z6)@@-DB7ZB8I( M::)T9"5;F`+RV(R)MV@`EI9P3#I=`(,D(B_FXJ#FQ&YI4&R=J'"`(Q^CNR@E MQHLF%YF(P@()_=U<#1=;0A?TG3)'Z:1_"$TCF&FT;BY M209:BFSG>=1D7K,(.Y*HM''DS,T6?VED))NMEJ(D8-L'H8.RQ#QDU[D#M`4B M?=4M*7LA/_`A;-HPRJ0KQ[.CK7RKK2QZ0CX&@^7F4R2,'NP2(')4N)R4RG24L;(]=\N/D M(#AEG/;(]K'8)_?9R'FS?BP&ELV.LYZ*QW1PGCD2RG\:<-)+.0B<*B1EA"TB M\S$>RAPJ"!;GV3RS*\R,PL/]+D0:NV3-DK,1%L#HR(:S_VHXJWURLZIBSWEW M$IE[ITHB:):=7.8A"LV2?CK7I^K7*#@QC!J"EPIS2M/773?M\ZE\Z+?6) MM=DI<6=0JZW(UPZ1`7<4!2:DC2TO,`+)A?"BD'0E'"*.1EBVPH M5V0@:]6>8RK((AFG`!Q>+2WK:=8NH"99.]:Z+UGE5ZE8JK5IK?^A6!9BAXEU M=7N\M6J98KEXVK46"UZ[6^::_BA?&]>&C4Z(WLE5CIV,B$T4DAFVX`?`Y>R% M+\?L-Z5@@26T"3Y;EHB0$@OF2=),CIIG9NMYAB'UW-ZLDNV8^SYEQ8BSE8C@[YV-5=C(-**3"->21]T0IFHON?)(GS6B-8([6*- M8*J_RGU*G]PLIRA8!E%`D%2ZZH9UL'Q"/_?&"X&-41R!RK38C]RJRT+UI*O)$X_CDDRN"C MANP;M0=9VG$.\:=]@?C$EW) M:QIMUGAUG"XHC(I"@9AH`TA`%($TJASN&$9YE8BR&?Y$05P2W_"VDNZ3MMR<([\5XX"SN2I&&S'"KU"RZRK!\ND8,J,OICF#'Z:@[ MY!@=@`ZM"^SBNND)OBCL'KO!KJBVZM8B>L?S<=^"./A9H**,9;J`B,D%OE(N!*Z" M*Z2M,CZ'L:OM?KM!VK:+[=Z3X*Z0MKP(:.-NB5KU54E$C?IA=_0%V^5D=8)@ MNKMKV>'IAKHE2*FKL.R[G:ZHR^_>NZ;NZH'J-D_"$%#P&]*,-4B=>]!5(Q"C M99LO4H2ETL48\7:[F"?$B.AZD`EOQJ@\3KDDKI3FWS);#)V`>^[>D_OCNJ,O,_+O^;K\;^5*^ER\U:V7))G.3R;B[$;PU+[34-O&[>\6!A:5QG!`7P:K8I8!^:PUKXN%6XDW!J.^F[&@INI+T:*^^\;CZJ_8KU`,\QN5<2P$Z'L2JTB_2LDZDQY*(F((ZJ@E MRF=M:\W;M`B"!0DO)GP@(X6(%*:IY#>Q+]M(BF98=);1^M0D=0EB5J@[M45$ MC]P$QY*XNB]8(JTL+\W+Z>O_JKY/R5(#@["2KF_MVH/$OIFN[MJAVK[_JY\X MA`BPC(]34TIU(+C*#4+S4KG36%JH+[0!?P$VUIW\A*!I")RSX6PD\,]47.E# M6>5U&-&.2_SW@H966%.W,[A%LW! MC71C%URGJ!PBVQ^B^KU$]F_H6Y5I5#9?SS>+#H%L254 M(;8BV<%8QY^7!V>`/X<>W.%\,'1PX`9=J:\#W<_6Z\Y-6I1FE2 M1A])U*G7835<`@G_`S*1KJD*G[26N+M/;S%D]050\4L."'.LHM!'0AK3N,&H M\,ZG"O=\0E/9UJ)PO"[*'L,6D&E&@`%BUS!;.,BT,^W@*9>2!/)X7$J(5)H" M[4UI'LQ=0S<@U)B%LI>CBTZR@:TTL57-0>3;'RE'5 ME#F;T3UZN;8Q2B.26"HFQ3]H(3)+AB7\XQAI$G62OXZ[5A,Z4C-QZ@)*EED" MU5]"2E51)TGLV!3W762QZUA%12[."=SC;8J_+^\]TGU-'!/G0NS*IC(AF4[\ MD1$B&9D&*=1HO`I'1@S]Z"!OR&HBO]V\+LBN!8<=,2T;CZ/$/%AM(VI(>^&" MP8CW:`388%$>>\C*=KL%L4*<&7/%G'%ULNF2OCX./HC;Y+,(55]<#P'&S-Y& MIP_CS1: M+1=ODU*3N%<'*%PS09(\P9#;!Q@WA?\8K-L03L>F:'7,,J&B!`=V+*$T8#*)%6H[L5* M7J)G1P:T.?XF0DE"M>Z^-Q'02P5[U!X_#^;7QC$C0:>!653*3P?-5`K\.50K M98/Y(#=.#3)1Z2`;5D7G^!0P*9@R26JJ4D+(`BQ-B5/6E#+E3,M3FLCVE(-) M!S/(UN0;N`_9(O20P;0,!UL1#\#%J@0L,^1L MXC&M5"1#DL'E0&E0+LFCJ))\?3DE%,OHE:MPHX0O)IF09(YPI1C"J(EDNI=3 M["?;R5$7G6SN-+2(5\ MITC+V;*U+"YWR\RRMUPN-Z]4++B<+%=(FU=/RM/S*P:PPY[0,,T[K,$LH"_/# M[-.6,$44TF>-R!S3AQ9*=.:(+"_5HI4>:2&)3`G$,P9?VC$JFC)7 M9N>A(ZF[$"17*,RLNQPT$L=(L`G/S#=SN/EZU,R?B$>INWPB9,NJJ;O4S$2S M%BJ,U,QA*-)\-&NA[";2G)I*,TQS6*B%>J+YL1Q:-2,#XV>YN]PY2LR8`)8EE@TIW35R$%==YJGG-$=)?;Z7:*!F.=7F)$3C9#F/HH$MZ.8\W+HD>T50 M8M\HOCDHY:5`34!+\.,YDE`CVDPM0KRV+IHN97+3Z8@:TZ2CKKR_[]=_>C"W MC=:.Z+D#+4#+TGP5P!TEW_-C>;?$)K.*^GPFOL\+6$!:B[0*,??MOF*5%R5I: M^R*L2#1P,JDFO/C:^QB"@)!'[0DS*D&\$*]Q:$4#84IT@Q:5;M$78WSBFFHC M("1R0G5$:WB(`H5%(<*I,6:BQ$J/N.EMPJ&0(1'S3AM'QR:4,#KRA3R4YXAT M>M<(.`-:4XCH<%SN*8:JCRXA1(D1;4@OP$YJ%*+Z[C*=&;ZX<_ABOMAY@J]Y M*+"L,"9)7]*[[`%T`&DT_>FTE%>6T+FG61_/1 MT,G(=+:R.O^<#_$2PI.P)=9[/K4=8E^L>ZD4.I#J$@WF=KF\V?=!)AM- M%JR9.H3P.X%6.[VF;M1)]-HH-0U8L8BSJM$8OW/J8UFGAB!V29XJ>/2IG<@) M5YR9JQI-*[FBXJK`<@02^!@Z5Y0I'9Y9=$,T\]12%ZE`]9B;LX:M035$;52? M,M[40/TX1KT32X#TTQ&1'@WX!QS6JXNB<")32]&PJC@-8#D$]8M6G;ATU1+E M5@U69]5A]5<-7^U=8_5DYE4+6EBU,)891G_57U-8H?(\NLRTYEPY!,T*5V/" MF#!`;S_M5__3UQ9@?>.VA@&U;R-7]URG-))$I+`UBK$WLJ>F*HU+X^)+3M8` M"65-S%;6`$ED39TH,Y)++K:X4";XL]QT6`,J=;6=XT2#?[FM9.9?V28[2QBI M1:\<#AH7_5K/UB><%\U:?]'#ZO!RAZE@8XY&W5$CTJ+DHQ)^H2+23Y.:E@D< MFDT.^,M"@I1T4?U0#VH"KNU7DP21]>*,3O7^#61VH3L MUU2AK`F5QC+122Y5Q+5>84U/?80\.`%KLB)8_[SV85^]8.?3R6HUC.A:>;,FB3(D=H>PI-Z_`_($4-N4`JE(KCS:J#;*^V MM-/X22(<*UANU#LUMPP`[@) ME.I:RZ$,D+4F:-J*M6'/:2=*1A.^P2)NVD.0C,4F>=JG]:9O:0%*.M&J_ MVJIVK)UJOT''7E6,D:0B1'"MK7HX2RC9QX4A]@7_V*M&QBEYM1;3HI@%KBOG M\S,"'I%;!^$BUZV!GUJC0ACH`)2$B?44!%O/<*(3QI^))UWOKX-K_SK,DA%, M$T)@__-ZU')\4VE(X5-N9Z=SC^"\_-"#$L\\M?H(>:@/I]3QW#Y_CJ(;8`%, MYI;7^'&_.QLJ4H+&,7(S]_0$=,<@:0^[E\X& M5%);"C+)N4#X-F2-GX%P.IP'%YDQJNE3+;95;SZS#F9RV/F7UQX$=J:>/2N+ M\29PF\#(6XW$#W%VW7;B00]U)SK/U3VT\:#-UF3S>,W<7#?/],TB3BP+(V4K MW4I:'LL26EE#/[<]UGGW'OOVCN)U,]$`C^J2?YG>L1(E1#A;/9UEM%6J=-Z> MDL-SPHP]D0<(XNW]V5(+"AP/I=MM7)[4>_N<\U7I%7Q_3.(*O^-/$4H"DWDV M255=9)^,19(P3`3J&!1]%R<7(G<"_4PC!YHI.[25GNP-),?W-'``=-84N`!V MGRW%U`TFVK!0-(3N+$.=Z>B==JI,VL[]%7\3DI#6('D1^HM/Y@V$>:/;9<_^ M#3--W?WWK@1-06?\M_Y-@-_?'%W+XGI3(DC6(-EYRSW6DQ6B,LG<2.$RQ"?= M($:V*`FC?,M*OL*H>4DR>`B"J@5>XLBZ'=X@D#=R3OX;8($12MM$KZKX5Q!X@[)3&">1I"SLD0R MB?1C_X,D,%?X2!FF@E@JTJ5Q`G`JHE:240//W+^A!A>$) MCA1T:!,ZHHDN-\318VJXO;6K?(EZR**'*OQC4XYJN[(&03F>JI-YE9[$7&ZU MYDQ/:XZL5/E4/;PP)=4);E^C-Y_',BGBUI`5?!\BE!W3!+WA$.#_M\=#B?O? MF#@!KNI`T:WM?P9$W%$5'=&\XXV&"\S1?T"EKJ%HW$C>DHXRK M.,AY#+NC.?;T#A:9(U+X]4X-DZ-1^/->#;>C6_CU_@W'HY/X]:X M\]TAG>,^D*YB?2MGJ4E,:XS#25SG!YZ*Y\"RM[_],F5;GW<^7H_KX[L3\7V/ MVTKX^#XND`?D!+D>RX\#Y`CY/UZYD#Q.T)G3D+\J.3A+LMU*J&INC$21$Y5" MU$5^1%TYJ90]/A8A4&3?[JT?"G%Y(^S!G10^>HC3`=6.)!L.VL-U)MH7X:F= M<]L^$Y;KDW/??%!W*[Z-.7V>`+>D]-3.GFD M$]I2X,U>$<0+S3='DMSG=6LX>A$;Y\!Y/"#(P12,F^`'&F"0@H-\JR))WI!# M+"]X"I6#^^0_$KB3,1KF*9897N)DC!\UC/-1)^;;[6(.F1_F83G3M&A32X+Y M,M/502%Z-[-T@2?D1KE"'IJ7H@,Y:!XRF>;^^&A^FD_0![EHGBK*Y?J0>L2Z M7`@GN7(F::9'#1QQM7NFBKUW4,3O2$$9SV6.[3@JCE58KI@SYJGYOJV8?^95 M>41.>A;GRGED3IE'XH.Y+$3H5#N9SQ(.,_+>RU#DXW,#0NBW(-[5V5&)&P%Z M4V'GT+@]+LJ=YZOY>E[XM>?R#Z!$>:/?C!1S$N0]+,`YN"><<3*B4RCUOK)5.F.*RX^N0?H9S()>[6RBJ7,G!Q M)$E#'/4V&Y>7A'LK'.EY:>-1X_/@?6F_?PN<6J<"+X66N*"M*UU:B^-^XT_% MZ`KIU<1=N;QDSG;;H<.-$/H_D]5Q4;N,Y>VNW.5ZR&,KV/$^?7CM&=D)2)(= M-Y@&ZN!<><\MI5+HC!WDGIX.J!<<\QQQ1%:^@*Z./!4G,5%$UN;&KD).-AC MJ9=(F'HDSAMQZI4Z*`]G.TMR#C]/K:S^V M?`C((Z*C4_P:VD($M=R'=N0T%BEP#1(;5TYM3,*ZK,M^'^L.DC.4J<-"!XH3 M/"(M+J0#@8"I]\=?67H:9ALWIYMK$1_*6TOTZX$+`U+QM*XSBN9 M2K>2N:ZN_T.9H:UNA\A&FS>=0W?%>UC1!V2OCT*43^R4?I//5"`L%(O7-_]Z M4-@+\>L".WRSKQ_L^#J__B?=ZPO.*:3V_GOE,\AAAP!VN)5U?CC%ZAKQK&ZR MA-X!^NAC_/Q9]%3+'>697^P0"]2=F.P[.BP)ZUAPZ]&.[HHOW\JZZ$/'=.?F MX-9&/\G=K$SZ9VPGWPI'TG*MDRY6+NE#\!4L#X_T ME&@^4/L"!Z]-[^!AHS6X^5)0OWQQVB8/\>%OCSMHS="QE>PD+-'2$3=HP MGA+0H=RJ.)B>NX]"4+<3="4UZ:50[\Z[`^^]$/&.R!COG?H\YP0E[^.Y3]V\ M!A7OT_N3*;P'[\B[\[Z\:^\G]UTE^<4=F)"S,Z_ZE\W@\DH&R4V' M^]WAGHS,K$_JGD+Y.8GZE!8"&2`UL>#A,CGL?%X*20J1Z4"3PZZ[,T\.>V7F MO^_O_WLD1W<5\/P[`'_`CT)^.RJ4P!OPC,__C@GA=Q/\@A4(CTJ#OJB9R4HX>' MZMS:I`ZJ:^K2.W5^J8?JF+I]U:F[W)0ZV,/?[4"E.M`DWBKQ]PFU1)=GVT6\ MRM.UT4P[T]]-\?CI@CH;7S(5;W=Z^-9XR+=`/`?/8>^8C]'I$?'5PFQ3P&&` MP$-MSR18;ZLNS?;YK&TO\M>VM(UM+_(!7%8GR:<[OLW/7N%;MD]M=K(<2C!=TG/>OWZ34U=E.MA M4XD?/WR/`4)%Z9+6S2&![,N^U=^U6^S)_#CW6 M[`_L\\Q+\[.5P@9,@[P[9H#3Y,Q:00#Z;FMEWHN1U`3?B/,1/`%OSCOP"'PZ MK^XL1^H\.G_.#_#N?#P/SU\YY;P\O\#;\_5\J:<\S2JMUNCCA4SLGVW%/IQ? M[/N&!J_'>X1Y)3E?;(=6Z=#KO`Y9\;,2>KZ06.%G$-(UXF"#(H4)MME0#U1 M?=MX%?2]X%U5[)$3!_:QR3U)0YSYI-SZ]J6T&+/<=`EV@X>?08P5:!T',Z^8 MB-_Q$,%J2+#HV-K,K,_054^"+!UCS!AUBY]E=M10`M9_]3!3KF5SLKV^$]7& M!-$[^MOK[.J*SH46:E)W7!Q!`$5'P7E&`;-3M*8KVA]Z[4.-WLD8ZK$^>2T= MU7$E;GD7ZXV<)#5I(^`W=Z8RD(T]9A(TE'+YH$1?]S4]Q:4Y3ASTW>65P$XI MT[%G\+0D3;]F9MX?83J(T*]+T>!#S\5']/>2#CA0G6<4O>R&T?.@&WV#U-&# M41_]RZ3''4$FO7S3VT_B!GAP7Q_F7RW]-FAP+X3(/>,=`D/SFU8P1O:PWR>< M&G^\D:-HTE1.`\G`K`L%,=,OP6DAN0$1$`9DP+GQ&YP!C<%MD&Y@"59!N^4M M3`09@0IP5Z@((((+$F&,!NR&3A!=E!MDP'D?;4`$9<%9D!%,&`J`1<%KW"HM M`70L/<0,*$`0D`+('[4!"G!NP`$I@!R``E`;2$$*<`:@`)]%"H`&H`"&P4WA M!LP7*,`1$"9`^&D`"C`%8`JLP9.`%J0`(//-0\+F`2@`9`#BAP$:/H?_;)0! MK$$:D`*\`2B`'9`"N`$H0!F0`I`!-OYA\..C`'&!45`1K`@U/A.0!H@!Y($< M(%\T)EZ(/\8W&`%`OA)0!GP42,6.C^33^&,`"B`$X!9C@)>_!K``(+X4@!"D M`'%`D.]6U/A#`,N@7:#Y%SX4X.6'`6+`;V#A*P`H0!'`(105Y#RHP!N MP'J?[O]T/Z2_\'(+#7^/?_FV^;#'J=_HD/[XO(OS]JS^OX_JO_"V_ M&Z#DXPA>_H>/X7C].;_O\/"K`9"_UD`'A/[!OQSP6;#\Y+^^7[X/_4?>F_!! M^-I\703#GWF@QH<\2/M]^#I]7@&X@$>@QJ?\Z_3!_MI\I(0YP/V/ZC?B2_]U M85Q_];^='[TO_U<1&/E-!-(#%$"YP-!O6M`1,!*@`&E]$4`LP<.OQ&?QLP!. M!MA\*C^TP'Q@#K#U6P9Y_9(`'[X0C=`".K\5WX8ONV`4\/*- M_S!\ZSZ.058`!=CIN_R5^*@+7H$PP&%`Q\?CHPN,`"U^,;^TPP_-U2@`3K^E'S2PZ4?J>_I)"`8%VCZJG]5/Z@?IR_I)_^9_NK_]GP_P]7<#Y/%Q M!+Q_%SZGPL.OT[<)K/%=_LP`*K]4GTGP[_?R$P@VA8X%,#[W7V*`E!`&M/@1 M^1"!Y(%%H"/PPB?TN_`M`?=]9H0PH-"/UM<2%!#D_X1\M#YO()(/'*@`[`;J M`MM\KH&A7QF`"Q!QL`&,`>(%$8)Z8/)/!6@!C/U=!+H%QP&#W_Z/%)@"8`/P M^3Z"#3X%GT"0\``M@/&1`\E^,#^V@-?/XD?K(P+6^-I^;,")@-//[N?TXP7R M^60"][YM(,IOP]?A:_]=`E-]G;[$7SGPPB?C\_6U#;(%8<`,'Y'O\K?AR_P) M^10`&[X:H$40*5`3U#>L,S`<,+[/W][O]4<50`IL!4I_/3_4GV:`Y?<3O`%B M!:&!F<#;'UNPT[?[0_,I`"Y\OC]('RI0^%?C*_Z=`8Y_H$`0'_-O*X`8>`)& M_Q9\08'LWQ"`"9`7#/#E`R$$W(*L0(=@Q4<4E`:V!&P8.$'6X)N/!C@&+`1: M_TI\10`\P*"@[5?ZZ_15`<8*D#X@X#RPBQ`?X`G^!E$`6P`:0!=@Z)?AV_#Y M!2]\GL&>X!B0UB?Z3XAWX8/"O`$\/)=`8H`4H`"(>D/TC<%D`VJ_FA]<,"YGPU@Z#<%@`+$ M`.B`WS_B M_/A^_[Y_(%4P&@@DY/`-`9"$G;Z"8":P`N@%O/!1_-R!8\`ZGVTP'Z@#A/F9 M'%8;FXZZ8+D/_V<,1/:L:IZ$U<`SH`30.PB(T&RX^N"`4(`C`)*0R*7_(`\!?DXPHB';Z"SS\HX$$0#H`$/`OR M!R\"(S_!GX=O[;<61`&4`A&`O[]WX'7PWS<5?`RZ`=!\P,`3A:O/YY<0)`H6 M`8E^DP&'X-%`YW<&,`=*_)Y^,P307XG/QW?N0PID"B!]&#_!W]`/0L#O(PE> M!>F$&L!=H"ZPT^<:%!""^#B#54"]GQP@]#0SQOT'<%[/J9"4%\C<(-G];`RW?RXQ0J M#!V&V,)?80P0PF?#\"C5_F!\F\(GH+R04-%%J!1Z_>"`CP$R`)*P+ZC_&_JE M#.>!*T.-Q(H/[6?]@P!V``N`LL(+8,CP8+@\*`%:`,$*1H&.``HP1+@+[!E> M![N$YS]N8&B0"NCF4P`V"1D+A@Y77Z+0#=@H-`)F"D^"U4*5(*2O)6CYL_X5 M`(\"2X6T8%9`21@:+`\^_9"`.+X*01Y@AI`<[/2Q`-$$Z`%B81A0:&@NM`-R M`"6`#,)0!J#Y*_&]"):`-L!K8=^P$SCB^Q6B`L5_0S\R0!Z@[=<&4/*9 M$>0+5D(58,D0]M`J(`CB^)X$]X&.(8HPS*<;=!5*`9&&/0*Z812P"<@1@`N< M!\2"FD-"!7+PPQI<@G`U*`9=^6T'E(680_S6`Q,"]V&W4*>(:>P>:@!/!C2^&:";0`^W^8`/1`C#`-: M!-:!E[]<8#-3X=XO\/,Y@KE)L,`S6!/D09'_[/,R!*^!!\"U"$F#$G@P+?AZQ/.+!@+-0"KS)7OPJ?@(Q"6 M"^N$&SZU7YKP-=!%6/JE`.Z##T1?(0508'@T6`-L_SY\&[[\8*00Y@=P8"Q< M".A^Y;XNH#$P2Q!5(`L$$]0"C(4`7^[`)KA*C"9^_:`%A\-;8K80B=@!U!+& M"RJT#.&$3<-/'[E0=*@#-`CV M#G-_1X/[P'%0>,CGHPCD#QF)#\-L87. M"RF#OS_FGUG0K:!"A/R="J6'?#X4`6(`SC<$@/1U#=^`!\'\8=`O%C@:C/HQ M#KV#PPI77]5/7(CF"RF0!`6)-``\P!CQ.A@AJ`AD!#$+R4$WX:(O*H`F'`LB M_Z@"U<(T`)2@OR!*2`$T"Y^`$#]^(:J0R"?^:QDR!GN*%[Z,(5"15RCJ2QB: M#@N&PT)IH!<"#4$)Q"2>_B($=,`+8H/O0:@7G/")"\>&7KZ+`*0@(R@N;!BJ M_2Y\)`5TX6'Q/K@*;`5R"N&`J$++WTS`+#C>RP,@"2F#;8!28!Z@ M$!(#M\`*7^-/;Z`D#/.E^C**$<7R@#$1GXA0'!HR"'<5#3Y)W^3P[]@S_`1R M"U6`&L,#(P*0B9!@1`!2#V^+*CX&(?Y/P1?FNQ:`#H-\>(#^(=VP9(@J"`_" M$,>$3+[.X,&/*F`O!0%#CVP(,"7E\&<$;P'[03:@]:!U& M_>2+F,,180&P":`##":T`.Q\/+Z`(MWPPB M^!X%5`'D7X#$D@@T`5F8SR(O`2B`AMQ8$A=B!&R M_)B+*(!I@5E@UVA$Q"7R^5"+]T,?8HV/J``W9/=I%J^'_,0ZHT6@5#C>LQ=( M_Q@0&<0G@7>P)Q`>_#"*&BM\8#^O7^5/UA@'?#3&%6F((D#*G^@PH_`K3/7= M!V%_)L'D@?!P1!@Z'#*V#H>"5$6.X=]/)[A!K/')^%*"2\0BXXBP9!@8\`M$ M":F#S<71X?IP`MCI&SA6`K^+5<$2'Y.1`_@))`IB$D>!?+Y7H9OO%!C\0Q!B M&5V!(+Y-(!Y0?^@'+`_@F)#'4 M%!.'L<(!X8@04QAO?/CA$%>.OT(9'W*1##@=O!JJ,\*#U3\A7YAO(C`E@",` M&$6#140,XY2Q(OA8C!Y6_=Q_^8&O(ALQ;F!&D!QJ`AF$UYB)81`PB^AWK"YR M!,H`7T99(;BPX$@B1#@:!.N.=,90(1U1W\"JZ1!^^/!_EH$_/]9%;=_O[_>X\;1XX@+)#XR M^0J`-`"SHZ6/&-A?/`:"!)\`/CX@7Q?A\+@$A#TT^+:$,T:#HTG`\9A:;%?4 M`,9A5[XN8-H1YC<^+/*M"FE](KY!X8;/Q6A9A/3)&&F,=<#Q8Q[P5_C_,Q;B M`FN!P,4T8ZRQB(@8;"%&#;^$'DC'8&EP>0*TB78,VP+#AEW$&: M94R.&+Z+`,NOWB<`O$$*^?!_H<:J88^`J*C\DQ-V'2%](4@6(Y\/4:@H/$3: M&*^0;LA%8C[P!,A#O"0B_^Z&+L!6)-A1K]B&:/7!^""!%T9QX@YPZ["$4B?(BHRW!@&,":2%RN(:<6`8:=O:ZB"M/^Y!"6*[P6P8B?QXD=@Q#ZF M#U>/Y<9L82#I,'+8`'HXI/Y+>-A+W< M$95_\!:OWRC053B/K#(&^0*2]TA8([J1R"=>[/&A_V2/"D;B8`D1JHA"="!: M_["$W0*Y0+*10@A7/$72(6V(MD!,CYL(,7QZ1>1K/&A M&_N"NL`-GQQ1$BDP!#_&!*&&'4.K(*TPA@@A0#[^(K%_C,=F9,(Q7X@BH$6R M7(:(Y\`[I!M01:`6M!?<%$%\^T.-X[[/K4!N'`ZV"H^"0;Y'7P$P!N!;;`X& M%TM_$;^;X_B@BU"6C$%"""I\$;]L8S\Q" M&4F/6X%!7TR0?R@V4`B>%LN))\9LY+DP%0GB*RI,'\>.&SY\H;-P7YB;/!9^ M)1.+;4G^X5L28$A<9`O*%H&([Q;6B>N/QH?_*PK($,0`VT&1WUB`&-DPL"!^ M(0>+8T#!I$$Q(:B3U$52$3<$D()AXL1/>Y#G$QV:^;R%:82M8_(/2G!`]!W* M^]!\LL7]G\*/C0@8?!)4^/R#ND!:'P/2(RGDFQW.+":,[,0U(5'Q_S=Q_!@> M)WE\;X#DY%G2)OD5X$5."E$`&D0A'VQQ2J`D3"=B"V"-4+=<.%:3#4$UXK!P#H`D##CB$1V`;L#Q9%TQ*I@B:`/8 M'N&.B[[\XU=`VZ=`K#2V%:6'!D`3Y2;2!!E4[!5*$>.*V8*)('802;@'S"-" M)V\>%\CPH([2P.B`I/_Y'2F'`<.,(@FQ-,F+!`D&`1Y^74HOX"XQ>Z!EF"JN M#;^.8$FX0-A`.-AS!`[V%^``9@`C@4LP0)GKJT\&);N#,T+<(R*RALB;]$QJ M'RD"FH$*)&-!)0")-"T2^="-`<"QHCLQ_"<7P$8^$+^/>[^?9!W`1]EP=!L. M#..+AD9\H&F1G`A)C%2R&\V"E4HFHB+1VMA,#(VX_F0`*0!JXDS`FNC?(KU\=P"BXI;P4UFA7/")(2F,04J4HG50E_B:9`T` M$D>$.LDG@6BQ6@BD;!@6!"U\\$/6)(_O"9!:B.@<`:0`20`B0*R2YM`%W/IU M^C:0]D#X($,1*@EQU!2F`V>2,4-TH:<2_"@>M!?"%Z&'<,"7X,J1`;CH$RK& M^-B(P\&)(^(P*[`BR!88(:&,BD3K'ZU/O(`&4%0F%6^1\TI^'SH1!8`%8/QY M$Y5_R0&/(@H@"[#@>SYL#TJ*80`\`#YR'?B+/%8.+*.!,,4XXHA2$DE[!/ZQ M!2]\#,B)XTM0Z:=!YP)#&#[D#')*VO?-@&:`'P M$4V(G$.#91VPQ)=$?$?J)(&'F$#O(':Q0[C_>T[.`W6!W<&OXYLP-TE2B"R. M%]U\Z`%2(3;R)GD=E%26"E.5Q4*T'Y_2,/@TW%0N`,F#,[Y=X-820BFA_%JB M)4N3FDN02U\1UB@?`%TZ_N*1",/NX,0/#-@V'/J5+@N/?S\Y0.H27@!UA%2V M+D^5E,JT@;;0'*BO7%IV*M63-L7I(N^R:^F69`]Z!W4%D,CXHO1OM4']6TA^ M"]!\,LDMY8I29VECQ/&)#SJ&[L/=Y80/Q/C/&I(NN.>CX,8'K@JR@[9$"H!."%U$)J)("QB+BT+$=J M`AF8=47*X`/S]Q?!;"-J!I!_'\>$):?P03GAZUTN)RF4R8.K89G1U3<%0"%P M#*@"(\!&H2QP^N@UU`4J`"R3U\?,Y"H244EN1#>")MF+Z$)`8\=!Y0`S6UFWQ%"F M%F8W>4MQ)7FOI#BFW"]>'UN"30&-9<52)U!2U/9-+#F6J(':P,52!8@-I#ET M^K0`$+^+92`3&,AO=/4Q++^7G3X<@-,OT&AS1/XA'9Q^\LLXHFTP!Y@M7$L25:F]?#?"!#^3-\I1'S"PY.CJTV4. M_7B9[\@+'](!TH<86$QB"-U\ST5R1@:QXRB8[$>>,4N'D+Z*Y)_RG*F1'&). M,#."-47Y@I%1A0GI"R-"#YX*)$EAY$ERF[ET;"/B`E62(LHIXQP1'PB3_/`Y M!?5^;0#D(R*SB\A=9&0V_Z:*C47\HVURVU>2O%9N^#*3.<6MHMYPOACD\R'> M$[.9Z,)QH4`0Y-"-%#IV",:&Y`'1'UQ`+C`SE/U%#RJ"#4VE((BO>WBV;%^N M%#N0U\HUII$`^8?0O`=N+Z^92(4*@:A0?Y`P_`U@'/.9A,*Y`R1RD%DMM&)F M+G&7<,A[90R34"A\#!]J&3X*=0".8IK2G7F;=$H1`$*,)N8O\4GIG#Q("@&0"WB M)XE^+TW*("[PKSGT._JM^+:1(SC.Y0I0L@GB@R-Z#NV7&D"\8"%PKYFVC!N: M`6"'?+Y%'TZ`+6G5?&'V_+0'$\FY(D(PA/FD)$W"%\H##<.IOFR'2DS3`%L_4I\\D'CHDM18&B\K"*2`4!_O\W\X7W0M`G`G")> M^*2/U<*SP(M@]&>%)#_:$.]]\L5LY12@"B`$R&2F_#B9BDJ-Q-[!U=>N!!N" M!8R5JLRYI8F/OFG?##RN$S&7V,&-IBM3]@?L8_!!8TR.>T*3(K!O'*;?5$-Z M$UV84,QZY:=Q7RG:1%X&$TF3HTM9X?.RKRF]K`2.&:>!?`%X7^80W)?TT6S0 M_"*-"7(. M`T.*;\`)$;928RGR2YI$-UR<\#X^(;@/5X`$2G%F(%$`O,@LX@82MNA4,/VU M&W.&-("=89!1NLGS\W%R((&<4,XKGY33+/-VH7%>.2N`$TN1GXH"Q4GSHSG@ M_V*!FP/WGR,PDAGGA/D5"@M\J4RG@1'@SNE%A#\R!/A\_$V^ M#56$B$N7I>_PK4F+;`I!)7.7=`'`*OF2T<52H(2OB\!SW'5" M)->``\GKGW6P4;@A9&-=.3>01+[(Y&4G`C&=*&7>.#LD>)TT2V$E42!CR M,)&%K M%5F=DDD-'R73R\>M;`(,`>B;10`[8$FQLIFH5$2F-^&9G3XX8*%3&?G![`/6 M%?>3_T/3'Y#`@8B\C%,N"J^7:('7I?92(-CZ<_4]$&&+<4==Y&32J:G'+"CB M+.N*0;]`ICG1-@D;/M\+.F6],[4PKVS?,+I\R:. M*0U^QDB4'[QSV2D"=!=6K:Y\,$^[91/`6PFN%%=F"4J9Y\X`9]#3DMD$P&06 M/9><7<`C),UAZ5GOI`'@+9^>1\\N8$8P.E`&X#[F$S%_]P2;9:GT6QNF+#=\)(5%HM*/OF`U\"4> M+66!OT?,Z.(!Z`E.#U-`^6`&F!'T\#8]F3A#A"_!4B!=B>I$"'I8K"U0?&9%BZ M!/67;X#4Y+#B+JG[NSPF_W@)!$M$)X%R^DCD&U-F,'N!KD=)YFI0,VA@)`4V M),%_?T@'/DOBI]9Q8/A3%&*" M*GM^X\][HR\R6=F&&'8Z'IU^GLSXIH"SDEGO='U^/A^-6<_F8VG3C,E&1#?" M/Z5]5,7[@.!2CQDPA$-N^&"5!TK&P@P`!7?E"_/I^&BB/T$0C0)A/SEF&,"R$0`.%],NA)5JQ:`GAXTUF M#G.&],)Q82[Q1^D&0!$6`/5^8D6DX@("2CBQU/'!!DJ*0`5'9\_/^`?F/`J@ M%66/68'R9LO1-=F&M$@F$/.%F0+38RBSTZ?C8WUV`2V*G3YC8-EPH\@)K'3. M_Y"<7,&50$=1FBA8;%_J$VV4UDMI9AL30@"BW&M>/L\NPDL8G_N@8!CMW``6 M#3N7^TL,H-31@]DBV!2V`!X%+8#](41Q7%CB6TB^"@N*5$8X(K?P'&D32$<" M'EN5LTX8WYU15KG?*P'T][@"7`(N`:[R+Z!O,/"5^VJ==T9O"N`A4`L> M^>0+@DEBY[L%&*CIU$#2*]F.D4YR8S!2^_G[HTPB^6JA!$LQYX@QXSA>Q(3J M#8F""ZF%-L[2GVJ15T`)I$]N%RV&RK^T9,U38_GA2X!F M0]V`H$JV(H#1$DHU/'FZ-HE^2,S:8T^R6BB3(AJKC'VZ(I><(-&(Z.>3(VH1+5=J M+E^),#XG0`93,%FM]$1O<.D*!HS:*CQI$N"`'X>\V\Y_8OM$BU;!C2+HT,-@'-HQ)S$4EP=!;0->>A<41IY#R0]P@]?!&P M)(MT%L^])APQDOGT4P16"R^$A]"$)W`2>*DE7(=*&3&A]$@?G$$21H>5A,S3*-S0-'F/C!A:!PM]*`+X96$1:^D7#!V* M%I$"9TBYGX^(B$C(G`]H%WU]1H'O)6@2Q*B'W'G>/]^1HD"39R:TYXCSNT+2 M^@X"0E$U9HP/]5@/5"`._8P&4()X@1P@8MC@>P]V$6A_Z,[1PE`S#*@7W68& M0F&!V8.=(HGQB)D?=2LN&<,'N$"HYLC3/+@:_(J"^$*1/5`3W_BSO9F(Y!;R M,`N*(DLGP0FS#IK@H_T5%B&7R,&5II7O>`E;S`\6&J>'`$(\7_`/+=G[G/%I M`$6':8`))@-0W3CVS'UR`G63%$H)8);3.IC8;/"Y1A>'*<2A'P-Q1AH&1!XD M!1F"=4JJ7V(@`7C"I$4>GUB+Q<4X)N/R*MDCS1^^-K^,/[^K@?^R`T@SO'W6 M2`F8B`&](\DS`LKWW`FN!L&8^T5L)(V/UF"2K_&`$TU4(6H3W@+CLVC&)M>!'\=YI]"3Z*FW#'UV`1A(I_*"+TPUE$Q`/$#/N<8DF$(1RRQ)<'B!FZ`)"$AJR7H4D121C8-#G0 M,,F*[#Y?)3UQ'$@1J$W*'$&8<,;S)ZL3H4C,_/V1#6V,-CI$,)H-,/#C@#,$)J`(U_V\XN:0/377K2_!@N M21&`L$$%(C1!L4AN?"`*!&,N=\1>)5`S6YJ;'!BB2ZNDG5&QP<`4!4`#0!)^ M'=>E5,B6(:VO=-D"8)C^0VV28$`**?70,JHDE9%"3)6"1$4DJ!"TX- M+V6F`L$%Q/H/7#JG%)<*3"F-^$`X8`V@QMB&I#GL!3L$+0"H0`O@]@?DFVD* M0+N`"`Z+`[>-,>>LT_D917Q+/#[\TKJ+XF#'DJPHJ,3LKA*6$B> M#E^FH<'U(Z3/O_B/_&\*MQI\5P`N(@<1W:E_Y`9:_I"?A$+8BX-QN&E@Q/]Y M2I.B14&U8M\16%G>;';*3$M\-0#'I5FP,FA3?#(B_W(`\M/P'_U45)CZBQ!P M#(Z?/TR&9/"OO,DHC'@&_Q2#_07FHZ1P_\E!1$J>3]&>A<()X^X1=YI9C/&9 M$;X%XX$E7U#R$"BM[(NR$2$$E-(AJ=``O8H!3I`AR6'*F$^4+%H.2HMF1Y0(OA(XF M^E:@>,]N@S)A[?`6*:5`&KZ1?0/(":M)02 M28.`2$E]I3]T>P1'B__/O! M&IF:+,^F9IK\CPZ+S>+D"[?25 M,&<$JU+R@)*PE&`$\/JY`:!\1SZF9@(TRSE8A$YB#8%M<=2\(-H2Q\<'[6?: M3C>?FTPTZF4`!W!)?9FV41&C4$I2@B52.VG3[!:L`RV*F]%`8_+4R&`.#*0Z M3PFI-3XX()704OF1))DB%9$.\,*B@%G@A9F6I&!Z."6.R]3I)MNO>?I$):0: M3.^'?S_Y87%37PD9(%AN-B.8*K\*7^;PILD4Y!C\+A&:ODG,H.=R[`@@%!U6 M^&:'`[)NJ"3U97E&9?MA4H%\3$TS*",UR+BT;%K2^)Z64 M&5F*<-`^!=0SP,B!;/`A#P)]P$KI'[IS;LD>I)3"+SV6#LS>)%BS:(I(32?* M%EJ6F5'!X>.)Z3C-S%[N&G.*I]23I/N4-#F[$8YN^*R>94WDGQ4T26AE9`EV M0B-__$=CH<(S\BD$U03>^92$7D@T!(9CJH,:E&^F5/.`"]4TZN-OC>HWA`.Z M`:2*?T&@J@+4"'@K)6?B_O0'&<&EZE,A>@`L!0Q@*24?`*[)7256^62#_$XKXOKSKQPP.B M`9Q^)`6WPJA/J`I+C/NM(2D";``50*!1K7I5C1[@)_E\6E7]`1RP9%H'G$LX M$_F*,+ZM*"F45HD*=1.P+W,'A-5)X(&O"[A6=2"X#%$`/8`:7Z"1L.K5@/?U M`]N0WL3_GPP@6/`56`ZLN M5SM]J=4+W[$/&+A:-*XB5RT#;\P'XC5S8,@ZE8_*/>FHRDQXH+30`NI3W:O2 M`;2K`J'-9:#0,:`PFK#4;7:AM1?NA-3&I&!0B1X<;&:K<@J_I$W:K: M4@N`Y=+[(CES#L!630Q,_=JK`].E5EQUZ/=;)9:R!="7KKXA`'+5!8!>[8,B M1B^'*%0R:B>R?BE+#4I^-/6HL-0@W[`0OWH5_6/65_6AJLC4ZE@@;QH'/?;Q M38V5&(Y;A853P+E?E'>6%`VLB%#ZHH(U#,!@94PZ6!6&H\@`HX3UO$EA;:LR M`/V6$\*`IX;U###UZ[#6`;&8#DCSZG&UQ'K4Y&?V_/RJH=:>"P4QL*J'O+/2''BH/E9OXG\5R"FSX+,& M$`NL@-8RH:"5T)J8!!8>6J.LE-5%:Y6UT8KWA+-"6N&J7-:A'Z6U#AA:[44( M6"<"@<$/GU`U[8`:@$I.`8ZJ-40_JY24#L!*;;`2%6^K4S_=*A>1MPI5V0KDW("Z_O:GC@&?Z5,5L'I6#?VE5<.-P]9;X=K/NYILO?#] M5IU^PE5@YK#0Z9=BS;):&D^M@%5/Z[0U?P:5/`$F5A>K"=9SJV.5?ZEN[18$ M";NJ&`Z-1%<"QL=H'9NB5E6K0-;-U8LO6UEDU:?*5FFKGT`B'[@UJLH6I'Q2 M57NK*(!_J[(U9F@RM0G*$CE\(U;E:K&0UM=<10$\5R.1T57]H5BQ#'E=1;+B M5],.QKY#X99UZ!=>];D2"N\:F-;S:MO@J!G';*]^6EFL==0WP!]2OLKRHZ\6 M7&FLM4A(I-6UOUKBF[5F7!,/`B&@YX`5-HAK56H&6I>L359?ZTUS"!ELG;!6 M6/6M&SX,JSF0WYH1]+*&3TF)4=*T8:2HMEU)V!8);G"5H^LN5:@XJYUXMIKA?(= M6H&*-H`I:_0QWZH$Q+*Z5;>L75::*[MUJ,I_Z$9V7"%]J=4+Z%9TVMJAN2-& M5LFI0,6E:1UPP]=T';W:4AF*KH+`*XEUZGKANS..4VVIE\.L`(FA_=DO/;B6 M1RV76-?X*N.UZRJ?9+6B6GFOK=4ZZZFU\HIG9:U6?VRMQ\RVZX&U3/A[M:4& M/$FFJE>V7\55N@I4/!(J6E>`K%='*\+5!`E[G;DF#SRL+C[,*LY5ZEII=+[6 M4NFOTE?UXKMQY^E]O;K"5_^4_$)2JY;4KTICO8'F!#VM%[[P:D)U;RIK#;FN M!?8/Z%>TI/HUR2I_=;+B48&*=5>SJ@GVIDG2O`%(6*^9'==PJ[&5_QII3;9. M6F6O>=:U0"`T6PEM?1($`6DEKLI`H:1QL\K?NR9>1:^BJU!=Y8&/QW=G1`;J M_AJ9S<$C7V&3$>C&[&D23@VG:,]=!1.TI/@@[$#^!]F!@E&"*Q.0ZJ?,O"1J M!0NGC4QO(:WOH]#P7),J.SV:!DTZI941M-C\B\):!F&-H"5"A0B.V^/KT>D*NOS$(C@1":. M0.&`<("J*JTOYSE<&+="^NRF_86I(@Z6_,<`=5[V87N8C<1QXKD1X/DG#?T5 M8QN4WL$+`061CU@\_"-R8@^7DS^GJ8@2R(?#5$`J!L:A6%/S9,"4??@$/1P> M^>*5KU39(Q)3@,DJI%<^4HNCPDE]H=BSGKHD54"6_D*9.$XL@:M4Y-<%-)O2 M^G24NR@^"[F.V=A8X#96-QKCD_7A M#.6)0M!Z:KSR"7H&K:"2/:>I2\!Y+(0O95D`[,'*`=2'%E.V0+#/XJFP7+L* M+'616S_\7Q'`1RKL#"=^(JN4VE00ZK*OGDJ.5$!R/DN*AD"8+&-4!'F\-`J" M,".R(DR?(EI@4_AN`9JQIM+CI1E672HC:!M,',.R1\5UI!Z2,JHO]6!> M/N5^%TC^I@NU.1LV5JH>@6@CEHP@P8_>C44V1!?-S`]D%=!PF M1"VO1E-ZK#<19N@LF/JQ5?N'3C]H+!O`-/M_K0-Z)FVR"T!AHLWQ$GL&6*%2 M'4F3_4ML;$(QA#@HW$;.'2B(-T/P*$KV*8M&_00B9(N;'T/OIK)05TIP_!RZ M3H&N:=*I+);`Z9>'C9Z:-\FPOD=AYB=2)KOV.TWJ`+B:B=DK'QK5,'JS!$>#GZ,3J_GZ2QYD`JNH1<3U[/W5?DKJJZ2. M`V6D!EEX+%"QB*B:]1;*3'F@\\=]`_-3US@W9WW*M.$[;5AGB6ZF<8W:2F`/:L=E!+:8./&?F9'<9N M6PNSF\PN(!Q07YH1A!>46[F'K=EO88E6'YJ[1-&&9(.D]-B2;*^/13N?9=)* M`>^JE,LH;2%P2KOB(S%::>,`U=+3]ZI1XT3NO&K&8Z##.U9%`3:SVV/BOR\]'. M!?$A@-/CXZT3#`F%W3\N`^F&$$(/HAOP#;OY[/0E3C&.CM)4GT`0,""W](5R M"@NE7\J3:GW6?GD8)1#.!QI^HL-K85:PQ->)M0FT%N.9EMB*HB1RM@JJW(T. M__A\[]#EH/,/_=B1#3G^#KF2SLU6P6JR1Q"410$X^42`5$YAJ?UUF0D7X"B^ M7U.OP]=\H!\0Q_>>?&2>3H^&E$3<*'>6)KNJ-`OV,Z<$VM00)8ER+.A#9?OE M4%\%'TL>*JPR]/E#M1,&^+R)Z5!4;59@B%J&E03+!/#,F6'\>&$-+JZ[\4-WK-M!_. M4&.DBKH$#`$/U*G1V35H27#)*9WN@]=3?:DE4B+K@0W="/F^8TLO=Z@C0,_AM[2_" M`&:V&L6:;46P7&HN-46N;;>#!,K29H_2DZJ@"`]B%=^O8<;A*N`3^9=1.)NN M_2Z$#E.;Z=TT83JXG1Z^:3D$/DHL+81O5RM<;8E62D>"%,-[H5EQ/IDCC1%V M&%FE`<45:GLQ3AB^%*!:&6>'9XBPJF506%"!35\(6*^M13_WIAH@MKJN1;DN M4E>N>$^@*I^/W!I[O:O>8*.TK%76B>G6.1@<[03*9T6%<$`5``!V+="+[*XF M6O."XT//JQ=3#(FR[=`""9"Q"(80+8@O&1NE-5`F30Z%_<4:I:$0C?H5,(S* M))NN3]6AGPJ@F:DDK".*8^RW!=/*Z@(W6UDA;`6D7]:OWU;`>V\50TZON6`VD=A`-RWTD3OX`43@.<>VQMP&7]VVH>KU:[K* M4C-_Q4*2YF(RY^BH)?(]52NMTXANY,W6C+O-#?NE7N M<1NZ7C]F+"X4*9E[=;IN,V&XMEQ(+D8WA5MDO38>.+F29$*@(@&WCHL"T.@Z M8QVIZ=SR[7#5-PLWM=_N(?*YD]Q/X`.7G"FNU9J^<6L"RL6L*AX``*O.6$V6 M2U&YN=P"+2\7Q)>ZY6IF8VRZG=MM[A?WM;J_5>:F.Z.?(D(`+LS5I4OYA.D" M;J=^[%P[:>04J"A_J%$:#K.58=SY(^T4/KL6^"Q><:.MM$C]ZBLTP.@"B(42 M:^NPQMI.K2-0)DF=3$I^9O&V1SA>?2#,VVB-:VKG6S8[G_7"F" M!.N.P\&C0.LV"M@7S"_V3G.)4-A0854PB@C&;.T2"F\5\,)XH%AQQ?=\C"1* M"'RZKD&-080R@'C.?`B:3!^'_T]^)<>@85BYG*EB)#>[\EH[+/0/#]NA5%/V M1MN(4E!"K;[A0J#0/5[6#ZL%$L7YH/C`$5AX??KY"!N7EH0II$=V2EIG!&/* M7N&"U+_6)-ROP0;?>`T-(?Z>Z1']O?_2+L%&>(6\LAY(KU@.FCI%*R M*/N[<=))IVXR.ZJB`,Z*`P&S0U2HUCO7K`M.1.OJ%Y"*+M`6KDF1;)O*=17J M="VY(S_Q`4#W;#O0A>,&==>!!]TOZ[LECD7,9>@V>9VY-]J=;CHQAPJ]]6X0 MSM%%V M=/>Y%[X)[I@7TK<"V/XA%:4RS,]RZ2MWSXO,->FN<2\#B=HU@'$6J.BHA0"N MM& M=9N\2MUC92_7R4N0=%$*8,NE&5RI[LMS[0K11=DR<^&`8%Y'ICD7-8O._>I6 M((VZ_45X;I.7G!OFA?+V M6N4+=<2R+%F7R8L:F.KJ-3VX)<5O'V40SGM1I+>2`NN\EM4@+(SO!E`2K286 M86N5,K\D;"M4BJND[2\R=/>\V-([K9_W+YA#[?1-<->]&[Y";Z>OJ5OF_?1> M=!F]W=RJ+CAWVQKIG?0N::F]P][Y+%!17KB?Y?.M="NM#TNRKD@7MOCMPQ64 M>ON!IUZ=7ZI7K\A=A<_&&W"ZNMR;Z5*7UL?PQ>-"0`FF2%WV9:-7C1O.91^. MQD0FER":52W\KCK3>N6T?@G7+1F& M0LM]/+ZMJ!-V"C`655M60:N""I:66:SL"Q<1(69&\8[K`=S3LJ=U"L" M!?J-P801H/UQ%&LX1%9R$$&V?U_H*F/T$XC_''?Z/C^D3\7Y`+TVQA@KY:M& M(M>G^5`083>6OBI7S/`I'2&1[%`$(SIU0_I\K#06$:F2:T.VH"[6_B=1_:+R M]1_^!,$*`]/VH^Z/#BA_G/OF/2>35\H$Q=Y6\!G:W/W: M9G6XX+>V;LPLW`1IBBUM2+,2R M_*I6X,B&(1;@$6KVI/1^*1^>RC_\7Q:``,RLA`/2>-T`-<8P*4?U)JE6+&!: M__*_+@-NJ`_2C$`W3#G6"7>6.$KE)79V_PA_C-AJ+2>VW5B89;S@H1K0G4DN M;6V*&&""*(S/?F@EA/M>0,65]T'UY?D2N@@XG0)D`9P`3X"!0!+@T:B1"+(" M8@NLV-;8HZB4Z4DJ%5?"!*>X'EMWKWURJKKI9>G*7,^WP]4B\%^@?GN\G-[* M6Z&J'\4`JN3VY5IN];?>6WNWM%&H;_N7PQ<$8`(P`9(`3@#*_3@`J`!&X64/5$+!&<'4%^@:K@Y*WV)B"=/P^8\.>X,:!8<626U@`3F$2 M'/V+3498HW(4%&O-C&.^@/=_@.!$@4J`^*E6K012@HVC#<-+,%?T`BD)[+DH M%4=\/4!3#05!;GD(C%?:-:RZ<,!3L$PR%0PDO1Q6+CFU'H+A+"9R_DG(U`4C M:%^LC=>"IY>4GSD*EG#`"P?`(4MFY8IU`1P.9B-*@&FIK,L5+W3V.5@$1@)I M`=6NBELO!3(80UFC5'G2*TV+"%K*H$E6Z]JI[=)Z'^63X&"1I\)6U!0[UOB(P<+A,_!8U)Q[D$8Y'G^5`C? M2;N1#>$2WT/X7[BGW,5:.Y46X?1KCTPB[`#C"\LP.,$A804JQW`7/ M=\FT?4:4\%P@/>!\E")":%_"V\F8\(:PTP@X);-,`88`X$HH`!4@"?`$J(AZ M@KD36UC[[]#SZEDJ'8'.-0FS-\^AXE+S+3QTM"@/W7DR M"Q6(]E"Z0`M@`'P2CAZNA34#_=#.KZA0(/JC'5NF'?6M(\&U(715O3@[%$=, M&/65`>&Z(U*85.GS;>;B8(.BE%&C<"=3>"HF90[O;H&*[%S)[\X3+JR;O#<2 M2<.3Q\K#K%=C-5F8G9#*)U_"NEG'<,KRFHD'="WZ19V&$L6S@-@SCHFUC2\Z M8B'#"T.Z0*#@N#@93GB20=&FYH)CZH%T3-D0EOP^04M\BML=:]23+)BM[-WZ M:J.3T,VY+HZ0#@SDXU8V"#E\?6$B0!)@+]P7W@,+A-8"!+XK9Q)@A#E,?!S& M!9J6XMK58"\152A;A&367]&$*=P(KCXU74@:IJ>*/DM\6X%B)@D0%Q@#>&#W#!=\P[0W55U=2YHY&1!(J6=0$O9C6U,]D4[DH7F/N[%?^Z^@B-Y5\C;(AF/Z#OC>*R M?]V_\%_YKV$R3B%@)8!>,@G#XDH,\/XW4.C_9>4&@,.`R6&NL'38]_G&U`(P M@'^%R^%9I+IV@]D*?@G'@#7`0-)O9#93!>H%A`%:(FV/NF#N[-=Q*ARS')0Z M#:W!^\H8,/DA;CI,-#YJ,L.6)4,X1%%U#>P#!@(+@3W$5]$C\)$U"2PC7`+7 M.YV>>LLG<+]WWDK!;;E2@=T`>@#R;8WO"FP3AKGJ`7"P[>"0Q(01WMJ^C0(7 M6GW%@-5@L;WUKFH&AKD&7(=^Q^)/H+2Q)T#K9`.[@>'`N$=K((4XQ'<'+@+D M@6'%?>!0<`YU%"P(;O4F@VN,S&#C9R*87KD(3O[!@JNO+=5(<"S7%HRI#?)! M(?V@]^`O,;N8MC`#!@;+A+$QH.`:L>_0*4U%%"9KZ8%AQ]Y!?[BZFN+=2(K4UQ%'SI+!@+20_&%`3!0"A8#V`6CC]$ M3N&S$&-#L"KX@7`8A=#",G>?_-)()I]O8QSN)$:B1A&`^$!::3588)R8/4/` M"SO!?.#EA(!U3'P,GOB^BRNKMMAJL'G2.JPS6@@J=MIN M7^^'*=[0K5-8LP&5#!1G!`?%2-,:GZ&X'%S:))JB@^&9.\QJX4)SZX<$F@EC M(+.5\6"*V,4%X`LS,S3$R MA1/"O&"3+P6Q(2PIG@IW027">,R/AD^\"L2K3Q8#'",Y1M# M=`W!C>&^8>`X*.P/]@G*)]'&7T>D<&@6PL<4#!O/4$?!]Z8M(,M2SHGNM!Q' MA(>9SD6%(%880GLZMA=CA#V.7N&,8%@8XUA$=/%6"SG'[T@%P"CX`!$>9!VG MA6W#RL=$Y=1O*7@>=@W^9+N.P6"!$""B5:MVS1:+_#@9.>$:)>27&4R_M!_F M:K>T_6"LL2!S[QO'7!L',OM];F/=[8[3X&E@1'@ZA7D"=T3*<6'1;+H)_5UF M33>A%.'^+BSS8ES>C+Z&C^.9HF/R<6R49KKAJQ/J*W=8+ER77#K.=>W">.$D@%Z8+^P7;M:8Y-3`@F%Y>MK=*`>8,XD]%AY79=V[F6(8ZHK5,IR5'8)^+BF-=MX]&X13P!G!5>.* M;%&B)=A5YP9V-$Q&9AEW$$>@,P#4<&GRLYF'Y<=&=NNA@M(SP&RX!;``-A1# M!J*FV\V`:&X!4-MHY2[:/:&S+6%5[V7C&WPHGBJBC?FSET,',K-2>:PH!KHB M1JFZ4][TL+GP@O@=/JUV+TVU'5.7L/V8BOR)#"(6R%"&F<#V,$<6,4P7X!3J M:4W%DU^6+B-W31IRW`\;8PW"LL(L:-HT@;EWG!Y#"VG$`D[%;3XVA8L&?K=` MB=^<*L!09HG/?TPFWOKQ!(:JH5"38JS5WKO$K56B-12T3UPEK(18"C`NMA`# M(S/$&V(B,JQX3RPBWO]Y0'V?),(3\4U!P3BNE>&RB&-\+N*;+9H024PFIO,I MC)>R)44"8XR89:Q/O7DZ$G?$0[\><4KS;!O5529[;.E]&]@[XX8VC:S/3"B/ M0SV';F1N;A>P[GAB2`]8@*M]Y%5>`?-S8/CXPQ(/4N>.S4L/L#34,#LT%ADC M0IVV8F)\K#?1F7S`E?>:%#NBU&3S;_PA_M`F%JW.==^_\5\.)/VW3ASS;`)8 M/?&_9EYRLC>Q3PP`ED]>`1K)0S^S,:0/;7P2?64>BHF.BV.))-S8DKQ>O0"; M>86!)N%1,@64?JG<=.]V3X-\N,!,<7]X/`K:[12W@/65NF!1L>N/!NP6]@*^ M5#69A]S_)BV7!SS7;14'@:<`0^"#\>Q"#9R0S=X*8VW%J86?\M-35PQ4?/S= M`>:\4N`Q,-M/6DP&5@)651>^5=4+W[7XPN<_-IEJ@7''*$/VK;P56/G9Y!6' M;Z'%S4S&TI"ICO:'O65,%5]<2WX9_PQK@2' MC.V%3F%GJ\D82Y`_1AC'0#V'Z^*B<<-X$&SC!2Z#$.;#E[\HH@OY7KSS3"[3 M@GW&RU&0<<#8I&P6[@5#)9'&&=?6Q769H=PR'@9SEPO!WN7K:PW0S.H*+BY[ MDS@43C=L5WN!?\,G8$RR[\`.SC$?!2N/>;2ML#\T)8P4Q=1AE?(''+5>#>,,_W85RCC!IS MC:?&_6'9XCXX@5PX7B!OC;VQ[.5K\-=X@4E!UO5Q@XO&-&%7WU&Y'/S95"IO M^![)V%=)LCDX@DPVG2JK@^?&*&/$QWSY#A"OW%68AON].F$_LF:/\*Z94^AG]C5G!"N6"F'3!"22T%QLKB&G MA!/-*43W(:.YV=P=MBT/R`+#*`!F,@!Y;VQI'B!+C5.T!F3!\3-5&GPXIECXZZAK]M-6 M1E^\*(!?,Z0/X*QNWH!*4%6`16'1K>LX?GRTEV>5]UY4Z+@O])A-7O\>^(A\0.2\,(>XB`Q-YO\*A@7+>LMOI&%X-_E$!B5' MD9'.>T.?\!7Y@_@EOE>29+?(DH+MGZAP?[K7Q"CC<37`"N,E(,'O\OIZ>"@? ME$.?9V0CK;CU"1IX]@Q'E&L#(U`:@!S9/MS:W,=685W#PUNR'Z/OJ#P`[B.W M`/[(@-F*(&\X[/L;AE\B)=>&Y-51,8SO_Y=(KO&)F>_,%$NDLNGXJ=S]+12S MGL?-!>'@YL!Q8+A#5CKC_Y(`X4GV)<$1BBS&90LL(([#3D/&L+996CKAZQ"X MAQ^V-,M6=DC9+:2F?P@OHK2A;?)W60Z,%H4G+QU]A"K M(LBX7%A$Z)B2\(M;<`.@B"^[8<`5,9*R@SN$'-@>B-/(2\#,J];3R(I=KB?[ MG<6M>=GOI/UA$7#7G$K\`**I#X`;VU1*CRG17*]&3`L]X4!$U&;C6' MAN.@)&B(\H)WXJOVHV5F/@O&4N)Q8:RVVM=(32-[E.F9+T6];]'6*HP3_7I" M;.V5',YLY9A8`5TI?29?5EU__(:G>5V\%XY4.@^N%8N MB0>RE@&GKN4W,&QY#CQ;Q@/K M@6W+1HNE,2FZ8TEI?AIS_?S&Q+_,YEDR]NL[I,_2+MNU<$S3J,>8BIJ&CK'J M@J/+!..58W7918%B1@\$,DG&K(+[PIN":9A`@0NH-=4Z*??_08^A3;8F!C9A=J!?Z:9N@9.A6Z]UT7KL8[?E] M.>6);D^%Y8)3QV<.U4-"F)^ZA^:#,P]1=GD?C9)&([N3M-0J*I#WE\A@CILL MC6_"*V9KM(T2TZQVMD-KG/G!W>8:LS>ZI`R$AB\7^$:J)%=C,-79VMQBQD8/ MG[W&7N8:LV(86@E913P:0=?!^$"DL!EZ4*A;K"\3'N"%M&>M25LT*=R7>;H$C&:.FNV'B,\*:F*ZT5P1S#3/2VW(L^:Z,Y*7`QJA#4@J M9.V8K\ABXCJP.6F??`M>HX.T@LF6M(?4'NUW;DGG9;.2OKZW;W^V'PB(UJ>2 M%7N_7.&>]+7S)0B4;DK_2,F*.\C!!U2R]]O//$JS#']_#&J-)5/ZPBF4-C9+ MI?VBVT)X+7OTU(F5?@Q7_%R*R,=K(%)2,+VO)/*5FG5]Y\_IH>@2N%E;3>UB M#3>N.&D`H#=1U/G#;0BO;OVTR6=CHF#VAQBZ%35'E27(9-!?85RVR^`[8._: MI!>/F6=\HN!P`\J3C?#*I_?3K$TOY$@0]UP=_!.K3LG3.DEW)+-2E9P5A'?N MI@'1YM#7=)-YTDN0'E%[F+,%5\43,M#TW;*KF#`69IF&[%2/KT,Z""W@'!/W MDW^%B\/@J.T3%^B2)8X&;@'>$;;<.08DS=9"PF;0N,M>3I,U)1$7,TQDWR M/@'37-+Z,7E:DPPQ7#H?H5U]&HEQ94Q93J`3D6/H8G0(]-<;T;Y("EN[9:F M'M&*3$,(+7VZ[)?"=4>K_:#5),Q_\@4ZH#SU<^&Z9N63^NGY)']ZC3DX)M&" M$;&07F#HZ;E9Q3M]##V[_M@$,$>0:1E\6%J)?/6S4NS#6NV M09W5^VB67ZGWEWNJ%2A_,0&,5%Q39%16:/A=F`]W00_4H4)R M-HVTYNH9H)/X-AF#YG;2H&>2'65S)OA3K;F7SIHR#7>>7>.?H1`:'SL"E:@V M^`Z['$0O;#@RHSI#Y3YO82VIZ<_TL^U1`&TSC!-&60>V4U\D("`Z+ZN!);*B MJ3VB9-USZ:6Q(_BM+DH?+Z.(R])QM=\Y94VL)C[S/2M\E6"!,G08J*BM9D#H M"L*#E[\P'\<:&NBQ/J2"K)^`(=X3J[R:M4E)Q1&SC='58$\+=!51;QVSSA*K M-<&-6=/HZW'Y4_PEWC&N=MO0.VOQ\TK94^VJ9'[B"I30G-7_7G3#L%!UAD+? ME./$.F5G8DW83FSOQ'<>`X/*O-"AA&,`J8T%Q40I!M"J[";#*&^`IKZ28J\RS%`%_E<62>FKV,@J84[P"EEDR MKMG+^=]%-(D9PE<#/M'^JEE^:6K?]`LSPXORU"NJBKO%=N57L5Y95MQ7OE8: ME$G7GT\\K4J7%#WU6^D"0&'1&`Y9-+/XI"FU1B$(BZ^98P":*PI`?JOE!1EP MBY'1;6!E=+@XP3+K-37ZBQN3KJPB)7&X&VENM%@0C&D;55YS M.%/*DFO&K2=X[G#D[%.#I>?!RN`']CW8)SQ6/DMSFEN&:VFN\6@:OBP)M.?& MI:G-WTBZ=-]8\!A)Y5N'*178\\-X["=RVZQZ1,EF`A74*\R>88-Z!*HQ^)%F M,"O2>U94,F)4I,R;W=1RFX7"N,OX)$?9+RT6;$%^2X_4@^GF,!SP6GKK+!KO M*B`,95JC+8TR83MGIH"&1AN&TDTC*QFTF1S7I5+7A8L`=V&M,Q'9Q/Q^'H#V ME-/7F.ES87^W/'QB/#K7GG?8:^?(\&W6:\PFY"(3K=6/7^3IX5SPCZG`SEX? M.LV7C=\S-G46B>F9'$W2GD^]V5GPZ`N3(:A\7/SE72,$XMH90LK3.MAYOD]G M5(?#*T$%]EPP1.Q-1`H_#R&)9C^GM4GQ=NV0/&/?+/.'B^)+,MHY>*P#]`TV MCWW2^6@-=5#Z#Y@HMA].:\.L,6I,-5FYK8GC54SSLG7$*]8L:#.3FOI15HH: MHB<#Q4P^7QI[>RO,]M%B-\>`L=KDXIUVY$D9?0EO(],0\$+3XM4R%EP"9D/; MH2/7VLG2[@?5^,R1C>PFK&O&LL9&]H7S->U4E&1OC46$-+[9:3(P(*SRY_$JP%2! M.L,`MFA`=!H"6M"A&;(6JUG6%F67]2V9H]SRDUEG&$>>G.J13G9K#Q8V^ MLMF'T%LK)SR;C6V$=BF/,]/$UF22P#?W"6U37@-/H4/7=&(KM.?3="V'CE63 M+>/.1R!E;=1Z&NW(+E_>./.!T4Y0:3E:!"Q6;D-'?YV[,E,Y-/"ZJ6U3Y,YZ MD?'01NKX:KHW0/$\CHKFBV",9L.,O/;TFC5>+ MK;V0<^55,9$O?(U7MC]OHJ^C-YR?:`&JZSLLB8]G7(S]?]"/ZS#?`K:IN M)_/74=K+,A=X?@U@K%_CHOM]OFB[83$Q&-VDO;?"MD5^@UWQ:6LY@`TNCBT7 ML&G+S^@--F]9@8VW\5C"C,VZ?N,?Z",;*2#!MC'S?:.9<>U*\&34()U>WK2" MFW/6"V9A\-QAR$J@'D-'ERNZS^V,-!I;>\T>K&[OIRX]FL;3INVY(/F M3.^EF-WOM,'8$XSL$;"VI!G&+FPH\"F8T$>3YD_'LD&S^<"IM3=Q)PTV]DGG MJ;O9'.H_X-W::UW;7%OJ#)/24,$A=DFQB%U?EC]T(SW4KV,'HF34*KU4*%&' MJVW#WLEV<#N"&)QB;AJGMT^K9&E`MEEZ17O"]C13@U78%FRWM'ZS@]T/E$NK M,V78MU\"!%C\(\]\TCBE\+O&& M#,V.L43-=GL!CAU$'B+WA5'&FY7K[5B;YIG'CC73/VN6CTGF[7AZROO,3H%Z M7`F_=6A5+:'8N!RW'?QN_GJ+3]<+@:OO-5V/9FVV?B7!=@2YYV$/&"P]@QAD27.OG37DAN:)!V0RF?WF'.J[.5+>D<-C/47AV;'58; MJ+O6OKX$-8_3![V4'F:SIC&00VD*-9;00GWAIG9#N#?<'6J#1+!<*HL4/F6"UYD?O MJ-G;]]D%I2]9.TSE=F9[?-7.*U8.)LX=NY))Z+KM(=;6^*!H65;-JU`;1#R^;C4X6S]H3.;5]L^1!?2LW/5&>I#(%N;B-W;+`]H M0^N2:.%5=ZQQ,HI>3HW&J?'-LL8@-4EY@+C"UEE[L"F_*VN8;M3VI+FN3EQ2 M>`W5VT[ZJF&4H6B+9`57"]_4L$9_]EOS7>O>)6AO'C/."^TN0ZIS]KQPQD;R MD`.P'6R.-C?9HQV'=%5WB&'5,XL8J*Q:H_E>M#&JDU/$%4&8-CSY;&N`QF%[ M$S.+P^J\+`03EPA0]DP*E$F:4=T#M&V[;!VM_@`#E*>^UFKL]0@T.ZJ#5?9* M68/$],J-][QZV;TQ6`#^M6G1_U%SX(OZ$EO5Q!($K$6_:\4WJWR44OQ)5CZ# M&[>ES$W-K2@1XCSX[N/^P93VHMCD7KJO9]T1\-)=XJ>TESC%#KG_>O=J>=>73ZP>TIEQ' MD]L0F.NH\W_O[>*QY&HG7T>K:G4`+79`<7TSNP[5OG MM,?0L.^J=7F;YE"NR)M=[TN=J!Y2Y2 MDBG`N\Z>KW7OOQE>%_=P^>":J5X!+SOPQ3O MJ>V']T&S:7"R>>UR5BLK9MG+W$5"-CIYH3SX1FQ/*!7=P3]*M):;LYV);M9\ MMI'`?N4:XOFZIXP"AV,O5$_;$>O[=3X0?JV*F&UKEGNJMFTY^&\[&+UO_%_/ M=9/1Q6UQ\8^/SV?`-AQ>`,MDMT@XW>AGZKF!G8&&D8]PA;Q@T]S$L?N5/8YD`)>(F9OQW@[G'# ML(N\4."*AZ=^YZ9IT4O4I+ M.D6.HLYN,$C7Z7K;U=R2;-^\;.*0[0Q\H=HWG0:>'Q[37&XY]I?;$SR%,($S M/=O@C\:=4$DQ,[U[-CNKN;O>I.0K[3H5B]QV+F'#G2G#X^]R]"I;@HI&[H*S MO-G;FTU_MG#:\6S)=@ECLO>/FNSI)KS6TMT1!&6+H>D")-)2MJ18.(Q(]COW MOK^XOUQ29C#WF+V:1`K+)*V7HD$=>"%4#:O-!H("P2G<0G`1XSO9@*F8WB/J M(MO"0&P@]3L+#G>SEB_]SA4I/@,9WVN ML0G/SO"MJ)%V\(T1?7W+6N&7ZDSAMX=1'OL+5QD.9T/*N-^0\YFY=MN--4JK M"$^(I907S^W!`><&^1)V\6*B'SGHW4AE8VLD_BD?!N8+334?WHHW=; MO:G/S-Q<,H!8H5U(569;DBF>9M[]ZD$QVVTO3$T;!HFLZ.>S.+"[4NHNK-`" M3CO:%>*/=JLZI!U./GNW@V$/8+]R_8[OJ[`$G3]BCU M(,M]_^^(]:0OIH4=]VD3GRO*O[XRZ>*Z89@`;TRN_:BBL&8-*]V@!+4?/#S^*_>1*90;P;`OB)CJ/ ML2';E@5(,:686KW@+(?NLU'BOTL=,(,10%Y7OD2+K[7`KH*T*QK\6GF`II!/ M1"NBL&^G:D8P9>VF[">453.)1@&T@`)7("1EEMYBO@&,^E:8KBYZ?ZWIQ2PT MR5<#4G(NN9:WG+&%3782MY?1!.QFM"$<5MQS(8M_^#+!/1>U=R@\S(>N;(I' MPMW;'FE"I@YX@QV/5KN2K:/+NN\7=\287BFV/G!OA0_!#P33H^,U1MR;CHVG MAO^;_.T7-`?72:Z0=N>^N&E].%P/>2`[#2I'OFS_;OG`X==).9C\X5>1#M'T MEK/,F')".5K\P+U0'IO:/%7DCT=QH+ZRPMVB=7*3AKW@O^D=[E;S8KH%08C' ML2/321-/:"^Y`]VQ6M%GG9G5+8#^&(7(#FF$+9&"@2JW&EK_B MRK?7P$MU+>CW[QAC-4Y+GF7#AM*"*S]4%!L&Y`U/:X/CJ>KH>#)R.B[2?E5[ M@GL"8^2U]SEYH^GV]HX#H+NEX7'E8#SY?OL$9A+KO=/5\L;!-:U/;9VU+@1# M-6F!7W']Y,\TY^TO+_ME*\G6]>]DMK2Z;&AWW@DL@V!\-'."Z6G/FLE?#N%6PFO%)>B#N?GR4?[9O#6# MCO'=@-=0:G.Q8PT8_UCGS/FED5VQ=;B2)9HD9_LMR6/.(<)1^=0/LS`EYVM(I#/+8M6683KQ=KXEYU]? M%6'E-$HQ^9?<,XN3R:3MX*CF#O M3I'<^=EB)9^\)OPGCQR#'!+GH?!!><.P4!ZFS#`CRD$(BO*<=]C\1MXOWY,+ M@U&)`E9M^8J<9&PI%W#7*+VREU&T.%*[86/9/PU*AAO-3W!K0L>=R;11GE^I.%L.?+<#6A1O&XW MT/O%<4-P.8+;1GXYCXU73TW4>&C`)_^QSNU%WD9*&`GF2]&#='NQMZBF[IES M$4?9PVZ+(;XCM^@PNF!2;!V>7I@' M*QGH>.1[J`\S]+L/?4Y3S'%^@^2GZ\#\.3[VUICO^LS>3@#[<[5K5;SV_N%^ M#&W5+6WL8XU/[MW!)6D:H!GE?^I#<,R<6AW[9E(&OCFV'>D)M\0653NSM*(? MH,G6D715L#92WP!R@5L/KL-\-/,?\>/;-,T/SOUITL'B5V1]I=Q<5+XM)WP# MJ@W?Z^IKIIS7I3K\#FH7OT.#67.D]Z85#KD9AD3.:NO;L,M?8MXU9XZ%W'D6 MRG_F;&.[>4OYF:5NQW#J?C.TFBM7-]:^<!ZWW9TCS_G@+NBPM[=8@.T&E)X3PI';;/*1:PD:3MXG?W%S MSR'AYG(\.5_0C]V]YI-#G+&*[&))N?]VCG/(J>@H=92Q[R)_O MT!G&JUT@=ZI\?;XJ/Q*7H*'5.W0O\H&642Y!+_V!P1&`9L?6A1H8Z]Q"]W)S MG=,.CEQBN3C=(4I:599SSC?H+ MR&W9A=H#*;:6??H[-F"^Q)O@.,,7)FB2)A[TBX9N&^>ID>[HY:A1_]F^I'OV M>L7J#W4D>;)\`KB7G45K!H*C46R;H)6/L?Z4;&`\7-X4P5-RH57MG2(FDPW6+HN"6S[$T='VE_ MS,.LWL23]LB3C/25>=V[!!U)?YH+KGFC`N7.*$%Y9L@TIY0# MKLWK+6'>Z"Y=O4Y.)'X#E('IM$CR`[Q0:TZ[A55:I&O=O?(.J/QU5Q'=T*\' M"BW@1^AJ.JQ2;ZX6X&FK,[GIGVL(N>"\)NQ0+Y\9NW%.;Z1-*SWWJ'C M_QS`XFX7^<-S1C[KPZMSQ1_K<6W6XF?RW+@=/D;H"3^@'[8'P]#P5GST<"V_-LL_><;5@!I:G[ MU="!T//V.O MH_'G:E>!.:)>C/]9RMC#Z,C(9?C&6TTA"QVR_TK]ZJG MI/?HL?-B.1&`)?K:M4TSH.6OIUK]N3)4`EL^YG:'.;63MW+ZN:-],6YE]$P2 MNMN^(FD^*&)<([$/QRJ&Q9V&_/(P^G"1QKZ.WA60Q2OLYF)CH#[UAHY&=H=/ ME.GL:G4S:ZJ]B*YK9[6C_#R7@.VSNJU]9]Y)7TW;7"&1*'1>^X\6@!Y81R^3 M&]NL_,P;:@1=U1Y0[P?&M7&2>NM<>T#]T7Y`;&O.!:&;G]^(.>U/:(W9O:R# ME3/KYLO->MO/D_W\)`-H&UF%DNCJXFC]0KSR!/B5-S&B*5&1:)#=&`C[)K87 M&'?KCU"T."6\]_P=W&\*0A>>_W!CNVN][HP+I&V[-?_I^M3=NA:4)HDT_`@7 MUPFTQW5D87*=;7EU=`@[UPN2`_",^73]CUY=]Y@+@[D3[G'MNEX<8_CV/IEC M0F>X*G.Z]SR9O.XT9Y:>US'0O/0-M/O;UEYTEU87OZ7FO/2J^47Y1ZG29$!` M8>Z(_'7":P'ROX[-&+(2K!=\PLNK^X'=^HV&J*:/0A'DF6O&@HNRINP*70,' M`1

RKO"UI;!R_0R\7V`F]THKGX\Y[F M)G=_D+XEP`P!T%O_O49B)^"2=!*Z)TR3PDP7/F% MK".,%G>LKZ=O$>LF17MN0=SC_H+]8)K2"A`,;O!-3M$#6443G[D2!3!YK[RC M^3[L7(!SPY66R(]I11E;K`\NPLT()+_L=%W@7[$(V M'^6/H4ROWPU`#XG=5`QT$0"#OVF-Q&HC)$%!+`O4:?.%$3YF:7O0P?>`UP4" M^>#N^E![;:>O1\@7K9K>!S:5LDDN;*&D".#TL?E0.T M`)@`946DX/.=;%EK/`N\_!3P1`C#JH/OSGLB)7N-T+]?(T^0^7TL="_P M";"35=(-'ZU1^IC[(PP@+SD"DP$W0.]7!)`=Y56X^K8`,P`=?(-OSOAOMU%V MX4\`O\(C@-7@STC7W:73^G"-L.&C`51`%2D3D`.@X*V&44U@[2E6$>_U>\); M.AM\A'?YPK[/Z2>$K_&-^>0+`=2K8T90Q$H%$+U'^A)]B$8OY$82TG?MHPNP MXFWQ3(#ZY!7539I"?&-N^JZ94X#-^U2Q_3B3!O&E!]>#Q=$N?'S0.>B%SPOR MV:*WHV=@H\E6X%A!?1$B!52#84!'(@$&!_\I<7QK<$=X0B2?3AEU/`B:\V\R:_AXW\75NNOQ?-] MA>.#FKY7H$RTKVG4GCNF05DN#('Y(P0TTDB*-PDLWTFH?%&(J3;\AANHY?.Q MXYD`+X`C0!/@5,POT#Y2&WRZ=CYYGZ(1(NKE"G%Z7AYWSH>24Y57L/S M@\^"X'A$8ZYQ]/<:M,8'`]'HYP:+([(6*?FLW3=#^FB-L4WY\#+REYAK;,.W M@(/R0<&+(P6T;'G990-L_39\C_A(_"3^,OK&5,0"P?>1W@VP^H'T._KE(^)F M!(\`GSXS@HR@Z'A@I?SI&R]\,X/PP9X@#1!X)]IN^(@`Z8&<*/(R`2@'"%BR M`3_",FLD@"V>[XYC!47*9:&:IO,99]*$^6EJK,BWXBNG1/B,_-VT"H^8S#FO MKB6]&,?8`B&40BT/G1$.B7>SJ.#6)+VQ]&F59'X/&Y,`\W@0Y$C^+'^8][@Z M`12``,>P/*X`$%OK4[W7%;N`K/?Y8&QW"V\88-L"&%^$8,%&K+6OIHC?O4>C M;;,39D<>(XQO"Z!J-&4_YM&=&'DC_#+>"C_T>_!1+<6IEN0"H!5`K,@&!%M2 M`43SG$72?%(4:WF:G\=W^D3R1`"G'UJ^L8L+?,WW"/Z3?+[4^ZTO(:B`-Q8< M2'/SOD:I.)*R-[\=[*D"YXGQ8<"%_.E2]<!U"13\+K M2=<`:H#^`NYVJC@%<`$<`93P)CY7XU]U6>L"$,P/^?A\)SYSJC8\"9^2KY2& M^<#P<0'=[XJU";#UH_65+:-\:8`J/#-8SX@$W'1G*LGP27D.(D">?:PU9,-K MX$U\`_EY?,18>_KSHPK^+C,$*/@L*Y\O&`^L9,16"YU\U456;*?//?^;!D+* M;B\"%8&+@.1VP_<$8`VL^>:.:/AJUX01$!$8&***>[<`.8!58X*O!^BXA=!+ MZ+'$)U%:H@N@1-^B]]>6`5+TB4[I+XV^8)@B_L["%J^!Z$YQ/$Z^@0B7-Q(D M#IN._7DX7R#R&V@KQ$W[:[F0N-"@\MYAPICJ&VMN%ON[&8)UGPNQQK<$.,#W M%^;QGOEN.)TP6[!X3WC25^>648$?J1W>7)N=K/'MX;7T>TA$O=X0#1^^6$W* M!-P`O'=V9@<2#D@$L'<.`82O>#_6(/'4#0BPN`&T`-(0-H",8,2@4#+U@\'; M!`"&9'IZ^2_Q;OZJU*RBW2$"5`#RP'BWG$!N<"I`%>0":(6J`DEAK=`V@"M4 '"`8#3P#Y!R_Q ` end From owner-mpi-ptop@CS.UTK.EDU Tue Mar 16 04:55:14 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA14277; Tue, 16 Mar 93 04:55:14 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA15025; Tue, 16 Mar 93 04:54:46 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 16 Mar 1993 04:54:45 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA15006; Tue, 16 Mar 93 04:54:01 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA13913 (5.65c/IDA-1.4.4); Tue, 16 Mar 1993 10:52:14 +0100 Received: by f1neuman.gmd.de id AA15815; Tue, 16 Mar 1993 10:53:37 GMT Date: Tue, 16 Mar 1993 10:53:37 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303161053.AA15815@f1neuman.gmd.de> To: mpi-collcomm@cs.utk.edu, mpi-ptop@cs.utk.edu Subject: Al's COLLCOMM proposal Cc: gmap10@f1neuman.gmd.de I would like to comment on Al's Collective Communications draft which he sent out a few days ago. First of all, I agree with Al in most points, especially that we should not attempt to include everything into MPI-1. Given the limited time available, it seems to me a good idea to leave the level-1 routines and all dynamic stuff for MPI-2. In section 2 Al says that "each group has a topology associated with it". As far as I know this is still an open issue. Do we agree that there is always a default topology (like a ring, to make the shift operation meaningful in all cases, or fully connected)? Otherwise a topology is an optional attribute which a group may or may not have. Another question then is how this assignment is done. At the last Dallas meeting we discussed two basic options: 1. A topology is defined after the creation of the group. The topology thus is an attribute which is assigned to the group, and which can be overwritten without creating a new group. 2. A topology definition always creates a new group (or even two of them, the second one being the collection of processes which are not used by the topology). The advantage of this choice is that the rank of a process within a group never changes. When a group with topology is created, the processes can be arranged in the optimal way from the very beginning. Personally, I prefer the second option. One additional advantage is the following: assume that the original group has 10 processes, and then a (3,3) grid topology is defined. Does a global operation on this group include all 10 processes? If the (3,3) grid formation creates a new subgroup of 9 processes, the answer is clear. The draft is not consistent in the relationship of groups and topologies. In the Introduction it says "Giving or forming groups with topological features is presented in section 4" which suggests option 2. above. On the other hand, under Group Functions it states that "Existing groups including the ALL group can switch their associated topology", which sounds like option 1. Do we all agree on choosing option 2? On page 2 the draft states that "The collective communication routines are implemented in terms of the topology associated with a given group. Although the function would be the same, a broadcast in a group with a ring topology could be implemented differently from a broadcast in a group with hypercube topology". I see a confusion of application and machine topologies here. The optimal implementation of a broadcast is guided by the machine topology, which could be a hypercube. Even if the logical group topology is a mesh, the global operation would follow the hypercube structure. However, this implementation detail is completely invisible to the user and should not be part of the standard. The only thing the user sees is the mesh topology and the result of the broadcast. The proposed MPI_SHIFT function could be made much more useful by adding another argument. Here's my proposal: Info = MPI_SHIFT(inbuf,outbuf,nitems,type,tag,group,direction,steps) The additional integer argument "direction" selects the coordinate direction in the group topology, and "steps" is the number of steps in that direction. In the case of cartesian structures the meaning is immediately clear. One could apply the function also in the case of a general graph. In this case "direction" would specify the neighbor number. "steps" could either be ignored, or we could define a transitive scheme of the kind "neighbor of neighbor of neighbor ...", with the indirection depth being specified by "steps". A hot topic for further discussions will be the "group names" proposed by Al. I see his point, but I don't see how the user-supplied group name solves the problem which arises if a new process wants to join a group. Even if the user tells MPI the global name of the group, global knowledge of all groups in the system is required to find the other group members to talk to. I agree to most points of Rik Littlefields comments. The only thing which does not convince me yet is the explicite caching mechanism. If the information caching is handled consistently between the group management and collective communication routines (in order to avoid usage of stale group information), I still hope that it could be done without showing up at the user interface. As a last point, I would like to forward the following note by Tom Henderson: > Rolf, > > Would it be a good idea to merge the mpi-collcomm and mpi-ptop > mailing lists? It seems like lots of stuff on that mailing list > now is closely related to process topology. I suppose the > mpi-collcomm stuff could just be forwarded to the mpi-ptop list. > > Tom I agree. What do others think? Rolf From owner-mpi-ptop@CS.UTK.EDU Tue Mar 16 11:04:50 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA20347; Tue, 16 Mar 93 11:04:50 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA04802; Tue, 16 Mar 93 11:01:02 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 16 Mar 1993 11:01:01 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA04794; Tue, 16 Mar 93 11:00:59 -0500 Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA09360; Tue, 16 Mar 93 16:00:54 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA16673; Tue, 16 Mar 93 08:59:39 MST Date: Tue, 16 Mar 93 08:59:39 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9303161559.AA16673@macaw.fsl.noaa.gov> To: mpi-ptop@cs.utk.edu Subject: Re: Al's COLLCOMM proposal Rolf writes, > Another question then is how this assignment is done. At the last > Dallas meeting we discussed two basic options: > 1. A topology is defined after the creation of the group. The topology > thus is an attribute which is assigned to the group, and which can > be overwritten without creating a new group. > 2. A topology definition always creates a new group (or even two of > them, the second one being the collection of processes which are not > used by the topology). The advantage of this choice is that the > rank of a process within a group never changes. When a group with > topology is created, the processes can be arranged in the optimal > way from the very beginning. > > Personally, I prefer the second option. One additional advantage is the > following: assume that the original group has 10 processes, and then > a (3,3) grid topology is defined. Does a global operation on this group > include all 10 processes? If the (3,3) grid formation creates a new > subgroup of 9 processes, the answer is clear. I also favor option 2. I think the draft should be modified as Rolf suggests (elsewhere in his message) to be consistent with option 2. > On page 2 the draft states that "The collective communication routines > are implemented in terms of the topology associated with a given group. > Although the function would be the same, a broadcast in a group with > a ring topology could be implemented differently from a broadcast in > a group with hypercube topology". I see a confusion of application > and machine topologies here. The optimal implementation of a broadcast > is guided by the machine topology, which could be a hypercube. Even > if the logical group topology is a mesh, the global operation would > follow the hypercube structure. However, this implementation detail > is completely invisible to the user and should not be part of the > standard. The only thing the user sees is the mesh topology and the > result of the broadcast. Agree. The concepts of machine (physical) topology and logical topology should be clearly separated. > The proposed MPI_SHIFT function could be made much more useful by > adding another argument. Here's my proposal: > > Info = MPI_SHIFT(inbuf,outbuf,nitems,type,tag,group,direction,steps) > > The additional integer argument "direction" selects the coordinate > direction in the group topology, and "steps" is the number of steps > in that direction. In the case of cartesian structures the meaning is > immediately clear. One could apply the function also in the case of a > general graph. In this case "direction" would specify the neighbor > number. "steps" could either be ignored, or we could define a > transitive scheme of the kind "neighbor of neighbor of neighbor ...", > with the indirection depth being specified by "steps". I would not have a problem restricting MPI_SHIFT() to Cartesian topologies (ring, grid, torus, etc.). If a user has defined a general graph, let the user define her own "shift". Tom From owner-mpi-ptop@CS.UTK.EDU Tue Mar 16 13:43:10 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA25615; Tue, 16 Mar 93 13:43:10 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA12835; Tue, 16 Mar 93 13:42:15 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 16 Mar 1993 13:42:13 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA12826; Tue, 16 Mar 93 13:42:10 -0500 Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Tue, 16 Mar 93 10:35 PST Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA01248; Tue, 16 Mar 93 10:33:37 PST Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA07439; Tue, 16 Mar 93 10:33:34 PST Date: Tue, 16 Mar 93 10:33:34 PST From: rj_littlefield@pnlg.pnl.gov Subject: Re: Al's COLLCOMM proposal To: Rolf.Hempel@gmd.de, mpi-collcomm@cs.utk.edu, mpi-ptop@cs.utk.edu Cc: gmap10@f1neuman.gmd.de, rj_littlefield@pnlg.pnl.gov Message-Id: <9303161833.AA07439@sodium.pnl.gov> X-Envelope-To: mpi-ptop@cs.utk.edu, mpi-collcomm@cs.utk.edu Rolf Hempel writes: > I agree to most points of Rik > Littlefields comments. The only thing which does not convince me yet > is the explicite caching mechanism. If the information caching is > handled consistently between the group management and collective > communication routines (in order to avoid usage of stale group > information), I still hope that it could be done without showing up > at the user interface. Just a point of clarification. I do NOT propose that cacheing be visible at the interface between the application program and a collective communication routine that it calls. The example I provided was perhaps not explicit enough on this point. It said: efficient_global_op (grphandle, ...) struct group_descriptor_type *grphandle; I intended "..." to mean only the arguments that would be provided to any collective communication routine, e.g., data buffer, number of elements, and so on. Nothing about cacheing there. I think Rolf would agree that the standard collective communication routines need an internal facility like this to coordinate with the standard group management routines, if they are to achieve high efficiency. My proposal is essentially to standardize and export that facility so as to permit new collective communication routines to run as efficiently as the built-ins. In this vein, you may wish to think of standardized cacheing as a feature to increase MPI's extensibility. --Rik ---------------------------------------------------------------------- rj_littlefield@pnl.gov (alias 'd39135') Rik Littlefield Tel: 509-375-3927 Pacific Northwest Lab, MS K1-87 Fax: 509-375-6631 P.O.Box 999, Richland, WA 99352 From owner-mpi-ptop@CS.UTK.EDU Wed Mar 17 15:33:52 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA24684; Wed, 17 Mar 93 15:33:52 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA08846; Wed, 17 Mar 93 15:33:15 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 17 Mar 1993 15:33:14 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from watson.ibm.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA08837; Wed, 17 Mar 93 15:33:12 -0500 Message-Id: <9303172033.AA08837@CS.UTK.EDU> Received: from YKTVMV by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 5657; Wed, 17 Mar 93 15:33:12 EST Date: Wed, 17 Mar 93 15:33:12 EST From: "Marc Snir" To: MPI-PTOP@CS.UTK.EDU Some comments on how to support topologies -- on top on current collective communications The current proposal for collective communications and assumes that a group does not carry topological information: It is just an ordered set of processes. Assume that each graph has a canonical numbering, i.e., that a graph consists of an ORDERED set of nodes + a set of (directed) edges. I.e., the nodes of a general graph are ordered according to the order in which they are listed in an adjacency list, the nodes of a mesh are ordered in row major order, etc. Then a topology is an MPI group + a set of directed edges + some additional structure, for regular graphs, like meshes. The basic question to address is: should the MPI communication library be aware of topological structures? There are two choices: (i) a topology is a basic MPI object, that can be used in various communication operations. (ii) MPI communication functions have no understanding of topologies; thus, a topology is represented by two objects: the first one is a group that MPI is cognizant of, and the second one is a separate data structure that captures the topological information. Let me illustrate these two approaches by examples (I apologize for not sticking to the official syntax) 1. Mapping a topology so as to ease communication along edges (i.e., creating a new group with processes numbered so that the embedding of graph edges on the communication hardware is efficient) (i) MPI_CREATE_GRID(oldtopology, newtopology, topology_parameters). Creates a new topology, with a new process numbering. (ii) GRID_MAP(oldgroup, topology_parameters, newrank). A call that computes the best permutation of the group processes for embedding the grid. MPI_CREATE_GROUP(oldgroup, newgroup,0,newrank) Create new group. The situation where not all processes belong to the new group, can be handled, say, by returning a negative "newrank" for the outsiders, and then executing MPI_CREATE(oldgroup, newgroup, (newrank <0), newrank). (By the way, I doubt such function will have much use) 2. Sticking a new topology on top of an existing one (i) I don't know the solution (ii) Just create the new topology object (e.g., the adjacency list) 3. Shift on a row (or a hyperplane) of a grid (i) SHIFT_GRID(topology, inbuf, outbuf, dimension, shift) (ii) MPI_CREATE_GROUP(oldgroup, newgroup, grid_index(grid_params, myid,dimension),0) A new group needs to be created (once). I assume an auxiliary function that, given a description of the grid, a rank and a dimension, returns the index of the node with that rank in that dimension. MPI_CSHIFT(newgroup, inbuf, outbuf, shift) (or MPI_EOSHIFT, for an open topology). And so on. Consider a k-dimensional grid. Assume one creates a separate group for each one-dimensional subgrid. I.e., each node belongs to k subgroups, one for each dimension. Further assume that the rank of each node in a subgroup is equal to its index in the corresponding grid dimension (this holds true if the relative global order of the nodes is preserved when the subgroups are created). Then (almost) all the topological structure of the grid is captured by these subgroups: One can find the index of a node in the i-th dimension by querying its rank in the i-th subgroup. One can shift in the i-th dimension by shifting in the i-th subgroup. One can create a new subgrid that contains all nodes in a hyperplane, by using the index in the i-th dimension to split the group; the subgroups that are contained in this hyperplane are not affected. And so on. (The only information that is not captured is whether the grid is cyclic or not in each dimension. I.e., whether a cyclic shift or a end-off shift should be used in each dimension.) Thus, once the subgroups are built, it would seem we don't need any further topological information. The data structure that represents the grid is needed only to build these subgroups. This seems to be one more reason not to integrate topological information into the MPI communication functions. Temporary conclusion: topology cognizant MPI communication functions will save some writing, but not much. For the sake of keeping the communication layer simple, I vote for keeping topologies out of the MPI communication layer. This does not mean that topologies disappear. It means that topology objects are only used in order to build groups, and that only one MPI function really needs to understand topologies, for the purpose of embedding them on the communication hardware. Further topology functions could be provided, if required, as syntactic sugar on top of existing group functions. From owner-mpi-ptop@CS.UTK.EDU Thu Mar 18 09:42:52 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA11664; Thu, 18 Mar 93 09:42:52 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA07125; Thu, 18 Mar 93 09:40:15 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 18 Mar 1993 09:40:10 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA07073; Thu, 18 Mar 93 09:40:03 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA05710 (5.65c/IDA-1.4.4 for ); Thu, 18 Mar 1993 15:38:30 +0100 Received: by f1neuman.gmd.de id AA16221; Thu, 18 Mar 1993 15:39:55 GMT Date: Thu, 18 Mar 1993 15:39:55 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303181539.AA16221@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Marc's proposal Cc: gmap10@f1neuman.gmd.de Thanks to Marc for explaining in some detail his view of process topologies in MPI. I would like to add a few comments: 1. Marc summarizes his proposal with: > This seems to be one more reason not to integrate topological > information into the MPI communication functions. I agree that the topology functions should not change at all the pt-pt communication functions. The current draft already fulfills this requirement. Also the definitions of collective communications are not affected by the topologies, with the exception of the shift function where the topological information can add some useful functionality. The only point where the topology functions interact with the rest of MPI is the management of process groups. I do not see this as a disadvantage, but using topology information there helps in bringing stucture into groups. It seems that Marc agrees to this role of topology functions when he concludes: > It means that topology objects are only used in order to build > groups, ... 2. The question then is whether it is worthwhile to integrate process topologies with group management. I argue that the use of topologies like rings, grids, cubes, ... is so widespread that creating groups with these structures should be as easy and elegant as possible. For the same purpose there should be a (small) set of inquiry functions to support the addressing of processes in topology-based programs. In this sense we would not only save the MPI user "some writing", but we would also make MPI programming more natural to those who think in terms of their process topology structure rather than in terms of a set of processes, ranked from 0 to n-1. 3. The representation of a grid by the k subgroups works well as long as one only looks at neighboring processes in the primary directions. The handling of diagonal neighbors or arbritrary processes in the grid is less straight-forward. In my opinion it is better to provide a look-up function which returns the process id (or the group rank of the grid group) for any tuple (i,j,k) of grid coordinates. 4. The "Sticking a new topology on top of an existing one" could be done by adding an argument to a definition function like MPI_CART which specifies whether the processes are allowed to be reordered or not (with the purpose of optimal mapping onto the hardware). In this way, the "primary" topology could be defined with mapping MPI_CART(old_gid, cart_gid, ..., MPI_REORDER), and then another topology could be defined like MPI_GRAPH(cart_gid, graph_gid, ..., MPI_NOREORDER). In this way the graph nodes 0, 1, ..., n-1 could be associated with ranks 0, 1, ..., n-1 in the cartesian group. Are there any comments from other PTOP members? Rolf Hempel From owner-mpi-ptop@CS.UTK.EDU Thu Mar 18 13:00:35 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA15916; Thu, 18 Mar 93 13:00:35 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA17376; Thu, 18 Mar 93 13:00:03 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 18 Mar 1993 13:00:02 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA17359; Thu, 18 Mar 93 12:59:58 -0500 Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA14818; Thu, 18 Mar 93 17:59:52 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA20665; Thu, 18 Mar 93 10:58:36 MST Date: Thu, 18 Mar 93 10:58:36 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9303181758.AA20665@macaw.fsl.noaa.gov> To: Rolf.Hempel@gmd.de Subject: Re: Marc's proposal Cc: mpi-ptop@cs.utk.edu Rolf, > 2. The question then is whether it is worthwhile to integrate process > topologies with group management. I argue that the use of topologies > like rings, grids, cubes, ... is so widespread that creating groups > with these structures should be as easy and elegant as possible. > For the same purpose there should be a (small) set of inquiry > functions to support the addressing of processes in topology-based > programs. In this sense we would not only save the MPI user > "some writing", but we would also make MPI programming more natural > to those who think in terms of their process topology structure > rather than in terms of a set of processes, ranked from 0 to n-1. I think that this is analogous to the argument for supporting multi-dimensional arrays in C, Fortran, etc. We could do everything we want with one-dimensional storage, but few people think this is a good idea! > 3. The representation of a grid by the k subgroups works well as long > as one only looks at neighboring processes in the primary directions. > The handling of diagonal neighbors or arbritrary processes in the > grid is less straight-forward. In my opinion it is better to > provide a look-up function which returns the process id (or the > group rank of the grid group) for any tuple (i,j,k) of grid > coordinates. I agree. > 4. The "Sticking a new topology on top of an existing one" could be > done by adding an argument to a definition function like MPI_CART > which specifies whether the processes are allowed to be reordered > or not (with the purpose of optimal mapping onto the hardware). > In this way, the "primary" topology could be defined with mapping > MPI_CART(old_gid, cart_gid, ..., MPI_REORDER), > and then another topology could be defined like > MPI_GRAPH(cart_gid, graph_gid, ..., MPI_NOREORDER). > In this way the graph nodes 0, 1, ..., n-1 could be associated with > ranks 0, 1, ..., n-1 in the cartesian group. I'm still not comfortable with the idea that MPI should attempt to deal with relationships between multiple topologies. It seems to me that the only way to do a good job would be to specify all topologies used by a group at group creation. I would prefer to see a new group created with the same members each time a new topology is required. > Rolf Hempel Tom Henderson NOAA Forecast Systems Laboratory hender@fsl.noaa.gov From owner-mpi-ptop@CS.UTK.EDU Tue Mar 23 08:12:05 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA13729; Tue, 23 Mar 93 08:12:05 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA08005; Tue, 23 Mar 93 08:11:24 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 23 Mar 1993 08:11:21 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA07997; Tue, 23 Mar 93 08:11:16 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA24548 (5.65c/IDA-1.4.4 for ); Tue, 23 Mar 1993 14:09:35 +0100 Received: by f1neuman.gmd.de id AA14713; Tue, 23 Mar 1993 14:11:03 GMT Date: Tue, 23 Mar 1993 14:11:03 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303231411.AA14713@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Next meeting Cc: gmap10@f1neuman.gmd.de Dear PTOP working group member, we have to prepare our discussions at the next Dallas meeting. Therefore, I just present you a list of points which I think we should address. All comments and additions are welcome. 1. The most important question seems to be how we want to support process topologies. The basic choice is between the positions which were presented by Marc Snir's and myself: a): MPI knows only about process groups which are linearly ordered collections of processes without any further structure. Process topologies are handled by libraries which are not part of MPI. b): Topological information is an integral part of process groups. There should be process definition functions for the most common topologies (cartesian and graph structures) which create process groups. Topologies can be used to define collective communication functions like shift. In the following I assume that we follow path b). (Otherwise we would not have much to do, anyway.) 2. It seems reasonable to me that we change the current draft such that a topology definition creates a new group. This removes the problem that the rank within the group may change. My proposal for the cartesian definition function is: active = MPI_CART (gid, parent_gid, ndim, dims, period). with: parent_gid: group id of existing group (input) gid: group id of newly created group (output) active: =.true., if calling process is contained in grid =.false. otherwise Depending on the return value, gid is the group id of the grid group or the remainder group. Thus, in case there are more processes in the parent group than are needed by the topology, two groups are created. If there is a perfect match, only one group is created (in this case there is no process which returns with active=.false. ===> there is no remainder gid.). The corresponding graph definition function then looks like: active = MPI_GRAPH (gid, parent_gid, nodes, index, nglist) The number of processes in the topology is no longer returned from these functions. This was rather redundant in the first place, and this information can easily be obtained from the inquiry function for the number of processes in a group. 3. The above definition functions could be extended by two arguments: 1. How should the mapping be done? One out of MPI_REORDER | MPI_NOREORDER | MPI_RANDOM MPI_REORDER: MPI is allowed to change the ranking of processes as compared to the parent group. MPI_NOREORDER: the rank of a process is the same in parent and new group. MPI_RANDOM: the rank in the new group is set randomly. (Is the third option necessary?) This argument allows an ordered overlay of two topologies, as in the following example: active = MPI_CART (cart_gid, parent_gid, ndim, dims, period, MPI_REORDER) active = MPI_GRAPH (graph_gid, cart_gid, nodes, index, nglist, MPI_NOREORDER) This way the graph nodes 0,1, ..., n-1 are associated with the processes with rank 0,1, ..., n-1 in the cartesian group. 2. For cartesian topologies: definition of ranking in the group: MPI_ROWM | MPI_COLM for row-major / column-major ordering. 4. Does every group have a default topology, and what could it be? My proposal is that we choose a ring topology as default, i.e., the rank of a process 0, ..., n-1 defines its position in the ring. No attempt is made to efficiently map the processes to the hardware. As an alternative, we could argue that there is no reason for closing the linear structure, and take a linear structure instead. I think that a default topology makes the interface more consistent. 5. Can processes in different topologies talk to each other? This question seems closely related to whether processes in different groups can communicate. I think that we can leave this decision to the more general debate on groups. The topology inquiry functions can be applied for groups of which the calling process is not a member, if this is decided to be necessary for other group inquiry functions. 6. Similarly, I think that we should not touch the question of what a process id is. The topology functions can adopt whatever scheme is decided in pt-to-pt. Any comments/additions? Rolf Hempel From owner-mpi-ptop@CS.UTK.EDU Tue Mar 23 11:14:56 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA20707; Tue, 23 Mar 93 11:14:56 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA16737; Tue, 23 Mar 93 11:13:50 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 23 Mar 1993 11:13:49 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA16729; Tue, 23 Mar 93 11:13:47 -0500 Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA23711; Tue, 23 Mar 93 16:13:41 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA28595; Tue, 23 Mar 93 09:12:24 MST Date: Tue, 23 Mar 93 09:12:24 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9303231612.AA28595@macaw.fsl.noaa.gov> To: mpi-ptop@cs.utk.edu Subject: Re: Next meeting Rolf writes, > 2. It seems reasonable to me that we change the current draft such that > a topology definition creates a new group. This removes the problem > that the rank within the group may change. My proposal for the > cartesian definition function is: > > active = MPI_CART (gid, parent_gid, ndim, dims, period). > > with: > parent_gid: group id of existing group (input) > gid: group id of newly created group (output) > active: =.true., if calling process is contained in grid > =.false. otherwise > > Depending on the return value, gid is the group id of the grid > group or the remainder group. Thus, in case there are more processes > in the parent group than are needed by the topology, two groups > are created. If there is a perfect match, only one group is > created (in this case there is no process which returns > with active=.false. ===> there is no remainder gid.). > > The corresponding graph definition function then looks like: > > active = MPI_GRAPH (gid, parent_gid, nodes, index, nglist) > > The number of processes in the topology is no longer returned from > these functions. This was rather redundant in the first place, and > this information can easily be obtained from the inquiry function > for the number of processes in a group. I think this is a good idea. > 3. The above definition functions could be extended by two arguments: > > 1. How should the mapping be done? One out of > > MPI_REORDER | MPI_NOREORDER | MPI_RANDOM > > MPI_REORDER: MPI is allowed to change the ranking of processes > as compared to the parent group. > MPI_NOREORDER: the rank of a process is the same in parent and > new group. > MPI_RANDOM: the rank in the new group is set randomly. > (Is the third option necessary?) > > This argument allows an ordered overlay of two topologies, as > in the following example: > > active = MPI_CART (cart_gid, parent_gid, ndim, dims, period, > MPI_REORDER) > active = MPI_GRAPH (graph_gid, cart_gid, nodes, index, nglist, > MPI_NOREORDER) > > This way the graph nodes 0,1, ..., n-1 are associated with the > processes with rank 0,1, ..., n-1 in the cartesian group. I currently favor permitting MPI_REORDER only. It seems to me that the MPI_NOREORDER case could be layered on top of the rest of MPI if we decide we really want it. The current MPI point-to-point draft allows no communication between processes in group graph_gid and group cart_gid without reference to group cart_gid (or even parent_gid). In other words, I have to know my rank in group cart_gid to communicate anyway so why do I care if the rank in group graph_gid is the same? If I've hard-coded "rank" into my program, I can just look up my rank in group cart_gid. I think that including both MPI_REORDER and MPI_NOREORDER may cause some confusion. The purpose of MPI_REORDER is to provide better communication performance on some machines. The purpose of MPI_NOREORDER seems to be to provide a look-up table for convenience (performance would likely be worse on many machines). I might be persuaded otherwise if I saw a more detailed example of some pseudo-code that uses the topology overlay feature with the current MPI point-to-point draft (no inter-group communication). Could someone do that? > 2. For cartesian topologies: definition of ranking in the group: > > MPI_ROWM | MPI_COLM > > for row-major / column-major ordering. This may be the only sane way to handle this. I can't come up with anything better at the moment. :-) > 4. Does every group have a default topology, and what could it be? > My proposal is that we choose a ring topology as default, i.e., > the rank of a process 0, ..., n-1 defines its position in the ring. > No attempt is made to efficiently map the processes to the hardware. > As an alternative, we could argue that there is no reason for > closing the linear structure, and take a linear structure instead. > I think that a default topology makes the interface more consistent. I think a default topology is a good idea for all groups (including the default "ALL" group). Ring seems slightly better than linear since the collective communication proposal currently contains circular shift operations. > 5. Can processes in different topologies talk to each other? This > question seems closely related to whether processes in different > groups can communicate. I think that we can leave this decision > to the more general debate on groups. The topology inquiry functions > can be applied for groups of which the calling process is not a > member, if this is decided to be necessary for other group inquiry > functions. Agree. The context subcommittee and the point-to-point subcommittee can hash this out. > 6. Similarly, I think that we should not touch the question of what > a process id is. The topology functions can adopt whatever scheme > is decided in pt-to-pt. Agree. > Rolf Hempel > Tom Henderson From owner-mpi-ptop@CS.UTK.EDU Wed Mar 24 04:39:54 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA09656; Wed, 24 Mar 93 04:39:54 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01122; Wed, 24 Mar 93 04:39:17 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 24 Mar 1993 04:39:12 EST Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01114; Wed, 24 Mar 93 04:39:07 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA12055 (5.65c/IDA-1.4.4 for ); Wed, 24 Mar 1993 10:37:31 +0100 Received: by f1neuman.gmd.de id AA15364; Wed, 24 Mar 1993 10:38:58 GMT Date: Wed, 24 Mar 1993 10:38:58 GMT From: Rolf.Hempel@gmd.de Message-Id: <9303241038.AA15364@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Next Meeting Cc: gmap10@f1neuman.gmd.de Tom Henderson writes: > I currently favor permitting MPI_REORDER only. It seems to me that > the MPI_NOREORDER case could be layered on top of the rest of MPI if > we decide we really want it. The current MPI point-to-point draft > allows no communication between processes in group graph_gid and > group cart_gid without reference to group cart_gid (or even > parent_gid). In other words, I have to know my rank in group > cart_gid to communicate anyway so why do I care if the rank in group > graph_gid is the same? If I've hard-coded "rank" into my program, I > can just look up my rank in group cart_gid. > > I think that including both MPI_REORDER and MPI_NOREORDER may cause > some confusion. The purpose of MPI_REORDER is to provide better > communication performance on some machines. The purpose of > MPI_NOREORDER seems to be to provide a look-up table for convenience > (performance would likely be worse on many machines). I'm not completely convinced either that we need to have MPI_NOREORDER, and I don't have seen any "real" application yet where this feature is necessary. The reasoning which led to this feature was as follows: Assume you have ordered the group in a Cartesian grid, such that each process has been assigned its role in the topology. Now assume that you have an application which uses the grid in one phase, but it needs to communicate along a tree in another phase. For some reasons it could be important that the user can specify the position in the tree for each process in the grid, that, for example, process (1,1) becomes the root of the tree. A reason for this requirement could be that process (1,1) keeps some local data which the root of the tree needs, also. So, if the mapping optimization is done for both topologies (MPI_REORDER), then - most likely - two different processes will be selected, which means additional communication. Layering the MPI_NOREORDER functions on top of MPI works, but the disadvantage is that you have to duplicate the whole set of topology functions, including the inquiry routines. If one selects MPI_REORDER/MPI_NOREORDER in the topology definition, then all other functions can work the same for both options. On the issue of default topologies Tom writes: > I think a default topology is a good idea for all groups (including > the default "ALL" group). Ring seems slightly better than linear > since the collective communication proposal currently contains > circular shift operations. If we base the shift operation on topological information, then we do not have to support both the circular shift and the end-off shift, as in the current COLLCOMM proposal. I posted a corresponding definition on the COLLCOMM mailing list: Info = MPI_SHIFT(inbuf,outbuf,nitems,type,tag,group,direction,steps) The additional "direction" argument specifies the coordinate direction of the shift. If the coordinate direction is "periodic", then the shift is circular, otherwise it is end-off. I cannot immagine that one wants to have a circular shift in a non-periodic topology, or vice versa. The only remaining problem is the ALL group, because its topology cannot be specified by the user. Thus, there is only one shift version in that group. If the user wants the other one, he has to duplicate the ALL group and give it the other periodicity type. Does this sound reasonable? Rolf Hempel From owner-mpi-ptop@CS.UTK.EDU Mon Apr 19 10:33:27 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA02674; Mon, 19 Apr 93 10:33:27 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA13408; Mon, 19 Apr 93 10:32:51 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 19 Apr 1993 10:32:50 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA13399; Mon, 19 Apr 93 10:32:47 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA04253 (5.65c/IDA-1.4.4 for ); Mon, 19 Apr 1993 16:32:38 +0200 Received: by f1neuman.gmd.de id AA12728; Mon, 19 Apr 1993 16:32:36 GMT Date: Mon, 19 Apr 1993 16:32:36 GMT From: Rolf.Hempel@gmd.de Message-Id: <9304191632.AA12728@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: new ptop definitions Cc: gmap10@f1neuman.gmd.de Dear PTOP subcommittee member, At the last Dallas meeting it was decided to base the topology functions in MPI on the lower level group definition functions. In the following I want to present to you my first thoughts about how this could be done. If you have any suggestions/corrections/brilliant ideas, please help. Proposal for process topologies in MPI: --------------------------------------- 1. The basic group definition function will look something like MPI_CREATE_GROUP (gid_old, gid_new, key, newrank) This function was proposed by Marc Snir, and it allows both a partitioning by key (using the ranking in the original group) and a reordering using the user supplied newrank value. The alternative which will be discussed is to provide two functions, one for partitioning and one for reordering. I think we could do with both options. We now have to base the topology definition on this group creation mechanism. 2. The first thing we need is for each topology a function which computes an appropriate reordering of a given group for a good mapping. As Marc suggested, this would obviously look like MPI_MAP_CART (gid_old, ndim, dims, period, newrank), and MPI_MAP_GRAPH (gid_old, nodes, index, nglist, newrank). The definition of the function arguments ndim, dims, period, nodes, index, nglist is the same as in the original proposal. These functions compute the newrank value to be used by the above group creation function (key can be set to any fixed value). 3. In the spirit of the layering of MPI functions, it could be a good idea to define high-level functions for topological group creation which are defined in terms of the above low-level functions. In this way we could define two functions like MPI_CART (gid_old, gid_cart, ndims, dims, period) and which is MPI_MAP_CART (gid_old, ndim, dims, period, newrank) MPI_CREATE_GROUP (gid_old, gid_cart, 0, newrank) and MPI_GRAPH (gid_old, gid_graph, nodes, index, nglist). which is MPI_MAP_GRAPH (gid_old, nodes, index, nglist, newrank) MPI_CREATE_GROUP (gid_old, gid_graph, 0, newrank) This way we would free the applications programmer from handling the rank reordering explicitely. Also, this definition allows an optimized implementation of MPI_CART without use of the lower level functions (if the implementor chooses to do so). 4. A general question is whether there is a standard way of caching internal information for process groups in MPI. This has been proposed in the Context subcommittee, and it was characterized as a possible addition to all the different context proposals. If this mechanism is available, the functions MPI_CART and MPI_GRAPH can store information about the topology with the newly created group. The following data would have to be kept: 1. topology type (cartesian/graph) 2. for cartesian structure: ndim, dims, period, pos (own position in grid) 3. for graph structure: nodes, pos This information can be used by later calls to inquiry functions MPI_INQMAP(gid) MPI_INQCART(maxdim, size, period, pos) MPI_INQGR(gid, nodes) The MPI_INQPID function should perhaps be redefined, so that it just returns the rank of a single process rather than a vector with several ids. The reason for this proposed change is that with the new strategy MPI_INQPID is a local operation without any communication. Thus, a seperate call for each look-up does not cost too much. As you see, the availability of a information caching facility makes it possible to retain the functionality of our previous proposal without the need to interfere with the group creation functions. The only (non-portable) low-level functions would be the two mapping functions. For an easy first implementation, they could choose the mapping permutation to be the identity. 5. If the information cacheing is not available, we have to find other ways for defining the inquiry functions. Obviously, the MPI_INQMAP function would go away. It would be the responsibility of the application programmer to remember the topology assigned to a given group. The same is true for MPI_INQCART and MPI_INQGR. MPI_INQPID would have to be changed. As input one would have to add the dimensions of the overall grid. The rank calculation of a given process then is almost trivial. 6. The MPI_PARTC(gid_old, gid_new, lostdim) function can be based on top of MPI_CREATE_GROUP (gid_old, gid_new, key, 0). Argument key is simply set to the index of the calling process in the coordinate direction "lostdim". The result is a collection of hyperplane groups which are orthogonal to that direction. I need your input for creating a proposal for the next Dallas meeting. Every comment is welcome. Best regards, Rolf From owner-mpi-ptop@CS.UTK.EDU Wed Apr 21 05:44:13 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA01566; Wed, 21 Apr 93 05:44:13 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01846; Wed, 21 Apr 93 05:43:37 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 21 Apr 1993 05:43:36 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01838; Wed, 21 Apr 93 05:43:28 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA20888 (5.65c/IDA-1.4.4 for ); Wed, 21 Apr 1993 11:43:18 +0200 Received: by f1neuman.gmd.de id AA16453; Wed, 21 Apr 1993 11:43:18 GMT Date: Wed, 21 Apr 1993 11:43:18 GMT From: Rolf.Hempel@gmd.de Message-Id: <9304211143.AA16453@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Information cacheing Cc: gmap10@f1neuman.gmd.de Recently I got a (private) email from Tom Henderson in which he comments on my latest proposal on process topologies. I think that it is interesting to the whole committee, and I hope it's okay with Tom if I forward it to you all: >> 4. A general question is whether there is a standard way of caching >> internal information for process groups in MPI. This has been >> proposed in the Context subcommittee, and it was characterized as >> a possible addition to all the different context proposals. If >> this mechanism is available, the functions MPI_CART and MPI_GRAPH >> can store information about the topology with the newly created >> group... >> >> Best regards, >> Rolf >> > >Rolf, > >It seems to me that we could still do this even if a caching facility >is not available to library users. All we need is some kind of >internal caching. It could possibly be implemented differently on >each system... > >Does this make sense? > >Tom The question of whether the PTOP functions can pass information between each other without the detour of the user argument lists is crucial for the design of the user interface. If the information cacheing is standardized in MPI, then the answer obviously is yes, and we can use that facility in PTOP. I agree with Tom that this is no necessary condition for an implementation of information cacheing for PTOP, but it would certainly help. Do you think we should rely on having some way or other of storing data internally? The note from Tom was the only reaction I got so far on my proposal. I really need your input, and I need it soon in order to get something done before the next meeting. I want to make sure that the proposal we produce on process topologies represents a consensus in the subcommittee as well as possible. Rolf From owner-mpi-ptop@CS.UTK.EDU Wed Apr 21 08:50:45 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA24140; Wed, 21 Apr 93 08:50:45 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA12654; Wed, 21 Apr 93 08:49:33 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 21 Apr 1993 08:49:32 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA12632; Wed, 21 Apr 93 08:49:29 -0400 Received: from b125.super.org by super.super.org (4.1/SMI-4.1) id AA22879; Wed, 21 Apr 93 08:49:23 EDT Received: by b125.super.org (4.1/SMI-4.1) id AA13747; Wed, 21 Apr 93 08:49:22 EDT Date: Wed, 21 Apr 93 08:49:22 EDT From: lederman@b125.super.org (Steve Huss-Lederman) Message-Id: <9304211249.AA13747@b125.super.org> To: mpi-ptop@cs.utk.edu Cc: gmap10@f1neuman.gmd.de In-Reply-To: Rolf.Hempel@gmd.de's message of Wed, 21 Apr 1993 11:43:18 GMT <9304211143.AA16453@f1neuman.gmd.de> Subject: Information cacheing I should have responded sooner to Rolf's note. I think it is fine to use this to write the next draft of the ptop section. The question of caching seems like a convenience if I understand it. If MPI does not support it, then a structure would have to be passed back to the user and used as input to other functions. Is this correct? I say we say there is a mechanism for getting such information and leave it vague until context is settled. Then the agrument lists, etc for the routines can be settled. Steve From owner-mpi-ptop@CS.UTK.EDU Wed Apr 21 11:01:15 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA29374; Wed, 21 Apr 93 11:01:15 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA25596; Wed, 21 Apr 93 10:59:35 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 21 Apr 1993 10:59:35 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gw1.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA25587; Wed, 21 Apr 93 10:59:33 -0400 Received: by gw1.fsl.noaa.gov (5.57/Ultrix3.0-C) id AA15249; Wed, 21 Apr 93 14:59:30 GMT Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA24694; Wed, 21 Apr 93 08:58:05 MDT Date: Wed, 21 Apr 93 08:58:05 MDT From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9304211458.AA24694@macaw.fsl.noaa.gov> To: mpi-ptop@cs.utk.edu Subject: Re: Information cacheing > From owner-mpi-ptop@cs.utk.edu Wed Apr 21 06:50:11 1993 > X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 21 Apr 1993 08:49:32 EDT Steve Huss-Lederman writes: > I should have responded sooner to Rolf's note. I think it is fine to > use this to write the next draft of the ptop section. The question of > caching seems like a convenience if I understand it. If MPI does not > support it, then a structure would have to be passed back to the user > and used as input to other functions. Is this correct? I say we > say there is a mechanism for getting such information and leave it > vague until context is settled. Then the agrument lists, etc for the > routines can be settled. > > Steve I agree. Tom Henderson From owner-mpi-ptop@CS.UTK.EDU Fri Apr 30 05:35:29 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA17837; Fri, 30 Apr 93 05:35:29 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA27107; Fri, 30 Apr 93 05:34:40 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 30 Apr 1993 05:34:39 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA27090; Fri, 30 Apr 93 05:34:24 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA14184 (5.65c/IDA-1.4.4 for ); Fri, 30 Apr 1993 11:33:38 +0200 Received: by f1neuman.gmd.de id AA15005; Fri, 30 Apr 1993 11:33:51 GMT Date: Fri, 30 Apr 1993 11:33:51 GMT From: Rolf.Hempel@gmd.de Message-Id: <9304301133.AA15005@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: New draft Cc: gmap10@f1neuman.gmd.de Dear Collegue, time is going by quickly, and the next MPI meeting is approaching. I have put together a new draft of the topology section, which I send you for comment with this note as LaTex source. If you have any problem with processing it, please let me know. I will then send you a PostScript file. Please read the document carefully, and send me all your comments. I tried to follow the general decisions at the last MPI meeting, at the same time retaining most features of the previous version. I didn't try to write the text in such a polished style as before, with man pages and everything. Instead I used the same macros as are used in the PT2PT and COLLCOMM sections. This makes the text hardly readable, but this is not of highest priority at the moment. I really need your input, so that I can produce the new official version by next week. Rolf Hempel -------------------------- cut here ------------------------------------ % MPI Authors: % This is MY version of YOUR chapter. It has a wrapper so that you % should be able to simply LaTeX this. % % Please work from this text so that we are in synch. % % --Steve Otto \documentstyle[twoside,11pt]{report} \pagestyle{headings} %\markright{ {\em Draft Document of the MPI Standard,\/ \today} } \marginparwidth 0pt \oddsidemargin=.25in \evensidemargin .25in \marginparsep 0pt \topmargin=-.5in \textwidth=6.0in \textheight=9.0in \parindent=2em % ---------------------------------------------------------------------- % mpi-macs.tex --- man page macros, % discuss, missing, mpifunc macros % % ---------------------------------------------------------------------- % a couple of commands from Marc Snir, modified S. Otto \newlength{\discussSpace} \setlength{\discussSpace}{.7cm} \newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace} } \newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace} } \newlength{\codeSpace} \setlength{\codeSpace}{.3cm} \newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} } % ----------------------------------------------------------------------- % A few commands to help in writing MPI man pages % \def\twoc#1#2{ \begin{list} {\hbox to95pt{#1\hfil}} {\setlength{\leftmargin}{120pt} \setlength{\labelwidth}{95pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#2} \end{list} } \outer\long\def\onec#1{ \begin{list} {} {\setlength{\leftmargin}{25pt} \setlength{\labelwidth}{0pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#1} \end{list} } \def\manhead#1{\noindent{\bf{#1}}} \hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple} \begin{document} \setcounter{page}{1} \pagenumbering{roman} \title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface} \author{Scott Berryman, {\em Yale Univ} \\ James Cownie, {\em Meiko Ltd} \\ Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\ Al Geist, {\em ORNL} \\ Bill Gropp, {\em ANL} \\ Rolf Hempel, {\em GMD} \\ Bob Knighten, {\em Intel} \\ Rusty Lusk, {\em ANL} \\ Steve Otto, {\em Oregon Graduate Inst} \\ Tony Skjellum, {\em Missisippi State Univ} \\ Marc Snir, {\em IBM T. J. Watson} \\ David Walker, {\em ORNL} \\ Steve Zenith, {\em Kuck \& Associates} } \date{March 25, 1993 \\ This work was supported by ARPA and NSF under contract number \#\#\#, by the National Science Foundation Science and Technology Center Cooperative Agreement No. CCR-8809615. } \maketitle \hfuzz=5pt %\tableofcontents %\begin{abstract} %We don't have an abstract yet. %\end{abstract} \setcounter{page}{1} \pagenumbering{arabic} \chapter{Process Topologies} \label{sec:topol} %----------------------------------------------------------------------- % % file topol.tex % \section{Introduction} A process group in MPI is a collection of n processes. Each process in the group is assigned a rank between 0 and n-1. In the majority of parallel applications this linear ordering does not reflect the communication structure of the processes which is usually determined by the underlying problem geometry and the numerical algorithm used. Often the processes are arranged in topological patterns as simple as a two-- or three--dimensional grid. For the user who programs an application on such a process structure the most natural way of referring to individual processes is to specify their coordinates in the process grid. Usually a process does not have to know the PID numbers of {\em all} processes in the grid, because communication only takes place with processes in a certain neighborhood, and perhaps with a few distant processes. Non--scalable features like the explicit listing of all participating processes in the application could, therefore, be avoided, if there were a means to specify the information which is really required. Additionally, the user--defined process structure can be exploited by the system in the assignment of processes to hardware processors, if this helps to improve the communication performance on a given machine. How this mapping is done in detail is outside the scope of this standardization proposal, since it is too much dependent on the particular hardware. The description of a ``virtual process topology'', however, only depends on the application, and is, therefore, machine--independent. The functions which are proposed in this paper only deal with this side of the mapping problem. There are well--known techniques for mapping grid/torus structures to hardware to\-po\-logies such as hypercubes or grids. But even for more complicated graph structures good heuristics often yield near--optimal results \cite{suprenum}. On the other hand, if there is no way for the user to specify the logical process arrangement as a ``virtual topology'', this information is most difficult to recover later. A random mapping is most likely the consequence. On some machines this will lead to unnecessary contention in the interconnect network. Some details about predicted and measured performance improvements which result from good process--to--processor mapping on modern wormhole--routing architectures can be found in \cite{wormhole1,wormhole2}. % \section{Virtual Topologies} % In the most general case the connection structure of a set of processes can be represented by a graph. The nodes stand for the processes, and the edges connect processes which communicate with each other. MPI provides message--passing between any pair of processes in a group. There is no requirement for opening a channel explicitly. Therefore, a ``missing link'' in the user--defined process graph does not prevent the corresponding processes from exchanging messages. It only means that this connection is neglected in the virtual topology. As a consequence, an automatic mapping tool will not try to assign the processes to neighboring processors. The graph definition function MPI\_GRAPH presented in this paper does not include any weighting of the communication volume along the different edges. Processes are either neighbors or not. Experience with similar techniques in PARMACS \cite{parmacs1,parmacs2} show that this information is usually sufficient for a good mapping. Additionally, a more precise specification would be more difficult for the user to set up, and it would make the interface functions more complicated. In principle a function for the definition of such a graph structure would be sufficient for all applications. However, in many applications the graph structure is very regular, and the detailed set--up of the graph would be inconvenient for the user and resource--consuming during run time. A large fraction of all parallel applications use process topologies like rings, or two-- or higher--dimensional grids or tori. These structures are completely defined by the number of dimensions and the numbers of processes in each coordinate direction. Also, the mapping of grids and tori is generally an easier problem then that of general graphs. Thus, it is desirable to do the mapping as grids and tori rather than obscuring the information in a graph. Therefore, in addition to the general graph cartesian structures of arbitrary dimension are supported. The topology definition function MPI\_CART can be used to describe both grids and tori by specifying per coordinate direction whether the process structure is periodic or not. Similar functions are contained in EXPRESS \cite{express} and PARMACS. Note that an n--dimensional hypercube is an n--dimensional torus with 2 processes per coordinate direction. Thus, special support for hypercube structures is not necessary. Based on the positions in the virtual topology a process can look up the PID numbers of other processes by calling MPI\_INQPID. The processes are specified by their logical node numbers (graph) or rectangular process coordinates (grid/torus). Thus, it is possible to inquire for the PID numbers of only those (few) processes with which messages have to be exchanged. \discuss{In the PT2PT discussion it is not yet decided how processes are addressed. This could, for example, be done by unique identifiers, or by their ranks in a group. The topology handling will be adapted to whatever decision will be taken in PT2PT.} % \section{Embedding in MPI} % The support for virtual topologies has to be fully integrated in the framework of MPI. In particular, the virtual topology functions do not interfere with the functions for process group creation and with those for collective communication. The current design of the process topology functions is based on the following assumptions: \begin{itemize} \item MPI is free to choose any process in a group for any location in the topology. There are no special processes which have to be aligned with topology substructures. This assumption fits best to a ``local SPMD model'' in which all processes in the same group execute the same program. \item One important feature of MPI are the process groups. The treatment of virtual topologies has to take this concept into account. The functions presented in this paper are not only compatible with the process groups, they even take advantage of them for the definition of mapping overlays and dynamic remapping during execution time. Virtual process topologies help in the subdivision of process groups which in many applications has to be done along process coordinate lines. Furthermore, the definition of collective gather--type communication calls benefits from the natural ordering of processes in a logical topology. \end{itemize} The virtual topology handling follows the general MPI rule of functional layering. At the bottom it is based on the general process group creation function MPI\_CREATE\_GROUP plus a few topology specific mapping functions. In principle this is sufficient for defining topologies and use them in applications. A number of higher--level functions provide an interface which is similar to what users of packages like Express and PARMACS are familiar with. This level can be written in a portable way in terms of the low--level functions. Implementations of the high--level functions which bypass the low level may be advantageous on some systems in terms of memory and cpu time usage, but this is not a requirement. % \section{Overview of the proposed MPI functions} % This chapter assumes the availability of the following MPI features which are defined in other chapters: \begin{enumerate} \item An existing process group (e.g., the ALL group) can be partitioned and/or renumbered using \mpifunc{MPI\_CREATE\_GROUP(gid\_old, gid\_new, key, newrank).} This function is called by all processes in group {\em gid\_old} loosely synchronously. It creates as many different subgroups as there are different values of {\em key}. The ranking in the newly created groups is determined by the {\em newrank} values, with the process ranks in the parent group for tie breaking. \item There is an internal information cacheing facility, which can be used by MPI routines to store and retrieve information related to a process group. This facility was proposed in the Context Subcommittee. High--level topology functions use this possibility to store structure information for a process group, which is then later used by topology inquiry functions. Also, special shift functions which are based on the topological structure can take advantage of this information. \end{enumerate} \discuss{If the information cacheing will not be part of MPI, the topology information can be stored in opaque objects, handles to which then have to be passed to the topology functions. Of course, this would be less elegant than an internal handling.} % \subsection{Low--level topology functions} % On the lowest level groups are created by the general function MPI\_CREATE\_GROUP. Using the input argument {\em newrank} the caller can change the process ranks in the new group as compared to the parent group. This feature can be used to efficiently map the processes in the group to the positions in the topology. For each class of topologies, therefore, there is a function which computes the rank of the calling process in the new group, based on the size and structure of the topology. Note that it is a valid implementation if the new ranks are identical to the old ranks. So, if for a given machine the placement of processes makes no difference, the implementation of the rank computation functions is trivial. For cartesian structures the function is \mpifunc{MPI\_MAP\_CART(gid\_old, ndim, dims, period, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN ndim, dims, period] definition of cartesian structure, \item[OUT newrank] rank of calling process in reordered group. \end{description} The corresponding function for general graph structures is \mpifunc{MPI\_MAP\_GRAPH(god\_old, nodes, index, nglist, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN nodes, index, nglist] definition of graph structure, \item[OUT newrank] rank of calling process in reordered group. \end{description} If the topology contains fewer processes than there are processes in the parent group, the newrank values for the remaining processes are set to MPI\_NORANK. % \subsection{High--level topology functions} % In principle, all what is needed to create an MPI process group with topological ordering are the two mapping functions and the general group creation routine. However, this is not what the applications programmer expects to see on his level of abstraction. Therefore, another layer of functions is defined on top of the low--level functions. This higher level can be portably implemented in terms of the level below. Of course MPI implementors are free to bypass the lower level for the sake of better performance or resource usage. For cartesian and graph structures the functions MPI\_CART and MPI\_GRAPH create a process group with topological structure. They combine the call to the mapping function with the call to the group creation routine. The user can decide whether the ranking in the new group may be reordered (for a more efficient mapping) or not. In the latter case the rank of the calling process is copied from the parent group. MPI\_CART is defined as \mpifunc{MPI\_CART(gid\_old, gid\_cart, ndims, dims, period, reorder)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_cart] group id of cartesian group (if calling process is part of it, else id of rest group), \item[IN ndim, dims, period] definition of cartesian structure, \item[IN reorder] ranking may be reordered or not. \end{description} The return value is the rank of the calling process in the cartesian group (or MPI\_NORANK). Apart from some local computations, MPI\_CART is based on the two function calls \mpifunc{MPI\_MAP\_CART (gid\_old, ndim, dims, period, newrank)} and \mpifunc{MPI\_CREATE\_GROUP (gid\_old, gid\_cart, 0, newrank)}. % \vspace*{3.0ex} For graph structures the corresponding routine is \mpifunc{MPI\_GRAPH(gid\_old, gid\_graph, nodes, index, nglist, reorder) } with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_graph] group id of graph group (if calling process is part of it, else id of rest group), \item[IN nodes, index, nglist] definition of graph structure, \item[IN reorder] ranking may be reordered or not. \end{description} % \vspace*{3.0ex} In the context subcommittee a mechanism has been proposed for cacheing information which is associated with a process group. If that feature will be part of MPI, the high--level topology functions can store the following information: \begin{enumerate} \item Type of topology (cartesian/graph) \item For a cartesian topology: \begin{itemize} \item ndim (number of dimensions), \item dims(*) (numbers of processes per coordinate direction), \item period(*) (periodicity information), \item own\_position(*) (own position in grid, could also be computed from rank and dims(*)) \end{itemize} \end{enumerate} For a graph structure no information has to be stored, because the graph node number is the rank in the graph group, and the size of the graph is the number of processes in that group. In case the cacheing mechanism does not become part of MPI, the above data have to be stored in an opaque object, a handle to which would get included in the argument lists of all related topology functions. Since this alternative would be much less elegant, the topology section would very much benefit from the inclusion of the cacheing facility. \subsection{Topology inquiry functions} If a topology has been defined with one of the above high--level functions, the topology information can be looked up using inquiry functions. They all are local calls, and do not require any communication. In the following the assumption is made that the information cacheing is available. Otherwise the handle to the opaque information object has to be added to the argument lists (or replace the group identifier argument). The function MPI\_INQMAP returns the type of mapping which is assigned to a group. \mpifunc{map = MPI\_INQMAP(gid).} The return value is one of the following: \begin{itemize} \item MPI\_CARTTOP: cartesian topology, \item MPI\_GRAPHTOP: graph topology, \item MPI\_NOTOP: no topology. \end{itemize} For a process group with cartesian ordering which has been created by MPI\_CART, MPI\_INQCART looks up the following info: \mpifunc{MPI\_INQCART(gid, maxdim, size, period, pos)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN maxdim] length of vectors size(*), period(*), and pos(*) in the calling program, \item[OUT size] number of processes for each coordinate direction, \item[OUT period] periodicity yes/no for each coordinate direction, \item[OUT pos] position of calling process in cartesian structure. \end{description} For a process group with cartesian structure, the function MPI\_INQPID translates the logical process coordinates to process ids as they are used by the point--to--point routines: \mpifunc{pid = MPI\_INQPID(gid, location)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN location] coordinate vector of process. \end{description} \discuss{Depending on the decisions taken in the PT2PT subcommittee, MPI\_INQPID might be changed to return the rank in the group rather than a pid.} \subsection{Partitioning of cartesian structures} If a group has been created with MPI\_CART, the function MPI\_PARTC can be used to partition the group into subgroups which form hyperplanes of the original process structure. As an example, assume that MPI\_CART has defined a two--dimensional grid structure on a process group. With a call to MPI\_PARTC this group can then be split up into disjoint subgroups which represent rows or columns of the original group. The function syntax is: \mpifunc{MPI\_PARTC(gid, lostdim)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN lostdim] direction perpendicular to resulting hyperplanes. \end{description} The function returns the group identifier of the hyperplane group in which the calling process is contained. MPI\_PARTC uses the function MPI\_CREATE\_GROUP to partition the parent group, using the process coordinate in direction {\tt lostdim} as the key value. After a group has been partitioned by MPI\_PARTC, the inquiry functions MPI\_INQCART and MPI\_INQPID consistently refer to the grid sections if applied to a subgroup. If the process topology is a cartesian structure, a collective shift operation most likely is used along a coordinate direction. The function MPI\_SHIFTGR partitions a cartesian group into one--dimensional subgroups, which are all oriented in one coordinate direction. Every process is contained in exactly one subgroup: \mpifunc{MPI\_SHIFTGR(gid, direction)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN direction] coordinate direction of one--dimensional subgroups. \end{description} MPI\_SHIFTGR uses the function MPI\_CREATE\_GROUP to partition the parent group. The return value is the group identifier of the one--dimensional subgroup to which the calling process belongs. \discuss{Instead of creating one--dimensional subgroups and then use the standard collective communication (circular or end--off) shift functions, one could also define a topology based shift function. It would look very much like the standard shift, with an additional argument defining the coordinate direction for the shift. Depending on the periodicity information of the cartesian structure, the shift function could choose the circular or end--off version automatically.} In a portable program the number of available processors usually is not known at compile time. In the case of a cartesian topology the function MPI\_MAKDIM helps in setting the numbers of processes per coodinate direction, depending on the number of processes in the group and optional constraints which can be specified by the user: \mpifunc{MPI\_MAKDIM(gid, ndim, dims)} with \begin{description} \item[IN gid] group id of group which is to be structured, \item[IN ndim] number of cartesian dimensions, \item[IN/OUT dims] number of processes in each coordinate direction. \end{description} The processes of the group with ID number {\tt gid} are divided as evenly as possible among {\tt ndim} dimensions, subject to the constraint that all processes in the group are used. The caller may further constrain the operation of this routine by specifying elements of array {\tt dims}. If {\tt dims(i)} is set to a positive number, the routine will fix the number of processes in coordinate direction {\tt i} to {\tt dims(i)}. Processes will then be distributed among directions where {\tt dims(i)} is set to 0, subject to the above constraints. Note that an error will occur if {\tt dims(i)} is positive and does not evenly divide the number of processes in the group. Negative input values of {\tt dims(i)} will also cause an error. All elements of {\tt dims(*)} must be set to 0 for completely automatic process distribution. When the function returns, {\tt dims(i)} will be set to the number of processes in coordinate direction {\tt i}. For {\tt dims(i)} not set by the user, {\tt dims(i)} will be ordered (MAXIMUM, ..., MINIMUM). Array {\tt dims(*)} is suitable for use as input to routine MPI\_CART. % \section{A simple example} % The example in figure \ref{poisson} shows how the grid definition and inquiry functions can be used in an application program. A partial differential equation, for example the Poisson equation, is to be solved on a rectangular domain. First the processes organize themselves in a two--dimensional structure. Each process then inquires for the PID numbers of its neighbors in the four directions. The numerical problem is solved by an iterative method, the details of which are hidden in the subroutine {\tt relax}. In each relaxation step each process computes new values for the solution grid function at all points owned by the process. Then the values at interprocess boundaries have to be exchanged with neighboring processes. For example, the exchange subroutine might contain a call like MPI\_SENDB(...,neigh\_pid(1),...) to send updated values to the left--hand neighbor (i-1,j). Note that there is only local communication in this exchange operation. \begin{figure} \begin{tabbing} =====\===\======\kill % \>integer ndim, mx\_neigh \\ \>parameter (ndim=2, mx\_neigh=4) \\ \>integer gid, gid\_cart, dims(ndim), neigh\_def(2), neigh\_pid(mx\_neigh) \\ \>integer own\_position(ndim), period(ndim), i, j, num\_neigh, ret, rank \\ \>real$\ast$8 u(0:101,0:101), f(0:101,0:101) \\ \>data dims / ndim $\ast$ 0 / \\ C \hspace{5mm} Create a grid structure in ALL group and inquire about own position\\ \>gid = ALL \\ C \hspace{5mm} Set process grid size and periodicity \\ \>ret = MPI\_MAKDIM(gid, ndim, dims) \\ \>if (ret .lt. 0) call error\_handler(ret) \\ \>period(1) = MPI\_PER \\ \>period(2) = MPI\_PER \\ \>rank = MPI\_CART (gid, gid\_cart, ndim, dims, period) \\ C \hspace{5mm} If not a grid process: stop \\ \>if (rank .eq. MPI\_NORANK) stop \\ \>call MPI\_INQCART (gid\_cart, ndim, dims, period, own\_position) \\ C \hspace{5mm} Look up the PID numbers for the neighbors. Own process coordinates are (i,j). \\ C \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1) \\ \>i = own\_position(1) \\ \>j = own\_position(2) \\ \>neigh\_def(1) = i--1 \\ \>neigh\_def(2) = j \\ \>neigh\_pid(1) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i+1 \\ \>neigh\_def(2) = j \\ \>neigh\_pid(2) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j--1 \\ \>neigh\_pid(3) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j+1 \\ \>neigh\_pid(4) = MPI\_INQPID (gid, neigh\_def) \\ \>num\_neigh = mx\_neigh \\ C \hspace{5mm} Initialize the grid functions and start the iteration \\ \>call init (u, f) \\ \>do 10 it=1,100 \\ \>\>call relax (u, f) \\ C \hspace{5mm} Exchange data with neighbor processes \\ \>\>call exchange (u, neigh\_pid) \\ 10 \>continue \\ \>call output (u) \\ \>end \\ \end{tabbing} \caption{Set--up of process structure for two--dimensional parallel Poisson solver.} \label{poisson} \end{figure} \end{document} From owner-mpi-ptop@CS.UTK.EDU Tue May 4 11:09:49 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA18199; Tue, 4 May 93 11:09:49 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA11791; Tue, 4 May 93 11:08:28 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 4 May 1993 11:08:27 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA11783; Tue, 4 May 93 11:08:25 -0400 Received: from b124.super.org by super.super.org (4.1/SMI-4.1) id AA10322; Tue, 4 May 93 11:08:22 EDT Received: by b124.super.org (4.1/SMI-4.1) id AA02846; Tue, 4 May 93 11:08:19 EDT Date: Tue, 4 May 93 11:08:19 EDT From: lederman@super.org (Steve Huss-Lederman) Message-Id: <9305041508.AA02846@b124.super.org> To: mpi-ptop@cs.utk.edu Subject: comments on 4/25 draft I generally like Rolf's chapter. Thanks for doing it :-). Below are a few points: On p. 2 is a discussion of why not to have weights in MPI_GRAPH. Why not have a second call that allows weights. If the user knows them then this information can be useful. To use Rolf's own argument against himself: It is most difficult to recover later :-) I agree it takes more work, so have the two level approach and make a separate call for the more complex case. An implementation can always ignore the weights and do a regular MPI_GRAPH. (which can also be ignored ;-) On p. 3 near the top the first bullet says: "fits best to a local SPMD model in which...." Why is this the case because we don't have alignment with substructures? I am probably being slow because I don't see the argument. In the MPI_CREATE_GROUP (bottom p. 3) says "The ranking in the newly created groups is determined by the newrank values, with the process ranks in the parent group for tie breaking." I'm missing something. Is newrank both input and output? How does the newrank determine the rank? I assume a later draft will have more details on the arguments concerning the topologies in MPI_MAP_CART/GRAPH (p. 4). The issue of how we number the location (coordinates) in MPI_INQPID seems lost (p. 6 near bottom). Did we vote to have both and place that information in the descriptor. (Both being 0 and 1 up numbering). Is this correct? Either way the draft needs to state which one. If it is both then the create and inquire functions need some changes. And now for a small point to wonder about when you have nothing else to do: In the example on p. 9 do you need the line: if(rank .eq. MPI_NORANK) stop? If MPI_MAKDIM works correctly then it places all the nodes in one of the dimensions. thus all processes get a group. Correct? Just added this one to let you know I actually read the whole thing :-) Steve From owner-mpi-ptop@CS.UTK.EDU Wed May 5 05:27:50 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA18080; Wed, 5 May 93 05:27:50 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01022; Wed, 5 May 93 05:26:38 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 5 May 1993 05:26:36 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA00833; Wed, 5 May 93 05:26:20 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA21501 (5.65c/IDA-1.4.4 for ); Wed, 5 May 1993 11:25:26 +0200 Received: by f1neuman.gmd.de id AA15664; Wed, 5 May 1993 11:25:42 GMT Date: Wed, 5 May 1993 11:25:42 GMT From: Rolf.Hempel@gmd.de Message-Id: <9305051125.AA15664@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Revised draft Cc: gmap10@f1neuman.gmd.de Hi there, many thanks to Steve and Tom for reading my draft so carefully, and for their many suggestions for improvements. I tried to implement all their comments into a revised version which I send you with this note. In an additional message you will receive the corresponding PostScript. Please send me your comments as soon as possible, because I will have to give the text to Steve Otto for inclusion into the MPI document soon. Apart from the notes of Steve and Tom I did not get any comments. This can either mean that the text as it stands is okay with everybody else, or that nobody else cares any more. Pessimistic as I usually am, I fear the second alternative comes nearer to the truth. Any comment? Steve raised two points which I would like to shortly answer here. He wrote: > On p. 3 near the top the first bullet says: "fits best to a local SPMD > model in which...." Why is this the case because we don't have > alignment with substructures? I am probably being slow because I > don't see the argument. What I meant is the following: the system is free to choose the topological location for a process (which is already running) only if they all run the same program. If, for example, a grid boundary were handled by a different code, this assumption would no longer hold. This is what I called the local SPMD program (local, because it doesn't matter if other process groups run different programs). Steve then continues: > In the MPI_CREATE_GROUP (bottom p. 3) says "The ranking in the newly > created groups is determined by the newrank values, with the process > ranks in the parent group for tie breaking." I'm missing something. > Is newrank both input and output? How does the newrank determine the > rank? I referred to the group creation funtion which was proposed by Marc Snir (under the name MPI_NEW_CONTEXT). I renamed his input argument "index" to "newrank" to avoid confusion with the index vector of the graph mapping function. (Sorry that this way I obviously created more confusion than I avoided). Thus, newrank is an input argument, and it is used for determining the rank in the newly created group. If two or more processes call the function with the same newrank value, their ranks in the parent group are used for tie breaking. Best regards, Rolf ---------------------- LaTex source follows ---------------------------- % MPI Authors: % This is MY version of YOUR chapter. It has a wrapper so that you % should be able to simply LaTeX this. % % Please work from this text so that we are in synch. % % --Steve Otto \documentstyle[twoside,11pt]{report} \pagestyle{headings} %\markright{ {\em Draft Document of the MPI Standard,\/ \today} } \marginparwidth 0pt \oddsidemargin=.25in \evensidemargin .25in \marginparsep 0pt \topmargin=-.5in \textwidth=6.0in \textheight=9.0in \parindent=2em % ---------------------------------------------------------------------- % mpi-macs.tex --- man page macros, % discuss, missing, mpifunc macros % % ---------------------------------------------------------------------- % a couple of commands from Marc Snir, modified S. Otto \newlength{\discussSpace} \setlength{\discussSpace}{.7cm} \newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace} } \newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace} } \newlength{\codeSpace} \setlength{\codeSpace}{.3cm} \newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} } % ----------------------------------------------------------------------- % A few commands to help in writing MPI man pages % \def\twoc#1#2{ \begin{list} {\hbox to95pt{#1\hfil}} {\setlength{\leftmargin}{120pt} \setlength{\labelwidth}{95pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#2} \end{list} } \outer\long\def\onec#1{ \begin{list} {} {\setlength{\leftmargin}{25pt} \setlength{\labelwidth}{0pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#1} \end{list} } \def\manhead#1{\noindent{\bf{#1}}} \hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple} \begin{document} \setcounter{page}{1} \pagenumbering{roman} \title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface} \author{Scott Berryman, {\em Yale Univ} \\ James Cownie, {\em Meiko Ltd} \\ Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\ Al Geist, {\em ORNL} \\ Bill Gropp, {\em ANL} \\ Rolf Hempel, {\em GMD} \\ Bob Knighten, {\em Intel} \\ Rusty Lusk, {\em ANL} \\ Steve Otto, {\em Oregon Graduate Inst} \\ Tony Skjellum, {\em Missisippi State Univ} \\ Marc Snir, {\em IBM T. J. Watson} \\ David Walker, {\em ORNL} \\ Steve Zenith, {\em Kuck \& Associates} } \date{March 25, 1993 \\ This work was supported by ARPA and NSF under contract number \#\#\#, by the National Science Foundation Science and Technology Center Cooperative Agreement No. CCR-8809615. } \maketitle \hfuzz=5pt %\tableofcontents %\begin{abstract} %We don't have an abstract yet. %\end{abstract} \setcounter{page}{1} \pagenumbering{arabic} \chapter{Process Topologies} \label{sec:topol} %----------------------------------------------------------------------- % % file topol.tex % \section{Introduction} A process group in MPI is a collection of n processes. Each process in the group is assigned a rank between 0 and n-1. In the majority of parallel applications this linear ordering does not reflect the communication structure of the processes which is usually determined by the underlying problem geometry and the numerical algorithm used. Often the processes are arranged in topological patterns as simple as a two-- or three--dimensional grid. For the user who programs an application on such a process structure the most natural way of referring to individual processes is to specify their coordinates in the process grid. Usually a process does not have to know the PID numbers of {\em all} processes in the grid, because communication only takes place with processes in a certain neighborhood, and perhaps with a few distant processes. Non--scalable features like the explicit listing of all participating processes in the application could, therefore, be avoided, if there were a means to specify the information which is really required. Additionally, the user--defined process structure can be exploited by the system in the assignment of processes to hardware processors, if this helps to improve the communication performance on a given machine. How this mapping is done in detail is outside the scope of this standardization proposal, since it is too much dependent on the particular hardware. The description of a ``virtual process topology'', however, only depends on the application, and is, therefore, machine--independent. The functions which are proposed in this paper only deal with this side of the mapping problem. There are well--known techniques for mapping grid/torus structures to hardware to\-po\-logies such as hypercubes or grids. But even for more complicated graph structures good heuristics often yield near--optimal results \cite{suprenum}. On the other hand, if there is no way for the user to specify the logical process arrangement as a ``virtual topology'', this information is most difficult to recover later. A random mapping is most likely the consequence. On some machines this will lead to unnecessary contention in the interconnect network. Some details about predicted and measured performance improvements which result from good process--to--processor mapping on modern wormhole--routing architectures can be found in \cite{wormhole1,wormhole2}. % \section{Virtual Topologies} % In the most general case the connection structure of a set of processes can be represented by a graph. The nodes stand for the processes, and the edges connect processes which communicate with each other. MPI provides message--passing between any pair of processes in a group. There is no requirement for opening a channel explicitly. Therefore, a ``missing link'' in the user--defined process graph does not prevent the corresponding processes from exchanging messages. It only means that this connection is neglected in the virtual topology. As a consequence, an automatic mapping tool will not try to assign the processes to neighboring processors. The graph definition function MPI\_GRAPH presented in this paper does not include any weighting of the communication volume along the different edges. Processes are either neighbors or not. Experience with similar techniques in PARMACS \cite{parmacs1,parmacs2} show that this information is usually sufficient for a good mapping. Additionally, a more precise specification would be more difficult for the user to set up, and it would make the interface functions more complicated. \discuss{One could also have two graph mapping functions, one of which uses communication weighting, whereas the other does not. The mapping function with weighting, \linebreak MPI\_MAP\_WGRAPH, would then have an additional input argument {\tt weights} with the same structure as the neighbor list {\tt nglist}. On the higher abstraction level the function MPI\_GRAPH would be complemented by MPI\_WGRAPH in the same way.} In principle a function for the definition of such a graph structure would be sufficient for all applications. However, in many applications the graph structure is very regular, and the detailed set--up of the graph would be inconvenient for the user and resource--consuming during run time. A large fraction of all parallel applications use process topologies like rings, or two-- or higher--dimensional grids or tori. These structures are completely defined by the number of dimensions and the numbers of processes in each coordinate direction. Also, the mapping of grids and tori is generally an easier problem then that of general graphs. Thus, it is desirable to do the mapping as grids and tori rather than obscuring the information in a graph. Therefore, in addition to the general graph cartesian structures of arbitrary dimension are supported. The topology definition function MPI\_CART can be used to describe both grids and tori by specifying per coordinate direction whether the process structure is periodic or not. Similar functions are contained in EXPRESS \cite{express} and PARMACS. Note that an n--dimensional hypercube is an n--dimensional torus with 2 processes per coordinate direction. Thus, special support for hypercube structures is not necessary. Based on the positions in the virtual topology a process can look up the PID numbers of other processes by calling MPI\_INQPID. The processes are specified by their logical node numbers (graph) or rectangular process coordinates (grid/torus). Thus, it is possible to inquire for the PID numbers of only those (few) processes with which messages have to be exchanged. \discuss{In the PT2PT discussion it is not yet decided how processes are addressed. This could, for example, be done by unique identifiers, or by their ranks in a group. The topology handling will be adapted to whatever decision will be taken in PT2PT.} % \section{Embedding in MPI} % The support for virtual topologies has to be fully integrated in the framework of MPI. In particular, the virtual topology functions do not interfere with the functions for process group creation and with those for collective communication. The current design of the process topology functions is based on the following assumptions: \begin{itemize} \item MPI is free to choose any process in a group for any location in the topology. There are no special processes which have to be aligned with topology substructures. This assumption fits best to a ``local SPMD model'' in which all processes in the same group execute the same program. \item One important feature of MPI are the process groups. The treatment of virtual topologies has to take this concept into account. The functions presented in this paper are not only compatible with the process groups, they even take advantage of them for the definition of mapping overlays and dynamic remapping during execution time. Virtual process topologies help in the subdivision of process groups which in many applications has to be done along process coordinate lines. Furthermore, the definition of collective gather--type communication calls benefits from the natural ordering of processes in a logical topology. \end{itemize} The virtual topology handling follows the general MPI rule of functional layering. At the bottom it is based on the general process group creation function MPI\_CREATE\_GROUP plus a few topology specific mapping functions. In principle this is sufficient for defining topologies and use them in applications. A number of higher--level functions provide an interface which is similar to what users of packages like Express and PARMACS are familiar with. This level can be written in a portable way in terms of the low--level functions. Implementations of the high--level functions which bypass the low level may be advantageous on some systems in terms of memory and cpu time usage, but this is not a requirement. % \section{Overview of the proposed MPI functions} % This chapter assumes the availability of the following MPI features which are defined in other chapters: \begin{enumerate} \item An existing process group (e.g., the ALL group) can be partitioned and/or renumbered using \mpifunc{MPI\_CREATE\_GROUP(gid\_old, gid\_new, key, newrank).} This function is called by all processes in group {\em gid\_old} loosely synchronously. It creates as many different subgroups as there are different values of {\em key}. The ranking in the newly created groups is determined by the {\em newrank} values, with the process ranks in the parent group for tie breaking. \item There is an internal information cacheing facility, which can be used by MPI routines to store and retrieve information related to a process group. This facility was proposed in the Context Subcommittee. High--level topology functions use this possibility to store structure information for a process group, which is then later used by topology inquiry functions. Also, special shift functions which are based on the topological structure can take advantage of this information. \end{enumerate} \discuss{If the information cacheing will not be part of MPI, passing the topology information for a group from one topology function to the other can be handled in several other ways which will be discussed later.} There has been a general decision in MPI to start all numbering with 0 instead of 1. Thus, coordinates in a cartesian structure are 0,1, ..., dim-1. In the same way, nodes in a general graph are numbered zero up. % \subsection{Low--level topology functions} % On the lowest level groups are created by the general function MPI\_CREATE\_GROUP. Using the input argument {\em newrank} the caller can change the process ranks in the new group as compared to the parent group. This feature can be used to efficiently map the processes in the group to the positions in the topology. For each class of topologies, therefore, there is a function which computes the rank of the calling process in the new group, based on the size and structure of the topology. Note that it is a valid implementation if the new ranks are identical to the old ranks. So, if for a given machine the placement of processes makes no difference, the implementation of the rank computation functions is trivial. For cartesian structures the function is \mpifunc{newrank = MPI\_MAP\_CART(gid\_old, ndim, dims, period)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN ndim] number of dimensions of cartesian structure, \item[IN dims(*)] number of processes in each coordinate direction, \item[IN period(*)] periodicity specification in each coordinate direction. \end{description} The return value is the reordered rank of the calling process. \\[4.0ex] The corresponding function for general graph structures is \mpifunc{newrank = MPI\_MAP\_GRAPH(gid\_old, nodes, index, nglist)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN nodes] number of graph nodes, \item[IN index(*), nglist(*)] definition of graph structure: For each graph node its set of neighbors is entered, i.~e., the set of processes with which the node process is going to communicate most frequently. Since there is no weighting of node connections, it might be sensible to specify only those neighbors with which there is a considerable amount of communication. For each node $i\;\:(0 \leq i \leq nodes-1)$ the list of the neighbor nodes is stored at $nglist(j),\;\: index(i) \leq j \leq index(i+1)-1$. For the last process $index(i+1)$ points to the first free position in vector nglist. Note that the matrix is symmetric, i.~e., if node {\em i} is a neighbor of node {\em j}, than node {\em j} is also a neighbor of node {\em i}. This property can be used for an internal checking of the input arguments. \end{description} Again, the function returns the reordered rank of calling process. \\[4.0ex] If the topology contains fewer processes than there are processes in the parent group, the newrank values for the remaining processes are set to MPI\_NORANK. % \subsection{High--level topology functions} % In principle, all that is needed to create an MPI process group with topological ordering are the two mapping functions and the general group creation routine. However, this is not what the applications programmer expects to see on his level of abstraction. Therefore, another layer of functions is defined on top of the low--level functions. This higher level can be portably implemented in terms of the level below. Of course MPI implementors are free to bypass the lower level for the sake of better performance or resource usage. For cartesian and graph structures the functions MPI\_CART and MPI\_GRAPH create a process group with topological structure. They combine the call to the mapping function with the call to the group creation routine. The user can decide whether the ranking in the new group may be reordered (for a more efficient mapping) or not. In the latter case the rank of the calling process is copied from the parent group. The option of not reordering the process ranks can be useful in the case of an overlay of different topologies. The user can then fully control which location in the first topology coincides with which location in the second one. The price which one obviously has to pay in this case is that for only one topology the process arrangement can be optimized. MPI\_CART is defined as \mpifunc{MPI\_CART(gid\_old, gid\_cart, ndims, dims, period, reorder)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_cart] group id of cartesian group (if calling process is part of it, else id of rest group), \item[IN ndim, dims(*), period(*)] definition of cartesian structure, (for details see the definition of MPI\_MAP\_CART) \item[IN reorder] ranking may be reordered or not. \end{description} The return value is the rank of the calling process in the cartesian group (or MPI\_NORANK). Apart from some local computations, MPI\_CART is based on the two function calls \mpifunc{MPI\_MAP\_CART (gid\_old, ndim, dims, period, newrank)} and \mpifunc{MPI\_CREATE\_GROUP (gid\_old, gid\_cart, 0, newrank)}. % \vspace*{3.0ex} For graph structures the corresponding routine is \mpifunc{MPI\_GRAPH(gid\_old, gid\_graph, nodes, index, nglist, reorder) } with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_graph] group id of graph group (if calling process is part of it, else id of rest group), \item[IN nodes, index(*), nglist(*)] definition of graph structure, (for details see the definition of MPI\_MAP\_GRAPH) \item[IN reorder] ranking may be reordered or not. \end{description} % \vspace*{3.0ex} In the context subcommittee a mechanism has been proposed for cacheing information which is associated with a process group. If that feature will be part of MPI, it can be used by the high--level topology functions to store the following information: \begin{enumerate} \item Type of topology (cartesian/graph) \item For a cartesian topology: \begin{itemize} \item ndim (number of dimensions), \item dims(*) (numbers of processes per coordinate direction), \item period(*) (periodicity information), \item own\_position(*) (own position in grid, could also be computed from rank and dims(*)) \end{itemize} \end{enumerate} For a graph structure no information has to be stored, because the graph node number is the rank in the graph group, and the size of the graph is the number of processes in that group. In case the cacheing mechanism does not become part of MPI, there are two other possibilities: since the storage and retrieval of the above information is only done by the topology functions, it can internally be stored with other group information in an implementation--dependent way, which each vendor can do as is most convenient. As an alternative, the information could be stored in an opaque object, a handle to which would have to be included in the argument lists of all related topology functions. However, this alternative would be much less elegant. \subsection{Topology inquiry functions} If a topology has been defined with one of the above high--level functions, the topology information can be looked up using inquiry functions. They all are local calls, and do not require any communication. In the following the assumption is made that the information cacheing is available. Otherwise the handle to the opaque information object has to be added to the argument lists (or replace the group identifier argument). The function MPI\_INQMAP returns the type of mapping which is assigned to a group. \mpifunc{map = MPI\_INQMAP(gid).} The return value is one of the following: \begin{itemize} \item MPI\_CARTTOP: cartesian topology, \item MPI\_GRAPHTOP: graph topology, \item MPI\_NOTOP: no topology. \end{itemize} For a process group with cartesian ordering which has been created by MPI\_CART, MPI\_INQCART looks up the following info: \mpifunc{dim = MPI\_INQCART(gid, maxdim, size, period, pos)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN maxdim] length of vectors size(*), period(*), and pos(*) in the calling program, \item[OUT size(*)] number of processes for each coordinate direction, \item[OUT period(*)] periodicity yes/no for each coordinate direction, \item[OUT pos(*)] position of calling process in cartesian structure. \end{description} The return value is the dimension of the cartesian structure. For a process group with cartesian structure, the function MPI\_INQPID translates the logical process coordinates to process ids as they are used by the point--to--point routines: \mpifunc{pid = MPI\_INQPID(gid, location)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN location] coordinate vector of process. \end{description} In a sense, the inverse operation to MPI\_INQPID is provided by the function: \mpifunc{MPI\_INQLOC(gid, rank, location, maxdim)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN rank] rank of a process within group {\tt gid}, \item[OUT location(*)] coordinate vector of process, \item[IN maxdim] length of vector {\tt location} in the calling program (only for error checking). \end{description} MPI\_INQLOC translates a rank in the group into a topology location. \discuss{Depending on the decisions taken in the PT2PT subcommittee, MPI\_INQPID might be changed to return the rank in the group rather than a pid.} \subsection{Partitioning of cartesian structures} If a group has been created with MPI\_CART, the function MPI\_PARTC can be used to partition the group into subgroups which form hyperplanes of the original process structure. As an example, assume that MPI\_CART has defined a two--dimensional grid structure on a process group. With a call to MPI\_PARTC this group can then be split up into disjoint subgroups which represent rows or columns of the original group. The function syntax is: \mpifunc{MPI\_PARTC(gid, lostdim)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN lostdim] direction perpendicular to resulting hyperplanes. \end{description} The function returns the group identifier of the hyperplane group in which the calling process is contained. MPI\_PARTC uses the function MPI\_CREATE\_GROUP to partition the parent group, using the process coordinate in direction {\tt lostdim} as the key value. After a group has been partitioned by MPI\_PARTC, the inquiry functions MPI\_INQCART and MPI\_INQPID consistently refer to the grid sections if applied to a subgroup. If the process topology is a cartesian structure, a collective shift operation most likely is used along a coordinate direction. The function MPI\_SHIFTGR partitions a cartesian group into one--dimensional subgroups, which are all oriented in one coordinate direction. Every process is contained in exactly one subgroup: \mpifunc{MPI\_SHIFTGR(gid, direction)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN direction] coordinate direction of one--dimensional subgroups. \end{description} MPI\_SHIFTGR uses the function MPI\_CREATE\_GROUP to partition the parent group. The return value is the group identifier of the one--dimensional subgroup to which the calling process belongs. \discuss{Instead of creating one--dimensional subgroups and then use the standard collective communication (circular or end--off) shift functions, one could also define a topology based shift function. It would look very much like the standard shift, with an additional argument defining the coordinate direction for the shift. Depending on the periodicity information of the cartesian structure, the shift function could choose the circular or end--off version automatically.} In a portable program the number of available processors usually is not known at compile time. In the case of a cartesian topology the function MPI\_MAKDIM helps in setting the numbers of processes per coodinate direction, depending on the number of processes in the group and optional constraints which can be specified by the user: \mpifunc{MPI\_MAKDIM(gid, ndim, dims)} with \begin{description} \item[IN gid] group id of group which is to be structured, \item[IN ndim] number of cartesian dimensions, \item[IN/OUT dims] number of processes in each coordinate direction. \end{description} The processes of the group with ID number {\tt gid} are divided as evenly as possible among {\tt ndim} dimensions, subject to the constraint that all processes in the group are used. The caller may further constrain the operation of this routine by specifying elements of array {\tt dims}. If {\tt dims(i)} is set to a positive number, the routine will fix the number of processes in coordinate direction {\tt i} to {\tt dims(i)}. Processes will then be distributed among directions where {\tt dims(i)} is set to 0, subject to the above constraints. Note that an error will occur if {\tt dims(i)} is positive and does not evenly divide the number of processes in the group. Negative input values of {\tt dims(i)} will also cause an error. All elements of {\tt dims(*)} must be set to 0 for completely automatic process distribution. When the function returns, {\tt dims(i)} will be set to the number of processes in coordinate direction {\tt i}. For {\tt dims(i)} not set by the user, {\tt dims(i)} will be ordered (MAXIMUM, ..., MINIMUM). Array {\tt dims(*)} is suitable for use as input to routine MPI\_CART. % \section{A simple example} % The example in figure \ref{poisson} shows how the grid definition and inquiry functions can be used in an application program. A partial differential equation, for example the Poisson equation, is to be solved on a rectangular domain. First the processes organize themselves in a two--dimensional structure. Each process then inquires for the PID numbers of its neighbors in the four directions. The numerical problem is solved by an iterative method, the details of which are hidden in the subroutine {\tt relax}. In each relaxation step each process computes new values for the solution grid function at all points owned by the process. Then the values at interprocess boundaries have to be exchanged with neighboring processes. For example, the exchange subroutine might contain a call like MPI\_SENDC(...,neigh\_pid(1),...) to send updated values to the left--hand neighbor (i-1,j). Note that there is only local communication in this exchange operation. \begin{figure} \begin{tabbing} =====\===\======\kill % \>integer ndim, mx\_neigh \\ \>parameter (ndim=2, mx\_neigh=4) \\ \>integer gid, gid\_cart, dims(ndim), neigh\_def(2), neigh\_pid(mx\_neigh) \\ \>integer own\_position(ndim), period(ndim), i, j, num\_neigh, ret, rank \\ \>real$\ast$8 u(0:101,0:101), f(0:101,0:101) \\ \>data dims / ndim $\ast$ 0 / \\ C \hspace{5mm} Create a grid structure in ALL group and inquire about own position\\ \>gid = ALL \\ C \hspace{5mm} Set process grid size and periodicity \\ \>ret = MPI\_MAKDIM(gid, ndim, dims) \\ \>if (ret .lt. 0) call error\_handler(ret) \\ \>period(1) = MPI\_PER \\ \>period(2) = MPI\_PER \\ \>rank = MPI\_CART (gid, gid\_cart, ndim, dims, period) \\ \>ret = MPI\_INQCART (gid\_cart, ndim, dims, period, own\_position) \\ C \hspace{5mm} Look up the PID numbers for the neighbors. Own process coordinates are (i,j). \\ C \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1) \\ \>i = own\_position(1) \\ \>j = own\_position(2) \\ \>neigh\_def(1) = i--1 \\ \>neigh\_def(2) = j \\ \>neigh\_pid(1) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i+1 \\ \>neigh\_def(2) = j \\ \>neigh\_pid(2) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j--1 \\ \>neigh\_pid(3) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j+1 \\ \>neigh\_pid(4) = MPI\_INQPID (gid, neigh\_def) \\ \>num\_neigh = mx\_neigh \\ C \hspace{5mm} Initialize the grid functions and start the iteration \\ \>call init (u, f) \\ \>do 10 it=1,100 \\ \>\>call relax (u, f) \\ C \hspace{5mm} Exchange data with neighbor processes \\ \>\>call exchange (u, neigh\_pid) \\ 10 \>continue \\ \>call output (u) \\ \>end \\ \end{tabbing} \caption{Set--up of process structure for two--dimensional parallel Poisson solver.} \label{poisson} \end{figure} \end{document} From owner-mpi-ptop@CS.UTK.EDU Wed May 5 05:30:36 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA18716; Wed, 5 May 93 05:30:36 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01134; Wed, 5 May 93 05:30:18 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 5 May 1993 05:30:16 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01101; Wed, 5 May 93 05:30:07 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA22153 (5.65c/IDA-1.4.4 for ); Wed, 5 May 1993 11:29:18 +0200 Received: by f1neuman.gmd.de id AA16964; Wed, 5 May 1993 11:29:34 GMT Date: Wed, 5 May 1993 11:29:34 GMT From: Rolf.Hempel@gmd.de Message-Id: <9305051129.AA16964@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: PostScript Cc: gmap10@f1neuman.gmd.de Here is the PostScript file of the newest version of the PTOP draft. I first compressed and then uuencoded it. Please send me your comments as soon as possible. Thanks! Rolf ------------------------ PostScript below ------------------------------ begin 664 PTOP.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R`$# MQ)`WBP*9,1"I4G4+[`J/$EQPP7&],XA1+F3)DY&6/$@.E4R)LZ;GJZ.>,6 M3\:2)6ODL`$"!PT93HO$/=FF31DW=.8\)&(ER4#";<+$99+8-'#V"L(I5 M*U>O8#FV+7.F,A0Y;\9,*4,G(YTR>%S`0?TPA((75,I@(>+SI8P:)7N.>4FF MC!D0N7?W!I&PM!L0+YSL*6ZF#W7H0O:(J4Q&H_$^3J!/V0-[#!KPT+'LF0+" M21\%0J!3D;*'CAS)<]A4+(/^19K\'YD!U!Q%A?>"'7.DH4=1:H%P0TYMU!&4 M@4"LY-P>_[$QQQY;E-3"6FOA!0(,72@PQAMN_$1''VD<]Z!.9[W!1AUTI(&B M1FG8X6!.5D@1XXPUWMB3CI:=`<()A8AQP3(1:9 M?6G@H5$=<`Q:*`T@F/42:G!UAVAY:(``!XV&5EI#HJR!P&A<(($`J:0T*D`@ M'7_BV1\0^L6%9!APE+&'?P""8%\=!?81WPM`1.9&'4"944899.PQ!QT5U3&' M<"^]H"NO;/@*K`*S%C7IBK<"<2(<:9SUZ@C79OL1%K9"9T03%6T1XH@@?(@N MB08:(800':X[8A<&NO%<24[&&2T0FP8;K]K;%X[#M0>" MPLU5)BZ*=%"11ZL@S.#P"T903"Z@>9J!F!R"MDOQNV\(ZFY\X0V[TES0B1$& M@2!@`0)3]^6!753D:F;S"T+4<3`90Z#!U!X*%,U4T$.7(4=_@ITHEY'[.GQ8 M=V00^JH9;[QQ)&M<(]9'3CB'H?.U9]M1,@ALO,$3NO8J,"UT__:[1;@O#/SJ M',>M9:#(]JG\L<,#%QS&P7@/O*&6+_!=,W2`D[R%XPZ5Y'B1Z]*K$<$&LX%W M$7O`@=+#SV5=*'65&4?QUW2$32W=:+1P1QIDT('&'N:U0$9%82A@.MN'G6%[ MIW/4(0:FK[^0.QIEL.02[K'O3FRE4\TU/*+%'Z\HWKGC@909>\0@`PXF1L\[ M]<$/KW'VR!]I//>QY_$]]+J?_WOUPD>:$_N*PB3##:)ZWZUR1P8\T$]Z84"? M]2*U%OZQ!GXM2$-DS')`^Q%*5A#Z;B:Y0)`08ODP8 M/4&5I'O?8V,+Y&>&XRRO>2VA0P"/!\$BUSK>M*:VF!"];21T,:CY!QW.3-4M@%^DFP+/PYI5DB,X>FL"[2 MH6=@S!1[ZL8>Q\5``<#\W?W2QT#W'>]W5XQ+%L68*<=I:5K#G%L:E0DP%*KP M/;=*`NYJZ$X0$`%O8D#)'HSE-&3%#"4M0$/77+D&-[SA#F[0#D`%^H8U#/,% M4TC"D9)8(!!4B"6548"(VO`&)5H$.E:P$\A,N*<^D>I.@:K46OKWNSE]JB0L MO>"A6N]I0,)UJ6$S)Z57]RS:#.>WLH*>\#;3SE;K&,M)V+/><%LWI"U MAMV!>1,)'4KDAIKZ$N>"^!O>#3"UAY(,6%&5>8T<[``40Z&`-W.`@W[RD((R MQ,%3>#`/NA"%8,0XC<%L4``*G*`;*E3XPA?IZ1E!(*"A@DFH!.IIBV,*]''0?ZQD.N$9`4H^4A&)C*+!]3DCT%9RBR:8)5G=N4LQY(_ M+[;QK7;:98I"ZSYNX-M%VJ"IMW#J4YOJSJ>B`FA!RX'0'/6HUY",+CFP(74? M+%@0<$R+)^*MS#L(=*E3IQ0IW?=SDV'4+&O">B3EG5TG<)"=P^>P"Y7L`>ZA!8AJ0N*>K3%IPP<'LK?>#-@2=CSZ([&^E9Y<#<(NT<(6I7Y>DB^ M:EG&YVJ!B:G!#'``@YOPA;"&G4'6#0L$ MM-957`F,`0#%MY:!\:"P-R@L#(Q0V!@4H;`S&`+:J;[VMK\=!C&0.PRF#G>Z MIQWM:O\[#`1_=Q@4_O"5,[S:$5_8P@O^\8%7.]_W3O>\VUWM;)\[W/4>@\S7 M'?`P&((,:*"`&]S$"#'`@0]H4!(B\`"ZA?5\:S=_^=@'GNZ3MSS>]:[XQB_^ M]Z`?O-I+'_G@0S[XC.]][W6O^\G/_O-NI_W@Z>YYV%=.]#2XP1!R@'K5)^'L MNF\[[W>O=O(7=@AY3_W:\SY[(^1@"$:@^@V,0/^VTY_W\R]__C6*]_NCG?Z9 MYW[P1W6H-P2SAW[H5WGC%W[F)WYJIQ8QD'U$D`,WD'H^\'V=5W@S8`0*$'__ M9P1ZAUMWIW7*%WPF6'\?:'\HF']_-WM_=W`,3.`,62('V!'Y&X'@HR(,>.`-O-WM\-P/\)W@F6()86'B^ M5WY:B(56*'SDQW>6!X5[)W=.J`!^AX+]QWDR,(1%>(0YD(3V1W=[YX%S6'Z3 MUW=X2(>4MX>5`X631W]"0'5.2'5QUWF&2(#RIWE_QW1&(G$ M-WU@*(6*6(:(V'\`&'L]:(A%L(%X5P/L5P0Y(`06^'W]IW\@J((C^'8[N'8`*'==^(5_-X:$*'=D2(5F"(!IZ'F=QX9NZ!6K"'Y` MZ(/*Z(OTYUI`.(KD%XF-N(B41X.VV(?#"(QV%WV>R'G7"'>^(K66'D"V72=-W_0J'H*0%@:XWI] M&'CCIWWZ-WYY6'X6>9$8^7^\YW\:.7P-^)'NN(`B67XA29(C^8`GZ8"%I5'A MIX.@F(XNB7=J003:]WX62%B7XGKS5WCS&'A+:)%=&)0>F85`691<:)3`EY1; MJ)1$>90KN910V91,R83^IX-1&(\Q8(0&B(JJJ'J$13XZ.01OQY.":(?S5XW] MUWG,EXUKZ7;,AX!OF7Z)8""8*ZYX%WEWEW%YI;*)J] M=W<*0)JH.9JJ69JK*9KS-P0;"']+N).O&9MB!YE59X3>!WX=6'X]&9!P)XN) M*(X..([*-Y:_AWC*^7N.&8658WE2:(QR)X7""9R@6'@XV'9&F'VHJ)N3.7\X M\(_TQWW^V(-/&'^MI5&D2(*6*7WN^9!ZJ(]^*)_T&9_V"9^E]YLQ>9:Y:(K9 MYW[>J1:(XI#SUXB?.'@'VGY;&(-@"(,K*9$^B9T<68=:F)VP-WN5J(>9QW<> M>)@H&(^&EW\K"8$2*)FLJ'[U"9\JFH>:R8OQV(LKRH=\QW\Q.I_W69$X2G6L MUX<9RJ-\J8(;R8%T:)E9&1,(Z5J["9[UAY!+&G\K"(;3IX'K^(!$P'N=B'E\ M>(F89Y%VB'=5*GE3VG>.!Z7^*'].RG;7>(U*NH/^B9#>N9`RT'I"(2['(S[^ M4W9F0)EKAP,@"((WP'J`"@.L1W6NA77N2 MUZ50>H7"B)11*90H:9*8=TUZ-W7O!WC/]W9B:(R&B*K$B8DMZ(VU^'F?N86@ M:7N&MY!UEW=QNH.B)WQQ%Z=I5P-#P'I:AP/!:GNSUW2^BHK=YP-8)X>#9X:[ MFG:$]79J889QQY)\]S]49X")^:RT^GG@*GO%)W:%)0,D2`.IQW<225A#V)U- M-YEVIW55F)5T)XO%&8ZORJ"S"JNT2JW4:H;_BG78J2Y(56J$KV[)2.[6)Y[3E9P,D6%@S2X[-%0*/)EXMSJ9+-AWN0&Y\W^WA85P1Q:GB7:[F-=[D;NZ-Y&`3)RGV& M5[(XD(31-WOFFGIR9ZY!``/0-;/3*:CJ*KN+&)X+>KL.X:"LJ7L!JWB\2WEM MB*KH&KO#*WP7NWNZ%)\WF!ZX,$"'HU*(-PAW>59[L0^8#;^8,C"Z_>FGH\:Z@V MH)ZN*WS0I:B4BJ"&^(H9:'^!UX*99P,+?'K)?`N\)3Q[.-FGK4IW9$P'[NIXI)RXJ' MJ'=#8`,R$*<,F7V&.G5LIP`NS'8N_+IQ2[97F+:;>JBN:WFL5X""NGYR1W6G M*0-5+*@T@+5]%[AXAZ[0:X1!P*QQ:D]SRC$U)`-Q*#Z(8G93IWU+&,>+"IN+ M>`.,^K!)JP!;[*PHJGEW.)`O28=7VG^"W*6#?,B&;(94]F96^NGT%N'IQZ)`>^Y*;-\%I1X-1.)UH:JJO M7(=\"LNS3,CK&G]3V*4;.*2>!Y"!IX76JU&)C(=:6)%?2*W%"+]]J'[#"(D: M^HE.F+$NN9B?J(-HZI+(.G@3.,JL>)D^N9F#YZ\`N9[2[%JX''^(N,N(R)BR MC(.D6*G$/)&6?,`J.+8+V,N#O';C!X(*X,6S^9F8&8`!'7L#?9D?NI5K>*SH M?)4OB8ZY^"#AS'UYA\'=#)7F&)SQ_,N^*:$<+7G_B'8?':*,^]&I!T`C&,ZD MZIIW-YW(C-+JZIPH#8.R:)76['C`#,RGJ7\WK=,\_9*?.8]B%[K)%,[9.6WO=>8 M/;::#=J??=FEW=:5+=J9O=IM9Z8/Z-JM_=>P+8Z>-W5Y77Q,K8N,NLFH/#"7L,KGXCZ(&6-^')'*IV M*'<83G=R=[X)'GH@_N$4::F5RHOJ8+GZ:WK"9U MF'H+:0/V:XI"X`-(.*GZS9^Q9]2M..4`^8^DN*ZM[)O[G.A/2>:8I^CSJ]&0 MCM$2O,"Q1XYG38<_^<4Q8.>H:(HYH`!Z7LI,F^F7_N>&7N5C#J'^B+%\RNJ; MR:=%;GR_.C7G=&IEYTD*-TY6.M-:(J'N[D/N[FKN`TFNWB MKN#ESN[F?I;+6'E[.P/S![IJ`;B<*8M&7IAHRJ=D",>!&[@2^>_&>.@$OW<& M;ZK2B?#YV^_6F94=&*HLSN(R6HW1O-_13,>5WK&8^8`=;W?,V/%>O:BX9X`A M")M?3H"_R8.MW89W/M'?IX:3?9'929*][-6C7?./3/,YW_,\__,6J?,(;-*/ M#.?V-[?H**SH*(IW2*0;"H^2SNM0S_#]QW].'_5/C\!4+_5:?_5;G_6M^/62 M;N33^(I`[7\Q`+KTOMAM:`23V7S4&-8B^LX,2+46Z>(S[XM:GYU\']U[[_=A MW_=_/_A53_@]^9M",'K&;80W3-2'2?B"'_B`'_F=A_.0/_F8?_F:+_F;S\YA M?_B9GOAK;^])^Y5)N*1D:?3]A_3VI_1-#X]6[/6R/_6SW_6T?_NVG_N%+_:\ M7_MA;YEG;_9+R(-FR-C#;HINKQ8.P>=4R>ID:(X9.^T0"NTG/_WP%X*8B?U3 MG?W7+9"EQ_WAO/W6;_W`;\Z?W[4P.*&9?IO'#_..[\TK27]*39"K_OJ;WXE] M3XB>9^:-'O9IOO_GJ^;Q/ULG`-$<`8QN^N\.=2*Z]XJ(;@6YG,@T_@>:QW,[&^D=N!Z&YG?#DK\@@(0M< M.B\-:CD+V`0KH!KL;&K0";;!`V6-Z->F>WE+CA7)OU^GOBP4Z/&`).BDH:\; M^'^H$N[Y376PGGV[$+2M;E$?`H3K"PR]HM#$D0P0,U(+[8]DG:AVQ`E)TMN2 M3S3J^?@QH4-VU.W67[K3=NLMV*`J=41\D]>=B(2W<4R<0-E4J M+11_O)KX0%`231.^/WI6?^@9U_M]N`\9ZCZI-P-]WS%\AF`/&F*]:-X=)A&"S_/+V\I M,P26M0(=EYH)]]#Z/*@AL+*T3S^L=3_NQ,E!-NB4-%4,4$5VSOW4`(.E!6=3 MDX)UB^HA]C8.Y^V.U2S,7Q=Q7?D=EH:\T,[Y(@*F2J.!1+GU=HZ@]8%"J8?M M6!^UQ*="W.KC4\3JD0F!P3.J,,],)$)TA_^8P)#%T]Z91O.):,<`2I[N-9^Z M$(KB/;_A#BI$(K:;RN%,PW+3SF&1NW6XE"`4_NE=#*^/Q<.GY,XV8#W<4_H0 M+-JS?L@/1=O*PG%"+CO!P=&&A:+2^<%(4:N/31^Y"((J4EWD4CNL:KFNFNB3 M3%P4O(((R105`3*V%I:;9`-NU&HF0IU]--'$!Q4B`F?,"#B*E8.G'%\O`F[% M[U`Q*M'G`UH/^(E?L6T>JI\$M(%2X@SX=*,*!7DQ?Y:Q;@+\28FD432"1ME( MP4H4NEIRC_'LL$9/9-3\U#SB3\(M.`I'_L2?E!KZ@4D;R@SA'(2%Z(`H(&#C$FI1;D@J[5^@%]QF@'+C?`]*&*4HN$C\HQP?E3ZHZ3LHGIRTGA5626Y MI*I\3;_-(9K)_&.0H$Z1Y)34RR$M(93G&_M4&?I7_TKPY"?]1XU*'NPI`I2P M\2RT7Z2,$-KZ^1\3J$.JA85HRL:6M9Q8V%)4[L?FQAZ56!);=-]R8F$=7F6X M1ICSD5\4BJN-.PADQ]S/PQJ4'(@<]J"9=L"FT'"REWT(7TZ=422TC``)B@G^ MLNVDHG])!(3`,"J8!Q,^'$R#^:GLEL/43N(#(4G+F&#&"*01.`Y[C(UMCF2' MICY@8MIV<6<#>;&T`XA"$"?ZD@P(*_JN\:,R6V8#0FLZ$4:MS*.4,C^2RZR9 M.)-EVDR\X^%\3\ZDF3KS9_X?,SDTGQS>86P\T29YI6LRJ8"B?LMA@&=D>B_? M]26;I%2"2I<1`'FXWL4US4_7_%U@DQUZS;$9-GVFV`159I.`@:>UBW*-VK$_AJ9.1JR/J32TE>*R/W4Q*)FPI!4XI*'/J&H M\,/!ZF;B#(TA#G0!R@F$M%;/\N,!O. MS),I[$[.QL+UOEHGE/J;;U%U(D[/21\EI_VJG-\G[?0[](2D=EW70EYI!XEM M!4>%$UF/8WM@R`[T/<7",A/Y#@X@"8,Q=^XI)R6_@`-K"5G&$U[=LHPU):%+ MW($N;F<'828")`%]$0%J7]\J99F?D6FXMM#C0C[(RQBIGQE`@A(B83ML1XU= M;:54]*Z`@[/Z7Q>)+0I0GN<72=P@PWDFCGZ>1?BH0"W2P^I"#]2!7K2WJ-EX MD46RH(C21FY.45B(*M6$8D^\!X0ZSN_E.2\:[#%':M$'"K]KYJ)T50R@20*H M\_B`U7+Z0-1^[&4^:"-YQ_V'>4)A?`Q$[1%<^;/M&/*^%?0KC^#JB%X>889$ MBV@2C54JB1EAK"!:VV*8'^.AM,H+[C95=PIEYD$\1:DH3LW0TC6I.A&F&WZ' M<.^<2[S3L#Z/,&M>F@<>WDA:-*0T:&RS0NH'GT5"+N4>]>*WJHX!-+^%JR7U M'<4CJZ)#T8E2A9_98[`&F.SQ.Q=QG,D$05K(K!3Z652H2/3$@,?&-"VC<;1& MGQ1]Z="I*4IW&W5,CJ9TE)[2E;1*22DJ;6Y!2OVYIU=:2FE5*SVE5D^5ZM)4 MRDMMZ2X%I55)_J$]QK8_BU8XM(R)$(N&J_BH3)LI,WVFWRKS,-%H"DV7*:VJ M9B@(`2&DF7A,]9OY]$7HR`Z](DS6_S29HQI!HG`D[IUTBD[I$/QQ6*+PG;JN M>+K`XFGIV5;Q]`#E4WSJ3@_1E%19_C2>!E1WRNP,Z26=6SDQ]!34>+IV.)8[ M;:@&%:(R5(DT4:?30Z6HE2=AI2=01,?@'3A]8^FH#8'1Q$>R[%@-Y:C?E"-1 M.)[D#F^@WM$HZI3WR%.9FGEDZ@%263?U_`0NF1I]>*J;:UIL1Z;6G2%`HRRJ M4/6'32ON"-4PV+28:NRL=1A+J-+`$$<=7^J;[&#@U/Q4PA`X4F5H-T.+B)#A M=:E$NH70U@YU3YI(/HE"@3>D8E>GPF?DZ_+`U;J#*./J]YJK>-5JK56+VA[W M*BDEJYBHD5)3$KK@0FAUFFQ=:,5]44SZ?L2H.$2.^BG^V=)(F+[DJF6]JY)N(JOU218[MJY*XL$J& MQNH-2"EL>\.ERM%G&]K):UKEXJZ-16#6G`JODZ6M77;KNG M6_2_&E(#2ZM$(8/]/*VEUW6Q.O@]ZR`]JUKK"OW0)*[D52F36B-P?#5CN55= M!4!K:N^955/T?W6XSP-=4FR+I57Z<(`&TAE[6FLL:JU:,M;&IM8=*UI[[&C= ML8.-J'K0@@1;MVD6;'++[2E&,R5+?_@>#!*NYDC"^K)>9_4VE+=[9ZUJGE*= M"[5E9P^7U;(`-'`YR%"EX78J[8%-&NXYN3E_6HZPT>($0FXVH^XZ.&M=S5D] M#)AKY\[VNGIX`V9B0^ULSVZGP4`(6;:4]1VO-PLLF7-R_((VZ\Y13N35CVVQC;9 MGLWN1;`"8)G".^2IM4$H(01IX2:^`T78*&12.]R"+IWI8'4(CU3S8"VY$T%= M%--[EA)3?.`O1/8);]3;HE$Y"F[%6X07B-Q%\WI"&C2M=B/T15FM6&?EMP#W MW^[;M*JN$-:5*DO7S6?J3!WV@XU>T%&[N-547(G;P%5N MORGPBYBP5GR`NFZFT(S1E*I`R,G2$T^G[;3K M)VG*G4=5T9S/'`-%7RID$H'S-7$9H3D203<(!F&COM-\T.RO\VAC*ENZSE\G M9*W38'-5*[+"X:*M2W[V;67U1$RH\@0OA-2&%J(6K+6Z%M>JW;3+MJ;MT&U" M_NCRB*&$18S"4#([5U-F9.I0=8CI#U_"&GK.+Z&XMVV64GW=2NE8#9@FA%9%* M0.(G:^6=E5@6>VU'BU@HZ?E$7`7T)HFJSNI@AXG[S#3=VVI?J.$UDH1EP-#: M&QAY*>]++;ZH,_DBW^4[>9,O_;F2^@WS:M[82M006D@S`KZ6/!&DKC6(F/6WMZXI@MUIP=RL8Z:MZ/6\H->;>E,A!"A# M+@!QN+'0_1C<)\1779`&Y5`:*@MW8"V,A<51/2K!B71\'5Q[FW#;;8U*4?/6 M$PT?EL>$T^V@'(G0S`B((!&4O9HO\TV=*"RKOL/* M5Q=&W.M%BD>QVX$]4XW#I3V$Q'3@ZW&$OL?1`??=!2R+:3$"GL4-.`Q=2>9* M0:E/#PI."K<2-UQQZ,V"6\`Z5L;H]_Q-NZD.(P_^<8D5*(1.4G7$RPK90+R: MRJ=(M>`ZUQ!CTT\2IO`G8#U;7=01TT_&6CP'$8`:GH.(#QL/.[:;NLDT#1ZM MA'_H<>!IL8;5W=56>6C(W.J]ZE2"YXN^6@50)*.GAX5U!.Q#B]MPK>R(6+33[206,]B M5$47S#%63'%A)$J76BA=9J>U]*GKYZ>"W-AJ=5.Y*C\Q:-F*ARZD(J.6$4@R MMP,858'@#^R!'6HC$:"-Q(OPCY"M=1()+C]`C2:7*:!XNHIV>2[GNKISM@MY9S(/8CRS?40^DWM>1:N=)O&*-RZ)0I'L;%ZZ3K7#2P47$5 MNL)V5SXG,OBZD>K')/L>#62'()!B*Y(7[*:XGBB[H5KS"Q2LC3>`/C[.1YLI M7^:3?#,P\BE/YNEV$!(1&%TXZ:0*/R.$Y:(8)4-G'79S1K=0<9AZ'N12I)I3B%B7_N/*OG6=@+ M35T,(Y5H4)P-4=E;D$Q1']Y-G2=D(53PN8_@%S+S/$;.3'DRWHB@3AZT@E;` M$G[ALM`CD(#0:58+?VM:)L_RA)#!4W6^T-0Y0TMGZ#R=-[1U5HL<&CIWHI0W M?1A8RFNRKJ4/YSFU('PCH_[@"\_3=^0IA,H[_X[U9%2LYU'ML>CXP

ZP1A M>7.$&1_N1L)HKI$FG*!X$Y<\:R2+>C-1S0$S;,F-A.K%C*A=N2*A.\H'7=,M M[0/=X-,ZM![)F&DJ$A>,KO*M>T\#;_&Z(%XD?]@T#1*NL\>*[JB[X\/FIB@, M:4)(#D^@*`VI/N35&+U4KMF"LZM+4`*M?R6I/'A6DM M*"5_O)HWPCI_YW+]G1U5@^(K$\/&4,MJJ:"<)H08*Y]ND__R-X52+I>#D*)% M&J_C=4>I'5FMM5R2V:[]TDCT\C0B-EV^_I"E9W??FUAL:*&:ET.L._Z?/@UW9'5SP=@ M4\3%VY[B44@Z[OI13K38$_N*KEM'L MJ[ES;ENZ]D@DEC2".$\LJCTH5'VF;.D394-5R99TJQ'1`A!$:Y;P-75J;LQH MALGAH^58I[495<8H2@P):7`+1PLK;AM2HU#*OB^=E[V*&=6[TO"1!@+:J&6] M<%V[.W=8&Q5F[>[(>C:JVK&C]]HGWU:L$WZ^:^'YKM8GA%+K3I58;]X+=7E" M@/NT(>WIL(GBU*QMC-"/L4_I(WN5[@#V8T=W`B91&Y0#+:!4,Z*$NQ5=-()5 M>/J9.,-H$?MQU^!V^%=OJ\>>FBW;3:[8YT,J-0]K1(0^;&>O(W-%M_4C#7P^ MJW%)ST.OC:)$(<4.VX;T=2C`?'9>VNSI^12-G6O'HVPFOT0=X_VZK M);S3-6'%.M01>5LI8ZVHW=/EHHX03JK*WKSMK8`;(=+9M[/#\LEK5(6H=^IF MV:^[=7.M42B[RS?YMMV=34-61]Q==[YBW/V`9MF=O-M/M2Y'>G_UFQ%7&.?K22.6T_K M!&WB@/2)2[8H#JRI(\E^3YD;B2K:EZW%*9(0GYK=<6_#VR^^MX-H=V3BJNZ, MGBD[U,,*N.62`=J3[%GM[)@=SS@1O^.%U#.;UAL+;G7L7,7?[!I8HT=TE[S!NI;CVV=9L-."86Z1D3J-H`#(O/,Y\F1>>ECBOI[EFDU]J MX5P/HR04,\RYWC*I^L M/UU?\\X[79L/U6FP[<3R#C_W8;\YL#9O",N'CB5Y-.@_UL2ZNYYT'(\<8]/E M,F",L2(`8N9J7;,K9KE(1F7T>>V8EGE'G]?':IF']$4'N_+UK$:#%LE*C]>E MN]+GM_$V8BF][JSTZ1.G$.7^4M];;W_48W'.^YEBKZ%#-OM(5RSP>[JJ,0BH9L MG5C*Q:>UT^"X;)^%)[5>M=$36U?KPZP](["X;HUU60IG>'[U3OM(2G5+3?:( MPJJ2")'^T4O+I2H4<1,[<=L(D.Z)7K=):7Q./!);/(9;=H>Q)?OKKMF#50#V MUY[Y8!,W($./H+V4AW923LH#EXNKY-,QM??O3+YXX?<"PMY'J_*5;H!(4<$T M"[?;M1Q\A=N:I]`4*8#.[6!/MW9V^IH=Z6"5LUIYB&"]U!]<'L,/XVZ/[2G@ M::""!]VG^].6[DZ,.FF4KHWFG'E5@I//3[%'-,NU29^.LR)%B2KT\&KOQ8#_ M,9U3QYHVOBL?34M:KQTP(W7S#TA%*)ZF7*VF:975;P?`3S'?(^#3-@"521/)/WCCOJHD5Y:%Y[MCN4O_*D5'7/[BSO MGK2\EX]/X]*VI7*O%9]@N=Z1U;H'S>L=/D2MK&58S&=OFR:N(R)VU9$IA1ID M'>I/CU9ZO:R[5/@.W_OZ*?7K1R>KO5BA7_-!M+GB[N=7OR]/\68]RA6GLQT3 MAWH"*/M>.^,5TP?0#\[:IP_>^T)7R,G;'U_EX]^X4+YT;'C_*5[>7N2GJ7C, M6I.]R;,[66^'%/@?L_7."]%[.XBGZS&1N#;IOAZE4ZJ2'EYG#[$OI%::5L=I M,B2KWW2[WO*I['L%\7?-OGM5!I:/K,?MC->XD^TUUZ$E1!V(5B,\ZB/N"V`& MQ-H=&SSF^%'JD>X67&SJQGM9*^IH5>K9'+X3?OC'!V'TO@,'!2$2S?291]Q_ M'A^'SLQC!//@8=&GX[UQ7ZW9(A/DX^LNXK>=JJVH^]E\+.D7Z9)B)`R^KD?; MY1IM6=K$??$&W]K'?$0JX9;L^H[#W]3&';E5OT"G25RD`1!``YRRN=J8H9'P MJ*0?K?/=)U:-V7Z,<^NXRNYMK:G1;Z:O6^CK;43KB2]:\NE8>3/\1%UE1MQH M$A%@;!'(M*EL_NO:B[/SZ;:5DT$_Z:'_N5*'+CJ^][GZ$J M;_;\Y1/W@\^*+2Q5GPAA?1[>S2J49DM;R,E>92-]ADDODS/'#$@CK2W0>\,;",>]VY#.@>9+7_^7F2AI2+U1W M;.VLG@'%^=>Z')M-&B_MV+$A@`_=WA;SY?#^:H+>-*RBO.4Q`TIP\`BC83/L M+3]UJ(Z4PQ]N^7Z*=?S7[KR]UMV2^5_0H+>WK+[FAU=.[:P-O>XEW=73H5-S M0AC-F;E9AXC&O_E/1N3?2:'_\T_(^%G[7__PWY:%?WN$YHZ1?([_VM^M&:0- M^WX6TN:/D"H/9I2832BQ60'H1QF`"&!PU$)]6,*-%=/#K!W-40^3`\Q0?AIX MXFFQDR`6`ONYQ8Q)031-=8#"D0P3I##P%AD5TMZI2R%1Z%' MDH13C7*`3M#3!.(A0HZ\DL\(']F?YY1>H6(GH!(XQ4$Y,D_0AL^T2D"1ZJ7+ M6#+J6/878WE]\(]^LILQ:0Y!Z@+1J1X,V[3VY#QOGPA`LW>,1#[13Q+2U%96 MRC0BR(PB-X_A`12%*)H-I^-`*8$,3'@$`A$T`90BZ`C>>(O@H-63S5.%X""( MM510^8Q@ILSL@88(:I,"8457ERN"CAPDE),,0++8.344R):8123IC_[A`0TR MUQ=>MB3M@=4-/+,D<3(2BM^1"U8.>-KV<]=(*(<97`,,WH*^H##XR'@XO6`P MJ,GT@KI@RD>:13H^44@C#39N=9DY]>SL/VH-SN:NM3VWT_@@E%$V$A)*P\H` M04<7XQ'27"A1UQZX))$@_XCWE.NX@RB-/D3TW#03E)_SS="#.\U.(P^F9&]1 M.]@/:B%"%IXF?V`G`^$&Q8X,6BX(-@0#D2+"S0"8@>UL!)FI]UB!@S4-H44. MRC3`QSDX"ZZ#2U(_\PYV1/X@.\@/:C3XH"L"`MF#UTT]B)QH-!L+3[,/JF.2 MX)(T"<:$-*$26!-Z0/6:&M>/N7%S6T4S!]HX]0U#@IE MR$PX1LD@V`KJ>8B@3`A`'389223("+I'2*"25-CQ0;+(A+/4W#15B*`5`S*% MD`Y01-*,52Q5I#,-VH+@EE#8?Q0SRD@P\HK`'FY@4*!E$<)`JB%K>!JVAK#A M:R@;\H*SH6LX`%9Z;ES6EQ>22=L2;SAH<5J-6Q^C#D8Z+^%'\M$8,W='6/31 M]$,M#7_W%:$T\XT?.,FA13_($#C).4M]D6F3?PR"1(^.]YFP@E?A:@@$F86P M3Z13#3(ZXV!E***X)(/-MM0>CAX\X01X`RPMIMM^1,0U;C.A3:@?AD?[H67# M'_Z'_J$?U1].<@$B@6@@]C0A3DBC#(8@KV`PJ'N0-,&@SR6Y9&9@D.5E*>E' M:8\;QY@T1&W;&I[8YG]+QK1C(@1"8E!8H]XC/@_WE-(I!;] M+S@(^-0C-HE(XI\C%*%B,9&0J,TD0)X33A0EUB$S4)@%^'B)3=`)-?5`,[!, MFI)-#3E/!VRWCNPM%(WC$R4E0HG094/+=2E^4ZWC-VF$#HM/Y#'TT1A.[XSAU(D8BG/A")4H>DY"D.$$D#B*B`BD"((XBI<)I5@=-G4; M"*5X8?4O&PV\1^H4AS!A>R*_%1YA$6BEYQEWL`<1(QIV@Z2A"G+ML%;(63,( M`PDD5DYIQJ'].4[3Z+71)$D_"*\8*MV#)N%]=Q*&52CA6:.%Y"?#XK#H*UXV M#M%&DRL*26#.]L7H8%D/UUGHX-5K-@\;UW_8A?_#-V@.R3IFV6E(+3XGBDEY M>!9R1(++N0@#J3+P"+K8B5B+"Z$/X@%E.NK-,D+J#(@(8GX((!Z(?F&!F"]* MA3%A?!5?N240'=_'M*@^,9,:@HC@@F89AJ/)+(RVXA.HSS"+$=&N>"S^(,FB ML*@Q!HL<([#H,7X@]]U'$Q8NBS@4((CH[#+:1S-2_DF'V%?7@F4A9[`/GF?< M,28F4%'BOL4MQEW^M]^Y(FV;MQ;"M8&'2GA2"L9-X&*])O.@-%5@:S@>PH!D M8:ZCGJ"%`=%Q"#6^.%)C3T,>RH058D3R^>5'Z16A$XR,.3V-I1+MW(>$T*S( M>Z2'M)T=".F2P!X,1%RP0B MZ%)K`?55454:@)8273L1"5RFJED\SLU^LEIY4Q9@.57R.01*U5`$P\%P^'!3,9."8/2@/MY#JK%Q"4%\%`8@D05`0$ M@S8`[6@[.HWJ&+ZH+_J+NR._"#`2/;YC3;@O_HO"(U#(D51XR8C!8K\0-P8C M-@/Z%$/I#4#8D\F"L9,D2#UJ%-0C-"8]RH398_-`CI#5VU[7ZZ!=`%$*V>+1=N`ARO>_O#/HWX.H,!8D M]8N[LN3H\D>D9JP.A2$!+Y+03WID_%N`\4G_L,BB:4/-"87_W(I!DI3UW4`A9I^K0 M0.I?>A;KQ#HH9$3B1NHZZ%H>=24I,*1..F*0_"R\<\O-!S00Q4$$$2K9!JF2;A":XFQM(%B.Z"BXQ(H= M6BT9HGUH&IHMB4O&/[ND+EF=S2,5'B#8??@J$E[IV'R0A7-/-$0$)H"SF6UV M_]QFD8_GXTQ^/B/9W9'XB!V+3>/1$)F2J>1,5@%Y/JND-\E*!B%;T%O8I64G M]5\"-(P$52-*]V%_3%O+SB,WU\E5X@OW!X2%7V;=]%0739+/E_X2T8PRP==) MI??49M!D0?E,MI,')4&94$Z3:R!@I*S4*EI05YC@;$'E"<"B.[T?ST\1T+7] M9E=.04A.>I1?SN)%3NY#BEL.55**E"%EPQ/VW#(K)9K3V[B4)B4YV;V=E"KE M2UGF+"'SCQ:)4YJ)B,TSLK=07]\8+P((^BL/2V_"5"TTB@B&YJ$IE;YD+GE+ M,I42$%-YI@B3P"2*YE-^D2>*&N(Y&I$*$OICZE0_51<:DA/J>U,/K-"8YR%_I M^91&K=E?Z5?VE3G4B'8I5?MME]HEQ\(//8U8(NK!<#6/#M$T\A3M)`=, MEU:..6=Z4W*FCB5G?>*STJU!8^B'$)!F!44'T4\%C+DE>0MQ%C^26O50YP%@ MVCRD\TDJ7\AUB6SP(](6<43A,1X3I M_BPU1.0.R?>H9?.0$(E()6/SB[R"\NE#9(C\QD[N//<,7Q1[O&38%GX3WR`\ M>(\&M[9,F3TFHS5WN&^Z$*(3%JE<[IB@MD.*:B2)]#574E^#39EH`IF0FTB+ MN67Y,DGB2N)=BCN#3!@X$DHD5"*3Z)GX,M0==++P9$W^QT)2O\R5>5!DI`;` M!$Q$#X/SK1^02P,G'M%=JLISM:J\*@A6EH4^B5K]2K^2J^P>QAD^QZL4*[]* ML3*LT'[&"L3D'Q%D1L@-^4%B"/[2JY9.8A:EZ:FJ:MT;3R=\`&L""O)"Z@9GK4=-4`H(]$\1RO)I))AB2W3 MBDQBK5@K5(>VD@1V*V=DV5>D02R+FJ"2KM0CZ\H74Y,8(F`OB:0/L*/T,'2("U21!U=M#K)F"6H?-*<:58Z9(0^+?P2-&#N$!>YGO8QB M2QO*!&_>8)/;=.5[TF`?6+'VSL%ID1#G"6%U=;*1AFFEU"_;1ZDI>9HCIB`> MLWD*G-D'&F+LR7XZ"LETK_6;.J?PM[;P?F)>BO*%?$4DRKB9E4POK%_OD9?0 M3XU'X#)Q1EP!7M$5?#!+W@(_JB*R)W$VO7PZ#LE*XWHJ'N^GY5ET MR2[DQ_U9Q9!,JI*KM"H-H"CH=/)OGF"6#H*GS%!F=Q-U1(1XGP\)]S1P*A[0 M!?]Q7](N+B3$1),TG\!7&[*4<0RN1&OA/[0Q>JAFJA M:&@;.H;N)*S:"R4@B2RHQXKFIUU@BD?C$O<=7224M**[1'^KYM_A0]5KNDLA MZKXT*(%DJ%CJ!FJC();#2$9>GQ4H<;G,UIX M0J/(:#0ZB%*C7Z@S6H9*HU!*-+J-BJ'@B#8JCF:C"LQ0R>6,'K9HU:'8"4,D MJ%OGIV0_O>+,$@18>8B*$V.4S6Z#BK=YKV$=$0QA<8_6'8P5ZH$;I9](W8"W MY8U+:)O*4E2%1D';XZ0WZ6JT$^ST2QYLAH?4I+J?2BIH':1)'PP8>Y'/YJE92G]2*.0I6PI M1M*6&HV?X5AVELZE4Z%8:I>&I7@I6OJ6WJ5ZZ<*WE^X>Q&0.H/9\)]/3]?.G M3#&!"J'"KMBC!">.YJ@T1!T.1]*ZO%HX0.MR3.E.,!%Z4EC<:+1?CH:_F'0; MJ3H6E-JDQ]?H5.3I35D+1DJ:NJ19Z4^*FC9UJ:(ZMI-RI*%1:)J:PJ:K:?5( M6,@`UA^+-ID\C5S([17;0#BN2CA2:QZGE)5P-8*54B&8):G[*EZ M2IZ^:6P@ZC''0&E>*1X:F&PAFMJR%J=I'B8E%:;@I"]?V.HR.9*`>-R.U?SU M?GSI`B*CN#BPQXYRYLU#V=[7AB;R20$@A>/-+8_U*5!TG_8>]YN!E0$>4B;8 M#YG0M9HVRB#HQ<)\T M61.#6&DZ$1%]&C?-3Q=@Y:,#V8I%*DD2](RI8FJ9^H#`CP]+(YF+@!ZU)XX' M?A9R?55T*J=Z+Y&(YZ*C@!Z7RPFU:SIJ/2C9(;J!IU.5/PEXC$M;$E_%BTTA M]PF"!8A^*OM/\!)[8)X5T96UB71AT^F<:MI1I\!5IIHOW4O9*92B>N/*9";52)0'NUTN80OL)NZ9..W(JR:KSFMZD;AW`BY*/6>NFLFI MJ)1**%2@DDXIV6HOV3A+G<*JLLB3:*3-S1REX`Z0+=$*!(&=4 MCN.3V%1KZCO3ZZR9!%B49ZSNH.!J)N82-:O5YMJ&=3B@+I%/)*JB(D,7L1J< MSJ1U'W%*CH(>E&J_!9T*GY>JI>I6U792SHNJ?MB7[MAJ%")-GTTJHOIT]FSPF@6DC1QJ39=$94?#0N>1Y,7=0ZP!QZ2PD: M5`OVF4K--.*K2&`+&WVH"N);BI3C@25*=HX4V^<115*57=IJLXVMN1U@)V5FQI'Y'7VG%NU-OTLQ&=?5=4%SJW"D!SE%R:(4)TC4__`[#%3RI) M331Y+$0FD_2!G=AM(`X#LO`T+54;=T>KY M/BN=S=$ZQ3`@W5Z\E[0&'V%>JZJ2*'LJ"@7D_[D\VTQ/&);Q0K=5V]H^O7JO M6QD7N"U1XM%$E&`-KQ41I@.V?:C%:[CC8(%MY=/RNF`=KZ/0\^FU]J.J& MNE%LX>BB&>Y\;I66FFBY_"T3H1HB3@TP)]!IRDB9=+*7^1:[G6^82.W6OB)[ M\.OM(1=1=&+C+42[Q:_W*Z7RJVIJ_,THQ+_.:KS@2BH*<6H=*4,5O$Z7%:H= M.7)F;]W46/9&?2NH&_DZP(Q+Z2O[ZKI9L./;^^JK0GOOJ_[Z'- ML/AK8/6K:G(XWHQGX_UOG5YZ]7P-<$R'+G?`36L_B;^6>L!.R5R9]XT_@1Q"YU4U5V%[2*<)YK$ANZ#A](+.B*L-EUAM3IT@>24HCD%+NX M26[7A%CGB9)0D1KC`7/>(`=?>*CM17@[G%`&Z[B7:X??"L'.K<,H&SO9O;%& MG!(GT,&Q2K76L&WO'`A!Z;!Z[QOZQ;2P@:_8I.,J(,K*0>*_(39#' MZ"A]"UG=RL@^LH[LM@/)\JV-+"4[R4IV+10PTE@:GJH_NZPURE7U%@N,=)S9Z!1$)TP',,#;`C'#%GWHD5AC< MVF#&K7&4V`K(7K)XZPU$]/PBQA'!V`W^+?-A*I@6>F:\*GD4S0ITTNP).\U> ML]9L-GNEG:]#JQ&[S=(=#M6D%K")1X9JBRJ;_"*WB0P+5"8RY1,D$\5Z'H1: MN0+/(D7SK*+F>>2P6LL]"\W=L\(2-==YWFO\[-=VSXHAX$JCQK.>=(1(06MY M7)I:RT*KT`I9#.T4$^`5M(J'<3:I3;3WK/%"T:8=>Q2PV='"9-\*Z0'24K0\ M;.I*THIU&BCT86*-:#])0Q=_)$40W3S:$!4PBHGB10,MKFOJ9IK3"BH?W?1I MTF4?"2W%J1S5:L*>M]GF36KJVQ23U.9SXQ)3"\`>(@"L6Q+5(BU]'BO'X36U M:,?0,N#-`&.GY]+5-D%17D8;TI8MAVO5VB7V.NM/K\43UGF3C.V!SZ@JP6PU M911Z1X!5"]=7Y6,H7!1[6)4Y=5U?RQ5Q5WSMSD/7";;66%YKO1P\&,UM5X:, M<835PA)\*%.Y7=VUI>RL_1CM*K>!KXZ/'*>\(E*^FN_IQU)V:&MH2[=Z.S2( M:!O($RUM77'6PN? M`'?Q4=1ECI2VCMWDZKT/#5X6*;8R5[;VYIT;)BUQ+Y%6!2/EO)TV3A&421H M!")C:HP-N-B%9:X0#&@C;;`R:-&FN_H_O5T2TFG63L#?B=5(0(EEF'BDE%]%H]^GG$*2G6 ML))%;7DCWI9+X@%2+LXGQV-UP$1<;P;90;1 M`7F6D9"WR'IO@![@-L'NN6=K*B=[\;FCK)XKZ`:ZA.Z?*^@2M^CK4#KH&KJ% MKJ)+Z$9J]`E(NK!*2O)>[T'$59DMS*9'I92XB:R=!TOB>7N40U!G9HD"[$I* M'7UY7%[#B42-2WQ/=:11A%>9!ZRKG29KA12M%K@$<1SLK>NTL&]2[=G2>3R' MXAV7DNE1?$7LY,AXQ:[(+N[&F&RM+]]CA>I!C]2'33O9`5&#KNS!>?2J-!!3 M!Z%HNPMK$!6F4*U5AP/C[8J[D-OG89$1+`-?LM^:#TC%>MQ;U[E14\VQZH*=3)1PB+N!=W!+SG'KHC!QE0@VRPIAY-?051 MQ:JV720BK:B'Q3"[ELMEFM3`)"^F#"=]@*3D;MBSS\!N:]]ZBW[(1]N>1BG* M"7Q-;*=GR7USN%IXU"*V-EF=T%K$#K%3K?$&/^)K5NV@=[=";&9))W;V;+(2 M(5$#):591"^(4_06O>?+T6OT+KU*;]/+]#Z]3J\<,WCPIMH'8_.8,AV^G([" MC_HP_=P44X^FH_EHV,NPX`#`RCOZCFH?@,CQPG8L*HF=5RKUO79OWHOW[KUZK^NB#DF]#P(,9?4:D_C=0WH+X182#ZO9)-V+^\C( M$]C97"L2:'+0KF.PRD$KU8H@8(N=\_&-D6",_>)\4B"^G--9I2J^HR^5VGXB MAK,C$&5LA9ZDR2OJX":LL._K*_NN2)=((TII.BKF!S^4M7B5I0BSZ^3B,'+_CR6P$A-!P@Z%HDF_]D)JH;]3*[ M'-<5_GJCP@<4.O[:AR-JBEIU/B2$2*_V%E&P92#C)Z!PD-(O#90755>/&$,V MN?B=QT>"4GQDKP]PX=F-0L`8\#1:##DQ="A$6=%((J-((!0R`29:!XJDX)[` MQ6<*#'!19B9;XPEWM">PVL0#!0*%GZ1NV0!='AFIVJ8#0W;IJFBJ-YF>AQ#G ML2JZ'[<1O"+Z6JE*2K*^ M*"II@IW1HOJC7.D5F()&,/"C468MGV4LA&QYP3.3%(PT9(JP@+TGV;ZBWV=^I\/%1`/-DRL3L=Q^_WJ6_OOOQ6"D;_[[\#U_>)+XED;Y;?@'OP2P0IO M5;_8[_2[(*G$[DK_2/(L(3&1?+I^V"O`""^,"_O"OK!^@@^K6Q@((":OI!W$ MIG+D%1LJPNP."4N"(I%'(A(`!\"\&J\6$OUF^:<=,L.0'IXO5GQV?%=T,6YJ MI`$_Z4@O;`LKP2:,,^,7*QY_L?09=YHC,PR1I(JPM>+8-/(.0YWQ\#OD MJ^:A>;,C%\+F7;J!Z*S:U+0I>M`)D@D^J2HVZ?YJ@_Z?E2:ID M,>`(#9#%"!\Y+.0R$[2NX4F81_O=`*K7;V9W]EI[1^NRD05-V#$06V5",.5( MA&F[5J(6%!_Z((:GAU!PD]ZG0@<4R";4R MAF0K?X>=HRP!->+F7$E>HK/\6;$YC,5\'$-0,`-<"F3'QB1#-IG($?[U38DH MX0=)0($,(J[%WW+[14=?"`SHW2AFW)(^R4V2Q7D/E6PE^R(H\90<8F[),D^7 MC$-]R5JRE_P!9I-1/3"UJ)VC!`0!/`P<-R4QN>( MC;`BB$+.F)1#,C5B;OURZ4@_,Y(5,#,-H?Q-'3!$\CB$X;1M/>-Y)=K0(57( M;$79QK?H%>]8-JI75`_EIGBL?4N)8W(Z>76,X2V']J@U%=YN68T`-S+FA6CQ M)#YVS-5')^,O.J1U8JIB*<:0Y=6J8J2V7RW2@*.LKP[7Z5*XO%O[*A['^,Q=?R2)8AS309DHOB MRK@R9DI!^$T)RFH8+#5D!7""#*NL][W*'W#\,H#7:$,M'(X:YXX(T MI95I4S'&7C=NG`-H@3;?C<(B1>TU8A)N@T4Q-4_AC_R0Y"?&1S.\'EIO#6`# MJ"5?R13SEAPSR688\S?3YYAN]>+;9L'72@"& M57HP$A@>*<%6TPX8$>TS1$Y:EA$NPLXR$)B#>)GY8[H4+3<[O_*T+,(,RNG2 MT%PHUR$N"BLEW:0_OQ6O7'\A,!=6?9BU!G`DB;KL*G>Z]1&(.;-F),1NI\BR M6(681U98+A^`]C*,0^/((U99?F<>*MVKCAP3*9AK;K,!0;1V)40(W`Q]CL:B&XXH?.`]E*Y?R043.D-,X.UBTW;.L M';TFG4M4+AK*8SWS&?%.",UH%8PZ=P$DVQ.?;O8="T\7!P8',TT M$M+J/"T;R^]<&/DZ_SX@4&M&8!7.].I).#N#(6,Q<_4T!BRY#/!L*-==8S$= M=V9&RP`1\F@\CE-#5O(<5/[,(TXF/"W_+KVS*ZPH8TGCT`OG,SL@N',8,L!M MR[8="!0\%U+=,R(&W1K*,D[A#.<(1[>A9PC<:$;U[=67)LY0&&AIB-3HE)0- MAJD_SY!23?_\R/C/BI`G`MT"T&/S_DQ`&]#_I(';THN2,0\X":.*T*']("*LSHLWY M$1Z2F*PL!0W<\4(#)3+/:?0]UQ_P%N^%DM30")D^PD/_T/TR$+V'Z)"Z$WL# M4@EV/+1D5A_K(TKTECQQK3])LSYB#+UE_?(4[42K/,_,WES^]LL[9*?FAUB` MEP@/C32?6%RTQY*(R2=F])4LA@P_3[-\4OG4OU0B%7JS[-E<5G1D7*LW-CH,0C,P#H0H'( MS^C*8S-K36N^86;#-GLLL3)O8R@ICM9JU#C$J$M=X/JS",)=55!K]@\5,*NT M_^B3G"^=-"=-XLC2"92P#.,0X5D.H5SJ6R'E,H`]8R#!';/ MP/2.\S)OS]&R12U1;]0:=4=]2S^<&'5%_5&#T]A.?7A#Z7,/PB3=0=M['NOG MUXM$2/X'3$W=F"G=\NDVU33-M").O6()/->J`^+=^'4_]>513R5-`9R)7%57K/XC9XUS.7RP9"PZX^23E/5Z]#\KPVRUP%D5UD4N*S"G M'EVKG'4AY/#ERF*S/%);$S\M9X[;LJC0LIE5UB))+?3-4$+:H#BUM:33LCB< M'V=]RT&CSDR.%AY!A&4A\@MI(D8I?8([:(AV*OV.U-';G_ M:-A6LHOMUGA<4( M+@N0.#5?VSKDS5YSS%ZMN#9=]K'NVADSE5UBWGA7-D)3AEQ@%!UK\][(-]ZVN2QN M[T>)X]TS7%O9O[:3"6ZKV^*66F29C#D4'-=IT'8/.&>,_.K15ZS8T@@QUT.]AEJSB9))$&#W615I5`!@TB70@&1:D0*6SCICGI]%2H[7C?\`W9G MW6%W>XWIC"#(LMG-88_=%G;9[78_VE4E9)6XA()'32AX:E]]/[;V1-;\T^D2 MWUW5V#VYM6RV/.DG:J,Y5'@?WE>AX9UXSXN(=QK8>(]DA$WD+8N,TWH?8T-> M#MZ*=QK[>&_>B3?G[7AWWJ#WYRW,>-Z9=^E->B/>%Q?^/'E/3@I`O\W#F3[+ MS9$=8MX?[X@\4G]MD@SAH`6"P#*CRG3SI70>#0NYW&2"CHHVG@UW&]^5=G3C M=9O2&PXCN,@TW_"/4X-HMXN/-O5=:5O?T[=;0_U>A=*W.(5]>]_:-_AMUF3? MX[?X#6%#W\QW]1U^>Y)."*^TQI4]^Z292%'&W[W0CGP0-4=!0"0-F0+,O660 MLDDF2;LWP!QT@==6]\Q#9U/)6'?;378OX`IX`Z[L`$);-P/.=D_@$;@#7H&W M.&+W!6X#4Y6>)-T==WL@(I7!-(&`+D`V1MU^PUMRS@&D_T2[US>W+=X$S-T- M9J-5GBF"'@T^-,W@/71"YMWDX&M*=NC=V-KE#".X?7..LK8*#M[TS\ZS0W9_ MC]F=[MG#"SE$.R(;"("?)XCT(`V/P-A*DHP='HJOC=N)W1>%V.+WEYEBF]AA MN!?N+".09[@\O86_V!SV0!DU6]=-9BDD4?902(U]5P7^W&WXTGUT[^%YN$=" M8`O=\)LB"&"_U8=*Q+1?J]J.#VS2F]P?C#CVA="TC)\A0O89ZCV3N#%6OAS! MM;-;V'4?W9DX)XZ)?^+88F]H0;XLKF MF$*BX6P@G_0CK7P)"CMMT:F0[=!TA[?]XA?;)":5A92.W"N"-V\ZI3ACD^>0 M7/^OM[3'$<0$41CH)/_/<6DUWG!O-C'@-*X^:N/8.#<.VF3CE4W!+(Z[-N,X M:FB#;H=6]SKISU:6%$ZRF1`%`7@.AVAF]R1J,SVNWXS>$K@&?G;GX_NX!=Z/ M[S*;N#^^=NOC`_D_3I!_W6GWV_UEPC\ZI)_]#FW<&4MB8BL*4]FT1*Q_W=\C M.").V>1W&[G<;6;G-NZ-ACF^HN!5TZW,KI%>-@_[U2F"F"908NTNLR"?GI," MY)"8V-4C8ZC9Y/,1;QU,%]TT3G`]7!O7+$Y66/>$X`A)?R24N M2_DWM@8_A73/6!.5WXU.\R&GF("M2#96/L%P/P'9).3KX-GADRY[F?!:0N$I M`C/7T:71?2=Q23$^283E+XTX7TX;]70!WQ7/EV.I,"9--O)-+RN#Y91-6`SF M<9:<>4K/WM_N1_ZM;H83E!-:@DOXVW4"/D%5`$@"ZYH4X8=YL M\WTXLA%`:#0(F-#&)!PUSNVSS-2;"XS"C4M=*.WF.>/].&[#YM2XWZ="4S-9 MC@KM5R/GU+B5PILOYM0XP8<(T8PA'#O.6[^MT+G&7)UKTDCXMF-OTS\Q3KX- MY61K:(EQKC&3Y]D:[\:>@^?O.=<8GX_GYSEXOH9-Y]RY>JXM=>="-G]>B\/F M8>Z$HI\;Y_KY8R9;(>P)G4T$QQ=0+NYSR@& M+F"Q+!EZX!V01-6L-HA^H4\M&?J<35F3U2&ZALXV-WPK^IQ=HDLM+_IQO:%G M)#$ZAQZ/>.@U.HT^H[/H*/J(;FY#Z#TZE".B"^DJ>I#>U.SH)[J(+AQ994OZ M:HTJG\U-.ELM,6,D-$`-D'WX0ZM%>7-,G&O=7WI,PJ4'1X[VF,X^ M#SE#5EZ])O,RD".J"A?>XP0:6/V<]\EU.9X,(HK:,HYIG& M8SL"J*?I\R/%9]C,5B]JH%ZHHUKRC"YM MJ:-"3^.FKJF3.%TSGCZUS.D9"0JNDVHMYZW^J._JTSFKWC@'WKXZIDZU%.N$^@&HJ]L]R'J- M!*QS;\_ZK(ZK2^N_.K/^POK6TSJV7JT?Z\$ZJNZ>1^O:NK$^JG?K)GJS_JJK MZN2ZEVZ]H3C">='HIP=';39Q'J_OYGP(#3"/;C'^4`T@=3`Y!"F1+IOQYB8K M-5X?>HY9%2CR"L:3M.+B&&C3BY#VMTB:.>P>%*@MG8N6,Y)^%TK%X02@9>)1 MK!^)4R^Q`X>'.-IMCH;G+1S MZE.5E$\X;J?EIGM0#O?#_M9L[NC,[7U:`W-_;2*3%`+O$WOR_C\K[UV[;NV\ MTXS,NV>N-Q?L!-ID,[$3R$$H?MBU]$^C?"^ST&/KS6C(R-V M+/^&N6_-6O60'JJ?:2`UP`AOK\W:>H0$GEOHAWI;K:X3.14ZR-:_&W?TNL:, M*JOIPHVH7,!7[U!.0`VA7R7S$5ZY5?/IUTR0P_+HY!,\C5/!2_"1.(ON$*#5 MTS('WW=;A4_.X6R].^^_CB)9']%![2%NVSZ_ZS.ZY^ZGGT4+T0.C]XTB*YK" M.>I,[![4",?M9-P!":B-B__PI[D:>-4D[!-YYS6R&H`>^M3RY/"9*U03OP!B M.%]J./56(NQ2?-=>L5_Q5+P5G\7KUE>\D5/%<_%;/!8?Q6OQ8SP87Y!X\63\ M%R_&+X!A>IB>>HP$_E`$@\$$9\[F<&['QU)W?+T&EW?.?'R[1P!:[B0\("_( M__&$_"=MR-^V@_PAGRWV\^V=S>.8XSOK#+<#)[RY$_+94>/C/(T4S@]EU?P0 M<\['I>E\.0_.7_,G-SS_*]_E4_LV/\]7\V4BH_XCZ?,D/`OMI3;SLWL+G8)L M[27\)F^Y4^[%/'OC5MK60+I)S1B&T_'5OZ[B_`6)B][WM-NA=ZC1Q#:_U!LZ M/QG1[R("(!,+@`1@XCQ<&N\8CQ**(5]2*^>E%0[]/P/T+[W9/+%WB#.]V9S2 MQ[>_Y=3.:L?T._T%2,[[]*RE3N^'+V:#.%$OWQKU@OA$GM33/_AA(`/4._5" M?7[#U'_L3_UG5WL'Z/US?,L_:_59_0+/TW_U,29-_]7W[$^]QU[2$^[U>5#/ M,]E02GL/[T%USC/XG]Z1+X+O2$A?O%.5Q'+M[=!/[=/[6*^C@\U52UO_UQ?7 M4?U@3Z+OW"Z.8,^B$_:*/67-V+/,"U]C[]7#Z#XW7!I5"X`MH%W_KR/IJR"K M?LO_#^8T$?`7E$#G"85$0=9^L^/9A_'W?E.>*'[R9'INY`"LZ;D@$@"^ MY[6]V#Z1K\D_/>;^LR_4-WVY(]D/]RTZ(._)!SV:/&7M5!OWI/QQ[]QO\HE] M<2_=7]7,/33?W#\@R?W,_M;]H?+I MR`!-^].^20DH_].!0I7(/S6P(QT.BF7$MO$]A`OA2-S4C==I-J]P4%XLO\(: M'?5.ZQ#+_[G1B+W+3`9.\XRPRZ7!N;VH)X_W(*M#O3S+];SUC`Z]GT>,>&)- MPMDXU\]YE5YY8VU;+9/CH"`D>0@;*]',<**\M)DT\962#Z>?U.SZS<.59IN" M['W52]R$0Y'1<^"4B1V'9F@'E//A(37E&&"9]_K[#?6$RR;_M56X#U,3B`1^[;V_QR)[?P[PQJ0ATO$F-!#K@ M3S]U<8%DW^<^``GP]CBKG?Y8GV%[[2R;P&]^>G-_UE/N`[WD7F4Y\Z.U=5\N M8_IYS_K.3<^,]TUE3RM5]K4B8+\G1]6K?N%.#[7H]@BLK^;DZK,^M7[I>.CI M.E2_6^?J4OW4=ZQ?[FG2X/K@G^RU+I(RB2S//ONV] M6TO[7W-A[WA9^TT48`_](/@B&[<_-6'ZC&T_/Y'YW$XR6\2T\=8S($]"]G'#'5JRLI$^RA]X?]#WGN% M;2]7[$L81[)55^QPLY>Z*%?8?W63&?$3S%W@=C5;B_`VCD*O.6_VDWE$#^\< MSD;/X8QS'HC^X$PKF#C?;_*0. M$?97V]"V8L33V^;BSV-T$U.C\"ZV$2-ZV#E7G]21M("^T1%S;U('DQ7V#.EU M&TV>=@4.I[/FX;C,`YZ(_.C)L!CGP(66$-@_.'MCM#C2+!R=LYC1V7_GF_EN M_BN-!`[..^-(;3;+1V7S(7(TIB_U:UZCUFW/?4\MB%))9B&WO1V^GVT\#-(/ MCQ,QCPJ[XJQP^_-^E+S9.^FS]?I^VGG[&'_WWNFCZI0_Y<^]X^K"^L6?^7O^ MH'_\/O'/_9A_Z"]5#0EOE'5/*+VPU[*G:PHX.+>PI&%E?L*?9FGR? M3<2?45`\\3[Q'X]>#C<^OY/_5$/["GN]!\;R,5[CQ@_PBS.8_(XGPV;*67IEHS"?"Z[04 M`%MW@2"\T@$0VM="6P"._A2`1R,(H/8N8['YT_X<``>`/*/1GSVNI?_>U\PK=__@@7+L2FLX(^Z<\>[K$5U!_=[_/7^=O!NBJJ_S= MRTA_E[\<(.?/6R<#+/U!_HQ`V:#/7?@.1,%+6Z?H?:0.SQ$[!?/C`D,1`JW` MWWP:(1,+D2C,:+*3R$$MCI`EOB%8DHO"!)@%1%7A__Q'^9T4A]KL86>K0_!5 M_LZ`9L`TX'O$#%@!O`&Z`4=_;T`TX!IPM-&ITP%:_C9^.$"CT1-.9>;<2!B% M5YGB1P$Y@M.NI,[SZ!(2Q0H"90!$@*'-YA]T*!J,!1H"F0:V>U\D^% M_)(1KD`1AI#E%4B@:04&KI!7,;4TA#]F+);2H^VD`D<>](X?A!"@\#>]X`M` M1BPF7H/2'4R`8I(@X>3L'N152YM1"/AD%$*JL4\,M5A=]R;Y1*Q+&^CDX3LT MJ-@C@IV=#B\(+P4=TSM8QZX;/`O!(YNZH3UC-.LG)C">3( M!R?C(Q'0\@A-`2RMF@L?KB]V8/+VC%!66CH;L8//HO+U:OFB3,%FEW1 M.\QI:H'-CU-OJ^9$,:)\O!J"%XWB3:5+BP+L(:'TNRI=4Y,$RE`+3"/PV4]= M9>`D&SS5VG>$V,5V`%@)NZ(V1@!T!*YX+H9SP01CCX1`& MYB*$LZT\(850S04GG!,"ULXVWI'G#>]A.;BL.75U>0`W>:Y73QSK@847%0JE>QJ_G4..N>9-, M4'X]+(E3X2MG@H+QP?@(M5Z%)YTUS\O)'('.V4>U>9X/_`>6#D]P?M,=6;IL MN-8U&"TQ5?0AU-6NP3K@,S(PQR^DCGCG5!A[>-<0L=8.)BTDSUY00N:?HA:Z M)ZP\NI4HE7O"'&'3RJJ86C5"Z]<.D&#U!1C1@7`XA=.:@(7M)H;29:"Z<&':%X4 M#*4].QVUA)FJTB,.9!CZN;1:!2F0H$>"7W,.+$AI<&`Y6@APE[P'=95KL:3@ M;\1S$PK^1IKP).5_^8`M@B(L?(@8SM`&ZE.U2F:LH)([_IAZV*[K:>&.&%AY M/+8XW9'>3#N"Y-'O`?")MS8//D,DCC]K[A",T#IM*:H@)0BN4ZAF,SA:>56P M+^@0D8CD2QX"&D8N2*Z@#S`+1*7"&Z416+R&7XNS(2L]5O`EAK$W!#SD M*@P7;`X11DR$C]+?H'>0#'DX3P<=$`XBO.+F0/-4FQY>[IX&Q$8G=K(X:22I M3D`PH*EKUX:PDC/*&=^Q_41]T[NG$:>G3F@A%.6PI)2"Y@=)%TLJ)_*+HIV< M0)HZ^B:510!,9:&1^=I4@=@KF9\VQ#+.#&:]::0\5^8GO!H1BJ#*(O*_>N/% M4614"2T/#Y>+6F-%,0B^R^*$IL/H(=)I<,_)*4("M>'I:[V80"Q5F."H!_BO,H6!#`GC^"AT",A6V8( M,LI51XEETB"H<&C'.&[,R%AH`+?6#ESP@-784G0-M\0C#"B%$%(GW;.LX7N, MLP(?SP<%B[4I'EBN".D<>8!:P)Z:"NH"D/)/@779!%=9MIN9=/\3J"'=GO%(ATSX0$6S!SZ)_J!B2 ME+"''D(4EO801`C:N>)(#T\\4B:9G5_PC,C&8'*(.J1$K8UX5J>)5:(J(9XU MFC8PDB9&1*6)7T%*E'SI8*!-1!6QA;5'ZS!L0EX0*^0UQPITA47PEC?AV7,P M+?`T(Z_<4]3D2R*>8:30<;19>ISX(!_GHS.,P%.U3DI3=Q8KQ;2DST)+)%FH M9C!I+!Q+!?@)-K:HNE@UP9A@:@L!1";19!+/VI(PFNI-FZIPU*TI$X%K8C>= M6,R)2`M=!2I1E;BK8"5ZFHI-61KBUJ;#C"@G:T/@HO`MK(??S4++_<0BTU'L M("`B1I]>F`>$O5>N:%!)*WXGHR[4`VO!QX.N*,$!Y8`8*HO"T6NC=1B,HCHU MR!956!.9A^DK)!'\B3IEOXIB]XF?$Z9"+S()L\EX%%LR.AE,1SUD#`;CT5\, M79X.(I!((4OD?>$3&WMU7?XQM:9\!3IQE#BKT**\FY@[GS%$4@DJA0-=:*,\ M+$2#(L42!,QLW91LH9(X3@I.'XL"3D,1?\%PLI-TU496NH>)$PAJJRB_Z"K. M?;`J2AI^3]_!HZ71XF@-'I`W#"B1$]S&.I;\V`HL_O9P5"K&V-J%`3%-+%B) M2QP4;0C``T\FG;AKFGQI+HXE:!Z>"-DI*03>DKA`+@H7CXMY#@D*V`2T@#LU M*@Z*S@P81HFE[?`7,!S:.TQWIR:"!9TD=;*>>H0(PCZ+MC#!$WIJ97BXN"8@ MGKP]J,4\E9UJAF-&-*=AN21/5RZL!13C,#6"\HLYN.07DA@`0KO),58V2<`D MQ(@7JZ=)A,`):>$-I#FI0_87-9B'Q2P176&'^L[\AD1B$Q?#16_1GE2`^5YL M5,(7UL5[B[Y*_&5K8D4!G.(7RB?ZQ4)BN2C_\DO$NB`\V:?BQ3]E!)5UBD'8 M+LP1CYOX(@G%7P%U0H,L/,80[!>:&/CK6$.8Z#:=%1E><8MC$25LYT0S*^9L MLM`5I"%S3$$1[/6G^'%%6()<)!/VHOH!76(28V(0&%U`GQ#H3TA1!K:":3HP M$V6)A$`^AY7B=X+D^=?,0^!:QHB%U##12;9=V??XO[)12"XD%[D+@L%_0"Z" M9R`0UQ-:8@+,#F,BZRQV:A03ZJ.I&%CQ4S9:1/UD=XZ,9,7!6.%!9^.7X62] M/9)#^B,"SR1B:_'C^D"]%R6,)I-3B0G*!&678$%Y&8T3'*T*!_."\B5F]$MX M>XY^+"HTB"F"O+CY$2JV@5@?6PN)Q-;BUF5E_#NP%Q-$L!L]8H`L0"9L:;_X M&>,O(T0!50C*`3'DTJD8 M&AU)FT9HE2?$?R$#2_A\&FN-H$:8D#O-G>8YB5H$0":-5:8!&+#1TBAKW)S$ M&C.-RHS=34?$UBAJ9#:.&E6-O<93(WWD4-'#L/X`!@:!.[*-H/K'3Q&HZ#:Z M`Q=35BY2BV-J,/+`J*&X7!0CX`D;!F%*`D*Q\@BR%CI3HXNLDOZ!<7+@@5;I M2X838$;W3NP"ZK19Z3=F5L@7FI5_8Q/'WXA9*3@&'*\XFY5\XTW1"<7>V8D9 MH)H6M!SG#C-B;Z'8:%TL)%0/-1]G1=ZD0]%9[#@6&=M389_S%,CQX^B>&CDN M7L!!+@]S&OP"<,'>V%!E:FA=WHOE8#\PZ[$7K#DV+YXW+D;F#8SGC$.BLC)E M&K=,CB1Q()+GA-A19]OA(;VV%M@DUH7L[`5A\8G7_-R#*QP M:JHP?)7 M;T8ZBS!XR,0QR;%RQ$#8#V$:);V?G>HC*Q&F2CSPNLA40L<>(<]*WK%\&)'- M3X):%8F=4V"-/GBZ$#AN5CH8,ZGEX&HQ/Y6O2=MT&7%4H(R*X\I1ZE"]>%R% M>6`WO#$LB>EIO7-XA%LHJD:*U1%Q2N7I455B(3;]IS81^*;8(\!Q]MC',3CB M'6^/)YAO(MZE]"B:`7'DP$)5%$=46]U1"4&'$&"$;?XEL0T&%`31]PAQ;#[V M@RA7L\/G1Y5EA`B"4.!DTW@9F1.F!FG.6`BMHC,IH'X/C9.S$8-'Q>(XR9RH M8R!5;Y'=5[*1J(9Y##YFDRP0-0#G6@5D_$ANN:/H(>Y?6IC8(Y0%RD)[=$SD M-`B.C4?K8F*+Z:%^H""]10R03XPP!4KD0+7[.>H@JD!"&Y@+1>R$846M22;2 M+^B.LS#(R>8DL8=FJQY.#[<"X1$$9*%FM#$T!&B-J9!E-T0QU4W0)Q//(6(5 MK5B%I9QH8?UP)4$_/(50L!Q=$:S6CIFG&_B@DG2PQC:&#Y<;X4E0 M$-D>CQG56$'AU4I)<$.?`=PP6/""&CM)%O4&LW-`:@S5 MK7Q74$CIE?.*?9B\*D-FF(Q7SZO@U162P9*%;.ULU^I]O98D1_G0)W348N>0 M&'L/7(P[R;ZEP0)(`6;,!\4E%`F?3`DL$)EBPO'T#=,Y*2_.3-8F$;F(E!`: M(HM8[1PQU8EJ7;-C*^74J-J'$+(\Q$P*V",OE*(QAU`2JB*JX'UK<38M/)$M M?0`W0ASJE5V0$4'!46UY*_(ZS158),IGK7+7^7?(0VB1B"Z\SBUR%SF+C$7Z M(N<7=QH)ER&EK2$*@4)2K\J"X8YM7VU/#KDF+`V].CPBU)N`DTO*?6A(@1^2 MN@"(V$@DSPSQ?W6_T3RHL@I2F`AY$'VG6/3Z$K>DLLZ1H,%OY#<2D>B(3"0B M`E&"MBV2584B\5%Q_(4\-IR+M\$SB_8B/>BKX7[E(9I7(T(IVHJI0E$KS.`H MJ"@^-<'DQ7D$/:,7841FKAR232PGA*6P)B@X(@)%6,"$B9PQX9BP:O62K$G2 M)&^2?1O`36JH%/49S$GB)'N20$F135"R>F4N_$D*)8^21,FD)/3#883,`D!, M$O\;OX&1R_QKAB1,W+'L!_M?5DD;BZN'M%*5Y$H.$[N26$D1#^B!O426]';$ M*LP1V9YNE^@DO$A9-"/^-R8\?XH)C35/U5/N$(6((QN(ZRM`EQ\#W_6OX`)SP*/O2,YJ^E""I(ET%HBPG( M(6=8&;O@QHACS#R@:RQ:[\D?XGI2WC6?S`UB M:I@?(B.T*>&UC90J76EL?(( M)C=<1$?O18K2I9.Z2E'*=/H\!Q\"EHO2VK/52ERX*+4]\IY@EP+'13G>DO=8 M)O*(0,@@I;Z0-,%_`D M;GA86$B9#=00*G&1#'-)*$Z2[$&59)F3=#5\]J:%^X*OG&$FH?$*> M(A4,_EL7'.W>;C$TV*A^5EDE'I6V2DY.V,Y30(XT;9(>&B&;KVP$?<6QI M)@M4F\D!X0A(4!G``LJA;EB#6$1-4AYG,\FK*AI.34(A`#:G(5_GA-;9BFOE M<5R5E\G8@U]2M(+&B:1D;,I6>1P/Q&7G.':^DDBPX#@1.SQOC\R*!3/ZJ"2: M=U)Q2!T-1XW,%%2.<4[$H@PGI**,C)%J6PDHO$K:N/"`2CL!#FP/^Y@ODN+H M6,R*GJ>RF+I2KUA^3#P8'T$<.#-_U[:B=BA=:TOF#KLS'BM91R^KM?!E,1X* M=!H5XA&`90J1>F-L"MB\;FH^I:R#):02-=2.;%C6)IN#[L@45BYR81FQK%@Z M(OLRCC.[`S,2LV7AR99)AW1O>Q3OX!9QH(.WZ0MZ)JV14IZ3Y<;+\Z"ZZ12V M+%F6/2GO)'I+9LGJHEG2$-U/-TM!(ZU"I4,B1'^`I>B3$RWYU?="V3/RFC\= M6CX^N:Y=1=UAVF-[R%+\NQR33@M.C2#Q:6EZ4&)I$1]J.+LA'Y0";2*1<3@% M9*8C/D=1CZ;0C,A!`V6H$3TEV9E8A":);D'+`5@BPFP/?ITEC=RRFD7O.R45 M6I!.TRQQ4K;JVL4N_'.=K[0.M8T<88X0>O,DZ=OTO&H:^HL$X6"$).#+J;2H MULPL="K[XT7Q!&'M&D;`-'AJK`IK(OJ$HZ6EH>9P+IN6N`6.5J_B-%+I(%BL M&>T7Z`K5`]/O['`$>^*4%+&)%4:CA"5L&+9X`%49'K135I;'U\NF@Y&RZ%T* MU7Z7?TC?Y?>"=TE[B$1H:4(/VJE@A>ZA"134H'=PT'2'8*2Y5M:BG&6"80=1 M$[V2652&FF[(*Z9)-@TEJ70HG*&>R2$L:^A'TX M*/!9JXL9A`TF2[*P`(@Q)^Z7O@?/0UQE?PFN@&DH'A86+C"J"0DE?JE7]'M8 MHMR2]H[=(7AF[91^3&8D8(X5QS3\I>+A,`*6]%;^;R0U_9P>I&FB7&+$*U*P M%HA@YDOIPP*L)?*(`5Q^%@-ADXM!5(&#$,;"'(2Y,`5A%#`S1<&GVQ13++.M MDU1<_T4$#YPE!<4[RSKZ,!F6,K&%XP`*J19[8#ZTB/Z.04<-9+A2I?)\V9+X M$9$7CL,1HQ1SHI@XT9QD2;:,ZK-DD]A!(4+G,((=W5R7Z\O7Y361"Z$;!$I< M*69+4:K(UUA2%L7&=$4QHJR)J:A6E.M+%44FTK$3!E4LD)D+DTP5-\J6\4;P@\L&H^']Z6/Z,4%BN15"9HY$DDG)%#+" M7`08["1WTL9B?E)X2'S0?B(Z/"LO9AX.C#G&7(*1,<.8TI\T6G;B:_(EX80) M>*"&N)NY&]20%";U284A'E9AK;#)V$?LQ`(1^70!$,B6]@X9H=HH%:8+JV06 M,Z5BQ4Q+9C*SD!GZ,%?D)T0@D##%V.\.C0EGF;O('^1CKQ0HBA>#-''%C!IZ M0**&W,RJ"3BSJR/.C$^$,U<3W4RQ8N@IG0DF>7RM,\N98)*X&T3D?^!A)()% M='Y3PS`"!!H38*'&E(2T,>>8%8[888Y".2-A1$6@ M*S!;!:FZF)/';[*6`CY$64`KFA9CIE,SGRC1$E285?B:@$V-EI9KE0GT.C^Q M(AP403,E2D'S$%7[^F?2,0.:D,W;%Z4#8M'"4%3Y1G8='TR%)F0J`_&[$H1T M(CN1FQK0PVHQ#Q0;;DR5$:I"ID14Q]P`5&!,KHYFIYM#SFUSH%$&,DJ=*MT]![OCG4$!-"P-?N,"!U MF.2#4J8;%ZX2BWC@ZD$=!HTB&@A%D(?S6W&U)%62KS*$$`HM8HJ3Q:.UW`=2 M.+6(%QUS6XSSQ4G).=G0.#UN+4X;9T:#"E'CS'&V.!>9_AL5)Y#SUB%E0G2I M.$V\[W14$)_.KU%0P<5X\-AH2=IX/42_/HQ)<8VJP M.;YY#(MCCH\#1B+/FG2>;2@^?$=%#:83!B9E,E?(8SR=KQI.9Q<"U)D>1.;` MP(0>YAI%#:H3!N;NT"CPOIP8EHI7Y]\P7.RU78D#J( M';Z<7"U+VH,3CX=O"PP1(3V<9$@+)U#NKND$2?<-^8([5Y8J"+03B,/A3#MR M*C6>'<^))\:3XNE"&G$E6E"5#T_CVF%K<:9%U%JZ/-\Y6:&6)X=SQ$GS?'G* M/%N>O4X<)W$-51?S['GR/'^>(+6;9U8HN.;0<^C]!KRG:,L&YU1_R7/))%!U-31P2H^5G]6"):5YJB3N:*V&43BH#L M."1TAS4\&41N998SFM1Q:\I^`*-!T,.GS,6YHE7:/:\R+JO6`JURP=0/P4)T M!(\2EQ_Q8&M,#P'>LC/B(`0K,DQ=C\+H:?:@ M.UF?&`T8(L.C0VF`3'6N-6X M;`16*T[K14U0%<+QU,SPD)Z?T"SVV+9P#X@ M(.TUEHE[YQ6+BB4]DV*=<*Q;2R%WAV;%NH4L&X`.5P"@"-`#Z/]S`2IWF6(E M;T@U5JQ[I_(!`2EX4$`ROWJ:HJ/63,V.9P$M<7SB+_A$1XFO(XO"/:&R4=G\ M4B`LHY0Q9$*E_5#ALJW(\AZ2B\"K#0QTMO7I\4#">)16);FGU9)'YY7[TMT, M);(_N9SL3>DHTG':[&*`-,4FIXZ'372%[(C(@5,)")V@@D@HZ"F%Z9A3,Z1) M0:^@9$%H>UMM.O86\P=5A&ZH)#B,.L<4 M(_`Y=9=TV+XJ;-.2O'QRL8"<,\X\J(U3#\K'O(/6'EHIIT&7-N;YIG)3D#AG7K9I2I2*S4+2@>EM!,*,4C4Y&IJ$A@ M1<9CK"MH!9^NO,7FL%\H=NA<*JT57.5NN_;(=-6U+-H/EA?3%C$KDF7)PEYE M)F>AM=!<*)FCD)6.>-J%,X(`J`)@&5K@ M*/\JUK&GI0SJ'!CNH6OQF!I;UU#*X!-EW*?P4K"04'*1-4('2S?4:146VX9^ M)NE:_Q7'USFT@T@.Y8:B0]NAZU!."X5L'&I$*8>&0[VAVM![:'P$-J,#2:,L MY@H1[2%T5F'#PI,W6A-Y):H.Q%!]YF4-&8IM,6[9V$*#T=!;5FK%>@$#.AM! MN/XHXE!WZ#ITP8+)N8AR)+LK'=&0J$:4(SH2S8AN1,F0'U&,J#>4)+H1[8B\U#M:!ND"CG!XJ(=*IB&&,KM"$/R8@6XU*9] M4V:BW:#D4F0$8'`I('L%^5)`+@N6!?MSY\FJJZW9A(A'1+XV'!1$VZ?J^X_" M4\1FAJ",!'9HSG8FJ=9(C#PANHYU<*=I@4R#I7">DK14_DE'8 M/&RD9"!U##EETV*IN&=$1F^DF[,?D]40/--,&WCRD39FWI4NY__@79"5N&#$ M@&03E,]RD5TZ]2*JIQ/&DRTD@*9OT30K@Z^]1.(%.7R/?4=<(Y.DGQ92! M20],OXR>&]K%G"(%F7(J2O6D/P[ZA@5M1K?EK!&5FMX%>X=3$%B&U6C'\\WY M-<)"\#O$:`L)34.0K)2B"P^AW@\-I*$DD]%C@O/P2FND24R?2%`KA::!?($@ M">D>V1I_C]7(//*'XFDP9S9[3;XG'^2JG-(Y'-@H2GV-5XJX2(9CQU$LO<"@ MV69K'E)^T:?'/THNW:V!Z)Y](#HO:>I.1^=;FP+!V4AJ45)WVZ&"NK+O.X_> M(^-[%KK$#'](`WH@FI2JCR*E>5)FD)]4%R4C'9AB.PJF/:GK(QE()H/#F61( MX]X;5R.PHVA)8CHK%7I@AI8D_M+A6A"PA]+X>T9B2NU'6,LUJ=`#XT8FG4/P MZ7*DTS8U:5LK98H@LI.^V60@;%):$*:4M`%*\Y.**(Z5;PWT#V)DT M3OH8$],M(P4$'F1."8E,,K2?@XSZXR1#;&J?<@ATI]XB9].EUXGT."8).J&5 M2[5J8;Z9J7OD7$HWM=&U2V,U]LSIW:8YT33KCZ)O&[,"EC+]\*?ENJ0.;$#N$?L""^0 M!C(*$`&R0*M`#C`%6!-D!,(`I(>@`QF@=,IHS)VB$NX";(&20#ZA4&!ZN!38 M`&0"-P,0@!%`#O!@2`&8@I@#*``I0`K@#(`""`*D`,P`*``C0`H`#8`",#'T M,"X%54L0@,[`"!`'>#"\`5(`U-,Q0!W`,.`&2`&X`5``=`#KJ4-`#(`"2"VD M`-(`*(`PP/<4!3`%(!;$!9@"9(#M*0J@"7`6X#&8!5H`4`#[:0!U#I`@F`L, M4),`]=/[J8)!0-!(2`'8`,A>!)DFQ_H4#D!`/1'0`?*G8P`4@!#`:2`'R`/H M"E@`%0;IZ1L`!9`%2`&P`0*H4X$4`,6$?UH%<`/D"%(`?P>8@*`",#!"10$H M`<(`AH$Y0`H@A7H22`',4!$*V0(8:J2@8[!`;1ZL`=ZG`%0F`!T@@7IY6@8: M%HJH1]0Q@!,5!;`&J#"X3^<"90,8JEB`BMI#S1&X`*RG&@/^*5)`ASI@X)^: M&&ZHAP'+``6U#"!!Y:.J`0*H<8$4`!D`!?`$D`(X`9@`*0!"Q#+0Z:``**(& M`=@``]0C0/-@6`!#/0Y040NIAU0@*K'C3C%@**(*`5`-D534`!P`#@!#'311 M48,`F=38PMCA?W`I**)*`60$9H`!*A*@R@`'2`&T3X4*,-2B`!7U"-`$(`(` M47D8A";ZB?I4>DI"=0N(`?ZG*(`E@`^U)3!&?0VX`6"HHE,J*@;U-0!)Y5<2 MFI@.PU0C``E5"F`LR)_.4"D,W%,F@+%@#2!%E:%V3S.IL2>8P`,C#J%=T*82 M4%\#=H`Q*A^U#$!(/:&^``TH M4#&HPX(4`&N!?-!T&#QD4TFH=U04@#_UFZI`G0*L`=0`0H4901L`AEI#H*(V M`?X#"8($P2@U#9`"^*,64/<#)5440!LUGKI:H$(T'6@H151R`0U!D$I`]:'* M`:"IYM0D@!"@"?!/I0*\4;FG2H"?*@K@"E`1>!+43_\4B()Y(A6BB$H$$*#. M4#D""53PZ17`AHI#+:/.4)T&E51S*B85D5KX@PE\4-<"1=0"ZB)!GJI`U0(< M!J(":`!H:@=BAKH$J`.,`I:`!%L M61ZJ"U2F@!AUAHH&,*/^!J"I*("8@%<@D3IVF`D@"O(`Y5,TP']`@7H'&*-> M!,JHW-/*Z@QU9O!/+1Z,4FVI$M6Z`K!`@7I,I:B"3X,`4H`(Z@W5>\H]E0PD M4+FG3H`I@/A4=(H":!0X#12H)X+ZZ0S5/A`&&`XH4'6KM=4VP!CUF'I+U:>" M3T<`R%7$:FD5!0!.Q9\R#W2H.(&%!$X@)P!9=0)4!*0$0(%_ZA0@KWH8Z*"" M3\6G-U1#@_1`2H!,W:YF"U($\U1`:@(5@!I1+0,,5E$`:`"#0NB4PJ```)\. M`0X#S=3;JGWU?=H^10F`5IT&U]5XZE75@^H_P6&J3[NGJH8J`WYUMSI`=0*\ M`=ZHY4G^*3]$"M`"6'?N!9H.;]1"P59A+'`\W2P`!M8"RU,'P:7@-((H2"`8 M`>ZG2@,X@((A!8!.PY[&`("HSE-EX/JT#8`"&#JD`.8`*(!&`@4U!0#IL:.F M`#X$RE.):BT5QRHC>`.4!OZK2M1F5BLFFWI#?2V\6-,.V%,,J@35/O`^I9[Z M%\BK\R%;A1%J?1I7]9[&EOBG\P70JHY5B0H^Q3*\!6JIW-/*`#*U"0`%2`*8 M42>KY%,!*OCT1/!$<*^2"5*JL9X$WZ@X5!5`$Z*V. M40NK7U84@)\UQ]I`':"J60&HMH/TJIF54*!`A;.*&&8&"8(S@&4@@=K,@M`\ M5@.H"E1``V85!4!<10&P!L:HFE53*WZ5?`H#4*"Z5@>H;H`/`81U?XH"D+)J M,/BGD58%:F3@QHH"4`-!V%3(JD$A?TI/G0AP M`4H1=E8%:JZ5>WHB*`PX444,<(%FZYV5?.HR<*NJ3B<"9E1BJW.5C\H]7;0" M6J&M*(#[@D_@T/I/G;;65HL'QU8*@U@`!5`<4#"T`5('4552:[!U@)IK[;0J M/@ZLME5+0QY@VUK&`+.B!L0`4P'A*CW5+/`&,`S8!R@,X--7JP*`?)IK!9\" M5^>G3H-F:[(5A]I/70G8#H2KX%-^`AD`PEJZX)\^`9("^-74`_:TY:IH10V( M61NH9X'QZ:45W]IIU3I\6LL&"3XL'[]7":FM5\VUZ,I?9;3N496H4UH1H,QJH#5U*IN?9]R3\$*:M=H:^FUQIH$\*62 M3^NG"H`9ZOQTN/I?E0,X7FVOTM,_:G:5>@I)-1(8`>*J\%<"0?U5S2J`Y;>B M`,2O,-0LZTM58P!9+;6Z5\,`_(1_:KM5N*J`]:%.7OVIW%,4`1N@N4HLL*J: M6AVO$H;>*A^5?#H[L!UP7FVIGE>DJ^.5Z@IJG;,Z#0P&W%?+@/.``=M?E0,D M7ONKH%4R@!I5O0ICK7.4,2"KM=3BJM'`(Z!#[;D&7-&JKM8!JJ^@LDH^[0F@ M%8"K^5/P:08VT&H]!2#P3QVL"855@7X`Y,I'';3Z"E2O25=ZZJ7!!DMV[;[2 M4V$#S-:\:O[TCWII&!9L6\&GP`%<.;/>UM3I*E;PZ6[FO)P()@11V>RIBB+3B7I\*N52)ZRT5\JI_M:S2 M#H`%B-46`<45O["##;C*4_&M*5==*T7`ZRJ"A8Z18/&G[],_:O/UEOI\I3"P M7)^KX-/*0&KA3T!Y#;A*5C.OE5;'ZT0@X?H_%3%,!.(`0H.)P/AUTW%UN&,> M6`T"/0$R`37VAHI8S;724Z\*TX$RP+DU`K%I_:=F8+^G(H;0Z[W5`_L3J)]R M3TVP_U1`;-L@*C!:O<=.7,&GZU84P!P@#S`LJ#)L7Y&I%=>%2$F#G3I!S;2Z M`>BGS52:JNV5^'IT/;[^4RT"^%<$:NP5%TN1_;,V4"\"5;FOD8',:^I@ULI^10$@`=ZG3U3!Z]!5LJI$!:!& M!D:J%M0T*\#U(&`9J+3:8QFNK('#0066)`MP?0LD!EZQI%=^:SSV6O!?':#. M43NM-P'JJG-ULAI7/5?`ILI;:2 M92^RQ=?>*PK`)NM6);B68590*_F4"\`%X`C4 M%82O_5:CJT5?>O6%4%J@S6&`N6C M#:JR$M7Z*3TU(!MYE;=*"4*P"Y&\8BN5"AM7_0^48VFQJ84R`&(U*7MH31U@ M",0)SMG)+!W@C;JW:,JB9NNP<0C^J1D`+C`N_8OSJ5SV/;N?#:#B6S.K\M0GPAX``/M$Y;Z^ M!C*O/E1L;-*5>^H_!9]J:+>M:``1@_CU!1!+,!8P7V<%HMRO=GK:PO@VSIQ(A]`5K&N25>A*_\4\TIP3;D"7`NKWU0#K?S4!%M_O0@, M4,6OI\MC5:?VUGWI]!<(R7)FTI;OM+/-@3_`?J!&,`92H?U2D@#/5C+IQ%2JL M5^VO%($C`DJ@1A`9@*2"3[,,$H+$@`)U"Y`"8#0:`0"H/X!.K?0TKMH%@+#& M9PFI]=-!*]'5N8!?^*<:#>("L=A8:@?V1'N8Y9X:%`:HL5=&+$651NNE+L!/;T\!IM?9]>7IVSQ=B4JCD6!8!U31*X8W6S0=@=:\J53R`96"4L M6/&G`U3.ZN9U-EN;G;ZJ3A^T2=JKJY%5.`N8'=!68TFR;H"?[)W55[ME/ M"HZ>G]8G@6%`AWHIX)^29PFKJ8/ZJ[D60OM$^*=.!7@"%%=C[4W6,C!F90K0 M5\FGN=7\*AJ6O)IF%=`B8]&U^54:`HJ`9IL_!:!^&M2N,]3+ZAL5@'H4&-DB M:/4"P-J&JU@6X!H&*+6:9C:[_6U`J1W:W67_&S!%?N*:;V7DNC10W@7#^PB=DH;!76%)1].+!F M8.L##(<,K)>6GGJCY=!&9P>H'(4H;-?UGQJ:#:VV`00*4X$]`*.@1F!!G=8J M95^T\]CZ:SV6M-J6Y=4V"KRR>UNNV(&54ULH^-2B`$*UI=NX:BY5>@JJ%=5> M8%$`I=H4P%X`43`^&!\<6%^L&M;]@O'4+)`1R`E0(7("(=9F%I"U)&!BC:O* M`&2WMMOC@1&`?#H$0`($`:P"10#MZ:TUL+=G66+6G,]0G@%AB"C`%(-FZ M9[$"3P`FP!/@"+`OZ-XVLZ8TZ],FJPO@>`MEY9]:`;RUPE!^RT@M93[7M6AXHHX)_>:MNGJ]D!JEWVG^H_G%=&`1P`P@K`)='68;VP)UG[J_\5!7"-S<8J6"FSO%KCJI#53WM6M:`J M6\VHF5?)@&5@YJJ/G<1*!2@,-U3V;)#5D1N>A:'2.=JO`U3:[,-5CFM!+>0V MP@ZLGH8U@`@`=(NA':"B8XL#ZU@:0#L6B.O$_;P:9NNTA57PZ?SU!OM/O;\V M<=.TDMF(;`<6MWH1R#)$9E$$4P-D:A#WB>MX-0/8;;^M#XQ/:WG@T%JMQ=$N M9ANHJ(0P[?`U"6"FK=]&9V>PNEC\`"G6N5H1F,5.5@&HN56B+<_V,.MR)0U, M!88#H]4`[0(7?&J;_=9"4JNNUUPVP)*V$0L2.-TM:(.S5%4(:PVW>ZI$W71@ M3UNX5-Q`@X6!5H!>G<)^<%.N-(*2ZW55C&JC9=AR:$NQB=FQ[.R@97N`=2Z8 M44^N_5=7JQQ7TWJ1'"`!=&" M`,9@!]89K@N75:!Y%3$`<[\8/M0[*P!U/ILBN+."3\VXHMJ90.D"J1M;R@GH M""RZ=P"`JA3@>8L$\+YF&:ZUKP$`+=K69VMP+=`V8/^IR]RDJ\O5I=NS'0/, M"(H#W]9'[('U@TM1I:>F6O$(6-I2;,-6HJK!QV>6"*_;;Z M8@^L/%TLK2HVM*I$=6;*436YX]8WZE\`>UH$P`,8:,^K'=3?`/:T!UM8I:`]G:$.`;JW]%32+>OV=.NZ5=UN M3Z>[J-O^;1>`QPJ\%<@69VVQZU?":SVWF=5:8,BN;-&UZMI];B376,`L@.?2 M6^L`]%KN*B:W?SJX!;4J`,*O>5L<[C^U<'L&D.T&6<&Q40'L:OJ5J@I#U>W" M<@>I'`6.;-8VKZK`S;+Z!;:SPUA3:UXUF/N"3=6Z44(!8+>*29..U&%Y1['XW#,"'?>G^ M<(&V;X!2K-.`@\I'5;(>*@ZL5-WZ[+-UO^NFIRH]!9]V;)&TH5@-+V3W29"1;<4.6%FN2%N)J@(5F3O/Y>_2 M5(.\9(*0+)ZU*YO!-:/";0FK_U1^@A(7L7N3;;9:<16R#(D#ZYU5&<@__>LN M87>K'008:ESUOG#9Y:SZ<)&TK-K;JORU^#JCE>2N9Q.I"Q$[ZG.5WH$]-?,. M4M&\#US>+N-6GOKGQ9\&>G6RFX[7ZP*US2JJ;3K\^*`+A*:5`PC@JWLI".LR M=R.H%@H1X"Q+A0`">#*I;7&>#6\'=CZ*0`U_[JV1=)^ M<%NK*80`K]W54HNNG19`7N4`9P"8*V66VHHZ#;@"=C6U%ECPJ:;7B`MZ1:)Z M8$.O=]X[!206?SIZC:MR5GNY!UC`KJYVM>NE!9\68B.VTE-ZZES@W>NZ!9^^ M4?^H'5L;KP=6LMH2T*\&4,4`+H/>ZIU58INF%3$(%1:XY%-,K^5UU.MF+128 M>@<,9`>^0*VWU2O6)>M25BVK,EX1[/_@%QO"/>R.7=NV^%.IJ\25HDH^Q>H6 M"JQT/+*-+PB@UMN_".M.56>HN5Z+;\]V@0M`Y3&,;/VZ8U39*X6!QJKD35UF M4^.J4E8,[,L@KSIV/=<*4%.H"E]A[XAW%NN!?>JR8Y6]2M]$K$"V,0OGW;PN M=>VT\]P\+:WVU_M:7>W68HL'\=WS:D2VT]I%A:SZ3UFX+=N%:W6VPJO.E=\Z M9:&R=UQ3*W+VIJI#C:,";GR4>NK']@7KN85@DM="-(B M:>&L:MQ;;'-U(A#M#>ZV>`.IG5:#9R/5#PN6[1QP;2^X:H5:*B(VEGKH1::2 M>;6]&%\-+_D4'UO7G:@F?G.\DEFQ+X,UD\OT5:`>7N.L7EM*;HQ@3]!(P!T\ M6^>GVU81;*[FP)HU`.J&6N$"ZE8)PF@6NEJPEN5(75*[+5U=J)5>QZ75>\"EQ`;D46X&H12.@:6?6W[MXT0(UWX0K45?-V M6A=/GU8O;=K5."M19;LB8O6IGEGG@=-@.B#\#30(>(>O8-HE:N`U1PN,70G$ M<+&G[UD%;J)5ZRO7-='28TNN8U=J:O35Z2O,[<>.?&>OAMF$+$P@B"IN':,N M8'VZ;UT+K0)U[GH8J+MZ7;NV"=3.KZW6`FR3):X:?!VPV%8-[DUWYDL^!>-6 M::FXUU>\K!L`I5J&G;XZ<%$$$-9K`O_TD?HD<.5.="7`8H?XXX'5S-OF';FN M!,@`]5<7;RR!I.I[KBW`YE\>69+LP`IL3;0B?E>ST]>J;0Z5)_&^)MV@;FO5[*JC/0)#9U^M`-E?:ZBU(M"J%<`>>R6J`%_YJ>^7VYN,3=>6 M;0>^0%L1[$R`(2M`)9\BR'!&-G.+]X5"GS`!?R2 M>=FM:86S@%[U*TL`+LM6<)D"VP'>:@N5VUK_]0#K9&4"I0O(*E/`CSKU_:PV M89.\UM/N[@S7HHMKM;I*5.>K&V!U+%07ZGNN3?J:44V^RT#6@TW@EMO57?5. M@/T-*`!SFO;TAFIB0`5_93N^.M>8+3P6+,N:30/@8_^H5EL?;&E64+&=S?\V M"-JOL=\E,.=VCSN,-?@68[>M?U0#+4W5^MJ$E0O0@.6U^]IYJS.6-="J%0%O M<#^O_%\"L*.U_GK;+;X*!YBTBK\%K3XUKAK;';[V3H&[UU9Z:M*7S"J:9>"B M80\'[5@6,*$5"P`%D`(4`;BWFUK7;>LV=0N[3:F^6@>IJM7N:7&AN9L-G@*\ M40VS#E:#JH2VG@O[_:VR74NSIE[>;RWX_HN2#;9J:8T''%Z#ZT=WSTK_I;O> M?WFOU`6SZQ?6!\L]/=[F9@.YH-T^ZUN7)AL#]@=S<9VZ-F#F+VGV8^M:T@2C M@:6H`EEDK5YUYNI9O>;6%O2[>?6 M;&?!J5P=*M]UY?`_Z%]`5H4`QH2N[\+7L'O-31#T?6>^TUSN:4$7-QNN/0:/ M:[.U\]QW+,[V$-PVN+Z.6BFMTUSP:9O5`&M_)0$S84VM*&`$+?WD%QN;3?3" M?P_"H%U_K&DUQWILQ0K" MABVRK55:;837O3JO_6)K%`8]J_3U-=RLS:ZV=!6W@-KG"6K7-(P!+JZV M=H.L7(#`+U.7"Y`":+LJ766_PX%J+6<6"_S9W;'B;!.S,F#M*_II".KF;HNG)0"R`.\V8T#SZ6

Z.V`$6#P/ MG?T'.A32TV19Y6!R+BW_G#^R_-L/\I$VJ-#\AZU6>-@4%85LQ8UM22#[JZ1]==P4[XS+O=E3A76=?)8@`OLO65^MJ/'=)* M9'L"-]D9`'PS7D#3"&ZYEE^#:J^6J;I5];:R>X&[64>J.YV%X:,AP"WY&59;=JG&NZX>"9*]/YIBMH[4)G7=70@.64\`0Z)YLT'C)7 MAZ^PQ]<@JO\YLLR#TAC\Y%AK\LQB6;N3;;E" MBS'0T&`+,)75N\N!3@_+GX^]25@Q0$=V#=!!8+86(4`"(=24*T-`WHPMON:. M'I;']]:/<1Q7#O!^=>I&@V&\+-;_L-+5>0"]-:.:F)_-3=YMW@8+;+_M6&HQ4=:%. M!/0#4./^L>8WWQQK9;9^H7_-6]T%L#?:V3R&OK_Z88VT6U4DK35Y:Y&5I;6B MF)2O$MF30!P7#_"*G0*PDR7'48'7P`$XZR!"10(\#YC,M]]O_");7SO#''?$FD/VQ%%EL=#_Z9SR0+AWW MHN&IM5G1<\CW4HQA%^Z>A@L=YVJVS5I24#B-:T5.*1K`QV]LLV%N$B M>3<$055F=&W9(4L_+K]N5Y,"8^'>,B4U+JN4QB*K4&''TV&EKE.6)?UYM283 M*JZ_4F%TM$PAL+*'8P6`H/A8@ MBCN\1H!%<2*8N1N4=C089V'*T%;G*C?:L*M,S1AOB"W)+F$RKP7X%0N6C>5* M5]7,%>BY]'5YQYIK??%:IH.M4MV%1$IV-URRW?QVH%&Q)EUH[*]8`$N5AJ^2 MF>VP2..-+H+V7DL>/D>3>?.U9``9]$"W^WK[-05O7^^UXE57*C'Y1\O))4<_ M5P6V[-1SZZ`B*TMGGA0[IJ7`3^FE+7.8VCC`'1C/*6 M@FW#Q0&+,7":9BSUC1@7#V=$UYO9H@*`]+A7>M`=D0`PR`!1`#8,ZZ M`#[4LF'=Z[XUR]PO_K<"4T6^?%][LG1:X1J.YL$."+KU>VQPJ*9CKS MH:'%D.DNM5-623`5J+V:HTG**]W`-'9W)]MIOD7OD>_&DF?!5\9MM;O2J<3O1]-@@-9(68NM3!3?[ M;$V_!=8\K!H@Q#":_?GZ8Y6Y5V`9S92XR$QW7;MNCR&P+E_K<*T9.[Q'5B>/ MDU/'Z&,0ZNS7^-JGS2%GID?/O%UQJSS8>_RMQBZ?!?[-]-QO,$%7\DH(=A). MB5G/J-C>-CU#;TG5N]_YL^2Y"EPME@W# MI7.S=EJZJRN8))URM1(48X_)4F$OL+=:(9QZKE)7H3/'@V&$4FV5%0[].49]9IV;>T:9]G5^UB7;^:YC6NJ=@7/!-S'$EE\;.$V8XN3GJ/Z M>8NX^560["TZINM$#4O/46/6O^C:]&368TQ%A=OB6%4'5]P_;",!U!P1KO4J ME8>\Q-A=K.Y%]:5`$<`*("FW;#:%%*NY&H>[X1Z1_P.[C/_I-G03EG'"W5F&H7:@_@K#P@=OLB;'$3(8+O,TP@_"SAW:(:"NJ#-3[(M2!ZWOL15CG? MG'_0O)$`KN8ZZ3SO_3E+5T&Z@F;IJNZUE$QMK0IO;,D`:&)QZMD9)MP:'C5C MGT?!C.<8JLKA!1-S[CD#K7>IY6?^[=Y9A'IY9B_3GSG'MNDY;[)V3UQ#5:+R MGU'7\]TI1-[9/;RC[D^;CBV_G>/&<.L8;;VW=@=;J'_2YU[XY4/U=MTKEB`` MB5$`*@`T,3AY>LV?]A(?;;V\(E3C-5]W]QN7E0/#B>G`#NJ(\LXV*3PE"-&J M'`1ZX^O]<_:9D>NZOL2NB-/7+^+?0/!:`5O`#O*VKALL$(V/'@GS6*3L1^+E&=UW)[>?4[-%U\0J232I< M%=JTH5^U-?8:N\NI/CV_D%/!M&<$[F4@@RIMS#T_<'G/'%1XL4B@1IO5?0*X M4JT`'EQ$ZPBW,5`$X*Q.DI\`+%05*A4`">!9[C`+JENX4X`B`!,VQ-#9/;%6 M`9P`0P`J0!+@";!?55('G_FW-8#Q=`V737N]1A'T"KLL`=P"!M1)U<6U"7?=*&]^^00C,,A$:_#SOK5RS M:S'7?>S-=:`ZM?NY9M?R9OO8"@#2M=V9'6L&-B&G@).ZQ0$\`',6Y_NLC5TK M<0>\\%G5`C95@(V[_D'KKDE/F`)-]N]Z?4UYWAZ#<(O7R=Q:]1GZH1MK]5\3 MRA33K&S(K2=[\LR_;5^KE[V\--A:KZHW1!SD?5>?=+N.S6O!Z@#;Q1O*/F"C MH%^^9P":KS4[@:T\5N*&E*O)NE]E-N>WY#M=2-12!:[%*]3.:KEZ2'P)9N6N M@UW4S>PD[4YYC"L*-@-S?"FUUN0>S?67L/O3G>O9\V2*+L8X2VOKU<@"9M_&(F+],*E82?SCM3;/JC^Y^.<9Y#-W.P[D65"@W/=?**4!&H,%95,$8:Z.J`E:@*O M9@6LE]P]\,55-IQPK0)?767:66C"XEZ9'ANLU0=SD@>I/>NQ],3616"!%1-? M8,G$P&*8K_M:OKNO9FBWI2.R:]GI;&3VJXN/O0_<@B6N&P4"?C\6YU16QOE1GS M42W(HH<6*A\5KVU0!6R;FGL^=VT>K'WVCQN\MB`3%@3;_-L8@/I:6[Q\O=@^ M:]G`H&2IMLR7KOVBKLW*=NO1H=^>KETZ1Y%:#>0:=K6PZ=7+MEUX1;R_-:*J M`0"MYFDTL?S6B+H#^"T3K\,)>(`-+PJ`M3W;GLCJMM'$C.J_]FY[)X6$=FTG M487;+]?`MD%U9HS;_FVC`%K;OFWKQ?1Z!9!4E6R_B#.^CFU[JR=UMXI\7E^G MLU.LZN>$,)N99N`S'@]S()C;H6SG-G2;K2K=5N)2M^'%P.V:KJ3V_+S5K2$7 MJ7VS1%CL+D*7"NLS;AX_JY.S$.%T,OMW8AM+R+=FLY^U#9;DR<0V56$,\.8^8JD95=G MB7_5NU^Y<34:#AMM3?!F4HG1UUWC-67:#?"H_@=;?$'-J>#8-($1RJI2K@S( MN`/7^NIF,FN`3T!Z35N[L(T(4F`9-O]U_`H@!J,N=&_85>5VKX(ZPSK[_6;K MC?W.H&2FP)D;R$J.)M>*4\,`BNW'JUT8L&H$@'2'%F+3^N*?::V#>L[P"WFQO=5C< M606^=.6"L;A[9I'RQ;.:NXVHY>["`@0")]!A_0RC`-3=\FY275:V8&Q")78_ MGXVH%%P^=I^,&]P\R*AFD2L#96Y%MZ2ZP&JFG@CXCD44JH7L*I%[L3W(IJK* M]Z*W.6@IOG.,EV8@6K_53`+`$97(W3QC-7 M!HZNL66`+!"95'S+9?/*F$>PO>XVE6&I-Q;WHNJ(55-KAR6RNFBL=[4XA+T5H*SR48_40VP*;M*N)'V2?E*# MF='9"F$J-6N:K?R2GN-VG'W-G-:%+G%Y*C#6M=LJ2:*^YNE_F;C#WN^JG]05# MF5_2TU]9M5/VCEV;!3VCJ8VSX5IWM&6@54S[_5*#5B.T`M_H]Y9V<-W)'J)" M:7\#:UK[@FB;7NN4_?UBF?_EM]\Y7ZUKEG!W MCA7?"ET^LWC6R,JN9KA:O=O,*&DX\QQ;UTS^;D%/6[O,^6$#^.E[`ZO&A<\J M:X?:1%D"K8\9[>J;)EN#FKF_M%:N:Z'YR$R;]:]^F9F^2E03].V8:&UX[4D; M4=6Q5%A_;!=[(EME!C53M7W=P&+_=J7V+_#,=7L'B]7,17#SL.T7:7L$MT8C M4=7)/5E5<@Y\A@W,I;/JP!^LC-F4MO)[FWO_I2$D82G-9H&Z]>+CK:W.UEO_ M!"C4?6OZ;^@WC_VWSB*SC=F^4M^Y`;71ZYR)NE/_A>6K*N>&;^C7(JS1_E\W MPA79DVR\KR>W"UV\3=M>@Z?>#N6L-YLXW-NN=BJ77W_21&L<[80!`D&#C<,V M6*'6T&!.M41U(1MM]L<"DQW+F5N4:V?86RT++S"3E:_5WV^D;_<6,TM$340[ MP7&]]EWS;:=X-JM$7?;>:\>_X5IH<4LW$BVQ=HH\GK/`@&P=M"^:X%H]WAA/ M!+3.BF0S<3AW(-OX!@(;JYG+9^C<\ICV#(`FWK[JK;W"`=Y-JXFZB9N$!4B[ MP6O*5MR=;C5'&<./":FS]\V[5C[M]Y1T+98W7EN3=K=8Y-9V$[1M? M6Z/A;H!H<1K7.$V/5:+N$W:T$E]J>(RUBDOK+>-BN>W+R>:G`0:\JZJ=3OD: MK[_66(DY=)7U^$U.#N]J6;'%#&YD^"(6R]V4]MU."#;/:6$G0BSUJBT&3[:. MCV&[7EN?ZGX[:UL*[Q8;JM>T*(+#+\6[,VQFOO4JH?G<2-\@N,C7QIHB$/*B M9E/A#-L1[FS`)W#*Y39#K&F]%=80`T=`SYR'-1JOL/>V4P6%:U:X(DVMOB,; M$XK#H&#=\`\808M);OXFE+GB1&]OM3C9\@JRQ?A^JI/@Z%L$;7[VZKH@*,D. M7_&I4-::\(B7-CS!9J^J>?NTM?"[[>TX!0YC]J\>PJ&S4^'O\20W\(VTW<=N M7W_%]U71*U^67,NAW05#ERN[%VL*0UNW-VURS9_$OTVQRM3&M]96?+P!5@;+ MI=NT6&10N)IX3ZL47^T^Q#.YI6-5M9`ZK@WT9FS/C'W&TUY-LVX7U]L=MR4+ M4N7+=6(4=FOVQ_RLOA$[LQOB=%>GJQ8822O1YB)CIUN_]E\3=BS5(BQZ*'6P MG&BJBVR80&GY[HW:=0(L`=;0!-T.L3\\*)Z(]=IVC41YDYV)%3I;LE,J4G)];]UY;WVZ7ETS M9[WDK=L'JU4X]I>/>KH/.N>L`+P6BU"'+/D+3 MLH77MFR^LV$\EVV&AHAGO<^]+YH?>>(YKFHEKS@0.`+ELNP_^!#U3JYWMF6? MJ''9P&)%N?=:*.O]7A'O8]G!!FO#[I][HFT0)\_.=4W@48%.ZM)7J%`LE@>W M7&$)6>C/[DQ8FGO-1DS?MV_735@PN7]U=;W-/DTWL*FNVVR3]O3:T(U4U1GS M9R7E%6J$;T\6?!U+%8\E!ZV,K%ABS[ M?'(+T'*-,$>XD5WOO5S+N^<7,W+.-20\)(PF1L,&2Z+9_F)EZC=\^+Q-%70'QP$&$U?KQ?BP5L_LW` MLB]-1W-%=MV;29;Y:!T!EK+A@OEC-0]:]@AM_`W-^WJ M<4?9GFR>-FY[E'W@!J?&B.WE:/(7\<1Z[OB[5:`>JY$'93[H.V]!`XYA;>I=]T[5_6* MSW'(!VE(.62W^,LY[T!SS>6R:=Q,N41U)]O27CC3%8*NGFTZ@&SXQ0"4SKH: MK^L,66C;HC^XX)P"\%]S@#:W'`CM>6[W1:V/Q6W7RK'9VFSTM?K:;>O-!H%# MA*,CO=1$\#O;\RL;-I;'4I'E/UT0]!675_YOO='$4%VPOM3=:MO7.[Z[7BU@ MR.O>I65'-J+@XWU#GY$K`#+A2(!R.<(V:HXNSSZKR\_D1%6_-O_V7;ZH'N'* MRYN_Z=\6-C@<7Y[;Q>_RL7\#^V1.*R\\+0P;>,5J#UBM@MF0M``\W-JT]G+' MD1&II-JX-9$'Q@'@OWJB6J&6-@-5&6\8J?1FB; MIK^MG&(^-U&<*$OEEN,B;!L68E_P,7:WRTP[;TG;!-PLZXJY-TR/!>$&Q%?3M.45\<1<,O`"T./* MMA4`958==D9`P$`^`*9JQ'?/A84@=@B7!D#$%J$:L3.I2&P2:@M@B:*O4S?I=X^L+NJ4]==.CHVIKXQ()0- M<)';P1Z;>C!9D_I#U3C`"(SJ2)D,^;X7CT[YS97/45?$M^-/,%6=IJR:-<,> MQ/.\9F$>]UN:QJQ)YB%G75'FQV`2>?:[]6Q]YF!P;LW7VVPENK1Q4-%AA6L[ M4_.XX^SC;SD[^=O))DR_IB^RZ6F!]-AW6.Y48,>.U1VR;MCI\2^LUFO4N5^W%-WU]D=CJG',L_`$.8L80)T^%X2'P2W6:V7A]&9]*OS0?JQO M@8_9W.NK-34\Q>L0:>P&CJ6YBUT]APLVN+P`9HK[E&O*V^B6KF$@W0Q'#][F M8)>^.UA+\HS9(=MV':!WTA7FGW2L=A+V3#W]GMPN7.^U%6":],FWO;N&_49_ M"Q#JL]\OZAF548W]/?Y>!%`)T6@A;PE[);!3;0.$6Q'@D^G*MBW86%OJQ3$# MTG'D5-I5;$)YK$X%9O/Z8Q'?)M<9JNI7+2WP?93[C,VWF'4MMT<6-DZ/'?Z" MMNW)=N-6;H"U8BZ.?:\OE:NOB=LJN,NZ3#![E>KZ!5*^Q0$9K;&XN?R/=;UV M59N\SM2VM!+5?LT;!AI[C`\"&EA1NK37.M[LS7WG;,/4@]O:+2*UM;O8'<3D MQG7`O^KS>H+A#IQ(!:T6M!OLA>G`;)Z7P+Y)]ZZS;C'KAV'_*DH@#$`LAL:Z M5P.M8=7A@&PX,HN<3OR^>1'3>H$.:ULZ.CVY-?C&D??'Y&A(;7Z[).R<[>U: MOL_CI==(-=6ZPDPL`!/#7>.Z+>RGM*P:F6Y`[DJS8+.<'=;:[X/V_!U7#@33 M8)>TUE==P^@UR7IA[K"#>L>\P>'K+!26E3L5(+1./1-Q!WA#NE)GIC<[/2&5C?]"$<[`M.AGWW4[&P6N7OM+95=W:$&W^V/7JEVV])V2WAOSUR&_Q6#N.-CWIC:M?J_/ M497A#&,5JA)ZJTJ,%?+ZHC/.WUL7;Y7X[3IUM;-[MU7AZ.P6F\]5^2:_O[()L_2?EZFM?>L.3F;UK[N5LY%DL'E\7;25AG=[6Y-&M?_P7K MNFWBI/4AKV_W]NW@KFP+U6FVA]G5"%X<@[V9%E<3KUG/]MAELRYV*E"C/:>_ M8VD'5MRON-6[RGY?M\XR=Y?LQ&(@^U\=.!U1A;+'7"WCN&!$^]*7!5M3K;RF M$#"O'.2%N9E[X2VR%<8^:W^Z6'6]M1M7/W!&?1)7JWG9OFB=]46U-^ZI5GB# MFD/F#>U\01P%<&2':^?'46N:U;+W!X%LW2=G>K1')#M@1#*D-VEYJ; MG,//3/?*]><:Z&[KAF3[FOVXIW()>=B;8-Z`ELY684_G,^R9J[R],]M!\!T3 MD<,.!(X::DV=OJO$!3FC5A'ODP7+,FF71JXUIP)YX1Z[&?3'AM7.`[^4]\TZ#?6?CUYN\OV.;P`H:J=Y1YZ4V MWC/F3X<0P5[@ZHMZOWNOWJ_7\>.ZN%6W"OU%YY[4U3?GJ/:I=^H9!"P*7W:/ MQ0'A3_'E=W)WRSY'1[0O6>WHXU=+="QU[6MT;USGRDH"\O,_->J]\FY!%U!< M?RW"LJ"22J+`$M>HVO=S6'Y^8]<]YI475QW MW]FU-8O=M=`=03I!7-HQ'MYQ7 MSTVQ-G`;;1-]<8YWKF5WH*>M..=IK3Q9<.Q\)P]#WZ6WP_*]NOW4@OX7R*>2 MKX>\#7@)@E(=P"!MY;2#<8.PPP&JMG_58OU!9[S>RF'7(/6Q;OVW`J]3QZS; MW)?B?6Y-^0TZ^DHUMJ"7(H[JB.4-J&A1\["J]X;EU+X''E.O5XN!*WIWX55L9" ML&NQ3%G0ZAS@!?#2_D6'X7':$&6XJAE>IXV&=XK$BC.\[G,W?$3:"@_(G<,# MN*O)-5WC=<-\@/Z%51.WIM.X)_A3N`I^(B`1CZ97Q,W%J(LXB0][(YY-5^+B M`"JX9^R0.`=W)'Z]1CY['$_B5VR5^+_[A=H2GS[#Q/_&@U\V-CY:8)Y&YKNK ML&?HVNO*;S2VWLX.SL23LWVN]M-(;X7B^`[>GA8_S,FO\G%9ZT([<=R]#I9' M;(GE\_TIO"@L%&:#MRQ)L.3 M=&?5XF1A\*X5<*V*AE3?P1GD4NEL]0VZ`WM^5MZ*#OCQKG'3^5D`_RY(OQG/ M;[,%O%H4P.(:8SX@YF.`DW\#DE4E.=R=0

3L"OS-WB98*R\RD;`^\0"57\ MR/W%KU:<\Q6^4?Z!EP4GY/FS)/C.L`F>;QWY9J&?=!/O+_AE>Y0$"A[8<]1Z.7\+BR/NRDG%\;.AW[>NM)@L3Y/4<:_B/L[4<-PZ6SW-( MU2?R48`7[A#`(J\NAQ8S9V7RZ%A9;V0@!M\&`&YWLR_PM.N^P#)^`^]V#I\W MXO'D)7GB]4E^!`\,-W[SN3/QA=Q-?`3<1RH3^,A/LP764O3=JL!Z%C\!/NQ" MS$&^V591N$$5T@T\Y]_ZKV\"#H%H=B(>+I^11U^G5]770EPEKDW>`ZN_7C_S M5'/PZ^4O[1+^ANV_]DJ$Y:79<=6Y//]=?$Z#OUZ#97'P!>Z-*J3;;=#EU7%3 MJWW5`G3\-]68KXI5+XU_X?76=M0@=W-5Z^Y&!W.SPU,`@>[$^S9>%C25B;Q+ MU<'Q#&*U_"R^G^#+=U(U9%QBZ+Y^ MI-/HHE=Y-4-^ZML^IL\K)%[.WW@#?(/8*C]YY7H39,F]H;>(SPN?Z$:Y077V_BI`]L\2^\(]S#;R*D`0P`!JR48'8V/AQ(3 M@K?0]&<;0369FSQS7<^[8O/;V@-,=$-;2.M<=C3$4N&[+N4'ZQ^VF-I6_>+R M52_N%X(/K#5:G.SYK2KC,4CFE%26[R<85UQEKJ6&6R?(N^[0>--\71PB>-33 MSMWOZ=FC,:P]6RNAGGZ3HQ<.^6`!FK:.>:KE=W&NL+;_L>5R?7'LU2X^FSZS+=@7'[&HI=UF<7FY>I;@B MF,&_1_E9-2OVX'I^1C3KPO/T]>3[\9FYC;N=121CO6FWFE3.<`3:U]I#%0-C MGHGQZM6+PI8[FHNKIK'29]W6$VX\OGT(,H$V[9GJ5\UJ><"Y==1L0"W2OIFR\/)NV$J8[T"7X*OQ?6M7_4\V?"VGR)[CYI6H#GM3J@Q^).]2)\2' MQ9VT&G;S+#?UAHJ>Y2"WL(T'NH:6+J`>9J\J"._:P.GJ+&BZ*R$93!\PC[H3 MEG'NT'J=>X&5Y[[B7J53W9\&@_IB[(M^]^LF#M)JW:^XDW@;.%YU^'W+MN0: MOG`NN+IW++\83MB&""3OJ/>$?4@X30]X?O MYMWQ,6+!>$_@#'_-,M7ZEZ,+4#[5,7>-=I2AQ$U"'!XC:+; MA/OG\O?J.WS6$U['/;(B7K.ZHVG*KR*965PM;US/(-&V=E9A?7WU3#\$*&CC MF*?M%MA#^.N\(;]NP=VOWZGR!WAB?7A=8&\M7S`'<#WA['>*/(?>*:*Y[;!R MM:6RKEAEM?WW_ZJW#8.K8.&\+VFF*QC70XO4;>OR56O3V'JQ>W/X&EX?!YTC MK-_S)NX:[&&>)5_Y=NU!`QFGC#` MBH'IV=QFZP.ZNILBH&F[7AO4-WG]]2">`0ZO`(LW6^/4%'*Z^NN9;^]$10(D M`8P`5`":,X'61]\Z#@_3P#/Q.>Q/_&6@C>$0Z,5>T]O%VG0D];S8FW[$3F*/ MTT6H3&QSNC<]BOU"I6)345'BSU1WNA8[1CP%-P)\LK4'K71&NB>2L:SAXOHZ_CN`+ MXE/#9_BJ\E[>V`4#:_==GPRO>$WI#`<&>8WXW-^U.`3SX('Q_KT4>*4R(CUV; MIZWG&H/%\`:>>^Z79^+CD#?V(GB^:DK>,`^RMP2[Y&FXE/47_.3>9<^R?]R? MAA'"--A5?J)7'CQKK^*KZM?U67Q2\D\^09UR-63_!E`738?YZW=^WOO(_^"' M\#^XL]]]`CW>+`ZW_[][S1.OP?Q/_=U>3SWU%7"`!!+4CG":LPF74`VXC]W3 ME%G85V_#/6S]M\NU9F.#<(OVGV"QM\%\F5\QKP(K[8^]R&+P;'J=UHM-",:' MD-/W3OHWK[8^.XNNYU2??#6HT7)-^?";7KY03@7CG'A\OJRU^F["G_7: M\L/`(=:A>3O8&A^L185GF6FP6.A)LC];MAI@9>^.OA6S;WCA@!)YM^W\[2`8 MG"_FF&+_ZHJXXRH'N&:_VO_S`U60;IA[0SNJ_L'_U)FR(^7@.!"X<)\.5RPO MDJW`/E(#G:RXHPO'[L#*]!?5K=J6/0.SKK558 M+X*]=N*#LV!6IORA=:7^4(?'@M8,;-B8*XS2QQKL`=X`<>B":SN\)]N_3TOK MFF7#IW&::YZW!HU(U\Y&E^W14VE5.[#X8Q7Q5.^9&%X;;^8K"W@/?\* M8\_#2=4V?EQVU_M]=;GS>7G!QU_\JEI?C-N_EZ[*VJNON]9Q<`ZX]>IS1UZ' ME*?+![I2N\K=E8^3G^`WED^U]?;*OHL`O\O&$*'ZYV/V\/(@/9K]#7ZTM0H[ ML.WP]?5K],:=I@]KK@Z7\@/I&)BLK/V^NPY5&.[79AW+:.$\K^`V>IRK-(0:\806:>O7!^S'6@;F3F8JK.'8K&N1Y51/&`"_(G._Q1J>\"N6IM'O MP`>I+N3\-["8N2M1[P(KS`/D"G<">5R5>;L&=J8^70?LV5QVM7#]E2K(K=-: M7]W?4//$?:YV^UL`-@R8Q)>X$G>!^&<@ M+ASA$MXE0+ZXL&J7#2J(8@^WJ%\[:\6:-3#3SJQKH+/P2?FF_=5:I5[&]ZE+ M\)7Z90)9;X;=-WS47[A^@B716?CWM2@8]:L+5^8>/RS/:'94K?_X'98OF&/&[\S>]V9V2; M=F/\,_Y)OLJU;)[=%31'[-?D!]D48P!;@]Z7)U%/KS_Y@GF.O2B_,$_FAUOK M\T,,2F//+SO6%7Q]#F;O^,@_&W;QGKRWJ@(;:O+(C2:\]?P$D MXE?7P&OV=90_P&I,!^/.KS/S?WBY?B"^#(_&)\0'B@4/*5\_KC-U?BWFKFS[ M]`>\SFN%ZLTWYGM:GZA[4CGS.&>S\[:]G:R5QPOOF5')>=C5J^CV6!MS:!(C MM9>H&P78NO]/E/#GYFV\7`V=E:81%Q3_K6JG^.U5_2T-%TAVAO'-_HJ MZ.^P/6%2MP08R=SB%&M82MSM1_4C MN;W;2_IK<<3S;Z>S].PW+U/9.AR19LG:B]?S:1S MU&D`N6U4MZ;_?5W3AE8[1;(.6&FA+&__R"_+C_%V^TG<2EQ&[KPO3QKA=^DIPQKLJ.TM_0SUJ6L%E]&)SMWRW7^EO?2_0LN_TU1;OIM=Q_ MU'FV+V)E_Z5XC#M'GIR7^T,,4?8-\JSZULY>U\D7O0W^M]M`L?WR^KO@UE0; MAB'L1UO4`-(V8SRM9;4Z@W.M0M>E__D:[=],-4]S5WO,UV']O:Z=K*\++KF. MVR>YE-EH/[/?MVLB=XI@'Y:U.W]6?S@[F>N%)Q]OO\?Y%VD1`VF`T.Y:71@C MO"_-O?A7\AW:S;Z9[_,O_DW^9V?]M"`5D7YP3JS;HR?US/$0]M03RFJWW:U2 M_-']4U4HO4&[[;VWU6[_HAV]K`$FM(B9OH_6=7Q? MYEFQ@0(Q`&`A4%R]3[E>`0K>E53LKN"ZA6W"9E`K_BWE?_Y2K.Z?C1O6C_-" M;)GEFGXU<&C]U9^.'<._\BNU['M%?RQ6,QU+9)9NNFV:?494`'5G;,M_)'^, M?\I^.7%L;P]_3%F27#A7!`(26L=^MG_P?]=M&WD0HYJL'_Z?,Y?XF])6)1P@#P;?%-Y,AI<>F=Z8U;0=!1Q MY6*7`=8+#0*U"J-XV'017$I<@P7_6T)W2V2J>,5GK7@??D!\)UQQ8JE:METF=$IA^%9$9L![OG8= M<+U_(EAI8$5V46GC9KQS+EAJ7%A8X&5*8?(%^6]$:ZA627VQ>RI;6'%R:.=S M96EQ8")9<7D/8&!X=H!]@%IB]UC`54Y8JERN@$E^`(#954QI>&)D=5`";`!! M6`YTD%E-5$EA-&)B8;-R9UV5`>EC"8`96%-5(%Q$5UYX[G"1=FP"!%V"9D$% M05C28D!@I7HO8(EA;58_;^)^.6`!819]2E3/5M]7LWCC82-8TFC3=F-OSV7, M75MBZ&75:^YK3P-N=NY\Y%I-6-]N,E\8:,U<*15=;WIT?`)?8&=X!GWL;#EC M(UQG8'A7&5OZ89Q@%&U/63,"PH!C7KY?'V,)!JQ_(W3!T;&`T M7(9OU'57T%P]78.>L)H1H"0;9!N_V@,>`>`:FS\?HQB[6QS8"J! MLFXQ7L-R_WFJ7'-MSWC78V5U.V+'8=Y5>W>R?PQ>255G<*)UP("`!=A@K7KP M>I-676>55[!:\5KP?O-MMUNY6;!7.5E58-QWHVH^>756#&3H?YEC%EMB;Z]E M?6_3:*M6RW5DH7JY=D5V;GJ,7[MPVEHI M;G5@+5V:7#5:)VIP;4AB?("T;\9EQU0;8GUB;W2B:MH##G^+7B!ZOUUB?Y-O M5V86:=)KFE^R<"A[%F:K9$5RWB:)`JH%;0QH>_M>66Q.`%4**V(J@"P`,%_1 M1J%WF($5D%>G6<_@2EL95E"6\%] M25])`7L`R&GY=6YU=8'&7BINRE26!O"6MT6=17@X'Y6J)J465'6^UV*7Q2@&D!(0)I5FI6 M+WP<<>]B(5PA`3-\HWO7:Q`%ME9,`)YE&&98`$$`\(&>9=UY&7L-`DY>:P%J M6--J3F.L?@:!8'*+7KEMEVL>*, M-X),@-16M0,K8FT`&8*/"0%=XF3$S^8!U9W%3R6XYM!6-V8:=X06I\;3H`S@LL`#``?X)W M!ZY4UVRN7GZ"@(*"@EN`F536;?N!?`QO7YQ;O0,25:A^2E0O`/E6J'Z>5'F" MSG\!:E14EH)*@51=?V'45*)[?V&<<"!<>'7)?GIU17JI62)8`6?35.U\FEA) M7>R`]U:8@*%;=UA4@C98CW@#@/-S2WR!8SAGB'PG5`)GOUVL<"E7:7HK7D94 M1`?7:^F`WWO=5]6`8V#3?B%]-WTR6'."8'D=5B5L5%1I=]9R70P95#!",'Y! M`#)^)8`6>69@`H(9@-QLX4W_`S=;95PK8M:")E0N`+H&Y&\P`,!M65VR<,I4 MT7E;9XQ=1P@0`@`$6%_S7A1W+7T1#J"L6L*>7%[3G-Z`8D"$H-E>A"#\W/4$RY8 M`FLJ5-B"C6LC`7`(((.":$=T3'(Y<_]S)X*I7HQG3@-)5676,<_%$E%;?1UB"N8(P==)SER:1&AU6Q8+Q M6DQJ'5BP5"!G1(6Y)H^8#\;,R`SU0'!3EYZ8!#?R!8 MX%ME8A-9QH$A4MU=X.(`@U;GH.F@5Z# M;@"H@4V"V7T=5J]M)E1$H=UF",'4C;ZN#Y`J@?S]N&@?O M7KN#M'/4`:J#:7]!@Q-9X@/[@?X#.`'77SZ"[SN3!6P,/0).@Z9=PH.Y@\2# M1'*O;0V"6`G0;`N"3G/-@PU574<=!!H,O8DQSB7R,7=]'V8,O?LA[&WH* M54F##'NQ5#!?BG"#!:5HZ(/!@\8!*0!T`+MMY8(T54)WV'`T@@M!D7="=Z1E M*H/3@XV"KX/?5I"#R(,0"/=MVX.^@Y%W16H=<].#.X+5@U14UX-S@@4)_F#, M@^]>3WBT<^&#$H3]=\Q[C6NJ!4P$3WB[<_M>57GL@R1]+H,W7[V#C%3S@QN$ M$(3V@_B#JX.K!1)O+(3=@TE%#8.E902$96?%@VQ5V(->#"YOO8,!#>]>0(0P MA&8`%8,3A"94[`9X5C^$EQ;]@Q95#82893@+)82E9>&#,P#M#Y8,BA%*$ MXG2N$-(+=>!%YEQ9&A/>#^8,)A()^083^@S>$:X0"A-*#Q@'# M@]>"WU8)A',';(10A/^#DVN%!4:$2(1TA$J$"(3P;Y$6'V]/A,]548091;QW M0H+A@R""XX-9A$5R6X2(A"6$X'GK@Q)5880,A"V$DE57>O6#_50RA.6"&U8- M6R5BU6L:!V!DC@D;`VV"/VZNFA&9Y2V<_;KM9UF#$@J*" M)6HL60!D"P*C6/1PVF-(@<=QCF;#BTI@Z9=IX%@@RH'$W`$7.5NQVA/<&EA M^F7N9\>$[SM1;M-85WZ]5#4"%%^.@S=>^H-[>RE76`-_7`(&8T/+6NE:@(!) M6)A6FEZ[540'WU]?68E@8H%<9%Qinteger ndims, mx\_neigh \\ \>parameter (ndims=2, mx\_neigh=4) \\ \>integer gid, gid\_cart, dims(ndims), neigh\_def(2), neigh\_pid(mx\_neigh) \\ \>integer own\_position(ndims), period(ndims), i, j, num\_neigh, ret, rank \\ \>real$\ast$8 u(0:101,0:101), f(0:101,0:101) \\ \>data dims / ndims $\ast$ 0 / \\ C \hspace{5mm} Create a grid structure in ALL group and inquire about own position\\ \>gid = ALL \\ C \hspace{5mm} Set process grid size and periodicity \\ \>ret = MPI\_MAKDIM(gid, ndims, dims) \\ \>if (ret .lt. 0) call error\_handler(ret) \\ \>period(1) = MPI\_PER \\ \>period(2) = MPI\_PER \\ \>rank = MPI\_CART (gid, gid\_cart, ndims, dims, period) \\ \>ret = MPI\_INQCART (gid\_cart, ndims, dims, period, own\_position) \\ C \hspace{5mm} Look up the PID numbers for the neighbors. Own process coordinates are (i,j). \\ C \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1) \\ \>i = own\_position(1) \\ \>j = own\_position(2) \\ \>neigh\_def(1) = i--1 \\ \>neigh\_def(2) = j \\ \>neigh\_pid(1) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i+1 \\ \>neigh\_def(2) = j \\ \>neigh\_pid(2) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j--1 \\ \>neigh\_pid(3) = MPI\_INQPID (gid, neigh\_def) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j+1 \\ \>neigh\_pid(4) = MPI\_INQPID (gid, neigh\_def) \\ \>num\_neigh = mx\_neigh \\ C \hspace{5mm} Initialize the grid functions and start the iteration \\ \>call init (u, f) \\ \>do 10 it=1,100 \\ \>\>call relax (u, f) \\ C \hspace{5mm} Exchange data with neighbor processes \\ \>\>call exchange (u, neigh\_pid) \\ 10 \>continue \\ \>call output (u) \\ \>end \\ \end{tabbing} \caption{Set--up of process structure for two--dimensional parallel Poisson solver.} \label{poisson} \end{figure} \end{document} From owner-mpi-ptop@CS.UTK.EDU Fri May 7 16:50:14 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-UTK) id AA01628; Fri, 7 May 93 16:50:14 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01598; Fri, 7 May 93 16:49:18 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 7 May 1993 16:49:17 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from almaden.ibm.com by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01588; Fri, 7 May 93 16:49:14 -0400 Received: from ALMADEN by almaden.ibm.com (IBM VM SMTP V2R2) with BSMTP id 3726; Fri, 07 May 93 13:50:01 PDT Received: by ALMADEN (XAGENTA 3.0) id 7010; Fri, 7 May 1993 13:50:01 -0700 Received: by ho.almaden.ibm.com (AIX 3.2/UCB 5.64/4.03) id AA22134; Fri, 7 May 1993 13:49:33 -0700 From: (Howard Ho) Message-Id: <9305072049.AA22134@ho.almaden.ibm.com> To: hempel@gmd.de Cc: mpi-ptop@cs.utk.edu, ho@ho.almaden.ibm.com Subject: Re: Revised draft In-Reply-To: (Your message of Thu, 06 May 93 09:58:00 GMT.) <9305060958.AA14791@f1neuman.gmd.de> Date: Fri, 07 May 93 13:49:31 -0800 Rolf, Thanks for your quick reply. I very much agree with your comments. Please see my reply to two of your questions. Regards, -- Howard Graph description with an adjacency matrix syntax: ================================================== >> 4. For user's convenience, it may be beneficial to supply a utility function >> in changing the adjacency-matrix graph definition to the (index, nglist) >> graph definition. > 4. I do not exactly understand what such a utility function should do, > so I would like to see a proposal. Proposal 1: newrank = MPI_MAP_GRAPHM (gid_old, nnodes, adj_matrix) with IN gid_old: group id of parent group, IN nnodes: the number of graph nodes, IN adj_matrix(*,*): an nnodes by nnodes 2D array for the adjacency matrix. Any non-zero entry means there is an edge between the two corresponding nodes. The diagonal value will be ignored. It is an error if the matrix is not semmetrical in the zero/non-zero sense. Proposal 2: MPI_UTIL_GRAPH (gid_old, nnodes, adj_matrix, index, nglist) with IN gid_old: group id of a parent group, IN nnodes: the number of graph nodes, IN adj\_matrix(*,*): an nnodes by nnodes 2D array for an adjacency matrix. OUT index(*), nglist(*): definition of a graph structure. Permutation Function: ===================== >> 12. Sometimes, for efficiency reason, the user likes to reorder the mapping >> of a group but still need to inherit the data from the old mapping. Thus, >> a permutation is often required from the old mapping to the new mapping. >> Maybe, it is beneficial to add a permutation from the old group to the new >> group, like MPI_PERMUTE (gid_old, gid_new, inbuf, outbuf, len)? >> Note that the "unordered sets" of gid_old and gid_new must be the same. >12. I don't know whether I completely understand the function you > propose, but it seems to me something which falls into Collective > Communications. Perhaps you should propose it in more detail, > and then we see where to discuss it. MPI_PERMUTE (inbuf, outbuf, len, type, old_gid, new_gid) IN inbuf: first entry in input buffer, OUT outbuf: first entry in output buffer, IN len: number of entries to be stored in output buffer, IN type: data type of buffer, IN old_gid: an old group id. IN new_gid: a new group id. For example, if old_gid contains the list of processes: (0, 1, 2, 3) and new_gid contains the list of processes: (1, 2, 0, 3). Then the following communication will be performed. 0 -> 1, 1 -> 2, 2-> 0, 3-> 3. From owner-mpi-ptop@CS.UTK.EDU Mon Jun 14 10:30:49 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA23570; Mon, 14 Jun 93 10:30:49 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA06942; Mon, 14 Jun 93 10:28:39 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 14 Jun 1993 10:28:38 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA06934; Mon, 14 Jun 93 10:28:33 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA08778 (5.65c/IDA-1.4.4 for ); Mon, 14 Jun 1993 16:27:30 +0200 Received: by f1neuman.gmd.de id AA17988; Mon, 14 Jun 1993 16:28:13 GMT Date: Mon, 14 Jun 1993 16:28:13 GMT From: Rolf.Hempel@gmd.de Message-Id: <9306141628.AA17988@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: new draft Cc: gmap10@f1neuman.gmd.de The next Dallas meeting is approaching rapidly, and at that meeting we will have a first reading of the topology section. Therefore, today I reworked the draft chapter according to the discussions at the last meeting. The main changes are: 1. There is no shift function, but an inquiry function for the sender and destination fields in the send-receive. 2. All MPI functions don't return data via the return value. (This is reserved for error conditions.) 3. The text which deals with the internal storing of topology data has been modified (de-emphasize the need of an internal cacheing mechanism). All other changes are relatively minor. With this note I send you the LaTex source file. In a separate mail you will also get the uuencoded compressed PostScript. Any comments are welcome! Best Regards, Rolf Hempel ------------------ LaTex source below ---------------------------------- % MPI Authors: % This is MY version of YOUR chapter. It has a wrapper so that you % should be able to simply LaTeX this. % % Please work from this text so that we are in synch. % % --Steve Otto \documentstyle[twoside,11pt]{report} \pagestyle{headings} %\markright{ {\em Draft Document of the MPI Standard,\/ \today} } \marginparwidth 0pt \oddsidemargin=.25in \evensidemargin .25in \marginparsep 0pt \topmargin=-.5in \textwidth=6.0in \textheight=9.0in \parindent=2em % ---------------------------------------------------------------------- % mpi-macs.tex --- man page macros, % discuss, missing, mpifunc macros % % ---------------------------------------------------------------------- % a couple of commands from Marc Snir, modified S. Otto \newlength{\discussSpace} \setlength{\discussSpace}{.7cm} \newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace} } \newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace} } \newlength{\codeSpace} \setlength{\codeSpace}{.3cm} \newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} } % ----------------------------------------------------------------------- % A few commands to help in writing MPI man pages % \def\twoc#1#2{ \begin{list} {\hbox to95pt{#1\hfil}} {\setlength{\leftmargin}{120pt} \setlength{\labelwidth}{95pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#2} \end{list} } \outer\long\def\onec#1{ \begin{list} {} {\setlength{\leftmargin}{25pt} \setlength{\labelwidth}{0pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#1} \end{list} } \def\manhead#1{\noindent{\bf{#1}}} \hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple} \begin{document} \setcounter{page}{1} \pagenumbering{roman} \title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface} \author{Scott Berryman, {\em Yale Univ} \\ James Cownie, {\em Meiko Ltd} \\ Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\ Al Geist, {\em ORNL} \\ Bill Gropp, {\em ANL} \\ Rolf Hempel, {\em GMD} \\ Bob Knighten, {\em Intel} \\ Rusty Lusk, {\em ANL} \\ Steve Otto, {\em Oregon Graduate Inst} \\ Tony Skjellum, {\em Missisippi State Univ} \\ Marc Snir, {\em IBM T. J. Watson} \\ David Walker, {\em ORNL} \\ Steve Zenith, {\em Kuck \& Associates} } \date{March 25, 1993 \\ This work was supported by ARPA and NSF under contract number \#\#\#, by the National Science Foundation Science and Technology Center Cooperative Agreement No. CCR-8809615. } \maketitle \hfuzz=5pt %\tableofcontents %\begin{abstract} %We don't have an abstract yet. %\end{abstract} \setcounter{page}{1} \pagenumbering{arabic} \chapter{Process Topologies} \label{sec:topol} %----------------------------------------------------------------------- % % file topol.tex % \section{Introduction} A process group in MPI is a collection of n processes. Each process in the group is assigned a rank between 0 and n-1. In the majority of parallel applications this linear ordering does not reflect the communication structure of the processes which is usually determined by the underlying problem geometry and the numerical algorithm used. Often the processes are arranged in topological patterns as simple as a two-- or three--dimensional grid. For the user who programs an application on such a process structure the most natural way of referring to individual processes is to specify their coordinates in the process grid. Usually a process does not have to know the PID numbers of {\em all} processes in the grid, because communication only takes place with processes in a certain neighborhood, and perhaps with a few distant processes. Non--scalable features like the explicit listing of all participating processes in the application could, therefore, be avoided, if there were a means to specify the information which is really required. Additionally, the user--defined process structure can be exploited by the system in the assignment of processes to hardware processors, if this helps to improve the communication performance on a given machine. How this mapping is done in detail is outside the scope of this standardization proposal, since it is too much dependent on the particular hardware. The description of a ``virtual process topology'', however, only depends on the application, and is, therefore, machine--independent. The functions which are proposed in this paper only deal with this side of the mapping problem. There are well--known techniques for mapping grid/torus structures to hardware to\-po\-logies such as hypercubes or grids. But even for more complicated graph structures good heuristics often yield near--optimal results \cite{suprenum}. On the other hand, if there is no way for the user to specify the logical process arrangement as a ``virtual topology'', this information is most difficult to recover later. A random mapping is most likely the consequence. On some machines this will lead to unnecessary contention in the interconnect network. Some details about predicted and measured performance improvements which result from good process--to--processor mapping on modern wormhole--routing architectures can be found in \cite{wormhole1,wormhole2}. % \section{Virtual Topologies} % In the most general case the connection structure of a set of processes can be represented by a graph. The nodes stand for the processes, and the edges connect processes which communicate with each other. MPI provides message--passing between any pair of processes in a group. There is no requirement for opening a channel explicitly. Therefore, a ``missing link'' in the user--defined process graph does not prevent the corresponding processes from exchanging messages. It only means that this connection is neglected in the virtual topology. As a consequence, an automatic mapping tool will not try to assign the processes to neighboring processors. The graph definition function MPI\_GRAPH presented in this paper does not include any weighting of the communication volume along the different edges. Processes are either neighbors or not. Experience with similar techniques in PARMACS \cite{parmacs1,parmacs2} show that this information is usually sufficient for a good mapping. Additionally, a more precise specification would be more difficult for the user to set up, and it would make the interface functions more complicated. In principle a function for the definition of such a graph structure would be sufficient for all applications. However, in many applications the graph structure is very regular, and the detailed set--up of the graph would be inconvenient for the user and resource--consuming during run time. A large fraction of all parallel applications use process topologies like rings, or two-- or higher--dimensional grids or tori. These structures are completely defined by the number of dimensions and the numbers of processes in each coordinate direction. Also, the mapping of grids and tori is generally an easier problem then that of general graphs. Thus, it is desirable to do the mapping as grids and tori rather than obscuring the information in a graph. Therefore, in addition to the general graph cartesian structures of arbitrary dimension are supported. The topology definition function MPI\_CART can be used to describe both grids and tori by specifying per coordinate direction whether the process structure is periodic or not. Similar functions are contained in EXPRESS \cite{express} and PARMACS. Note that an n--dimensional hypercube is an n--dimensional torus with 2 processes per coordinate direction. Thus, special support for hypercube structures is not necessary. Based on the positions in the virtual topology a process can look up the PID numbers of other processes by calling MPI\_INQPID. The processes are specified by their logical node numbers (graph) or rectangular process coordinates (grid/torus). Thus, it is possible to inquire for the PID numbers of only those (few) processes with which messages have to be exchanged. The inverse function MPI\_INQLOC translates a pid number into the corresponding cartesian coordinates. \discuss{In the PT2PT discussion it is not yet decided how processes are addressed. This could, for example, be done by unique identifiers, or by their ranks in a group. The topology handling will be adapted to whatever decision will be taken in PT2PT.} % \section{Embedding in MPI} % The support for virtual topologies has to be fully integrated in the framework of MPI. In particular, the virtual topology functions do not interfere with the functions for process group creation and with those for collective communication. The current design of the process topology functions is based on the following assumptions: \begin{itemize} \item MPI is free to choose any process in a group for any location in the topology. There are no special processes which have to be aligned with topology substructures. This assumption fits best to a ``local SPMD model'' in which all processes in the same group execute the same program. \item One important feature of MPI are the process groups. The treatment of virtual topologies has to take this concept into account. The functions presented in this paper are not only compatible with the process groups, they even take advantage of them for the definition of mapping overlays and dynamic remapping during execution time. Virtual process topologies help in the subdivision of process groups which in many applications has to be done along process coordinate lines. Furthermore, the definition of collective gather--type communication calls benefits from the natural ordering of processes in a logical topology. \end{itemize} The virtual topology handling follows the general MPI rule of functional layering. At the bottom it is based on the general process group creation function MPI\_CREATE\_GROUP plus a few topology specific mapping functions. In principle this is sufficient for defining topologies and use them in applications. A number of higher--level functions provide an interface which is similar to what users of packages like Express and PARMACS are familiar with. This level can be written in a portable way in terms of the low--level functions. Implementations of the high--level functions which bypass the low level may be advantageous on some systems in terms of memory and cpu time usage, but this is not a requirement. % \section{Overview of the proposed MPI functions} % This chapter assumes the availability of the following MPI features which are defined in other chapters: \begin{enumerate} \item An existing process group (e.g., the ALL group) can be partitioned and/or renumbered using \mpifunc{MPI\_CREATE\_GROUP(gid\_old, gid\_new, group\_key, order\_key)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_new] group id of newly created subgroup of which the calling process is a member, \item[IN group\_key] integer value used for the partitioning, \item[IN order\_key] integer value used for determining the ranks in the new group (see below), \end{description} This function is called by all processes in group {\em gid\_old} loosely synchronously. It creates as many different subgroups as there are different values of {\em group\_key}. The ranking in the newly created groups is determined by the {\em order\_key} values, with the process ranks in the parent group for tie breaking. \item If there is a standardized internal information cacheing facility, it can be used by MPI routines to store and retrieve information related to a process group. This facility was proposed in the Context Subcommittee. High--level topology functions store structure information for a process group, which is then later used by topology inquiry functions. In case the cacheing mechanism does not become part of MPI, the topology information can internally be stored with other group information in an implementation--dependent way, which each vendor can do as is most convenient. \end{enumerate} There has been a general decision in MPI to start all numbering with 0 instead of 1. Thus, coordinates in a cartesian structure are 0,1, ..., dim-1. In the same way, nodes in a general graph are numbered zero up. % \subsection{Low--level topology functions} % On the lowest level groups are created by the general function MPI\_CREATE\_GROUP. Using the input argument {\em newrank} the caller can change the process ranks in the new group as compared to the parent group. This feature can be used to efficiently map the processes in the group to the positions in the topology. For each class of topologies, therefore, there is a function which computes the rank of the calling process in the new group, based on the size and structure of the topology. Note that it is a valid implementation if the new ranks are identical to the old ranks. So, if for a given machine the placement of processes makes no difference, the implementation of the rank computation functions is trivial. For cartesian structures the function is \mpifunc{MPI\_MAP\_CART(gid\_old, ndims, dims, period, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN ndims] number of dimensions of cartesian structure, \item[IN dims(*)] number of processes in each coordinate direction, \item[IN period(*)] periodicity specification in each coordinate direction. \item[OUT newrank] reordered rank of the calling process. \\[4.0ex] \end{description} The corresponding function for general graph structures is \mpifunc{MPI\_MAP\_GRAPH(gid\_old, nodes, index, nglist, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN nodes] number of graph nodes, \item[IN index(*), nglist(*)] definition of graph structure: For each graph node its set of neighbors is entered, i.~e., the set of processes with which the node process is going to communicate most frequently. Since there is no weighting of node connections, it might be sensible to specify only those neighbors with which there is a considerable amount of communication. For each node $i\;\:(0 \leq i \leq nodes-1)$ the list of the neighbor nodes is stored at $nglist(j),\;\: index(i) \leq j \leq index(i+1)-1$. For the last process $index(i+1)$ points to the first free position in vector nglist. Note that the matrix is symmetric, i.~e., if node {\em i} is a neighbor of node {\em j}, than node {\em j} is also a neighbor of node {\em i}. This property can be used for an internal checking of the input arguments. \item[OUT newrank] reordered rank of the calling process. \\[2.0ex] \end{description} The definitions of the arguments {\tt nodes}, {\tt index}, and {\tt nglist} are illustrated with the following simple example: Assume there are four processes 0, 1, 2, 3 with the following adjacency matrix: \\ \begin{tabular}{ll} process & neighbors \\ 0 & 1, 3 \\ 1 & 0 \\ 2 & 3 \\ 3 & 0, 2 \end{tabular} Then, the input arguments are: \\ \begin{tabular}{ll} nodes = & 4 \\ index = & 0, 2, 3, 4, 6 \\ nglist = & 1, 3, 0, 3, 0, 2 \end{tabular} If the topology contains fewer processes than there are processes in the parent group, the newrank values for the remaining processes are set to MPI\_NORANK. It is an error if the topology defines more processes than are contained in the parent group. % \subsection{High--level topology functions} % In principle, all that is needed to create an MPI process group with topological ordering are the two mapping functions and the general group creation routine. However, this is not what the applications programmer expects to see on his level of abstraction. Therefore, another layer of functions is defined on top of the low--level functions. This higher level can be portably implemented in terms of the level below. Of course MPI implementors are free to bypass the lower level for the sake of better performance or resource usage. For cartesian and graph structures the functions MPI\_CART and MPI\_GRAPH create a process group with topological structure. They combine the call to the mapping function with the call to the group creation routine. The user can decide whether the ranking in the new group may be reordered (for a more efficient mapping) or not. In the latter case the rank of the calling process is copied from the parent group. The option of not reordering the process ranks can be useful in the case of an overlay of different topologies. The user can then fully control which location in the first topology coincides with which location in the second one. The price which one obviously has to pay in this case is that for only one topology the process arrangement can be optimized. As specified for the low--level functions it is an error if one attempts to define a topology with more locations than there are processes in the parent process group. If it does not use all available processes, the unused process will return MPI\_NORANK as their rank in the new group. MPI\_CART is defined as \mpifunc{MPI\_CART(gid\_old, gid\_cart, ndims, dims, period, reorder, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_cart] group id of cartesian group (if calling process is part of it, else id of rest group), \item[IN ndims, dims(*), period(*)] definition of cartesian structure, (for details see the definition of MPI\_MAP\_CART) \item[IN reorder] ranking may be reordered or not, \item[OUT newrank] rank of the calling process in the cartesian group (or MPI\_NORANK). \end{description} Apart from some local computations, MPI\_CART is based on the two function calls \mpifunc{MPI\_MAP\_CART (gid\_old, ndims, dims, period, newrank)} and \mpifunc{MPI\_CREATE\_GROUP (gid\_old, gid\_cart, 0, newrank)}. % \vspace*{3.0ex} For graph structures the corresponding routine is \mpifunc{MPI\_GRAPH(gid\_old, gid\_graph, nodes, index, nglist, reorder, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_graph] group id of graph group (if calling process is part of it, else id of rest group), \item[IN nodes, index(*), nglist(*)] definition of graph structure, (for details see the definition of MPI\_MAP\_GRAPH) \item[IN reorder] ranking may be reordered or not. \item[OUT newrank] rank of the calling process in the graph topology group (or MPI\_NORANK). \end{description} % \vspace*{3.0ex} The following topology information is stored with the process group by a high--level topology definition function: \begin{enumerate} \item Type of topology (cartesian/graph) \item For a cartesian topology: \begin{itemize} \item ndims (number of dimensions), \item dims(*) (numbers of processes per coordinate direction), \item period(*) (periodicity information), \item own\_position(*) (own position in grid, could also be computed from rank and dims(*)) \end{itemize} \end{enumerate} For a graph structure no information has to be stored, because the graph node number is the rank in the graph group, and the size of the graph is the number of processes in that group. \subsection{Topology inquiry functions} If a topology has been defined with one of the above high--level functions, the topology information can be looked up using inquiry functions. They all are local calls, and do not require any communication. The function MPI\_INQMAP returns the type of mapping which is assigned to a group. \mpifunc{MPI\_INQMAP(gid, map).} The output value {\tt map} is one of the following: \begin{itemize} \item MPI\_CARTTOP: cartesian topology, \item MPI\_GRAPHTOP: graph topology, \item MPI\_NOTOP: no topology. \end{itemize} For a process group with cartesian ordering which has been created by MPI\_CART, MPI\_INQCART looks up the following info: \mpifunc{MPI\_INQCART(gid, maxdim, dim, size, period, pos)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN maxdim] length of vectors size(*), period(*), and pos(*) in the calling program, \item[OUT dim] dimension of the cartesian structure, \item[OUT size(*)] number of processes for each coordinate direction, \item[OUT period(*)] periodicity yes/no for each coordinate direction, \item[OUT pos(*)] position of calling process in cartesian structure. \end{description} For a process group with cartesian structure, the function MPI\_INQPID translates the logical process coordinates to process ids as they are used by the point--to--point routines: \mpifunc{MPI\_INQPID(gid, location, pid)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN location] coordinate vector of process, \item[OUT pid] process id. \end{description} In a sense, the inverse operation to MPI\_INQPID is provided by the function: \mpifunc{MPI\_INQLOC(gid, rank, location, maxdim)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN rank] rank of a process within group {\tt gid}, \item[OUT location(*)] coordinate vector of process, \item[IN maxdim] length of vector {\tt location} in the calling program (only for error checking). \end{description} MPI\_INQLOC translates a rank in the group into a topology location. \discuss{Depending on the decisions taken in the PT2PT subcommittee, MPI\_INQPID might be changed to return the rank in the group rather than a pid.} \subsection{Partitioning of cartesian structures} If a group has been created with MPI\_CART, the function MPI\_PARTC can be used to partition the group into subgroups which form hyperplanes of the original process structure. As an example, assume that MPI\_CART has defined a two--dimensional grid structure on a process group. With a call to MPI\_PARTC this group can then be split up into disjoint subgroups which represent rows or columns of the original group. The function syntax is: \mpifunc{MPI\_PARTC(gid, lostdim, gid\_new)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN lostdim] direction perpendicular to resulting hyperplanes. \item[OUT gid\_new] group identifier of the hyperplane group in which the calling process is contained. \end{description} MPI\_PARTC uses the function MPI\_CREATE\_GROUP to partition the parent group, using the process coordinate in direction {\tt lostdim} as the key value. After a group has been partitioned by MPI\_PARTC, the inquiry functions MPI\_INQCART and MPI\_INQPID consistently refer to the grid sections if applied to a subgroup. If the process topology is a cartesian structure, a collective shift operation most likely is used along a coordinate direction. In MPI a shift operation is handled by the more general send--receive functions. Those take as input the identifier of a source process for the receive, and the identifier of a destination process for the send. If the function MPI\_SHIFT is called for a cartesian process group, it provides the calling process with the above identifiers, which then can be passed to the send--receive function. The user specifies the coordinate direction for the shift and the step length: \mpifunc{MPI\_SHIFT(gid, direction, steps, pid\_source, pid\_dest)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN direction] coordinate direction of shift, \item[IN steps] step length ($> 0$: upwards shift, $< 0$: downwards shift), \item[OUT pid\_source] process identifier of source process, \item[OUT pid\_dest] process identifier of destination process. \end{description} Depending of the periodicity of the cartesian group in the specified coordinate direction, MPI\_SHIFT provides the identifiers for a circular or an end--off shift. In the case of an end--off shift, at the boundary process one of the identifiers is set to MPI\_NORANK, indicating that there is no process in that direction to communicate with. In a portable program the number of available processors usually is not known at compile time. In the case of a cartesian topology the function MPI\_MAKDIM helps in setting the numbers of processes per coodinate direction, depending on the number of processes in the group and optional constraints which can be specified by the user: \mpifunc{MPI\_MAKDIM(gid, ndims, dims)} with \begin{description} \item[IN gid] group id of group which is to be structured, \item[IN ndims] number of cartesian dimensions, \item[IN/OUT dims] number of processes in each coordinate direction. \end{description} The processes of the group with ID number {\tt gid} are divided as evenly as possible among {\tt ndims} dimensions, subject to the constraint that all processes in the group are used. The caller may further constrain the operation of this routine by specifying elements of array {\tt dims}. If {\tt dims(i)} is set to a positive number, the routine will fix the number of processes in coordinate direction {\tt i} to {\tt dims(i)}. Processes will then be distributed among directions where {\tt dims(i)} is set to 0, subject to the above constraints. Note that an error will occur if {\tt dims(i)} is positive and does not evenly divide the number of processes in the group. Negative input values of {\tt dims(i)} will also cause an error. All elements of {\tt dims(*)} must be set to 0 for completely automatic process distribution. When the function returns, {\tt dims(i)} will be set to the number of processes in coordinate direction {\tt i}. For {\tt dims(i)} not set by the user, {\tt dims(i)} will be ordered (MAXIMUM, ..., MINIMUM). Array {\tt dims(*)} is suitable for use as input to routine MPI\_CART. % \section{A simple example} % The example in figure \ref{poisson} shows how the grid definition and inquiry functions can be used in an application program. A partial differential equation, for example the Poisson equation, is to be solved on a rectangular domain. First the processes organize themselves in a two--dimensional structure. Each process then inquires for the PID numbers of its neighbors in the four directions. The numerical problem is solved by an iterative method, the details of which are hidden in the subroutine {\tt relax}. In each relaxation step each process computes new values for the solution grid function at all points owned by the process. Then the values at interprocess boundaries have to be exchanged with neighboring processes. For example, the exchange subroutine might contain a call like MPI\_SENDC(...,neigh\_pid(1),...) to send updated values to the left--hand neighbor (i-1,j). Note that there is only local communication in this exchange operation. \begin{figure} \begin{tabbing} =====\===\======\kill % \>integer ndims, mx\_neigh \\ \>parameter (ndims=2, mx\_neigh=4) \\ \>integer gid, gid\_cart, dims(ndims), neigh\_def(2), neigh\_pid(mx\_neigh) \\ \>integer own\_position(ndims), period(ndims), i, j, num\_neigh, dim, rank \\ \>real$\ast$8 u(0:101,0:101), f(0:101,0:101) \\ \>data dims / ndims $\ast$ 0 / \\ C \hspace{5mm} Create a grid structure in ALL group and inquire about own position\\ \>gid = MPI\_ALL \\ C \hspace{5mm} Set process grid size and periodicity \\ \>MPI\_MAKDIM(gid, ndims, dims) \\ \>period(1) = MPI\_PER \\ \>period(2) = MPI\_PER \\ \>MPI\_CART (gid, gid\_cart, ndims, dims, period, rank) \\ \>MPI\_INQCART (gid\_cart, ndims, dim, dims, period, own\_position) \\ C \hspace{5mm} Look up the PID numbers for the neighbors. Own process coordinates are (i,j). \\ C \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1) \\ \>i = own\_position(1) \\ \>j = own\_position(2) \\ \>neigh\_def(1) = i--1 \\ \>neigh\_def(2) = j \\ \>MPI\_INQPID (gid, neigh\_def, neigh\_pid(1)) \\ \>neigh\_def(1) = i+1 \\ \>neigh\_def(2) = j \\ \>MPI\_INQPID (gid, neigh\_def, neigh\_pid(2)) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j--1 \\ \>MPI\_INQPID (gid, neigh\_def, neigh\_pid(3)) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j+1 \\ \>MPI\_INQPID (gid, neigh\_def, neigh\_pid(4)) \\ \>num\_neigh = mx\_neigh \\ C \hspace{5mm} Initialize the grid functions and start the iteration \\ \>call init (u, f) \\ \>do 10 it=1,100 \\ \>\>call relax (u, f) \\ C \hspace{5mm} Exchange data with neighbor processes \\ \>\>call exchange (u, neigh\_pid) \\ 10 \>continue \\ \>call output (u) \\ \>end \\ \end{tabbing} \caption{Set--up of process structure for two--dimensional parallel Poisson solver.} \label{poisson} \end{figure} \end{document} From owner-mpi-ptop@CS.UTK.EDU Mon Jun 14 10:31:53 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA23584; Mon, 14 Jun 93 10:31:53 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA07181; Mon, 14 Jun 93 10:32:12 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 14 Jun 1993 10:32:10 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA07167; Mon, 14 Jun 93 10:31:57 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA09073 (5.65c/IDA-1.4.4 for ); Mon, 14 Jun 1993 16:30:34 +0200 Received: by f1neuman.gmd.de id AA16839; Mon, 14 Jun 1993 16:31:15 GMT Date: Mon, 14 Jun 1993 16:31:15 GMT From: Rolf.Hempel@gmd.de Message-Id: <9306141631.AA16839@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: PostScript Cc: gmap10@f1neuman.gmd.de This is the PostScript file of the newest draft update. Before printing, first use uudecode, then uncompress. Rolf Hempel ----------------------------- PostScript below ------------------------- begin 664 PTOP.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R`$# MQ)`WBP*9,1"I4G4+[`L/$EQPP7&],XA1+F3)DY&6/$@.E4R)LZ;GJZ.>,6 M3\:2)6ODL`$"!PT93HO$/=FF31DW=.8\)&(ER4#";<+$99+8-'#V"L(I5 M*U>O8#FV+7.F,A0Y;\9,*4,G(YTR>%S`0?TPA((75,I@(>+SI8P:)7N.>4FF MC!D0N7?W!I&PM!L0+YSL*6ZF#W7H0O:(J4Q&H_$^3J!/V0-[#!KPT+'LF0+" M21\%0J!3D;*'CAS)<]A4+(/^19K\'YD!U!Q%A?>"'7.DH4=1:H%P0TYMU!&4 M@4"LY-P>_[$QQQY;E-3"6FOA!0(,72@PQAMN_$1''VD<]Z!.9[W!1AUTI(&B M1FG8X6!.5D@1XXPUWMB3CI:=`<()A8AQP3(1:9 M?6G@H5$=<`Q:*`T@F/42:G!UAVAY:(``!XV&5EI#HJR!P&A<(($`J:0T*D`@ M'7_BV1\0^L6%9!APE+&'?P""8%\=!?81WPM`1.9&'4"944899.PQ!QT5U3&' M<"^]H"NO;/@*K`*S%C7IBK<"<2(<:9SUZ@C79OL1%K9"9T03%6T1XH@@?(@N MB08:(800':X[8A<&NO%<24[&&2T0FP8;K]K;%X[#M0>" MPLU5)BZ*=%"11ZL@S.#P"T903"Z@>9J!F!R"MDOQNV\(ZFY\X0V[TES0B1$& M@2!@`0)3]^6!753D:F;S"T+4<3`90Z#!U!X*%,U4T$.7(4=_@ITHEY'[.GQ8 M=V00^JH9;[QQ)&M<(]9'3CB'H?.U9]M1,@ALO,$3NO8J,"UT__:[1;@O#/SJ M',>M9:#(]JG\L<,#%QS&P7@/O*&6+_!=,W2`D[R%XPZ5Y'B1Z]*K$<$&LX%W M$7O`@=+#SV5=*'65&4?QUW2$32W=:+1P1QIDT('&'N:U0$9%82A@.MN'G6%[ MIW/4(0:FK[^0.QIEL.02[K'O3FRE4\TU/*+%'Z\HWKGC@909>\0@`PXF1L\[ M]<$/KW'VR!]I//>QY_$]]+J?_WOUPD>:$_N*PB3##:)ZWZUR1P8\T$]Z84"? M]2*U%OZQ!GXM2$-DS')`^Q%*5A#Z;B:Y0)`08ODP8 M/4&5I'O?8V,+Y&>&XRRO>2VA0P"/!\$BUSK>M*:VF!"];21T,:CY!QW.3-4M@%^DFP+/PYI5DB,X>FL"[2 MH6=@S!1[ZL8>Q\5``<#\W?W2QT#W'>]W5XQ+%L68*<=I:5K#G%L:E0DP%*KP M/;=*`NYJZ$X0$`%O8D#)'HSE-&3%#"4M0$/77+D&-[SA#F[0#D`%^H8U#/,% M4TC"D9)8(!!4B"6548"(VO`&)5H$.E:P$\A,N*<^D>I.@:K46OKWNSE]JB0L MO>"A6N]I0,)UJ6$S)Z57]RS:#.>WLH*>\#;3SE;K&,M)V+/><%LWI"U MAMV!>1,)'4KDAIKZ$N>"^!O>#3"UAY(,6%&5>8T<[``40Z&`-W.`@W[RD((R MQ,%3>#`/NA"%8,0XC<%L4``*G*`;*E3XPA?IZ1E!(*"A@DFH!.IIBV,*]''0?ZQD.N$9`4H^4A&)C*+!]3DCT%9RBR:8)5G=N4LQY(_ M+[;QK7;:98I"ZSYNX-M%VJ"IMW#J4YOJSJ>B`FA!RX'0'/6HUY",+CFP(74? M+%@0<$R+)^*MS#L(=*E3IQ0IW?=SDV'4+&O">B3EG5TG<)"=P^>P"Y7L`>ZA!8AJ0N*>K3%IPP<'LK?>#-@2=CSZ([&^E9Y<#<(NT<(6I7Y>DB^ M:EG&YVJ!B:G!#'``@YOPA;"&G4'6#0L$ MM-957`F,`?G$MY:!\:"P-R@L#(Q0V!@4H;`S&`+:J;[VMK\=!C&0.PRF#G>Z MIQWM:O\[#`1_=Q@4_O"5,[S:$5_8P@O^\8%7.]_W3O>\VUWM;)\[W/4>@\S7 M'?`P&((,:*"`&]S$"&+W`0U*0@0>0+>PGF_MYB\/^\#3??*6Q[O>%=_XQ?L> M](-7>^DC#WS(`Y_QO.=][G,_>=E_WNVS'SS=/?_ZRHF>!C<80@Y0CP,?).'L MN6_[[G6O=O(7=@AY%_O:\RY[(^1@"$:@^@V,0/^VTW_W\R]__C6*]_NCG?Z9 MYW[P1W6H-P2RAW[H5WGC%W[F)WYJIQ8Q@'U$D`,WD'K?UWF%-P-&H`#Q]W]& MH'>X=7=:EWS`5X+UYX'V=X+Y]W>R]W=WYX*@]W8:]7=!W<`R':=YRZ9 M=P-%<(,1&($W,($SD'H4:$_@9P2.=X([V($S\':RQW(6%UWOE MEX576(7!1WY\9WE/N'=RUX0*X'=5X@$*'^:]W=\)X)4YXB\UXAY"(F0.'S2 M]X51F(AD>(C]!X"PQX.%6`0:B'YN'8`*'=(N]2(?T M!X7DTW]?&'SJ>(^2AP/JZ'QLYX-TV(FM2(V5%Y!-UWGSYXS=IP"$I3&MQX>! M-W[9IW_CAX?E5Y$6>9'_MWO^EY'"UX`>R8X+&)+E!Y(C*9(/:)(.6%@:%7XY M^(GGV))XIQ9$D'WOEWJ$=2FM-W^%%X^!IX05R85`V9%8^)-$N85%^7M(J85) M.91&J9)*^91,N91+Z'\Y"(7O&`-%:("GF(K=1UCDDY-#\'8[&8AU.'_3V'^= MMWS7J)9NMWP(Z);IQWEO*9=YIY!TB8#B%Y=YB9>ZIY=]R9=Q"9=\.7]I&8`\ M*`0=.'\*B7J9%Q,1Z%H(Z7T\X(-CN'9%<(YF&9`?F'L=>'>9=W>@J86AR7MW MIP"C>9JBF9JDJ9JA.7]#H('PIX0ZZ9JP&0,52`-4%YG?AW<<6'X\"9!P!XN( M"(X.&([))Y:^AWC*Z7N-"8658WE12(QR%X7""9R?6'@WV'9%B'VG6(3=]WV4 MZ9F7F9CON';H)X-K]XBU]X4OJ(62R(>46(OPF8<]N)XTJ)[F"7T:59[C27>B MB'Q0&91-*96LJ)$^R9$J69!%D)O>*9GSAP/^2'_;UX\\Z(3Q%X5L-X*5&7T< MZI!YF(^)YZ$B2I$DNH=X:):>Z8F#]YL%B7WNUZ!J07H-.7^,J**9J7F?&8,Z MBHD0>:#E*'D^2H];@79G&(GXR7>9AZ0$Z)*&&9!%D']M%Z-#J)O@9Z)6>H=% M"J(>V(J[N(LC>J5:^J%B^J58>J6K-Y]H^IY^N8,&.H>5B94Q<9"N]9V3&7_U M=Y#U5WIV6I^/IX^2EXX/2`2[QXF8MX=>Z'FP-X\ MB`/5^*#UUZ('":,RP'I"(2['$X'^8?CEZR2MZR?5Y&> M-ZQD>)&(VJS4>I$4N92:5Y'D6)&_FGC=JG_&2GXQ$`3E2I,/,@.2&:R7R*WL M^JVT5Y&E-ZX,2'P5&7?7:I'X:I'5VJ'^^GG2NJ^^J:_.ZH4>N:W$ZJW&&JX( MFWCL6J[GJGWIZ@,VD!,-:7M`:JC>NK'Z=Y10:9H>2Y*PQWPX\'Z`YWQO%X;$ M6(@K2YR7R(+>-[:89Z_! M^';5E M2+C02*Z&"WUAF++^V:YO)XB%90.V":S`R+&_-ZPBJ(6X);8."5V"!YL/6(I$ MP*`Q8`-/NW>\>HNJJW;.*I08^;I:B)6%E;941P-\9[NURW<0:K9(>8MR*7Z= MVK9%>ZM3-[R#2!)*F8I&X(/I2%BGBY-GQ[HCF87A6J^P*ZVPF[WN6GXV8+>L MBHWR]^WMNF9(D^Z$%['?V:HEWVWB=:G@77`09 M?,$V<*9X&`1,NWV&=[HX@(30)WMI*W9RE[9!,*2VN[>XZQ!I%\-IM[N\!X-^ MF\.&JWBYM\.,RX8KN[8P#)TPX%K$J%'A6XB$I7[09YM"V)TQ(`1/2UB\&I'B M9[=:IWX\7+CDRL5:*X^\"<8G/(BP.'M)JHMFC*.@1X,[FL659\-H-ZC;67I0 M;+J[&;9X]W3U2UC0I76>.Z2TBK$K6HBMB('V%W@LF'DVH,AW1WIGJL=97,AP MR[Q%.+=J`;WGQ\"_:WX/S(?3B,"@YXT*K)2,U\"**!(R7]OUZF2 M*W>K5X"LNGYR]X@R4,VL2@/=VW?[&H1Q6X1!\+2=:D^F*2XU)`-P*#Z(8G93 MEWU*^,ZURG>0FGTSX;S:S*M:C+"$>I9GR9MUV'^*^L^$"M`/*-`&'=`(7=`) M;8=MQX$+3=`,#=$2/=`4?=`*?=$KRI.*R9-8Z;/:5X"J!X<-";HNN7G+B(E0 M.)ULYY.CR-)VFK(O#=!3Z]!2^,\:Z*:(.HJ!EX56G*@%?8=9.+]$R<1RIY## MJ7[!>*0$Z(E-F*$MF9DKW9(YJ(,UX+,3"-)W[*,`M)']>+4P_8^C>-.'*-;Q M1]:NY=1G_8]`"M02B='7Y*,[Z*T+B*@#;9Z^^9IB^Z3B>8+O'(#C"7M_;9X^ MN)(?J+3Q=\)-:HZW^""#U[1Y1[=)&:X;NG<\G84^R7^&;'\9Z(]HQ]F&Q]FF MV'80FKF<#:FM>7?3>;7RQ[B-+<-HAYRM/=7C"8".5]GZ9]L[?=NZ[9(IJH0* MR=C,B]4\D(/A2]O$K8$:K8P!":5J^'\%#8+*#=W@NMS1[=SV)]W7;=W-O:+/ MK=TGS=W9/7B]&=Y0O9'E3=W=#=[;S=S?S=[HG=TS6-WJW=[R[=[8O=[UG=\% MG33>_=[-?=S&C8S(K83_(P/_4P3F>LT^\"*M5Y681]NL&*+:W9.^VJ_,3>'> M:N$:7N&^.MX1GN$<#N(B_N$DCN$D+G;Q_8"3JN+SO>*RZ'GR''O:G56F=M,/IWC?=))OJ4'"M4F7N83?N;J;>8I/N)FGN9H?N%G3MP/ M?HZS&ZL'K@`);KI4AX3G39X\OMITJ(D8*G_<>--\^'J&KGXBV('7)(Z!3GYZ M9^BA-^F//NF17H=R=^ET-Y'_?(>=GK'8BX/C6NGW^NFBCJVF3NJ>/NI3F.J2 M7NJL[NJR'NNT;I&W/.NE+NNF8(6BL=A+8.CJ+@Z MJ(-72]?0#J1):@1$T.SHY]3TZ(\W6,@K?8QV?8,]3.7T0RL6*^^QX7'=6[-":::EB:ZG$/=4B M+_#^WM8#G]L&+]K9.8*M:(G(;:!M5XH1?XJE&,Y+S*NOOI%N5YEQ5]I:F:B< M7=8C'Z*=GO1[J/1S+K8;F9Z^N?12'_54/ZQ,7ZA4C_5:[]-;#_5=?_49/8]A MKYUI.W\@K!9T6YNP2'^$N=*6.H;NC*_X&I%P3XPI3=G(GM*WG++2B?=3Z_;6 MB94$?*_W:J+3V-1,>M:]V+;^_KF7":S*^/AV%_G.%_0@^)K-OM0'&M=YS(82 M/P2VG(8/;I'9.9+]6OH_S:VGO_JDCZB8S?JJW_JM;7\[.)!:9\6=5[3F&(IV M^*:9)[_N&)R'C/="ZOO"7_S!3_POG_S&K_RQZ/S'O_S#7YGQR*:\&(V%#,(S M`.1L:`22R7Q*#MZ*B8,IJ;WF/_J\./S9N?Z-V?[J__OL__[R+Z3Q+Z0\^9M" M,'I`7H2U_'U\[?Y":C'-O_I'``%@`1R`!C`!VI_7AP`;(/TS3&OO[N2_[8?@ MV%`M\TI1:[B5NT]4^^S/[3-'NJ_WN2/>A_RF'_-+?L#/!*K`$L@"I5\+3%(G M<`4BO.-7_:B2$K)^$.OFY8!2Y/W4`NN)7EJ-JX4OKU9[J%_&BV/9APH9H,NW MW"X3"'*"KZT)2L$GV`2M6/:Q@J_),Z6U[+2!AJ`'TDB+C=WAO,?F_U;:6$)N M`ZD?[3[H]P#MD``D:*6/VV$>;Y?RXB`=_'9CZP[*P3K8_HH4^QM$QZZY^3Y8 M9([0X"'K=ZAO^)D^V2?A$J&06H2Q#UH%J>O'K4!88]N!G0>RL;2>U`4C%0(* M1HILVI&_V:?30%L/,D-AI[; M&6W0"!N.M3OX"!T"ZON&T8X8=D-P.`S)X9P[APFJ".G`4A3L=A/]T5`V*JT- MJ1PV@C+7YX%Y/>KB[;HB8/72$.?#>B#(:\FG]X2D0,_":SP;R0`I([6P#DN7 M`J!;^2R/C:1U!+]$U+?Z5C;MG\$DF+1VLA37^XA>#R2"O9!($D?B8<-X6JP+ MIL0YE:A6HMW*/E@L2-4AM>"S>&'I>H;-+D7UGQCH#6&@#/2)+S#Z`4472!2' M(@QTA7);;PL\8RF=CR*C]-.]U@[Q7>JH^B0HNAJUEE7WH8K\[=:M.7@'#B\2N MJ%/K.[Z2V^A7'<%7*RFU$ MP#D)OVHW#RF;V&$[U>>M?49*UW^`V=$J:$)@\)@LS),:A]#22UFC2[?IM-PV M&RMCZ>,_7ZSP024MMGM^`[L+C.-C,'9%CG:@P*+6^XK\+?E8,?RSP_`>6E1M M:W$1NL7X(Q>IHUS;/4K0+BZK5X<7Q:$QU%97*)-9)+TCK2(B;EEZKPD]3D== M5I%LP&KL20OK].6_%84)G:%"8D-(B,>M/0<7Q6*5J_I!H$]\,*1/Q3$.4%;^25]/*#5X:*2W*IU&:PH":VP5>MZ?O>J=;6N\\3+DI51J$NE"@TK6(KMR$?HXD8,A)=<=.0:@YM>[" M5_U*.\6LL`"'F32Z5@_HHP&(`E6JR@LE*X66:[25JLFG>PFXOF2^Y)?Z MLE]R)GL)XSC7AXH]68ILK:=NM2[3Y9Q#A*E(*Z&B3D6Q2EB1BVHU*%GU0H7Y MK#BFQWR7(%-CALR.^2ZM7DE349]PEJV=!1.YBF9'[)K2RPB`S4P6D;9FV?2:9_/RR+/I\X':V(=27. MIIGI6!?T&9R/,VP6SKHS.*5/Y:R+TBON#(%A5;@JI]NIG*R0TO6[RR>]R&2D MXSR^2V^:'_^C43B/N9*8R@LGOLS?E#&3U)*:5LWI^92QPY4[F]-^NCP@TG9^ MGB;5VU[9P#J>39)9/2MF]3N1)[-24=3H`54@V/G8]MS%XHZ4L.7]L^CDE'+G ME[R'^&#9R_+GOGK5&FVCP@9A,K0QI/4_(LSC4P^R@?Y5QVJ5,>KCN: M[8X7$SJ"<&M1':12F?8,DS52HN'+:(J=2"5\/J;(W%:RIWO)'(GGFAVYG0?1D]"F7XE*7 M)4NE$*ON,![VV94=Z%*D`LDUI3R?FG:DS==B/-7)!`>Z=C4QX>8DTZ5:( MG!O("7DF8%=&1^D=,VS$"%!5(.3DZ([3`KM9/NDW'1[,=4[-*2EKI\B'X5FE M;1H;35:NNF-\:`;5JD_$J)1H/S5B-JB*DJ,0%%#[#O/!:[M.\G@V+T3!X$ZN M,T="'#VI;A2L M@BN4JA#Q:+%;IK[+0KZFDQ0:A\"@"J"9#1H)'F>J4G$/0OU+ML@!&:;ML_;X M*MXI0D2U)IDNP@)`&IS8FJJGC*HJUL3*6*/J8K6JCK6Q;K*727>83F#-=,]P MZ'DV:B>AZ-Q8@P])[/(0TD&ZPRR/:?U=I]4!I=8NEEA7:UUBK:RU@;E6/-I: M:6ML=7HD+[=6JFITCA0`&^*F3&?T9%8KQEG=WTN=J3"UI][4Y6I3;>I.]:G, MM:9*U\X:5#/5V@JE:L&HJC75"4P=D2AK087.EJ(QC4I>\57PG#T9%;RZK+:T MD\+=6O.HP-6,CM2BUU)E&BS56GETD/[1VC,PK:K.XJ_[E9`V,;Y72/%.?64_ MFTRLLE&KRD9=ID!;6T'@(&779)H2W0\9XT1S[Y>JUULZA6RIA[V''U9X9J*7 MQ;(N45N*F:]TF%;$#HM*QQ0K34$%30=!6`E[$_U?SF1JR^N9/M)3IE(7:V2- MK#90[\0R[.J\+I#[@4?!)^U<1F6G>+1.6;)0.C%1K:R5Q;@85S_"53[IY.&J M^%IDSP[H##VV,:0?_D,;I^:?ZI/IHT\^, M;I)?&28'6/_>X`%L@WB7"Y99">AV#A(1&&$W*0,ZV@]9A)Y=-"-HYRX1<4%Y M>.Y:8@!BO)!W\68GAR9Y'^_BC4=0[3"N.R(KQ7Q@'/IN'D^FBB$NYGQZ$S_R M>JHR4<5,2X7Q5N_J/;VG-S-,NBB"0;#;0W?DU[6T7PFL'L53>.ICSVRDHSJW[$.FT[ZK?6)9 ML!L)2;*%:F#J-9'&S]`J/XQ*[;Q'K)5X:)?:B6%-!GG@6,=+Y$NKPE$A/$IK")]XVJI3AYIY26]I`2-8A242>X=09RV MEI4UC<*3K8BY'>QEC482W%UB68B716)F=:80525.AJ+/>-[A_51Y!!D"=3Z? MF.Y(8>% ML&#>'>J)OUBR$;\Z)XCC\,I3>!EB8&ND+%(ZSM55RH-BXJSR<$M@\;HEAHM(,BJJF5@0RF0Y"6?H=0;BMX M3'MJ;Q6MQP-)7V9,^[??]+$_OI?.CEAUJ[.8@8B@\!O(7.P48T==##YK7#<3 M0:DH^CS>_'S"T`8I8P<68U9!H5FJYEAK97`DGL$U+9&R;$(?"#73+60EM8AX#1%I<%L M4SENQ32`;GEFS[SR.AT]GI=?5WG>3.&LB;=5M3J]6-*%>L\:Q["6LTIRSCJ. M"SEGMKN`(/+\K,;4^3H+K)5DG8&SB0J(3I+;_F:)_)T;%G(>5L1U9I[;.F3@ M^+(&$W)46:MUX/!LG@U5`:[/R5EY5JO]7":=9QB^SO&*.P/H:LPD"_1\GI?F MV4`1I"*TO-Q/N/0!'/GLW"B"AZ`K=,.ZT-P60_?A?BM#>6B^ZL\@.F$-Z'C% MDX-5MZH\MVA>ON1N-B^QF-Y!H/NJ^L1HC$6.^&?'XZ!XA^E$Y>8%^G3+C+J+ M3^\R^^9!]:T$EFWBT#2@\)`[*JRDJU62/L%.NO#0@"@-@ZET2JY6$`JS,2P; MIA:XD`UC0UX:;6UI&[RE;U?UXD.1-$21KR+&),G70EI`J0P[ZY[@!:?S3@A4 M.VXX&I?%>)TRY%F2`>9J1VNP M<$:5B:6P/7[1ST0UT2CQ+^Z"%1A!-KIB/4>,M9[6I!! M86XKHPVU4YJ.E/G!I6@\W?V8UWN&;*H.^@0U;N2>%%!#B\A?\E?UR^$YEBT; MW"UKEBU-%RHAC4B9,;MFUP:MVP*^0QC00B+YJ,,X8_Z/[@-94OG,BF%WT[AGF8JR7#3VTGW M>A0=?2I$YP>%IF1"5;H\WU6;>-]GP'FBTBR8Q1OD?CU1"'%WZDL,JPRF5UJ8 M*[E3&\^7S+!.MCKDO+:\@ ML&[1=AELFR_I(U]E06:W/`^QQM--\GDO:^=M,J%PMSI3USM>86\IK;V[-YG, MRBMY7R$Q#@6^R_>'6M&=^'QK*1BM=Z1P[G'?FS,E&R6R#"M5WSKR<:HQ'1DX MV8F#HM',O)W=V!+#'FE5B57PMAK)Z;M=A>)E;<6D\+YRX'K'?*[D"(RJG:-; MOCP^&5"==U5'3HSXLQI&6VUG5<:>5 M:;`T"0BK,&6;/FZ\A@O#.B1J=]+"*MIA]?3M'KGHC?GX%W?CUZQ3E1X7KL&R MHHP,LAC.LQ$_BL1VJR0)SSQN_//H[:@'PJ4/"0];?CR-8ZL%=9$ M&_0+]SY[,E+@)O^A,Y-/-(=A3A98DLYI7;&P^ MD:&Y/;_8&SMD!NS4&265N19^I]'R`(\?<3Z$R'ENOF/4JUHI,^14QJZ1>3)- M$4I8*T,C4`-@7$8<2!4=L$UI0JC7ZHY#9^@`]SLBP[_:AL@YI3ZJ&>];-N@9 MD!JUCA\;4IUTDG+C5T7/LJCJD5$HW9U=IIT.$Q71W;15-KW__N4-S+["JBJ% M.Q[Q?"KU9%;4P?#[:K$6<6-)*Q[,@8WZBQU3QTRI"Z@>Z]2A^E5?ZA[K"@5B M&3#.U0+QAH@REPFIP<.UM>M>MA-WWH[;G;Q#)-?K>ORFZ\=HKI\J@&;7^7I> M[^N'Z._IN[7>%E.65Z/@>!T%A;>"-),R:+G2S3,Q"9^U7WIT[1J7"KHQK_W( MVXK&UC`S4P^XL3RT*TG1GGC69-QEHY/MPJGVG%;5/:I56[>H)P=0K!BY*&O[ M)[_MW3`OZBLZWAXE:.3R[89G$IX?1:XX371QP\.UT:%JH*2^QSY=V@&]`=P0 MI\+22=PMLK$3?>HGW[&X[3IV!YK=&FBAL=_!Q7YGV5)4;UM[R!#"I3!)'1QA ML?\M=D;9$XFGO9,S9Z-/\FQC"!'Z[S@JBA1Z,[9&X4T/N)=P+?+`R\$YI M;_.K8$7<9]\6AG/=JUI%^%A>UX@N8Q[I-P=M=YW5EH4&:0!K,=$6\D?N; MCMQ=]$=KKN`-M,VJ@Y^-^#WV_&"_,^.)5(UW\.WM!R==\J;C77R.3V^> M[:3I4R#?XW%\6;KQ0?[(O]<7+^-W&GK>22U^Q3.\A_GT9-N>KM89.3@>;PB7 M@^+D"_KR*A[,:RYQZ^)94`9R\2/('_6Q)[?FQ5MLSFV5+5S-.TX8YVV;;8.+ M:IYLOOGXK<@G(XH,\H#NSZLC!]^"[#@IQ)@[KLL[._>\O[?\_;/RLZ^T04O/ M)N;GX4)U\?(+S;-YRICGT_R;?W)UGA4%J3G_VN2\#+KSN@W/?WH'S_(HM(MO M];#>QOLJZ=S/=)WPMM;G&)_"=T]7?\H[?<]`;&=FU;:6-]T#MD!;=$7IOY\Y MT,V%F#WV4GCLRN%1JV@OW`$;1IJB7'[1\20ZMML4>6E;Q\B>Y=5&4SB'6'RK M7ZC\<,G+Q*W(Z^//+VI%KV>]3RD-)MNWO(Z[]S`)@`S[,K_O"7V_1_?G_M\+ M?(XZ\/E]P#_WD%X=:[6"W]B>_,$W^!#?WS]\B1_QN7W$!_@0/]$C^GL_>AA] MO5>01D[?%SQ)/_+%/,F/]"8_Y9?\E=_:ACS*9_DD7T$;ZS;WX3!<>;?P!%ZO6%GN7[3>@ M!@C>6M_/6/VKO_MV/^\W^+V/GER]WF?P@'_6"_ZE/_CUSTC?\93.L^WXW`/: M%O^.;SX#N^C1>(+6M*?1G\,[D9IF&_(2O^M(WG'&3)]_"W(OU; M8?13GYX6$U;_H!)AD6M#,>@M+/M+G^3JA;=_"]M^V^_UKEVBQG2\_S$&?[<] M_//8Y!U2Q>@1]K'+R/MO$'1I_J!1^4M9Z9^>[B#H]KA#NQN[1NI_"ZG/*.3] M:@W\&_N2QNRJ4=/.9`/NZXF:71,`MC8/X"CR`!XB$^`' M\@!:)A>@#V(5-8!TR`485XUW9)Z"Q_\Y>'#1AK*6A8!.26_#O90T#6#']_:1 M4@W/O2>'$"HG'P$3[%%NXA>]HRXI1+Y)1[?3@'VC'N='ZF4T68B/Q+<%@4C@ M$6K@DK,&NGEGX`ATZ*%<#,]9DIGT>['>WPW?012]<().BT-"`8IX-"-%D@9'=<5=)\8![6Q/H M`T9!2J"HEPG2>9I@)YAX#(&@8%1VVS"!3V!MA+QE/,L(7;??43OA2RE$>6T^ MB9<@&&,I?;X'M(:6?7Z?W[NW\P$I%)0SQD"-#_/>_R`[Q8`\#N$'W9U\CTK8 M-P>*>V-?=U0&]GS.H#)8!H8HR&!K,/3F)D.2WVW1!WV#7-]W- M/B>>UT<'?H.XS2;4\G$WGIZHDT7A6%Q*_,>UN'VXGG8%NF@^S11,LX+Q2BI) M:]'-P3B6BHJCC+!>7E6QXX%H>XR.7I;O04]PTO:4]$`D'5AJ)A$V*XY*_27! M*$-B"6^F^&`VM]^\MZAL4`S2>;,$M397$#?('LT^)Z'1)^85`4F7`KCCV0`O MX4OH!P9^@>!,V.'0A'[?'Y@3XH0V8?GA\G%X-B`8U7>=(C[.(=B2M"/W'E+( MZK5XWIC(5SHMA;`>4[AI92%28548%1)\H]VK9Q5JA5QJ#A>G3*B@)1B4+'#MV3H2@[>R'Z M%]1$4?\'5$2/%"-V3]X32U4G^1WOTXK4`%#(VY$S87TQS7WW@]PFF\K$`^\D M(?K0ME,8MB+Y';]FU]`]X^`'TG615"7%_.'LE+6R3Y[%]O&$3D5%'B"B"'93B/XQ/Y3(B4"Z%4^6`^ MB!>+PH2,4Y6ASK-WS'W)4#D4#AE#_]8X-"*:B!W1,:*!/#NYWTD3"XI?,.+U M%7[)B.!7C?@*SHB5E^KU(U4ER,UU.'A<;O<4#\!\A'M02MOENX1RI]W_0W]206BG=7HL@D/GH2$"MF>#Q$_@\LH@]:)G'-6?6DK!WO M!T%FS/Q=0`@GI^UD/M9@LV/#!4""W8WC[9B*]`BJ*":.BJJBJ#C8"2FEXO,3 M*[**Z]*VLR,:1O$(&A2/_`_-2/_"50TW-=>.Z-5(+KW)Y\1]<7(Q8HY8(R:+ MWQ>SB"/^/LXBGG@KYHKIEVO1(@%6:-TNE-"YHY.@)0FAB.@3@HG#4(E7XJT[C9TS$B3^2.)) M1_4Y%3(+"L=HJ?`WB5U;Y"4ZC%KBEV@R0D(S"_SG#[$AW\Q-%*/$(4I(A">; M0".'&M%']*%8*DU9;-.23\ M2)%BZ/0B[\CJQ?5(C:B7Q48U6D=8XZV5-7HN;M6MD_VA'I=5S:3J)(8-Y04,F/(6L9VS#6D4?_Q'L$>^Q9\R.:@.9,-;F2B M.2O6"]D6/4H?Z]%Z)!>54\\7=E0;7DD/B&55&?Z*`PY,PY/,/2V+ZX@`JC7+ MWPJ5!&UFWAUK9^EM4C[-`I@_E8G.D6=H7D6-5\D<4QFV0WM2&@`3^$D&SN8` M!"F-AIGC`EV];5W;5E9'U35UU=+(\H!UD"C+!SFM^%*82,RB1'XA5Y2B MQGN,-VN<"KE'O6`NI-""M!@M,R2:N+2$+=L',H5U5#%X5-!BM<0D=YW6PG=T M+8@3V$)<47,(&-Z!MIAIH=74,LEH'Y4,9`,A5EK_0UX2G^0P-$OBXDE5>(GB('NW8#]G5[3$!D;Q$P00RW5$04C'6D0L)KX(Z MT1[6RVGG$T8B(TC:8H7=+FK+WP''+&"25=]AO-0OBH@2`W>,(*]58:&\T"1B MR?,2BY5G%=I2Y4F^+DABAZ+-_&15"!Q#6%%F@D>GXDA&-B%)>=2^?'5?75;G M0QXE6D??9WIH)/G,-E.A_4DXP-,!J/AEYUIKIV!Y)"S6*E41.9.&$JN2P10Q MH$F79L&0(\+:I)-W*"H>UX`&>EE;?4(!;J,EJLIJD5C0E M;?5:%2^^5&AEM-!2.N4P.8C!6F6(Y&)#@C-3#(44A[%9#I46D^Z95HF+%T-Z MR8E0)>^4QI17X]4'A8G8)Y7#P?/&5"&LWW9"DQ0AVE7ZP?LHAM2J$).ZE?T8E]S^@E7?52X54D,IB88'?+-O9,[F!`I$?R M]#@Q]118*5*2(R4EL6B%M1:WBS]8NT`JCR5E!&Z%=$^)2?55.22XT8JEL?QB M(XF40D=B)5.,$<5[$"/U4*RB9GTO:646P]^HE=7,S]*X3!Y06W+UA2Q;M.5T MLL3X(KR,-2,1K7%BI6]U?I24-UAZE$@-E3:);1*'H#9B2#VDJJE98PCN(E9^ M+]F(2VEY*`#0Q>YRNV!+M0MVB;BQ-JT,LB53F9+D!WA)Q&!C>PMYN15H%!<, M+L*-33IL1^$FN^PO:&$J0EPZ0VJ!;#A:_I2*ARAI>3B718WM0GZPED6,:ZE= M-EFOY7<9MX67!Z9%A2)M:LW<>0(UX1\AV#=J)(;4[. MR&"%'^E)_`+'H`8X"!!7_&7,`30;"FB$C8273Y.2$KK5'6E>"?+/<94R9HUY M/K64Q$>D4I5=E3GF^2)X?%<^9I#98PZ9:XR06602F5F9CTI@WYI+9D_1W MC0G^EIN@'NQ7!B0H*1Z_RP,V4(5K7.;Y8J\@,U)2E]>>W#":2YE)9IZ98V:: MN:/@,&RFF8D,M9EHYIK9>]`F-Q!C,V5B;M'+BIBJ MF1;9H`EH^IEFIIHI:"::AV:CN6@&FO_&C)C5I0\)H]I?(R:..:KR6K"FD,)%JNEU)8`H=`69ABUAN# M&TD>[";P<0%>6@\E*NE.S9O(!W7)`=I;[>;8]=VI2),3_X=`Q61SB!1VP>0_ M3PH10,X!!N8<$A)P0F^@VA=W__%_6,QV=R&5/U_6.N>P,&#Q)L:9?%2<#DS2 M>'M('L/*!;A[F)M3F/RF=A"X2&5 M2&Q+A>1QHDA%H\$Y8>%3?EP"N$!9)$'G15)T$IU&9]*)=!*=H=S1.72FFDN7 M_*=T/ITK()3D=%:=5"<'B'5NG5IGUSD"AIPE24&I_22;ITIALZJL*J[*$D-M MKE"URJUR,<:#>H>#]*`0;RL3>((GLEY_!_Y%S^Q?V-J*EF^^FT\AZ-1R:C&9 M'@XW=@&>WIC@N7/JFW_GO1EX.B4(HLYI>$:<_)_(^7C.8&1=RHE,"3"("H"4 MH%145`>B$[-\([04+R5>-63G%579D(TWYM54V7JJGJGG(6EZ?B&RU(B5U,Q# M@=3A818I(UC>$+9Y'F$.B9PT42Z-PR<$<\`0G\CG`*9\+I3))_/YH:1B$Q@_ M1)/488>(P34H;A3B56#28_IH?VF?/4@SUU7Z8&MH"8 M*$/GF0(NMC*B&*I&R(!^LQ.C`Z8Q+]0G=P>88)](FR;"&*E7(Y9)%**=GRU6 M(#6[48/DY\(B?CM'W.7/)'U5E=GF)D&[G9)OU0\51O6?^.0(2=>I+N"(# M1&)9R),&@V4ADZ75,JP8D]`;]V:W)1_XR44)A?%R6LB9@MJ@4]`3%O)$A77' M)"44A!!&OJ=1M2UM5'\;%XCP8"?<2A'JB!VAT=H#@A8^,PMF4!:,-"QXR"F5 M2\YG9!CJ.7M`(ATEXH:V=&,N:`H&COJ9GYB(#'2P:U&5J2EA2"U6V6 MPL>A$@>S'`2>XY7KV<>BFSA*S+/'CJ<()&WYR*9?#"ABA#9 ML:-1GVY<9I(S@H.9B02:;4)A/ES\.KFL!7$EI_0BK:!4FJ57IX#B M9[Q;<";%<9;PU1S6@S92HQWGT8UI*-9;Z"FWO:*,V7/R2VDH2I\$>-VH9[J= M75CCI:H(>'%:(Y7KBH=SHZLF"(%MT#P0J$1V.S]<2)8J@GR[69AEC5E.: M1VGR=[QH%=+YA`B%H4:5J<)Z\8.GG3VJ*J4=&H5\^%7B*B`AEU<,[I($*934 M5!6#Y8WA8H!,(*8EQ;(6^%^5G!Z6ATUR)AS,9HP5%H!*19*1EA\;Z0Q6K>0L M16BU(LA]*UY;L@:-56-W&AO&)/5LUEBX$KR]9,I(]8:J.6^>6$VZK4!P2LD` M8W-QAC503:2P[6_N'4&F=9"C\2S05M1!O&(K!, M:)K'5-JS(6>7"!#7KM1S/Z/RUI1A4K*<%822.:43&Y%RE'J?1\X#DOEE>7?6 M'(2XM9#_E]ZQ&DT>'U@]LJ_L@DSE:,>`]#W2RV4&MD5AW%8TTXP-IK:.,T:8 MKH7\RF&ZN]%R?^D4QB0I`-TE8!JN*$HFYURUOME+5QRR@@B=/5-**Q8#0&A; MWE!JE7Y/U-8\AI+]9@,5BG;`]2"3'&M:XR1M?EIBQE[Q[`-I*@7\^:<'G""3'9WDH5E MT^DELGU:IU5<=FI[F$,IR_BO99_(=Z M*AYM3>W*2E1T565!%,VW^95&76*Q6FG9BEX.J!N MI\";U\42B:<$:GBJ>7RB'-6XLJ'I;KT;"M>,Y662R;I^%&20F^&:6(JHR*F-&K6TW4E(Y^9\#.: ML7YN(5LGM7U/=2+M\2_]1)4P4 M6Y5:EB*E5RI6JJ529,:3C?:LD#E9*I>:PXFI7RJ9>L-U1%8JEJJF;JECJL8$ M&96'UZK>QJ=NI7HJH&J<26"^B$'BH'59 M$"31E1;%IRC92\;#W:2"3+DWB&!)3YCL<<5=IS9(@L<^*BQ?E]?E%4`D3`=/ M8Z[P-.,5][F(2*KO6+\VFO)LI"F9^J=^I:Q0A)(G[HS\$*.GKL1](Q?9%XI" MJ,'9KKJ[L:>^:K`*B@ZKW!8/9ZRV8,#JBSHVZ6G3C&(4;S6@#)(30_/]B@U/ MD)30>*F/4%T:JW@>VNJ2)BOU1IZ'",JJA*M26K@J>`2$BV65-JSX,E?:"1:& M/"LQ#$@Z2DZJX:KED4*>8/8JO)JOAJN*!^D!K_:K_ZKBQJ_6,/\JP3JP6F/\ M:H>4K!0MR`N_>DWT2VKR=_`9(OCIK#2]RHG2LW%,X%RK6IF99A!;3W.O$2NC6;RFMM9K:VNHU;;2 M:S]-O+:C7FIF:X^JLR5FCD>6$K;&O8<5ZH1J)6VNAI^$ZKE2J!K:Y\JY MNJ68&-.FH6I^EV:91-?\K7WKR!2VLJJG65$3N\9A;IV.2IO):[CKVTJ/Z*YO M3>[*MM9K.^KM6K>223K;T@9,!9C^B2!G@&`>G0KA-'BT,'#-L%5[U*PP%OU6 MP6VJ>H@7@MP()7JFZ7/@%2S#"#K3F4I(6][4LX[Y:0P9`'&5KJ^/$-"F>?QL M1VE1&I56I?U:Z76)K&/=*4"%L?`T`-S+@B7]*I MUEQ^.VUEU`C"$60A#-H6H;4VFTY,H+*^F'Q'X^:*[I9-J/RV@JZ@_%ER1H7D M-/Y0E=>W87<**GV&G6$SY(>W5GGP-]X:@AB2V4.*S/GA."IB,U%[UIGBF0GI M_7JX*#P)C^A6YU"@+)31@KJM;JG;#(;$=FBV3@[U)#VQ`V@-Y:%!LLJ'J;Y]IG6H(+3>R7/.1P-5>T6D:"YT><*,HJH;&KK'] M*1S[QL:Q=.P<"ZPZJF=L'@NJV;$)W(AZF:8D_V;[YA/>'1I+1#1U/')O503; MZ"E(_9L6V+\J/',(Z.81N:='JS'ZO9%OG&3"PKIU:C7.$Y9YB'"^Z!.')55A M^$IY9LI.+V19SVKZN$4AG(33RLHUODK!LB1-I/H*O6+Z^*376@Q7&)T[H&*L MZHY5/F0J3+KRX+%6V0('LJZ7L"K[AI$V,O-21HJ35AW,[$'V>?RH\FJ_U<1( M6UDV3!SLV::FXC"HONL:C?3.*NPV#UH'*#F=KAQ<0<9P\ZJL^WD M'!^N`,B814!>)P+FG[2QZBOYFR,5-8^SP^#/.2_]F-"ND M\#LF9Z8JD2@D:1(:%\\"*Y%,$ MSPP>F><08*X`I$R'E5F[9)O<)KO5*H`_[8-`5`VU06)< MY=(AJ#9(I+.^`)9+ZOW2+ADI-XP5]7S5+/)JN+3H21\]Z]01\7B;:9HW8S0& M.Q2(E>GKX;64):,DV5)U3PCF(ESN47\+:^)HRA[W6&?;CGZVEX@[RF@&+EH( MIYC+K%4IV9M2U=!'EB;GJ9Z\)5;MSW,T11XS"QO),1D?,U48DJ\ZCLO.)`/% M'()ARG+7B8J3GFAQ2]PJ6G2'Y`*Y0"=.XQ\:0I*>VN@NE8V"6-1M>I6'2"'- M[;.*LMA:K12ZA1U^?-R=YQE=SIZZ9O!Q2@E/Z*WE-X`>9]O6Y`%VF9PN:_W6 MT,Q$4HJ\"-QV/,A20`C,!!_C5AOIWQH?-@KQ(E>0:N4MND8LW;B85"VN+9PZ)MA`_5Y".>;V+ M#D9O:ISR9I?[>VPDD5INTDF!IM%+\E/_A$>[)(V3PQFXYNV!B]N^N6PNG.OF M#BFFRI"R/5Y33J/G(7IDD^A,+;F;V+AW[8V[XUXN@NX)XA;2@JW:!J=XS&(Q MV8K9>%0AOR'FP?C$C[C6-NN:=+&EL5IJA1XV[*@(VDDL],XN=(>\D2Y+9KB(PF MON[O`>S&E*.N3!GL:K;([K&K[,:4OJX.-IKLC811,^-5OBC(YI]+_?BXB\>" M^E]AMD@N^3'JU+8RY9VX[;*$/VZ/.^@&NACOHY@,82>B2V4(WHXAR:T%2WXX'2"4D:WTVUZ9?("HC*5:P;`W!Y6;7$[K#"3PZV8@@8Q=D9C7?BD6"H+ MBBX"/\%/D\XNN.JBND@O*DD[J;MCU/=S9+E9,TS]\K9,O;"*43H_=J^JIC4V M=8!=8)?;YK9=1G]7=5F'Q#*DA]&8M:Z7"-2YR0$R'M3/.7+TKKK%[I:KGLR] MBV[=*[G`'=C8W1'+*$1#U-G;:D4C2JXPRN26NX.ON$OXAKM*;J1$P2%_=FT( M5IB@'T*EQXL3%3>-V&B%F"E*F&\9RE'5P@GEWYF M=0B40N*/RHMT2F<%^)9FSQWU^/RU+.?D=4E@;I?3RAH6D?BIK`H+.\.TE7U' M/9./0"@KFJUR`WQW?U?_$JCL'2U,V<(D-4=;C+3R_.TAC\PX8CKF>G4*YH/& M;)F,7V/43)TD3]A$:WB`BU`H+LF8DJ"6Z>?BD+AA*U2="#]1*)-A!%*D4"DU MTF%#!.4>EZ\6DOE6+9$'^@:C=;Z'+$^&M(@?HN_X8?HV'FPHF)FL+<"9*":* MB09[ONG,%)-%N==DQ\OZ2B8#3B.RP>@>PTLT]H(Q<\^)0DEMC9'J)`G&+7$M M?T?$@Q!5/Y.,?3L,0KD2T=&R>98S'(,K,0-@D`B2D(C=4%97%0\,I80?)`$% M(HBX%NJ*-F-E6B'X*R?$(&Y$)$^6^(DXP8+B$WP,0<&B3Q6L+EW!5#`6C/Y( MP5PP+])U:<%=L!6<"2@GR>%]:T]A`P?G$!=58;,#[SA=:]`2C@F04U=\V."1QMNP9J-ZK,= MV8[\2B]HK%0FK)GB@E9]K"]QV4Y3S6B]=2318%-\)8BG.W MGTE0-6AX`P4GPCW)(_P('W;]F_-X"^O"_H>>&0V76<0(-1SC^A_%3D>E#:'M?"TXP=+P]!P4$S( MS)SO6)/#\!A:SK#3<\C$5;8>+!+M;>DMC[1 M"E?\NOAMNUVJ`X^,.AG-FG0W`7<.08,6[0V;&`E;3/IDK)T<7$RP)((@2F]E M)=UL"6[!@J`T)0MCLC<)L5WO,+@(#P,DQ?`G[)LUQ"#;B5>@>)EVX53'BF0A M04WTRNN!8?[07$,\`86SSV.[% M/-+.S28-^\8$6F_LZ4!*>N:DU!PC2LTQR%@-5W6$,!ARL$W'3E)UG!N#CC)1 M'RQJZ<*G3O=:^^Q(4:>CI2/%*@\"!6)PJG\42PXP]T53U"%_5,(J-_1QC&4? MPUCX<2<28WW']7%^_`_]Q_/Q?:P?^\-K"/3R(NPJ>+A4!X]\B_,3)%W M0G)Q8W'>R)D-+D(C)\DCY9*\^1#%]$EZVX<(24M-'Z(-=\$Q#@2&@_4AH$N4 M==T>1$5RC.LESU0WD%(,H@RAG`F-_(FX4JC4.\0VH5)F"2/;)/K'N2`@7.X0PZ!(ONS3`'DQ3+R=0 M-R^]O"O/R_;ROGS"8L<ES0/1T#;3:5(RVB7A!8#S4GSZ[(T+\9',W`G-$O-3_/4;#0[S4ISUDP< M<\U8<]MPP,(CC';RTS[%Q,293EI^ND?R`SAXB)$=6B+!YQ5;'LYL_9*)5QERQMZ8MUR&ZY$:B M2QJ$8]++7#6/:\OQGXGJW(E><2?9B>BO9/,*1C9?MDS5_>$E)<.5,^"&0Q7" MT=Z(^[JP*;WDW_:ZP(5R%UDL/L(N<,XGB>;H*ZUSAODZMRYC%`5B(8O+,X&5 M21=S1)#@I:.++#K^L*L\[53#0W&E,^T8*UB?36Q`:41VX"G8%1DZW#-Y0LBX M.$_CHD.`:,9RDOA,!BY+\R.4,@V'+W24!,:+))035%LB!#`O9\\9I3J2S>S* MI&SM37O7'K7G/S-5TAY6S#\/T`)T`0VM^,]OC71V&!E0C:$X3.JH=6#0DNH4 M[20)\0!700?0M&$0-'TL(1NT[HA!QTP<]/[L/.XG(?0'W4$'Q&.)!)U"B]`0 MM/AXTU@]XI2Y5O<].RZJ^!!A(3@X`:J5'P_*Y(]]1PLO)MFRH8,+3RI$M//X M`X_)$+$[W`Z[/DGT$DT1ESC(,%XDAMC,V\V,A)Y4/JZB2S+78"?FROQ\BD1J M#NZ(7"+G.JP.;[C;U3IG-*J#1L,Z:G03BSUU1[EH'(V!<$<`"&*"TXS%(J!G M]7,EPI).'PTY/UD(,QI2=J4AD@XAC6*57>\B7F1(O\F*M$7'2$O/CK1V(^DP M-R\T7N1'HR$#"6ZEX"6"80W=QR$U/+")(<2&0&J#C0M7[>:9!UL_,XIL5E]- M,%C9_]*<42-.&4XX@C4UC.T3*AC,^NCG@ MM+6,+I'$)+&;D^*U.;ES.NU-0]'A]#J-GJW3Z#0\_>;(T^VTA-.(5L3E7C\3 M$Y#2./31F-6(7TYQL:-GU2HKE_:)/^,-0/]1OUS,H[2$\ M5J"_@P-.C+K5F)*R+4F)\UGR"2\$BHY(^B'K"R-C?3BZS^O.W)7?\S`7U`]\]`M4_MF^3-/6!0;4`7 MU4*U@FUM6\Z#$TL/2@_T]$PJ8\_=$;;7;VG5(F#/8S[OSUYU M5OU52WMAM6H\,XW57#58K1&AU6QU(STM:C[\$-U,V]#-HW2$97#FT+I9=J-G M[M7Z]:=M6+]65\VH'5I+5J'UJ.U8QU9]>:#C6"_2!OZ]EZO2>2A^YU^B>_N#M32A``;>)$S;/>9/WH M3?Z@91.6Z,/]%/;\/8\^7N-5+2B7U0CV6BU6+]@/-#*48)_5#/:#W54KV`_T M5TU"1]@HUENM7LO5U.(Y\EM1UCBU#LTQ`R3D[RI-]G$B^\Q4[=)P.50.E+,/ MYQ^J)J7RJ,C89"-\%&/CR-*6C4WE6'U93HO=7`NWUEZ*S0=IT_1Q<`S7Q#+, M-`B3M=9`EHT3V(&DC)*A`]WSM#\1]*@\04O08\L*'4#K*2>T\VA"B]`9=`FM M08/9V+6735J;V5JV4Y1E8]G`,,%L=%DHZIFD.%3/-J\1=!=`_]1)M0B-9Q_5 MW5-/S6>KUW)7@3=P$F\?I#Z3M;N%.@.ZZ M5U1;/95VIHU4Z]F6-I;]_WS:S\^ZDV3_B:+*2/,C*8+W#E)*2ZH+<5\4SWD MMA7"VKOB4&TT[A79B%ZT/>&L=B6.:OZ.<.2WV=8HEOYXGZ759#6%+6&KU1!VA8UA;]5M MM;[M;]_;]7:^C6";T0&W"+@(CSD4=L/S*69$>P=B$MF]0Z#TSR5*JP4@-@C3 M;L';<#4>#>'X;0"QB<-52G/Y,F4:XU8OA4RF?+"P-!T%->^(?=W$(U<5*,U'G/"R75C7LL/$U.=P,%S54W$!3T!(8VY9TI$O?R M(D.RG$<[JCL]"F/)(7$ZS8YKEE`!UX9/\<529S;O<''4#B-^I&N#UP2!27?9 M[4$XDSM13-#=_M6IT5/,5GA#D"UV_BK`W0Z5?#-[:'1;3*[XP1&QY MJSXVBI9H[4,:/!*7/O[7N_A1[SS;8@QEBI-%RX MT4`[OG*UJGLW(2XU[8PN'=^8&`1%?<\Y/QCM3)5>WUL*\BVARL'32.:M1VO? M9PGWW2"2N!7.^/V,-6UIT#-6?NO>YW?KG7X_W.YW&K*8D-_S#F#_3MRG9RZ!+LXH%K+R-X]E*"Z\X<.`D>@K_.*SA&@]/@7[,(/H-SQ1DX\KV!^^`72:@3@^/@/[BQ4X23V.:/!7Z$ M#^&_-_PM?)/%.A+!'8`CQE/XCGG*U0#81UVT6GRF$%CK81CGWM,.&%YR?>&Y M-U`(AB?29#AYK/85QW=SNXC3*-R@7V3<='W.4+,!3E6ORG:X$=U#U7U"]!YN M_N5%Q%T>SHD$X@YX8F((PX6)R2.<375PXFB[QXA?I'EX`YKK;*T5-W,I M-K'R_7TZXK#L3:Q[/Z!4\2>^B;/AL.SF+!:;XK:SZQ*)PRZK^%?LA&,DK3@` M'8NCXFS2+,XAD\6AG"T^B:?BNW@M#G_WDKHX)W[^!..D.`!]B_OB-S?P36PO@SOHP?X\-X0\B+5^/:"S2N]FWCEG@R[HQWX]=X M+YZ$?^/2.#@>C;/B8'@9W8Z;XCI2K)-[R^,[$O5+O&DS=5$-('4441G8$&Z% MBSG)MQ7.F[W/QY`4!5%=.MC>'XUP6W1V-[#7D$L[M';T#3(.EM,PD&:A!,=U M(%G,'3K-8C$R@B2^XB!Y,AZ2=^2T,Y0-A8ODR?A&GGYKY#"FDJO.:SF=G>%$R#D27:X?@>'\$!@>FY#D?/E)+A:_ MY:+>??8FK4E*V.9,F-?@L9;G+24"-7:RX.>5NZ4C,HIM'.]"H#)$SET!))5? M@FJ4U\V!MGG:BA6<2_D,,%CA'1E8ZT,]>^5"8$L2#I/4"E&,/2=ET"[-K\P% M4B6\X?8*N%U5?3&2E>0XY.`-17[8.#W1MP&%;3G?`GAQ'GT?YS$6R M\_W-G!/D*8AP'F-)Y]'Y8RSMS.7A>*[S9$[@;)-,'IO'1\QIH,)[@YRM>>5M M'Z[.%FDLBW$5X>EYTH=QK$8O" M;?C)+'S['W1Q$](O3^!6B9A4&,F/U_G-'=K"G-3_#P+.^ M'#7;YI*0I49&LX#=DR&M,EKDPW=Q7$X#Y-'>AWR'R'VX4D$GBG1>J$N\$WU+ M.SBJ%@V0T-H3W4J;HT]T7IZ-7A:/T?!P#W[E9B_4^'ONE!WI.@Z2[J44YOMU MDQXG'>3+>90>A+J),!.4/J57Z5+Z6X.E7^E6>I-.I7?I7WJ6[O,\Z6+ZENZE M=\AB>)I>+8X$=9$>`Z'=)%7,FVW"SNER>IW.=EO&>'I'LE]+Z7RZ[.RG[^E_ MNO$MJ.?@@'JA/JCGZJ6.J.. MJ6OJDGJG+C]&ZHOZHQZJ@^J5>I3.'X_JF[JH7JJKZDQ*G*3YR,UR#BE,G[I( M&8\!0C'%UOX7B$XV>R*A7`^+@7_,+GFPOO$JP=-YL6Z?=^C;N77>J-74E_D2 M!JCCT86YM,/?B-'6#[6.#<.%2"%@GJUCZX]>6PZ<#.#F\:?#"H/K&!-X7JYC MX&DQMQZNF^LB&_'=KB/?8\];2'RQU+M#1_"!#I>;`@A/$.Y MK1VP4^;#^A@M.^_I(W*)M]$,YO`(%R*4Z]_ZL\,T.WO(?X'T:7`RY>S70QJ] M&(0U^,J\@N'X)5?2\4*4WE/5C2-1'7J'C,#/@P'>T=Y8!ZS2SO1 M]R%>L^`9[9VYT#[GI$%'^\,- M02WM2KM+PK0G[4`[)C:U!^!3^PXU'^OL6SNZ'K5SWIRWT-ZHV^P^>[0>MMOK M)SLGI)\7W^S3]`V6G[`L^RZD@,/;7+M=SK3MOM?_OB3K0?[HU[X5ZU7WOC>16>@UONIEWPO:OO MX#;G7Y!]+.5_@29DH>BFL/K#5-S[HF)#X7"D`,JY7><1(Z^WRD6 M[:YZM]]2>\^>T<#KNSL06C`+[0:-5GRV9^H3^)KTK%_J:/'QWJ>OZLP[\5ZJ M8R_*NY_>O"_OSGOU/M\F[RUY]*Z]9^_<>[\#O=_@^I'E3NMMRTO7^&Z4HS.^ ME5+.E'^F+Z/_I:),)>^0%%5HAN]8%7'D4L,T2=V*K=O`.7!/#X5+:T_^.Z^< MWUG-Q3`/W3%KYD$:G\-PO# M.2HOR*\[7YX._&$(`[VPS@D2=QR95Z.UUF"GH#%)>4' M^KG[.%G1GD1H0%S&Y8F)LOG.FW:M+*\XQ1USDVVXELV*=OY<[>G404H_I,0_ M\?AS%"]83_'QK/Q:WP;'\?/\=F3IIJ:I\Q]#LKL00GH!DX[@XH[X4N5=CVGS_1Q<>/-:Z;I;Q(Z_XE"HCQB]#>[7?!B& M&KAFXGP;#\X\<^3U.;2"-IMV#WCCWJ_X4UGMNX!]H&/X3`%/4KNRG[!==)L[ MT/#P?DV<0S?*>6X.L*?+#G0=3%4[].H-A]Z`2/3:N3+^(U?T57B@70P3M"CL M1:ZL2_2+>#S\#W'H\S*5PYL/]`X].*S)`RD>CDHO?/U0+SVQ;CB3R+EY?54' MO\B1G7NU\750I;$1WD$MS-%3(!?Q&)Q21RW3V$*D'3L?OBV_3)5YI8,S:R8) M-V]'(W';HL^#(M$_*+GY()/5PR9;/34=&<EW'S%/U;OSF[XO!Y9)^=*^.5/62OV6?VG#T* M'@^'Q91]:%^'3_49D>O>[[0Z7&M);UJ)Z%.K0OX5*>1C"4)NH"#D^_7#O^NCV5W!R#YV#],;] M;P_1,_?'O6K>+3^[]7K]#9$CV\2YL/Z?+N#G5 MF\0[O8XSX)375IYMCI_&S6D=;;\P2_2VN43?`:'VE#I%7Y%7\?Y];(Z=4_1Q MLD3?F!/XU2$N"-'O[@B^,V\B-_C6_8-?DRV,"+[^".#79/_]<6_@[_<=_?SY MUG/E";FFC)!S\FUXSAB."\<)E<.VO<;UF[UH/]G+XBT^9N_B@_8R/BPNW-/X M+[Y&[]M5[NF2=UZ>!"P]4T$G=1Q)X@,1Y<(OO1=8A#GHN;YV`^#F79C_EA/K9RXU_G.+YDK^:C M^1C]FN^'E/EI/IOOYB/Q2[U%!F5S?FE+22GDHS.A99*DN2ZF%NJ,BO0HILI8 M!55!84_84ZL<`W9`[W3PKO%Y(K[W\%V@+_J4O@4/#AKKU3FFW[=O^I.^I:^` MKR.N^EOXZ8OZI'ZQ/L"@I?L]L11V>:QW':M/AY_ZGR-FTIUOI5EW,YQ]GWB5 M?KNT_?@@0D!@/\40.7O2H>UFA2B;`\?P@+R$*4>4W86+(% MJMU2_^_G4>V_'E$K):ILH2];Y_$;=]XVP4M,=K.N+1W+Z5;NQ20-;3!SP52! M?T%*IE*U%M=,^!;I`+\+);V_E*UD\(I*5ID:H2X41&N%?&(@;F":2KDIBDI8 MM:H5'MN1ENPT&RNC-&LA!-C7OX$/,'7P.7?GM]DKL1:.\LHDU!$^^DH3F\)E ML3"4(^2M[FG]RLG*J1DK3U."E_+/8"3I1TO]"OS?RN+MI^5JO-CDRHT!L/U, M<&F2]3196?$[><*CT<`^30,2#R?YQ=)"<[<8@-83$,=E'*EN!8W:/^'2N61]@KJ M`QF_48,>4O+9+4\:Q>$&F)YL'LRR4OS3:AA:\G_")2NA#GSN_,_.-'ME":!T M*V)8[_'-)R4"B^5?@DRE^9G7NMUU6YQ'%#H/B9)Z2/K!9X_2V`=.C6Q6('"P MR[3>#FB"/XDFV1QH'8HMQZM"J,OV5?[.)%9YJ&JP M_M0"MRK:SA$^I[` M9=Y2T`C,AB.'`?C.:F@E9N0RD9P#E;A"?32O6*KX@V1R4R*9G"G'-Q&$24PQ M+&9="0LFFHGJ.C.D@4+)<9"7R5CI[M?Z@P'F M99HQ5KPM5NR&?O3#VP`Z`#.`PQD.X)^/B47%"OFM`=DG'RX;((?B^!?$$5B8 M;QA5BN:M^8`!\XI\`(C@F0'*&NF=Q< M+=H5_(=&S(O*%>FNU-.@9R'R@RH/C@5\0%J_+H M;5Q2_*;0B:*"1?.`(`=&*4A6H<"&$RGP"2/(^60E:]R!,*I+E)ZF"C,/1`%* MH%12T(Q93BG+)\3[D,8<+OR!O,"@3%H""16T`M44!-U81BMD5O.K@J%'R93B8>GAWEJEY%R$J[8889RHC-*1^\/MZ7IRD,0 MN:0K!Z9$$K`B#..#:=.D7PT*WHHSJO-PW$&765[\!P- M;GZ"\Y.\F7K)6G&^:C)9308V8Y99S%-"P)3>>'WH/]1_!R4F!4-+'L6A((A] M3^`Y\!SO2?/D(2.2R?IU9WXS9JSB`_LJ:8,2RRH=3ZH0PI.M'^V!*Q@ET?J! M!BMR<3\X:"XC\AP3B['%L$Q+] M.;@D^)-MB=M&0^&V.4^1H906MPH3BQ9J4D6Z.=T\'Y)8WI`K%FB0#>BZ<0/: M;OIN$$#0U0EG`B@!E-U8![D5&,#632)F"^3C6(,E.!@V1+SMU6A*8)&404]- MLA`6E*ST(+.B.,,>7`\"J>(54`O"'WR00V&4:<*02>J#Z*F%D]5$/;@?I$), MHA`5):W)LELX<%J#$I&#W^+(T^'**7O<`!(<0S>-6PY(9)60`00N MKO)>$2KKC:&'&\,PD42M/T@QZ@_G`]0/C?3%^62):JHW*:L*3ID(A7$\>9IX MLF`5EJJQS"6"H:7-&E@`!@A;A!L<(3@K^["J83M`H'J$6J\!&,&%5P.M(,K, MD*P>]<$.CE%F4,,$A#LP"4E7B1BO1Y20\]>?D4)U_L85/A_2#BN+-$+"(>N4 M/6P`YHHBA+`C4J:BV$&L>!Y9E)B/R!6P4;7R4&956V`N#AQ"ED#F@D./J([@ M`.L.'9R$(.Q!^A::0&]%$(FUY"@5;8D:`&TJ%_` MD%A)`S!72Q#"X>G*[,(JA'@XY7)UIQF_F7%+`3;!L$+DH`A0X*,WS*30BC1@DBWI M3_@0C`\1TB)B6UBSV'5U"D&%5(O8%ZEP9Z%U.!5BD2HQ-IK*S?;CX<>&`&_% M4FX5S0Q[U7()!5:[T$&0/-0GGH>C%S*$1!6KP/8]=UPED*R1!<:O52ABP]2X ME%@7`Z&!4*<)Y#1.2K8QQK0Z0SM!EU-'F:0@`ISAO*`ZY*2'(3\*LI7Q(JM8 ME"1@,Q/O!06L0W$=POY`:E)(,*!:#%2K][#<0K8L6S*%HZ=/H;<0KB3X$K#\ MD?)2FBY:87)K97A-F:M4S)A!)C,T@NFE=1/JF#L'=)+NP$!)"6-"FPY,QH/[IO8B/P/$2(WI#Q$ M,"(8)(MP(>6!BG2K&#[@D_Z%Z@E7QCRD,?$7^`N>/49SZ1C2FP-F^22`&7#) MN9)>#9AD3O/I%O/FNB9LE#!*H$,.1A;*U;7]$&HUKT1*UK[NQ7X)I33I>)JT ME3A;`:;>0Y8F-6'XXI3`N_9=P0<:!IMF[M6(6-/(-Y!)JTEF2',(C=A5QI?1A7:A\*OO`K=*7XH>V)].3HP&6@ M'?A*XY335]`0;?A-2OTA0BH0OIRUQ<B$/BB/$4TL_@ MKWXH?Z$!5'FKAO5Y.-0$<1X9_(?@17J#6#BE6%O2&6[%)3!"Q MLGY0=9D-%&6$C],MZ?AI8$:)2R=GQ>M!E:B28"5VCS*)*#M$&>_M!\5)'+NP M.#Z)\PA65BF1XT=*%"7N$GMO3AF2V"K1UF%)#.VHCXJ)>BE-HBT118)+7"9* M1-PB^ZE3XB^QW=1+/"4.$X=.KL1E1:]CG`,8X//=P"A^9:=4Q33C[-2243M- MF^Q<>Z<1!J[D7"(E2HV047``M(QD$\@#[W3Q2R=RDU`?G)9,A@:+,H)$`D0E MF%R&>PO!5^]D?2)5*BCFS`Z*NQ.$8L=FH"A5$M#D3HP3$,7B!`@)6WC40+8P M;BQ*+K5RH*^CA6'44#W`_DQ.@`@"1/')^412'"F:%/UNF\.4(A"QI+@T@C[! M(CP?0JT\1MKC1[9_^D*F^= M12(H',(/1&#FHL,+>O!X'D)O6`?`$:?)`7%IL3AA1R0W*Y3[S_VG^B!;G'38 M+:R+/;/.XD81M"@L644D:BHG^\2,2NEIOW@[N2V.5W"+"\6&AF[QH1A9%'Y( M(:`C&JU)1X)1D)4+SR&#$,N&0YG4VCI$8_DEGA1*(_CHI7H&7',21!! M[_(PE<$W8(*Q_#!BA&7T*WB"F4!'C!3N+NB(:?DQ2>@TR1H3(-PE&1A")$$Q M3XHSR#,UUO*FF(70FI?$"3%1Y`C1E_7A>,+0"BSN*0I$?D'N1\1O-&;KZ?() M,KA2"L2K#'`*..6:@A7E8^)35<:K"S[F^`&L$DLUKD@@/+TGXVE*EA.0Y0>G:=-$ M272`#`AC(,-)(EB%&!VN9*Y/OXT*-(.ON9^D>WR-I!DPQJYQV&AK1*], MCZPF`:P`UGA#7/.;`LE@4K`>V;SWVT91?'!0"KZ5)>2"CC/X5'H*/;CL0UB< MIZ`POXKSE-UOKDBI*C=B+/`\>!M04+IQ@Z5YJ%1Q+3)_[D9+E*!PTIBYB@#V M;K!5PT(#'MXA_V%GI)BD'?Q\F0=Y3`*B#2-VV39:=.T M`O,8,)N5']40Y>>MBS1:'!F-D$:+5A/"$?AU(6#-'>Q_]C\OH!=P>=*WJ$K- M(5J&)R=%B7<8WSJS51HXCGZ'(^.0<=F(\Y1Z7C'$CK>')^.1L>D(RNDI3&KHC_8 M_?J-XY8*GDC!80[G)S!-F@+XXXTQVH'BB,I/0GJ3N>THQROIUYH_HJ4&AO#%W1 M'F^/GR398^V1WFA[Y%RI9)I2!AP`E8ID*U/'$@3N&-54@1`Q4-L!)V!G[%!I M0-AN)9Q22.Q(5I*%2#"6&!.,ET!`1?`/4>',XCXV,FHO04;PX_>Q\A!D'`66 M'U\TY\?9Q1/`"`#$^F#:2 M=29?*(B>1F*"<)9WR@.:_):*-"FT$A3F"C."'`6R'V%0V"9XH"Y0D(/`XL;H M:9:*TPH8)%MFFC&#O,3`(-,3-TAX7Q]P9W&TXH?<(,\X#[`;Y"MK%-/\^C&^ MI2H30L:W%`-2-1'$0GV\@SY<5T?78U10S\8^,H#EI,)269E>B%S)]^"2JL8P MEB`2B!0D"$2H2'-QN0EJ:J9Q0`W?3*3+X*&&;$.>(=^00`TR9'IH'EN1.D7F3>G/"ZF\`3UZD$!'AQ/,U?^*2I*MJ!5B M21@6Q:DT%5-J<[43),Z`1!Q7D*OD3`K$)"X M'@.#%HOJTP4CTS']ZA?"6IP3?Z8`$)EG')F"*D?6.72%%Q$2%GVLO6+)ZR[" M>IHS*L0O#L'JI11Y./>I%Q,/1\-25:;CO<4>,25]-R(0@4@V1&WPO/$T`:^` M;L`NZBDDAGLJ."@BE.7,D$@Q*!G;&[F"!+%PY\Z9CC*#`$8+&67(?C)<9!AC986J"3^RK'R2*L+4UB!Q/9&F>1&R:8:2W) M`AE'3C$VBN%)??2$\PMP4'*2=EBDR2/Z4L2 MJ]`DXY#3FPJK5\6L^(:D:%@T+!HT%K#*R2)YZ%:0`DU+>QRLGSWFR"/;N`XA M`ITA)`$K$UQC!8.OB,AL:C*&7R95D]RPMRA[DEDH3Z*H:!FJR!K$JF5Q$ M4M(6#2L'4T$"@](J[#X<]B)))4H?7)0>Q@8K2=&MT2M! ME%87R,G+0W+R=:-\@&U0%A5,TPI(1'TB]+#!(EKD'B1!%++MAX5,((G6R5N- M7=!07\5-XD6$[/AU-#MV+/@P\:?)0V1J)1/?ZHQ0;C"(IXBEX5`G-QF4<(P] M$'F3]TDY1'M"!+7"6+X\#^=,C0MY%W-B0)FW(%`J'O*%SPK-B.*AB-3AXF$` M9?J3@`?"R;9##48!H0VB=30M@JB;"KQ+:3$L,U"6QI@^9<<7"GLK.0-W[`() MLIY(LT*!!YR"M>!^D$]&'_);Q1+!#)H(P46C)%+A8%Q'Q"L4]:5(ZC<"37T1D#OZ"\\#1,BPF MB+Y_5;OR!!H,:A/]<:@Y.0`+IPEAJ9'DZ)IT.0?A#2-MO*4@,KKAUGB.J2=M%!> M(.9]YJ/HQQ&.(.7UH?Z5NN)>;Z]2ESL%S/7C@$N.,+1#\S[AQ]Y#+3FDHP)B M!265$)1():L+5,F`"63$A_V&K@-3D+-B46S$W97[R/BFGS'@% M);ID0@I)2>-"&_.6HO>5$1.H1#SDNUY+B:\MY!7E7K@B:K^\ M)<\>)YW`Q:=R5$FMQ!PV'E1=I,IJI:@R<'&@F(#H*2PAW"3`5V\NSB([6ES( M']A?#1E/X5VJ."E3VL.,)LJ4'XIWI:)D8".O5$W`*QT2\DK-&;V275FO;%?. M*^.5UP]=$8&C`L&B=)%`:FP9<\/RF>3F&N(IQ%/^*1^6?DH_9;$K4!FQW%,* M*NE&!$R,`PHS+>&CM$N%I,ZXA7"NN518E6VFM/$Y@ M*WE="JZF`\T2M-2^.Z)DDWHOTR^O5THF@D/(VK%-S+(I#(UVENYAT['I.&VE M9%0;R:\BAI-";!F?!"WM)M)>#*?U4OT'[$3U*P32;;:5B,MIAN+&<#/J6CTL M+IM56J^6%,["EP/`@%6:*K8<4T"+9:#)$J&Y[%QNMB"6"*\:UN0BE<$TH::M M.S*65,OG(P8B.&4/04&B(&TPV:<\A#<'I?AIC!7V);80X:_MA`]0`@HN,+R\R&4ORE>JRZP;:*BUQ M8UZ7,\D^(`1F=BF[S$N,%G&7^,O%0Z6*=[DL%%$0%LHC`;]+E"7J+=5>*EN` M#-U5*BQIU=A2Y\&&<+^$F(P`%@?*@M@!]P:K4[TQ.A82!XGAH>H!>D&_BR72 M148Z_+NAE.^L0`-9Y+D9D+I_9[/3C,.N(',EF1("\>@E-#F#X3P&`RBR8O!D M*AF`44)S%.],AKG(,10"/6Y'/,P?Y@Z3Y];#'&+F,$40&$`AIF4PB'G##,^4 M)9N8*X]$C)>J+#F6U'JX,&68I8]$S$`F'$-`(:H!&SLP\9B`SD4G(;$7"[$!D<@X$H&V"")`:0:9H MR"XF'#G/3R83G*;>('<(YF1)39IQA6!H=F'J&&6BQP(Q2AJ8#59"29.(25ML M8UR93I@-!2Q3+J2D2838+FJ93AI9IBU3EAD206+P,CL=DQD&"C"3E\GZ&<9X M-"@SQ,Q!A3%S4TF,^7#Q,GF93"MCYB.D:/'ABF;R,KT>W;`\8!T"S(C8DM]< M,^5(TDQ]!Z:&`464R0.F0(PR><`Q!#J3X:3.'&<>,CP8><`;!#PS3TW%#ZF";:&/2=R!E)!XZ73\#XS.,R6+R-`X8@LESWBL"$A+&!(HX M9*0S8$9"V=/N,(28V@ZF-%F:>[^$CL&0[3+&O&/V:N=@07^@VP M,=V)N8HNW,:.I+1184"97Q8FR!)QB]U*Y3;&,$HP=7Y,*Q0)CPME:_D.=.6( MI$@B>4%JI-]GN;/;J>11-35S;S@2WZ+:[`I: M9?`EJJDI36YSF#:NLF?V-H4?*4*\!PFR9/6]:%LBK%XESS/G2#0B&/29NDUV M1]X\80ANC2X0VZ2Z&!*9HVJ8/#]'H(WJ-L29801R9BXB$"'ZC"4R(JBH_@19&$LPG9D`(9 M)=4E;QZ-DD:,HZ0Q#G@5TP". M'UA2E"EA%@/'AV-^*#(*)4`OIRNI3)"HU6/^XV;`+!$EM_7LXPY\,$24>@<=1].0DT8LXIU/\OS8G487.B.=><<$XU9X5FH6(RZ[X- M#_L7\X=4A-@(BI5_,&+%).-1'F$YZA:;S+1;*4>+!X:`GFAO*5"'C=F4+VEB$ M8\@'I\Y49^'CU%FYJ%Q0)*8V(`B%IN[A5J;S(7<$-[!?SX>$$"!DUUE#&=(5 MZ7`4S)(O8Y]JV'F(Y%-YJ5Y5@2IDYZ!*(#&-8,HU-H(`H)3GA96I_>`SJE3T M7NQ<\"'I!%)C9H*\`$*221Z$=@<^X/.JDK*].<;P-C4SYTY8X^(/ZB>VD@'J M')LDBZL\I+JSW2GO3-J(:.R=>RW3X[H3WFGU9N;:Q.^>=*,^$9\KSY*GR!%:1'%F>,,_D24(SB=DLB"*>X;??"GMG"FEG<[6H5M(Y]8@;#D*F`6%7NCQ4 M(B.+VA:,"+=E7J-ZD7JLU*(>5\]*"D&H4*'TD'J>U*XQ"TZ##)U(\7>F`E;U MPP1+W!8HY_H'C*6;\8)4(Q(0$HKN$TF@;')Y="#-(^:0R1C"9%HQ`,CW%%;A M&_6>@$]<(>]&3G?>:3MTA/@AS0O93MG2%X(M.9'`F"(/J<$S#Q%J\DF944:0 M1/(_#KVT77F"B/?9JVO4,YL5Y!-%A5OE)&'X&^GD';`3/,']ED-E]#FDD'`A MK&X1A\_F1;3R3NC&J7U*.-PX`Y>LD(0IO#DL--`Y_0"`US\Y)Y@SSCG\%'Z^ M.8.?/T`Z4?+3B!^_S]EPSR:$P^8M[B@@KXL!C]&IP;.+PD@D#71N>0S`IFA#!%J_(('^ M+%9GJ2$%Z'8%>U$-Z^00,ER@W)UVDP@4'J)T$H'"7&R@5Z9C#F"S%N.)`]9] MPHP5X9U/YHW'(K@*>VA$C^H:E2/VTT^N,T+8*'V9/O80$8W)@`)D\71(1)H4F]DBJBH0E M"I\ST\>0)(-0#NH=J6LD0NR@%KS945('#VKX6`&:%9&@Z[PYZ!(4Q1-'(\1M M?=AHL1XZVB.,#HKAL'H(]+PJ:0ZG3T(GY38%;5/^,V86G`Y'F"`THA$#!826 M.FI"/#?,I]V'5(9KPJ$1%('7HDP9,,12IR M0M-"%)$E*#3T2KE=85EI=]1'MY`\3&-"0F4/`01M"4L;:=#^PQ?O%DJ^JX/D MST2;&`WT$:;#UD&H4(>:8N:@V-#OXFZ''8<[RYA)0/-`]]!Q$"OTVK.!*Z^! MX&QG%91*:!N-#$H0M>)]H'*A[D3OQ[_1?1?/&X.*.!)]NJISCQ?3C$EJ?`@M M005PRU!.*$;T4D0!RM4$#-3T]GA/Q]!@5"`QJUL"3I-ZX-R0GNB!`_N2(QGZY,O"P0E M=](ZC%!KF:9,HKD4=2&0?4R9,5V\`U\PRC]+Q37$#T.P80/<61 M0'.@GU!77#VT&1I+0]GI M^/H5UPRP$DMG$%-$<6#>&,@`00`.D`.0`*(`Q0!W`,.`&2`&X M`5``=`#SJ$-`#(`"2"VD`-(`*(`PP'L4!3`%(!;$!9@"9(#U*`J@"7`6X#&8 M!5H`4``#:81T#I`@F`M,2),`!=(#J8)!0-!(2`&\_N0^,@%$P7[T#4`A/1'0 M`1*D8P`4@!#`:2`'R`/H"E@`%080@!'@0)H%2`&P`2*D4X$40+&/05H%<`/D M"%(`?P>8@#E)`3`C10$H`<(`AH$Y0`H@1WH22`'02!$*V0(@::1@2+HA;1ZL M`?RC$%(F`!T@0VI6(O89%JJD5](Q@)<4!;`&J##T1^<"90,@J5B`3-HDS1&X M`,RC&@,&*5)`23I@8)":&(ZDAP'+`(FT#"`B992J`2*D<8$4`!D`!?`$D`(X M`9@`*8!!!+'/Z4`E%9+22(,`;(`)Z1&@>3`L`)(>!\BDE=)+*91T!S*J&#!4 M284`J`91*6H`#@`'`)*.F,BD00!5:6Q!:OD_N!142:4`,@(SP(04"5!E@`.D M`,BC0@4@:5&`3'H$:`(0`:"D%0N8`+=$8_`J10@\2%$`2P`G:4M@3OH:<`,` M26NC9%(4Z6L@5&I^D98R'?2CGM+TJ+$@04HCI3"P1YD`QH(U@)A42'H@S95B M2H5*,`%<"1Q"N]`QH)"^!NP`2E$`#=-VJ89T"K`&4`,( M%68$;0`@:0V!3-H$^`\D"!($M-(T0`K@45HAW0_,3%$`?5*`Z6IA"M%T@,54 M2 M2,<`:8#]@);4M0`B"#V]36FD0%,Y*8T4#6`G_0U\2U$`,0&O0*94:CD3D)'6 M1]$`_P$-Z1U@3GH1J).R1T>G--*9@<.T>$`K/9:"3.L*P`(-J1A@3DIA@(\& M`:0`(=(CJ7N4/2H9R)"R1YT`4P#Y:&T4!=`HP469HPA8^.`*ZGE]/9JH_E'R*$K`=>HT()\"3,VF+E)SB3HGI9RR45$`BU0C:AP5/GI'A9!V3^VD@YE9"R1P$-IE,4P/04!<`:F).B3FFI!53Z*`Q`0]H[G9"Z M`3X$'=0%*=*T0(HD89!^4MFCD0$B*@I`#7`1B`K03NVD@U)%*E,`*#`5")5" M2%D%$@:?`/D41:`EY9Z"3K6D9@`1`ZF!*>`PO0@8$3H($]*#0!75ATKL.Y?F M`1"IS@4[Z42`"T"*&*1J2(^I`=(W0&'`2RIB@`MH4PFI]%&70=^4#K`GL)]& M4Q&DS`,-:2:UD7H6$)V"3OFGE%/Z:.@4/FHL8!:P`2@,8@$40'%`P=`&2!V` M366ISU3XZ"=UE:K_$)\63RT->0!TZCBCC8H:$`-,!:*G`U.S@#Z5-=`CG9#V M4A4`]-%/*GST>3H@=1IH4ZVI2%*&Z4K`=A`]I:@2",@`'=02!H/T"9`4**!. M,(VI"57XZ$*U0]I010.44B<"[%3912N53R`9,`MD2">E=]2H?98_. M%[`,6%)P*J3488I-O32H".*G]-&&*7RT>`!1Y:4J5%$#QU(10R-50RI0'0X4 M5.^I"55DJLPA0;I3Y8V:3U>I-`!SR3OUEMHU10%0&`"G@]+AZ43`5\`G0*=Z M4OVC`U/N0(Z`=L`L2`$`3J>JBU(M*5A52RI6M9-&&!BHB%,S`$85H=H\2)@. M3T\$KE-S:F5`<3HA#:MR5R>DT-5N*@J@L(I4S:IR3,6G58#B`365PN"*89!* M2`>FZ54-J3H564I=A:?25ONGO=4'*BWUGEI9I9,:%.RJWE1&*7M4C_HLI8\6 M2!4`--(!J?24@2H'T*P&5X6DU]10*8`T5&HD,`(\2M.K5544P!TUP:HA9:\" M2W@M)I`5:U2536KYM4_JA&UKG`X2*0B4O$(E%,:Z2SU(B!0"*^Z M3LD`>M+[J0]5(1'E$I\:2ZFG1@./@))4J1IDO9N:5N&COH+1*7VT)X!6>)[^ M5T&LCU3S*`"!0;I!32BL"O0#+E7O*1R"0>HKX(TV5`>FEX8=*USUO#HPA0UD M4Q&G"=)'Z:5A6(!.A8\.2@>FU-040.G!3Q+QX`N\4ZD*=06?0$>`?&HBS9'" M64>I!5(2*^^45NI9W:8Z64\$$@(LZWI4Q-`]':X^%92E*]8!JQ]U3BI@?0/0 M#H`%E],6P82TU0IDO:4Z#1BE\%%7*@K`,(`?V++:)K@EXE.+P,WTNLIB;1%0 M&'*J4541JQL@M?`G`*T&61^JE=11JF9U(C!??9"*&"8"<0"AP42@O5JZN#H\ M'52L!H&>`)F@VWHDO9Q^4@>F5X7I0!F`GAJ!2*4Z3/.KX5040&N5H(I598_^ M!$*ML58@JZ&U;1`5B)VR1[6GOM5=:VQ5WYH'&!94&. M2$^I;@`"*;=4:!I!"P#H%;]*FO@<,!A%;&J5]\"B8%;*VQ5P2IB0!*, M50>LCE9AZ2KU)I`3>*=^7;6D@-,VZ^X`JZ`@,+7>6V>EX54>`QO`5*IOK0RT M2"6JM%410Q\509I`!9G:28.NQ-/2ZIJU#/!EI:6*$]RLU]*&Z:3TDRI-S;0* M2/4#"5/Z:,F5#(`ZO:J6`?ZDN"I9A<65"I!0G906!Y`$*X$;:OP40FI(I:O2 M1[D`7`".0%VAN6I95;FN5KFG8U41@Q3U#)`'$`$P7JNL7%>S:=2U:*HAO;$^ M6S6JG%<&JJH@]%H@'9CB4SNK0U<4P8E5[F,!\95J60&G_P%W*WY!=3`1N)Q& M!B"JJ0,,@3BA\WHU.`S0`?ZD_0NL*^U5SXH>-0/`!88#4@+UZGW!)Y!M]:-B M5?&KB%<%ZE'583IB1:C.7#&IK`(*ZY:5#1$M?:=:7X6FQ0'SZ>G4S"I2_::N M3N6N-E9A:0=6P3IU';N>`0ZO"(&7ZF'5*G(?[;M^3G^M:]5^:Y`U8/I$V`.` M%6RI3M;7`$3521IN;:BR1QVD\%&Q*[;`1&I57:^N!,@`+X!8@K'`NCHK<*UF M&42N!=;5Z\D5V$IY[;R^`5H`[%11$OG@G5I6;:@^5?6M?=-L:[!5O1IE]:W2 M7VD(QH-U:FBU>FJ$I1W$64M*6->@08+4N,0@E9N:30&N#E+9*LHUGZIS+;6^ M!C*DCU+,*AR`@@[IGI9024VNQ.E60::O586HTB`OD6H6E"589[`/VP`H?Y:U* M6K>G#=*+0!;V+[`6\+LF5+$2Z-')*O)U0LILI:5F5RD,C])W*PJ@K)HD0,&F M5E>N-E6NZES@@@IZ'<.:5G^OP=PJ^1UVCIH,+S& M7E-6XM/0*>"4HX`QA8_V!.BM-H#3:Z*5\BHTG0B`5WFN9E/OZC9V/R`'^)/Z M5LBL:U0R*Z#A(!`]1:9B4]&I95<-*3\V0#;328*^ON5CD*8&@!UL_I<5B M79\`5E-'K-3!<_HD,`PH22\%#-+W:R4U==!?_;N*3F.E]-&I`$]@U^H?I:C: M"_:G'5*F0`"5/HH\-:"Z6>.G=E2`:R[VCJH\=1H@3RT#S5,(Z:?!KDHC+9W^ M22&D1P&7K!GU-^!.Q;YV#M2K88`I*XW`3CH;`!;T!F*GU]1(:1"6(E`\&+!4ZQ&E(S`&J@J+I>K;Q6 M7ANQOI4.AJO4XUIY;:36!Q@.Z55E[,!4"(M.#:T62(.PAUFG@9.U]?HZ;0,( M%*8">P!&08W`1!IL#9I6776P_-80Z[]5=LI`#?93*`(2SXP/F@)"4/3H$0`($`:P"10#U:#$5X9W%5&)C]J!;5!7"=[:*B M`*P`ZEB"JOD4/[)$;0'P!02EQE(`Z?+56V!L+46D48>IA%*OZ\)U(PM*/0PT M4(&J/P$"P=SUYXHB@,H24B&DAM@#K/(5&$M798^."LJI(EC&[!LUY$J4E0Q, M2&>I0-:)0%F60.!FC9UN90K%M(,*7W40>I]3:A"2!>I1M;H*N.UEPIMI<(""\P"_=6GK#TUY=J89=%> M6PFPD]/CJ3X5"[N5[6"(3S&O_E050:_5S,H>I0CT976Q^(5@*GHTC[I'O:3N M7%$`7].&:D8U2^HA=150%4BDZ-2!*8R673J#-9M*75VTR%BJ@CJV^IJB_;1* M5!^L,-1QQCM50DI8913``3JHA=(7+%;U"SN,+;""6\6MY-B-ZP]6&>MH_;** M&.RF)M)KJIT4HBH9L`P`50>NFE:I`(7A2(I_=:+N7UVM[=P$])X:W&`WDH#L+<^:8VO1]1\JX\VG5IY#;$: M%-ZL$X&H*^A5U)I/Y1.S[%3;A8JU/%!)[:I6 M9H>M05DL[9\4<)H$F,,>:$&F;@`<*S*5(J!6'9[:#BH"\5@M*8142PN`K;&Z M77VII(&IP'`@=OJHW=#"1X6O`MI0J5C5"LL&P,).6D$`N`F+ZQ1U5HL"Z*`2 M:0FG2M)[K;!5)&MAH!743[.L+MI@*XU`GTH^E9,&82^R1%A6JV&V[3H[>"(X M3*^U=E+[@+N4(,L[!=2B4D6N"]=/ZS36C(J%L[0^69T'$U8%ZLO@!%M\[=(6 M3BNL*U@0`'3!!2ND98].:X>GRUJXA9/T0]L@_;\24N&C=%I8[$R@A#&US9%;)2 M3@>F"8*.*NKUGKH_K:3R8&D%_=4&;.Y4Q'`[;0*X1VFD0P#W[,"4-LN;O-&V M9O6P]M/.;>E"('LS9=*R6A>NTEB>K;ZUEGJ_K97R4B.ED-<)Z0@WU6K`U;'. M39NT@U:F+*O5:<`BG;@>0!&@[U3_:XJ`3-!?I>!286&LA];]`+D5L0H":!6* M3[^HSUK':T<@29I1E9#F2)6X!=N(Z_]6X4J"S=K66QFX#5/>J[`4>1N&#=/R M3DNL]X%![*I5W]J$3*2 M6L.O@88.ZEJ`0:IUIO0%)H+(/4O*HK>*:.6J.X3%R@+:-4@&J$9150 M3DVT==S7*B>UOSI]W=E.!,X`$@*FP.6TE[I*%5J0'IRQ*=RUZ\$`+3O#52L8 M2_.N.5LG;2=7CEN,Q>.6<.FC,%I0:U$6(7NJ=9+&;3FR8UQD[?V60)!ZU;*6 M8F,$>X)&`NZ`FSH@1:>B6#TO[]2LP=)60TI=4,I*$%ZO2M):[!KU?+N0E0.8 M!2:D@EGF:?VV<2*&#"MU%2A`B_UD`O"5:^Z6+FT*]HX*O*58CM%9=#" M1SVR$-2,ZM)V#C!^)?:->"RP"EE"[0@7K^IH;>:"3EL"3H/IP#XYWZ@'W!!M:7>->=/NK5%K*ZTJ`CRJP%3&8!2P#]P$'[@UW0LJ6S18H M9.<+>=;H:97V,MN^_:\>5-^Z%UHXKB M7M6Q8=DD*:J=66FK]2*`'X!MNJBM;&* M`9`$DU@B['F5DTJ/?3087I.RQM8.B8I50DH?]=%&;2,0^5E-+?NU#,!X3;*F M$-"X2EGDZGF5L&JAC>M*6N&C5]L`:5KA+)`X!;B2=-^N)%JFP'9@>5I3]WJOM0CPF8=M"08R"L@`6=@.N#E-^PD=UY,J(/0N, M`58"P=Q'Z91UR+I*K0%48,^Z2M)%KF>WH\N:1<8R6T^UUUATZH=5`CLI!:\J M;>4"5%V-JE4WC.LPO2^P!D:[0=VF;3Z7NEIW#>7N82>OP=O#+`%VE2FZ@E6@JA)6KEIF';*R M1Z^S*E[4[5)7D2J!!:0:9J6Z5%U&[(B73`![]9,`\L2GM%>;+D%W==K!39P" M5;V[4=T$Z8]7&4MSI9V::FFI:-A@;D#5Q6NNG;SB;'>J0%D2J5!V;'K;;2UL M876DQ@3?*;Z6C'MO3;P"=]6K#5A\*L26^-J.):MN;&VJ<]S\:HL6X-HV"*_& M4D6I)%;X*(/U9CO43=J">JVH15>_@.=T4$J@A=,:3P.]Y=K.KHYV54M-%=?& M=TL/&C*QPSKQOCM@R.\F`9P`40`&:Y?W!4MD7?'Z8(>\5-AJ[/XT#<"LC9TJ M>)^I<]7NZ:*V(]O/[<;N74ES[]0#*WDT<)NV99#R5(FZ%%;-*A=@EXL&X`*D M`*JOWM5OZR"UJYK*O>M":_6Y4-T/[WCU-=!?7?BR5Y.P%P%C@].5)GJ@(@(TOH5<`F"/*L6=4=R&)6V?HHK0R$6ZVZUU(F[7F5/KKL98\> M?).V1EWH[H3T`@MME3F08!>^:5:';U+7W;N79=-^:?NR(@8^+2I!LVHTH+7. M36.O<(MD:V47P-O4S3"T:\>Q[=7MA_XUH5KM9)" M*%8.6=_[+E_`W(ONG<\.`>:CK-9&@WZ`X[M6O;?2#H2Z$5:$+_4T[:H\+;#* M='U+_\9WZHG`6UN-11%,#4*VZ-&?`.PT09"RS?B^3D&\'-\5K&^E4[$O%9+" M1R$,`E)`+8I`!Q"^Y9-`:(.Z/%\J@`S`*K#31>V*?@&NSM11KO.T;YMPA;#2 M4A.DFU?$:7%`U@M]G<'BPUL20^1;46 M$2*Y3M0\+"T5#X`E?:LR7H.Y$-*S*Q5VVWN_?=[2746LQ8&C;+VWY5I.9<-R M?[FK^UX4`"PU>MM]];T:8>FHD-0Y*[N7BF%,O;LN7VNG`-:X@*?A!!M[]2R* M3VNVH=)[+[+T9LH38!7\87FR<]S[PGY@^JIVO>!:6P'`0E/LKY%7T`K[!;A: M!5:_3=,);-$VBTJ>G0%`29VH18#HZ8%T=@H@!18\?L6[TE8-:=@V]JJ8U8]R M($J^S]A,+:97:8O,!<+B:0.TS=7CZGG7GPM@U:PJ6X&Y)]SVKH0`Q]JP;JDN%SV*)TV:OI%CMFQYEUW[*\7S>JU#?)F?X6[.-LBK-EW10J#W<#Z>5>[7=LEKAEXC(N`5>JN M8A4`*-3EK`HU8X"QE5]`9QT$TMDODGB4/?I:H`'@7XFT3X`YJ14@/,M$-<\V M!HH`8M."+Z54/@H?I0(@`8H`&E+T[)PT/CL%*`(T6$4,85OV:17`"3`$H`(D M`9X`P-.,J/";]0#C9RVNH51C:;7WP$L16.?V4MW`GUR$JM'WN#O&)3B7\FL0MI9<$GAF*MVQ;C.<3NN7UT^AI?UXJLE'<^& M@7V]Z-T?;!F8F\J`5:]2$5RZ#5-.+CZ5:_!$4-_.#E2[IM0!J>Z5FTKZC4!H M#'@9;]-)*;WU!@`H90Z\@#>D>E35[22WORJ8_1406'^NE53#K(9VS!M2'=>" M8QNVL]:Y:BS8-:N0+=Q>7XN]C-37;@K8LBM2M?\"4%F]YM%KPGAW4UNR6#FP M%K:[F]I[[8'51%OI':P:A!FJFE6^;+:5YMHU%3$(@RO"K-D!L!_UTH!*=>D: M;PFLYUW\;_;@N=M!G4(D?ZO!'>'MQ':71*H.)J3*@^$6J%@]+G\5]TN0#>"B M8R'"REV)+844"N`L%?)R%(RT;`!C;,B2=NN0ML4<+)7WXHE]9Z6 M+.07B=_WKRAU/`L;V)_2"$BPCUL>@TN62XM9;0-`4FT7&%N?*0?B*&R;J`>S M@A^E*%D2K%LUTUNX_:_V6>VX.ETI<#Z8=RJ#?=RZ414`@EXYJJ4VSMJ['>^: M1\FY]H%:<%X603KTC;G>@->QH5*Q@WO,`*CUW0&;:XT&ZE5E*_?4APM!]:8^ M8)&GC80;*@/6S=J3C9#:$@P-QU@$Z3$8I$OV)>>N??NU'M>SP#$W=IH$WJN& M3D7#D40TZJ4U`COXE02;='V^M%^B+Q^6JE`C@/G21V_"J-^3<+1VLTM'G?0F M6'>V=EC/J\B5-8QWC9!N!%(`--3","JA,SQF=8]U+\ROW5.8ZAB76\O27>^F M<=FYDUF8+5G7\GJ7=1KH!VBGX-12:J24?^!;"N`%K0L%]8.XSQO0:#3+NP9%BA@K&T8:O,!P@&.:\4^^H+]OG*84!TDK/-;5> M8D4,J.&<;6U8`JS];>=F;I>^D6%_ZZ$7\PMD)37$645S6%?&ZIZ@U>K$C>1V MA&L7R=9G+)&V/@S<#;V:=0.IP.`G:4#7K2O:C>@2:MV\`^`.+S'8IBNYY=HF M"30$,6'/Z[P5*:Q>%+$*/E75;L?542L6IJL" M6ON]YM-L;/+U0_SKI=6R4W<@1MNJ[6WZ]7B+CLV;/M*K2XP:@.SV^"IKE3X/RPR3)* M28M\[]0%KT6`,.M,9?G*4F.]U5>^[N,6L&O<'9[F5ZVVEMJ?*[=UG?L;QJ/F M@^6[N(FK`Y%$(4&>^-50I`(*#OXL)EN^Z1Y@(1!(0`+E7;7L$2,]2 M2JL`(=)6KGO$RSHCZ.PJ6=.L!>2Q?$/]Y4\9/8B?I%17&P M5+6X;]6;J4TVN:I9+1[T<9G!2UK)+/95O6O-+;I2&TO#EF(><"_5J`IDC0]# M7#FK/6(FKN8WXN*"=8_N5)N].-W!KTZ7Y.H\B.A.!:*N`>`X%:"]]Y&)GP566!I)I2KP M3^NDZ6$LK884H"MKE:0";XV_-M4!\7EV;%J]U?)F;_&^\%YT+I;T8)`X;>8: M;_&OY%S:ZW&X%GLRIL%>2U>S@MH];I!UJ*J)30)?;,4'K-))[.IZS/UD)K@-0\#3-/#;E94PEM`NCKK!='.5*FQ#=?70!L`UYN#=1KL MCMG#*-96Q9FVRG`1V-%J6?VMDP*1ZSI0%\@-&C3P"`Z8'TPY`M&)U6>P>E/E@%1O3CEFU-]0#ZL6UI^H#UN6VA,^^Z>$>[W;@TG`F1NJ. M7G6YG&)S<*,5'[Q'_<'6@@^Q-&/-J^LUG3HGKKBU_$$]*%[^OU#.`"4+\" M68,`3`!,:1$V%JST'9BN9I7"`]8G;1:83$`^@.*$J76TZ7#/`"3# M!+[(=-*`:1Y`Z=MA?93>A"7$Y=>W*7WTW'LM+0UD2*VCW!(X1"AYD:RVS2.; M1W>HY-N%\'CV[UO6);YZ/S:9MW()H9`;!QYZ4"[0CW\VVDSV;]UU,LB/9N7H/CAF;!0"X`.2!\J#5H+SI5&JW?1/3]D-9"+H=XJ:LWEB?+E+L#1@#":A]9?`"+L6IB M3:O%:-MR[X<8?TJ^A0H;??6U#-<40245-6!0,!;@6!W%,2P*MR[%2@# M!:"W7N(@:539""LBE2E/DBNM'N%SZ;BXD5P&H#!(>6NUO&&SL"JY!?Q.A:6B M4QTBD]P<[,)5F0Q6?BLC@5_$N-[^ZDGYT>!1=9@BE7>^'(B)LHC4B`"+C4"8 M:8%+`X;),IVTLOP>)=\:EF<$9P$Q:9\W%_Q)10[GD3RG^=6!*4L9MDL1AL`. MECG#R&*9\J@VH9LMF..*`;BM:X!7,2PV#UP"(`OL@1$%++H_,*YJ.GLS(-]Z MCW$"2M7M;`W5.PN>%<^:9TW(WT33;1N9/>N>?28;2N.S\]GZ;)-7A+P6R,^2 M;QD"_&2D*=$X4,I=%<:B=9FPO5,,Z9K`$RO$E=O*`53%H%;Z;?P4D$IUC<2^ M:UFD7.,":[#\82?M4N.$J M:=6_--5L@3"8J-S:K;:*5F',>U]:KK(U@(OM7:WFDN&_X5S>\''8)]P@99YF MF)^IU^$YJ>ITBOS@G2]881>P367++GBFD:5AR+=`U*O`:`.>N M5+.NS@/!,>HX-.S5M0C_>N''*^/5Z9VAPM#BI2XX837+!Q*+Z_RV'LLLUMT* M6UW$L>#+J4HX3*L&[A\74#NR#%D-J4%9CXN,E1=?A%F[-]^:JE#Y<-P>]JUX M!:ZXM]C(KS%!D_MSK3`S#]ZUA@%6K9-T#E"1I>RN4W>JM-^BKC7V=EQZ]>N2 M:.FTC-=/J@[84HS_G3/+`;"PR&$=JL75QEP@S9'^D/W)#F95,8X50AK,93&[ M90^W9E;>ZRX6N9LLSK>ZFFG-U](&;.77K?I2/>::6O&J$N*4DOBT.$!__;QN M7)/,BMO>ZB.Y:JM]>,J M3Z.V(P'SZZW64=H#CA/_"IRN%5JX[F"UP.L`-M@V8$/!!%DD;5K!IFJS?93^ M?$/&H%[&[4T8/KI+I3$[7'>RVV03,JY*'T>U/>Q.>@V]45TF,?N7L\KMG?PV M=^>X)-V_,A46!L`"B`$P7ET`*&?A\E\5F/I*1H_VBS.U^%2Y,!76&"LR#3&@ M`"ZG`E_LZ\;YC8NKJBZ)3XG%YE-BLR!-@BH8//':E5C^ MC1M,1FY6_QW'G:,G77+Y>)-,+H8(RQV?A!027&F4601M#_OJ>E7#H&),*S,XNDPH^.C^A+>D#=(',LIU].QDC?,2 M3Q>PT]A"Z\'8S8IC?92*74?'WEC@+]`X1IJ/W1LG5&.JR>+J*MT9Z:J`O?7. MAO'$O5Y&,7K7YJS(18\R5I6Q;&%+\XM5/X#QA0:;F4L#P>6Y*ZZ6MROD]2NW M]MU86K91;%6'1:S58)!ZRV8CNMF1@Q+DT'%AN9&<<"0K54$#/I.SCNO'%:I-[!T!A?96GQ)5MM:;T.DAX)B'R,:GXQ)%FJI M1\G(<.13,G4)$KVK0"9OE;.LX=K=,:SUKSKI;?DFG`^SPF5E,BQ5Z0L;_ MA'&KPX[]*#RYE#Q,OH_F2X<=@>22`!ZYA$O3[2?+DF/%X%^DKE3UEIQ7SC.[ M5W4+NFBD:3Q9*LN*]@O?@XW.,-J$Z7BVXWKG[>EV=M_0@6CF[G^7I#M^Y;+" M,:/1$F41[^YXX:L"4/H6H\FWV&@)K"1X4/K[S?:F75^NW^89L9(XX[SQI<+V M!`RR9(+$;FQA#!U1GD9SGU_15U9VM#LZ5DR^C?%>66.US]0]LKS7@PNW`.$> M:VFIZN=]-+E6O*HG]DK&Z6=6H5M^U>PM,OIG*HG70SE7R[43`G/IKS9"" MEG/0;@`H\`>Z"/U-5NVF5Z.V/HO%K)#6AWP1R#*`:Q^_&=5F,9I580QT!JI. M:Y&T'6@(?UI3>FC5^38:]N4$VV)_L["8@6(3>D21D:9C=RV#47? M@=,566E\,B/Y%&V2SLQ>G*6MQ0$\`,[Y#+!HI0/$HLL`=X!9],.W%NU)-K,N M?UTDHF1I-"_ZE+QR(-X:./#2P>A6,C&:F?R;/49#DU_,]&CG\N[Y15S0I5U8 M6@O2U]*<\^T54*I$A4AD>IU7);>4S+9OXG\HHW<>F MF]&LG]IC[EEY!/T;P+H^1^6RD52_\G0U,BW<1=QN2Y6G[]J.ZW=:2?R371F[ M7'.X05C:[5IYLXQ]4$ZGB6>X%%V8[Q`Z1SJ1=K9R7\'*MH-=\$L9RNKLM=V6 M>#FPVVF;<8'Y!WU@-O12=(T(D5T--$#@0;%@;!W>-#,/A8$![[1.`$EP?O01G M@MO(4(`G0"?X$UQB%@63@DW!J&#WK#XNO?R;K0'0B'.[NFD%*7HT']V9SLSB M?8T`D]PU$?=RVI9&ZV>'9[7^Z=MO,]4QW4R6O!>,[@ZP78#M%UN[N M1PV^)]@-J^N4$ON]10$L?'VS#%(U`!'U'JSTK>H[M6(YM)R69E6C`$#5KVKZ+_EV!>`P'50_ M?,.I1H`_]2YU3/HH-2$7H^.C?VAM='EWXSD0O&K8@*\:6"TS%5;_ M9HG5]%%C=6;Z(&UK=;,"A=UCE1NMKQ*85AV!J+#6@/NJM=[N,T`U!?RP#9@. M!W2W[I^TJ5M#+J\2 MC<_"[4+9K9GZ5,J"[BW_9B>O2E9%=1EVRMK,34Q_IZVJBV51M90WU=R+_4T/ M?".KFF=1]:FTYHO6U1#4AH6M&NL.=<=:6/I2-E./22O6EV6+KOT8^.QDIK`6 MD%_4YM=;LZCW^!P[7?G2@3>K1>!9]`%:VEIY9@RC M(^$=:E]X$#1LPWB/# M!JJ_4X%V,&)U%#V&;H\2A5VR0%RLJ@&6"LLUV!,@B>W1$%*2LYW4Y.PPE0$P M7CW`UV$S*TS'N`OTAQ9?-I#G5Q@7:G7AH62A0L6T(L"R%X; M%FAUXE,/,'M4=CV>OYK&8Q+>C6R%L9J!/#I=&^KVLO]%Z5]#RB%CFW>Z7/3-T7+A56]^R_=4:3 M5'%5L%SG:=@:)5U81@^+E/G!"N.$,HPY,I!23M4NE4NZ,M@3+4P8*OTLEI:B M,_P'P6._<]HVO^L$J)3F2I<`"VNDZ949[+I9+;3R"3B],->L*K?$!8M/#4%G M@PN\ZMT0JQ,WA^VE_=?R=9_#ZV9NZ9'WQ9SKC:HJE)_+R-Q8[9`\:+&X'E>`\50`96NS;=*F MH`^V&57+@"+A]EP;CCO/=17##>34,^^YCCIA>TW5@;:R09<]UTV`N` MA+VG!.;'K4*7=#HA71`783G9O%.I,3ZU*!U31O9:DVO!$V;U;XK9,H#\S;JB MG:6O:-](;C#;`WLSGOTF2.?'+E@%\!S6/099G>=B"I(L0F>7YLT"ZB+'=O=9V MD(G,K.*$:T)6&;TYMEL?;#FW%>26KB=6]-J.U>DVESO%(H9Z0^58G@LAM4.7 M;C^GQV$B[>38>)J393O[=U.ROPU(K/&9;AS9;36OH8?##&9AL>^X;[RN'ASG MLZ^E.V5SL(Z7J3JDC?R^!=*^#E.`RA7EVC<^'5%%?\B-]UZZNC_=.F MAJG5UVQ0[]*8[9PP9L/&G,G#W]^.ZZ`6AVI9A4W\;54V7I`!K(:LQO:#5,4ZTU`42#M9I3`[68L#NM]!JXEW%QO4+<7J MH-^UYM7#KZQB,0M3KM1*EU7')&8)<-G:B%!$1OK:F36R+>8B;`4Y(.MNABZ7 M8(>P9P"E[QK63IKC;4V[G(FI,&=J-5KUVJOI$L)/N MF4744&&+-(V9TCPP9=:ZJRO%V.`3MR/V?Z!B/1%H<2?3$%+L<(CZY.&)0,8$`>8J8QFT#3H6TX]G9@$^@U^I_'OJB74.KVE.7L(W`K(S_#1)/ M8Y?1S]3^[Q?[@#W:]L#Z=S6TLE]HZRG;05J$O<`V72O&[V?\+S[UA5PV&,=J MH7W;..T@\!-5%+M@QDD;MBBHU6`);X6ZW@N('>.6MAVFI6,Q,\IXCLO)1E`_ MM#>K\%$>*1Q;UVJ9)<&NMW6NJ%COZ]:W/JR!5C?;L97<*P=<23C;S.I\;C'S M>]^H/F+2KE)V_6IY)L&&D^W1S&4X,!%[XUJ/]C&_B#_:+>PA+309F:NW???B M;)>Y\.V1`.&VX(PW#BFS75/4X&F4L*DTP.V3E?1>D!?0$.`$,6M@3]#^)6R/ M'GC)TFY\LE:YC,VV=0(L`3BK?N9%+7TT;=WA_NI:%LRO,&7L,Y"YW)J8Q14[ MHG\#)8R24I'/KPU&WN^2D0G6"V.MK4MWR3RZ/B[GI:/2CEC9;-JVBUR)+GA_ MHNNC7NE"`47S$I;#: M"*ZL>E*)+TN:^NJ=7F+'I)6^*^M:=G+6.JH'O@SP!0`(!]H7JH^:.DN^K6#+ MGEG!W%GVATM,C;XD"\QSOZGW[6IIT,C>:8@-&6AXR:SL+.!/+2I&0'*\N;^MXN6$)V4SM46N>?#7EFV:V>WIEQ_GEI3!\[3&8/>[0&[2UQ+GI2V M?;$/?`$=:DY`5$'Q;K_D=R_1L-C70^Z;1X#8MGCS=Y6^^-G^!>8[GOPH?7`G M3.NK*NGCMHET/)M,1<8:GZW?%V1\M7.A'$T:CD:[O3?/*.FQ=?4;);V-]AO; MMQ/05NP%](B5VUWW%D3_=[7)GNK&*BR[MNQT6`N0A@G>(P8SMKM[Y*N(MC<9 M;8,`F-9W]9UXM$IJWL8V9I?6TV$Z-!.7\?KM76)\1[6[`'#`]L&[FWUP!18[ M6G?=%6-'KG]T4MHL5@.,GI\(U6`J+GCTX=W%[I5.B"$NDV@O%6_][L7;Q/![Y2/SI=TC.8$5^,?[^7NS97E;=U71+6_JZEO?[]['[>+7)QU>#=>27;^MTVP2M8&;)E)%MLU" MO(E]\1IH?#`='[71\MX=53G M6DO3>5-$J@;;+7TMM7ZK3/G@:P#HMY]DW?&@O47[2480+F#;+"DY1[KU[DO_ MP@T+JG`C]#NZ,%WV1H_NO=&KS&C",G>84)#855CEI<_?Q?"X-U:")##W5MM. M:XO1]V!9,IGU&8XL'CH_H)W9"U]2=U184YS?7O$*3>6QSN4K<\=5\>TP97PS M8"?0*5K(]Q2Y1?=SMM3VE!NTVX_I-]_62.L=1DO#!C[?-]M9^.A[3?TH-7T3 M4Q^K^&'?-"@7$2YJLN]K*>U[+.P0CWSK!52L@U+`:=MWCGU!>C03 MORG1^-T-J57Z4+#`[F5K#.2^"H#\;KFX*_WPI?%Z-M'1U&\8\\R;GYS]CDE_ MELVSW>^$*Q#Y^PO^1DRS8^<&S"=@8DWOP/@[>XE``'\?=Y\2&U(][13A6W@P':G8J/\'&V@QHV]O2V9NW+[%P8=I(;\*WZ=@.\ M`'RT47#(N!!"?`I@1@&'J3O;4.C..));DTWZ'3V\@\L>\6!V-3UX&6YPKD:_ MI!>^\>C!;Q18':WF#<#^PUWC]N3'=+):-DZ9+GUWOEG3XUG<^&4ZX7LJ+G:' M7)^T.=V,K_(5T0OF%?$"I*4$OW&\<-G#5SJKG@??O7^SH6^-*G(<&;WP#8\+ M!YRI(E/2]%W<#9`=?P?C2BKA?.'9N$^8?&L.+I!N'%X$HX=Q[UG\R0S<94WG M2,'B.-@D.,@T0<"UO:,:K4VLPV`>;K#596W"E0E'P$_+_^TC=$S:Q5Q.YB4# M!S3'K.C3M"X\LJPY#E,3?P6[NQWFQJE.8\%!P._SE[]L?+7$Z0)!L'HYZIQ#1003J=6C1FKTZ",X20T^9E);@C'!"U8HM93:$XPU!C@; M`4;!I>!3<"IX2ZV=_8?ER@-<\N4+O.OUY_L;0UT8S_Y623 MHC_9PE(J[VI\7LP2UJS":`NH)O"$MP7YHZJ=1A&08.O;INXIJ]6W-4P8;PEH MNLW&06E],K'NT-\68[0FM?M=DRAJFP06[SZA+>(?DZA`#SX&K MRR_1H6@@Z3Z65;`6'UWC)KC6OUEP.=RU:FWM!BX_2!'7)5A)*?F6C>TI/Q4' M=3O:O^"M:T:[@]`.Q@L['4;2PW'O.&W\W^TV/9F?RU'B@&>#=WWT*@`%:`3>[6 MQ7?F>.'8@GML/QH?#YJSS-<"4O.CN=JVC+TTUP<7:37CFFR,,+][)N""#5-+ MRB?<&%_9=BV;PNQQGI5??B'<$>06=2XX2/PBQZ6*<>/.0%W0\?65L,W8Z`M$ M2V'BSF\R.<"I`P[^'B`?ZJEU/4.6MU30#Z=GG# MHN/5`_(>\CW8%T[L\V3CQ!VF(N_',=Y[+4RD_?MB8H6EDU*U.5]\]-PVY^N2 MH[.J:0N(LC#<(!T9.)U+$*SF`09+*C*ZXQIUO5TVSL9>G]?AX&340%VX&OX_N(8SQ:NZT=.5>3.O?XFCG+JDWL=ON%54LQ?_GYO&%>)]\PZL$E_$B6N/EQ'*%-H_U!7!@+2F+ M;GO3'M[+;S]ZIWL=IZ"C6'W.%_2Y<>)5@+Y!)U<3R.GG"'2^]^"[':YE/J)B MQ57C(O+,]B3\N3,(5\9^R-'F+-[)=BW;OUL\I\;NSRG-9&!$-(2T`KZV`!$0 MT4_BUV*UK;J\YXL@U?N25X.Z&63)N`.\-""$'M=&:=6K*72.-'F57_Y"=L/" MN\FX.UM`MD%YQ"QB$'1/K:VP:^#';.@@O+H&5CU'PD/([VN_P-3(94=\X,SWOW MSBO=O5?AN>Z:>&[_-IX_T;&^N6C(-(0T64Y(/8^*`>[!:73JN/?4/%L]CR4D MR9?*C>DCS5/Z7(Q!__MRTC^LU&"ON6'5P&W@N(E#:&>MHU4U+_U9U$JW[0\# MM17<%%;#*[^\[4N!*`D4TYD(6&4NJQ8=W;OLY8"K:+VFMU99[]P95/P;SIPO M;'SFEO!">CN9QBO&5J37?=>SCO0*-^.5E2XEL)5&?<,`SO,V0!2<(5[+CKW: M/`3B4N5-.BRYD\X[/TP74H'G,.3<]9"U1=M$1TJ/R!O3=Z]@^&CZ1_ZF)ENS MOPWET=W(]O%UN-Q)A2'_P?W6Q?#?;&,:1MVU_I_3TU$$[&C7J3OZ0$N^C:4S MB:?>9U^SJ?6\.8Y+SY+SO'/4>^`2AGM,J0HF)R]79U$`.`#L+)'+YEFH-Z54ZHT9IYG+9^FS5V]`^>T\[(I/_ZM"S[D)7G/JN;W:E@XN]5NW M#2S2.>^.>DAVA\Z8K0L+3<'B^5I@N<)8U-W,E9P"B9W6=-(.`@&F1(#L*[+4$2Y%SM0:;!^WP.T4,3=X-5PV+>9> MC.O:YUG5+^MWM)IEAMQRF7\%%/`NMFM2.,HS?0?#S+?IZ5Y&.CLU$GVF55`# MGR7`FF:O*A16GCKN?C![6^'0@G5Z]7#7HYZ#WL7NL/_8"M5A.M$6?NO(#E)[ MCPGE4V.):::53/!9)K,>5%7C#O4W,]`8L4J0_LTFNV>M?V^2*ULUX"IUQ9OK M<)V^W]ZH%E^`O/XRSZ('SNNCTVEM,"*:BZT%EY86S^CK`/`KK\R<"G#W/6DW MR`>LT.X7L[(5=IOBCH=WB<4'F.R%JV&=-LQ:-1ZXG;G"GN--\:#!3MKF/_],>JZ2K[_CLYB MS35DNN71.8I5SG#T5?EJT07L%K1K=3^?>'8@=0!J4]7FBSA?IUB%"#,SNW>\[542$L"YS\7K&/'>`"VKCF=`M&(OH13 MVA'I*'%,LH`=S!Y/;QL,"U3G5ML^TBFMZZ(8GD^'2/63R+>V<)@(QGZCG MS@?J@5AGL@<[&?T[%YJ*TA?J^'.WMA.=(HX\S\[R2R?JGO8UZ?/\EVX=GZ"' M<-&C'G;MJW!`0N`Z):?NC"6^Q8-=P[NVPTYA_;#'N"'1[?,8>D`=%JMNZ6CD MEN&^:EN8LOJ;N0Z$YI;2>^$6QM-:^Z6[T]LN];"G"N"JTW!C:5/97IYAMT&C MSTVDP'0[\'ZZBQ@Y]KF M8M/>WFTC=M%5'Z=BY96;2%'`)_=@ND9:A0Y!)Q$7VTF\>U*O^FS5J@Y5IO(^ MM0>M&^6!Z6^95H!_%>QV\E%8J1H"=:@QFGTXCFG_E.5]]L0IX:`[LR+J7!`#@ZG(=>S+[HRH6QTNG MN\[N9_%%^K/TA8[!7C>_3#6QRM/F,XR9N(H`5I(?85FKQO;H;73WD#NW)QVRG9H7+(]M?\%57&`RB!9TF M!:"I9UB),(4VW\HT5NDFF\/0L@[U%?H5=T6NAL@J^M%)::: M9P'.PM:H0HN`*7QW;:!^;0W?F.*IP(OYM?RXW6/C@4/%^N;+\24Y(+ZYOAJ$ M9H&R8N*F<;#\RTQ[W05#V(VI6.W,+N5Y+!LD+[<#J,>_B.I^^9,@F@MD]8MO MU&W`^%2#;/,@ZIK8+5G,=B.EA/5[^#'WW!Z!8&_3HTNIS>#1[.06\J[S+4+3 M:*>X5P=,R.,YV=T@*&='W.?5X_(&=4S`00L`GP(@`9(`1H#^[L&6PBQ(]<0Z M2`^IJ?'EKJX=B4[@SK4RA5O&MU:(^[V=_TM^3^36-I`U+&ME[0^7 M5\._YO;Q[Z0WH_KCIIR.8`&N0NL3+@1V43K@-?Q.K?_OS_=&0O3]^_L;SAX[ M,[[EY_/):D"U7HQNK\F>SU_O-7=%K^R=(0Q^UKU_W@W75?C7`"T[>FY.QR!F MP;GM4NF/\-=;!I[?=I;$%&5*]-AU\P."%-T6/ MW\G:H.\Y.#K#$2NV%(7G=V^O=`#9N2W:DAX`;6.T#V)*2;V$`K7$GJB@U^CKDQ>CVM-&WGG=:^)Z40ZN?A_.`NXXQU#?Z[VHCV;):4K<#+\#M\B';?G M5S'CWO?%+?@=2JYO_6DS76OJL5>2^B^9*?YA[2./#][!)F]P^Q\>EI"2!H\' MTR7!V?@:`?B]]ZUSUK\34E?$;VN;>@KU,I#.<`CL67OJ8G(C`"'8!1`2*).C MD+WF$84\*A,`$TP?5?(&`13RF&#Q0:S"'OR;S0$8N'.[F?5J\^.WR*>9+A&; MQR'2Z7%V[J7[$:^!]WO#D(O#<.!)-[K=$XN)KY@.3#?Q]71)J[J8X"Y;'_%( M@Q/N8VP*Z0,^`C\W[K/G:47PWG=6*_V=!N`TZ.Q>X-V_B%,TK,ZXL0II=;(Z MW]\`=F76:BX>2(MU[1=[=:.M&=I/>707X.I\-_.Z8*'R?Y75:2X>\_Y?Q:?. M3JW<[]-5KR)5YHZOUB6J,/CO.[K]J.M-/]&JNN>XA&W;!8C@;WX69W>? ML;.LRM7/*K"6#V]Q_==>F?W*+&C-ZH&U""O_%BT#;*V[4WCM,^1V/:VFOX$4!7QG)@S#?)NV9O7MLY/<_IZB#;!*6@/(>-8D:;Y]Q>NAGI3B M;^6ZB7EOMIWT!DN,YZQ&R^47TF_%KSX56Y`DY9Y^M?>,\.3YSDV%[;B. M;$OR_]UKL/)5\NXCQSOGY=&H)'$`N/5V"4`$2`(L36FN(F+>\99UZR4^'16, M9JWBN=C1/%W^`TTHQMO.W/VC5NZ7.N=;]JZ&IS8KVP.UL]X2L7@>>,RB6R=> M6K'3*7!G.`B\*^[,WD"'8BNZ.^Y^]AKX4UR#OW#S=='L3/CZ^_`=W^LCORJ8 MTZ4.PO&)^Q;\4@"AQ[23X57BU'GK?.E<\]WY7GD?QX_5E70&[W=4.:Q*/\3# MVF'(C5U0.D)=>(YGAU2OF`&\0?34K*KU?8LRGZBGHF^W@=)K]'*\.8Q1M[(W MT3G?1'9N:D%W)F`5P8F_`,[?U>B5^7R^_>UD3]W"=KW-E%3;[_'6\JM&KYBN MYXWM45L*1,6943HI#0LGIDFO\?;W^I`50JI;]T[OZ*7:8U*0^M^WDYPUMN[F M:2O=JM-V-C[;\[IK'I&291.O+U_5?(24HS"8EY+ZVC'F-_J+^6]V?BZDUXBG M814#RU1[ZEV>*LY-79[VT;VI`.NO,.$;/\]'M3X+3,/TQW)!\_'7O&T9;N4B M<=?A`.5:;%!\1]RUK2N,=A_QC?K[0"'[4QYZY\2[OQ^PHMDJ-*%9*,[!_<;. M>[6KXEJA@@P:04K3AK1R5>/B<:$48YXA%['B MO#?F_54MM@P7"LT?#P;/37V^+>J;[A(YOV[;'LV28"'`OU>X1:3=WCZ?KR4; MBRGUJ/!`+IW[/"]+9Z$;VP77KVID]1"ZPTJL/XX[ZQ^^.6L4\.G6'BT)#G=S M5P_TK=E\*YL54"`&>`O[V/GT)]B7_$=:?HQ!DB3N5GG=I])Z_3KZ7K]JO5BK M5T^TT]CU->,U>Z!,-9DV3ZNKW%H6O`)U5(Y@M[L[ZF?8B8';;A%"P1M8$+B'=:6FS(-:,SF=_UR$G0BXRR_.9?N)_=D><%]FI78' M,V-V[4O:6'A8I_S]M?WFM_F;EGVZ,+7>HL%L,Y7 M`9H`L%:4<\,:Q?H1)[B?>ZWW30`"^*0T"/"K%YFFZ?OVY'-HO:$^*H#MGBXS MC[^_'T=)J!5'ITW>G\;0%0AZ7[62^V?=8^B M@#G72=)0-_47I1N2%AJ3;\'<$/$7>\"8]7N8;>HU-C>[QV`#(MVGI'_ MW;&V$6W[L!BWEZHW9I2'W>_:E6:`O8/U!=(6>\;8VIK.QI+J M>->H]]JI.SO6#(W(MO1BC4NVIE;&JPU8@B_9!16'2*NR+E.#+1`_DJ[:=M#> MB%/#0V*U\9.`#1!UG4#CFY^YPP&*[_*6<\NRK0S0WN.CZEB,J34X:$NI7\-J M[9VD"P(R[NY8J!!UW3@GA('LA5HA>Q86[3!MON[F>9>MI-ZKK"15_1SF#J;O M=>>XOG*K+A0;I/RX7?9^C`OH2^3^:F(Z*M!?=5XSJA_5&&1';/\G2\RZ_FF[ MZU?&Y><9MWGVX.M3[<:NY5.P#U>B\L5>1E#%-^$B8V'&"H:M/:G\8%UE'?AR MZS'B!X,D^J!4*BVIG7+WNNO9M`,8/&F:ULM:ORY'PL_4?NN)@'X@TIZS9DI[ M/HRV7]1"J_KYF3O,EPB?XD_H;UKS^Q'5%SR'YOM.DS6D0_<0*_I]X3K%#RS@ MSO_N4702[\6VCS?;'6>O;I7*>'3\M:,5!UMU%XP/NJG!#EEDZWAW,]\%/I]G M\]W%:^P:K1S`12R6O9"N!*JJ0&+3/`05)KS\[0@_W1WD[-K):5?U@JR==N1S MK"NSUVFE;HP[(,X@#5-_F8GX].?X>SO;ZZO0'\>N3HT'L?HS=]37M][_O6?H MYF/'=U1)KNL]TKI*3P,(6B>D5_?X2]KBGM&`+P(X`005"U_M/0L@9BU'UI#- M].V[^W':P<+76,T"T-XK?0&GRM;K.X3:$RM*'?A*<;'Y87O@]-$V`#$_O,?JQ[,0O//5@;3U_?-_H>P`,[[#K:C_L` M$$JJ`'"-=0^`!K"0S@F8R^G<_V0VK"E9N%P,U\>1'LSENN4\N,)^8G^C_X<[ M6#G4\EU?B7`44:`)IPXL?&4`__`;-'3?BUTNE\;S[]6VOOP"NE!]-J!Z]D.K`?)#`0)4-`=WS\E7Z['CB-0,>>7;%>U3+;** MQ_/['WKA^6[10@X!'V_RZZQ5CE+$"ZG!.C,/F2JP?<_"']3&]GBV1_O!M[R_ M5H/=.&1,:7I=R_JHK9;S4D7-<-?J:X`))?<*O[KJ%F2FNQ10>O.9X9G`]`UT!'2JG\Y-K^_D/Z@RXR5>V[ M1PKG76P=*J+@SM]EG\Y7Y\/W:?C/?H<>:ZS?;TWG!.(^YM<,.N84YXT"`&!+ MZ$$">&E$_]$\)GZ>902K]ET+RFONN>@;!8#=/U8W^H/:76R]`*(`TS_IS^]" M`2S]5_ZQ+4V^OZ[G]YMKI<_B:O?\]W!?CMI'CGBL!53]R?VT0BN]^>\6H>%R[7Q^_`V_##.?$6`'[?1ZG7Q"\%,@'-\8^_%EMU-O9Z MS46IS>5N>IT7:G_4'4HG=$?+'.KG-=16.+]412C`U%W$L7O]LPPV'3[6GZO[ M22@/XM-U?PDZW__('U>;=-7@(M;P0<&_\@WQ3P.L`$S.9/W*M_1>Q#K6#Q_\ MPX>G!'\UP,6_MR\E?>&_JK?\0]_X?@T<7`R8WH]7^?'[*_ZJAD*B("$^%56S M1P'8-E:5OPUQ4[H6(/>__%'JG'[UOD2>N;W=7_`/_=7=:EOK_J+_X7OS'Z6& M#PS]_H/N15>_Z,_>IRJ;Q5/B2O].OX84Y[],A?IW-$K7W]Y6_]>_RRYW=YB6 MSE&]2-OH+-94^4657L>;`7#.T/UUBYEV[*];#N\O_4G^6`EH]-%V6[IQJ/IO M/X#ZQF_LJQE@J,])_O3;42_^7G]UK>R6ZD]94/SKEK/^A7^NOZA:PO^8P/.S M^M>)E7^R/S==M_[LIQVTPK?[<9]B2L:V[2_XA_NG_:NX<__1?]U?J!_T3P'@ M_8NV4__3O]%_`_SX-PX0_IG^AO]7M6J_=#&1#_C&_8W^9=O:_^"_];_UUY"V M&WJHN__![:J_HHSY']SBP'/R9?_.OXM\[T\Y5?O_G4O1.7#J@.F?[R_WWR)C M_U/B=O\9@,,7[Q^[]?W+_JO^L5MR+Z5?Z2^N;OK;4;W^=Q,7+$\_8X#^?Q$( M_Z_[D7_C/^*?\J_!7?YO'##__7_,?KEU#5:R?IY_"%NG?Z%_1@W96=5]Q@'; M?]5_J']84P&`WWWY779_O'VN?P]?NW_9)*]<3WLXF9^'6&U=PQ<0`%(A<8G=8>*!<`V>7 M;IER!5>1:_%3NW\W`8M9HFU)6;UB^6]U`$)\*0!T`)YJ&(!7?I%Q&X#E9IA3 M.7Y1`3T`)F=8!SE4&22_%:5KHFWB;L-\=E(+7T>`@5E)@$N`$UCL#@E_9WZ^ M6QQ]>7VS=.A1+WZ4;3Y?#'\<:]EN(5?R"UB`?3S-7U=VTU_!=?937X`.@"-O MI7:]#E=_``04@$)]YWY]:9=[B'UP"CYM1UD\539E38#<$D9;HFTO:1-S8UD0 M?_M;3(`Y`;!)ZUI6<`UJ7%F+65%E%GPD6%M4I%]*:*P!^P3&4I-2"72H55)R M1U2L;R-RZ%RZ6\-L55E#=KUQ=WQ"9'%=U50.4T=\(%-)?-U7=5>D?&A?-FK< K950`JGI3`7(`>&!Q`0H`:P7+`2\`5P-O!5\%<05B!7$!=P4M`H$!2VH*`&K< ` end From owner-mpi-ptop@CS.UTK.EDU Mon Jun 14 17:23:24 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA28673; Mon, 14 Jun 93 17:23:24 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA05687; Mon, 14 Jun 93 17:23:38 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 14 Jun 1993 17:23:37 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA05669; Mon, 14 Jun 93 17:23:34 -0400 Received: from b125.super.org by super (4.1/SMI-4.1) id AA21282; Mon, 14 Jun 93 17:23:49 EDT Received: by b125.super.org (4.1/SMI-4.1) id AA00380; Mon, 14 Jun 93 17:23:48 EDT Date: Mon, 14 Jun 93 17:23:48 EDT From: lederman@super.org (Steve Huss-Lederman) Message-Id: <9306142123.AA00380@b125.super.org> To: mpi-ptop@cs.utk.edu Subject: comments on latest draft It never ceases to amaze me that each time I read a chapter something new pops into my head :-). The draft looks good. Below are a few thoughts I had will reading it: 1) p. 6: The comments at the bottom of the page about what is stored for each topology seems implementation dependent. One may chose to store more or less. For example, you might not do own_position or store additional information. I think it might be better to phrase this as a likely choice and not a requirement. 2) p. 7: Should one be able to get the dim without the size, period and pos from MPI_INQCART (or another named function). I assume it will be an error if maxdim < dim. If you don't know any information about the cartesian structure then you don't know the value of dim when you call MPI_INQCART. But the only way to get dim is to call MPI_INQCART. If it generates an error what happens? Do you get dim? Will your code potentially crash due to an MPI error? Have not thought too much about this so sorry if it is a silly thought. See you all soon in sunny and WARM Dallas. Steve From owner-mpi-ptop@CS.UTK.EDU Wed Jun 16 04:56:18 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA14161; Wed, 16 Jun 93 04:56:18 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA21958; Wed, 16 Jun 93 04:56:27 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 16 Jun 1993 04:56:25 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA21950; Wed, 16 Jun 93 04:56:20 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA15897 (5.65c/IDA-1.4.4 for ); Wed, 16 Jun 1993 10:55:16 +0200 Received: by f1neuman.gmd.de id AA16290; Wed, 16 Jun 1993 10:56:01 GMT Date: Wed, 16 Jun 1993 10:56:01 GMT From: Rolf.Hempel@gmd.de Message-Id: <9306161056.AA16290@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: revised draft Cc: gmap10@f1neuman.gmd.de Dear All, after sending out my last version of our topology section draft, I got a few comments from Steve and Tom. I now revised the draft accordingly, which resulted in the following changes: 1. On page 6/7 it is now made clear that the listed topology info is just an example, and that it is up to the implementor to choose what is actually stored. 2. On page 7 I introduced another function (MPI_INQDIM) which returns the dimension of a cartesian map. Steve had observed that otherwise the dimensioning of the output vectors in MPI_INQCART could not be done safely in the calling program. 3. I have had a close look at the example on page 11. It's amazing that each time I look at it I find another bug. I made everything as up-to-date as I could. If you have any further comments, please let me know until tomorrow. On Friday morning (my time) I will then send the current draft to Steve Otto for inclusion in the global document. In Dallas we then will have a first reading of it. I will send you the PostScript with another mail. See you all in Dallas! Rolf ------------------------ LaTex Source below ---------------------------- % MPI Authors: % This is MY version of YOUR chapter. It has a wrapper so that you % should be able to simply LaTeX this. % % Please work from this text so that we are in synch. % % --Steve Otto \documentstyle[twoside,11pt]{report} \pagestyle{headings} %\markright{ {\em Draft Document of the MPI Standard,\/ \today} } \marginparwidth 0pt \oddsidemargin=.25in \evensidemargin .25in \marginparsep 0pt \topmargin=-.5in \textwidth=6.0in \textheight=9.0in \parindent=2em % ---------------------------------------------------------------------- % mpi-macs.tex --- man page macros, % discuss, missing, mpifunc macros % % ---------------------------------------------------------------------- % a couple of commands from Marc Snir, modified S. Otto \newlength{\discussSpace} \setlength{\discussSpace}{.7cm} \newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace} } \newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace} } \newlength{\codeSpace} \setlength{\codeSpace}{.3cm} \newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} } % ----------------------------------------------------------------------- % A few commands to help in writing MPI man pages % \def\twoc#1#2{ \begin{list} {\hbox to95pt{#1\hfil}} {\setlength{\leftmargin}{120pt} \setlength{\labelwidth}{95pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#2} \end{list} } \outer\long\def\onec#1{ \begin{list} {} {\setlength{\leftmargin}{25pt} \setlength{\labelwidth}{0pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#1} \end{list} } \def\manhead#1{\noindent{\bf{#1}}} \hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple} \begin{document} \setcounter{page}{1} \pagenumbering{roman} \title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface} \author{Scott Berryman, {\em Yale Univ} \\ James Cownie, {\em Meiko Ltd} \\ Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\ Al Geist, {\em ORNL} \\ Bill Gropp, {\em ANL} \\ Rolf Hempel, {\em GMD} \\ Bob Knighten, {\em Intel} \\ Rusty Lusk, {\em ANL} \\ Steve Otto, {\em Oregon Graduate Inst} \\ Tony Skjellum, {\em Missisippi State Univ} \\ Marc Snir, {\em IBM T. J. Watson} \\ David Walker, {\em ORNL} \\ Steve Zenith, {\em Kuck \& Associates} } \date{June 16, 1993 \\ This work was supported by ARPA and NSF under contract number \#\#\#, by the National Science Foundation Science and Technology Center Cooperative Agreement No. CCR-8809615. } \maketitle \hfuzz=5pt %\tableofcontents %\begin{abstract} %We don't have an abstract yet. %\end{abstract} \setcounter{page}{1} \pagenumbering{arabic} \chapter{Process Topologies} \label{sec:topol} %----------------------------------------------------------------------- % % file topol.tex % \section{Introduction} A process group in MPI is a collection of n processes. Each process in the group is assigned a rank between 0 and n-1. In the majority of parallel applications this linear ordering does not reflect the communication structure of the processes which is usually determined by the underlying problem geometry and the numerical algorithm used. Often the processes are arranged in topological patterns as simple as a two-- or three--dimensional grid. For the user who programs an application on such a process structure the most natural way of referring to individual processes is to specify their coordinates in the process grid. Usually a process does not have to know the PID numbers of {\em all} processes in the grid, because communication only takes place with processes in a certain neighborhood, and perhaps with a few distant processes. Non--scalable features like the explicit listing of all participating processes in the application could, therefore, be avoided, if there were a means to specify the information which is really required. Additionally, the user--defined process structure can be exploited by the system in the assignment of processes to hardware processors, if this helps to improve the communication performance on a given machine. How this mapping is done in detail is outside the scope of this standardization proposal, since it is too much dependent on the particular hardware. The description of a ``virtual process topology'', however, only depends on the application, and is, therefore, machine--independent. The functions which are proposed in this paper only deal with this side of the mapping problem. There are well--known techniques for mapping grid/torus structures to hardware to\-po\-logies such as hypercubes or grids. But even for more complicated graph structures good heuristics often yield near--optimal results \cite{suprenum}. On the other hand, if there is no way for the user to specify the logical process arrangement as a ``virtual topology'', this information is most difficult to recover later. A random mapping is most likely the consequence. On some machines this will lead to unnecessary contention in the interconnect network. Some details about predicted and measured performance improvements which result from good process--to--processor mapping on modern wormhole--routing architectures can be found in \cite{wormhole1,wormhole2}. % \section{Virtual Topologies} % In the most general case the connection structure of a set of processes can be represented by a graph. The nodes stand for the processes, and the edges connect processes which communicate with each other. MPI provides message--passing between any pair of processes in a group. There is no requirement for opening a channel explicitly. Therefore, a ``missing link'' in the user--defined process graph does not prevent the corresponding processes from exchanging messages. It only means that this connection is neglected in the virtual topology. As a consequence, an automatic mapping tool will not try to assign the processes to neighboring processors. The graph definition function MPI\_GRAPH presented in this paper does not include any weighting of the communication volume along the different edges. Processes are either neighbors or not. Experience with similar techniques in PARMACS \cite{parmacs1,parmacs2} show that this information is usually sufficient for a good mapping. Additionally, a more precise specification would be more difficult for the user to set up, and it would make the interface functions more complicated. In principle a function for the definition of such a graph structure would be sufficient for all applications. However, in many applications the graph structure is very regular, and the detailed set--up of the graph would be inconvenient for the user and resource--consuming during run time. A large fraction of all parallel applications use process topologies like rings, or two-- or higher--dimensional grids or tori. These structures are completely defined by the number of dimensions and the numbers of processes in each coordinate direction. Also, the mapping of grids and tori is generally an easier problem then that of general graphs. Thus, it is desirable to do the mapping as grids and tori rather than obscuring the information in a graph. Therefore, in addition to the general graph cartesian structures of arbitrary dimension are supported. The topology definition function MPI\_CART can be used to describe both grids and tori by specifying per coordinate direction whether the process structure is periodic or not. Similar functions are contained in EXPRESS \cite{express} and PARMACS. Note that an n--dimensional hypercube is an n--dimensional torus with 2 processes per coordinate direction. Thus, special support for hypercube structures is not necessary. Based on the positions in the virtual topology a process can look up the PID numbers of other processes by calling MPI\_INQPID. The processes are specified by their logical node numbers (graph) or rectangular process coordinates (grid/torus). Thus, it is possible to inquire for the PID numbers of only those (few) processes with which messages have to be exchanged. The inverse function MPI\_INQLOC translates a pid number into the corresponding cartesian coordinates. \discuss{In the PT2PT discussion it is not yet decided how processes are addressed. This could, for example, be done by unique identifiers, or by their ranks in a group. The topology handling will be adapted to whatever decision will be taken in PT2PT.} % \section{Embedding in MPI} % The support for virtual topologies has to be fully integrated in the framework of MPI. In particular, the virtual topology functions do not interfere with the functions for process group creation and with those for collective communication. The current design of the process topology functions is based on the following assumptions: \begin{itemize} \item MPI is free to choose any process in a group for any location in the topology. There are no special processes which have to be aligned with topology substructures. This assumption fits best to a ``local SPMD model'' in which all processes in the same group execute the same program. \item One important feature of MPI are the process groups. The treatment of virtual topologies has to take this concept into account. The functions presented in this paper are not only compatible with the process groups, they even take advantage of them for the definition of mapping overlays and dynamic remapping during execution time. Virtual process topologies help in the subdivision of process groups which in many applications has to be done along process coordinate lines. Furthermore, the definition of collective gather--type communication calls benefits from the natural ordering of processes in a logical topology. \end{itemize} The virtual topology handling follows the general MPI rule of functional layering. At the bottom it is based on the general process group creation function MPI\_CREATE\_GROUP plus a few topology specific mapping functions. In principle this is sufficient for defining topologies and use them in applications. A number of higher--level functions provide an interface which is similar to what users of packages like Express and PARMACS are familiar with. This level can be written in a portable way in terms of the low--level functions. Implementations of the high--level functions which bypass the low level may be advantageous on some systems in terms of memory and cpu time usage, but this is not a requirement. % \section{Overview of the proposed MPI functions} % This chapter assumes the availability of the following MPI features which are defined in other chapters: \begin{enumerate} \item An existing process group (e.g., the ALL group) can be partitioned and/or renumbered using \mpifunc{MPI\_CREATE\_GROUP(gid\_old, gid\_new, group\_key, order\_key)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_new] group id of newly created subgroup of which the calling process is a member, \item[IN group\_key] integer value used for the partitioning, \item[IN order\_key] integer value used for determining the ranks in the new group (see below), \end{description} This function is called by all processes in group {\em gid\_old} loosely synchronously. It creates as many different subgroups as there are different values of {\em group\_key}. The ranking in the newly created groups is determined by the {\em order\_key} values, with the process ranks in the parent group for tie breaking. \item If there is a standardized internal information cacheing facility, it can be used by MPI routines to store and retrieve information related to a process group. This facility was proposed in the Context Subcommittee. High--level topology functions store structure information for a process group, which is then later used by topology inquiry functions. In case the cacheing mechanism does not become part of MPI, the topology information can internally be stored with other group information in an implementation--dependent way, which each vendor can do as is most convenient. \end{enumerate} There has been a general decision in MPI to start all numbering with 0 instead of 1. Thus, coordinates in a cartesian structure are 0,1, ..., dim-1. In the same way, nodes in a general graph are numbered zero up. % \subsection{Low--level topology functions} % On the lowest level groups are created by the general function MPI\_CREATE\_GROUP. Using the input argument {\em newrank} the caller can change the process ranks in the new group as compared to the parent group. This feature can be used to efficiently map the processes in the group to the positions in the topology. For each class of topologies, therefore, there is a function which computes the rank of the calling process in the new group, based on the size and structure of the topology. Note that it is a valid implementation if the new ranks are identical to the old ranks. So, if for a given machine the placement of processes makes no difference, the implementation of the rank computation functions is trivial. For cartesian structures the function is \mpifunc{MPI\_MAP\_CART(gid\_old, ndims, dims, period, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN ndims] number of dimensions of cartesian structure, \item[IN dims(*)] number of processes in each coordinate direction, \item[IN period(*)] periodicity specification in each coordinate direction. \item[OUT newrank] reordered rank of the calling process. \\[4.0ex] \end{description} The corresponding function for general graph structures is \mpifunc{MPI\_MAP\_GRAPH(gid\_old, nodes, index, nglist, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN nodes] number of graph nodes, \item[IN index(*), nglist(*)] definition of graph structure: For each graph node its set of neighbors is entered, i.~e., the set of processes with which the node process is going to communicate most frequently. Since there is no weighting of node connections, it might be sensible to specify only those neighbors with which there is a considerable amount of communication. For each node $i\;\:(0 \leq i \leq nodes-1)$ the list of the neighbor nodes is stored at $nglist(j),\;\: index(i) \leq j \leq index(i+1)-1$. For the last process $index(i+1)$ points to the first free position in vector nglist. Note that the matrix is symmetric, i.~e., if node {\em i} is a neighbor of node {\em j}, than node {\em j} is also a neighbor of node {\em i}. This property can be used for an internal checking of the input arguments. \item[OUT newrank] reordered rank of the calling process. \\[2.0ex] \end{description} The definitions of the arguments {\tt nodes}, {\tt index}, and {\tt nglist} are illustrated with the following simple example: Assume there are four processes 0, 1, 2, 3 with the following adjacency matrix: \\ \begin{tabular}{ll} process & neighbors \\ 0 & 1, 3 \\ 1 & 0 \\ 2 & 3 \\ 3 & 0, 2 \end{tabular} Then, the input arguments are: \\ \begin{tabular}{ll} nodes = & 4 \\ index = & 0, 2, 3, 4, 6 \\ nglist = & 1, 3, 0, 3, 0, 2 \end{tabular} If the topology contains fewer processes than there are processes in the parent group, the newrank values for the remaining processes are set to MPI\_NORANK. It is an error if the topology defines more processes than are contained in the parent group. % \subsection{High--level topology functions} % In principle, all that is needed to create an MPI process group with topological ordering are the two mapping functions and the general group creation routine. However, this is not what the applications programmer expects to see on his level of abstraction. Therefore, another layer of functions is defined on top of the low--level functions. This higher level can be portably implemented in terms of the level below. Of course MPI implementors are free to bypass the lower level for the sake of better performance or resource usage. For cartesian and graph structures the functions MPI\_CART and MPI\_GRAPH create a process group with topological structure. They combine the call to the mapping function with the call to the group creation routine. The user can decide whether the ranking in the new group may be reordered (for a more efficient mapping) or not. In the latter case the rank of the calling process is copied from the parent group. The option of not reordering the process ranks can be useful in the case of an overlay of different topologies. The user can then fully control which location in the first topology coincides with which location in the second one. The price which one obviously has to pay in this case is that for only one topology the process arrangement can be optimized. As specified for the low--level functions it is an error if one attempts to define a topology with more locations than there are processes in the parent process group. If it does not use all available processes, the unused process will return MPI\_NORANK as their rank in the new group. MPI\_CART is defined as \mpifunc{MPI\_CART(gid\_old, gid\_cart, ndims, dims, period, reorder, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_cart] group id of cartesian group (if calling process is part of it, else id of rest group), \item[IN ndims, dims(*), period(*)] definition of cartesian structure, (for details see the definition of MPI\_MAP\_CART) \item[IN reorder] ranking may be reordered or not, \item[OUT newrank] rank of the calling process in the cartesian group (or MPI\_NORANK). \end{description} Apart from some local computations, MPI\_CART is based on the two function calls \mpifunc{MPI\_MAP\_CART (gid\_old, ndims, dims, period, newrank)} and \mpifunc{MPI\_CREATE\_GROUP (gid\_old, gid\_cart, 0, newrank)}. % \vspace*{3.0ex} For graph structures the corresponding routine is \mpifunc{MPI\_GRAPH(gid\_old, gid\_graph, nodes, index, nglist, reorder, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_graph] group id of graph group (if calling process is part of it, else id of rest group), \item[IN nodes, index(*), nglist(*)] definition of graph structure, (for details see the definition of MPI\_MAP\_GRAPH) \item[IN reorder] ranking may be reordered or not. \item[OUT newrank] rank of the calling process in the graph topology group (or MPI\_NORANK). \end{description} % \vspace*{3.0ex} The following topology information is likely to be stored with the process group by a high--level topology definition function: \begin{enumerate} \item Type of topology (cartesian/graph) \item For a cartesian topology: \begin{itemize} \item ndims (number of dimensions), \item dims(*) (numbers of processes per coordinate direction), \item period(*) (periodicity information), \item own\_position(*) (own position in grid, could also be computed from rank and dims(*)) \end{itemize} \end{enumerate} For a graph structure no information has to be stored, because the graph node number is the rank in the graph group, and the size of the graph is the number of processes in that group. The actual set of topology data stored with a process group is implementation dependent. It can contain more information than given above, whereas in other cases some items might be redundant. \subsection{Topology inquiry functions} If a topology has been defined with one of the above high--level functions, the topology information can be looked up using inquiry functions. They all are local calls, and do not require any communication. The function MPI\_INQMAP returns the type of mapping which is assigned to a group. \mpifunc{MPI\_INQMAP(gid, map).} The output value {\tt map} is one of the following: \begin{itemize} \item MPI\_CARTTOP: cartesian topology, \item MPI\_GRAPHTOP: graph topology, \item MPI\_NOTOP: no topology. \end{itemize} For a process group with cartesian ordering which has been created by MPI\_CART, functions MPI\_INQDIM and MPI\_INQCART look up topology information: \mpifunc{MPI\_INQDIM(gid, dim)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[OUT dim] dimension of the cartesian structure. \end{description} \mpifunc{MPI\_INQCART(gid, maxdim, size, period, pos)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN maxdim] length of vectors size(*), period(*), and pos(*) in the calling program, \item[OUT size(*)] number of processes for each coordinate direction, \item[OUT period(*)] periodicity yes/no for each coordinate direction, \item[OUT pos(*)] position of calling process in cartesian structure. \end{description} The inquiry for cartesian topology information is thus split up into two calls. The reason is that otherwise the user might not know a save value for the dimensioning of vectors {\tt size, period} and {\tt pos} before calling MPI\_INQCART (input argument {\tt maxdim}). For a process group with cartesian structure, the function MPI\_INQPID translates the logical process coordinates to process ids as they are used by the point--to--point routines: \mpifunc{MPI\_INQPID(gid, location, pid)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN location] coordinate vector of process, \item[OUT pid] process id. \end{description} In a sense, the inverse operation to MPI\_INQPID is provided by the function: \mpifunc{MPI\_INQLOC(gid, rank, location, maxdim)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN rank] rank of a process within group {\tt gid}, \item[OUT location(*)] coordinate vector of process, \item[IN maxdim] length of vector {\tt location} in the calling program (only for error checking). \end{description} MPI\_INQLOC translates a rank in the group into a topology location. \discuss{Depending on the decisions taken in the PT2PT subcommittee, MPI\_INQPID might be changed to return the rank in the group rather than a pid.} \subsection{Partitioning of cartesian structures} If a group has been created with MPI\_CART, the function MPI\_PARTC can be used to partition the group into subgroups which form hyperplanes of the original process structure. As an example, assume that MPI\_CART has defined a two--dimensional grid structure on a process group. With a call to MPI\_PARTC this group can then be split up into disjoint subgroups which represent rows or columns of the original group. The function syntax is: \mpifunc{MPI\_PARTC(gid, lostdim, gid\_new)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN lostdim] direction perpendicular to resulting hyperplanes. \item[OUT gid\_new] group identifier of the hyperplane group in which the calling process is contained. \end{description} MPI\_PARTC uses the function MPI\_CREATE\_GROUP to partition the parent group, using the process coordinate in direction {\tt lostdim} as the key value. After a group has been partitioned by MPI\_PARTC, the inquiry functions MPI\_INQCART and MPI\_INQPID consistently refer to the grid sections if applied to a subgroup. If the process topology is a cartesian structure, a collective shift operation most likely is used along a coordinate direction. In MPI a shift operation is handled by the more general send--receive functions. Those take as input the identifier of a source process for the receive, and the identifier of a destination process for the send. If the function MPI\_SHIFT is called for a cartesian process group, it provides the calling process with the above identifiers, which then can be passed to the send--receive function. The user specifies the coordinate direction for the shift and the step length: \mpifunc{MPI\_SHIFT(gid, direction, steps, pid\_source, pid\_dest)} with \begin{description} \item[IN gid] group id of group with cartesian structure, \item[IN direction] coordinate direction of shift, \item[IN steps] step length ($> 0$: upwards shift, $< 0$: downwards shift), \item[OUT pid\_source] process identifier of source process, \item[OUT pid\_dest] process identifier of destination process. \end{description} Depending of the periodicity of the cartesian group in the specified coordinate direction, MPI\_SHIFT provides the identifiers for a circular or an end--off shift. In the case of an end--off shift, at the boundary process one of the identifiers is set to MPI\_NORANK, indicating that there is no process in that direction to communicate with. In a portable program the number of available processors usually is not known at compile time. In the case of a cartesian topology the function MPI\_MAKDIM helps in setting the numbers of processes per coodinate direction, depending on the number of processes in the group and optional constraints which can be specified by the user: \mpifunc{MPI\_MAKDIM(gid, ndims, dims)} with \begin{description} \item[IN gid] group id of group which is to be structured, \item[IN ndims] number of cartesian dimensions, \item[IN/OUT dims] number of processes in each coordinate direction. \end{description} The processes of the group with ID number {\tt gid} are divided as evenly as possible among {\tt ndims} dimensions, subject to the constraint that all processes in the group are used. The caller may further constrain the operation of this routine by specifying elements of array {\tt dims}. If {\tt dims(i)} is set to a positive number, the routine will fix the number of processes in coordinate direction {\tt i} to {\tt dims(i)}. Processes will then be distributed among directions where {\tt dims(i)} is set to 0, subject to the above constraints. Note that an error will occur if {\tt dims(i)} is positive and does not evenly divide the number of processes in the group. Negative input values of {\tt dims(i)} will also cause an error. All elements of {\tt dims(*)} must be set to 0 for completely automatic process distribution. When the function returns, {\tt dims(i)} will be set to the number of processes in coordinate direction {\tt i}. For {\tt dims(i)} not set by the user, {\tt dims(i)} will be ordered (MAXIMUM, ..., MINIMUM). Array {\tt dims(*)} is suitable for use as input to routine MPI\_CART. % \section{A simple example} % The example in figure \ref{poisson} shows how the grid definition and inquiry functions can be used in an application program. A partial differential equation, for example the Poisson equation, is to be solved on a rectangular domain. First the processes organize themselves in a two--dimensional structure. Each process then inquires for the PID numbers of its neighbors in the four directions. The numerical problem is solved by an iterative method, the details of which are hidden in the subroutine {\tt relax}. In each relaxation step each process computes new values for the solution grid function at all points owned by the process. Then the values at interprocess boundaries have to be exchanged with neighboring processes. For example, the exchange subroutine might contain a call like MPI\_SENDC(...,neigh\_pid(1),...) to send updated values to the left--hand neighbor (i-1,j). Note that there is only local communication in this exchange operation. \begin{figure} \begin{tabbing} =====\===\======\kill % \>integer ndims, num\_neigh \\ \>logical reorder \\ \>parameter (ndims=2, num\_neigh=4, reorder=.true.) \\ \>integer gid, gid\_cart, dims(ndims), neigh\_def(2), neigh\_pid(num\_neigh) \\ \>integer own\_position(ndims), period(ndims), i, j, rank \\ \>real$\ast$8 u(0:101,0:101), f(0:101,0:101) \\ \>data dims / ndims $\ast$ 0 / \\ C \hspace{5mm} Create a grid structure in ALL group and inquire about own position \\ \>gid = MPI\_ALL \\ C \hspace{5mm} Set process grid size and periodicity \\ \>MPI\_MAKDIM(gid, ndims, dims) \\ \>period(1) = MPI\_PER \\ \>period(2) = MPI\_PER \\ \>MPI\_CART (gid, gid\_cart, ndims, dims, period, reorder, rank) \\ \>MPI\_INQCART (gid\_cart, ndims, dims, period, own\_position) \\ C \hspace{5mm} Look up the PID numbers for the neighbors. Own process coordinates are (i,j). \\ C \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1) \\ \>i = own\_position(1) \\ \>j = own\_position(2) \\ \>neigh\_def(1) = i--1 \\ \>neigh\_def(2) = j \\ \>MPI\_INQPID (gid, neigh\_def, neigh\_pid(1)) \\ \>neigh\_def(1) = i+1 \\ \>neigh\_def(2) = j \\ \>MPI\_INQPID (gid, neigh\_def, neigh\_pid(2)) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j--1 \\ \>MPI\_INQPID (gid, neigh\_def, neigh\_pid(3)) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j+1 \\ \>MPI\_INQPID (gid, neigh\_def, neigh\_pid(4)) \\ C \hspace{5mm} Initialize the grid functions and start the iteration \\ \>call init (u, f) \\ \>do 10 it=1,100 \\ \>\>call relax (u, f) \\ C \hspace{5mm} Exchange data with neighbor processes \\ \>\>call exchange (u, neigh\_pid, num\_neigh) \\ 10 \>continue \\ \>call output (u) \\ \>end \\ \end{tabbing} \caption{Set--up of process structure for two--dimensional parallel Poisson solver.} \label{poisson} \end{figure} \end{document} From owner-mpi-ptop@CS.UTK.EDU Wed Jun 16 05:01:10 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA14181; Wed, 16 Jun 93 05:01:10 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA22228; Wed, 16 Jun 93 05:01:25 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 16 Jun 1993 05:01:24 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA22220; Wed, 16 Jun 93 05:01:15 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA16200 (5.65c/IDA-1.4.4 for ); Wed, 16 Jun 1993 10:59:47 +0200 Received: by f1neuman.gmd.de id AA16836; Wed, 16 Jun 1993 11:00:30 GMT Date: Wed, 16 Jun 1993 11:00:30 GMT From: Rolf.Hempel@gmd.de Message-Id: <9306161100.AA16836@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: PostScript of new draft Cc: gmap10@f1neuman.gmd.de Dear All, This is the uuencoded, compressed PostScript file of the new draft. Best Regards, Rolf ----------------------------- PostScript below ------------------------- begin 664 PTOP.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R`$# MQ)`WBP*9,1"I4G4+[`L/$EQPP7&],XA1+F3)DY&6/DC.%4R)LZ;GJZ.>,6 M3\:2)6ODL`$"!PT93HO$/=FF31DW=.8\)&(ER4#";<+$99+8-'#V"L(I5 M*U>O8#FV+7.F,A0Y;\9,*4,G(YTR>%S`0?TPA((75,I@(>+SI8P:)7N.>4FF MC!D0N7?W!I&PM!L0+YSL*6ZF#W7H0O:(J4Q&H_$^3J!/V0-[#!KPT+'LF0+" M21\%0J!3D;*'CAS)<]A4+(/^19K\'YD!U!Q%A?>"'7.DH4=1,<0`P@TYM5%' M4`8"L9)S>_S'QAQ[;%%2"PXZB!<(,'2AP!AON/$3'7VD<1R$.IWU!AMUT)%& MBAJE8<>#.5DAA8PTVHAC3SM:=@8(<_PT%0@:.-S:"2XH`(MP$@D M"!(&5=)\+1[W9)1"/N M"`LW5]FX*=)!11ZN@C##PR\847&Y@>II!F)R#.INQ?"^,>B[\85'[$IS02=& M&`2"@`4(3-V7!W91E:O9S2\(40?"9`R!!E-[*&`T4T(3788<_0F&HEQ'\OOP M8=V142BL9KSQ!I*L=8U8'SGE',;.V*)MA\D@L/$&3^G>JP"UT`'L[Q;BOD`P MK',RYP%^]+N?#[SUPTN:$_N+PB3##:-Z'ZYT1P8\T&]Z84#? M]23E(/ZQ!GXM2$-DS')`^Q5J5A@KPVU>5IGA91!BK[);_Y9G'Q#8+4YDZ(Y[ M7)2WV@GL!7*XPPOE,(87GL%0^;K-&'#(L2.\L'(<6YH"V96L_[EA#NP29X"V!.TGK7J(_UCSP@)>+Z;C&XS#/>2VA0P"1!\(JUSL0M+#FJ!"QS41T,>CY!QW"3.4M@%^DFP+/PYI5DB,XHZWW0,GOH0IA*)S.:%:5_MC1A">FVL"[2 MP6=@U!1[[,:>Q[$%F,"[7_H8Z#[D`>^*<1`![>^QT4?'5.0I@2Y%^@U3<^Y60Q@0-@<[>@%C$G"!/MJM=_PQ6P["T]) M'/2;&NR!7UN$"9)Z>23@E61C6!P4W<9@A^>?/I9HV%K.5([#DOF,T;M.:P M.S1O(J)#R=Q00U_B7!!_Q+M!IO90$@$OJC*OD8,=@'(H%/!F#G#03QY24(8X M?`H/YDE7H@Z,F*Y11.D,LVLC.58\L?% M-<:53KD\T6C=QPU]NT@;-O663H&*4]T!553^'&@Y#'JC'?W:D=,E!S:HSJ,E M,;.1RFQIRWATTIG+=*=9\S4S("PH5X:E4_,6ACU`FM2*"RKUK.NYZ13J-L5A M`_5NENE76R1O35C/I+RCZP0.TG/W%+:AD#W`/;0@44U0G+,W%FWX0.=5"P%! MM'$5OG5M&SIG(+"V\X8[!WW;/WO(R;G5L`=JYVT->X!VWNY`X#+[^@UY2YBA MG@V".^2M#:)3U\;\C2N$[CLG!(?.&P*^KH2_(`X!=Y##CV@HA+\3.APRU,#S MAE-$]3MO!BP)>QS-45CC*@_M!D%.G!@40X7AGF_@T$.KR6/W""&K,5_/R%4M MR_A@+3!Q.4UJ5J/'Y/#&8>_56`YB4`,:G!#*!^$[X,MK`SP'IA@7!6 MNHXK@3)PB%HV1C`>$/8&A(6!$0@;@R(0=@9#.#O4UT MGSWM?H=!X.T.`\(;WG*%3_OA"4OXP#L>\&G?N][GCO>ZIWWM;K_ M'09#D`$-%'"#FQ@A!CCP`0U*0@0>/)>PG6>MYBT/>\#/7?*5OWO>$\]XQ?O^ M\X)/.^DA#_S'`W_QO.=][G,O>=E[ONVS%_S<._]ZRX6>!C<80@Y.G_HDF#WW M;-^][M,^?L(.`>^H5SO>96^$'`S!"%"_@1'FS_;Y[U[^Y,=_1N]N_[//'_/M M]WY0=WI#('OG=WZ4)W[@5W[AEW8-$@/81P0Y<`.HYP/>AW=UN8-X/TQWGO@GD;R'EW1P,02'H2 M.`,5.('U]'U&T'A!*(4TF('2-WEZQX/!1WZ$UWML2'X[Z!!M&(>!]WF5MW=W MZ'9P)X0T"(2=QWF;)P,0>`-;V(4YH`"M5W]SIW=]R'^+B(:1]XB2QW?D)WD9 M*'GS)P101X90!W>'XT M2(8*`(!3V(E%\(%WQX(%6`0Y(`05Z'W\EW\V6']A^'9N]X3Q!XM[5XJHV(!N MEU&5]W_':(UQAXUT"(=^=X>;&'=FN(><6(,.>(QW)X@1Z!4*,(S?-X)4^'\# M"(]MUW995WFN2(G0N(;/B(_26'?0)W;])X2WEP,R^(@+*(5V1X;@^']N)WM6 M^'@%&9&1J``%Z7PAJ(=KIY"P-W^49XY,QWGRYQ45.%@;DXB3*'CBEWWYMWL9 M=9)P^)(PR8WFJ'8S*7\*>)/D=Y`X25C4N),-Z(`^R8!"J9.7]W\;R9$T.88- M0@39IP#N-Y(P@"FM)W^$-W]B.(=8"8=9^89<^7M>N7];Z95N*)9Q&)9C>99E MJ97"-Y;RUW_6V)#_%W8,@:(4T*02Y"(2"B7DQ M`8&M)9+=QP,;:(9J5P1(^9=QEU$VF'LT:'>89W>XZ8:YR7N[V9NZ^9N\"9S3 M&)PV^8'O%X9469RS28$T0'5^=WC@ MZ7NDV9`-*'M[N(?F:9U\*)WEB'AS.8C`^)P6J)J[:)NN28.P"7OG9YO1V(1N MF(1HV(JLN'^K&*"42(5,Z'>UJ9__&)>,!YCU299F67@_B)9F:9/LZ7^[]Y%% MX)SL*'\XL($TN7TA.(5E"'^LU9)KIX.L&7TN"HF4&(F5*(DT.J,V*J,\V9:V M29TZRG8LB'WM)Y\-\H)F)W^ER*,\.H#_N:2\YW>DEY+)B(R[]X%MZ)FO)WL" MBH;,J'9*FI2X:(X<*'P/F([R28SIAZ,QFJ8PFI_:J(TP^J9[]X,G.:7QZF:ZJN6XWP)>G=+Z*MHYWQH9XVG:HU>FI%8 M"*2HZ0-J`1A$(!3C@CP0Z#\.4G;+B@,V:(,WL'KD"@.K!W6M=7:^J(#FZDP*:P* M^Y(,NZL.^X@\&8?ZNJ\P";"TQXT2.WXQ$`0=FWT3*`,S,)_\*GT5FK'YM['_ MJ+$ON8#$!X[`(JW?YZGD$^Y(V&[-U^),I.[$H6['&^J\;6[(= M^[':!R$C:P,YD8BV%WF5&GC[][-6JY9=::'XNK6PQWPXX'Y_YWQZ^(TMV8G@ M>)VON(9&2(I,:)MN>)MM.U@9&7ITAW=AAW9P=[<.40-#L'I9AP-]6WL.60-W M"XS<1ZV%!;4J:;?!-UANUR!R*8Y[]S\H>`.@B9(#>XL0J[/&%P-^)[*$A84X M\(QR>84;*)(U,)]UIX."-Y=SMXSE28F8NK9KZ+:\![>>][B/*Y>[6[25!WV_ M.[9%*WD-^;HP<'-S9P.>NZ]7FW]8^WLZB(2ME7'L^7'PO.WA>N7B&6;^-&:,]'*/SZWA75P1A5WA/[,2,]\0VD*>3 M&`2%ZY1K5P2(BY;I<*`34.E@'C+GAQ[KU:+S!R[&\ MB[-%ZY!@#'V6['E[^(39^';<285=6H3%JHIW1WEM#'@;RH78%Y\Q8`.JB[FH M=[_J^EQ9]UP`9,;N&K5`V(G'&(/U!WA%B'DV(,QVYX*$Y71I"(CJ"I^HF\@& M#+6[EY!'7'Y>>Z!(V7Q!_++(MWBY5\34?'Z3=[_(/'7BO'JH-WUI1P3KUW[" M2,`Z?)F@Y[1A1Y+8IZY3MW;BK+GB_%RKU[P?[*@@+*'KNA65MWH$:*[J%W>H M*`.QB:`/9 M-Q.#I7K="[5GJJ^?>)33!YB.6([`>M,VG=.*:-,_&-,[_=,U#=0^'=1$/=1& MW8A'33XZ7=1([9<,Z8?).)=WJWT$J'H>;9(S29V>>(Q%.(TJB7_)R(MAS:@8 M":Z/BZ)R"7][]X&+R-926XF:*J*HG*E0MW^>.<-V^K./^XVEC(;IUXW]*8M& M288KZJRUZA#,^JR]>+<26-7$V)J`%Y`7.;R%S8B,V%IJ#7^?R-:?:(43K-F5 M_=:!NI(Z[HL::)]!&(:S?9^P9]NL+:*`Z)":#9=' MN7E1ZKF%NWUX]\I@Z:^CG=QGUX91RG^$9]IZ)]>")]VQ'7YRC7IR/<&"MX1R MW9!VIYU[O=W829[BC83+^);,VGAM*-WB/;'L_=[KS9=1RI#"O=W$/03S:8VC MRY#Z#86^77\%BW\`[G_ER)D%3N`##H0'KN`)+N#\9^#UQYT,_N`(3N$3KLP7 M;HZU&I`;KN%_Z.%B"N(-_N$0;N$.CN$G+N(F3N($;MR]`^`".M]Y9%:97&^*\VZ^"1C>1,?JD3ON0RV>1''N54 M/N56#N6(]^05CN58_M=_6*H.".9L)^;8V7G/N'956^'!#+$"[ID"#M;,VJR) MW:D\OH$_+@-!WM(\$.='^=0,_N:DR=6=)^B`]]_B[>!$&'LEBGB)ON2(ONC+ M/>$BZN"$3N&`7H-&#M6QI[E5SN5;_NE:'NI*#NJCGE&C+NH'J]]%WHAA5^<^ MKA:N#'5Y&>?X2>OQ5YB7;:GFB9_.6(90]WING7XY6(MQ-^Q\G7=N#7K*GNO* M+N')'G?(WH?BE^PP6ZE2N[',7NW8GNPG2^UPO>W6_G;AGNW?OK#CSM8G*^[@ MON[FSNX.:^VRVH@S>(N`R>.N_N,WX`-^\85`"-S7'((+69V6#7V\:(7`J]H( M+WPS*.Y$D)&S6=D/>=:L78R]?*II/?$1OZZ3+8!2&**3_8&HMXXV<+HLB,A> M"+6`V:-<6O"5'8X?#_"5W-HRGZDTJY\T?_-S7>CYUZLY&)VO=XQ(2-/!C84C M#XPL>(@^8%,H+X9]B-:^JX<2KY)T)_6,2KW@:O7,"J[Z/9.(/?,Y?W8IR?-C M[IDZR-7BGM6DR8)%GP,L:-&"O,C4'I#TF(._"/9RC:+\Z:N5NO>/R/=TC7@. MFI2[Y_>_^O>%?_B;:OB)C_B6^H.$O_B0;ZF,WXAMV7>`*=4S(']8W""J:YS0 MUX'S)W]6R*AF6(+GJ9W@V)"IC[FEO_HJ&8[@Z/H77XO4.9>WB.PP"[.2"(]\ M^*6@'9>86("!^H>NN:_$C^9UYWQP)_4F[?#Q&-QCZ'2>:_3%[7U!F*DV>]?M MN9;1F9/9__TM"_X0+/[>'_Z"1Y'EV/'UQ\+`[;?`K8L[S9ID/YUX/?^_+/#\ M1Z#TC__V'YWR_X3[[__5/P!X_P0@_J-W[N@:A2$I))>P6.;S<8+(",PGYO.. M$)R`XT5"Z8'!H72WD3I@=/),(##0W;\0.`)%X`C_N&#_XSSZ;PN*P2XX!JT2`Z1) M";`!MC*2QWD2F4-8>I'-'*DUW55[6)/30TG,KP#=H/=S@UQ3']1P?G"YF2/2 M$PBW&R#,@WG0#F*VZ#0':]#@2T@4:.WYHOQVJ@@/O9M!'0GFU30#&`1C6@C< M1(/NXMF\NU;Q+@]W(H6B$..%PNY7"FO:)]R$@6[U.;>)!P5!7T>BA=UO^Y6_ M\6?^>*$OW(78#_UAOSG4L88;"Y*`CRVLQ<%3QMK6S_T;9N(N&K8W#+B!5"`C M\TP>"0`!-YO'"+8"]]A/-Q(<\C(Q0`7:-]8$!>S?N[HMF&OMJ,`BIZQJGMM)T3I+H7HB'88 M/-1^$#'AQ<.(2,(DHCW4?M0I*3D@+B0)/9?JFC\L*DE9J<\C#*/7VV%"90]* M,;W;D^DTXFG[>S<(!;$BV96*$-3$PTT!J0#]H0;1$5V9F3)(0#$GU2G9IG`#T6-U1&0X`\_:>3.,BZ_ZT*",HACS3N/)._>'C@F\EV:&7IIG*W^L M:U-5'\VX`;-/OO*,,BE?>3MR5P]+(\428<)HY+4?`]9V*"$'*E%:[S7N,C&=**L.PJYD:P)]Y8%P").T1`#^F\X'B]W$[#,V/*"/6LG>HCF,#5LH." MX`IPE2,A('C`UN6ACH1H[NR?L+:]=IYE\XX8<*ZY0W$TAX@7!*N-:>\J,7&HS!DC4]AF'P&?D M>J1Q-'JFBHB^&N1+*E\YZZ5)'PGIVOK>$`"0-NBY5"@;8!TCF\2BA_OP;JW& MUJ@6',202V_/*JI1QZ?SQT80?AL[B`A;=8Q'H7*ZE1F8@6V*637`=9727.#( M8CW?QY2-N2'9UQ`0R`-7,^`0@:T@Y*OTWHJZ">]'.1K)OD8ESY25W$2F2P)A MH7PWP4P2]7)XF4U<624=1>O*I)G443IJ!M$B&L0D2Y=:T$(B*=\Q'7X'AW)6 MS.I9.0M/_JN6E;-(SX?D5Q@K@A&MTXBQBI;1:EESJ&JIK/+ULVZ6SMI9/&MA M04B8Q`$UH*74@!ON^3FH8HA]M$_H&5D[CO7(2".P1#!%M>(<]RH\TJ3;`\_P MU@VB9'7,>(4PK'2RF)N#6'UUIQW:EK^R5=JPG]1Y@:1^)Y2X#4E!/UF%A#H&?$1;@P)2VU^K!;RXH+W$I:>EW M@,-J\9:@AZ7QN\5%?T3:3,!9SZ7M9"37%(]"$9M44)MK?)4?9-5W?D\UQ!MWF"CQF#IU9#KTW MLP86;;)8.JM!@4SBYS%MEZ$DF6JGIYG,C_F3S!SUPE&Q1V/JK/$T,?M8LJ'6?'_I+`<1*^(8W181V:%J2K[S9-N'..M*;YH<>]2O0(SC;9N%,FVK'EB%. M(Z`XR5?B')RH#W*:.NV$.+\:Y1%>%JE"5CZ:="$]'@T21#LS&,D`5X;2[-5L M4X#QR#:N+',T^"!CV#0_Y`OS[!ZW.3L-$/E*4<_Q0D([\@5]9F?O=)QK9W;2 M'>')6HBG@72<<$=XMIW928V*@/#$A=3K>4J]92>LD-UA:IF][$NZSKOCL>K2 MS6F#UH_W$3G/`X`.U.RAF>C3\J3/HK4^_:8FZU)?:D6IKS:AC$BLT9L)4 M&^RR6!;T47Z^++=!,:B_RJ!UJ/),4,K9,5?16J-%MW$7*56;"'`]JL1_E%R2@8-:-H M=(S:K`8*U_P4%-H\`91JML9]EXB:VQ.$.TUR/PU)LT00(]MTBE)F2'K=KK?% M>)[+;3*DQDIQ9B!:MBE1U";B0O^C_30(`Y;T!,R0\WI`:R@%I1*623GIPK0[ MZZCA!3J]";SDTB0SED^T]GS,5?HR6>FPG&3KJ'<]I/X5_:3>1&-*`<@CZC!< MU%IV4>=.ZQ);43=J?64@JS M4]<4B>VBF::)V"?:BJ#[2$N9S[+U/LOIEMI2^>B!8J=-Y(ZX*17:1="J4X6D M9CF?6M*.TCU39^JLGUYZA&X<;1NF0>R80M'?>Z$)Z M*GT:$_\1#I([+K67\AWFHSO/7N21;O[L)%XJ-8F,GA#O2UO23/E`U/$35//1 M)D-&8HCRX#'YXY0$4>JR?IA4DW*M3KI)JRJ^:DIL1Y3^LFXDO`@>7\-#9VO\ M@%6_%E:]D5C]JE\54)E5LSI_2-2(BD)8")<^I7SG?9K/'N2-`LM2ICLY.,T2 MDQ'[J]\,L/K5\K,U%R,,6#IR%=KEMZCJ21NK535AD-6NZ413BJ$PD#2SDA<2 M*#''XYE5GYL=U4!`R?E@H`3D/B?3$0NJN&C[G#?5>G>X4&)M98C+DNZYZ"E8 M^RK-&JRXU;;6UMT:6'MK;MV.;+(/(=9YFBZAZJ2K2J*41'6DT:6)<`\='$R^ MZXBQ!5/:@'Z7=*6NDBRP6M?JBEVWJU_=KKI'6'[7[DI=:9.ITGKU$E5]3FCZ M3$7/8J5Z6K48W;+AQ4[)JGT=J_@5K9[5_;I6RZI_U3N`JJW2'P$;3R/ITM&E M9D=5RCW"Q(_.$.V21>E+'D",=7N55EM*QN:5*6ZF+;;$PMI06K5A*R6;IW8FOZV>:4=6I*E6+DM9$ M:E@H"##5`TM7$^P(FFDRP5C%-/0408W0=3JGYE.<2ED("V`UK(--H);,IV6B MOK--J6DVK:9H"@Q^N'@J9"4I;+5^Q'&P!3!^VDOKD6[UK6^VFPU6MV2.U%F( M76D7J/TP(ELE@M*0'IU_YZ7U?M M?\VO_/75UC56ZWRRD3M51@4/"]W9(CM@SQMD$Z%?U?=4'[?3O80MY+D_SY$" M3:DD^W:8;;:+B,\KH+TGP`!IRR)(#%?GS3A%M4[FD#J9#D(_*TKQ[$,>.H(T MT;#=A^^2\7`A4=1XZ-+]<;>`!XM.*?4TP^0=O1T_(=2)QBZV\SWO[#]43:9J ME\VV?H5VJL^AE50;JCMZ4:LE%:F1IPI5D2?YV+)=)=C0JWIM+2R(11Y8:UL) M:=*O):%WZ`<16V/;>ZH/VD&V]P?\),FVYFRI';2=E5DN#N6KF7MY7AKWN9W> ML6-NQ(]E9GTB11H7QP$O-0B\Y*VN7KCB@X72:!W=HRM[E-?_D$"#95XU'=.I MZE)D?;1P@)`;@L.=EM4&4.O$A2KI&%6M;(0?:](R*KMH5^>97;![=M7N_"XK)Z.-M/%V2<7( M]_@DGZ(,6@-3+@7;WB.#^M`#ZG$'-G4I/1[PCS"@Y_6IM*=27LK3Z0,[(0\$ M@H'.&F)#BDI8A!$'R@%$H/`4,(AI\6@2%SIK!JVF@;8!M`BY%#8D'[\W^`*@ MW@O:LN+P%;[&=U.-R;?4EJKEG45DZVBP\#L,-_7XVAV:9!:I7\E0Y7L5FUYT MY+[@%RQFW^Q+'E&LX.I(FR?C0MK4Q'FV%PM[EZAGK^VU0;<8J9(?$DC]#NR9 M4E.ZN^;OZ`(]8,J9`J,&,;(F*=45N+`1^?K>X\N`D^\"=L#%]P%+X%M$?!=A MJJUIK&68.;_YXWPA+2)K$)9T5!X)T=,7#E%(DSZ.M%Q&I92V>N;50Z.3RXXV M9:,D!HEH,#8#8FD.B&74'6Q1)]$:XTF=,^T`,GNVP2!1/]/":^BOL9W/\\3\3IY24$DQ MH%F.";7`D)L0>EQ8*+;!7H](N*9O)T*J9R_:F3D;](-PJ`Y-CW`H3Z4=01RZ M`O'T;#J!AY:AQS/%UR`KVQ&&*"N"8;+SF4`M;"KJ.WCJ\^0INS//-@\SQ%QV M#0L%,`EDA%_9&&Y9&\LEY=5"62@1Y#XDPA#L81',?"6R\E4,RU?N:P[)5/*S MB\>P)#:4ZDOLM*$GIJGR5#%.6&GXCWG,PW=U^E4-=3[/>.Z,'ETFB&OM7&M1 M8;?6S28I=KJ,`(_SF5+I7M6T141LSQ0>FCHYV%*M+/.$;`>G#IJ@":L>!2M@ MG(9:U$!C6&/W7^6LZ?GU&%_D^\=/T1_WJ_W3SQY1!`7##"N!GF+P4T,)3PVM M/E/J%/>CG:K:B(`@LES;1Q#Y3-FJZ4C;RN*8T<>8AF16J:OZ:+^*J;1'M);/ M%;C]/IS'7,F,L#VM+!K[D>G@#*O)P+C\\D9AQ8XAEK"RL(9R#TW8D:RK8B:L M')\##20!(R>6PXI4WV5DR@_9L4J[AHF))+&JRL=,7V%E97R&T)4JI9_-^"M? MJG"+_?)G"+VA_@J'0A^UC)9!9E9>65='6"DR6*FNZ/(3$U9W>?<`.^F9@'15 M-E9UG4HI$R3PR0-,W5-F?B2Y!GOBDKR5&[-6?LP#F2MG)+!,F146A@1H+M'R M;,:UG);]5:BT6&S98=G)T2R:2S/,VL<;ZS<:+`,:F`/84FZ-(U69">)P:SVE M\*O$JS((NZ*A"<:I#G)?4VV]=^Q5J=%5I>AR/\:KI*TSYLF-%>Z<6KC:CX,3 MDW$J,#9[1BA=GF"QKV.J7/N(5P-/-_5K5G+DMC6DYL0\EQ#(R#1`=;6E`D3O MYFY`YI>0$F!EWZ!%1N>S+CM8N+,^RTPF)"AI9L/JST,+*?/G*E42$]B+ZKP& MVC@C:.3&L."SSB560WEPPDJ`Y:")\GU&;9`/'O&^=14!!=B.BZ9.N;GQXP:= MDAZ1?#;1*)H^XT_NES^[:`9UR_18$BLP2/FBA%6$KM$E.CD+/K;#A0)8^QE@ MZCDCCD,:/;/2'2M.S4CZ4+(L_=E%SRBG8])?5%#2XZ$UI8'QY93($FUB9>GH MX\CR3@WU508W[YC<^DJ*OF3@*TVN>3#C-]ARP#!447+/D4\N4^@-!;!H@$,^ M6'8Z/>)IC&JN]O0@]M/'#%#_L8-URAJ$+NY&@O*4":+AI(4_5Z(VPXFZ??UB M^,6P--@?J]23AR0IH"I[OS8UX\+4>&<*`N)0+:$[L6].RO"J5-_8S-.'$]0C M>CV"-.W`ZA6M17^L,AU'Z\ICI6DG9M&($0"I>#.)-=EC^2>)$M(CH@&D*1`G M:_*#?;`DLW9(W,]]E2YF+8[@T.@:8]::,_-B;0V&\9FUICM^N!F%G9XF=PCQ MU0VH`''DB\;D!U_+:CME#/KT*%KDAW#/-)%JL'J00"_-L1WH\+^F:/59KK2U$96Q^?`UE>D<^8Y M(S?ECGR-IQ0LC3Y&F7/I1NV+E?W2T+;/)O#Y5"5/1C$')TQ.2M,944IM",:O MI+24%LJGV303Z9OELU)SO@I\654PNR/OY:O!-N:J0Z=/.S<>,GT;C?)=XVU1 MZZ[Y26#<%E^VJX[8EKFU7;_AY:\FD8SMCY+Q;S^]$IJ;\1\E:U'GJ7`C[M5W MMW111NEG%P]9NR4).1F]L7TKS_KN64;#=@5Z)._AGKPB=,PQ1C!,>/J3,B[= M<2C5];WUUMPPH93RH]Y1949;,KIV!+';L=T(K??@;HB,'(7=@;K#\6S9B2*? MULHN?+8-1S5C"7/E\X[@CCWA/"\\X@>%S=2PD3MQMZMFU"8"C:.%'?MM/!I MJB@ZB!.6,;9@C+DDZ[(G9NJZ,%X5Q+X*B)-PG=O6IO5-[LR@V5^M'MEMKM>. MQ#H]/"LLPQX_K':H.()D9.A;[ACIBP63_##GN5OSVXF!:%K%D:00*[RK;_OV M[$]=QKJ"M@"7?&^\#\WFGS;'[X[4TYJ/5,(M(ME3BS/X&>KC85GV2.L_?(8& M.0Z5/=XJS()Z<@8[0$ZY%S9ADF+:)1SM#`./TFC'MVF=Z?=UJ) M3A$)ZWG(S8H7XOK)G-.5T:+B*$E`JFL.F(&P'3VTAU#:*4ISML./TV-*A4F# M_$%*Z3]FM4LC,7Y)-[Q.$JUZS8\[>$I2;CY-NKW'*"6P?33]CJ8_MV-(BN;D M/\C.C;3*_E(J*S&)&K.YM/XVIH]7\B%-@-HTB296%LG\NS:7'QK+@P,/#08_ MHFI(6N1NZ;$@D.H!DNTX@\ELQB._@N5H90!%'U*OK$H=K+#DG6`7@[5!U2T,(>NS5@/V<%NC MP/6GJ-^VH<[:@GKA0=B%5Z#=P^>FR@A11>_5/$"DO9_"9(WDSPR@CM<2ER4> M!(1VGEBZ2FF&5/40*:U.VTI:%DY6:%WML+1%MH2E^H[%ID,1,^?4LD3"'BL* MR^M[G0WS6#F&UZGI7M=KT=:Q>EGMJ*8"^^S.5U+MIG=&I'VT([:/SN[W.RP/1S1P1W6:.]O M@OM(3,F(KB.LOLOP<*;F=9;J&I'=B2?UT'4,=9>-DGW2.\0Q/"8CZ6:& M9M(\(L_U'9YJ)0'W@PPB^7'QLOHKWC:>Q:]D/&0S6#4>4/)IG??B1UT,.U@_ MODZNMN$^)$D\+WM9VU9\;V@-Y7=',?UV92./]L+O%!GVMEQ>W..6<.T.:1(? M>RHOCP]JTBV=>U8NN^!$E(L#\";.LZ)Y%*?FAS2;+_-M_OR->3?OE^9\$PR/ M7/[+X]2JA!^#FJD+>JO.3Z'(]-BAE_+3H81$+LZ9MW%XW9`0)%[T2QBG#NEW M+(,B'2VS],U;1&U&$17?9K(?8MU?L0K%MQVDZ;WCZP%OR!'5.\XP?^O$5*LO M\@6I"1JAO3@-Y9RSHG5*=E>[\#B'_A0]HX?T+G7Q2+E-/[0$/^MOT.OY?97MNM.USKK?OE-N,XFA&[5AA[52_*=D8-O0[J],=6R\MZ+R_P?ZV_)_@N+#0B1Y$%DB20 M$_ON]MO6*\6DN.?U_+NO6N]^RZ?\B6_R6[[*=_ER'N;CU$&OZ43TRB_Y+S_G M_WF9?_-[/L__^2I??J7\6Q\U!ZQ1$CUBNZ,A^L0FUYH^I'?ZP^KI2_U?3_45 M_M2W^E4?ZL=\\58F!=FNMN@A'Q\J133HYE?^2S/V[HWP8/M,FMU,M-T1D'+M M,_)'G0<@N3[WVVZK;;N-Q@W4WG=>?/>0HP[_U'?=-K5L4W^_>Z.^"=;ZG#O4 MU'F?9[LMOVKY/H*O%*'0NA+%!/N[WX!P7'6]E-O7]J#_9,UWQ9_P2S_I/_VC M/_4#2DC\Y5N_Z5?]E5:ZH7D`GWNN6X`+JM.0S)-4_A3I4FW?C7.;2%<+,,)L M0!T")A32?HC,5;AA]HB.X]JL5,Y_*T!_ZC,]8P+U>5(.:/O(:L1]UV*8#.K^ MX)_ZA/]]+>VZO^0CPN9_<05G6R9YTW_[ISX"3Q[OZW#4_>+ER$\9GTXEM-8QK M5.3\*?17!<0`]G9U7=_'0\%XU4>0UP$F.R&@3_-ZC&[F2`C8WJB`&)`*&-.X M@,>("CCQR("EWA+&BQ1;2]@G(@,"(C)@:](#\GT;X`?2`T(W#Y[:-Y89@5_> M9M2B;&9(X.\AI/T\>]OK@?3I>B!?88:,S%#73V=3YXU#/(SSHXA@1/L-S:/D M("=M""$$WX1Z!I3*4X-`>W$0&[@&&B,7GY$2WXR!8+51\D.($*\U5W2 MD-:G!89[R=@3-,\X>4X,KS4^`7]<(*1'#4%\5][6I\SD1:K>(SB=1()<#2-H M"?:!'YZF4]=`-2N?ZX?Z=7N>(.S'[=U]HN"W-_;U.;Q*TI>>25,TS2FH!9)S MD%X7&-3\@8J(@J43K7MTX!G(!DI^:&`OZ`9^>G#@+R@'[CSPS<)G!]J";$WV MH0>2-:F6^T4-@395T%`3"!HY`)(>4K-@9LB?96>,S"'V%UP#V35G`\W308C0 M;T66N+?W#'@Z#_6%]?%X#1^]QPY2/L:.T)?>C4/4CL/'\#U\"1_A!Z5D@W&) MZ`?UC(+NT-WS^05D=T^5APNU-UR/F7?C)8(Y5ZCWX25["@Y$R-884FK6WO6. M0!VB1P)(L!59C(A"DY3H4V4-)L(,L18.G7/$=WPY**&%=*FX:<`@QL>'R$_O MR/6SY($H.`]RAK/X;#Y;$`5W2"1RAU_R:^TEZQDW-X8H+X1@IX)$Q3DZD8[T MU7@UPH]X@W?H>T,`5`CI.4_CD`T`X%F%5>%5&`JR?J\?*-@5@GZC8%AH"NY\ M8F$HZ!4J?K**'M9_""9RF$6V"LY`],X;IA0A)`G?XY=LM2%V85[8^M4\[(U> M6!?NA8#A7R@8*GZPV%P:&A"%B>!@:AI;0<]2B6$9?CBZ$(!8'A!FK\#>ITHK,^*@I'@/[(07@.$!#U]43$"^VAVKX]Z4N+!/\S4 MQ%,#>#?R"D9"UD`V54@A$Z0@;Q/(`0/=;$ZCS^ISC)1XD1-7<]P=A%Q/<-<`7;(0&M4NF2BQC MWYP>(A48LA)M*N47P>.V4#V,#&F'V&@]&MK6LQRF)!!BB+/=RV21Q(52F$<2%#EB?,A, M,X3((]@(LM(45B?'C_'CGF@@K%)4QO(\/W\4-4>"[(9NC]Y!>V$_#Q'"PR!- M1!91+O1RA6QI#97"?Q"%%,[NM8!M1Q68`A:!;8E98@,F@7&)6J+60Y'(*O`4 M]\'8$#297#QXB*U2C``W5E(`X^\`-Z#*Z&/7J">8 M#&9W2CU7%=NX=+\!/QP8,M.-%3>#!0!Q(L6)=&*J.">NBC]0`L@JUHEU(@L4 MI?!#W5B?N.OG9MS\2B+ MQ8BK"-LQBX@B;Q0M/HM4R+)8+0Z+U^*TN+AH+M!BLU(FQD96R?$7AOP/@\@6 M`N0`1,0=/*6[4(G+D^_5H5R)$%B7&"^&B?2BEP@F#E\^2)D8+H:*Y:)($B`* M(7'09\>+*$**$"*T!P%"@-#M(PC]00SC]T[-/V0/""+NE(PHHT^U(($\`)";$Q"A)"#C,HC9 MV%^C"2@D*%Y$$E&A2/:)?6-/;N9]+3Y[HT`WM'E? MAM2[9((,2(,C:!3L`"#R5`"RCKR%BXK6,QO9B_+BEQ@YWHOQHK-(.3Y@6J#N M)?V5*L?)9<,ODBE&8?C$@;@CAQ%5D@!*/)K,"@2\!7>_C@S7.H(]KUBR=7X( M`;L3[)@:SEL3S#RR']U>D*$AE1EQ'KZC]V-(44YOI9X\5>!Y2OF?M MZ$$<%",7B6@_:,=08YM\29A--2F+!G'0JE1U=BP]C'24KQ@NL M=9Z@+6R+@Q5%XB[(C^UB188=[8U'+"J3"8F6#'A/DDIX>S\[6\2F)+J_6Y82=1).U"NU"1A!3$UL(]45ID MX,)%!A]>9!H"N*`SW0CA@I(0-W)2XG*O+"YT2_M8Q_PN[I/KPB-5+I<+@EC0 M<2[$Q_(2QN`IUE+\X29U2LW,8P-W:$A33';2>?4G``KNHF)Q+*_D];6;A55/ MY!UYS>$J81B%A7[,=#)`;N9&WG5NEMR!B3@J!5'RX7+%588,T_&]T$G7$TOG M)KZ)OX<'HH.`+FG,&1.Z^!W,T#;S@^DO*H@AR<8$,F_'M[5[?$^28J3"Q0P6 MX1B!IW/5:-@.-/G`I#L,RT/#B]4AS%"IZ(`X*F''+WF6>%+>3";U97U9A]T: M:==E'8W'`EES,7@#I`+"XZ@@'0ME%>(.=7P>CD%.%W3]SM2`KYDH4TR(Q M'H;:%/./!(NF%*<2>XDI.MV4DO'Q'25A2;B_)"O*&$LYBJ`=HT@,E'C(E/&2 MH,+8:#'*Y#MCX=A@&-P2H\UH5+C?;X7$T(W]D@[6NDPQ2"44DU16,6D*%K-( M!D\3D*WE$(Q.64?<@7VL'OQ,TV6NB#+U#!OCFP0G8*4L55Z-E6?5Z+'6J"!K MS:4VB@`R,5`I$M9Q+,H+*8DQ-@A`$G*&@41<9TKO0I.E6#76)>-7IE`OFX4E M6&8>-A'-!J!X(%72)U;]575E)((UF7!B3DOZ<546-+>%5=D^WFZ7Y4;Y40IC MPU)N(F.)(]F9+&E695AXY)[2*JTO9\M2Z M8@,H+]>D*-*^D(1X"A.Y539O)Z5=MT]*E$T8C5*A`)2Y3TXRI(`L7$@!MJTD M(M^-WF$2@2X%#4ME35*6PE(;8QYMETTD7Y.=Y)+@)05"5,TS"TU?(\6@'YP< M$38ZG6%9V$0C5XXDG@N_\]W<(='+'D)=7DBW&TL%?;@O1-5O67D\%_$+&K*) M"9B]1_M28&9BH9LREF!ZEV]9KG)UA&X/)A2E0Q4QWAKL5+N)6W]+H'+7Z$SO MY3D9$\B7L!/!U'O^VV/Y M@]14`Z!$.4P.DT(,[[9[7&$3Y'O"E#26WMD-`;W?&.\2"B3$<'T(@RQ$?VB&4"'XB@VM+!>)E;9HXR9IZ972:: M^7F0F6RFFBEF6GM?9IDI9[:9_D>9F%6%'53'Z?&!L04$E*:B3#4@4IE+92AE MEGJ=0*F&Y%36B#`$H"R:;HP2XFC6+H\FHPG'3)IOC*+9:$*:F&82HIR,(!"" M,D;<5($PW'<2F9PB+M5QDVE>FI+F&Z-J>BFKYJE):9X=IF:J&6FBFK3FJ^EJ MMIKSE4=%E=0W>2;RQ@IB-GU/GZ;(B5`2YN^FLY0]`XN3`I-QF6[FFKDG869O M9K-9)L&9T2:7:7PPF]9FFNFH9)O.YK;9;9HZW>:;>6WJ8-AFN,EMBIO:YGR% M;G:;P8RZN/"('GCF8>6-E45X2W14@OPBXHH&XKZ4,:L'NS+0])L9128&2AXS M5PBS$7"G=V M;H!H9[ZGWKV=+XDRIW9N!1R0W&EW!GA%7S)V=\:=<*>3LW>ZG7QGX`EX#IYM M9^')=B*=0,F9Z``A4?.AN%*NE"OHBB#S;^90[TJ\$B#267E'&1-)X0!!@&S" M>$I+*,JVM(+!*RV8*=;!C9P@IW-':9&<5!)B>7&R+JGGZAF#%9UJW.NY`?:` MSU-&L9BQGCCG_A9[#IUCF$U7=G*$JI*+Q)/8(T,2L`.+I%,-5CA%91U5%5:$ M%7U.GT+98$E]4EC09_:)?6)8SDCW>665ENG'"8A\%MM1Z,UA'.'2)UD6U87D-X9E`2B*`9YY2&)HSTE@&Q\N\)N(3[U,B MM86.I:H$SS0Q`QPHT_@X6=_G"ND4M6AB27$IVJR3:(G$EK[)9]@:YH*?2)5A MERC9A&1BA1P3HE'B4^6GV'%^]I_BF(`D(/%1PU@2RJRU(<'E1CF&\6GY)"!& M>*P>J%L5>HIQ8@&H&S)@+CLPH9^IE=1*K648RIY,-*\7$3HP^79G$/Z5_SPW M$$P;FI.XH?>D2`0N\@O%.B'U?&AGYV/IE([ M7AW`CDYEP+V.X6?R6>3U1^#4#!,2]6XVR(]5[C!YYL=U\QV5/:^C@3E^%"R5 MA_#DCCI.2N?KD7X8<*=8#54[?D?GB&!&A.*C/_:0O":A"?@BE:0=1JJX<+')+&WJPC&L`2^.6KTEHHEHA%D\: M9VR;@FDKV5&;"UN0E19P.UQ7JJL(<6.)0Q3I]!\SB#LB(FT?'QHX)N5]1;Y. MW+:V=3_V64I7E!5M11LY=[3)3'!;YK&.N6Q_2=#"D[%M<>DF2-(17/F;7_;/ M'::&:4DWEQ9EUA[_B("::5F@\&?HR4!75S66ADPSUI'D\81=+XY13S/).$X+ M2':VZHD?D!NS!I4&9`!9N(/4&2S%',_2FK*F2IJ.AM#P8U&I0V#.D*;TF*R4 ME3DJ'9P/5WX08O6FP;*A;#[CH#=F[FF,.!);RI<"ID4E_X:5.6@HV:!Y"YTA M$YO3IJ\`=YSH_TBL8*>ZCG;JG6*/]5IWRN9H3==I21:K1:<.6MU8?,A*LHE" MAI2U9@1;4\:2"G1L7'VJP^5P/1P8-C@Y9ET95T:`1BTI&HJ&0;:"M\4FN,@% M+0$J@JJBE6&+"(-JKQ$K9]C,N8P.H(@3Y)3#^8TITB8"P`Q_A-%\.C^Q:ON; M\J/+-&.B%7]ZE4%F)VI_"J#F'X!*@FI[#*A3RU9TH*ZH-.J,.LY):(/2D1:; MJF\XZD%8X>4D2X=KYI00)J88#?6BIEN\1YX&B?22P(?(Y'M$,#7EOH>/T3*9 M80SIE`)BS=EK.LUEJ:[I:BGYK&?V5G2F^E@LLJ'89(,;[8$RJ9NKI/JR M>,B3,!4C*O"U'<8;>H;H,8@5XI>*E^J-%QICZJ=J7WTJH/JG!J9,2'[*N:1A MA*K0EFSBI8SJHNJHIDR!:J(:M$VJ@>K>V"!J-NJ,KH?G(*>WTC]GTBFFA"FH MBM"-JI^JH4JJBJJ?JO85A!4[(,F/%FG=2L6=P&.HGBFBE5?:KU1C<\<>YZQE M'H<<#VJC3DBK90:IL9QH4XM7D)(L'>N-Q[+>4%@%:-2RLEE!+1M=ELGHI6^I MHAJJ7JM43]X%*FYC&J&A-[)L?E(>GX>^.:#(Z+B:C%*GY6JZJHR>J^2JKG*E MOJOHZI7:.,VF&:@U%HG>H#K2__3UE9`TC?K3U&R"Q,I=LYEJ/&G'P"H#=!X& M:^>AI`J;H: ML8JL"FOB,8V5K+=;QFJRJJPP)Z7I8W;\CLD%E=Q4D,AM*9$MK!H>L263-FM,*K7&L1MP@ MUXS%82=F#3>9%6);*[UZM0*K4BDX4XC-(S4:D/HON9N(&(RZ MKB`36UAVH35E&K3E-$MY?B+'** M:$K)3$\HF\42L-Y;HX_)UM3(D"1;LSBY7JZ2J\GVN&)QK<]H(ZRD;;/'.E:O M170BW;2Z7^TJ2.FX5Z=Z8_+IE,?K,*,,B.DJJ=*EBRG15KO*I>BJV_:6@A\H MZ!O(H^JHY]OO&I[^KDE:\)JC%J\UX6]S00:I'.HKD_>=*EO+)&*Z%DV&ZUOZ MN<8FUROG.J;.,)LKYMJ>>*\EV_?*J6@NX"O%H[E&;9LKXVJFEE#>%N^B!(DM MX]J-:+FY38)'&?-9B8=U2SG2M3:B&@N`)-)4.S=3J.G]U'BHF>[1T12G(LO2 MUQ3%-;X9\WC^,*?`6%[:ML5M;IONZI9&+7]I9,9^P($":HZVWG0I420IHJL. M3KVK@U48FK#.:K2JDA1DX@T+:X88-),,@YB-Z*3`XG"#N2&GXDUM%!,X:U7F MWB&/8J,TINDFQ"8?(*S,XGQ(?FV4_CKXM&Y[VVHSIQ%I*F8#TI=1'MQ)7[:8 MZ7/`W!8%>OR90J%2M;KZF@`7D;/!0A_\70XUO4V>GD?8445EF-M;]B:9C6%N M;!FU1J51_5X=&RG=L=$<'8O'9CEJE!V;Q_:Q>RS@^I<87M40_6;NV6\7TM:4 MM"H_6!F)"G&>9"-J)%N2P:X97*UZGT*REZPEB\ENLIKLA.K(2F2=[",;RF)I MOJD'!UFAG"#>@R4@^^-CDYG,J* M1AI]@"I@Z6%5S.A<].QHL[&>J4?I,2.[;:PFFU,:;#9N4IRW=EO03^Z/%,=: MN#]^6(K"T&HLJ<\GEZJY:Z<9.S7*@7+&BBDWZ'Q(&VW,10J%D#TJZ=J5-$J. M(3;GB]9R">F/=K"JI/L-F_0^=FH[!S2&(;M35ZOL>+5@[5M6:M5]O6"1["YQ#@L:2D2\<2.B'=7I2.7B+(TW&"W MT2@;XE?=(Z5EMDE.05E:BO@$I>%GAB8DLHGDJM$AY,$E3?AX\"O%!U7J;*FXV$^/.N#"N93=8Q)O:7V%BBJDBNTA]F5DQ M)M=2)7/,;LO'TS(6,;BT)5XCK.%^+NE_LLV(7$"GQQET+KJ+ M1T"BJU$=RE0X&[[X0*>1.[GF))LRKK>9CJVX,&ZGR^E^NA[N2&K&!$\$#7[; M>80>#*4Y&>;JMF-N;\O;;B6(+LP5A*RO,Z7OT9`I*!%*%C M'Z2X%9[T'D),';E=VD*Z=J_`FO`RO MGHL&V20B3Q`)QA(U?=9^!6LEF(F'$&,Q;;RHJ_`!O0:NNTJQZWM$PMT>75=C)*?"M?`NC8$*X73()G?"(88AT='KHG[!+L6/M*KIPK[1[N\PW M$B^(ID"F(Q%X#9AZ@S&B(K M\[?64)#O[2E1V4%(2=Q+[3)P<6\THODF'ILO;@E.&DKJC$YDE_RMO4NB..=2 M*`[OPIOZ-KP([^J[^D9H5.I)]'"-)GVNQ%L%;`@AYCRQ;\5HA#B(,:&!ASUY M$IFRN4>4"KSX6KLFT1GCIQ-=>+AT-5:D6O])N\_1^F2!33B>4O!=D7 M%M,-)S+=[SM)/B[T)4;H=XP\#XH99+KLAHPC-M+*]#6`BRX5SQD!KL0,8"H) M(JA2[<=+K4I@<&$EYH`?),$$HHFT%B/+0[/A,6F/SN0W]@5<1H$/'`+Y2 MBP\E&B%(VR&C8^V$C]!-@O.">H*N&+Q344D]C%H=R9^]60P;IB,':2.$S7"X M1&5**5*`]?OU72$22N-R2L*/32N\GL1!79=IX_MAAG"B#=7;28E_;RD<"F?# M<`DHM$P5E>%C'CP+52*KJ:?CIQPEX4^>E.18.RPA-0S7Z"X$BC9L#7/#G),U M3);"1PO)>;.0Z'+Y%TWH#^\H5A"8M.K$4.%CO^H"*<.1L`N7X8)1]!`&Q+[9 M+.$P+!P^+CSYQZCCHZUX@FMVY_&P;T\.I$/L_B%*E(R"Z%0X&F"30II`.)(' MZ6$3,3ABB,T$`6X]828=+!.+PWDP<,6S0,1Q3=55JU@^\HA%AM+X.,RPI#5R M@H9A%/R&E$5,G9_K>@X7?R5+4_R2/+NS&UK">+3#2?'=]9^UD4'BQM,-C63?XDJB+ M,0EDS">9<9-Q.(RS/$$VBB?,LIS#:^85%\SD+!W58RS`@DP4,5#BXJ2NZ.#9 MT_D1?$N>TY80&B/G7&1SPI)Z7U&OLCS.ZI&>JQ5JZDOIZ9=*P,YWD(+`-E(,*EXS,S6BLR81ZUO&1LMZ$FL"6 MBM*[K#5)'GC\'8?"#5I8,^T00>>QV9869CGK<2I\$$J)Y3&MRQTCNTG>3%D? MDXTG9LE[L^7#T>M^;`V74%^1>.R7*JI3P?NNQGW.B MP*I1RI'BH,P`6,P$$B%C(4&.J2B.[8Q(#F?<%3O##(XZ6-D%*T?1'H?\R,)- M+/23#YG"\,O82+0LZ$@OVQT$.]1AF3IL,:@P]E(QCS65%WX<:E(I<@K&[!Y?S!JS-7PQ\\<4LXAVHO`EGDQO+!QO M:/%.QFSNE"RH\+?\[O`KWO'+;#//S#?SMHPS[\RK9I+ MCFS5.1V$$5-5)GF(M`[3C!3RR<)PY.0L6T[D*)/%Y`UECH='PJRZ:1V4LPS5 MD:-1'=CLG8C-B8?D)[.)(1N=;&R^,,:P\=I\Q:G-E1+;K#;')'(SV(SDN(ER ML]GL-N/-;[/=K/'1S7US_A4W!\YUL[-\L;S-OA[>*>.9@\T-P2P.^CA7$P%# M1R6G?0@4HBE5SATHRZPY(Z6LGV[<2;6"-ENE`CYR/2Y).]PH,56Q\3;8I,7, M_$II;+5E@1'2Y5/S8#\8W&JFS]W-:LC<3-*>AF=4@2P5VU3;',#HLNBOTXOY M@ONVDYR32S+TIB![\^Y<9XY1J3!@?/9(ST+(;!S^!,X.9`-S&=[$R#.H0PI" MSQ+B^2)!\DD+BUJ@(R/,,X%O.#1;PIA-M).-##LA\:[L4RTDS#*SXU-)+)]P MM7P.(D4;FG(""N6*;HU;DPV+.7>CL:,KIG>]\0`2],0C6;&`3[EUNFP^9^2)5+(4?SSCP.=!XW@`G\#<&+*Z'S0)#4+W>R)T"!U"LP4R M'G*R/M.&/E:V8V(]0GZQP-?QE%,^CJ-WB-:\4U(O9R-+ ME`N9;=!-TB($7-"$61N5BFW/2C(Y?.X(88U]"73P?"F;!$G/0\F.QLAY^T43<')SO7#RDM2B,VIW0I#39>.Z/T M*CT/JM*6#RL]X431S$ZR$TJC7]GSC(<98\)"S[5U%"6RZY4,D$4K`/.;OYLJ M"7@T#2^BSNF0RLR2U?30SS8/I1,_QWS7CXA23?M:8RF*Q!RWTT`FT6.3O>'""-_-##B5))MVJ'H;$"%(>'1;H,Y>SR<]':8 MZ,32^G1H<_ZLPW(TJ0-0!WA+K*!GMI4ZJ$Y`G5!W.@*U0NW@R"\#]9734#/4 M"[5$K>`\Q#1-+0H-.INP!?12S]28(`(]G018K=,>V!(I1_).*E:^A<]/+F`2[QR?2]2S$O0X M*\'P9,,=5G_2DDW#]SS5CP@%9N+A/5]TEZ=WL41I8!;HQ"A$.0`6,\8%?$;. M7M47C]4I-`JM0IO5_1Y7J$2?T"7T6FU"Z[86<1JTEB`G#)$=:.C4PW'/B6(J MY]7SX)V,%,6#-73<8T#S>X)U7YU`!]9_M6$-'2?6,O1@?>,5UHVU8OU*[XN% M%C;@P,<>,VAM1>?.,8GHU>^Q7IG.?),)JM;\'FM] MX[G6\XTP!%NOUK3UC!<V!_M>404*OCA]& M`K90.IX*Y]%-?<(Q-&5L2ME*>^.%,7M#&-89.ORNYQ,JE8 MT]N+T>%ZW=:U588F[%QY8R:@MAK[UKF]"_]EH=;+_!0M/_097M0X#T MB_1<)ECT-"KH\@"JPE3LP4GZA,EA,E)G']7"\#HW(T:YP9IR^!CE9BY3N*T= ML18:CN,X^@2%:Q+;H;R\V1X+(M,,9[A['0O*DS2)!UY.K+\:?0VRE6=OW;^O:5\V^7.03WF5-PQQ^:B\$-'A=JC$J&X@H1+JI1$%#R6("%,348 MY=J&/3:.K7&[V#8V8GUC<]Q'JX[]<QCM\J,=2L\W\"# M:JAE\]5ETK[T>-;R(B6@TY&-Q7!<*"20>$D_-87Q2(SE9(_S4\>LFW;%DECV MY/WH9C,>^/B(.CI,CKK)92_2K?-)5;6=V.%/%$8[G];8CBUT.`/.A#%@/#YG M0#EW2(+%1,$N-!^V'S+"R]1]DG:WW3<>=8/@G$,H\4G<0!^@`%:MG MVB,8[MG6-[&4YM792=NSY^Q-(\)6CN@W[NC*="'59N,M/TF.!@R6<3T'3^>, M1\=G&6",J!&-(Q7A>G5Z(]FKX!4<%#0(,$$K@RJ92:UQPUQ4N\0,,_A]0B+% MW'`;-?U=)"O@`?@#OH!G M1/GW_\TA&^``N/YM1_'?\-LX4K/D3/+WD@>!NX02.#26_KX#GX`Z.1F-8]N`,S?S'FWA)?633A,$H5?S]AS$BZ$.RA`.!_"@VOA2KBN+(4_X8+Q%#[^>.%4 M^!8NAE^08'@9KCV72>VDF=2&TSKE,*D=$\OA1',@5@-@'YZ1:F'NU36MA_)6 M?JO&,?@L&XAK-8/X"0F(!^*J<5"-5<>$XUE&S8':QH"):E?KI,?G(!JMB"_+ M6LYES4J/.AEVN3/?:>([S2?>&L(,"L'&XKK,*F^(Z:+KWQ+7BE_C? M\T/A3$^<5.F*8VC9\F68@P*P[+`MKJ5UW[OX+:X7Q^(/#"A.W1'C#HPQWL`H MX^(S_^U&(^/+N#-.&$OCAO%AS,Q1XT#R85R-=\^\^,8B>C'CY@LX/HUOS^%X M:PR$B^/;N*6$CF?CC%TRCHUWX^KX.^Z*9^'0>#-.CH_CVCB0G(K;X_DX/*X! MK>,P"RT>C]_CZ?@_+H__X@0Y.SZ0]^-^^&I\=);?X`[W'9&[X=4X&\ZL=9X/ MC6=4`T@=^D[#:873X0\DS=?[S(22#=HC#*6A::A0=M%PL M8H?(:8W]O9!4VQMH]UB#),;W^.9T6H?<]?<;?AA+XT3Y/5(..!_& M/GFNS,"H2952=WT]+V?!MRQ>:C\_OE!3GG?G88S?/%U0+S4J3[$LDM=\WKB` MIK\.8Q;9NQ($$`%:,':8A%7E*[B-1PS?VS@3J.PC(NH MTP!)"_W[?&UBH^TLE6LHBK%LK)7W.SXY1/T:A>1N-V0.C-O(S7'Y[78WQXRS MCE24#^5&>4_NF?<1QR[F6SP"NC""3A+EOG9%,V`ORAQNX_2&`UWS* M.=AH&YK%3Y!;@M25QO;7(XX;`SJT.8-#@FLVVA/QC/W4/)CQ3+Z=V^;DN1)K MGNOEU?-Y'IB7YV^:=]Z>Y^7O>='[%6=RI'*X'P8A2 M3SAV=MB49JWY,+X7-S#7[('^DIJ"7S>"WH]W..NP?_[D,LZ0N*US;R?.(WEJ M+)%#P[S>(MXTB]^-%`MN<5_=I3"CM*@PH+@Q.6[&J>BR]A?>K#AS+?KUG-*6 M+]CPVRQ:'\XW^6E=DZ_B,J*3DQ%9?LIKH&=^^^'[V%@>5(M&!HP+8M7M(A^8 MD8CRV.9/+D]LIM7D\9&V?=98Z?E/:LWA!"2%L>=Z#0P][J#[D&2ZEU*F M7\)<4S;DD;1G>CE*GJ9/BFWZFQZGJ^EP^HDIIZ?G>+J;3J?/Z76ZGMZGL^EY M^IWNIWO?A7B<@WJ,!)X1,I,QHI-T$DM(?AO4D#K:$YN?PR(VGDY?(]^4>J:. MJ6_JJ0VGGGYWZC2=I2ZJ5^JDNJ8.JG_JJ+K^VM^5ZIZZ>CZJF^JI.GINI[?J MLCJK?JJ[ZK9ZK"Z)W^JU.JR.J_OJO;K8]:O3ZJ\ZL9ZKJ^*>Q]SSCNT,N]7GN+*W7@\G ML:+Z)3V:SSLW.4>;;;OK'J*[#I?TYZ4PO7[>@.;W-M0VALLY[CJ_OJ_KZRLX MP)ZO"^0!>PF.;_?K`GM/E?R-X?-Z5"T7+N9T(<3.GZ_B-SG%GJZ[;F(6-WAQ M%\E+^DEOJ(G8AW1(IS47R34X,6>@3.`=M,_'%0O)?4)A8=6SYGHF3DJ.Z MLC:2GQ#40S5!_31[O/^'5D6&*,X\,>;]@6_JYR#[36IS4,5?4PZ7<^MR(6E^ ME@.PGE5^#OI$[2<[AURUCUE7^]-^M/MV-Y[4$YUU[D9$)?.P4^0@/L M2SO:SD%;X*4VV$YJD^UI)P">M8OMSW#3KK7;[5Q[B.Q#V=][NVVNL3I_J.GI\LYKOZGJZ[[^V[K)Z3`.I3^><^OI/A\?O[OKZ+[S^YJ8VAN\3'LEG^ MOZ\KAT@OF7W\YN;>U0BUN$1,#TCT1XU/'0Y`+/917[Z,F>T7#WYWM<##B6/3 MH\U$;"[76V\SSO23E^V5<,34X0359YJ$#H?SQ&@ZS2>A*V_IGOI-N3_ANR+S M_)TCR0)(M<,'Z?`_%+:E["_&KVQQOR@3PB7\AW[8?\':_'Y_%T_".OQZ_QH-XP_*%#Z$ZS@\+CB#3! MR-5D[HT$:*3"/G)>Z.>NXIP*^<(6]^'N?X@BV9U7S@??YP`X#1ZEY\H=._=3 M&GOA%''\KEYWYN9Z')V9I9T.-.B.?WCO`T_KSDN[BMJ_A_3@V_Y-SXZAT-R^/0_.Y,CA/SG,_SGRD MQ,Q;9F1X'=3.URVH^\1&S#U&$NN?$8Y3V4TAW M\6DH^T:8IZ[P-^M&AK&2B$\/S"P(J'PYX[QF)6M'-GT^>Y=&D\2S>Q!'$Y#CX#43.]99P: MN\1%9V)&V\D,3U2+[4\:6Z4<9[4%_&6 MLF,VM, M)F[=L_D\R#63])@TOHX6V=LN/8A2UZ,H:*#'8QOK1'N]8]P1AM52RW'2-,_@ MA'T?K\@?]L]RR>+7C^LZ,P![FNG>6\U]_@VG+(99QO8?GT!6M5)/>.7LT+`Z M[)`Y+6.]Q+WCS"O"./@J&#_/KOG\YARVNG2._;CN$POV\?VA+'[#23/ M]H8Q;G_;T_9S_&N/KN?VM'T[O/`TX`O/S9YW0Z]#_>^B2E^=\/D,HAAASG^V M'K;$ZF&`8!?(/U/W[[E/;]U_YRS]N:[=(SNV/9?.!^MAW+U5K]2;]][]>-_= M`^K??7+_=R_?PO7M_WROU.E)#CF&/WTBA?_\I\L`X M2_8!+V0^B(M'/M?_6/AV!GAU&MO$.W^^LK?T?HJ;IB1#S$FR(+[3'_>H^FM_ M#ZXBO.GOX M-GY[CN/GZ"'.JKSAN_04\87?&]NFX?IN#]L/^K]] MH2_E&_KV^92/Z+OXW?VA[^@W^D_\&!7E3_J6L6\ODE_ZXU.=;4")+*,3F:_T M*?#:(?)*O.ZHD$]4U*7"IMX/1QM.*])S=`SMG4/4@#O1E]C@>OZYY6[KR_`B M^O!ZZXOH,#BOO^%_Z_*YK4_O]/K$_J\/G^?E.\P!JOXD^PG4L@^+.?OX%[-_ ME&&G_8>R(GA;PU%[0HCK7XJ9SP8B!(#VB0Q?D-&,"\\!<)Y]>S1;?-+U%*8I M]8B^$B_I*^A/7(8X/9@F3#&NC>%Y]64>>X\]TL@ MEZY@(;OTY63'#YCUBDB?X$_:]TX'JX!'KR'N;2 M#;`C&S3JT@)_<3:/)SX7%\@RQ#;+P?J2&/W*&CAG[0!.B`?3KZXTI:I:G7:: M`BRGFF]VKK4U(*H.M;(M>>RE?CH])6;FW.LIS\)*]2P0)^'X;-)J6JPFT:F9 MC\O)XR#'Z22KV;!,(G;W@%9WQ+JK4\6D]]-E=`_MX;!MG=BJS#2W':[;Z9+G MGXFWA&OB[]<4;A\9+);!/O[1ZD]6GIYDL9J#AC&1:8G-_M'J/%UWCN^.@P-E M^9+^=):%6;'>\?G<\+-`BUR&]FHZ>;AF+)MK0!?!1FWQ6"M'EP4KMO_? M/Z*N-_6:M`>CN4Q=B>J_3F:O,YN_7Q2Q?J)5CH8--F(3?A56Y[B<:D'@M01- M.35*:P&&2C`WRO_@P6@_;$`LV`PD[=I4,I`,AHWC'&&1$.D:5=):``6#L`RV0-0`A@!A$%1 M`&%0%D#YS/"*?V9Y(5QP_@@P08[P#L5H:V.\/1O2'<,.$9H!1QHH-3C#'?'/1&N+L+&A85J5#"9*&'E,&BCV.PP%JQII2`#@^J3<*B>2*S:%`PL_!0^AO`GQXPH4.?@3Y0 MLJ0]5QIF3`:H/*2^D&=`G7X#GC\$"3@H;F<#Y-Y4::XV.4"N#6H&!DCJZU'- M`)LT9I0:(`0#$F/`<! MS`?)S]OX"Y*)+B005M) M9$R"&1R4((F*;?6'T?FM)9XQ\J\_C#WF2^,.A$&-<&)@0HD-!>HO*P-<(0A& M\4Z`[I612J]-^G"2X,Z05$).@#Z^AF0%1H'Q&C]84&0T!PF)U+ZB4L,CXE4` M+$@02@T=$<%"LL<5U%C@9YI0CPKZ23Y$A#&-:,/@_AXEM(LUDSA-H_.3F$14 M5((/)PD,AXOC!0)G@QOU.6I:'"D71=UO91'2">GX9]@HNK_`8#,ICZ*K4$]M MFR!8A;_DT!JF85&'V%($90:#D$&_GT(G*E,8U-]@9T!5E*JDUE=&63'0\`D= MK*X9TA'Z2:NC[??C2,\X'>@Z5@@4DW;$X$(9\HUL M@&8ZY(L-%_DBQ45P0KZY0"(0FP]W&^<%^$-C>2)%7DH9+`K)BX/*/W0;B5?< M1G(WT)HSEO8&>U.H^MG""= M@E0XC[`?1U-&+K;P@/PQ@/`RL"8)E8(P&`6A2ECL9QZ$#D)@S(.)#<596LA0 M"!&$=AD715[F0;4@I%`Q"&&H.+<949*F0HK!ISPZN(?E'Q( MD(!_]1,]E%="%5/I>9",\DI.5!R;CA'$!N"QX$+H.VQEM0\.#`+E44+#.5M5 MJ%)4G:RQ'YBF8_*X26Y$;;I9;9E?AH#DPB0F-%BP!&$/Q*/\0TPP1U'`,E[U M`)DS?BS\X'N0#B@';!7N!@]SFS_8@HSP:T$)"PVB'C93:(?-E#6(Q31:HB4M MGWZ%:@M8!!_)CQ2W>*+H+488>HN\11JBD/2W"%Q47ZX03`>,#!;BNW/R>"2= M_DY/M"I(Q"6#A'+-R6NPJX)-+IH+URG&WK>&N,LX=_XFF1$3SR1%6@A;V;S0 M:+P=QJCFET!IN1/T"GJ5NZPCM\)7B:Y06VA'JB4!N](6`,,I4A\IYM7:FEL< M"R-).`M9!K,0C&2,R4\5;S(?,C]!!*@)`16ON*%\K.Q+DPM!3D8B-B+2L7S) M(=Q4A.RY[3,4*`!/F^'(P!\EA@!UXF\PP:R&DT2?I M)/HZ$:7XUGPK`B4OE!=6*$1;RPF#)>UHOOC/*B`=;K8H%E M+:!B2XI5"CH#]F1,0FH<0TX7*,/'1C-IL"*Z*O]DJH[=QU_4MBKL7/"$30A M08(/32'6UAIFM15V@-6$$A]#;Z+02$)< M#_>&AA*;C`0Q@I@%%*N4O"Z(^!8H4FGI#Z5YJ/V@EEH7(BW6TEK"9BA1@BUE MM::%427/1!1/&3-9:B".+JI8KA((8OKA$U,O="WE#&%$UY3`(44*Z&=^BA:> M9[`0J0M0'S=D9(B+&ENA1R0/X(@;TX4K)Q9#$7MT4;A-6BPMUDPK_Z7YV]]0 M\-:%6A*PS[UBTQ(\W!VRN%X3U*9KE^ZPBWA_RM0$'_06>HLO3"=B0IC.&-AH M'X`T%P@8$C4IOQ2-J&"HF*Q+;0P54_OH5<)=:C'-E,@6X:5]2^BF>#;`$'8( M,EA5CZ4GAEAO`26.8$&L#X,L$Q#AQ8XC"E+!6&'E4Q0:>$2_0P/1N8--^H#Q M'CQ@OXOJBB@QTZ)#$5F-'Q`XS:PHEODAH>2,>B2>648E;P`%@-3!?_`FN.>` MIC86GAMQ#N7F#'4>V=\0>.H^9ZANQ]JI>:/,*9@X+(:)QD3`4\[BU!-XXHJE M>OR$-I51,1":>G::)T\0E3)\DE_C<(0.2 M$V^)O41LHC6QKZ%.!)"T)+R):J=MHL5)F<-,5"8&GF@Q/`Z*#F!`Z:,%L_D9 M70H0CR>$AEXK77'CRMT84E@PLI=PB09M9[0B`5&T,QA/4C5[D^AIM4!ZLA7E M0I0MCI,?5O,FOZ5!E#%]E\R'@RWVB?IDI"A2+"EV4$Z*%Q24HM)FI8C\4"E^ M%`6))!1_(=8+XU5L:EU0*C8B]PZQ0^J!G@.UP."P2>A/0$7AH5`1B1%_&BJ6 M$8.*7D0;5'3-<^'6*F5T/LIAM:5SS0!'(WBVT4'U9(P0815^3`B028,V-$0A MI;XVP:LGE@>P+5/ZJ+?`AK*)%Q2.("5#ES4>'%C`,_!14HT>1QFC`L&"L%)(6^H M%$D3Z(^@2E_F_!>(TOJ=8B`R*I<_1`U#KNA4E#HL,L(\8BO@4@ZE5P):JK%( M!P%**S`UA`QE.X+E4CMLHER+S9NV%+'C^:!+2BG:%EF*MXK(B+/H[.HK@/#+'O$9YH%(TJM*CF4Y'&(ZFLT MK>(.3:ND5PZ"P9(;"TJD,%@4>:37D2:QBF@E\26:>#:+Q44.D05)G204H0^V M``$L.0NB5L&*7Q']X06^)")68QBDEH1&,PB(P<=T:IY24ZD(QCIP;,6$BA`* M`?TGDBQTE6]$4LAC!$:Q)I!?P*A_!%ZPIO48.J\4Q2PW1A`(""(P.78B,?SI MIDY5$QJ,'^6O)&."RO^<9$Q0R*+IE&BE\A>K0HC). M_K93OAGNE)HQS:C40#->&3!]]>$F0`:9Q!+Y9P5HZ*12X7JVU)IJ0X?WB$>X%4PAJ2I>4.! M:JI4Y\`=Q!F&@I&FJ`V&91R",Q6Y3^().[C)6_KP3P!3Y!PVCOZF]K,6W$[I M*TI8L$822G6FB&.H:GJ--B8HU!D-7LIFUWAKY#5RK\(]C:M9HP1ECR-K_#Z) ML,93OXH82`CX#C)<7"T.DB-QK3"G>5'%C1EK#DJ&VV.@<";H\Z1BG6>ZCF6 M&7&.*9F<(P0OYTAT#`@"':530<>D(])QZ1B=:CHZ>HJ.3,>7EF6CPA8K?'5( M&YEM&S)QX5Q-Z^A%<0!Z';F.M)HU3KAP[-AUU#K2;-@DZZ?$A]N"H7.;"L;@ M'A1+&XK9H9VC0:#Y(5*\RF1"=I>B"+M1VU@4.48IM'Q37ZDES0.I20ANY$8` M*GQ:_ZF4!1DP@X2:2?U\+0`E*H@D!TD`Y%>_PE&]/CXC+AO%WY]J\WBM2DQ1 MLA@6-\>?X^3O.O4UH1,Z*#8G()8>!S$-UH'HR8>4"M=_]L;C56R*D@5[E#3: M'NV#21K1S^WQ?&.BPN'LITB!.B<`@BBK]L2_J50=>:PN=P>KX_Z$&_1QK*A8_A(S*)/N'\7&.,-XI.QI M%=%'J(PYS9Q&=$8OZ>60(<^0Q9I*A0>B##G\2$,6:\20$*(O).A1?905J8YY M'EB%:ZK$3(7F+=B%)*%]<6"./+<]&+0J4I6J\C)&&?$:R@\N8V%0$?G`0D0F M9N)9J"I'%4]&2!-[Q%'-&V6/]<;=8^UQ]GAO/.@I(/2-5L=#5G*JQI-Y[%=0 M(;-^!!?EWQRRBY>(I,_88UJ1;)P/%M.&/N-Q7%>A)1Q8OJN@Q>G,X,BJ<5F8 MKG05ITC]C!%K/R.HNL^8:/1&QZ@85>*C:$/^*DQ-'ZPGX<"U$"?G0+?C&#M$ M(4V#FAM>A"(Q>#./NO14,D@N9@PCD#A2"D6.K"(Z`.4S?KF[W8^.+V<0"M"P M:$XX_KYX).3!WV=>I#P!3^!1TL$2%S8)PY&%>(&X_=J'WH<.A][$R7*1*F7H MLOX8!TGSX)%0?Q-&$A("K*0Q6)GF1.`1$[F)S$1R(BF2],:*I$9RU*=[Q#U6 M`MELM0]^H-6Q=:7BRX>!070_P9UU$LTF0WALVCUT&QTXH<>#I!\P%.BEZ3PD M9I!^$YR:I'XJ_+BKXDEF<'R281E.1R('2GBIJ4$Q(8:25!%&#C)+D@.<(BBF MK%`9CYQ*X5NF!:G.&^112M*HC/T`IH^'C3BB6)!'N M8RA(O"D[B0-B>/6+L@4:08P`A4(\1XABUL&0R&Y4!0M\MH#)(`U>FYL8?80M1EC3:&I9S@'RSXX*28QBZL\$HM+\(6@,`G! ME,HGTY+EQ;5&9&&STJ-\)(HH[,/4@U."(Y-KF](`#8%>^B2T85GBKO'MLF.\ MCIX0"YO`QE!E_/0U:TZ.S?HHXXOHI.4AJ-+WJXE\'E(UIQX^QJ4F2/B6S`Y2 M=EA>D`?6!<@EI@B\J421'<..Z$F=!;U02.B%*3\L8D)=/XT2"6XR;G@KZTUZ M>FJ(P,G\I&_K$[&$4%+!8IA4]$/C11U)XR6>*%#V'CH/%Y3$`X)29T'>`!L> M-\PC@XSH$I,*$H\G1ENM1-QH>?RHUR1TGC`G7I M8'J'SJHRSB<)!N!4PN5TDK!;\0?=4>&E6A)CPK#$%+F%5C.KF4?1O9C08#L8 MM02+O40.H]T."_>C&B;U:UB#&XK08"DC3-FOZ=>81_Z(`BSKEN>B`\'V:':9 MT`0EO\E6EQO)VF6A\&E\N[A0J:W5Y*WIN(5K9+[B6IY#@YNNH<<$G'!64'V3&<&'0Y M*A^5:JJ^H-SKT4.I+%5>OB(JN0Q2URTB_#0P(3RX0.`5PC2YQ:IKK0:GU$]* M=>B4^$F82Z$L.L$K,5[CP!>D7Q:XFTNEK@HCN,E7L M(F`;PHU#Y>:#MY,).E:>*J^5C*ZWEZE2C,BM]#@!]IB'B$J+8O5+.W>G/++8 M#^,/G9AY8!_)5[&;.%,^S&0EJ0BPDKLR1M&NA%?2*Y.3P`EWI0Y17FFOY!>> MMO*5_4KS"&4M-D(N6BVX*(5I\+2GCDL+BV*LR%.N(6PB@,J()9\2YS6Q'%0* M*AE-A4J,2T@""Z$=#)6QE*P/8Z$,K2]O!XF-M8 MF2`9V)5'U,?2PG&;W%@VN[`AQ4G'R''RT>2!4$X*590/S\F@)=!R:"F=+%I4 M)VG7_65!B M*R65VLJQA`-(D&&P9!\ZEQI.\(?_2P9F3,FV!",=,U99B@Y>AFQME-(FU#W4 M1FHCD!$2SE[#_36H<8Q$"X$16(B=3>3+X?2003R16_Q^\A/33:7R:^E[H$(1 M(5=6*:O(Y6Q*&9-A\DRX(T(2.(Q9Y;+"M^&DDE@&'YY=%\M:D^H$DG!,^;9XVQ20ES.MA,[*^#,:T M*'-WK2M:!(/QYM6\<0C2+A60"`UR2N[R=AF9`$I\&E6#`,S\0_!29PB)T`+V MHGY1A)P$YAQGCD,TG.6P$F.!54N+QJOBR&3%JSA,%E`/V[?,F;*N%D&2"$G< M'5P9-`#.SUCN0Y?EF/G`+)@;Q1HBC7;'B7@_&1_A&F,NGRMBB`Q"AFG=&5C< M"6N8=L+53UD2KR)!DGI(D"Q^YIL?9J/RA#G#Z'8,,25$0LPN'J,2-:?$Q'_\ M,$LBK;,C9G+CA\FI-,WT,*N8&!I9U9*FA[G#S&'BL<9'=PTPY@SS-%.$/-^, MC\)4\9!A#0N3($3QZ7,4[A1G8?DR@&B"SB]>BZ&,2,O^8B$Q!9B(SD*FE660>,A69D$Q&YB,SRR:\(Y(1 M8#P71`#JB$?$1]9D;.@QB#R9H8X)!V`@W)$:4E^0,N\T&XM2)H\$LK/DJN;, M)1PRXR/`P)(KECG+C&,NN=PAN9@D()[FEKG+]`0"V+J+ODR#S)(K($.'7&J- M88:9U1_#C3'3G@&%4F8Z,X>9PTRYE3-3FAG-E%EY`L$B69EAIN0#_E&"XG!I M,Q<7IJ$%5%WFFSFM84UD%.XR9,5KIAD"G6FO66>&,W\95HQKIA4BG@G`25N& M01Q.:<'YV.X"6/RVF"17)KYGW:G;N,6\-/V#),W^!^(RN6/(=.G((CN:9H['"`J/AA1VZVD^ MX\9N0$VQFU#3I\G$7%B<[9J82,TZ85(SJ$G4)&(R,7E86(A]!"#_<'^#%NJMJ39^1$N4/PS\H^^WZ"IF61YN=W4 M-OLT5QID3=?K<5,YPRQA_$:048G\$MSR996&8!.M/DX\XR#,S5FOK\;LP4,H M;+B!YHH%RJ+L$L&I]&&^*QHUX2%\G7@HN\G==(K0H&13]KYX`);]('%0OHG:=!7.-U]2FD#WYB-P/]C9>#+U M_*SJ3Z[Q\Q&U(<_(D*81#LX(9X-SPHE!(6LZ MKJ(VK3^Y3+R/GX6323XTK0(/H`H\!'&2H#'+BA_=+YXNP@@I9*[C9[B#.$4Y M(&.#^I*63CSP6G2WR4ZY-_)43)01%K,NX_C3JC@*9/(SPSCRS4BPQIA\^/B9 M"'U3N0#@L>\>LW\B]P\H4728=C"/K*X&%/U"E68_9T/X![*`SCMZ'+2 M:'(D7+II1Y;3R\GE5&&2.;><:,X)X)C3S,GF+'.Z.=.<,Q\6D0"NE5'#D#\( M([2(>"S!CX+I`,'',$44S[A,_4/)H&G+IKG$=&(.,3V5ALY"YX+F,0BQ<%E& MFVI>0ZFWXMX0.%--S%)V&"V=IC$'B5230X?"TTWU,C"<]).K17F$?##J+'7J M/D:=5XN+$OAONW.;24N&5V1FQHJ#53>&__5\H'V`0FZ=\#^7E)B.B2(_^C(6 M(G^=DEJ''2Z.^.=)1-UY[M3WJGOC&#-P-PRKL9]9[YS]&CNI'?" M.T>.7A-I2%R"$S%SW*[A.(P2,P#,SU)FZH"X.$0D(M@/=[;WBX]%<:5VT'8F MJU`60TBTH.UO>N)O@W?>.T^>`<_1(\K3Y$D+#`(F+%*>*\_["+T^39\)3\`%]2Y8H2N=(%W&#]CZPP!* M:$@5"@NH&EU#ZOFKH'K.VT`VX1>/3;")J;;T/'"BJ6Z$(!EA9\B$Z0;U7'#T MK70]HDBBX%@,`=%6L4&1!+X:90R6C0:G`:4`"TS:/2^`WT)SU5HB!)CW5%?A M/6M"QKO@!E&HD#6"^.X($?5`!:9'1AT$/NEGB;BPH1Z?]Z0JH!K2.;2!*W+H M88IZ@*M\9MUR\ZE[T`GJ!"$Q>`?/9,;$S-&YR:'\N#Q"@D^QS63GL3'*:7V^ MP#B-TAW5D^S3DP)ZQ*2LW^1^$\!0G98S]]GF3'/N/G^?ND\O9URFG$G\'&<6 M/X>?QD\=80V*6_.4-%G<%*\0#`W-AS`"U)3R)(717T1Z`D&7)UH0$*2BT7YZ M/[N?X,^;)\T3\!'^5'F./W.>,D^69\U3_9G^M(>H9/J`H#*<)-E/L8J;&H6->EFU+/1#Z>-A#8/J>>! M[AX@Y@L83]Q)`5J.(H#>@J1P82`,:'TGXK(!_3MT0,T8']"`QQQ/!)I.#.@= M'Y-+'=!O5."I`UJP8('Z-05@V8].6@PO%]=]:_"L">T\):?5!F3H193"^1V) MSE)];:<%#Q.F4I':X%0407-CE(_4!G#C/$:SZ)_AUE(>3PTYYO\`7C"7"+S$ M_5(D;3QM'4E,K7;G&:.P-PQPS(VXYC".=$8S(X.^LN`:9]![B`X4H0<$%:*< M)-N@@*OZSFI##BI/&W_L/NR@L9M&&NG'VR&*&PC)TH:(?DU6F`P*$*KE$(3" M01,^SRN=SA-'$+HX0F MKQ1OH3<4)INKDW9NT.9O:>L.CI':`\TS_Q6T$-=I?BF)V] M-]J17$C"9.MG('CI!(3R0MT3*B$.HPX4IR$,16H10RU(X9%=E8IBPR@-(0.> M0U(SP)RP4-U'X7.Q.&OP\=!X9[S/5"CTZH8>P8,V=XAJW=`V*.Z-&8J/&J0U MX\X7[`TC30)T'R9AS[!G#+8O'/(L[W,(9?59ZV)W2+A>DA`)7J#Q"'+4 ME7!ZJ]`FQ]Y'7.7M`2!P@]J8=)Y@:`IGJJ8076TP1->2P;*EALLE(@K4J+== M.=I!GM"4"204$!KFP<]T@IILFM!3!YA/W-/OF3/B/!X6/@TPI@+.&^H.V0-E M!=^+==`XZ(=C$IK"X?+X0?F@?!H,WBP,[)+J:&B*0@&.0T0!QV=GR?$WH7AM M#(D:`Z.^6E)T?&*%"%%V6,IQ;JH:!NF!'QKQS-RL2Q9DA#IN2&^,;D,Q*7?) M;&PN092GFX/'BMB($(X`-0Q(0XV:8EJ4AR*"<@@$H<1:Y*-[5%L4R[.+8M#9 M10L=IK5WJ#MT+WJZFX>JIH0HWE!SQSD4*DH818!>ZTP_=U'$J"BT)-H.K1OZ MJ.JAD%'`:&3T!4H)CD!4\`AP4LD M$(P`<0`'0PI@=,(<0`%(`5(`9P`40!`@!6`&0`$8`5(`:``40(F!QX$IV$J" M`'8&1@`X@(/A#9`"D`.@`,8`=0##@!L@!>`&0`'0`;:C#@$Q``H`M9`"2`.@ M`,(`Y%$4P!2@6!`78`J0`<"C*(`FP%E@QV`6:`%``?BC!](Y0()@+I`@30+L M1_NC"08!02,A!?`S,6#(!!(%\-$W@((414`'^(^.`5``0H"G@1P@#[`K8`%0 M&$``1H#^:!8@!<`&.)!.!5(`'R8!:17`#:`C2`'X'6`"&24%0(H4!:`$"`,8 M!N8`*8`7Z4D@!:`B/2AH"VRDDH(<:834>;`&H(\:2)D`=(`'Z54I^U986)(V M2<<`5%(4P!J`PC`?G0N8#6RD8@$MZ9!41^`"V(YN#`2D2`$@J8!!0%IBZ)$> M!BP#&M(R`(944*H&.)#&!5(`9``4P!-`"N`$8`*D`#81V;=ZQ9(T",`&2)`> M`9P'Q`(;Z7%`2[HH;90:2=D>W`H!PY)4"'!JL)2B!N``<``;:9))2QH$\)3" M%@`(SA1,P9)4"C`C,`,D2)$`5`8X0`H@.QI4L)$6!;2D1X`F`!'`2.JT@`D0 M3#8&HU*$0($4!;`$()*V!-*DKP$W@(TT-:HE]9"^!BJE&1ACZ=+A/8HC59%* M`8X%_U$5Z80A/,H$.!:L`;"D.-+^:*O441I7@@FX(#P:V06/@8+T-6`'2),* M2LL`BM(6Z1L`7NEJH7<40T@.;8D+1?0$!"E"E(BJ1Q@6IHN10$D M`80`38"!*16@3AH>50(035$`5X"*`)1@/SJN2!0\#)6D$U,B`()41

)"6 M1Z\`%5.@P)I41?HTT)3V3#NE[%+N:"O#Z<`ME9`"@M+R:"M#4XH"B`EX!1ZEL-*9`(I4/8H&^`]`2.\`:=*+P)HT/(HY59'2 M#`:FQ@-4Z:[48DI7"!9`2,4`:=()0WDT""`%N)#V2,>CX5')P(,T/.H$F`*< M1U.C*`!'P=,`0HHBV(^J2.T#88#A`(34=YH[;0.D25&GO%)_:7ET!,`\G9:B M`%"G&-/PZ.U`4!H3H!HI']^C(H:*P)0`*#`PG0+X30\#(]+RZ'FT1UIHF!Y, M"9:EWE-M@8K@7FHH?9`:2/ND*(`R`)I418H&*"B@1B<,"H#RZ!#@,``MW9WJ M3^FCV5&4P.CT::`]K9=R34FD#Y,=5DD@#R`>3350&?BGO],$J1/@#5`G%40H M``2D!A(I0`N@F[078#K420T%6@7FJ%D@+:!R6$``"8840,2S.QH#,))21\U]\-$>J=`A!3`'N(].2%,`2QP^:0H`1%`2P)/J M2GNH,X(W0&E@@`HE!5JD05(40!$@>)HF10,` M21,%9534P!GUAUH>?:,:2*>G;-(U:J$`0EI'#3'0#!($9P#+P(,47$6`F9PB M2,.C?X;-Z?-T@!HN10%T3N.G_-/T*`P`0BH[39"Z`4`$%=0`J<]T/SHG$9!B M4L.CD0$>*@I`#7`1B`JD3MFD>5)!*E,`*#`5J)0:2%L%$0:?@/8T10`EE9Y6 M3J&D9H`0PZB!*3`PO0@8$3H("=*#`!/5AGKN"YH%;(`)@U@`!5`<2#"T`50'5M-5*L:T/(I)):6^ M0+"GNM-*0QX`G`JKB*0B!*8"QE-\J5E`GLH:F)$F2&NI"H#T*":U/$H\S8\^ M#:2ISE0?:F25^I"P=DJK_TDHH&F`B\"GH"^M$$08J`>VH@O3+4 M#A"IMR5MZ>1T?$HZ!9("!I*J@M+TJ%7A)!0=:3&3AVK`-000R$50JI/'0[T4]^I`55@:LSA/TI3A8UR M3TFI(5+4NFC^%+N@(Z@=M`L2`'8 M39FJ$U*G:E852KI599-"&`:H?E,S@$05H.H\\)?B3E$$HU-O:F4`<)H@U:I2 M5Q.DR-4T:GC4KQI4E:I&3+&G50#C`3-UPL#CN*"V5?&EX56#JCB55\I<10&@ M4Q.D1X,TJ0$U?OI.I8^&1[\*;U74JJ`T/"I''9:F1_>C"@`5:7[T>#I`E0-( M5G.K.-)G:J74/EHI/1(8`0JE\56G*D-U/VI-';"B`,BK-E(O*M,AAH$]19[& M3W\"^X2!*8I@GJI@)9)>5@6FX=$4043UG1H&V)K&3R6K$8;@:6+5E=HV!:WN M2D6KR57)JG?UCNI#I2L@#@*I]E4\@B-516IBO0@T5@.HHU,R`)RT?6I#%7G` M*ABHNM+DZ='`(P`D':KR6&\'M-0$Z:\`[0F<%8BGK%440(;UD+H=!2`( M2">H"`56@7Y`#/`C3:3^"F"C3E5\J:7!QII6_:[B2V$#T52_Z7^T4&II(!:` M4\NC>5)\*3,U!4!Z,)6,//@"6%:T@D^@(Z`]Y9"^2->LG%0.ZW_0EH6DVL.U9`J]L@*F`Z#8]" M3VVKL];4*@I@#I`'(!90&;JK^U&ZJJ!4Q!JB@)=F2$&I;@#]*+049YI;5;-* M4@FI0=:!J44`O^H@?:4R!7"M\=6+P!S`1AI33;;:2H^MEM/P:/.`#MDH$1:8P5R4ID+0WL M5V.I*(#(0&=5=9!+=:\B`>BC55+#:G?T=F`Y-9!&!DZF'%(WJGPU1>!A?:.& M1RNJB(,*:[+5H/H62`R\6@6LI-:!*[9@@)H@S9.24F\".0$&*M452FHW/;/R M#JX*"H)/J[OU5)I=W3&P`1BG&](1*4.5M1IBJ*,"6[.K;-*;:^ZTLSHP+0YD M6>.GX00TZ[)48)HHQ:0J4^D*/H$)`3%PI0($ M5!.EQ8$DP4H`AGH^-9#Z4=NJZ5$N`!>`(T!7**Z&1]^MTE.N:H@AB7H&R`.( M`!BGC=6H*]?TZ+HSA9#*6(VM%-4RP.,5:P`E=;WN1_&E\-3*:LXU11!B-6`@ M062E5%:[Z7^@W'I?6!U,!)RG2M=&JNH@0Q!.6+Y&7ND`=5*I*)\TH&IGA0L, M!Z8$!E7[PK.5?DI9C:K"5_FN`52@ZL#4ZPI03;FJ65L%#=8J:^TP[FHQ=0/, M6%&O%`&Q*^T`S,I1O::"3L^N,59;:0/6PWIUS19P2`6IJ`$Z*Y4!L-J]8(\2 M8$VOMU:R*KUUMLHU?2+L`0"L55(DZVN@LTHDQ;8Z5<.C!-+R:`46G(H&"#&0 M5U\`L81C@7.55F!:Q3)H7/VK"M6.*VTUJLI1Y:I:3%L`Y%30!?F`@>I5=:HB M50>N?IA70F0`=BLHQ/WJM#@/QI?$I"B M3;FFFE8"J6J5"!M/A;EZ6E\##])"*605#N!(393*6_NI]=6`*>(U#A!B&*5B M"D06-%.%:AF`3_`?L!&,`:"DA5*D0+2433I2#2JX3Y.L2`.4@(T@,E`I+8]B M&28$B0$(Z18@!;`<-0*D1W\`G%@<::&T"U!!]6@057FIIMCO*J+5U#HP/1K$ M!6*MMM(.ZPC6_UI02)!Z7!FMT=,!Z44@"?L7,*=^5^<2W='%:NXU03IL/;&Z M""8,A5)S*PK`JZHDV+N&5@FJDE6SP5S@@2IYG<(:5!&DL=?9:QJ@]LH]S;T^ M7GFOOE?&Z=RUVIIL=0,`7?FHH]=F#?;4U9[Z8SUV(IK[9T2"%RPZ]-2K'OU"<`T_<-*'2:G4`+#`)`44R`@#;_2 M3U4']=5Q+.>T5)H>G0KP!&:M]%&'ZKU`?CHA90K@3].CO=/^*9KU?.I&U;3. M5,NQ_5,:0HK`,B`\-9!Z&@*L*E+-:9W40'H4$,EZ47\#VU(&*M@587"-;;+6 M"-BDLX%@06_`=/I,/93*8"D"Q@-MJT#UYRIH"+HF3@NO,%=)ZCXV?BIQ_9W6 M5^6OC%=4ZED`$PLA-0.@!GRJ'U8`JL4TRBJ`K6*(2BVN>ME":GU@X1!R]9?B M2V>P%]@";()THQ!E?1H@63^OI-,V0$!A*K`':!38"#BD4]B;Z4EV!3MOU;#> M1R4#IU.V*PRV?)II%<"6O["GFUA#@2<6!0"*5 M!:``3P`FP!/@",`O(,^"JY`P\%$IJ@N`.5M%10%8`;:Q_%3N*1=,B-H"X`L8 M4>NC%M,F;!.5-<*""*/N4O6D4U>!JT,VDWH8(*#F5'\"!`*T*QYU*+M';;T. M7'FPG5D*P^XU%IMK';BR!KJI$EC`["2UH*IB!I0C$92VFIM9<:GNHUDNK.X5\NI;?:_>1QNID@'+0$Y5WSIIE0I, M&'JDZ=+*IZ60YI"Q6@R82L#:P`10&EV`IL@1;<6 M!]:M-(!V*Y+VX@J-A;?::.FPX52]K&?VOKI4G0@<726O'5;>Z44`R_"-C0MT M:I.TT%BG:GG4+BM/):>Z+WZMY0%0[5R`!IMTKND=M,D`!G6/UN`G;'J M6O$#:=?;044@X%IUC:?.9-^O,-:QJRV5-#`5&`Z83C>L$EH4`.TU/ULIW:I^ M8]D`2-A#;7/"X:I$/=6B`"JHD%3Q*)14^R8@K=%:9"L,M8+UZ9351'L@K1'( M4[6G:%(9K$+V`EMJU7F.G>-I0JL95X(II'<9Z M4>]P/5?+P/.`P1I`A1F<`7RL&->]J8.5`PL"F%YB3W>TX]7[`+(6=_JKO4(0 M2?FH!E(S@/N5CUH>9=.&8F<">`FC[;8B)[`CT+[=`0BF4@#J+!(`O(IE@*#Z M1_^UA5>?K`-VJ0J`39XV7I6UDM7[:D]V#$`C*`Z04U4+#M<_+<`57VIKW=G& M$OVC"UF+:8C6\MJ&!=.Z6/6NZ=']:I1`)#N%=1MD73>M%-4TP+IU!G!K]9V6 M6B&D4-JS@)I60+I##=H:4D>RW=&/ZY.V;;H[!5=1(+"O.MMG*9,UN^I@M9.Z M5W>Q--7F0IWT+]`=+0+@`:ZPZM,1Z6^@.[J`=:3B2Q,$%U7]0#]V!=M(;<'6 M"NJK_%?7:8B!==H$&(^J2(<`Y%E\:6HV-LN:G[#F6)ZNO#8\^5*FM^=0Z@#SV>PJMU<4: M9MNJ"H#QJLF6+YL>1`6:WJEIP:U1@>_I$<-C:2'>W%5N84>P&MPB0FAVU1J_G=^J M3R>N3E29`/:40$JC?2)$<3NMTU=`0P7502`@?;HB9>.GQ%<;*3!60.I=W14< M4SFM1MP@[LQ64)H_/=9Z5B^TTX4>+*[5\$I\==E.!,X`FM?B:^ST4$I*C4J, M'M"W'US60-B5*YO"U2?H2A&M7]SOZJ*VC%L>3>,.:56M_-6Y[<548$M/Y=2: M;56X,5@3+H'`7VI']*6.E*V%.M@<\60CI=\,E* M$$*O0-)4[!C5>^N/E0.8!<2L]X$J[J"6EFK'G:A.%>X#>E2QJ_3U@FM03;$V M:P.S/U1O;'950)L@C<@>4">J/MN1JU1U#8(]W<5*3_^X<55$*R]7H?H\>!I, M!YZY@`8"KG&U"UL[@)*^2'>Q-5A@ZTH@1]L=!<%&:-VT9UQM[8%T!+MB1:M> M2Z>K35MV:[]5HPIPS:9^5SVJ(@OL:4U5\8IO[<=67/&JAP&]ZEBU*_L@M>$. M3].D"];5+1\V?MJZS:P2:HFU356#JG?53"N%C:>R;N4"+-,RZS:V0ILBV..Z M5RFE4`)!;L2VH[H%DW4P4/VW(-I,JA>VOMJD5>BB3(.KTD0O7Y9VB%O9!0[T7$6WPM9"P3>V=%I>Y7$T=-FO[%J+P,&V80LAS>@& M:UN[Y%@J+A\57VJU-10,*28+QET0`$@AOO2U=6M]1WND)89ZZV07EKMCW2=D M5#>N'MW4ZQA@)8"B+90V6<&LI-29*0%6L0LDY>,R=JVZH=E<[+`UQ$#!E:Z" M4S&L`=A$*7:U9PO459@*=?.Q^-2#*FL@LNO2O;WB='^H"=V(;G>UOHJ[UT:-8CZT;7NUH$P`)T M9\6SY-GPZ/1V-:N]IM4/$I<<-ZZ4*<`=5*/[@1588K6_8_V MG>P`0+[A**CO<%>A68<6E5UC\:`=77SN%/>L"4O^Y>56![F]UNK!6_;(^ MK#MX^[%"WBBMZ-95X\HZV=-UC`99TX+I\]9OR M5:&PHM.>;3J5A'OEM:UF60F\6%@4;3X50XN'W?`.3)FU2=9"JDVV8DK:-6PJ M26&DQH39J6*65\OFS;^V=G6Z:EL/Z\#6]@ILG>[V7E^J:==W*TYVO>LVR*ZJ M4C>IT=KR:('UT0O3)>DV6`>T?Y-P"0,U3[J?1=-&=M.\(]K/K8%41LLF51)T M&GZV!M+N+NG!1W:H2Q2,=P4,7]LD@!,@"E!@3?)":H&VV=IK+!MV@NLW!=:: M3NV[QU2VZO144`N15:)^5=^N=P>1KH>7>LJN'>GR;&FZDE4N@".7"Y`",+Y: M5ZVM>U2K:B87VSM:U=*^>=T`W-78*T&7#("#O0@<"^B]==)"J>D5IBO/?9$: M4_.W^MI.K\443PO8?;NN%K"G&]=":64`VSK47986:;^KZ=%9;WC4W2O31?3R M=MNN!ECDZ^T@YN!AE?>.6>F]9%LU[^?V2DNF=;;&9>>TYEJ);GYU+;MP_<-> M(3"^]-'TJ*(W?HIA$-=>5=.O;M9K;Z\7ATO+Y<=&:&&P4UOV;7<7!"`3$##, M,YR],`&^0+1WVJN>'0(\5?VCC`;]P&N@S"O:S19H>DF^[-U^+--WXQJM?='Z M&QFH*((^P5F@6DLU`)*R:W\"I=,$`<=VP4LZ;?!J;NV^'=BP`[P41UH>?3#@ M1_&T*0(=`/:65'*@=>F&?*D`,@"K0'7W/W#X)>ZZ4=.LDUH5+OZ4:^KD3;[Z M38L#FM[@ZVSUG!OL=:H62D6WB5(Y`98!J-IT7;]:3D>OHY.>:ZBUB"#(5=6J M88F^3E*T*N,416L@/0A8!CBXA]STTA=?JA$6',MQC0L<>Y.PFT7L*>W`C@ON7;6> M?GD',%33:1$V[6I?V`\07ZN[%%SB+LW7CILHY?WZ1VFX:-C2+($5\FL5J/," M7EXP\=GL[`S`2*JJ+0(83_NCJ%/[:+"@[NO<)>1J6JVVHU>_['OT%J'P9;\^ M:D.GRUU<[O)WU/OGE>ZN<\V].M_/Z?I7Z"N:#3%(;0NX^]<6+605#HMP1;O" M8.\#A@&XJAQ@3:K6#8^R:8^F5]2G[&DVTHIYI<U45]JZK)4G(HOO:\F=->^3P/>JH>U=QNP9?$J@:.VN]C[J\R7$ZL`"*$" M9T>H&@,0@%FI./L@.,Y>'7`&T-GL+`T@_1JQ?0*D2:T`UMDAZG:V,5`$P)I2 M;!6EY]'R*!4`"5`$@)!V9].D6($GP!2@"&!@#3%8;<6G50`GP!"`"I`$>`+4 M3AVF38?G+&UV`/R>=;AJ4G6EO=[Y+D6`LTME7Y" M?8&X+5Z&JD&5BK#1%9@VM-P`[*7.``APAE:.";@FY]56[++"@OUIS;:2:;".T3]Z-JHC6_^F.55,:RL7H9JE#<+6@>N3E+JZ=?"`_'VI?YN M4K&SL`'Y:8W`PTJXW3$P;@&SD-4V`"+5?2$&IIG>(E+"G@MM,/*`-LN1[;K" M7%FW#-*)Z[9V$WQ:C71R_!;%;:K3]X.TK-M0]L M@MNR_M&VZ\E58(N?+:ZB'@X1)D"@KZGW6\!Q-:BR?>^_?%;4JO^U=]I(@*&V M@W^G,=D#J2VAT("+]8^V@I^[@M(&\(`T"3Q6M?">!6ZYZE^@+%W5&'N:QG`97N&A;QJ M7/&__-4I[$8@!=!"U=L6"ZZY:MW6<`P#^SH]3:D2>B&WUMVGK84VT9IT'=G^ M;#.KK59^K'X@=8I-]:0>2K^N>0"`[T4536H@G0A`=>&QE]W#+M%7*LQ'/0P7 M;:.R@%O#P.SVL&J?+0SK9^^DON%^;ZGW`UP:>,$*8EFN[6`L+A36Q$HD^`^< M3Q4`7ER>&[[-TE,->5FYLB^-F2?MG!_EX&+YQWQSIJ8+,"Y]RKA%4^@:EUB"O(I17B M*3"^[->(;788NQLAQI?F4?NU-@)4\$3U#`#9]>>V4C$&;%<%KRH8IGNXA=I^ M9I\(P^`!JF4`6+L2'I#>90.NQ%_[JFNU4FH?5FF(>+^IB=F*:Z&6_XH@U;.: M>YNQR=A-+?<754M.97OT7)&VA&%N+!%X^WL_A9"Z8LD`WU\B[8R@U5LE+0]# M;MFZ#MJWL#<8E4I=V.;^@JNX-6%_[#&5']M!J*`:,`2D1MYU;8*VYXLD/?/% M:+.K^E*\K#&5(2OTS?0:7\^Z(-_8;J(8=XI[I1#77*>MG&`KL!5WZFN:L#J< M(Q9'PMFNK=;7A2H%\'%43*D`?6#O+H>$B7".$._"!*"]8%M`[@X;=MFDLF(;L:KVBAKRB*0Z M<3L"/])DK`,6JTN,E=^&<-^X$51!\?UV2$RK98U$_Q3#!&+&<)C--5:[[MW=^H6+H]63EL"_MRIP-&U4EHH#1=C M9=6RA&&[+>YTO0L%E@.(2*?`06$,L3"8&(OB%=X&=OFV1P,5KE4!USMVX!#G M21.I4X6$ZIJT.1REA9"Z<_FKZ5';[8HV&GL>YLY63)FW1E[H[=?WQ3L@=9(B M#/ZF^]S>;?J5FFMZ90VG8B7&$MEEJ;V533KTO0/P5!>QE50$JT<55,I`19`B M>`6]?]T?Z966MAKN50V?;1T-#U8.+3R54.Q*W0-`C?^V086!:;AX/]P=52R@ M50'#Q0)%+@D&3YK*A:<^C'$';^/X*;:4-:(%\\5:C%'&%^*%*O/W3GLB%KBR MCN+%5B;,'U-=`&`/5J M7)\&I6/!L&?W7/&EI3)#[**5`X_K,[=76:9VG8H"KK#75\)KY1?5Z M="NU0UV\<9T7)K"10Y9&4=7`!.#NZ!.@7MH?]3!H"S"GO=X\*+<#EH8G<52W\GJDU<4J@]^JA]9N\!P5!LL6]L$"A1/'0V,V;';X7PN4):52 M('RQS87(+G:VL]HJ2#"@!8"DZY:_!O;4M<`7'LCR4OV[L(%";."V50P/+H_* M>T.O_UOA\,`T",`$<)0F="_!,%\C\7K7_OO-M1&4"5+#LM,7P/+73Z`PENG2 M=$VGK6'4`XF5@7HL`*?:AV,"XXJR:7ITZMO1$+I,()RF?`&N+4P`+U'>[16/ M1]&[P6)9(L'$)A!$'N]Z-+ZV1P#OK*)T62SO+0T\2`T%HPM3R1'96`RK^-K. M"$:M9=@/:^V`"WSC$B-7D54.)8&OK67@#L`XA0=[=SL:'@T@,M;WP_2UY;,: M<-NN5X7=Z7*4Z?""T2,;BS&8?61[:1X`YFMA+912@>W#UUW\&#L[!K9IHN5_;A*7M.CE^`><0'/3TJ+2WDNQ+7H[VF[[)AY5#,A-93:I(KB"/A36^*N#=*7:V?0P4J!4L M2]V[X&)Y\"\UQ-!";NUV$+S)ZPOC\6IVG.QZ#23[2VG)U.!\BCJ9D^Q'-JYR M@Z'`9H'[+3V91M!GQ2>O>.7!%574<66`7/N3A?Z69IVTC=PY\EO7EQP>E?<2 M"$+#`&'WA<,5W_HXIO<"E#^R>%[+:<68-)QV;:@^DTFYQ%Y%:S'!W0$C0%]UEORJ2(Y5-9VFN5D00-<667Q&+I!N;V?"$]^@@LN6X*HB:*2B M!@H*QX(9*YT8ZV1%)<,"A/4"OEA-,'?U"4N%[0Y_B">_D]O*+:9V08P7IJP: MBFFM]5=<*PAW+J%6CJ"&1R?*Q]O)ZQEA5*\\EE@SXL1_L4N MA;5_D]-WJSI5,K`&,!T[D[^YLN"D[5\Y4_M.U1:D7<4`T]8U0*4X%.L%+@&0 M!<#`B8(D'1D87(6<10/39FD`S=FA:AI8.DN=!19?9[>S%.1^(N=6BPR>Q?'^ MDM6C@6#U+'M6/`M!=A#`9[>W#`%WLL_45CK(I:[.8JFZ.UC9J8.43?"(Q>&6 M6AVSW=AR[/I6L_J9[:PZ#Q*S(M*CL?R8W,I)5>%.C4^T)>"Z+@&9V%NU]0;_ MD+<"V%/++$J6'+Q9M3.T<%^Y$X%`@>2XIFR.W>R>3RVQ084C[K+T)=RAG1!? M@AFZ(6$(LGLUP1P_/J:.C3VG(N$\283+S4Y1-3=[?'P&`E\*+7J5#"U?!" MDC],#%3-KJ/A'GS%;3%?>-.HJ&1&K?,42TM_?0)+5J>GFE:Q+\-8PJSI)?9F MA'O!&^%R+,?7I3I3SC+K<3/$.P[0+@.57)R*A=#N6'^RB(1&ZH'Y.URN92`3 M2><`"%F**MS6EKJR90D3>%>L.]86LNK8!BQ'%*L,6H!"=L:CG@Z M7)FM`M,7Z=2XL_L[!3"C@(>];-<.LU/AQTP%=KVR8C7+?V6/KI@9U6S%91.C MBL^J*-5;[JTZ M4_NP\5_V+?_U$'QX[3"C%5ZJY%_[:@TY[1NXI0*71V>IN-/*@,'U);M,SLZ2 M4S=R']@\KSS7S2LC!OB.?=O!=M1B[VU7[\MAC;J.J=E0V+`R`!1`#8)RZ M`#[.>UZ\*BYU.QJQ)1<_:N&I5F%ER94,,"P))JONV44M.S9&535^DKH4U<`WU>RP@90+P M3=O&4./F,9G8R^H!MH]R?SVZ%F-P%<;%0,N1'>BNC9?!]M*&J9YURMPR;2LK M6NFMHM5C\BN7PIPJOCD'F&7%BN(YJG<7#]<78#K@BI7(7EM>L:\8BHQ:_IDD M"K;.K64L,GEY64SIY>%"""Z]Z54?,H`8GEH9H!;04JVY-M5J+%]YCFPP-91N M3K>W\%1C[^YTHCHU-A(;?0_---LSL[25MRQS/@J+E-/,?V4O*DZ`0UQ6;<," MES6]CV%X*G"Y?OMBCN8^=RVG4]S^\5GV,XMDW?+BDX>Q?U8W[BUWQEHHO;JR M;`.J&%B9KU-5];SO"#-;<96Q\.#F*J?7Y^KI5>0";!7$H&;J;LMYC]L=):SN M8J'"C-0V\WU4/R!>%=SV5Q?#LV4!*ZLVM6NLA2MWUP=7_J('4_UJCG2B/ MDI.M;MA+[>^4S"QKY=5Z=$_/OUS2\SSW#A?:9<.^6G>R<.+#ZXL4D^IZ5>.B M4DG/)MZC`,BT\!JBO?V*=HVN]E)-JTF6G_O[/0KG6!L)>&.]\L7X&9O3Y38C MAY?/6S#IRSDU,SQ7IMSZ"1H)>][,;@H:;ZQWG:ARA^&I_&-^Q;VYW6;K;31\_BB.\K.';TCI""Q9.UA^' M8O\'IA)"=-8W5[Q$YB0W;R^DB((/4Q74HS'>72>;=W_%762B\L@C$:T7P"5S MDL_(4U9K;>DXU8I7E>=*?&^J'MX]+^69MPSS_:/29JG`L-7F,_66H*Q&_B*K M'':WI@FL;QFYDRP6[B7_E>W.P.2H+MN6AFQ7IA!77XG'N07XJ#B9DFR4+46+ MA;G!/><`+';VI%OEO0*;GU7(>=\]]`0ZDMN9K;Z*/`0ORNA)\A)8@C`'D/>J M`&"^(=UWLKY9P<'>U\=/PLSW:ISO3U:XZ MG.7*^^@IP?#X5AAWI=Z^DF/)NF3^LRN!-CL1\*;>6A^DK0SW*O]9KP/0HF>B[=WB+[NC-1)/:^>^V55K+8=TH@IW'@7?;]W..=7:;H>9&]WH99]!#2K1U6 MI6T"GVC:;\L4YIQZ5>V&$_``+^[AE?4L+8UUFKM#;V*D/.I']H:,#]9].R9]3?; M?*&M--9B M;(?/_.#3M'MU.+H^M3TC5J.JR]5E:2V6;VLO]=L";M/$'%K'M+3V7AO$);F^ M<&6P_FFO,(]$8!+E#+55"K'';`U^C";7KZ@OM!_13\ M9IW+P5GJJ"QQNFP&+BQ<1\.C26Y0/[ M@34*EL@;19B+)P2)BS$ MJ6FS,0!TM*J6<+N6CNKVAE.W=-TFZS[7,5U-+;Q*5K,,&]UY[849THJGYI!2 M6$>GA5C$LKQW-BL@50/P4+G!,%_5K(!T!Z!8[HZ&%C35*`!.=;)54UWO'>2Z MJ5$`[%0X=9RT4^U4-@+4J6^D1@`'<'$`#X"J5E6C3+._V]L5P,`T4%WOS:;: MJF'5:8<_=:&4@IR.-H]63+_/T5W',H34.W62=.CSNGN*GWYM@QF5MDV M9LFC?&64*6PYXMM6'2;[IQ75PFB'-4_XJ2I4'J8BECW-ZUT!=9;40.JIGE@; M7@<$F>$:+:*Z0[W/S9.&E+?3$6O$LHDW?#RAEB]<8>7'D.0I+^]9W=S>U;]" M?#^^H%F`;:M9#@#P+=A^:NFG\M,TJ7+Y<6N!)MPVGG7'$UU,+MZ8S7JH!<[M M9CW2L&3]M%N:MVQ^J MIH/!,6K"+5-`:GW++0\;`<(`>6JGJFO6Y;SXQ5N?JO?6>UX)-(X4;ST7*%3_ M2D^_4=41]!,!7'H?8`$G=*W3/]ED\./8F$L=!<8R4(&W4-PT,FP@]SL5D`8+ MHIE@V%.]J?%`)&O#Q3COG,6LP=QXM.?6J6H@W3BS23O.`U,9`.-T`+P;7JCZ MGW&MDNME,+F6)Z`&T+&J"%RV_FJ[`)"TL``A(,"^6X$#[M65M0W90WT&1FDX M7&>IRPL:JB!W.SL`/@.'D2?(>E)=*O2ZL/"U(,"B>5$`U>O"PK..0SP`#H^Z MKK&SS-FC](,)SWL8>$Z78QW/&V/(\]1:!$L5&%Y/%J(2OU9&];*T!^`P5=5B ME\_`#PB'@/,96WT'YE_/3+NCY^N(K>QZ8#H#8)S2`/:\-@#[=?8ML'I.K5=W M?@W8HPS:3=O`'IBZKLNC'6Q9*N,T?1U8+9$X7),`ME*:ZYT96VRO;5$? M60VJ8U9[*1<6TTI7!LHEM@[^K:MWR[!J\>IHO1B6F/JLX:GKJ*=@.H M4F7+X>`L\*85WQL9V"COI-'6G]O,K(?U-ST"-D1[=VL8>61$]-U9J;R(_MHZ M`1:EK=(EP,':9SKHK=?:L&FZJ`&UKZWTKEO#`!)3A:W,IUZFK197HRO$Y3*_ MB+.],UN.;0Z[A;V"!BW_A%6Q_.0?=F!8N%PHV$B',`7*2&>1P'P6$MP=A3*W M!*3,S&/!L9[4O5IUQC.[;+/.IA*I0RNY4,K$M;B>BW6_ZF,[KI$6!*VOG:A: M!A0)L.?,,&;9P[K>A0M#L4?*PV4S[P_VT(MG_JK&6`W*E&OB\5Z@!DT]73S_ MG_FTF=/%K'?XZVLQWN3"G@6N0&E8-JS7F+P)/C'_^:FU&[_6B84F@7G:I`!@E+ MBC&F_-B,M1NZ?9M\!=8*:Q6SE5.H+?=XL]&9@LPI:H4O59<.*@WN^?Q,NF-PUZ+LX_J32 MM*G9[FB(+-E97NR'1@I'AG&G%=<];0SU]DJ6'3/7IV_9S%P9`9]`Z%K71270 MH;$;'.+:-#9:#QVTCAT+I2&Y^]2B=*IXH6VUG1O0$KNM8-3Q[J[X$HW>?:GV MC&G%,],0P;3DD+PKQDI#`<:V]=9CLF?7*V!*Y?>F*HZH"SC41>M[FSZ\8X5JDNDI2F+6$TMXM\>JX+8V'LR/A3[ MDG&RL&+VK8;9,M#ZO?:Z:1>KGVTD:W'@\]MGM2],>'>G+EU++&^97.M=9>J& M2K`/(EUJ,3DYEAU,50?;?[_61H34L,MW^5NC'>)^?>?8\UAX\2#;6VR!/0/` M?+>P;-(2[VFZ;LQ+/3E+JUND*_[P;:MLVNQ6WOK,VZ==D)03'YVPSV/=E"FZ&M]>`SZCTX;4M9QI>F MJQNF*^P^,>S71P;W!4^K".*TRU(J\(U;_-SJG28_I#N["F("0>\TF$S;'NAB M?[>SLP&?0*W5_HSRW;$J2_^V'(&W0'Z`I9UN'L:R;8^IHUV;=H19$HOB71`@ M<9/(4X>>J][4-OV]U19[>^.P)%S1]L#T<0S)CAKC3A?:QE0X=POW2=LGD`?+ M6N/9K&ST-LPU$PM]96H/D-7')5P,](0A'4N[9:!2@8O/7.9RKXY;D6M-7>_" ME>/"'E:Z\`[[HZR*_;\2HP/#=^S1*NJYD`T@K1O3ES/8R585[GSUQCH\K31+ MF'FQ-H6N<;ZYMDI/?A^+C:'8Z6>/[D^61:U@U;]RI^W"/-:=Z%VM="B6HOFB)D)NDLW(8NFALBT:0D!9.,U^O#^S=(67/L^F9]>S[5EO;2&:%FU)KCCL M;I$P%6\NME]:C0N95D>'DK>S)V@+].P9,7V`AJT6HC_296>B,HO$7:KNWD7G MH7O1M-E0\J,V[1VBS4/C=M>[RF18M'IIVG"&F*JFGZ-Q"9ILV^ MK06F:>37J]^;XLR'ID"G6J?;_=BI[(:`#ST.UG;_GZD#Y6F-P8ZY'/NN-C\G M2J>^V`>^`'!N+9!47BHK`*#2U-E0[.M!]UWPSCOSM=6C,-_W[([9+MTR57#[ M2\>W7NOA-H<4.]O_#.8'-#Z;@Y`V*WGR3HUG>1W"7=_(4YCW3';4: M96_>:P"8[U':+[#)IK(>I7-W$6]O<,7!B?H7R($WHIO(>V?U:+`8)"!]P8*? MO+/(RN(+J0<9+PU&[FA0?;O@?>DX0\M//T@QV29D77 M>S4(M%G2[F%EL/JLYL)>IBO;G5G'\/\Y[DNMS4G7?76KT.S?KZ9;?7W.R(++ MG5_4II)*N`X<;)N59H.[AO/(FG"P-,A[U+HW9H,_"$BIH?!=-%R7< MI=^F]E4+]I35^@TR[8/CO.N]'E5=[_96+FTL=>K>(CS3+](?.'NT%UX2B(.' MI3W)O.2\MR]9E%R8]F'_NA^R-MBVMZE$(IG^SEK+DFW1S_=9FO#][LU/^W-O3?'MSFTC.^!J>-[_YI1M4!+ MOG_(4H>>*PI9-.W9C6%0J@?*E.38;6-6GMN3W55_OA^]%NS1=YJZ4'KZYJ7R MAUO39=QM=%R[52OP_?C*OA>[)^6`;4,X^]N:OE;=BM5[5Y7PT'2[.^N-4F::ZW(@$?+O]/ARU+[MKW;P_K65G4; MH/_*"5UYK_];"Y[U!7L;Q0?@7NP"^!+@`![@CDKX8K&_DF7[\>0:LYOG1K@. MF)&L_M>;L52YM?T3O]#.FE&V8-;?LH-[V'W*9?[.G-O;?XQ+[]^XTEV"G643 MB$'$#>TMKI585BP-7K?P.&"T!F?1<(D!R\MVG4:KC=OB)664-UO;#?`"@.M* MP1WC+`SL:7Q9-%R;=M.*=O7?MNX\M^)7]##!$#W`:%_5V&"\]_K;&7T'EO=. MIMW1->#(;9B7FGKY9HWO.)H3=>EC=6P<,&WZ]GRC`,[1K>KMK&U\WUS2/?D& MNS.N$&)Q=7K;9(MWO4CKHR&\4X+>.%?8L0!%%8[;<5RWZNC0-QG`-(V=E?>* MQQ72&-,1=(EYS%PFT(ZWQOWAUF!D=5B8.)Z(?:ON1S4.,`*J$E\`+"ZNCCFT M=DW3+U*MN'W<6/N-31!8B?FO(-94\`:W<0LE`/ZR<5W/4^&,JG[[L?O^WA@? M2J_)*H>2>#+7.(X<#U7;J'O>.&HPL("!?+`G'7JK"\[`/VHUL)":J$JD_HX: MJ;NC=.`DM?*82;T'[@,36*'4@F!"\->7WFP$2`0O@AO!CV`MM22X4)H-K@1C M3TOC[-H:K6X:$=X6=E@'G-?CO.96K`@8A3OTA52/6B',Q-8P0+_8M:US]M'" MFVF][.B%,1?V]6LJP3"#*:N\`=&IGR*C6FBO6KVQ"=AN5H2W4;LN66A&WR5?S*Y=VXHU]53;_ M3DV\ZEH(ZT[5MK;GK;* MG#.KK%AOLS&AOAJ2[;J2CKO'(_$O;8(ZM#P1#G]K#1JD:%;_[R'[Z*PB'P`S MG2FF+_+_K-6Y3RRI=0/LF5G:F&PI\M6:-HO"!O*>GP_C?N(I.;Z5?\H0GV,' M:U/#UND5\3*9OWT@S97S?/W$46:,=DXU7.QIQK5:Q6^V7&,!LXDYU?SB3A&7 M1Z'*#`5[Z2MWF=U#QLSJF;.M$E43\$9;+`RIS6P_:A>MN.YVKCUX`JX"=Y[6 M4N&Q0-AMM@%##Y=AQMAV?#>YQ]0)+8M5^,L*-I0+M!FH->G1L)]Y8*KL)5RT M1_\8[M*3."=9VAL%B$JCF.>MI>$+M!6V6^2-:*VTC;<>V"LCB4/.9^/8V9EYVA5_3 M[\O*X=?TX=XT_G@M(@]T73@F#,6S\.TX?#W@_ M'1P$,@&3.-YYK\T#IP*<9Z7!@VG4N`JV+\>_/Y>#(\>ZP%;X^$ M"`0/0W"#MV$;"7`XAW\OR:WBC7.\.4]D7`X6S@;WS8G(`/#1.6&;`-XYQ\X6 MA`?$&N%3;8B!M/L;2&L7PLWE.NQBK:;\0ZW:UHS_O9&L-.^%K$6;RZUR59#_Z;33'Y1[C3$7B)-;W1.8\[\PS)P(D M`8*FQNRTZ]1W\Q,BH)[SQWGF'7";L]X$X)J/H]L`.>^X=(\UOSM%IHE3DE'):^1/LC+\%QVQ72,G M8FVEB=+HLRP[H:LX#]+&IMG/W&SN:#A:_:T;EXWKQA_4J.^D[QEZOCUQWG]' M="N]=9APM,3;I%V'V82CSPOG_G.K:Q@`#X!7=9Y"H$'?+^]4=+LZ_YI"%J#C M=TTE@VT#^EHW@0Y)#4SK2O>ZD.[7JP2="DQ!+Z%S;".Z_>@)A#F5^BU#IZ%+ M$#SH``9'*C`Z_AVOWJ-ZJ`W";(*#^%(UASZ0/HY?OEFZ2O")KVEZ`*T`4!>S M3PO?4?''*@SX&-TY%"BG1^'>9M4%P>@[@RV99HY+H]FUW&$:=IEY3'V/MDBS M3)FV&6GJ:Q)VQ'H4;YF*QQ7B0W+I^$K`PXL>#S%8S+NC$P:NZ1S@!;"?O@X3 MTBG2^&CK>.<;.ZY(?\J*'L;E=W1K>'^\'&U&K_UD5,I8X_I\&M`-T<`_[IQK23KHNRV.W*EP4[&SULYI/I7;7<,_F/E)["%#2"/73KPMW<*UFC3DL M?LN_\5/4PHX5CLYIECM_40?>(4S!.1>;O*L_3Y]GQI_6*MRY=>19+7R+8)O/ MT/&JK&J9-'#`=DX^O=_6:%W,)&59]G75B8XJAJ)[MF7FVMQD+U=\HD%9F*E[ MP;GGTUZ1+]@7/R!GUC\G86>FV%=F+/<4P^K@CA'O7JOCW-6F>:NXH!OOGL"Z M;/?8^&02L#K8\LI/SJZN?0>SH@.S>C7VF2TE`)3&SS/D%U\5>N6<:CXZN?CB MSV?@//,"J_^[6VL'<.E7=(^5YRU"O0S@)0X10U43>759.8L"P`%D MEY/>+M2EMW<9_AU>WLY&O16E4V_R[!;=ZJU>SGH;R87H(F^2NO;P5]*#T1QZ!/P__AGFD#*53Y(G.-.7^)KA-L(2 M4*FV+UM#,%=\`O%9F"5N;4?JN^*\>A+`P,K0CKEFC#>Z;.=],E"]3/!6=T'` MUOWF[]E"V-P^#*\M-Y'/:TOT7NLJUYDN@6]M>Z-_IF@TL71[6&N=9MZ*?[^MHR' M67/G`N+>K27550P(QUO_P&FSQVC60N'4E:Q*GZU_6LW1HU-TM']V>WM;QZKG MU@?3N_5Y=<,8BGV,5D%,T0'B+=/(@!7=>/H-I\UFT>'?%=<$B; MK-G<%=E:^DYZ.JU$A0'C3+7B&&HL\/U61DH*-C#+C#L(!_`X+EN`@4HKCO*@ MMK_KNN*=N7W=ZWM)#?MR5V'"/^CW]P#:C9[8S:FO?8&P-5KW^3*VKZZ1-I1? M,I72A5_*[[%`I;L:]][B2/&E1`!D,Z]4)[T3?]3F:PFWNVT'L1)8>GJ%]O(: MA5/%5H'(;XF!(VQB53*CM]G/%>9+N&PR^\:%,):64-/L6U]J[WA]GJN"4):K M;@/#+U+[KZ/YJMK:'G<3K5?,J55K:YJ\0PS;A0?OEEFQ-6Q4\4T]N7[7W0LH MI1/9:V#L\K7\0GHPQ;R6"7S(7M9_ZFJ=2>Z#%;$"QPVTY?*(\^[<8=QZ7I># M6I7GK=R:K[)W!2$_WW>@V3G@A7,1\A^ZV4HK3G0OCO8=_/$A;^'E7"+ M9NG,@=W\[NKA62QIK0_SA^&I@>\[.VGU>-!69B;CN.VWUF&Z+I0X>9IC!922 MB'W?J>)BJG,@4MPJ[J7G=[T0!V.ZJU<7]YN"EGD_7&VJQ^=Y;4<]%$L^UV6S MEM?=._#S;@\\""M9'2`_8MO$@>&H:X+58@KF!:$7K?:\_@6:=ICO0-;;!>MS57N+E>\M1`BB)FNSK^V\G:5.Q6`S=Y_E:S" M@R&^V&8X,\\:=!I-AY!N4@?0F.')[QR`F+KV]>RB'1RNR>3-LBV6RTWO5KZ6 M;>NW&.,[0)E7'IQ'S8^N=,G6]'*)^W8U*%TH?Y\FRN'.!N'T,+1TADY'?2`3 MC.=1]'-,^!)Y7;&(MGASDJ/NO^(A`'[=;4`LJ*&_=8G*DM/%>\%[%SU'3B'O MP@?H8F1Z#F@=P0Y)5;`ST$W5IG6Z!CK"06`,ER,KMT?2//-OV;0TI5WP+GIUO#$D,.,8W[8"!*E4G_+;"G1.1(L!(V9SXX?[S_ MC*7N7M\M^C[AS2QPA3L/D9?NHPMT\E>:I#X$<"+_BJ/(@X5MZ?Z=/XX&_\X2 MGH'/OFX7LH7V)[OV!F)+PR>)7EH>\H;T9RL:YL!7U4'IN/4=ZQM5N*M[K[8F MU"GO8=(KNML\0XIV-9`VE/&ELN7TJS37J'K]9@LD<''-FU3.Z^ M52.V_>07?\>L4`"]"SAI_RSV^UO.1^R"9K@Z%/Y]/ M>TWJ_]TR>RT9WD1]-WB+UX>E3UFZ%RT[>$U]0LZ);@7R@/<,.5!\VE]S]V=#G+[@AG:I]1C^F9\PB[)#5Q+ M:TW!2>*9Z\"U8N/:F6UX_1-/!=;.96/"K76["ZPJ=NM& M@)';EVNL0666)ELD/:"6MOW,8-C%\.XV9S%-;0Z MG)NMK>*/+P_:0QL7J%$WEY_+EX$\LD/`%*M81Y&G@8/4,M0V<(M<#@PC1U*' MJY?4"=(:^9,:$!REUI$G='GD/O(K=9`\$JR.S@$8RDV[Y7+LFSA[W2XP/U/:FHX]OQ_9M$*"_*QS@-4,$?>#>#_+=X$T\^MNURN>X7:VQOG?J-3 MQ_V^C==$>AH6=DLO?\57XGNY[UV!J\%U4YY%?ZN/3KKC'OFI>01XLC!?QYIS MDDOR)WDJ`'X=%4_4E9:25E\#'@'&*7%]D,PCR9!OP_G(H..Q=G1=S3I+]A^` M2N_RGNBO;>J5#N!Y%ZS_T!4`_"7-=V@=]TY:1[U_WR/HK^T)>NM]#^W1]:D7 MV('Q!W;"O#87]UYC1\NGI`6DLGE.L`7:+<^6OMN&X`_L`**T.2\-3L6* M4U.P?]SI/$][$@^+OWR;;@'@G>DM3\!_+<@'U?>8\W\4^_[*O@-/ MXW^G^OGYL8(>SFNAQ=864@7A!70'@Z(=\EKW/>@.;FFV9/2$M*#UF!HAEG0W MT27LVW:S\4^V(7V%(.76YO/1^-+<_)2`Y-K)I162V8?J41XE2!YY))]W!LRC MY!WI&&.[+?GIK]\4"VLR!F\K6I&LPO@WP.26M$J)1[]& M<]VKY.*E;O[;F$`G7^\*X^>Y`&"+Z90^GUJE#URG6=7K5MD&J4OUVZT[+\!6 MH#_T*OBC//(7>1NP_M"*>X&PM&+W18@@M1R%;W>'L:>LPM7+:KW8?\!X1]^2 MLN'*$U6;ZU3SP"7Z]+ M?8?JZEBI1AD^[]R\70+PS_W$004N:V=75_\:3N%>9@W?/]G;>%(^8UVHC0U; MU?>R"6E1>NZ],*\J#94GF_.TFU[(K;A>4[O&9HVX+W++U&F'MZDZU-LFWY1+ MH"VF!NY(L446>$JN-M:BWR/<#G*<,86:V(J4Q\5C3'O#5H7X.?2KC2U7OX13 MS9D.;>R[^CJY6L\_]Y\?6%O>PMW2<0#=,^](-2`7Z@_LEF32_(+=-/]`5[VG MY@_VCFH.E]ZZ"*8G M2HO"36OD\TS^ZR[+-I"NVIO`/ON0-D7=DMQ(/ET+=W'RD.[/J3K;@$K@S;+3 MX.&K?=<$083Z0+I1&-2#6,;EA&MG])VZ.+X;!S1,6;4'G^IAJCNUU$V`'MC? M!\KNM>Z4^DX9TYI+STZ/[?WU(UCWKJ48-+Q(;S[?E/VEB=3N-V)<:DM7B.Q2 MT*FI!'M^?8SU$J^;5QNWN6?;'E8F_(#7&&O@?6('%8;:F5BU[MGY/H#FGDOO MV^&C>&MG=">V4/H1-G;/IBGJI>AS>,Y[>VMXI6*C<,N^[NI(_`%UY%O+==J7 M=-7M;/7+[!0X90NLY56[H)OV[>AK?"R6RBZ/3L(>L-;&MM%FV+_+>."ZYK??NK2NHU-S.+1[[#CS^S:EJW;'DR6$Y+P*L=4>-IIVNONQ_?L^ZAD5/WJ__72W MU'7CK/3Z_7:>-BM37J4/<+7R_]UEMX$8TBLYSK++>7'RE.5T[/D6?+\GKR^K MO:7V^.`E-H48QBQB(`T44-.F9SX'L.,Y<6RPZ0?:H[9P_&=ER[Z>U^?KV.A^!SR)?WM%DP;<.4!/P@=]ZC MB&>I5&TUM$5W+I[0U9);!)BM(=M,>>1V@`]8D*GCAZ\`S8/]Z`ZZ`$]_QO<" MS1?.8?P8L%^)Y7`9H`J=:/LPO`&PWQ)K-+>YWY_?,40)TT41H$J*K: MF#/Y:W3F/49\:%`L`.P2E]GI:=>R,DH]L&N)C81[6`';1B*(][F=`5\X_Z!V M@6_4^/BTP`4SI\6C/I'[J+>W@X7;;%0"LLY=9GI3UH/UW%GRQGJS MES_KQV/70I>Z/CL>%0UCKG^D7UT\`.<:J?V1`!^S7ZFYF^L4=#NXI'R%P.2R M8:>HQ%C1K]S=3PQV#C)'P]?(65R'-I&8RNI3OL)KM)'Q-5>.[=`7GSR`=OL. MM`>ZXUQ0N7PA*VSB':.R:_O)`>82]S,<(7S=QK9^6AFGN=R0/A0WR.PS3LJ2 M3/.U&-NG?E]V:C+^N']O*@"I>J*RNAG\3 MXO_DI%,F,9%T00`F+AT'%8ZNOW)/+3#[;QM73:$F:H?V`EWB_`5]*:M(E4AK MT;'<>W'J:L7Y83[436+?;PFWL]Z$<9CS7[>S(]V;:C,V^4S6K2D'K,'Z"G/@;RZ68YQ@N.)/ M[\NU*]^8-P'Z(O[U%:B+@3/TZ/>,N<.X=J!L5H^GWQ?$L'N.-=YZ(J`?X%7' M\H_2"UM./9MT3(UB;NZ3F>?RF%O#/M"V&Y\*7D,_G(?)U6)\>CW9,YO+13F3 M"9JM='@D\,S\4(NS#>V"LT.WDWNU.K3TP6H?3PT3>ZGZ\=7TJT$;!#NLWQ2S M29'8ZN,R=HM6#C`A3M/?71G#0OB'<-IT_4MS+M2GB!'615_ZJ565@&R=5E[# M\+?\=O/Z7+P(X`285\EYI/@M@90U&]I'I M^/GC9E]Y+[&:!2#-A_G:33>N;Y+O+=;@GOQXG1YL=`'\+M=4\50@*;`'^!,7 MG>W.^NZ+->NV97H.!Q&P`-0`!_!"J0I_DB]R'U%[I^/9,]:#^<:<'&MSG5'K M7>_?5?81Q;KP=FD$7Q1=#F:'Y[0)?(C22^^W/ZG=/+5#"#OE0%< MOBW6S](K]NXVW?_L/7Y3YL?C3'SO+G#`HT'OSY\CJJ']8F`1-U"VU5SM!P^# MY\W)`-`M212^0/X?U]E[OLG]DG0FN.C;X2^RA_BG`5*M:@!8./^YU8]]^+5. M6RNEJMD^]0!X;^U8=]^NJ74`@@P6@'->D)$FO7PG2MG]*("5_]U!Y8_RGZ7. MW,'5K?ZR7C)W4M[[)4KUI15B M4!7;V%DEN1?V,']!YW63D!VE*?HF;=IVS\S*MLJJ<)?!TE^&/Q^UU5_%V.^N MD0VD_.M0.Q>XGE&TI=WRQZ_^=]MHMPOU49J*)3K`OW'J.7>%.ET?C+`K7ZL[;-X\H_O=_<7JU$`E_^`M^:_+R!XZ?Q# MW4'_=1B<`/95)!XND?U'X<'P_O.[L"::`D'UW=T&GC7CK/"6=\]_%)U&1T7K M]MON-&_&Z5O:E4ZXR)O[8FG_B0*9P+0^O/Z%+YPO2S7>IGYGL?2?L&WO__8G M2L7]4U;.=\1?AQYC'9#?D6O)TO^C^JY8[)\=CXDC26M^3'^Z?W?4Z>SJA7\' MX7O=LUY2OY[\;]L<1UT/;P6N%GZ*:J5]RF.W>MA9$V(+7E=U?E_16"-8YW!G M?F%V97*U9/%_3G]5?&)^QVG&>15;;%CG<.(##H#\<&MP:0`K`!UG:'[\<"=U M9W[B`Y=O)(!J`""`T'[1%P5:86;[:VU7YG\!?TP$'7U(?M%[V7&-4RN`8A%_ M69YJX5'\:^5_!W\!?TY3=PL+?S:`*0+M?CF`5"7);3M;&@?_:+`.&P._?]0! M2GZ,9*A_G%3B`Y!_4@T";,%I\7ZZ;Y,%[R^$99QD48`H`*9_$%(^@!YKK7YS M">*IVY'6Y?UJ`CE3&64Y3F0_[<8!4H#U7CV`G%0@@%>`T7UA M?EN`Z7ZF">IN)'5A@&.`D(#A49YJG7[0+V%ZT'_$8R\8;H#Y?X)O7F2L<(>` MFQ^C!X1D?X#K9'F`E65+@%1?7EJN@%^`7UN!@*9_A(#32Y=>YGZ7@$9;4("- M@(*`9("<5%>`.GZ5@'.`'@A-@$=^*'?K?D>`CX!4@)Z`5H!G@*=;@W^7<&N` MQ4OJ?VIV;X`Q8;5HJH"S@*R`QV)S$IMPL8`C7WN`3@FU@-6`OW^!@#,`]%Z$ M@"@-!%B^@$V`\("$9?9^88#@:IV`JVIG@!%`$5S!@#!_G(#1@,-4 MDH"@@.<,DU.C@`B!47AG>-V`J8#[6N"`=SA_$_!V>(#&`7J`LX!]@`N!ZX"` M=2@`-`#N@.Y_,0%8")=>37^I6!Y2`UQ``7-R3UC09U-_ZGUV>)15/6-=!_]1 MDFXH<,ENUW7G4V>`-P%_6:QM/5FC8H)O=0!0?2D`=`"P:LQ_.0%A!Q*!4EE` M6`%]EU\]`!UG5PM!QX5_V#K]6K&T0?F*!;%+R7C^!9X%S M@*=PV&0A78N`]WZJ:,)^5%]!9&V!MX!R@%R!MVA.78U3T&OK%CUM0V9,7_9D MK7Z_=+)?BU:5:34"CF=K/FGM9_A<-7?_=#=W2%K+5.%<`U,74E9]>U/27U`" M;`#$5X%^-VI4`(][4P'68S\':@7+`2\`6`-N!5X%<`5A!7$!=@4N`H$!2VH* !``#$ ` end From owner-mpi-ptop@CS.UTK.EDU Mon Jul 26 06:47:11 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA08100; Mon, 26 Jul 93 06:47:11 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA21498; Mon, 26 Jul 93 06:47:41 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 26 Jul 1993 06:47:39 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA21490; Mon, 26 Jul 93 06:47:31 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA24027 (5.65c/IDA-1.4.4 for ); Mon, 26 Jul 1993 12:45:54 +0200 Received: by f1neuman.gmd.de id AA15208; Mon, 26 Jul 1993 12:46:53 GMT Date: Mon, 26 Jul 1993 12:46:53 GMT From: Rolf.Hempel@gmd.de (Rolf Hempel) Message-Id: <9307261246.AA15208@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: new draft of PTOP chapter Cc: gmap10@f1neuman.gmd.de Dear All, based on the first reading of the Process Topology chapter at our last MPI meeting I now have updated the text. Apart from some very minor things, the changes are: 1. Throughout the whole text the word "PID" has been replaced by "rank", "logical topology" now reads "virtual topology". 2. In section "Virtual Topologies" the last-but-one paragraph has been rewritten to make clear that not only grids and tori are supported. 3. It now says that the low-level topology functions don't change the state of the calling process. 4. High-level topology definition functions always return the identifier of the topology group. There is no creation of a remainder group any more. Also, they don't return the "newrank" value, since there is another MPI function for rank look-up. 5. Functions MPI_GRAPHDIMS and MPI_INQGRAPH have been added for information look-up in the case of a graph topology. 6. Function MPI_SHIFT has been renamed MPI_SHIFT_ID. 7. In function MPI_MAKDIM the argument "gid" has been replaced by the number of processes "nprocs". It it thus a completely local convenience function now. 8. The condition which the input arguments of MPI_MAKDIM have to fulfill has been rephrased as discussed at the last meeting. 9. In the example the MPI calls have been rewritten in correct Fortran style. There was a discussion whether the topology definition functions internally require communication or not. If so, then it might be necessary to pass them a communicator instead of the group id. In my opinion we cannot exclude that communication has to take place (think about a parallel mapping algorithm), so this is a valid point. What do others think? At our last meeting two volunteers have announced to write additions to the text which I didn't receive yet. The first is a generalized version of MPI_PARTC which creates blocks of processes rather than just hyperplanes. The second is an appendix in which is shown how to use MPI functions for the construction of more high-level topology objects. This is the last chance to get it included in the new version of our chapter, so don't wait too long. Please read the new text, and tell me your corrections as soon as possible. I will away from my office beginning with Friday, July 30th, and I will not come to the August meeting. Steve Huss-Lederman accepted to replace me there. Remember that we will have the 2nd reading of our chapter. With this note I send you the LaTex source of the new text. In a separate message you will get the uuencoded, compressed PostScript file. - Rolf Hempel ------------------------------------------------------------------------ % MPI Authors: % This is MY version of YOUR chapter. It has a wrapper so that you % should be able to simply LaTeX this. % % Please work from this text so that we are in synch. % % --Steve Otto \documentstyle[twoside,11pt]{report} \pagestyle{headings} %\markright{ {\em Draft Document of the MPI Standard,\/ \today} } \marginparwidth 0pt \oddsidemargin=.25in \evensidemargin .25in \marginparsep 0pt \topmargin=-.5in \textwidth=6.0in \textheight=9.0in \parindent=2em % ---------------------------------------------------------------------- % mpi-macs.tex --- man page macros, % discuss, missing, mpifunc macros % % ---------------------------------------------------------------------- % a couple of commands from Marc Snir, modified S. Otto \newlength{\discussSpace} \setlength{\discussSpace}{.7cm} \newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace} } \newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace} } \newlength{\codeSpace} \setlength{\codeSpace}{.3cm} \newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} } % ----------------------------------------------------------------------- % A few commands to help in writing MPI man pages % \def\twoc#1#2{ \begin{list} {\hbox to95pt{#1\hfil}} {\setlength{\leftmargin}{120pt} \setlength{\labelwidth}{95pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#2} \end{list} } \outer\long\def\onec#1{ \begin{list} {} {\setlength{\leftmargin}{25pt} \setlength{\labelwidth}{0pt} \setlength{\labelsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\parskip}{0pt} \setlength{\topsep}{0pt} } \item {#1} \end{list} } \def\manhead#1{\noindent{\bf{#1}}} \hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple} \begin{document} \setcounter{page}{1} \pagenumbering{roman} \title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface} \author{Scott Berryman, {\em Yale Univ} \\ James Cownie, {\em Meiko Ltd} \\ Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\ Al Geist, {\em ORNL} \\ Bill Gropp, {\em ANL} \\ Rolf Hempel, {\em GMD} \\ Bob Knighten, {\em Intel} \\ Rusty Lusk, {\em ANL} \\ Steve Otto, {\em Oregon Graduate Inst} \\ Tony Skjellum, {\em Missisippi State Univ} \\ Marc Snir, {\em IBM T. J. Watson} \\ David Walker, {\em ORNL} \\ Steve Zenith, {\em Kuck \& Associates} } \date{July 26, 1993 \\ This work was supported by ARPA and NSF under contract number \#\#\#, by the National Science Foundation Science and Technology Center Cooperative Agreement No. CCR-8809615. } \maketitle \hfuzz=5pt %\tableofcontents %\begin{abstract} %We don't have an abstract yet. %\end{abstract} \setcounter{page}{1} \pagenumbering{arabic} \chapter{Process Topologies} \label{sec:topol} %----------------------------------------------------------------------- % % file topol.tex % \section{Introduction} A process group in MPI is a collection of n processes. Each process in the group is assigned a rank between 0 and n-1. In the majority of parallel applications this linear ordering does not reflect the communication structure of the processes which is usually determined by the underlying problem geometry and the numerical algorithm used. Often the processes are arranged in topological patterns as simple as a two-- or three--dimensional grid. For the user who programs an application on such a process structure the most natural way of referring to individual processes is to specify their coordinates in the process grid. Usually a process does not have to know the identifiers of {\em all} processes in the grid, because communication only takes place with processes in a certain neighborhood, and perhaps with a few distant processes. Non--scalable features like the explicit listing of all participating processes in the application could, therefore, be avoided, if there were a means to specify the information which is really required. Additionally, the user--defined process structure can be exploited by the system in the assignment of processes to hardware processors, if this helps to improve the communication performance on a given machine. How this mapping is done in detail is outside the scope of this standardization proposal, since it is too much dependent on the particular hardware. The description of a ``virtual process topology'', however, only depends on the application, and is, therefore, machine--independent. The functions which are proposed in this paper only deal with this side of the mapping problem. There are well--known techniques for mapping grid/torus structures to hardware to\-po\-logies such as hypercubes or grids. But even for more complicated graph structures good heuristics often yield near--optimal results \cite{suprenum}. On the other hand, if there is no way for the user to specify the logical process arrangement as a ``virtual topology'', this information is most difficult to recover later. A random mapping is most likely the consequence. On some machines this will lead to unnecessary contention in the interconnect network. Some details about predicted and measured performance improvements which result from good process--to--processor mapping on modern wormhole--routing architectures can be found in \cite{wormhole1,wormhole2}. % \section{Virtual Topologies} % In the most general case the connection structure of a set of processes can be represented by a graph. The nodes stand for the processes, and the edges connect processes which communicate with each other. MPI provides message--passing between any pair of processes in a group. There is no requirement for opening a channel explicitly. Therefore, a ``missing link'' in the user--defined process graph does not prevent the corresponding processes from exchanging messages. It only means that this connection is neglected in the virtual topology. As a consequence, an automatic mapping tool will not try to assign the processes to neighboring processors. The graph definition function MPI\_GRAPH presented in this paper does not include any weighting of the communication volume along the different edges. Processes are either neighbors or not. Experience with similar techniques in PARMACS \cite{parmacs1,parmacs2} show that this information is usually sufficient for a good mapping. Additionally, a more precise specification would be more difficult for the user to set up, and it would make the interface functions more complicated. In principle a function for the definition of such a graph structure would be sufficient for all applications. However, in many applications the graph structure is very regular, and the detailed set--up of the graph would be inconvenient for the user and resource--consuming during run time. A large fraction of all parallel applications use process topologies like rings, or two-- or higher--dimensional grids or tori. These structures are completely defined by the number of dimensions and the numbers of processes in each coordinate direction. Also, the mapping of grids and tori is generally an easier problem then that of general graphs. Thus, it is desirable to do the mapping as grids and tori rather than obscuring the information in a graph. Therefore, in addition to the general graph Cartesian topologies are supported. The topology definition function MPI\_CART can be used to describe Cartesian structures of arbitrary dimension. For each coordinate direction it is specified whether the process structure is periodic or not. Similar functions are contained in EXPRESS \cite{express} and PARMACS. Note that an n--dimensional hypercube is an n--dimensional torus with 2 processes per coordinate direction. Thus, special support for hypercube structures is not necessary. Based on the positions in the virtual topology a process can look up the ranks of other processes by calling MPI\_INQRANK. The processes are specified by their rectangular process coordinates. Thus, it is possible to inquire for the ranks of only those (few) processes with which messages have to be exchanged. The inverse function MPI\_INQLOC translates a rank into the corresponding Cartesian coordinates. % \section{Embedding in MPI} % The support for virtual topologies has to be fully integrated in the framework of MPI. In particular, the virtual topology functions do not interfere with the functions for process group creation and with those for collective communication. The current design of the process topology functions is based on the following assumptions: \begin{itemize} \item MPI is free to choose any process in a group for any location in the topology. There are no special processes which have to be aligned with topology substructures. This assumption fits best to a ``local SPMD model'' in which all processes in the same group execute the same program. \item One important feature of MPI are the process groups. The treatment of virtual topologies has to take this concept into account. The functions presented in this paper are not only compatible with the process groups, they even take advantage of them for the definition of mapping overlays and dynamic re--mapping during execution time. Virtual process topologies help in the subdivision of process groups which in many applications has to be done along process coordinate lines. Furthermore, the definition of collective gather--type communication calls benefits from the natural ordering of processes in a virtual topology. \end{itemize} The virtual topology handling follows the general MPI rule of functional layering. At the bottom it is based on the general process group creation function MPI\_CREATE\_GROUP plus a few topology specific mapping functions. In principle this is sufficient for defining topologies and use them in applications. A number of higher--level functions provide an interface which is similar to what users of packages like Express and PARMACS are familiar with. This level can be written in a portable way in terms of the low--level functions. Implementations of the high--level functions which bypass the low level may be advantageous on some systems in terms of memory and cpu time usage, but this is not a requirement. % \section{Overview of the proposed MPI functions} % This chapter assumes the availability of the following MPI features which are defined in other chapters: \begin{enumerate} \item An existing process group (e.g., the ALL group) can be partitioned and/or renumbered using \mpifunc{MPI\_CREATE\_GROUP(gid\_old, gid\_new, group\_key, order\_key)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_new] group id of newly created subgroup of which the calling process is a member, \item[IN group\_key] integer value used for the partitioning, \item[IN order\_key] integer value used for determining the ranks in the new group (see below), \end{description} This function is called by all processes in group {\em gid\_old} loosely synchronously. It creates as many different subgroups as there are different values of {\em group\_key}. The ranking in the newly created groups is determined by the {\em order\_key} values, with the process ranks in the parent group for tie breaking. \item If there is a standardized internal information caching facility, it can be used by MPI routines to store and retrieve information related to a process group. This facility was proposed in the Context Subcommittee. High--level topology functions store structure information for a process group, which is then later used by topology inquiry functions. In case the caching mechanism does not become part of MPI, the topology information can be retrieved by group id in an implementation--dependent way, which each vendor can do as is most convenient. \end{enumerate} There has been a general decision in MPI to start all numbering with 0 instead of 1. Thus, coordinates in a Cartesian structure are 0,1, ..., dim-1. In the same way, nodes in a general graph are numbered zero up. % \subsection{Low--level topology functions} % On the lowest level groups are created by the general function MPI\_CREATE\_GROUP. Using the input argument {\em newrank} the caller can change the process ranks in the new group as compared to the parent group. This feature can be used to efficiently map the processes in the group to the positions in the topology. For each class of topologies, therefore, there is a function which computes the rank of the calling process in the new group, based on the size and structure of the topology. Note that it is a valid implementation if the new ranks are identical to the old ranks. So, if for a given machine the placement of processes makes no difference, the implementation of the rank computation functions is trivial. The functions in this section do not change the state of the calling process, but they provide the information used in a following group creation for process reordering. For Cartesian structures the function is \mpifunc{MPI\_MAP\_CART(gid\_old, ndims, dims, period, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN ndims] number of dimensions of Cartesian structure, \item[IN dims(*)] number of processes in each coordinate direction, \item[IN period(*)] periodicity specification in each coordinate direction. \item[OUT newrank] reordered rank of the calling process. \\[4.0ex] \end{description} The corresponding function for general graph structures is \mpifunc{MPI\_MAP\_GRAPH(gid\_old, nodes, index, nglist, newrank)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[IN nodes] number of graph nodes, \item[IN index(*), nglist(*)] definition of graph structure: For each graph node its set of neighbors is entered, i.~e., the set of processes with which the node process is going to communicate most frequently. Since there is no weighting of node connections, it might be sensible to specify only those neighbors with which there is a considerable amount of communication. For each node $i\;\:(0 \leq i \leq nodes-1)$ the list of the neighbor nodes is stored at $nglist(j),\;\: index(i) \leq j \leq index(i+1)-1$. For the last process $index(i+1)$ points to the first free position in vector nglist. Note that the matrix is symmetric, i.~e., if node {\em i} is a neighbor of node {\em j}, than node {\em j} is also a neighbor of node {\em i}. This property can be used for an internal checking of the input arguments. \item[OUT newrank] reordered rank of the calling process. \\[2.0ex] \end{description} The definitions of the arguments {\tt nodes}, {\tt index}, and {\tt nglist} are illustrated with the following simple example: Assume there are four processes 0, 1, 2, 3 with the following adjacency matrix: \\ \begin{tabular}{ll} process & neighbors \\ 0 & 1, 3 \\ 1 & 0 \\ 2 & 3 \\ 3 & 0, 2 \end{tabular} Then, the input arguments are: \\ \begin{tabular}{ll} nodes = & 4 \\ index = & 0, 2, 3, 4, 6 \\ nglist = & 1, 3, 0, 3, 0, 2 \end{tabular} If the topology contains fewer processes than there are processes in the parent group, the newrank values for the remaining processes are set to MPI\_PROCNULL. It is an error if the topology defines more processes than are contained in the parent group. % \subsection{High--level topology functions} % In principle, all that is needed to create an MPI process group with topological ordering are the two mapping functions and the general group creation routine. However, this is not what the applications programmer expects to see on his level of abstraction. Therefore, another layer of functions is defined on top of the low--level functions. This higher level can be portably implemented in terms of the level below. Of course MPI implementors are free to bypass the lower level for the sake of better performance or resource usage. For Cartesian and graph structures the functions MPI\_CART and MPI\_GRAPH create a process group with topological structure. They combine the call to the mapping function with the call to the group creation routine. The user can decide whether the ranking in the new group may be reordered (for a more efficient mapping) or not. In the latter case the rank of the calling process is copied from the parent group. The option of not reordering the process ranks can be useful in the case of an overlay of different topologies. The user can then fully control which location in the first topology coincides with which location in the second one. The price which one obviously has to pay in this case is that for only one topology the process arrangement can be optimized. As specified for the low--level functions it is an error if one attempts to define a topology with more locations than there are processes in the parent process group. If the number of locations is less than the number of available processes, the remaining processes of the parent group will not be members of the new group. For those processes the rank inquiry function MPI\_RANK returns MPI\_PROCNULL if called with the identifier of the new group. MPI\_CART is defined as \mpifunc{MPI\_CART(gid\_old, gid\_cart, ndims, dims, period, reorder)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_cart] group id of Cartesian group, \item[IN ndims, dims(*), period(*)] definition of Cartesian structure, (for details see the definition of MPI\_MAP\_CART) \item[IN reorder] ranking may be reordered or not. \end{description} Apart from some local computations, MPI\_CART is based on the two function calls \mpifunc{MPI\_MAP\_CART (gid\_old, ndims, dims, period, newrank)} and \mpifunc{MPI\_CREATE\_GROUP (gid\_old, gid\_cart, 0, newrank)}. % \vspace*{3.0ex} For graph structures the corresponding routine is \mpifunc{MPI\_GRAPH(gid\_old, gid\_graph, nodes, index, nglist, reorder)} with \begin{description} \item[IN gid\_old] group id of parent group, \item[OUT gid\_graph] group id of graph group, \item[IN nodes, index(*), nglist(*)] definition of graph structure, (for details see the definition of MPI\_MAP\_GRAPH) \item[IN reorder] ranking may be reordered or not. \end{description} % \vspace*{3.0ex} The following topology information is likely to be stored with the process group by a high--level topology definition function: \begin{enumerate} \item Type of topology (Cartesian/graph) \item For a Cartesian topology: \begin{itemize} \item ndims (number of dimensions), \item dims(*) (numbers of processes per coordinate direction), \item period(*) (periodicity information), \item own\_position(*) (own position in grid, could also be computed from rank and dims(*)) \end{itemize} \end{enumerate} For a graph structure no information has to be stored, because the graph node number is the rank in the graph group, and the size of the graph is the number of processes in that group. The actual set of topology data stored with a process group is implementation dependent. It can contain more information than given above, whereas in other cases some items might be redundant. \subsection{Topology inquiry functions} If a topology has been defined with one of the above high--level functions, the topology information can be looked up using inquiry functions. They all are local calls, and do not require any communication. The function MPI\_INQMAP returns the type of mapping which is assigned to a group. \mpifunc{MPI\_INQMAP(gid, map).} The output value {\tt map} is one of the following: \begin{itemize} \item MPI\_GRAPHTOP: graph topology, \item MPI\_CARTTOP: Cartesian topology, \item MPI\_NOTOP: no topology. \end{itemize} For a process group with a graph structure which has been created by MPI\_GRAPH, functions MPI\_GRAPHDIMS and MPI\_INQGRAPH look up topology information: \mpifunc{MPI\_GRAPHDIMS(gid, indexlen, nglistlen)} with \begin{description} \item[IN gid] group id of group with graph structure, \item[OUT indexlen] number of entries in vector {\tt index}, \item[OUT nglistlen] number of entries in vector {\tt nglist}. \end{description} The information provided by MPI\_GRAPHDIMS can be used to dimension the vectors {\tt index} and {\tt nglist} long enough in the following call to MPI\_INQGRAPH. The number of nodes in the graph is {\tt indexlen - 1}. \mpifunc{MPI\_INQGRAPH(gid, indexdim, nglistdim, index, nglist)} with \begin{description} \item[IN gid] group id of group with graph structure, \item[IN indexdim] length of vector index(*) in the calling program, \item[IN nglistdim] length of vector nglist(*) in the calling program, \item[OUT index(*), nglist(*)] vectors containing the graph structure (for details see the definition of MPI\_MAP\_GRAPH). \end{description} For a process group with Cartesian ordering which has been created by MPI\_CART, functions MPI\_INQDIM and MPI\_INQCART look up topology information: \mpifunc{MPI\_INQDIM(gid, dim)} with \begin{description} \item[IN gid] group id of group with Cartesian structure, \item[OUT dim] dimension of the Cartesian structure. \end{description} \mpifunc{MPI\_INQCART(gid, maxdim, size, period, pos)} with \begin{description} \item[IN gid] group id of group with Cartesian structure, \item[IN maxdim] length of vectors size(*), period(*), and pos(*) in the calling program, \item[OUT size(*)] number of processes for each coordinate direction, \item[OUT period(*)] periodicity yes/no for each coordinate direction, \item[OUT pos(*)] position of calling process in Cartesian structure. \end{description} The inquiry for Cartesian topology information is thus split up into two calls. The reason is that otherwise the user might not know a save value for the dimensioning of vectors {\tt size, period} and {\tt pos} before calling MPI\_INQCART (input argument {\tt maxdim}). For a process group with Cartesian structure, the function MPI\_INQRANK translates the logical process coordinates to process ranks as they are used by the point--to--point routines: \mpifunc{MPI\_INQRANK(gid, location, rank)} with \begin{description} \item[IN gid] group id of group with Cartesian structure, \item[IN location] coordinate vector of process, \item[OUT rank] process rank. \end{description} In a sense, the inverse operation to MPI\_INQRANK is provided by the function: \mpifunc{MPI\_INQLOC(gid, rank, location, maxdim)} with \begin{description} \item[IN gid] group id of group with Cartesian structure, \item[IN rank] rank of a process within group {\tt gid}, \item[OUT location(*)] coordinate vector of process, \item[IN maxdim] length of vector {\tt location} in the calling program (only for error checking). \end{description} MPI\_INQLOC translates a rank in the group into a topology location. \subsection{Partitioning of Cartesian structures} If a group has been created with MPI\_CART, the function MPI\_PARTC can be used to partition the group into subgroups which form hyper--planes of the original process structure. As an example, assume that MPI\_CART has defined a two--dimensional grid structure on a process group. With a call to MPI\_PARTC this group can then be split up into disjoint subgroups which represent rows or columns of the original group. The function syntax is: \mpifunc{MPI\_PARTC(gid, lostdim, gid\_new)} with \begin{description} \item[IN gid] group id of group with Cartesian structure, \item[IN lostdim] direction perpendicular to resulting hyper--planes. \item[OUT gid\_new] group identifier of the hyper--plane group in which the calling process is contained. \end{description} MPI\_PARTC uses the function MPI\_CREATE\_GROUP to partition the parent group, using the process coordinate in direction {\tt lostdim} as the key value. After a group has been partitioned by MPI\_PARTC, the inquiry functions MPI\_INQCART and MPI\_INQRANK consistently refer to the grid sections if applied to a subgroup. If the process topology is a Cartesian structure, a collective shift operation most likely is used along a coordinate direction. In MPI shift operations are handled by the more general send--receive functions. Those take as input the rank of a source process for the receive, and the rank of a destination process for the send. If the function MPI\_SHIFT is called for a Cartesian process group, it provides the calling process with the above identifiers, which then can be passed to the send--receive function. The user specifies the coordinate direction for the shift and the step length: \mpifunc{MPI\_SHIFT\_ID(gid, direction, steps, rank\_source, rank\_dest)} with \begin{description} \item[IN gid] group id of group with Cartesian structure, \item[IN direction] coordinate direction of shift, \item[IN steps] step length ($> 0$: upwards shift, $< 0$: downwards shift), \item[OUT rank\_source] rank of source process, \item[OUT rank\_dest] rank of destination process. \end{description} Depending of the periodicity of the Cartesian group in the specified coordinate direction, MPI\_SHIFT\_ID provides the identifiers for a circular or an end--off shift. In the case of an end--off shift, at the boundary process one of the identifiers is set to MPI\_PROCNULL, indicating that there is no process in that direction to communicate with. In a portable program the number of available processors usually is not known at compile time. In the case of a Cartesian topology the function MPI\_MAKDIM helps in setting the numbers of processes per coordinate direction, depending on the number of processes in the group and optional constraints which can be specified by the user: \mpifunc{MPI\_MAKDIM(nprocs, ndims, dims)} with \begin{description} \item[IN nprocs] number of processes in the group, \item[IN ndims] number of Cartesian dimensions, \item[IN/OUT dims] number of processes in each coordinate direction. \end{description} The {\tt nprocs} processes are divided as evenly as possible among {\tt ndims} dimensions, subject to the constraint that all processes are used. The caller may further constrain the operation of this routine by specifying elements of array {\tt dims}. If {\tt dims(i)} is set to a positive number, the routine will fix the number of processes in coordinate direction {\tt i} to {\tt dims(i)}. Processes will then be distributed among directions where {\tt dims(i)} is set to 0, subject to the above constraints. Note that an error will occur if {\tt nprocs} is not a multiple of $\displaystyle \prod_{i, dims(i)\neq 0} dims(i)$. Negative input values of {\tt dims(i)} will also cause an error. All elements of {\tt dims(*)} must be set to 0 for completely automatic process distribution. When the function returns, {\tt dims(i)} will be set to the number of processes in coordinate direction {\tt i}. For {\tt dims(i)} not set by the user, {\tt dims(i)} will be ordered (MAXIMUM, ..., MINIMUM). Array {\tt dims(*)} is suitable for use as input to routine MPI\_CART. % \section{A simple example} % The example in figure \ref{poisson} shows how the grid definition and inquiry functions can be used in an application program. A partial differential equation, for example the Poisson equation, is to be solved on a rectangular domain. First the processes organize themselves in a two--dimensional structure. Each process then inquires for the ranks of its neighbors in the four directions. The numerical problem is solved by an iterative method, the details of which are hidden in the subroutine {\tt relax}. In each relaxation step each process computes new values for the solution grid function at all points owned by the process. Then the values at interprocess boundaries have to be exchanged with neighboring processes. For example, the exchange subroutine might contain a call like MPI\_SENDC(...,neigh\_rank(1),...) to send updated values to the left--hand neighbor (i-1,j). Note that there is only local communication in this exchange operation. \begin{figure} \begin{tabbing} =====\===\======\kill % \>integer ndims, num\_neigh \\ \>logical reorder \\ \>parameter (ndims=2, num\_neigh=4, reorder=.true.) \\ \>integer gid, gid\_cart, dims(ndims), neigh\_def(2), neigh\_rank(num\_neigh) \\ \>integer own\_position(ndims), period(ndims), i, j, rank \\ \>real$\ast$8 u(0:101,0:101), f(0:101,0:101) \\ \>data dims / ndims $\ast$ 0 / \\ C \hspace{5mm} Create a grid structure in ALL group and inquire about own position \\ \>gid = MPI\_ALL \\ C \hspace{5mm} Set process grid size and periodicity \\ \>call MPI\_MAKDIM(gid, ndims, dims) \\ \>period(1) = MPI\_PER \\ \>period(2) = MPI\_PER \\ \>call MPI\_CART (gid, gid\_cart, ndims, dims, period, reorder, rank) \\ \>call MPI\_INQCART (gid\_cart, ndims, dims, period, own\_position) \\ C \hspace{5mm} Look up the ranks for the neighbors. Own process coordinates are (i,j). \\ C \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1) \\ \>i = own\_position(1) \\ \>j = own\_position(2) \\ \>neigh\_def(1) = i--1 \\ \>neigh\_def(2) = j \\ \>call MPI\_INQRANK (gid, neigh\_def, neigh\_rank(1)) \\ \>neigh\_def(1) = i+1 \\ \>neigh\_def(2) = j \\ \>call MPI\_INQRANK (gid, neigh\_def, neigh\_rank(2)) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j--1 \\ \>call MPI\_INQRANK (gid, neigh\_def, neigh\_rank(3)) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j+1 \\ \>call MPI\_INQRANK (gid, neigh\_def, neigh\_rank(4)) \\ C \hspace{5mm} Initialize the grid functions and start the iteration \\ \>call init (u, f) \\ \>do 10 it=1,100 \\ \>\>call relax (u, f) \\ C \hspace{5mm} Exchange data with neighbor processes \\ \>\>call exchange (u, neigh\_rank, num\_neigh) \\ 10 \>continue \\ \>call output (u) \\ \>end \\ \end{tabbing} \caption{Set--up of process structure for two--dimensional parallel Poisson solver.} \label{poisson} \end{figure} \end{document} From owner-mpi-ptop@CS.UTK.EDU Mon Jul 26 06:49:24 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA08111; Mon, 26 Jul 93 06:49:24 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA21533; Mon, 26 Jul 93 06:50:06 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 26 Jul 1993 06:50:04 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA21508; Mon, 26 Jul 93 06:49:55 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA24153 (5.65c/IDA-1.4.4 for ); Mon, 26 Jul 1993 12:48:14 +0200 Received: by f1neuman.gmd.de id AA16242; Mon, 26 Jul 1993 12:49:12 GMT Date: Mon, 26 Jul 1993 12:49:12 GMT From: Rolf.Hempel@gmd.de (Rolf Hempel) Message-Id: <9307261249.AA16242@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: PostScript of PTOP chapter Cc: gmap10@f1neuman.gmd.de begin 664 PTOP.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R`$# MQ)`WBP*9,1"I4G4+[`N/$EQPP7&],XA1+F3)DY&6/DC.%4R)LZ;GJZ.>,6 M3\:2)6ODL`$"!PT93HO$/=FF31DW=.8\)&(ER4#";<+$99+8-'#V"L(I5 M*U>O8#FV+7.F,A0Y;\9,*4,G(YTR>%S`0?TPA((75,I@(>+SI8P:)7N.>4FF MC!D0N7?W!I&PM!L0+YSL*6ZF#W7H0O:(J4Q&H_$^3J!/V0-[#!KPT+'LF0+" M21\%0J!3D;*'CAS)<]A4+(/^19K\'YD!U!Q%A?>"'7.DH4=1,<0`P@TYM5%' M4`8"L9)S>_S'QAQ[;%%2"PXZB!<(,'2AP!AON/$3'7VD<1R$.IWU!AMUT)%& MBAJE8<>#.5DAA8PTVHAC3SM:=@8(<_PT%0@:.-S:"2XH`(MP$@D M"!(&5=)\+1[W9)1"/N M"`LW5]FX*=)!11ZN@C##PR\847&Y@>II!F)R#.INQ?"^,>B[\85'[$IS02=& M&`2"@`4(3-V7!W91E:O9S2\(40?"9`R!!E-[*&`T4T(3788<_0F&HEQ'\OOP M8=V142BL9KSQ!I*L=8U8'SGE',;.V*)MA\D@L/$&3^G>JP"UT`'L[Q;BOD`P MK',RYP%^]+N?#[SUPTN:$_N+PB3##:-Z'ZYT1P8\T&]Z84#? M]23E(/ZQ!GXM2$-DS')`^Q5J5A@KPVU>5IGA91!BK[);_Y9G'Q#8+4YDZ(Y[ M7)2WV@GL!7*XPPOE,(87GL%0^;K-&'#(L2.\L'(<6YH"V96L_[EA#NP29X"V!.TGK7J(_UCSP@)>+Z;C&XS#/>2VA0P"1!\(JUSL0M+#FJ!"QS41T,>CY!QW"3.4M@%^DFP+/PYI5DB,XHZWW0,GOH0IA*)S.:%:5_MC1A">FVL"[2 MP6=@U!1[[,:>Q[$%F,"[7_H8Z#[D`>^*<1`![>^QT4?'5.0I@2Y%^@U3<^Y60Q@0-@<[>@%C$G"!/MJM=_PQ6P["T]) M'/2;&NR!7UN$"9)Z>23@E61C6!P4W<9@A^>?/I9HV%K.5([#DOF,T;M.:P M.S1O(J)#R=Q00U_B7!!_Q+M!IO90$@$OJC*OD8,=@'(H%/!F#G#03QY24(8X M?`H/YDE7H@Z,F*Y11.D,LVLC.58\L?% M-<:53KD\T6C=QPU]NT@;-O663H&*4]T!553^'&@Y#'JC'?W:D=,E!S:HSJ,E M,;.1RFQIRWATTIG+=*=9\S4S("PH5X:E4_,6ACU`FM2*"RKUK.NYZ13J-L5A M`_5NENE76R1O35C/I+RCZP0.TG/W%+:AD#W`/;0@44U0G+,W%FWX0.=5"P%! MM'$5OG5M&SIG(+"V\X8[!WW;/WO(R;G5L`=JYVT->X!VWNY`X#+[^@UY2YBA MG@V".^2M#:)3U\;\C2N$[CLG!(?.&P*^KH2_(`X!=Y##CV@HA+\3.APRU,#S MAE-$]3MO!BP)>QS-45CC*@_M!D%.G!@40X7AGF_@T$.KR6/W""&K,5_/R%4M MR_A@+3!Q.4UJ5J/'Y/#&8>_56`YB4`,:G!#*!^$[X,MK`SP'IA@7!6 MNHXK@0ZJ00U^9P8>$!8&62=LVF'P7,*V'09#.'O<81`#J-/=[FM?^]O?/G>X M$[;N?\?[V?6>4;?+_?!W#[S:!W_VO2,>!C0X^V!C4(0;"&$OA/5!#6B@`"(( M95S(2Y0-WE1VNL-`!I"'>]WKGO6LWX#ML']N$6`P^]K3_O:VM_US=[\5M/M^ M]5`?0D8CC_K!.OU_1)`)[7T0^7KR`.K$_WUK@^_WV?/^N:_/?N^US_W>7__V M<1<^\+..^LC;_?@W*(+RB^"#))C]!G%GO?1?'X,AM-W^A!W"[&F__R+T__^$ MY7\!V'\*`("T=W_W1W]#D'6K-P2OMQ5S9P1,=P-&D`,TH!;,AP/.9P0>'8B.((D6'@D>()G!X)&\($@.`0Q\%Q!D'XXX()"X`,VX"">UR\=4T.8 MTB"Q57;/900P((3T9WJHAWH*$'F1EWHQ2`0XD'5!H'DYX'QJMW]^EW^/-W>` MEWA<"'@WP(`X((2N!WNOQWMQIP#/%7=I"'O4%WPTX(8N.`0T0`,V,`1/B`,/ M*($WD'Y[@8%71X5Y)W@H>((F>(+U1U@RL(1T2%B+"`,SB'A;&(EX=W4S0(FH MAW:7>(B$M71[6(%IZ`,*,%B80@0\,'4SX(+[-X?V9P-I1P.O]W17MX@,2%@X M,'NOMW9JZ'M8^%RX&'N*EXL.`7AJ6'S4-P3$Z'=R*'V0%WE@N!50%P-"0'L4 MB`-$$`-&X`.#-86D"('Y1XSTAX=H9W>A:(4K6(6-YXO6AXRJ!W4S((186'E% M0(V#A8U,5T^?US%D$(H@0!*)$BF)%_5Y$<27<>.9$=*7P;*9(@B9$F"9$EJ9$& MR9((Z9(6.9(EZ9`RV9(U^9(W&9,GN9(Y^9$J:9,G68@^&9(P.90H690I290] M:00TN9-`^9,XZ911"94Z295&R9-!B956F91'N91(^95+V91;"992695*6997 M^90K*)1796.)JB M69H!:)JW1UBAJ9IGYYF;&8Y_IX7D:(*6B78+F8*MV8VN>!,2B`/,5Q*D^';N MZ(R4B9FXJ9IX]Y!:>(:GV9RI^9RK"9G2&9W129K.F9G+R9FJV922N7^GB)R7 M:7AREXCPEP.]V7YFIXFQ*8+J27=]%X>`)X$."'45J#0B28$'"9(,28$BR)\= MF9#XZ8X5^('T67^6"9_*R9X1V9YLT7<-$@.NF'PW4'?H67\S`(\4V([6V'M% M0'GP-Y%M%WRLA0,U0*%SZ'P!&IES.80K2H$*D)\-`GDWX(3GZ7Y<^)JO69LB MR9$<2)]"`'TXFIS:"9M$NID9%:1#BJ1%*J1+&I0:$Y(&#;N*6M":,KJ@`72IR;F7:>2::H.:;/*:EP M.:G22::'N)F'J*BS]YW6V*.J>:8_J19_FGR5Z)LVM8T@:7"77#FIJ;6:RS=Z3$JIW`"IF6N9F[ M:HW/"((JJJ?L:*M]6J(.J'Y6ZILV:J>A.G>AR('>.7ONN)EMRJS"NI[8R:(A MV(+N6HZ5^JB0N:F:&G>+ZJDKBJ8U2:H1&JC>FIY\&JJ@"H)A2GD,&'?%"J>P M^8#HJJX-RZZ8.9GZN9`F.0,YP*6PRJ#DFJ9*[*#AX=V M1X2=VJ<=&(&@ZI1,9XT*0($`BXUH!XBP"G_]&9$\F[*#&+0H2(%]%X*%1[0* MFK22MZ!,J[3KN;1.ZYY1NZE06[7QJJ(%BZ=TUR!$4)XNZ)NBB*(AFX)C&ZJ5 M>K:6$ZF6BK8BR+9JZ[:4.H)H6XAPN[9R>[=M>ZCO"J5.6HXQ4(G;6J44:GQ9 M"G^VA[762K`Q:XV,*YN4IXF/VZ'+67^0"Y^3&X>Q67^A>+F52[F<^[F9B[GN MZ;FAJXD4R+@"^BZJ^ZM,B;I_MW1O&!.GBI[IMZA#6`2@&J`1*+HBN7_NV'_- M";RI*;P%&+S&.[S'*[S*>YI$VXXL")B`N8`K&`,3^H8P<+/?^J)F6K:?>J[F MRH[@6Z]Q]X"'2)KF6YKG>YK=V7L9=8C/BJ_C>ZU#.*UGVK$=*7F5Z(KJ-[ON M5[N^B[OW^;*1B8J6T[OA*:>0B:SK"IL*S,#:J:8'')G+.H0$G%$"3'LQ:ZO6 M^;9XR\%Y>ZA%6[9QV7>A6*+Q>+W\RP/3F'XL:IY$J+H[.I'/*H;F.'@8B9&P M2JNP:8(ZW,,Y_,.OJK>^J[7XF9DEZHH5.+L-PGG;2($.2\1$3)]Q.L6IR:8^ M*\*?VG=OR9[NV'8`-,''^L`/+,57ZZYS!YB2M\2`FL)<**NQBG9-*:NZ&Z]Q M!Z]O[,-!#+1Z[,8]',>PN81A[,""3+H52[:L:KM_&Q,V.WVT.Y$':;,'6;.. M#,&@68N#E[&21P0.:I(27*9F.H*<'`.:?,DH:SG:=YEM.LDL&H8RK,HSB\0W MJQ;`68K4&J`OC*?D:XO%6;/@>9S&:<-FRJK@:IO]":L03+&W6)G$V7LJZ!#- MW,Q^"LM*K)CVJ(-&X#<]*`,.XIBOY\@?Z(!*F'KFYXB3=WJI!WM%4+-V&'E$ M((54&+6]+'F5NLSR3(*U^<%Y+(+:.X+?"39(@/8(?W9H0G=,-+:E_9]$Q.`2#RI@V"!BJ M&L\?":E*?:E,7;=PRZ!%VZ"'9Z^VYR_"]:A M.(3NB7I]:HR]=XJH]WHUD(Q9-X-+2(3/6`-MK7[G^8>JRK/UU]:F-WL-$G^G MV+Z;^3\BJJ?<:-;AJ=B,O9K4BXBMR'J_&G]TI[^!.I@V*M)9=[1_:W?FNIX. M&ZQ=3:9AG9ICK=B`#=CQI]HB+;63N:F3J:E7S;R>#0.YRG:/C9GTNML=W)QI M]Z:M%8%$BH;2Z;R25Z).B,(OB+,;HZJ9^=R/)[32_<&AF':,":38#7F;"8Z0 MZIG66;FQB7I3QXQ^$8[D_8PDX9PW9XU\V*$P@+.C^)A8Z-`1+;73?=]"J]*M MW7AKI]VL>H=_1Z2#]9I^;=)+3:]PFU%/W;0EW9YXO,=OS-N+5\D9U1]ZP67?/&.?A MF8A_NK\*\'05*K*G=ZIQQYA)_EQ,/K[^W7M,'JS<_:94C.AB?L92J^#V?=7: MG-47*.B3WGO![7L`7HF)]]K5RX>56(.9_;/NF7=TUY2L_=IEWMJ>JN=!_HRL M_MG$?*YU7)QJ2L9;SI2DO7B2^*BBGLB678DV`.+<6'?B;7J\2(;HJ-.ARHXO M&G_<.YQ[&*INU\6IN(1ISH!^6]F>SG3T&-_SG9HL+M7VC:0KFJ,F3K+7B9HJ M'NXN&([BG>:*>NWE#>>+78T.6(%6^MXV>HJ::'^*:7I.7H13)X3O3O#A".A, M[9E'2]/X'+=YBWHW&'>1)Y^I1_'$*@-Q!WUTF':FJ(47J+\*$*A1*,O5/"Y' MDG7^DRB..74?BKLN#W\/NX=V>(/O38?OO(7Q+*TJ^J(K&[.NVI'"',I"'_1$ M+WE#;_1%_W<\C_1,#_1-__-0K_-./_51?_1*[Z5\&Z"`/0-M+=3RR7S::';& MC;64J9)L:HOC2Y`M>[L6.;8SP/-C*ZU\/9&-RLE)W8XEV9]P*>KS:_0;"9J'C%2JW=*X:U3*W/K/AVO17))Y\*(.PB_*6HG-H2N?EXGY'2 MZOET/Y'2NJ&@O_D&^?=GEU&]GI16^*D2O:`#+?4#;*8+&('P&)D`C/OY&;(< M6'B\+Z#;>I*6.?JVF+H)::AT!R%;@=?U)^QCFM.V:XZT"9=87/U.-LL?/95;*X@",!\JYI['_]Z/_^M*?^^;[]0 M2KT\_O69+9'[%_0]"N<=)(1%D?#.Q6I]7NICI:"5M;.F50,T?4`+[P4Q_R1Y M?E6E.G\X#>J\J)'&]A`:!Q1AH.P#BD`4!`()R]'B@-I/\5!`Q2,!*R`$U$ZR M3Q?U/<:CFD@8[$%((FB3,2D5M=C2%$K;8F='FRFF&671\)P-`""DR&!UJ=_7 MHY9@\3-ZE6DX_20*.`6E(("R@E$P]55!*"CM:A(5O()<,"Z%P2^8!;U@[[-C MMJP@D<$NZ)36H!@T@V,0"VXG.?@&VR`==(-X\`[J02ZH^N2@$H12?Y!<_8\A M6`2*X!#P`3`B";Z_>+7W$EH=-(&/D`T>*GOF"%>@)+R$D3`34D#:5`D[(27\ MA!+-$X9"%T@%65?:\D)2T!0RJ^&$KJ`=&V13PTE-2299*.T`$HMZ48J/"!#" M(B@#$"%?4(34*E[9+_]$#&=AVDM!QQ#^U<'TTPA0QI+4JB\@1@1(_JX@>,?5MQ)!($J/21]2(2:TC MFL2T-1*7H,]SB29),>U"M7`#"%.B:&+'K]P1(7PEAM9>;,-U&^JUQ;ZA:)#. ME1$@`BZ+5VV^#<7"-I3?(DC.CH*!)*G(%-/9Z6%9<$?T]:@UU;)6SQ%4/R6J M!@VJ=Q:SBI@$PWNDKR=N/A:&]_A:\>)[%2DN1B2Y2/MZ%OU3AH-'3-FIME.. M.!I^8E7)&X4@<@V,!XXW#T3@"Q^6X&Y,C4VF#G2Z"%(86E0?JLF-+WR%]M!.>02/Y)$;Y2M\ M];'0XU0\B%KK;R6D_B8#^=B*6GQ82RN^K%OE@%+?A9*"N$N>`4@`69M.T<^" M>2Z+/MDOUW=WM!D?TE;HZ4RE/@EYOW":(QQF%9*+>;0+R2$WI#[+D'[/0BX_ MH_>I*)+K64C,:"')+U>%R+Q7A>14%;)%UC`[)2/-8XS,3"YR*MI('5DC6V3A MZ9$XLH:1JRS&HOB4W]IQU;$0:K-KY'XT$RU\@_Y)`FHN_(;?=M\LK)!V*DM> M21VI)5]DE^226_)+VJF.9;^$`'DJA)HN0J8N+!DFW=&X8I-P$DS&23'9)N=D MG01)A8=.VLD*22;+EIE,DM?QO?TX13@B552)[$@G,D\:@13I]%KDBJ2107)' M0LH;22EY9*2$D9:R4D[*3,DI-^6F'))[RTC&GR`0BE"C-:)'LPSWZ2W)N*@H MEEJ<7P?2`54F65D#`13NJDRW\@3:REV)*VUEK(R5MDLKZDBZ]PT9$O>:4*AQ MD` M39]*NE"*TEPM)&=YOQ@2A@R7(5)#BLAY*2\+T;NT7V3K`NZXY4<83V5F;$V1BBD**I,I$D^9.(#N;MF[V]9^"=._26-,$ MB\OM6VVLN_-B#:V@3S>YQLF`(#IMC<62.?LQO*D?!^1RWD.AC@(9S^DBP MQ+EV`,@",DC4[R'),D@6-_V1RQIB("E2`DE-F2/?I*3,D9X2=(K.&3DZ/R?I MK$**\G062IJY`*%1U^Q+.5%ZC3@TL:/`'>E:DE@@22>8)FF>.3O)8J2-8@6*F M^R%7^"DNL;(H)3XQIMVYC<./`0X[]>D6.U/YDX$\BPATJOH'`^1G<9L]'_/M M7*BZ(X3>#N,*0U<()`V\1]21HA$`H6IFRH`FMQ34J1:H,FR!#S2AS;V8QM-> MTP4D']_N-S3-[HGGOF?<&UL="_GQ3N+X.YW3S^H[PW/P%"^D^][G+3/>;(=!#H. M=]J%?)DV*V:2J@VD@MA?^Z,[-^?T0)U:U/S40G,[3)(B46BS?O2/ZI@*&I6G M!_[@@#_I`U*E)%(\7:ALLI[>%)AN@AE=:?WL(&$LJD9'OU8SZD(/*9":GE)E M@9[FV]M&>=1EA;X55,2*V$!ZI-P1?)*K+L6K1%)^\E1T!S"LL:=9CXY:=%MI M`>V@P311:N">ECZ;:/NMF.&T>89*+55/2Z6J=)6.H*,5TMK3N2.EH127&K27 M-H*`J'ZCDL!4:*5!!0FO*AIY$FK&2*/=.>!TF-*`RDD4A:D?N9XPI+(>$'!8 M+>NL?C*?7RC?LI-4#$Q,:L1A4"+UXM"==$IQZLXTL;NGQ>+>'MXQHR#40PFU M:E031\([$T_GJ.$YN(CTUD30*#L[3'1K*<`]QZH*G=RA50`.X-F==\>(I)-H M.WRF!S)=H@>TA/)0!]IG#L^#12H&A0#CW@6"1SF`GFH>HY:>V-%_,HCS\4R- M/7,F@BY1$!Q!2^CLQ-2&*H)<4=]I.@P+]KRFPD>+[)LIA:4Y+:CJLEBGU;*F MPM).G8DF552:NG^*CQ82F(FMLK&WY"-2^U]$S8#_+*09T5C*5;$E>Q("!>UO MX5"7MN<*&BLJ:$RN4H4IE1:FV!-0A:7%!RY=HH$VUVIJ#P2'CFBQ71T+]I"4 M'4M=9BZU-L54P>I746AZ#)[Y<'K1.#YD!!13Y5,M]U3GL2KKLX4TE;GK9!_M M?9FX>^:H#ED/W&S#C`$!OAV)B(C9Z[-G*(WO!4\9*M!@E>\+:2!Q.3:TR#/1 M?A6L*JIG![=&5/7D4O=/1G&I?(<&7AV)E?0!I93(08'22P306&S?&8CO*<$RI]K$L_[1,ZI&_U7]\"D01V`3FX$M M4@AVF2G8_T9+(2P]>[`]]3`U/F:#)Y#Q#;#TCL7_UP[*G M>4963:LN)68JKL*XJZBY8(ONO%WV MG:8L;+*-4[>UP-L!=^T6U%G;NNZ)4;[4^D-;857Q41JVM:6ZI[0[=HE`0YNK M#:WM<-=\6MJ.TVV\?[.GDL9$BV9R95P4VK;.CB'9+C^+R'+89ZRIDDDD0I[$ M6U.''TQUO#45DT9>RB:"L*Z')6ISN&9W"32X-%Z;;%SK;C)-Z0G7U[`>G5V(6_9I<>[5=1^JP$N$CG'F? MU>RAK5&1Y[XK(FHCK1&/DW'*U>ED*1RXA-(03VUR6$T7N2_%\W8F6%ZU0F;8 M#*-;#Q89;JO: M.`418Y.]+W6Q`>/2*HQ-T'#*1#LWHBVAC[:,DW$J;<8R%92^4R/;SR2L-+[& M7I9)6=R^.J2V,3$VK3%5$X5CFP:K`!M-4Z(QD/YNA9L@X[2MY32*?`HPYMD; M2%BVV6!;+EEX\[/<@F@02 M:!AV"-TX,W5Y(::@%;@$]P31JV_NJ8+U(5=BPA8-`CUF[(4"M5CU1DUN:9PZDTIE@Q.SLF9P1;9949C MFW,O*\[+&3WO-_/,?%T4>L]:AU&4!8F$A MB^<^QAK`"O4F16+0N$]!4[#;)X0*-.YY3D\MH54X7]>?*]HBSKY,$-_.@&C4 M>I+=UWI%M&BPJ-$@Q'R86"D"T2XO9,&\8"7SCMPULGF>5(DNN*AU-^'8SF)X MM]1N-3@&Q\>`6)`6?`U/2/]4!V>DW9B$"])L*T\2:9]ZQYITPNMMEBJLDW+:?A-)U> M56=:3$?%?)7:DG"<)EAA<&9U+?7C@OYNWMJ1??Z3(3E/AD3]AM@0`Z%,Z5N/V$K4=XV@ MMPM7+'4)FK8&NO94I?9;5.XR'FM!;"6W(*@T2F@W4P3EZ\:CJ_OU///7TU95 MAD![QDHK%?<<0:P(7]MK7@6K'+4*K'!U[]S%/2WF#D=81YJJMCC8'4$J:F;+ MZ/QKAO03ZJUF%-HU2_;IPXL04/M)/96=`!%@9T*`N'(,PFR4/05G=J%L@S-; M]=ELEAVS5;/+IME>Z@V'[)1=LJ>?5UV=G`S[8<,S2K;,[&LNUP'K'UE1OE2V ME/:;:K_:[VKG4^VG_D+CNU:&QVY$AFT`DH[H9_S+:691B.D]M'VXP/;\NS]B M.__H[!QXLS&@"FQ]^Y!9=SVNVXT0!*9M^,>V'8+\0YE!A%OV>MO MB+!/MQ>SBOI:8`NT$>@!22#S=H(=$'K7+/F7NI7V0//;(1N"9DSH2(Y(]M!F MAB>;6;(]Y"`@_X2/R?X_P%:ZU`]+DZ;O<^7VG MKJFMHA9WZQW:..]K#VW1_5._W\[:/TH4^T'/XHD.YZ=$@W5KVUAC*XB6?G"U MWHN-APH/25`AI*@DZ&/\X.Y-Y'VX,O:PE>#JF5NC;C&/P" M:7!$.':`X=ZLV+PZCA=L@DW'CS@=+^)U?`ZC;CF>QTUWZMY.5JAG7R'MU[-- MEXKK?CT[1[W?V?BR794.7E$VEN[PW31K._&EU&1E4SR`F4.V4Q$_IN4PF+#* MDW/R4#ZA2F?@4K1\$A$5[X^ M>3E?`XV&YY?+3IOF,@L$# M<4O>0(Z93[FY>/K=9.\G]B@=C(66H--!LSJ6ZZE)L"F_8V%^6H$?EY/M'6W= M>*9W/F4[+7#O?*2](_4<3T)R/-C/\4A`QZ/S=B_L44F.1RHF]-#=S?MG/I56 M"1TB)?3;-=&;N`G2GT9@HI/O;6V%./H]O]G.,_I5V8[^(;]U\EZ:^32#`]@- M_I^,F=(W[(/6,-D"0;BPD7=` M[+V]D7;>-GLX\GWNI(RIULT>1U/47[R+:\RJW;K[EOWVXWS\0^9U/?['^_I> M9]U*LXSE23X%8&F`L#N4KAOIK6S$/=.E'DPO@!"TV3'UR1[_BOHXM.QJ.[,3 MK)`;U"][(TSJH#UI-O4!EI'@#T1ZT_+Z*#ZAA,GSD-]C3^S/VHB7)BA+KP([ MOSI4YQMY*R0+"5O-V=/9ZO\#%_N\OVW'J=((-V7!.WM?;X,(QEN5PFSN20U[ MXT6\E\"3>EFR9:&0!#_0>?48[?ARG(U^;#9VQBPNWNG?%E?>6IQZ`\P4+@8I MMT4*0GB*2`;#:71ZU#B`[>IBKQP1TZGS$Q.J#$M]K&4\LT(`&GA2H6Z\8GNY M;)ES7?6M96']XDO0\<`+VE.T?RN\#2MESLA+C>_:@_GR4IZDY5M=E#6R,XH/ M:67ZZX\CLOX<[_RSXN$.XBX",7N6]^PZA!=I?*'\N'/S_$[ M'LCC]4KUO\MW2A5@C`NDZD+#+L/U$PW_5%S<>S\>,2X\X9*4K_)TFW1?^0": M`K>\]NWRI=O+A_DQK^7)?.H&M&"^S*OY,U^I<1ZXY(3INNL*F%\I>G"T4U$3%&\5W_-PFGKT>.O=ZUPD=J6B2UXJ]>RGBZ-OXL MQF@9):-<4M/SZ]E+>W'%[&&E9&3DK5)8TG=RI4VAO;7L49DSUY-UG8:3/>,,3SWW:[(;,-&IZ[)6>^K^3Z7%I_PJ:XHWCP.2`$ISZRK M=46+EG1!PJ@)!9A$'G/+4A)20AY-E+GRC6;1A)='DRDYNRUFC6CY3C+V\VM, M`G-AF?,%U,[_^3H_Z+M)GD_T@;[/GZ3MKTM]>T`5[BN4V4SN41)T`MI/O;U* MHYZ4DUC_ZLMRK;\E^^3^,9/4JQ`&H&5)MI"FV2>:9]_EF_TM%11G)IVR4WMZ M9)$O(22N_F=':IBN,=^V2^-T$,MC;&N,YW4JNDI6)KWV8^];^LSO$*IH*FKU M[R37WY-9WTT^_L@/^2?_F`377W__T9[*]SW-5@%4(QC2P0"`Z3U3'L,%FCY'.T_+!2Y\9S/?RX4OXTNHQJ`4JZA_Y][_0 M=Y3'-R/2S&GQB,SWI\%0(V`.^/+I@&??_>/.24':S*^SW"PQ5$C(DK#):"*- MW`7$`7$F20CR%U%24!X<\^S,2A]<%R/ZN#\V%'\R>0B!F$U)!4=55N%4`$;E MA'Q/RKLR@#6!9V`:&!RA@4&(C>8&MH'8APTEK5%+X9[-XH(P>9:3^/3(7'_B MG_?'!_J!=\EKM?W]@=^?L`33N2K]4P##@K0]O7 M-?%))E4G(Y+T3GW/QT6#-$0<(%@%=Z!?KE,`=:%4(AU*AH,*PGE!2']3\PTA MKF!&-X1$(W51LS:^K&Z,"O2D6X$G9%7:@?,0.=*,#!#L-`A8BB(4^A5)#%+? M9A?)/_,>$66-+#044E^'+E%$E!!$`\KU4J89LI>R##/'VF1%,05`68M#H-6?_/VC&XV4I5%]VE(L$]`%9DH']L+ M$T<.]6X*3<2%TMA2;8P0A9PH3T@4,J1$'55MBWIRM%1/$=?2T;5L>LT?+=.Q M0&_?R7OEJ_0>!9WIPXL`<1!((6+UO$"+BA<#C&R"KDJ[EAZY+_`+'>,2^CJ2 M3*#2U1TFKD0]HA:0'HD1&!AG+3.S#9I#A(4O7TU74V3E(6)-46C:U#AF#=F5 M%"8CR0QM!0.\-4_.#")MD2^VGE!3B0`0AQ%SQ56E1$_:@8.E.353"W-BX>1G M.Z%5\^9L-6`85Y.NC#9LX6GC%C8G^PR-D]9,/&'76L,4/H5PC2-BAZ`R?T?D M4Y[H(3A+JC3LJ#5%"&`S)8E5=$=AB@'92(+PAH62G_E5!3>\`WD97+]6XM-,7A("*9_5J- M""WRJ`A,*MJ)Y9F@'K/A1L6TV$M36H_6HW6%5UJ2QJ7<'D=+0-6;\#>XU$V( M`S@=F`S[\:W<;K1A@:AVV$U66N`#I+$FU17D,>,X(OT'TE7C4"Q%0.11Y@@S M1("]!*#561K+>#:>C3?;1UZE?=!H(B)U>)IH.@==9O+VM#6)6!<8XLQ'8>"0 M4D[Q9NE.<\+N2&E)2HQH3H$F,8Z-@Q1RAFY'CG-V[$M_(=SA],5DPF#6(?'< M`)$'H&.9.(FLB2O"FE@RR$N5N+R<.:D.EDCF*"L&5738J#@B#TNFDQZB'26: M:W.#V%0F7XSRSO0Z">$?916=.:=.8[3JQ&"O#IU(@\U7>")X`L%`)A!,]O1' M>3^!%H=V&>)WHTM3=8A!'TSB(>**7#I2XF32*#YE?=II0B'N-YI/II+J>"HM MH4^(K@"%"PR_4YE<-S!.R$4?MH?/SY1&@F5ZR8U,Z/11+,*@],>(L!915X"' M*`9EMP@M0BI.*E!-6)C'_$@)XH]6K;$G:LQEJ-$0@=L(^4,FGB:,B=12Z"B* M#,C'TBAF/+=(;6-!$2D]X6HXADDMK>%6,'DH+,<(C5,0.56MUR5BC-@`%=4" M\HQ\/.6)$D.]4"'D3Z;RVWPGR:*%\H3Q=P0,DR.U/&$*B$/P7(`C4=>)"'WX MB^?,;,.5K89A&'.(+?948]C5D3"N)S;`;[6>&#Q8B!!RA_TM4MG^)`59*6@B M*DB/A#VI";[RV^PYRB*]Z!#8BXIBOL@O2HLH(\!X+:Z,UF++".Y,,(!8,+*9 MP1T`S8PRI3%IE\EMR)L%5WV'0040)C)=B_`1J`R#8U0.,BX$!:Q%RM./`#W1 M3_]DJX`V*@ML(L-D@H_8EK.=*#56H[/BR?`Z6".D$LEIC9O5UB@298UD8]=X MJ92-9Z/9R#6FC>Q+V.@V9)]`(/;*%O4!YUWJ2GR$S MV%7@6$K1AUTA6*?H'(Y6$P*C."8ZB2/CF,`TCIX;Y(@X/HZ/8_,R,RD_5(>J M)NP`01=:HTH#-(NX0ACQ$C=2OH?DY/D1!_TX^EAC8TS%TB*1HL4'ZD'W`52`89. MSCOC4L54W-A?%5S--Y+(CT0#P4_WW$0GG6%HOQD$62,^)W->1;=`DCI?(*L2 M8^%3+E6%%9<18V92Y:&=-0B`P6_B?'R0?Y4'^7A,=!@D(/4%;I`!5-^1K$R0 M#V0-&4'"D.69('6CJ%`-Y.-10`Z01E:F)0.(D-N9.^9"'I'"R!S%/V$L(<\= M95HE4FB''=5'R1]O%!+YC&@[(^33U/\H4>))K7:"<)%]V$E7O)$@8&09^45^ MD;^4&4E&;B^/3S/ST;V1^)08*1*ID6-D'2E'PI%A)!Y)1[)$519AF'P@2>RC M-\-(A3/AS!95SI0?AD?ED4VU@%)*0I+D_`\3":DTA`22U-1_]Q0^A6H4.[-F M79`])#Z%0V:0_F2M$>E!02"8"&5%ND%$BF6E#B5(YZ3 M14I38DZV..MD.ZDCDCCPE+G2>I4G555^EP-!+LW)1$53*65Z(F)55.TJ?0^\ M:*FI/C[+`[1+:3@X3"FU$+(G.=+2K-K0BWA%`?EOJ#(EQ,E)1L:3F-6OEXG M%EKY=[QY$0_B0W&1+PT-K:*LX%+R%D`$3=Z5Q@I.V2]*5-^<0B6XB18-L<$*#2)17G.7!T+59)UB4B4FE=M MF58&8[BE3*9;^AV%R,W8*^8S$4YC2=*XE,H.4?8K_AW8%E4E3G*45\C5,1"% M1IF(-DF&39>)!Y+FA62"Q]SF\X>M(+V1182T]&H!C@2D-4F7?XS?:#D<(C%6 M>GEX]!WD)>"1B5!<+A4HV`*1*B;71MD"*3B1R$-$7A:3W".T(L88D],D7IDG M@EE6C+.RU?QRMLT9@QB:1][6;VGB."K@B1-TWME`:Q-HX(,G'GF.#X"#RS6$& M'MZ8A=F@=5KMF"(()C."^)@]Y@6$<`T6"0V1*9=])K771-/6P"IB5T/ETC29 M>55.HX)A+:V/+\,66)F^S.WUC;5D?I5`YIS\3,I0"-*E\"EM305B?_5"D)4; M%SG%*B"7L@.N&&`$&``F9\9:30E\%FNYF2Y8"N9EI2CJEYNYM[%D;)@`]IZY M3^]9?F5H%IJ#YIP)9WXQ)AENY49*/\E".#E>_A33%1KTD_5=R<,5,6 M_X6%M"'!]T!A=M5$,_'`5JAF"1);K9JIYJ'E'`E<$0FI&8WE8`.C725E MCBGZV3Y&X%0M2=D;X[M=1TS?+2:2.6N=3,TX9=)8?E6.,HT)67.7=L4P%68@ MY0(F'-E@;%??)H_1,_]097EM4IN0V+;)@&&;\4RTZ6QB5\MF@42<^54A%T#) M"&4RD>;]Q<'5+\;92K;,]&+[6';%ABU8#E:^29Q,6/OF4>9O#E$[RW!W6^28 M_*2R\P`=G%S51`4/Q3,*9S1&S]R4:0O$.=_<,]=5XJ0)VB585*0I@OTCQ)$+ MQGM15W[5<&5OZIOXII)E/2=#UJEY(YF;&:AM:K>76*6\31ES)^+5KED7$"T/Q]05CK,X0MG`+9KB.?>J7CJG<9EXJEW/IZT5N0Y`Y&!F%QK@))GOF MGGF>G2?G"7H2)S9GZ/EYBIZB9R,IK\!F'HZ^HWFR*`X;PB=DY6/]6)?I5^ED M0)EEXF%9)DD9OUFGM)1/"$@3;E5$-X!7X+,L'7N/1;/WN(;]I+)SSU@FFF&? M"9[HF7HFXHEZ$F>[2YCI@4"!Z4R[J='<`/'-(K0U"9?$Y;CE5XU;C:?YJ7X. ME^2G0;EDEE9<)O1ISM0FV`=M25C5)HDE3?FAM""9'@Q7$3I@!4O14WIF2)KF M571V%*`VUP':=R2@C,C.-9S@7(S(`^J9$'@R2FX57E6@0)=,I:DP-@:5D0GE M7)$/Z"&"ULA4(B@'6H(^H+<'Y\&!IJ`K*!Z&@KX>>993&(-:.BLHQK+8,"/I M#0K*%M1=7!D/NM\,)U7EEB2GL4QZE]-1HI1K!F`,LSSY6%0@D2+I[6-/Z%7% M.TJAD)>,%T;T'EVB[9(+=<\$ M.<03)-JI/**2EJ?):$(G\IF=N)[H,`0);[>T.$B3C[M);%J;QJ5ZTF9*GG9F M+GIW[J+!D2Y:P/B9;B8*56T"=:N8*W9^'J/;"UES!C&O94+J7F5BSU$)8D5I"Q),)T M*5R,<%E70BT)2E:J]&0\YF7BD9\9*^')_=$WDC,IR6O&]"EB)N85)9)26?:8 MX6&)(9(YY15RKG1B`<[_E8EQ8G9I+I5P63`(35\JTYQ;"1?#)9@>7`.-,>:7 M`J8+%V%ZF#X]=EWF`G3:8K*;YJF+-:'F9H(5565IJBI9ZJ:ZIJQY9#205:83\M,Q='\:$34U!&8.2AV8[:% MBR$D\IHF>-+)<\FHPWG/`#+L)38&T$Q<5Y5Y%B+Y7AR9.S*1=8*J5._9.Q(S M+E=UNF5A6&JHT4,?260L4612D:E6496."5RZ,>0I4&:%Q268Y["Y!^I'/\]) M!GC>AIHIM*.%^%5#3G&9V&B9]^E+XV-ZF==+*J*?^J<'6:P7A!%F9YD'ZD*] MG\;,_*EU?3)+9I.5>O`[($V*='G)7!(J2$,>75ZGB*L#EF6HL-=)HZ&694Z4 M<&0O,6>DV,[IN'4P&YDI>(+$5![67/:9Q&:VTQ-8L/@NE.E+TT$"J#K27)1D M_9X]2UE#T&"H%>(J-9AAG8X\F;`4#&8XW99< M9O"D/:)@,5T(!2JQGNU8A.3R+$1@JCH2IHZI8BIO2::>J64JFJJFWBYC"X00 M-%HTVM32L85!'[`E_\@_UH^HQ[^HIZ8>/\I;\SZ^CS"/K7+I5&A4"F#8^8TM M#:,O\GTLJHIJH\JH/JJ.:J0*J>X>LQSO8XOOG4(H-=7EG%3#"_BP?JWJ2J2:%[!J%&% MJDH:K^K43(,!R%^Y%((U7X[K&*=,,"8I>,)=+:O*:@3G.)8V^P?J-W?84&N' M-LATE)EX(TO'D>1=E(N@2@#!':&)[Y.*.H:NT'3VC&Q:1EG?B!9I._M+#"?? MT"KM"(((7,J'#F:1EL><@KX3-%(P4CF+):?(U?B7`";`*K"2,0/K,&FP-BK\ M:@P&:763FM82=ZV">VBI/2F:@#<+"\12/E'.8PB7!+4@$BGMX/ET MFO9A;$%*HL9L>GC@:H5_\$_MH_>Q(T*&,"M*MYI/J%$XO&PGA<(H:BK^JHEW5>HMMJ']=IH8B\& M((K3L"JWLC:.CB;"VMP>=NNCH[?FK7PKH].W2HI^:^#JS,AHT\OH@9[BCEK* MT]>7J3@J)N-VG=QG-&0$:4-&KC5B0<)W41UY5^9I(]Y)KAK5!PNI9#$KR;+P MV*PY*^D:NN:LV(=9$X3X86R!/S2>_(<-Z79HHYRMO6KMJE4&;&!A?C**GHBE M26_5.P:E`4B%]32*)H\*[@(831TH3G7VT;1M0]7M819.BY;6HU<&MA9^H9E) MH>KW0?2#.P&(M%0%&CI$CFHB# M=HAZH68.<\6:\60J;PH:MK\?/)E5),\NE M!H/[*`VWX01;K$*KB6/1>JH>LQ[1B1 M+E4IRTI:)\$2J'+(@J_:*SJUK+RRMP$3/HA[IS+"8[H=@P>,BUYG9Q/9D,VI'D MX&`1R=T*N!8BR1R3F60]+L%@9&HYSCJ`H^ERHRRH7Y=H,E/!>(6(LN4=6FJ0 M1XGEF8R)OL>NJ8DXG=,L^S,W9GJ%:^(Q@VB1!0!(/*C])::#1TR-X89;%#@%H9PS>Q M,E5?V>?8ED:0[2W4V$:V*5_29-E.MBP*9EO9:K87:&;[V'JVE.UE^]ENMHZM M-V3:7E27X_]@>00!HTT:_/ MX6LRZUTP3-OB(ZDQ;036/T*31'*1'#2BVFIGK:VP0]\]:]?;;Z05Q7675".) MD(I/_@]]N\70=_?M;PL#-I*Y9C1((9%O!Z*Q5F[UG-'@$0\4] MR%M^ZP^I@[XM3\3^2+BP9WTK9C:2:4_:P[KD;:"*H)<,VC$@2SLDS)A)>PAZ M*YO)-TL-+.8(24`AK2/DWS:W"0U5VI]80OB6W+("&2BDFA07TCY"TE!I0@4E M0PU+N8H-L4'$FWT3)8DCQ%`Y]#KE1W6GC:4/8;:1;91[X-X_`HV+V][N*[9, M9V*PT%][2"&4WMHH6VNQ&0OI8.R<"`/BUG7N"O6CW5ERKIH/58*TN=?3]?1= MYD?7)K?&!D5!$$U*-*PMN`NN<>OV&$36D&_[X/*U@JZ%&\,XD56<6H>TT%CJ M)J*2.;ENAPR;J_*1N$30EXOBSI6#"'AZD0UL@XBN9J9P0/K)B@F0HB#L4DLS MW$&E&A&B-;3,N;,4OL4!07\H"*Q;TR2#"@JM:\,@=D%,AWO3:'=9SO3DK/BZ MW]`\`^B28C+NTJ(HP;AX%/0U-<(P26`3S]:%#4XH@KL M8_R@5-P>N:)#`4+V2_EG8V[Y(I-%_\(JV5AH.NICC_>R)2O"T+8/.Q9"KS%X6+C7:\]6VD!0(1O*H4OEO) M3EF_+4[R[KI[`4GS&+\U,X.00VKNWI(V2#'X;KH_W2[?D@SNO&%35#KJAKK_ MR<_[J:"\/F_0:_0"O4@OSUOT)KT][[-&]`J]3>_1J_1"O4OOU!NO;$!55!6E M_PPJ1H"YZZ%](1S;BBO`)+L@"SPEX!HM=XH_2*J=NF&:VJ&G%#2YS^#Q]LHM M$A+&TO%&,I?,W9OCUKV,;V^.N]XR,QA5.#+X=C,Y[DKETJ8LBN^! MR]]Q+T[DYPCY6C`YKFL7^4J-96R.Z]E"*YHO?6=134`BR6/)]XJM5F408]Q8 MLMK)Z1O9:BHS$\P2Q-`LO*3CV_/<*IIOL]3SY#%M[^A[VXV^?9`[=Z^:N;4O MYZC[0B7#KU2ZD<0Q;US35ALUO&FNF#OV#D-&'KZRX\B\?H%RM8<8MBR31N:! M(;?T+6)+E8!I:V^D&^&Q1,3O4(0CU6&S$/K+_391I"_[R^K&)1_+X,O]RK^D M+_UKW)RZA2[$R]?JO[JNP8O_@FMY+@!^N!^!ZMH:*2.C[&CU+;AC4JGQ:^\F`VY'XN1IN=[IN(C0ED`Q@)@TJ M0X"YZ^0@0F'/D^OR,KD7#!!4Q0V[I1'GB-\J1AXOZ$&SJCC3XKL%+$6%/(>\`?`5/ MP5SP%NP%:\$!6Q6\[^J_[5#%AG&Z;K,7A$#]VER-S",'K^!#`@P<[`0J@O5O M%$0%,KK,%QX\JZR&?-XA$@T)AW^P[0XNM6PI!PIGL)HVMO[B-,"47"F[`GW`AKPJ`PPSL*6\*E M,"E,`L^BAUNK2\`A(F;2SA2#9!TV4=A[L4!R==V"=P8O>'<*3K.ZV;H<"ZH% MC5II%2Z$XPDOCS9@D#8WZJ59L"M5['9FV>Z&E))H7_U@>5H,@X=\7HJ:#5O" MSQ?$NSJ:NDZL8T;!BL.7#@E$]Z2ZL.="8P'/)Z2P-FRV/&:\*:C[-04M6E&LNU=0M75 M,091,F3<1'T\D3]4$8FX5%P"[=&]<692+P4>?7TS"D=S`JA"/PMS=+CH4 MZ(>3T'4*TK+S!EVX3PA2I'I6N.>28@6-\"'745:(\GFZ;&X-Y[S]Q,U;4+R\ MB;KBVZ<+%`_%0C&GBQ0O;R5K'1:EN'237K[7&AE#;9CR9N:2(QGP$$*_Q4)+ ML/*VWBI&*TM7S"Q]Q6(Q6%S`E,5H<3G$+-4O6/%C"_S>)+WM$KH/1L6%Z'#W M&$4D0M!?\I&MC[FCV(0OT;9M&'TWKH3`(W$,L^'2MY[OK?7B5KF,<3OT(1VX M4NYBO,DAN%,)3Y2=B#BVCRE#K=ETVAWY5M'N1+/::CP2L<:SBFHL&Z?&&XOYR!$G+C@0:?S5D95X;E3RD?S&6(\!I.4" M)2I5$]B@W;Y1B0`8E13'R+%.PAQ#MA_)S$#^YC@NW;>Z;.:M6LJ2;34!%[$HA&X]`P5+\[CXCLB MU<>ML.$F&4.YD/$;U.)NQ+-=2G(7/RT*'E57B"F_7,S%"!KG`/L2YR??R+]C MYJ<[7S)2M[`4)QROM]#0<(PA,SZJVS^H#DW&E]"9Z]YZ8)80R(;8GLAJ<8J, M":5#++(X]`^#R!\RBKPB>\@M%NT,&QI"M[V$FE5J1CJ M8Y#&+#!1+\FT"4/%4GS'<7)MU=Z:1O3L1FRRL`?M)7NG3PM4WDD]T)O>(L_\ M=J'QB=L3LTP&EZ=;%%?%2[%2+"@;Q0@-+@@H#\J',J$<*!O%-*ZHE!OUL2E0 MR&(-J2CP,:&;_+8J\6UWB2DS=\;822RPM4:>)IHJ0P8 MDC2#(>:V-/5SEYD[9 M[U?WOPALQC*R?"QW0,FR5KPL-\O0\K-L1;D_U+)$)@00018-W8GY%:*#-"$*``?&7OPP@Q0=I[_+,<,,*W_`RW%: M%S&?ERE56%R31,<2LW.<,6/,%W,3N#$S)1:S4\(QB\P><\<<,HLX)3/)?#)7 M1AJSR2RPH36S#/S\B28W,1_Y`R0A`*YL">1Y"_W3,C0 MI#R$C#)3L3_473Q_O2P\#%;$+0U[LP_'+"=/RM#0-#0).8^J MC"F3-^N!T5#?RS='<7BSW[S"4$//$.-C,<>K%K/4(Y<,H6+0%Z3=<8Z!Z+6< M)Q=N;I^:^Q2G+5F/FJLT.[;$[_D+*%_%;C'8!"A+,B%S]VL6C\4IL^F<%KO$ MJ+/%O-Q:Q5QQZ/PY.\R;KU2Z.?O$]6X!8@:[LX@R>J[9VCVS M1-_SH1P^HW?CL_@&_%I)Z'-XM7I(S@QR%P6A`"+D7P67K]`U?&$AFINX0AI> M7#2V^(!E,D^DI4(Q5JO@)1==6M`5*_2!V#!F&6L!H#"V3A'F4TG]'3<(^VS1 M@#J/">'XL3:E$]+)!$%I;U'IRRL,24*C&HHLJA6^(72*7$*#T.UMD*M"MT(K M]*^BO;#0=<_1YY%&+.@RU+SUJPU?\U<,Q$] M1'?*0;01+40OT4IT$UT5Q[M.M,`V^++$5;'/L_IUQR,:'`8[Z4U`+*BBS?#, MS;-YS+?H8CZTK+Q#+T,G\K,K;;7-UBSW&U3Y+;!/JF,40X,]F#/T">54@'-& MQ&4=11'74300^M$DL$:4#VO%IW$ZA`D!A%YR32.7F55QW+(92[T]"Z@$^P5-8"S5MQJ!T;]#$6VVN=7%MQ_`<-`@PP0M"1CU2S.TCM7)!4FQDX.:QP<`"B84TW(&X M^C1["Z"QO51;@JP``Z"G;O>RR>3#OU%ZG#P332!U"EBQ*2[L+<$EV^;#?*8^ MC4YKT;'5C2Q27W9)"4N]K\S4'3),K5+KU)003YW=U=0QM=(TKMC4/6]0753# M5B9U25W]]+]-VT>]0W'4&[70@U&K?!7;T+LV3]15-4.M40U1`U8ZR7F ML`MXY9L!],Z]1.Y0=&3HQ=;M5FX+E3+$AW%11'QJ?]?W37TM+"?8IG%FK6#C-[QP M6NT=4]C_]83=8,\E%K9Z;5\7V!'V@ET41=?\=88=8F/8(/9%9&*[UQMVBLU@ MO]<7=HLM89_8_C5>TM*XP5_CEQR0I,8V=H2]8]=4I!(=$CV)'1J-7]"JV=5H ML-KKIRV)7UF1U?_]=L]IJ=#_N`:O9F'5^7V=D=F7U84U*26;\L#J,T M^M&_E@X66K8=QC3BYF%^;2]V2]B)S3S>>!QE0V5^L0`Z5"-_N8EP[">3;84 M?C>4J07"T-DCC-?$"5W.;MA)S37IVB$:0(+S^MJ/5#JC4+?93?^L^U,?V"DMC)P_0\7`SK*H]

AH]:*K`J_M0\:=>82 MYSVJZNO2-0]]%GM@=M'*.JX!;6BH'1Q(X MKTNQ)-@K:CXZISP8S?7;\`&PG5Q<^J'VV@K)'YM.\HVC_'1WZ)2;9:KG7K#[ MR1/L@'(7\J#\@VQA-Y1/V!'E/&2J-(==P^YA)R+WYXG(`/I#,HJ]O2M%?B*S MV%7L]&E/^2$95!YQ?;*/ROO33614=\15U6UZ9W6#NG?LXF0*/:W[C7RA%[+7 MRG?=Z_9>M[#[0[]D_R.+Z(O=PW)DM[&\?;M(#H*JZ+'L(OM)\I;=:-]EYR1/ MRZW=7O;N0RJYR&YF[W:GV4_)0'HK[RKYS2YEE[-_>>_LQWTR[YU]7E]&ZA0RKYWCVEM_/"NPOM>MZ?_Y@ZX$U\^)<'>A7M77IK,IC^32UI;_2V MNR'>:/I*^TT@S[NFG[EBO.FAOZG&19\88]YSA;D"1M/AJ/9ZLJH=GYSR3BQK M/E_MN]M_\A(UYBU0GK47E&OM6L^;\X.?U;_)W:B7AEG>'W[=,4U6T;J%AJ]& MEA^H=P(TLV[Z`TOF_WR*0WOU'^DRN>A<[A\7I_N']+.])&BN?*TZ/4I5;1X\ M1N'\.MTY?V#4;KIAA4G#K-_['NF++4GZ)EVPC1K7]'G;B58G+74Y["GV9.1V M3V/%7FCT@I3_7U_GID673"'[TU(Z**QA=!T"70F3=R(>Y/$*:!;`;YO(_JO* M1"6E.X!2?]"3[4F1OD&HH]&NS/^Z?]`S#+`HQT:S/7L`%6K)@R">/%ZW%0M/ MI$OY%>GG_S M#DRQD&&T=$W;IPN[YKAZ!KRLKGQ,3Z98%5F=?FU=@7%E:8Q_XV?Y4$0(_URD M5-52F4^193=R(GG7:HUWF&>)6G!6D&B;6/13*U#B>+)J@6:`?W52=07!6*HY MR4]7`)12L%*V?;ULS'FB`:5SMU]/?IEO]'^/?_=_#F'>;S=977V==]ABQGZ: M6LEC;E^?93]K1GZ%6V-7YU71<7M]I%#1?MAH87#N7Z]E"FD84O)_C7\Q@%-N M)&T2@&]4OFI+!=)4+X"K?C&`"'@S@"%0&%1M6N)O`5>77,=;6`!E=%4`30!T M8W9C+U$C`8A330#(7&6`30":7%ME3$\R5OQ7L'\.?HU_?'$(>)Y;N0-1`8]H M0'PD5G-8T7OG=^U_(&G0;(9Y^&\X;IU0KG&-;#UOYG7E=[YAJ@@#=.YAQ M105X8`QW6%F(8:%EV6/&;:1OY&5^4VM3C'<^<6)S25!K<[UG'%BP83ILP'OW M6/5TOE+M:^Q[4E]^8ZYL8E:R94=[3&839P]9$5EB:"54#7(5?:]JQ56B@(UU MFT^L3V%08U!D6=.`20(S:'D!QU2K=U5LKEQ&`FP`UU0B7,QC_%.Y`7!U!/?%?54B%N*&W)?G5Y0&!64P$"@V+Z`>>`/E#*?BYCK%F5>8=9 MZ75I?IAYA'>M;&I8:U`S9VMU+7$(4)E85GL?42Q]\VNL8^)C.6A1`=E1T6J] M@"EH*5QP;5)LL&IO479EU'WZ6\A5NE=X;95?5&,&4A)X$6WS4=A:^U/M;_^` M*E/E43AE^U?<4_\%Z7^K7&=8(FZU9H-LX7"N=6%X?&U<4>E16GJ^:ZA/RT\= M!$%Y;%7$?M198@"&@%MI*X#P`?EH&W46<;0'FGSP54AW'UH3`5*!\5ZA?$M/ M68')8QZ`&7B(6LMEVF7<93E[\'_\8D9\6@(<57E[A&R7P>T!;*U9H@0MRD6U$8G(`+7%V4U%] MTG1O6JE;S%H8U@,8B925VZW>!N!NUCQ42V!R7ZN>TN`?5L$ M@'@`PV-3`1IBJ%!;?I:!^&)'6F9Y3H&6?B1FNFRT=XQ2#7.B=7!3'G)'4\1L ML5,C<;Y?1GGI&N42;V3@#,$)=<=6,N`"P`Q6C46"A5[A:X5U\85R/F0N7M-=]GGI>?AY MT&GZ>9!R0V30:91NBWH47NM^!'HK=O)=%%X(>OU="GK]70QZ`FK_::EN!E[] M?JIR*EX`?ZYR!%XR>@YJ^UT8>KEN&GH6:AQZ"G^Z<@Q_O7*3;\!R/'JV;R-J M)GK=4K4!R'*.9`MS678N>LYR''\R>M5NH1/5 M>ZID-%[S>UM>68+GF7)(>F1>7WIX=E)J7WHW?_-N98+UM%D_G*+=EEJ`G..=F-ZD'8'<]MD3G]F>B%2:'I?@IEV%6^;=E9_G78: M,P@1$0^A=G%Z(&^':B$!=7J[6@MI!0734$P`M5XU85@`00"0@K5>94EK3S!7 M!&2);/5NGE9H3YH!!6>"5F=Q0W4%81MP=P\V`%^:46A7TF,J5TY9 MY%UF6:=H.@"*!RP`K'R*![E/Y>"6^)"11OQ&Q33R5B%5-Y:IIF!'YE=#]OC6=4;XU3#(-*5'L!*B`^9&.# M5W?0@9M<1X.@3R5B=0%_`GF#$G!0`*I>T8)O=R==#X/N@G)U*``!:VN#M6*" M@R%1%G5P9X:#24]J8!%.M5E8@PQ6$@$V90MI0'OZ9:MLI7065KU24X.^8#YT M+52V6XUS[%Z+@:Q0P7Q5;R9<-V"T@C@!/F2Y@0YP`#>K8(X"%W!)3ZM/55OF M=U-3)U=(;T)#P6"Z@SQNWX*,9QIN5&_=?[)F$6T/@X]4LH+U64E0/7AW@_D( MF'B37;A30E&U8KB#:0J9>&![ZD\14[!BOX.WP]]:&-_:QEP:0#M@>^!QW>@ M;$-/FX-'3QD&5FDD6>5]5G[F=VD`U0,6A`V#I'QI`"L`V! MU0-R<12$[8$IA/^"9GPL;NIH<$\!:[53!(,O8E9\?"CV@Z9ELW%]@]2#UAS) M3]UH?X.Z4#R$XQ(0(]8IC M`FF.@W-8(X2;@C(.9EJT4?&"$`,R>.40#]N\FS"@_H5=X2:9L>#Z8-EA*\.VU*M!?6"='R\`4-U M\8(1#R=B-1O6>FA\]X*/9WV#4X1.#4.`56F`4!1PC&3G53YP6H2\`5R$;81( M@^M2*81$A.I:(%EEA%>$I(1IA.R"C(-Z3Z"$W6AG@]I8P%VV;)"#37MVA!); M>(1K>^*#?&=:0R4HMH1_A.B#SE#F@H.$L(2.A#%1:H2(A*=8BH2(;#-QY!*I MA,^!_F.3A,,%)&E6A(%TT80X=0][:X0;:4B$ZFBT@BH($7;3A(@%G@6#=(^$ MJH1LA*R$>D_B!@51KX3G*+6#=(1L@W:$#TFWA`9XWW##9KN$<%OS"+Z$X()/ M48*$AP>3>/>$)"B'A&8`B82Y6`]YB@7VA,6##WO/@3,`FER3A'@(TH2FA(%T M#876A)R$[8)#A-J$[E#T)=ZGU> M9BQE]GLY73M0(%!QA#,A=1>J83^@GN%1@?L715J07%L M3[6!MURK`M2#YE5SA*982F=S<&%EI'QJ6;YHQ7]W#U5>2P,U475:)%B744I18%+9 M@&M4OUCP5>:`]%E,4`EV!H(,=C(.[GG:?@R"$W;>?A9VX'[@$6L,XGZ,;N5^ M063G?D%DZ7Y-9!R"*G;N?O)=4F3Q?B]VI&XC@EIDB%/X?F)D-G8H@DAD#`DJ M@CIV$GJ09#YVL')`=@5_N&Y#=A1J"']'=KYN2G;@;KYR@61N9#^"AF0&AE-V M%'^09,QN5W:49"UZ&G]J9%QV`W]?=M1R(7]/@F5V48(F?SYZ*'_B;K%N6H+G M;EV"VF0S?#)_17]C@DQZ>G8>7CA_-G]I@H%V6VI4>C]_Z75!?T5_B'98>@:& M1G];>M-D=()D:DI_-(.1=O!N9'H*); Thu, 16 Sep 1993 10:32:28 +0200 Received: by f1neuman.gmd.de id AA15903; Thu, 16 Sep 1993 10:33:55 GMT Date: Thu, 16 Sep 1993 10:33:55 GMT From: Rolf.Hempel@gmd.de (Rolf Hempel) Message-Id: <9309161033.AA15903@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: LaTex source of topology chapter Cc: gmap10@f1neuman.gmd.de % Version as of Sept. 16, 1993 \chapter{Process Topologies} \label{sec:topol} \label{chap:topol} \footnotetext[1]{Version as of Sept 16, 1993} \commentOut{ This version of the topology chapter incorporates all changes decided during the second reading at the August meeting. Thanks to Steve Huss-lederman who has done the reading, and who has reported to me all the requested changes. The main change is that the topology functions now take communicators instead of group ids as arguments. This has been changed consistently (at least I hope so) throughout the chapter. The other changes are relatively minor. Some of them were necessary to make this chapter consistent with changes in other chapters. Some formulations have been changed slightly to make everybody happy. } %end-commentOut %----------------------------------------------------------------------- % % file topol.tex % \section{Introduction} A process group in MPI is a collection of n processes. Each process in the group is assigned a rank between 0 and n-1. In the majority of parallel applications this linear ordering does not reflect the communication structure of the processes which is usually determined by the underlying problem geometry and the numerical algorithm used. Often the processes are arranged in topological patterns as simple as a two-- or three--dimensional grid. In the more general case the logical process arrangement is described by a graph. This process structure is henceforth called ``virtual topology''. For the user who programs an application on such a process structure the most natural way of referring to individual processes is to specify their coordinates in the process topology. Usually a process does not have to know the identifiers of {\em all} processes in a grid, because communication only takes place with processes in a certain neighborhood, and perhaps with a few distant processes. Non--scalable features like the explicit listing of all participating processes in the application could, therefore, be avoided, if there were a means to specify the information which is really required. A clear distinction must be made between the virtual process topology and the topology of the physical hardware processors. The application specific virtual topology can be exploited by the system in the assignment of processes to the hardware processors, if this helps to improve the communication performance on a given machine. How this mapping is done in detail, however, is outside the scope of this standardization proposal, since it is too much dependent on the particular hardware. The description of the virtual process topology, on the other hand, only depends on the application, and is, therefore, machine--independent. The functions which are proposed in this paper only deal with this side of the mapping problem. There are well--known techniques for mapping grid/torus structures to hardware to\-po\-logies such as hypercubes or grids. But even for more complicated graph structures good heuristics often yield near--optimal results \cite{suprenum}. On the other hand, if there is no way for the user to specify the logical process arrangement as a ``virtual topology'', this information is most difficult to recover later. A random mapping is most likely the consequence. On some machines this will lead to unnecessary contention in the interconnect network. Some details about predicted and measured performance improvements which result from good process--to--processor mapping on modern wormhole--routing architectures can be found in \cite{wormhole1,wormhole2}. % \section{Virtual Topologies} % In the most general case the connection structure of a set of processes can be represented by a graph. The nodes stand for the processes, and the edges connect processes which communicate with each other. MPI provides message--passing between any pair of processes in a group. There is no requirement for opening a channel explicitly. Therefore, a ``missing link'' in the user--defined process graph does not prevent the corresponding processes from exchanging messages. It only means that this connection is neglected in the virtual topology. As a consequence, an automatic mapping tool will not try to assign the processes to neighboring processors. The graph definition function \func{MPI\_GRAPH} presented here does not include any weighting of the communication volume along the different edges. Processes are either neighbors or not. Experience with similar techniques in PARMACS \cite{parmacs1,parmacs2} show that this information is usually sufficient for a good mapping. Additionally, a more precise specification would be more difficult for the user to set up, and it would make the interface functions more complicated. In principle a function for the definition of such a graph structure would be sufficient for all applications. However, in many applications the graph structure is very regular, and the detailed set--up of the graph would be inconvenient for the user and resource--consuming during run time. A large fraction of all parallel applications use process topologies like rings, or two-- or higher--dimensional grids or tori. These structures are completely defined by the number of dimensions and the numbers of processes in each coordinate direction. Also, the mapping of grids and tori is generally an easier problem then that of general graphs. Thus, it is desirable to do the mapping as grids and tori rather than obscuring the information in a graph. Therefore, in addition to the general graph, Cartesian topologies are supported. The topology definition function \func{MPI\_CART} can be used to describe Cartesian structures of arbitrary dimension. For each coordinate direction it is specified whether the process structure is periodic or not. Similar functions are contained in EXPRESS \cite{express} and PARMACS. Note that an n--dimensional hypercube is an n--dimensional torus with 2 processes per coordinate direction. Thus, special support for hypercube structures is not necessary. Based on the positions in the virtual topology a process can look up the ranks of other processes by calling \func{MPI\_INQRANK}. The processes are specified by their rectangular process coordinates. Thus, it is possible to inquire for the ranks of only those (few) processes with which messages have to be exchanged. The inverse function \func{MPI\_INQLOC} translates a rank into the corresponding Cartesian coordinates. % \section{Embedding in MPI} % The support for virtual topologies as defined in this chapter is fully consistent with other parts of MPI, and, whenever possible, it makes use of functions which are defined elsewhere. In particular, the virtual topology functions are based on the general management of process groups and communicators, and they complement the functions for collective communication. The current design of the process topology functions is based on the following assumptions: \begin{itemize} \item MPI is free to choose any process in a group for any location in the topology. There are no special processes which have to be aligned with topology substructures. This assumption fits best to a ``local SPMD model'' in which all processes in the same group execute the same program. \item One important feature of MPI are the process groups. The treatment of virtual topologies has to take this concept into account. The functions presented in this chapter are not only compatible with the process groups, they even take advantage of them for the definition of mapping overlays and dynamic re--mapping during execution time. Virtual process topologies help in the subdivision of process groups which in many applications has to be done along process coordinate lines. Furthermore, the definition of collective gather--type communication calls benefits from the natural ordering of processes in a virtual topology. \end{itemize} The virtual topology handling follows the general MPI rule of functional layering. At the bottom it is based on the general communicator creation function \func{MPI\_COMM\_COLL\_SUBSET} plus a few topology specific mapping functions. In principle this is sufficient for defining topologies and using them in applications. A number of higher--level functions provide an interface which is similar to what users of packages like Express and PARMACS are familiar with. This level can be written in a portable way in terms of the low--level functions. Implementations of the high--level functions which bypass the low level may be advantageous on some systems in terms of memory and cpu time usage, but this is not a requirement. % \section{Overview of the proposed MPI functions} % The features presented in this chapter are based on MPI functions for process group and communicator management which are defined in chapter \ref{chap:context}. In particular, the function \func{MPI\_COMM\_COLL\_SUBSET} is used internally for subdividing and re--ranking process groups. Since the topology group creation functions may require internal communication, communicators are passed to them instead of group identifiers. For consistency the topology group creation routines \func{MPI\_CART} and \func{MPI\_GRAPH} also return communicators instead of group identifiers for the newly created topological process groups. The topology routines \func{MPI\_MAP\_CART}, \func{MPI\_MAP\_GRAPH}, \func{MPI\_CART}, \func{MPI\_GRAPH}, and \func{MPI\_PARTC} must be called as if they contain a barrier, but they may not actually have one in the implementation. This is analogous to the behaviour of the collective communication functions described in chapter \ref{chap:coll}. Also in chapter \ref{chap:context}, a mechanism for internally storing data with a communicator (cacheing) is defined. The topology functions can use this facility to store and retrieve process structure information. There has been a general decision in MPI to start all numbering with 0 instead of 1. Thus, coordinates in a Cartesian structure are 0,1, ..., dim-1. In the same way, nodes in a general graph are numbered zero up. Row major numbering is used for the processes in a cartesian structure. This means that, for example, the four processes in a $(2 \times 2)$ grid are assigned the ranks \\[2.0ex] \hspace*{\parindent} \begin{tabular}{ll} Process (0,0): & rank 0 \\ Process (0,1): & rank 1 \\ Process (1,0): & rank 2 \\ Process (1,1): & rank 3 \\ \end{tabular} % \subsection{Low--level topology functions} % On the lowest level groups (as part of a communicator) are created by the general function \func{MPI\_COMM\_COLL\_SUBSET}. Using the input argument {\em key} the caller can change the process ranks in the new group as compared to the parent group. This feature can be used to efficiently map the processes in the group to the positions in the topology. For each class of topologies, therefore, there is a function which computes the rank of the calling process in the new group, based on the size and structure of the topology. Note that it is a valid implementation if the new ranks are identical to the old ranks. So, if for a given machine the placement of processes makes no difference, the implementation of the rank computation functions is trivial. The functions in this section do not change the state of the calling process, but they provide the information used in a following group creation for process reordering. For Cartesian structures the function is \begin{funcdef}{MPI\_MAP\_CART(comm\_old, ndims, dims, period, newrank)} \funcarg{\IN}{ comm\_old}{ communicator for parent group (handle)} \funcarg{\IN}{ ndims}{ number of dimensions of Cartesian structure (integer)} \funcarg{\IN}{ dims(*)}{ number of processes in each coordinate direction \\ (integer)} \funcarg{\IN }{period(*)}{ periodicity specification in each coordinate direction, either set to \const{MPI\_PER} or \const{MPI\_NOPER} (integer)} \funcarg{\OUT}{ newrank}{ reordered rank of the calling process (integer)} \end{funcdef} The corresponding function for general graph structures is \begin{funcdef}{MPI\_MAP\_GRAPH(comm\_old, nodes, index, nglist, newrank)} \funcarg{\IN}{ comm\_old}{ communicator for parent group (handle)} \funcarg{\IN}{ nodes}{ number of graph nodes (integer)} \funcarg{\IN}{ index(*)}{ define graph structure, see text (integer)} \funcarg{\IN}{ nglist(*)}{ define graph structure, see text (integer)} \funcarg{\OUT}{ newrank}{ reordered rank of the calling process (integer)} \end{funcdef} Definition of graph structure: for each graph node its set of neighbors is entered, i.~e., the set of processes with which the node process is going to communicate most frequently. Since there is no weighting of node connections, it might be sensible to specify only those neighbors with which there is a considerable amount of communication. For each node $i\;\:(0 \leq i \leq nodes-1)$ the list of the neighbor nodes is stored at $nglist(j),\;\: index(i) \leq j \leq index(i+1)-1$. For the last process $index(i+1)$ points to the first free position in vector nglist. Note that the matrix is symmetric, i.~e., if node {\em i} is a neighbor of node {\em j}, than node {\em j} is also a neighbor of node {\em i}. This property can be used for an internal checking of the input arguments. The definitions of the arguments {\tt nodes}, {\tt index}, and {\tt nglist} are illustrated with the following simple example: Assume there are four processes 0, 1, 2, 3 with the following adjacency matrix: \\ \begin{tabular}{ll} process & neighbors \\ 0 & 1, 3 \\ 1 & 0 \\ 2 & 3 \\ 3 & 0, 2 \end{tabular} Then, the input arguments are: \\ \begin{tabular}{ll} nodes = & 4 \\ index = & 0, 2, 3, 4, 6 \\ nglist = & 1, 3, 0, 3, 0, 2 \end{tabular} If the topology contains fewer processes than there are processes in the parent group, the newrank values for the remaining processes are set to \const{MPI\_PROCNULL}. It is an error if the topology defines more processes than are contained in the parent group. % \subsection{High--level topology functions} % In principle, all that is needed to create an MPI process group with topological ordering are the two mapping functions and the general routine for subgroup communicator construction. However, this is not what the applications programmer expects to see on his level of abstraction. Therefore, another layer of functions is defined on top of the low--level functions. This higher level can be portably implemented in terms of the level below. Of course MPI implementors are free to bypass the lower level for the sake of better performance or resource usage. For Cartesian and graph structures the functions \func{MPI\_CART} and \func{MPI\_GRAPH} create a process group with topological structure. They combine the call to the mapping function with the call to the group/communicator creation routine. The user can decide whether the ranking in the new group may be reordered (for a more efficient mapping) or not. In the latter case the rank of the calling process is copied from the parent group. The option of not reordering the process ranks can be useful in the case of an overlay of different topologies. The user can then fully control which location in the first topology coincides with which location in the second one. The price which one obviously has to pay in this case is that for only one topology the process arrangement can be optimized. As specified for the low--level functions it is an error if one attempts to define a topology with more locations than there are processes in the parent process group. If the number of locations is less than the number of available processes, the remaining processes of the parent group will not be members of the new group. For those processes the rank inquiry function \func{MPI\_COMM\_RANK} returns \const{MPI\_PROCNULL} if called with the identifier of the new group. \func{MPI\_CART} is defined as \begin{funcdef}{MPI\_CART(comm\_old, comm\_cart, ndims, dims, period, reorder)} \funcarg{\IN}{ comm\_old}{ communicator for parent group (handle)} \funcarg{\OUT}{ comm\_cart}{ communicator for Cartesian group (handle)} \funcarg{\IN}{ ndims, dims(*), period(*)}{ definition of Cartesian structure, (for details see the definition of \func{MPI\_MAP\_CART})} \funcarg{\IN}{ reorder}{ ranking may be reordered (\const{MPI\_REORDER}) or not (\const{MPI\_NOREORDER}) (integer)} \end{funcdef} Apart from some local computations, \func{MPI\_CART} is based on the two function calls \func{MPI\_MAP\_CART (comm\_old, ndims, dims, period, newrank)} and \func{MPI\_COMM\_COLL\_SUBSET (comm\_old, 0, newrank, comm\_cart)}. % \vspace*{3.0ex} For graph structures the corresponding routine is \begin{funcdef}{MPI\_GRAPH(comm\_old, comm\_graph, nodes, index, nglist, reorder)} \funcarg{\IN}{ comm\_old}{ communicator for parent group (handle)} \funcarg{\OUT}{ comm\_graph}{ communicator for graph group (handle)} \funcarg{\IN}{ nodes, index(*), nglist(*)}{ definition of graph structure, (for details see the definition of MPI\_MAP\_GRAPH)} \funcarg{\IN}{ reorder}{ ranking may be reordered (\const{MPI\_REORDER}) or not (\const{MPI\_NOREORDER}) (integer)} \end{funcdef} % \vspace*{3.0ex} The following topology information is likely to be stored with the process group by a high--level topology definition function: \begin{enumerate} \item Type of topology (Cartesian/graph) \item For a Cartesian topology: \begin{itemize} \item ndims (number of dimensions), \item dims(*) (numbers of processes per coordinate direction), \item period(*) (periodicity information), \item own\_position(*) (own position in grid, could also be computed from rank and dims(*)) \end{itemize} \item For a graph topology: \begin{itemize} \item index(*), nglist(*) (vectors defining graph structure) \end{itemize} \end{enumerate} For a graph structure the number of nodes is equal to the number of processes in the group. Therefore, it does not have to be stored explicitely. The actual set of topology data stored with a process group is implementation dependent. It can contain more information than given above, whereas in other cases some items might be redundant. \subsection{Topology inquiry functions} If a topology has been defined with one of the above high--level functions, the topology information can be looked up using inquiry functions. They all are local calls, and do not require any communication. The function \func{MPI\_INQMAP} returns the type of mapping which is assigned to a group. \begin{funcdef}{MPI\_INQMAP(comm, map)} \funcarg{\IN}{ comm}{ communicator (handle)} \funcarg{\OUT}{map}{ topology type of group within communicator {\tt comm} \\ (integer)} \end{funcdef} The output value {\tt map} is one of the following: \begin{constlist} \constitem {MPI\_GRAPHTOP}{ graph topology} \constitem {MPI\_CARTTOP}{ Cartesian topology} \constitem {MPI\_NOTOP}{ no topology} \end{constlist} For a process group with a graph structure which has been created by \func{MPI\_GRAPH}, functions \func{MPI\_INQGRAPHDIMS} and \func{MPI\_INQGRAPH} look up topology information: \begin{funcdef}{MPI\_INQGRAPHDIMS(comm, indexlen, nglistlen)} \funcarg{\IN}{ comm}{ communicator for group with graph structure (handle)} \funcarg{\OUT}{ indexlen}{ number of entries in vector {\tt index} (integer)} \funcarg{\OUT}{ nglistlen}{ number of entries in vector {\tt nglist} (integer)} \end{funcdef} The information provided by \func{MPI\_INQGRAPHDIMS} can be used to dimension the vectors {\tt index} and {\tt nglist} long enough in the following call to \func{MPI\_INQGRAPH}. The number of nodes in the graph is {\tt indexlen - 1}. \begin{funcdef}{MPI\_INQGRAPH(comm, indexdim, nglistdim, index, nglist)} \funcarg{\IN}{ comm}{ communicator for group with graph structure (handle)} \funcarg{\IN}{ indexdim}{ length of vector index(*) in the calling program \\ (integer)} \funcarg{\IN}{ nglistdim}{ length of vector nglist(*) in the calling program \\ (integer)} \funcarg{\OUT}{ index(*), nglist(*)}{ vectors containing the graph structure (for details see the definition of MPI\_MAP\_GRAPH)} \end{funcdef} For a process group with Cartesian ordering which has been created by \func{MPI\_CART}, functions \func{MPI\_INQCARTDIM} and \func{MPI\_INQCART} look up topology information: \begin{funcdef}{MPI\_INQCARTDIM(comm, dim)} \funcarg{\IN}{ comm}{ communicator for group with Cartesian structure \\ (handle)} \funcarg{\OUT}{ dim}{ dimension of the Cartesian structure (integer)} \end{funcdef} \begin{funcdef}{MPI\_INQCART(comm, maxdim, size, period, pos)} \funcarg{\IN}{ comm}{ communicator for group with Cartesian structure \\ (handle)} \funcarg{\IN}{ maxdim}{ length of vectors size(*), period(*), and pos(*) in the calling program (integer)} \funcarg{\OUT}{ size(*)}{ number of processes for each coordinate direction \\ (integer)} \funcarg{\OUT}{ period(*)}{ periodicity (\const{MPI\_PER}/\const{MPI\_NOPER}) for each coordinate direction (integer)} \funcarg{\OUT}{ pos(*)}{ position of calling process in Cartesian structure \\ (integer)} \end{funcdef} The inquiry for Cartesian topology information is thus split up into two calls. The reason is that otherwise the user might not know a safe value for the dimensioning of vectors {\tt size, period} and {\tt pos} before calling \func{MPI\_INQCART} (input argument {\tt maxdim}). For a process group with Cartesian structure, the function \func{MPI\_INQRANK} translates the logical process coordinates to process ranks as they are used by the point--to--point routines: \begin{funcdef}{MPI\_INQRANK(comm, location, rank)} \funcarg{\IN}{ comm}{ communicator for group with Cartesian structure \\ (handle)} \funcarg{\IN}{ location(*)}{ coordinate vector of process (integer)} \funcarg{\OUT}{ rank}{ process rank (integer)} \end{funcdef} In a sense, the inverse operation to \func{MPI\_INQRANK} is provided by the function: \begin{funcdef}{MPI\_INQLOC(comm, rank, location, maxdim)} \funcarg{\IN}{ comm}{ communicator for group with Cartesian structure \\ (handle)} \funcarg{\IN}{ rank}{ rank of a process within group {\tt gid} (integer)} \funcarg{\OUT}{ location(*)}{ coordinate vector of process (integer)} \funcarg{\IN}{ maxdim}{ length of vector {\tt location} in the calling program (only for error checking) (integer)} \end{funcdef} \func{MPI\_INQLOC} translates a rank in the group into a topology location. \subsection{Partitioning of Cartesian structures} If a group has been created with \func{MPI\_CART}, the function \func{MPI\_PARTC} can be used to partition the group into subgroups which form hyper--planes of the original process structure. As an example, assume that \func{MPI\_CART} has defined a two--dimensional grid structure on a process group. With a call to \func{MPI\_PARTC} this group can then be split up into disjoint subgroups which represent rows or columns of the original group. The function syntax is: \begin{funcdef}{MPI\_PARTC(comm, lostdim, comm\_new)} \funcarg{\IN}{ comm}{ communicator for group with Cartesian structure \\ (handle)} \funcarg{\IN}{ lostdim}{ direction perpendicular to resulting hyper--planes \\ (integer)} \funcarg{\OUT}{ comm\_new}{ communicator containing the hyper--plane group which includes the calling process (handle)} \end{funcdef} \func{MPI\_PARTC} uses the function \func{MPI\_COMM\_COLL\_SUBSET} to partition the parent group, using the process coordinate in direction {\tt lostdim} as the key value. After a group has been partitioned by \func{MPI\_PARTC}, the inquiry functions \func{MPI\_INQCART} and \func{MPI\_INQRANK} consistently refer to the grid sections if applied to a subgroup. If the process topology is a Cartesian structure, a collective shift operation most likely is used along a coordinate direction. In MPI shift operations are handled by the more general send--receive functions. Those take as input the rank of a source process for the receive, and the rank of a destination process for the send. If the function \func{MPI\_SHIFT\_ID} is called for a Cartesian process group, it provides the calling process with the above identifiers, which then can be passed to the send--receive function. The user specifies the coordinate direction for the shift and the step length: \begin{funcdef}{MPI\_SHIFT\_ID(comm, direction, steps, rank\_source, rank\_dest)} \funcarg{\IN}{ comm}{ communicator for group with Cartesian structure \\ (handle)} \funcarg{\IN}{ direction}{ coordinate direction of shift (integer)} \funcarg{\IN}{ steps}{ step length ($> 0$: upwards shift, $< 0$: downwards shift) (integer)} \funcarg{\OUT}{ rank\_source}{ rank of source process (integer)} \funcarg{\OUT}{ rank\_dest}{ rank of destination process (integer)} \end{funcdef} Depending of the periodicity of the Cartesian group in the specified coordinate direction, \func{MPI\_SHIFT\_ID} provides the identifiers for a circular or an end--off shift. In the case of an end--off shift, at the boundary process one of the identifiers is set to \const{MPI\_PROCNULL}, indicating that there is no process in that direction to communicate with. In a portable program the number of available processors usually is not known at compile time. In the case of a Cartesian topology the function \func{MPI\_MAKDIM} helps in setting the numbers of processes per coordinate direction, depending on the number of processes in the group and optional constraints which can be specified by the user: \begin{funcdef}{MPI\_MAKDIM(nprocs, ndims, dims)} \funcarg{\IN}{ nprocs}{ number of processes in the group (integer)} \funcarg{\IN}{ ndims}{ number of Cartesian dimensions (integer)} \funcarg{\INOUT}{ dims(*)}{ number of processes in each coordinate direction (integer)} \end{funcdef} The {\tt nprocs} processes are divided as evenly as possible among {\tt ndims} dimensions, subject to the constraint that all processes are used. The caller may further constrain the operation of this routine by specifying elements of array {\tt dims}. If {\tt dims(i)} is set to a positive number, the routine will fix the number of processes in coordinate direction {\tt i} to {\tt dims(i)}. Processes will then be distributed among directions where {\tt dims(i)} is set to 0, subject to the above constraints. Note that an error will occur if {\tt nprocs} is not a multiple of $\displaystyle \prod_{i, dims(i)\neq 0} dims(i)$. Negative input values of {\tt dims(i)} will also cause an error. All elements of {\tt dims(*)} must be set to 0 for completely automatic process distribution. When the function returns, {\tt dims(i)} will be set to the number of processes in coordinate direction {\tt i}. For {\tt dims(i)} not set by the user, {\tt dims(i)} will be ordered (MAXIMUM, ..., MINIMUM). Array {\tt dims(*)} is suitable for use as input to routine \func{MPI\_CART}. % \section{A simple example} % The example in figure \ref{poisson} shows how the grid definition and inquiry functions can be used in an application program. A partial differential equation, for example the Poisson equation, is to be solved on a rectangular domain. First the processes organize themselves in a two--dimensional structure. Each process then inquires for the ranks of its neighbors in the four directions. The numerical problem is solved by an iterative method, the details of which are hidden in the subroutine {\tt relax}. In each relaxation step each process computes new values for the solution grid function at all points owned by the process. Then the values at interprocess boundaries have to be exchanged with neighboring processes. For example, the exchange subroutine might contain a call like \func{MPI\_SEND(...,neigh\_rank(1),...)} to send updated values to the left--hand neighbor (i-1,j). Note that there is only local communication in this exchange operation. \begin{figure} \begin{tabbing} =====\===\======\kill % \>integer ndims, num\_neigh \\ \>logical reorder \\ \>parameter (ndims=2, num\_neigh=4, reorder=.true.) \\ \>integer comm, comm\_cart, dims(ndims), neigh\_def(2), neigh\_rank(num\_neigh) \\ \>integer own\_position(ndims), period(ndims), i, j, rank \\ \>real$\ast$8 u(0:101,0:101), f(0:101,0:101) \\ \>data dims / ndims $\ast$ 0 / \\ \>comm = MPI\_COMM\_ALL \\ C \hspace{5mm} Set process grid size and periodicity \\ \>call MPI\_MAKDIM(comm, ndims, dims) \\ \>period(1) = MPI\_PER \\ \>period(2) = MPI\_PER \\ C \hspace{5mm} Create a grid structure in ALL group and inquire about own position \\ \>call MPI\_CART (comm, comm\_cart, ndims, dims, period, reorder, rank) \\ \>call MPI\_INQCART (comm\_cart, ndims, dims, period, own\_position) \\ C \hspace{5mm} Look up the ranks for the neighbors. Own process coordinates are (i,j). \\ C \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1) \\ \>i = own\_position(1) \\ \>j = own\_position(2) \\ \>neigh\_def(1) = i--1 \\ \>neigh\_def(2) = j \\ \>call MPI\_INQRANK (comm\_cart, neigh\_def, neigh\_rank(1)) \\ \>neigh\_def(1) = i+1 \\ \>neigh\_def(2) = j \\ \>call MPI\_INQRANK (comm\_cart, neigh\_def, neigh\_rank(2)) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j--1 \\ \>call MPI\_INQRANK (comm\_cart, neigh\_def, neigh\_rank(3)) \\ \>neigh\_def(1) = i \\ \>neigh\_def(2) = j+1 \\ \>call MPI\_INQRANK (comm\_cart, neigh\_def, neigh\_rank(4)) \\ C \hspace{5mm} Initialize the grid functions and start the iteration \\ \>call init (u, f) \\ \>do 10 it=1,100 \\ \>\>call relax (u, f) \\ C \hspace{5mm} Exchange data with neighbor processes \\ \>\>call exchange (u, comm\_cart, neigh\_rank, num\_neigh) \\ 10 \>continue \\ \>call output (u) \\ \>end \\ \end{tabbing} \caption{Set--up of process structure for two--dimensional parallel Poisson solver.} \label{poisson} \end{figure} From owner-mpi-ptop@CS.UTK.EDU Wed Jan 19 13:41:54 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id NAA05049; Wed, 19 Jan 1994 13:41:54 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id NAA20892; Wed, 19 Jan 1994 13:42:18 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 19 Jan 1994 13:42:15 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from macaw.fsl.noaa.gov by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id NAA20875; Wed, 19 Jan 1994 13:42:06 -0500 Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1) id AA27582; Wed, 19 Jan 94 11:41:57 MST Date: Wed, 19 Jan 94 11:41:57 MST From: hender@macaw.fsl.noaa.gov (Tom Henderson) Message-Id: <9401191841.AA27582@macaw.fsl.noaa.gov> To: mpi-ptop@CS.UTK.EDU Subject: BUG FIX in MPI_MAKE_DIMS() Hi all, I have found and fixed a bug in MPI_MAKE_DIMS(). If you have my old version (dated 11/24/93) please let me know and I will forward the new source to you. I have sent the new version to Tony and Nathan so you can also get it from them if you like. Sorry! Tom Henderson NOAA Forecast Systems Laboratory From owner-mpi-ptop@CS.UTK.EDU Mon Feb 28 13:27:05 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id NAA10904; Mon, 28 Feb 1994 13:27:04 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id NAA05993; Mon, 28 Feb 1994 13:25:49 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 28 Feb 1994 13:25:45 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id NAA05976; Mon, 28 Feb 1994 13:25:42 -0500 Received: by Aurora.CS.MsState.Edu (4.1/6.0s-FWP); id AA05493; Mon, 28 Feb 94 12:24:39 CST Date: Mon, 28 Feb 94 12:24:39 CST From: Tony Skjellum Message-Id: <9402281824.AA05493@Aurora.CS.MsState.Edu> To: mpi-ptop@CS.UTK.EDU Subject: Clarifications of MPI_MAKE_CART ----- Begin Included Message ----- From owner-mpi-core@CS.UTK.EDU Mon Feb 28 11:25:35 1994 X-Resent-To: mpi-core@CS.UTK.EDU ; Mon, 28 Feb 1994 12:14:59 EST Date: Mon, 28 Feb 94 11:13:41 CST From: Tony Skjellum To: Rolf.Hempel@gmd.de, mpi-core@CS.UTK.EDU Subject: Clarifications of MPI_MAKE_CART Content-Length: 1124 Rolf, hello. We need to make the following clarification on MPI_MAKE_CART and MPI_MAKE_GRAPH. These functions are analogous to MPI_COMM_MAKE, except that they also attach the topology capability to the output communicator. The issue of caching semantics therefore arises. I propose that caching of attributes not be carried across by these functions, so they are symmetric with MPI_COMM_MAKE, and that this be explicitly stated in the text of section 6.5. I consider this to be strictly an interpretation of what we have already agreed upon, and invite your comments. -Tony PS Can you remind me why we do not have a means to attach a topology to an already existing communicator, which could be a non-communicating collective operation? This is mainly curiosity at this point. I recognize that the functionality of MPI_MAKE_GRAPH/CART is superior to that, but the functionality I mention is also without need of communication, and analogous to adding other attributes to a communicator (that is to say, user-defined topology functions could provide this type of capability, so why not the MPI-defined approach?) ----- End Included Message ----- From owner-mpi-ptop@CS.UTK.EDU Wed Mar 16 17:56:56 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id RAA06658; Wed, 16 Mar 1994 17:56:55 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id RAA26755; Wed, 16 Mar 1994 17:56:21 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 16 Mar 1994 17:56:19 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from canidae.cpsacs.msu.edu by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id RAA26745; Wed, 16 Mar 1994 17:56:17 -0500 Received: from pit-bull (pit-bull.cps.msu.edu) by canidae.cpsacs.msu.edu (5.0/SMI-SVR4) id AA22241; Wed, 16 Mar 1994 17:56:24 +0500 Received: by pit-bull (5.0/SMI-SVR4) id AA10316; Wed, 16 Mar 1994 17:56:23 +0500 Date: Wed, 16 Mar 1994 17:56:23 +0500 From: kalns@canidae.cps.msu.edu Message-Id: <9403162256.AA10316@pit-bull> To: mpi-collcomm@CS.UTK.EDU, mpi-ptop@CS.UTK.EDU Subject: help with p.tops and collcomm Cc: kalns@canidae.cps.msu.edu Hello - I have a question that relates to virtual topolgies and collective communication. Here is the situation: Suppose that we create two virtual processor grids, a 2x3 and a 3x2, by means of MPI_MAKE_CART for each. The result will be two communicators, say 'comm_2x3' and 'comm_3x2'. Next I want to perform an MPI_ALLTOALL from the processes in 'comm_2x3' to the ones in 'comm_3x2'. This is not possible since MPI_ALLTOALL takes one (and only one) communicator as an argument. I looked at 'intercommunicators' but those can't be used in collective communications. Is there a way aroud this, or am I misreading something? Thanks in advance, Edgar ---------------------------------------------------------------------- | Edgar T. Kalns | Internet: kalns@cps.msu.edu | | Advanced Computing Systems Lab | Tel: (517) 353-8666 | | A-714 Wells Hall | | | Department of Computer Science | | | Michigan State University | | | East Lansing, MI 48824, USA | | ---------------------------------------------------------------------- From owner-mpi-ptop@CS.UTK.EDU Thu Mar 17 02:00:13 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id CAA07803; Thu, 17 Mar 1994 02:00:13 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id CAA28253; Thu, 17 Mar 1994 02:00:21 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 17 Mar 1994 02:00:20 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id CAA28236; Thu, 17 Mar 1994 02:00:15 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA04717 (5.65c8/IDA-1.4.4); Thu, 17 Mar 1994 08:00:20 +0100 Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03) id AA17501; Thu, 17 Mar 1994 08:00:29 GMT Date: Thu, 17 Mar 1994 08:00:29 GMT From: Rolf.Hempel@gmd.de (Rolf Hempel) Message-Id: <9403170800.AA17501@f1neuman.gmd.de> To: kalns@cps.msu.edu Subject: Re: help with p.top and collcomm Cc: geist@msr.epm.ornl.gov, gmap10@f1neuman.gmd.de, mpi-collcomm@CS.UTK.EDU, mpi-ptop@CS.UTK.EDU Edgar, I agree with Al that there is no direct way of doing what you would like to do. The only possibility I see is to merge the two communicators (i.e. the two groups) first, and do an MPI_ALLTOALL in the combined group. Since you can trace back the process ranks in the original groups (and, therefore, also their topological coordinates), you know the addresses in the combined group. The major drawback of this solution, however, is that half of the messages will be empty, because they go to processes in the same original group. So, there seems to be no satisfactory solution to the problem. The situation is different if the two communicators are built on the same process group (only the topological structure is different). Then, you can use MPI_ALLTOALL on one of the communicators, and use the available coordinate translation functions for computing the addresses. Since I don't know your application, I can't say whether you really need to use disjoint process groups for the two topologies. I'm afraid that's all MPI can do for you in this situation. - Rolf From owner-mpi-ptop@CS.UTK.EDU Thu Mar 17 10:57:58 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id KAA12392; Thu, 17 Mar 1994 10:57:58 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id KAA15463; Thu, 17 Mar 1994 10:58:08 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 17 Mar 1994 10:58:06 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from cray.com by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id KAA15456; Thu, 17 Mar 1994 10:58:05 -0500 Received: from teak18.cray.com by cray.com (Bob mailer 1.2) id AA28768; Thu, 17 Mar 94 09:57:52 CST Received: by teak18.cray.com id AA13124; 4.1/CRI-5.6; Thu, 17 Mar 94 09:57:32 CST From: par@teak.cray.com (Peter Rigsbee) Message-Id: <9403171557.AA13124@teak18.cray.com> Subject: isend/irecv question To: mpi-ptop@CS.UTK.EDU Date: Thu, 17 Mar 94 9:57:28 CST X-Mailer: ELM [version 2.3 PL11b-CRI] Hi, folks. I've been looking at a rough implementation of MPI that someone developed for the Cray T3D, on top of our PVM. It only implements a few MPI functions. I think I've found a problem in the implementation of MPI_ISEND and MPI_IRECV, but thought I'd verify this. My 2-task test case (written in C yet calling the Fortran MPI routines, so bear with me, please) has the following: if (mype == 0) { MPI_ISEND (a, &ilenwords, &zero, &one, &tag10, &world, &statobj1, &err); MPI_IRECV (b, &ilenwords, &zero, &one, &tag20, &world, &statobj2, &err); MPI_WAIT (&statobj1, &status, &err); MPI_WAIT (&statobj2, &status, &err); } else { MPI_ISEND (c, &ilenwords, &zero, &zero, &tag20, &world, &statobj1, &err); MPI_IRECV (d, &ilenwords, &zero, &zero, &tag10, &world, &statobj2, &err); MPI_WAIT (&statobj1, &status, &err); MPI_WAIT (&statobj2, &status, &err); } zero contains 0, one contains 1, and world contains MPI_COMM_WORLD. (Don't worry about the datatype being zero. This implementation is homogeneous and ignores that field.) My question for you is: is this a sequence of calls that should be safe according to MPI? I believe it is. But this sequence deadlocks in this implementation. If I swap the MPI_WAIT calls to: if (mype == 0) { MPI_ISEND (a, &ilenwords, &zero, &one, &tag10, &world, &statobj1, &err); MPI_IRECV (b, &ilenwords, &zero, &one, &tag20, &world, &statobj2, &err); MPI_WAIT (&statobj2, &status, &err); MPI_WAIT (&statobj1, &status, &err); } else { MPI_ISEND (c, &ilenwords, &zero, &zero, &tag20, &world, &statobj1, &err); MPI_IRECV (d, &ilenwords, &zero, &zero, &tag10, &world, &statobj2, &err); MPI_WAIT (&statobj2, &status, &err); MPI_WAIT (&statobj1, &status, &err); } the code no longer deadlocks. (It then runs into other implemenation-related problems...) Before I go tell the developer he has a bug, I wanted to be more confident that it really is one! Thanks for your help. - Peter From owner-mpi-ptop@CS.UTK.EDU Fri Mar 18 05:17:35 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id FAA18261; Fri, 18 Mar 1994 05:17:35 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id FAA09985; Fri, 18 Mar 1994 05:17:01 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 18 Mar 1994 05:17:00 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id FAA09943; Fri, 18 Mar 1994 05:16:56 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA12212 (5.65c8/IDA-1.4.4 for ); Fri, 18 Mar 1994 11:16:51 +0100 Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03) id AA17520; Fri, 18 Mar 1994 11:17:00 GMT Date: Fri, 18 Mar 1994 11:17:00 GMT From: Rolf.Hempel@gmd.de (Rolf Hempel) Message-Id: <9403181117.AA17520@f1neuman.gmd.de> To: par@teak.cray.com Subject: Re: isend/irecv question Cc: gmap10@f1neuman.gmd.de, mpi-ptop@CS.UTK.EDU Peter, it seems you sent your note to the wrong mail reflector. mpi-ptop stands for process topologies, not for point-to-point. Anyway, I looked at your example program, and I agree with you that a valid MPI implementaion must not produce a deadlock. It's most certainly a bug in the implementation. - Rolf From owner-mpi-ptop@CS.UTK.EDU Sat Mar 19 10:20:14 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id KAA26459; Sat, 19 Mar 1994 10:20:13 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id KAA22451; Sat, 19 Mar 1994 10:20:27 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Sat, 19 Mar 1994 10:20:27 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from Aurora.CS.MsState.Edu by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id KAA22360; Sat, 19 Mar 1994 10:19:46 -0500 Received: by Aurora.CS.MsState.Edu (4.1/6.0s-FWP); id AA09367; Sat, 19 Mar 94 09:17:52 CST Date: Sat, 19 Mar 94 09:17:52 CST From: Tony Skjellum Message-Id: <9403191517.AA09367@Aurora.CS.MsState.Edu> To: mpi-collcomm@CS.UTK.EDU, mpi-ptop@CS.UTK.EDU, kalns@canidae.cps.msu.edu Subject: Re: help with p.tops and collcomm Inter-communicator collective operations are not currently supported by MPI, though this can be layered on top of MPI in a reasonable fashion. So, you are correct, but the problem is fixable by doing an inter-communicator merge, provided the groups don't overlap. If they overlap, further systematic steps are needed to layer correct code on top of MPI for this. Also note that intercommunicators do not currently support MPI-defined topology capabilities. -Tony Skjellum ----- Begin Included Message ----- From owner-mpi-collcomm@CS.UTK.EDU Wed Mar 16 17:02:11 1994 X-Resent-To: mpi-collcomm@CS.UTK.EDU ; Wed, 16 Mar 1994 17:57:11 EST Date: Wed, 16 Mar 1994 17:56:23 +0500 From: kalns@canidae.cps.msu.edu To: mpi-collcomm@CS.UTK.EDU, mpi-ptop@CS.UTK.EDU Subject: help with p.tops and collcomm Cc: kalns@canidae.cps.msu.edu Content-Length: 1180 Hello - I have a question that relates to virtual topolgies and collective communication. Here is the situation: Suppose that we create two virtual processor grids, a 2x3 and a 3x2, by means of MPI_MAKE_CART for each. The result will be two communicators, say 'comm_2x3' and 'comm_3x2'. Next I want to perform an MPI_ALLTOALL from the processes in 'comm_2x3' to the ones in 'comm_3x2'. This is not possible since MPI_ALLTOALL takes one (and only one) communicator as an argument. I looked at 'intercommunicators' but those can't be used in collective communications. Is there a way aroud this, or am I misreading something? Thanks in advance, Edgar ---------------------------------------------------------------------- | Edgar T. Kalns | Internet: kalns@cps.msu.edu | | Advanced Computing Systems Lab | Tel: (517) 353-8666 | | A-714 Wells Hall | | | Department of Computer Science | | | Michigan State University | | | East Lansing, MI 48824, USA | | ---------------------------------------------------------------------- ----- End Included Message ----- From owner-mpi-ptop@CS.UTK.EDU Thu Mar 24 11:06:44 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id LAA11881; Thu, 24 Mar 1994 11:06:44 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id LAA10237; Thu, 24 Mar 1994 11:05:13 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 24 Mar 1994 11:05:00 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from super.super.org by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id LAA10201; Thu, 24 Mar 1994 11:04:58 -0500 Received: from b125.super.org by super.super.org (4.1/SMI-4.1) id AA23122; Thu, 24 Mar 94 11:05:05 EST Date: Thu, 24 Mar 94 11:05:05 EST From: lederman@super.org (Steve Huss-Lederman) Message-Id: <9403241605.AA23122@super.super.org> Received: by b125.super.org (4.1/SMI-4.1) id AA05462; Thu, 24 Mar 94 11:05:04 EST To: mpi-ptop@CS.UTK.EDU Subject: logicals in MPI_Make_cart Cc: otto@cse.ogi.edu Howdy All, I am writing MPI code and found a problem with one of my routines. It uses MPI_Make_cart (p. 162 of 2/22/94 draft). The 4th parameter is periods. This is an integer in both the C and Fortran bindings but is refered to as a logical. The example on p. 174 uses the fortran .TRUE. and .FALSE. to assign these variables and they are declared as logical. Clearly this needs to be fixed, but is not my real worry. I cannot find in Chapter 2 any discussion of how the integers which act as logicals can be assigned. I also see no definitions in Annex A for defined constants. How this will be assigned is not completely clear to me. In C, false is 0 and true is any other value. I checked the two implementations I know of: ANL/MSU and IBM. The first ignores the period right now so they did nothing. The second I do not have access to the source code. Am I seeing this correctly as a problem (or have I been coding too long :-)? Any ideas? Steve From owner-mpi-ptop@CS.UTK.EDU Fri Mar 25 02:48:19 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id CAA15252; Fri, 25 Mar 1994 02:48:19 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id CAA08180; Fri, 25 Mar 1994 02:47:57 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 25 Mar 1994 02:47:53 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (cf v2.8s-UTK) id CAA08135; Fri, 25 Mar 1994 02:47:48 -0500 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA05740 (5.65c8/IDA-1.4.4 for ); Fri, 25 Mar 1994 08:47:51 +0100 Received: by f1neuman.gmd.de (AIX 3.2/UCB 5.64/4.03) id AA16992; Fri, 25 Mar 1994 08:48:02 GMT Date: Fri, 25 Mar 1994 08:48:02 GMT From: Rolf.Hempel@gmd.de (Rolf Hempel) Message-Id: <9403250848.AA16992@f1neuman.gmd.de> To: lederman@b125.super.org Subject: logicals in MPI Cc: gmap10@f1neuman.gmd.de, mpi-ptop@CS.UTK.EDU, otto@iliamna.cse.ogi.edu Steve, last week I had found the same problem with the declaration of logicals in MPI. So, I changed all the Fortran declarations for those variables to LOGICAL, in analogy to the communicators chapter. I agree with you that there should be some text on logicals, and especially on their treatment in C, in an introductory chapter. - Rolf From owner-mpi-ptop@CS.UTK.EDU Sat Jan 28 21:47:09 1995 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id VAA17665; Sat, 28 Jan 1995 21:47:08 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id VAA03926; Sat, 28 Jan 1995 21:47:10 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Sat, 28 Jan 1995 21:47:08 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from zingo by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id VAA03799; Sat, 28 Jan 1995 21:46:00 -0500 Received: by zingo (920330.SGI/YDL1.4-910307.16) id AA08103(zingo); Sat, 28 Jan 95 21:45:02 -0500 Received: by juliet (5.52/cliff's joyful mailer #2) id AA00608(juliet); Sat, 28 Jan 95 21:45:00 EST Date: Sat, 28 Jan 95 21:45:00 EST From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <9501290245.AA00608@juliet> To: kalns@canidae.cps.msu.edu, mpi-ptop@CS.UTK.EDU, mpi-collcomm@CS.UTK.EDU Subject: MPPOI'95 - CFP Call for Papers The Second International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS (MPPOI) October 23-24, 1995 San Antonio, Texas Sponsored by: ACM Special Interest Group on Architecture (SIGARCH) The Optical Society of America (OSA) Institute for Electrical and Electronic Engineers (IEEE - pending) NSF - National Science Foundation (pending) The second annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'95) will be held on Oct. 23-24, 1995 in San-Antonio, Texas. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The topics of interest include but are not limited to the following: Optical interconnections Reconfigurable Architectures Embedding and mapping of applications and algorithms Packaging and layout of optical interconnections Electro-optical, and opto-electronic components Relative merits of optical technologies (free-space, fibers, wave guides) Passive optical elements Algorithms and applications exploiting MPP-OI Data distribution and partitioning Characterizing parallel applications exploiting MPP-OI Cost/performance studies The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. Authors are invited to submit manuscripts which demonstrate original unpublished research in areas of computer architecture and optical interconnections. Papers submitted must not be under considerations for another conference. SUBMITTING PAPERS: All papers will be reviewed by at least 2 members of the program committee. Send eight (8) copies of the complete paper (not to exceed 15 single spaced, single sided pages) to: Dr. Eugen Schenfeld MPPOI'95 Conference Chair NEC Research Institute 4 Independence Way Princeton, NJ 08540, USA (voice) (609)951-2742 (fax) (609)951-2482 email: MPPOI@RESEARCH.NJ.NEC.COM ============================================================================ DEADLINE: Papers must be sent so that they arrive on or before April 1, 1995 ============================================================================ Manuscripts must be received by April 1st, 1995. Due to the large number of anticipated submissions manuscripts arriving later than the above date risk rejection. Notification of review decisions will be mailed by July 1st, 1995. Camera ready papers are due August 1st, 1995. Fax or electronic submissions will not be considered. Proceedings will be published by the IEEE CS Press and will be available at the symposium. FOR MORE INFORMATION: Please write (email) to the Conference Chair. PROGRAM COMMITTEE: Alan Craig, Air Force Office of Scientific Research (AFOSR) Karsten Decker, Swiss Scientific Computing Center, Manno, Switzerland Jack Dennis, Lab. of CS, MIT, Boston, MA Patrick Dowd, Dept. of ECE, SUNY at Buffalo, Buffalo, NY Mary Eshaghian, Dept. of CS, NJIT, Newark, NJ John Feo, Comp. Res. Grp., Lawrence Livermore Nat. Lab., Livermore, CA Michael Flynn, Department of EE, Stanford University, Stanford, CA Edward Frietman, Faculty of Applied Physics, Delft U., Delft, The Netherlands Asher Friesem, Dept. of Electronics, Weizmann Inst., Israel Kanad Ghose, Dept. of CS, SUNY at Binghamton, Binghamton NY Allan Gottlieb, Dept. of CS, New-York University, New-York, NY Joe Goodman, Department of EE, Stanford University, Stanford, CA Alan Huang, Computer Systems Research Lab., Bell Labs., Holmdel, NJ Yoshiki Ichioka, Dept. of Applied Physics, Osaka U., Osaka, Japan Leah Jamieson, School of EE, Purdue University, West Lafayette, IN Lennart Johnsson, Div. of Applied Science, Harvard U. and TMC, Cambridge, MA Ahmed Louri, Dept. of ECE, U. of Arizona, Tucson, AZ Kenichi Kasahara, Opto-Electronics Basic Res. Lab., NEC Corporation, Japan Israel Koren, Dept. of ECS, U. of Mass, Amherst, MA Raymond Kostuk, Dept. of ECE, U. of Arizona, Tucson, AZ Philippe Lalanne, Inst. D'Optique, Orsay, France Sing Lee, Dept. of EE, UCSD, La Jolla, CA Steve Levitan, Department of EE, U. of Pittsburgh, Pittsburgh, PA Adolf Lohmann, Institute of Physics, U. of Erlangen, Erlangen, Germany Miroslaw Malek, Dept. of ECE, U. of Texas at Austin, Austin TX Rami Melhem, Dept. of CS, University of Pittsburgh, Pittsburgh, PA J. R. Moulic, IBM T. J. Watson Research Center, Yorktown Heights, NY Miles Murdocca, Department of CS, Rutgers University, New Brunswick, NJ John Neff, Opto-elec. Comp. Sys., U. of Colorado, Boulder, CO Paul Prucnal, Department of EE, Princeton U., Princeton, NJ Donna Quammen, Dept of CS, George Mason University, USA John Reif, Department of CS, Duke University, Durham, NC Anthonie Ruighaver, Dept. of CS, U. of Melbourne, Victoria, Australia A. A. Sawchuk, Dept. of EE, USC, Los-Angeles, CA Eugen Schenfeld, NEC Research Institute, Princeton, NJ Charles W. Stirk, Optoelectronic Data Systems, Inc., Boulder, CO Pearl Wang, Dept. of CS, George Mason University, USA Les Valiant, Div. of Applied Science, Harvard University, Cambridge, MA Albert Zomaya, Dept. of EAEE, U. of Western Australia, Western Australia =========================================================== Eugen Schenfeld NEC Research Institute 4 Independence Way Princeton, NJ 08540 phone: 609 951 2742 fax: 609 951 2482 email: eugen@research.nj.nec.com (Inet) From owner-mpi-ptop@CS.UTK.EDU Tue Feb 14 21:58:38 1995 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id VAA20484; Tue, 14 Feb 1995 21:58:37 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id VAA13233; Tue, 14 Feb 1995 21:58:40 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 14 Feb 1995 21:58:39 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from zingo by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id VAA13226; Tue, 14 Feb 1995 21:58:36 -0500 Received: by zingo (920330.SGI/YDL1.4-910307.16) id AA15396(zingo); Tue, 14 Feb 95 21:53:04 -0500 Received: by juliet (5.52/cliff's joyful mailer #2) id AA23938(juliet); Tue, 14 Feb 95 20:59:11 EST Date: Tue, 14 Feb 95 20:59:11 EST From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <9502150159.AA23938@juliet> To: mppoi@research.nj.nec.com Subject: MPPOI'95 - CFP ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ============================================================================ DEADLINE: PAPERS MUST BE SENT SO THAT THEY ARRIVE ON OR BEFORE APRIL 1, 1995 ============================================================================ Call for Papers The Second International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS (MPPOI) October 23-24, 1995 San Antonio, Texas Sponsored by: ACM Special Interest Group on Architecture (SIGARCH) The Optical Society of America (OSA) The International Society for Optical Engineering (SPIE) IEEE CS TCCA (Technical Committee on Computer Architecture) NSF - National Science Foundation (pending) The second annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'95) will be held on Oct. 23-24, 1995 in San-Antonio, Texas. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The topics of interest include but are not limited to the following: Optical interconnections Reconfigurable Architectures Embedding and mapping of applications and algorithms Packaging and layout of optical interconnections Electro-optical, and opto-electronic components Relative merits of optical technologies (free-space, fibers, wave guides) Passive optical elements Algorithms and applications exploiting MPP-OI Data distribution and partitioning Characterizing parallel applications exploiting MPP-OI Cost/performance studies The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. Authors are invited to submit manuscripts which demonstrate original unpublished research in areas of computer architecture and optical interconnections. Papers submitted must not be under considerations for another conference. SUBMITTING PAPERS: All papers will be reviewed by at least 2 members of the program committee. Send eight (8) copies of the complete paper (not to exceed 15 single spaced, single sided pages) to: Dr. Eugen Schenfeld MPPOI'95 Conference Chair NEC Research Institute 4 Independence Way Princeton, NJ 08540, USA (voice) (609)951-2742 (fax) (609)951-2482 email: MPPOI@RESEARCH.NJ.NEC.COM ============================================================================ DEADLINE: Papers must be sent so that they arrive on or before April 1, 1995 ============================================================================ Manuscripts must be received by April 1st, 1995. Due to the large number of anticipated submissions manuscripts arriving later than the above date risk rejection. Notification of review decisions will be mailed by July 1st, 1995. Camera ready papers are due August 1st, 1995. Fax or electronic submissions will not be considered. Proceedings will be published by the IEEE CS Press and will be available at the conference. FOR MORE INFORMATION: Please write (email) to the Conference Chair. PROGRAM COMMITTEE: Pierre Chavel, Institut d'Optique, Orsay, France Alan Craig, Air Force Office of Scientific Research (AFOSR) Karsten Decker, Swiss Scientific Computing Center, Manno, Switzerland Jack Dennis, Lab. of CS, MIT, Boston, MA Patrick Dowd, Dept. of ECE, SUNY at Buffalo, Buffalo, NY Mary Eshaghian, Dept. of CS, NJIT, Newark, NJ John Feo, Comp. Res. Grp., Lawrence Livermore Nat. Lab., Livermore, CA Michael Flynn, Department of EE, Stanford University, Stanford, CA Edward Frietman, Faculty of Applied Physics, Delft U., Delft, The Netherlands Asher Friesem, Dept. of Electronics, Weizmann Inst., Israel Kanad Ghose, Dept. of CS, SUNY at Binghamton, Binghamton NY Allan Gottlieb, Dept. of CS, New-York University, New-York, NY Joe Goodman, Department of EE, Stanford University, Stanford, CA Alan Huang, Terabit Corp., Middletown, NJ Oscar H. Ibarra, Department of Computer Science, UCSB, CA Yoshiki Ichioka, Dept. of Applied Physics, Osaka U., Osaka, Japan Leah Jamieson, School of EE, Purdue University, West Lafayette, IN Lennart Johnsson, Div. of Applied Science, Harvard U. and TMC, Cambridge, MA Ahmed Louri, Dept. of ECE, U. of Arizona, Tucson, AZ Kenichi Kasahara, Opto-Electronics Basic Res. Lab., NEC Corporation, Japan Israel Koren, Dept. of ECS, U. of Mass, Amherst, MA Raymond Kostuk, Dept. of ECE, U. of Arizona, Tucson, AZ Sing Lee, Dept. of EE, UCSD, La Jolla, CA Steve Levitan, Department of EE, U. of Pittsburgh, Pittsburgh, PA Adolf Lohmann, Institute of Physics, U. of Erlangen, Erlangen, Germany Miroslaw Malek, Dept. of ECE, U. of Texas at Austin, Austin TX Rami Melhem, Dept. of CS, University of Pittsburgh, Pittsburgh, PA J. R. Moulic, IBM T. J. Watson Research Center, Yorktown Heights, NY Miles Murdocca, Department of CS, Rutgers University, New Brunswick, NJ John Neff, Opto-elec. Comp. Sys., U. of Colorado, Boulder, CO Paul Prucnal, Department of EE, Princeton U., Princeton, NJ Donna Quammen, Dept of CS, George Mason University, USA John Reif, Department of CS, Duke University, Durham, NC Anthonie Ruighaver, Dept. of CS, U. of Melbourne, Victoria, Australia A. A. Sawchuk, Dept. of EE, USC, Los-Angeles, CA Eugen Schenfeld, NEC Research Institute, Princeton, NJ Charles W. Stirk, Optoelectronic Data Systems, Inc., Boulder, CO Pearl Wang, Dept. of CS, George Mason University, USA Les Valiant, Div. of Applied Science, Harvard University, Cambridge, MA Albert Zomaya, Dept. of EAEE, U. of Western Australia, Western Australia =========================================================== Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Fri Feb 24 02:59:46 1995 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id CAA17404; Fri, 24 Feb 1995 02:59:46 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id DAA10486; Fri, 24 Feb 1995 03:00:40 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 24 Feb 1995 03:00:39 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from zingo by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id DAA10466; Fri, 24 Feb 1995 03:00:37 -0500 Received: by zingo (920330.SGI/YDL1.4-910307.16) id AA13732(zingo); Fri, 24 Feb 95 02:56:37 -0500 Received: by juliet (5.52/cliff's joyful mailer #2) id AA09338(juliet); Fri, 24 Feb 95 02:41:56 EST Date: Fri, 24 Feb 95 02:41:56 EST From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <9502240741.AA09338@juliet> To: mppoi@research.nj.nec.com Subject: MPPOI'95 - CFP and INFO ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ============================================================================ DEADLINE: PAPERS MUST BE SENT SO THAT THEY ARRIVE ON OR BEFORE APRIL 1, 1995 ============================================================================ Call for Papers The Second International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS (MPPOI) October 23-24, 1995 San Antonio, Texas Sponsored by: ACM Special Interest Group on Architecture (SIGARCH) The Optical Society of America (OSA) The International Society for Optical Engineering (SPIE) IEEE CS TCCA (Technical Committee on Computer Architecture) NSF - National Science Foundation (pending) The second annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'95) will be held on Oct. 23-24, 1995 in San-Antonio, Texas. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The topics of interest include but are not limited to the following: Optical interconnections Reconfigurable Architectures Embedding and mapping of applications and algorithms Packaging and layout of optical interconnections Electro-optical, and opto-electronic components Relative merits of optical technologies (free-space, fibers, wave guides) Passive optical elements Algorithms and applications exploiting MPP-OI Data distribution and partitioning Characterizing parallel applications exploiting MPP-OI Cost/performance studies The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. Authors are invited to submit manuscripts which demonstrate original unpublished research in areas of computer architecture and optical interconnections. Papers submitted must not be under considerations for another conference. SUBMITTING PAPERS: All papers will be reviewed by at least 2 members of the program committee. Send eight (8) copies of the complete paper (not to exceed 15 single spaced, single sided pages) to: Dr. Eugen Schenfeld MPPOI'95 Conference Chair NEC Research Institute 4 Independence Way Princeton, NJ 08540, USA (voice) (609)951-2742 (fax) (609)951-2482 email: MPPOI@RESEARCH.NJ.NEC.COM ============================================================================ DEADLINE: Papers must be sent so that they arrive on or before April 1, 1995 ============================================================================ Manuscripts must be received by April 1st, 1995. Due to the large number of anticipated submissions manuscripts arriving later than the above date risk rejection. Notification of review decisions will be mailed by July 1st, 1995. Camera ready papers are due August 1st, 1995. Fax or electronic submissions will not be considered. Proceedings will be published by the IEEE CS Press and will be available at the conference. FOR MORE INFORMATION: Please write (email) to the Conference Chair. PROGRAM COMMITTEE: Pierre Chavel, Institut d'Optique, Orsay, France Alan Craig, Air Force Office of Scientific Research (AFOSR) Karsten Decker, Swiss Scientific Computing Center, Manno, Switzerland Jack Dennis, Lab. of CS, MIT, Boston, MA Patrick Dowd, Dept. of ECE, SUNY at Buffalo, Buffalo, NY Mary Eshaghian, Dept. of CS, NJIT, Newark, NJ John Feo, Comp. Res. Grp., Lawrence Livermore Nat. Lab., Livermore, CA Michael Flynn, Department of EE, Stanford University, Stanford, CA Edward Frietman, Faculty of Applied Physics, Delft U., Delft, The Netherlands Asher Friesem, Dept. of Electronics, Weizmann Inst., Israel Kanad Ghose, Dept. of CS, SUNY at Binghamton, Binghamton NY Allan Gottlieb, Dept. of CS, New-York University, New-York, NY Joe Goodman, Department of EE, Stanford University, Stanford, CA Alan Huang, Terabit Corp., Middletown, NJ Oscar H. Ibarra, Department of Computer Science, UCSB, CA Yoshiki Ichioka, Dept. of Applied Physics, Osaka U., Osaka, Japan Leah Jamieson, School of EE, Purdue University, West Lafayette, IN Lennart Johnsson, Aiken Comp. Lab, Harvard University, Cambridge, MA Ahmed Louri, Dept. of ECE, U. of Arizona, Tucson, AZ Kenichi Kasahara, Opto-Electronics Basic Res. Lab., NEC Corporation, Japan Israel Koren, Dept. of ECS, U. of Mass, Amherst, MA Raymond Kostuk, Dept. of ECE, U. of Arizona, Tucson, AZ Sing Lee, Dept. of EE, UCSD, La Jolla, CA Steve Levitan, Department of EE, U. of Pittsburgh, Pittsburgh, PA Adolf Lohmann, Institute of Physics, U. of Erlangen, Erlangen, Germany Miroslaw Malek, Dept. of ECE, U. of Texas at Austin, Austin TX Rami Melhem, Dept. of CS, University of Pittsburgh, Pittsburgh, PA J. R. Moulic, IBM T. J. Watson Research Center, Yorktown Heights, NY Miles Murdocca, Department of CS, Rutgers University, New Brunswick, NJ John Neff, Opto-elec. Comp. Sys., U. of Colorado, Boulder, CO Paul Prucnal, Department of EE, Princeton U., Princeton, NJ Donna Quammen, Dept of CS, George Mason University, USA John Reif, Department of CS, Duke University, Durham, NC Anthonie Ruighaver, Dept. of CS, U. of Melbourne, Victoria, Australia A. A. Sawchuk, Dept. of EE, USC, Los-Angeles, CA Eugen Schenfeld, NEC Research Institute, Princeton, NJ Charles W. Stirk, Optoelectronic Data Systems, Inc., Boulder, CO Pearl Wang, Dept. of CS, George Mason University, USA Les Valiant, Div. of Applied Science, Harvard University, Cambridge, MA Albert Zomaya, Dept. of EAEE, U. of Western Australia, Western Australia =========================================================== *************************************************************************** TO GET THE MPPOI'94 PROC. (LAST YEAR'S), YOU CAN BUY IT FROM IEEE CS PRESS: *************************************************************************** It is listing the 1994 MPPOI Proc. for sale at $35 for IEEE members or $70 for non members. Details: ISBN 0-8186-5832-0 ; Catalog# 5830-02P. IEEE phone for orders: 1-800-CS-BOOKS (works only in USA). In Europe: IEEE Europe: 13, Avenue de l'Aquilon, B-1200 Brussels, BELGIUM Phone: 32-2-770-21-98 Fax: 32-2-770-85-05 ============================================================ Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Thu Mar 23 14:21:50 1995 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id OAA23677; Thu, 23 Mar 1995 14:21:49 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id NAA00806; Thu, 23 Mar 1995 13:19:45 -0500 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 23 Mar 1995 13:19:43 EST Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from zingo by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id NAA00798; Thu, 23 Mar 1995 13:19:41 -0500 Received: by zingo (920330.SGI/YDL1.4-910307.16) id AA09315(zingo); Thu, 23 Mar 95 13:00:52 -0500 Received: by iris49 (5.52/cliff's joyful mailer #2) id AA28949(iris49); Thu, 23 Mar 95 12:32:37 EST Date: Thu, 23 Mar 95 12:32:37 EST From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <9503231732.AA28949@iris49> To: mppoi@research.nj.nec.com Subject: MPPOI'95 - LAST CFP ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ============================================================================ DEADLINE: PAPERS MUST BE SENT SO THAT THEY ARRIVE ON OR BEFORE APRIL 1, 1995 FULL PAPER (up to 15 pages) should be sent. ============================================================================ Call for Papers The Second International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS (MPPOI) October 23-24, 1995 San Antonio, Texas Sponsored by: ACM Special Interest Group on Architecture (SIGARCH) The Optical Society of America (OSA) The International Society for Optical Engineering (SPIE) IEEE CS TCCA (Technical Committee on Computer Architecture) NSF - National Science Foundation (pending) The second annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'95) will be held on Oct. 23-24, 1995 in San-Antonio, Texas. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The topics of interest include but are not limited to the following: Optical interconnections Reconfigurable Architectures Embedding and mapping of applications and algorithms Packaging and layout of optical interconnections Electro-optical, and opto-electronic components Relative merits of optical technologies (free-space, fibers, wave guides) Passive optical elements Algorithms and applications exploiting MPP-OI Data distribution and partitioning Characterizing parallel applications exploiting MPP-OI Cost/performance studies The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. Authors are invited to submit manuscripts which demonstrate original unpublished research in areas of computer architecture and optical interconnections. Papers submitted must not be under considerations for another conference. SUBMITTING PAPERS: All papers will be reviewed by at least 2 members of the program committee. Send eight (8) copies of the complete paper (not to exceed 15 single spaced, single sided pages) to: Dr. Eugen Schenfeld MPPOI'95 Conference Chair NEC Research Institute 4 Independence Way Princeton, NJ 08540, USA (voice) (609)951-2742 (fax) (609)951-2482 email: MPPOI@RESEARCH.NJ.NEC.COM ============================================================================ DEADLINE: Papers must be sent so that they arrive on or before April 1, 1995 ============================================================================ Manuscripts must be received by April 1st, 1995. Due to the large number of anticipated submissions manuscripts arriving later than the above date risk rejection. Notification of review decisions will be mailed by July 1st, 1995. Camera ready papers are due August 1st, 1995. Fax or electronic submissions will not be considered. Proceedings will be published by the IEEE CS Press and will be available at the conference. FOR MORE INFORMATION: Please write (email) to the Conference Chair. PROGRAM COMMITTEE: Pierre Chavel, Institut d'Optique, Orsay, France Alan Craig, Air Force Office of Scientific Research (AFOSR) Karsten Decker, Swiss Scientific Computing Center, Manno, Switzerland Jack Dennis, Lab. of CS, MIT, Boston, MA Patrick Dowd, Dept. of ECE, SUNY at Buffalo, Buffalo, NY Mary Eshaghian, Dept. of CS, NJIT, Newark, NJ John Feo, Comp. Res. Grp., Lawrence Livermore Nat. Lab., Livermore, CA Michael Flynn, Department of EE, Stanford University, Stanford, CA Edward Frietman, Faculty of Applied Physics, Delft U., Delft, The Netherlands Asher Friesem, Dept. of Electronics, Weizmann Inst., Israel Kanad Ghose, Dept. of CS, SUNY at Binghamton, Binghamton NY Allan Gottlieb, Dept. of CS, New-York University, New-York, NY Joe Goodman, Department of EE, Stanford University, Stanford, CA Alan Huang, Terabit Corp., Middletown, NJ Oscar H. Ibarra, Department of Computer Science, UCSB, CA Yoshiki Ichioka, Dept. of Applied Physics, Osaka U., Osaka, Japan Leah Jamieson, School of EE, Purdue University, West Lafayette, IN Lennart Johnsson, Aiken Comp. Lab, Harvard University, Cambridge, MA Kenichi Kasahara, Opto-Electronics Basic Res. Lab., NEC Corporation, Japan Israel Koren, Dept. of ECS, U. of Mass, Amherst, MA Raymond Kostuk, Dept. of ECE, U. of Arizona, Tucson, AZ Ashok V. Krishnamoorthy, AT&T Bell Laboratories, Holmdel NJ Sing Lee, Dept. of EE, UCSD, La Jolla, CA Steve Levitan, Department of EE, U. of Pittsburgh, Pittsburgh, PA Adolf Lohmann, Institute of Physics, U. of Erlangen, Erlangen, Germany Ahmed Louri, Dept. of ECE, U. of Arizona, Tucson, AZ Miroslaw Malek, Dept. of ECE, U. of Texas at Austin, Austin TX Rami Melhem, Dept. of CS, University of Pittsburgh, Pittsburgh, PA J. R. Moulic, IBM T. J. Watson Research Center, Yorktown Heights, NY Miles Murdocca, Department of CS, Rutgers University, New Brunswick, NJ John Neff, Opto-elec. Comp. Sys., U. of Colorado, Boulder, CO Paul Prucnal, Department of EE, Princeton U., Princeton, NJ Donna Quammen, Dept of CS, George Mason University, USA John Reif, Department of CS, Duke University, Durham, NC Anthonie Ruighaver, Dept. of CS, U. of Melbourne, Victoria, Australia A. A. Sawchuk, Dept. of EE, USC, Los-Angeles, CA Eugen Schenfeld, NEC Research Institute, Princeton, NJ Charles W. Stirk, Optoelectronic Data Systems, Inc., Boulder, CO Pearl Wang, Dept. of CS, George Mason University, USA Les Valiant, Div. of Applied Science, Harvard University, Cambridge, MA Albert Zomaya, Dept. of EAEE, U. of Western Australia, Western Australia =========================================================== *************************************************************************** TO GET THE MPPOI'94 PROC. (LAST YEAR'S), YOU CAN BUY IT FROM IEEE CS PRESS: *************************************************************************** It is listing the 1994 MPPOI Proc. for sale at $35 for IEEE members or $70 for non members. Details: ISBN 0-8186-5832-0 ; Catalog# 5830-02P. IEEE phone for orders: 1-800-CS-BOOKS (works only in USA). In Europe: IEEE Europe: 13, Avenue de l'Aquilon, B-1200 Brussels, BELGIUM Phone: 32-2-770-21-98 Fax: 32-2-770-85-05 ============================================================ Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Sat Jul 15 15:33:29 1995 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id PAA18172; Sat, 15 Jul 1995 15:33:29 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id PAA19175; Sat, 15 Jul 1995 15:40:24 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Sat, 15 Jul 1995 15:40:22 EDT Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from zingo by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id PAA19145; Sat, 15 Jul 1995 15:40:11 -0400 Received: by zingo (940816.SGI.8.6.9/YDL1.4-910307.16) id PAA07370(zingo); Sat, 15 Jul 1995 15:23:01 -0400 Received: by iris49 (5.52/cliff's joyful mailer #2) id AA02620(iris49); Sat, 15 Jul 95 14:58:46 EDT Date: Sat, 15 Jul 95 14:58:46 EDT From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <9507151858.AA02620@iris49> To: mppoi@research.nj.nec.com Subject: MPPOI '95 FINAL PROGRAM ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ PLEASE NOTE: ============ 1) A limited number of rooms at a special rate are available at the Menger Hotel in San Antonio. First come first served (details bellow). Students wishing to share a room at the menger and need a roomate please email to: sakr@research.nj.nec.com 2) Please help the organizers by early registration with IEEE. You may fax the registration form with a credit card number to IEEE (details below). This will help to better estimate the number of participants and make the needed arrangements for the social events (lunch, dinner, reception). THE FOLLOWING IS IN LaTex Format. This message is 32K Bytes long (14 pages). Other formats and for more information please email to mppoi@research.nj.nec.com ================================================================================= \documentstyle[fullpage]{article} \begin{document} \begin{verbatim} ========================================================================== The Second International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS =========================================================================== October 23-24, 1995 Menger Hotel San-Antonio Texas, USA SPONSORED BY: IEEE Computer Society IEEE Technical Committee on Computer Architecture (TCCA) IN COOPERATION WITH: ACM Special Interest Group on Architecture (SIGARCH) The International Society for Optical Engineering (SPIE) The IEEE Lasers and Electro-optics Society (LEOS) The Optical Society of America (OSA) ADDITIONAL SUPPORT PROVIDED BY: NSF - The National Science Foundation (pending) ======================================================================== ADVANCE PROGRAM ======================================================================== The Second International Conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI '95) is a continuation to a very successful first meeting held last year in Cancun, Mexico. This year we have an exciting program featuring eight invited talks from research and industrial leaders in the fields of parallel computer systems, optical interconnections and technology, parallel applications and interconnection networks. We also have two panels with the participation of technological and academic experts, representing the current thoughts and trends of the field. And last, but not least, there are 34 regular papers accepted for presentation from authors all over the world. This rich and diverse program is sure to be most interesting and stimulate discussions and interactions among the researchers of this interdisciplinary field. The organizers of MPPOI strongly feel that massively parallel processing needs optical interconnections and optical interconnections need parallel processing. The Conference's focus is the possible use of optical interconnections for massively parallel processing systems, and their effect on system and algorithm design. Optics offers many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers from all related research areas are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. \end{verbatim} \newpage \begin{verbatim} ********************************************************************* LOCATION ********************************************************************* SAN ANTONIO American humorist and homespun philosopher Will Rogers once described San Antonio as ``One of America's four unique cities". He had a natural instinct for getting to the very essence of a subject, and his comment about San Antonio is no exception. San Antonio truly is unique. From its founding in 1691 by Spanish missionaries, San Antonio has grown from a sleepy little Texas pueblo to the 9th largest city in the United States. Along the way it has been the birthplace of the Texas revolution with the Battle of the Alamo in 1836. It is the new home of bioscience and hi-tech industry now. In all, over half a dozen cultures, from Spanish and German to Lebanese and Greek, have impacted the growth of San Antonio. And their influence is still evident in the architecture, festivals, cuisine and customs which all contribute to the uniqueness and charm of the city. THE ALAMO An old mission-fort, the Alamo, in San Antonio, has been called the "cradle of Texas liberty." Its gallant defense and the horrible massacre of the more than 180 men who fought there inspired the cry, "Remember the Alamo!" Texas soldiers shouted this at the battle of San Jacinto, which brought independence to Texas. THE MENGER HOTEL MPPOI '95 will be held in San Antonio's Menger Hotel, a historic landmark hotel. It is next door to the Alamo, adjacent to Rivercenter Mall, the IMAX Theater and River Walk and two blocks to the convention center. The hotel fronts Alamo Plaza where the Sea World shuttle and sightseeing tours depart. SPDP'95 For those that are interested in attending the SPDP'95: info. is available at the following www cite: http://rabbit.cs.utsa.edu/Welcome.html. You must register to SPDP'95 conference if you wish to attend it. The advance program and other information may be obtain from the above location, or from: Prof. Xiaodong Zhang, email: zhang@runner.utsa.edu , Phone: (210) 691-5541, FAX: (210) 691-4437. AIR TRANSPORTATION United Airlines is the official airline of MPPOI '95. United will provide attendees round trip transportation to San Antonio on United, United Express or Shuttle by United scheduled service in the United States and Canada at fares of either 5% discount off any United, United Express or Shuttle by United published fares, including First Class, in effect when the tickets are purchased subject to all applicable restrictions, or a 10% discount off applicable BUA, or like, fares in effect when tickets are purchased 7 days in advance. Reservations and schedule information may be obtained by calling the United Meetings desk at 1-800-521-4041 and referencing Meeting ID Code 599XM. ACCOMMODATION The special MPPOI '95 Menger Hotel rate is US $90 for single or double. Please see the enclosed information for making your reservation directly with the hotel. REGISTRATION Please register to the conference using the attached form DIRECTLY with IEEE. TO HELP WITH THE PLANNING OF THE CONFERENCE PLEASE ALSO SEND email or fax, indicating the name(s) of people that register with IEEE and will attend (email: mppoi@research.nj.nec.com fax: +USA-609-951-2482 Att. Dr. Eugen Schenfeld). LOCAL TRANSPORTATION Star Shuttle provides van service from San Antonio International airport to the Menger hotel for $6.00 per person each way. For more information and reservations call +USA-(210)366-3183. Other transportation is available at the airport, incl. taxi and busses. CUSTOMS/PASSPORTS It is suggested for those of other than US nationalities to check with a travel agent and with an US consulate the requirements for VISA and passports to enter the United States, as well as for US Customs regulations. WEATHER & TIME San Antonio's weather in late october ranges from low 60's to 70's Fahrenheit. Climate is dry and perfect for sightseeing the many attractions the city and surroundings have to offer. JOIN US! MPPOI'95 is in an ideal location to bring along family. Your traveling companions will be well entertained while you are participating in the conference events. For those that plan to spend the weekend before the conference in San Antonio, we suggest to consult with a travel agent and with the hotel for information on sightseeing and other local activities. Please note that the hotel rate is valid for the nights of Oct. 22-24. If you wish to stay over a Sat. night (Oct. 21st), the hotel will try its best to accommodate you with the same rate. Once you make a reservation, please make sure to ask for the night of Oct. 21st. If not available, you will be placed on a waiting lists. Chances are you may get it, but currently it is not possible to confirm this. ========================================== ****** NSF TRAVEL SUPPORT (PENDING) ****** ========================================== The National Science Foundation (NSF) is considering to award travel support for minority and female faculty members as well as for graduate students. This travel award is pending final approval by the NSF and is available for authors presenting papers at the MPPOI'95 conference. For details on the travel support and to obtain a Request Form please contact (email, fax, or phone) the Conference Chair at the above address. \end{verbatim} \newpage \begin{verbatim} STEERING COMMITTEE ================== J. Goodman, Stanford University L. Johnsson, University of Houston S. Lee, University of California R. Melhem, University of Pittsburgh E. Schenfeld, NEC Research Institute (Chair) P. Wang, George Mason University CONFERENCE CHAIR: ================ Dr. Eugen Schenfeld (voice) (609)951-2742 NEC Research Institute (fax) (609)951-2482 4 Independence Way email: MPPOI@RESEARCH.NJ.NEC.COM Princeton, NJ 08540, USA PUBLICITY CHAIR: D. Quammen, George Mason University. ================ LOCAL ARRANGEMENTS CHAIR: X. Zhang, University of Texas at San Antonio. ======================== PROGRAM COMMITTEE: ================= Pierre Chavel, Institut d'Optique, Orsay, France Alan Craig, Air Force Office of Scientific Research (AFOSR) Karsten Decker, Swiss Scientific Computing Center, Manno, Switzerland Jack Dennis, Lab. for CS, MIT, Boston, MA Patrick Dowd, Dept. of ECE, SUNY at Buffalo, Buffalo, NY Mary Eshaghian, Dept. of CS, NJIT, Newark, NJ John Feo, Comp. Res. Grp., Lawrence Livermore Nat. Lab., Livermore, CA Michael Flynn, Department of EE, Stanford University, Stanford, CA Edward Frietman, Faculty of Applied Physics, Delft U., Delft, The Netherlands Asher Friesem, Dept. of Electronics, Weizmann Inst., Israel Kanad Ghose, Dept. of CS, SUNY at Binghamton, Binghamton NY Allan Gottlieb, Dept. of CS, New York University, New York, NY Joe Goodman, Department of EE, Stanford University, Stanford, CA Alan Huang, Terabit Corp., Middletown, NJ Oscar H. Ibarra, Department of Computer Science, UCSB, CA Yoshiki Ichioka, Dept. of Applied Physics, Osaka U., Osaka, Japan Leah Jamieson, School of ECE, Purdue University, West Lafayette, IN Lennart Johnsson, Dept. of Computer Science, University of Houston, Houston TX Kenichi Kasahara, Opto-Electronics Basic Res. Lab., NEC Corporation, Japan Israel Koren, Dept. of ECS, U. of Mass, Amherst, MA Raymond Kostuk, Dept. of ECE, U. of Arizona, Tucson, AZ Ashok V. Krishnamoorthy, AT&T Bell Laboratories, Holmdel NJ Sing Lee, Dept. of EE, UCSD, La Jolla, CA Steve Levitan, Department of EE, U. of Pittsburgh, Pittsburgh, PA Adolf Lohmann, Institute of Physics, U. of Erlangen, Erlangen, Germany Ahmed Louri, Dept. of ECE, U. of Arizona, Tucson, AZ Miroslaw Malek, Dept. of ECE, U. of Texas at Austin, Austin TX Rami Melhem, Dept. of CS, University of Pittsburgh, Pittsburgh, PA J. R. Moulic, IBM T. J. Watson Research Center, Yorktown Heights, NY Miles Murdocca, Department of CS, Rutgers University, New Brunswick, NJ John Neff, Opto-elec. Comp. Sys., U. of Colorado, Boulder, CO Paul Prucnal, Department of EE, Princeton U., Princeton, NJ Donna Quammen, Dept of CS, George Mason University, USA John Reif, Department of CS, Duke University, Durham, NC A. B. Ruighaver, Dept. of CS, U. of Melbourne, Victoria, Australia A. A. Sawchuk, Dept. of EE, USC, Los-Angeles, CA Eugen Schenfeld, NEC Research Institute, Princeton, NJ Charles W. Stirk, Optoelectronic Data Systems, Inc., Boulder, CO Pearl Wang, Dept. of CS, George Mason University, USA Les Valiant, Div. of Applied Science, Harvard University, Cambridge, MA Albert Zomaya, Dept. of EAEE, U. of Western Australia, Western Australia SESSION CHAIRS ============== P. Dowd, State University of New York at Buffalo E. E. E. Frietman, Delft University of Technology, The Netherlands R. Kostuk, University of Arizona at Tucson A. Krishnamoorthy, AT&T Bell Laboratories S. Levitan, University of Pittsburgh Y. Li, NEC Research Institut A. Louri, University of Arizona at Tucson P. Wang, George Mason University PANEL MODERATORS ================ E. E. E. Frietman, Delft University of Technology, The Netherlands Y. Li, NEC Research Institute INVITED SPEAKERS ================ Michael Flynn, Stanford University G. Fox, Northeast Parallel Architectures Center at Syracus University S. L. Johnsson, University of Houston H. S. Hinton, University of Colorado at Boulder Alan Huang, Terabit Corp. H. T. Kung, Harvard University D. Miller, AT&T Bell Labs. B. Smith, Tera Computers Corp. ======================================================================== \end{verbatim} \newpage \begin{verbatim} _____________________________________________________________________ MPPOI '95 PROGRAM SCHEDULE _____________________________________________________________________ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ***** INVITED TALKS: 40 Minutes. REGULAR TALKS: 20 Minutes ***** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ======================================== SUNDAY, OCTOBER 22, 1995 ======================================== 6:00 PM - 7:30 PM REGISTRATION ======================================== Monday, October 23, 1995 ======================================== 7:00 AM - 8:00 AM CONTINENTAL BREAKFAST ________________________________________ 7:00 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:00 AM - 8:20 AM OPENING REMARKS Eugen Schenfeld, NEC Research Institute 8:20 AM - 10:00 AM Session I Chair: R. Kostuk, University of Arizona at Tucson Large-Scale ATM Switches for Data Communications: Are These Switches Limited by Interconnect, Memory or Else? H. T. Kung, Harvard University (INVITED) Design Issues for Through-Wafer Optoelectronic Multicomputer Interconnects P. May, N. M. Jokerst, D. S. Wills, S. Wilkinson, M. Lee, O. Vendier, S. Bond, Z. Hou, G. Dagnall, M. A. Brooke, A. Brown, Georgia Institute of Technology Design of a Terabit Free-Space Photonic Backplane for Parallel Computing T. H. Szymanski, and H. S. Hinton, McGill University and University of Colorado Optical Interconnection Network for Massively Parallel Processors Using Beam-Steering Vertical Cavity Surface-Emitting Lasers L. Fan, and M. C. Wu, University of California at Los Angeles; H. C. Lee. and P. Grodzinski, Motorola Inc. ________________________________________ 10:00 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 1:00 PM PARALLEL SESSIONS: II AND III _________________________________________ 10:30 AM - 1:00 PM Session II Chair: A. Krishnamoorthy, AT&T Bell Laboratories The Role of Representation in Optimizing a Computer Architecture Michael Flynn, Stanford University (INVITED) An Evaluation of Communication Protocols for Star-Coupled Multidimensional WDM Networks for Multiprocessors K. R. Desai, and K. Ghose, State University of New York at Binghamton Small Depth Beam-Steered Optical Interconnect M. Murdocca, H. R. Nahata, and Y. Zhou, Rutgers University Optical Fiber Interconnection System for Massively Parallel Processor Arrays Y.-M. Zhang, X.-Q. He, G. Zhou, W.-Y. Liu, Y. Wang, Z.-P. Yin, and H.-Y. Wang, Tianjin University, P. R. of China A Case Study for the Implementation of a Stochastic Bit Stream Neuron; The Choice Between Electrical and Optical Interconnects M. A. Hands, W. Peiffer, H. Thienpont, A. Kirk, Vrije University, Belgium; T. J. Hall, King's College, University of London, UK Characterization of Massively Parallel Smart Pixels Systems for The Example of a Binary Associative Memory D. Fey, Friedrich-Schiller University, Germany ________________________________________ 10:30 AM - 1:00PM Session III Chair: A. Louri, University of Arizona at Tucson The Challenges Involved in the Design of a 100 Gb/s Internet Alan Huang, Terabit Corp. (INVITED) Fault-tolerance in Optically Implemented Multiprocessor Networks P. Lalwaney, and I. Koren, University of Massachusetts at Amherst A Speed Cache Coherence Protocol for an Optical Multi-Access Interconnect Architecture T. M. Pinkston, and J. Ha, University of Southern California A Reconfigurable Optical Bus Structure for Shared Memory Multiprocessors With Improved Performance S. Ray, and H. Jiang, University of Nebraska-Lincoln n-Dimensional Processor Arrays with Optical dBuses G. Liu, and K. Y. Lee, University of Denver; H. F. Jordan, University of Colorado at Boulder The Difficulty of Finding Good Embeddings of Program Graphs onto the OPAM Architecture B. Ramamurthy, and M. Krishnamoorthy, Rensselaer Polytechnic Institute ________________________________________ 1:00 PM - 2:30 PM CONFERENCE LUNCH (PROVIDED) ________________________________________ 2:30 PM - 4:10 PM Session IV Chair: E. E. E. Frietman, Delft University of Technology, The Netherlands Intelligent Optical Backplanes H. S. Hinton, University of Colorado at Boulder (INVITED) Connection Cube and Interleaved Optical Backplane for a Multiprocessor Data Bus R. K. Kostuk, T. J. Kim, D. Ramsey, T.-H. Oh, and R. Boye University of Arizona at Tucson An Efficient 3-D Optical Implementation of Binary de Bruijn Networks with Applications to Massively Parallel Computing A. Louri, and H. Sung, University of Arizona at Tucson Performance Evaluation of 3D Optoelectronic Computer Architectures on FFT and Sorting Benchmarks G. A. Betzos, and P. A. Mitkas, Colorado State University ________________________________________ 4:10 PM - 4:30 PM AFTERNOON BREAK ________________________________________ 4:30 PM - 6:30 PM CONFERENCE PANEL I OPTICS FOR INTERCONNECTION: INDUSTRY'S INTERESTS and RESPONSIBILITIES MODERATOR: Y. Li, NEC Research Institute PANELISTS: R. Chen, University of Texas at Austin; N. Dutta, AT&T Bell Labs; K. Kobayashi, NEC Corp.; Y. S. Liu, General Electric; B. Pecor, Cray Research; J. Rowlette, AMP Corp.; B. Smith, Tera Computers Corp. ________________________________________ 7.00 PM - 8:30 PM ACQUAINTANCE RECEPTION Meet some of the MPPOI participants. Food and small talk opportunity provided. ======================================== TUESDAY, OCTOBER 24, 1995 ======================================== 7:00 AM - 8:00 AM CONTINENTAL BREAKFAST ________________________________________ 7:00 AM - 11:30 AM CONFERENCE REGISTRATION ________________________________________ 8:00 AM - 10:00 AM Session V Chair: S. Levitan, University of Pittsburgh Hybrid SEED - Massively Parallel Optical Interconnections for Silicon ICs D. Miller, AT&T Bell Labs. (INVITED) Construction of Demonstration Parallel Optical Processors based on CMOS/InGaAs Smart Pixel Technology A. Walker, M. P. Y. Desmulliez, F. A. P. Tooley, D. T. Neilson, J. A. B. Dines, D. A. Baillie, S. M. Prince, L. C. Wilkinson, M. R. Taghizadeh, P. Blair, J. F. Snowdon, and B. S. Wherrett, Heriot-Watt University, Scotland; C. Stanley, and F. Pottier, University of Glasgow, Scotland; I. Underwood, and D. G. Vass, University of Edinburgh, Scotland; W. Sibbett, and M. H. Dunn, University of St.-Andrews, Scotland. General Purpose Bi-Directional Optical Backplane Bus C. Zhao, S. Natarajan, and R. T. Chen, University of Texas, at Austin Efficient Communication Scheme For Distributed Parallel Processor Systems P. Kohler, and A. Gunzinger, Swiss Federal Institute of Technology, Switzerland What Limits Capacity and Connectivity in Optical Interconnects Y. Li, NEC Research Institute ________________________________________ 10:00 AM - 10:30 AM MID-MORNING BREAK ________________________________________ ________________________________________ 10:30 AM - 12:30 PM Session VI Chair: P. Dowd, State University of New York at Buffalo Data Partitioning for Load-Balance and Communication Bandwidth Preservation S. L. Johnsson, University of Houston (INVITED) Embedding Rings and Meshes in Partitioned Optical Passive Stars Networks G. Gravenstreter, and R. G. Melhem, University of Pittsburgh Optical Thyristor Based Subsystems for Digital Parallel Processing: Demonstrators and Future Perspectives H. Thienpont, A. Kirk, and I. Veretennicoff, Vrije University, Belgium; P. Heremans, B. Knupfer, and G. Borghs, IMEC Corp., Belgium; M. Kuijk, and R. Vounckx, rije University, Belgium Computer-Aided Design of Free-Space Optoelectronic Interconnection Systems S. P. Levitan, P. J. Marchand, M. Rempel, D. M. Chiarulli, and F. B. McCormick, University of Pittsburgh and University of California at San Diego Optical Design of a Fault Tolerant Self-Routing Switch for Massively Parallel Processing Networks M. Guizani, M. A. Memon, and S. Ghanta, King Fahd University, Saudi Arabia ________________________________________ 12:30 PM - 1:30 PM LUNCH (ON YOUR OWN) ________________________________________ 1:30 PM - 3:50 PM PARALLEL SESSIONS: VII and VIII ________________________________________ 1:30 PM - 3:50 PM Session VII Chair: P. Wang, George Mason University Interconnection Networks for Shared Memory Parallel Computers B. Smith, Tera Computers Corp. (INVITED) A Comparative Study of One-to-Many WDM Lightwave Interconnection Networks for Multiprocessors H. Bourdin, and A. Ferreira, CNRS - LIP ENS Lyon, France; K. Marcus, ARTEMIS IMAG, Grenoble, France Planar Optical Interconnections for 100Gb/s Packet Address Detection S. H. Song and E.-H. Lee, Electronics & Telecommunications Research Institute, Taejon, South Korea A Pipelined Self-Routing Optical Multichannel Time Slot Permutation Network R. Kannan, H. F. Jordan, K. Y. Lee, and C. Reed, University of Denver; University of Colorado at Boulder; and The Institute for Defense Analysis Optical Interconnect Design for a Manufacturable Multicomputer R. R. Krchnavek, R. D. Chamberlain, T. Barry, V. Malhotra, and Z. Dittia, Washington University at St. Louis, Missouri Hypercube Interconnection in TWDM Optical Passive Star Networks S.-K. Lee, A. D. Oh, and H.-A. Choi, George Washington University ________________________________________ 1:30 PM - 3:50 PM Session VIII Chair: Y. Li, NEC Research Institut From Today's Desktop Gigaflop to Tomorrow's Central Petaflop; From Grand Challenges to the Information Age; The Applications Driving Parallel Computing and Their Architecture Implications G. Fox, Northeast Parallel Architectures Center at Syracus University (INVITED) A Fiber-Optic Interconnection Concept for Scalable Massively Parallel Computing M. Jonsson, K. Nilsson, and B. Svensson, Halmstad University; and Chalmers University of Technology, Goteborg, Sweden All-Optical Interconnects for Massively Parallel Processing C. S. Ih, R. Tian, X. Xia, J. Chao, and Y. Wang, University of Delaware Predictive Control of Opto-Electronic Reconfigurable Interconnection Networks Using Neural Networks M. F. Sakr, S. P. Levitan, C. L. Giles, B. C. Horne, M. Maggini, and D. M. Chiarulli, University of Pittsburgh; NEC Research Institute; and Firenze University, Italy The Simultaneous Optical Multiprocessor Exchange Bus J. Kulick, W. E. Cohen, C. Katsinis, E. Wells, A. Thomsen, M. Abushagur, R. K. Gaede, R. Lindquist, G. Nordin, and D. Shen; University of Alabama in Huntsville On Some Architectural Issues of Optical Hierarchical Ring Networks for Shared-Memory Multiprocessors H. Jiang, C. Lam, and V. C. Hamacher, University of Nebraska-Lincoln; and Queen's University, Kingston, Canada ________________________________________ 3:50 PM - 4:15 PM AFTERNOON BREAK ________________________________________ ________________________________________ 4:15 PM - 6:15 PM CONFERENCE PANEL II OPTO-ELECTRONIC PROCESSING & NETWORKING IN MASSIVELY PARALLEL PROCESSING SYSTEMS MODERATOR: E. E. E. Frietman, Delft University of Technology, The Netherlands PANELISTS: C. Jesshope, University of Surrey, Surrey, UK; H. F. Jordan, University of Colorado at Boulder; G. D. Khoe, Eindhoven University of Technology, Eindhoven, The Netherlands; A. V. Krishnamoorthy, AT&T Bell Labs.; I. Koren, University of Massachusetts at Amherst; A. McAulay, Lehigh University; I. MacDonald, Telecommunications Research Laboratories, Edmonton, Canada; M. Murdocca, Rutgers University; A. B. Ruighaver, Melbourne University, Australia; J. Sauer, University of Colorado at Boulder; H. Thienpont, Vrije Universiteit, Belgium; A. Walker, Heriot-Watt University, Edinburgh, Scotland; ________________________________________ 6:15 PM - 6:30 PM CLOSING REMARKS: ANNOUNCING MPPOI '96 AND FUTURE MEETING PLANS Eugen Schenfeld NEC Research Institute ________________________________________ 6:30 PM - 8:00 PM CONFERENCE DINNER (PROVIDED) ________________________________________ ============================================================================== \end{verbatim} \newpage \begin{verbatim} Registration Form MPPOI'95 Menger Hotel San Antonio, Texas October 23-24, 1995 TO REGISTER, MAIL OR FAX THIS FORM TO: MPPOI registration, IEEE Computer Society, 1730 Massachusetts Av, N.W., Washington DC 20036-1992, USA. Fax: +USA-202-728-0884 For information, call +USA-202-371-1013 - Sorry, no phone registration. Name:---------------------------------------------------------------------- Last First MI Company:------------------------------------------------------------------- Address:------------------------------------------------------------------- City/State/Zip/Country:---------------------------------------------------- Daytime phone:----------------------- Fax number--------------------------- Company:------------------------------------------------------------------- E-mail address:------------------------------------------------------------ IEEE/ACM/OSA/SPIE Member Number: ------------------ Do you have any special needs: -------------------------------------------- --------------------------------------------------------------------------- Do not include my mailing address on: -- Non-society mailing lists -- Meeting Attendee lists Please circle the appropriate registration fee: Advance (before October 2, 1995) Late(before October 16, 1995)/on site. Member $300 Member $360 Non-member $375 Non-member $450 Full-time student $150 Full-time student $180 Total enclosed:$ -------------------------------- Please make all checks payable to: IEEE Computer Society. All checks must be in US dollars drawn on US banks. Credit card charges will appear on statement as "IEEE Computer Society Registration". Written requests for refunds must be received by IEEE office before October 2, 1995. Refunds are subject to a $50 processing fees. Method of payment accepted (payment must accompany form): -- Personal check -- Company check -- Traveler's check -- American Express -- Master Card -- VISA -- Dinner's club -- Government purchase order (original) Credit card number: -------------------------- Expiration date: ------------ Cardholder name : -------------------------- Signature : -------------------------- Non-student registration fees include conference attendance, proceedings, continental breakfast, refreshment at breaks, conference reception, one conference lunch and one conference dinner. Student registration fees ***DO NOT*** include the lunch and ***DO NOT*** include the dinner. =========================================================================== \end{verbatim} \newpage \begin{verbatim} ______________________________________________________________________ MPPOI'95 HOTEL RESERVATION The Menger Hotel San Antonio, Texas ______________________________________________________________________ PLEASE MAKE RESERVATIONS WITH THE MENGER HOTEL AS SOON AS POSSIBLE TO GUARANTEE THE $90 RATE (HOTEL PHONE AND FAX NUMBERS ARE GIVEN AT BELLOW). * The special MPPOI'95 group rate of US $90.00 (single or double) is available from October 22 through October 25, 1995. All rates are subject to additional local and state taxes. These rates will be available for reservations made BEFORE September 22, 1995. Please note that the period Sep. to Nov. is the high session in San Antonio and hotels are usually booked in advance. We urge you to make early reservations as soon as possible. If you wish to stay over a Sat. night (Oct. 21st), the hotel will TRY its best to accommodate you with the same rate. * The MENGER HOTEL CONTACT POINTS: Phone: 1-800-345-9285 (for USA, or Canada) Phone: +USA-210-223-4361 (other countries); Fax: +USA-210-228-0022 * ALTERNATIVE LIST OF HOTELS (RATES AND RANK from AAA Tour Book): IN CASE THE MENGER HOTEL IS FULL, here is a list of other nearby hotels (all within walking distance of the Menger, in the downtown area of San Antonio). These hotels have no arrangement with MPPOI and therefore you should not identify yourself as a member of a group or conference. The arrangement with these hotels is on a "one to one" basis, as with any other business traveler. An early reservation is suggested. Also, it is always a good idea to look for "specials" (i.e., advance paid rates, weekend specials, AAA rates, etc.). Also please note that from the USA you may call the 800 directory (1-800-555-1212) and ask for the 800 number of the hotel chain (such hotels are marked with a '#' mark bellow), rates and ranking taken from AAA Tour Book 1994: AAA Typical Phone Fax Rank Rate ($) (+USA) (+USA) * St. Anthony Hotel 4 106-130 (210)227-4392 none listed * Emily Morgan 3 85 (210)225-8486 none listed * Crocket Hotel 3 75-105 (210)225-6500 none listed # Hyatt Regency 4 119-170 (210)222-1234 (210)227-4925 * La Mansion del Rio 4 135-220 (210)225-2581 (210)226-1365 # Holiday Inn Riverwalk 3 95-119 (210)224-2500 (210)223-1302 # Hilton Palacio del Rio 4 154-196 (210)222-1400 (210)270-0761 * The Fairmounth Hotel 4 145-275 (210)224-8800 (210)224-2767 # Marriott Riverwalk 4 135-150 (210)224-4555 (210)224-2754 # La Quinta Motor Inn 3 83-90 (210)222-9181 (210)228-9816 # Marriott Rivercenter 4 160 (210)223-1000 (210)223-6239 ________________________________________________________________________________ \end{verbatim} \end{document} ================================================= Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Fri Aug 11 17:03:38 1995 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id RAA02858; Fri, 11 Aug 1995 17:03:37 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id RAA06814; Fri, 11 Aug 1995 17:12:10 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 11 Aug 1995 17:12:08 EDT Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from zingo by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id RAA06778; Fri, 11 Aug 1995 17:11:55 -0400 Received: by zingo (940816.SGI.8.6.9/YDL1.4-910307.16) id RAA24478(zingo); Fri, 11 Aug 1995 17:02:28 -0400 Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id QAA24675(iris49); Fri, 11 Aug 1995 16:14:16 -0400 Date: Fri, 11 Aug 1995 16:14:16 -0400 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199508112014.QAA24675@iris49> To: mppoi@research.nj.nec.com Subject: MPPOI'95 Advance Program ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE PLEASE DISTRIBUTE+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ADVANCE REGISTRATION DEADLINE FOR LOWER CONFERENCE FEE IS OCT. 2, 1995. THE FOLLOWING IS IN LaTex Format. Other formats please email to: mppoi@research.nj.nec.com ================================================================================= \documentstyle[fullpage]{article} \begin{document} \begin{verbatim} ========================================================================== The Second International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS =========================================================================== October 23-24, 1995 Menger Hotel San-Antonio Texas, USA SPONSORED BY: IEEE Computer Society IEEE Technical Committee on Computer Architecture (TCCA) IN COOPERATION WITH: ACM Special Interest Group on Architecture (SIGARCH) The International Society for Optical Engineering (SPIE) The IEEE Lasers and Electro-optics Society (LEOS) The Optical Society of America (OSA) ADDITIONAL SUPPORT PROVIDED BY: NSF - The National Science Foundation (pending) ======================================================================== ADVANCE PROGRAM ======================================================================== The Second International Conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI '95) is a continuation to a very successful first meeting held last year in Cancun, Mexico. This year we have an exciting program featuring eight invited talks from research and industrial leaders in the fields of parallel computer systems, optical interconnections and technology, parallel applications and interconnection networks. We also have two panels with the participation of technological and academic experts, representing the current thoughts and trends of the field. And last, but not least, there are 34 regular papers accepted for presentation from authors all over the world. This rich and diverse program is sure to be most interesting and stimulate discussions and interactions among the researchers of this interdisciplinary field. The organizers of MPPOI strongly feel that massively parallel processing needs optical interconnections and optical interconnections need parallel processing. The Conference's focus is the possible use of optical interconnections for massively parallel processing systems, and their effect on system and algorithm design. Optics offers many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers from all related research areas are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. \end{verbatim} \newpage \begin{verbatim} ********************************************************************* LOCATION ********************************************************************* SAN ANTONIO American humorist and homespun philosopher Will Rogers once described San Antonio as ``One of America's four unique cities". He had a natural instinct for getting to the very essence of a subject, and his comment about San Antonio is no exception. San Antonio truly is unique. From its founding in 1691 by Spanish missionaries, San Antonio has grown from a sleepy little Texas pueblo to the 9th largest city in the United States. Along the way it has been the birthplace of the Texas revolution with the Battle of the Alamo in 1836. It is the new home of bioscience and hi-tech industry now. In all, over half a dozen cultures, from Spanish and German to Lebanese and Greek, have impacted the growth of San Antonio. And their influence is still evident in the architecture, festivals, cuisine and customs which all contribute to the uniqueness and charm of the city. THE ALAMO An old mission-fort, the Alamo, in San Antonio, has been called the "cradle of Texas liberty." Its gallant defense and the horrible massacre of the more than 180 men who fought there inspired the cry, "Remember the Alamo!" Texas soldiers shouted this at the battle of San Jacinto, which brought independence to Texas. THE MENGER HOTEL MPPOI '95 will be held in San Antonio's Menger Hotel, a historic landmark hotel. It is next door to the Alamo, adjacent to Rivercenter Mall, the IMAX Theater and River Walk and two blocks to the convention center. The hotel fronts Alamo Plaza where the Sea World shuttle and sightseeing tours depart. SPDP'95 For those that are interested in attending the SPDP'95: info. is available at the following www cite: http://rabbit.cs.utsa.edu/Welcome.html. You must register to SPDP'95 conference if you wish to attend it. The advance program and other information may be obtain from the above location, or from: Prof. Xiaodong Zhang, email: zhang@runner.utsa.edu , Phone: (210) 691-5541, FAX: (210) 691-4437. AIR TRANSPORTATION United Airlines is the official airline of MPPOI '95. United will provide attendees round trip transportation to San Antonio on United, United Express or Shuttle by United scheduled service in the United States and Canada at fares of either 5% discount off any United, United Express or Shuttle by United published fares, including First Class, in effect when the tickets are purchased subject to all applicable restrictions, or a 10% discount off applicable BUA, or like, fares in effect when tickets are purchased 7 days in advance. Reservations and schedule information may be obtained by calling the United Meetings desk at 1-800-521-4041 and referencing Meeting ID Code 599XM. ACCOMMODATION The special MPPOI '95 Menger Hotel rate is US $90 for single or double. Please see the enclosed information for making your reservation directly with the hotel. REGISTRATION Please register to the conference using the attached form DIRECTLY with IEEE. TO HELP WITH THE PLANNING OF THE CONFERENCE PLEASE ALSO SEND email or fax, indicating the name(s) of people that register with IEEE and will attend (email: mppoi@research.nj.nec.com fax: +USA-609-951-2482 Att. Dr. Eugen Schenfeld). LOCAL TRANSPORTATION Star Shuttle provides van service from San Antonio International airport to the Menger hotel for $6.00 per person each way. For more information and reservations call +USA-(210)366-3183. Other transportation is available at the airport, incl. taxi and busses. CUSTOMS/PASSPORTS It is suggested for those of other than US nationalities to check with a travel agent and with an US consulate the requirements for VISA and passports to enter the United States, as well as for US Customs regulations. WEATHER & TIME San Antonio's weather in late october ranges from low 60's to 70's Fahrenheit. Climate is dry and perfect for sightseeing the many attractions the city and surroundings have to offer. JOIN US! MPPOI'95 is in an ideal location to bring along family. Your traveling companions will be well entertained while you are participating in the conference events. For those that plan to spend the weekend before the conference in San Antonio, we suggest to consult with a travel agent and with the hotel for information on sightseeing and other local activities. Please note that the hotel rate is valid for the nights of Oct. 22-24. If you wish to stay over a Sat. night (Oct. 21st), the hotel will try its best to accommodate you with the same rate. Once you make a reservation, please make sure to ask for the night of Oct. 21st. If not available, you will be placed on a waiting lists. Chances are you may get it, but currently it is not possible to confirm this. ========================================== ****** NSF TRAVEL SUPPORT (PENDING) ****** ========================================== The National Science Foundation (NSF) is considering to award travel support for minority and female faculty members as well as for graduate students. This travel award is pending final approval by the NSF and is available for authors presenting papers at the MPPOI'95 conference. For details on the travel support and to obtain a Request Form please contact (email, fax, or phone) the Conference Chair at the above address. \end{verbatim} \newpage \begin{verbatim} STEERING COMMITTEE ================== J. Goodman, Stanford University L. Johnsson, University of Houston S. Lee, University of California R. Melhem, University of Pittsburgh E. Schenfeld, NEC Research Institute (Chair) P. Wang, George Mason University CONFERENCE CHAIR: ================ Dr. Eugen Schenfeld (voice) (609)951-2742 NEC Research Institute (fax) (609)951-2482 4 Independence Way email: MPPOI@RESEARCH.NJ.NEC.COM Princeton, NJ 08540, USA PUBLICITY CHAIR: D. Quammen, George Mason University. ================ LOCAL ARRANGEMENTS CHAIR: X. Zhang, University of Texas at San Antonio. ======================== PROGRAM COMMITTEE: ================= Pierre Chavel, Institut d'Optique, Orsay, France Alan Craig, Air Force Office of Scientific Research (AFOSR) Karsten Decker, Swiss Scientific Computing Center, Manno, Switzerland Jack Dennis, Lab. for CS, MIT, Boston, MA Patrick Dowd, Dept. of ECE, SUNY at Buffalo, Buffalo, NY Mary Eshaghian, Dept. of CS, NJIT, Newark, NJ John Feo, Comp. Res. Grp., Lawrence Livermore Nat. Lab., Livermore, CA Michael Flynn, Department of EE, Stanford University, Stanford, CA Edward Frietman, Faculty of Applied Physics, Delft U., Delft, The Netherlands Asher Friesem, Dept. of Electronics, Weizmann Inst., Israel Kanad Ghose, Dept. of CS, SUNY at Binghamton, Binghamton NY Allan Gottlieb, Dept. of CS, New York University, New York, NY Joe Goodman, Department of EE, Stanford University, Stanford, CA Alan Huang, Terabit Corp., Middletown, NJ Oscar H. Ibarra, Department of Computer Science, UCSB, CA Yoshiki Ichioka, Dept. of Applied Physics, Osaka U., Osaka, Japan Leah Jamieson, School of ECE, Purdue University, West Lafayette, IN Lennart Johnsson, Dept. of Computer Science, University of Houston, Houston TX Kenichi Kasahara, Opto-Electronics Basic Res. Lab., NEC Corporation, Japan Israel Koren, Dept. of ECS, U. of Mass, Amherst, MA Raymond Kostuk, Dept. of ECE, U. of Arizona, Tucson, AZ Ashok V. Krishnamoorthy, AT&T Bell Laboratories, Holmdel NJ Sing Lee, Dept. of EE, UCSD, La Jolla, CA Steve Levitan, Department of EE, U. of Pittsburgh, Pittsburgh, PA Adolf Lohmann, Institute of Physics, U. of Erlangen, Erlangen, Germany Ahmed Louri, Dept. of ECE, U. of Arizona, Tucson, AZ Miroslaw Malek, Dept. of ECE, U. of Texas at Austin, Austin TX Rami Melhem, Dept. of CS, University of Pittsburgh, Pittsburgh, PA J. R. Moulic, IBM T. J. Watson Research Center, Yorktown Heights, NY Miles Murdocca, Department of CS, Rutgers University, New Brunswick, NJ John Neff, Opto-elec. Comp. Sys., U. of Colorado, Boulder, CO Paul Prucnal, Department of EE, Princeton U., Princeton, NJ Donna Quammen, Dept of CS, George Mason University, USA John Reif, Department of CS, Duke University, Durham, NC A. B. Ruighaver, Dept. of CS, U. of Melbourne, Victoria, Australia A. A. Sawchuk, Dept. of EE, USC, Los-Angeles, CA Eugen Schenfeld, NEC Research Institute, Princeton, NJ Charles W. Stirk, Optoelectronic Data Systems, Inc., Boulder, CO Pearl Wang, Dept. of CS, George Mason University, USA Les Valiant, Div. of Applied Science, Harvard University, Cambridge, MA Albert Zomaya, Dept. of EAEE, U. of Western Australia, Western Australia SESSION CHAIRS ============== P. Dowd, State University of New York at Buffalo E. E. E. Frietman, Delft University of Technology, The Netherlands R. Kostuk, University of Arizona at Tucson A. Krishnamoorthy, AT&T Bell Laboratories S. Levitan, University of Pittsburgh Y. Li, NEC Research Institut A. Louri, University of Arizona at Tucson P. Wang, George Mason University PANEL MODERATORS ================ E. E. E. Frietman, Delft University of Technology, The Netherlands Y. Li, NEC Research Institute INVITED SPEAKERS ================ Michael Flynn, Stanford University G. Fox, Northeast Parallel Architectures Center at Syracus University S. L. Johnsson, University of Houston H. S. Hinton, University of Colorado at Boulder Alan Huang, Terabit Corp. H. T. Kung, Harvard University D. Miller, AT&T Bell Labs. B. Smith, Tera Computers Corp. ======================================================================== \end{verbatim} \newpage \begin{verbatim} _____________________________________________________________________ MPPOI '95 PROGRAM SCHEDULE _____________________________________________________________________ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ***** INVITED TALKS: 40 Minutes. REGULAR TALKS: 20 Minutes ***** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ======================================== SUNDAY, OCTOBER 22, 1995 ======================================== 6:00 PM - 7:30 PM REGISTRATION ======================================== Monday, October 23, 1995 ======================================== 7:00 AM - 8:00 AM CONTINENTAL BREAKFAST ________________________________________ 7:00 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:00 AM - 8:20 AM OPENING REMARKS Eugen Schenfeld, NEC Research Institute 8:20 AM - 10:00 AM Session I Chair: R. Kostuk, University of Arizona at Tucson Hybrid SEED - Massively Parallel Optical Interconnections for Silicon ICs D. Miller, AT&T Bell Labs. (INVITED) Design Issues for Through-Wafer Optoelectronic Multicomputer Interconnects P. May, N. M. Jokerst, D. S. Wills, S. Wilkinson, M. Lee, O. Vendier, S. Bond, Z. Hou, G. Dagnall, M. A. Brooke, A. Brown, Georgia Institute of Technology Design of a Terabit Free-Space Photonic Backplane for Parallel Computing T. H. Szymanski, and H. S. Hinton, McGill University and University of Colorado Optical Interconnection Network for Massively Parallel Processors Using Beam-Steering Vertical Cavity Surface-Emitting Lasers L. Fan, and M. C. Wu, University of California at Los Angeles; H. C. Lee. and P. Grodzinski, Motorola Inc. ________________________________________ 10:00 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 1:00 PM PARALLEL SESSIONS: II AND III _________________________________________ 10:30 AM - 1:00 PM Session II Chair: A. Krishnamoorthy, AT&T Bell Laboratories The Role of Representation in Optimizing a Computer Architecture Michael Flynn, Stanford University (INVITED) An Evaluation of Communication Protocols for Star-Coupled Multidimensional WDM Networks for Multiprocessors K. R. Desai, and K. Ghose, State University of New York at Binghamton Small Depth Beam-Steered Optical Interconnect M. Murdocca, H. R. Nahata, and Y. Zhou, Rutgers University Optical Fiber Interconnection System for Massively Parallel Processor Arrays Y.-M. Zhang, X.-Q. He, G. Zhou, W.-Y. Liu, Y. Wang, Z.-P. Yin, and H.-Y. Wang, Tianjin University, P. R. of China A Case Study for the Implementation of a Stochastic Bit Stream Neuron; The Choice Between Electrical and Optical Interconnects M. A. Hands, W. Peiffer, H. Thienpont, A. Kirk, Vrije University, Belgium; T. J. Hall, King's College, University of London, UK Characterization of Massively Parallel Smart Pixels Systems for The Example of a Binary Associative Memory D. Fey, Friedrich-Schiller University, Germany ________________________________________ 10:30 AM - 1:00PM Session III Chair: A. Louri, University of Arizona at Tucson The Challenges Involved in the Design of a 100 Gb/s Internet Alan Huang, Terabit Corp. (INVITED) Fault-tolerance in Optically Implemented Multiprocessor Networks P. Lalwaney, and I. Koren, University of Massachusetts at Amherst A Speed Cache Coherence Protocol for an Optical Multi-Access Interconnect Architecture T. M. Pinkston, and J. Ha, University of Southern California A Reconfigurable Optical Bus Structure for Shared Memory Multiprocessors With Improved Performance S. Ray, and H. Jiang, University of Nebraska-Lincoln n-Dimensional Processor Arrays with Optical dBuses G. Liu, and K. Y. Lee, University of Denver; H. F. Jordan, University of Colorado at Boulder The Difficulty of Finding Good Embeddings of Program Graphs onto the OPAM Architecture B. Ramamurthy, and M. Krishnamoorthy, Rensselaer Polytechnic Institute ________________________________________ 1:00 PM - 2:30 PM CONFERENCE LUNCH (PROVIDED) ________________________________________ 2:30 PM - 4:10 PM Session IV Chair: E. E. E. Frietman, Delft University of Technology, The Netherlands Intelligent Optical Backplanes H. S. Hinton, University of Colorado at Boulder (INVITED) Connection Cube and Interleaved Optical Backplane for a Multiprocessor Data Bus R. K. Kostuk, T. J. Kim, D. Ramsey, T.-H. Oh, and R. Boye University of Arizona at Tucson An Efficient 3-D Optical Implementation of Binary de Bruijn Networks with Applications to Massively Parallel Computing A. Louri, and H. Sung, University of Arizona at Tucson Performance Evaluation of 3D Optoelectronic Computer Architectures on FFT and Sorting Benchmarks G. A. Betzos, and P. A. Mitkas, Colorado State University ________________________________________ 4:10 PM - 4:30 PM AFTERNOON BREAK ________________________________________ 4:30 PM - 6:30 PM CONFERENCE PANEL I OPTICS FOR INTERCONNECTION: INDUSTRY'S INTERESTS and RESPONSIBILITIES MODERATOR: Y. Li, NEC Research Institute PANELISTS: R. Chen, University of Texas at Austin; N. Dutta, AT&T Bell Labs; N. Henmi, NEC Corp.; Y. S. Liu, General Electric; B. Pecor, Cray Research; J. Rowlette, AMP Corp.; B. Smith, Tera Computers Corp. ________________________________________ 7.00 PM - 8:30 PM ACQUAINTANCE RECEPTION Meet some of the MPPOI participants. Food and small talk opportunity provided. ======================================== TUESDAY, OCTOBER 24, 1995 ======================================== 7:00 AM - 8:00 AM CONTINENTAL BREAKFAST ________________________________________ 7:00 AM - 11:30 AM CONFERENCE REGISTRATION ________________________________________ 8:00 AM - 10:00 AM Session V Chair: S. Levitan, University of Pittsburgh Flow-Controlled ATM Switches for Available Bit Rate Services H. T. Kung, Harvard University (INVITED) Construction of Demonstration Parallel Optical Processors based on CMOS/InGaAs Smart Pixel Technology A. Walker, M. P. Y. Desmulliez, F. A. P. Tooley, D. T. Neilson, J. A. B. Dines, D. A. Baillie, S. M. Prince, L. C. Wilkinson, M. R. Taghizadeh, P. Blair, J. F. Snowdon, and B. S. Wherrett, Heriot-Watt University, Scotland; C. Stanley, and F. Pottier, University of Glasgow, Scotland; I. Underwood, and D. G. Vass, University of Edinburgh, Scotland; W. Sibbett, and M. H. Dunn, University of St.-Andrews, Scotland. General Purpose Bi-Directional Optical Backplane Bus C. Zhao, S. Natarajan, and R. T. Chen, University of Texas, at Austin Efficient Communication Scheme For Distributed Parallel Processor Systems P. Kohler, and A. Gunzinger, Swiss Federal Institute of Technology, Switzerland What Limits Capacity and Connectivity in Optical Interconnects Y. Li, NEC Research Institute ________________________________________ 10:00 AM - 10:30 AM MID-MORNING BREAK ________________________________________ ________________________________________ 10:30 AM - 12:30 PM Session VI Chair: P. Dowd, State University of New York at Buffalo Data Partitioning for Load-Balance and Communication Bandwidth Preservation S. L. Johnsson, University of Houston (INVITED) Embedding Rings and Meshes in Partitioned Optical Passive Stars Networks G. Gravenstreter, and R. G. Melhem, University of Pittsburgh Optical Thyristor Based Subsystems for Digital Parallel Processing: Demonstrators and Future Perspectives H. Thienpont, A. Kirk, and I. Veretennicoff, Vrije University, Belgium; P. Heremans, B. Knupfer, and G. Borghs, IMEC Corp., Belgium; M. Kuijk, and R. Vounckx, rije University, Belgium Computer-Aided Design of Free-Space Optoelectronic Interconnection Systems S. P. Levitan, P. J. Marchand, M. Rempel, D. M. Chiarulli, and F. B. McCormick, University of Pittsburgh and University of California at San Diego Optical Design of a Fault Tolerant Self-Routing Switch for Massively Parallel Processing Networks M. Guizani, M. A. Memon, and S. Ghanta, King Fahd University, Saudi Arabia ________________________________________ 12:30 PM - 1:30 PM LUNCH (ON YOUR OWN) ________________________________________ 1:30 PM - 3:50 PM PARALLEL SESSIONS: VII and VIII ________________________________________ 1:30 PM - 3:50 PM Session VII Chair: P. Wang, George Mason University Interconnection Networks for Shared Memory Parallel Computers B. Smith, Tera Computers Corp. (INVITED) A Comparative Study of One-to-Many WDM Lightwave Interconnection Networks for Multiprocessors H. Bourdin, and A. Ferreira, CNRS - LIP ENS Lyon, France; K. Marcus, ARTEMIS IMAG, Grenoble, France Planar Optical Interconnections for 100Gb/s Packet Address Detection S. H. Song and E.-H. Lee, Electronics & Telecommunications Research Institute, Taejon, South Korea A Pipelined Self-Routing Optical Multichannel Time Slot Permutation Network R. Kannan, H. F. Jordan, K. Y. Lee, and C. Reed, University of Denver; University of Colorado at Boulder; and The Institute for Defense Analysis Optical Interconnect Design for a Manufacturable Multicomputer R. R. Krchnavek, R. D. Chamberlain, T. Barry, V. Malhotra, and Z. Dittia, Washington University at St. Louis, Missouri Hypercube Interconnection in TWDM Optical Passive Star Networks S.-K. Lee, A. D. Oh, and H.-A. Choi, George Washington University ________________________________________ 1:30 PM - 3:50 PM Session VIII Chair: Y. Li, NEC Research Institut From Today's Desktop Gigaflop to Tomorrow's Central Petaflop; From Grand Challenges to the Information Age; The Applications Driving Parallel Computing and Their Architecture Implications G. Fox, Northeast Parallel Architectures Center at Syracus University (INVITED) A Fiber-Optic Interconnection Concept for Scalable Massively Parallel Computing M. Jonsson, K. Nilsson, and B. Svensson, Halmstad University; and Chalmers University of Technology, Goteborg, Sweden All-Optical Interconnects for Massively Parallel Processing C. S. Ih, R. Tian, X. Xia, J. Chao, and Y. Wang, University of Delaware Predictive Control of Opto-Electronic Reconfigurable Interconnection Networks Using Neural Networks M. F. Sakr, S. P. Levitan, C. L. Giles, B. C. Horne, M. Maggini, and D. M. Chiarulli, University of Pittsburgh; NEC Research Institute; and Firenze University, Italy The Simultaneous Optical Multiprocessor Exchange Bus J. Kulick, W. E. Cohen, C. Katsinis, E. Wells, A. Thomsen, M. Abushagur, R. K. Gaede, R. Lindquist, G. Nordin, and D. Shen; University of Alabama in Huntsville On Some Architectural Issues of Optical Hierarchical Ring Networks for Shared-Memory Multiprocessors H. Jiang, C. Lam, and V. C. Hamacher, University of Nebraska-Lincoln; and Queen's University, Kingston, Canada ________________________________________ 3:50 PM - 4:15 PM AFTERNOON BREAK ________________________________________ ________________________________________ 4:15 PM - 6:15 PM CONFERENCE PANEL II OPTO-ELECTRONIC PROCESSING & NETWORKING IN MASSIVELY PARALLEL PROCESSING SYSTEMS MODERATOR: E. E. E. Frietman, Delft University of Technology, The Netherlands PANELISTS: C. Jesshope, University of Surrey, Surrey, UK; H. F. Jordan, University of Colorado at Boulder; G. D. Khoe, Eindhoven University of Technology, Eindhoven, The Netherlands; A. V. Krishnamoorthy, AT&T Bell Labs.; I. Koren, University of Massachusetts at Amherst; A. McAulay, Lehigh University; I. MacDonald, Telecommunications Research Laboratories, Edmonton, Canada; M. Murdocca, Rutgers University; A. B. Ruighaver, Melbourne University, Australia; J. Sauer, University of Colorado at Boulder; H. Thienpont, Vrije Universiteit, Belgium; A. Walker, Heriot-Watt University, Edinburgh, Scotland; ________________________________________ 6:15 PM - 6:30 PM CLOSING REMARKS: ANNOUNCING MPPOI '96 AND FUTURE MEETING PLANS Eugen Schenfeld NEC Research Institute ________________________________________ 6:30 PM - 8:00 PM CONFERENCE DINNER (PROVIDED) ________________________________________ ============================================================================== \end{verbatim} \newpage \begin{verbatim} Registration Form MPPOI'95 Menger Hotel San Antonio, Texas October 23-24, 1995 TO REGISTER, MAIL OR FAX THIS FORM TO: MPPOI registration, IEEE Computer Society, 1730 Massachusetts Av, N.W., Washington DC 20036-1992, USA. Fax: +USA-202-728-0884 For information, call +USA-202-371-1013 - Sorry, no phone registration. Name:---------------------------------------------------------------------- Last First MI Company:------------------------------------------------------------------- Address:------------------------------------------------------------------- City/State/Zip/Country:---------------------------------------------------- Daytime phone:----------------------- Fax number--------------------------- Company:------------------------------------------------------------------- E-mail address:------------------------------------------------------------ IEEE/ACM/OSA/SPIE Member Number: ------------------ Do you have any special needs: -------------------------------------------- --------------------------------------------------------------------------- Do not include my mailing address on: -- Non-society mailing lists -- Meeting Attendee lists Please circle the appropriate registration fee: Advance (before October 2, 1995) Late(before October 16, 1995)/on site. Member $300 Member $360 Non-member $375 Non-member $450 Full-time student $150 Full-time student $180 Total enclosed:$ -------------------------------- Please make all checks payable to: IEEE Computer Society. All checks must be in US dollars drawn on US banks. Credit card charges will appear on statement as "IEEE Computer Society Registration". Written requests for refunds must be received by IEEE office before October 2, 1995. Refunds are subject to a $50 processing fees. Method of payment accepted (payment must accompany form): -- Personal check -- Company check -- Traveler's check -- American Express -- Master Card -- VISA -- Dinner's club -- Government purchase order (original) Credit card number: -------------------------- Expiration date: ------------ Cardholder name : -------------------------- Signature : -------------------------- Non-student registration fees include conference attendance, proceedings, continental breakfast, refreshment at breaks, conference reception, one conference lunch and one conference dinner. Student registration fees ***DO NOT*** include the lunch and ***DO NOT*** include the dinner. =========================================================================== \end{verbatim} \newpage \begin{verbatim} ______________________________________________________________________ MPPOI'95 HOTEL RESERVATION The Menger Hotel San Antonio, Texas ______________________________________________________________________ PLEASE MAKE RESERVATIONS WITH THE MENGER HOTEL AS SOON AS POSSIBLE TO GUARANTEE THE $90 RATE (HOTEL PHONE AND FAX NUMBERS ARE GIVEN AT BELLOW). * The special MPPOI'95 group rate of US $90.00 (single or double) is available from October 22 through October 25, 1995. All rates are subject to additional local and state taxes. These rates will be available for reservations made BEFORE September 22, 1995. Please note that the period Sep. to Nov. is the high session in San Antonio and hotels are usually booked in advance. We urge you to make early reservations as soon as possible. If you wish to stay over a Sat. night (Oct. 21st), the hotel will TRY its best to accommodate you with the same rate. * The MENGER HOTEL CONTACT POINTS: Phone: 1-800-345-9285 (for USA, or Canada) Phone: +USA-210-223-4361 (other countries); Fax: +USA-210-228-0022 * ALTERNATIVE LIST OF HOTELS (RATES AND RANK from AAA Tour Book): IN CASE THE MENGER HOTEL IS FULL, here is a list of other nearby hotels (all within walking distance of the Menger, in the downtown area of San Antonio). These hotels have no arrangement with MPPOI and therefore you should not identify yourself as a member of a group or conference. The arrangement with these hotels is on a "one to one" basis, as with any other business traveler. An early reservation is suggested. Also, it is always a good idea to look for "specials" (i.e., advance paid rates, weekend specials, AAA rates, etc.). Also please note that from the USA you may call the 800 directory (1-800-555-1212) and ask for the 800 number of the hotel chain (such hotels are marked with a '#' mark bellow), rates and ranking taken from AAA Tour Book 1994: AAA Typical Phone Fax Rank Rate ($) (+USA) (+USA) * St. Anthony Hotel 4 106-130 (210)227-4392 none listed * Emily Morgan 3 85 (210)225-8486 none listed * Crocket Hotel 3 75-105 (210)225-6500 none listed # Hyatt Regency 4 119-170 (210)222-1234 (210)227-4925 * La Mansion del Rio 4 135-220 (210)225-2581 (210)226-1365 # Holiday Inn Riverwalk 3 95-119 (210)224-2500 (210)223-1302 # Hilton Palacio del Rio 4 154-196 (210)222-1400 (210)270-0761 * The Fairmounth Hotel 4 145-275 (210)224-8800 (210)224-2767 # Marriott Riverwalk 4 135-150 (210)224-4555 (210)224-2754 # La Quinta Motor Inn 3 83-90 (210)222-9181 (210)228-9816 # Marriott Rivercenter 4 160 (210)223-1000 (210)223-6239 ________________________________________________________________________________ \end{verbatim} \end{document} Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Tue Aug 29 11:24:43 1995 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id LAA02887; Tue, 29 Aug 1995 11:24:43 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id LAA29605; Tue, 29 Aug 1995 11:23:30 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 29 Aug 1995 11:23:29 EDT Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from zingo by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id LAA29594; Tue, 29 Aug 1995 11:23:25 -0400 Received: by zingo (940816.SGI.8.6.9/YDL1.4-910307.16) id LAA24467(zingo); Tue, 29 Aug 1995 11:13:05 -0400 Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id KAA05392(iris49); Tue, 29 Aug 1995 10:25:14 -0400 Date: Tue, 29 Aug 1995 10:25:14 -0400 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199508291425.KAA05392@iris49> To: mppoi95@research.nj.nec.com Subject: MPPOI'95 NSF Travel Awards FINANCIAL AID FOR MINORITY FACULTY AND STUDENTS TO ATTEND THE SECOND INTERNATIONAL CONFERENCE ON MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS FROM THE NATIONAL SCIENCE FOUNDATION The National Science Foundation has provided a group travel grant to primarily support U.S. minority and female faculty members, as well as students studying in the U.S. who plan to attend the Second International Conference on Massively Parallel Processing Using Optical Interconnections. The conference will be held in San Antonio, Texas on October 23 and 24 1995. Faculty and students presenting papers in the conference will have higher priority for this support. If you are eligible, please submit the enclosed application before September 30, 1995. For information on the MPPOI'95 conference please email to: MPPOI@RESEARCH.NJ.NEC.COM. Faculty and students awarded the grant support will be reimbursed for the actual expenses for attending the conference up to a maximum of $825 for faculty members and $670 for students. Any member of the U.S. scientific community, irrespective of nationality, who performs work in the U.S. is eligible to apply. Applicants supported by other grants and contracts are expected to obtain travel monies from their supporting institutions. Since only about ten awards will be made under this program, it is important that other sources be used where available. Applications received by September 30 will have priority. Those received afterwards will be selected on a first come first served basis until funds run out. Travel grant recipients are determined by a committee consisting of the following members: Dr. Eugen Schenfeld, NEC Research Institute (chair) Prof. Rami Melhem, The University of Pittsburgh Prof. Pearl Wang, George Mason University A short trip report along with documented conference registration and travel expense receipts is required within one month of the end of the conference. This material should be sent by award recipients to: Prof. Rami Melhem Department of Computer Science (219 MIB) The University of Pittsburgh, Pittsburgh, PA 15260. ************************************************************************* APPLICATION FORM FOR MPPOI'95 TRAVEL GRANT from National Science Foundation NAME:______________________________________________________________________ TELEPHONE:_________________________ E-MAIL:________________________________ MINORITY GROUP:____________________ SEX:_____ STUDENT/FACULTY:_____________ If Student, please indicate Degree_____________ Expected year of completion____________ Faculty Advisor __________________________________________ UNIVERSITY AFFILIATION: ___________________________________________________ DEPARTMENT: ________________________________SOCIAL SECURITY #: ____________ MAILING ADDRESS: __________________________________________________________ ___________________________________________________________________________ ___________________________________________________________________________ LIST PAPERS ACCEPTED TO MPPOI'95: 1. TITLE:______________________________________________________________ PAPER PRESENTER:____________________________________________________ 2. TITLE:______________________________________________________________ PAPER PRESENTER:____________________________________________________ BRIEF DESCRIPTION OF YOUR TECHNICAL INTERESTS WITHIN THE SCOPE OF MPPOI: ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________________________________ PLEASE STATE OTHER SOURCES OF TRAVEL MONEY: ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________________________________ ESTIMATED TRAVEL EXPENSES: TRAVEL: (From _____________________, To__ ___________________) ESTIMATED DRIVING DISTANCE:________________________________________ or ROUND TRIP TRANSPORTATION COST:____________________________________ ESTIMATED LODGING COST:____________________________________________ REGISTRATION FEE:__________________________________________________ Return completed application form in e-mail to: Dr. Eugen Schenfeld - MPPOI'95 NSF Award NEC Research Institute 4 Independence Way Princeton, NJ 08540 phone: 609 951 2742 fax: 609 951 2482 email: eugen@research.nj.nec.com (Inet) ========================================================================== Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Sat Sep 9 16:07:23 1995 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id QAA28659; Sat, 9 Sep 1995 16:07:22 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id QAA07537; Sat, 9 Sep 1995 16:06:32 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Sat, 9 Sep 1995 16:06:29 EDT Errors-to: owner-mpi-ptop@CS.UTK.EDU Received: from zingo by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id QAA07523; Sat, 9 Sep 1995 16:06:23 -0400 Received: by zingo (940816.SGI.8.6.9/YDL1.4-910307.16) id PAA08396(zingo); Sat, 9 Sep 1995 15:54:04 -0400 Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id PAA02819(iris49); Sat, 9 Sep 1995 15:03:14 -0400 Date: Sat, 9 Sep 1995 15:03:14 -0400 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199509091903.PAA02819@iris49> To: mppoi@research.nj.nec.com Subject: MPPOI'95 Registration deadline+NSF travel grants This is a reminder that the deadline to register to the MPPOI'95 conference at a reduced conference rate is Oct. 2. Registration should be sent directly to IEEE CS (by fax if credit card is used for payment) at the address listed in the enclosed registration form (part of the MPPOI'95 advance program). Also, the NSF (National Science Foundation) has awarded MPPOI a grant to support US minority students and junior faculty to attend the conference. Forms to apply for this award are available by email. Please send email to ask for a form. With regards, Dr. Eugen Schenfeld MPPOI'95 Conference Chair Encl. ===== THE FOLLOWING IS IN LaTex Format. ================================================================================= \documentstyle[fullpage]{article} \begin{document} \begin{verbatim} ========================================================================== The Second International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS =========================================================================== October 23-24, 1995 Menger Hotel San-Antonio Texas, USA SPONSORED BY: IEEE Computer Society IEEE Technical Committee on Computer Architecture (TCCA) IN COOPERATION WITH: ACM Special Interest Group on Architecture (SIGARCH) The International Society for Optical Engineering (SPIE) The IEEE Lasers and Electro-optics Society (LEOS) The Optical Society of America (OSA) ADDITIONAL SUPPORT PROVIDED BY: NSF - The National Science Foundation (pending) ======================================================================== ADVANCE PROGRAM ======================================================================== The Second International Conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI '95) is a continuation to a very successful first meeting held last year in Cancun, Mexico. This year we have an exciting program featuring eight invited talks from research and industrial leaders in the fields of parallel computer systems, optical interconnections and technology, parallel applications and interconnection networks. We also have two panels with the participation of technological and academic experts, representing the current thoughts and trends of the field. And last, but not least, there are 34 regular papers accepted for presentation from authors all over the world. This rich and diverse program is sure to be most interesting and stimulate discussions and interactions among the researchers of this interdisciplinary field. The organizers of MPPOI strongly feel that massively parallel processing needs optical interconnections and optical interconnections need parallel processing. The Conference's focus is the possible use of optical interconnections for massively parallel processing systems, and their effect on system and algorithm design. Optics offers many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers from all related research areas are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. \end{verbatim} \newpage \begin{verbatim} ********************************************************************* LOCATION ********************************************************************* SAN ANTONIO American humorist and homespun philosopher Will Rogers once described San Antonio as ``One of America's four unique cities". He had a natural instinct for getting to the very essence of a subject, and his comment about San Antonio is no exception. San Antonio truly is unique. From its founding in 1691 by Spanish missionaries, San Antonio has grown from a sleepy little Texas pueblo to the 9th largest city in the United States. Along the way it has been the birthplace of the Texas revolution with the Battle of the Alamo in 1836. It is the new home of bioscience and hi-tech industry now. In all, over half a dozen cultures, from Spanish and German to Lebanese and Greek, have impacted the growth of San Antonio. And their influence is still evident in the architecture, festivals, cuisine and customs which all contribute to the uniqueness and charm of the city. THE ALAMO An old mission-fort, the Alamo, in San Antonio, has been called the "cradle of Texas liberty." Its gallant defense and the horrible massacre of the more than 180 men who fought there inspired the cry, "Remember the Alamo!" Texas soldiers shouted this at the battle of San Jacinto, which brought independence to Texas. THE MENGER HOTEL MPPOI '95 will be held in San Antonio's Menger Hotel, a historic landmark hotel. It is next door to the Alamo, adjacent to Rivercenter Mall, the IMAX Theater and River Walk and two blocks to the convention center. The hotel fronts Alamo Plaza where the Sea World shuttle and sightseeing tours depart. SPDP'95 For those that are interested in attending the SPDP'95: info. is available at the following www cite: http://rabbit.cs.utsa.edu/Welcome.html. You must register to SPDP'95 conference if you wish to attend it. The advance program and other information may be obtain from the above location, or from: Prof. Xiaodong Zhang, email: zhang@runner.utsa.edu , Phone: (210) 691-5541, FAX: (210) 691-4437. AIR TRANSPORTATION United Airlines is the official airline of MPPOI '95. United will provide attendees round trip transportation to San Antonio on United, United Express or Shuttle by United scheduled service in the United States and Canada at fares of either 5% discount off any United, United Express or Shuttle by United published fares, including First Class, in effect when the tickets are purchased subject to all applicable restrictions, or a 10% discount off applicable BUA, or like, fares in effect when tickets are purchased 7 days in advance. Reservations and schedule information may be obtained by calling the United Meetings desk at 1-800-521-4041 and referencing Meeting ID Code 599XM. ACCOMMODATION The special MPPOI '95 Menger Hotel rate is US $90 for single or double. Please see the enclosed information for making your reservation directly with the hotel. REGISTRATION Please register to the conference using the attached form DIRECTLY with IEEE. TO HELP WITH THE PLANNING OF THE CONFERENCE PLEASE ALSO SEND email or fax, indicating the name(s) of people that register with IEEE and will attend (email: mppoi@research.nj.nec.com fax: +USA-609-951-2482 Att. Dr. Eugen Schenfeld). LOCAL TRANSPORTATION Star Shuttle provides van service from San Antonio International airport to the Menger hotel for $6.00 per person each way. For more information and reservations call +USA-(210)366-3183. Other transportation is available at the airport, incl. taxi and busses. CUSTOMS/PASSPORTS It is suggested for those of other than US nationalities to check with a travel agent and with an US consulate the requirements for VISA and passports to enter the United States, as well as for US Customs regulations. WEATHER & TIME San Antonio's weather in late october ranges from low 60's to 70's Fahrenheit. Climate is dry and perfect for sightseeing the many attractions the city and surroundings have to offer. JOIN US! MPPOI'95 is in an ideal location to bring along family. Your traveling companions will be well entertained while you are participating in the conference events. For those that plan to spend the weekend before the conference in San Antonio, we suggest to consult with a travel agent and with the hotel for information on sightseeing and other local activities. Please note that the hotel rate is valid for the nights of Oct. 22-24. If you wish to stay over a Sat. night (Oct. 21st), the hotel will try its best to accommodate you with the same rate. Once you make a reservation, please make sure to ask for the night of Oct. 21st. If not available, you will be placed on a waiting lists. Chances are you may get it, but currently it is not possible to confirm this. ========================================== ****** NSF TRAVEL SUPPORT (PENDING) ****** ========================================== The National Science Foundation (NSF) is considering to award travel support for minority and female faculty members as well as for graduate students. This travel award is pending final approval by the NSF and is available for authors presenting papers at the MPPOI'95 conference. For details on the travel support and to obtain a Request Form please contact (email, fax, or phone) the Conference Chair at the above address. \end{verbatim} \newpage \begin{verbatim} STEERING COMMITTEE ================== J. Goodman, Stanford University L. Johnsson, University of Houston S. Lee, University of California R. Melhem, University of Pittsburgh E. Schenfeld, NEC Research Institute (Chair) P. Wang, George Mason University CONFERENCE CHAIR: ================ Dr. Eugen Schenfeld (voice) (609)951-2742 NEC Research Institute (fax) (609)951-2482 4 Independence Way email: MPPOI@RESEARCH.NJ.NEC.COM Princeton, NJ 08540, USA PUBLICITY CHAIR: D. Quammen, George Mason University. ================ LOCAL ARRANGEMENTS CHAIR: X. Zhang, University of Texas at San Antonio. ======================== PROGRAM COMMITTEE: ================= Pierre Chavel, Institut d'Optique, Orsay, France Alan Craig, Air Force Office of Scientific Research (AFOSR) Karsten Decker, Swiss Scientific Computing Center, Manno, Switzerland Jack Dennis, Lab. for CS, MIT, Boston, MA Patrick Dowd, Dept. of ECE, SUNY at Buffalo, Buffalo, NY Mary Eshaghian, Dept. of CS, NJIT, Newark, NJ John Feo, Comp. Res. Grp., Lawrence Livermore Nat. Lab., Livermore, CA Michael Flynn, Department of EE, Stanford University, Stanford, CA Edward Frietman, Faculty of Applied Physics, Delft U., Delft, The Netherlands Asher Friesem, Dept. of Electronics, Weizmann Inst., Israel Kanad Ghose, Dept. of CS, SUNY at Binghamton, Binghamton NY Allan Gottlieb, Dept. of CS, New York University, New York, NY Joe Goodman, Department of EE, Stanford University, Stanford, CA Alan Huang, Terabit Corp., Middletown, NJ Oscar H. Ibarra, Department of Computer Science, UCSB, CA Yoshiki Ichioka, Dept. of Applied Physics, Osaka U., Osaka, Japan Leah Jamieson, School of ECE, Purdue University, West Lafayette, IN Lennart Johnsson, Dept. of Computer Science, University of Houston, Houston TX Kenichi Kasahara, Opto-Electronics Basic Res. Lab., NEC Corporation, Japan Israel Koren, Dept. of ECS, U. of Mass, Amherst, MA Raymond Kostuk, Dept. of ECE, U. of Arizona, Tucson, AZ Ashok V. Krishnamoorthy, AT&T Bell Laboratories, Holmdel NJ Sing Lee, Dept. of EE, UCSD, La Jolla, CA Steve Levitan, Department of EE, U. of Pittsburgh, Pittsburgh, PA Adolf Lohmann, Institute of Physics, U. of Erlangen, Erlangen, Germany Ahmed Louri, Dept. of ECE, U. of Arizona, Tucson, AZ Miroslaw Malek, Dept. of ECE, U. of Texas at Austin, Austin TX Rami Melhem, Dept. of CS, University of Pittsburgh, Pittsburgh, PA J. R. Moulic, IBM T. J. Watson Research Center, Yorktown Heights, NY Miles Murdocca, Department of CS, Rutgers University, New Brunswick, NJ John Neff, Opto-elec. Comp. Sys., U. of Colorado, Boulder, CO Paul Prucnal, Department of EE, Princeton U., Princeton, NJ Donna Quammen, Dept of CS, George Mason University, USA John Reif, Department of CS, Duke University, Durham, NC A. B. Ruighaver, Dept. of CS, U. of Melbourne, Victoria, Australia A. A. Sawchuk, Dept. of EE, USC, Los-Angeles, CA Eugen Schenfeld, NEC Research Institute, Princeton, NJ Charles W. Stirk, Optoelectronic Data Systems, Inc., Boulder, CO Pearl Wang, Dept. of CS, George Mason University, USA Les Valiant, Div. of Applied Science, Harvard University, Cambridge, MA Albert Zomaya, Dept. of EAEE, U. of Western Australia, Western Australia SESSION CHAIRS ============== P. Dowd, State University of New York at Buffalo E. E. E. Frietman, Delft University of Technology, The Netherlands R. Kostuk, University of Arizona at Tucson A. Krishnamoorthy, AT&T Bell Laboratories S. Levitan, University of Pittsburgh Y. Li, NEC Research Institut A. Louri, University of Arizona at Tucson P. Wang, George Mason University PANEL MODERATORS ================ E. E. E. Frietman, Delft University of Technology, The Netherlands Y. Li, NEC Research Institute INVITED SPEAKERS ================ Michael Flynn, Stanford University G. Fox, Northeast Parallel Architectures Center at Syracus University S. L. Johnsson, University of Houston H. S. Hinton, University of Colorado at Boulder Alan Huang, Terabit Corp. H. T. Kung, Harvard University D. Miller, AT&T Bell Labs. B. Smith, Tera Computers Corp. ======================================================================== \end{verbatim} \newpage \begin{verbatim} _____________________________________________________________________ MPPOI '95 PROGRAM SCHEDULE _____________________________________________________________________ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ***** INVITED TALKS: 40 Minutes. REGULAR TALKS: 20 Minutes ***** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ======================================== SUNDAY, OCTOBER 22, 1995 ======================================== 6:00 PM - 7:30 PM REGISTRATION ======================================== Monday, October 23, 1995 ======================================== 7:00 AM - 8:00 AM CONTINENTAL BREAKFAST ________________________________________ 7:00 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:00 AM - 8:20 AM OPENING REMARKS Eugen Schenfeld, NEC Research Institute 8:20 AM - 10:00 AM Session I Chair: R. Kostuk, University of Arizona at Tucson Hybrid SEED - Massively Parallel Optical Interconnections for Silicon ICs D. Miller, AT&T Bell Labs. (INVITED) Design Issues for Through-Wafer Optoelectronic Multicomputer Interconnects P. May, N. M. Jokerst, D. S. Wills, S. Wilkinson, M. Lee, O. Vendier, S. Bond, Z. Hou, G. Dagnall, M. A. Brooke, A. Brown, Georgia Institute of Technology Design of a Terabit Free-Space Photonic Backplane for Parallel Computing T. H. Szymanski, and H. S. Hinton, McGill University and University of Colorado Optical Interconnection Network for Massively Parallel Processors Using Beam-Steering Vertical Cavity Surface-Emitting Lasers L. Fan, and M. C. Wu, University of California at Los Angeles; H. C. Lee. and P. Grodzinski, Motorola Inc. ________________________________________ 10:00 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 1:00 PM PARALLEL SESSIONS: II AND III _________________________________________ 10:30 AM - 1:00 PM Session II Chair: A. Krishnamoorthy, AT&T Bell Laboratories The Role of Representation in Optimizing a Computer Architecture Michael Flynn, Stanford University (INVITED) An Evaluation of Communication Protocols for Star-Coupled Multidimensional WDM Networks for Multiprocessors K. R. Desai, and K. Ghose, State University of New York at Binghamton Small Depth Beam-Steered Optical Interconnect M. Murdocca, H. R. Nahata, and Y. Zhou, Rutgers University Optical Fiber Interconnection System for Massively Parallel Processor Arrays Y.-M. Zhang, X.-Q. He, G. Zhou, W.-Y. Liu, Y. Wang, Z.-P. Yin, and H.-Y. Wang, Tianjin University, P. R. of China A Case Study for the Implementation of a Stochastic Bit Stream Neuron; The Choice Between Electrical and Optical Interconnects M. A. Hands, W. Peiffer, H. Thienpont, A. Kirk, Vrije University, Belgium; T. J. Hall, King's College, University of London, UK Characterization of Massively Parallel Smart Pixels Systems for The Example of a Binary Associative Memory D. Fey, Friedrich-Schiller University, Germany ________________________________________ 10:30 AM - 1:00PM Session III Chair: A. Louri, University of Arizona at Tucson The Challenges Involved in the Design of a 100 Gb/s Internet Alan Huang, Terabit Corp. (INVITED) Fault-tolerance in Optically Implemented Multiprocessor Networks P. Lalwaney, and I. Koren, University of Massachusetts at Amherst A Speed Cache Coherence Protocol for an Optical Multi-Access Interconnect Architecture T. M. Pinkston, and J. Ha, University of Southern California A Reconfigurable Optical Bus Structure for Shared Memory Multiprocessors With Improved Performance S. Ray, and H. Jiang, University of Nebraska-Lincoln n-Dimensional Processor Arrays with Optical dBuses G. Liu, and K. Y. Lee, University of Denver; H. F. Jordan, University of Colorado at Boulder The Difficulty of Finding Good Embeddings of Program Graphs onto the OPAM Architecture B. Ramamurthy, and M. Krishnamoorthy, Rensselaer Polytechnic Institute ________________________________________ 1:00 PM - 2:30 PM CONFERENCE LUNCH (PROVIDED) ________________________________________ 2:30 PM - 4:10 PM Session IV Chair: E. E. E. Frietman, Delft University of Technology, The Netherlands Intelligent Optical Backplanes H. S. Hinton, University of Colorado at Boulder (INVITED) Connection Cube and Interleaved Optical Backplane for a Multiprocessor Data Bus R. K. Kostuk, T. J. Kim, D. Ramsey, T.-H. Oh, and R. Boye University of Arizona at Tucson An Efficient 3-D Optical Implementation of Binary de Bruijn Networks with Applications to Massively Parallel Computing A. Louri, and H. Sung, University of Arizona at Tucson Performance Evaluation of 3D Optoelectronic Computer Architectures on FFT and Sorting Benchmarks G. A. Betzos, and P. A. Mitkas, Colorado State University ________________________________________ 4:10 PM - 4:30 PM AFTERNOON BREAK ________________________________________ 4:30 PM - 6:30 PM CONFERENCE PANEL I OPTICS FOR INTERCONNECTION: INDUSTRY'S INTERESTS and RESPONSIBILITIES MODERATOR: Y. Li, NEC Research Institute PANELISTS: R. Chen, University of Texas at Austin; N. Dutta, AT&T Bell Labs; N. Henmi, NEC Corp.; Y. S. Liu, General Electric; B. Pecor, Cray Research; J. Rowlette, AMP Corp.; B. Smith, Tera Computers Corp. ________________________________________ 7.00 PM - 8:30 PM ACQUAINTANCE RECEPTION Meet some of the MPPOI participants. Food and small talk opportunity provided. ======================================== TUESDAY, OCTOBER 24, 1995 ======================================== 7:00 AM - 8:00 AM CONTINENTAL BREAKFAST ________________________________________ 7:00 AM - 11:30 AM CONFERENCE REGISTRATION ________________________________________ 8:00 AM - 10:00 AM Session V Chair: S. Levitan, University of Pittsburgh Flow-Controlled ATM Switches for Available Bit Rate Services H. T. Kung, Harvard University (INVITED) Construction of Demonstration Parallel Optical Processors based on CMOS/InGaAs Smart Pixel Technology A. Walker, M. P. Y. Desmulliez, F. A. P. Tooley, D. T. Neilson, J. A. B. Dines, D. A. Baillie, S. M. Prince, L. C. Wilkinson, M. R. Taghizadeh, P. Blair, J. F. Snowdon, and B. S. Wherrett, Heriot-Watt University, Scotland; C. Stanley, and F. Pottier, University of Glasgow, Scotland; I. Underwood, and D. G. Vass, University of Edinburgh, Scotland; W. Sibbett, and M. H. Dunn, University of St.-Andrews, Scotland. General Purpose Bi-Directional Optical Backplane Bus C. Zhao, S. Natarajan, and R. T. Chen, University of Texas, at Austin Efficient Communication Scheme For Distributed Parallel Processor Systems P. Kohler, and A. Gunzinger, Swiss Federal Institute of Technology, Switzerland What Limits Capacity and Connectivity in Optical Interconnects Y. Li, NEC Research Institute ________________________________________ 10:00 AM - 10:30 AM MID-MORNING BREAK ________________________________________ ________________________________________ 10:30 AM - 12:30 PM Session VI Chair: P. Dowd, State University of New York at Buffalo Data Partitioning for Load-Balance and Communication Bandwidth Preservation S. L. Johnsson, University of Houston (INVITED) Embedding Rings and Meshes in Partitioned Optical Passive Stars Networks G. Gravenstreter, and R. G. Melhem, University of Pittsburgh Optical Thyristor Based Subsystems for Digital Parallel Processing: Demonstrators and Future Perspectives H. Thienpont, A. Kirk, and I. Veretennicoff, Vrije University, Belgium; P. Heremans, B. Knupfer, and G. Borghs, IMEC Corp., Belgium; M. Kuijk, and R. Vounckx, rije University, Belgium Computer-Aided Design of Free-Space Optoelectronic Interconnection Systems S. P. Levitan, P. J. Marchand, M. Rempel, D. M. Chiarulli, and F. B. McCormick, University of Pittsburgh and University of California at San Diego Optical Design of a Fault Tolerant Self-Routing Switch for Massively Parallel Processing Networks M. Guizani, M. A. Memon, and S. Ghanta, King Fahd University, Saudi Arabia ________________________________________ 12:30 PM - 1:30 PM LUNCH (ON YOUR OWN) ________________________________________ 1:30 PM - 3:50 PM PARALLEL SESSIONS: VII and VIII ________________________________________ 1:30 PM - 3:50 PM Session VII Chair: P. Wang, George Mason University Interconnection Networks for Shared Memory Parallel Computers B. Smith, Tera Computers Corp. (INVITED) A Comparative Study of One-to-Many WDM Lightwave Interconnection Networks for Multiprocessors H. Bourdin, and A. Ferreira, CNRS - LIP ENS Lyon, France; K. Marcus, ARTEMIS IMAG, Grenoble, France Planar Optical Interconnections for 100Gb/s Packet Address Detection S. H. Song and E.-H. Lee, Electronics & Telecommunications Research Institute, Taejon, South Korea A Pipelined Self-Routing Optical Multichannel Time Slot Permutation Network R. Kannan, H. F. Jordan, K. Y. Lee, and C. Reed, University of Denver; University of Colorado at Boulder; and The Institute for Defense Analysis Optical Interconnect Design for a Manufacturable Multicomputer R. R. Krchnavek, R. D. Chamberlain, T. Barry, V. Malhotra, and Z. Dittia, Washington University at St. Louis, Missouri Hypercube Interconnection in TWDM Optical Passive Star Networks S.-K. Lee, A. D. Oh, and H.-A. Choi, George Washington University ________________________________________ 1:30 PM - 3:50 PM Session VIII Chair: Y. Li, NEC Research Institut >From Today's Desktop Gigaflop to Tomorrow's Central Petaflop; >From Grand Challenges to the Information Age; The Applications Driving Parallel Computing and Their Architecture Implications G. Fox, Northeast Parallel Architectures Center at Syracus University (INVITED) A Fiber-Optic Interconnection Concept for Scalable Massively Parallel Computing M. Jonsson, K. Nilsson, and B. Svensson, Halmstad University; and Chalmers University of Technology, Goteborg, Sweden All-Optical Interconnects for Massively Parallel Processing C. S. Ih, R. Tian, X. Xia, J. Chao, and Y. Wang, University of Delaware Predictive Control of Opto-Electronic Reconfigurable Interconnection Networks Using Neural Networks M. F. Sakr, S. P. Levitan, C. L. Giles, B. C. Horne, M. Maggini, and D. M. Chiarulli, University of Pittsburgh; NEC Research Institute; and Firenze University, Italy The Simultaneous Optical Multiprocessor Exchange Bus J. Kulick, W. E. Cohen, C. Katsinis, E. Wells, A. Thomsen, M. Abushagur, R. K. Gaede, R. Lindquist, G. Nordin, and D. Shen; University of Alabama in Huntsville On Some Architectural Issues of Optical Hierarchical Ring Networks for Shared-Memory Multiprocessors H. Jiang, C. Lam, and V. C. Hamacher, University of Nebraska-Lincoln; and Queen's University, Kingston, Canada ________________________________________ 3:50 PM - 4:15 PM AFTERNOON BREAK ________________________________________ ________________________________________ 4:15 PM - 6:15 PM CONFERENCE PANEL II OPTO-ELECTRONIC PROCESSING & NETWORKING IN MASSIVELY PARALLEL PROCESSING SYSTEMS MODERATOR: E. E. E. Frietman, Delft University of Technology, The Netherlands PANELISTS: C. Jesshope, University of Surrey, Surrey, UK; H. F. Jordan, University of Colorado at Boulder; G. D. Khoe, Eindhoven University of Technology, Eindhoven, The Netherlands; A. V. Krishnamoorthy, AT&T Bell Labs.; I. Koren, University of Massachusetts at Amherst; A. McAulay, Lehigh University; I. MacDonald, Telecommunications Research Laboratories, Edmonton, Canada; M. Murdocca, Rutgers University; A. B. Ruighaver, Melbourne University, Australia; J. Sauer, University of Colorado at Boulder; H. Thienpont, Vrije Universiteit, Belgium; A. Walker, Heriot-Watt University, Edinburgh, Scotland; ________________________________________ 6:15 PM - 6:30 PM CLOSING REMARKS: ANNOUNCING MPPOI '96 AND FUTURE MEETING PLANS Eugen Schenfeld NEC Research Institute ________________________________________ 6:30 PM - 8:00 PM CONFERENCE DINNER (PROVIDED) ________________________________________ ============================================================================== \end{verbatim} \newpage \begin{verbatim} Registration Form MPPOI'95 Menger Hotel San Antonio, Texas October 23-24, 1995 TO REGISTER, MAIL OR FAX THIS FORM TO: MPPOI registration, IEEE Computer Society, 1730 Massachusetts Av, N.W., Washington DC 20036-1992, USA. Fax: +USA-202-728-0884 For information, call +USA-202-371-1013 - Sorry, no phone registration. Name:---------------------------------------------------------------------- Last First MI Company:------------------------------------------------------------------- Address:------------------------------------------------------------------- City/State/Zip/Country:---------------------------------------------------- Daytime phone:----------------------- Fax number--------------------------- Company:------------------------------------------------------------------- E-mail address:------------------------------------------------------------ IEEE/ACM/OSA/SPIE Member Number: ------------------ Do you have any special needs: -------------------------------------------- --------------------------------------------------------------------------- Do not include my mailing address on: -- Non-society mailing lists -- Meeting Attendee lists Please circle the appropriate registration fee: Advance (before October 2, 1995) Late(before October 16, 1995)/on site. Member $300 Member $360 Non-member $375 Non-member $450 Full-time student $150 Full-time student $180 Total enclosed:$ -------------------------------- Please make all checks payable to: IEEE Computer Society. All checks must be in US dollars drawn on US banks. Credit card charges will appear on statement as "IEEE Computer Society Registration". Written requests for refunds must be received by IEEE office before October 2, 1995. Refunds are subject to a $50 processing fees. Method of payment accepted (payment must accompany form): -- Personal check -- Company check -- Traveler's check -- American Express -- Master Card -- VISA -- Dinner's club -- Government purchase order (original) Credit card number: -------------------------- Expiration date: ------------ Cardholder name : -------------------------- Signature : -------------------------- Non-student registration fees include conference attendance, proceedings, continental breakfast, refreshment at breaks, conference reception, one conference lunch and one conference dinner. Student registration fees ***DO NOT*** include the lunch and ***DO NOT*** include the dinner. =========================================================================== \end{verbatim} \newpage \begin{verbatim} ______________________________________________________________________ MPPOI'95 HOTEL RESERVATION The Menger Hotel San Antonio, Texas ______________________________________________________________________ PLEASE MAKE RESERVATIONS WITH THE MENGER HOTEL AS SOON AS POSSIBLE TO GUARANTEE THE $90 RATE (HOTEL PHONE AND FAX NUMBERS ARE GIVEN AT BELLOW). * The special MPPOI'95 group rate of US $90.00 (single or double) is available from October 22 through October 25, 1995. All rates are subject to additional local and state taxes. These rates will be available for reservations made BEFORE September 22, 1995. Please note that the period Sep. to Nov. is the high session in San Antonio and hotels are usually booked in advance. We urge you to make early reservations as soon as possible. If you wish to stay over a Sat. night (Oct. 21st), the hotel will TRY its best to accommodate you with the same rate. * The MENGER HOTEL CONTACT POINTS: Phone: 1-800-345-9285 (for USA, or Canada) Phone: +USA-210-223-4361 (other countries); Fax: +USA-210-228-0022 * ALTERNATIVE LIST OF HOTELS (RATES AND RANK from AAA Tour Book): IN CASE THE MENGER HOTEL IS FULL, here is a list of other nearby hotels (all within walking distance of the Menger, in the downtown area of San Antonio). These hotels have no arrangement with MPPOI and therefore you should not identify yourself as a member of a group or conference. The arrangement with these hotels is on a "one to one" basis, as with any other business traveler. An early reservation is suggested. Also, it is always a good idea to look for "specials" (i.e., advance paid rates, weekend specials, AAA rates, etc.). Also please note that from the USA you may call the 800 directory (1-800-555-1212) and ask for the 800 number of the hotel chain (such hotels are marked with a '#' mark bellow), rates and ranking taken from AAA Tour Book 1994: AAA Typical Phone Fax Rank Rate ($) (+USA) (+USA) * St. Anthony Hotel 4 106-130 (210)227-4392 none listed * Emily Morgan 3 85 (210)225-8486 none listed * Crocket Hotel 3 75-105 (210)225-6500 none listed # Hyatt Regency 4 119-170 (210)222-1234 (210)227-4925 * La Mansion del Rio 4 135-220 (210)225-2581 (210)226-1365 # Holiday Inn Riverwalk 3 95-119 (210)224-2500 (210)223-1302 # Hilton Palacio del Rio 4 154-196 (210)222-1400 (210)270-0761 * The Fairmounth Hotel 4 145-275 (210)224-8800 (210)224-2767 # Marriott Riverwalk 4 135-150 (210)224-4555 (210)224-2754 # La Quinta Motor Inn 3 83-90 (210)222-9181 (210)228-9816 # Marriott Rivercenter 4 160 (210)223-1000 (210)223-6239 ________________________________________________________________________________ \end{verbatim} \end{document} Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Sat Oct 28 20:37:39 1995 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id UAA03388; Sat, 28 Oct 1995 20:37:38 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id UAA25026; Sat, 28 Oct 1995 20:35:34 -0400 Received: from zingo by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id UAA25007; Sat, 28 Oct 1995 20:35:30 -0400 Received: by zingo (940816.SGI.8.6.9/YDL1.4-910307.16) id UAA20117(zingo); Sat, 28 Oct 1995 20:29:21 -0400 Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id TAA25466(iris49); Sat, 28 Oct 1995 19:58:30 -0400 Date: Sat, 28 Oct 1995 19:58:30 -0400 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199510282358.TAA25466@iris49> To: mppoi@research.nj.nec.com Subject: JPDC Special Issue - CFP CALL FOR PAPERS Special Issue of the Journal of Parallel and Distributed Computing (JPDC) on Parallel Computing with Optical Interconnections Papers are solicited for a special issue of the Journal of Parallel and Distributed Computing (JPDC) to be published in December 1996. This special issue will cover different aspects of applying optical technologies to interconnections. The topics of interest include but are not limited to the following: -Optical Computational Models -Optical Parallel Architectures -Optical Interconnection Networks -Control and Routing in Optical Networks -Packaging and Layout of Optical Interconnections -Electro-optical, and opto-electronic components -Design and Mapping of Parallel/Optical Algorithms -Relative Merits of Optical Technologies and Devices -Cost/performance Studies in using Optical Interconnects -Experimental/Commercial Optical Systems and Applications Authors should follow the JPDC manuscript format as described in the Information for Authors at the end of each issue of JPDC. Five copies of complete double-spaced manuscript (maximum 35 doubled-spaced pages) should be sent to either one of the two co-guest editors by December 1, 1995. Authors will be notified of the final publication decision by May 1, 1996. Only original, unpublished work will be considered; manuscripts resembling any previously published work in a journal are unacceptable. Co-Guest Editors Prof. Mary M. Eshaghian Dr. Eugen Schenfeld Dept. of Computer & Information Sci. NEC Research Institute New Jersey Institute of Technology 4 Independence Way Newark, NJ 07102 USA Princeton, NJ 08540 USA Tel: (201)596-3244 Tel: (609)951-2742 Fax: (201)596-5777 Fax: 609 951 2482 Email: mary@cis.njit.edu Email: eugen@research.nj.nec.com ================================================================================= Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Thu Jan 25 23:13:28 1996 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id XAA14831; Thu, 25 Jan 1996 23:13:28 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id XAA05871; Thu, 25 Jan 1996 23:13:14 -0500 Received: from zingo by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id XAA05859; Thu, 25 Jan 1996 23:13:09 -0500 Received: by zingo (940816.SGI.8.6.9/YDL1.4-910307.16) id XAA08969(zingo); Thu, 25 Jan 1996 23:08:04 -0500 Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id VAA22135(iris49); Thu, 25 Jan 1996 21:57:58 -0500 Date: Thu, 25 Jan 1996 21:57:58 -0500 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199601260257.VAA22135@iris49> To: mppoi@research.nj.nec.com Subject: MPPOI'96 CFP Call for Papers The Third International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS (MPPOI'96) The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 Sponsored by IEEE CS TCCA (Technical Committee on Computer Architecture) In Cooperation with ACM Special Interest Group on Architecture (SIGARCH) The IEEE Lasers and Electro-optics Society (LEOS) The Optical Society of America (OSA) The International Society for Optical Engineering (SPIE) The third annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'96) will be held on Oct. 27-29, 1996 in the Westin Maui Hotel, Maui, Hawaii. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. The topics of interest include but are not limited to the following: - Optical interconnections, Reconfigurable Architectures, - Embedding and mapping of applications and algorithms, - Packaging and layout of optical interconnections, - Electro-optical, and opto-electronic components, - Relative merits of optical technologies (free-space, fibers, wave guides), - Passive optical elements, Algorithms and applications exploiting, - Data distribution and partitioning, - Characterizing parallel applications, - Cost/performance studies. Authors are invited to submit manuscripts which demonstrate original unpublished research in areas of computer architecture and optical interconnections. Papers submitted must not be under considerations for another conference. SUBMITTING PAPERS ================= Authors are invited to submit manuscripts which demonstrate original unpublished research in the above areas. Papers submitted must not be under considerations for another conference. Send eight (8) copies of the complete paper (not to exceed 15 single spaced, single sided pages) to: Dr. Eugen Schenfeld, MPPOI'96 Conference, NEC Research Institute, 4 Independence Way, Princeton, NJ 08540, USA, (voice) (609)951-2742, (fax) (609)951-2482, email: MPPOI@RESEARCH.NJ.NEC.COM. Manuscripts must be received by May 1, 1996 Notification of review decisions will be mailed by July 15, 1996. Camera ready papers are due August 30, 1996. Fax or electronic submissions WILL NOT BE CONSIDERED. The proceedings will be published by the IEEE CS Press and will be available at the conference. CONFERENCE CHAIR ================ Rami Melhem, University of Pittsburgh PROGRAM CO-CHAIRS ================= Allan Gottlieb, NYU; Yao Li, NEC Research Institute PUBLICITY and PUBLICATION CHAIR =============================== Eugen Schenfeld, NEC Research Institute PROGRAM COMMITTEE ================= T. Ae, Hiroshima University (Japan) D. Agrawal, North Carolina State University (USA) K. Batcher, University of Kent (USA) J. Bristow, Honeywell (USA) T. Casavant, University of Iowa, Iowa City (USA) P. Chavel, Institut d'Optique (France) R. Chen, University of Texas (USA) A. Chien, UIUC (USA) T. Cloonan, AT&T Bell Labs (USA) S. Dickey, Pace University (USA) N. Dutta, AT&T Bell Labs (USA) M. Eshaghian, NJIT, Newark (USA) M. Flynn, Stanford University (USA) L. Giles, NEC Research Institute (USA) C. Georgiou, IBM T. J. Watson Research Center (USA) K. Ghose, SUNY at Binghamton (USA) J. Goodman, Stanford University (USA) J. Goodman, University of Wisconsin (USA) M. Goodman, Bellcore (USA) J. Grote, USAF Wright Patterson (USA) A. Gupta, Stanford University (USA) S. Hinton, University of Colorado (USA) F. Hsu, Fordham University (USA) Y. Ichioka, Osaka University (Japan) H. Inoue, Hitachi (Japan) H. Johnsson, University of Houston, (USA) N. Jokerst, Georgia Tech., (USA) H. Jordan, University of Colorado (USA) K. Kasahara, NEC Corp. (Japan) F. Kiamilev, University of N. Carolina, Charlotte (USA) T. Knight, MIT (USA) A. Krishnamoorthy, AT&T Bell Labs (USA) S. Lee, UCSD (USA) K. Li, Princeton University (USA) A. Lohmann University of Erlangen-Nurnberg (Germany) A. Louri, University of Arizona (USA) Y.-D. Lyuu, National Taiwan University (Taiwan) T. Maruyama, NEC Corp. (Japan) M. Murdocca, Rutgers University (USA) J. Neff, University of Colorado (USA) L. Ni, Michigan State University (USA) A. Nowatzyk, Sun Microsystems (USA) Y. Patt, University of Michigan (USA) W. Paul, Universitaet des Saarlandes-Saarbruecken (Germany) T. Pinkston, USC (USA) C. Qiao, SUNY at Buffalo (USA) J. Reif, Duke university (USA) J. Rowlette, AMP (USA) H. J. Siegel, Purdue University (USA) S. Sahni, University of Florida (USA) A. Smith, UC Berkeley (USA) M. Snir, IBM T. J. Watson Research Center (USA) G. Sohi, University of Wisconsin (USA) Q. Song, Syracuse University (USA) T. Sterling, USRA CESDIS (USA) B. Tarjan, Princeton University (USA) S. Tomita, Kyoto University, Kyoto (Japan) F. Tooley, McGill University (Canada) L. Valiant, Harvard University (USA) A. Walker, Heriot-Watt University (UK) P. Wang, George Masson University (USA) S. Yokoyama, Hiroshima University (Japan) Y. Zhang, Tianjin University (China) =============== Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Tue Mar 12 00:03:01 1996 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id AAA28139; Tue, 12 Mar 1996 00:03:00 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id AAA24485; Tue, 12 Mar 1996 00:04:42 -0500 Received: from zingo by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id AAA24478; Tue, 12 Mar 1996 00:04:37 -0500 Received: by zingo (940816.SGI.8.6.9/YDL1.4-910307.16) id AAA07468(zingo); Tue, 12 Mar 1996 00:03:38 -0500 Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id WAA14014(iris49); Mon, 11 Mar 1996 22:57:40 -0500 Date: Mon, 11 Mar 1996 22:57:40 -0500 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199603120357.WAA14014@iris49> To: mppoi@research.nj.nec.com Subject: MPPOI'96 CFP - May 1, '96 Call for Papers The Third International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS (MPPOI'96) The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 Sponsored by IEEE CS TCCA (Technical Committee on Computer Architecture) In Cooperation with ACM Special Interest Group on Architecture (SIGARCH) The IEEE Lasers and Electro-optics Society (LEOS) The Optical Society of America (OSA) The International Society for Optical Engineering (SPIE) The third annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'96) will be held on Oct. 27-29, 1996 in the Westin Maui Hotel, Maui, Hawaii. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. The topics of interest include but are not limited to the following: - Optical interconnections, Reconfigurable Architectures, - Embedding and mapping of applications and algorithms, - Packaging and layout of optical interconnections, - Electro-optical, and opto-electronic components, - Relative merits of optical technologies (free-space, fibers, wave guides), - Passive optical elements, Algorithms and applications exploiting, - Data distribution and partitioning, - Characterizing parallel applications, - Cost/performance studies. Authors are invited to submit manuscripts which demonstrate original unpublished research in areas of computer architecture and optical interconnections. Papers submitted must not be under considerations for another conference. SUBMITTING PAPERS ================= Authors are invited to submit manuscripts which demonstrate original unpublished research in the above areas. Papers submitted must not be under considerations for another conference. Send eight (8) copies of the complete paper (not to exceed 15 single spaced, single sided pages) to: Dr. Eugen Schenfeld, MPPOI'96 Conference, NEC Research Institute, 4 Independence Way, Princeton, NJ 08540, USA, (voice) (609)951-2742, (fax) (609)951-2482, email: MPPOI@RESEARCH.NJ.NEC.COM. =========================================== MANUSCRIPTS MUST BE RECEIVED BY MAY 1, 1996 =========================================== Notification of review decisions will be mailed by July 15, 1996. Camera ready papers are due August 30, 1996. Fax or electronic submissions WILL NOT BE CONSIDERED. The proceedings will be published by the IEEE CS Press and will be available at the conference. CONFERENCE CHAIR ================ Rami Melhem, University of Pittsburgh PROGRAM CO-CHAIRS ================= Allan Gottlieb, NYU; Yao Li, NEC Research Institute PUBLICITY and PUBLICATION CHAIR =============================== Eugen Schenfeld, NEC Research Institute PROGRAM COMMITTEE ================= T. Ae, Hiroshima University (Japan) D. Agrawal, North Carolina State University (USA) K. Batcher, University of Kent (USA) J. Bristow, Honeywell (USA) T. Casavant, University of Iowa, Iowa City (USA) P. Chavel, Institut d'Optique (France) R. Chen, University of Texas (USA) A. Chien, UIUC (USA) T. Cloonan, AT&T Bell Labs (USA) S. Dickey, Pace University (USA) N. Dutta, AT&T Bell Labs (USA) M. Eshaghian, NJIT, Newark (USA) M. Flynn, Stanford University (USA) L. Giles, NEC Research Institute (USA) C. Georgiou, IBM T. J. Watson Research Center (USA) K. Ghose, SUNY at Binghamton (USA) J. Goodman, Stanford University (USA) J. Goodman, University of Wisconsin (USA) M. Goodman, Bellcore (USA) J. Grote, USAF Wright Patterson (USA) A. Gupta, Stanford University (USA) S. Hinton, University of Colorado (USA) F. Hsu, Fordham University (USA) Y. Ichioka, Osaka University (Japan) H. Inoue, Hitachi (Japan) K. Jenkins, University of Southern California (USA) L. Johnsson, University of Houston, (USA) N. Jokerst, Georgia Tech., (USA) H. Jordan, University of Colorado (USA) K. Kasahara, NEC Corp. (Japan) F. Kiamilev, University of N. Carolina, Charlotte (USA) T. Knight, MIT (USA) R. Kostuk, University of Arizona at Touson (USA) A. Krishnamoorthy, AT&T Bell Labs (USA) S. Lee, UCSD (USA) K. Li, Princeton University (USA) A. Lohmann University of Erlangen-Nurnberg (Germany) A. Louri, University of Arizona (USA) Y.-D. Lyuu, National Taiwan University (Taiwan) T. Maruyama, NEC Corp. (Japan) M. Murdocca, Rutgers University (USA) J. Neff, University of Colorado (USA) L. Ni, Michigan State University (USA) A. Nowatzyk, Sun Microsystems (USA) Y. Patt, University of Michigan (USA) W. Paul, Universitaet des Saarlandes-Saarbruecken (Germany) B. Pecor, Cray (USA) T. Pinkston, USC (USA) C. Qiao, SUNY at Buffalo (USA) J. Reif, Duke university (USA) J. Rowlette, AMP (USA) H. J. Siegel, Purdue University (USA) S. Sahni, University of Florida (USA) A. Smith, UC Berkeley (USA) M. Snir, IBM T. J. Watson Research Center (USA) G. Sohi, University of Wisconsin (USA) Q. Song, Syracuse University (USA) T. Sterling, USRA CESDIS (USA) B. Tarjan, Princeton University (USA) S. Tomita, Kyoto University, Kyoto (Japan) F. Tooley, McGill University (Canada) L. Valiant, Harvard University (USA) O. Wada, Fujitsu Corp. (Japan) A. Walker, Heriot-Watt University (UK) P. Wang, George Masson University (USA) S. Yokoyama, Hiroshima University (Japan) Y. Zhang, Tianjin University (China) ============= Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Mon Mar 18 20:32:48 1996 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id UAA19215; Mon, 18 Mar 1996 20:32:48 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id UAA24634; Mon, 18 Mar 1996 20:34:36 -0500 Received: from zingo by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id UAA24626; Mon, 18 Mar 1996 20:34:29 -0500 Received: by zingo (940816.SGI.8.6.9/YDL1.4-910307.16) id UAA21237(zingo); Mon, 18 Mar 1996 20:33:09 -0500 Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id TAA05488(iris49); Mon, 18 Mar 1996 19:17:08 -0500 Date: Mon, 18 Mar 1996 19:17:08 -0500 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199603190017.TAA05488@iris49> To: optics@research.nj.nec.com Subject: Research Position Available Research Position at the NEC Research Institute, Princeton NJ ============================================================= The NEC Research Institute in Princeton, NJ has an opening for a Post-Doc position, initially for a one year term, in the area of high-speed Opto-Electronic circuits and systems. We are looking for a candidate who will contribute to the design, implementation and experiments of a free-space interconnection network for parallel processing architecture. Candidates should have knowledge of related topics, including the setup of experiments and measuring instruments, and the design of high speed electronic circuit for opto-electronic communication. The successful candidate should have practical lab. experience. A Ph.D. in EE is needed. NEC is an equal opportunity employer. Interested applicants should send (by fax, email or regular mail) a resumes, copies of few of their recent papers, and the name, phone number and email address of 3 people who can recommend them to: Dr. Eugen Schenfeld NEC Research Institute 4 Independence Way Princeton, NJ 08540 Phone: 609-951-2742 FAX: 609-951-2482 email: eugen@research.nj.nec.com Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Sun Apr 14 18:23:56 1996 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id SAA09171; Sun, 14 Apr 1996 18:23:56 -0400 Received: from localhost (root@localhost) by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id SAA21000; Sun, 14 Apr 1996 18:25:25 -0400 Received: from zingo.nj.nec.com (zingo.nj.nec.com [138.15.150.106]) by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id SAA20981; Sun, 14 Apr 1996 18:25:20 -0400 Received: from iris49 (iris49 [138.15.150.129]) by zingo.nj.nec.com (8.7.4/8.7.3) with SMTP id SAA03806; Sun, 14 Apr 1996 18:08:47 -0400 (EDT) Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id RAA03839(iris49); Sun, 14 Apr 1996 17:12:19 -0400 Date: Sun, 14 Apr 1996 17:12:19 -0400 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199604142112.RAA03839@iris49> To: mppoi@research.nj.nec.com Subject: CFP: MPPOI'96-Deadline 5/1/96 PLEASE NOTE: The deadline for submitting papers to MPPOI'96 is May 1st, 1996 =============================================================== Call for Papers The Third International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS (MPPOI'96) The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 Sponsored by IEEE CS TCCA (Technical Committee on Computer Architecture) In Cooperation with ACM Special Interest Group on Architecture (SIGARCH) The IEEE Lasers and Electro-optics Society (LEOS) The Optical Society of America (OSA) The International Society for Optical Engineering (SPIE) The third annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'96) will be held on Oct. 27-29, 1996 in the Westin Maui Hotel, Maui, Hawaii. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. The topics of interest include but are not limited to the following: - Optical interconnections, Reconfigurable Architectures, - Embedding and mapping of applications and algorithms, - Packaging and layout of optical interconnections, - Electro-optical, and opto-electronic components, - Relative merits of optical technologies (free-space, fibers, wave guides), - Passive optical elements, Algorithms and applications exploiting, - Data distribution and partitioning, - Characterizing parallel applications, - Cost/performance studies. Authors are invited to submit manuscripts which demonstrate original unpublished research in areas of computer architecture and optical interconnections. Papers submitted must not be under considerations for another conference. SUBMITTING PAPERS ================= Authors are invited to submit manuscripts which demonstrate original unpublished research in the above areas. Papers submitted must not be under considerations for another conference. Send eight (8) copies of the complete paper (not to exceed 15 single spaced, single sided pages) to: Dr. Eugen Schenfeld, MPPOI'96 Conference, NEC Research Institute, 4 Independence Way, Princeton, NJ 08540, USA, (voice) (609)951-2742, (fax) (609)951-2482, email: MPPOI@RESEARCH.NJ.NEC.COM. Manuscripts must be received by May 1, 1996 Notification of review decisions will be mailed by July 15, 1996. Camera ready papers are due August 30, 1996. Fax or electronic submissions WILL NOT BE CONSIDERED. The proceedings will be published by the IEEE CS Press and will be available at the conference. CONFERENCE CHAIR ================ Rami Melhem, University of Pittsburgh PROGRAM CO-CHAIRS ================= Allan Gottlieb, NYU; Yao Li, NEC Research Institute PUBLICITY and PUBLICATION CHAIR =============================== Eugen Schenfeld, NEC Research Institute PROGRAM COMMITTEE ================= T. Ae, Hiroshima University (Japan) D. Agrawal, North Carolina State University (USA) K. Batcher, University of Kent (USA) J. Bristow, Honeywell (USA) T. Casavant, University of Iowa, Iowa City (USA) P. Chavel, Institut d'Optique (France) R. Chen, University of Texas (USA) A. Chien, UIUC (USA) T. Cloonan, AT&T Bell Labs (USA) S. Dickey, Pace University (USA) N. Dutta, AT&T Bell Labs (USA) M. Eshaghian, NJIT (USA) M. Flynn, Stanford University (USA) L. Giles, NEC Research Institute (USA) C. Georgiou, IBM T. J. Watson Research Center (USA) K. Ghose, SUNY at Binghamton (USA) J. Goodman, Stanford University (USA) J. Goodman, University of Wisconsin (USA) M. Goodman, Bellcore (USA) J. Grote, USAF Wright Patterson (USA) A. Gupta, Stanford University (USA) S. Hinton, University of Colorado (USA) F. Hsu, Fordham University (USA) Y. Ichioka, Osaka University (Japan) H. Inoue, Hitachi (Japan) K. Jenkins, University of Southern California (USA) L. Johnsson, University of Houston, (USA) N. Jokerst, Georgia Tech., (USA) H. Jordan, University of Colorado (USA) K. Kasahara, NEC Corp. (Japan) F. Kiamilev, University of N. Carolina, Charlotte (USA) T. Knight, MIT (USA) R. Kostuk, University of Arizona at Touson (USA) A. Krishnamoorthy, AT&T Bell Labs (USA) S. Lee, UCSD (USA) K. Li, Princeton University (USA) A. Lohmann University of Erlangen-Nurnberg (Germany) A. Louri, University of Arizona (USA) Y.-D. Lyuu, National Taiwan University (Taiwan) T. Maruyama, NEC Corp. (Japan) M. Murdocca, Rutgers University (USA) J. Neff, University of Colorado (USA) L. Ni, Michigan State University (USA) A. Nowatzyk, Sun Microsystems (USA) Y. Patt, University of Michigan (USA) W. Paul, Universitaet des Saarlandes-Saarbruecken (Germany) B. Pecor, Cray (USA) T. Pinkston, USC (USA) C. Qiao, SUNY at Buffalo (USA) J. Reif, Duke university (USA) J. Rowlette, AMP (USA) H. J. Siegel, Purdue University (USA) S. Sahni, University of Florida (USA) A. Smith, UC Berkeley (USA) M. Snir, IBM T. J. Watson Research Center (USA) G. Sohi, University of Wisconsin (USA) Q. Song, Syracuse University (USA) T. Sterling, USRA CESDIS (USA) B. Tarjan, Princeton University (USA) S. Tomita, Kyoto University (Japan) F. Tooley, McGill University (Canada) L. Valiant, Harvard University (USA) O. Wada, Fujitsu Corp. (Japan) A. Walker, Heriot-Watt University (UK) P. Wang, George Masson University (USA) S. Yokoyama, Hiroshima University (Japan) Y. Zhang, Tianjin University (China) Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Tue Aug 13 18:32:56 1996 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id SAA07399; Tue, 13 Aug 1996 18:32:56 -0400 Received: from localhost (root@localhost) by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id SAA22106; Tue, 13 Aug 1996 18:35:22 -0400 Received: from zingo.nj.nec.com (zingo.nj.nec.com [138.15.150.106]) by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id SAA22087; Tue, 13 Aug 1996 18:35:18 -0400 Received: from iris49 (iris49 [138.15.150.129]) by zingo.nj.nec.com (8.7.4/8.7.3) with SMTP id SAA00770; Tue, 13 Aug 1996 18:33:40 -0400 (EDT) Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id RAA02048(iris49); Tue, 13 Aug 1996 17:13:17 -0400 Date: Tue, 13 Aug 1996 17:13:17 -0400 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199608132113.RAA02048@iris49> To: mppoi@research.nj.nec.com Subject: MPPOI'96 Advance Program: Maui, Oct. 27-29, '96 \documentstyle[fullpage]{article} \begin{document} \begin{verbatim} ========================================================================== The Third International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS =========================================================================== The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 SPONSORED BY: IEEE Technical Committee on Computer Architecture (TCCA) IN COOPERATION WITH: ACM Special Interest Group on Architecture (SIGARCH) The International Society for Optical Engineering (SPIE) The IEEE Lasers and Electro-optics Society (LEOS) The Optical Society of America (OSA) ADDITIONAL SUPPORT PROVIDED BY: NSF - The National Science Foundation ______________________________________________________________________ PLEASE NOTE: =========== THIS IS A PRELIMINARY MAILING INTENDED FOR TRIP PLANNING. MORE DETAILED INFORMATION WILL BE AVAILABLE LATTER, TO INCLUDE INFORMATION ABOUT MAUI, GETTING THERE (AIRPORTS), ALTERNATIVE HOTEL RESERVATIONS, AND OTHER USEFUL INFORMATION. THE CURRENT DOCUMENT LISTS THE ADVANCED PROGRAM, REGISTRATION FORM, AND THE WESTIN MAUI HOTEL INFORMATION. FOR MORE INFORMATION PLEASE CONTACT: mppoi@research.nj.nec.com or fax to Dr. Eugen Schenfeld, +USA-609-951-2482 ----------------------------------------------------------------------- The third annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'96) will be held on Oct. 27-29, 1996 in the Westin Maui Hotel, Maui, Hawaii. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. The topics of interest include but are not limited to the following: - Optical interconnections, Reconfigurable Architectures, - Embedding and mapping of applications and algorithms, - Packaging and layout of optical interconnections, - Electro-optical, and opto-electronic components, - Relative merits of optical technologies (free-space, fibers, wave guides), - Passive optical elements, Algorithms and applications exploiting, - Data distribution and partitioning, - Characterizing parallel applications, - Cost/performance studies. CONFERENCE CHAIR ================ Rami Melhem, University of Pittsburgh PROGRAM CO-CHAIRS ================= Allan Gottlieb, NYU; Yao Li, NEC Research Institute PUBLICITY and PUBLICATION CHAIR =============================== Eugen Schenfeld, NEC Research Institute PROGRAM COMMITTEE ================= T. Ae, Hiroshima University (Japan) D. Agrawal, North Carolina State University (USA) K. Batcher, University of Kent (USA) J. Bristow, Honeywell (USA) T. Casavant, University of Iowa, Iowa City (USA) P. Chavel, Institut d'Optique (France) R. Chen, University of Texas (USA) A. Chien, UIUC (USA) T. Cloonan, AT&T Bell Labs (USA) S. Dickey, Pace University (USA) N. Dutta, AT&T Bell Labs (USA) M. Eshaghian, NJIT (USA) M. Flynn, Stanford University (USA) L. Giles, NEC Research Institute (USA) C. Georgiou, IBM T. J. Watson Research Center (USA) K. Ghose, SUNY at Binghamton (USA) J. Goodman, Stanford University (USA) J. Goodman, University of Wisconsin (USA) M. Goodman, Bellcore (USA) J. Grote, USAF Wright Patterson (USA) A. Gupta, Stanford University (USA) S. Hinton, University of Colorado (USA) F. Hsu, Fordham University (USA) Y. Ichioka, Osaka University (Japan) H. Inoue, Hitachi (Japan) K. Jenkins, University of Southern California (USA) L. Johnsson, University of Houston, (USA) N. Jokerst, Georgia Tech., (USA) H. Jordan, University of Colorado (USA) K. Kasahara, NEC Corp. (Japan) F. Kiamilev, University of N. Carolina, Charlotte (USA) T. Knight, MIT (USA) R. Kostuk, University of Arizona at Touson (USA) A. Krishnamoorthy, AT&T Bell Labs (USA) S. Lee, UCSD (USA) K. Li, Princeton University (USA) A. Lohmann University of Erlangen-Nurnberg (Germany) A. Louri, University of Arizona (USA) Y.-D. Lyuu, National Taiwan University (Taiwan) T. Maruyama, NEC Corp. (Japan) M. Murdocca, Rutgers University (USA) J. Neff, University of Colorado (USA) L. Ni, Michigan State University (USA) A. Nowatzyk, Sun Microsystems (USA) Y. Patt, University of Michigan (USA) W. Paul, Universitaet des Saarlandes-Saarbruecken (Germany) B. Pecor, Cray (USA) T. Pinkston, USC (USA) C. Qiao, SUNY at Buffalo (USA) J. Reif, Duke university (USA) J. Rowlette, AMP (USA) H. J. Siegel, Purdue University (USA) S. Sahni, University of Florida (USA) A. Smith, UC Berkeley (USA) M. Snir, IBM T. J. Watson Research Center (USA) G. Sohi, University of Wisconsin (USA) Q. Song, Syracuse University (USA) T. Sterling, USRA CESDIS (USA) B. Tarjan, Princeton University (USA) S. Tomita, Kyoto University (Japan) F. Tooley, McGill University (Canada) L. Valiant, Harvard University (USA) O. Wada, Fujitsu Corp. (Japan) A. Walker, Heriot-Watt University (UK) P. Wang, George Masson University (USA) S. Yokoyama, Hiroshima University (Japan) Y. Zhang, Tianjin University (China) STEERING COMMITTEE ================= J. Goodman, Stanford University L. Johnsson, University of Houston S. Lee, University of California at San Diego R. Melhem, University of Pittsburgh E. Schenfeld, NEC Research Institute (Chair) P. Wang, George Mason University ======================================================================== \end{verbatim} \newpage \begin{verbatim} CUSTOMS/PASSPORTS: It is suggested for those of other than US nationalities to check with a travel agent and with an US consulate the requirements for VISA and passports to enter the United States, as well as for US Customs regulations. ================================ ****** NSF TRAVEL SUPPORT ****** ================================ The National Science Foundation (NSF) is considering travel support for minority and female faculty members as well as for graduate students. This travel award is pending final approval by the NSF and would be available for qualified authors presenting papers at the MPPOI'95 conference. For details on the travel support and to obtain a Request Form please contact (email, fax, or phone) the Conference Chair at the above address. ======================================================================== MPPOI '96 ADVANCE PROGRAM ======================================================================== ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ***** INVITED TALKS: 40 Minutes. REGULAR TALKS: 20 Minutes ***** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ======================================== Saturday, October 26, 1996 ======================================== 8:00 PM - 9:30 PM REGISTRATION ======================================== Sunday, October 27, 1996 ======================================== 7:00 AM - 8:00 AM CONTINENTAL BREAKFAST ________________________________________ 7:00 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:00 AM - 8:15 AM OPENING REMARKS - WELCOME R. Melhem, University of Pittsburgh 8:15 AM - 8:30 AM TECHNICAL PROGRAM OVERVIEW A. Gottlieb, NYU and Yao Li, NEC Research Institute ________________________________________ 8:30 AM - 10:10 AM Session I - Comparative Studies for Optical Interconnects Chair: K. Kasahara, NEC Corp. Japan Optical Geometrical Transformations Used for Parallel Communication A. W. Lohmann, Erlangen University (INVITED) Towards an Optimal Foundation Architecture for Optoelectronic Computing H. M. Ozaktas, Bilkent University Fundamental Advantages of Free-space Optical Interconnects M. W. Haney, and M. P. Christensen, George Mason University A Comparative Study of Cost Effective Multiplexing Approaches in Optical Networks C. Qiao, and Y. Mei, SUNY at Buffalo ________________________________________ 10:10 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 12:10 PM Session II - Interconnection Networks and System Architectures Chair: T. M. Pinkston, University of Southern California Scalable Parallel Systems: Past, Present and Future (from an IBM perspective) M. Snir, IBM T. J. Watson Research Center (INVITED) Design of a Parallel Photonic FFT Processor R. G. Rozie, F. E. Kiamilev, University of North Carolina at Charlotte, and A. V. Krishnamoorthy, Lucent Technologies SIMPil: An OE Integrated SIMD Architecture for Focal Plane Processing Applications H. H. Cat, A. Gentile, J. C. Eble, M. Lee, O. Vendier, Y. J. Joo, D. S. Wills, M. Brooke, N. M. Jokerst, and A. S. Brown, Georgia Institute of Technology, and R. Leavitt, Army Research Laboratory Design of a 64-bit microprocessor core IC for hybrid CMOS-SEED technology F. E. Kiamilev, J. S. Lambirth, and R. G. Rozier, University of North Carolina at Charlotte, and A. V. Krishnamoorthy, Lucent Technologies ________________________________________ 12.10 PM - 2:00 PM LUNCH BREAK (ON YOUR OWN) ________________________________________ 2:00 PM - 3:40 PM Session III - WDM in MPP Systems Chair: P. Prucnal, Princeton University High-performance Parallel Processors based on Star-coupled WDM Optical Interconnects A. J. De Groot, R. J. Deri, R. E. Haigh, F. G. Patterson, and S. P. DiJaili, Lawrence Livermore National Laboratory Dynamic Alignment of Pulses in Bit-Parallel Wavelength Links Using Shepherd Pulse in Nonlinear Fibers for Massively Parallel Processing Computer Networks L. Bergman, and C. Yeh, California Institute of Technology Planar Diffraction Grating for Board-Level WDM Applications R. A. Livingston, and R. R. Krchnavek, Washington University Time-Deterministic WDM Star Network for Massively Parallel Computing in Radar Systems M. Jonsson, A. Ahlander, and B. Svensson, Halmstad University, M. Taveniku, and B. Svensson, Chalmers University of Technology, and M. Taveniku, Ericsson Microwave Systems AB The AMOEBA chip: an opto-electronic switch for multiprocessor networking using dense-WDM A. V. Krishnamoorthy, J. E. Ford, K. W. Goossen, J. A. Walker, S. P. Hui, J. E. Cunningham, W. Y. Jan, T. K. Woodward, M. C. Nuss, R. G. Rozier, and D. A. B. Miller, Lucent Technologies, and F. E. Kiamilev, University of North Carolina ________________________________________ 3:40 PM - 4:00 PM AFTERNOON BREAK ________________________________________ 4:00 PM - 5:40 PM CONFERENCE PANEL I - Intra-System Optical Interconnects: Performance, Cost, Functionality - Pick Any Two MODERATOR: A. G. Nowatzyk, Sun Microsystems PANELISTS: H. Davidson, Sun Microsystems, R. Newhall, Silicon Graphics, P. Prucnal, Princeton University, J. Sauer, University of Colorado at Boulder, M. Snir, IBM T. J. Watson Research Center ________________________________________ 6.00 PM - 7:30 PM GET ACQUAINTANCED RECEPTION Meet some of the MPPOI participants Food, booze, and small-talk opportunities provided ======================================== Monday, October 28, 1996 ======================================== 7:30 AM - 8:30 AM CONTINENTAL BREAKFAST ________________________________________ 7:30 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:30 AM - 10:10 AM Session IV - Scalable Interconnection Networks Chair: A. Nowatzyk, Sun Microsystems Exploiting Optical Interconnects to Eliminate Serial Bottlenecks J. Goodman, University of Wisconsin-Madison (INVITED) Scalable Network Architectures Using the Optical Transpose Interconnection System (OTIS) F. Zane, P. Marchand, R. Paturi, and S. Esener, University of California at San Diego A Scalable Recirculating Shuffle Network with Deflection Routing S. P. Monacos, California Institute of Technology, and A. A. Sawchuk, University of Southern California Improved embeddings in POPS networks through stack-graph models P. Berthome, Laboratoire LIP - EBS Lyon, and A. Ferreira, CNRS Carleton University ________________________________________ 10:10 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 12:10 PM Session V - Optical Networks: Architecture Issues Chair: T. H. Szymanski, McGill University Optically Interconnected Electronics - Challenges and Choices F. Tooley, McGill University (INVITED) Optoelectronic Stochastic Processor Array: Demonstration of Video Rate Simulated Annealing Noise Cleaning Operation P. Chavel, P. Lalanne, J.-C. Rodier, Institut d'Optique Orsay High Throughput Optical Algorithms for the FFT and sorting via Data Packing K. Bergman, P. Prucnal, C. Read, Princeton University, G. Burdge, University of Maryland, D. Carlson, N. Coletti, and C. Reed, Institute for Defense Analyses, H. Jordan, and D. Straub, University of Colorado at Boulder, R. Kannan, and K. Lee, University of Denver, and P. Merkey, USRA CESDIS Bit-Parallel Completely Connected Optoelectronic Switching Networks for Massively Parallel Processing: Principle and Optical Architecture V. B. Fyodorov, Russian Academy of Sciences Moscow ________________________________________ 12:10 PM - 2:00 PM CONFERENCE LUNCH (PROVIDED) ________________________________________ 2:00 PM - 3:40 PM Session VI - Guided-Wave Components for Optical Interconnects Chair: J. Bristow, Honeywell Technology Center Flexible Optical Backplane Interconnects M. A. Shahid and W. R. Holland, Bell Laboratories, Lucent Technologies, Inc. (INVITED) 1-GHz Clock Signal Distribution for Multi-processor Super Computers S. Tang, R. R. Chen, Radiant Research Inc., T. Li, F. Li, M. Dubinovsky, R. T. Chen, University of Texas at Austin, and R. Wickman, Cray Research Inc. Low-Loss High-Thermal-Stability Polymer Interconnects for Low-Cost High-Performance Massively Parallel Processing L. Eldada, C. Xu, K. M. T. Stengel, L. W. Shacklette, R. A. Norwood, and J. T. Yardley, AlliedSignal Inc. Two-dimensional parallel optical data link: Experiment K. Kitayama, and M. Nakamura, Communication Research Laboratory of the Ministry of Posts and Telecommunications Japan, Y. Igasaki, Hamamatsu Photonics K.K., and K. Kaneda, Fujikura Ltd. ________________________________________ 3:40 PM - 4:00 PM AFTERNOON BREAK ________________________________________ 4:00 PM - 5:40 PM CONFERENCE PANEL II - The Roles of University and Industry in Developing Optical Interconnect Systems MODERATOR: R. K. Kostuk, University of Arizona at Tucson PANELISTS: J. Bristow, Honeywell Technology Center, J. W. Goodman, Stanford University, M. Haney, George Mason University, S. Lee, University of California at San Diego, B. R. Pecor, Cray Research, and J. R. Rowlette, Amp Inc. ======================================== Tuesday, October 29, 1996 ======================================== 7:30 AM - 8:30 AM CONTINENTAL BREAKFAST ________________________________________ 7:30 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:30 AM - 10:10 AM Session VII - Multiprocessor Networks and Systems Chair: B. R. Pecor, Cray Research Network of PCs as High-Performance Servers K. Li, Princeton University (INVITED) Design of an Efficient Shared Memory Architecture Using Hybrid Opto-Electronic VLSI Circuits and Space Invariant Optical Busses P. Lukowicz, University of Karlsruhe A Novel Interconnection Network using Semiconductor Optical Amplifier Gate Switches for Shared Memory Multiprocessors Y. Maeno, Y. Suemura, and N. Henmi, NEC Optoelectronics Research Laboratories Japan Hierarchical Optical Ring Interconnection (HORN): A WDM-based Scalable Interconnection-Network for Multiprocessors and Multicomputers A. Louri and R. Gupta, University of Arizona at Tucson ________________________________________ 10:10 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 12:10 PM Session VIII - Performance Evaluation, Modeling and Devices Chair: J. Grote, WL/AADO at the Wright-Patterson Air Force Base OPTOBUS I: Performance of a 4 Gb/s Optical Interconnect D. B. Schwartz, C. K. Y. Chun, J. Grula, S. Planer, G. Raskin, and S. Shook, Motorola Inc. Performance Modeling of Optical Interconnection Technologies for Massively Parallel Processing System J. L. Cruz-Rivera, W. S. Lacy, D. S. Wills, T. K. Gaylord, and E. N. Glytsis, Georgia Institute of Technology Basic Considerations of Improving Communication Performances for Parallel Multi-Processor System (PMPS) with Optical Interconnection Network Y.-M. Zhang, W.-Y. Liu, G. Zhou, H. Zhang, X.-Q. Hem and F. Hua, Tianjin University China VCSEL/CMOS Smart Pixel Arrays for Free-space Optical Interconnects J. Neff, C. Chen, T. McLaren, C.-C. Mao, A. Fedor, W. Berseth, and Y. C. Lee, University of Colorado at Boulder A Compact Fractal Hexagonal 36 by 36 Self-Routing Switch using Polarization Controlled VCSEL Array Holographically Interconnected B. Piernas, and P. Cambon, Institute Superieur d'Electronique de Bretagne (ISEB), and L. Plouzennnec, Ecole Nationale Superieure de Telecommunications de Bretagne ________________________________________ 12.10 PM - 2:00 PM LUNCH BREAK (ON YOUR OWN) ________________________________________ 2:00 PM - 3:40 PM Session IX - Optical Backplanes Chair: F. E. Kiamilev, University of North Carolina Optical interconnection technologies based on VCSELs and smart pixels T. Kurokawa, NTT Optoelectronics Labs (INVITED) A Multistage Optical Backplane Demonstration System D. V. Plant, B. Robertson, M. H. Ayliffe, G. C. Boisset, D. Kabak, R. Iyer, Y. S. Liu, D. R. Rolston, M. Venditti, and T. H. Szymanski, McGill University, H. S. Hinton, and D. J. Goodwill, University of Colorado at Boulder, W. M. Robertson, Middle Tennessee State University, and M. R. Taghizadeh, Heriot-Watt University Hybrid optoelectronic backplane bus for multiprocessor-based computing systems C. Zhao, and R. T. Chen, Univer,sity of Texas at Austin Reconfigurable Computing with Optical Backplanes T. H. Szymanski, and B. Supmonchai, McGill University ________________________________________ 3:40 PM - 4:00 PM AFTERNOON BREAK ________________________________________ 4:00 PM - 5:40 PM Session X - Optical Interconnection Technology Chair: A. V. Krishnamoorthy, Lucent Technologies, Inc. Optimal Transmission Schedule in WDM Broadcast-and- Select Networks with Multiple Transmitters and Receivers S.-K. Lee, and H.-A. Choi, George Washington University, and A. D. Oh, Uiduk University Single Chip 8x8 Optical Interconnect Using Micromachined Free-Space Micro-Optical Bench Technology L. Fan, S. S. Lee, and M. C. Wu, University of California at Los-Angeles, and H. C. Lee, and P. Grodzinski, Motorola Inc. Phoenix Corporate Research Laboratories A 3D optoelectronic parallel processor for smart pixel processing units D. Fey, A. Kurschat, B. Kasche, W. Erhard, Friedrich-Schiller Universitat Jena Vertical Cavity X-Modulators for Reconfigurable Optical Interconnection and Routing J. S. Powell, M. Morf, J. S. Harriss, Jr., Stanford University, and J. A. Trezza, Sanders Lockheed Martin Corp. Demonstration of parallel optical data input for arrays of PnpN optical thyristors A. Kirk, H. Thienpont, V. Baukens, N. Debaes, A. Goulet, M. Kuijk, G. Borghs, R. Vounckx, I. Veretennicoff, Vrije Universiteir Brussel, and P. Heremans, IMEC ________________________________________ 5:40 PM - 6:00 PM CLOSING REMARKS: MPPOI '97 J. Goodman, Stanford University ________________________________________ 6:20 PM - 8:00 PM CONFERENCE DINNER (PROVIDED) ________________________________________ ============================================================================== \end{verbatim} \newpage \begin{verbatim} Registration Form MPPOI '96 The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 TO REGISTER, MAIL OR FAX THIS FORM TO: MPPOI registration, IEEE Computer Society, 1730 Massachusetts Av, N.W., Washington DC 20036-1992, USA. Fax: +USA-202-728-0884. For information, call +USA-202-371-1013 - Sorry, no phone registration. No registrations will be accepted at IEEE Computer Society Headquarters after 5:00pm on October 7, but must be processed on-site. Registration forms without payment will not be accepted. Name:---------------------------------------------------------------------- Last First MI Company:------------------------------------------------------------------- Address:------------------------------------------------------------------- City/State/Zip/Country:---------------------------------------------------- Daytime phone:----------------------- Fax number--------------------------- Company:------------------------------------------------------------------- E-mail address:------------------------------------------------------------ IEEE/ACM/OSA/SPIE Member Number: ------------------ Do you have any special needs: -------------------------------------------- --------------------------------------------------------------------------- Do not include my mailing address on: -- Non-society mailing lists -- Meeting Attendee lists Please circle the appropriate registration fee: Advance (before September 30, 1995) Late(before October 7, 1995)/on site. Member $300 Member $360 Non-member $375 Non-member $450 Full-time student $150 Full-time student $180 SOCIAL EVENTS: The following tickets are for sale in advance. These tickets will be subject to higher fees when purchased on site: ___Lunch $25 ___Reception $20 ___Dinner $50 Total enclosed:$ ________________________________ Please make all checks payable to: IEEE Computer Society. All checks must be in US dollars drawn on US banks. Credit card charges will appear on statement as "IEEE Computer Society Registration". Written requests for refunds must be received by IEEE office before October 7, 1996. Refunds are subject to a $50 processing fees. Method of payment accepted (payment must accompany form): -- Personal check -- Company check -- Traveler's check -- American Express -- Master Card -- VISA -- Dinner's club -- Government purchase order (original) Credit card number: -------------------------- Expiration date: ------------ Cardholder name : -------------------------- Signature : -------------------------- Non-student registration fees include conference attendance, proceedings, continental breakfast, refreshment at breaks, conference reception, one conference lunch and one conference dinner. Student registration fees include the above **EXCEPT** they ***DO NOT*** include the lunch and ***DO NOT*** include the dinner. =========================================================================== \end{verbatim} \newpage \begin{verbatim} ______________________________________________________________________ MPPOI '96 HOTEL RESERVATION The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 ______________________________________________________________________ PLEASE MAKE RESERVATIONS WITH THE MENGER HOTEL AS SOON AS POSSIBLE TO GUARANTEE THE SPECIAL RATE (HOTEL PHONE AND FAX NUMBERS ARE GIVEN AT BELLOW). * The special MPPOI '96 group rate of US $140.00 (single or double) is available from October 23 through November 1, 1996. All rates are subject to additional local and state taxes. These rates will be available for reservations made BEFORE September 22, 1996. * The Westin Maui Hotel: Phone: 1-808-526-4111 Fax: 1-808-661-5764 In USA and Canada: 1-800-228-3000 * You should ask for the "IEEE 3rd International Conference MPPOI" The above is a special rate. Only a limited number of rooms are available at this rate. There are other hotels at the Kannapali Beach area in Maui. You should check with your travel agent for prices and availability. \end{verbatim} \end{document} Eugen Schenfeld From owner-mpi-ptop@CS.UTK.EDU Mon Sep 2 22:11:04 1996 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id WAA08489; Mon, 2 Sep 1996 22:11:04 -0400 Received: from localhost (root@localhost) by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id WAA28735; Mon, 2 Sep 1996 22:13:23 -0400 Received: from zingo.nj.nec.com (zingo.nj.nec.com [138.15.150.106]) by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id WAA28727; Mon, 2 Sep 1996 22:13:16 -0400 Received: from iris49 (iris49 [138.15.150.129]) by zingo.nj.nec.com (8.7.4/8.7.3) with SMTP id WAA23358; Mon, 2 Sep 1996 22:11:26 -0400 (EDT) Received: by iris49 (940816.SGI.8.6.9/cliff's joyful mailer #2) id VAA01005(iris49); Mon, 2 Sep 1996 21:36:06 -0400 Date: Mon, 2 Sep 1996 21:36:06 -0400 From: eugen@research.nj.nec.com (Eugen Schenfeld) Message-Id: <199609030136.VAA01005@iris49> To: mppoi@research.nj.nec.com Subject: MPPOI'96 - Maui, Oct. 27-29, '96 =============================================================================== ========== =========== PLEASE NOTE: Hotel rooms are limited at the special conference =========== Rate. We suggest you make your reservation early to make sure you have the room. Room Sharing: please email to Ms. Sue Bredhoff, at: sue@research.nj.nec.com with your preference (non-smoking/smoking, male/female etc.) and we will do the best to accommodate. Conference Registration: Please register early (BEFORE Spetember 30) to the conference to avoid paying the higher fees and help us prepare better. AFTER Oct. 7, only on-site registration will be accepted. ========== =========== =============================================================================== \documentstyle[fullpage]{article} \begin{document} \begin{verbatim} ========================================================================== The Third International Conference on MASSIVELY PARALLEL PROCESSING USING OPTICAL INTERCONNECTIONS =========================================================================== The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 SPONSORED BY: IEEE Technical Committee on Computer Architecture (TCCA) IN COOPERATION WITH: ACM Special Interest Group on Architecture (SIGARCH) The International Society for Optical Engineering (SPIE) The IEEE Lasers and Electro-optics Society (LEOS) The Optical Society of America (OSA) ADDITIONAL SUPPORT PROVIDED BY: NSF - The National Science Foundation ______________________________________________________________________ PLEASE NOTE: =========== THIS IS A PRELIMINARY MAILING INTENDED FOR TRIP PLANNING. MORE DETAILED INFORMATION WILL BE AVAILABLE LATTER, TO INCLUDE INFORMATION ABOUT MAUI, GETTING THERE (AIRPORTS), ALTERNATIVE HOTEL RESERVATIONS, AND OTHER USEFUL INFORMATION. THE CURRENT DOCUMENT LISTS THE ADVANCED PROGRAM, REGISTRATION FORM, AND THE WESTIN MAUI HOTEL INFORMATION. FOR MORE INFORMATION PLEASE CONTACT: mppoi@research.nj.nec.com or fax to Dr. Eugen Schenfeld, +USA-609-951-2482 ----------------------------------------------------------------------- The third annual conference on Massively Parallel Processing Architectures using Optical Interconnections (MPPOI'96) will be held on Oct. 27-29, 1996 in the Westin Maui Hotel, Maui, Hawaii. The Conference will focus on the potential for using optical interconnections in massively parallel processing systems, and their effect on system and algorithm design. Optics offer many benefits for interconnecting large numbers of processing elements, but may require us to rethink how we build parallel computer systems and communication networks, and how we write applications. Fully exploring the capabilities of optical interconnection networks requires an interdisciplinary effort. It is critical that researchers in all areas of the field are aware of each other's work and results. The intent of MPPOI is to assemble the leading researchers and to build towards a synergetic approach to MPP architectures, optical interconnections, operating systems, and software development. The conference will feature invited speakers, followed by several sessions of submitted papers, and will conclude with a panel discussion. The topics of interest include but are not limited to the following: - Optical interconnections, Reconfigurable Architectures, - Embedding and mapping of applications and algorithms, - Packaging and layout of optical interconnections, - Electro-optical, and opto-electronic components, - Relative merits of optical technologies (free-space, fibers, wave guides), - Passive optical elements, Algorithms and applications exploiting, - Data distribution and partitioning, - Characterizing parallel applications, - Cost/performance studies. CONFERENCE CHAIR ================ Rami Melhem, University of Pittsburgh PROGRAM CO-CHAIRS ================= Allan Gottlieb, NYU; Yao Li, NEC Research Institute PUBLICITY and PUBLICATION CHAIR =============================== Eugen Schenfeld, NEC Research Institute PROGRAM COMMITTEE ================= T. Ae, Hiroshima University (Japan) D. Agrawal, North Carolina State University (USA) K. Batcher, University of Kent (USA) J. Bristow, Honeywell (USA) T. Casavant, University of Iowa, Iowa City (USA) P. Chavel, Institut d'Optique (France) R. Chen, University of Texas (USA) A. Chien, UIUC (USA) T. Cloonan, AT&T Bell Labs (USA) S. Dickey, Pace University (USA) N. Dutta, AT&T Bell Labs (USA) M. Eshaghian, NJIT (USA) M. Flynn, Stanford University (USA) L. Giles, NEC Research Institute (USA) C. Georgiou, IBM T. J. Watson Research Center (USA) K. Ghose, SUNY at Binghamton (USA) J. Goodman, Stanford University (USA) J. Goodman, University of Wisconsin (USA) M. Goodman, Bellcore (USA) J. Grote, USAF Wright Patterson (USA) A. Gupta, Stanford University (USA) S. Hinton, University of Colorado (USA) F. Hsu, Fordham University (USA) Y. Ichioka, Osaka University (Japan) H. Inoue, Hitachi (Japan) K. Jenkins, University of Southern California (USA) L. Johnsson, University of Houston, (USA) N. Jokerst, Georgia Tech., (USA) H. Jordan, University of Colorado (USA) K. Kasahara, NEC Corp. (Japan) F. Kiamilev, University of N. Carolina, Charlotte (USA) T. Knight, MIT (USA) R. Kostuk, University of Arizona at Touson (USA) A. Krishnamoorthy, AT&T Bell Labs (USA) S. Lee, UCSD (USA) K. Li, Princeton University (USA) A. Lohmann University of Erlangen-Nurnberg (Germany) A. Louri, University of Arizona (USA) Y.-D. Lyuu, National Taiwan University (Taiwan) T. Maruyama, NEC Corp. (Japan) M. Murdocca, Rutgers University (USA) J. Neff, University of Colorado (USA) L. Ni, Michigan State University (USA) A. Nowatzyk, Sun Microsystems (USA) Y. Patt, University of Michigan (USA) W. Paul, Universitaet des Saarlandes-Saarbruecken (Germany) B. Pecor, Cray (USA) T. Pinkston, USC (USA) C. Qiao, SUNY at Buffalo (USA) J. Reif, Duke university (USA) J. Rowlette, AMP (USA) H. J. Siegel, Purdue University (USA) S. Sahni, University of Florida (USA) A. Smith, UC Berkeley (USA) M. Snir, IBM T. J. Watson Research Center (USA) G. Sohi, University of Wisconsin (USA) Q. Song, Syracuse University (USA) T. Sterling, USRA CESDIS (USA) B. Tarjan, Princeton University (USA) S. Tomita, Kyoto University (Japan) F. Tooley, McGill University (Canada) L. Valiant, Harvard University (USA) O. Wada, Fujitsu Corp. (Japan) A. Walker, Heriot-Watt University (UK) P. Wang, George Masson University (USA) S. Yokoyama, Hiroshima University (Japan) Y. Zhang, Tianjin University (China) STEERING COMMITTEE ================= J. Goodman, Stanford University L. Johnsson, University of Houston S. Lee, University of California at San Diego R. Melhem, University of Pittsburgh E. Schenfeld, NEC Research Institute (Chair) P. Wang, George Mason University ======================================================================== \end{verbatim} \newpage \begin{verbatim} CUSTOMS/PASSPORTS: It is suggested for those of other than US nationalities to check with a travel agent and with an US consulate the requirements for VISA and passports to enter the United States, as well as for US Customs regulations. ================================ ****** NSF TRAVEL SUPPORT ****** ================================ The National Science Foundation (NSF) is considering travel support for minority and female faculty members as well as for graduate students. This travel award is pending final approval by the NSF and would be available for qualified authors presenting papers at the MPPOI'95 conference. For details on the travel support and to obtain a Request Form please contact (email, fax, or phone) the Conference Chair at the above address. ======================================================================== MPPOI '96 ADVANCE PROGRAM ======================================================================== ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ***** INVITED TALKS: 40 Minutes. REGULAR TALKS: 20 Minutes ***** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ======================================== Saturday, October 26, 1996 ======================================== 8:00 PM - 9:30 PM REGISTRATION ======================================== Sunday, October 27, 1996 ======================================== 7:00 AM - 8:00 AM CONTINENTAL BREAKFAST ________________________________________ 7:00 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:00 AM - 8:15 AM OPENING REMARKS - WELCOME R. Melhem, University of Pittsburgh 8:15 AM - 8:30 AM TECHNICAL PROGRAM OVERVIEW A. Gottlieb, NYU and Yao Li, NEC Research Institute ________________________________________ 8:30 AM - 10:10 AM Session I - Comparative Studies for Optical Interconnects Chair: K. Kasahara, NEC Corp. Japan Optical Geometrical Transformations Used for Parallel Communication A. W. Lohmann, Erlangen University (INVITED) Towards an Optimal Foundation Architecture for Optoelectronic Computing H. M. Ozaktas, Bilkent University Fundamental Advantages of Free-space Optical Interconnects M. W. Haney, and M. P. Christensen, George Mason University A Comparative Study of Cost Effective Multiplexing Approaches in Optical Networks C. Qiao, and Y. Mei, SUNY at Buffalo ________________________________________ 10:10 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 12:10 PM Session II - Interconnection Networks and System Architectures Chair: T. M. Pinkston, University of Southern California Scalable Parallel Systems: Past, Present and Future (from an IBM perspective) M. Snir, IBM T. J. Watson Research Center (INVITED) Design of a Parallel Photonic FFT Processor R. G. Rozier, F. E. Kiamilev, University of North Carolina at Charlotte, and A. V. Krishnamoorthy, Lucent Technologies SIMPil: An OE Integrated SIMD Architecture for Focal Plane Processing Applications H. H. Cat, A. Gentile, J. C. Eble, M. Lee, O. Vendier, Y. J. Joo, D. S. Wills, M. Brooke, N. M. Jokerst, and A. S. Brown, Georgia Institute of Technology, and R. Leavitt, Army Research Laboratory Design of a 64-bit microprocessor core IC for hybrid CMOS-SEED technology F. E. Kiamilev, J. S. Lambirth, and R. G. Rozier, University of North Carolina at Charlotte, and A. V. Krishnamoorthy, Lucent Technologies ________________________________________ 12.10 PM - 2:00 PM LUNCH BREAK (ON YOUR OWN) ________________________________________ 2:00 PM - 3:40 PM Session III - WDM in MPP Systems Chair: P. Prucnal, Princeton University High-performance Parallel Processors based on Star-coupled WDM Optical Interconnects A. J. De Groot, R. J. Deri, R. E. Haigh, F. G. Patterson, and S. P. DiJaili, Lawrence Livermore National Laboratory Dynamic Alignment of Pulses in Bit-Parallel Wavelength Links Using Shepherd Pulse in Nonlinear Fibers for Massively Parallel Processing Computer Networks L. Bergman, and C. Yeh, California Institute of Technology Planar Diffraction Grating for Board-Level WDM Applications R. A. Livingston, and R. R. Krchnavek, Washington University Time-Deterministic WDM Star Network for Massively Parallel Computing in Radar Systems M. Jonsson, A. Ahlander, and B. Svensson, Halmstad University, M. Taveniku, and B. Svensson, Chalmers University of Technology, and M. Taveniku, Ericsson Microwave Systems AB The AMOEBA chip: an opto-electronic switch for multiprocessor networking using dense-WDM A. V. Krishnamoorthy, J. E. Ford, K. W. Goossen, J. A. Walker, S. P. Hui, J. E. Cunningham, W. Y. Jan, T. K. Woodward, M. C. Nuss, R. G. Rozier, and D. A. B. Miller, Lucent Technologies, and F. E. Kiamilev, University of North Carolina ________________________________________ 3:40 PM - 4:00 PM AFTERNOON BREAK ________________________________________ 4:00 PM - 5:40 PM CONFERENCE PANEL I - Intra-System Optical Interconnects: Performance, Cost, Functionality - Pick Any Two MODERATOR: A. G. Nowatzyk, Sun Microsystems PANELISTS: H. Davidson, Sun Microsystems, R. Newhall, Silicon Graphics, P. Prucnal, Princeton University, J. Sauer, University of Colorado at Boulder, M. Snir, IBM T. J. Watson Research Center ________________________________________ 6.00 PM - 7:30 PM GET ACQUAINTANCED RECEPTION Meet some of the MPPOI participants Food, booze, and small-talk opportunities provided ======================================== Monday, October 28, 1996 ======================================== 7:30 AM - 8:30 AM CONTINENTAL BREAKFAST ________________________________________ 7:30 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:30 AM - 10:10 AM Session IV - Scalable Interconnection Networks Chair: A. Nowatzyk, Sun Microsystems Exploiting Optical Interconnects to Eliminate Serial Bottlenecks J. Goodman, University of Wisconsin-Madison (INVITED) Scalable Network Architectures Using the Optical Transpose Interconnection System (OTIS) F. Zane, P. Marchand, R. Paturi, and S. Esener, University of California at San Diego A Scalable Recirculating Shuffle Network with Deflection Routing S. P. Monacos, California Institute of Technology, and A. A. Sawchuk, University of Southern California Improved embeddings in POPS networks through stack-graph models P. Berthome, Laboratoire LIP - EBS Lyon, and A. Ferreira, CNRS Carleton University ________________________________________ 10:10 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 12:30 PM Session V - Optical Networks: Architecture Issues Chair: T. H. Szymanski, McGill University Optically Interconnected Electronics - Challenges and Choices F. Tooley, McGill University (INVITED) A Smart-Pixel Parallel Optoelectronic Computing System with Free-Space Dynamic Interconnections N. McArdke, M. Naruse, T. Komuro, H. Sakaida, M. Ishikawa, Tokyo University, Y. Kobayashi, and H. Toyoda, Hamamatsu Photonics K.K. Japan Optoelectronic Stochastic Processor Array: Demonstration of Video Rate Simulated Annealing Noise Cleaning Operation P. Chavel, P. Lalanne, J.-C. Rodier, Institut d'Optique Orsay High Throughput Optical Algorithms for the FFT and sorting via Data Packing K. Bergman, P. Prucnal, C. Read, Princeton University, G. Burdge, University of Maryland, D. Carlson, N. Coletti, and C. Reed, Institute for Defense Analyses, H. Jordan, and D. Straub, University of Colorado at Boulder, R. Kannan, and K. Lee, University of Denver, and P. Merkey, USRA CESDIS Bit-Parallel Completely Connected Optoelectronic Switching Networks for Massively Parallel Processing: Principle and Optical Architecture V. B. Fyodorov, Russian Academy of Sciences Moscow ________________________________________ 12:30 PM - 2:00 PM CONFERENCE LUNCH (PROVIDED) ________________________________________ 2:00 PM - 3:40 PM Session VI - Guided-Wave Components for Optical Interconnects Chair: J. Bristow, Honeywell Technology Center Flexible Optical Backplane Interconnects M. A. Shahid and W. R. Holland, Bell Laboratories, Lucent Technologies, Inc. (INVITED) 1-GHz Clock Signal Distribution for Multi-processor Super Computers S. Tang, R. R. Chen, Radiant Research Inc., T. Li, F. Li, M. Dubinovsky, R. T. Chen, University of Texas at Austin, and R. Wickman, Cray Research Inc. Low-Loss High-Thermal-Stability Polymer Interconnects for Low-Cost High-Performance Massively Parallel Processing L. Eldada, C. Xu, K. M. T. Stengel, L. W. Shacklette, R. A. Norwood, and J. T. Yardley, AlliedSignal Inc. Two-dimensional parallel optical data link: Experiment K. Kitayama, and M. Nakamura, Communication Research Laboratory of the Ministry of Posts and Telecommunications Japan, Y. Igasaki, Hamamatsu Photonics K.K., and K. Kaneda, Fujikura Ltd. ________________________________________ 3:40 PM - 4:00 PM AFTERNOON BREAK ________________________________________ 4:00 PM - 5:40 PM CONFERENCE PANEL II - The Roles of University and Industry in Developing Optical Interconnect Systems MODERATOR: R. K. Kostuk, University of Arizona at Tucson PANELISTS: J. Bristow, Honeywell Technology Center, J. W. Goodman, Stanford University, M. Haney, George Mason University, S. Lee, University of California at San Diego, B. R. Pecor, Cray Research, and J. R. Rowlette, Amp Inc. ======================================== Tuesday, October 29, 1996 ======================================== 7:30 AM - 8:30 AM CONTINENTAL BREAKFAST ________________________________________ 7:30 AM - 11:30 AM AND 2:00 PM - 4:00 PM CONFERENCE REGISTRATION ________________________________________ 8:30 AM - 10:10 AM Session VII - Multiprocessor Networks and Systems Chair: B. R. Pecor, Cray Research Network of PCs as High-Performance Servers K. Li, Princeton University (INVITED) Design of an Efficient Shared Memory Architecture Using Hybrid Opto-Electronic VLSI Circuits and Space Invariant Optical Busses P. Lukowicz, University of Karlsruhe A Novel Interconnection Network using Semiconductor Optical Amplifier Gate Switches for Shared Memory Multiprocessors Y. Maeno, Y. Suemura, and N. Henmi, NEC Optoelectronics Research Laboratories Japan Hierarchical Optical Ring Interconnection (HORN): A WDM-based Scalable Interconnection-Network for Multiprocessors and Multicomputers A. Louri and R. Gupta, University of Arizona at Tucson ________________________________________ 10:10 AM - 10:30 AM MID-MORNING BREAK ________________________________________ 10:30 AM - 12:10 PM Session VIII - Performance Evaluation, Modeling and Devices Chair: J. Grote, WL/AADO at the Wright-Patterson Air Force Base OPTOBUS I: Performance of a 4 Gb/s Optical Interconnect D. B. Schwartz, C. K. Y. Chun, J. Grula, S. Planer, G. Raskin, and S. Shook, Motorola Inc. Performance Modeling of Optical Interconnection Technologies for Massively Parallel Processing System J. L. Cruz-Rivera, W. S. Lacy, D. S. Wills, T. K. Gaylord, and E. N. Glytsis, Georgia Institute of Technology Basic Considerations of Improving Communication Performances for Parallel Multi-Processor System (PMPS) with Optical Interconnection Network Y.-M. Zhang, W.-Y. Liu, G. Zhou, H. Zhang, X.-Q. Hem and F. Hua, Tianjin University China VCSEL/CMOS Smart Pixel Arrays for Free-space Optical Interconnects J. Neff, C. Chen, T. McLaren, C.-C. Mao, A. Fedor, W. Berseth, and Y. C. Lee, University of Colorado at Boulder A Compact Fractal Hexagonal 36 by 36 Self-Routing Switch using Polarization Controlled VCSEL Array Holographically Interconnected B. Piernas, and P. Cambon, Institute Superieur d'Electronique de Bretagne (ISEB), and L. Plouzennnec, Ecole Nationale Superieure de Telecommunications de Bretagne ________________________________________ 12.10 PM - 2:00 PM LUNCH BREAK (ON YOUR OWN) ________________________________________ 2:00 PM - 3:40 PM Session IX - Optical Backplanes Chair: F. E. Kiamilev, University of North Carolina Optical interconnection technologies based on VCSELs and smart pixels T. Kurokawa, NTT Optoelectronics Labs (INVITED) A Multistage Optical Backplane Demonstration System D. V. Plant, B. Robertson, M. H. Ayliffe, G. C. Boisset, D. Kabak, R. Iyer, Y. S. Liu, D. R. Rolston, M. Venditti, and T. H. Szymanski, McGill University, H. S. Hinton, and D. J. Goodwill, University of Colorado at Boulder, W. M. Robertson, Middle Tennessee State University, and M. R. Taghizadeh, Heriot-Watt University Hybrid optoelectronic backplane bus for multiprocessor-based computing systems C. Zhao, and R. T. Chen, Univer,sity of Texas at Austin Reconfigurable Computing with Optical Backplanes T. H. Szymanski, and B. Supmonchai, McGill University ________________________________________ 3:40 PM - 4:00 PM AFTERNOON BREAK ________________________________________ 4:00 PM - 5:40 PM Session X - Optical Interconnection Technology Chair: A. V. Krishnamoorthy, Lucent Technologies, Inc. Optimal Transmission Schedule in WDM Broadcast-and- Select Networks with Multiple Transmitters and Receivers S.-K. Lee, and H.-A. Choi, George Washington University, and A. D. Oh, Uiduk University Single Chip 8x8 Optical Interconnect Using Micromachined Free-Space Micro-Optical Bench Technology L. Fan, S. S. Lee, and M. C. Wu, University of California at Los-Angeles, and H. C. Lee, and P. Grodzinski, Motorola Inc. Phoenix Corporate Research Laboratories A 3D optoelectronic parallel processor for smart pixel processing units D. Fey, A. Kurschat, B. Kasche, W. Erhard, Friedrich-Schiller Universitat Jena Vertical Cavity X-Modulators for Reconfigurable Optical Interconnection and Routing J. S. Powell, M. Morf, J. S. Harriss, Jr., Stanford University, and J. A. Trezza, Sanders Lockheed Martin Corp. Demonstration of parallel optical data input for arrays of PnpN optical thyristors A. Kirk, H. Thienpont, V. Baukens, N. Debaes, A. Goulet, M. Kuijk, G. Borghs, R. Vounckx, I. Veretennicoff, Vrije Universiteir Brussel, and P. Heremans, IMEC ________________________________________ 5:40 PM - 6:00 PM CLOSING REMARKS: MPPOI '97 J. Goodman, Stanford University ________________________________________ 6:20 PM - 8:00 PM CONFERENCE DINNER (PROVIDED) ________________________________________ ============================================================================== \end{verbatim} \newpage \begin{verbatim} Registration Form MPPOI '96 The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 TO REGISTER, MAIL OR FAX THIS FORM TO: MPPOI registration, IEEE Computer Society, 1730 Massachusetts Av, N.W., Washington DC 20036-1992, USA. Fax: +USA-202-728-0884. For information, call +USA-202-371-1013 - Sorry, no phone registration. No registrations will be accepted at IEEE Computer Society Headquarters after 5:00pm on October 7, but must be processed on-site. Registration forms without payment will not be accepted. Name:---------------------------------------------------------------------- Last First MI Company:------------------------------------------------------------------- Address:------------------------------------------------------------------- City/State/Zip/Country:---------------------------------------------------- Daytime phone:----------------------- Fax number--------------------------- Company:------------------------------------------------------------------- E-mail address:------------------------------------------------------------ IEEE/ACM/OSA/SPIE Member Number: ------------------ Do you have any special needs: -------------------------------------------- --------------------------------------------------------------------------- Do not include my mailing address on: -- Non-society mailing lists -- Meeting Attendee lists Please circle the appropriate registration fee: Advance (before September 30, 1995) Late(before October 7, 1995)/on site. Member $300 Member $360 Non-member $375 Non-member $450 Full-time student $150 Full-time student $180 SOCIAL EVENTS: EXTRA tickets (for spouse, etc.) are for sale in advance. These tickets will be subject to higher fees when purchased on site (please note: if you register as a non-student you do not need to buy these for yourself): ___Lunch $25 ___Reception $20 ___Dinner $50 Total enclosed:$ ________________________________ Please make all checks payable to: IEEE Computer Society. All checks must be in US dollars drawn on US banks. Credit card charges will appear on statement as "IEEE Computer Society Registration". Written requests for refunds must be received by IEEE office before October 7, 1996. Refunds are subject to a $50 processing fees. Method of payment accepted (payment must accompany form): -- Personal check -- Company check -- Traveler's check -- American Express -- Master Card -- VISA -- Dinner's club -- Government purchase order (original) Credit card number: -------------------------- Expiration date: ------------ Cardholder name : -------------------------- Signature : -------------------------- Non-student registration fees include conference attendance, proceedings, continental breakfast, refreshment at breaks, conference reception, one conference lunch and one conference dinner. Student registration fees include the above **EXCEPT** they ***DO NOT*** include the lunch and ***DO NOT*** include the dinner. =========================================================================== \end{verbatim} \newpage \begin{verbatim} ______________________________________________________________________ MPPOI '96 HOTEL RESERVATION The Westin Maui Hotel Maui, Hawaii October 27-29, 1996 ______________________________________________________________________ PLEASE MAKE RESERVATIONS WITH THE MENGER HOTEL AS SOON AS POSSIBLE TO GUARANTEE THE SPECIAL RATE (HOTEL PHONE AND FAX NUMBERS ARE GIVEN AT BELLOW). * The special MPPOI '96 group rate of US $140.00 (single or double) is available from October 23 through November 1, 1996. All rates are subject to additional local and state taxes, and a $5 resort fee. These rates will be available for reservations made BEFORE September 22, 1996. * The Westin Maui Hotel: Phone: 1-808-526-4111 Fax: 1-808-661-5764 In USA and Canada: 1-800-228-3000 * You should ask for the "IEEE 3rd International Conference MPPOI" rate. The above is a special rate. Only a limited number of rooms are available at this rate. There are other hotels at the Kaannapali Beach area in Maui. You should check with your travel agent for prices and availability. \end{verbatim} \end{document} ========================================================================== Eugen Schenfeld .

GRF/@UZK8.:<+M-1S<4W.<4"F.7>W^V&F*X19T\]P0=6W-6LO67'71 MC>0-=]W+$9P@%S]`5/@TY[(EUK,X3``GR%W7[>OG`D7 MNQOW/5P4]3R%*3:MKE73#37*75JG5HSVEXQ#C1US"!%DJ]0@P"%L^U&?W03+ MR!5X<<>`=VL6>.-)^(\:5)"4NK0N8]VXYM4J)F[[_.XMD+?J>>1%V1-WJ9/W MC964]STL-&_>EW?FS7ECWE9/>H_?Q@PN=WJ*WZ:U90U(" M29N#`MLAJ`8ISEK062?3D@M?>] M7`;CP]3*+^5B#M9H;J&=E[5,W'9+IW%+32I-'%8"W=9L;NZ[72,J$[@2.EVW M1QWUE^U$+2=U]^*N;.#M'`I^@DO6*[A&/;B>W"TX M>QN#IRDS>)]':T>!=+;P[8%OX#MX"'Z`0Z7^\W0=>$W7TXH3/))FOPEXM?T7 M<]06-VF,A+LHF9S_/'*3VXTV\4SVLI'_S%^0SA!!E3;>35#CW@?W96@PUH-J+4+D-T-\40^X5%RF?80?VD711^WGNDML;H0, M:7,Q1C@>3H/_X3(X(3Z("^)DCR%>P&C1_QHC?EDC:H^X(MZ"1X$!VTW=$UOB M_9HC7FY+XICX#(F%*^(F."B^4H_<'14I[O3NX7IXLVV'!TR%."N>IG#$W7?! M/8=CV=HNWEP1+3[Y-BF.AE/,M7*!VR>-T_^S1D2)W]5^,OF[)_O@=?4Q_G0; MUB.-2C.,#R+/.`H2C8O#`S$B_DM-X])P-8Z-M]VAL,WB9;!?#0,[PAC+ M7P!_4-I_@>43PR"_M#*DNP2-7*U,X>WN%7YT[BU3%&$R-S4N)`IBXKD*)DYY M#N+^>&++AK>]E'B\6XH71]MX0GY82]_NMR^\D#_DFS!#'GXWY.ZW,PZ1>VH2 M^?--D4_DZNA%+HU[Y'OV1QZ1!]\2-1`E=+?AZ"\K?)+#P)5*0WKG3-J5MG)% M+,HW6LOK9-56KMS[3< MR'/;+6[_1OB0;VUOH9C-8YWY4#-B9:[2Q(CMUDQW`V2CG\A@%?TQ7NCTTAOS_Z4083&W,RPN`0>8[K M0DS28?(U:""YY-)(W_`SS!L8[!]96A.FJOF*4@@OIJ/YO`V;.Z9 MO^:T^?"$#3&4;\775Q;%0GX--6L0M7R[@9N<+L M9@ODC7%@AT[OYNS0-KX4*>.T;2@=F=EJ]8M?@ MJ_""_9^?00*ZBSV@&^@NM@Y6H,_8TI%TPY_7V4'+0[A7,SX3^@].`EGH?>DV M+JZZYZY2,=ZAP\/(3#2(<9VZ/$SFG7,>XU>N8U8:(^;@=T@+C3:W`;!/-UA' MQ-HOT2W0N,&.L'>;C$>#I\C`9WG`"Z[(IBEE(;[';`T=#`;?9XG%_V^*Y`(U1D6!Q.L7FSB5XN%T2+L*LX52ZW4M62BEE MC"P6#)G5+;7P>Y#,94>0=B9UO#>#BF$KD1?@Y5\U'#9YRM_E3[(=[^2V.=+; MWN5?BU03=5N+3Y^Z\Q*J4\C5[O/"$CDO`@D+$IRGZJAY9LZ:ARJ&\C),"5'! MGNZ6SN\9-%C M=H67,6)X90T/@]I&NI8NHJ/IIK&`?:U;Z3?VMKZEG]H$MK9NK8_K-3>WGJV' MZ^@ZJTN5SM14Z1P#RO&^;J8?>0;[PEZP!^P'.\,^(4GL"CO!+K!3[->PQ1ZQ M?](:N\-^L3_L%;ME:_;FS,%YO)JJN]8D>V!BF\`?\$)UA+/<1(F1(E5MM7,_ M8&""VL+C)C>36Z6[VM]EJ8U2@>M8>F^;L!M>?;H1#73IHC[?YS.Q2VD]1DNL9-=LNX M/KN^3FK'1V!R'*Q2X4(+[[6+5ZWK1[FW;K>3ZT3QM_ZFG^O@L+CNMY.Z0[N7 MCJZ+X<4Z1U:\RN/R\Q49H\N*V+KO'[K3[ MP36[.T+G=>K>NN_MO#N9W':KN>^/#VC),2;"(!%DUQA&,[DS6HSJG*T4)V., MM9JOYG0[W>JY>B[]VY6'OJ[XO/WR;N\T.]M^BU_OM?'W#C(GR.%[^4Z^G^\+ MN`*>ONLG&TM8A[ZK[_`[^WZ^ZRL`Y:%$OQ=5]KN;UML&7OC[_LX/ZRC9D);+ M!V\Q'=76=+T/=M51^B$$'.OTR"]TF&@<5D=,8)COG.X),,EXF%ZL2C(7SZQ0 ML@KE-5RMC$"+<3PIH?O M27_`EKC)O[.)22OIHR,BI;$6&,\F=E_]LW@'\)I=];.H%))E9-$KPY6&QM." M9DP-?BJ3Z3"'C##CM%Q>@1P_HP&EJ/2O$+1:"`'1]&_@`TP=*$JT!T#M']=4 M75;>W&CWR`8W7^\1*MJ4G2 M;-/5)@9/`\F?+-7SZ0Z5BTM\<6I:G6:J)&P*CKTT`)D"1(H:5K6S8L68$$&* M";I[KCWFLHIDLI:99[I=^]5K8;?T*T"#;`E;OPQT-GK"F8V6GFF#N4.WUC8: M>%ZD0,MZY6DVHL;FGEF1RE?A9H(U=RU;TDG?I[,7'O%0?W;BZNPPC?REMI2K M$0VMLEXIM^:5@]+Z/**FU-C97D7SUOSY67VV-NN9>R6)&C0`#:FVEH%2YGQ] MDUWM/6+)WG.8&]#XS-B)S7M9DA;NB34JMR=I#Y=K"D?M"OKZ];SL\&D4IZXEP7XG/-[)BG%ZU3QWORUR4[)E3=0LOBJ MC#F(LA"TF^PXZ^.$TJSO38#I#C:OL5OUS57Z:WU;[2>Y!9AVZ4)]?>-N'?7S MUKM5?@Z7@5.U]9#8-0!]@_!]-C9)06!C:8Q9Q%9PD"*]Z9F2)UR5`\#>S';J7=:*=#(PS'E;STA=%TK3] MV:=':ZO,^\C;[ZK9F9_U:?UA_G!]]:48P"5S-:/,*&(ZQ\?UGUC$5>$@8\$8 M0*/1TU3'*38V9O5BV#\,";\Z[U<)B7U4IB9]SD7>])B MQ3[2/7O/7@XTH3V065:ME7)5U;6UU/<:5TZ3F65F6&A_KX$28D\FQ8)UY5:O MS3)3>&Q>@WR(55LYBHM6:T,7GEB3R3SFE%T=L8](TX7"]]XI7)7AYS1S50\* MFAGS#J>ZN88:6Y38KP4\:?,39PBS$)E:0^00-$)B/.HXQ!Y2UO81GT4FS%Q< M^,M\FL9D)L`BCQ\$L8IJUS[3HL:E+Y4(O]?CE`T5[UEJ(OD/*CY+4?:S)I#\ M3[5K7G_./*YO8M?!*6LB?)FG^5%].;4M`@#B85AZ\$(M:1;0A5'%6S9*L/6 M1..A;"Q]K(88XQ[0!,VBWVJU6O,*E8B;L)3K%CT]:T63*NG6Z`T*.-X4K8*_ MKC6U,35LA>WTB@EO[X'MB1CQ*"\<=K7J%"HOUS_RJWRL_]K/F^>F1ZJ25ELZ M:BR-ZJ>QK?RJ7U_)^D\D+R;L4U<*4.KY>*IHTA:RSYJ@-?J9S=7;$E`,ZIZC MS!MV6MA1LZ%X6'E7.+:3A;D7CBEU>"&0RE=^"4?9]Y!\3]LE5VJ,J::^FU?; MP+2TEEJ=^P\76O^-:2*OZ;POR6\A<]YKHC^=.UGKM[,7XCSXQWGX_9I)$0#V_!9XCCS:9/#6>;,WV>,XZ7)7:7)E[_EX\*BP7W\3Z7!>^W M]6.66)_=5IPA8QH96_J!,BC6"YZ.VB4/&8KE= MH`P@`_JG>@'Q#%3ZP_,P#:8;SXOD!+LT/7P M4E(B=JQSEDDCZC?%<@^E()@H=0?T'UX(8%3Q"L.HAMQ_5ZJUD`Q0_F<4(F*A M-HQ,?0V.$&'(-K'_RPO)-=I2PX_10W4$C*?-8.D$E,H;(Q81%+Q(,01]Z%., M3VQYW2N.!MM)&/0JNCMD':(YD8D)Q$=&,#(:._,]*AA]=X=4B/XDAR&O$@&: M`2\UG[@2()5F2F(@HM*$`.U59\#Z4&YB\%'%DE3:@5: M.7XSV:WD!*](!D6#@D%IB]0.F8B^`]AGM169X`[!MGYGMBN12*ZH#?@&C'#0 M-`!'V@S6!(K'_H=?0FU`/`(0X1@'RAO-09'Q,44D)X(47ZT<8+3(*00BXF5H MM>X.RPIZ!U_D[_`7J(YH9[09ZC:MD%"D/-/I>R?MLTQ7E*L3UHJC'8A.NJSL MB+I0-`X@D3XP'T@NDE7\2*D!\,$<&**!E9B*PH]^#7\&O0 M`E%$'PTI4"0NZLO50#P5)0JZH*$FMJ$!21;Q+`H=Q\&.!YCHTL'="`H. MLN@ M-#9>(8WV8'HP0U@0@@\F"..#F2#W('WDX_0@+!%*"/N#`D+_X`VDH"$3X=(` M!AI28[SXQH?IF\$D$F?8"`U)1HAS1A`BD[1\.%$8@[)?T0A(TAIE'M&_<&9P MF*PIF*1LBH"HW].?4$\`(Q:$H"5_%6T0M'%><@UM1_@^6$)*5);P2J@E[!)R M";^$L(XKX;EG?5$;I!)BBXHJ44(5%FRH#S.A,"W]';@>\I`DQP4P`_'.8%*4 MD]R!]4`\H68PG:0G="?E"?^$-24RB8,D!79WR(X4OCI*%$#PA$9/HU?$RYHX M>K8C)A9C'HO%,R(2,>H-EU!*"XJ&TATI4ZA68JE<(E10+)78TA8B;/.@W1 ME8A.X!&CG/P"TC-?612")Y8I,9C%AN@"`K+AB!,6"ILD0K^A2BB.$B=JBWX, M5_(D9Z7;TF(O($5D>DAD'3(37"VPTA7*+W,S^H65](P3N8Q3GKJP79&@,!;" M)O1)$16^`QN060@G+'<5"J4.:Z(#(`W$=Z*W4@IZ*N0Q1_F=S26`C^D/M80AH>V3%OF[4!9*N<(_4*$;9OY4KU05>B;J`$H MQ)B$YX@8RU'J8$5,JAKV6JR$6$-U8<1P!Z4UI!@&.8;QPB`![RG66@O7!4:A%P@SC@NV5H/X(*D.D#- M,T0Y%BBX3)')2.A6,?0UJ>`MX@V\6%X/EN+A2T.56'H@>2?8SFEJ-04_D>3U M,X1_4SP<%<5"G.5*"FCHJ*R%DPRTVQ$"4%+JLT&$G]!<)HD_T^B)+#AO:C8U MF\1-L,,$2^R0V41=X:X0E!1-*Y+&E.EII;'.DQT&\[!-+C1OT[1)>*AM&AX^ MFXZ'.Q(:RVU$L8&CJQO-1-Q-])-MC/RA.<&*8*<(DR(8QPEW7B@F-^'@B+=X M#TTS)`UEWXF%2.4<>:UDG2@SY$.XGGK(ZQ)L,:U@"]L3<170S)E/J2$DFFCI M^*1*GZ,ACK&+/'$.E$7A54!\[)ED4\5IU3)W05KAGG!^(Z5!B_EE@7C(6%B5 M:8PGG)5)5"0J+S*`>B`J6B*(](P)HLNM@=B2)(2S\,NT$,M`3)`C&>L6B1..;^MS<*)GM%P(L8`_AI.R$*?C"IE]T1>:E9I M=I18JA30S4YFA]B?H$GP$+,LUS_KGS(JK(?IIR6)3GX7OC]7!/,>@5 M)[X6^23``^0B5R%7NO@RH`O\!!LB?]47I)X2;RN&?H0>K=&/!\& M1[H7>9,^GC-B_E/,0.HA]=`V=CVEE2KEI1>K.`3J`JU9IXH?R4)D_%5:X1_R M],1H93BHB$JI=T@[;"3V#@=0XZ9(X@C1D8B<8B1:$BN)#PF_2$X.D]A\X222 MFSJ)H,1/XB?QW$-)#"5*$H5YJ$2("=[#\,.!2.;-0WX##C)Y&X8$`MBQ"NK9 M$O52:3=:HB[QEKA+V27B$C\D>R*?#_2%C&'`:%6=H2I,VBVH2J^C'%CN(@8A M0EPT`@SQ'#OH_"1$Q/J9G#13O8P)E40)'7)^N&E$9`!_-XW+GN^IY3206DA1 M>70:\CWD!`6J-4$2J(0D.5`I^I>;!EE%&Q6<0KC`F3I/B"8!8BP%CZC.^S9I MQHHCQA*_&PA."!(GI(?@8NHP"ZGJ'\Y/?A5)3E(1V97-84XQ%7$YW!SV%'F*^3V.QFAOJ+@YW!P2 M9HR*[@@^RX-/J4B&,BK*\)R*"+W]1H7*J,C6D"IVJ(R*E(?&80]*JXA9`5"! M^)802P^C8KU">)$NQ)CX><86XHT.Q-/A>_HV`Q5K2LTE`A6,F4*Q M5!9%Q!B;2E[Q/7WR"WZ M%@TOO\7>HN'EMBCO46?T+.R(D1/$GEZE[C)N8CPHD:!"RSRQC89/9,_8"I%Z`*$"B15B`!6J\2Z& M%TF(L916CQ*/)R1/I,\!==J&)2\F3AA&E<+3,`O%4F0MG:T[TX6Q%4-\&L#, MF>1,`1@DWKVIGS4?,4,A>?*!A);3@Q>EF3AJ<3K`SU@JX8>(5FY/#*/+6!TY M'D@Z.$:FDHZQM$)+!+>LO:)2LPGO7*3+T.9PZ3%*96R!EZPD8^]!:)BVD#T< M'H83X0L+P$_CB-.9^ES"R').7@(S4R^#@C49F92F0Q\O>CNDRH M6N`NKI6LHFKB^2=K7,<(J6:-AI;3GX&1.%+Z.VD-5*I^J962QBA)/>AA,;=M M\KI>&X[;7^&B_?']Z&-1)BH9'Q&S81A@3.2@"QLQBM:!^N$"@ M*G!5DXKYR^U*+3AQ-$T0LH)70*BV$NV!O#27,E416]H5T(V0HR!LY!B,.%P8 M7TB.OJ3O1.*#3+$7NC]4.L!$DHF,AG4$R_BEN7PT"/-/8ZS.2BG%E]A+Y"6R M)D):M*771*UI$].3*4,T/>:"?`A2((KK;,732.D%`RF.5T&'A[0"T0&!ZG.8 M/U*"M`WF16D"",780.)X';N.8$>N(PVKMA'OD!2I8*R.RL`K26J+=)@W&O=\ M9]:$-ZRMAF()XL+"VCJNNWR.M<3!46Q)I?6/@0OI9_H;QP_?D,U"Z;C26%D! M4`8>O@D2S2F6(/@@J,(!`H,]J[C.4F@H" M8E)!4\(PEN@Q(T3EP#F6"4\3Y`C(!2H'.X55N1L.X[A;3[;;T+Y/V^>@@/;5 M'6J/^[Y]GYZO!_/NLFM0+[HG=8=8(M.QXJ@&?#I:L>Q#4@_-W1D#5448C!TY M'U-'FQ_8$?01=40Z(AU)4GH3QT:#G],'=;*X(H@MWCX8W(M5%ES(D'49+#\6 MPWAZF:KEP[="<64C.5(PKKZ/ISU3GOB1@C1_K#^:'R%(3L9[T'X(#0%6LD*8 M26AO<"J\S/`QZFA\I%0D]*".>0O5EYTBF%7;\%WQ828KPJNR(UKKJ25#6EY! MD,:.]ZR'X*2H?A7M,1]U*``(V4=M!F%O66:!C`?:'TV0A*P3)/G1!/F;*5^] M/6:.ZL=F6JJA(94807N\ M+X*0"L"\4D-0")E\.4(2(9F0/3Z&(:6/U\?5@Q6RD$)!DTJ<,M:#U9R]("4P-Q&:\+_8 M(74:=TCD1!YRCDB'%$>((6H;6J(68#XK4!,<'#S:#3=`1B"[% ML$2.K0U(Y,DQ$HER/%RH')^"_R4W!4VB__!R'.T0'PN0O:H4$`"!;-5VS%6= M(A(T-X@:D`Q+=05V9$&Z(C$T*0[$\D952-]:KDU(1B#: M8_!6'\E7Q'-!G]09(DFB:+A$68<<1Z%#)0DB6KO0.UR2>R&8Y+=I]`=]"6B, M%MT.$*TX4MLA?4.+O$+Z#WD5%AH@XM6$&!.0I*B0*81$ZJ2")$+2#*60%$TT M))V2#LFH)(2C1^.9Z10FM:!X,AGFGZLQ!8'S>%OU`;>"ALB1AS:C\W"8"!B@ M'@IJ&@C'A/V-5G80&7#8+.@.P0X:P.E0)0>.H_)80JHO2;GOT+F0M/)9B?2A M^QP"DI8+"'JE1'7Z^TLR-G2-B#3N(BN%_;@9*?T-\3(PCLERQ3]#,ODA&;QP M62B37K+(9&+2,CF9W$QZ)PQEG$GOGV.2,8EQ64PF)G\6`3$"(RMEUQ@<*4PB MTL`5`;'UBG%+BX$+PB`F1THUI!I*(;J/^"2T:<.A>E!R&RM)".%%-PD0DCTU)YF3?,GE9"(M.@F=E$XJ6G@8U-1?WXTOE0DFBG"O: MH3R4X1)FA(D2!76AG('LMN:*+DH498RR1)3%F0P'(@%$2*6V4"Y`BG@F"]F)@9%(B*543H[\6I>2C4A-8B5+" M*.$8@TD27I:2S+>E/&F%HMZ(>YG"GGW#8*&@\_G-)003PTD233MC#V$+R[VA MN?HWH$-TWRF*\$*:M*\`:'Y&,QB,6!TF=UAL&C#V*5DK+#\^94")I<27W)2T M\G23SLDG$FTO3MF[$76$R0R3BS3]QG%+?L=&>LI% MNM9/-J=8@82P5TR(6!+*)"L/N[+J$Y`M7B8N/!>(Y0%$IM@HQ"O: M2/2*8T/M!C`RKT+#H(A580@[[)M;3*-.59'4*-MH*I`O#[X9WG-#,T'HJT*@ M)A5)N94XXG#$?!CL<8Z,]VZ%\AY2BH2(O@<)$5;.GV9-[:#1#4'D+A'B:6=X M`(5[53`QV#RH^T?4$UC*^TI43DN.'RFQ:=GQ8UK2-X@?N(E4Y'HB)C!WB4)= MH&P7@TGS2L2+[(0N[.:]HX`WWQ=R%#@/;U+>L9:,MWU#L*Q3=V6J%T M\V23SHDHE&?"Q[1IX3K20GQ!O)!7KDYPMXAPB(@*#R5WG"H_2*_0N=9 M:J)-UB9MUD9(3X1[(F^Q$94CF,NMTT-#OP&>(NXAC!Z'SXDF'FZI2F7?^!PJ M7A:#TZ@0C/H'A\.4M`;FLQ@=8QJ^1OOO._1KM!3:+J-Z4#U2BH$P!H:1J%WB M+N,MO\O;)5TI>-F[)%X.+X^7WR'CI53O=:(%`@KA;OJ+\6?B&N, M+N00/J$(UFK(8"1N@HV4JA25W<<=26AR?$F9#$TN+!>6S,/GTSUO4D'5:$]( M<=R#K4?XI?SR;AB;^*5,YJQHX!"72!O-;S'.H^W0-(Q;Y`,`I@!3BP?`Y&WP M-G08#BV-EM*IS,&6,#O97!@K]T6SPRRD7"(":@+!'\MU08M%3W!UV M,$%/`ZCKDP=3A#EZ4CU5GNHGX(\@@`2B%R**V,(L:C)FJXQI"NS!G?.(X'=4 MFRH0F`D7RSX*,S'=VPJX\%X4%[VHBL/R<9EHM,'0-XR8W2A_(ML/W)3$M#*I M#L4K3TP`R?E)BAG,^UXR,<5Y3LPIYA%3B1G%/&(BO[:86N'"5(D9,F28>:U0TSY(G;?00MNX M\*XW+#U1!PG-GWC%+&0B,<68ADQ")B)O(F70.&0F,AN9BLQ(9B/SBUG&1&0Z M,AV9.1&T6Q'*C)$>NW,T",HU/K+G%OUL:_F=\1IUI):"JZANWGFQ)9B@RIN0 M-`B&"Y`V63!#EAG+=)/1,KT>5E%P--%`T=E:'/77)YPL+P M6)`]/8JO!0>")%!C86:.+]Z)Z1?D57B*MN@`K&;>"I-ZU\RQ$39S_335ZS:& M,'9CW`L03SK#PX&\NT7V>\Q0G8H_RB/&9;5XN`]5F=Z9X\/QH6O%U5-4:ZI) M3=IT5(_Y10-QG[FTH`92`S#L#>=:FB" M92(/]Q@VWX`PB#(,_+7`19QJIZ/<98D.>9F[3%YR-(&7Q\N-9F4OQ(&"*6F2 M-$^:DA?)2PE*RW*:&*R0#]R$$`J,AW7$2L'2.60JZ1X\](OA"#=(DDD\XJHP M,GL@ETR>YJPEJ`G)Q)SY-(^:E?9FAEH9+.6[PH M+8@]B;#$H]!#MZ5B;#=A-@X3'P%,`8EB@L>I&42`NJ:6H4H!FSR,5\/7`08J MQ?0;$S`N!J@K23*(V->0D=B:X*6\6MO$$!&LX6O::Q@/?TT&T6,&UH."X(D0 MQ0R;'\*#"UC)=J=2CRD M8Y(>$9\82"Q(4YC/?#M`=N:841[@9IV)!8W;OFX!(I([A0/Y"5FRXQFZI)I0C*V+8U M-T\FA"@,23KF>U<;\V-,-X5K?KW&9C[37B/:A-%];#@BRC4L#GAS+0?OT6ZN M>OQC3T0:E_0DM3F'F6ZMS1PR`)IN&DJQN>7<9$QQ-]]P7S\]3FK2W\+?1"A6 M*V4KOS>'3'U3U0.^>6X^$5>;'!+C27;3UT4=LW*=0=1I*SE8SE4(7H!VT-@0 M]&AR%,*BVQ4C#'("$;2X>HB,\)84"!%%GF;,X!1Z5?(D)4[YY6>3,07GH9OD M,UDHD\9KH;GDSE/C4RFI![\?&AFLB7>'BZ<[^=+=+WEBGJ943Q]-9.77NQ!* M/?YH1,[BBGJP!4+CU-9E,(4Z/I[_II2SO&E,PX>-U5AFCAETV'2+O6GJBK.) MZ!Y-A8@ATH0S2'B-H"(>-6QT+#E02/6N>Z/C.2?>;.PU+)L49SZ3#R?G)$31 M.3MRXB]KS4B(`Q;I*JXH)Y<[?DZMV(!S:X(`:7-R=]*;1:ZV&Y_MD8/06!Z2 M_KIJK$G'CG<3,B/I%.M-R+";VTTK"*:3$#7<%&]N1`J9NA`1M@I-"H5S!>9BQ(FT MO%YOWZ#@C0QF_2*_(H0)0`8J=31ZSK6&DR';D7V,;F0?OR-H9Q\&@G*&X"FM MEZR5\J6!!I0O!<+$66MZ.^UA$[JQ6K@3&B=AVW*BO+2<$K;`IK62&N3DS'0Y M':>!A_3$8V&^3!('QN`J- M:,A$-A&R9+_@YP`1$`R0`80.;H,SP&C`.4!TN#5`!!`3QH*)0$9`!?!7*!-H M#`@+9(!L@0+`Z.!>(`U@%"`"9`%7@1Q@"L`FR`B$`3@/0``&0`'0 M`8J>#@$Q``H`M9`"2`.@`,(`3D\4P!2@6!`78`J0`92>*(`FP%E@QV`6:`%` M`;\\Y0()@+A#W3`*,/"08!02,A!3#0&SO(!!(%6<\X@-P314`'.'N. M`5``0H"G@1P@#[`K8`%0&(*><``40!8@!<`&>'M.!5(`$CRU9Q7`#:`C2`$\ M(&`"#B(%0.03!:`$"`,8!N8`*8#+YTD@!?`&0`$<%+0%GD])@1$@]*GW3`.L M`;J>;D\F`!W@[NF*2!3$*$H"L\_:YQB`]XD"6`-0&+B>=3+##\1`&L M/G4$+H"BY\9`[8D40'T*&-2>)8;2YV'`,B#X+`,`/MV?:H"W9UP@!4`&0`$\ M`:0`3@`F0`K@&5%0:SK(/H.>DL\@`!L@[GD$``*0#)9U#!\UD4Z'X>`9H`1`#7Y^@!)@"OW!A$0!$";4\4P!*`]=D2H'Z^ M!MP`GD^)9_?3\/D:&(#N(FF@2P<00`CT6'#V['U.&):>3(!CP1H@^`GZ9'HR M0,]$,($YQ!0BNV`$D'S./1<)U$_W9QG`_EGY?`-0016@3\\K`"`4*&#]['T^#1"@5=`%J/[S6`<3&.@Y M"&:?7]!-J#$4[ZD%.`Q$!=``0=`71>AS"5`'&`-8/]<`*``30-PS""#X['J6 M/<<`:8#]`.YSM0,3T"8I0?V@2H`)P81A#"H,"H*B`&("7H']YRAR)@#YI'JB M`?X#>,\[`/7S(F#]7'H*1'N?-`,WJ/'``IH"#832%8(%>$\Q`/5SPO#T#`)( M`?Z>I<^FY])3,G#W7'HZ`:8`44^))PK`4?`TP'NB",:>O4_[0!A@.(#W1(F. M1-L`U$^)J`HT#?KT'`'81.VA$M%!Z-+S=N#^C`D`!GRB.8$\@(BA(C`E``JX M0:<`Z-##P.+SZ1GU+'T6&J8'4X(<*%)46Z`B$(/*/^^>;L_T)PJ@###]['VB M`0H*$<\)@P+@Z3D$.`SX0$NB9-&NI^03)=`0?1H01:6A6U%.Z&1!^:`$97JF M&J@,9M&4:-S3"?`&"'^.)=6>-A0I0`O@/W2]\`B&/PT%6H6:IUD@+:!RT$?H M/!\$F()R'-#38X`"6!K``1(,*8``DMHS!N#Z['G.`/@"6<^RI]`A!3#T;"0( M/E,`$$WT9PH`1%`2('^B0(>>,X(W0&F@+8K[!#_M(P8+[U`C0!O@'KI)<'VV M1E$`AD_`IWV@Z[GU["]$1<%/98VD4=8S(XKZ3!2H/>4+#5'3*.[SZ7EE>`N@ M0)>>E8$<:!,`"I`$N'X"1*>><,^G)XK@B<`5+1-@0LN?^0@4P-ASZ@D=E7Q* M1\\"X<_4)PJ@"+`2I7ZB`9JC1\_V*`I`.AKWS(ZZ/7FBU\_J:*$`[_D=#3'0 M#!($9P#+P-W3-JK5ZX?"/9>>?X:"*`I`)KH5;8+Z/L.@9M&I)PP`[\D1C7NZ M`4`$?M&T)W!T[%F/4'L"2)>>D0'2*`I`#7`1B`I,1*^?Y4_V*%,`*#`5&("Z M/5L%$0:?`%$T18#[W(G^0Z>C(891`U/`#7H1,")T$.*>!P'::&>TH)8$%8H6 M%,Z>8]")`!?`-%(>Q7N>2/>C;X#"`.\SQ``7T)&:1Z>>+X-N*!V`3V`5C9&: M/9L'>$_]Z'NT1^K[_(=V15$`]]&I)T#TZ7DL:!:P`28,8@$40'$@P=`&4!T` M0R>D+]*G)X"404J>J(N21"L->8`CZ5GR.8H:$`-,!6"B8U"S0):4-;#YC'MV M2!4`4T\`Z=/3)1KV?!KH2&VDID\VZ$K@=@`3I9,2",@`?E$-A-KS"9`4,(O6 M'8Z>FE(4@)IT[WD6D'H:2"<"2U**D8.T3R`9,`ON?V=%,*5MT+1KQ_)2F M22L""09`P_4S(0HFE2!$&-R?-U+1`.A>P`8:1KT/XH&F`B\ M"GH"8L\$08K`*.KVO#+4#N*C-@"K@V14*-H4=8BB/@$#)E(TZ=33JA`0#2BD M25$#5P;;YW14_ND&Q9%:&E8$4=&I9QOTZ6D\>)/>1S>B]U*U:(B!/[KT#),. M!\BD5E(T*8HTYG#VW)1F/(VB#%*Y)/3S0HH0?9&"0\N?(M&)P*^@3W`D_8]V M/<>@W`$=0>V@69`"`(?.2MN?N$]@*>Y36'K]A#"T1=&A9@`\Z9G4>9`&%8FB M"!JB1=+*@#JT/[H>W9G&/5^F;%)S*:HT5\H'K8M6`8P'-%***+5T#-H>79CN M/?&>25(5Z,Q4/=I#:B?<%'WYTZTZ[GT_"I82R.F8E,40.T@+VKV3`-, M22$43P/<9YZT_-D"!8<:1;>>`]`C@1&@](DTK97*2<>>/E+W)W5T)4`&"'X" M2E6@/X%]0F?4$VH#Q9)J27N?75*`:1MT#)HBN)/&/8L%Q="M*)LTPK`239O2 M#FX';M"^Z;XT.XHII9:*1Y\&!P/`J7H4CW`?[7U22"\"]M*U:$.T<)H#[9!2 M3=NB>/8&S@DNT8BHK10U$ M1VFE*):B>$H1&)-B&>*>EH;,J?LS4XHF?7K" M!G*DZ-"SI]O3TD`L.)(^/@4K>`3Z`@010F?O],C"&BT>:H6W8]" M3XFF:%-+J07T7[HC'7NZ/5$$$P+:J:#TOK`ZF`@@0`^G<5$T@($4;#H079LJ M4-6F)%#RZ=-`<,HQW8KB2A&F*%**@+)T;(KWM)DB3ET$$X;?Z1>B<0H@19FZ M`5`+@(*`:9O4)V`?)9#N2R<"4=, M3]T&40&(Z-(S)XH"D)I>2><`>0!B`94!@,HM=7_^3O$06]#`)X+4#2#V](&. M0D&F_-/G*<`&V)W2 M3(&E;0#HJ"\T#)H#C96B"!ZG(U'6I^34%CIVD%WL3U&@,U$8JF1@\;GT;(." M1^.>I8&P:=$T,F`P51V$2!4`:D\D0->S]RD050O`2A6I;L_(@"24\(D=99,> M!"P#!%+5Z9X4<9`W59NR2=\"B8&U:0!5))HD&);&1=^G)%`&Z4T@*'HF!8B" M0Y6GO(.K@H*@@"I%=:;&'(`"#]3!Y^)33EHQ#3%\1\V>_=.3*0H`)@HY-9BZ M08L#H-2M:#AA>9H#;8/6/P&D,E*Z@D]@0C`DG7H>#:X*!]%;:1D@_&D;+3_$ M4:D`:-+Z9W$@2;`2N(Q&1=V>Z%%JZ=23"\`%X`C0%5BF2T^DJ95T6!IBB(V> M`?(`(H`'JKV4EAH N:0O&>E=,)P]03GMH671744\>>8]`KJ;_42SHE\'PB M1Y.!(-"K:,O4F)I$9:"B%LH`]E!6JGU4=9`A""?$4[$&AP$Z0/B3ZP%+]8=J M3X^>9@"XP'!@2L`FM2_04+VB_5)<*=6T`@HT/96Z0;.C/E*`:$:U58`[79RB M`ZFI*=51:''`*&H0O89>3A6IS=+B`$J5!+I`39OJ4K,%A$_V:*/T48HN;1B5 M^JBI"-4-ZK+T@]I!183N`>;,^GYUWU2"I!10$H M35\`L81C0I?U3J9R#UNTC'I4I2$<#Y2D`E.:J&650H.SY[I([0D&-8:J M3MF>$U-.?^5(XP'VT_NDP[:QN3=F@0-,4:(AA08HI8$Q\ M0N&D90`^P7_`1C`&P'W&/Y$"/]#K9Z(TJ(`579TB#5`"-H+(P`#TZ8EEF!`D M!O">6X`4`,W3"!#__`'H5X.>I<\N@/3TZ/D$()%.3XVF[U.>:!K4G\H1M8]%(2*L'TJ(HSG3#$ M/Y6HQ5(E03=5N^H_/8W&3WFE+:@NBNJBUM1U*L442>HVA4N"/74-F-`^:OUS(O`SG:0: M0WNF*`#]0((A_'GG4)4R/5&?7M8_PT$`)HHBQ9$>27NI>,^-`AYTZ1D^#8-: M3C6H<<^3*('`L5H5E9XV50NLIU6I0S\42F`80'UB"M2>0E6OJ.I@:PIDK:I. M0*>>4P&>`&DU[@D7L`Q(1YD"8M&IYTGT++H\C8IB1U6GL=+L:$KT:7`2=;2J M3U>G%M)K*4$T_.GV/`KT66^J>H$.ZS`58<`F#0.\3FL$U\_90+"@-P`1O9'. M/R6K%`'C@0\U38H[%:5619V>YM1(JO/4RKH5K:.F1+>F5E5W*H3T+&!?Q7N: M`5`#I5++:CIU=FI6)1=!0/.H5%3!9WU@X3!(38..02>K>=5`Z-A3LMH_-2(4 M30.J#M$V0$!A*K`':!38"`B?+]96ZF+5NNH&_0FH3BFD:=.N@:,@F&I6?635 M1?.KA@+^*@K`OQIP1:)^/@6N!%<`*PI`P)H"V`N(49P.&@BA*&<4,:I?0'G: M/%4.&H,[!W.`=&`;98V6!!((>U,4@`R@X?IT8`X$/=V>0P`D0!#`*E`$2'J6 M2'FCF=$_*PH`"I#T['T^`?0/4X`I@)^UJ7H5@`(\`9@`3X`C`+]`YVH;M:=D M/7>CKH61*Q51[6D%2`-<5(VB8Q35:`N`+^`:]7H&0E>KM=%.JETC-UKZ#(X. M5XVF$U,\:*3T,.`6!97^!`@$`=3EZKV@//I0=:UR5B&FTU(\ZH/4MZ02<"LE8"P?(4(GI3O5[41 M6`.K^%&U9T%A=EHKM:)V2*>>;,^8*IK4[5DUS;N>!1ZHEU<$ZU:4#&`6V+NF M"#RM1],IJN<5V>HFK:$N/2^IIM6;ZG>5G9I)]9*.3WV?;M6E)T5`V1H(5;"& M2(^>V]'NZ/N,43I+10'\0FNE>=+;)]_S53!5$'P>2<>@^-90*X:T:+I%Q;!. M%9RN<]74:_]T3?I5'7O6+"*C8Q3A:0Y40`H'\(N>/YVJN-+6JH1U\KILY:$Z M766L=E3(JH;U?0I*#3%80PF?-]+KI\%4,F`9`)5^4>NG4H$)0^ESJ?H;#:R* M3)T*GL_@H]HS/(H"H*CV29VO^-/(J'(TRUH96`.(`/BM=55&*Q-U.E`&>*)& M43FOJE?^J!D@Q,!X19+V3SVK3]+4:W%5GAI_!;MB2?L$9P$>:UR@9(IMM9KN M49^>S]8LZ9*4R=$/+0_81WNEE-5UZMX3E=!;!8N$^#V@+6),HCK3#4"JJBVT]^:?RT1I`E)8I. M/R6K9M:\ZA,VG5I,I1T\$=R@*=B8:J64A+H1=;XF2!.I:5/1Z49U<>I9JXM: M!IX',5&@*0`O54@*@@`T%$7A;PN/4NP(E$G:F6#]6D>=7M& M554$YM&G9_#UOSH3T$"08M]G.8$=@4'M#O`&E0*L7)$`*EC!ZUGT[EE9!:M6 M4_>E4X7:ZCOU!+LO3<%>6L<`-`*YJFTT7=IAK;Z64:^?UU+6Z9:T; M7?&ICE/::^24FSKUA(M&"?JL\5.W03?V2MH3>)O.`#:H*-$G+-XS6%!Z_;VJ M/4>CV5:]JY_UZ#E:-9]>0TNBMM$)Q;7U$ML#=9UJ8G&?C(FFZOR5:ZI418WF M!-2>10`\0&V5*KKX_`TO<\A@,YU#`IP#7KV5_^K(==3*,(5)AM@=<@>/:$*Q5>!J&,E7AJ%#<@R MB>JBA=9@*I'5TFI,Q7O627.H8-(ZP-O4!I`4I:?*7[VMU%(%P"EVVBKY),:N M4P.Q9X#P9_-![4E$C0H419\(`E@4@.?3(CN'K7]N%)2KS5.NZ'_`C3IV"#[5 M14VH6U%TZ!-UDXKZ3,**6A.H?=2\]"@3TT].HB?7K>98L(;M#(@/CT^@D@=7MJ6I^P3P/%)UNV+X"'J(N^ M8JVPRM*IYUF6@WI);:Z^!GZHZ=)]Q(E"*!H@KU6L*@AUM]HJ.)B&&*JK$%.#Z$`4+SM&[:(F M99>R35D[*H/T[."9U;`J7@^Q>=*9ZB:UMQIU10'(4L^FQE"3:@)V_*DV7:5: M8Y^@;\\!*DV51PJ)M;`.3HNS)=2W*UKVG&I21<].!,X`_-23ZD9T_CF=72W( M/HVF8]!5ZU2@O4HJT">@0*&IE-G-*W%6NDIA7>?M=GK"#4^+J-M8:R M31&SM]FW:MJ47@H>O;6B`+`,;P$:0@B!1QKV/)+^3K5Z=5&MP286[SE=P+1* M$`:JJ,\#:]/3EJKVU`_(`!X/7H&5M&NPU>WZW0!BUIY?7L2 M5DNS4X$BJ,Y4%0NAB*(V9P>A(UBC*:'4Z.DDI7Z&/3.Q,]'L*_)T3"LN59;: M6N^>FM>T*:>4]BH3M;^"8NVNVE=/[&.U/.M%K8]B59>KFEBYP"5TI?I^!P>MBM*,U`6X!EE2]D3V&B&M1QZYDT"HN@G7J:!2P#0UJ\)^,U%+L]]8<: M:JNT#%)X91S511JG/:X&Z*-S367L?D*[V M5;.@^$*AJ`&V@0I4Q80:8^4$O%G%:M!WC7]V;!^B"8(MZK04.?L][=%R2.4`L=<>A--P?[H=4(E6 M2@.TC-HI@3T6Z@D(U;!Z9HBKGEHX:;TUG:I-=0.,:O6DI5H>K=J4>7I.A6T8E*(*8.TM85DC<,F82>RY58:*D0U#7KY?)*> M:INJ+,\^J8TV][GVE*J6"?:E)=M):TH4<1!%]<(N/8L`6`"::Q$@Y^H&!;B^ M*%ZR!=>%:[OV5SIS!82:9%&RE=$I0/CSZX5=%HZ';DJ M:4.P_U/V:%E5TDJW%=7Z;GL07XB<:D^`REHFN-RR;*^U"5B9J]\6'4HN-=DR M1->B=(7K)W)5;NL$==[>5E6@LEG$+9U6>KM^[9I2;[FB0]A*Z0"V+FMU*#Y1 M4X4`QH2[YTY6W*JA#9UV52.V;-)@*8`6#/MTQ=YZ4\.BR]).+'DP[UIOI==F M6=.IUD\Z*0JTC7K]C)`>4Z.I/0B_0!RUN2"O_5LT526Q?]IK[.N51DJ#G<4: M"IRA[5![RM"6+\"+30(X`:(`OE@GP!)@=^M4=<+B7;FO+]:TZ?RVR0HW;:\B M7A.T/%,6;7FT5YJ?_=>2!'*J&M4QZ,\4?VN^A8_&:-VTL]5C00+V(;NW[8]N M37FLSM?LJ8659NI"=;_B2EVQ&M9[JH+6A=NEO;NF5;FE,0<.*A=@[5D&N`-P M`5(`(EP;K#Y6FCH#%8IB9,&AR=8:JFAV"%MZO7Y^38FMM]<^ZM,3>KL5Q3!8 M6+VBO=)@P:D6C=L3E;EJ6BFT5U:T*V35%F02$$TJ@9Z!"WWP`(" M78<`5E)&@Y:U5EI0O3L(;..>$5)^:TJ4;.J"11'`8&VF"H"UZ`PVW'JU?0UD M;96U8UR':!FWMUI0?4&`0(.>2%<7P`S`-]I4+0+`1,N>$M&M9["`:E#T9.,: M8V>Q!55A4,15X0IY_;HN1%&V&-K(:H@!Q\HR-9F*;)^T3\^CP;ZTC\JT!>"N MS:+[T-`M`%8E>276TA@%1JQP@A>N-Q7L&7V.AP=&"*M<#C$L_?;(R M!<:RJ%K1*SU7QQJS!9J"<'&PK%SVK-LS23H&3<%Z83>M4*-LA;:N"3@VZ`06T*P[62XLE)8]. M5<.F@2 M2V6C3]`0PTLW-%N4':-&<%&JRMJ#[HS`;6`M#<(>2,.>#E4>J0Z@.;HBTK/F M1B>JR0_QI\DUY#J+?;F>4Y^MP())K'C4/II.1;MV:`.E>=1D+@G7"WM*C90V M"JZC&=K][(L4T;I][==R:N&L@E*.ZM45K-N&+7HZ"%BV@M6ZPQ3B-Z"&':W* M82>L#5,2:SH45"J)#=1&*"KWF?I9;WLPW;%Z M=#F[@5KM`=?6C,N80.,"1$6[*@=KJ\!6\`G7-8_6/Y^H]U7;KN;T[$G'E:B& M&"BJ;%WWZ/)6[@D%@('&/3<*E%>F`*/ZV34[>E:H`$L5=^P3P#JIQ6@Y;H:E;DV!HH`PM#3[A,@ZOGTI`(@ M`8H`>$^:*_43*_`$F`(4`6*@E=59+%.T"N`$&`)0`9(`3X"/:!ZTZ;#7+7UN MT#W5-CJ]FSC^L&W>@.0)&[@X7]J5=WLSNRW9?J MQ.]$PP&06J"MA/8DV$BZC`=UAKJ74EE!H\($N59VZ:%)J1O$TI#M"3`J856JCM.I@HU`CEM9QL^5A4ZF.W2ALX1<^N8#.D9D\U+R4U?KH12`'L1JNO3UA4`I<7OBO!$XKR M1&&BM-DLK0O69LN*;;O23:^RNU19;2"4@@KH]:#J!R:BTML.Z4@W#V"W[9-. M/Y>MK@9T+?(47\N)U;WB`>R[YE'1[IW#-NKJ?=$.6)FN85B6J7P4RNO;_>J6 M>=V@C%04J!>68GN<_=_B;3D"C=KS*`FT_GFX);]655NO6%4OK+077DE-W16\ M2,>@1MK/+2;TS!M3G=A"4*&EY%I@ZH\V1<")_=[.=$^C/M/RK="T#HIH';02 M8(^>[5(^@8)U-)N`];("2)&[T:'_+*T79YN(.'K"3XNZ6U@;`5+761NO#=-: M2#$&750Q;I:4GVH4E?;. M(?JA15)/*>'SY8I'E<22=^&>8U`O;R7U@\O97>`B1Z4.C5/(:SDVV\O19?JR M89>>1X.X0*=!U]LU>"+D9/>Y@]EG;=G5BMJ1WNVA@((Q4P`),"/P,6"`'2Q1-S*J!2@$`((I0*` M>&F>+PBO`.6W)#"T%3#P8H\`-5?[9Q7@[SF-M7EL=6D$-KM)?.B M9TVH]E>Y;&5C^IE+1=>.0<>ZO564A]K3Z^IEG0V\9CL"I\\3JR)U5PML-=E" M9ZFB=E3,JX8U:NN!-=%B"FX10%FK+SY7IVHJS>0V#V"B8]'+;GK6-$M5/=B" MG^*H3<]-J:&64EM6]=KF<\&T1X2I0-AT`*H&$.OR>:6WDE0PK%Q5LNNO1>EJ M9NNE5U6Y;?0V[ID@T-SV4Z&V(0;[0A0V,>)%FF)W$!=ZN2S:JZ=&V?"(-TZ(*5M[M49>,B M5(^[!U;YKYLUIZNU_??:2GV?H]+TZM,S.VH;Q4-04^&>\4]X;KCV]EIA'82Z M4"NI3X,VP+X4CWHB#9+F9/<`,F!CZ!@V[0N:G?*R<14+SU(M;[%`W]OQ)7_2 M:IO`<-+G`13XTVL$Q13@!.*HP%]L++Q7``PH[=\>2+&X>$^V+DFULAH%WHI. M@5.D@]#Z9]7V[5GJ/?4N3U$);P'M;6_6M3HI)0"G45\#2F!^:V653[H$AN'N M(\::L%HJPT4@\:I3?;U2"OBH+UH-+"H!)PIK#:N*9'NDQMNN:?P4F&N'?;]J M@0FJ/0B:2&XTFTL#\(T26#>A94\/@[9`)YO1+7^R<`V^*-"M9R#WN9KW[-G^ M?N^_N5+%Q!:4G:M(K7_N7R^C:%$#*7/W]EG!S;].4D^]&]GM@*7AY(NIU>," M?+N^>FM!M$U<)S43LM!I?4&;GG`KMJ<*@VW),IT:*H> M@Q,,:`'49R6"!OJ3E;CZ1=FX00`2Z6>WDSM>/;,^<:^FI]C';O-WD#M0S3J7TVX?E?.*_VT3``1C9_&!5X`"UD_P3;V4&N0G8E" M1,&\3(X.Z['@2`KFW3Q`/UVRW.#_:D.*,&<2+I5@7'6Q&HBB[>:WZ8FT_?R" M!."5,`&3,`A@:#N%./VF?I\`J]]!;FG@[FDH>$)H79L/((6S)"]V1D`[_;H. MA?^KMB2Q+5)8Y5`2X,5:!NX`#U2<+NBW(67HU0GSA&FYXM.P[`,UZ)L&C?QN M'JP.7N%V*%@X#)H'<`@+04N?&%DP;[ITG2MP->*.7VL'_U5M;3/T./D57@I# M9KO`"M?Y[MA![8D7GM7&6@.I]%2&L&*VT`L3^$(,@P6N0.$2`W05+ZQQL$#@ M>C`6.V&;`"WW*NSC#0P+A/VZ5MF/[U7XS;H?9?Q6A$VV8@"GF>=5'#`/MW)EKQQ5(4.4"C*&&[<,96\8LH.#VT M0U.S0]N8M9H$T:#M8[;D)/?72"`"^^P1(;637!2NDM1&4 M"3H(O6&;@%8W..P$J*=>%4JB-$^,!1/!*Z"!2`ZOA8VA$P970LCUE/L:B`Y? M/ZO#IL]:00XT.ZR_E?7N29/`E8$C:>DT5LK']==B=E>GM%_5<`.6[NK^M`W; M!"P0A]>V:#;8D)L"Z`TO4R:_"EM%*F"6SVM#C;/22&NM;>!K++X7.RL;UL<> M@?.D.-WN@!$`'/H4COP*@[JKC@BK@QCE\ML8IN4RA=N>"M?L;B"40`"L1:.J M"+:QW=(402#810L%&=RMZ7_8T>`G=8-><0&\.=^@Y\=T36Q$@`K3(<0H^%`YL>F73DP15;B2 MB:_#5=JI)T86JROM+?6!<=.[TML"L?@W5BJDG>H&A!6_3UDKJ;;`B2L&P*&N M`>"^\F#*0L"C+LH0:`X/?TF@<5H%Z^U5PLJ`Q:;:/=D$5MG+K-GS:6"WG0(/ M6?FUYE$Q;MSV'QH;5GRF@*G!!M<=,(:6[[K)[:+F2?G#W6)`;4H8OJN$J(NZ M6P>MBU8KJE.!0SK_G'I.!`(%GUXG[K/8TRV M:5FVQ]VW1_%T)7HMGNQV4!.BY.+G`J*7J[H6]:H>@>&L2\^3P.`5#P`EE7O^ M;Q>F*]^HP&L`1KLH]O`0056[9BWQZJ_!0:#2>T,%(;CK'RV)YHD+E%< M6^?%,=0K;(9V%+PO]L2Z0!\*O-TR$=H/+:546Q`V?=I> M<5_%`](=<'OU80M359M&4A^E>=%4;YF``WM4G:?:42&YHM47J<'U\JDS[M3R M7E6I!P'I,-,XOEL7?1MOC1NQ'6+1[))5Y>L25:5"?U.BA]%/0<6U!$`6&/`F M"NAN!U[(J+K@#P%R+7VV@G$"JM*3:V54YCIXC7YHISU;E. MAZF>)%Z@J]!U==6&N:-@P;RDVC5NE!=62 M<1>^F]J'+=ZSF?NQ->$.=RVEN-+**@R`!1`#8(&B`%P``&3#*;@41.HK'I&: M/V^I[5W;)P>U"'R--;@V>BFOO%I.[2AX<4M-%?M&:P/"\-DHKH>T>]P1]J"" MB!<$SM/$;/G5K`H)#GHN/1N\O5&QP]&3"6`.]7V.@6'!=F`P*ZR4+:H++AJG M@9&CU9%GJ,(5SPH.O9).B,.@8M:4W#5ME'<0;66?L\7N6J M?67&KMP_A8`AAYP%?0DW0VFY0X"9<.?W\ULJ,;)1D4N_M%S4[XAW]=O9+;J6 M7(6B3U.2,'GV2EH9H!9\;?&S6F!@ZXH80;PFE@P41!6N5U(EP51@6[H?K0%? MC7&T$.,2,3#7CHS[/*1B6LNG".*;L4"XZ&ID$YZ:7B.I@=2G;1\5JSM6#1-O M>46BY-=_L3\4($J;[9Y"3)6V1=.X<=`8:KL5??Y>:"VG]5]<+QQ8K\HOYN7> M?9L/0M%!KQ(5ITLS72++2EFL,0<,;D`W`\ND_>VR81>XW=EVJ=M6YKI[E>3N M1_4#"-^&+N*7:.RD_;RB30^P#E0-+:[4-JH7>!F#;G.T'&)1L3CX!ER:O>]* M;\&QP5P$+597T@H;UO5R>XVQ@N)";O,79^PH/NN^3Q6K=M]1;,+6MTG=7L*R^YV]M1!>$"D_?!O=N>:!(6"ELQ=I%:9ENM>,]/<6'8;YP%OM#V M:\VIWUA$,F?874Q(7I(.M`2V\]GB0*55Q7IB[7I>/BNS5]>.:(C!A1O^!(<> M!1:A&-07V)X;"/!<)II_1O#7WN]6V!;[Q=X,!O,?;TR5VL$EMTT\`!X)[H2X`@` M!?JJ#HGB;H;X]BI5YM1Z@@G`;%=3ZM:XI-LUE;3^8&.LRU25\26T63LU?B($ M89&FG&#F*4\TA2K6+#[]9_._Q]<*[@YX7TLOUMORAX^^*F6O;ULWW(K3#=06 MBHFR^]O#[42`+(PK%L5Z!?:GPF3=*OWXF7L#'NZR2<&QCE\TJRC6ED07CG^Z M9/^>B`()'F=93JP<-MIV?H7"E.%1['2VY&H%D$;9 MB(L(>=@9K!+8?PPN#17?DF>B-X+9J>'T*APA=0BKB.'";M43+8TWZQG_%`ZW ME(G"*@>+;(.`QIL4K@J'E#O#(5?!\-%SH?SQ;17'8R_)B=_%,*$T84L>SH'J MEA&RXT^%ZZ36>\P.'@PW=!>UX5*JZIGX^CE9!MD2@%?&-M4>Q*Z8N5S+Q83V ME@>Y*@"'\)TCO1QR72]WD-G!2=CN,JHX?EPT+2;#=L>X'=6Z[5H9;\N^K:GF M2N<00='R,N<5=QII"92W(]=L2K!45GTPF3107 MCU.```3^\F>904JB$#"XATW+*]?_Z@"P';I:8"V'D7VQ4``D`&R9*/RS92*4 MF>7$/>&0,@9TPEJ5=2;OE8L#>`![Z%R`?4H'&"X7+H<@]")F!FI@K?EB6X!.;2IV"XJKHOQT5P>=GM. M7OO,Z&58JGJ9@_SOE0XGF&FU)5B=;[G5F5S-S2UP09O+I>;R+*#YPUPA1L2> M`0C-O.:BYY]5X;KQC?:29V^]J%B5,9=9XWE`5GM&EE&?^V`'L]P6@\R@?2#W MF;^JT=W#+)=7)$J0E1WHB1D3C=/7Z:7VH.Q%';SZ4!VL3-R!JMD83%IW%2<' M:1?,R%:WJF-VF\S")2M37C&])%PTZU36?3J(I<.V`4RK\%T',:S64.ORK8." M0]6LS%/`+IW5!THD_A\+FS&WK]FG:KQ4L"HS-2^K4[.QF-B4:!`6CWIJUI.F M33NM865`@R&5G/K=S3AO>>&[3@ZR;1>5NIJ\30/(<3O*G-LI;L[TI0JLO1T$ M!^2X-]*-`EQ@&XLD'NT2 M'["TM-I+JCBVX%QC)A=/8)_-'6-I\SCXU+Q='9\&/7?`N6,1\X)X0ZKGW?$V M8.L[4L^OL]KTX(K7343@B*\97-.%:G-4U6P$P.L2%M+.(=<8`(CY-PJ.)31C M:B^].E]M;`>9J-MQECN+1.>D;E>GPM,V"@O?M>MF/3>EG%B\:4-TO$J371## M9)^>:@#2Z(NB].D0#K@^/7<`F='?:&BA\CS(O3ROG6.W#F&:K=EY2NIVYGYB MGM_.;>=6<`OTSPP;(#VC`$S/DU#`&U3LCP=>>S\]U9^%GZQ!T7 M=YW-;5M7,P(Y#DPSP-!J5"6H<.?1,^KY]NQY7COKGA6NO.>II^^Y+IL?!9K2 MA^.PDV.GL:N7F'LE?:*"8N.YWE(+;L,89SONG>V61Q>R@^;Q:MRWJ1I0YC[S M9#&T5U)3@:#@J\HF1:,6!N;&8X`':AH@_#GU5#?W1X'%D^.V,9_9X^STE!2O MG1.@I<]S*@.VV^P])NJ*AF?-MM(YU" M"2RE+5'!,P35`DT"#?\6GKW.<^1)Z)UXI_H"1M/R3VNKU&#XKK_5;0P1=LYR M2;VJL6)\;]&4/LPLWNX:3#VRO<];<3?VXPN.;2-W@NVT<&2SZ(75[-E;I;C2 M/`6\EX&>9WDP==QQ91W+CE'(F5$(KX27PML"L/#R"S*\2=@-;]S3PPOB!0'_ MA'VN)EX4;XC!>FP$8/&Z>&&\,EZQ0^PXY%H#V,$^AG/,58`20VN5Q^P&^(;^ MF),*0>:/\&_U0]MC1M`>F?O(269S,JH8%?Q,Z8>V<_?!Q6;YGT]&@)UE9[LR!5GJ*HG7-M>=2=(=6I(R84(_^FBG/+=#2YVC5,OM$8(+> M!PBZHF)YL^@5&YR3M?Y";CJL!>#8[-<5-F#[?);.=46Q@@GT[S+8*AIT[A*[ M=$.TF=H1+O?5[;D_OG[VC]V@,H`'ZC8W%PTZ/1#SH@?+NEZ>@!J@:3>C\=NFZHVWLZ(=R M1N_1*`![-#\:ZL`KQGONHTL"K(AKZS9WZ5F-_AV/7$6Q/L\.:V`5"!I`_9NZ MD9N\GV@?:+"7V;Q781(U3E_0L=\>0![T-]H*_D/8'9"LX00\@/T9!2"2=AH> M/1O2G`>U9S;:#3H#>*#2``RG-@#49V&!1.%3?D7C0:>>+>DW[#4Z3EN3=H-6 MHY^>16D-Z0-UY%HJX0LL'3:F20`2*`NWE^SM)11/:%.G;%+C:1A4MRJ)S9-" M8?O&S6ARL`AW]:H(GBDCAD'-C]W\)N+`Y7+!W^)14L6J>>462NQ\9@+R!@L/QB?FFYNV/[YQ#`"5`%4`B3 M6H&C!>5;K;)6\ZEA31_O.9"L&531*S/YZNMQ]L!Z5D>ST6BRM(^47BM0I'B$S2)D.;X^LYPE9).`"&+FJD&.I'V,P:"SXRWM^[>C6 MD#F[3N0J\+^6SG$\;LTV3X^_S](\K/Q4\QJ%9?Z:FH$%Q0%)LK^W4)PV)4VG MA&O&F5Z\,607(TN&]24;2TNI069?M%K@YRD\3;^ND0>_TM?>I[\W5NL&30/O M9R7)8=\F\KH65EP:WND.3#^TR%17*MKSZ/F=):F&9[?2X]E;ZCFU@'OV_)T* M)OJA"F#AZH%5IJJ>W<[F0.4+^=+_5TVF8.7Q:4=560M7%2+/ M?__.;T][K4K45)L9W0@>A5U9,+4CWB4S6E;": M@]NK]E3?+N+73!HKG1"_D&?`KMC[[]JV!LVJ_8>V!$JBB-8ALL]TBYHQ94O' MC87`CE*IJ;,4<#QXW1NG=9/`C>"TLH<:2/WOG1"7E.V?P.(W+`(5%'M[M1Y/ MJ8_*Z-1+K3.Z^0O8WJ_JA_-P0,<;@#4Q)/N%N:0NS6VHI<'MZ(0L&WC&L M>=_+_][*)YZZMNIK):6Z2Y>M4`(^@:'Z6(!*P"HS'4;-;%NGZ(2Z,NJQI2R_ MIZ6U&EN%Z,IX2^QL-1FGA.<&Y\&NL(L1C%RTM8AV?MG%?](HLM-P+=!TZ!'4 MB'W"OUB3J&GX7XOA^.6"8/G%F&KZ-'>Z]NM1_4X+<#NK7^K`ZLPV)NTXC8FJ M#MJS2EL2L90UYXOKQ:MR?3G$^5,(L2-7%YU'EI]6=Z^DM.3ZM&7W7&P9>*7F MB>.T]%)0\CM5+2M7=7O:%P:W)=%++WW5CAR$#13;?7$])0I+K#IY.#P@+;,B M=B/"H#&T0&8CJ2"6.]RQ7E<7HO>N6]1N,0#7[;E/B*K. M5U?%:%)IL6'7R,PO+9T67TVJ+^IKK#25FA$!OKL&E2W)U%U>-=;5?=O$/>V& MJ_O(\&2SZ#^7-"RZ-7LZ$=3`/V M7G&@O5Z.P)!8:JH\OA[+2MN^IU6T0TY5EJQ(C5AS4,^I!.7^\()U0PVL31%D MMF.JD.U3[H@0,WR!5`/.(&Z*#D4VGR333%7 M-B"B@-D\+K/:1PTRSIO:?VG4(EF^;:MU,MTGD/4B4@6F,F5DZ0GTOMKO'5=[ MIFNG*6.U-1NVFFMTY>WN5$'33\^Q]9&VDNJ!CM3FC\72!E^[-5F:L;O!_33K M15G)-N-#\0BY8QR5WKE.G#?(D-/=L`<54YO.?0K51;77^M[+IX1U*G`:)9_6 M@`&DI5,#F=JB%V"IR(M0$G7]>H!^9+K2.:6*@[GY783J^=L$V ME8W&/51(K^-7HOLJ%8I&D8\@`^97Z2R7%YO$70+H4%D#?`)EZ1C4E=NJ5CF< M*N3$F=_$],V5,:T0_JIFK/7($-'2J:676;TVK;0";K&L3.C!+V=8?8U5GOW5 M13_+-%XO]@Z[,FJJ1MKRGZFZGNG%L^/6KTJ'^$.GA"L.1E:?YQ69M/PJ+54? M;:F><^;_JM2!LM#&5@#TA?7,=V'H,H2`CRW'_F/_!.@*@N;>\@-5D7TT)3$+ MEP.X,>NG@4.8$8I#QT]4/CF/O+IF9&-GQY#L!KMH=";F>GP>80,[$Y8'VSC?;* M7&^]]67[,7X9[\FO]@^S!HBI6U,"@=AT8HT\-0X`G*,IZN-87?>^ ML6TSN07UL6&Z,0S*SGNFF7^XA07U\1C;M8RT=0C7K[_9=N'X9R0[#;J3_3&S MJX>^,E<\L`[7!KQLU5>'AG6K"6L@JJ(B@"04#0)TAYVMT%8"<-C83JW=G0)W MDY/*/-('J@^WK%&/@%=ZLJ_(=NQ3]51Y0NI.IN".D[>\_NE=;_W3\9M*UB.O ML6TS\V`Q,^17Y5!TG0<;U.C8RN'3LII9@A<2]F.7ELG8=^P2PT05EOW#C5V' MA/',E^;A,B-[QKQ;;F0#EUG8M-/G]!T`T5P\MFO0A671\T^(M$56JMT=A6/W M/&&)9V;-+^>W)JS'QHV.'C`%?VPQLLV5C/STS&,7A1M2HUC`MJ4YE&TXC33O MK"+;B&W-,"_6EFT//4K3D>W(#F$-0LC5_$N09I9B M&:3,$&S\M)0`F+H#?FKC(?J@`M1!H%HUT>G@Q# METM]98W_0698*7Q=QF5GES_#IEQ3]M$4E9VK%B]W4OT4WVP=LW<[ECU9@&_3 MLGFQ)5CSMJ89OG\LO]`A9S)-C7/FAG8H85R]@TX_DPL2&@V*(VVH?O?KC;_JLFDAM-ZMK>UZ^PYB/WJL[^P$6X2*4"[$M%A+7^" M0UVY]-[J!D%MH3TGUFHC"ES2B0P'P1@;]?O;1N1F3/?:Y66-=G6[)-K1#KGZ MB4':1T^1-GHV;KS1#MS"GYL+CFJ]0,2UB2O]%2S34H.PFVDI-5\Y9CR$9I.V M6:7`D-X^ZK0T;IQEV.WNJEG%'6O%\(%63EUCS9^:!X6B1FK<0>^:CPJZOGZ& MN'.V?-YC="4"UW.MY(M;LT3LM2CF=C6D'7<]U$Q$VPZG#7/3OW>/7;ZM'>\DIZD"O`QK?J M5O&HR%LR+8_TD#N6G7*T-1[#/-X;`':Y]/E?1@$$F!&Y+U=.-ZO9TSW!#E_G M8VNE&-O?\OS:J1RJA1\S62O,*0)2=]&3R0$G9M5D/5/=XD^Z\XCYK8W.=G6G MGF6N@]QS=E46`/LBMWN ML8"]7[^"WR$RYYJ!J MF0/<-^">KMZZGGP^_GAGD(NR]6;N:ZH'J\N^GZ MBXO'I%V)=$+U[?DPU;'ZI:^Z@UBT,5"Y=Z"I5CQ36-VJ^5=;=[XY@ZUO9BA3 MJ3^YH=Z*-TM5!?HA/:TJH#7*=MZ=ZA%6'GSTY+N2;T_3JE/0=-EZ*"LS_DI+ M:UW*+-B-Z.N4U[L5?:">JW&H(MFBZ3IXP]U'UL>"20O!V%%$L`.8<@RK-3E' MK3FY/E1'@36V(4OS#/"2CB^N`@;RP?D3F;TZ+BR`7!F\M.DP-(%U#)WT+$,? M/2^\:&@"*X>7ZOGA#?&^H4N\)]X;,!W:#OWBC?'J7/70SF%5=]'U,3R;=O!N MN?6ZL;T(TW\T\IH1V MG=/85^^>L^$:[2M3W7MCIN>D/-97Y_MN!YJ#VN9?6*&FZ]]CS\NGVM@%G MKU&X8._`;;UZB>H^/7Y72H/4P&N_*'E66-UL-GT6:=&RVNL!:.G4J;V8]=`F M21N]!>J$]Y)[A]I#K4Y'B8G.2EVJ29N@(0:4[VV7PMVLIL$VCKO>!U*60!0ULUMC-6$S MT0^&EYSNSY/#BW"@ZY6.4WQ%V[B4LYK1%< MI"FTUF']L#.E%:U+I7\J7*>PGNOLZZ47C^OD3@!W$([1Q.[5`JK;T@WNSC0? MM&$1(`'@+8L[\TOCCC/W7(_1[F54K/1:+$S7E2UGF+W=>5U,]V<9H2>K0F)C MDW`'`2/<#\Z+=0(\ M`03A+U?VZQR\L]N4[@L0N!7=*V5\,\.4ZVV]'LZ^O._'E=YM,H-5YML6!?52 MI_^D=^.#]@O"IDNB&#O,N.',2``!]]*!FNJ>/FA_1@?3MM1;^"^6")`$:`+H M7"_5@5I7+HE"`[$+UQ33J#&ZI@%F4++MJWGF' ML+/9>-2(^).6O%L1CR4<7$NZTNW*,Y.Y2?2?A;SNE=7?G5A?J`7548S8589C MAB$4;(=0Q(SX,`VKCC.;PX_A6&N>.`"W^VN5U7+C;>/+!.T-KC0T]QM+<`!# M*(S=I^C1VI-FCY!=$@&"V/PY_A1]QH.#K\ZQI:`)<. MEZ7;GO%@*J"9N2W==@MOGJW7#-(O1&>YOVP/E^`Z1W/9`])N+2\XHOH/=ZM6 M5@/BJVV.N%NVP'T0!Y>NNH7("X2ZK$+V[MH27\@FN)W=B%QK]Q=6CTR#A5#W M=U/4.`&">%VX/$R]!8U+$(;=SF$`PWWTM/OQ+8ZCM$OCR/$;L+OZXUQ.[J9& MJ`7/=G&0*&FQONTX,Q(%^[,7R61`=N#";:@'`J@%KZ-8,&!@8/L:?:O_#HL@1OC!T"-X>C MJAVZD-_O*V6A"$@7#X%3M/^@;%;XMPB9M(HVOK1JPV_@1`[(N&=9,D[##A'\ MP&'"F/$H@#D<'3[2E2#`PT_C\G!)]VK<+NRLO8>_QO/AL?$W+#^\H5O_K(UW MHT,,)?(M<^(VFDSTIH<7Q`/1_N7K.*8[U)WNI5X,Q^'`$>-"N#Q[M7VP?1'C MMK?D,_(/Z)W#MN!F+N(><9_D5``R^546#Q`:;YBR"9P43ZXH5]8.=SGBQ&[>>&2`4RXH-X-K MQU'B&>OZ>`F53:#@5M*&RO6D"NY'K5M[1QQL'HPK`)2_5E'F>&S8.6[[1(_? MF/G+.N9FZ8(@G>T> MA"'#@/(@\+><#.#@=@Y+N_&V)N9!**[GZ.GVU9R^`":OOU]9K[^?#W#0MYI2:GO.7&-(,V:'<6;O&&%K$ZH4480HFE>TB=9.^<>DR,?PSICNQ)M5"Q5F?X=;RYS26'NY^MHC+ MH]_DP-E/N4+\.>HIG2]$7A6NE]=3].B@1ZIPQ;?^5$NXD6@D>5\[.6J+17E$ MR,/DF'(_MQ,:0^N)[I3.6$_1TW+?^'Z5\YP".-@.]"#+IVV:L2!9S)W]'@>7 MR)FI\^Q]LN/7[1E%9G+D!$[G3?(C;@\[EXL?V.5F76L6T7*C:7MH@/O,ST5.5I\BJ-R MJ\\"Q^C4;&%"2WX&[P$G0<7A8')+.1)W`[H$0(=?/K.[6M0RP9Z9KETBQ6XG ME[7;7`]A>;G433[*_@SOPY'E_G"!,#?:==XLOR_GQJVTA-K7+3B;IMU'-H\: M/<7.Q_,8B'N-PU1`X0YNT.>G&ZHNU(:6PY)ILK91)YQ%6_K^PH>K#;U=T0!3%3 M716N$?0R;C:[@N[^+1'KQL?#TW%,*!4=)IJ0%3M?R_?<">4PJ-_<%-V*=AO0 M94G0+6\/<>0\3\HNAXD^=Q^]_'*H+&5Z!7R$?I,JH<\`&W)IZASB/WO#+DQ; M()R?-W0,^1+]YEI)U>4.3?&]\-HX^F`<71Z]5A#3AXFYT.\V=Y0\.EI`I41# M/$"C+XK>MTA@QJL[!GQ.A*<$)&$OJYGT=8Y&_YV#!R'C75=@,1MW\2H0EGZS M2?&M+7)M-4%W;IU[E:%3'>#$\6I2-5B[\VLV#DY7O`/3$KQONE=[3HP1%0%W M?G&YXNI^;ER4`7P:GB0_KL&VI]4\U7_6.QP5[2&'?07"@W$Y;U(V-;SII;#2 MFV^S.-_9J@K<4BLZ4!5X5K/8A^L+@=!T"LSM'>ZB@K?=Y"+9M60Z[DF,-BHK MIY?1"=H%\$$;_+0D)Q?MTS?%F?-5.)*4G?V!G9HBM3NH"P=">9DV8XL7#NY& MO-_)IU6N1S66CIY,/EDGNJ\`;M4A\QQVAWN(K>XJPPEJQ#L9-PZ]GYXCQ^5R M2Q'/"F*^*WOWWNJ<=:TJS8VR8^YC.M;T/\`BI0\GU:]?0E$L<47=Y^Q.=1>7 M`0*OKF+\M+54>BOK'8^&/1VU1&LP<(O4.9!E/GIG19?>F677*K'7!QH&4$GO M:L/GK^L^M@[IU<@&Z]GGJ>T9_E_=8..&_<;>!9%Y2_ MR5G=-&8)]^,6=UHX%@Y,"!JB!V`M]TB9V:IK",)JU&NK'77)@!D757[Y'O`: M>AT"TU/.MX+W\\T;=?"*OE>EI.\*[^G[#+V25D-W>%O?;N@1+QPZ]IWB[=FN M>%N\M>\\-(U7[)P#\&;#RP'EK=5(?+U?/G.NXTN@Y,O8T+A&7F+W"-]5NY8\W\E?8&M*FPC'4_::/\PVK#EHR' ML3^L:W#$M.U6LSX*W2<`25VP&/"#]G]H8Z#-N)&_J@7;-&&JITTX&T%9L.'> MPL?(?T\2*M7TFCX(5DU#K=O;%]!J:QQU)*P?7V';C,FWO>Z`.0"55`LRST"/ M07GKR\_K^'$Y\-F>+9LRA\?$ MU!GJGFL)[F^4>BY#=T7D!!98SG!>;&;]GTY4'LQ6!GKFF%=@,,]V;_40WO#Q@S#V8GDNG/V^>+4-E4Y+CJK49>GEM,IJW$`+1I#_WCC MA1NF(6>1;,9ZIMJ%[3Z/?)>BI*=`>B>Y9+'"VUAZU=J'?HN7+3=ZT:=:7##"@Y8D# MT1')H.FG[QJ=\`NM-8J>T&\,5%;GP<@W:5S^+5&C<6_.,8$KKZAW&OH\+\^Z MD6_!C&AA>D/7A$X(5E3?7@^W\MQ6+85\`8[`Q7LW;(70?](KZ0M[CM[/;I_N M?&6HG==1.%TZOXLU,)U_5]O7W=D@.HU:TY\10`"9`$,`*4 M&+K>4&RK+%VZT5U`UWKS1QWLUE'G-O,4K[PVO2S'DP?9E>/R./HZT\M._^F" M70VDWF_W,X&TP-XVO6)7:S7DJKP5;+/F)OL>-Q)-4@9JN`B8)[B M:M&D?>G7`&17.PY9[PO(L2?K5&VQIF7]2_[5'KF7W$L,-$^Y9$Y@)D!:UVP# M1XD`G/7U+<$\/GM7K])&27O,D=^_Q1>CD&UX3U2+:.VAP=S(+Y.#+T!X)VY[ MG!OA:=IWT'QS4/R[WH&>S8>C]\MDY&KZW/S"G+1O4#^FN:[(UVF^#G-CW[ M`'*?"E<80*3[-SH@36K;/>WC-UEJ^_;S1?'TY`%8P4.NTOP'JF7>-@4VH(15RSS-;WA>?`?9\N_43D]XP#=$: MJB/N>T^.^-3!C6T0C[_[AFB@T90_]D+U[)E_#^;^CD'=L(2%+\1]$OUE'@GL M3XD`=_66ZI293LZLKK]^CTO,+M)!:#_\HSSXY:8;T\W6(]:;*167!A#%/J#J MWF7,O?>P;4YXGBP_Y]R.F4,$1+8LJ,:5*"[W)+F;W-7,TN4-U2VU8XUV`.\`=RQ!&!J^]K6ZRHPGAI+ MC?7F/8CG0AQUBQK_K,)?X1-#)53M.X=4KCSX?;76/2NEI5-N;Q:\YIV$O]"N MX..FZ7#I[=,[AK[39CJ(?E\00MNM^C6;B66]JF/^4(MLW80+RL99[:WBO>FMQP+,'9]AH0O88ZJB$$U-3@:*)[[@JE/GWN MBR/4%5R2MTE\@-U([X7.<^/F".RY>;=5>WN4!>B2FQ'@UT^U^4&A7YH`Q_6T MK9FK"`/SM[4W,TJ>%<7SG0>S9U<.*L/]]6Y?OH;WDX&[*'8.,>U\JBWYG2SL M(=K#./23[!+`2#X&#??&?M'!%T"Z5ER=-?!N'8L+BDO>,]&MJ8)9@LUK3=0B MVR/,BO2S^^(]_CGVEJ>2TYU]?:.J826QIUUT\GZ\G%X)9ED; M46W:/%*5Z/>Y^4NW3HI3OQ6BMNLJKK==1,RLMBI`UJ51KUJ4\#=\*,5$X+OW MMK7Q8W+UJ)J4@7U>%B!+$,C9B%S1-A;]M$H/8:V[`4;RO_%[>:+V`9^QSBD+ MY%W>:>F$>O"4BWY>3G:+G67R\VO^.S/>A"M4SVDGU2$4[GV6-(DN\>\]\[4%<4F(L*O35R]:4E7OE!>31F' M7+O2X.MS[T[\^:V]_?2Z`2RGT=)8:U?1,]TF>DPY^K(VRS0:#T%*WI'IT[G+>RP%$2Z/$=;:L$'N2Z34/O\V$/=[O9<0WW)'K+ MJ;:Z*G.K>_WS*:^?=6'GIVG;N%<2\1-5)4VQU8OOX\>W1&N;O.HTD>[K7K;[ MWC'B:V>]:>FSCWK)=D7D1GGSY&RU:>=9X6I^U1WORPWE:L\-=I2U>=`WCALG M3P,%8@!^=^WT+L^)5:@&UP'K?V_!*7B^U?V;!XM'H`7D^&=_;S6ZH+J#1@VK M2`GSC/FH>W7Z:WRTIJ1VYE\&I%N-=.C8\ETZO@S@1BOCNF?MNC*[^+PA_>(Z MLV?'M7(*[\L55ZX[OF:O;GW'[N5>.3>;>"QJ?PR7/NO/HVFW>X.Y>(UEE<]# M5*.C8$^H[/$://^21PV4Y6/1.&^&+`H:16JH;:['9A?D1/1]1&ZT_CGZW&W^ M1',664_]]0Z@-A_T5'N6G@.N^FN8K)<>D1MP#0.@`'+2`5>U9P_`'KUY>'OH M>.'.7/J0ZY=>[2R#5KANR#?+X_81PQG@+3IKWYQW>4V]!E)0\=^9-G^2]\W# MP^WGA]CGMZKV(:PXY?]Z4%$#=J@`M(X#,"'C:%./V6ZDWB\+0V=5<1*PD;';_K!E3O MI36XW'DE.PXY>,J5CXHN2K/BC7'(-O)94BU#_O&BYPWUB-RWL)(>TXZAC9&+ M7JT*9]!OO7H>.(]<)A'[70.U)FT_]TD6"U`,KP(T`?S'`&070,$(!B].ES&LNT)@;W M1-FX+?78+'GWB8J?11TWA@WG!EY[ MB,>M(09.+KB84SN-GVF#>I<>RG]2SVC741WAU>[:W5W;)58X[S=M<,6 M4!^H_>J8O;C6!?OW5$\_0MN@B%^O?0T^("N.+^LZKC/>,X*Z<9>V>6PO'@YP M<3>WJ=@^;&5@RP[U=+KB0;NZHNM]>6YU3\_Z7!!H:)7`086P:>`[YDV9W=(N M'"S*:MBB?+-84\THWZG21]VI2'GBZY%]9ZJLO;,WP,VK&5H2/,"7CRM.WMNR M2>'1A],(\S=>\/N,YA,L2?T"U]9+?+M=6U^U]K).:CVE*M;*JK'V4=HA)IC& M[<.@263$;LYZ;_M"M[I/F*G*W^:CWLSJ=O9IS M0[TRCU0EZ$?,7CX='$3KQ-`DS'(S=>S M`"C016%6C5:/])L3IN46E^^AI.Y\O4.XA]SU?-O27=O%(]%XZO0@M#9[XM*?W^S M6%6L+O@(^'JV#?`6(`@0"[SS=#%6P,?8W>8>P$U:BTL6[@&X`*0%+@`0LUU#40&^;YK7 MARGM0^'*=FQ9[)`H^(Q2\>?$G&TW]\'^O"SLKJQ"\6&?;69S?J7A.K/MLW!*9@H8_N3LX/TMGYO6;Q+;/;PZR7[\UG]-6F_F,U0#94_P[,=T4T M3G&H`]"`J]UYFQN[C94G9@>YTO?)`PL@ID]WH'X*NY?:,'T=@$R?I@_VWC[C M\F_"&U,$`O1X+^_V?`%X2#7=PL^5OH$^((WW-.H_?3'$E=']YX%5(M`]G:!/ MU7_V]^0]N9"W:)H0UG]JIRVE[6)S*L^\`(ND]>T2?BMC6IXMW]9>D/L\X*BXWFJ+V)#H\Q"GX^'N":3U9:!^D79A3 MNP>A/WWP4TZU+2XC!\(+&!3[='&0?#$<'1ZH+#]D72C7U#@5X@IL47WJJC M]K>N.('%_GGWH&V.VT=89''D86T_=S@?E4H9_KXF"G+[U+3Z-GY'W]K7[N?,H0$Y]01QI!C\! M!L#[\O1T_G+^E?\4]RUW]NVA[F[0;\8>O8]#AW=/"1#>L$^M;E2?KX\"8"$# M3??O77=Q;P.[HHSXW=^FDW7.!UF^_1-@%Q^X#G-GY9/ME=?2]-+3-T_'CZ5K MMZ75^_T#ZX@!P8^_==SR8_WC:E/Q086_UQRH]\X0?I,]N\#W; M0RG\:H`3?T*__]EAG83"];NT!/R(/HA]9D$7M^\/TGWZ6]<^NU`T\[ST%$F7 M4G/\@??W69^]HJ_6O^^+7&?\])"/M#86@C=92!+=U&FYU(%![O:YR$\@%1\` M\S<<&]-WOCP?S*\I;FAG^9_\X?K0_M(S\_S3E[SO3QG[O'WQMIL_O+\['VL/ M]RO[4_Z^P!^^.O)GGQ-3!YC;>?X8Q5J`SS_/O^+[GA/Z0G&KQW@^C?]#HD__+9?GO[G]Y`& M^G?]X/Y"/V@;!3`#..0B^JD7,()%/[$_VK^'N)!OBL_\6WY*_R2TS0]Q'?;G M^KGYDX6"/[L_TH_F7_:O^2W]!/]&,B2ZVY\D__;_AW[:NO1$NZO?SF_N=_?+ M^@L3=F8CV\+?#'#N]]D*^MNA(O^O]A6?!F#OMW%/FB\0==&]_H'5\.F5!0K4 MDXW?LV3":?Y>.+V*CL^B%?+Q:-+X9QCUVJXUW^;C0Z^M;?%+:]]W05P'`-NG M`.@`#5CL?B[_*=0//8#?0TWU48$>0/_XZI`9=:Q\T7KX\E.[-/?^;#T2M8>2 M0*'^^'UTX+55YG_TC,C^D4NY356AOD^WM_O&U\2*PO^G<,+HLE9YXN]%G>$C M\G&TQORR?PI:UK^'&.T6YY+[$5)!,S,?'+XD3\A"\UFG:?_]NL35'CT/5GOZ M\$^Y^N&?/KCYS2\_Y;TC4]W(C>V1Z(P?X=@XQ1HT1P4,I-UKJR6_9I\VO=G/ M=4W*K`$#[1T5I^P\!7I?3=V>]V,K\^74<2^FO9O7;X?Y1%HW:-D^$'JVAZD> M9W_W5]8-_>B8"J"8WR,#>.,""@"UPG+@!8`U<"MX%>`*886X@%W!11`8V/`J "``#W ` end From owner-mpi-ptop@CS.UTK.EDU Thu Sep 16 04:35:10 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA27028; Thu, 16 Sep 93 04:35:10 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA25164; Thu, 16 Sep 93 04:33:41 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 16 Sep 1993 04:33:38 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA25124; Thu, 16 Sep 93 04:33:28 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA08715 (5.65c/IDA-1.4.4 for ); Thu, 16 Sep 1993 10:31:47 +0200 Received: by f1neuman.gmd.de id AA16410; Thu, 16 Sep 1993 10:33:14 GMT Date: Thu, 16 Sep 1993 10:33:14 GMT From: Rolf.Hempel@gmd.de (Rolf Hempel) Message-Id: <9309161033.AA16410@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: Updated version of Topology chapter Cc: gmap10@f1neuman.gmd.de Dear working group member, enclosed you will find a new version of the topology chapter. It incorporates all changes decided during the second reading at the August meeting. Thanks to Steve Huss-lederman who has done the reading, and who has reported to me all the requested changes. The main change is that the topology functions now take communicators instead of group ids as arguments. This has been changed consistently (at least I hope so) throughout the chapter. The other changes are relatively minor. Some of them were necessary to make this chapter consistent with changes in other chapters. Some formulations have been changed slightly to make everybody happy. At next weeks meeting we should have a short plenary discussion on this new version. I hope there are no major problems with it. The following is an uuencodes, compressed PostScript file. For those of you who cannot print it, I will send the LaTeX source in a separate message. Best wishes, and see you soon in Dallas! Rolf ------------------------- PostScript below ----------------------------- begin 664 topol.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R`$# MQ)`WBP*9.1S$H[9>2XV)C&*90P9\K,R1AC!DRG0M[4<=/3S9FT>#*6+%DC MAPT0.&C(<%J$[8UZ2*6,&Q.O8LT$DW.P& MQ`LG>W:;Z:/Z:`<-)'@1#C5*3LH2.G M\1PV%A050PP@W)!3&W4$Q1\0*Q&W1WULS+'' M%B6U0""!**+1:'QG\!*M""B3J"@&!0):4W8F]%'HEC M<33:B*2+_@%8U),Y14D@3]--Z9L44E:T$AX=UB''1(,QQEX:>&A4!QQZ\DD# M"&&]Y-E:T_VY'1H@P+%BGXS6`*AH(`S*%D@@')KHB@KH1X>=;\X'!'QL_1@& M'&7L09]](+!7QWY]G/<"$(RY40=09I11!AE[S$%'177,@=M++\0Z*QNUWJJ` MJD4I*J*K0'@(1QIBF3J"L]!^A$6KQAG11$5;8*@A"!9^NR%_1@@A!(7B:M@% M?VX45Y(3K251Q+?\Y28'O<:1848+NZ;!AJGMXO5B;N.!$/!PD&7[(1U4Y$$J M"&:1N_"V=\)IQF!RY"GQ8.:^D6>YYUVGZTIN&2=&&/J!@`4(3+67AW-1;5O9 MRB\(48>_9`R!!E-[**`S4S;CG-5\?7G85H_R%BS8=&3L::H9;[SAHVA0#]9' M3BV'\;*S6]NA,0ALO,'3M^TJH*QQ]M*[!;8OZ&OJ'+T1R-_%['U,<<'Z\AN& MOVSK*V&4+\"MLG%T9[R%X`Z5)#B/XJZKT;[]LL%V$7O`@9+!Q37-IW*0\;;P MU'14O2S::+1P1QIDT('&'MRU0$9%82B@.=B"G:$ZI7/4(<:CH[_0.AIEL.02 MZZ6_OBNC4[EU^Y^Y[QXHVZWC@909>\0@`PX=%@\[\K7?;E;SO/NH._2EYS$] M\:YO/WORMB.:$_B!PB3##9F.[VKK9."!OO%A<*\\H@2"GVC(UX(T,"8L^U/? MGE+EL#*T9F20L5T##5:JM,7/=^P!0=K.1(;ID(=$;$,=OEX@ASN,4`YC&.$9 M^/2NUHR!A05[P1%&B+@8_DP.06/#;N20JS!@!6(PB52*@B*>V;W@9"F+7TZD M8QK>*4`\-8O9J#X2/_%<$'_;6YGE^(3!>[U+@\7+4TFB-STPML!\9NC-[X+7 M$CK4;W=D3*,93Y!".SARY<"7,F0UE1XJ=*#6;P;`&+(AUD1D5(B2=MXA%<#!1`R]FM MKWL`%-_N9K=$MC31BI`27)24=`0Z*L+`8PR.N+8O2"PR3A@')-6FWNDK677:A=B\;U.`&.(B!"VYP%\"%*4"#\RQH14O:O;9F26)2V7S@ MD"NCSD<*%%-DAL(U%\?5C`AOH(T-%!?+'O%'#@EJXA=)F-P\.#2&=C`5X`O(E4#B5F\XQZ=;-` M]MWN!H_:0TGP&RC(E$8.=@!*GU`@FSG``3YY2$$9XE`I/'#G6W_J[V"R$F`V M*``%3H`-%13,X(O$=(L@P,]-KV13_<14Q":NZ4TKQ98][.$,E,VV->S!V&R[@WZW3.LWL.U??"HV".[`MC94#EQFH;>K M^AGOG.C;.&^X=[C^_8(XW)M`!.(3@5Y>').*A->9ZE\84MG?E,:-SX M&]D0K+P0RT$,:H"#Z]&E!C/``0QN\ZG4&3]RPV`(7D<[#&*@]+6W7>QB-[O9U7[VO++=[F_W>MP=6O:T M^]WM>`^[WKTN][_#@`9>QVL,BG`#(=@EKSZH`0T40`2A9&MW?[)!F;B^=AC( MX/!G9SO;H0[U&XS]],,M`@Q4S_K5N[[UK1^N[&%@>M*[_>Y#<"CB/X_7HL^/ M"#)9O0\0KTX>*'WW7[^]TM&.=M7/?KBFCS[MIR_]ZJ/^]*IGO@)$CP.H?Q[Q M;??]#8H0_"+X(`E=OP':1Y]\MIL^!D,@>_SS.@35K][^1<"__O.:?_[C7P'[ MMWKR)W_O-P10)WI#8'JTIW9&,'0W8`0Y0`/6,WPX4'Q&<($7.`08F(%>UX$> M^(%\]X$BZ'4;:`0:N(%#$`/#%03CAP,I*`0^8`,$4GGS\@)&D$*.,B"EQ77# M900PX(/OUWF?]WD*@'B(!WHL2`3=!P-!$'DY4'QA9W]U1W^&IW9W!WA8>''K+!P/+1P-KF()#0`,T8`-#T'TXH(`->`/C M9Q<3Z'10"'=Y-X(B&((B"']Y)0-'&(=YA8AJ2'=6V'97>(4SX'21&':?]W65 M2(AY)71X"(%EZ`/;!P..0@0\D'0SD(+V!X?Q9P-@1P.F=SU.AX@'F%)`&J0".J)!? M9P0-279(Y&9(?N9,E"90N:9,F&90ZJ9,QB9,S MJ90UR90WR9-+"95-*95/Z9$]Z91%.918*9172959N9))Z95<&95&291C.95E MV9(_>90&*86T=Y`8V)`%68*A%9!U"9!W:00*<(&DQX*,9P0S4`,^@`/86(]& M4!0YH8K[Z(%)]X'L6)$2F5>/J7>1^8-Y]9&5.9EAEYD?6(J.*8*:N9F@*8*> M*8B229J5:9F=F9JA^76L29K-*'1U"'PU0(0Q6!*BZ)9>!UH?N'@BR)L>Z)L? M")P=*)P>2)R))X6"B)QVIYMYQ9S,&)S.R9S&N9MMEYS#"8[8>9S7V9S9^8'. MN7:R>0.T^7DQF!,TV!I&$#=F83T$HB\\0(U2N(Z/^8`L"5J>J8NZN9\$:7_4 M:`3V-P.M-WVKQW?XQW\(ZGH*BI_V9Y\`^I#N*)G=IWIE83UYJ(,^D`/XE8T@ MF8'_602EN'B@Y5`)Z'52>*(FFJ*G^9S/R9M;R'K_B787J(X^J'B_)W0JF*$Y M0'E=]Y`=^(`K>9Q"^J-#ZIH*^(-&H(#_R8XARHZ\Z:3/::`LNJ`)JH`-6J58 M2J!0JII-VI$7:'\`"J0+.'YK)X$[^H`RD:/H]W5@"I$Q&J*,IW2,]YP-&I!? MJJ($BH=*MX4R^J%(FGL^:J/DB:,V<'Y=)Z#Y^8!DBJ0/"G_PAW:-&:!R&G:3 M^HT*&JEVYX:7B:1RF7A",)_=>85>FI`%^9`S&IV>B:*JFJ(HJ@!*BG;JIXWT MR9)W.I61F(`0B*%X91;9"(EJEY^B"HA>QW*+$1"[$.0;&NEW05J[$9.[$6B[&J%Z8:V(6,-[(`NK"A50/6 MHW2$:JCCEY\`NI=U6JH_6(=MYX5M)[$(VI@=N[,Y:ZD]&[0Z*[0.U9C%"J1? M&HU'6Z,J:W0MNZ8"VH&G2I('":?/:;!3:J64>K%;*ZF76JF-Z:1[FK58ZYK" M&:,DR))LFG@#,C_DAZ$*L*8`:H`9:)\:Z)H46G_+>J312+7/R9*E2';]MWKL M6`1N:K@9&)<)"*;6DZTM.R#>JHN[6:13.KF[B8&2B;GW:KF<.Z4A>*25&[H$ M.KE.-WT\6WMMA[I7>Z3K*(54N9,#0C]H*H.%BGX/R),/N([&"I4-2'=\JG=" M<)WK6)R:Z9;528T5:1[7^;O/6:X#>KL("Y@/"KWK%XGSDZLY:CVX*13JV2-E M@1<[V*/N2HZ,Z9PRX)PV`+IEI[[0V)UG1YQ\5[#CFI]X1[^W)Y*AY99)5YUV M2*2JV7?_NZ#8D[93>Z^.^*O1"JQO]ZN.Z+5K=Z4=&;I;FCB%^Z.Q&0-$@*9N M&(.1^Y!TI[F>*;:Z.)G5:;_V.Z(6G,(DZ(&:V<(L_,)2"\,KK,)7NYS=:<+D MJIN/N:?-J(ZP>K,T"Y)#1XV#.HTPF+X\BI:E&L(\;*GL*'KZ*Y(2B9Q4W)TN MO*D!G,57/,/1Z*00^9@:^W8V2ZG`28H,G)_[:W\*$+9;RYN-R<14"\8I.<1) M"GS3.`0^<`,SR(\K_)@"V<>`?)I[&G:*^(7,B$[(.# MG,B1?,B6O,B4G,F0K,DU*H$9/`0$B\&>B'Y_7,J0;,JH?,JJG,JLG(@8K'X$ M>W:&^IB3;,DK:LNX;,BWK,NY/,.]S'>\',R^C(&(^Z`-^,FA7*BM)8H*2:;- M'+*^RWIJ#`-$(,U>5\WW=\VLIZ0YL,UVU\W0^,W;K([@#*+JZ)L@"JOH[)EZ M#*,^,W;H3(@R"*/TO'KQ#'NAUWJ]B\ZT!\6NI\?Y^\_^K+#/Z)L`^'4%W7HS MD-"NYYO\[-"M!]$*ZIW.^,J@3(PT,,MJ9WH'R=%J'+%7:K@L.J?31](1ZZ*K M9[0I#:LK7=*^&;$O_7HE;9D5:WJN^L\>"UH;6Z(-6['PY]-SBG\5&\Y@.M1X MN*`^&*!)'7:#'`.>#,LI2`2&:I#!6:L&2;/:J+8I&:L/[)UK2Y*B*9G$NKQ- M?+71:=:3&<*0&>C=[\S=Z))W09#($;G!<6.+GU:=T(?N#4/7T*;N`.SJ(-#N$/SN`3SM$5;IG$ MFN`7?N#`28L_ZYF$Z)L\"X2IF]@DZ8@26+($NWU2;5`U:`3NDQ/68Q;P6;F> M/==G?>.8R+.GR[E\.ZPHFJ`3'>1#[N-&OK5`^ZSBB-M*N0_7KEC/KIE3N1!_N5`"YPW7HIC?N?Q&GHI:+`_;;`$N]6:2XU[Z;N3*:94N]'&_>=\[K!Z_HAY_J[O M.B!./:CTPW:&"G\".GZYVX!`:,\E"Y%DMWR@A0,J6^5P6'P.FKFGZMVIOG9X MQ8I*J)>6OJ:0*,9FS=?%;;#!>W@\;NM`V^M(#NR66K2^+NS&OJ>)F[0G*=C2Z7D#L&X?;6"?M4% M^9]"X*1%@+RP#>LY$(E5KJ%0..U_"]BG&K5NK(ZBJ[X'W8'\*?`>./"=2Z"$ MV)@)W[!Q7.*/"97;)P.3#GSTKJ-0>.)+B?%Z=\,<7Y$=SZ8C7B[-J)?[GH(I M&;;CCM*6ZK4LW[4NO_)M;-8*V.\.=?(F/_+&72XG#Z),^]/D]^Q53NN%?I!^ MNK9,VL0*V)@W#?/2ZI^BO>P8^/3CN.U#FO#-"*D,OZ0.OZE0Z9[R7O&T_NY> MO.IQN7B+=X#-%_.6FO3CKM)KSW>$Z)_O_M=$/[4S`,Y(WJZUNJ202LS1B;P_ MKIQ)!ZJ$O_%L3GL*6Z-1K^H72<=H6O&[FL0\^YQ37/D>+ZR8/YS@VLP.28@A MB.?T"J^A#^F@;Z^DOZ[`G/-D7ZJ2GMV6WJVH;N)6_8`&+^2V[WJ"6/L3??NZ MW_L%__L$3_"Y#_QXRON7"_5WZJ#5Z_/._OIJR*/J-Z",VNX./[74>/U6./=* M;O;,ZJC=KZG+ZOV9"G_;]_W0*O[A#_[>?_[J[X;LCXG0B[Q(VN[4_Y;;Q^G? M[-2A->^SS@,O"Z:("]E)-O"7DIC;@5)0!S`!7B8%B``3%`-\@`[P+=&M$_27 M_M($C`%ZC`TM';#7=9RAWPX^7!I)3WE-^]DGH,S`[F05$H!UOAY/LZI-!2':$D2`LK%?I#6YE+>/FG M2*2A(%!H`85=#`B=04D6#%D4WWI880?OK1TB0'>HD17K3NJKA5TG#$9W[E[A M2QS2YS2YJ"\FD+AA'>*&:P<0/K[7]WF*SZP2AIB+6B$\6B2:EAYR(F%13&I- MP[0VQ:P8BQ).M6>CG36.ULB(&^8J065JT@E"#%,:@`GM2>+M(X[6A310 M`C)"H`?\J"'%XWE`#_9Q57,(\4BUNG#Q;MU-^G>4:W1=P2QHO,:0O>I=E"J6 M49\/=_4LE6=Z8RDO)HH[+96@*IA#L(F%"Z_4*&)DF>#/Y\F'/Q$4'2.HXX*. M$(D+AS^1_-0YIY/$M)%/G#YXA4*%.!#7F.:'J&MWVJB7W;(QAP$+T2H:/0,L M5BD>'F!B1X_Q+-!&B-C>3)QY-3$N*J@*%HZDE4-;/WFKJX4XG27B M?E:'@P&[#IX=*1$5$M77-$M0V@[=,2"@!7T04N+!;BPK$@4L7M6CY)YX2TU8 M+/.)H%WH%8]/8Z(!G[$Q>2,R!^:<%;/Z/$FG"'TC9907OE%LPE//+DF1GW<' M`ZP1*.J(4TB\R3=(A_GBFV;$?-5)%74@T'B=Z)#=27)`*RCZKTW%[8C?2+1] MI4_TX4%7V)W6�L4E_H:HFC94E)I3<\<.R96YI=?/^$\E*@+W,3^6G5EXG8)`4LP!2AH78D2&:=#OP>EPZ#^=YZ!W: M09`-F>)H1A.1+\Y)_#[2UM1E0V*3; MD]*0JJD(+B.W`[K,9`[,0Y)QJCE%%AF+;$#1`D/FB,GU+=U%DO[:;IIY[,@& M1,I3=(0()4X:BX!RZ'@BR'7QZ([3,XW*"MB--O5HYCA7>TQ0Y0]4AK]OA!H) MI:M$/&SG9EVSGP:!GEUMA%K@+_[(`-[S=5A1YTDZDJQ5^J!6*21%HK%LCECP M.;J>SR.#T`[B08G/DA`I'0`D`]!.,A*.WPA822"R&(F:D/:B1R].#8"`."0_ M_D2-\U%I:X'!/QQ'/W`5[9SUN;_J]F?;'1"(CB&T-M8.$XX2K(FK?QB]=N(K$W#4B(-=/.]YG;X4)/)"IZL9[;J:)]CD M&V\J5V^L&M9/HT4_1>+=(6%E*[6AMNV9VER;"?6@]7-^)AX?MD+1U:&4;V+G M,>',ME,-<=8'U$S>,_^YHU!F?I!8-L)X#11`/=#RF;HDJ*R44!:T)6XM^L5! MZR!PG=T1?4U.,BD/A@?W4PAJ(_.L#V* MX[B4'RVD]%+5@:L_BD@O$R%]I(<4D@[22$I))ZDE15)[*8_:40X4`QC;XFI^ MD*V[:5&M2$J%V2X+I,,LE>XR55I*V:CFJ;I9":F!YE)M M%G:($S;[.KXT0!&GNS5VGNC9B93#%)E>)T;'Z.@/;VJF[TO4+=,0-<;H#S4= MIM=T@-&?LY?73%'I6:;<=)C^(.BS3,=I-S6GXC16I=,QM$[/6E_,<29(8]E2 M>9J2)![S$P(R0)F9SMLIV@P67(I)QND@?3"U0W=^*2-B1P?U84;3W,A,TXYG M8D2^R63F,X9JF1A11?4[H,6BJA^+6HHLZN+QJ$7`HH:VOV.5'N9>0V!_!UA] M2G&%B0:2%?*D>2@V"LJ1E+:6I-X)65^4?J6Y)5=(^YT3%5YW332!+D(DUWP3 M/)2?H,T['=6E.M^.*G%B9T"5&>W,&(C7Z!<95:7&*8R*P`^HFVAJ18NC"L`\ M1;;5E]C.W24TI*K)J"K5M3K=V*I:=4T4U(DYMUIUW%B;:LNBKLVN3J:XRD;[ MZMK18Y_TV>&QL3J9$I;V+*QY3Y"NJ,6#2N7;C4NK/#6@,M+)9U95G5N2@J=I MF5S6UB;"5A1QZJQYLH%Z1-!*6J\6V-%+E`KJ8*[`I47QW8]"D<83E&ZWV$XGB'5-%PC)5[-GLAU19DF*XI%DVL6.Z', MM83FSBN:VF95#1U(%0U7-3_S0^#V9C=\>N(*LI*@$'1(<^-C*J_HU9>EUUNV M7O^71#VOZC6^LE?YZE[I*WR=KU.*[7PN&KE$YY7848''R2$)4+O#V#+8\0RE M/^@1+K`UAL#.5J4J?ED5!-:JJ-6@GJ!<+`(]B/]DV,5#3M<8AC55X\@97E#K MA:8@5X;:IQ*I\SVZZ'CZL!B+Q7.+"H.Q/C8()U6D7@28+56YZ5A,U-068X[U MEWOQQH*U"PH@GU@=LD)/#8'>@/(8._-7*4J-*,O]L%)3:MV*Z-CQ3.FSGWZU M!G2]<)0,$)3>$^Z)SU=(9EEAF56%U#$*A;Q=9U2G91/UJ6[QZ)U5.4MGMY:< M=8L^M8F:O914\W0>G1I>L"W`A;(E"[7:U+)2G7V.,$Y!`$7,J.R!NTR\2169 MH8C*J;:LA<)>7_8L7M!Q9`W[6>M)>QJS-*+*.U6K/*:I%;4=4]32/D**["HL/`QHS$DZZ]M;^JH*4[1;5L61,C`F[ M@K#1-O-L(:B->\GJ4R:]F-36BMY;B`QK+!VFVE%K@U?7C.O%U<>(6L M:"6*C%KA[X#1S/F3J9KA+R5)`>^!#<9FBNE$[O>+MLDJ=@)(,SASUTXD$K0I M*#V;&@!RNSUVX0#?A_MQ?-'05KG*#N$M'XC(?C4:FC*T1(`+XUOI!)#H9 MO'B61%-R0O9%-BL;JW63%=>UL=`*BJ)(KSMVNZ[9!;M;M^S.J+6;Z]CNM+2G M7=9Z9#12EH`8$-0]MTJ*+_)%>LMW[:W?;;(=GOHVZG>S2XBA" M>Z@**]&;>Y2JVYB1ULOAP]5P6L@,$V M%H2]&._3-8.*[]I=.[07='FLT36Z4$_M3"/26QL'Q)\@D!#(5%&?C,5]%59= MF;XF-1VM*I%+4ARE[=QSJ-(-/\OD6 M70-T:/OOF?R_'S9W;C0:VDG1E-"9FE`07]V\P=MW"V]+=,`,./`2W@=,@5\@ M#?V^%P@K@KS$2WJ-KT`R@PEV63')!YRB+J<)GER^*S<"5KVS1K]."_:J)$PS MI=R16*%(;^WZ5KJ+;^;@O)A[X1K8<51ND/\XHXP)(IW1@A3"P0MQTCLO>*M\ M5Q/>366H&N+4F_I]C=XT9&F?SP1.*T^E>`>$X/1_X+`8TK34U30'7^*QM79' M"<6PY<2=Y.$9UJ#S::(UQM,T/+N0-YQ10\QI82C:%H+G4EZ\H%H209U@08R" M"W'SJH8O^`6#MUHV8)6E;HI,D)@$B2HJEW;Z9#Q,/'2R`&.O&VRW.C$=DCX9 M-O7`,S.$QL@P7$M[[L\`[;G]Y8U`"RWEA@6P"T\@PMH-,9=3\SP7\MF91<,D M2J!.N=Q'&DL#&:YAK'Y4FNR:0S*H-I++'QJLB%,.K:O"%[Q)XWE(C1,/2X*B MT]@:5V/PJ8V[,3?^QAHO'.=0C8>-M[$XSL;?V$'1(K]7%GXB*.M=PV='<:C- MUT=Q%YW21D@K\85@B_2@^#'8/+(G[HT9-L/&B(?7;G)+C5`:5R3]=1T)WMT) M<20PB@(>-38\UUTC.X=`<"XU,H`X='XB\(''9]'$V2UM>'M]%$PRR6YJZJ;D M[K.2D9=%652EYTHM M*EID?V#5NT1\:X\=HN6OZQJ8CTY<%BDNSJIBIY.3W\#I:<7YG;\D:(SKE_+>8G'OR&'Y-)^!#K`' M>EBIYP*-H!OTCQK0$#I!,^@'K:";LX.>T*6YA49G9*>AP1B';F./%DAE./4< M[@2HF$):_>B[U2@BH)^+`&_^LLNLNZD^OT=[)MF)!FS&B@3EZ'MLZ)IN?1*& M!;I'`^GF+*299'U:QW79T!TK'/V<;S2-5H<6FD([Z,\5H2]TE)[06/I*:^D% M/9YOJ%8[;A6Q1?/F0J5T:"M=RLBL+O%A0L:,]!('2&I,9$>(@:TY!FJ%&/-I M2G?Z)N7ID;2G69));$K)UGT!ZJL4J$F3^,QX5\DTT51"S:@1M:,>U(]Z(OG& M11VI*36D/H<#V;MYGEWIMGCSDLT+A;#N[3L@U/?6%J#5Q_`.;$I":TSM#!+4 M;4DP>>T,,C*%O$*L0%H_MQJLV6JT+`.`4/9)R083+:\CT9.^R(_*@D$:JBE. M+3]8LP"M%_)"^IA,#2^Q2(N\K<6]UCH:6P,SRU>7NS7Y.D#&=:3.K`;JGR10 MLNL0F.H^]]H-5]"-C40K M:.J#2^%*?(KL9ZBQ.[;)KL(H>V1_3Y7-L5,VR>;8]LGA.2+P.`,>D'\<$$S6 M%.7."P2]E">_TT`OT4"NK5CULX6%_^5<@6S'E(95%YS*T!7-]UVW:V;=[NZ`-S"OX5`<&@4DTRU*W[/[=KQMXH]S@ M3;QKM_&>W<(;>1=O^7?_Z#:I36SXM'/?[.HKL/8F6LYV.%+BY<>%V MLY/[<(?OR$VYQS?D/M^)NS%;[O+-OL5W%T1;F'MSJZ"TG4`'A$/XH2)9LDTH M]`:M)938KKN4[W]W-,.UT0@XG1K@_7K\(/`"_K__-\A-R0)TZLZL#\:4Y[>Q MALJ1+3,3-_K4J@&WD<6.YO:L+]H`MX0+XA./J;$W"5[@)7]TB'.,1 M;B9=N*&9WR9Y#6FDTNVYW8AW.*NNVT":9.^E_5%D(=A\?/^8)!;.V M_).4I-L@@V5W)V8IG_-.2"8\@F-Q'2[_ZEX6[^);/,;29C'^K5FWDHYJ/_H, M*F>Y_<-Y.!OO2/'MC??P.2['K9KM=D9'?/',,K'G`QDE8RW6#ZPH+QZ+_<`( MN3,TCV^;C2OR&)S(8[!Y8^1MO!'7P!I8H12VO^TZ?.D0_MIPK8`"7F(<8173 M(:W:?)=&91_-^D\L+`U%IU3HM3PY$S3A^,>E1F<=1+]O,!8BF;C\EJ?9_4K# MJO##GM$MFV6?;&%>UP+IRQ[FS_`*N2DTJLQ_H81JYFF1_[8E>0CWM!>::D`W MV"(;6GQ'OMVW-^_FX-RO5?''G;[+.3D_Y^O[FZ-O\!M`95]H^53'CU&V)#_. MV"SY+&U4?;-1=NPL-RV;YD'R@@2U+F/0LTR.1)5+EH3_M69A3U#G@3!B9-JH M`38R46I*+OYQ.DX$E^>U(STC*I=B@KH;953\N MZO?X,2=US206-1.(ZZKPLH7FQMHPOS=Z6`6%=VK:9?6RVG;X.<;\YZY9!3_) MM26JY+5V.NBL.J$S='F(/2'Z:WWH`G:B'VKFS<,ONEU/396I&3MS'?T*XRD+ MFS^"R`:HQ,L5/GL3/GU+Z%J/NZ??;%C[$85Z1D9G%D'E&4=Y#%-07=8>]VY0K=H\)@=MF/:2?OA44'N)PC8!03I`QQFSR29SWT5 M-R"&!)AN@F@+:S!+C?XYM@,%E]!S-YN!!U,"'PG$>'&<1:YM=W0/[D$[Q=Z3 ME+([61Z*[(DF047Q&.;0:8H=Z#9S)L:TW]=:2"S=U,FF]O+=Z!&S8('7C;<] MOPUXHON;4!-U]>_2E7PJU-_H&TVWA;>M97OQ&7%6=-&8.Q&B0=DBS[`B^4'C M.,_H6JD1U$.B-V"+4MFEE3UKKHH,K](9WTII_)-3E"^^C`$J'*=2Q9L79')6 MUU-:+F+DCAC;!$(\/.K'>[GLAZ>.X:U#8RW^;%E&^<93,9R-G[)8_I9->2GO MU:!\6`-.E%#%GZU4>.+S^_DB3T8^TU+-A&LU5S%.-\!UC&OB\.M-J\,F$?A4 M$&CFNI]5#-[9?/&$=4:>\>HTFP4W;<_L"7BV(0DM(:FF-_F8*8N(ZF?1#Y^[ M,(\?M%R2>RS^K'9R+SIY-V_EO;R:5Y"*^LP+ZDL]6IUDH9[4=WI.S^G=7K6% MO%1+'$%"6F8]_N.[6[)LJ%,JJ^@EVF24E^?Q+?[7"_M?A9R'/78/]LC^V%NV M@\7LC1D1`V6W7E`V[R#NJ!>:^[+VQTD(/'3RN8*E5GB#]>Q*^K55[$3"+J]0 MC:I/M7YJ5525@N$J`3/E5@U`2U;'RD=9J%FSJNH^J!:MH(IYJ3`>1^P-J(=Z M*VA\.U>="0]LP$V0\;;?%LC>JEKSGIIP1C-!MIA4)9F6N_C6">-?+8V_R6KU M/::7WDT*=F3:XW*>\A>F2:.-[YGJH&KN=R/(C8.-L(IAL7>XVFK^<;6K,C_! M<[5L)Y*,EP[+S6=-80E]V^Q7>5)>WLW+L'>#;.*6X2^O,XM@XY?CER(P1DP? MF-<6>([W`Z[LK)^VM'[7__IM>_%<_:Y-F>I3U?]BBHWC?\53OS4_[+/_@K_^;__),_]-=ZQM^`FM!9=*TI MWQ\.?7[WLXXJ%79K8;W`YWS0O^!H/PQK74PJ3-&H.-6<@).(RGXJ=7##>J,* M0..DJ0:;=%7JKA\#@?0[.A_;^!D_^D/_&L;Q7;'T9T;5/Z=/?^R?\?6U]X]+ M6JZ66?_M/_ZY/_G7_N8__9?_]8_^V;_X3UD_T?'$?02\RNI_*[O_]K_^#S)$ MIA<6$("D9K/,367V17U07W!CQ25"YTX7QZ:@-O4:!D;"C232R\W"!65@J)-P M(D0)-Y1-$Y,(T4F@'L7'V4@H4E_5-_4E)\49VQ'_`4CFR0V@=3`SDI_@Q_F] M@+8?%N,"QH`P8.CG`EI^M)_?5]R<*FT+Z1<3S#+4V*R'KTTD1L#DD95U(3B3 M*Y8$(H&/4A)>59?5'$":=GUA1D+5]; M(]TL@_T>,Z@,-H.ZS?+RSA2#ZEXUV$A=@UR>-U?7[#7CQSA&GP1^<1T)XQ\A M?7+?6&7;9'Z94``,:`.F-D[- M"2CKQ%JX8-J"DF`UW:!6,]BT;]F@)*5<48-@E#5(#]$U#V%$&-=,A#I3,F@1 MTC4,84:(E+%0B`P3TP+A/2Z9S"+8R'.(CS=8`S$^*PETT@B]00J>#V?,K1W^ M$1Y"!'AVYO3)*#**`*3OS"<["7C4J8DG.(\6??=,2$GB$87]#WPR&Y8U^4QCZ-XJA82@8(G@/3!S'&"*&DR%DZ!BZ MA=B*7I9`D3*=36=8W;B#H.$*4\LP?)^A9Q@5EH:H(89CR%Q55U70-M<@@CF-5,\6].FCH@]!R&KMZ;=2=%)(A3FZ8=,86BU MZJUI`HKWI/5D+N_A!67-*467'"SD>)$J`0H?-](;,V?\'@\0MSU\^V`*^B?A@9M68+3=T&+TF*_DQ`55?\UEM/A^,[//_ M@8!]C#9%JFE#B]$#AQ0J@'5-#SBH8'.VT3YU)NI_9F*D^"@>'FFB#^+XC53. M3.N"RKEWTDMMPS>ZHBM:4J^C"I8JS( M*LJ*I2*K:/9\/?/#+.,,95(FB'M'P$V)Q2&6:!P.B\)BL;@EMEJ_R->3((YC MH]R`.+QP6E05:P@GA8;5S6AHR4B+\1I5]2SB:LO:;+B3;$OCD/%%PA4K'QN8 M8H!<;(BB697;X(?L8G_((JJ+8LTS)]P\<))-W_*#S'MN8IQX]^&`KLXK4]\9 M7ZX'8!*R$(=9'%R2F#6)O(RUR"1.)L^.LEA].350")#RIM0MTM2M\QX:)&,( M*E=IC20#%P(3`Y%J<"]C-B@S MIHR\QVUCHQ%4FMA-`'\]?\>BL9@E_HS$XN[49_DMF!KM([W&$-98[)3S&8\-+,*$./#,4W@KV&=TV;!=;$.Y$1\N2@3(X@3(`R@'5L;4Z# M@IP=/JV;Y6C%J6@E"*8T$&4TM1ZXE"VX`6'5GT"8`&/8'Z&75]@>5&!``N M8[)6M(*PQ$>_CJ]SI-!'9ATU@$2"AF4BS5"Y@B!=)T7(Y"._R")65W($M"`>1\JX(Y$Y'0I():*` M'"%VR&1C^YQ,\5+M<^<\0A1*BI.'((^1AW/G[\1Z5\VPU9AY,$!?!U*)](]> MAW%G$060'@B'!STR3[?(!7:%*%%V!W*F&[V%\TW24Q?V>ZG*UF)EH8^)2(+" M>S0B%V)6%!#5,3D`_3@X=1Z]B:!&<+5"!]YYF,5]/MI><&(^D4\(4F0B:160 M+Y\L$M[X6L?1\1(9^H^[424RF1A%PQ%G=1*:4:7+3L+D_(_`226R.`Z0P`EI M5]*Y9B^?4`CH0$'XD5,6]WU9GD5'Q$"58%>(=61SR7B)XMQH57E$8,=3U=J` M:[5="?/5%"(.@82W$GJ0L5\<>;+-D2@;'2D^O3D$)')2/[51]HN]1T):CWC* M_SAW-$ZEB[0R@Z5FRQ#:)O_)?;Y9-@*E67'&27+SY;UXB.BHC> M^'Z5%:(8P?UPQ=DMXTFF.\:)1%/0S2YZCC.5*6Y!7B^[UX;51>0TP>DV;-A919O3"%)(;3 M3`9A!,P+,U2I'O]C5U--^B;7)#6)W\!)QQ$LU`S!09((W5&)T"_CI,P$!UV. MZ,K%V(\T(X]-'H+MX(9HVGV"3I9B88TP:349DQX1,FE,XI'%9(W"3/Z3,8Q: M9RR=A+Y)G(--SC=$"':2359$@Z&$YU#J=ZM)1-F&F28K(8V6AN62\%%)R)!Q)^3A/F8F@=JA]7W:+ M8<,C>2?.V$WY($95#)9;PT257>Y26'>D!$8*SR-RCAB.TQ!^9!NB@"*BD69Z MA2OUV@V#3DZ2*@Q39P_F.&V8E=V"]F M93!8WZ"5LB15Z=8LD6YE7.GB^7R"IA((:=!)=K6'-%71U&%J&E:%\@TF2D-YD-]GDP'YPQX$$^\U,:L<, ME41E1=]9_B,;=3/E3QY#Z:4?_%HS@YA!>!B05)EX("QW=9B(B7QYUN8ARE.,6) MI8*QI9>B$5KYC>PJ?]JO1"B1*\L*:D1?PA_=&]"'7YZ'&^0>V5_REPU;@>=# M%GB""X$I%\TP=^7M9O),+5`31@DUA8F\I*T&"36("UDN-[AU)]&E:YF(/#$% MY`7580)4-.3Z$6*REMSCC]1='I0=2$!33;91PU)W:9FLF#$):'%-7BW&'?EX MC"0>FTF-F6.FEP^,CMEC\I`FFT/Q/XI/0V9W@D0:F0G>S-2=S$PR3"&Y]V`Q MNY*#J>8A:OR,$Q7\!'FA$I.7US`WETEEU1-M5M6)!"8TQ;:R:0N9F>D=/E4X)5<&-OHL?V4<%AF.>BJ('G9&J&&=6G+!H2V7<1QY% MF"?AWCBL/'6P7Y=3975L;,Z+=Y\A,+,F-_G9 MO)*E50##%=Y0\\U_]4XUD&.=ZY5UZ47SR=$FFM"(QN9K6&RND4J;Y[$X1BW@ MXPH772X[P0I9-__QE7-4T7'Q#"]'2!0&>+Q$))@(AO`H'6;'@V5N3C0/5EYE MQ0AH>"%0@A9V48OE[>/"D':J![TY0-:;)9@M$GAX+2?/93)_J!UUB2.B>6!` M7Z*Z]F^E:'-F$.;&9$P+)Q#9>3BUQ$^!':MZR11]64),);Q5$ M!C!&47&42;YXI4N8QU">-4BDVD':79VP7U153,XUA:2\AE#^G5P/OHF=U)@^ MB/O"'+(PS>0/LF(JGHY)9?)&&E,HI[$DNO2*Q?D,GPN7>Z)KP';029))_-9"D"*U61D,GS M64WN>R./`"F@W"P"9`L7Q,UUXDCW5.79*[79NX(]*53CY]XI0%9+EJ+(C`J1J(E.&%K\)BS2=L@TIJ<4'1D M`8H!253^HX3'Z^!UY\U$1-[,<0-F`3E'NF?NR\SI6IXPKY_&XW3AMJ.AE`442!]B MN7@[1\[%9(7VCE7HF"-Y7:%'SBOE?@`?:M%4,\6V4+JR"@JD>2D.=TT<]/IL7L\9(])$ZJ'1AZF$RYT:H5:G.A$DW)M MHJE6J(5XX#.MAY4$S]B:[T[+)'1D-#?`Y+$WC3SPVF)E3@HY]F8&6;DL+UX' M+BJ+J&:73]1Y;,XKUZ2)2?`(D,$G@B)`(DE"RK5'$C1T=T]GLHPVAJFETV1X MP(0Y(X`SF!A*H@A(8GJP--HD%IJJDG:D0%/#]9&^I)56TD62W@1,B(!D@8PL:=@4 M4F7619]23PISG4!`*;05E#Y;1*F"(I1&71FCQ'-M-2""B?T6,>8MI(@SI6&5 M'6P9G5>53FQD1_KR.ZU.+1>31*%T'ET,%$IW42@9C,KUP&R0,"E+&JT0-SCC M4OJ#R"/75WPR_XEBR(>):6+^:!BC/G>:C"W^CI9D8@XRX(>?AE=T,6\IW15C M%:4^Z5!JE"*F/ZFXE9@*I9"ISK:-`'0AEE(:EC:E&-!O1KCY(H2(T`FH&)VY M$?&)H"POM6?M^8Q^'0V2WI&:2D?GRO'I$(0JP8G`4TA"G_R'[QFJQ"YA*>FH M$*4G-@B?@%>`!!4(?**XW1UG"$24BQRGP55R>H8LIW5'L81XG"'TC@#E4-A* MA&DUDNME(RW>;(ZG366B@NJ6AU.=!HQ0BLB7E^3\NE\F' MTL&"8DR%1RZ2ABA(!2I@=*#F=`C622"-"'Q.HF(`L(\`8\(5]+!&OD[?.G7(8G\8'1';*1^ MB$FLAVW4P>ARD>4JSS?-^51[@:F8<[>J-E7B>Z4AE=J5&PHSMFH0>I?F2RVD?[4=[C'_E_8>!4 M4Y:53PM0CR2M$$>=*?/E*TE+JHO0`K3L7250V?JJE*W[TD2V;XX_B9-5-3VV M6'>0#473Y)M4"-U1)+VIF%AL$R@M=IRJ$?`1!";RPWO"=<`_35:E1?;X4Q\: MC[5T+!V-1\4*A=*.!\_0<_S@JNH)]H>OG>KIRKES?`Z+Z42L?G0-E(.`A0D`0H'E\6=$._B8^M3IQ M3-7RK#DIJ-.'YKIJ6?+I&F0&[7X;(]\T\B!I^ESHUE5Y9B2A(R5@V8N$'>I6 MU9!FX>!PXIP(6(M9&RDB<35SXT3SQ)2K9Q.U@CII>+DEIL9.G6GKY'>3X?&` M^)1,:+MBGF62^!0"'3_@2EVBQD!\N=]U!Z%<6_]K^+6.(:\"+`#+DRQKF&OF M8IJX5I`:@19>19-5368"H;DO7Y#T*M$U*DK-`!O`&J_B2B3$@7BPG!;?U/?T M>A*0_8/L4&:CFM^B2%U7+0QX$[^B>;=K5#9Y!C#C7%F8I8&N":S&V*K]*`ZL M>U?PB"D-%X$F3Q$I!-J0AJ!$9SO:VA.BZ3*&3IWBDCYGI\L$(Z:T:XH4^+=. M^B.SF6,2FI2NUFL7.[IBKM1*]5/ME#TL&A[BHL6P\=>FPII=J1;E+9E(&3`$ MS%D87.H^_(=O%)[L,_KT+?!3G.CVO'Z MOXYJ!\VHYK\R2A/;;?6WV'LSEEX*QUXU1%QQ$K]F*_/KE(EF[9_"RAOYF0DK MGIF?6>'IL';;`&JJ9*2K[`C"P8T@(UE#UZ((6"1(AUCPX&;@"2X[KJ"R+"?; MYB*&IYT)XOJ=E)I9"RT+*54F$"EX,LV9G,`6V_:L.+,IVDIRIMU/8%I>4VKV M2:!7YU+!LIO)$BY;PIQRY`HXB]@HL(G-.53,*#6-%HZ(G\5]_LI$.@-D-%FD M=_66@8[(5PGBR4E8&2R#YLWF?IO5_SI(;69)#T"[S(YHD5!;A+RN6P6MNY70 MND3]&$K"\/0G.MQ5PY9*LZ7F.>301K3_JPG3T*XD^=)"F[&(A/[20IOP;&8C M;4GDSR8KNNQ+M)D)9`C9`*/+FXGSIIEM=I@_`CK68BE:?J:AS(38@PP@ MU0AVC%VS)]1RH-98<6;4%K5(K9>2U%(MG\\IY]0>M4IM5*O"3K4Z;%7[U!:U M32U42]5>M5*M5:O5>K5+[7_RL0VUPID092#T0A-I)Y7'4$;JX_TD]70FBP\? M"VE)0:_L@Q:3'6HB8]C1[D0F01GP(F#UM"IO`(4:B3'<27 M`#&^;21(VVX]PVV^T_7M3,3M9KO,*K"V3YIPM:#352&*D$2]](O'R MUV2REBSM%+T"L/>M:JN0$"M+VK77WR9;QHI_JV5QM#$I1%O`3'-,7[*ER!*X M!^XB>ZB!L/[M@FO@JBW9SH\JX):P#YJQ`M>-L`$6C0+7+:]=[/U#WX*NKA6! M)I6TM](8H=/%,K#\HZLR4XZ57)4'(@/@4QK*$.#.LJ+*(Q9;QO( MS&;5[#1;B)RU:%[148VPB=W9XM/G%Y1;_2W- MRH_&Y#FZWDF5FP)AN#(-HPOD3#1?D/23Z49T@$@%R^G"LK3LL.+I9KB=;JAK MZ8*ZF!&EJ_G@9*MNJ9OJCKJ7RZMKZJJZ#1VL>^K^)K.NK4OK[KA$G&$EB#AV MN1D^9;&Q(%#'8!*73K-3VYRK[KROI5R72YLI>+SLG7/@DD_3KN%9DE"PHIS) M>>M*GK9L:*++.B?T"6(HSE8UU]CX$I*BD)D+F??ILB^G+KO+:CU7;EIB@YF% MNPVHWV+N>BFK$R`RHYR0`F''"IJ87JRL!.3N_BUN)`)8Q2.;ND MY:5BBI&[!O4]1Q2E=B/ZMW1N$-4MTBT@[DQ+H[2VVFCN9[`H-3MOA;OSUB2* M8+"HWZ:[$PFNA?RP5"&L*>*,Y"$WVXG%HY2W$RKJ!IH97%/O94;U5F@D2-7K MF&B]?J;5Z_5NO9\M9Q:SQ;BBV:@6F#VWXDC:F_6NO5&:7D+%^D#5:V9F+^9O M-\N5"_=.LGH'OC-4GWKR!%!VX656S8)-$ M,GKY)O`"L?INXQK9?+`XK^F(UJ8\6:_IZ ML3Y.$OVW;]KN4D+_J&?:+D?B\UV^US)&Z5@MFO?D9:Y$H>-W3SK MRS[`H8DO"\1:>H7:SK*3-+Z[GBSYDGUI).TI]^S8OCG`U`IAREJJ+WUBE3UF M)XF]:)&HP`<3D5;MZ+U`RF.6%5:\7%H-[,!R:6]L#HQ9<6GOK95F`U=I4EH0 MG/H"P50:#7P#'\%`\!!L!#N7#LKR`J8UP?\-U+2?"1W<5BZDN"D[=*%\HGY` M?`X12"*SC&U_UC=DH8UN39KH9@:/P;F?^]FA_#7ZRD!%&UJ4W)UA8T)"E.7+ M[FOW`$29;R+EY=I6O2L:=.6:2:`?8VNAHVZ6'T,#Z;P(6R\<$N?",Q9)_-<,6WXO M-H82W[TD+ZUR$GN_+_'X&Q-#@#.Q7N+W*B4TL4R2$^/$+K%.W!/SQ#>QD[,2 M6V8M<5#LNY9MFEL\9<5>@!G(U$;,\#U3VQISK`TJNYOI]ZTDL=-AR`;PEKUZ M2Q&;:WUIKG#M5+3`PK]<,;P+&\-F\3`<"]^SOC!:[!:?Q7"Q6AP7:R!9^=(&LWU/V"L!?7W0[WQ:^:B]$3/CFO2[N3:SWTKUY[]QK]_:]O?%/O!L+ M>+XQV&?*T<:Q\7',/X:DOUS(Q\R0,Q/K=$.*K496.[G'?IAND[%^PIM9XD0(312%U]2P,`D,:>(VA=3 MQ9+O6"4E^SVO+)_<+6JSCQ;>JU7>)/I+B&6\A%CA+%`)]Q)<_1BVR^T"(H@;O'E]WVMG8DE[+$^P%EI',>#;REL82%:F\2F=A3+R@$XA_)P^\=H&(0 MCV2KR*%$D!MQ@-/4<*];8W!/Y9;U> MF57F\S2D2`HI$O`]:,JRNZ*HL&0:K>(3&%TU),FTK'V%O)DOZ-N1:,M9G&C6 M+6^O!5QGZ4:^'0YDK[;TFLK@$Y4B_J&OE$:1?GP$K/XHW12RBXL`QI+9G@Z)0Z-VTNOK+3;F2WF]]E/#O.I M0BJC*:=R"/KBO`0#`DR@@NPC[)VU:Z>D6.V=EY:O;';OGIU"[HIL.W#_"^X< MR@VNZXK5J,S+;E$[UV%6,+.J0Y/ERQ;EPOOB6C4U6E%PUBPC]S&5N M1B:7S)06XLX,\\\VBQ7X4K-K#+7S,FNTQQ@O[G, M;$`B@`+,>S/#*S.GNH@-8)CYD,;`T0Z<\1K.D"KB7#03?8.SXIS*^LW@#N`\ MK!#.P@KE?#CSS8^SY!PY+\Z9LV9D.2?.F//)G)K$<8ZSZ.PYE\Z!L^:6/G,F8GYU;.\NUPY'D@8?,=IY%MGF_C2+MW63#Y9K,(%;P MK.ZP=USL\*PW@UCW4[-+RC7/2]R[&S.G?:=*!9LVAZ0E<#4[]%*T-PR@DVS- M*&N)9CD]\O6,\93/0G.H*,W2SMO@!=O@JL_0LQNV$IK/?:SOFSY/D-SS M359'TL]"H7_;,N//R.__O#\+S:+L_%MPT<^!2/RL&2'0@`@#;?#FR]IN_OP; M.="&&@3]0#^\G#,%;0='O-\S!EU!SY0;J0;=07/0$O0"7SVA++:L4!#RZ$"YG`NJ^I,K-0.VU*NQE'P]$-+U/++=[,?4]P M2:.4).,:J(M!C[W_KI$= M;*EL3&EMH9VE[`X(Q#G2"F+^2)==TO28-P8$:>38N M$1"8E(=@="H-X\:3H0H&HOK9M<:*XT7WR"6$COYH.+[1.RP936Q=TIP*+I0N M4=+I+C(M\!*S2TMZBZNLF00O)^T($=#M<'I;UCIV=LHU_9;Y0W4S(@T[']*- M=#@-3>/2#S1FI$Q3.WG=@@GN=L/EBU.IO0)!C6'/)S"D7,+W:F3<3NM(!RQY3.1]J+FZ2/$8SS^!.W<(A^B.X2I3L1E=: MV=NR\_N&NP1OI=4AAKLW6KOYG)7->!CJ=#//9A)5R&M,G]0@M4*"4JO4*34> M7=3B9"LUR#Q2YX)%+4E=4S]H'C5.K3.Q;1BU](SO$KU2KSPM,[>U:5ANZ?L^ MT[[L@YA4NY2_B>9<0`-L%&_`!NIF/JHOKAO-CM%$]3<([%*S=FX9+38#)"*S MG1OHID=8H5_+GG?G24BU&>Z^>UISSA5?WU4N/WVIM MJI`JL'4#J6R):K%UPZM&S]:U]6U-6X\JLO5N;5OCUKSU;^U;Z]:Y-78UT0K7 MQ?5N'3POUU3.2+!1L4B;TFWT0WU!.K!6;%W38T%)YU-J&M/8F';M78>SWS5B M`UZ/U^)U>9W5DMJU>TU/S]?;=7T=7K/7LII]C5[+ MU_IU?/U>T]?[[7_=7^/7`/9^+6"'U^>U?UU@*]@#-G^-72>X[6N$S;Z>:3$! M&[)1-64VJ7GH5P72Q)95[1TWU$)S'J5,SSYLLS26J9'-A(XI+>N9TAZQ^^Q> MM[+*]#>81X=/(>S,O*39V.L8CJUYDKO(EW8"[C`J-'8M%F0#V2[S'?T]CSPBH5TK M4=NUCG!-E5FSU\9T[TL/VS],W0=;WI;16[,EC`"O3ZUG[91N[V"VK+LU9Q)Q\FCMKN9:E]ZBS2KG1F9 MVJNVI]UJR]J&GZM]0[':9+.H7633VITVI\UK$]/6EEB+:=_,PW91RV+_96VV MB8TRDS#^$+$=.+>;C78:EU:KU6_V4.N05-F86BI;SPIJ?@JV;&PWSM3Q]T1, M[\T7+Z]].9?;OC;6:VZ#SNCVN*UM@]NZB6_D;F?9A7.XO>.FNB1SA4=H<]BA M\[[MC.H%ZD<00`3H!8(2(ROS:M(XH76%$ZZK_:TYM)QE[.;MK5E8F-F\S8][5^?W(G'<5U)@\Z8DV=#-Z][.NDGH M%%:5+`)W)`*7=D2:2[MF1]$]`%IWUJ9(U&\4DAL+(;FC&9?&[SAU"'!P`W;/ MU3-0J+L++M*I]H%K6Q$Z[?>M/>_6WMKL8>1F8U[V]Z\]^[M>P?5N+=O]'K/WKTW\&U\Q[B.R::- M?!_?NC?S'?4NW]#WIC)\W][.]YH=?3_?S??6)Z"1S'UN+IU;=M^;FL;B[&PA M<]1(@-_UVI++4/U]WML]G-6-2"XI3JP83$?K:)ZK4QWW\=Q=[$OK+V#>%-F\'*I8P2C;K)L+]F@"J92?.0%"J"_C( MT!>X![W$V=!']*V=^73@!`P)S4-_X$LTDNTZ:^"*=/,$@J?@?C0)+4U;U1$O M?\OP_JZ`,PU.RD[@!E>Z7:$I/N&V!=B#LXR0*C#MX`G5F1&P@CGOB9T9F1V` MMM&A/=TZL70\3A/.IU-&:&=B%TR)"]>SFS+OBLI@+^IF^S(1(1VV4K)F'+K=< M:\[:X8]W4\(%\2YJ\=0R-**R,3!!.)Q9>K9LP50HXRK#N"V;@]G'&"-`X-T@.H.UYF%\U[N#1K1*NR]?@?OOLVT%RL-?Y` MW^,`^3\ND)]NVM=`OH\+Y-:S138GHT&8512-W"2Y*-$BGLFAU5=-EN/LRGKZ M8Y](6FNN&WEX%?WZK@OB'0Y4(^(@.4VM((;D!?E([KGJCR8Y24V>D\?DQZ9(G?>K6OR;O77N3%^(\.=JRA[O9+:QN M&%3OX:L66EZ0Y.'NM%K^NZ[-,3D\[9;'Y=_.7.Z0D]EJN5FN4X_E5SE-S9?G MT7GS&A2#">;VN%"-FU'2BFZ@F?#DG?E!'HA+L(BS42TR(Z""1\V&YB$=2*+U2M&"XM,]JAR/V'[NY:(/.^N:Z;V(.Z)#6(TE=VVZ^N:U)/JZ<)]7+ M>7+.G(/FFGET7IE/Y\VY9QY`6^?2>75>.\NQ=IR7.]9N9@A2/K6:ATY/MWE8 M-VJ46E6==Y\J5)JR/2/?YQH9'HPM[^?S.?/K&=_4 M`/I/':!3Y`,Z?^Z?ARH);H'>GZ?5##K?6?)0Y.:1S0.A`RJ%.+?(0E7HV#,0 M$U0A*ZS+@_((B7+].0"EFAREVB]R&WY-@`![(%YE/1 M6*!<&3FBX4DX>H28HW-(.GK[JJ/KZ))7GQ2Z\.A$^I!NI(M$13J2SJ)(MDIZ MDRZD.^G^"]^B#*=A&NK2T8#HV4V14I=])"L,##ZT27[IR]&*#+*^>P%/DY2E M*$F+4)IN!*GI9KHBM*83*&7ZFIJ/I@KJ<7G7+Z87Z@A*H#^ISNIO.J"?JA/JC#EZN8Q507M9&/65Z.OBT MF/D@&:;6J8THF7UJXU19=7*C^N3)H^?HJ/J/CJK/S5$*CIXAC3DHZNJR.)\'JK?JO/JL7LSP/7NQY]']X>IZCU.]GJ2>3?NID!>H/Z3OND/JG?IY?1[<$8(\3D=JN5ZP M=R?^.IK7MM@Y]^1WAWN,'E1.=25E9^& MD_HD@M#L-WO._H'@[#N[SJX^^48\N\U.=..T)V'0_IKU[+*LT9XT'>U">]/. MM#_M2_O2?K&/*VDBY^:R*$\.42L:$8$>%Q)%-**F'I&>1M2[D;!,B.<1C6`K MY>GSY#9%3Z!(V`X`#DY4IX(JKW^GC8B][DC1Z^QZTS2QN^SINN0RMW.GFTK= M7K'C[21JTC2Q"R$9#,">(&KISM>S-:6N/5.*JT=Y>7IHU:A'09IZ@A2JA[FK M>I:[YH5GJ3V<%^0.>!A.0JD]4T.)7KFD"+GFC3@&"^[HNJ-'Q4[LKK3.[KDC M[?ZZ'X"D%F-U/"[NDXGZHT%.*>BCD,HN3I!P3/$NC.XU3!)ME^`5+Z//*Z2^ M8$_D2FMVM!\A.QZLU';`2N1ZL@L%>S?NR0ZENB.2OKN"$H$^*=.2?8BJK&G! M7&ICTN)!2IVH&5;R[);?NP=I`I(N*0K/TCC* M0/>C\_ZQ0EJ(IQ]#)4DF-^HV:-T"B$UAY[ZY/XCMD`1)N9.4;H]$5G?<3.6* MW';$`_",US'JY]K2=N&`2D*.GKLH0WF]NYC^:0L/0%*>MFC!3H4((BO6P2JU M%9;N(2$?R)Z'ON;_;L?P[HNJ%0+`Z$\]9WXZN@<>_-/8`D4U,?J3]^6C\$\F MR-D+J'U!1=FO1+#5-7&:'*^EIGUY&CI2M_H=&7LESU`Z'4['_YC*H\#_NV/# MR&\J.!V7OK64\A%BAL3&R%7`/`\OS+-35MS,XVZE=(#1O506_"KIS""/9B4] M9`O#6:DL/;+E(R(2J=2U?`AYR:GM;-!IS\5=@A7E/S MY'@Y'CHIMLV<%^,^I-.G]#5]E`)K2NB.S&+C8-Z")IP3F7Q$*RH1SQ(]5B[Y MB0,?9/D=[DHK674`>)8E.:I*`O0@S0GU6 MHU7]Q**4.W4P[H`IG[NJ-MUSZN-H?PQ*+J&G M:?]VYI/4O6J/I/*>N+U+Y]I')[$]/[V[[G6O/5YSVXOW`QY#S]R9]4C)^(5'R?6?/5\)H_]FR\]/3DAC^&84-X?09_G;8 MX7/X&GZ([^'G.(4-!R+VH"FTD;ILX9,OPZ1T3W=6]$R.-`BSXS6[IQP?WJ,[ MW$E"-^A9,+OKO#/%"!W*">W!V,QD`0Q^*//D5'5F3[77+_GYO=PYXO?T`]R% M?$?M67PE>:0",G;BB/).6'91AKQ@Z>7K?%T^F,_E?_D%/1LYT9_Y7=U9`S[> M\4\D(-8^C\PIB![CV6-PW\I?AKYKH/,0]"A./B9/?2'"Y^_Y`63*E6%BE]1E M`!D^/B:^DBR"Z!_Z`:3"\[\423I1HP^S/[NFZ.>!Z!,BEGX`B>D_^JZ'K)I! MXIN(?J?/Z2.CH3ZI'X+4H2&4,K*,AOK-**=_%&:0KS[H$>MK\*Q;QEC<9!]: M#U7GV4--O=L>?1!F10-7VU$#^"?0([&_8;J6DX>'&:[.^`LH:WE[EB[H);3? M$Q&0_F0&N5KDD?AG0F\B)0[/I[1O]ORGAV?^+NV+G?\IKE7NLZRVJ-PF=(;Z M$B<36;"WC80D&#.APO+MY&Q$OX)CFLR[Q7W ME9.]F6UFGH_P0WT*?\//JA7\[RH5)O`_M(SC*AF^NJ%/CJVY;A$R8M85AK9] M9+NDC'9968-C%)-_X`/U2R1]3U-"FBP_?D_2E_Q@E!T'OYSWZCW-CYZ/FNG] M1'GSCYSL?>?CWJ.:25SW^L@(7L<@O]_DB3?KGFLH5$EA'N3`KU0U_$UM%5:K M.?P,?\)O]5?]$0S$GU2"7TP_P.^#X46]1X?S>61MC&?5=P,T2+/A%`;(E"YZ M=3,9A%@P-2*_&I>/N2RN:?WW$",[+0KHCA)6)%NA8PWB>Z[FW/C2#_X$_N`O M^(N123Y#./1\]\YRNFGD+X5(NC6H$>(UW."OK]N5@;EA,IB#!!_D8Q3_NDOS=X9_$)!1\[$^NXWR,]Q]N3%LUA/CN M&@O5J]**S^3[)RL^4]W.RH5R`(S>`G#NBG9'E+DH_H"VRSQ[)Q64*PK=I+\[ MG&._'G5Q3IS*5<695EW_3N:#YUR-EM\_:")\>_^F96D)[X+_)A1?=5R%8QF9 MT^-@GHQ13Y]LZ%[V+K[<&7&'+!&X]'1`*[0 M_U03`4#0DR//8M2A\NE1GGIZ5B>U`][#HM?/2T1TFI8.IPA_CVJB&?*58D=L M_2)]>R?D19G/'E+0>R8Y!-J`+XS`C=NO-5**6#&!%@(W=D#RBX!BQ52*\))8 MG^80/R;,A!]P^U38F2.1<+Q/D2H4E"MG7!/Z"?$#GXDE#*(6W68 MBWQ)L!\E$GH#Z]1;F6'$]FXRS2>>R$(F^^0;$NN9`BE*<[!WF@=BV/>!^!.M M4.Q7`*9&R"VBK/>+:.NI\8A(%#U,X'SG/M$-^U!XTC!9:A$\KX(97D&H(':`0QP>G`XND2_3JJ(@@ M'P94X$#00_`B>N2L<]858\P9J9*D!MSGDA,-O#X\']R!\,!WH#PP'D@/?#X< M3NJ!^$!)R3"&]C`--`(P-LAY]S3HWEYGM0"U(>!]3^8E913+R!&$-V$`00/2 M1G(B7Z;!5/YB5S$3:,K<]$`DR`[A,LH<"H^BDHEI2P=H*5.X*L9#(B+VW9A%D.>QA8FL)9)GL9!0[N(L=I:P8#"O\H*U,)I\[EPB7D$W7X?#"*-F<5/4 M)JQ(/4%$TKNC64&1F=SYZL""8T$XECY(10:TF)8LD*@0<2>=#NQ"(!(B2I$1 M5')0.(M.QQR&"^6YN)AXW+)0D,&0"=%J,NC2F=6M.RHB>#KAPPBI070^^9WP M7[P?I`>6H+L(K4$:O"2=5=Q_P)\9$00/R.0(3+]-U.PG%S)=A$%C7E<-R8U` M'6J#M<'"`RZ"Z"?/@6U8EL@[5JM06`CB@^>($0D:!P4>)4'0B(DBM.#@V['@ M6)Z#`Y-\"9`%.@@EJ0Y*!Y$STD'H(!9,!7$$S--=.IAYWYJ5RJ/*CN5^@MC! MZ\R#Z,%I1IMB9>(]`6=07/9WPAN[SKT*4B(:D@Q&!AF#^$'*H'V0BL>B:(S8 M="XJ**K'##&B8A4ZB5>M*3R"Q$%YB0?O.`@23%&4*AY:FCPRE#$J17&=4#[5 ML?XK)`W^@U9C\C$7-%$8)Z0?:AF$>HK,H59A6>BDTD):BB$)$P M0-A'1D*:()&0)A@BX40E"4:D-*P@'\'U4:8P4\@SPVZ,0S)U48NN3DR@)4)TV"G1 M"=T8,2:QX"]O54@6G+.`[C!Y7D$]"]HA,#(>28^8,ZR"JQ!<89I%1C3$,+!\ M0JQ6,1X`!?EE648L/./)"(^%+D(5Q9VBYC$H5/-0(T@"7X@75>=!Q"1B"E\5 ML!9@?*2*E=NAA['2>6>P';PO+"L!%4MB&L$MF<5T'3Y4`*3.B9Z)#_)@"7(T MI&:$I9%)A;S0]3`O3,;DK-`;=XQ8BKGP9$)4D8ZE":F#:$(SH9I08`@=Y!<" M#/DE^8E9H.`!#?,+S+D,"O5T^Z[#1=8EI)24L#_`2\@P@<&WGM5)_\0J25=H MG;!.;J/EH,#C.L*&"=,9[,0A`Q&LSAE$.C9G*D#H(EP[[I;[B"QD9Q&3R.#- M-3!(L0HR#`U`/64D$4TE'68";[TZ!-5I#K&%.,,X2')2,X#5U$V$I336J0[V M'8(5E9+F1):P]%>GB_QXZ=8ED`B&!-M/%%B;$GAH^5PAW!I"7R[*7Y4S<0!B M(@PEQ*;IAC#DUJ/_&(.H#`UF5Y>`CH+B8IB@P!@R\=PT',,*X,8#`GACFE4E M)R02`*@OHVN=O?K2(_( M[NB'\\/\X?TP/H+#DR(9,]`V-B[W(=1";2&9(A_UG&*`^)CZ$`O%17',>&-9%]A92P05@<'%AQS9`B&!!_H``Q/D&N>VF(668L-"V[P\LG![C"T^.] M\*B(>2&C%/AH295NF8.\6.)-$*2\R_>PRB0M:2!E_FZ&6POS43=I[C!"Q,2( M:9:(Y4%'1>,DS22QU@=`FN;(Y"!4C)"*0N%GB=@,!`9.PM+Q3GX?2!)N-&W`NM",CRI=8[%*H@FQRE$#^"TU8H8KSD.)#*KJ5>@4:B92 M-PR)X4-$HGB%D6BJ,24J'5B!=0=LH@P"[Q$@"O(1K)QYD#R]AED#!/@P*4;\ M2K`U-I5:X13PKVA.$S&[$93AXR$]D M.W1X<"2)8'J)G_C5,P6&]6Z*U!R;8LG&YG<<:83`E]A+]R7'5P])%;1V`EW\ M\.IXSXK@1S4IV.*M\8D`>G8EY!$?2FC/8.1+*E_=ZT*`>8WA'@APM^<1X>WQ M'7A[0PBS1HT/]S1[2F'``!U_,C_'W^-.J$=6]"2*%5,8E8@]DEPQKZ'Z:^$Y M8\A(&[[&23'((W*',GK,LP9!G1KW1`PBQV54DR5W;L7H1-B)QF=63&%LWUI:6Y"U8G1BK,A9Q)%%%L]SGZ6<7VBQYG?@\?R! MQS198AKMA8KOPB?B`_$]^?HYK\4/GVRQM3A;C"WN0QQ\3X_F0VIQ`K&%<(C9 MXX(2GR/R!3T1FSAA:S[C$^BA#CA19"^" M%Q#"/9H@J)/\0YQ@]1C$CN2)A%[KHAVJ19Q?4@M>C3RF/L M7.I\QJV]!OPL>K(:'/0QE!R,E8CG8L_)@/1@="BZ,M)6$4;Y1X11-;%A+"N" M'CR,W9L-(XIIK;=A?#'=%_5/1"<9DRV*O6@1V0.F^Z!/'*428P_0B92:NCM) M%$$N($-NWW;"N",B.3VP<7H0)HZP(H&1VR)H(^JU])9(3[YYTCR)LO?5*&,P M&4$N3L8GSY-Q<\33`_%U.6)Z!"'1(D_1IK?S`RUN&7%^I$6>GZ,J-NBI(##Z MSH):VRL_$A,JJY3SB57`[[Y"+*$H(Y`'L[A&HCG1&>&,-1KE7X<5H`&:V2*PM M'A9/GZ/1B_1&[A(FTC95>BH1S(<#H2!> M:11Q\9[OUT!FBA%OLA"]IB87N*A%8*3K)U5!`N9! M.6(2\@=3U);DB6$@J-GX`X^-=@Z1C.3BB7>^TT7L$0$_B"7)#[?CCL>S@)6P MGD1,_4%O3,1#X1B!4%,LCQZ.%<>)H^[CD"2PP MAAR$#D*_1\[QUU48H>.9#>U.=4,6Q7^%LN2`@$"8:V8JAT&W`VH%6))\Z'3L M!_.#4ZCJV7UP,L@(U`\B'LD<`A#\T_7H:5*>\E]?CMLAMY/;6>T( M'IA,:Y$1H3^K(Y-$3.R`0G8?)*VDHX)&^$A$I#CF4#XL]Q(+"TUD^O`H1-1) MZIR/T$=''?2Q^4BE>.^8@%R.-QLRR8Z#PD0W0N=%U8(?(!!X8;)P_$@B>1<" MU<9!-INHB)T#//C5&-RHSO!5_)LI3WH063A_[$1]HNB/YPC,1I^"W%3"DT+@ M4^80#:;*(])1VT5\+"(6'WT?LRWDA<'PZXB@^!\%GT13]@SD8(50J^&\^!`6 M.;J.1,6H7K_D`((3">G8Z3:*+T>UUH&0)=8B-#^2'\6/]4<8(?Y1U%(C!$%. MK4X^_L*DC-@(+%+(X0<:DF!)S`T-I"5D1))[W$$>0'J0#HP?)#A""$D3!$(B M.8B0/$AX21`2,:*$C+P4(5L_RK"0SOR@[QB!X/4=""$^R,<:)!$$I>BF6WK, M!*6/8,@OI!BR4??1L($(AU(6:`H)!)E$[3BZ6.E@(=PM_XS)Q8\C^[/@8/_0 M(:T3/X[#1^Z1ZS*T6#MV/506GP6_XSKQ"HG;P+!@'`.):CI:"&.JJR%R9$2. M''=(C<@J4\EQ$OG*63U4*GQ#4I+'3`$2649Q=([PS.1\:4AGA-5JZN,;FF>P MJ"`9&19420H2!2DDO`Q2(240Y!'K2Q(#(K&$`"WDH%8Z`">`D\6P,N;/2KUL M)JX>-!0:"D%%%^EVH#R$J/XY1$=8Y%0#7>BARMM=3M`;]*("B*C%!+F*3%%( M\*Z1HCY\T^:/C]1&D7^<^"`0M<+@((,#2?/J&T-"ZLB0Z$@CR(C&'%D$:57Y M&-D>UZ'0QNT"#>EW%$5&-DP>L!X41H#"@L=#!-[Y(]5+%J2`Y*ID_"'PJ";1 MIIY6[`JMW6YB!D@5Q#CI,0*114>KF-OE`B'1"%&P7B85RP0W9$EFB.?08%'D M4^1WH4,UXOP`@Y@7@#KP1X@C)TES5:;B%^*(\!FL3@X8+\D9!KKOTM3<0)G$ M.;)21SNR`^\!(JD7`.W-I^03*J)]Y`5O*'D^^D>*1@221\F!I%(2(;D`,4CN MGGQ/#$E=(161-2QS.=8#\";!:3BC:`&GN/GFT\V MEWQLN!OETDJH.Y2;V4^^?!`D2;?_I%X20)F;&5"BB,)+TJ7_Y!L'-*)<6E#^ M)U$V.L&*B/@D0FGIFY=1*)5X:R1W#([I06DFR5!Z*!^4($KE4DXFH0?!4_=Y M*$V4#\KO"P>QY\226%$RE%J4WJO>'M`Q12FM\E`Z1=X@XR1MDHTR:I&C[!]Y M6#"(JT'DQ2PD2,FIPU$*-EB3128DY9$R"A&"0"+-)%.47J(,E)-22IF!@E+2 MB%:#L!#`I%MO-OE]&:-4;90HWY_P0\(-Z7"`^IM(-?`0Z\GJ&A\K;J2E?$W> M&2\Q-:07D8*FF].^&:3H,%R4UJT[96?R@^.&B5K\NO"4MZ8?3IQ2,SF9A%.^ M*=LXP*?83[;--3CDK9,0 M/`Y5S[LL1BJR'!'0RV)D^J!,*)L*91#0+M._.(*#F')%NJ3=Z^LI+4D-FGDLQT\',VVM4 M4Y`Y.T5BCLSRF`/C"2X"EJI'K@OCQ*\R/G76XZ^0+#D2`YM!Q;O#&BB/61X1 M>,9<<2["9,8IT_08@J*DEI:6`4MHU,9).>$,D:RL3T(<>`_@!#81C"$BD=>X M+BA^JQ>"'QG0-/CT(_=L_<`;:K_IQMER;6FV;%L"F^B*.J6P92-Q;)G&2R5] M-:00V,0C!3>17]'O(T,(X(`UJ)'?P[NR"G;\$O>0E")W?JR9D;(BKD)(43`6 M]AI"51CR'5XCPC;6$VQ0*W6*+9M1$QVLL<30B^HP1?X71R;*$R:BHIC0>:/\ M_-0F`*$XXK8O6T*&B?C],^`UPBJ7R/,H#L+[JUW.+AU+.KS)DFO-=@E9NEWR M+M58OLO@9>]R>)G#^UVZ:827.;RXD<X%JTL2,8+9FU1@TE;[&"" M>7"+0+;1ABL-\1$$X++(JR)&/Z_GUM0E.K&KG%'$0%0HD@F2@-.RG+2;2$W! M%^$@9S\2!&@JN'@!B_WT,"5[S0GXW?^"I"=*"E\-,8V86YO;3A+3(_*>06+F M-PA[2#_(WFVIB*G$W$[`E9:8D;THIB^#B'G$K&)J,>]!4\PN)A#3L;)+09=$ M/;0>AXTS)G!FM5*]].PE'6PCRJ/\$!WNFY(NL>IE7U:*-DR$S&JJT.%`*G24 M5[*88TQ`IB`3BCG&O&+2,/Q^V1-"YB!3BKG(K`\&,A69D$Q&9B0S>U+WL&V8 M/"!L$;%ZRH!@UT>XI$J,8>058Q3.A:QIV21N06F-+>D7MLH5!LV'YD,(DX>T M,BV7KTP0T#-D9+/*I"2B,L&6=DM$$U/#"3CB>W@HRHXBZRT)G[VO@:%#>%(A;POWY:/RSC-K&:JAZ29U\SEW60I;46C0>[, M^=0UUI>!U+9/8;$G@2:%(08/<1@5GCISG-1#59Q?IXEPD!DD(3<3B-2E1M MK&`^UIJ5&29EPH*\I%U6-'.7Q$O:I:/*>,EWFN]X-#N:(,T,44@3Z+CIBR7- MG8)/&94?3C\(5Q$$>'9DZ@B9/*!X)AMN8\,\K*4<,F^:7LQ'IB1SI^G+,&3F M-!N9K8U)9E"3IPG&!&H6^8B:S,,`@='EID`*?=5>$QQ55IL:=P M,CMO+XZ7@:.`U"%Z^T",SN(E`,LFW*=2%0C+NG@AXT1A\JW#&<*K#(H#-FH6<. M'II:2R;/)G1$?!+.&E>*TJ1=RXM$FP,GY@;F@+.!1G%<9 MW89VL9`)#6"--TG6Y.IQQ7J;;Z1L%NF-CQ9/*U9F<7PX[+\WSM?I/X?O6V[6 MTKIG[[G#YFH&AS)F<2ZIG!!OQ,KA%_IL-UD!.VZ2;@(I<)V_CI4F#2?:+`^R M_RYAXQA@QJ',\(22B L-A_$L3J9K*EUM55V7;8-^>2V9KLYJ%&N\;>!$L4 M-\V;WDW\6YXONJFTU&K<9@1I-3"Y)-*--%&A:#S\30H5-H`!B:SEK+;CRD`L M)](SYLV8SUU2?';",%[L9%:/!1OSQH=3JN/=Y&QJ-D5IMYROTV:SLOF88?:A M2ZI-+TX3DI%%%<@#O-[4.+4RDB>TC$5GEG:OZ([%HL2;%YT+QE^,W?Q,4+RHE.!$U@1OPU^BX+G`>M>U7>[&X" MXBIA\KCSA:_*7-#4S&-<.8AN@;A2%L>2@J79>^C`9?";[3MCRZ:.)C/B9/^Q MU'QL=TY1&@P&J:3G1,<@DF!D,1D%S3NSL-+>S&_&$9DZ;TZ[S/2J3E%J>V.5 MS*R<=J06CS<&-@F4>,]Y0#R;TTT4)PI,OHGOVW1R-PI"4J M=69YO3O;8+;S=.=W6%ZT];*;],U0EEFS!D?N)&5I.:LCT4V[3<"+RVG;`QD`XPD'4'F& M!>0"9X&20#N!3R#E`.D`.0`*(`Q0!T@,.`&2`&X M`5``=("BIT-`#(`"X"RD`-(`*(`P@-,3!3`%V!6P!9@"9`"E)PJ@"2`6B#&$ M!5H`4`"S9]QS#O`?<`O,/9,`9<^SYW\!/Q!(2`$,G`!2=H&L9]#S#K#W['MR M$E(`8P`40.#S#3#X+'R>`:2>*`#$9PJ`\[GX#`,T/LL`4,\4`!L`!7`1&'NF M`$@+AI)VC%E@Z!D:@`.4!MH`HT\4@!@@!1`'0`%D!?2>3@T6`.@S)C#O>'U^ MJO8764^J)QJ@/@#ZO`/D/B\":X"YI_.3\XDR`'WF#N``<(`4@`*@]WD1*`WD M/9>>D(&Y)U(AK0#ZW'UR/A,,J,\@@!0@\+GZ;'I./1L#><^IIQ-@"A#U1'T2 M"GZ?4\\F0V,@]YGV1`-<&((`4X`A0`N`_X&U$G["/54'98`40$Q`Q@$:>4(, M/9T`%8$D`5`@!4`&H'N.`:`%((($Z-,SZKGZ5`O9U8@`FH'R'TF M0$D+VP?G6O(S"/!I4#+,0$F?"@8,PQO`!5#TS`FP/6<[4H`6@+90#U$#$'Y6 M0$V@J$_S)PH`_8GV!!Z`/A<#]8'_P(=`^XGZ1`JD`-0`75`-*`J@""`G0`GP M/GV?^T^XYV(@][D6B`H(/A,,GH4_P=`AZY#\5!T,"EH"<\\B@(%A)9#V?'JB M%[2?4+T M#XP`=@#E)_.S',+V9'Y./1&@6>4T\F0!@`!>K[Q`+H M/9$+9<^EIQE4`;#TE'L^/:T"88"D@-[3#/K^G'MZ/J<"9]"P)PMT5/!?H("V M0D&?J-"E9Q,`"I`$B'IN0"$#$U`5T"?B+C#TK!'D0%F?Y,\*Z$'@#2KV)'OR M/YF@=H$GQ("Q`C'T3`.D`"BA\`6(P%?@YAE$H),X02\'5[X9@.8!Z&D$J`.@ M`'X&ML_?9[B.[1D#>'TZ"CX+!`*M)QU`\^D92`$D0@,)A,\4`)*'[;EAL!#H M/%F?V<]$:(K@#;`9>(.*!0RB>('OA=8S$2I:*(B:'HZ>HD_%9T,4[#E?2!(8 M1,4D;`?))RB4Z:D`_1.P/0^AO4^(Z!Q@[MED4`MD/\&?94^XYS0T"9`$-87& M/>>>'H*1`R/4)8H&-8-60,N>"H"I)TXT[-GW%`LP0?%&;,\B@.F3!5H3/7I. M176B<\_PYP'4"XKZ[(GN"?2>IM`2*.&3)1`9R'M>^304?X*AI]QSZ5EGB'XN M/7>?.M"T)^=S^NG[G(%./6$`>D\3Z-/3#6`A8((2(=B>HL]Y!-LS&HH"8`PX M1!6A%P$[Z/DS"4H,10&,/X$"4P$V0`AT5'!@\`E$0#\$.]&EI^J`^6D&N#!D M&I@"H,^+P`XA@C#W'(?J0'>B5[Y=14E@Z*E/2'NN`5``$P$N0#B$$:KW1(5. M/3T$@('1YX6A#AHB<(DN/4<&=8#<@)Q`#6H&%8UZ09>>7]&JZ$YTZLE>\`EP M1<&?H5$40*]@6,`&2#!4/%$`NX'_0AN@H6A)T1A1)K_%`SL0!&D84]=0F_4"_KT;)$" M"4*@T=&(:(^T1/I).(*B/8NB.U&XYV[@1[`2P(OZ/O.><$\M:(+A"JKWU'_" M`=``3%"H@P*`(KK\W(EB13>D-U"J:$0T-CI82'XB1Y6C(]+,IU$4>)`!Y2RH M#I"BF-$3:5<`!<`%X`)P!-(*PX*YIT7@&[H1/0/D`40`5U%.:(4B+IKZ[(#* M`3"?:5#0YU)![\E>\'I"1ST#^L\V`(^T!)HBC7MB/QD-Q=$QZ-1S#/KTS!VL M0#F?:(#`J-XS39H=?92*%T:DSM$$Z-(3HJ`K<'I>&)JDS])L:`ZB9I,0#9+F M/N6>D]$RJ"N4+LH;R`J0##Z?HE%;*0I`.@`C0!V$2F^C.-$+@T[T(UH!97ZF M2XVAWU`5*(D@P3`6#1Z\2I^>'H(WJ&H4&UH:R(Z&/Z.ERU(.J;RT[RDJ79&R M/E^@JD\4`!,T-@IP2WY6`7('F-$$`X;41XHH)8>KE'?9VCT6AIK`3Z;H4*EH,!9AF M!?H%N5`!*1LA6!.P)`M,W*!G``-H?S7NB/O.E@^5DV_9!* M'F:C1]&-::W`^0DRK0_8/?F?XD\.J:)4/S`',(P^(=B>3H`/0:X`2!`&H(\F M0&,"@]*V)T7@6?H1+9.F`;RFOD]H*)G4]XD'Z(Q>0-.><$]&@ZZ`-?KT-(,^ M/3&C+]*N@D^@(Q`!-7QJ0X<.D<^AY]!4;7HPC97>3G^E5U.7*-S30Y`@V)N* M2ML+GH.)@/#SZ6DGU9&60%&FS\^9J?/TZ4DB4)UF!=2@?-'OJ;)T6DH1F)'> M2X^C^=(+J!D`/_0^<2>&>.P.F`E^4*9``K8`R M2R\"E=.BI]:!4/HYK4"P/3FCP-+/:*_4P-`T30/83&D`*]"EYP@U5(KZ')4* M3"&F2\^?0-P4@^JJR$$4'5BEIH$#PQL@*G`BG7KJ29^G8],Y0!Y`5Z!D0)%Z M3P.C:]$S@!O`'(H$U86Z0GNDPU-HJ-?S1^H%G7H&4EKM"Q*//S=ZHM3'X"#]@`@]-[:?P41]H0Y7RF3%.G"-/?:'Z4@DHE.U$TZ$$@,H`6C9N&1_<&;`#AIR&5E^HM59E^ M4K,"PL_X:Z>3`4`@2GU5JI"C3%$ M4_6>A<_&Y]33#EI,G7K_S)_B/1.I90##J%F`B:H`G9""1\4"8X"5@.VS?OH,[:(6 M4E$`6]0)*#O58[HHU3I\'FP#?5`5*L1T]3D]97WV2E&AM5,$Z*MTZ;DS8`M( M4UVJ6U.0:1D@H$H&R)F6/1T(L=+W)_(T6.H&N*EB09&I-U69:O2T#-!2I:6R M0#L'>X"7J%**&[HV!:AZ1`6JYU`I*47U>\'V-`.L!7(#28(::774G]H+5:0B M2G.@%P:40QMU;3HFM92IVC;M5NZMB4G(H*U89* M//:A6E+.*&L4#8I>\)RV`5*E=P%.#>*4"@`])9%"2ZNIOL^1PQ[`9;H7?:FJ M0(6C^5.K:1Q@59`==7L^/86ISP+#YY,4=?`"*"7T"I*@SM+E:(V494I3?:A^ M2\VJ7M0X0%IUAGKET\\<4UND']&-J;&4*WH[S8[23;>@@%.Q9_4T9_HO19I" M29.H^930JD^WY[1TJ(`4S8^Z3N,#>4\TJ)\T65H!3:TZ M&4"?"]*\J6P5/`H219"<3RRI90`Y@>/4)Y!,;866!GZJ6U!H@0XA!!H9X!F@ M!%@$C`'-Z--3%0IKR(YN`=ZA>XG>YP_@'1HT10%T`2RG1\\G`)7TGK]`Y06.@33I0+80./I6E4\].:4A5,YHNC:'B M4$4`+=71:)STPB`_Q3.84FNK<`BJ*O/S-DHMM;'V!&RF-@"%:MH3#@I$^:J7&4K?I-9:MF M6E$('X+(0&Z`OBH:>)D^/^4`:P`F*-SS*`!H]:MF'1R@%]7(07:T M1P&HN0-80W35,V`?19HF2A.E;E&3J@S"42`\9:3V/=<#`8X!!`8O`\'D[12$\54L#D-*/Z&]T_\DTU8%& M5SV@WT^V:LVSM@H))1`T94`.((`8@84"Y!#AK$!\0N$`*(""J%/C3S"2C(L& M/3F?5H`40!O`]RD'8)+22(FD%%8E0((@SGIA@#ID4R.N-X$90`K`+D!Q+3JP M0PNL!5%X:,U3'LI)R`CD!"8/$U5\J*/`(EH2^(2&0F4`*U3=8D:%@@,M`>T(PN3\6DG58ZJZ@5!`KW]*XF0,6EXU,;::FUH4I.#:3N M6\N>U%./*.AS(H!KU0_46$^D^5#KR=#SC9KYG(M>&+:K5U$&*V/UD&],+J[IT(K!9Y;L:06NL_];BZHKTPB`88(W" M/>6>"M1E:*35\LHZ=9U&!;:FJ\]`Z47T`;M4%7[J5YZH<\].Z7B4_OKYO/+5 M)MBA+%;(P!I`!-!,A:/./9<*R8$RP!6U+8HF#<#N2HVKHX)DZ2\T43J`K8U& M3I^K*E,,+,(TC'H1<#*02MD"'E@3ZL)4`*LV-0-06T&B1`)XR/Y>GH=:EJ"L5F3KWY!%, M!7(#:]7BZ?)UQRI(C:'.4`NP=BK$*0XU8FH8[;T&`0RE@]>YZ*6USKI9O;,R M53>CJ->XYXH@/QH!78%^5M&L9E@`Z;65QTHV'3F`/IVP751*:V]478HR^`_H M4>^H(]43*N5T%?L2%>P<4R,#PH/0A^;E[#8%N M5^>PNX$A;%1`>=KV_*J"0'L$1H"-:_J53^"-$,;J02FN"5>8@*.`\GD$D`(@ M79$`_]&9:.N59GHBY9[&386LXL]1`2H5]!DR)9KZ7FVLD($%:AU@@ZH-#2UT M2_>?D]',9_@T%TOZ9(WZ47VPHM3@:-4T>2HL!:D^/U4$@-8U:=@@S1HK;9S: M3&<`WU,I+/,U#4L*98CZ8F>Q]YTGJEDU>"!3!8E6!).?N%A`:-U48-IQ+7J. M6(ND@]'@`A-4+W#T+`*T3E&I(]`$:&T@=!I^39:B/F^D_@+4J&CTLHHLU:QR M5D&?Q5/V)],3M]#TY'P.`:ZNJ,^S:X`5!3!@A;NB`):F;E>F[-HU[BH1=8+: M2/&FO=3888:T#OL6-42L1]VJ159"@RF5%\J'77IN1S.FUL\Z`)3U`DHSS<"2 M2/NDUU:]*>BSW.H66,FN/9F>'81E[(<`+/>6>%=`MJ1H4UWH!U0^` M1(,/CE(4ZQ65J.I+IX*E*:^T/&H'?7H*22&S$]2NJ0\T"8H*A7N&/S^MC,\KZ=6S9E-W;<9& M4,.JZG?4\QH6K9'29UFH$X$S0(*`*?!(-8$R2FD/(=8DZ#/57[!KU12\ M$[*?"H#:J2N4^&J,#=`J82&K:H'YJAM5,KLVI;-B3Z.PY-D^:ML3)=N0'8[J M!QBJO%9HJUH`A5!!`(V./8FIL$,[5?*S:<"+I8NN!7JC2M+<:^A4S&J57:B& M!>:>7EC3YS/V&=H+7<\B5"NOF='`:'MV2Y`=?9I&7WF?6]CL:&S5\+H9*)WF M8-^L(=!SZ1Q`^!D;7?PD/XNDHE%3*^=S2%H[9:A>&):?+8&L0)*4[,DDG8#> M1I.F/558:9%41;H2R+TZ8($'AEF($=O3\ZHV):+.88&C.=+2P-943BJ$A M2)FFDU%"JFRV+-!:H(W202FHU=/_Z[CTPM`3H-/B9C^P_E$.[=)SH.KZ',D* M6W.F?U03ZN34'8N?';]B5C^T`5/N9SH56_I"[0E<6;<$AE$"`=LS"!`A>`.X M8'NO?=4S>-H::?(UA;H2@),:8[VD4-K];";6UPHMV+(6 M5NNCVD\Y:R96=5"'U=""5Z&U(E4D[)\TB7HH9:S20<>T>D?-?.*3)41>H,'8?^9U.SQEITZ8VU+'IR M/L4`/P+UZK%V^1J6I9_N8<.?L5')@Z%$+@I>]=#^9F\1Q%CH*6?A$HL&+9ZB M"?2R+]5'Z_)U\OHE?7O>7CVT2=`A0%=!+)`&V'^J2'VL7=I9JUGU^DDJ32O< M"O*L%-78*"04<;JE7:$J0'6U%U5E+`@4#9JFTEAJ*(%5C]%TV-F" M`"H*&S/*IXU+"K!A@,:&0L6H>D\,JED60DJ+I:O22=,`&%0UP(5!96NS_0_L M/[NKVEG2:7:T.2HBC0YD7V$"3-L^:'M`%2LG59+:&9($AM&]`-N3`PH.58". M6"D"_E0\+$FV+1`?:(U:8(VV0=%U*3P6^*J8+5.<2!4`:%#V@FC@P5H!#9`R M2XVA:=OEZ-P5#Q$BO<-:1F&RV%;K:$'U53H&()G2`7*U1\^6YWATH8J<=<;B M9NNMBJ$^#;3^A4WN]W:66Q`UBXJBAU<$LPG=16 MK*BJMEH]K!L@5YMU_:WV"ERP@E8JJ@[T`CH![;SN"6JV:4_4IW0U?WH>#:[J M#E2OFU)"K;-V5%LR'=5*6@F?3($$0PK6E]ITB$"$2(4`NH1_[1YV^8I697W^ M!ZBT(5!!+%FT_=IW/=^J5!>QX=L7J1'V^FJP#1M@:5F?=E'MZ$]T,UL759NR M;1VLO\_8Z$T`UAI(3;UR6,.D(P?6J`+@(!*-W7LJ;?D$60<]Z!#W:;L)G3>$ M/IT`40!OK!-@"3"5E9@F08NQL=A5K;*6,FLC+>'J2Z^H)U(TZ!N5^,IW7;TR M0F>L"]KBZN6VM@J*F-A>6NFWM%KDZ@K6?XNN;;K:0?>G4E&!Z5K4W?M6V1?)SK,H5);>B87VKX%*#K,JT89JU]=ZR3FNI,]:;K=JS?\M[/7J^ M9E6Y'%?#;(?5=>M*#7HF;8FBOJG`1&)!E&L%>`Y9<9,`6%ROZQ!`Z5E@90^X M!^`#!=-7Z"W4D5M>54'`6F^Y+--^Z?6U"BL6*.%^"(X&(5"R;<&T90M?C=6" M0PFW!=.)*6:'WB$3)8FZ`%2N>="L"Y'CU;;MPT_8ID58B4 M796?GU.+*LV6),L*;*UM]H:;=0Z-8BPKMES+*(58+H,#8AN M6=VJ7E7_*>B3SOH?H*,.2`&DTL_"J2ZT(XMD!2TD/\>?A(%D*#EU*&I4M:F& M0"6WD0'Z[*WUAHMR^`]X3H6?'=L$[J#US:HV?9K^8W>YREG_;)#4V6I]+:MJ M0#FU#ET:`$0WLJH?>-N6*EFEDMN)`!-TZ=EX]8HF5..X058-*2%6^?K"-94B M:7FYYE,1Z=@4B?"H/;=.89&FX%HP::R`D[!L37L68&L#U\`;JBN4L#K#77HN M8&>M_M&`+"G5^UH1<*2^0O.Z:5`8J+R4-WN!A9S^9X&ZB-O.:I%4@3I$6(I> M4\NK=BKZP=!S:MI][<\:1@>OQ=CF:M@SH]"6U:FZ8N.F;-L=JL(4QMIC_:(N M8A&[*%Q`KNXSA$LDE>B.3:$&,E2IJNF!56K#W8O23CN?8\^-*FA4!Z``M0O@ M%\@E6D^(J\35MSN;37X"76,"2`S@:?)3Y8KKF\F/Y/\K`%( M=_$+X!$!JCITF.\2 M)D*D*HCY;@1B71MQ!>\&>)\0.ROV+GGWP7OU!*RB7.>[D@Y8Z^&-[PG''WN(NN@?"&1XR[S-T2+T+D+?GA!?"J>&\QRX0/KW67PNO4^"P8 M=[>[-%Y`B''7P?OB_2P@3J\'&%[-@V2W?8O>I?%&.$.D4`<,K]9NN3O)V\)`%8ZSL+PVL7H*H&)N:[0XB7F\'!&)!^!JS#OA5?%*/.*Z4=XBKYO7$( R`>4V2M5D)Q)U7!@'=)?&F M>5MQ>=X9KYN7Z'!,C4.`>2.AT%TTKSI4L`-K94,0 M6"NA-%=ZJ%D@LB8&-*O&]`J@!-@"$`%2`(\ M`>:?*8"L@Q.UP,K!Z MK4T3J'!<_& M/1D->M2R[OJVM,LB7<062W4'A%J)ZI^6^GV M6T6F_<\4ZELVQ\H%L.'F1$NH4P`H0!.@U_M93;>R`7BPEM;B*2FWJ/OP)<4& M4HNFG=88`Z"UXQM6P1L-/1>P@=:CIVE`!;HB&)L&2(6^@UE<:7O@L%H3-0N\ ML[BM>XEH[U_%)%OMG8DJ6,>F!@0$;KO7QEHKX'CN52FLZ5>CK@M5ANOUW'[" M6.^C@P*/P$K6*EN,UAJ56VSB=V$J5B`'/NO%8N6 M4PVE^][7(0X6EFO1]=O^91^K3EA=J%SU?XJHC8`27V0C<"&M?]*^GS\OF/)?H"(D.L#M)%[MI7IRJT9<;J M3`>M^=K4J,(W*P`?Z*$J&$:S(5`R0!Z@23H>S:("4$D-H-A_JL)67[OT%7N" M0#N^(($#[-`3OQI1+7KN*/2N?%<2JF;T4'JYI?>:=F.V$%:;0O;3=NN#O?C: M274$]0&7*.3V&6I$K>NF>_<$V=&=+P.7_XO^U3S@8&,%_-?P[906-ZO(W1F` M;U6^J5=_JYST0S`V!0I\"#Z?[UO2[AU75HO.?:%F&I*H@M*];<143B!3%B";(N>O5=R:E+T#\LB>.PV5,\`%8'VPGJ@@:MZ9>P* M9"&M_=D0*)`@0A"9U8%&!DJ^-5(O;'Z4-5M(O99R/">@Z-]65+=4-6H@-7PV M7=FVIE=.ZU$4]7G0A:'2=%>J7MPKWTP`!UN,G7H28BF^7%H6:H1UTF"&7=&. M'.2S1UC&*,FV\JKW3/OB1I,+PU`*:]%V2U!"K?Y.1E6FYU)[QV M95FE=M,8Z128P6H'=@'>X&=71Z:9U$%P_]>4Z M<8&Y,('^CYC$*PLQR@DH7.\"4MLG0!.@"4!@=4!4('`"?P*H+7XA%LP$8`+4 M@J,/^0BO+-364$+YG`)4`80`N]X-PUNT3////3"<5@^E1]/%Z2JVW@M/;=PZ M-5:@FU*Z[.=3@0O610%?1!.CE=_40#RV(X`,I;(B6K6IQE"U[&4V1?LF;:AJ M9FO`2ET<[6SVF-JSQ:T6:OVC3\^GJ9RUVHJ?+8%.@$&COUG0R1"T#WNIU<6N M8_^Q3T\XK1!X*G!-U8PJN0P<NG(3LJ)MU-3OU=,FV M7N_!`=?`IP*@_4F4S7T>98VF9E7\P.JV90NCKR50^@60%=Z=YW"FL:E<_N M`9;"*E,P*438SC#W18GB2.NC-%/W+`[XZ/G\C8:^:84'9V$H;&1U[CJ%1,]V M@Y.@"F".L)YT_GH!9HS6=KVE#56T\%XX-*$RXQLI)4`ND M;\^MG=?\J!I4CDI'%0L7396O86$?KBNT3#L_2'X&!K:D"8;:JW\TC*HH@(8J M27^P?L]+[%W4UHKX!=J8V.B=M=1[^OS(OH$Z(&> M/2D,T`+GI\0C=&H&U>9&7[.?8$^U:G;U%)P$70O#1G,0J@AN:X$ULXL]Z*J. M3E6K3UC7*PV4-"O1=:N2?INAL-NL+6MW6)J)3;^Z@__"'586[>7V2:KNO9WZ M1W6V.('D)V5W(!LB*)(:(D*G:UT:*^34-+L1WHR:5>'!2]WP)T4761*^Z"U6<;JRT`EJT?=MB0-@0M=GS[X34%#R-!3GP M03_$%0BH[3;V'RH+I@7["5QS*&(J;F:*%^P+KGE*'BX$K:@4<16W&'P,3@8S MB;E5X0L`5FZMN1XNDW=4';N\3`-P3N.$:/F^C)E`K:ZF@+FING>.: M46\C1U_;;R,V=1N/;:*&3I>O]>#3[B<8*8KWE:!B?E.[@U;^JVX8D5M\];0" M2(O$I-C],!*8J$JF-:/R>2>[H]3*;G^X))LQT\B.30G#;511+!P5]VF[I:/R M!`+!`%IU+_AS-U!CM:(Z;CNNY]>C)]^V2#H@")UR=!VG=];_Z8HU3.S5%>(" MA\?$M]%0<+Q7WFIH#J/S<,B(*9J&"41/S$S4=8 M3V("^I5AL!6W&_N-E7H66/,#C]:)P+,T;BHG+J66$@RF=H;2P*'X'UM,;44E M/Y&^BV)-*QJW)`OW='M6;C^JD8$[P*(V[%DF/I%V41.ZI5(7Z=FTW)LH1@`' M8U$CL%9>K9&`ZUL*)197=-'#2]D?0(28[6HTA;SR9!VJ5M,Y@)E5^6N.I8'* M`9JD&MWP;"G!'PL>A1UK1VY@-/5FP(5`+<"M7!ZI_1??N M@0>^NX'"[*:U>`KLQ0!?&*@.-E;<*1J45(NIAW3T_`*%#44!QP9=N* M%J2J\X,0J;F60'K['0&?<^NWR.+0JSB796NP)="FAQNJ,``60`S@Y.H"J!O? M5#NUA='+;U7W\5HL#0,D9"&KJ5Q[[R,5P[HD]N0263.Q/:48NA']:9@'YX96NVS<1Z7O.V&U]#J>,5_BJ'):16 M!%JJ"US3@-\X1\HW7;Y"#>0$O=AR+ZNV5WHTO>0"73\175^MK^?!5SP3E0%< MC.^T4%*@L&S6$,&2E8OF48FPG=8>KMK34/+437[F',C%2\]+[MPX!J#)Y>WF M>MB>==&D+]L3,,HL,1'K(X:>YV-9[!Q6?, M>/#'!F#GL=RX?2P1[0[C1JFY35>@:P&Y]F`^3B"W;_O'#.3W\0/9#1#]Q/:J M7%L`X)%Q"3[* MD"$&8-:AYW;WAIQTX+:B`,"[-V0XQ'C7A6S>37ZB=XL-1X?)PWX7,(I$IN]F MS/:[!=$F-F[-F3BPX&7O;M#)CXL M>-F[0&3B0X1WOTO>;2+C%2R\,8'`*Y(GPVO<92*KD3N\QMTHLAI9Q/OAK2+O MD2M6*%XY,F+AZEN;-40(DE/!:P?C;A@9L?`Z/*;F4P[)0PQ6Z?P`DNSC->ZV MD>?(0E[C[A%9C7SD7>[:D1$+2]XQKQX9E`SEE?*ZD:F\M=GS"20YR[O<[2(C M%KJ\R]U%,LAA4[/<+2.7!`IZR]TT\AN0MKG7;&]6E>NJ]<5[+J[!8F278.>M]%1[R,AV2MH90)X M/<^>ZH:E\'%X_@L#=H-&AR&F/5*1,<74AEI@W;-R:,NDG>.O*2M4,6Q3Z-#Z M1"_`E]SJ)R"UJY`:I;!*8HO%?-U2PL7X;/XPK`6+J]^ M'62BIV+?U'!AEMR>P,:^@JVX0X`6,8&5WA%V,@OHBFG$!-8D*U&956S%-08C M@XL`&P:G+!.T`GHQ)1@S;-T`R@)?KXA40:OW+0KP3%W"90#O:#/WH[H$_GU> M7LNY9%BGKX;T,6 M?(&^FUEHL=,XJ/JYY7Z><'&S_-^<,AS89[O!K0U(BB.FE&)#B7.U)7CJ)C`:(H/?AKC MC,^^`%DS<,77J]M:%K0V;S^G'^.=`2O4#CI<+H8"527##U_4@4%9=MP.?0L7 M=H>_(U](:F=9;LI=%A^K?;FGC&+,*HO@3$IE]7I>B\>IWMD-\B/73\OV/`JX M8*VRW=/X<'$5%HHTC:5&82&O6U$%0*&5F?J?M<%VCRVC\(%`@M[W4/K\#:3" M/1D#/-TD*(:UH6J9+0M$9`,)Q>,5;M@7+DP9-A/S536D\6/`LK+@R*IUJ`O` M6D7&ZZ%6@9J$\G[&\TKKS\M9&& M%YBCKM##;G2Y2CS:U8D^4L4`ME;<+T@4H''2G0C/3/N_:U-5ZI)62-SX599F ME(<(\EES*](78%HF'@6C:0F^'U,`*AW8^GE>UM)^ M5(W+?-AZ[/V85HP*5D&4!`@3)8&G\MX3Z4I@G1]L-?41FN:I+15`8IPGMA&3 M2S#-,F*$P\-T>RH@[=2B:RNS!@1T+704=*LWY9MFB^NB%^/8Q3MJ]AGT1(,B M5MP40=Z3%-'U18/"E*^FE&+XK/*7L$I$E<@B M?4-O;^1NZ:_Y'-7UW;AB8<7"HM]!::]Y=$P@K1H+6TV_;,_**/GV;AL1!KW* M06G'Y%QXZGGY9UOIT'\D/[?-!]BAZ\;5U7S)50%G0%*-:>]5@.O[O(`N9L>R_-^&,VTYN8S'+=PZ M4"G.+E%L,\TF^?D$J`)L&#B-^F8"<_QX6])L%C0S%;ZG><]&L(29,IJJ91TO M@5FC!>"+K/:S@)H*'L;^ MA[6QB@FM9U!Y$XI8*"8>FZ.VF^;`Y\+A=^IVIBIS8[VQ4``D`*DY.`K%->D. M'1034%M_PZIYB<0B;J,"9=&P>/3<;G"NC8V??ZPUW3DIO)D'Y M@V9_#9\WI3U0^\4$L#>`#FJL69E3STQ#<' MFYNX;H'%,_-9(EHI?CXG=9FI3=?I\WFY^LSM/86:!K3/JF*[0&VVY_QSMA"; M@AW/'&3RL^[9"(`&G0@,FD^D2N?X,>@UIWQY3>(:/N\1@.:(*-5Y],)1GHD2 M`<[/-^#;*#D5.^ME1B[D6WF[M]'TK*M6Q(SP%=?J3X7/A6.TJ,GW,XLHMN#R M8WO/X%!SK]J4'#M`13RG`9B@4\^(:IWXA=Q]B-`>1TNMS^4$]"R6.EHX)1!7 M7QFXVER@JNUY@XIP%@&[51>DMUW/[+/Y^YJ;K99^G2FPJX*/+MH3!9L&QNP8 M(A"G+<]BJSE8?(H.GGH"?"&KO857#LTYW/"J2?9.> M?%^HKE>;+C(4H>L,93GK2]>GX.6<:@A5K5I>#9U054.RO]5=K-H4:SS4_4$G M2_NE9%RC*`AVL'NWW2%LA9.A?F,/*.04]`I8/CT35<_%@0D&+Z*YZ`FT=3A; M7[W0Z5;JL6MV]#Q/#H5>P.DB^>6,A78#`V(GASW;4'1>E-6+?"5S1!PYXYPZ@Z%GYK2QT M<;71X>AUZ3EZD]NX&+K&HD71BM"W)RY:-VI(-BM'='<#>(!S-`I@&ZV.G@[, M1%<`P,^+<<73""`]UAK#7"/%*F!7J?QX,PL?8+/JH'V]TFASM%,6'1WT'$5? M3@NL`&FX9R\Z&4HJQ>;&23'`L5*_*BM"S)N+=FIT7&&G;<^)P`N55'I:+L@J MB'&YC%`6;?C9<6H8=2"_ERNJ1T]N+2LT0,HIP!,4:$.@>,FB@+(6U#`V1!GNZ0\W*H5!%-)\UARPW/4'O8IG.?=A0M/_SK-R-=LIF M=<6W6NF@)]BS&]T;`!(K:WNUTEP3=!OZ*CTL=85F:$'0%U7JL5.ZB\L$O8TR M5CF^@E;T`N`TY?Q8+G^2:.G,WU$/*V:'Z.!#WG_VBS^M`..-+L48?[H&(!C_ MF,&^8&5;ZZ:4*4!6IIF2:SFA!N1C:C&64=O\C0BWI8?10.'*=(UU5PKC\+T2 MG[W2/V+;+3ZZB]O2_7X&/;W0BN=K=%DZ%&JH!7^.''H%SESOI\D68?RA#=:" M'&:[Z%D\\\L4ZFPCW3&_4(7'_F7>;G.W"#%"-@*4D)N[Q=T4,G1:N=M"ADX_ M=Z/)W%WJ[M!3T8O$R.XF/W&\Q-T>72+C M=^&[[-TF[WO7-[/?]?,^(:[([%U!;X%@B^S4,/#J0VNS!5X*[QAYOPN>YHB< MD?>[DMZKY]A!PHOA#4:P=^6\=0&`E-&W?0L8I?'BD3^\\FD2#TEZ5Q+B!21_ M>`6]BA\6;_O6Q>ODA94HDC&\C>0;+X97Q_OAE?1N'RK)']XVKY,WD_SAA5!# M>#O)8]X*]8LWE!SEE4_#GDO)]FD2%-)AN:N?C@DL'5K)7%Y.Z)A7T1NA#O/6 MDLN\)MTS+YB7E\SFG5+#>>\>^-U=2:XGFJRC3O,BDZ/)&6H$R9T8!:`7`/-" MD\G4(&IJ,G271*T.;<5!=YG4;6IND4"I=X$*ZI7U=L"8/7*"UZ]2NXF]QEYDK[*WZQL*G?%R0LFN3,^0[]!7T*I4U1XC M:6>TY-[Q:L$7[ADW3H+.C4&?,H"6JLJ5!WTIG??:@0_#IX-C+4]`#2`V!1'` M83D*<8&ILUY!(-QME3JC5-F>Q>C2,1)5`;JLEKVB`"K4\=Q;M0>96OU+]B%+ M7..Y%6J]0E\XA;ST9.X^':C2*M>E9ZT:VWON6K0YPR@I4H#N*GB>`O6WMW$YE&'(0&=UNZQEC56[CC>EW%KX:JOZ_?E8_?G* M>P^JX\_#\@*V3NRJ"->M?S6D^.?HIQLX^`L4^,EJF-/+$P'&`&2`8.RS-M2^ MI34%M%AHK#2T5MR.V2^$Z[X7KN!4L!4WZDIU=0)4`7K!=.G#)TK:K6J8YL#. M"5BTW=,KGY2C6\H8?5DS?QVU-5+!K,VZX*M\K:E"CF'6_$_:;2`VNVP(K39# M3FN_/E%U+D"*^*#U3"@CJH&N?%!=*EY8HKP7UNQZ42_*8F*-,D>']+!X#7V6 M/3.?XF`0`3F88]OSI0+78='!M&A;P6Y@L(QEKBG;G"W"OUZE;0@8+$H?/HL> MEV._G&)Q\3FW"PP"%NM^2#/1$=J-*?YU39L$U0:'0*7,,=J1+2=X4THJ9J9^ MG5FTS0.DKUY73]S7+:YR=+6SV=<@J,\8[8FWO?SN4M6TNE\MZZ\V)XUH[=BJ M39VP!.(Z[+S7'WQ=1>'2=3FB4]_``.FV!-LT3>DVF%&K[6>S;O[4K4I21I"F M54?#PMI^==P38>O,1=Q>=O^TW].-K0O6HMH8`.)N60W![EY$<`F:I_P7'B[? MK1^Z:]6CK1GXI\N0-@OWKT&?'6+M9\26*DVEA4&+0G>BF4^%<`V4Q2HS!I-B M;3/`H-32,CAT5T`?]8X26?W+;=W!M:@T-+SW]55_L/.D'E%@]?E5S^H*%=1> M6N4$AMF(;<8Z_>J:Q6'33*?5/&LUZ+;7Z?MH-7]>&!P&MV4Q,["Z9MUF;6&# ML%FTC-$8`YC66SNBS8LV0\FR@%-5:K%5%_HJU=E*()*?3H89;>,S'QP;_LUN M(;`'0\]-]-13T1QO[H4"=M7/%FBU[1WUZ_P7;D6OG:T'M0FX;=)!;!VVACN+ MFIV>O^+5,*6Y%OQ9,*`NLE7$NV*\,S@V5GRU[19O;B,0"%A8Z>46<6V[YDT7 M8L_`A]>Z]O;*&-T"=SM#9`N8'T'>>(WP'`TILRB%16;B9O7[5]?S%:5P3HK#:,: MIB^J%]`-:N06>-"1+<`:J>G!7M#,)Y68(:M77IWRE6O7V4]R:^#8+^UO_8[Z MGX_.P-8;I6HH5/1IQ`W[1PK;;I" M\(2,[NLX5JI`%9-^ MINW#TM\L*R(8@LT^+?INK\FI-6:(+)W`L*M>5NA29(&VF=W!ZZP48.JR38/F M0BG8`>-)+/]3Y``8+A!//5V^8=(E;3G[\UJ2I@&H3N7S5AO=JM;>US]&GL0KTFPM>;O_:I;V@35=QL#RU$.U/K9V2 MF`^V*-,60:]@KCKX[=I&M-?9M=5=R<%ZDFL>%I-R3P^MIVOE+WLXI^I2O3Z# MBS'*LE\#,)OTO_PF96HG;B/+(>WQ:("`@`H)#:N`1WS(C]B?[='3#NUR=MQ. MAZW%I&5@=5ZX(1Q=K6`K;K6?C^W`Z+3V;7W1#3-7M@.C,5(E@^VS,.SU=*"> MG]O$Z-Z7M5^U`CC*+9QN3/76;5:W-FZV8.O:?:S6IG701-/#<2T[:(V!G5TS M3!6P<=\&+&*TB,U@W2OSGO&B;NOR*G'D3)NJQ6H35570<\^I0$0T9GK-9HP. MG%'0^,__M30WRPH3SLD2HT:DV[S<(&4BG1(=3M\4B`5W'-IY:H*Y'SLM1A3GE!NJ?&6"*X0V2YRXYN#^I@\/0&7J\,(!A5AQ961G M8U40"@"I[:L8DFV69L<>M\NCU<\@_NX"NLW30\\V<@BYB#ST%":#!*S.$5=C,GP:BGQ(GB+7 MIP7)^5TL\@>9^.#?W>]:D[_(^UU9\H`ZXFI+SD>@JC$@H.XU\E.23:(P:DDRC)O)2NVO0.6I(LM8NE>SKEG)X>9W)0FHD[ZC[E7RD'O,B MNV')2VI0MY-ZS-OJQB5+J9O(:EX?&PRM3'96U7H52:+ MJ;NE96IX]YE:FBSP=A9'DUW)814W=39YFLSH[29/D\')9&IQOW4-5?Z+E[`5='IY7GN7`O5,]'MKCRYZUMTM2"*[;Y*NEYW+R$KEZKMKNJ15)J\U![H^UZUC5K MJ'C./F<%J/VYB4OV'L;>O='>E$^G-^>3_*D/'1'SGTW/U.M2PL\V=.KV1(/R ML0VVU^;,U+`;^4Q[OC]3O0W._&84@+\Y!7!R->.N!+"MXV=MD_FY,TTEM:BR M;1_?4]3U,^CSDNOV?$M/:)G`Q=+\-2J4).`H,';3@"'06-.&-I%;S3UT_!,8 MN\'6;^XF=]RY%LP+@1B\)3'9KU+D+H=RG?^693\-9[\+U#D(@N MLDO/X^S/I\'9,1JIQ6^?02\,[^P=0@:;D>N$I3KKN#O700"4+@C["ULLU0R_ M>\FA3M+!+HYT1>">;;LV<4O$VL!+]X7`J,SC?F1SLCO"JUVN+7O8V%JW!E\_ M6GO*!6@F<,KZ-Z5V5G.;B)<)R1B[\_`;XL`)C8"'FN?I$SC1? M/>/<@^<^+-4;UJPK?:1VG+'>I%:I\..9'5T!%^S472/926=.Z.PJS5TBINK( M"/`+->Y9<%3Y2#T#+^8ZLKNN-6*00,WF!BX!MRK[B.&>>^?<)]`;+^`L[H%K MS$#@1N\DZ,A:Z.S(Y9LBO=LQ^`4G^&\J\)W*32N`H_<2H=!@;%[`A[R)YM<^ MC@7&K.SO*G390S`GZ.8*3+&P:5;PMUI@WJH&G:3Z/%G<-V^VLZUXQPUWYA7G MG7_>`-8XA%D@L9-J3GM+6#7@]%TIQQZ\$$[YW*XVG@O/R=##L[%U)JTK:*E. MOW&C76]VM,4Y^3!YAGY_GS>N?>_J)2<<\+UJ)D6GH@_?;6_%M^JY\E"G%"G\&'L^.85GG1G&S.S4L[29%4Z!CGQ_ MJHS4]^;9<_0;_`P)5SHOGS7?FMSIZ;4T-JTK&#_K(T;?T-D;L!&;;4N!ICZO MOOG%2%U9*SR5V^L<#MJ6*6:HM.]RR1_Z!DR)YGU#+F"'Y!+@]U&9\GF\E3O+ M#R*:@.`;$X-V^Q1U_ MN"G%O5<.,^H;K*T3Y^T:(C(Q=8@&M-87UNWA+K!^FR&Q1\]+[GT[4SL6!H_: M;9FD]I_!0:.9[\[V05HN?MU&ID-R]M8=TX0Q7I<+6 MG)VWOU"<\X=`+OX5)RJ+>>?16U\$R<99:$IK7A*/GYNNE]P3N-X4YC* MF9,$C''0B$][-@H9)XOGQ5F?+].R)\3!1&!/820C7.?A,FR4`\AV_)SYO.3R M4B\,_`3QIR"W)RX&QM/>5)FG\]7;*5JZ(9YH7G%G[T;Q,4Z0+DGC MQ4G55573`/,9@!LZI833`<;/&?!K:FY@6DU75<8:/K6K*-N;['DYUUS:GG.0 MP6'+6U8.MC?`'M'S=077H3K]I<6ZM"&X7N:4.%*Z=0HL9:-2 MH<_%=8%N*1@W[JD<#==BK3G8L=6T*F:;?\!H5I'#?A/&'--1]H,;=6RE'5F@ZD]@!VTC=7^#/V^?9^'G=(%X:+Q^Y?1ND7EG@ M8!$D^-VR@(C:D$SC-5'+>%'4-MYF]XH:8M2B#I;#J-NW,NH;=6FX1AWDQ79' M>6WE<%O&=8\Z6.[M7N[VRJF\1&HN;[D[RLNFM@DHJ:.\<.JP4^R0W0VEQL'6 M;*;4:]XH;[3\A7REGI7CNXO)=UXT-YAZSPOP#E+?2!J]:6I"[YKZT(M-)E/# MJ4W$EMYSH50K].5U#MZ-O4N MJI.>C>JC9ZL74CUXE53//2G5M5Y'Z*4Z4\WK%2MWJC_5Q=YC[]5U5#UT#86" M=\>N-F\C@..:U*MRC5Q3/5>]=&'HI`/N0*4$/&?V&=;7.:\3K7/8JN MEL&HA>V&^`Q4D;LQ_M<2HCG`)>C-+)@<-2XF'YO:Q'_8%.R@;MD83+P43VR3 MI#_B+M',)]:VC+WP9;%>6Z.?'.BU:BF[5W#;-9KS7?^GUF&-+Q-58\K`-L4> MF-WF\&_-J*5U"2QKCM&.0RFX:<_::I0:@,HFUFVKB1'?_.&=<:%9F`MEKFT' M=:G':^?:1$Z`'UM0Y\GV3F;/B=W>H3>MU/PY[]T0"SH+4P76OO#O.,34X)QR1HI_ MICGV6BRQO!!=9C;(A[*:YKGN)J/0OHOBE0]A07:BO\%C4[T"4/N=0"ZU89#UGH8OGI,'7N^J,WG\>%[YYGLKSY_5S7-@..IY\0WW?I7B MQQ7%IFRX[QF\`EU$U]QBFU^M>._Z\\/:%%Q92!Z0GR_2A^\(.<K[W]C93PZ4",U!S3=%9EEYPII.D MFWW;MG3$:\P9)CT??Y4R<0>CQW0S-W%J?6Z&1IOO80^AGE3MJ5\Z4IL'SPOH M0"'=C$X]OMI>LR/+=&9Z+0F\?%OVW$(G077ITVI**F#U->U+ET?+ MBOVC3%S8=#`:*NTV/]8*!M0"@-`I\T$5MEO;Q8V;6XG9)M8\N/5`/1W;F1%H M8X^Y6-PKNE;Y!+K"E1QSH-GBS.(F/6Y^.A.[4W5/2Y4;Z;B MHS7$[O'FMYHW(1KV%HB/O2_IS'-4N/.\82P,/WH2PUW/M^M+:8_T&$M$W\Z& MWJ"*QU2QM_(98=VIE8CJ%4K/]H5DZ7:\H4U-5WS?H]7CT/!-;K_8H?UT/D`C M2G.EKV<$R:DC((X\!S\?T\OJ=P_#-QHTK>XA)Z?BTZWICG3'Z?@9CPZ+?6CW MKM$+>/6O^NNP6SH+!SJSTA'6ZW$/>5(]KMX$%:RWU:?535QV:GV`SG!W MQS_0!%KFM_)7'"H:@*8V2[F]Z?#:P)@[5KHIY8F#0-OA^._026+!-G#\?(WS MN$/GOBDC1,(;0HO\1@'PP_GCB54F>8%5.U[YY3`+R??,INR&ZE:R MM0O;3^&^:.*6B?ZO?:,.I`_914.&^:>*_^W(GG.CIA7G^O(S,6[V'J%&7RHS MK-O" MD4'=J?)6-ZLZA;M^. MNU>\1W:$=[+[6+[L3I:W;UO=S^YFN1OY60[D=2,+>0O)EFX5A+4\R>M&YE%' M(K3=0&I(,KA\S#ONSE2-R[>\;F1T-[I\FDQ+9I?#NYD1N61Z=V`BE4SK?O-V M2['4\&YB,I=ZFORE)E/[N_6A_7)U]\#[R:ZF/G@SO`OFKT.&=\+27>>>IR\J6W3_VGS@B4H%XM'6]A[*^.O(>N)6^DZ\E[(:WRAKJN MS%_>`&69]]>5YHTSSYU7FG?G$%[R>JOX'!T>5YT)I]7U3OIR5!HL4-=J_X/A3,[9*ML+K40"?-^+;I^X,90S@ M`N]G9O.P3]\$U8WX936`_K-5(F@1`VKFX"KXQS M:C/K]N&`:\"=LSY-GWW?1L*PLV,#M+X6LC[U?3T[;8>>E?5B>G$Z0#!^AD/L MGZ?&?W'?\TG6MQU(73AK9CW1'6B(\ZRV<-LXO=7FG#-36PBJ:LY]E[_]\[T9?YWR7XW8"8:OZ0O@"^U9Y<#.G`6W).#ZK>'6Z3X&#;V% M%DC24_?+\\J=+PZ'Z`Z/FUG2VO"A^T87,\H:_9O.<&^CX<\**,0=W>Y8?@[= M!8RIW'2UISXWQ>V6C8%:V\^Q2W';K1[=V&H4O922C?&EC`:4]%GT,`V2'EZC MQIG:(P<4\,/:\OL6M:?>E7VM8U"[KUM5)TTDE:F>#@RSY?!J=F.43CZ'15^[ MA#&LO=1BZ'$T&*H&Q2\WK1WBJW72\KJ929J%-8/^3NLFR4^0N_J5GRYR%WY: MB"VC5^^D\_Z9-IW7Y:=;#D:F,]'JZ<9V[RYS_Q$?LOL95T^4*KS]OPX&YY2N M3=_GE.D":7>;GYYQ-R"LHP/"K_)6:=]681R+K2Z#SWG5']ISNS?<5XT`AZ([ MP&N\%X(WLCX)^RS]WFFX$S:4/5$ZQT+P$3 M?@7C\VT)]GMM>!`^LX9WJ[%70(@TG_J;$_WMA150XQKWN06VQ')3/7#MU@]>7YPCZK_ MPBW1T/-A>-Q[2/YP?[PSFM/@GU.+,RLBK"X0O[@#SE^^(%"]P/OMU==W*[7[[ M1L/FB%L^>@YBM6!KC\&#DD,+$O#/N3+W!@\KK8MJB%V^\M(=/(CYWNY^W[A& MTMD.+.2F>E]=V8[[9+:+`?821_C$=[39JKZ$=[CWH*OM9=MX<\3=E`XFB@G$ MRX?P3=PT_#RY_PQ!S@&G:IWK,]RT]FBT[(F`AA;WTC<#26?)MZNC$QYW#SKK MX+<$6'?-`[C=;!QQ+MP:L<'PGVDQ/+DXV_[QXJM7TC'N80!2?"M^XSY8AR:\ MO:>S8/A6-$B9,6M6[MB^5-G*?/?ZZUV]YIX!E^32OHN^#7.WIQ';7+JG]?;F M3^_%C6F+\28WL8T/A\'7/"W-((=\BH[XC9[,I;H"N9VY=@9HKCM6$AMD_EF/ M;+'J;F*5[ROU:2XFOL9WKS^L<5V$\L9<),!0#IT&/L^>NM,M@4*\\EL9U;^7 MG4NZ>.P"*\L:5GHTE5XGT:NG,]#E:;?8:B[2O7DS),HA_O'$]L.N9\\XR#<_J M#NZZ!E]#]/$:SY`$U=YB:(6ME0-0P0#V,9T:;1!@0\&DGN#;L50U1CX$_4@; M;)'3Q&.CJ:IZ92I?]KX[P%5`,^08.7]]'I'\AA476(7&]7%'+9Y;5&H`M]ZR MFQ/3H]5&JWD9"A]7A>P>D(/D!F".ME^6[7D%<&[OCE_*N%-Z;5EZ[1Q:H+A* MGHOK57DJP%5^K7R$=CW7M(.B">Y,K,/7P)!YKZ-G/\GRZM(':N@8FUM>W:\/ M/:/7MM^JMEI^ZLEZ=3(+G/# M/8NQ'.)>]G%T^QNXSD=K4Y73OET%>W#73SZ=UK8'RC]5$?84[W374&Z=1I0O MIS?LW%U'.7GZMQMB1T__=DOL-NI+-Q;95JXICT_/=UWLG_(8NZBA#O%BR'GE'>I?.8A:6!YE1U$G MDH_EQ7(K^R,YQ\LL;]^ZJ!T0/]YY.7?0D1R@%[,C>;'E'V+$Z9D]4_[D_79/ M>8?4;'9QN9:W7([<]?*FR]?=4=Z%N;L[RIN@CG?WDJW4?W9[N:!=WYTO[W?S MR_N\9NK,5#0Y8$X5-_12>$N5B--(^Y>^X3VG?O0VS%D1#_-*K\6;TY[QOI5# MCS6A5SYWLL9SOG.77-9\3T53P$Z*DGTE7/80-=05$=#YMY)BTX M"I;>'W#*9[;X%&_T%*8#XUGQ$E&$>RP^T].QL?WW&LF6W<%-S*^O8+7_#E=,R MZU'J('GD7`;>(J:*C^IM\HK M&`JL\`3FLH;4Q?V'KQ7G!0@$^_K^MXT['[%22-C/B%G$:&O?U,I"\TP_T#0; MP;'*%_G6-4HW++\Z;7#3O7VB1&L6=055(1ZOC_I*G>>W:7>)<[_XYLQVI]Z6 MIC/UN7KWNS^:-GUH'9N^65FHOG?Y.>IV5VLA33V/WJ^S('FA\1MZ!FJ#E78_ M:5D$6X)=JW>]8(\*?AT^(2K)_'J>L&P>B]YIM9O3;=7K$>'O^O_]XPNUOZCK MU+&X_W48.)W[D%U,S`GX>!?S*^+/^2$>*_\A>-M6NSNZ5&'2)V%[(E`K**ZR M3!W:>%ICJWX@\SM/=2DC3V7GN&P.,W*^S)VRMI;OY$_GLU^&J?U7)VYVKA>C M/F7UJN^1_*55*0I6?>Q&<)>?PM`R*.`42=X8Q=4G06?":6$5-X]Z%`JTC:<_ M?#_`*]_!;A=^XMRR#Y12B,N>=M_TZTT6764-ZP,QV^Q7!E#1[X@"'Q)>S1,U*;DOLY+6_W?MOFU4^@:%BY',[0KHSZ M0I_&N;7K,#4`,)7?)+;/@6']S(S3^W4EW*_U12`L&4HRHD7QU_ M5%VOI&U#"?V/;ROW%?I7R M2=_-N?AK]G,][JN&3AXKLQ?Q[MCEZ[S^,!M,?TAK=@G1`=*M>;)U-=LCG9DV MBJ?%Z-I/;H%84DLL-MA&E@'%_UK"X:77>KC?;>M"V,T^&L%Y=3VZOGM1_S">?R83X`3D'%< M\>&V5EPC@9P`QYP*I>8^Y*VY&C.CIR[8BCLG?8_[P^4'#G95_#D>\;T\W\9W MZU?AM?AT?:S>";^+A\#VXJTB%?<]?OX6<6M6'\9SXY?NSELC]B+?Q[RA?1K3 M[HO/M,T0Z:G>R[Q3Q3V;=$O/1_S++V'=DKN/KGD>)E``/@!_.AH4!L#;#2&S M/<^BO53J)U-A)XKO+2H,\:6I04_4)P^`>KS*;^7K;<&C\MF!:B(U3YL.O\7` M6FWY28%3?-34#&]9#\:[\</NS$T>\^1KM51KAM+@Z MH'>J5U5PK@3:+6V_#^26G$.W7O?):%/4%9I/_:B>VT7+6VU\:;F^M7TSQ9,^ M\DO`:W<5J(>81[TEP.6WUVN>UO$;'X=&ZAJ9L9K4W37I=N MN0&DCN*;:4F6:(LD=IJ'/?FN"E74Z.B61-HK71KL`=X`#UEC*.V^)AW0II+" M@#6D:_))K93CF.H4W;_&H%L,.'V;BT[_E@_<7ON6L=.J>')5K&\\N+8X: M/L>BI^L$MX6U1HIA]6[WT#WRA?G$>,N>6`\Y?YX[;[^C1F%M^@'FW@R[M\I* M8L6^A%QV*E[]=,Y,GZGJMV^GV-/^-GR`D/N^+O=.J]NC&%.-KB58PUTR17U2 M5H.DS./$.4='SHZHI="ZA@,#E-\I*2>:?/U"#>KO?2'[>VPG/,571RXF9HRZ MN"7J"VYS>=-!UV[%/=XN`>;KU]^9Z"5UQ*/NSL+=ZRUQ!;59W`X%S5KS/4OOT7=_N66)^A=%Q%>+-:>8P6;Q>O M?>&^H'03J"Y4MXN99T2/#&BW^.JTO#_U]-H$3IV&9ZW!-`#>O0A^A;]4D,33 MH`?H3OS_O@30M/+E9.VINGJ6W^-F^Y/W==(C?5%+ MG)ON5N8%--+!GA\*;0/3SPW\GH$Q`/BVP.IB]ETGQBG":=P;:P549KSZW8Q> M@+VY@]PY=-P3HE!_Y:>G^*?<,'[0:/59=^#45

Z18`F@#:$"$`$``X?`4*[_%/@L`(5JTMV4)YV M(.*J,P!P+CNURON%;=G:*?BGY^`N,:L@K2L.SJP:#>"IM]AD,(.7\BIB6.E" M4@>I<6+\*8U7GOJ5U<0.B:T"8^&5PY95>JJ^S16W;PFMPM7[Z3&5>@HLR.;2 M>?S#7UFLKBWW]=J_'08#<-O",>"([=*7H`N_O;N&:W^S4%K'J]'`\8J1'?UR M>.>S`UZ![FZ5-'`?(!8W@A>X=5MO;^/VLNJ6K>":<86J4M;S+:4W$JN9M=7Y'!AMF-,#*UVRKO=>D*C$.^ MAU>P%N`MKI2`/>N%G>&Z?17!?0)I+CF8)=#\K>`F9!N-_A,L;'NXHFN]]1B+ M:R&Z--J7L7VVX`IPI2(X@!?#I5<1`]?@B0#WG1T8;C&M\U/7[+-URAN!T!@L MGB"QTM-!ZCKV!@!'90[T;VG%D=[#;,(W[KHBSK$>6A.S"MR>\&Q8,WSW!;4: M@<^L:UHO[7U7CSM[)9]VAO^L.5F1,-'5:VP9AN@&AMV^CMPN[*UL+WXIJOME>*6B(F]IU_^:R!XGMOQ!0I0C1W`+&-(,,[J][XBX'M]?HF5)>OBMA_*FWV\#;0!!Z\P"!%`D49]V();'8H>^L?(VKGKEK;2Z M9./%?%UL+?CT#BO!U0!S3[&ZR>'Y<>&5(JL`&.I^:16YZMS9KJ27CVIHPK7J MC$&^7^!8*F.W7@Q))1X39%!!D%7.:B@6`;M;91HWBCG(W5V1<6[V+(#6':T>C-^NP^,8S6[JT^K6+:X* MAD6['E@F\3N7.0NGO:X2B+NX/M@@\7%8B6H*QB!_9\L`S55H;AZW!DM63;EN M!%(`--8$,K$@^;OY%1W;*@0<*63F@P& M=:_$'%QJ;E`0C!\U\[[L6@+3M(11HG=BN\"-QC:]GXOVH9".8V MC[VY)=?6+VUU!GQOS:Y"DF$6X]YL:\S5<#N1O>D*=#>O>MCOK[/VC^HUQA=? MA@/#9-\7<635`SL9[A@;@R/%1%I*L3EW;=P9?J("D@.R8>`#[@.9U"NWK2XH M9RNX25_K,,!VXNJO[2!`6`/'-.%V[E2VQ]MZ=3H<6-/!%H&[[7]8<$QJ30PK M9[O`AMV0\H-6Q/".=>%"CN>L.N-]KC,8@`H-ADQ<':IT#%7:K378UCL$,`E[ M3[G!18!2[_.4B0!5[@T#^<*ZN=XQZA.@"A!!C?QJ,+"P,X(_L!BV#%!9I:U^ MDB_#IF2U,(47F6KFU0B+C9^MJMPH:ZJ6?.!Q%RO.1/;!F8[VJ%S05W M3V&M$F(3K!]7@\OOQ2_L`:8"R%E(ZA]59,R?A?NN<>>YAV`UZ\`X9:R#1;R2 MB.7"A%G'ZV_W8-"91?'Z=8_%KE\"06I8(?M!W<[.40>M5(7W:ADUC9S$5:!. M;+^\A%;;[I[-.'G[GEX%RR&1:(>#/2JKV'>+GM6&#RA';2B MEE.T\63IK->7<6MS7=0>C!FZ8@=TQ5XWI>H6)A9.^.M\WJ]+7X?J`M1H/ M8#O*`=?3A*?0.RI64!2/,,G51SM(_28+ M9$NN2-J!;$&V#9")==$Z#6C,#6.=+-GKTVH82/!2&%BXU>46^ M<96K-`+2*^)W2=P7+L):8S>Z-F`0G@&FJN=:8,=L8U7J(O0W3:%.G>F%C\6VYL,K_Y2XK M[1>7`[U$9!1`>'LWV=[_(_]0@`!,`D18*>[T&`U1NG"V>P;]NK" M!$H78=VJ\F*#JDH%R"HS&J4.&@-JJPAQA`+9`?)@U41`]P51?`6R`\$ MG-FSIUIV[L$9:GM@'0/HC*.TUEMM[6(V@=Q<_?!F)2Z[E-F1;/8`EIRM5=G2 M8K.U^-8:<&47Z1R1)>BBD7&HQMW*+.>W`_%'70.`D:N[*(`<\`_YB((;0#W'=ML+A-3<@//%=V)KIJ5[8RUW07/ M=W'&M-4:K:>W#RL&F,:N`5S*HMH-Z^[V,H`HB.%]BIFGEX+A;?3T=7MEQ@GT M7*6GS%OG+?16>FN]?2VP6*VW)6&Q\O:V>]MT^-Y"`<*WX]OR;=UW+8"^[=\R M!(+!/V33L>29:ELM-N'*`6;`!]VU;GIWX8M(.+0V#PRW'-3OLI^9'&M;#N/2 MAKO`I%_*<@)U)!LHONJ2E"FY9MF4+3:9L##NQL>P74"!&GNN#.7W:;,YA0O!==,.@'W'M=C[\Z-!+ZLV%C9C M=%/-BF+$JBR9;)R6_"F['(XKPJNC2JT",BM+F,U\Y`WBKMH=K5R9,W&BF&?[?S8ZNI0+@TX M:R')]!.YK$)X>IMKEA;7>,W(A6<5[@5W[FL=_LV6=E&TF]5@ZWW6=2P7UO:" M4IM9/`SS:[#X2'R(=@`?H06V@N'^16PA%^QFONPB4UO(NF95ZU"6@$L*MA<7 M!Y;%,%B@[4C9S3H[-LQZ'>*UBUB_X'\Q,AN(VCMVOM&'1:H+@$*P0UL_2B6$`+(`8`!4"11@O/ M766M#6:],J.8\/KM]?;B:G.^$U?NLZUV>ZQ\7>N&89M9C3!@K5"9V?OY-0"# MEA6PQ>;BZN5W06!T7?$NBD6P,HEL:@KUM4`#V"0H5*VW3("[:H#YO,QE+B%[ M83W&^-O=LO'>:VL3PUH:J'#3&G5)G.BEA:K<\Y=2II+JV* M&"3%0>5R]%C6&;R.+O5>Z;RHE(62LV\XVVQ5YC9[F^L<30YXH%?YY"S6%2N3 ME2.ZY->7ZH&U"E!!#>H*:SG27EEG;W(XV@M"9L1:4OW.;&6!*B`5L]J_#HDV/(LK?@BWR*G0B4:Y_.3=?K*615*2R&O463 MH:&Q(UDXK?R8PSQ!%K7FF*>YF^$G@CGW'7LPKB-WIH^YBERT,!K:+>NB?:XV M712-%[:[9L3KL.ZV"V44;PHUT'P,?JU: M8R'/;]2XZE&`HTJ2U>#&A5W1I0'D[%?V9`M?31T,=!6M^H%&0F%ZX2KU-2@/ MG?FP2=;6ZR95W"JS-3I;=OL$C02T,-%5[!IRQ>Q*BZ6ZA%W@M-PV\$S-=?NM].C.*\/50VR!'?2" M83NM^,!L*@!55AQ^_3@3AGEDL6I0];NY1@U'9;_V;W'&TUMUQ\;0Y'(.#),]\J,+YZ\,L/_LW&AW7"`.$;<"`:(HR@GBB' M6ED#>P+NJX>:5A"-'>@^F07*8MLQ=:'XI(PPKAY7BK6Y6^,:,;UC(0)9G>'B MFJNY9X%K;EQ@]\JG)J\ND.N[*VG/K^!7AXN#AK:B;2NZ@^'1PP=55@VIO0/8 MIP&HA^JR],G7P2FU+EW4>K'-"U1)-:.14KURV&)XK:_!Y6:R[J9:5!N7+5M/ MK775V.!X\\"9)(T6%BU44O>L9X!WKX?8DNJJ5@=_;%\75&M9L2785GT^73D` MKN'6*.<$JFOW5^T^#E:#J/^XQ&JT+@":QU"N`$&`)0 M`9(`3X#8ZD_Z]?RZK0'HB@/7YNJ)M6A!84T>1@O/>PNUW&N&=:2W?[M8?B3; M?:6^IV#"K[UU=4HW!N#2J76H^N'M=+XZ?9VYQNL29IO'HX+[-*36>;"D_2?[ MO52X35CH+.*WB*R-C<7>A$VM+@!8,[WUU-I&)A]CB4O24^%D+H:9X"IF+AEC MASNTV]^6-7ZWT&R:/NSVKY7(#V@MKKR5C_JN'>#&HC>Z:%UX[N?8>ML[1:]" M5YNRIE@^:O(5QO?U>JJI>VLRN_9C2C MCD?72E2\,:L9;S0^E9[NL6.HDI%!]NCA?VK(EN3F M_8FFO:JL$5_MSUK>=" MD@<5V50;;E"7`@M:+=2"G&6C M`&+9)-E7=GGX+RW(/KHLFQ&=B+;F'UEUJ7NL<4)>`!?-C";I)HF[M^N M`/ZIENSR,+57DMUJG:+&56W/FV1IQJ]NOVFDTJ]A"?CJ^YLF7\:44W1K/%^+1VL`.RP5P'K+S8F_LK<,?V M99G!I.38L9U5V/R]'A:\E)NR%6JRLQ>X9ETJ"!00H4W)+E23ZTI@#`"830.\ M45O`"6Q':RS5A*S%1.UNCZF\'>=@-M^:ITR4[61;L3_9D.L==A[[CSK+9@F? MIP_!,NV^GNM>L".PP6R6<(XZLCI9O<0N MH(^P$FOM,&O!_%J'!@>;F2?'#N(/[LE8P0!]5L%:GY7+@UW(M6&W,B"8-M$2 MIM&ZZER&KIWC%QL$."=7!L[3'MBE\OPY94V?]L!.!#F#[M`,Y$JV?]N1N MD;/%A(H#:Q+`O[R&]OY"=&FR'^'*0/UU#/MN10W;C\O'T%D,M7HYAOWL1=+> M=`&HM^3%L^6YL1VO#4);IE'2,-6JM7V:GKJR9N,N?2^S]>DY0V6`:!UFC5`+ M'*1>LA+TY:M^"4EK(2<_W*;V)DZB+6AYNA/LP. MJA4)75^,+%*9*^UJM<=M;&8+$*`^6@+E-:F*H+-AW; M?0V[=EP,+^(V#\S#=3@SG\/;`]BD-6T5\YQC32HO?">W2]G^,');*GV1VB_OBB=4&RE>UQ,$&;IDQH,AZGD.W`&F9,:\W:PYPL)OBV MN.?%F]AX+`R9_\J/KN.N6%'5Q=6?K`O[O7VR?A+0?CVPQ@)4`IQ:"#'N?5_C MFE/!>&K(:Y"Y):VGQD]'M[VN)5]2K]S@T?A4MNBR?#'5J%5N,W6YZ]M4CC^" M"!J*7N7==L5WUXM;_3GK9+,/I3!` ML@^[PU4C-2/89HV0S=#;]A7`3S$?V(S:D78P.N_;6YW MF"L"CV[:<`JZ#\WG!E3+94?;8>HZ?&M.FZLE^8-8Z6Y>W`QDP_G@O%FMN/+L";L@PP[@13 M?A.X>V@-[@=W).M:OL7J!R:NL.I/\X)6@VNEICHS6!&Z'^/O+V=7/SP,=N<> M7N>L6NU]ZU<68.S>S>@V4YT(;EYFM!V;>HRQ-DES>^FI`>V$:K'6L$UAZ+2F M:'K.;P"_<@X7@*KI_2V7H2W'[U/7-IJ:S#V`)1#D5A_7Y^[AZS#8>CL;\`G4 M8H?0LVALJU=:C6LC,!;`<\&GX&@4KQHVOVSWGEJOI_?+?FB-]^'7Z=S=]I^F MN"_$S544067YHKP[#LBFFJ&NUMII[_<9F4KZ_9W"RJ]OS:JA\$E87H][@9&]RMI@.,JM'5@%E3-6#V8>V<9KA. M8>_:`V\/<4>U;UU8!0H7GPG6YFJ/,Z>Z<.U:^G0@KGG5[>K7+;#:>BNL#E-O MOHO5V-K5-+(:03MZ:*5.=\?*)@;]MZ@6ZD`8=G#^O\O?`F3&->18J+G'?EQK M<,O?JN!#,($[/"R+107WM8.Z'>X,MLF;6`V&!D_?K]'",`8/K+I9`UQNA24< MG+4.FERI[<$`.DL@D"#WJYW@'^SU7I7NT^I-KAH/ M4*'!_>RRM:.Q&JS;Q@:_>D6UN]\&..GAU9UMCG5;O\O#I5E]';L8_XU,A7\; M$9#/T6JSLP6U]VRRS2^'H^W:`F\C@J29H>U#;8#D[\EG#?8WW*%F*$+[:6_6OM=@:K`?C:&H+0L^XV4]QAY0L` M$.JWH.+4L^OZ=6L#0-Y2KV//S]MN,^W9Q5J]Q9[FGK.WNV?OK1T5?"N^)=^> MA+/1-)]=L>DVVEPSEGY_=<'6;_!#09ID2O.U%G[+N@&HU^^C+DX@'[[]CEL7 M$;S70W!E+OI[;%M<15BWOT>QZ5ZK=>#9GKW[#E3W;U^MRN\&.-6:'XYO7H@4 MQ-G2VV:L,AR<>B$2'W^7F^W2$=2"=U&64^T(4X,K`/[?>N;#(6:LT7&`GHPYG*I-Y8[Z7`*^Y5!EO'?'>]U^]&HSJ-+.X2[WY+ MP)FGQ6FV^$\\K(O,!M6TPN--D5@ MKYO;]&;<<.$Z2Z=OWE7'FS/@`O#&-0'<`^Y]=7DGP(_5XNK8PE?\W!P!GXE/ MP`4PFF:ZCV7!9YOE=6B M;?GB+>"A0L$UX@JYMC-@DY\.[6!%;O?ZV_K9.XP;M4?7I^JU+CO;"-[,S5N# MKY7@XFO!>%RU?$U>_15+P<7#6%]E=^%W'BN2GFI6O!L>,VWH-TRIH[[ M4R')-P%+^!-R"\?RL(]TM;;T?,L]=#^,D:K_VXANTVPAFQRF_QP4(`W$GW6QH5P?ZAQ`83LI!B2;8/&K'>[&\*]9\UQ]GD03 MK4_1.5D1+#K-LPSYYE!C6@.Y>E5B\7H[#(M,1@@?JV.X3=G!MKH;0PV&9B"/ M7OG>H%3:M.R8-M[`9OC&8J'$LV\6,2@BM7+[O-SDQM?2 MO?6_(N.%JWB[!LV1I5%SE-O&@UT8.9F`TPPB0!""FK/0/M8L;5MV>CN1;4+/ MA^W4(7`WP`L`F6O/[C2?01FRQ^<.LC@[\)IH=46#P$/=<^^L=W!VRCMZ<*G. MA_#&RVSG!62<(ORL/AV'A]_55FQ_[T066^T!O@_OP!O,+E6_`%BUF"TI+XW+ M:VG,X>OW\:6\*/<)J#;79\" MD/G&B^O7+1*<#)`JG]Z&AX?EIMR)*V;;$;R#SI5_RAOE`A+JA:]\D!U`-I6W MC>NG&X<7`=<+/VZPECE`?5/E*=3P\+5\'-P89@8OR\?`M`.T\)DX6_O3EI+? MA3V^\N.(ZRY<9HU9O;0&4L<'9^QYBE`850X=]Q`#A46H@W(O[2`5HYN^;E"C MCD79S')4-/>UA3P[5I#CA9\*HUAWN807!9LX#G:`K(*:9EU';DG/QI>U&W/1LM89:VMT=6UG MA1O'1'(F;7VK?1R`QH>;*_S<%6_K.-)[3]TBESE3HO>[[E7*]'_@;AO7K;_> M7^FXSM=>.*_Y+=Q&5H5KJ9_.DV/N\OHW[JN8O33+REO0:8!P+WSH2JY]]A8P MRO7#%=0.ZHY[6:ME0"64MT'4D_"5P%@UC6P]?C!/D*NV?5H5L6%63=Z,C>0R M:,NPJN\-[VP8O\WZO@PC:('=0%[_MBL7@+M3WMP>C&?+T.>W\WKY\GIGB+BR MC(W1A>!CM5<6$'U#G@([6D74:-U/[$\X.YML\BP7!]*S>N*(+`\6)$U1Y3X/ M4H?0`-0Z]@!52'T0H+Y&HK^RW=8XJU1X-@ZO#2<#5X74N^D:,=1V\EM7';Z& MO8$"7.T`JSP5UOR'?D1W@=?E:NZV+.4<8CX.)L(>@E$"80`\,2+VF(ICQ:@. M!]#"1-E?=`[5Q%V:=85?N,O0R.C?K(P7)2M[-1HWS-?+`5J[;AU@2MPYI_PR M!<[:\]UW+P0;HQZAEJ[UIZV`'#7^X+=M3NW=SU`!5X+KZ^W8N7?L_$:>7T;7EXW MKY_7T>ONK;Z.>AU7Y1OWP]>G.VF1@`L@5WS<)GZ_T+&G_M7G-D0W"IX@SL9* MBI?2/+)L8W4[EBJ![;]^R=GGCM<3^=HY8WY'_C7;HZ.S'M@Z^0`6;PZ%51&C M9$/07'("&RZ>Q.S9=0$K*D51`T:/K@6 MFJOHT]?HZY,[>,P\<'8#Q$>0!*ML[NQJ?EB<_?B.NW=:1=/[45^M9KN0N MB#WG>]PU=KRUC0TG#YJ7L^/:XF0TN627.HL\=LE:=;W;0V>\+G=;7HR9E3X[ MS[^MK,2>\\;Z:.[V94_#9-/(>^:I`#298VN*G1TH<-V^1%?Q^>H;.%UYI2K@ MB9OGS7*;-_>\UYIN-5\IR<+G:_J)NI%FL:`&0ZG`Y"IH5SEGV^/>OG*M+7/>W\3C:- MQ86N\?&O\G\\"O`&O]2BK)_/W-\!K#?U*^V<_3,3;OG;?&^U=_$;TWH[CKAV ML`GFBEPXM2EB#VZ5914,7[/6SN\'1NEBH^X/OS;_AH/#K]Y-M3V]?[&`^OF: MK&O@E'`%:FD;F6IP#9PWR0.R9W)"\UR`;CRSV%CL!;*IO_))N?-[?+`6>)X^ ME7/;:^EE^/";"G`5@`+0C0/'A_)O-=;[:QQP]@%K#$P/H_)(>;4\COHW#HLS M1=8"6'5N^5D<"=!4?ZIC3]/736CN<]VX+P!"G9;OC87JT6;7`EO]4J`,[VV7 MU=_'M]I$.54=+UT+GZ0LQ0.O7?2>MRA<.F_)[IM7YIQ1#J/_ M5U'D!6ZN=`BX3OQ/;2I#-/C'`@Z6KP*@#KY4YX$S),:]3654T&>=6PXEB(`AN"EY30"*3E5'88_@?=FC^&#\59WRM2DW MOP77GO'1@W1<<^X&GM.&J0>IXFYC-__WL-X%)@![UG=DSV8^>$<]N2Y!$*H' M&!"M@>.)+')V.(#G7JXO")CC+.B#M4.8.0X"]KY&UZ'C!UD%`#O]->[7GB\P M7C>J*VJ/N.D6`DZAO:\#V$;IZ89V1=E@?M!_)[ES(]DR=L7MU-CS+P)W6)'-.>1Z9$>WM-H6# MJ[?CJU,EK^!H\NOIMN"^DM7;QFY4L)F=?!6;K_8N=[(]=T:IN_J,> MJE7AHMI\LZJ]I`ZI'JB/AHWKOG`QZR>655W+)HQ#O[?%?/`RJ[I9NQZM!E9+ MGKWKL=GP^K:W%'ZG_E;3V:GLUV2@,`CMNFZN!J!.TN^LUU,Q0"V;'UPK+TB_ MC^?KL026^5_;9PYUF/Q*6>.L)VZ-+O,3&<`M$3IX`' MU'7=@O8"K)`[C;O&[?J6GP.X25]4.Q&#WC&P!HLGJM'89L2<@$7W40VV+JV+ M;X<`N/8_JJ@5,'MM!UA?PX?.[/4V@#V[9-N_];6O'-:,AW&\Z["="1X9WX"3 M'CK@>-96,F%=O(XG#W4_VPV_/'!J)3NU`P$$[X.3J0/9KUO[-)W\%1P*![]& ML!^MFG,-@A$@#.`9MVE7K@WH(_8J0&>\XHXB4%B#5MG5]=O^+;<=QXY2)80K MM.GKH^57.0>W=.TIV(9KBB\#I8OU\>HZ5&Q"[]_B`,SA@G%T^.SY?6Q[[F/C MT.'A)V'><^"XJ0Y\MH>;;\?BF_&"-7+]66TJ?Z^_C^7K\E2L.REVZ,ZL30W$ MV_NW0'>+;6V8R>[A%J[JC:?(&/;Z+@OUDQUSAJ\FS6>HG^>Y@,$Y\ON+#:U# M?#F/]W;A^L,=(5MHU[Y&CV^O9.J#\8"=P$UJG^1B=.WDA7==.YD`3JW&&%@7 MHI'$4MX!N2*:"`"9I2=G#S\03Y6FQBN+QF MH#GD'&AB^&Z=7#%MCJX*:Q_5^/;@,(2XD)MQS.)V>E&H0^\0N5D`1/U-GX2G MK,^U`5F1.="VE\OOIK266]');E=Z;A?X!ZUWK<+JZP;62?2>])6YB1Y!':AJ M9LD$9VYL5U\;?J/4&PN-X!:=%:L`S\C67\7H*MBX,Z[6BTO;1D,( M@?$6?W;LNT&<&[QN=P:GNE?A4P>6ND90&7Y=7JH/`7"K0N_PM3>]'>]$?UK=0ZH ME%/-!.!L\7P(6%L\-_=V@6$#;N*I@!KUTMI*3Z_FS+76(E:PNF&\UDN7/JV; M&#RSYU[C=P/X48N0SF\WMAD.8O9EK]):W?QRE^!&PU'2#E5=<,^=-POS+J5? M`<"PIV.,;L1Y2$M/A0;W5?L"#E42/%65N'Z"1R([7C'/M_,B-.?V71YA.$#; MI`^RN]5)KAG6UTIJ]T=>>[:MN`JU1X34QGG9]^ M@`W@/._0*D:AJ]U^7Q2S5U.SIV[0ZR!YP1S-;@(+W(D=JW:2./]8"+QP#ZZ' M=4OPW&:(^TR\E%IX'Q;,7??6O7;JNA#5!4]MUXDKKDGNIO'&];$]Y4Y35;:# M8:K`7E'OBY-D*]]6L)=A\G8U/G@%X^,5'[0IN*C\7;"EETFOF5\4P`5^(FMC>M/5^D>P7^-^"4`51D MX*?*NFY@/#?X!)]S[>!*I_/QQ7"LICK5@,Z%QU2WI57B#M^JPZV;)9]4#RMG M;^_2Q=K*\__]@9MK!?RBIJ7&GFVR+ZH7LKILMJ`*RHFNJ>:I^\=Z!VN2EHCO MV(6]TE.B>]O`&-]>YSB;>Q/J?5B`LQFUM(US;LH&`8"N^E2W+U$VO-Y"-BM+ MHQ_KJ=J)+B<:ZOMK#A335J'!\4<>F2EBP""(7ZV:X&'-C>`HM"(]R*VUAE.8 MY4GKP6$O_-O\##Y]?YXF5>?R@'GAL+Y=]SMMS^B&5!>UNU5XKL3=..#O_6<' MN(_`*5XU=<'U%5S]#>BB=&FJKNA,?,\\0L[#8,@*R4W=_.GI--B8I3W!)BYSV)A$S MUAW27U>+\Z^UB!QQ)<+:U&_L2WD=N\@ZN"UVN"E`5HL`.PX1-C3Y MQPO6*'IR/+%=ZLYA][:?CH/TD.`_[F\VFS`45L/7?.?S=.<:<4KRP.K[GC9/ MZ?%C&OBPKH@>/!]6?@=3EOG%`UB4_&Z=Z6"E-P7=Q.7CVN:K,76K,]V<9>T,)YFS MW@'R@EV!_,S<(*SZ?L]GJ[O:\GDQ`,[X,CO)U6*WUA_R@-K3B-]VV!U777,G MYS?+CFJ@%B'ZP:`C/D1+"::\T=0?<:#A-0"SK9I'UBNQ>F#W?!J^J^W;A=(3 M"A"U5%@,+?O"P=WAJ[#Y:K`'>`-4=GFM$&_O[A<:+DQ'K[RR>:FX,MZ*,Y>7_]M-_I#; MT17EDN(!-;T5-[])%SG;XY.^&]M8,1%[MQOZG:RSG,NH7'9_+7/6@DYP):?7 M>._`\=A?/0(5],JN%T(KGH_GG^#[;U8:?RXU7BS7UDHZ>_]@Z MGK?QG5_?+KM^37N+ILG*>'&VAV,_+=!XVOVLMQC[6AUS"=%RRX10$/4MF[U%C,-L#U:4Y&O=6V:"&O[7I;Q;@73GLPF!\+ M?]OAL>+Z*3)]`#LT;Y+KX;/Q`EHVM(3:U&V=W[,;H=C/'_DV>*1Z"=`JYJFB M9$7)->;]K1R:-4"Y18&3S"?LWN$?]\69(3PKG[HS8G&XWO:*O=$_'RG"$7-_>A-ZF/[DOWN'8AN`2A5%T$+P\+ MW>G?X-QD4\@]NRZ.-[;[AY'M*G=E.R?^:5TX#C\3@$>QJN@;]^7:6=U>-Y4+ M[V^K=0X!/"@7.^G_\!;7:>EM0IE>G M[F/G&^MP,J0=I4I;1=(OC?'A?XIQ[PS7E>S!IUDSIW'&SF@?[*S:ERKO;6Q? M@#GF4U2B>V*\5>V2EHCWVUW"R%>Y+[58\_ILY:U6X@W!\&B+,^L89_ZSA>&[ MI%'0-&)&K&XXW8V2!IH_IN/5IUH$N0F:FKR+=LQ[\=70REG?+&H83:U&C^2: MVN?!"?+K/7,8^DJT%BJ$N?79.>:S:]D`ZGTI8#HXP`GOIFJP,_`XRCK2KJ-& MY4_EZ>IYK3:[EHWXS5^_SUW1Y7)R,EEU!#RMSI33?>O(?WS:ZB5Z-OO%B&:? MJ.GV-WR9>9M7L`[:S;)2(/+H7]F)?>Y^'#_PO>235%?:INE+OJF:!.XA]M3& M54/-[O`6_NGX$BV3[46O8B7B'`0Q0+Q74WXTFT>6=#HP$KHQ<4* M\XO@)%E6->(=X)J_SLES3X?BSG?NN8C!>PXEM\QKN*VV7EY&MQT_>H^&!=4+ M4=OJ(P;G`@E[HMT3K@+S"=;$E^A$K9A5$?QF%2%_\_GEFGQ!*B_EKF]3&GY<@6XE,\QWW%#KE?`9'P/;!W>##QBV*"+ M\@>LUG&R=I*9RSZH-T@G8@_ZF7QD_'2]92N!_6E_NE.P_7S4,&H`&]UI57%] M8UNV<55#/@C954[M);H/\P'L*VW&[//8>N_);\]WL^G('M^I@`)XNXRT'^EJ MW0?K9EA`@31_]HX/KPA^6J\`S(/ZZ8PZ3.^>?C)3PM6\EE2C/C@_H;_2#NBO MEWV[LNTQN6$7=G\"%K>#](FPNOP<>].U00!9Q>9+[O>GOGQ)OO7T5/N^EM+" M](GYY6$>OA2YG$]99P3#6X7+^%2U/D)?13_3G[GZT6OEE]VN;WB8N8L%2`(T M`:H`38!4+$4ZI"TC1R$O4('#GGW0OL%YD!H$H-9.7'/XF/Q4^4I[-EX\B`J$ ML2_V1F:U[`0U,+W2;\^G\J_SP`$F0ND.XJN6%JA[X0GT)/7T+?76>OTM]IX* MRG^[1=\J<)LXP4Q^?5@,K..JPV!+,A2>NG]0II;3`**]'%DGJPZW2GREE4IG MR<6O1F(G>!E7%OU1H#7"(K1IE9L["<6,)MAG^X7?;/D$=2D+4@U';W17?!3 MF'OE'.HQ>SZ;N'_ MB<_)/M0%`=.7QBQ40,X>BM'MTUFD[6]V=#X!EJOW]:GXC/8=?9H=F5IHA<9. M;QG'D5;S-A3:DKO8KN\:=B'$+E<-/H6X$QX5<)H+M7^Z8'8UJ]U;`4\RYQKL M"03T:FJQ<[I[>DMLCKDZ:SNT6F#[,SE?1N#A%YP'\F/+"H8(NCS?Y/J$=7_7 MK,/C^_-8JMV;&3_!+A$[FHO4W72E+^$[QFP\^./G:`GO^N79&[#HX#A]`-=.>:I^_W7+IO5L6U=J.E9*3?!?/.6M&K#!U@RRYSQ@O M:TO;?V`P-*G=:<`XMMHV"I@"^EO^+^S8?=5_+L'1/@N@DUTH"$^$ MF_G]RG!L`;$\L=J]'NU[B..J&%F1RY3V:H!,I;3B<.6T1/M0_Y`6M5V+G0HD M!?8`OVB(<"]'W'KECP&G5$G@'P(6@!K`X/Q'C6B/]>NYL]HO.[:UHO]'U[4G M6[GX=-Y1>KQ='3V7=;S&B"?%Z/Y-;G'U$YMA50`X[;_N:0'*PC4A34RU'X=_ MLUNM)`&.^_(V&RQ[5H>SW2'W;W=":CSV&IRO:W"O>VO<]<>@`Q@"IOV%]5" MQ]9[%!-E>&JW!T`#8%?+[PO#QNF!<=G_2YLN=\;#P:UTMG`X/5VZ_)V*/>I# M\8?C@^HE;$Q>&HSX;\F'=:D#X6$9P'!=(@!)+=U* MLG/%+.&S^XKWCZT#8%>P`&``Y7^\PQAU.'[I)?^;_]'_A(4Q:C;;>IILTF,X M./OZO(,&/G3V!0!KQ:V3RO<./&TH`/AH*`#\?ZIH#EW98(E4GPX25KYNTUL8 M=3-P0GZT6D18LF:(5`UX*5>!5`%:46CO?#I[268Q6+M_[U?`?_Y4<7]#=#=C MZF98:W15LV9Y7?@QD%4G>-IA_%-%!^]C;W9L>(%9,G[]=1^`QG\0:\!6%%79 M?W8.P%J3<`I4('5H<#04/(#<?;AVMEI#<#5@J'+B:\P1_P-L8!I< MX6$^@-Q3+@"[!F%B`H#V;!-=>WA_5)-W^E2%`L]3`P8/`@`$$U_88,IT<@!2 M@*P!M'\.`@!SPW+A8?-_]%2':A]XN&%Z`8@"^2[<PM_ MHG_:;"@`<8`5>'2`?0'28"1X>8#R>\\3YE?J=T"`NW5D<8J`8>]CK'5$5Q!B_%\'?"A@1VO"70-8 M+FU#;6U?&6-/``@%\G#_9^]A(WR=?M-:&V++?RM_*0!6=JX+XU[+@!!M)7\! M;!)M?WXD<.$#*G_#<3)Q:0`K`!)IYX"(521P*G_A`\-QM%7\@&H`^(!J@/L7 M>73(5*]V?&0!5]AR-!_"6@6!W'(-?4UW#']-@!D,ZC205;-LW%,@=;^`#(%) M505Z#X$@@&X`H7^T?W`*6G3[:\Q4&P>H7HX1='7R<:!_$H$_@)56X0/T?PIW MM7>37P1_&0,H@;5WMX`L@7^`+H'<4[-L<7]9"=UW)8&%58Q&I3N4!3-RMX`* M?VZ`V7H(@=!@+56$)AE'KX#:=_IVLH"6@!)OI7\Q>9=X0(%G:P)UU`$I`'0` MMFPQ@2MY^F[J7B>!:6EN15QXDH`L@?-_&(&55OB`88$1"-MT)'^:?S:!:6G; M=)R`.H&L:H&`"E0^@?5_!@F>936!18$P`:8(6X%T:4F!*``[@;EUL'9?@*!W M@X%G>H%V4H&^5%2!C7^D?W.![&>'>4)7=X'&`5Z!8('9?QY&9'!D@72!@H%_ M"CF!Q@%*@8E]>H%I5F^!7`RH762!_0PH@:N!F8%F`"&!IX$@=>T&+U8_@1]4 M.UV@@8&!FP[A"8Z!A8&T`^%A,P!+@81YB6I.@;V!='E)=?EVD8&L9L-X5H&: M?XI[256Y@:2!L51?@02!?PJ_6("!*('8@9&`GW^E@2V!;(&I@3^!=`>L@7.! MO('D@;&!LX$\@;U6;H&=@60OXU[:@90%[X%(@<&!*`"%?^5AB8'.;\>![X&. M@=EWBGG,@;AVE($F@4)468'S@;&!FX$B@8\)V8'/?QD#LUT*@MQRG6RY=:97 M:G\+<0^"5@`)?&]_2UAP6<5I*X`)@'IE`5ZV8S)^4EJ47Z=^`W2B;C9J$%QI M!8!FSU5_5/Q8!6/D57%__0V+>Y!TZ%H[9>%A=0`,?@B"$X&V*')9F72)50.` M40$]`!)I6`F9BL'Z)?K5XS8$X@FM:.H)[6S$!VUG+@+1=YGY` M?\E?TUL(!)15%'C9@#]=P6D7=OT,1H))$;IT+%UL8N)WZ54W@@-GH(%V#&=L M8X)H@6%=28''@$U:MUNM5D4*V%/Q?I1;%F`<9(=_I3N?5GMXFPY-6699SEXR M6$Y64UXZ:JP!^P2U5"UFC&BM;19D ML'EU=DA:FF=F>$E;CGH>8*MCQE9U5M9C$7X251-^TEGQ6&Q^MU@95EUWF&)4 I`-%[4P%R`$9_<0$*`&L%RP$O`%<#;P5?!7$%8@5Q`7<%+0*!`;UK"@!W ` end From owner-mpi-ptop@CS.UTK.EDU Wed May 5 18:25:41 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA28094; Wed, 5 May 93 18:25:41 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA21874; Wed, 5 May 93 18:24:24 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 5 May 1993 18:24:23 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from almaden.ibm.com by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA21866; Wed, 5 May 93 18:24:21 -0400 Received: from ALMADEN by almaden.ibm.com (IBM VM SMTP V2R2) with BSMTP id 1138; Wed, 05 May 93 15:24:32 PDT Received: by ALMADEN (XAGENTA 3.0) id 3834; Wed, 5 May 1993 15:24:31 -0700 Received: by ho.almaden.ibm.com (AIX 3.2/UCB 5.64/4.03) id AA35247; Wed, 5 May 1993 15:24:06 -0700 From: (Howard Ho) Message-Id: <9305052224.AA35247@ho.almaden.ibm.com> To: Rolf.Hempel@gmd.de Cc: mpi-ptop@cs.utk.edu Subject: Re: Revised draft In-Reply-To: (Your message of Wed, 05 May 93 11:25:42 GMT.) <9305051125.AA15664@f1neuman.gmd.de> Date: Wed, 05 May 93 15:24:03 -0800 Rolf, Here are some of my questions and comments. In general, I like the proposal. 1. I was also confused by whether the argument "newrank" in MPI_CREATE_GROUP was an input or output argument before i reached the place with the two-call implementation of MPI_CART. Please add IN/OUT and argument description to MPI_CREATE_GROUP. Perhaps, replace the names (key, newrank) by (myval, key) or (group_key, order_key). The newrank is not really the absolute new rank, rather an intended relative order in deciding the new rank. 2. For MPI_MPI_CART and MPI_MAP_GRAPH, you have to specify that it is an error (or whatever semantics) if the size of the parent group is smaller than the size of the intended topology. 3. It's not clear to me how index(*) and nglist(*) define a graph. Perhaps you can add one simple example there. 4. For user's convenience, it may be beneficial to supply a utility function in changing the adjacency-matrix graph definition to the (index, nglist) graph definition. 5. The first line on Page 6, newrank (in MPI_MAP_CART) needs to be moved from a parameter to a return value of it (as you've changed it in an earlier place). 6. I am somewhat puzzled by the question that gid_old will be needed or not in most applications after an MPI_CART call. If mostly not, maybe we should change the semantics of MPI_CART such that gid_old will be destroyed (i.e., recycled). In some earlier version of IBM's EUI document, we have a MP_SETRANK, which essentially reuses the same gid but with a different ranking order, according to an input argument "newrank". 7. I was thinking that if we should generalize "listdim" in MPI_PARTC to "lostdims(*) and nlistdims", and realized that it's a good idea to keep what it is now, since we also have MPI_SHIFTGR (gid, direction). One slight disadvantage of this is that, for instance, to create a 2D subgroup from a 4D parent group, one needs to call gid_3D = MPI_PARTC (gid_4D, 0) gid_2D = MPI_PARTC (gid_3D, 1) even though gid_3D may not be needed at all by the user. 8. I was mislead by the name MPI_SHIFTGR to think it is actually doing the shift along a specified direction. 9. Consider x_gid = MPI_SHIFTGR (gid, 0) map = MPI_INQMAP (x_gid) should the map be MPI_CARTTOP or MPI_NOTOP? 10. I don't think it is a good idea to specially define the topology based shift function. First, what about topology based bcast (e.g., bcast along the row) and other CC routines? Second, what if the user actually wants to use both circular and end-off shifts along the same direction at different times, or even worth circular shift for even rows and end-off shift for odd rows at the same time? Third, this only works for cartesian topology, which is a bit inconsistent semantically. 11. I just noticed that there is no pid = MPI_GETPID (rank, context) in the context or group section. Should one extend MPI_INQPID (gid, location) to cover any topology? That is location = rank in the case of non-cartesian group. 12. Sometimes, for efficiency reason, the user likes to reorder the mapping of a group but still need to inherit the data from the old mapping. Thus, a permutation is often required from the old mapping to the new mapping. Maybe, it is beneficial to add a permutation from the old group to the new group, like MPI_PERMUTE (gid_old, gid_new, inbuf, outbuf, len)? Note that the "unordered sets" of gid_old and gid_new must be the same. Regards, -- Howard From owner-mpi-ptop@CS.UTK.EDU Thu May 6 04:02:36 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA06752; Thu, 6 May 93 04:02:36 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA23257; Thu, 6 May 93 04:01:00 -0400 X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 6 May 1993 04:00:58 EDT Errors-To: owner-mpi-ptop@CS.UTK.EDU Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA23218; Thu, 6 May 93 04:00:48 -0400 Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA11578 (5.65c/IDA-1.4.4 for ); Thu, 6 May 1993 09:59:54 +0200 Received: by f1neuman.gmd.de id AA14804; Thu, 6 May 1993 10:00:12 GMT Date: Thu, 6 May 1993 10:00:12 GMT From: Rolf.Hempel@gmd.de Message-Id: <9305061000.AA14804@f1neuman.gmd.de> To: mpi-ptop@cs.utk.edu Subject: PostScript Cc: gmap10@f1neuman.gmd.de Here is the PostScript file of the current draft. Any comments are welcome. Rolf --------------------------- PostScript below --------------------------- begin 664 PTOP.ps.Z M'YV0)4)`F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R`$# MQ)`WBP*9,1"I4G4+[`J/$EQPP7&],XA1+F3)DY&6/DC.%4R)LZ;GJZ.>,6 M3\:2)6ODL`$"!PT93HO$/=FF31DW=.8\)&(ER4#";<+$99+8-'#V"L(I5 M*U>O8#FV+7.F,A0Y;\9,*4,G(YTR>%S`0?TPA((75,I@(>+SI8P:)7N.>4FF MC!D0N7?W!I&PM!L0+YSL*6ZF#W7H0O:(J4Q&H_$^3J!/V0-[#!KPT+'LF0+" M21\%0J!3D;*'CAS)<]A4+(/^19K\'YD!U!Q%A?>"'7.DH4=1,<0`P@TYM5%' M4`8"L9)S>_S'QAQ[;%%2"PXZB!<(,'2AP!AON/$3'7VD<1R$.IWU!AMUT)%& MBAJE8<>#.5DAA8PTVHAC3SM:=@8(<_PT%0@:.-S:"2XH`(MP$@D M"!(&5=)\+1[W9)1"/N M"`LW5]FX*=)!11ZN@C##PR\847&Y@>II!F)R#.INQ?"^,>B[\85'[$IS02=& M&`2"@`4(3-V7!W91E:O9S2\(40?"9`R!!E-[*&`T4T(3788<_0F&HEQ'\OOP M8=V142BL9KSQ!I*L=8U8'SGE',;.V*)MA\D@L/$&3^G>JP"UT`'L[Q;BOD`P MK',RYP%^]+N?#[SUPTN:$_N+PB3##:-Z'ZYT1P8\T&]Z84#? M]23E(/ZQ!GXM2$-DS')`^Q5J5A@KPVU>5IGA91!BK[);_Y9G'Q#8+4YDZ(Y[ M7)2WV@GL!7*XPPOE,(87GL%0^;K-&'#(L2.\L'(<6YH"V96L_[EA#NP29X"V!.TGK7J(_UCSP@)>+Z;C&XS#/>2VA0P"1!\(JUSL0M+#FJ!"QS41T,>CY!QW"3.4M@%^DFP+/PYI5DB,XHZWW0,GOH0IA*)S.:%:5_MC1A">FVL"[2 MP6=@U!1[[,:>Q[$%F,"[7_H8Z#[D`>^*<1`![>^QT4?'5.0I@2Y%^@U3<^Y60Q@0-@<[>@%C$G"!/MJM=_PQ6P["T]) M'/2;&NR!7UN$"9)Z>23@E61C6!P4W<9@A^>?/I9HV%K.5([#DOF,T;M.:P M.S1O(J)#R=Q00U_B7!!_Q+M!IO90$@$OJC*OD8,=@'(H%/!F#G#03QY24(8X M?`H/YDE7H@Z,F*Y11.D,LVLC.58\L?% M-<:53KD\T6C=QPU]NT@;-O663H&*4]T!553^'&@Y#'JC'?W:D=,E!S:HSJ,E M,;.1RFQIRWATTIG+=*=9\S4S("PH5X:E4_,6ACU`FM2*"RKUK.NYZ13J-L5A M`_5NENE76R1O35C/I+RCZP0.TG/W%+:AD#W`/;0@44U0G+,W%FWX0.=5"P%! MM'$5OG5M&SIG(+"V\X8[!WW;/WO(R;G5L`=JYVT->X!VWNY`X#+[^@UY2YBA MG@V".^2M#:)3U\;\C2N$[CLG!(?.&P*^KH2_(`X!=Y##CV@HA+\3.APRU,#S MAE-$]3MO!BP)>QS-45CC*@_M!D%.G!@40X7AGF_@T$.KR6/W""&K,5_/R%4M MR_A@+3!Q.4UJ5J/'Y/#&8>_56`YB4`,:G!#*!^$[X,MK`SP'IA@7!6 MNHXK@3$`H%H<1#`>$/8&A(6!$0@;@R(0=@9#.#O4UT MGSWM?H=!X.T.`\(;WG*%3_OA"4OXP#L>\&G?N][GCO>ZIWWM;K_ M'09#D`$-%'"#FQ@A!CCP`0U*0@0>/)>PG6>MYBT/>\#/7?*5OWO>$\]XQ?O^ M\X)/.^DA#_S'`W_QO.=][G,O>=E[ONVS%_S<._]ZRX6>!C<80@Y.G_HDF#WW M;-^][M,^?L(.`>^H5SO>96^$'`S!"%"_@1'FS_;Y[U[^Y,=_1N]N_[//'_/M M]WY0=WI#('OG=WZ4)W[@5W[AEW8-$@/81P0Y<`.HYP/>QWF$-P-&H`#PYW]& MD'>W97=9EWS`5X+TYX'U=X+XYW>RYW=VYX*?YW89Y7<`*'><]W;_MW:<]RZ8 M=P-%<(,0"($W(($S4($36$_?9P2-=X([V($SX':RMW(6$UWOD MEX576(7!-WY[5WE/J'=QUX0*T'<5X@#&'^9YW=[)X)0YXB\UXAY"(F0.'S2 M]X51F(AD>(C\]W^PQX.%6`0:>'QW_Y]X$I*()NMX%YV(*S M.(D-:'>5EX-QIXMJ]W]QQX5>Z'=B.(AQ-X936(;_AX:=QWEKV(9>H8K?]X,] MF(R].'^M]8.B.'Z0R(B*.'DS6(M\*(R_6'?0UXF;9XUOEP,9N(<+N(.XZ(MT M.']02#ZL^'CK>(^1AP/KZ'QKYX-TV(FN6(V4%Y!,QWGR]XRIIP"#M3&MQX>` M)W[9EW_BAX?D5Y$6>9'^MWO]EY'"QX`>V8X*&)+D!Y(C*9(.:)(-2%@9!7XY M^(GHV))WUR!$D'WN5X&#A2FM)W^$)X^`IX05R85`V9%8^)-$N85%^7M(J85) M.91&J9)*^91,N91+V'\Y"(7P&`-%6("GF(JI-UCDDY-#X'8[&8AU*'_4R'^< MMWS8J)9MMWP'Z);HMWEO*9=XIY!T>8#A%Y=YB9>ZIY=]R9=Q"9=\*7]I"8`\ M*`0=*'\*>7J8%Q,0V%H(:8$\X(-CJ'9%@(YF&9`?F'L=:'>89W>@J86AR7MV MIP"C>9JBF9JDJ9JA*7]#H('OIX0ZZ9JP&7:/"0.1N8ILT7F]^(XG.(9.B(A? M6'GBF'QBZ7N'EYR^UYA0:#G$68C%&'=1&(N#Z(F?2'@WR'9%B'VG6(3=-YGP MYX_SMWW]R(-.&)[T.(HC6)G1UYX.F8?YV(?Q.9_P69_O27H\68W3Z).D*(3M MYYT^T"")TI#RQXC6F9F9]YDQN*!?2'H0R9_F&'D0RHHP\'JR1XEYB'E[UX&& M>8+P6'CXIY(/&(&Y^7U[2)$H>J)SF)F["(^\^)XPNG?[%Z,J*I_VF:(PL'I\ MB*$[NI5B94Q<9"M]9WRAP/T=Y!+"G\J^(72EX'JZ(!$L'N<>'E[ M:(F75Y%U>'=5&GE3RG>-!Z7]&'].NG;6:(U)2G\%B7W_68$**0.L)Q3C@CQJ MX3]D9P:3J79*^GX%N'J`FJ,P`'6M=790?J9%LD7=3YWY_YWQN%X;%")U\N'(DTJ(4*ZGF> MR7@*27=X)ZNJ7%QW9^)P,C2`.HIZIE>'?<^8PU()EU MEW54B)5S%XL-R(V8R*JPFJ^\IZ#05WG]6H;2"K#CIY"E.H@%VWND"@."2%@V M$'8.N*B8&K&:JH4C^(*MU:T.J0#/%7BPZ8"E2`145X0VL*P,:7;*AXN$)WX8 MN;(K6YI825CD"G4TL']*K'$ M=[90F849%90G69)NV[;T2:,V"J7`EW6.1SX["7Y;*Z11.P-/!YD_.`/N"G=J M")^2=[A]=[8Y6P0SBGRX*)%I[F9RWB:J[$ZBH=! M@*S;5WC+B@-("'VR1ZZH%W?D&@05FJ.$BW9>2[NJ.J@P^(4OJ)*[NYJY%["] M][N3QX:G:J[2F:/$.:AB.*A2.%CIUZ\4N*Y%>',!.EAQR*TGR;59EWZ)YZ_` MZ[UD>'?S*+Z7J+H&ZWF$JZ%*@[Z[F*"?]ZJZ^W9W1WDX*Y$.N)T^^(PCNXK8 MBWH^:Z@VD%%9M[&QJZB4*GCGB8SO"'@LB'DVX,!V1P,ZZG1Z5[C.*[U,YP,* MR737NWN/&[F0ZY`;BH[-I[AGZ[B_9Y<@G)?#V\)3Y[.-BGK3EW9$L'[MEXI+ MNXJ&F'=#8`,R(*<+B7V&.G5KIP`PO'8P_%RKEZEH2[=1F;:'6J&5MWH$**A5 M#'6F*0-Q)[,TL+5\1[CJ*H3=&0-!$*!R6D]TVC$U)`-PJ!:)4G93EWU*.,>+ M^IJ*>`.,VK!+JP!=?+W**W$.+]\F'[" M^(@9ZHE-N'8:Z(F*Z8DYB*8M>:R")X&ES+\0:I88ZX_0IY[4?,ZMI MJI5J:*SK;)4N>8ZX""&"EZQXI\'\^Y12JW?'+,Q9"*'W7'\9Z(]G1](@^K@D MC7H`)((5/:JM:7?2JF)^9&7NK[=KP?=KR7=JC;=KTG<^ZW=KS MO=26W:5RBMR.K18C"W5(V-[4:."8R;BTS*>7V,NNBH/"^7H.GGXBV(&55^'+ M#*IU&'<:/G=QM[X+#GHB'N(3V<^5>I$.;I$I7I$K?H>,S.(F#N$H'N,A#N-[ M>.(J3N.]C+4X;N,S?N,RGN-`7N,XR-]%SH'H>*@_W-C*?0,^X!=QZ)HI>)[8 MJYZR3+ZC"(32RIO967_"5\TX2`0ZN)GG7(];[L^LZ(HWJ.9HBHPM+0/]Z'8" MN(,X&^=TB'H*:0/Y6XI"X`-'.*E);I:>R=2L:.7_Z(^CZ*RO3'X!"7O_G'?[ MU^AH?GD0"9%`_78LG9VOYXHOF.26R7;FJN>G6(HYH`!^?LHF&\Y)'IX"6\YG M/LS]V*U]"GNSSJ?9K*1++>D<^.CU?':63L_SFYTC6-U%#J1L5XJBG@.E6,;. M*ZDFN^(;V7:5"7CG@?^J$,CJ6,_NWD?NZT7N[J MCNX,/J/=ON[ISN[O[H'*2'E^.P/R-[H-,KB;&8M(3IAHJJ1C*,>$.[O%N.@# M?_!5CO"E&ITOR>X8#F)\[6-MLN.<7[7UI.-06V>7[+)0X[^45N?,4RL\W[]D^/_1" MWX\^77]T7G]V>X[!>HZA:(=#JJ$+_/`4&O687G_[9_54+^Q3K_5>W_5@S_-? MKY+RN(,M*HUJ/KKX[MAL:`22R7S3*-T:VI@J:[57BY$>2MT\GYU\K_<4VO=[ M[_>`__>R2/C7V9N$)02BE]Q%F,-*;9B!'_F&/_E]/]:"?_F2/_B:C_F4S_GO M3*$\F9^*O_;ZOK1>B81+.I9)SW]+7W]-#_7OB,5C7_5A3_MB7_MNPG_G4 M79UVV.5L3ND_W_^P9WWQ/S?GZ/X?`41S?4__63).!,Q86=2+1>=(`W&@@33I M?E[.`WH]K^@%O0V8`2W2_#EZ0XT+D3'2E?S00)`YZ@`@KX<..FRTPW4@VM<`X]X*%',]J?UT-:+' M`3$@/^-Q%I#G.<$+&`*YE$^*`8JOHBF[MB.9E)`/%$5JCG&).O'%T-H.SI)6 M1>`,&C+"A?/:()=[@U/0#3[!.`@'J:!UJD;WJ_V-NK#CKN;/>CI0Z8QA?9ZC M5[$JGH;2@?YG*MV>RW8'7YZZ`T'9RA;Q(4(X@#X/IV,\&ZD`+:,&@?R.G[OZ M8\QLMHVD&A6?9I3S`63QKL;!))@T[E)A*WR%\R[=N3MSYPJ['?=:9]/G2-&Z M6Z@+^10*?$T2ZJ/1HYC4JY2@)X1__,0Y64T@P:EL*"4RF5,:..9?PZH=N#?UL.IZ7#>%=].E!&:8=YI_'P ML*`&?J`?WPJ%A0[H<2U:5WWX845R4"HK^P1$24?D"B(3M$A<2*.E(CW7?FH` MP>J"LJE)X;I%)1&!FX=+=\8J%_8OC>BL^DY,JV!G9WT1@5(5U$8BE!I#2+#Z M/"'4LW:J3UI24B..]2FI817)A(#@$567QR8.H;D3Z4H5R!)J\DR[P<"'%`79 M(!>2/"+P(L(L9'>0'.+3@8CK,)3QISK4#N<./%1*P^S^`*^K]\?LH5.*9_J0 M2\T$L=@/N55`'`(#466U.(.(>;"6S[M"4.EI6:2Z!PIOR[:S8XP.&.;%YX*U M;`!.[$DW;NAEP:;(!<<.ZM-I^BF4V<2G,ZA^4&13"U.("*0Q(_`H5$Z>>GR\ M:+B5(=CU/X8`#AA]/H#UF*C:1AI#8?I!0!J()J?A.HZE;4[":\'Y:( M&DTC_2J-STM=#:$<8*Z<7&0T.P)MS*FS#R3H!%UQ.X[(L3C*HVIV?EZ2ADI7 M:H'TN"$GQ\$F%?FI>V",T:FXNN?9LF,3\TC<,#`FQ%-(>_(/D$N(EZCGH4?R M6!Z=4GI\6V;K#M4]S\/BYJ-G"U]S\2)!0;O''_FC@6MYO&@$8A_M$WH$EQ&; M4_VB8Q2%-G;&R@[5LT9FSQ`MJD?$@CH=(4D2+24YL^$"K%$2E-N'0\X4)R=B;MTP6UB?7$L%!VO$QCR5OA MK!F&%/7.&>H]73),SBN'=+`2CY@$DV-251%';481ZYPF[$^ECNJTEOTU&O$C M&`.%5DO*Z4F"%,)X5OFI/"NI3PK*>E7<,I/S"@*[<>G0R8W4BX`42AI8<&MJ M=2KX."DC9:64E"1I1I$D2\F2J!%_XV\/:`*=HCEYNJ`DBD1H_`E!T3I^1"9; MY9DTDVDR5J)),/DE8>6L=$W"+2*Z2?Q3D!ACDQQ9RR\.*:&5MR8_$#4+2[HG M8`4>_%2=IM'MZ6&,!S1]IH?FBY(10U,_(O)75B^'B,KBHQ-C8FRM0XG+)@8N MOZ5[-)?YQU#]G1+&+ON."J1#V$G2U:$'A,?:3\-:E!OHGI$EG';/I)!P\I>I MZE_JHS"T?4903)A_;`<5&4PB(`2$$<-TF/#!83;,RR.U3D_>PD5%Z'^T'Q+9 M($[99#P.?Y%U4RC!#,]$LW\F3XS:/;,3\4S;>;0-)I($S!*.03F)MG.8_N)-:DKL85) M%123W`Y;ERT3C,FT*LFVDE)F_#\@;BN*S?(S-H67V8R'9#-MGDV9&;S"YOA) M4G`S/*VSCT5USH^3XU^;Y_:DG>J3LB(7Y0*)@%-+!9[JPS>1$@I32H=32"HE MPFG"LE[DF4_<"_QXL+WY.$OCB!M=B%("*2W5P_QXP.Y1B:*0`4U.05BW*J<( MNXVF<5!"2C_).E7G\D&=B*OB`<[!B93ZY##D6M5'_&#._+4YO0_:"7CH"?4( M3[!5P=".$B,LP&$F@:S5$]DDF+/SD.HP\?$A'$`2BH!D^ITS,3PASZVP$YFG MN\IEU&Q+/A>X\US:C@ZZ3`-H`M9(M0._Z"/*2DDJ,W%I(@%1A-7R"S?CFC#^$#(3B,UXF[M;3[C&AE)-\D4ZI]7K*47;Z?%2) MN+DB:79^9E(`XCP^0+4<1D;YW'R;1BJ/WRH`GBW<-L.B#V[#6"EIY-4>VJ-$ MZ6/TRUH9I8E*T:SE1)%H^3FB2]0AQ9XB2A^9D[NK@8FQOUFI5*254)&9XH>KXR3SU$5;-(2(E0TEB%T@^7JX0'](!"P02* M0"U;%UU2YO$]MJ`5A4?+U_W!8E*+50(R?N1&5R,;I3^'S$J=GT5UBD)/#)!L M4Q,S,L=J-$K9%[C*CL_QE/Y0_&A*ER@J54FOE)6F4N@&I'AH>YJEK327XM+" M%TM[Z2KUI:HTF)+2&#K_BM]C*Z-'ZQQB1CS81<%5,\VB0?292M-H&D2CJ#.E MIM<47&&S$W2`#I)-5*:>SCF>HSKDBC29_^-DCDH$G4*3J'?6J3J=0^^'89W" M>%JAYJD#FZ>D)UO-4P.T3_4I/#5$6S+MO"8$-$\!ZCR5=N]QD]HMG@AZ$.H\ M53L;"YY"U(0Z41]JD92H%U6@8B_G4\Y`:,ZT8RFP4<8Q=,2&3)$9'5EX[#!^ MHA;5\F2="IUT&FD>6@YVNGOH:4W%/#75``E4G6I^"%=-A3X_5,E%\.H6S2T@=K[;%Y>A5UJJK=$=3VE7+@U?[ M*M1ZCW$U\B15PRIF6Q5.>=0I!=;9TT?;UUW]JW[UN"I7SKI9]2K=>DZ$ M%:ZVR(-EB,J4^/).WBKKL%/!HQ-/:,0#=SY)<\'+**:UR.OC+(M3YR@2Q%2& MR6`K%OP-,]#]G%'X5_,JFS:%K7AHE[+5E^I9EVC;^:+\]9;6IQIDV3X:H[15 M'PVU]B`V&AY]&X-]CPO6P4K8)5>79=$]K5B4>)/IE`M".>>F#J=9DYT_?.\%&==R9&%AX+#+>H>0P0&S M555/H8Z%\K*RY\MV60-*N"8D5N5P/G7V#%01MY+D'$`E1]V`6I0LM/+1/8$Q[[AH31)%XEX*B6RU M%AMJ1OL)5*RI?2Z?"=6*KXCZA,;G M54)/=R=C'J0&T:XFT//D=9SR46Y*3*EK0U)*$W.%[Q`9J^_5ZM`F9[JBR/;8 M*EN,M3;[E;02@-;U8#8FG+5YS!6EM9O\[A-=HTT+M@K0D0H\V!2:"I\MFGFV M5MRYH"SU0:J%6:L63*`B(X4WJD;-*!P5M^CM'T*2"RNT"J=%&HXRE+^=A*,5 M?676@?N%5)7`+%_2"-_V(#`8QJXM']1A,J@7Z9ZIDV>];63%A/*HJ256^GBW M*A3A0K?KL_RMVXT9'4V@0RM&4XH"':=QA#@-Y^^!GBTWYAJGQN5R9>[AU$D( MS#/%`*@9=QY51FL^=>P3?:E-2P365\6U01:K'(4@I,MWF,^:C4>1QZ25RWT8 MCXJLQ(M'B2GS?+"M>XOJ51[2K)UH"5$>XG60V)!#[(*XEM=2REU[*=ON^MD\ M19<)]2/+$X8.UC`"0\O,5#6S%GEW^R[?_;L"+.^V//+4BPAO$'*X=Y,'-!^5 M!T8I4G^\>Y..3ZZP/^DZ*^_DY4P M)REX4%]5O;R65ZHEW]:)?)LOY76^F/=+)KG-VWE!#]HU;SL)V)*G@02V!!'N M08-_$OSR+']E=WH;D/IMO^Q7^;K?]IM^Z6^:.E,M#]?I MWT/5(#3FTA$]U[=;`5LO)XP47-W=NPA8[RI@P8MW&[#?3<`,^`,2WO'$ILR5 M_VT0B7.L(I5H%)F/L=E&:1&EF!$)0"-I>RS8[A#SW)R92H!-:A=.1+SMD M4Y!KYL$+G.<@(FSR27[06`*O:-N^#&9S!)P_R";R32PX%AD/.^:;WJDT"9ZL M='_H,>!IL2>4.H&\5JA;VU9Q?:YS-8Z.7`70)*VG[SQ33--#I4?CF8^PTY=B M.S^QQP8C6KASK>[DR4#)AX#5GA&F?^]O:RE%OI)$(D-P/,N4<3%2/,^8&?N> MZH-VHO']J8?56._$Y!4G!ZDD%P*!XSTX5:H0U#SYA;4E?9:@G M4DBKAS%^Q@P&&=%8@C0"1P)U-0C45798B['T4\1QR&&J/G65L[(4RY:#I>A" MJC2*&5==#T6`FHG[`4$<:(<:'8>*J14P^T31^[.+M&)6Z3!3=\@#22(?9!JIEM-RB5J&12TM'-8#^!C0:A]CK<>I+S]$B M6L1]10MA86=6GP?,CJ*JYW62>T\&FI?]-W_1VE.7NBK<"P1FP`RQ/EZ\!_DZ M'_Z[S81/&@X^F*NP(FO[(0*FZR:IU!DZ__J5$:!BELS\)2(?F,XB72#D4\PY M.@.@YVS^=N%TELZT3AZU-XK(?4;NTE%(?2Y8-J2I1G>,5?LUBNG1NM(=1C"VO+,)5M=PRM6`VGS@&1V^YTX#\A:J.53'\TO9=9YD)R9`F6= MR$RIO--[>@,6@2:>V*_PK-M3U"`$%ZU]GN4)US%-[`R=K[.'MLX@ND.'Z.HL MHAT"B:[.G(CE29\'QO*@;&N!P>$Y[#CE<:$_^`+U_!UZ:J&B)[\#'%:+9UP] MCZJ/6<<0-D-CY^DT7/(32J$=*F3";&[-53YZN/PI:+M*?"FRXEEXH#15NYUK+3*U<`6M(OB3YV> M0<95]A11'65W@%C>/(4F+0C580F4I2&5B71:!C2%?EH0YYY^%?EYR(3E+TZK MM!.STH[7ZJES"&Q1'H<$P[H6E(H_8TT%?Q[-Y7=T%`UBA=K8)J_=3.O3@A`G MQ=(/=S0:S/Q42L$<#MH]XO5+DY]<+:C(CXZRU#QN0*:=ID,[)4\9FCO+C%-& MK67]5QE1G0Y?)J_,YB$X:JH]->_QT[6M"EU50;T;"W5&4Y<]+TO9IW']'D/S M.;V1*@LK15"51:Y4EKD]ES.+"UVCBC2O'=!+-50;#8AE(+"*\SN4)RU'=)E!):;#B50J-I9G5"!940/ M6%G2B.F9)U)20/:QQ>W_VZ^QM$M%M_M*>R)2FXT^5/9]JE`7*K.I[.810:`* M9S?#1AM]`,AKC'>2M,&9UC2TD`@%^/*-I`CCTML&!*6/;JVXW0CO3K@ M1[P2'O&:.RLGP=Z]+NYJ[=R8)P2V#QOZGAF;8^-'++J0GR4@BY\MN\Y2H3H+ MR'Q@SKMJ6=1QV\#'O<^DEK/]-2^1C&CG;D$URKZCV`4Y8$JPQT*64NH1H6G>U#A[MU]B0A5#W:M=]M6N5:J MB^1::Q]U.[D:^B1OY/U7E[?`?JE7)SM&;RN%,BEU>])Z@^2K'RKO MYLV_H:CSKH_;,8`#\`&>:-\TIE)9'W!"%>WPK8ZX8$9C9;^:FIW92-TRP6@& MHK\!4Q0"D!"Z087G']UHYRIJQ6DP"J=)>-B^6F9[;'L@`;2/3Z'YREK2%;`Z MO-F3'8\1`]*:83OPR-$P)&=CUS5^6'S;;],`P%TLZ;)S+N#D$7%[;`.>SX(V MR6;B_]")?];7NM&FN'OE0JK;OS)K5OJRX_3HIJ+>\8O3'D9[OGOVB5K%\[:, MX\J#OTPUKW<7C>2\]Q!V3V1QSUNJ?IX(NVQK16%\]@SW1Y! M^!9OCV2\@"M:1AVG]W@MW3Q%J`ZWG]Y)OO%W#%3D>=SV0$'V6*Y1H;GVY$*V MD`;2?TA(U>/-2XA5_%Z71\8-KN]D4+XZ`@Q4!67Q"L948MYAR5";3D,W@K1T M&+AC9&[.#H'],[W\S\ZX`V+CQWP/T8"YG<^6.:5NYJ0V1T%S2SW-UW8U'U3Y M3`4V"'DMC*JX"F1#$?=KC2MO7JJ].OU:4>ON:8Y&3`8_/E M#OU[4KSAM[,[FN7<>LJ\,54D&J#1?;6QVN@?W3W.K'3EJ]D@O29I_3] M_;R1&+VF.RE=^L@I32EW?K6ZS#XV?7KG=,VST\573V\[-EV\]C.A7BMU]2M$ MV'L(J1]T&`4Z:>S==GF[NNT-P:,M`TP@D8,^QZP;42SN+:5O-BI4L6/:/9Y/ M[;C1=)DP](ZLKMR![;2.I=9Z>_9R\$=3?MC$<4$NG1\I;1;?+ MXJHNDOC\LJ>[_D;2<0L[?;MBN^Y*CK^-Y,8F7UG/B@;MD1VR2?;I+MG/E/^A M;$8=8<.Z92-DJ#RTG_+1;LH!.(_CVJ@=.ZIVS7:V$?B!7>"\D_.8NMQ&'N9X=1]VU*P%BH6PE8J9EYN& M7W"M7?"F.WNJ[H1U#/6J4)11EIB;X^A4"4]"OXJM!3/7)W4ZUVL4)2K0MNPN-IZ_L58JW;3I@ER21'T7.N4'.N5+*U_FJW,^![=>(I\'6[ MA;[(#56(S(^,/4-7ZOC%/&\6$R334_-$@56"-S@#&H5ZM4;WUX8*B7HERZ'1 MB^B(?SYH.L6WQQ6OREN\=XSL`AR3NZ<9W\EK/">_\0SUDP?90A8NL5-SO`%! MX&A_4OI*+#61/D-Y!VP*.5.A;KVS*),WZIWGR9-7J:6CJ'QYK/+R&,M;ZBO? MGFBW[F:E7C[,=WGX1+!S&]N!G/.)EN>=7YU[V'S>V4/2*F*511Z_MV^B.C)B M59V^XJ"$2^YX$XK=\ALT3&?JQGVZ#3;9#6X*U^/""O5CN?GB#JLS]N'C?Y1?)"1KW^]*H@G[GR_#)- M@2]O`-;`WJXW27R2=Z:)OHL>>F@Z=R)X(//U=V>8L=%!9,.__"5JUY%^=9ET M2C72S>LE:O:Y6D\3+ILN[0E\1\H^SJL2R\=L;^S)D+X.WKR*`]?'U3.QQ[WX MXM5P9Q!Q()O.T:8/NY?U3I"![B3QZ&-9TC]D0&4Q)^=[8\_NM=BJ/]K*M.IN M8+X6):>=VE:A5+<6^U[N#-Z4%P:O$AO,0KB6'@GMF\> MV*;4`6T^-ONYF,J5%RK7^`-]H[O"$<<>:R78+O,0:1\',I,F%?G3')?D5-T" MF:9QD09`P)9NR@ZR=O\>^NF0!L_0YZH\NW#+G<4=[\+M--VX6G*2GF[9#;,A MG=1"/ASK;X*?#,G,CIOR?&P0B',B(:DMMD9GX3&%\VE*1RZ9_?1YO=1_^TI? M^C#]RM[VK;@+_=E'6F<-_=D-?%PL8?'Z0PCL#W'^%;7R6=<\3O0*&_DS3FJ9 M./J6JP&XC9>!9LX#^1&:XU_\XDE"(W[%^6D-?QZ,0&"_C'F?./9^&%<.DC\S MP"9FG0$6N^2<2B.OA2J/J1W5,Z`4+[6E8[()+Q9BV>_VNE@P5]103`FOX;E5 M+I/93W*+HG?XQZURV34UFDB:MVD8F7E+XS^QV.X"HK8?$[63#/CZ M#4+T)Z'[(W?[UWU^0@)LT=V@7`;QT/*L.T1L[OT[*60D_^M__+__11;^TW_\ MC\O<'/MG_\8(^,4&S7\H2%K3G\PDG91"(OXA.)F79I08U7:S601X+DF`%*#) MY``>1R+6K>,0_##LDP3RP^0`.=2AQC2](DU78J*)S%"$&0J(YK`?)YDB<[6P M)Z.>$\/]J2PT8$52`^YD_-%^1"G!@)M-#_C+1"U6"@>X&YT>(.#6\OO%14L) M%92-*8$]CHLSY#PP%IG6(NH5'HZ5^1$E[52H'*$3K@5%\LM:!*_P>-`*0:2* M85"(D%QT!69QT\P?]0*Q';524-1Z\3+ME4O4Z/1#CIQL3DM4@[VYHD0-'J'223/0#6;6P5$AH%V0=':P@521!C4%3@&28$)415H M"5:"F.`$6`5>@9>LT.950[@E-0#'CV%#,UGEPE%O.!09-+(,X%:61(OG6&7C"LSU\1+BYE= M@PSV@EK-,GC)-8.1#(@3#":#GLPPR`P*@Q+*E.0+[C3:(,7#"^:"G4Y_PT-E M<3DGWECQB#,9#2M7B8-!9*AO0+]H(CB#\R/@E%]V!+TP^M-"2( M#[+1"#JMR(3B#_(T/,T^Z':\'A\10M@)%EF!6OR!G3B$&ER.)'5!A!B1:U;< M/(#G$])"D+5ZE%5T,]S<-+Q@2@,2:B'P8"]8(55.)DU`@P^"1/8@2W@0"C4> MS3]H5@&$P)D)11J+4&,0)FJ=8"^H#?Z$/F%0V!,*'CB9?@+'(3(_7M+R MMV4T@:"+0W_8@87@:5;8A42)("+D0B$RKEE3\@B2-O$@&=@3OAZ*#=Z#'DE) M'M!86`4B-$4..%;A\"2'%JG5%F(V)$U0%!?R)MW0BK*3[(*7W"]8H$TH5]"$ M>%.8PI1 MAH]A99@$K6SATF63&7Z&A,<0-!F.AI)A::@9FH:@X7>#&:Z&T$UBN$W1'Z(' M'6<8EF4M":)%%(Z$MF%NB!ONAB$A;Q@#Z88XX6_H&XHGQ8WSXLN%?851.:.)0)>%@$0('= MX;6D-#5Q94Y/L^54AV7@M6-H`35R8>RC#0)F.A`[>!KR-2W)4X,8ZH>Q(40' M`MX`38N18Q0"91P6)V@@CD<(HF:3(':'"F*#R.,,$S#!.G`BD&!BF4),BZ20:,D[_ M"*9XB&B*'PBF:)EXBCZ(IZB!>(H;5@##Z!`>=""J2"#V0^R)_J8J-B7XVZ93 M\X"%_:$Y.!NF(-M.(Z2<]88Z4)8S+Y%HZ`]O`M!L-@/-3],6"H0S8;*(+"Z+ M^MV$@I\PBZU(6T@L0H+K3]6T\N1G$=Y;]@*M@^W@KM@:XC.'GD&B.?T/'>%4 MI`'&0*E25L@M8NV84#B*W)?V:(6Z.A,BQBC MV@+^-(L<8T#8,29!'Z,'$C(B,"0-%<+X!3/3HK78RV![9$XMDZ+]9UN6^1/[ M%#*HVF+BDU!=))%V=+_5/&Q-9P,8JE?I6MFV`1XJ.,NX:(P)B`\@@TB>"8=` M67RX!K8T`@Q:A>%,22O.7&@7/HUS(5#V%BZ-``2J%BYEAUJ;4+3S7#OLX2MT M[?PZ@1FZB#8*A(3@E,0VHH7U8#@8-T(XJ!8=MH%X;_X'U%$K*H496,<"(.59 MM@P@\BZQ%ED?$17;%&@LT5W4BI!__,F1!)`,;>O-9P<8@5XGG$/@5`E6&]O& MAH_('65),B:6J#\<#]N!*!*&.]?UI!D]B[I(D?3*G(2N%R\(+<5`R%(,)%7Q M@C;`8E8[THYJF7SW+QJ,_F+!2#!&B.HA\/@[`HQ"X>Z(=4F,`5*^]*H=-POC M-I,."D?,H326A>"%TB,.F!)6CSK90O@34H_SKPEZ0R&2N%W(LQ-.?,,E6,D23__ M2&6B\+"/.)=?@R,5.N5PE/=$&9&4ADH+Z5=%9")5NE0B)6)J_6T'"(N3J2CS]@_361VENOD M.BBDI`.V@6U#2KWF1WU)#0R$@HZT*0<)@-)%KEG\8C_2P/E$HDBIXD<^/`$@ M("F#!)+ES#B#)'4>VT?>I"-Q2F>)8IB,3#-/EUS&L9`\XLO(,_+(;K+;Q*@' MIB"S%47TC#`[7I)S8S+10:0D%52324$6D!QT-[(^?2&B6+CLBB<:=29+S M3((^))G=H?B$'8X-XP$1C9*F9!V$2GX^J.0IF4K"01@($.(%U2#9B9L3ALQ= MK(C5YY/Q'\,,12>(+3">E86C_MUGEYMQID*=*<22_9'8^))(S44S6'"0C\\G MPDP.E+;9Y.-,I1E&OOW0HF4/8B;`]R8E"4E*W)2JI0II3@YZX64**7YQE*^E!0* M^[=+GBD%#1B$4_X/SHC?8EN!8[L(&(0&-2QR#50%G5U\M>2'5J(EE2/:+*E4 MDFBXY%,Y$5UX.J7P1*(4(3Y7$A+>Q'^&CB]T1/HZ];T19?4I3\$?Z!:8]%UR:=L+&A1U*@`G1X.5_.8H55$4F4N65YZ:,Z9 M>=E48F=Z97)6H;"(L0DMXZ+UE,'D':>3Z$L1D31RYJ`O-E"#E^YT(%41@\.2 MG1]"`(?SD&!!'(XI1&`*59A.$3*%-9AW5B2#:BEW1L"$R<^@6H*6_W,&2B=% MX6)%J4A0'F;%\\>P+ABDWP(LQ008&MISG;1A61=1Q--,)`^FTH-;B38)$?J7 MXX0V-TYP:0.^?&RE'H+SH!V%C&<"&W$\+0^$-T'9%V1(@PT)2J)4:`D\S2. M(1;*N97N8(G0##"C\!`G#L_75/QL)_A)#6F!3$9J`$R`*:@%;X*>PI--+CA1 M(28KW5T%S[ZUB"PB3!_\8FHM4:86KJ)[(&=XQQ)#AKB:OTJP,JCT<^69=B*$ M:!]%2!3VYR!J<%4_4_QY2]Q?\Y9'ME=+5*HV6\].,QFJQ*K/)M: MR&K3N>0JK":QLC)9FUM!/3=KSC#"2`TPR@"3U!&S8K)H;&5+M!*3Y']LT+7" M3VTKL`[4UZ0Y+(?*.:>I]2^Z$:YY7,)2;>9BDY?P*+E+K/*]_)OI%_"B;`Z< MR6:1)86<8'-5+I*7!!ZAQP47;))>>)C<`8@X!+33:4;(6%O&9;NRD'0PO15@ M5P'>/2+("$*N="TT2[GB=[Q+AY,H)K1,'0V>(E*(1&_FV(R2BM1AVH=8PK04 M4*!0(A>W?)P8B0[HGG0Q`EL5\B[]D_9:X"&G/)S57TB"_.V`T5\:]FMJ?\%? M!1/.E1Z>RASBQ61RF"8.X'1,*099-'(JDEY)V-M1U*EA]LFOJ3+E*)Q+8^2. ME2/F'6C"/.ES5(I;5/B=4`(:WY'U97U"2R&FN^F==\S>J7=@+G^G(.1"32&] M"H77KN@PR`C?E_!IIC*?E@KEP+IBGY\*PA"YSR.C" MK90NME5=PN#(`%Y,W(%]K!Y*3)B5H[`@J^??47>B)JN)[P)_S9[U5^#EM;"< M4@CSXG(V+P77ZN=^-2P#TB=9O8A&)!S>H;V$0@J.#A9P=FX(5_-Y@X5@T)H( MYKY@(A26Y9#IT"_:FI6"O]B;&1CZT:?Y,.G'Z3G%W!:F)Y!)X)F?:N=_%;R$ M)FRG#.3QBR'FV;XF:,-+5)'A4:H)'.?*-0)VIVJ?U*#%*M@G4E&N^/9L4 MS&(#$)5=2X4ELQ"."^BSMS*M;4BG_PEV>B221_:G_%DA"9^`0I,4(18:!!*' MP#035.\QL+T),Y5&_O$IE$K(YG"2<,&C^J8T`,8\(#;JY]"6, MB^82>M@`IAI>%(0$GP`*!O:!LF+%2,6"TI5B!%[%!7V8H!=.ZPDH/1BL9"O92EIH'QJ#%B>XR(ST(MDE4@MA M-X0D?_!)^%2LK&0:U>YQJ86-1,I,PGKO-F@9NG8NLZ/OBBEY[JJBV5HO.HJUH M+BJ+ZJ+4)]JWBMZBO&@LJI/8:G4>U7%ZQ&B_7U#$8%8>LYO2I4*AG^@2N33] M68`;2.]BC3(HN4LV2A)NH[R'-MJ-@WZH_.H_DH/:J/!J3\Z&R" MCLHIZNBM:,CP>&L'1V?@,9J)&H-''U59J:")ED7%HKSH+HJ+;J09Z7$$>#!I MC2?UN8L:'\*H1LJ*DJ3ABDBZ?Y:D(JE(BI*&I"QI3)J2LB"^J$R*B2@A&HA. M>:C\!;J;WT8GK4PSD1RCE1!'B\K,`KLD98(*HG*H9!12J,QR=3Q\%,Q@@932 M':_:Z>$;P9;FU:^VJ1EU=9M8J)4UGZ>#YI.2'IE*AQ+*93 MZX4Z<6)JJ7AUM\TAOYKFHO@L*D0`V`<8B'VM!UW:Y$5Z$I5:VM0!3LDE;K2) M;6+AG%GJI"VFR<=AZC?A1K6>ES269H];:5;ZM9`?=VG@UW]]0JA3829KJ:#B&Z4EV)@5MV^!Q9ZA;3I4F>;`G^XJ5IZ MF^JF>]-^))M>)'3@<(,1[J8\86Y:G%H.OZE%DIS6IL;I+A-J9F5X7]%D[2H&AA@HH60:M::GC9]\JBHRA6F9;DN)!R>1NJ5:YZ?I23]W:8* MR(GB%>HH5A>YU^N!:X7(@>,I93S@7/X"I`9%0NJU1F%I(L%=%B:<])"!G`1* MGW"!$A06=R[Q*P>]%WR,2,-J9@J[T&%CCA#&V\"E/`X$6C4 MB?BX:@=)BXH_D8`12H*&]6`G/4^K.I*XJO;:2.(^-BR*)"[R>5P=2=PZ">&%&Z(Y%Z8=%GN(JAIE*^JB4RNWQ=!Y>)RG!F9."'^ZBL MPFJ)%[O'HH1+<"0U4N6U;;"?KK:E/F_\ZIF7S_VK@%[`^K1@+;I6TSFW(#-^ MG+E&IQY6YIIR-Z@2:@LJF1J@DD[KB:X&H9)&"IX!YL8ZJ^6H3&1/#-V,'!C:H$FH7%O M?%^$ZI)^'N!JT&JA_JKCZNQAB11)-1"ZPLP4F.[8HG4J7:#5:L7#98E9I8G? MD7?8H(9*%5(*OJLM*O:4GJ)Z_I&MHYYF%*4($.JHF(Z5S47(<_*;3=Y7-H6YSV^FQYWA'4MH4:6""-,\466*Y+W@&CU)E7#%M0-MWU=CA-,5+V MD'=,"IZ70P6(G*&6M5M%4F+B9`>R47:PZ_3A\KVN7)1O9TZ M77K&L&)VSD?P>KY1/QY1]V:\QGVQZT7:BT5]P5$C5"(JA9E8`;2PV4\I"4XD M>3AJ)U$\I"D);B+.`C+#+57BAW?WKS6N*5S'A\(Y?"J<^,/*:DZB<.&1VWV`FG3=^M=[@=,(8>:62ZV:_OF_OFN\%1?EP.:Q[519Z. M])%^F$*^&Z6BPPJQI!ZI-H<8L4W>*62J^:4!79$:F#Y4Z1$O]%]J@)#5<0A. MG67D%,.*`D6F'!4,"[_5L._1%QO$9AZ6RIJ$?AE*-`(H=*[W)/\DQ92/F4 MR,9I.:$]%P,NKM9;^!]HUJ_<9W?7<06^.PT@KK/.T(E*8547P&)&A!GR.O5= MLW!?\(K-6K.9QPS+S7ZSVBS)UIC](HUE`P>+B:<28\2UOC5NFJO"=L"LKHE4 MM,>GDK$[[)RJ9MH>?)ROZ15`)$N',//8"#/&U?2YB.Q6(=^'R=>QK@5L+AO. M(J_'5TO3\=@?_Y4**]F@KG(D1)*P>G(+*T9[T3:Q&NV3FM&6:Q_MP@K)CK1- M+"0;47EJG:OS(:W>J;&)+V*;'(<_Y2+#H4`RWNS/@[T>*IW'30OG#&NX6N?A MS'4M/NVDZM,&'C!1`OJU%#ZMIS5GJ84A])'78K@NM:VI3UMYJ)I=RU3;U%JU M/NV!9TUY:M9>5MO5;GEH!R`EJ(2U36WP(=8&*T5+5KL:95'D7KZXY8FR@@I< M"X(^'W%BBN:3,'3PQV]`QXE_)(PUXJ0>>8HG!.FO;@6V*E`[V&(?K6D"FMC* M+B0=8PNNF2O/UI8WOWEJD^U8^_!9M@1;TY/9BGN>6EL"Z)T>G^UF2W$6+;W: M#`#0E;:G;967U?X\P)Z!%WA,KTK)K%8Y?4"%+6P7S;I;)D[)U+;@(;UK-)4A M(;0<$@WWV%U5`\\FZ\+I8W!=7:?<[C/%#&A&US&WRRT!9MSF8Z.>,?+8X7:* M5:W$]453O>O=M:44KDCAA.>WK;"IJPD(Q#(@O:OK"K31KNMM>SON)*];;?-I M1_%U@-I,>+;=MW2L';O!Y;V0FN.A;O^&;?3[3Z&W6I61I%7 M0JK,=!\/[">%."!^RRRL)"PALG&;QYH>81U17'I(A"24Z:`56"7QLQPL;\ MK^1M#\NA)%*`6N[:BSFX""VM]_/8KN4+;X?D.KB\ZQXUP]*%:NS%DD@),V(M MLSG04BI%KB)EIYVW5Y4NMXB8GJZ*M3>=6#$"BS.[BW!Z&27I8M[=B2V-AQ,3 M)+:DZ-Z1L6:L@:BEJN=6JFTJ(!-G.H7X#)!RFKU!&ZW.V8!P;X@N&[C%-""* M)-_'TLQ8H`>#F(M$8BV1CP?QY/GH91ZNB/.(63B?7DEGG]% MZ@ZV05:0%=]N?*EN*<=CA7*CG([E8[6ZHMRK2^MF0&FLRY,4;H1+(35+_TPZ MQ&OE4IEVL>QLL1O%PK#G+;A&[!Z[QNZRZ^P.N]#N8"M[K"0P;+7;[$:[K5S^ M6LK"+7+IFG>UV!V6"C[4PG`I5LIQ4][5<8@JUWSJQ@%YV).:! M>;T5%46P\3VPE2JKJQUQ^^`\VZ<25L9/ MBH.WHIG\3#&4\TVSU@R$Q*:04XR7+CMQ&KNQQ^9QP`PS2MU?N[F"O$%9F-+H M16H13,F;\G)%GLNN?3=4`K'_^#Q<1[]!XHEWR`K5P?#DAU,7RYFK]' M<4YR<`[:JEL.($)F[#;+45%L7IP(KO1Q,^Y1!>[I*L;,NZ=1IJ^3;(W'M7&" M@NW=@R/.-OW,/YG4Q8#CT_S*J/X\MU"LFAXA;"X6QT+__65]X3A9SG*$-`^6 M9&`^OB(.Y"OY1KZ4[X]I7`N*HE=K-;YFHK/1>Y;P.R^NF_OR_O^OKYO M\`O\#K_";^[[#G6^$((-!?IFE1N6[XG&VB"R7/_YE(0S^LA8PZ]Y:3^H<6E#`A`-"52HJJV_FPK[*ZH6'C8FXW%[Y2JH M)FO2CQIT^*_6I?]FO_RO)4*.GIJ.2OF!%G$M/28I(O%:NCI,9])0*53;ECX% M>3BP=1]W>[8T;8.(52M4@4BM)7+HM.`A$I#!"K726_'6P7I[H&$,"SOV-C67 M!]>(VHT(K0)7"\R%[9DBZ@K\+Z'`CM2Q:0(+8W/3%GDK*J,\RS8"CIRD?@C! MM85Y2H/<-"J?#"+(V@L)>;A$DY\&^J8LC&`4M,0226+!AT86DE[!QL>!0GSL MGUAPD]8%IZ1?,$S*ID0QQBA$^:W!(G$H_`L,Q26KWXM$8ETB$58\&KK'XJ2(ODD9]B%9'BQ9S2H(^WU9QPE5H`).\N>M!NJ4L[V1NZ+^ MMK])R5KE_DJ_5I+A88(R'KT0_6NK&%LN5MG$";--.U,H[`F#PJ.P*#RP:&>; MB0^#P`"3L^$P6=%)2A\G\=!1'7(.G*M\<#YP$078 MVURD7O#C`9*&P99+,:P,@\$,V>\4NVB91&67*E#]+6R,S;F*/,+O;ZB:JM'" MF\H)TLGFC(F'W&;@:7ONV!:R#]%>F!">I;8UJ.X8D)1X&'T)2YB$-@$GQE(. MO`HK*])RBJ_QV@2>RX>%C'L>1$[)1IQ1ZR:;,3V;T@,$E_$M/!H@@I31,@; M_O*?D)Z.\&9Y"1<>F7"R]0GO3&O5VF0*V\2E<$ZL-GW"J+#:"WS.E;=B+@BE M97`/&#R\G'RW2#&".VXU4]^*43PK/6#>K2&&R92_;TH&UD30=)5:Z2G^RP`$7"28$?V$%EQB6`HM0E8<<%;B,P""PWAH"?\#P%OU3D""` M)0J(4LO01!:3^D&O_"(",4"L&2^F1(U_\HRX>H)8!3-\R)KI2FELJ#BX(Z". M*W&YGD/+_(($'VO'&DD$G$&A=4@-,WH8EZZ>>25>T6V*VN)1_J`C`_%B*@G_ MP]!,<9QX&,=Z3."I0M4P3%(JDAN/8]+(3)Q\2L<[,2E<'=_$U#%.3#;%0CM!P%PW=TNVX>FS<[ M*AYP7KC+?WHAXI5"4K;.E=\)!18=!U9`9FE6/K5(:><5:BM9H61N\!&1/+VT MRZ(;?#ASDTM#G(_@+#`?SM)Z`6=^"Y6B=\`N6XIW!#2)GI03*#3!D",E9J][ MCK8OSBB'&`KE62=)KO;V*AY18*Z*R8%M/^W:%G@0G5U@N+@HUI/(V'T9O7Q) M)8IY_-"XGYPJOJH>\Q[M,>2!O\;'4+(#HC34QP_+S)0?[\?>4AZL\OUK7')> MQ6"Q47>;*HQUQL5ORG?RU#0BF6>K.7FD;:[F_!1Q$7W!ZVD*P!MS7'#S,SK#Q<.U_'$!3,`),#91$/,U-G_?I\J$ZXAUNSD;PU::#H.F)I@,.-]`4O4[&*#QZ3E_;* M)E?>V]B).S)C6S;WM"A8EE7R+.>0.B[!#-4L8B.@7=DYFLJE&-:NRMKPX7LLP#AH4,*?&!_.SW'_HN!\S22:ZAJYT2(L"R\`R9@I%J"S[ MBMY*"67)>3KOE;W,*Z.[WM*/Y?/$9O%-P\PPMV%%#J8RVDAR/\EF8\/H(8I) MND0LFC;;#7%"1`4VP[#G$=6$@^5'B%*!!C>4">3JK=2O&5)6614,HT<) MT7!,)2&!%!%RI[(E9B1AYV'5/%`FC@3D+7O+U3+54S#//<[R>-77-LX@A(:D;GK/AB4@RI;;\HVD*]_+-'-'DK>6<`RO6,BRG(53(<:7AD!! M/'.*J)7]NC,.C@9H%]"XC<#[+C%:>Z>+X9>9SB0./ MV(^U',S2G03/45+T5'T$:U%/]%1=`ZBV.@T M.DVN/($8`4%`:U'&W``EB]>(=>&-*2)Q)CS/JU$C>%CSP,Y)T!V"F*@L"4@X:9K&)[(=.\Q*]R*`R"O-2R-)\@FF;$KWC*6RC$), M#]/[\RZ=3/O2Y-DNW4S_,D6=RM8R3T5=JHM"U%33Q%3OZ4M:]0)LSQ-W81SI'+-LV$)S8W.BD.3Z66LU4?]3Q>)U*A9 MZ%C)`(K/!#($E-$SP!!7>LR"C:3:B@$&T,MRA3.6!-`<\Q)R0K?2^[..6U3? MC/N=+!/-&=5)]7B503?51_50+>7LSP;S3^TEV<]KH9%SX375.0YZ-$`'0S-. MWNQ4*]1==5AM5I?5:#59?2Y]U4"U06T%L8*)4:X(5]_0WG09W?4>9,7;6\,` M]A][]3F]/W8LU`]6,UCET\.5E,,=.QZ25WCCU2G6EH=0C9Q@X"M=?ZEGB.$)= M(PE.%CV3S\:X\[W$;S$C\;.+9Z,2SO3.0N(%31OTF;'JB;HE;'6*2YK34F& MU6-AD=-?FR-M:W]'FVEE0PV!#6:R+/6-4&+?6'Q5"PR(D<37;X=:,$;3U$/< M3!#,K3[?XD**/`:5BK#4?-THP@Y.QY+BS#TWSK),.,O51R$:9(R M+S@>-M@KXR@A6):,/5%V.J/T*6V8B*Y@"[#5F'55#E"_@P7E+_J.GR-.D].( M#]AL%B[9IC,"Q61/@&0AE_)DEX5--I7M9(N%NPD6QYWEBA$D>`WM4#<:R4XB M9J?.JL[E`0)9-V*7/CP"DH6-M*HS?:39;#8YE69'47"VFZUFH]F=LAQI59.% M0TJ6J;9-<)UA#PWEK#::C>.4T)#+5"/0J+-N%,Y3VVU8QD_#=(H\ M=%9=/(*W"L^R-HH#,3>!N'8[S4[[.$+.CV.1>)>^=J\M;(LT+<[_@9CX,K6V M/LS?K9)K=HKC;&M:BM@BA(;@.&G(B!WY`=-!#I)#;5_;I+*UO6U_VT%.5)/B MB-MQ79#S;%_.!F`XM>604'*B94-'PR:_[@N&:"L`01Y+S(X6?IY.HC-F%T&' M[XC-8Q=`YPW3[-.D(<1A7H;=X-8(MZ?=.5?,?`VA53AW*;:,Y3'5<"8Z&SPC M32MP1%LJXFKG`)[G;`<(]C.<<[78U332*R.T7>=,VXTT>#-M`X/OS7RS8-.MJQ^)DU\9U#V4SACOJX',C/>>%;)TAX\AT.WQW MEL)$&I'9(#`8]EXI=V9`",2=01PWNHMD\R2#%.KL>$_94G:5'7DC4$5AZCQY M6]F8]^4=>?_,:,_N06<3CG;@=M-5?=E_-J?\9;?3/1(;A>&X.U.C/@SMM-Y2 MTNN->L/>]K/J+7:J;+1W[CU[[]ZJ4.M=U`S7\LBR7%GIE!V(O!WX*=K?4UK# M5"O5XQ4'C=78/6VKDJT<3D5M(_6M;%??V/?U'0!EWU*2]=U]$X(^=$$#CL'4 M@=]C(UY&3T2-9Y(O=_O-?K_?VO?WC1;2V?&W^UU_P]_R]Z<3?GN$37?1 M%>2%?:>/<^-/@\H0+4]22MD?%5;)I`O*,J**=?.E*UT/W?@4I*IC8)_X"^X M"_YFG^`S^`F*/-;@,K@^G(,7-4U(/NG,HCU8=S+"@S^T?BVA/&1+($'`#,#7 M?MA##4/G*('>>9'H38/]VV#FZ0UL>\JG=^_->\O>6G@7#NT00KCW%AZ&>^%C M.!=NAK\XM?=4:&WCI,4U\0T@N>'\UQ&>>"_:8S5`8I'IV_[/8XGQDN""-],L MWG`WX0VHO*;PLH,X8$1P(V1YXR%>2!?B>6-WXX?SX:=5,K:'NW_CS1(MZ>S/ M1=O&/;JX>J.K@;5E@U>(H)@"PRE(8F0TE\X\%6:Z&)^Y,>*"J#D[:&QHAZADZN9Y!'*M@Y MRDNU>*.]WKC+B2^M;):5U">D/'3!'5$,NW8RX59F4V4S71@^.V1W! M']GU=A7)0&J#N7U$X]#::L>M7=HLYF$CL%-F5B0E5)B+>J*6>E0%4CNB#5.#6Q7:0E@U^K;XA76-W=@``B0`$G\>ATOF MB??@%R@;`8-&@P`3'#\CTX4D/"OH=3.#GBK'R[4@#HZ>%AXR&+E+#U4ETAMY8];#2\X0^Y>S4&'IQDS=WZ9;J-_I='HY-:C/Z1D0HJZG'^I3H)VNJ*OI>SJAGJCGZ47ZH\ZFG\['D5:& M'&GJQ8UB?C63Z)\Z8IZCU`#8AT"D6IQWG=-6S:";SPXZJ[ZJ'X\*NK8-J[_J M^B&5GA;2.T866H69^(5G22,#7SJ%C=6+G:NGL;:-K7[BC#9'$D*=F*A77/JR MWD:S(\XZL(Y;V6DIXJVMIS[K8MO'=UQ+L-[R@@XX1QX\.KG["K7;]LO#_48_ M:]+ZWMK/Q-'@(;H^K)?.V+K=LZVO+!2T[!P[V^LYCJA^KQO8IQVHCI',ZU0+ MP,ZR".Q0MK%NM1#L_[J_OJ__VBL+PKZPR^L*>[Z^K@?L$7N\?K!7[.EZFYZP MZ^L2NX%ML3?8R4CTG;%?[!S[QTZQ]T\>^\@.LI?L*GO`'JY#["S[NPZSX^MW MC\/>L?-'-ONL;CV#ZPKZD*.J[^RN.M"NLR.--(!YVL4(1#6`U`%<%U"`NFTM M1Z.!Q8W2K9FX9?9YJDK1A=RP<\@M3(?34-8^+J MI;7L'%*YK>4VV\ZIR\[^>MPNJI/H#N/;;K>SUFJ[J*[^Q,['I)'U7AO/YH\E MV/)4@OTY!K2VW][%#E#6GB-"NJ+43DL#)+T:RMO_5QW=[K;39GE[\Y[C M!82T&GF/@,`2W<'TQ[TE-C"M+)(?]3JD'NQM%6V-6TV4NU0KSY4B?ID MJ_EWN_J@ZW4;\"$*``HAP490>JX(H&+8_5T$K\"/[10\E&[!![H8O(E>P9M, M#3P'#RYZ\+BB[QX^B_"W]_08@'/,>!G MO:9_?*?>?/0@_M>,^5M.M3"`0GH+G]CHUD&[ARX_A^1>^H4DM7?JBQ!R!!LY M\<7YE,-\)^I6R7R$5UK4RKHV,^2\/(@Y%T_C>/%;?#O1 MAP0\%S\2\T]>\T11U?8=5-O-T,"ZSK09(MEK-(OC$$DP@9\H$I[I'=<+!6]D M8;(1S>-HR#?RI_RJ_PH;\J[\J`\+`]7OO*H/"U/ M3#GHN#SJ,1((1!2,!B.<-2M4.\U=2P7SQ+P$33X?\QV)@*W,OW;,O(7>S"/S M&7PHKT1#\Z)\-9^J6O/+O#.OS3-RV3PU?\U_\]W\CN3-[R;:_#C_S(OSZ'PT M#\XS2KZZ.5_.I_/8_#FOS@\_TSP\O\Z_\_.\/%_->]&557'MS_?S1R8-0&T5 M(&=4`(ZH3^Y#O:CUT0M\1_TH)6#7VK*=8[6VV\W" M]/;>M1OQ%_PC;S(M(2VW(Q]R(_$X.F+$MM/PLM4=\AV.,S MS'JFA<+GSXL[_UBY*_:>.X9.V#_CC_W=0Z.3TY,]-'ZC5X)>.69_V2O8E;UF M7_]X]HO](!/:K_2B%H\C+*/P4#1JOT2C]H:]29^"%(72>V(O\(7VAWM=GP15 MZ5MZIM_V8?J;R-K'];XZ\](/'QCKQ]%]BR+ M;"^G-_?2/9V.'O$XU;UK']WC\?7B/J=OQ3KNA_M4CZG%]>:]9 MKT9_0?:1N?\%)E!?&TT7U_V-;CFUJRDK&QIIJ^4ZQW0U,Z70Z$@.TUK9+RR5 M?3.KV!?X!>#5)4RWYZA@:Y\*9?<0_IR^U*OSNKWM/.%;\_9\AD_A1_/8O83O MX5OX'_[?;N%_\G"ZB&_BE_@HOISN>9/TY[U'G<4AW-2HW4S$PRRECBGKWFON MGY2`4D!9)U.)']0'KVP(CC*$)&TY([HL,W8BU0PBLBYZGU5#%C)&S_2P]+`. M+\.G[TACB'7'Q_$O?)=NUT?B",XFK[JIK;-Z':\O,^FBGLWH;5E!F2S)^G!' M:/WT>B6.V3B.52]S@L3E:JPV,\SIB?CEU.Z]?4HQ_#4]S8Q)9Z%9Y>YD^IS^I=_I MNZV>?J@/96/ZHK[T;>I;0:4^JK\?D?J@?JM_ZE_UKCZ7DC_#^J]^1D_KH_JQ M_JW?D;#ZM?[AT^LGV;C^J[_I-XMZ-?+>&:[UQOX/$\>@(FCT)S42'($OO>D4 MDD_$,3X`=.4C^2-4IW.&;#9;O3^#*IOP2S3]&/GYZ!I]CHN+3X'$:)SN"'WO MV&3WSBGC;^JYKU]:._`HGL&'O! MS[(;_)[Z6YVR&_PT^TZO'S'\*3O`+Z1'_!Q[G)FGGS,7_VR/]VC\A51V+T;: M^]$/ZGQ/@O5*%UB_:`G/:1R&'YKA\53N?72UT=HP($7GM;W5N"X?/'3W]JUT M$*]&F]DO_.>>7D?[\I%I&VC!"]A'#@50,O9ANLDCY@]$&#UXS3-3=%1]\DS1 M+<]-/;4,7B/7!_8`']AH_:O@SZ_UPSA9/:";T&_:7F,*Q/7WM53N6LCH@&8# M?!LVP!_5)_P([]_US!L]W3_P24`MLW>5]\O]C%)4']$W_8X*EI^.+-L4CTB^ MWLS/U`U??0F6)K=9(\R!S\&]T;-76[6*KL+/;3Z,GI.7.D6/BO,2R*?7.__!F-`S M[S]_Z=ZO>_TF?_:/_6__#;NLSEYO[`V[]A_^<_\*MMV?KX__Z/]F#>;4Z(18 M":5MGS.#KK^"Y<]JT':%.8''(RQ8XE[WT]$D?K(M7C-AFSP0GM9O(S$`1!ZE MRDISJ+(`8!/._$<`3``R``V``L`W7@/P`/@`5`#N_QR`6+__'P7PJK8!+`!: M`#6`$4`*8%OC9_?0.M[I(DB`^J1LQNJG`#$$@!?@.Y856*F+U\7-\`?=>&IX M@Q`C^SU6B-6D[V<`]&6H_49X9S\GA/T1+P?LL"'F?@/$.BT4^&]Z7I^XB!]7P4#W_'X>P'V7P)Y5PZ!'%%C=/6.0Y$X ME[0SYC4E!%^$5J.$R`/EI,X>B3M.X*^NUI:ZZVLU\ORQ M,5Y+!13_EGX+OV6^FH7`O=978"`PD!=(CC9C@M:QU$YZ7+WAU$5(;;7%)P7SJKTX'21D3JLOS^&"'&9[^?*P M1W(W^"HO!,$&OV&P@1H5O1^$X$'OZ@4X&0G6S&Y=2Z"=%F3.L^&0VNB8 M.`(J[A&XX)E'<>7/*=?@<\!:>XA]#ML&5R6DZ&;I:NI;GHX>%`UK]Y"^"4^=(@-UY3H;.SC##%F2*G*D'$!C=9]0G9#`/"X:@(,VHE_Z`4#^$FMJ5)R>-@ MM^H3@!I2#TZF)_CQ$MLL((2#\:;?H'*C76$#(,NX-FH4K050U:!(/O$_T/[@ M/+QGEI(<"5*"^K-!Z>XL);0\7#()2NA"90$4M&-)O;(H@Y25Q<]O0NC;(T%< M??XJ&HW#0\KO*1%+::LH5B,-4H[1"^&3_3A@=+8(JRP>]Q86QD\"<5IOF8>P>&M M'9A67`ID#Y<"LC6V>1.6::@HO(DN3N%JT('$::XAISGG'>P0,3*^6"M M._@?SI'ODWR0*E@GQ&.1;49]I)T]H8K'Q>,EI/',O:B$4T+^%JS+UI4EC!5* MR>8VY1'LC2.J/;$@M%_)NP@]UR[9B22%CO(@L:^\5Y:$#0(#5YT/,?-#(F20 M1Q`9TRYQQ1&+RY$=40MJ)QQ1W$+"(&]"4HB;V-?<2?(UI9LYV:X&C`'.*>FL M>;PC(Y^1#\GIS0,O+$=X:;X6_8KTR/Y!I5.NX1>21^8U=T%\S5?+7@-]R')E M>ZX.7`X.#`2,O$+>R=,*W5`6$D.'*N5]XO!P0+A1956'+T-:GR>>L M-K)>H*Y(5JH'GV/3X1F.K_Q=KP^;#JHB2_'TR`N2+XR&!<-855KB5<6381IV M>@1?I0>`%9"G(X&P`9%Q!">&C;[%H/M*4N+FP0&UJ_Y>'Y60(.EI50B`^=8X M]1B%2;+*Q00,%;C,D#R])[10O)>$T;*F'?&T>EGP<&,Z-!U*@RX[2QR]U^\F3H:K2%S`.4@82A7MR']#,JC2ZO%%YC:8>ULL-#5"'V M$%^([Y$6(KRK:W$,JR'*$*&&2$2CSFO+=++HH1\R#XD2QR0NT/`0CU$\I*S4 MVBQ>81OT#+*0.@BW80SM>BHF7\1YC[6&[]&Y^GLX'QXLV`J8(.8AC3A8`+`@ MMB(].)751<-'CKBET!W:=.8W/)7:`\U+>&BZT7EAMEPKWAU>C::'6R%(U-U0 M?+!5/!U$(AGB>4?>621&"M\.IZW+0^@BDM@K(MQE#;,H7!M>5MY*0*BI(`NR MS6Q`?RE*S7$#WV$#>&P4(9X<1S:Y"V-BM^+G0:U8#,U`@QYFESY#S:.62AI9D0IC^C9>C+++STH[@5DA;.1'-AM50^(##"Q-6"5^%8\)=H8JGBR,K9/$X MV#YZ_XW_02G1C?'D0'5PB6H;V"M?Q3Q,NY6+&3AY8.X5X$134_V+(B:K\'Y- MIW0/!Y)KT_\BUE3!&%;X:XP5YHJJ(&^DPK-K8@:='QXGZIM6B7DFH,-H,1+R M"&>$@!Q_E3!B5%/QL/KL+38#`CM1(,!D>!:M1:XFC#,G.D,X='`5N"VFC<)B3))O^4/] MP"14`+"2HL9L^:1\"L(L=_90=YWG@ARE8;$C0X=)%#D5>K-OE+*%2T(YL3AY M+(PVH0X3B%=G%//<^SBM#\L5F$4=F681=U%S43E-+F0DKB:7DUE+!J5W&$/M M'J9)NS+8P\T)T(&.ZS^QK+J*%*B((EC12;:[8$/\'5)0@N6#*L'S:*>1SJJ)AA@(?+U0UJO-BY&"_RH.H3HP_WWHJ+`.7IVEJ, MG]Y.`95*S(6"LW@<0T7)GJQCS195&[T#T=QQH18PLI1BNC0O&_P,$T M+.2)YHH8#?'I&906R[.TQSYAX`OTS`'&=D.^N,$\GT!4)1A`2JN"%=6[D.4D ME[)/]PO_F$+17!$42Q*-#<-/-P#C!>XB$J("D2_V'NH7[:<8(_MIQLBR8H/` MGVZ,*9C`6,&%Y6)_@A`T'R(IP":0$UEQ`O4>+`51('`^)$8"5'9B;*B[$3]M M,2HLZXL5U)/13T8@9(O!%MDNV)^OHAIQJ0XKQ3U+)MC9NH@8 M:R13.9G4BM@,(6?1P;$`P2!=#@PMA(YB@K%_*#`6VAX0JP4)A+D""A:@NBY^ M%[\0!XZ/U&9,%$/TR5$1GUJ%X4^_!:Y&$LG)I M:E10!3+.HHN,!>4J(4;LG_Q0+RBSUH7#>?&(<%Z0LW!0.B@F([>"#5**0##2 ME2X0!PLC1NNC9A&1J%D0+BZ-4T81APJD@L,>6X_Y&OT5[I=@H_S%M#CE:9"I MH`Y=`I4J4Q`HJ=BWB2Q&%)XR<``%`*G.?Y!I0M2T=T")BL)KHRCDZG6J"M>4 M!4DC\(H]V'%*?Z+BX$V!1/(]Y$:O4-U#(>058N203NH>VL:=&IB.F<%M]"_I M2.J-`HQRX[C1W)ANM'CPA.2-QKYWXZ]-VZA1R3:*NUY(@1%[X[;QYJ%P!#?> M>_J-E1-T([_1W,AN/.BL&].,2HX$U630B`$"(I1I!><_V"E!179*=U.H&"Q\ MNE`MC`I*%>WG,)('6HPD*7`8UJD)R-=J/95R-%UTD?(/DA.-E7\)8`(P(9+` M=Y(7+*MX$FHW`";FAH.CNT MJY81?@LFAU0C]2#0NU[\33@4V,4;U8Q*[$AVA.>,'<..:,<_X^)EDU2Q"3O, MU.87@XN66YF*6/7OFO;,'D9@Z`M]C+ZELW*^P-ZT&:LWF1QK5=)ID20[X4U5 MJ9R&NAK-1<4G7[6Z>1]R+8(5R+Y;'K4BYE%-@D;4.`I0-YV_(!9#,*C+,:SH M#>P-[S$,0J=0EN1,2F>TQZYC<@#M*';@T/I[W%%TL;6)CQ,'0 M#Q-CP1VKXG=K^E`(VU8=%65-JBL&A\)I_)!T)#I"=NJ/-0WHH],1RT&+:>^\ M=YX6@;`1W?T"P$%O@SMVD:Q.>BZ#R1.1F4&S2O!H5.HVZZJ,B*0'RS+E^4!$ M<$@HOHS/251#/JV/;(&CHV>E`,-Z3%7( M-.I>#R3K4$P`%@'"041Y26H4%:MFDY?E\X`8C)R4!4M!W,?*H_[HHB/#\C82 M<"B(=8^Z%_E!#$G#\&P4M00VARN(F>ZPZ+3W_YJ*X;V&AJB"HT9! M#;%=OQ".(&(P^G!+9/B4(^QCU@?8RC]#:P/_\8--$=D>DYGXF8"H#H$:6V@5 M>U`>("P%%L^#@=6XZ>QL9FI*"RR\8Q,KV/7>>GH<_CY>"*SSC202$SEA87`< M"2M8IL@-E@1+%4F*;$6F/XI7XXZV2);ON,'D@(Q8=<@9^0BCHA;BZK1\L%=4 MG\`5P@RI1C#R^I,C+$:^?,HU:\@S3R7+%7+$45]1LM!7_RU/SC_IG4.-##YZ M)/0U_ZHL1+4FWA5+7#XT)=:*$3%M4%UB\3$9)%>4B]0=U,&.RQJ'JW,*`6$Y MS78K1T)^RYP&TI/7H4?>0^`J=YV'!SX2L**]NT?Z(ULX_TCBBCV2*-+E*DCJ MJCH[8;'$C1D'^"!/VN4,)``<\\%RD1(I)"**+..4<82("41WUQ$+%8+$TCQ& M,9!8LL?,@SS+V:-ZHE2,C.:+E(I^%TE2;]338$E2*D:2T!+BJWPJW(L^#6DF)PE<,=%H=>!@/J:L#@CG7EC;8"M^ M?.2".K(;QUOGDO4,?$96)<=U!9O_P[40*DDXJI$Q):4/.L(TH0\+R[5!:57L MKN80=<6T@V$LPG8[,3`IW:PWY,A-'+XD"$?3B,F^)&!2,"F)[.*,"O&2D,G'I&22E8,\JD;D MDZ*)R0VJH,<-ZZ($XLAY)@&*:D8;RZIKM0*:)$WB6#Z3ITG)GB7DO\2:9'#, M*OZ0Y8=.S?P"Q!A=)'UT3"0;HX<>&AF0<;=;T4T!$7DWQBY`QL^KU_,@2H(E M4C@]=,1$RJ'02)4HO&_="OE!6YG!E?3A#`EX(`F(-F`7[!''SIL&Q"2Y(@K1 M$(E9<)_C%>WPC_,/*A4^L!`]42;&W1.OI/>"V4G.);$X/2Y=H7=2/DF3K$]B M$,6$=P_[)'WR/GE,S&_E;F97-*Q8XCHKBE7H<6&E1[98;A]@!C^O,8$3J$7V ML<)W=2\O"'9!>6 M**]6)TI#V]HB\B&#\(6&3F(=Z#7+&Y$/96MO`)F]>-\J28\KKMM#%"7K! M)L,]L$FC5Y#R[36DE!A::QJ2'IXZBHY"?0*;'$Z,)HB0P(W^T1_KJ?%T@$BJ M!<)3=[U13V*"4<.C`19*5C2ZPZ9;BGM)6#&B.6%R,X=4I0#\-G:K@87'E1 M/0"1#RE#9>R)TV4!J1L!"S&3`8[)3$;C;"@B(P_"?00:7Y'((>>F%&71"DNN MD5B`$@DV#AL'Y(8^0:BA3XP9I,I4Y8GB5`GR4%4:,T25E0[!S$,B+`D#.I*Q M;`Y9@LFD3SOR*5%A.2:!-"HV^D.SG'#PA(7,RF;5#@\WXBA-)"3R<),;;%:. M)Q+=]78X4_*))>!^TG5AK52/QF3A.CA#ZV4O:X$CN!NA).P^.,L MK-9(HD)-)+/RVJ.N/%"2)<-&5)^/ET4+]0B,P*/\W#9!1\FSY)LFOM:[`F34 M*U,KQJP_CN`08`FRL>P(+!-6'8C+CH0L6_@@ZQ7=$RV3YQX;GJ%-3ABI-!Y6 M9I*''(X`S:$B'P1]Y$\A:K+&89?#A!(EX,&!P4!I1]$-HR@!,IR6Z9&UR[-2?G$EN*Z^6ND*;9-426VFUS%:* MZX0K,(F)S4XRR(74&R<1@UJ3A15,(JY&;8EXZ$CV"1^3&<&D.GNA=,Z$;"7YC@^+?$'MT5$: M>+@5W!Z;SIYRD"A8&>B<<2R7>IL96=00:F&J`28NO6XBZ2L'V[A#=*EI&8]( MR9!GL+#[%78D=`*P,O:PS_`=9#11!BH12E(K@T5@DFP/N!Q?SP_%JV.XZ5VB M'H4HIJ1C!I$P]'AC:8.8K#Q>KIPN5K8PZX#;D%JT"V$6V9LKB7=0&!1&D'B1_9@=L6!5'&\:_'#(V);AA[AB@(JT*$P9=!(GP M**0U>!NL3F-M@4F^^.N<+!Z87!=@U;_%:C6%!#VH&)D7C0D?8[YC?_@)"6?D M&YH^#%.F#@WE'@CRLJ_0N13%U3TTC\6#$]`B1,'DL$YFMC8_,6E.:2%SL M669(JX7V@[/QV<'#"-"$3R0X^[CM(C+,%Q5H!"_:,9%AR[`OF';13+'.B#=! M'3Q/!JY;%1$H_A!A$DL(3^R*>;%$YNRBN;32"C4:??(6FX>[E_"1\"CN6MS1 MW>QS$R?0"9LG>-BZF&V(&4$GH),NR1XJAN9M"CLT1/`$9<>@8KE*9EK=59@[SA@G+;&4. M)69I%(JRR9A$'%;@:1S>;1@7D$.5S=;G0GAX@(>E2;)C9C'.S"[)J"%KW&"^ M&O.7.CAQ)G>QG(F2&6=*-"F:TTQI$KD"/^%YZCI):)APFL"=5=TE_H"M::6H M6'`X@9W84P5J-"'*)&2Q-.M7+LVMCFJBI0F?>&FNUV*:*O_X.DC"!E%03ERG,%)X( M-1.,'!$5'!M,?5.CC3;PQ9EK"G6+&MRCO!95DR>B")J9])!2UR\ MYO0S244UIN51&K$0^UU4,&V9E`@83P13@=G`9&#R-?^:[JCK%X^1QZAAI%6\ M2#1*OPMY!@[3GAFJ4KN)'9",/\O\)=Q!"='%,(.43$HFJI:)YD4SFH-\Z%#@ M:ZZ:6`ED8$,"_D`\82T$:&!C:YLW#[@KO*%">Z1Q,I1>>`#AZ':G%]P MR+`Y\9"D8@QSL:,;^TOQQA@6T:G/X6],`:;9M&CZ'FZ*R,VU"G+SP#-:%%;D M,Q=?H67`N./\._<&9SIHLZ\!YJEE4 M.(46^AP91O@!(K;AC&V"*R*)QAW/0RNQ0M$7T4V]'@1#I(CRICGRO!E.&HL5 M0L@K[,TBE;5&1@'?G-;0-]$/6XC[9HXS_Y#?%('-+=J(B$=GCY"35^/K\?6@ M%9=:F)R75GF3KC1VD%1,1BP,9XRI3(+.GS1!0V`HG5;"SA^ MI*QFCKE7"`R(T1(D=+#]@.I8#K:"UB4Q-B@"J0K16$B7[*-SA^@2Y5%Y&V;, M.;.9`QS194[P[79)5)Q]]Z8=V;L^)Z!3Q0&+('0*.@N=?$YDE:%S>SCHS'-V M"?N<=L[Q")Z370GI;%?&.^"<:T[<1ILSSOG@ZC#=0^`=,;\S9YRS5EDVTL`@ M[]YB+SZ86JZI!3A!H=LLY;IZXSUTG/L'7R M.D>=NTY@YZ\S:SB&\'4*.X^=Q,Y@9[(SS*E_V'@,B"HT80>&2;!'LI%&`YZE M0&1X(94$6U0#SO&\4U@P8VYDX\F(.-7"&/87=" MYM2=7`AWIZ&MF8,'VWG$:]R$]$Y@89>"*84'>X44P*(8_8Q_YRC#7M/OW-9H M;0:>9QX\V#9S:P,L['?V.[L289@$ZW?2 MFRR>SHI&GYU*7>+Q#&@P;RR>VAV1Y]5C]6BQZB5Z/&\0H0LO)9]B!";0P5*H M*X4ZST6+9S>#?82P.6UY/'>>*D^QDYN3EC/T9!^Q)W9DU*UX!_@A@3='>N+% M=52D5%Z=-#=64&:(/0$_^@ZV*_><8YS"3]8P^'%*P>)L M/+U5H2&TI]C&S'GV7""]5D*=8T]$YRML0\@#4E=V/4\XQ3].I]ZSSRGT_->- MA427?,_M8>`3\"GX7'@N.@^?B4[$9YAS\D!E.Y?\2?;!.=:N`%M` M`O=@&T.E1%%PL#6E@?$H,[4AB$ZIA7DR@J@EM/7U.X0KG!LD990%_4DZ;"=Q M"AF7\Q("3_Y3FD/SY']>/<:48PAA#6%+=K':U-U(<#QLBR9I!&'H;X._;*== MF<(06IT998N2')&S<5I%.J\J4,EY1S.R%L)#ZH!ZM%9(>9QM#LRPW4D?*5MX M:B"@*AD9AP>'=/2H:"@>]*HX7S6VFI7I@RA![""R/VF@[<],)0YT![HEA"%Y MHC(H_HHPA?.A[H74JDPD@BPW&+1"$@SGDW7/RJ@H1'NI>@8)],:"=4$^H))86:0D>A4\53*"=T%:IH487J<;!Z!KG&Q-9"8Y**T("- M*6Z-S&(KH)(:^PK8>H\&*VQPE/;B*\K3@ M)FJ/N`LUD!>2DLF%/#BB$W-G7[TEWK@OR7$7:A^!PQ91Z9*C"-[BXB$.+8=> M/"X5EPJ*!'2G@J.ZO(:"U>H.<`ZD1J^+KE6=J(=R,GY^'R=*7H(B\\+>`F=M MLQ9:`%$(V3]T()K-VF:YT9Q94`?-744C"'!ZJ.K<)((Y[(<17(UDH?(,*[!% M)YP9;)2B1;FGL`(B,WIQ1,,P5OIRIP[*"AT:^L;%I6RBBVI;OE=I!(^K/Z@Y: M#>E"=\)1#TK.)/H2+8O*1,VB9-&S:+:P+)D6;8OF6-2B;E'4BEK4)[KR(_70 MA>*B&Q2D:$3C0M<459:55"`ZF$/Z''VF;;'T'*+\=CY7Y4'IH)JSPECSNA9" MJ3PS?;=R1V042[&N2T])1KT=CM%MS;$D:R$=C`T*;C"5;Y_X%OH%/\//*'?1 M<88\55%ZV)\,UT$2X%&U1J43V$D]DYGG4PFGV1$6"6^CQ,O0C$W2-IH;_5U" MJ6HI>*"*W!ZK@0,"TO%UD!Z6I8KM!6/Q[P`ZP(>'D.'H<0)[,4%&G&QLXK'CD/A'4/BX;(]> M>KID&,<;4-BID9-VZ>W95Q(Y&\)6*"J4%;H)U8]R0O.C.!C8H(`T0$H@7?88 M2#&"A4M*C[5GZ2.`5%=H,?(=J8A;D4QTCG3N:Y:<"N^B;]&#I%UT0UH7[9#> M1#^D:%%P!X<41`H7S9":2.6B:5&Z*(F4`@+#PI!:0$I9W,$O)=QB*KDN6:B] MDHIOT4)ST.%I,A(PP!3@`#`%BSY0(LNBO\9,9+`U[/YKG"#>46OQ\F:GZZ]M M6%0<25)Y2G]M$G21,`\-'!-L\PLNT&Q#2]H%2J^M3-)K+J0JZ5"$QR&ZPOA( MPQB.&IC*"9?T8Z6<>AII5*)&8M(TZ8M,Z(&:$_,Y]#YT:2R&4]"U?D_@!=@ M)>B#EL&KF:=/:&?=J+Q=?1ET+IP(*Q40CDHY0+Q>&RE>+U6*?A(UW8%:G'T2GU-ZA7%$:VT#-1PNTG^ MS)A^@]).$!@(XY:74Y2*=4H)3;0I1^ M+=VD*:09B*DTA81.(7I\.IVEY-(01WUC02GJF?%%'H@40S^]0RS(/ABJ&^;9 M\0`;)J/:J/"2A80VNNA8Z(2E_E+*(<#T3\J.\).^C_JD@]*NR-T27`,GM88V M0&9MU="XT*GGT24A`EN1,RIZE\&OWJ6/>W5.V:XY;#`9=8_%Q,9[H\':IT?K>R``.A2X=M3KOS7OG/E)5K@A?@ MM"0;"\:D47EO/$)BFQ`11*0N'2:I$(&((36B`Y@R30>E8SM"AG/KI/;#J610 M34N/&AAN'UWH>[;V@Y9&\H)!$R)MJ;$4:A;CXX[DU1`H"AW*D02%\(;"8Y%. MQ])G6U)X<.0&,C4=*0J<#L9_Q M5WXH+(G)24^&4:.7`Q2]@1J'A"F(6Z*FD!&"9)U&I'@3EB^LJ8'I:30[#5*] M+/]>2M)^T4^C;77QBYGZ3FNF]CJ;J0L->$I@XY)B37V?DM/.&DB-99H[%0J] M3-&FIS,=WDWR9JHKI9FZZ8JG^%"!K( M`?(`NP(6`(4!!.`Q0`%D`5(`;(`EZE0@!>"&,J)6`=P`.H(4@-\!)H!V4@"T M45$`2H`P@&%@#I`"F*.>!%(`;P`4P$%!6Z!'E13T4:VH:8`U0`Y5BM3C0!\5FBI-5:0J._`4`H9'JA#@U-!-10W` M`>``>M1*4Q\U"%!.A2V('?X'F()'JA1@1F`&:*(B`:@,<(`4P`TUJ*!'+0KT M48\`30`B@"+5AP$3R)]L#-2I"($D*@I@"8!(;0FX4E\#;@`]:ONTCRI&?0UP M4TV;#=6E`PTUFSI"/18,43.I$P83*A/@6+`&Z*3R43.I]-1I*O`))B#!@$-D M%XP`;M0GZB+!E7I,+0,\4^.H;P"7ZCA5#H!,Y:*>`5($+504P!&`J!I$Y0GT M"EX#5%0Q*K$@!;!:(!\P'8HOCU1A*@H`J8I2I:).`=8`:H"@`HV@#:!'K2%\ M4O\#"8($P3LU#9`"4*8^4?<#;544`"[5#H!&E3KXQW0HC]1R`0VAF>I$1:3* M`32J+U440!)`"-`$2*I2`72I)E0E`&(5!7`%J`A`"7ZH*<9$@81G"O%()0(P M43.I'($IJ@KU"@!(%:3"4C.I3X-P:F"5G"I3#:$>/UH+(U6H`8P!8ZAH`!6`":*(&`;RH.=0@ZA@@#;`?H*2V M%D($7I;4JAM5K]I*S:2B`6*IOP&-*@H@)N`5H*:*'68";-07*AK@/T!%O0.X M4B\"L%03JG!*=:\. M5(FJ*M01@(15NNI>[:J:4&\'QU2FFT*B04E#%3%4!*8$0(&DZA1@N'H8.*.J M4%FH@=1"P_1@2B!1';%J"U0$/=5EZA15B:I5+0,T5U$`:(""`OMTPJ``4*$. M`0X#%]4`JX\UAWI#10FD5Y\&'];6*@K@F*I:F"Q483JL08!4`Y4!R%I@;:(Z M`=X`NE0VA`+`B(H6D0*T`)Z+>P&F@R[54*!5&`M(4#4+@`$'@07U08`I8._A M#/BH0=2E`1P@P9`"J*F)4&,`BM0,ZOLNM=H&0`$('5(`-:>I!%5C,I%M0_D M4#VH_046*X"H5I&)JJ'N5E&H'B@CJGPAO3IHI:2J4*\,;X&`J@FU,B!1;0)` M`9(`L53NJ@N5B:I"11$\$6RL98*XJB^5#!!B^*&Z4%>M-]16ZUE`EUI(10$4 M`0ZLKM3G:JH5!8!L%;1>49NHM%8E*H8UE@IK+110476M(0::08+@#&`9F*). M6BLTV54FJ@GUSQ!>10$X6)>L)U5-*D\5R.I"A0%04?&K350W`(@@RUI$%:S^ M4#D81M1MJPDU,@!H10&H`2X"48'W:BS5EWIL90H`!:8"W%0E:JL@PN`3^+"F M""BI%];MJJLUQ#!J8`HD52\"1H0.0A/U(!!IS;,>Z$2J>0`40$%AB.I3G0AP M`4@1P%8JJL!5T/H&*`Q@4D,,<(&*:[#5A?HRP*W63R<""]=^J@MUYEIM5;9B M7#6IV]4;ZW/5A"YH%;(`)@U@`!5`<2#"T`50'FE5WJ\)5A;IM/;9!O=:7V M4)\&%=>(JR#UJ+H2N!TP6)VN!`(R0)85=6%$?0(D!8"LJ`<1ZK95A5ITO:*> M!5JHX5:@Z[F5PMEA-1O,!=BKSE1:Z]#5R%ID99_F7:FH4X4XZM,`T!!++:_R M7"4($89CJL25DJI!6*+*7%VIX]6MZAY@X4I4U;:B`28"KX*>@`\U09`B"+$J M4:\,M0-FZP$JI)I=1;&J5PFI@(&`*]W5A6I5Z*X&%$"OJ($K@R35U;I,3:I. M7"T-*P(6JPL5J:I"-1XH7>^MT%ZZ\`UYC!$5:&Z M`8P%]X&/ZJ5IRUD22+G&7B^K*(`)PV[5E^I?G0C\"OH$(E=M:P[5I\H=T!'4 M#IH%*8#=:N/5F$I)S;Q24C>OL50(PY%UN&H&D+H*49L':0"BJG\519!>!;E6 M!HJKV%9CZP7VF,IX10VP6J^M)E3@J^#5Y'I53:?*58T'#]<)PP]CR^IZ]:DN M8(^N)->!Z@-6Y=I<:*(>#5RI2M9CZH4UAVI"_2K`7M.O0E@_:Q)`H>I"_:$J M`#*I/=0&ZY%5#D!]Y;_R496I(58/*C?U2&`$4,":8).MCM<=+*TUXYJ$5<'J M44>M3(>M18?UW6IC#0/L$Y*J*`*;*Q06D9I]1:J:4%,$45>9:QC@L[IDI;Y& M&`ZLQU07*NW@=A!^%:B.7\.P(5CK:Q.UD4!70!R(8"T#SP,I;)%5#O!\+;*F M5\D`M509:YXUSW'&2+D&5!^L1P./`"&5\*I)E:V"7U6HOP+OJ@NU)W!64+"V M7ZFM7UAK*P,VRPI`,*)>61$*K`+]`-HUPPJ',*+^"N"OCU>?JJ6!#ZMZ'<'& M4F$#%-?AZA!5F6II(!:(7%6HOE2?ZL,U!4!ZN#3I.?@"GEBT@D^@(_!A!:/. M46^PC]=9ZP^5#'MO?:=B7RVN(E@4P80`$UM"#3%@6/VO3H6"JM9UH*J(Q:Q^ M5VL'P0+IJHN@B?J.#<3*6T&K0%<5JKH5!6`8P`]L8L,.^9,.JT4@KBJ!':A2 M8"<,5^CH1B,$F44,,$X$XP-!@(K""/7Y8 M'9P.#]43:@HA*@!B?2),&`*ITM5MJT_5JC`=*`.\7"$0Y=:DZ@TVA1IB,+_^ M7).P/X%Q[#QVR9I41<:Z#:("[%43:H4U_\J/5;^B`.8`>0!B`94A$6M[/::B M87$6-M4NZKC5#>!#O:CR5?FOL%@BJRR60+"#7)K-#U`LM=-:$V#]@`HE@(;.:U#;!JM<>Z5JNRB]B:*X-U#JMS%;4Z M1&(">U9/[!2V(BL9.*/>846PO%840&D@""N"C0PH754'_%8:+!(@AYI)]:[> M*92OW%4E:F1@K0I&G;7B8%,$2=@Q+-65-8`XV,).9(^N;X'$`#X6"=N.?#KBKN]56+._@JJ`@0,?J9-VI'=@=`QL@G/J4K0R< M49FN[=<0@ZY5B"J6'<`29.VNW]=5;!G@$[MD#2>X8B6J2%5GZK:UX4I7\`E, M"#RN+E2T+!E@O!IY+0/H4B>MB(JL+!6`[NI,+0XD"58"6#J!+]5O08.>SO%@1JAD`+C`T+&5GGJO45Z&J#1M;`B&:LJ50LM7+0Z$6,6KIEBNJ\;5O#J;OQZA[`"-N9%<&^ M!I2NB%21;#CVB'H1:***:46N:(`0@PKV!1!+.!9$8&D%YUR<=AD['Y@BJI,E;[" M`9ZKSE2?K/UT!WM4[<`:8JFNE=KW73X5QUH&X!/\!VP$8P!*JC(5*8!1C:6. M78,*,U:5*T7@B(`2L!%$!KBI*E0LPX0@,4!%W0*D`**-1@`EZ@_@7,M'W:UV M`;*LO=AGZK\U7KMXW:J^8Y.J1X.X@#ZVGTJ&!;J:9A.L.505ZOV5&FMAY=,^ M:3$%H@=#F6^6[HJ5$*$V7X>P3=2&[)+U(1M7EO4U43ZC"6IYJ'C<@&9@$-%89:`8P57DN#?0)` M5A&V4H?L*I3`,$!(Q10845NTSE7505EV2XNE?2(D5:<"/`%^;,#VOWHOL+%> M49D"/%87ZH`UR.J*9;&*8VFS*E1::X'U:3!@M0P@6)6HGH8C;"85O*I+5:(> M!=BV4%J]@(,@Y5IU;P0-KOZ[KU+#"NI:*:`5`#?U?);'7V$KN))3UA M'SJL-]CZP,+A!MNG]:G^:]6X[9WV)[N##->F`/8"B8(J)>HBY8IG);/J%R*H9H&,0$Z`\,0<(!U, M6A.M)0$.ZFY5!O"_?3HP!_BH+M0A`!(@"&`5*`*04`&NT]4:K=O6STI"S:0^ M`<(24X`I0-OV1HL5>`(P`9X`1P!^@0IWTKJEJ:%>6ET`%%Q-*PK`"H"R1<`: MR@ZM+0"^P*)5A[I5S=1*6@^S4MIVK;_UEZIX=+5)5B2JL)=(B:/FUKE<3*JG@X_JE9QSU43*D5`=VNOO2_P6T6HME9NDU0LZJM@JN!%%;GZ5-FP\=8X+;VU^EJPG2ID8">T95Q-;I+6"3MIS9]L M;EVOO]=&`1R`%BM"Q=$"73>UKUF`+14U)#N2M=UZ9=.WI]JMZH&V.QN`K<$* M6J.MD@'+@-[5*+N-E0J\9%$`-5I%*YL6'KNB'<728".S_]FK:R\7C-K,U3IU M6#L-:P`1`/NV*2N1IUW=EOKC'6DWL1P#)(:N,"Y=Q&[EB6D'M$!=Z:7"48V=7R`#IW+@"H)N%`'2JW_U=E`1>-EF:+&XF%S#;3;7_4H:F`H, M!]BK3%>A;+TV0)NRY:9N7EFVE-IJ+$@@?C>E5=!V5K.L@-P3*B4506=$'<@. M6`D$>EH8:R96C2N0K1'47#^LK=34;=663.N.K M5WNYY-9%K5-6F0NQ';4F[5RPD%B+:B85=`LS.`,48L^X4`(J+)H6!*`*Z[#Z M<5.P$-U4;HCAH*NN0*0&6Y6H.UH50;!5A1K+9=?.!%`7C5T/5$Y@1X"@NP,H M5:4`'%PD0!/UC1NR?0T<F*[6U53"%3:KF8/NP^=8>K#AV#$`C*`Z8 M7*^QE5<%ZX3!IQJGC<2^`=RQ5MNM:AEW/$MSE<.6Z5%>>;:RE34M@=<=242FYRU8BJ@CUSXK8U=2.<-^T353GP;UVTHI&2\D& M=D.U0]F+`"5UH]E+A;#R8&FTA=:<@!&U"(`'<-*^6,^HOP$1*BHW`BM!0!AX M7"^L-M9H:YZV5B"&%W-]1#+D%VK7L&T*6N'D2H!H&>0)G`(PN3!:&> M=_FJ&X6U[.AVN&K%';7Z!9:U$EL;JW87`@'=):36=&.O;X$BPAH7?9NS)=)F M=W&\O5ME:B+7'>N4?=A29\NOK`$J:J%`NAK)G8UV[BUVI%`"AAFI"?3#P M4'NY*0(=0`J5CZI"-=LV>L.\6=J5%0];FWV>6O8=:8B M>LL$\%-WF+BDWY_H3`.4>9C=.OED6ZY[5B%K<%>P* M43L(>M3=JGVA35M>5>1*9)L+]P4JZFUW3[MRU:7^2&^T=%=\APB5UQNVHUU+4[^ABLK!9=?V M!P]TZ5Z00FF7L>I*/0*@=J$`2``]:AN1V/M=S?.287^H2E12;RV7IPIW%L&]2U?L[HZ!;2O&1=3Z M>O$4V%@A*OIUMUI>!=,F5=^[!-OXKGVW&3M$Y<+Z5.<"--_]K0I5EZI,-=OV M>9VRV]66@)!UB2H&>!D<6&.\%]M9;8@AJ$";1>3R:#>[5=1;*[NVW2M@&#OP M!?2]F`+3KK\WM=M=+?B*>=&P_X.4+!M7<%MS3;UV91>W4U1GJATWJ;KN!0EL M.?T'3D)];P##M,M9S:1N?0&^`UUR+!=7DAIC'=AV5?NLD5[[96I5IOM#]<(Z M9SL"@]2I*Q-UCNKMW>(:;`FZTEZ;;&47XHOP5>Y&8'&KG=PPKF0VLEN;[>+" M:;V^^=6AK#_6>(#C?;%Z9<^MJ-24*Q(5CVNW5?R:8S^T@(8LJYH5!;"9/?5B M=$.KA%1>JHM7SZO&+=AZ:*&[<]MC:H]U\]LJ2.4^91&U/UELZPXV0IM210%, M!"R^^@$)[7V5F7ING7HZ4HVQ/M7.+<+`=/N490WH$P*JT-A^JK-7HJKJ%=B" M?I.J;-S=+E=UX7O<)>>V=GVWX=R9:_-UUXJZ=?[*"/@$C83 M>A<.N5FB:GKV>?`TF`X8@`$-+=D$[.:W=D!)G:/V:0.UU-F5`!^WFML\L.). M6SV_U%?T+D>7+SL5\*A:8"F[.-FDK-:UJ^K0-<:>6Q>I*5<%:Q1VL%O;]=)* M>V_`O%?2Z^EVBCK^-:%J@4FY#M:E+Q66C+O:9>@B8@^W+M15KJ>6YMJ!)[>OXM\=L*K6^LI,W;RN M!'*M&5I!K13W`MS\)>LN66D&V@*DK7QA%\M@CB.[JUH$,+;7[IH"/K=*RFZVL-JL[G36/IN!#0/L8A>U0ENJ:P[5:[OH)?+> M6UFO#UT>L$05W\IU1;ANI3;?L**)RL_ES1+@B`M"M@,.W. MU$BH@=02`SM8*#OVQ?5F7G2?Q.LL]>L<-,!``P&S@';9=^KH]KC`9E7MDO6+;;: M@'>O.6`!['2!]0KRI:)2<`FT;F`T[K&UMHL6K@,;A?'`DUT]<*+W/8NP94-D M5^>SK.!.ZE/V0CM<];T^90L%`^&YKJT6QPH9/M8R;B7#]%B>*_)W6#L5ENOF M6_VV7E3`[577R\L70&X$,%*N0@!C0NB7^VJ,'0T?:2F_1U`^/NKY0*D`&BOD%?[[W#@8WN>U02'ABVYIN$/[&O@Z+HB'M06 M:N<`+N(:+5L@F`K?/1;H4R-=L^1LJU,B"2U0/_ M4FFPB5SL+GLXP6HBY@(_6$VU95PJ;<8UYI"$71&G8EW$AUU'+EFVNVJ*%<1R MV;-S,[:&BPZK2=:Y^;(,%BUWC;3J5CUKI_0]< M>L/`FEY/J@J5TSK^=:%:!60`5H':+"OV4#P-?L769>^[5-0)`VAUB*J=':X6 M!T*_#EIYJP>X+;LFQL("77\'XF`R`)8A\/K*)1)S5^&S[]N4JSJVB"#PE>?N MAF$#DM34*W.6C:M$/0A8!GBR_>'F;\Y53_MM+0X4;C'$;]F/JWUW[4N&/>:N M6R4#:X`&;^DU1MQMG>8R<8G$&59YKD*X\\H0IA/'!3H-AET#+@2U!$`62.!J M#'P^`8T&[@454P#!?;,:`5RHKH6O0)TUJUL$:`+@2(@`1(`%\1&@;2M"71!3 M43N[8P=%*P=BMSH#..G:5#^^<%UNZF=6](L7YAW,6=FKQ6#GZWX@0AOYI?)J M7T,,"6.^*J]8B+J'Y:D*956SCV*K`&M8Y8!:M>&&<`O&.MPB`(,UB.I>]:`& M"Z@&U%B#L!%5-=O9[>>R496X?MQ8[6T8O3J)K?D^?E6HW&';\+8803L"/LNV M?-^\+M3TKT2XQIO4#;)*7UV[B5AR;/KV/F`8N-Z"5W.S8-Q8[F*5TTK#-5<@ M;[6Q/UNFP)%X]KO4[>&J;+?%1=QN<168+/S3);G>?'NP3>/%K1S@_PJG-<6J MAR7"FET?K40U2RS2);_2<(\0*==JL41U)4P_%>KB6[&TA-@Q<0?X\4OV_;7V M:.W$0.`X[*Z7#HN.K=&28OVX/UQ!*TGA_6M"I07G=;W`Y%B_[O?1$WLCYA<' M7#FO:6.K;OIV(GQQ3=(>7:D(4F#JL,`UQ-`U>"*4>&D'T%MQ:P\U/WMQU?1" M(#8&I[K4JC/U)GL#V*5>QT=;JK!7W,$P%EA!? M6YO&NU9NJS07_DM450!,?Q6N'N(/L'&6+5RO11LG:-^YLM^#\#7W1A/6JKQ> M\`26N*IW5>8*;-_$O.%&+1"6X1LQ]J^6A($"+(&U<&JGI=X&%02Z<5G5;.XV\SN-!0WOA]&XA]N[\<@WPWJC<3H\ M[.D-O`CU:J,;-U9D%I3;S>5"W(80?C,?*`?^OI_;;R M9>O`4%2O+"J6?HI^!1T+B"G$35^VK`(`L=M$K1:G@O\"!V$0Z@+8/D`_/?N* M;$7!+M2@L<+X1C.!6-::CXO&.-;RJEV78\SGS;A>B@>LC80YZS+WHKJW/;"J M8YVP!5;+<1A99HPW3O0R:;$,K5V(\>[7]NI`OM$L))ZY3=K:+E?W'YR$7;E. M:-T`7=OF;N@U#7`+%L2:8AO%UF-"JSI8FIL")L,V?V^_=MJ.L6M5(+L12`'T M67N_'&,'L"CX@5RK\.R/M7=\,S5(6S9_?;6>@_!J-[:;:4!_QJ5!18? MCJFN>8#WZ]6UE:I$G0AP>_'!SMKKK@Z9AQIL?2`?Z"08"ED#L)$W^;K#-1MS M4\D5(M0"K7>X@/PMH*+>90.J36.7KQ@7.)S=Y0CL@Q4`^UG[<"B96$M*;J*N MD(6TUF2U@"IU]ZO6%>Z67E^_P%]JK#+U:,`9-LLRC'O%J-E[JW77L#LJYB)S M='/$=V!_[*@A%?R^H\$:7_D$[UA&K\!WQ4L5=,%N6Z>MO&2(<#PYENIK->K: M".S$4]B<; M;8G)/-7";I95>7Q"]!NA&$"?`&/,%P8A1H2+@), M??TB3`3*,@A`W]L1/NVZ4I\`58`M:O57]("\I1'\=".SJ=C:[!N9JSP;GA\C M=)G)0U[2K&$WE\PZCOW66>6YG%8\A]GU\)MZK=AN:0FPU%?2;Y8SQ^N51>0V M;U>S"%U$*C_W,(L74\BBCA.TY62!;/WW#1N1]2M#9@'*Z-A4L$DVSY$53+FB M4-VO76+1+]+6EWJ6I0$?$:8"0=BGX>#7S&5@7Y\/&#-U)4[J/W"%=X8\5GXB"I)11@05V7`(-\:[0*X@;S5C=?" ME[FV@V,U[B\7-RN([;M6:Q.WS%Q"<"GB&AP4AB+;@@>IXE[RJL*5`%OYM;I6 M8<&X,]>PLB9U#_!B;O\R?9V^;67?,AAYT\H$]N866,/+(-2L;JUWYAKTQ1TT MF9>L\M=("U9UOJPW-C#_ET.^=EQ>;D'9*:MD5L4F?>/+O%^%ZX:X)2P.IJN^ MDEVQJ(2W0`,V>BM17=M*9*&R4MDV0';83OLT$#1CC0^RV-4.JV$@RGO'U<1Z M%[RO9P+L=L#2TE-G`XME%+I_6=@Q[?<9> MD=.W5&1%K7@5?[QT;<^.7"6_46`A+S4889LK*RK?:T&X2M=608(!+9#[90L@ M-^JO(5PQ,I+WWSK[A0T\:Y.[B>7ML0IU1>R>+?*B:/VQ00`FP#05"%PM1A/[ M5,VW&62B+"-7&ULF4"3C5U\`X5P_07J9#YC=$2@&G7,G`'8,X* MCMF];`P#\=$YYNR&,NT28]^YS%FC,E&5Z$RJ:PY/G?6]J`NK,T\U#X`FYL(J M>TVQ&^?50F\VP^LO_KWBG*.-^1,#L=J9Z@R'\#F+>5G+2^3=*@YYA(MS1@2+ M;M^TW]G"LC1WHUSCXT$-BN>WJ.420Z_V[:QT".`:GNG.\UZFLQ)9B;MWIL'V MG2V_1-T[0":9<+RKC=@>#P3'5N1[,H#9&/L??B*$=$VP6V2.;>(V"0Q"7?'V M![.KB^83,>Y77&QF-1". M<%T+==81[EOXM(S"5>$R'5BX4``7+@Q7ACN*A4/4<-G.3@#R[_884;`G_OF4 MG$F[8>=7ZMA9C+QE5>+JEU\#9@&B*@C7SBQ(K15(5/<)9.#'K]1XMEN>+1,@ M>ZO/&XR#\?RV[:Q>-2*P:U=8*OL9*.!^GKK" MG\?"+>#5K-6U,M#2K=>R6P?->EV)K.09LAMKI:*NB`D$Q]2G0ZDC[+"L9<.V MF5W$A&>5P_`UY>I0+9V[2N-;?V&&)2Y1&;M