richardh@killer.UUCP (09/27/87)
----------------------------------- To the parties interested in touch: Here is the source code and executable for a version of touch that is designed specifically for the MS-DOS environment. It was written for Turbo C and uses a number of DOS support routines found in the Turbo C libraries. It also uses the getopt() included with the Turbo C package. All other required source code will be found in this file. For a full description, see the included man page. For those who don't care to compile their own version, there is a uuencoded version of touch.com. It was uuencoded under DOS rather than Unix, if that is significant. enjoy, richard hargrove ..!ihnp4!killer!richardh ------------------------ X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X-- /* touch.c modify the date/time of last write on the specified * files * * options -d date use the specified date instead of the * current system date * -t time use the specified time instead of the * current system time * -v list the touched files on stdout * * compiler turbo c * * version hx v1.0 - initial release: 9/26/87 * * author Richard Hargrove * Texas Instruments, Inc. * P.O. Box 869305, m/s 8473 * Plano, TX 75076 * 214/575-4128 * */ #include <stdio.h> #include <fcntl.h> #include <sys/stat.h> #include <errno.h> #include <ctype.h> #include <dos.h> #include <io.h> #include <getopt.h> #include <exparg.h> #ifdef DEBUG #define STATIC #else #define STATIC static #endif #define FALSE 0 #define TRUE 1 #define EOS '\0' #define ERR (-1) STATIC char *usage = "usage; touch [-d date] [-t time] [-v] filespec...\n"; STATIC char *credit = "touch 1.0 -- by richard hargrove, sept. 26 1987\n"; STATIC char *optlist = "D:d:T:t:Vv"; STATIC struct date date_struct; STATIC struct time time_struct; STATIC struct ftime fdate_time; STATIC int verbose = FALSE; /*****************************************************************************/ STATIC void fatal (char *msg1) { /* Report a fatal error and terminate the process. */ fprintf (stderr, "touch error : %s%s", msg1, usage); exit (1); } /*****************************************************************************/ STATIC void warn (char *fname, char *msg) { /* Report an non-fatal error and return. */ fprintf (stderr, "%s - %s", fname, msg); } /*****************************************************************************/ STATIC int stoi (char **str) { /* Decode the string pointed to by *str to an integer. Stop * decoding upon encountering a non-numeric char. Update *str * to point to that char. */ register unsigned char *tstr = (unsigned char *) *str; register int retval = 0; while (isdigit (*tstr)) { retval *= 10; retval += (*tstr++ & 0x0f); } *str = (char *) tstr; return (retval); } /*****************************************************************************/ STATIC void get_user_date (char *str, struct date *date_struct) { /* Parse the user supplied date and initialize the date struct * pointed to by date_struct. */ int mon, day, year; static int days [] = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; /* parse month */ mon = stoi (&str); /* parse date */ str++; day = stoi (&str); /* parse year */ str++; year = stoi (&str); if ((year > 79) && (year < 100)) year += 1900; /* adjust days for non-leap-year (2000 is a leap year) */ if (year % 4) days [2] = 28; if (mon < 1 || mon > 12 || day < 1 || day > days [mon] || year < 1980 || year > 2100) { warn (" - invalid date : using system date", "\n"); return; } date_struct->da_year = year; date_struct->da_mon = (char) mon; date_struct->da_day = (char) day; } /*****************************************************************************/ STATIC void get_user_time (char *str, struct time *time_struct) { /* Parse the user supplied time and initialize the time struct * pointed to by time_struct. */ int hour, min, sec = 0; /* parse hour */ hour = stoi (&str); /* parse minute */ str++; min = stoi (&str); /* parse optional seconds */ if (*str != EOS) { str++; sec = stoi (&str); } if (hour < 0 || hour > 23 || min < 0 || min > 59 || sec < 0 || sec > 59) { warn (" - invalid time : using system time", "\n"); return; } time_struct->ti_hour = hour; time_struct->ti_min = min; time_struct->ti_sec = sec; time_struct->ti_hund = 0; } /*****************************************************************************/ main (int argc, char *argv []) { int c; int handle; argv = exparg (&argc, argv); /* expand command line wild-cards */ getdate (&date_struct); /* get system date and time */ gettime (&time_struct); /* handle command line options */ while ((c = getopt (argc, argv, optlist)) != EOF) { c = tolower (c); if (c == 'd') { get_user_date (optarg, &date_struct); } else if (c == 't') { get_user_time (optarg, &time_struct); } else if (c == 'v') { verbose = TRUE; } else { fatal ("invalid option specifier\n"); } } /* reconfigure command line parameter support */ argc -= optind; if (argc <= 0) { fatal ("no files to touch\n"); } argv = &argv [optind]; /* encode the date and time */ fdate_time.ft_tsec = time_struct.ti_sec >> 1; fdate_time.ft_min = time_struct.ti_min; fdate_time.ft_hour = time_struct.ti_hour; fdate_time.ft_day = date_struct.da_day; fdate_time.ft_month = date_struct.da_mon; fdate_time.ft_year = date_struct.da_year - 1980; /* touch the files */ while (argc--) { if ((handle = open (argv [argc], O_WRONLY | O_CREAT, S_IWRITE)) != ERR) { /* these can't fail */ (void) setftime (handle, &fdate_time); close (handle); if (verbose) { puts (argv [argc]); } } else { switch (errno) { case ENOENT: warn (argv [argc], "file not found\n"); break; case EMFILE: warn (argv [argc], "too many open files\n"); break; case EACCES: warn (argv [argc], "access denied\n"); break; case EINVACC: warn (argv [argc], "who changed my code?\n"); break; default: warn (argv [argc], "eh ? unknown error\n"); fprintf (stderr, "error code : %d\n", errno); } errno = 0; } } exit (0); } X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X-- /* exparg.h header file for exparg(), the routine that performs * wild-card expansion on filespecs in the command line * parameters */ #ifndef EXP_ARG #define EXP_ARG #ifdef __STDC__ #define _Cdecl #else #define _Cdecl cdecl #endif char **_Cdecl exparg (int *pargc, char *argv []); #endif X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X-- /* getopt.h header file to supporting getopt() */ #ifdef __STDC__ #define _Cdecl #else #define _Cdecl cdecl #endif extern int _Cdecl optind; extern char *_Cdecl optarg; extern int _Cdecl opterr; int _Cdecl getopt (int argc, char *argv [], char *optlist); X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X-- /* exparg.c source code for exparg() */ /****************************************************************************** NAME exparg - expand filespec command line parameters containing wild-card characters USAGE #include "exparg.h" char **exparg (int *pargc, char *argv []); PROTOTYPE IN exparg.h DESCRIPTION Exparg is used to explicitly process the filespec command line parameters containing wild-card characters. It takes a pointer to an integer containing the count of the parameters and a pointer to an array of pointers to the strings copied from the comamnd line. It is anticipated that most of the time exparg() will be called immediately upon entry to main(), with the call looking like argv = exparg (&argc, argv); See the test program included in this file for an example usage. When exparg() finds a filespec parameter string containing wild-card characters, it replaces the string with the name of the first file that matches it and adds the names of subsequent matches to the list of parameter string pointers. If no matching file names are found, the original string is left in place. Upon return from exparg() argc will be updated to indicate the new number of command line parameters and argv will point to a different array of string pointers. Command line parameter processing can then proceed as it would have been done before. RETURN VALUE A pointer to an array of string pointers that point to the expanded filespec command line parameters. The int containing the parameter count is modified as a side-affect. PORTABILITY MS-DOS specific, Turbo-C specific AUTHOR Richard Hargrove Texas Instruments, Inc. P.O. Box 869305, m/s 8473 Plano, Texas 75086 214/575-4128 ******************************************************************************/ #include <stdio.h> #include <string.h> #include <dir.h> #include <dos.h> #include <alloc.h> #define MAXARGS 100 /* maximum number of entries the new argv */ /* array can contain */ #define TRUE 1 #define FALSE 0 #define NIL(type) ((type *) NULL) typedef int BOOLEAN; /******************************************************************************/ char **exparg (int *pargc, char *argv []) { static char *newargv [MAXARGS]; char path [MAXPATH]; /* if the stack doesn't overflow, */ char drive [MAXDRIVE]; /* we have less lasting impact */ char dir [MAXDIR]; /* on the static data segment */ char far *olddta = getdta (); struct ffblk fblk; register int args = 0; register int newargc = 0; BOOLEAN err = FALSE; while (!err && args < *pargc) { if ((fnsplit(argv[args],drive,dir,NIL(char),NIL(char))& WILDCARDS) && (!findfirst (argv [args], &fblk, 0))) { do { char *localcptr = (char *)malloc ( (unsigned)(stpcpy (stpcpy (stpcpy (path, drive), dir), fblk.ff_name) - path) + 1); if (localcptr != NIL(char)) { newargv [newargc++] = strcpy (localcptr, path); } else { fputs ("\n_exparg error : no memory for filenames\n", stderr); exit (1); } } while ((newargc < MAXARGS) && !findnext (&fblk)); } else { newargv [newargc++] = argv [args]; } err = (newargc == MAXARGS); args++; } if (err) fputs ("\n_exparg error : too many filenames\n", stderr); setdta (olddta); *pargc = newargc; return (&newargv [0]); } #ifdef TEST /******************************************************************************/ main (int argc, char *argv []) { /* test exparg() */ int i = 0; printf ("original command line parameters : argc: %d\n", argc); for (; i < argc; i++) { printf ("%s\n", argv [i]); } argv = exparg (&argc, argv); printf ("new command line parameters : argc: %d\n", argc); for (i = 0; i < argc; i++) { printf ("%s\n", argv [i]); } } #endif X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X-- TOUCH(1) An MS-DOS Utility TOUCH(1) NAME touch - modify the date and time stamp for the named file(s) SYNOPSIS touch [-d date] [-t time] [-v] filespec... DESCRIPTION Touch allows you to modify the date and time of last write stamp for the named file(s). You may specify the date and/or time touch is to use, or you may let touch default to the system date and/or time. Touch supports the following options: -v Verbose: list the touched files to stdout. -d date Date: use the specified date instead of the system date. The date string must be in the form <month><delim><day><delim><year> Month must be an integer in the range [1..12]; day must be an integer in the range [1..max_date_for_month]; year must be an integer in the range [1980..2100], though [80..99] may be used as a shorthand form for 1980..1999. The delimiter may be any non-numeric character. -t time Time: use the specified time instead of the system time. The time string must be in the form <hour><delim><min>[<delim><sec>] Hour must be an integer in the range [0..23]; min must be an integer in the range [0..59]; the optional sec must be an integer in the range [0..59] The delimiter may be any non-numeric character. The filespec parameter(s) may be any legitimate MS-DOS filespec and may include any valid MS-DOS wildcard characters. If an error occurs during the attempted modification (such as trying to modify a sub-directory), a message saying so appears in the output next to the appropriate filespec. Touch then continues with the next filespec. AUTHOR Richard Hargrove Texas Instruments, Inc. P.O. Box 869305, m/s 8473 Plano, TX 75086 214/575-4128 [ 1 ] X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X-- begin 400 touch.com MC,HNB19, K0PS2&++@( BQXL ([:HQT=C 8;'8D>%QV)+B\=QP8A'?__CL,S MP+G_?XOXB]@F@3TX-W49)HM5 H#Z/740@.;?_P8A'8#^674$_P8A'?*NXV-# M)C@%==: S8#WV8D.%1V#PP>!X_S_T>.)'AD='K@ -<TAB1X+'8P&';@ )0X? MND "S2$?#O\6UB2+/EPDNP !._MW HO[C-J!P_@E<A2_ !"Q!-/K0ROJ.^]W M"8??.^]W ^MQD(O? ]J)'B<=B1XK':$;'2O8CL"T2LTAT^>.THOGZ,,1Z+<2 M,\ NC@9, K_B)+GX)2O/\ZK_-A,=_S81'?\V#QWHV %0Z$T'N EQ18+'<TA M+HX>3 (._Q;8)(OLBD8"M$S-(;1 NP( +HX>3 +-(<.Y'@"0NNT<Z.G_N , M4.C&_[D. )"ZWQSHV/_K[0 58OL_S8R'?]V!+C#'5"XL"!0Z#L)B^6X 0!0 MZ.<&65W#58OL_W8&_W8$N-8=4+BP(%#H&PF+Y5W#5E=5B^R+7@B+-S/_B@2T M (O8]H<U'P)T%8O'N@H ]^*+^(H$M E#P #^$;KWHM>"(DWB\==7U[#5E=5 MB^Q,3(U&"%#HN?]9B_C_1@B-1@A0Z*S_68E&_O]&"(U&"%#HGO]9B_"#_D]^ M"8/^9'T$@<9L!XO&NP0 F??["])T![L^'<<'' "#_P%\)(/_#'\?@W[^ 7P9 MB]_1XXN'.AT[1OY\#('^O =\!H'^- A^#[B%'5"XWAU0Z"[_65GK$(M>"HDW MB\>(1P.*1OZ(1P*+Y5U?7L-65U6+[$Q,,_:-1@A0Z!S_68OX_T8(C48(4.@/ M_UF)1OZ+7@B /P!T_T8(C48(4.CY_EF+\ O_?/]." O =0/IX0"X@ !0N (! M4(M>"-'C_S#H) N#Q :)1OX]__]T)[CJ)%#_=O[HL@]96?]V_NBI UF#/C@= M '2\BUX(T>/_,.@4#EGKKZ$?'2T" #T* '=GB]C1XR[_IV(%> 7 !8H%G 7 M!< %P 7 !< %P 6N!;A3'E"+7@C1X_\PZ.G\65GK6+AC'E"+7@C1X_\PZ-?\ M65GK1KAX'E"+7@C1X_\PZ,7\65GK-+B''E"+7@C1X_\PZ+/\65GK(KB='E"+ M7@C1X_\PZ*'\65G_-A\=N+$>4+BP(%#HOP6#Q ;'!A\= #I$O\SP%#H8@-9 MB^5=7U[#5E=5B^R![,H Z)0'B5;0B4;.,_^+]XEV_H-^_@!T ^GH (M>"(L' M.\=_ ^G< #/ 4%"-1HQ0C4:(4(O?T>,#7@K_-^CT X/$"JD! '4#Z90 ,\!0 MC4;24(O?T>,#7@K_-^AZ X/$!@O = /I=P"-1O!0C4:,4(U&B%"-ACC_4.A> M#UE94.A8#UE94.A2#UE9C98X_RO"0%#HB@A9B88V_PO =!F-ACC_4/^V-O_H M<P]968O>T>.)A^XD1NL5N+ @4+C"'E#H] 196;@! %#HB@)9@_YD?2"-1M)0 MZ" #60O =(OK$HO?T>,#7@J+!XO>T>.)A^XD1H/^9'4%N $ ZP(SP(E&_D?I M#_^#?OX =+BP(%"X[!Y0Z*$$65G_=M#_=L[H;5E9BUX(B3>X[B2+Y5U?7L-6 M58OL3$R+1@8[!A(??P/IS0"#/A8? '4TBQX2']'C UX(BP>C%A\+P'4#Z;$ MBQX6'_\&%A^*!SH&&!]T ^F> (L>%A^*!SH&&!]T$8L>%A__!A8?B@>(1O\* MP'4'_P82'^EZ (!^_SIU ^E^ /]V__]V"NA7#EE9B_"+Q@O =&M&B]Z /SIU M-O\&$A^+'A8?@#\ =1N+1@8[!A(??DV+'A(?T>,#7@B+!Z,6'_\&$A^A%A^C MMB7'!A8? #K&8L>%A^ /P!U"O\&$A_'!A8? #'!K8E "*1O^T .LK,\"C M%A^CMB6X___K'L<&MB4 ,<&'QT3 (,^%!\ = BX&1]0Z&()6;@_ (OE75[# M58OL@SXR'R!U!;@! .L3BT8$BQXR']'CB8>X)?\&,A\SP%W#58OLBT8$B]2! MZ@ !.\)S!:,C'>L)QP8?'0@ N/__7<-5B^RA(QV+5@0#PG,$"])Y$HO(@<$ M 7(*.\QS!H<&(QWK"<<&'QT( +C__UW#58OL_W8$Z*G_65W#58OL_W8$Z+W_ M65W#58OLM$.*1@:+3@B+5@3-(7(#D>L$4.CG!%W#5E6+[(MV!@OV? 6#_A1\ M";@& %#HS@3K#XO>T>/'AZPA__]6Z 0 65U>PU95B^R+=@:T/HO>S2%R#-'C MQX>L(?__,\#K!%#HFP1=7L.Y+ "0NC8@ZPFY*P"0NF(@ZP"T0+L" ,TAZ>3X MQP8A'0 R\-5B^RA,A__#C(?"\!T#(L>,A_1X_^7N"7KZ?\6CB#_%I @_Q:2 M(/]V!.B'^%E=PU9758OLBW8(BT0,.\9U.H,\ 'P2@WP& '4TQP0 (M$"(E$ M"NLHBWP& SQ'*3Q7BT0(B40*4(I$!)A0Z) 1B^4[QW0*@4P"$ "X___K C/ M75]>PU6+[+1&L#O&=:(+_W0>1HO>@#\ = 6!3JP( /]V#%:X00!0Z.[^Q@0 M3NM-"_]T ^EY_T=&B]Z /P!T!8%.K 0 _W8.5K@( %#HR/[&! !.@#P ="2 M/#IT ^E/_XU&L#O&=!7I1?\+_W0#Z3[_@4ZL 0#I-O_I,_^ /#IU&XU>KX _ M '0%@4ZL$ #_=@J-1J]0N ( 4.A[_HM&K(OE75]>PU6+[+C]$E#_=@3_=@:- M1@A0Z",+7<-658OLBW8&5E;H?PI94/]V".@U!PO = 6X___K C/ 75[#5E=5 MB^R+?@B#Q_Z+-C@BZQ6+1 ([QG<+._YW%8M$ CO'=PZ+= ([_G;GBT0".\=V MX(L% \<[1 )U$HM< HL' 06+7 *+1P*)10+K!HM$ HE% HL$ \8[QW4.BP4! M!(M% HE$ HO^ZP.)? (SP%#H.OQ9BQ4#USO"=1F+]^L#BW0"BT0".\=U]HM% M HE$ E?H1_Q9B38X(EU?7L-65U6+[$Q,BUX(BS>+QHE&_O=' D = 2+QNL= MBUX(BW\*B\9."\!TB]]'@#\*=?'_1O[K[(M&_HOE75]>P@( 5E6+[(MV!E;H MQ?Q9"\!T!;C__^M7@WX, 74>@SP ?AF+5@J+1@A24%;HD_^96UDKV!O*B4X* MB5X(@60"7_['! BT0(B40*_W8,_W8*_W8(BD0$F%#H$0&+Y8/Z_W4*/?__ M=06X___K C/ 75[#5E6+[(/L!(MV!E;H4_Q9"\!T![K__XO"ZS:P 5 SP%!0 MBD0$F%#HT@"#Q B)5OZ)1OR#/ !^$U)05N@3_YF+V(O*6%HKPQO1ZP:+5OZ+ M1OR+Y5U>PU6+[+0JS2&+7@2)#XE7 EW#58OLM"S-(8M>!(D/B5<"7<.T+\TA MDXS"PU6+[+1$BD8&BUX$BTX*BU8(S2%R#(!^!@!U!(O"ZP;K!%#H @!=PU97 M58OLBW8("_9\$8/^6'<CB3;8(8J$VB&8ENOWWH/^(G<0QP;8(?__B\:C'QVX M___K!;Y7 .O875]>P@( 58OLN !$BUX$S2&X !R!-'BT=!=PU6+[+1"BD8* MBUX$BTX(BU8&S2%R NL%4.B0_YE=PU9758OL@^PB!HM^#AX'BUX,@_LD=UB M^P)R4XM&$(M.$@O)?1& ?@H = O&!2U']]GWV(/9 (UVWN,/D2O2]_.1]_.( M%$;C">OQ*]+W\X@41@O =?6-3M[WV0/._$Z*!"P*<P0$.NL# D8(JN+OL "J M!XM&#HOE75]>P@P 58OL@WX("G4&BT8$F>L%BT8$,])24/]V!O]V"+ !4+!A M4.A>_UW#58OL_W8&_W8$_W8(_W8*L !0L&%0Z$3_7<-5B^S_=@;_=@3_=@C_ M=@J#?@H*=06X 0#K C/ 4+!A4.@?_UW#5E=5B^R#[ 2+?@@+_W1>B\<%!0 E M_O^+^*$X(HE&_(O8BW<"BP0[QW(HBP2+UX/"!#O"=PN+1 *+7OR)1P+K"BD\ MBP0#QHOPB3R+1ORC."+K)#LV.")T"(EV_(MT NO$5^@ ^5F)1OX]__]U!#/ MZPJ+=OZ)/(O&!0( B^5=7U[#58OL_W8(_W8$_W8&Z < B^6+1@1=PU9758OL MBT8(.T8*<P;]N $ ZP/\,\"+=@B+?@J,V8[!BTX,"\!T!@/Q3@/Y3_?' 0!T M!.,1I$DK\"OXT>GSI7,% _ #^*3\75]>PU6+[/]V"/]V!/]V!NBF_XOEBT8$ M7<-5B^R+3@2T/(M6!LTA<@+K!%#HG?U=P@0 58OLBUX$*\DKTK1 S2%=P@( M5E=5B^Q,3(M^"O?' ,!U"*'4(24 P OX]\< 74#Z8 H=8A(48,BT8,J8 ! M=0>X 0!0Z%'],\!0_W8(Z$CX65F)1OX]__]U*_=&#( = 0SP.L#N $ B4;^ M]\?P '0K_W8(,\!0Z&S_B_"+Q@O ?1/IE@#WQP $=">X4 !0Z ;]Z8@ 5NA% M^%GK&_]V"/]V_NA!_XOPB\8+P'T#ZVR0ZT['1OX %?_=@CH90!968OPB\8+ MP'PXL !05NBB_%E9J8 = :!SP @ZPKWQP "= 16Z!G_@W[^ '04]\?P '0. MN $ 4%#_=@CHF_>#Q 8+]GP7]\< W0%N 0ZP(SP O'B][1XXF'K"&+QHOE M75]>PU95B^RP 8M."/?! @!U"K "]\$$ '4"L "+5@:Q\")." K!M#W-(7(4 MB_"+1@@ @(O>T>.)AZPAB\;K!%#H-/Q=7L-658OLH1\=.P: (GT."\!\"HO8 MT>.+MSHBZP.^/R16_W8&N$TD4+BP(%#HV_F+Y5U>PU95B^R+=@C_#/=$ I M= /IM #W1 (" '4#Z:H @4P" &#? 8 =">#/ !T#%;HB?=9"\!TZ9, N/__ MBU0&*\*)!%;_=@;HCP"+Y>F' (,^6B0 =3:XHB [QG4OBD0$F%#HV?M9"\!U M!8%D O_]N "4(5$ G0%N ( ZP(SP% SP%!6Z+<"B^7ID?^ ?@8*=1[W1 ) M '47N $ 4+A6)%"*1 284.C4"8OE/0$ =1>X 0!0C48&4(I$!)A0Z+T)B^4] M 0!T"H%, A N/__ZP6*1@:T %U>PU95B^R+=@C_!'TTBD8&_T0*BUP*B$?_ M@'X&"G0&@'X&=17W1 (( '0.5NBS]ED+P'0%N/__ZQ"*1@:T .L)5O]V!NCA M_HOE75[#58OLN*(@4/]V!.BH_XOE7<-65U6+[(M^"(MV"D;W10(( '083G1$ M5XM>#/]&#/\WZ(+_B^4]__]T,>OH3G0L_P5]%8M>#/]&#(H'_T4*BUT*B$?_ MM #K#E>+7@S_1@S_-^AX_HOE/?__==&+QEU?7L(& %95B^R+=@965NC4 EE0 MN*(@4.B)_PO = 6X___K&+BB(%"P"E#HQ?A=7U[#5E=5B^R+?@Z+=@B+1 P[ MQG0#Z9L @WX, GX#Z9( @?__?W8#Z8D @SY:) !U#[BB(#O&=0C'!EHD 0#K M%(,^6"0 =;B4(#O&=0;'!E@D 0"#/ !T#K@! % SP%!05NA*]XOE]T0"! !T M!_]T".A?]EF!9 +S_\=$!@ B\8%!0")1 B)1 J#?@P"=#\+_W8[QP:.((@< M@WX* '485^AV^5F)1@H+P'0'@4P"! #K!;C__^L9BT8*B40*B40(B7P&@WX, M 74%@4P"" SP%U?7L-658OL_W8(Z%T 68OPB\9 4/]V"/]V!NBL^8OEBT8& M \9=7L-658OLBW8&B@0Z1@AT#(O>1H _ '7Q,\#K HO&75[#5E=5B^S\BWX* MC-B.P(OW,L"Y___RKO?1BWX(\Z2+1@A=7U[#5E=5B^R+?@B,V([ L "Y___\ M\JZ+P??02%U?7L-65U6+[/R+?@J,V([ B_<RP(M>#(O+\JXKV8M^"(?+\Z2+ MR_.JBT8(75]>PU95B^R+=@:+QK0 B]CVAS4?!'0)B\:T 4@ .L$B\:T %U> MPU6+[(M6!+D$#[ME)/R*QM+HUZJ*QB+%UZJ*PM+HUZJ*PB+%UZI=P@( 5E=5 MB^R![(@ QT:L #&1J]0!OR-?K")OGC_B[YX_XMV"JP*P'04/"5T$X@%1_Y. MKW_OZ Z1($Z^?IV@.)=H2L/"5TY8F^>/\KR8E.@HA.@(A.@<>&?/___\>& M?O___^L!K)B+T). ZR" ^V!S18J?=22+PST6 '8#Z88#B]C1XR[_IUP7HQ>- M%^$7F!<%& X81!A,&,L7>!A4&%@87!C&&',9%!DS&:Z-3H8K^8?/BY9^_SO1 M?P*+T>F. (EV"HB6>O^+?@B+!8-&" (6!XU^A[0 B06Y 0#IJ0")=@J(EGK_ MBWX(]D: ('4,BSV#1@@"'@<+_^L*Q#V#1@@$C, +QW4%'@>_7B3H #IF@$[ MCG[_=@2+CG[_ZVJ0B78*B)9Z_XM^"(N.?O\+R7T#N08 5U&-7H=34K@! ")& M@%#H__F#1@@(%@>-?H?V1H (=!6+EGS_"])^Z Z4H!*]%^ XE6@HI&@0K M=!(F@#TM= Q/@VZ" 8-6@@ FB 7H #I) &+]XN^>/^+GGS_L 4B1H \!74R MBJ9Z_X#\;W6#?H( ?R/'1H(! .L<@/QX= 6 _%AU$H!.@$"#ZP*#;H("?07' M1H( -.@O9&@ )U#^L)L"#H #IW@!+.]E_\_9&@$!T$K PZ Z<L BH9Z M_^@ .G! (M6@@O2?BTKRBO:)HH$/"UT"#P@= 0\*W4*)JSH #IGP!)2X?* MXPJP,.@ .F1 .+VA\HKV>,2)JR(!4?^3J]_!N@ .F' .+N"]M^#(O+L"#H M #K:I#B]NE&_(EV"HM^"/9&@"!U"HL]@T8( AX'ZP;$/8-&" 2X4 J1J\# M1JPFB07I%_R+=H2+OGC_L"7H #K*Y"L"L!U]8!^KU!]!N@ .LHD >+1JSK M29!7N?__L #RKO?125]8!0, _^"(!4?^3J]^!E@% P#_X%-14@:-1K K^(U& ML%!7_W8,_U8.QD:O4 %^K(U^L =:65M8!0, _^"+Y5U?7L(( %9758OL@>R* M (M&#$ ] @!S!3/ Z=@ BUX(T>/WAZPA (!T$O]V#/]V"O]V".C% (/$!NFY M (M&"HF&>/^+?@R-MG[_"_]T94^+GGC__X9X_XH'B(9W_X#X"G4$Q@1&BH9W M_X@$1HV&?O^+UBO0@?J 'S/C89^_XO6*]")EGK_4HV&?O]0_W8(Z&@ @\0& MB89\_SN&>O]TI@O <CR+1@PKQP.&?/\KAGK_ZT*-AG[_B]8KT(F6>O\+TG8O M4HV&?O]0_W8(Z"P @\0&B89\_SN&>O]T%@O <P6X___K$(M&# .&?/\KAGK_ MZP.+1@R+Y5U?7L-5B^R+7@31X_>'K"$ "'0/L )0,\!04/]V!.BZ\8OEM$"+ M7@2+3@B+5@;-(7(/4(M>!-'C@8^L(0 06.L$4.A!\5W#5E>_ @"^E"#K$/=$ M @, = 56Z.7L64^#Q@X+_W7L7U[# !4=7)B;RU#("T@0V]P M>7)I9VAT("AC*2 Q.3@W($)O<FQA;F0@26YT;"X 1&EV:61E(&5R<F]R"D%B M;F]R;6%L('!R;V=R86T@=&5R;6EN871I;VX* M ^"4 5!V'';@= !\ '0 ? !X 'P > !\ M'P > !\ '@ ? '5S86=E.R!T;W5C:"!;+60@9&%T95T@6RUT('1I;65=(%LM M=ET@9FEL97-P96,N+BX* '1O=6-H(#$N," M+2!B>2!R:6-H87)D(&AA<F=R M;W9E+"!S97!T+B R-B Q.3@W"@!$.F0Z5#IT.E9V '1O=6-H(&5R<F]R(#H@ M)7,E<P E<R M("5S " M(&EN=F%L:60@9&%T92 Z('5S:6YG('-Y<W1E;2!D M871E " M(&EN=F%L:60@=&EM92 Z('5S:6YG('-Y<W1E;2!T:6UE &EN=F%L M:60@;W!T:6]N('-P96-I9FEE<@H ;F\@9FEL97,@=&\@=&]U8V@* &9I;&4@ M;F]T(&9O=6YD"@!T;V\@;6%N>2!O<&5N(&9I;&5S"@!A8V-E<W,@9&5N:65D M"@!W:&\@8VAA;F=E9"!M>2!C;V1E/PH 96@@/R!U;FMN;W=N(&5R<F]R"@!E M<G)O<B!C;V1E(#H@)60* I?97AP87)G(&5R<F]R(#H@;F\@;65M;W)Y(&9O M<B!F:6QE;F%M97,* I?97AP87)G(&5R<F]R(#H@=&]O(&UA;GD@9FEL96YA M;65S"@ 0 +6=E="!C;VUM86YD(&QI;F4@;W!T:6]N @(" @ M(" @(" A(2$A(2 @(" @(" @(" @(" @(" @( % 0$! 0$! 0$! 0$! 0$ " M @(" @(" @("0$! 0$! 0!04%!04% 0$! 0$! 0$! 0$! 0$! 0$! 0$0$! M0$! &!@8&!@8" @(" @(" @(" @(" @(" @(" A 0$! ( M M M '!R:6YT9B Z(&9L;V%T:6YG M('!O:6YT(&9O<FUA=',@;F]T(&QI;FME9 IS8V%N9B Z(&9L;V%T:6YG('!O M:6YT(&9O<FUA=',@;F]T(&QI;FME9 H 4@E2"5() ) @ E" M H" 0 "B( @(" + @ /\ OB M_P #,( #_ -H@ /\ Z" _P M #V( #_ 0A /\ $B$ _P M @(0 #_ "XA /\ /"$ _P !* M(0 #_ %@A /\ 9B$ _P !T(0 M #_ ((A /\ D"$ _P ">(0$@ B " M( 0@ B#_______________________________________\ /__ $P(" M! 4&" @(%!4%$_\6!18"_________________P4%____________________ M_P___P+_#_____\3__\" @4/ O___Q/___________________\3_P #0B M-"*"(HHBHB*\(LLBWR+Q(@$C%B,F(T,C5R-F(WHC "'(Y8CO"/,(]HCZR/\ M(PXD @)"XD(P!%<G)O<B P $EN=F%L:60@ M9G5N8W1I;VX@;G5M8F5R $YO('-U8V@@9FEL92!O<B!D:7)E8W1O<GD 4&%T M:"!N;W0@9F]U;F0 5&]O(&UA;GD@;W!E;B!F:6QE<P!097)M:7-S:6]N(&1E M;FEE9 !"860@9FEL92!N=6UB97( 365M;W)Y(&%R96YA('1R87-H960 3F]T M(&5N;W5G:"!C;W)E $EN=F%L:60@;65M;W)Y(&)L;V-K(&%D9')E<W, 26YV M86QI9"!E;G9I<F]N;65N= !);G9A;&ED(&9O<FUA= !);G9A;&ED(&%C8V5S M<R!C;V1E $EN=F%L:60@9&%T80!.;R!S=6-H(&1E=FEC90!!='1E;7!T960@ M=&\@<F5M;W9E(&-U<G)E;G0@9&ER96-T;W)Y $YO="!S86UE(&1E=FEC90!. M;R!M;W)E(&9I;&5S $EN=F%L:60@87)G=6UE;G0 07)G(&QI<W0@=&]O(&)I M9P!%>&5C(&9O<FUA="!E<G)O<@!#<F]S<RUD979I8V4@;&EN:P!-871H(&%R M9W5M96YT %)E<W5L="!T;V\@;&%R9V4 56YK;F]W;B!E<G)O<@ E<SH@)7,* M 0*&YU;&PI # Q,C,T-38W.#E!0D-$148 $Q,!$Q03$Q,3 @ 3 M P03" 4%!04%!04%!1,3$Q,3$Q,3$Q,)#A8.!PD3$Q,3%1,3$Q,3$Q,3$PP3 M$Q,3$Q,3$Q,3#PD.#@X'"1,3!A,1"A,3$!,+$Q,,$Q,3$Q,3$P!+"4L)+PDX %"3@). D3 end X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X-- richard hargrove ...!ihnp4!killer!richardh -------------------------
richardh@killer.UUCP (09/27/87)
------------------------------------ Again, to those interested in Touch, The message I posted yesterday (9-26-87) has some minor problems in the code and documentation and a major problem in the uuencoded TOUCH.COM (it won't uudecode properly). The minor problems in the docs and code are: * The docs don't explain that touch will create a file to be touched if it doesn't exist. * In the case of a fatal error, touch attempts to return 256. MS-DOS doesn't support this. This version returns an exit code of 255. * There was little error checking when parsing time or date strings. While this version's parsing is not fool-proof, it is more thorough. As well as these, this version adds the -c option (turn off auto-create). This version is distributed as a uuencoded .ARC file (yes I verified that it uudecodes properly). X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X--- begin 400 touch.arc M&@A%6%!!4D<N0P E)24E@@@ ,<.I%T5 <4/ ,#12\4)&@#!XX8>2<<3$F MP9PW=>2,*0-BS!LR%,V\D0/"($*%*%($!*'B1<" R$Y.:D@@9,@38HD*'@P MX1D0+3K6=$,&A)DT;,K,@5-F3,4W;=J$X0F"31HW%#^&:5.&3ADY<P+.G'G4 M#9TP3Y_>O .43(LQ"7N.09,PS!BK6%DFJ#(ER!&9"48\'<.F#D80(CS:=(%& MA-:9:Q.25"%8(0@43^F0_'AF#(N*;#FJL&D'Q)8N*7;(A2+E"1736: 4 9'$ M"4W*A.42*3)EB)0D4*@D>>*Z2$W':>: J#.G3$\Z;W3"<3HF#1TV>4# D?-F MXASA=-!D!"J4Z)C#"2PF7=K3*53I;:G"%6[1*U@W8D&096,6K1PRX!/+<;O> M!6O)7ZTA% AA2/=&9%>!@!R!;H" X!D)YO>&>V&Y<5-V%%E4AU<@O&&&@MJA MMY]Z5PE''H$&(B@'> LN1: <^T7G88I>E:A@<AB", <=<HC%WAMPI&&<3]2U M 0*+(8HW%5/FE>%?$I(%QR =:32'D%7'L259&V_LV.&'.;*8!E7*V122?$"Q M 8(8&8;!1E ]C4D5&6F$815TP\$Q84=>R9$'B\DI]51(EY&5'8AMOMG4&V^L M$9]3 LJU%6<@]%"F8RB88)-E+YYA1VB2)C!%&13E:)67T[UQQH@.NL&77T,^ M!:*4/P7ETT8,@F?05,M11%P8$+H0ZA7:-=C8&6?^Q).)/G$W5%$B3E55@COV M:.&1+2$VX5<5CE7666EAUM9;)5[F' ARE+&<6P.&F:U#/,9G*!J(@N"&M%_6 M^Q-6DM5:JI8@*$7'6@."=^Z)89!!!G8AWDN5<#/.48<8Q<511QD<"DPP=CAJ M!YY37LXH%8D<51N?GBK.\>2';@1JYUKQ^0N>PP,FE!%$/%V6XT9IG/&4FSK& M>ZV409D198/K3B2L N!5H6>#Z=(148-F%'DILBET:M1\:K*9)QEV#KF@P3Q5 M&7:]4-UA;QUML,G1C.(IQ>134:4W;5SO(JQ09US3"&!R!=)IAAE782Q90C'F M:_*UX*%<(U;^#8&4W.71'2W)TE%GW1SQH=4@AFXTKCFI/84AW+EW0$0?"&S9 M01&;&(- QH2OEZ%1NDMK)4415%0AA1,@6!$$$U7(%(3?";;8(.)AR/CAXC<Y MOAZ(=OJ-[58+YB@83T/Z^ZQ1<9_8Y.5WJPP"%1Z_&UE7W,)W;8XCWWW4AE$* MQZ7@0I9N(GB<8]1"&(,K"AURUQ(H/$$*5 B"$)+ A"10(0L):,(46D"$)TQ! M1]Y)PT\X186(B.$-+1@"!HNBP2II12M!J (5D'# F4BA2IGI"1)L0AW7@8<* MNQ).$MQ0+;89;@Z7V>$8EK85*+C@"?X1PAOP (<V" ',X!!#2[3AA<(!P<T MN,$,P ,%-BSE#9?!(1Y,!X(;U &3@2/#&) @Q?4P(PMH$$,9( #EI!$)29A MF@+TXJJ^_(4'.Z+3&PCC@X#P\55_A!XA#;D7/U*$!W22PR+WV$A8@0"279KD M(1UY23>QH3J3-"1&E%6&" 8!"T&0PA&F,),8P &"1A(P,* AS&Q;6UM2]", M#->C=C6L#&JC5$G $TL5O"AQGF/?>[8" I+D492VLQP5I%"\5D*3E" PPO"F M@!<87--R3F @"NB0!Z*D( $H&&<Y*:*"K#FA"DQ@@DCT2$ZBC+)5DA'"$Y[ MA"($P0FBT6-*G/!,!>AG,<=ZS/I40!E.'70S>_,,: *R!ZWLR$Y5$I=FTD:I M+33AE*E<91=VD "M'/1*]/+H*:$0A!6.=":RU&"]+CJ&-<CN#4)QPPDD\P;7 MR<$,G[S#98;9DH.2H4>N\\Q'L4"$VUBA""\MIGPHTCJ*!.4Z33$=E8;6!H2\ MI9G-)&IX,B.[-'!$I4Q-@A2B*LL]Y>BB5#(*V+ZBHS*<@2H< JLSY7)0,RA& M!6^@#QGH:BD(T6&P!0I)0.$EASI\=7!B8(--S1#9-2PV73[;48+69Q/A6 H& ME[5K<.""3WL!<U.5 @%HM:)/?OH3>%?AB*6TR01N+E8K=T #=QX3@MB"P 0F MZ)1P>#"9366MHBUIIDS3:08>+L<Y*.#,%CK;!18<-0VNLZY961!.)J! /RG@ MKCC!FX+@7H&!1!A"*HDPA:P!5RMZY:VRR+ O+T4WHM-5R!RJ^UO*2O8R,$B! M@$& W 3H=78$AB\D#/#03Z*%#6. X]2^UVRME,I;ZK.8PZ#@@UQ[@Q0(4,* M4+ C.$0X.B2F@XGA@.(2G_@Q*+W,=5T7WNMMQ<#-C&2-B0E6_Z[!!8/[ LVR MEA.49FT%((@!J)*[X.4ZV$T1GG (+-7="B=DP 5. $?QN^7*K& %74AMM5Z, M@B=#6,)RN(R1%PN"!?=!P08H QN*D^#D)L ,<*@#'82# A%PP0U?2&AL<:4# M>P6J#%SRTZTXXB^:S>'/(KA,(&.[Y)D8Y%PH4#*;W0Q?L/9!/KJU53J[;!3B M+C6D[?UM<$,P7ZC@03*9\K& V0R"-R>W(W.F2('UVN7.;('47PZSI3I*75K; M&L>^M10*2%TI2YU:E>VE=6>_O%A;:V6YE/9)GO?\&#\#6M P(O2-7.:&Z#1: M6H]V0Z2#AA$85;HXAZ4K"@*KL*]4FJ&HM12I0RLU.30H4[WV# Q $U!K4](, M]Z0";:C DH$65%#_YJQ"'&KACDY4 04>2 ).)9ECA02^8KW>^M*0VM6V1"O3 MB<R'^LPSG]U+3>&;VWGB-[U";ZK0)2 #I"]CW,7>[C$[<- EM1;T-'SYN)U. MN5=6+H(2I'O='4T#P;5B\ 10RE()S=2F>+ZW):/<6G1@>MJ.,AZ9UVU$Y0.! MS2>.<YVKF^N5J?3/(5/RH@]]4T4_>IUQK/2P=]OI.^^4KZ5>:5O;>@08$UQ M- :"$584$%21RY( "4E)27R .P_<;NMI00$ P-%+Q0D: ,'CAAY)QQ M@28!FC)AR)21 \),&C9E*KZA:!"A0A0I6("@\Q"$G#=UZ*1QDY%D&#H@X$PT ML['-G( @""9(<.<BF19C$I(!T3&,FSEIWK@!H;3BQ3)S9(Z9 V+ER))CWK1I M8W0HFY5E<.I,X#%,FS)T)MY4D/,%SH CTIAQ(]$,B")8H'P)(N4(W+I@[^;= MVS<@7+EU07SY,H4*D2&+_Y:QR%+Q$(ECV, MPV9.6 4C %?^<KE,Y@1C,&L& M78:N7,,*QJ!)F%,%:=5$#R8\ P+%2I@J/)X9(U(V;16[[8#8TB7%#M@C6I-Y MK4 #&@A'151/4%0N2 E)24ERP #L/W&Y09AT! ,#12\4)'@3!DZ;^#0 M<8$F 9HR8<B4D0/"3!HV94 @!#&G#APX;^302>/F# B#"!6B2!$0A(H7 0.. M2&-&HAD07[Y,H4)D2$Z9-DEF_#)$XA@V,LNPF5,&:!F+;H86+7,TP1BC2!6, M*..&#,V6 <O@H3/1#0B2=$"H)8H51,*177>$'5L6Q!@T82BJ8$N5C5N%><_( M52"6K!RS:-7BG'KTKV$Y@P,F7LO8+\JW(% D#CR&A5V\>@/; ;&EB^>[>5V^ M99-F#IT4D15H !H(5$]50T@N0P E)24E)1P- [#]QN;1WJ&0 # T4O%"1 M@,Z;.F/0N!@#(D&3-V32F,D#@@Z:,B#(A*%3Y@6=-&TPOC$#@DV8.71 W)&3 MAB.(-VXJ7@0Q!TZ9,1+3E"$3$ 3!! G,I&%39HX+$$E(6L0HE&C%-R#$8#2( M\"*9C&^*NCF1L@R>-"A9@!@CI\S&,CU_)FCI(FW:!&_@?(0YIV&+JQI=)J@S M9^K,FC=S[LQX%D0:-RC-7ATI$ZT"GT CCZDCIZR;E'/R)&Y#F.-;H"U2?@S9 MD*]?C(!Q"AT\&N/AQ&$6*[WX63)ERY@U<^3<NG8+.T#9@!4]DVK"P4V+OHR) MDLQ!.K[' *5#.>9(DF'J&&Q!UJSGQRK>/IEB^'(9.6;"C"F3@,K!A"#*4I># MN#$(-W7:2)7SDF1JP5<E5Y<9;_!W!QII)%3;4D]5!4)Z0PUV$@AAQ.152S31 ML1%?#Q9(X7T%MA$&&R!<F%*!M<E0@PWEV3?&22)A]^!&(Y98&8K@O37&&VW M$:$<!5$F!E1CN 5> G:<-T<:,(& !AY(QN "#""T4%Y+:=18%E$PZ@!"#B_( M8,,+.-Q0)0AJR(%&;79(&<.9L9$Q&'<OR<6D&UZ"*<,-9)II99IKYGAD=A85 M")04":(1AAQ7(;'H&7*\D61M5'@U81*(T2%'?F5<-H=8F([1UI% 0>'"$T<) M\08>(.!@0PXSP%"#6&V\4!<.--PP0VU0F.3&&V)1@04(-]0 PPTVI!@##2_4 M4&P+-,0@ PYIO1!00",<-@8;=<@) @_-,>D"&CY@JRVWWO)@QAB7L3%NN0ID MZ\:VW6($KF:V:DC'N^;.BZZ]Y]'WQKL)@& P"/W2F^X8=.1A$[_QGEOOM\X9 M16["_WXK[L41^SLQ#V>489!<$,NK,,!XP/$HQ.::(2=)1!0A1!5'8/OR81A- M04405"0Q!+9EL-&7S64(Y4;.._<\1(8;)0BT&Q&9<6V\-Q\-@A%!,#%%$0G M0+31&%$A115<Q_ USB 4,5X")W !PPEG6UV$%%(D@$(+,:0P=<,VO5P>'0D( M\<033!01A!,[3*TSSSZ/I2A_*O 51L@@] """)*'[*5Q:("P!7=V=.'Y79V5 M(?KGHH%D^H,1IN;"ZURX(4+B"BRNM..+^M1=1"E9+@+G(+A9I95B4,120HM> M]3BDDI8A5E\D@[!G\#F4&?OLBB?=./*0QT6'<"A5?OD08Q"A QDZ4*$#'3I8 M80?V"@1D>^,H;<IPZ:5_43]"=- ^_]+[NU]K*J(Z_6F*?_[3'@ />#\S#-!E M9_E":Q+(N*4)CG"&<P((DB2'(?5%?%C36A$H>+L+%NYP%-+.&[I3&,N)C6RT M"\A (-$$:\6O=@K<X!O2$" :D0@%W/-)&^9PAKP%9 ]QPPC6=L:$+Q0!"TF@ M0@)45(.I)6 @"9!"&>!0H)2$848:(E' /%2AJW!$#FTX3&$8!(=(K6<.1D'8 M8PJF AL6+"!!:>-AZ$ 2%#0G8&+YW7LZ-T;^>*D$<T"D"&A%Q!B()7-E2 'M M$F B$*!@B5ES(A2I(,F ]&%J,ZQA]BJH0QZJ9%$Q >+C?&(&-X0A)&()H@J& M> :]*0")"K@B0;3(13EX,2:_<D,+TA-&&T6*/V6,C\BJ,RHZVE&.>63)9?KX MQ\H$$I%G4J186OE*YX& EIU4P"=O&$H;RB^'>\S0#BTI2Q74SY:XU&4"B' 3 MB)PF0](\ PBXN$?60*5X/JG?4R@4DWZ&3 Y'F<+(\ @9.>TH(F[09QVX:*%Y M'<0\^?Q0,%N GY <#W<(!4$5X) 7C+A34PPEB$'VN</+#-0B&P%I,WUBSES6 M 3%I.,/1KB)+.@C4<BBXZ9)T.AA9IB"@FIID.N5CAQI9#@8QS.6!(F1)L$3D M#!A"@0I\JJD4'#6>!F-JC51@N1A E:'*I$-32;0"H&ZU?BM8 0A, (8X $& M9@AG L:)QY/R!ZA&K4C])BF?ZEA2K&P(YSC+.<K;V6&'5PD9';Y@&CE\H:3L M7*5?G\? E&!6!24UH/WH $\\8A$*B_H@@RI+DXG"03B#P6PR#X.E$:5!#_?$ M; "ADTO(\-,\9OPG14*[VYG6T8KI; -,Q**1/(@E#V:1PR11TC2&I+.Y==F" MZ'J UCW452PS<*3T<@!>\<:JO."% 7I!$-[TKO>\['U3'Z*JRWVF%B/*O4SG MCIO+_(H/)>M$@0G>2=^!V%<.'_RL'>&Z@DDV][\&28,E!]S5 JO@P!^$;N[X MFP &3U+#?U6GA 5,8#Q*Q)(H #$(?$"L'!S5!'1-<72_%3P8P,"K(%!Q6ZEG M8PM3B QJX(MGPZ"9#O%GHUR"0PM4C (9V)A*8/E0DG,<W:-R^,0HD''NZ&I7 M&,S@J'S@@R55W /+R<"L-SXJ=CTG@^U*#P<^[DM*)II6P^;EBU?N(PK\R^(; M@R#,EO0O#X+WY3_S :T&0\&#^PQF,2N:R-^RW)JWD-\N-!K18YXQBV.0@QNX MV-"9SMV@SPR#O'T5K<3M; M\H)$OD)G*BYJDP5(]VE6WVK^ ?=Q1\ROK_.W6 MUF&X+*1SO2@U$WF2XZ2DT# "UE/2QY(B.--AUFI*S'J)+X?19V8V4[I%7NYZ M>ATG7P6B AK6]'^EC*S(*-L7RPY0E1NN'V='2T#2;+6 NRUM+D][7_NP=@ZN MA:T954?0J]#V([;%K7T&N-N4)N"W' EN5"C2&M'RS[@U78M+T7 0.=#J,,^[ MB?C.FDL39M P<WC#&B9IV@NK#,$8X3AE:&IB/8-%Y>*S:DZSZE<<A\!R(=S: MJ7OKI(Y#., 4ED.X\=AR#./W,-HQZ8(U%5>E]O'F:YAKC%& ]9S/X:H\?^=1 M?WZUK E]Z 7[YF&./N*D+_V&]7WY![UWIQKU94=0JTN>JYKRK,,8TUH5*-G5 M-@4<-]O#:,4RU_ON=;"G)/!='3O0S5X$M!^,)B*W'(#;7F*B)WO<]94SG0O[ M[#O3/)=8[OK?B9YHF?/'!T]]<8Q=3V,9T$#V@$]C3&!?5]D'>NV#MH&?5Y_V M1-]]Q;'7NB6/'_PT@Z#9%?^U#S[R!=I;SO6]CKZJIY^&+^A>?+K//KZW3_WC M:_XFR$X 'H/VP6;? 970EK8;J#UPTEQ[21&EB6[*P!O5>5L$X(9LG@1*Y29* M-R0B:\=U+O4H8Q!+FO4H=N YEG9$)N928Z!4&U=&1(&!*9$<7Q P=?%4+)=+ M$"@^7O%R^B1@#"@6$"A)]76"R;0C;2 B4%,2:','0T$&W)$\>F='DH59 D9K M_.."]259^L=MLE6# \1ADO5N)J!]HZ573:<H4.,4,DB#5R$<5D-W='%Z"3!5 M3I%E#&$YDN4]EK2"%"('9V '8N$]X$-:DI<V3V $EC<6XF,0;/ &=W >[*17 M!H-E8V@Y)S &)U"'!D,H*U06+51V(M1KR68P[.<:?12((' "9%"(SX=IDL5N MYR%L+H$"WO,H8F$"0L@P?@@"CU@BRV88DU@Y@D@'F-AL!K.)E25!! >*<B&* M<P6%0^B(:!6)K,A.KEB)=A"+F,9!'H01+C0V(X16J0B,L@A&-8("(C!MMK48 M=M(D_[$:<A" SHA'R=9T98%W0G$&E($15YA,6H@1+]=-9]1:<-!+*<%A#%@E MED-W4&-U9ZB&#,$#R==LQ#2-(O KK$,4=;%2G..-N91L)6@Y)E""6X"/9- % M/M8I#Y5;A9%,2VA'$,01MA@2+N! $F1^]58&%L<P+E!^(N<#FS9)'6F2K1&2 MD_5]EL.+*$E]X8='+_F192"3U6=T-3E^HY62W8=].AE:,2F2#R9I$51<K=9< M+HF4JN.3^641XE.*^W)K,!&5$924D_5JOM99+M!J*F8EG(8#)*=^^W9AP,,@ M N*%8(@1*," += "=:AX5$@&3G&/-I%*$,F 7< "> 04( )!C"7*L1"+O$# M(/ $7W %4O $3L $6?!GC?D%0R %AD,%(. EC@F9DDF9*2"8N428ACD%7Y $ MD!E%E1>'<R,%A@@"!K84'_0B6]&!83 4-&4P:EE\EO18/'14<N9 MYB71#&* M.]D:IV@PV_(&'X0"QAE)O?:'?82,SAE)F=A;A@D'VE$7<ZF&$;@%@+F<J/B- M1 >-F#8'.$@'\($" ?,KEF>8+_)!1> $3U"?ZO.%\/>=:^@Y@!E(R0$B'7A1 M9*"0!6.8D2$&BKAR#"6?,)(V36 $25 X.J"?S\:?X?F?EV,04$&#%!$7G5*0 M16&@A6D ";J@LN:@]!D$0S $13 %%?I^%_J7_!B8EZ,>;U07<N(&.E&@LN.' M" H4"FH6#*J=!C"?&%$$2> $5L"B0Q"C^TFC9S &-BH"!T(D5!@R5]$&%'&1 M/T"B09H 0QH&17J@!O RV<$&[ ,4,NJ7X.F?-1I(9= YC'E3:_ K=V A-]*- M/YJB)@H49J!'T[1\=" GUG0YA306]M29(% "/NIM[_D&Y)F*D%@9!"F"F.:! M(%AUYKE73)=+E80"FEH9<Z!8 0$:"%1/54-(+D-/30 E)26T'0 .P_<;MWZ M:"0 R,E+E(9(&) %HPFH58Y$( @$4>6 !PI&U4IPZ,#&SJD,C#)8XN7G4X M9B!4AW__' V; 2S7OS^+\"W"9B)0#QPWZF0PL:B* $#Z>M2! ,C<MW\E.P#R MEZ4. :0FY;D:-V:("1P%ZE@#U S0O6R)'%3J,&C8@4#C^/V+-JYCI@X>< &H MH;#C(HP&&G606\+!!UU !"C\X."?!2XE%OD01V(7@ []MT1L&@?(VV!AODQ M(8?"+P 08A&8MF[("G4[WMU)<.A;ZCL#UL6!]/#; &T=3W'TL*I#J(TKL#D" M1DN)PFGG'$E;= [=$ GH;DQ@Z<*1 8._T)3(M7G%LWFJ_MF8=-)&I/*/.J"S M(0 *NF8'^!:S<%=A=0\&"UOPDIB=(B,',:$0+4#LXM!]!BDT3"X> $";+FVH ME\X_N P @'O&_).+ PX"H,L7ZF'SSSKM ! %8NP(YXL)]E! "Y(> %+C:$ MX-XN"2Q2#B[_7(C.&0=DT<4P**IHAP'_N(C+%C+2:",ZF^18SI!67%'D(EX@ ML,@-,_RC" &T/(2-/8?L\H$ =%2PR#&Z* # />+$]&68)3P P #X&+&.-U@B MD,@-:W;QA1?#5%DD$TPT8@0"[KF414S_+*HHH^BP\D\6B1CA3Z0(3.J>)Y<N M L\@_CSA1P*DDM$' 8$8P\8!]QAC81T&!.(/#0C4<< NP(QT < +/ 2"8/\ MTP ?'PSBAS\ _)'!(M^PM<@AO'2P@Z9],&#K+@?\4:L_-2#0AP18*O#GFH@< M,<!__J0KP#H-X() DV/(B,Y)63PZY:"%6IGB(.P0T&6?BAP0YDR*E/G!P? $ M8HY#BQBSPS%T+. I.@%<FJE:BRY@#QT\95GPP=@D;";##D-LS + 5'PQ-4QE MZH_'=,#0)R _ $ '"IP2;+"8)B_\4,,//[1RRPI<_ E3,=%L@[+\ , '#%!C MT(<*RC++!['+\M"'!\+RH4&Q7E?P'S_EIAL NX@<@*ZZ\,K;Y"'V_L"4OH(2 M:NB_ 2]BAP+':&JB%1>C($"^HN*BG7M19H$+&R6X1TH"68AG2P=6)(D .C\, M, @Q!L2T9@\HT3'%%>@D(L&C^!0[1AT(D*1+!R:N4TVQ9-3Q@.*1B\>#">B$ M</<ZP11+A^Z/]V[#[^B<,GPKQ=H!.TFX=! .N @LLJ]@[23Q;K6!(*)A^D ML*BR"#2+ "[%V-O&]^-_$ TX Q@C*BAOE!!F-/@$8@(<)0#'/TKP 0 DP M! 7DPN0_ 'X 'R7(62X* (!I@.. "6R#_@#0P!+\XP $!$ N%E#!"R*P!*!0 MPP;])X< #K" !VPA*-:P0LX0T!]U$B$%+1C#$H1".P4@0O]L^(\ E. /(DQ M"7NXB$7]PPD(8%D=!I .> %X"XT"!\,#N=%0 7 @C .@8 Q@OUB2W_@ $Z M3K" SQE@8Z3[!QU.@ L 0B%)_$!'+1Z0+SQ6:@!9V&+U= :+,XXCC>BX@ / M-XI0?*(#+7!(#]QTAS/,A"TN^,<IOE& >A2@!P8X@ $R8 !0FK*4J 3E"@R M"VS(R)"(9 ,_\K4.+. "':_,$AK5J(59@L\(N.A'+A&P2W0@P9?KH $N&/ ! M*,!2C39 I@AP(8)F/A,=)/"E>!Y)HV8ZR3W"*( ;2?)($T7*'^D8 $KLX ]T MB &0.LI;OXH4"'8H P#HH,0!$F$%:&3*&0.[1R+8F36=41$=#\G2(@XPL3]0 MD1L 8 D4H* H1E#4"(AP9K3&,0 O*. ?-T '/3Q'# 6DXGI33 <E(@J,BTI# MHVSIZ$=#J@>2&H!E=*#B'0"@*'A<U***RF@C#(&#?[C'"WS,@GNPD%3W2"&I MC;!$45<@#""X1Q$(P)0A;/ /G&9@J$6]HRVXBHXY)'41WF!+(@Y!AQ+HJ0+? MA%$S14J ?.'B>E<]7*KZ )%O10=( D3A>Q#G)M5*8+1:M:V>K65-7AB]=; MAP!8(K,CI.,!_R@H'>)5HQG)8:ZAJ&OE[ "-)#D#'6UH .*R]"=<M#6>_++" MH9C01 /LP #D<V@ZF@& +7*B@'6@ 43(%U.%'F 4OY4B%6/Q$ _\%BF_+9@. M#.")#^0T'9YH;G0/,-WJTB$"$'FN ;:+""/\0P' T!52R)<./0 $'[XAPY2 MZ@< )&F="D#'%1;Y*'A$#*=K, ):<39?KN+V ^'] ,X 4(<-U/:VY/-#$X8K M/XX:%[D?6.\'0O';4?R.)+^MW;.<J^"<U>&C!P9Q 0% DM^9Z#__"-,Z5L 2 M#'O8!#P:D0=:; (3D;,#$^BM#S110#JL[Q-S%0/E<)&S>!*J2(+\ @>>U?L M3:")!( (+BJ\5A^8 "E;9LF0KF2$+%,C$.IXS Z$,8<"C&(4'5A' GZ<OAR/ M.46A@/,BK$" ;"9 N01A[(A8Q !.,Q<E# #I@Q!P,<P@!PEC.=KXB2.QN) M .A(Q:4LG21,]V+31$H1+8;PG]!!<<\$4(@<!A")=1# /><@ )6N="2/\4&< M_J 'Q* "P/XR!D$6,<#%#N.8QQ"!B) B17000 "$EOM#8 +7R 5E4S@"W& M1C9*6.)JQLF:4+F0R(-X 0(YYV(%'=(%8-<! (9" *20<9\$$2DYAH&:%F M1RBV_ \';!FG#-!RA?]Q"2^O8T(6H$ (#&.!A5L PMW$3H.@ \AS3-%?M,2 M$1BP V/400>#X('4)# (/O@ZN,=H]D.(X"<B*& =*%B$R0? @R.D@ =76 3+ M$^%R*"B"" 3 A'MH ]YR3(P."@B$02! Z1%-%ACR+!(M-+!G PS("8LX-9]5 M+3!@=!L=TQB I:>.Z@$]@>O<?C4Z<B'V0M%: 3230)*09 <$+/L& 2\'E@Q@ M#!-UP0O"\/7>V $P*@2.%292EIOH$#J/&N, O?4# W36> 8\/O(<8CR6''!Y M93%=\UZ P.4;80=7W.P'4RX I]8Q#\VA0Q<+8-WHH /PS@%[0W1K.-< 7- M+=L7;03= &+5["YAW1L%PT0N(+^+(2S !3LX ..', 1QW./@F3P#AP"@ @"X M O ( . ) S+@# $ L8QP*^L !4+. /Z6__ H15AV+<PPBL<$@=?!$()^3? MOG8 5: "\WF'A;P#[J'/:F@*+#0<74@"L)"!QX@8-ZP8'10 /W'"NF3) PP M@$'@(^[@#PGH!.O0!!%(17GP#T= @1:(@?[7;$GB .8/NZ!#"+8;$X "")' M!R2@@SIP74_P#PS8<6F2#D7057)$13[P#QEX/>G 5>G0)3[88(W@!:_0@AG( M=$F2-$;P"C/B$.ZQ!_[01*P 6T^6(KC0!Q-P1RXR=Q<S @LP:QAW)%:P;'^@ M $KE>C5P #CU12@A66*F-_["#HO@!P@P",<PAC;@"R*P#FI"! +0<7>P #O@ M#W?PB)%X#'?@ (M !Y'H#W9P#CJ7B78 #HM0 -P##L B75 +EQ &0<0 6P M"*^X"$<@ (E0!.\2.I"8BY319Q)S#'7 B040 %FFBSQ'&?XP1HG !T_G'CHP M2XM0 0-P#6NF$XMP?0/0B90!B1-3!_:P",@(B:AS!+.4"(LH O(T>(C2)UL2 M,3)S#[<(!#J39<:P#AW@CG<8,4Z 4PT +4> ,PI0!_%P3NM B)IBAL+@$+(U MAP:P;,4P2WV88^MP!<K" %0!QX0<K7W+%:@ $V$ %( !<LV"?^0"5N0!<&Q M <J0"$Y@+ED2"&0@ %_@#REG(CK7<A]E!PRPA9KS<T'G'A$0 #HR"/KP#R<6 M1U3VAT_W=V['-UE&A^@P!1+9,@>@"RBQ",*P#C8 "P$ !1+E<T G=.@@#;U% M#'YB!?ZP,1SI!Q,PDLLV 2<Y$XN@#%B@!2LP#!L0#>L0.FK91&@S)6?(#K2@ M @J!)020" ^0"%<@ &/' H?I!8FYF(TY)+3P @HQ"8P@#/E&"T10:HB9=2!I M!0A@;?!U<EFVE0;P=0Y!)8.8<;86 :2"!7<P NCH!2*@"(0 !B* "98 +_?@ M#:0B G< 22!FUEI#*/ 37]8 +YP!=B##7FSD">"A@! !(BI$'(! ') -$@ M#M$ #6,G!/\!DI*9=5IB!587 G+P+@4P=/:5":X)9>P@ J'C!P[@ 6[C!0PP M"/M G> !8"P#P(@!U/01!"0=1*P ,G0!Q$ 7XNW ,90 "UP!%]Q#]@P"-G M4W;@#>/P )&P M)P#_,0"22*"!1@!..0 .L0#R)ZHBDJ1?70"$[@#5\Q ,[ M#T[P)2R@ '- 2@ V,D (NB"N+P#K *K@-D; B?L">),'988XD*%39IFP M#K-89C,@#2,Y=YKCE5 "V%P5/_ :4?2:9JSA4D:IF.*#D10IOGFI6U8=UNH M> ,)6=CSC&+J'ADVGU!9B%$D1UZP)@5 026P*3$1"HRX,70Y&8M !,C!S&7 M9=<P",( J<(PB:.()?R0"+>X#@IP<X]:/Z*2"#P F*/ B.M CN0CD8V4&CC MB>M #*@# /F *9JBE%T'JGZSEJ<ZH1#SI'%*IW-J !/W$'I79GZ*D AP+3YJ M /U096/$#RR1<86H (R0#8X0#%G' #AE ,0#TXP /GP!/=P#-=#!P0P#A% M"DFP O"P O@0#>DP#Z709@, #WA""OP0=2F2IL6*#J;P#SJ"99:6=6!RJNJI M:N^B=IW0#UUPJ=5)B)*Y LD@H@2B$!'+D(/8CGZ@ .<* .F% *&@!2)0 B*[ M /@0LAE)15D4"EP@ B%@! %'LZD "!D9'WB%#E'0#Q+E>DA0<;CJ#TJY O?' M %FDKMQ&1M<3C\=@172P IHC4>C !@3K7T>CANE@"6]R# ! '.$"[3G'M": M#H@ ,M6!!6W#AL L.T4!%?[7\#0!['!!K2Q#DX0.,P" +U7=^A0!L[67W++ M!SBPILLF"KYTLY07",\ .4&LEZ+)@2P;!F06<NB,Q1PKE#K;WC%AINS"??@ M1K9V 2$[ !<H%Q B,"P ,= ;&N%;!%CAD_)#EZ)GO<0#/JG + @ +?;;'4@ M $E:=;$ #R( 10H0#+30 ZI& :(2D@WP7JY[;"(0,5]' _T*;7CV2+=E "/0 M!P[ ,GP DM@@+;< #(TX +Y0#"20.4>""]- C/26>BP#?G@9+.;<?_ /< MB;1A4.D0)OLK /I'1:K 00;Q&"7G:W/$D730@:ES#UG@C^DP"4VW"%1@ %25 M"),[=^CP",B:#H<@9.! @QF [B B'@@"\ E&29#?L0P>F%@3/Y#]$* .U1 M")!XN@ZANF#94LMV"Y11#ND0"?]PF@/I 0%,CW5P 54V(]P ORSL'M0@)3V M4DR,5XIB &(9E.C0"U2<KDFW=$V'I:46)D[9D(1(IP30!S10:O_@<K2H .E2 MQ'Y@ K >*?9 '50 0&</G0@@^@P"_8 PZ?[AQ!0QMB3 .QKK.$PAH*9;R=L M(YV&#JA L%-R<81HB'ZC $9P#[KHQQC@!'1 !#G'GY'2DR$E")8<1W00 ^N M#J+, O]0 'V@)J9,LP7S#T4 DET@QT<08]CC *7<DS0+4NB !XZLE-$0,=,I M>-%6A^A #8<S(RCL'HG052WCAR." 9$<I@K@'AJPRHNGS:KKE/]@ F" LI!@ M "[P" ; 13@ HS@ 1Y ?Q@'1OA"UE4K=BP"-"P",A@ F7H#Y-@ H@0 $-P M"-F #A4 '=P '+P ^C (7>0#SP NK* PE0!^P@ UZ'#CAU $*@"NA5!PAM M".#@T?DP#A@@T$G B+P700@ CS !760 ":@@R(P12[M,<.0#J+0#HQ0#(M@ M V,Q",8@ +EP/8#@ Q<Q '+P -;Q$8O@#['P!U(Q#A48#W\P!!V1'D.P",'@ M9P.P#<4( (?Z#P/0S_P@KRLP#H?0#2F2""9P'HP #<.1"/4U",4@ ([@$1V0 M!/- "AZM"HZP#8>@#/P' ./@ 'K=6WW-"NBE"N"@#W0 #Y1E!-[WU_6<228 MST7B 5-7#%L7 A\P)(L@%AT0!>C !_K .CA% O1\ '_]$3-@#_PPV B&#TAB M V^!#EZ@#Y]#&=AP7.2A7.D #NS $B[Q#XGP V4A %)Q%5E!#XEP )A\5Z6L M)1^["/_H$VCG=6I7#/BPCJ^)G]:Z<41(19L0>0P@ +:7#I+ 02CQ!W9 18D@ MPB2,/"CL@+%C ",<612P1=ZPW_&B 2GL<09 $@5^/0S,N1<2ELNF!/>@(P'< M;'1P '*T.5\PR#(I *UW#$3@:T93J # <SIYD6CR \)B!Q-C J' &3QL0R& M :AC![>:*7!GE4HG ,V&I13Y+$9@+BZ'XLUH !>9D1AH$.DC9K%5)*[7!<[6 MO,9@50!KK*Q0O\D*KL9PQM'V)3JP* V,5D:P8 3);931Y8)8)&CSL8P@',"0 MC1[=W%)Q#\MLB(,=DN9])8;XYL.1I,W-#U(AUO< #4BPYRG2YM@*YW(>Y_RY M",L@%2N0#8!Z",N0YY>N"GK^Y X9,21#)F8"MCEB#&%2 "" /?9HQH.):KE M ^P"ZO*#XI@#-* #M>@"K,N L5PZXH@#+7.Z\*@Z[>^L6@[B/5TMH=G(L;0 MA5!@ /S0"'X "XG@"WA L-1.L'\CV2U# 3Q0 G0P 8A0 $?@#T[P"G_P#@@% M .D@ <%V#NF@#0,P4(3 "MU.!^4P[=5NL2XI"(B0@_T>",=@"'R $O\0\/'U MAP' "IC@SY, ".L @,*!G-0!(KP"?^Y",/0 Q8 />=#H:PC>,[#IET"MQP M 2. 0V 6& 2Q?"!C@"!A #!C #!BP!!B #QA #1B #1C #1A@!!DP#QE M"1DP"QG@ AN0!4F_]#. 3^ >G ! , "/W@T/@ "#DH1J! ]0[=#E@/".]2 M"5Q_!^( 7X&P G2@"(A@!8&P#H4P]CEM!H#P#>F0@F.O 5\/ NG0!D5<]7?@ M _90Y@)0!PJ6@PA0"V)T >F #Y2AR>*T*#_1#P(P!PF0" +_#[5 14#0]P10 M!^%@^?'E#\6P#O! ]00P!]10"^TN"2P YA ]0)PB;4@ (=P^>!+#6WR)N(0 M )>_#LE@^G70"K4?7^#+"[D/)[P?7^L0"U\/ ;50 .MPLW+_#L^_#J%P"P@ MJK?P<@IP"Q P"^D@ -JP[($ ,9@"'O0(XA@"7I L(XOHNL0 =M__ND? .O? M_H!ZBIEP!$<P4 H0^( >HZC?ROUR()!0L@#.KZ]00 [8=P!8IP#$*G".AO M5%. #H10#Q;@-I9 _-( $'\&I/L&()TZ (@LZ?F7R(Z"1GX,+?*"X-^-(4,2 M4;1G!! (.@\L8M2(P,(!=,#ZP=*ARB0Z7/V,%0!@S-">?P F0&TKY$30ROR M'7JVR)*??SNB_1&P*%HZ1P :*DBX<)$?!(L*##*"0(!)B(=H12V0*T#!5%$= M4OUG%0%'CW48+.JQM:N' PO^K5- C"Y7 HR +3A6I\#=7^1(H -04%. '8Z. MVB&P*+)>-9#23E7(]FKEHPN2]1F0RP" *U$:>3DT10HNLR(Z0D'W+U_=D@? MOD5 IT)1/O\62//38'%!)0%61/,S()$508J,!%( C(X$$X!ZM*##X,D@-X(" M#'H.P 2B L;3D0BPZ-XB7WC8>@(.JT!L0#P*U)&AR-1"0/R\44<#@_@A" !_ MC'",$>$!L X' .)!1P$ 8E&'!( X 0@0@ZPCP'>""-!' 0L>", 3@CRE@!U M/+!. K" D)XW "RQ0S9_S/,6$-;! D-ZRP"@B"$+I1<, (L\)YP?+:R@S K: MF* ( 3QLAP /'U&Y0AT*F,!*>I\ D,02AR@SC@(^IA<) .+84^8*V8QS'2OG M'>&/$Z_\84!ZA[#IS@+;^"'7,C$:MPYF;-J3CA'\2-766R!P.5== MRUC@%] MU44 +E H((1KPQ@!"LF)%) .A?PLX@=A+P7'RPE&+I"9JQ05T<]@/CQ"A1] M[,G8.BAD=L BHZZ31&97Y/+//[ ((\K]T23Q!=8%# /^ 4^>=K_AA0+77 M9CM%%%(8T(@1L*R S[FP0''%/W8P\(\5#A@#*A0!^,$*1+ <H$466X"++3B+ ME-/%%UX(@P 5EQ1Q2+L!,*.(D@:P0 0/0@ P!P%S !,.M@@25$TX]QSB PB MY&0=O/(Z!"\"Z!0#P"#$&)!.+A4KD(@A\5G%0".V@/8/'64\L8@G\?W#\S^* M'("((7?\ P@^"M1!@#$$-&#$D%$C0H 1C1ARU"+6K !-(/H @ ?SX0]=MG0 M),*9%&[_ \7+Z* Q<\T[ [<#D4.;L@ P<O! + ,K'#. (<"M /@Z0M1-MMER M+R2<'2_0+;;=>+.PMP%](P4X'18,SC$NRZX#P>&+-_[X (<7?+ 7PSS,SD0$ MD&PRR@#P]@ L D#A,11W3X:.+O$43 L0N"_B!%96&-!,"'(\ 7N) ?R".\0 M8+$. ;,%$4\7PS3\B\:^:!""ZO<0(<"U$UJ!3CGL9.&=,0[D50<[" \# "0 M 54'.P@/ P D NHU)$CYDV+(2!:@!CR!DX>.6G.H*$# L68%"!BY,!Q X20 M-W+8A'%#!D02-W38N ! )(V=-&3*@"@C1P[(!@J"B'$#LDT8-B#@V#PC)TP; M$'1HMDGC)@R=-&_<X 0 "8,?$U0;6.N@P,,.#P ! @+X . #F4!@#6[-FW; MMG7FA#E31@?2-W7&H &QI<48.UWXMBA)QFF9P'TI/FUS&(29-&S*S(%39HR+ MRPH T,&K-Z.+& D5BLD# J+>,')*HD%-](V=,BQ S"D#AXX+$#(Z:N28><@8 M(CK(Z*"B@XX.*W8T<]Y+TZ8<$'9+S)$.0'I"$-2O,[7S$R:(PDFA@XC+](SL M/'.2'@5?!H!V-]S9>%\LTRYY-^;GH%>/- UC -MU5U)#3T4E&V5CI/$839GQ MY!ADDMUU5UYH9/989"#P1)$9>)&4V69O@."3&Z0U5(8;#T8V1V9AC#&&9'-\ M=V(:99"1V1UHA'@:?C6*2-H8;\3T0V9E[/7#>&ZLP=,=*#8'$I$U@00"D#&) M5X*-82GP11EXP,':3%$^9Y>#C+4!$FD</G?AB49)EIF67'HIAWE.BGE7B".B M"6%3C*T8UEAD = "710!V<:()<GGADP$0N5&H.Y!DD (E%(* B02! $) \( M (D"FQY 20&$ )!9L:@ &I")P*Q*M @$!5($(Q18<9XIG!QAM.E1?4&[8Z MUI-3,6H(@J)KU(C3'&.,A*M=NO+Z%'Z_!INF3W04^P9%R"J;F30)@ MN6 D( M0!4"&H20I0!C07( "NH"(,"\5!U@0[QA_5,O$?@"H*^[4O3[[P%@"%RO&P:[ MRT?"!RC","8,F\(P+0P+PS T#'O#,#L,Z\,P B($.K %(9,U, DB! "" "N# M0$#+_T "EK_ZAC7!O 048 "/%-000$3_&-! 18($',#!100,P0/_/./T4T[ M_4_03PM00*=2!\UIT&3I(H+7"(P P0@HC"#$"%&,4,8(=XQPR B<C,#*",F, MT,T([(P EA-4 "!R0(08(4)(!!0APD"$(")7R?:@H)M)"@=Q%A@@ # "?% MYYT9=;@Q1H$HNE%'&V+0!( 3(<Y!88J,/D=&&G)4MID<>0 A5-[&<MAYV0 M0,4;>(Y4(F4HKCF'[4JE,<<<CLKH!HV]"Q%&26MF.'KI<@#01!EFT@X":FPB M5=0<:-1X^K8S\52'1%."U%[F HK(_9D@B+'K&&M\3P89L2^/.7SQ.]%+;.(& MQJ#D?YJCWK#H@,#XM>A%RVM?3!HH'\(X)0SGD\WJ8O*2%P$@"'103VUZM)G2 MS.\U4QI([%#R'=C)[DSGHXA<&".C#K8'=2)R'^N.![\*?F].HSL1 X,PIV,I M3S' JU]$ % $/%1&6'+ %IB< X AV&1Y@RF##8V8).WA[H=G".(!I2"9.K ! MB2$2R9S:4X4D+:E)8:K.'*+C)P T@"H&@ *1,<&-J0 #"(@0QF0(,:V. & M.,A!$(0P!"(4P0@ F, $ C !"DA2DN::P (, $$%$!2$_A4 AQ@ 0<<( &7 MG$ %0ID !H12 0\8I0-,B<H)&& "$5! R0)@0DL0)*N=!< EI$ 8KXB ;A MIC(!&@A43U5#2"Y-04X )24EW 0 #L/W&Y:M-T' ,#10$I/*DRA D*&*D M2) A,,@;D TF=*"R),I(*K02<,F#9T\#!,0-(A08<"3"IP$:5(D8 (Z;^J, M00.B!8@V;\BD,9,'!!TT94"0"4,G:!@W9'RF:1-T#ITP;>" ,/-&CD^@(-Q M+9/4#,<R*.:D0#DEBY,G4*8DF>(2IDR:6UJ,L=,%1-RD0XO6C4M'*=.Z7MF4 MF0.GS!@7B%$2*3)EB)0D4*@D>>+$)968,T&$8</FS9TY(/+$]/GF9LZ=/7\& MS6L4J=^@;\R 8!/&*8@[<CPV?1K5)56KJK-N[?HU; H7(+*,;A.F)V'#J*^N M)MJ:S(NJK]MBIID&-$P0=>:480$"N^@Z-YO/+M/7;68R9<R$J<.F?>G@<_(X M+=-&*'671UF'W49,(9>$;,$%%M1W8BRX'5="O3%85F_T508>W=%!GGMHN'0' M1VR ,(8<95 '@D<NH"32=B#,40<<<%1%AW=84<699VFX<49Y<&STAAMSZ*"B M7 P1\>,)?<T'DUPDFJ@@C41%Z :2(%R888H"*9! "W8PQ$2&TI'V%H1/DM8B M'63$1 >6+K6 EXD)5"%>F,^-L5,:$+)V(I!%A9%4;'3J5U0;+C'$&G)48*6G M4[GI>%-X?36X9YB_$:HE0SS@Y,9//O 7T=M=#I4'J*6 6JG>90HAP_(-?'C M3X_:UF"A"1RU9U%GE&%5CF'*<52N=L6 6 PR=+&#?SVU 2D(DAY%:XZXZCII M<+[J&-06PKK '!Y?L/;%;U]H^I.QM*8:AE7*RMK:K67DNFM$U/Y:!JW8YH # M#(C)$ ,,,'2Q(1HQG0'7O8CED$-=S/4D:7@0UJ89K7, +,=/ 4Y557^_@1"# MO?BZL+'!B"IJZE*ZH=L<K<VZT9,;/[;@1AU,Y3:&B&B<&\881<G!II8MM+=4 M4''.B5]A=GH%(8%!Y;B?G^4AB%5^^UD:$M(A+_CSF8WNF&ZD2<-;X\6T\@!P M':MZ.G*HF>;HPQ9FG\J#>&/XT 5R2,2$[K*S7EIK1-"V*RVO\5IK5\<RS&#L M3;QNS6QKSV[J][N]RCLX8C4<?&QP;_28QH^;M6@8K8JGS*Z[TV)5+;!;=%QY M78G.J_>G).><GL*MK=SRRS&G,?-,-N.LZ\XBU?A5G2# 83-3.1LW^^*:J;S> M&1XM9>)$%5TTU?!$ ^A:PGN.P48=\#7?DQV;I9$4]19A]"$;9(QQ;E*\^^J[ M'', ?V#S5<HA!W9OC#$&V: A ]ERM*/@$&50/8(03G3B%??Y*")A>8MFYM 6 M.>2!@&9:8'3"T*(ZB,%-:2 1SJJ2AQ20AX-,F<,<P@"L%5[047,H31A@I"H* M:@EP6%$3'.K0%S=<R#YAFB$<]C?$-#@)>X9!%(M4XP:7C.%5.:K#A#X$J^#X M$ ]]>1+1E"A!$M&!;$#"GY7ZXA2BA,<E@+(BS!ID%4"5*6-W0(/N:!(<#DTE M#%_Y4T18)@?FA&B,:+2*#&I0 XM9A8/R><H?,;0FE 2A"E1 PA.DX!(IS/%] M($#"N<ZP/SNX3B07<E@2^"0'F)5A4W,@SR@/XQ(HN. )R!'"&_ AS8( <S M@$$-R-.&%X &!S2XP0Q:21N6D8<*6'#(#6H UNZ1%\T>$$-EMD"&A +!RC) 29I9"TI M: P$70@( P*B 1H end X---- cut here ----X---- cut here ----X---- cut here ----X---- cut here ----X--- sorry about that... richard hargrove ...!inhp4!killer!richardh ------------------------- "Goin' back to Dallas, take my razor and my gun;" "Some redneck lookin' for trouble, sho' gon' t'get him some." Johnny Winter, "Dallas" -----------------------