Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!decwrl!fernwood!portal!gupta!few From: few@gupta.portal.com (Frank Whaley) Newsgroups: comp.os.msdos.programmer Subject: File globbing source for MS-DOS and OS/2 Keywords: glob MS-DOS OS/2 Message-ID: <1991Feb1.165221.11476@gupta.portal.com> Date: 1 Feb 91 16:52:21 GMT Organization: Gupta Technologies Inc Lines: 350 The attached compress'ed and uuencode'd text contains the C source to _setargv() and _setenvp(), code that replaces the standard routines provided by TurboC 2.0 and MSC 5.1 as part of their runtime startup. The new versions provide file globbing for MS-DOS 3.x/4.x and OS/2 1.2, along with support for several methods of passing long command lines to MS-DOS programs (including MKS and 4DOS methods). This code is Public Domain. I'm posting only to this narrow newsgroup first for two reasons: I'd like to get any bug reports quickly before it spreads very far, and I'd like to reduce clutter by only putting this code in places where it will be useful. I've attached the header from setargv.c in plain text, so you can get an idea of what this code does before unpacking it. Frank Whaley Software Engineer Gupta Technologies few@gupta.com /* * setargv.c - parse arguments * * This code evolved out of a requirement for expansion of wild-card * arguments given on the command line. None of the (currently) * available wild-card matchers did the job for me. * * This version both expands wild-card arguments by globbing and * converts them to lower case (a cosmetic thing for me). Arguments * that are quoted (with either " or ') are left alone, but the quote * characters are stripped. * #ifdef UNIXBS * Any single character may be escaped with a backslash (\). * #else * Quote characters may be escaped with a backslash (\). * #endif * * "@name" processing is also handled by this package. In order to * overcome the 126 byte command line limitation of MS-DOS, several * tool makers have agreed to pass lengthy command lines either in * an environment variable or a temporary file. This mechanism comes * to play only if the first non-blank character of a command line * is '@'. First the environment is searched for a tag matching * "name", otherwise "name" is assumed to be the name of a temporary * file containing the command line. * * MKS-style extended arguments which are passed in the environment * are also interpreted. If MKS-style arguments are selected, this * module also provides setenvp() which ensures that these arguments * are stripped from the environment. * * Finally (I think), 4DOS stores command lines in the environment * variable CMDLINE. * * Even though OS/2 allows lengthy command lines, the three methods * of passing long command lines are included in the OS/2 version, * for use in "compatibility mode" programs. * * In all cases the "correct" command line is retrieved before any * filename expansion is performed. This allows all calling programs * (shells, make, etc.) to pass a simple version of the command line. * * Three versions are provided, based on four flags: * __TURBOC__ Turbo-C 2.0 * __MSC__ Microsoft C 5.1 * __MSDOS__ MS-DOS 3.x/4.x * __OS2__ OS/2 1.2 * * Seven additional conditional-compilation flags are provided: * ATARGS: Handle extended arguments passed by the * "@name" protocol. * CMDLINE: Handle 4DOS-style arguments passed in the * "CMDLINE" environment variable. * FIXARG0: Convert argv[0] to lower case and switch * all backslashes to slashes (cosmetic). * GLOB: Use filename globbing instead of standard * MS-DOS wild-card matching. * MKSARGS: Look for MKS-style extended arguments * passed in the environment. * SORTARGS: Use qsort() to sort the expansions of * each argument. * UNIXBS Treat backslashes in the Unix fashion (as * a single-character escape) rather than as * directory separator characters. * * A test program is provided at the end of this file, and is built * if 'TEST' is defined. A few possibilities: * tcc -DTEST -DFIXARG0 -DGLOB -DSORTARGS setargv.c * cl -D__MSC__ -D__MSDOS__ -DTEST -DMKSARGS setargv.c -link /NOE/ST:8192 * cl -D__MSC__ -D__OS2__ -G2 -DTEST -DGLOB -DSORTARGS setargv.c \ * -link /NOE/ST:8192 * * Note that this code requires just under 6K of stack space (along with * a substantial amount of allocated memory), which exceeds the default * of 4K built in to most runtime code. * * Further enhancements greatly appreciated. * * This code placed in the public domain on 01-Feb-91 by * the original author, Frank Whaley (few@gupta.com). */ begin 644 setargv.c.Z M'YV0+U0H *$BP9PR=,+(.6/'Q1@0+4# 47@0A,(S==J4<4-GSD"!!!-009-F M#H@Q;\B4 5'&SALV=LJ0 ?&F#AV:9BR"D%,F3ITT/#5R!&'FC1R6>":ZF9/F MC1N<(.ZD84.FQ1B%9#XFN)AQ8T<09]+$?.H4!!TT*U&V:1/&S4PV:=R4<0$" MA!.G*]_D/+L2Q9@ZM(TN"B)FYZ5,Q;\XB54K&).2J5^7,Y"KTJY@\8-F$%A/W MC$6W6E&Z8?V5;QNS;T (OU/FZ-6**,*4A0&<&"N5,<=5)&D614_3&IG9-C0"DEE?A=>6)((VRTF1FGA20" M$&Z$H1& <,CQQAA&XFB<:F%L&1V&;CDVTV\1JC91G&&<,5==29"E6W70:?4& M:VJMY%D,,MC@8!X5;K=66V_%M1)<;?07GVM0-3%%"T0\,46#!['6J%9TO/%2 MD&N0"0*&,5ET!D_W%2O1E"8YEN-9P*G%EEO2R6H2?_Z!$-=A3VUD!U!.];:: M0FDPMB-IVE78!AQ&*02<&5-M"D)J999Q65LE/5>J>P5)"X>4P#E%F+A[28AO M9C>YX50+C;6U1I@^CGF47CII"VNW$4"!&&&1RZ'KAKJJ':30 M9?<5=52\F09I&4DY:B5"H(,V&!MF4E7TLZ!E ,CH''-TU5ET1*X, M!YY11O M&?/6*T<>6N&[HW()Q36>9QYS"Y=<=X)44!-+[ IB'CN6@4>%;MW'FU>VD729 MA],R?5]<4IOK.AT=7Z*B<&0G"073; 0<*!-ZA-Y,;-[NJVLY<(VR0DPXRD[(4!3!$D=(9YJ #K23@"U^@0A6D((0G M# &5(@$,;%HP!!#(P 4P,"4J=?7*+R0@ 4T CZ$0ER 0U+(&+HB!+K^@*^W! M4E>\\A4(9N "/+R !M565=ZVN,:01J!!@9] @P4.@0G,*< C%D"S#H M G2D(T!072>+,YF#?BZ3T:U ST%/BM*4T(*[Z(C5CB;Q"W>\ QXL"?0(3'B" M$!2:@"I4Q&L;05IPAC.>N("H#.F$"HA@A96N0E-[;(I,;F92F1<.CF'TFV$3F6/[VZ:@(K^[2GE.]?YEF?**3Q!"@4]*&7M M2A_$R8$.L)NJ;74G(;DI!8PFT4M7 ;NWWD'613"2T2^IP)/X@#5.9R6K!Z56 M!3>D 0]$&2NNLO.Y7VYE=<5QC%5Z]"-0&0E)92"0C\(%'W1V]Y>;86+W;E2& MB:R7-/_*&(> 2,Z!FL5(-XFCCYYC*4-ATFZ\95DG&Z8:O#;H8ZIYT%3H(+*< MG( *19@"%4X@+LT@2%9FK$L0B%*&.TB$.TRQ83R-%-""C>$AO,*PAB%"A*)B MX:@PH#%X(0G%.$%&M8!#F*0@W&&!(1,9J:249GF;;*Y!4?X7XPS+&5>[5@( M/7YM;!$:Y(0LA,@@X ((NNK=NM2E!5H& 9>]#&8JB)G,9E9; N[2JMQ5RB0H M4O(3[ZGAA3>I0]V.8H,E"#8A<5K=I?K2**<89TF'65T=Q#!8CK2KB(*J MR5 XQL9#Q><^&@G=UJX7E=DA!5$RP9V$6!2&T5$X)!RC@:DES(:;D"\ZH5.9 M'$3]'8UL1R6/- )@PK412"%JHF!I+AT6IB;&C:%=%3)C?]&8Z7Y*"5$D1*V$ MX#!KN#R$#(M4#%F> H,8M, (91!#"W(0@U412T)&24-8GF<1FZ#!* TR@H^J M!X(K8,@QP$&!&4H,!(S (2$.6:1;5? "!2A@!"R2E3&1X*(E)* &J$I 0.I" M+\6!JM=7P2>/1 VE-.AA)01I.Y MH[WN:P>1B'+4][.KB$4@0*4J6>E*5,X][78' 0^ 7OB_J_WN\:T\W2\O>8 # M,>Z/!_S=@UWYF#?]J$,XY46*O'1\G?Z@5E#]GQ4PN20AB'O;WA!1S-"8-22@ MJ$X@0BIW\'+3K\3U9 A=\H@$L@$ M)@"!]KFO9B<[?_.1YX'G-0_YM;,E@'X$O>73'VRCY*'T3%\)ZD_YA=47/__I M 7O\-V3_YWHKP39?8 104$=E< 8LH!=SD ()@ (HX!* M135TV'1F8(?Q$3QB\$M_*")BL( 2IATK^EX2O=P2Q1Y"S5WLR<7L^ MN"$*L 86\QY&*4Y(HP6W$ MUP>76(3#9XE8"#%."(52*($4V(8MX ,)@I$-508] -X8 1$:00LT'P[V9,K MR1$]$ ,LX((PF !$P!W.0P8H0Y-/: )(R9,7F9&.(85/^8(PJ)4ZR94F*08L MP!1'IQ9%]* ;7 Y5CN95*J6MTP (PP 0Y:)#'IX9RPX82*)54&89. M$)AM^98^J5(L0)9N:99Q&991J99EP)9V"9>\=SV.J9A+20=N")!P*!QRV(:_ M-)5S4)5#()K,=YF+J9$I@(1?V(?]1P> ^$L]&98G$B(H8MHH)L)PTP(NR2(NV MN)W2B0.\B(S!&)TQD$O5B8G1Z%U"*0/J28W1=XUJUDO:^ 7IZ(U8IW53@EGP M\E4^=SO?D2-@Z!@F87;5&01,8(LH@(G(Z8@K@(G..8H1>IVN6*&]^(O!:!@O MN','0@@)<( = FJ0[NJ1@)TBJ2)BJ=]*9_6**@M9XB3 M5@4+NH ,F:,,21 I ,<.EC?\1#Y11 @M ._Y*$[255NM!UPD# Y$78R9W:@ M"AX8(WY 84YPL 52U0,@( (O( *FZJ%_$1@_%5_^,E]!9E_Q01JRFA"AZD$W ML77J,4JFNI\G 1B"$:UA@%T7L1W<]J*3:JW582CED2B9HCK->BNBVB.ET09& MH!ALH*L@P*LBT 3]N#6K410!)!4$VD$O9$7 L6UNT += M!CP*00=U ?@J@"!61UA-!2H5ZT>Z@89020;8S4+<:#75[%R\!2CJ@(J<%16 MH+%9YU02$2(B&ZX>:C-W,!DJ 4(9@D\Q^XWB%XXH0%"312!!VK,&N'TY95*& M,:OKJA 82!#V%"=%L!Q6H!!JM10W<;)4\YK3"'W6"+2R%:1'.S_7I[2K\087 M^+1K( 4-.#I4:X%DH+5DZ[82 1YK< 53L7UN"[?.2JMRJP)XT 1 5T=&5P9" M"%Y'I[?J6K87Z+=J&[A]VQB'L@; ,KB%2YF(^ZPGBP=3$")D$+%^P:XJ$('$ MYW(!H15?8&5_!A%]%EKJ$A,;8A0?T7)NJP"G*V1_5H%F^[81^8*C^B!FL 5- M\'11UP7!VK)W8!1K,!Z^.W)'878),*IFP+0J$+UR 4A4KQUH2ER(2(/0;TO MV[S7EP I:2TL6Q>PVG368D!E!Z.'=WM4)EN\RZ[>JP)M "76*P?8^[U3M5DO M53DQ=3D("JD!\;X(Q;XK!RXPU1Q"&6YEF\+G2BX,<*:TA2\1(;*,< MV:$MBQ*MRD-O($=3HU?$LT@L83X^-13.BV:\ZKM(V+XYD< +_(*F>00(0<$H M8 *90\$NTR F4,(GC! I_+8<2;WW2\3!NP1%L(!W3,9/2,)S8,(N[,?% P$+[V#$*_3,3H M;,PKX,Q<&Q #C53AVP,]$S*0PL,\OJ+)0M:M%O+FZX;F^J[5GZKZ2!;_6 MFL.:U3:<13FL*U/5Z!\RK'1LG'B6_,:@8[^ZM![8HW0_ 7ZJ.@?)*[&C\G-_UM%!',LD0)=;JW-!B*=>S7,V(C,\)S:OT:]?_[%U@[-=247,.7[-69K,G7W,F? MC,JJS,IX@ -9+9;6HM#CS<\>"MW-XAC33: 58]UQG=V[/.#@!P+;7:,WNM A M$MYBB=OXG*J;=5:78U%7=_>N,V(Y[4(A=8MZY4KL5%( R#I#=:^"]<]6MHET^(() -L6XEUT[J'GO1%0SF%X M%=>V*;&\6A0EX@8HL.9MWB B<%LB\.9POLMF(+& CA]%Y9&,INV=3\.,U';9%P-SYS:MH2\%3*P?X["#&O0-Z MCM#M7!OL^#G@ [/I_4/M'_ZJ&. :(FH=( =P>H-:+>YG4S6!;.BWI$ M' ,<(6C 7H^)S_=<5WMT7#D(:[EWL/KI-"W\_"WL-@O!91YEL>;)0K 4K0"E&Q(M7_.+I;H ISK#FJTE M?[5.$3;HM%=B0!P$.JH_\ .QJP!DJS@*D/=W&_-YN[O/"[HFP:NE:JT[?#$G M![Z9/*H4LI&YC:T_-?JU:G8OZ/ F,>$AD/'>';H='_$MJ]8C0A.L,2%?$F]! MMB&N<=VA3N%3D*5;6@3G'(%2OMBH3]ES,..L#P(3?OR\S*NCW_&%7=(M\B(Q M,B,PF-F9O]KS/.\&\<^3G.B8[#0CH%WZPE);B4J',)+0Y'#3H-N#6FFTJ M0 )&N_OF @'@"UJ )8N6J;J61+HDC1&#/ZH+Z/R:=F5_4!23J! @HO'%K=Q% M$!3 #Q0.8T!P'9W*-;@,@V'K6\$&Y($U%!!LB-C[@8)2,+W,/U[E!"P5$UA M>0N^X;8[("(J! J0 7D$:[RKJ8#KF!@7E(/P:NX)(MAP6V"':_M7.+ !MBMA MQ@/MG@],>U!0=?&$%B $6T7]P5=+XK\DP73UK/J6$T2$AP)W+2[(%2?J(!4\ M7)8/"V(-+?@!NR"O:BYJCQ-*KB7& I]<&;Q4FO!MJ<&^U@:9#QQL5W.0#=1! MMA1LW I\$+? LKJ7 (A+>N"6JONW;V"H+DX5\3B>\]0\(R'2(@$G\W8 MVEM+*P,Y09#6N5['R8I EN]DT0%22,M0P$W@58*G&]:15D@&S> LQ&ZU\ W& M07<%KW9A$^N%>9"=,0:C( S_X U$" R0EMV$9-@#M8+.6UL]3W6A+9W $W@> MT^H=ODV,Q3 EB T55U8XB Z1VU4^P]:[C-L60!4X@'A9*XBXO$#%&0-=8H#2 MH;OCQOF0E_XZB4QK].6OOW?Z=E]:8%>J[\1M,8C(!>/""]%]]@'Y*8[H 7= M24D$?:OOXM$RB^;Z8-_&8P.S3RR!-1-8_)0>5$Q^WF7YD2K19N507A&)?A:M MU-6_.8?]0( ,!&V9#9YA0,(&@YI>^4.+'U"U@;\1"!;]0A%9@1=P++8ZMTC# M9&#_4P$I<;)MQ1EGZ-)B$5EU3>^T4< _M>'*XED\?TM1+8I IL<5 1J7@(R[ MS"I>0!'H_J@B"K2+\<_-6;]?PAWH5+25>--:F MT;!87;!];"WW<8A:$2B V*AR7H:QQ34]V\@]C$(_X6320K>=FL%C',0>0MH" MJ.>7>;1F&-)>QTCC2 <.L,"?(5CUCD(UD@N(@FG8BR &UA">#^!54NQ$03RQ ME!Y5(*^J8DN GZDL(H;VM",85%EY9%M-*Y/P]@97W -=>I"B*4-),QVJPU51 M77,@#(R@A+3J9"D $UG.XD/9 M(P@PLE:I ,\4#D'7&%")D2+20:C(+ MF/LIZJ-="!4*^:P@G[F(DY?A1\ZOSQ'#D.$M7!"2./G MK;@:U^(RV^=+:*5.!5 -O+;8O.0.!(0 ,0MJ#>R!1;!$5L'

)5C3C_%L3FV'.H8LSE2MMO3FTHD+*HQM^JVE7SE_F/J]VT:)84&YO3XF3K,9>AOS\9 M'P(EH?QBY@$K_I)RNQG/2MO,2VQ6SE(FMLWHH^:=ERR7 M[,S$.;Q+.=KR&FS\AQ!+5-H%,[B "*8<"&\\,&(&!"$W!<#6^X@ZWLA-HBTH M$!^81$18B#0$#721,/8<>L>L? BS:VI6S1^I BY"C 1=6=,*QB_I-0Y?4$HR MEOFN9:U*(C%QK N!XAB;)*]X&^=5[LP"$>M6HTWP/,J+0" B@L+SF^?1J:@[ M.G#UAMD6')*;49^=R6]4-[)?$5@K@>F9/LAFZSJ;T&I)JLQB&2D$H>,; O#A^#0)^ MDDJEJ0*FYV2)FI*&YMTMU:72;L/>@XA<$X$TDI"!(\%F[KJ5=*OFQ<+X.:JR MYA:0 37 !A"OM7D4YD Y0P,7-(-NT,LGO3+?ZOB@' DDI1*B@-P0C_]$::,L M"Q&QC&6MQ!Q+< SJ0EKL%O(X%%Y&QT0+,X%7P8#\Q;':@,?2&32CD^@;1K$0 M)A;_?*&VK2RF*1)J]A2"C\@#*&DHI &.1+),%NB:7OGB" @',4 V:0B'< .2 MC(9)JKC)<^A6D)D93,)%-L?PY15)("]SBE;1^H6NUI@80]?SK(VEA6Y1S;-0 M1SYH@TB;HPO(W9XIZJ%T1&B8G6V1S[Y'F6+'%-A]Y57T, M7/@Q2."!_:C$X%X3DWLY$S9J,FB1'0*#D/AYC?35M0568:) P.(CC^C/E#XY M57?6R*4@Z3I)X>OLAO^5+N^;+3TH0T ZTD=NZ+D\J"8U<"T+%1;%8.K!O&-. M(*;BT9@:M/((4$% XGRFS?2P+=,353+AHY6KID4,$T;!;/I,^V.N(YN_T,3) M4W#R!Q5I3H"BW,^'[HS[P*NV:.B<3S!UAA$U%;!&@]],:D(&%0WHL2B4'A94 M5 QY$@.)"M69$O@LPO@ ?O]4( E4:TI07T=096?9L1&N!&'Z'?U%,4UQ$Q69 M5M2+NE%-0D;])<^THTK3^$A-QUY(_:4CE>UI4VYJ4NT@.'V-OR00^L,$ '#J MZ4A4)Z!TF,:&7N4" 1I$ $M2LF%U3CG F03U8!KI5UC]4V1\J/"'N@(4*?J1W.&5O6#OKFLNAT9ZNMRJ)XT/"9(B7K? M@E\RG:O,=+'1N;0:36L.L@.IUU3MX<=6!SK*:C?UC]\40+XY9E?38.IBDZE) ME/S1L)QZWU ;:EMQ(0#YK*$ZUH9$I"8+0\6.NZ91T[A&I:>>F2S$<8?N#I9! M1:X;^>2'=8RCB;DNT""@*Q"UAR@UCV#/>3%>82!UC9XN%02D*3?9\BZI&!@" M["HB]#V*\H\HM)6'SG$_(5V#&*8*D6E6NP)2M^[DP0 M^Q0RID'8*E7":9'864I+G]<1*6UTJI20QA>[ITZ C'6Q%>$$X*D;*S^#IB!\ M@(DT J)&S'D@12"/!6N]S(Q:+!:;5^>G#A21_'-T!D#4YBE)9?4L""6!" % MU=5@9IEV,%:O%3A@V :*/K,L4"";>"5^JE ITX=>I_'"$#=AP8( Q"(>.$Y_ MZ##N] ? TS@7AL29@>C MW(B??5/=-<]Q:!;FQB\[I/%AEM*^NB Q&@N3J$8UX28DDL 4UQZGJSV=6I(N MAI]S1D.F7VES5 K0R>ZR3_E+M$I_V!LKT[F"Z@4V+ FA(YWBU\Z[>KH!CVSFWY*KKL0%QVO9;C"LT M@>R6*[)\2J%XJ&^;7\J+=9@3P&_E#84YT38QVU!PMRMLL:6DN, <0)[&+(.\M_&L!8Q /6LEYX;DH6Q2US.10.(Z@8:DV4V< M+)= \-A"HSG++K*=M:,1K?Y0FLI292[Z@[D7,.?>%GWK8Y_LFV.=@,5U.KT M^QAQ[$HPLM;JAE0'=_)M2=YO+'I&]_]!M$%+!9" %*@",\PT2EGX@B":3;41 MN2WKVRJ*KX$3BUYFH[B9LNN"-D-KY3;O@NJ\G]>@%=D8ZVU_:(1-?44/\88! MQ3MEV:A2_1LY04\47!)['#H#L75>7M+M(EN,1L\*H9N,+P96$3I98 IA 7_$EPCA7+ZMPCV?)TL@8-\QJFKSDI",+Q3TBWK?\O5?LH:/P%?<]Z$B MC>LVJF3&!PVA&C1_^=^](4=YJ.#[5D*4_A;1(\HQ "]>\;X&6)L6)XV0)$,> M8H!7[&.,M=?I<@*\+X.DVM M%;7I)*!D ,?1X$&@G%=ES0,,"(XV"/B+'6L?8N@GSM,$,XG,(B6 A/,2P8S2 M9&Z$+*Q:NW!=J!V P53XB*DP'L;O05!6S3)\@34I#-? SPLJG6SX,FP!-/P4 M#& 0K\5R=%.MT>AMQ"Q8$#]B0^QL;:SJ]*OU MTT=*X2U\J^H+.R/$EPWJU;Y,/(;_4Q'!*]*-"!K/',!B9CN&AJ% MRW =[N[!QI%RT-$YZ)4O ' O#7E/V%4#6%8'\T8-Z>Q$ M R,8C2*[*_QG=\1H(\2\[AJS8_. [-+:%^X8G536>=\MT)E,*W54AVD6V8&U MSF11E2D>4,)FM=4!X;<:N+PO"XE*^&'KP&1H.G-J#H&HJ__QB2W7 &CT:)DP M=@O;]1AWUT,+7E63HD6G+6LWQH4A^(/W+TG&2Z;UE;K9VRCU.(XP_1C&$/KN M6_:9 H(K&+3)^($E ^7D*I219O1TDY9TC&K?PIM_0:FR*;^^]_R2V?2K .(R M)OVPM,EBQ=_WZ;JRZ$UP75-@<"T\=A5?E+ _-LRV2@Y$Y,4LO?"*$M[*8.'5 MB8WOX$Y^<29#S(,KX7$DUX4[TV]9%L)@T)NB5%CFNISH:\V47X M9KY0PD1,X<8_P;F&%6[A[+M%6=3=9KV2.'6SB7VAN7S%, LLKK#.>N#93+DK)Y7PG+^G&CRN_7GSIF=AUE\P56N M.3Q?9N*H'.US$:S-X2N^1&3;(XF%&S/2P+6!N6218LF\ M$6"9A]8(6T!";P2/1GT#67_^9\2Q&HW?+@(V0JWA0WP9I$<$28(W$QC'N:@) M!"0F;(D]N\LV;&CHL-SN1*>7=TA%"8(*B"])4BIJT2";W!HO6%/2*1HH3&A. M_)\_VUN\N9D12ZOH0@Q.?FYI8\Z@\Y< 8C&MI1T=EYZ+&B[*#MFBQZ9)-)F. MQ'_4YD+I2AI&V:^2_GG62F*8F G+$H939&ZH8/6^E=)3JNZ@-"]UMEI97+#8 M*?=%=:G-#7YF-DFG#%XZ&NE<2E(#'1F'R67/$9DEW58PI\"!5ZU?3%JAR\"( MG@.<.E2;+[PT-3H6J. 87D%$H*O^US?5 *-.I4)B"Z@!21RIU0"3_26R>M, MG=704$TU:29[IMDL9T+7=9-A4.G0*[1*V$/9W>%G4"CLRPFI7&4B:;L*WEIF:E[*QB0VE [25) M\S!DHTF@852'*!)M.:H,5-1JL>6 $F9GK1E/MT/8+)8ZMK_PKL300U$'6R6& M3D#$&-B[@5F_5E)*3EW7)FU9GT;;.%G9X5Q6-1E5+_/SNGE)LUV1Q?.'CLQ' M>W^JT;@B!*1=-A>O0VT&V.G# M>'K)"^JBT"KQF LFD",$<&CF-1NB#KB3P.V\('=*^@+FHE^3OK1VN7/"YRLK M@OM%.M$!6,D63_6)9N)K*(#NY4"YSP#]I4Q0X4=H[B+"N?6P[ [=BCGDX6X* M K-T"Q4^40',-#+NUVW?.&C3PG#XRWG/+SUQORAS!C(7D-FF+NZ)R<#JBK < M8>\R>7"D9SG"Y"4DB[EPC#O(,3I Q^S8O@QJ\;*1];%I22]?4#"[E_GRI_'+ M%6+5TNA.[6KAZWX?S*8FRA0F5&-J4HVJ^3<9X,KZ=[V3F$8MO:XUW LWAE?^U(1 M/(,&VBJ^#ES05ZA4!Q-3 2,N)'>KPYM,/_5II0'.)4Q M8,Q;W$?G""'=HI< &$ #R$ 7Z %;H 3,@2[0KQI$&G@P;PUCU\N#'M)'^H@K MZ8'LI#]LQ,U+6_HP>^ET(*0S]9E>TV]Z3M_I/5U