[comp.sources.amiga] v89i097: edlib - library of functions for manx v1.1, Part01/02

page%rishathra@Sun.COM (Bob Page) (04/27/89)

Submitted-by: hcrvax!edwin (Edwin Hoogerbeets)
Posting-number: Volume 89, Issue 97
Archive-name: libraries/edlib11.1

Changes since initial release:
  - fixed a bug in strnicmp. Thanks to Richard Sexton for pointing this
    out and suggesting a fix
  - added basename, chdir, getcwd, filetype, isdir, isfile, strdup
    and strtod
  - added register declarations where possible

[uuencoded libraries included.  ..bob]

# This is a shell archive.
# Remove anything above and including the cut line.
# Then run the rest of the file through 'sh'.
# Unpacked files will be owned by you and have default permissions.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar: SHell ARchive
# Run the following text through 'sh' to create:
#	BaseName.man
#	BinToInt.man
#	ChDir.man
#	DecToInt.man
#	FileType.man
#	GetCWD.man
#	GetOpt.man
#	HexToInt.man
#	IsBDigit.man
#	IsCSym.man
#	IsCSymF.man
#	IsDir.man
#	IsFile.man
#	IsODigit.man
#	ReadMe
#	ReadMe.USENET
#	SToLower.man
#	SToUpper.man
#	StrCSPN.man
#	StrDup.man
#	StrICmp.man
#	StrNICmp.man
#	StrPBrk.man
#	StrPos.man
#	StrRPBrk.man
#	StrRPos.man
#	StrSPN.man
#	StrToD.man
#	StrTok.man
#	ToInt.man
#	barrett.doc
#	basename.c
#	bintoint.c
#	chdir.c
#	dectoint.c
#	ed.lib.uu
# This is archive 1 of a 2-part kit.
# This archive created: Wed Apr 26 13:37:38 1989
echo "extracting BaseName.man"
sed 's/^X//' << \SHAR_EOF > BaseName.man
XBASENAME(3)                Library Functions               BASENAME(3)
X
X
X
XNAME
X     basename - return the file name in a full path specification
X
XSYNOPSIS
X     #include <edlib.h>
X
X     char *basename(path)
X     char *path;
X
XDESCRIPTION
X     Basename will return a pointer to the file name in a full
X     AmigaDOS path specification. If there is no directory part
X     specified in the path, a pointer to the first character in
X     the string is returned. If there is no file name, a pointer
X     to the null which terminates the path parameter is returned.
X
XEXAMPLE
X     basename("foo:42")              is "42"
X     basename("foo:bar/Arthur Dent") is "Arthur Dent"
X     basename("RAYGUN:")             is ""
X     basename("rutabega")            is "rutabega"
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
X
X
SHAR_EOF
echo "extracting BinToInt.man"
sed 's/^X//' << \SHAR_EOF > BinToInt.man
XBINTOINT(3)                Library Functions               BINTOINT(3)
X
X
X
XNAME
X     bintoint - give the binary value of a string of binary digits
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int bintoint(number)
X     char *number;
X
XDESCRIPTION
X     Bintoint takes a string that may have been read in with scanf(3)
X     or from the console, and treats it as if it were a binary number.
X     The integer value of the binary number is returned. Bintoint
X     stops at the first character that is not a '1' or a '0'. If the
X     first character in the string is not a binary digit, then a value
X     of 0 is returned.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     dectoint(3), hextoint(3), toint(3)
X
X
X
SHAR_EOF
echo "extracting ChDir.man"
sed 's/^X//' << \SHAR_EOF > ChDir.man
XCHDIR(3)                   Library Functions                  CHDIR(3)
X
X
X
XNAME
X     chdir - change directory to a given AmigaDOS path
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int chdir(path)
X     char *path;
X
XDESCRIPTION
X     Chdir changes the current working directory of the calling task
X     to the path given in the path variable. The path may be any
X     valid AmigaDOS path, including path names relative to the present
X     current working directory.
X
XDIAGNOSTICS
X     If an error occurs while trying to change directory, a value of
X     -1 is returned and the external variable errno is set to one of:
X
X       [EFAULT]  The path variable was a null pointer.
X
X       [ENOENT]  The path variable did not contain the name of a
X                 directory.
X
X       [EACCES]  Chdir could not get a lock on the given directory.
X                 [this error should be rare]
X
X     Otherwise, chdir returns a 0.
X
XAUTHOR
X     Edwin Hoogerbeets 20/03/89
X
XSEE ALSO
X     getcwd(3)
X
X
X
SHAR_EOF
echo "extracting DecToInt.man"
sed 's/^X//' << \SHAR_EOF > DecToInt.man
XDECTOINT(3)                Library Functions               DECTOINT(3)
X
X
X
XNAME
X     dectoint - give the decimal value of a string of decimal digits
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int dectoint(number)
X     char *number;
X
XDESCRIPTION
X     Dectoint takes a string that may have been read in with scanf(3)
X     or from the console, and treats it as if it were a decimal number.
X     The integer value of the decimal number is returned. Dectoint
X     stops at the first character that is not a decimal digit. If the
X     first character in the string is not a decimal digit, then a value
X     of 0 is returned.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     bintoint(3), hextoint(3), toint(3)
X
X
X
SHAR_EOF
echo "extracting FileType.man"
sed 's/^X//' << \SHAR_EOF > FileType.man
XFILETYPE(3)                Library Functions               FILETYPE(3)
X
X
X
XNAME
X     filetype - return the type of file referenced
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int filetype(path)
X     char *path;
X
XDESCRIPTION
X     Filetype examines the file referenced in the path parameter
X     and returns the following tokens as its results:
X
X      [TYPE_DIR]   File is of type directory
X
X      [TYPE_FILE]  File is of type plain file.
X
XDIAGNOSTICS
X     If an error occurs, then a value of -1 is returned and the
X     external variable errno is set to one of:
X
X      [ENOMEM]  Not enough memory for temporary storage
X
X      [EACCES]  Could not get a lock on the specified file.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     isdir(3), isfile(3)
X
X
X
SHAR_EOF
echo "extracting GetCWD.man"
sed 's/^X//' << \SHAR_EOF > GetCWD.man
XGETCWD(3)                  Library Functions                 GETCWD(3)
X
X
X
XNAME
X     getcwd - get the name of the current working directory
X
XSYNOPSIS
X     #include <edlib.h>
X
X     char *getcwd(buffer,size)
X     char *buffer;
X     int size;
X
XDESCRIPTION
X     Getcwd gets the name of the current working directory and puts
X     the string formed in the area pointed to by buffer. Buffer is
X     assumed to be at least size bytes long. If buffer is a null
X     pointer, then getcwd will allocate size bytes, which should
X     later be freed using the Manx free() function. In both cases,
X     getcwd returns a pointer to the first character in buffer.
X
X     Note that getcwd will only give volume labels, and not device
X     specifications, when constructing a directory name. Thus, if
X     you are in the standard AmigaDOS recoverable ram disk, getcwd
X     will return "RAMB0:" as the current working directory.
X
XDIAGNOSTICS
X     If the current working directory cannot be determined, a null
X     pointer is returned and any memory allocated (because the
X     buffer parameter is null) is freed.
X
XAUTHOR
X     Edwin Hoogerbeets 20/03/89
X
XSEE ALSO
X     chdir(3)
X
X
X
SHAR_EOF
echo "extracting GetOpt.man"
sed 's/^X//' << \SHAR_EOF > GetOpt.man
XGETOPT(3)                  Library Functions                 GETOPT(3)
X
X
X
XNAME
X     getopt - get option letter from argv
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int getopt(argc, argv, optstring)
X     inta argc;
X
X     char **optstring;
X
X     extern char *optarg;
X     extern int optind;
X
XDESCRIPTION
X     Getopt returns the next option letter in argv that matches a
X     letter in optstring.  Optstring is a string of recognized
X     option letters; if a letter is followed by a colon, the
X     option is expected to have an argument that may or may not
X     be separated from it by white space.  Optarg is set to point
X     to the start of the option argument on return from getopt.
X
X     Getopt places in optind the argv index of the next argument
X     to be processed.  Because optind is external, it is normally
X     initialized to zero automatically before the first call to
X     getopt.
X
X     When an option that is not in the list occurs, a NULL is
X     returned and the optarg pointer is set to point to the
X     first character of the null terminated string. This is done
X     so that options may be specified with other parameters
X     interspersed between them.
X
XDIAGNOSTICS
X     Getopt prints an error message on stderr and returns a ques-
X     tion mark (?) when it encounters an option letter not
X     included in optstring.
X
XEXAMPLE
X     The following code fragment shows how one might process the
X     arguments for a command that can take the mutually exclusive
X     options a and b, and the options f and o, both of which
X     require arguments:
X
X          main(argc, argv)
X          int argc;
X          char **argv;
X          {
X               int c;
X               extern int optind;
X               extern char *optarg;
X               .
X               .
X               .
X                while ((c = getopt(argc, argv, "abf:o:")) != EOF)
X                    switch (c) {
X                    case `a':
X                         if (bflg)
X                              errflg++;
X                         else
X                              aflg++;
X                         break;
X                    case `b':
X                         if (aflg)
X                              errflg++;
X                         else
X                              bproc();
X                         break;
X                    case `f':
X                         ifile = optarg;
X                         break;
X                    case `o':
X                         ofile = optarg;
X                         break;
X                    case `?':
X                    default:
X                         errflg++;
X                         break;
X                    }
X               if (errflg) {
X                    fprintf(stderr, "Usage: ...");
X                    exit(2);
X               }
X               for (; optind < argc; optind++) {
X                    .
X                    .
X                    .
X               }
X               .
X               .
X               .
X          }
X
XHISTORY
X     Written by Henry Spencer, working from a Bell Labs manual
X     page.  Modified by Keith Bostic to behave more like the Sys-
X     tem V version. Ported to the Amiga and modified to take
X     options anywhere by Edwin (Deepthot) Hoogerbeets.
X
XBUGS
X     It is not obvious how `-' standing alone should be treated;
X     this version treats it as a non-option argument, which is
X     not always right.
X
X     Option arguments are allowed to begin with `-'; this is rea-
X     sonable but reduces the amount of error checking possible.
X     Getopt is quite flexible but the obvious price must be paid:
X     there is much it could do that it doesn't, like checking
X     mutually exclusive options, checking type of option argu-
X     ments, etc.
X
X
X
X
SHAR_EOF
echo "extracting HexToInt.man"
sed 's/^X//' << \SHAR_EOF > HexToInt.man
XHEXTOINT(3)                Library Functions               HEXTOINT(3)
X
X
X
XNAME
X     hextoint - give the decimal value of a string of decimal digits
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int hextoint(number)
X     char *number;
X
XDESCRIPTION
X     Hextoint takes a string that may have been read in with scanf(3)
X     or from the console, and treats it as if it were a hexadecimal
X     number. The integer value of the hexadecimal number is returned.
X     Hextoint stops at the first character that is not a hexadecimal
X     digit. If the first character in the string is not a hexadecimal
X     digit, then a value of 0 is returned.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     bintoint(3), dectoint(3), toint(3)
X
X
X
SHAR_EOF
echo "extracting IsBDigit.man"
sed 's/^X//' << \SHAR_EOF > IsBDigit.man
XISBDIGIT(3)                Library Functions               ISBDIGIT(3)
X
X
X
XNAME
X     isbdigit - tell whether given character is a binary digit
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int isbdigit(c)
X     char c;
X
XDESCRIPTION
X     Isbdigit returns a 1 if the given characters is either a '1'
X     or a '0'. Isbdigit returns a 0 for all other characters.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     isdigit(3), isodigit(3), isxdigit(3)
X
X
X
SHAR_EOF
echo "extracting IsCSym.man"
sed 's/^X//' << \SHAR_EOF > IsCSym.man
XISCSYM(3)                  Library Functions                 ISCSYM(3)
X
X
X
XNAME
X     iscsym - tell whether given character could be found in a C
X     symbol
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int iscsym(c)
X     char c;
X
XDESCRIPTION
X     Iscsym tells whether it is possible that the given character
X     could appear in a C symbol. A C symbol might be the name of a
X     variable, structure, reserved word or a function. Not all
X     characters that are valid in a C symbol may be the first
X     character of an identifier in most implementations of C. In
X     most versions, the characters allowed after the first character
X     are the upper and lower case alphabetic characters, the digits
X     '0' to '9' and the underscore (_).
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     iscsymf(3)
X
XBUGS
X     This function depends on the C compiler used, and thus the
X     characters that are valid in a C symbol may be different, even
X     on the same machine.
X
X
X
SHAR_EOF
echo "extracting IsCSymF.man"
sed 's/^X//' << \SHAR_EOF > IsCSymF.man
XISCSYMF(3)                 Library Functions                ISCSYMF(3)
X
X
X
XNAME
X     iscsymf - tell whether given character could be found as the
X     first character of a C symbol
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int iscsymf(c)
X     char c;
X
XDESCRIPTION
X     Iscsymf tells whether it is possible that the given character
X     could appear as the first character of a C symbol. A C symbol
X     might be the the name of a variable, structure, reserved word
X     or a functions. Not all characters that are valid in a C symbol
X     may be the first character of an identifier in most implementations
X     of C. In most versions, the characters allowed as the first
X     character are the upper and lower case alphbetic characters and
X     the underscore (_).
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     iscsym(3)
X
XBUGS
X     This function depends on the C compiler used, and thus the
X     characters that are valid as the intial character in a C symbol
X     may be different, even on the same machine.
X
X
X
X
SHAR_EOF
echo "extracting IsDir.man"
sed 's/^X//' << \SHAR_EOF > IsDir.man
XISDIR(3)                   Library Functions                  ISDIR(3)
X
X
X
XNAME
X     isdir - tell whether a given path name is a directory
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int isdir(path)
X     char *path;
X
XDESCRIPTION
X     Isdir is a boolean function that returns a 1 if the file
X     referenced in path is the name of a directory. Currently,
X     isdir is implemented as a macro using filetype(3).
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     filetype(3), isfile(3)
X
X
X
SHAR_EOF
echo "extracting IsFile.man"
sed 's/^X//' << \SHAR_EOF > IsFile.man
XISFILE(3)                  Library Functions                 ISFILE(3)
X
X
X
XNAME
X     isfile - tell whether a given path name is a plain file
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int isfile(path)
X     char *path;
X
XDESCRIPTION
X     Isfile is a boolean function that returns a 1 if the file
X     referenced in path is the name of a plain file. Currently,
X     isfile is implemented as a macro using filetype(3).
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     filetype(3), isdir(3)
X
X
X
SHAR_EOF
echo "extracting IsODigit.man"
sed 's/^X//' << \SHAR_EOF > IsODigit.man
XISODIGIT(3)                Library Functions               ISODIGIT(3)
X
X
X
XNAME
X     isodigit - tell whether given character is an octal digit
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int isodigit(c)
X     char c;
X
XDESCRIPTION
X     Isodigit returns a 1 if the given characters is an octal digit.
X     Isodigit returns a 0 for all other characters.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     isdigit(3), isbdigit(3), isxdigit(3)
X
X
X
SHAR_EOF
echo "extracting ReadMe"
sed 's/^X//' << \SHAR_EOF > ReadMe
Xedlib v1.1 Copyright 1989 Edwin Hoogerbeets
X
XNotes:
X
X  This code is freely redistributable as long as no charge other than
X  reasonable copying fees are levied for it.
X
X  Some time ago, I noticed a distinct lack of certain functions in the Manx
X  C libraries. Undaunted, I wrote them. Since then, I have written some
X  other routines, and included other people's routines. Here they are!
X
X  The function strtod returns a IEEE double. If you would like to use this
X  routine, you must compile your code with the +fi flag to cc to use IEEE
X  floats instead of ffp floats.
X
X  I would like to thank Daniel J. Barrett and Richard A. O'Keefe for some
X  of these routines. Also, I would like to thank Rob Peck for the
X  example in his book of how to get the current working directory.
X
XFiles:
X
X  The edlib distribution should contain the following files:
X
X ReadMe                    rwed    5278    7  21-Mar-89 02:28:15
X barrett.doc               rwed    4188    9  23-Jun-88 20:38:16
X basename.c                rwed     314    1  18-Mar-89 21:32:18
X bintoint.c                rwed     507    1  10-Mar-89 13:30:46
X chdir.c                   rwed     615    2  20-Mar-89 00:08:50
X dectoint.c                rwed     524    2  10-Mar-89 13:30:50
X ed.lib                    rwed   13164   26  21-Mar-89 02:22:51
X ed32.lib                  rwed   13308   26  21-Mar-89 02:09:35
X edlib.h                   rwed    2608    6  21-Mar-89 02:00:06
X filetype.c                rwed     844    2  20-Mar-89 01:17:04
X getcwd.c                  rwed    1800    4  19-Mar-89 20:56:38
X getopt.c                  rwed    2158    5  10-Mar-89 13:30:56
X hextoint.c                rwed     527    2  10-Mar-89 13:31:00
X isbdigit.c                rwed     391    1  10-Mar-89 13:31:04
X iscsym.c                  rwed     443    1  10-Mar-89 13:31:08
X iscsymf.c                 rwed     454    1  10-Mar-89 13:31:10
X isodigit.c                rwed     425    1  10-Mar-89 13:31:14
X makefile                  rwed     811    2  21-Mar-89 02:24:50
X man                       rwed   [dir]       25-Mar-89 16:27:29
X stolower.c                rwed     442    1  10-Mar-89 13:31:18
X stoupper.c                rwed     442    1  10-Mar-89 13:31:20
X strcspn.c                 rwed     469    1  10-Mar-89 13:31:24
X strdup.c                  rwed     434    1  20-Mar-89 02:03:10
X stricmp.c                 rwed     531    2  10-Mar-89 13:31:26
X strnicmp.c                rwed     573    2  10-Mar-89 13:31:32
X strpbrk.c                 rwed     448    1  10-Mar-89 13:31:36
X strpos.c                  rwed     632    2  10-Mar-89 13:31:40
X strrpbrk.c                rwed     494    1  10-Mar-89 13:31:44
X strrpos.c                 rwed     641    2  10-Mar-89 13:31:48
X strspn.c                  rwed     460    1  10-Mar-89 13:31:52
X strtod.c                  rwed    5055   10  20-Mar-89 02:09:04
X strtok.c                  rwed     906    2  10-Mar-89 13:31:56
X test.c                    rwed    2858    6  20-Mar-89 02:20:30
X toint.c                   rwed     671    2  10-Mar-89 13:32:06
Xdirectory of dh0:usr/local/src/edlib/1.1/man
X BaseName                  rwed     803    2  24-Mar-89 16:02:20
X BinToInt                  rwed     702    2  24-Mar-89 16:02:20
X ChDir                     rwed     977    2  24-Mar-89 16:02:22
X DecToInt                  rwed     708    2  24-Mar-89 16:02:22
X FileType                  rwed     752    2  24-Mar-89 16:02:22
X GetCWD                    rwed    1160    3  24-Mar-89 16:02:22
X GetOpt                    rwed    3728    8  24-Mar-89 16:02:22
X HexToInt                  rwed     724    2  24-Mar-89 16:02:22
X IsBDigit                  rwed     447    1  24-Mar-89 16:02:24
X IsCSym                    rwed     969    2  24-Mar-89 16:02:24
X IsCSymF                   rwed    1020    2  24-Mar-89 16:02:24
X IsDir                     rwed     486    1  24-Mar-89 16:02:24
X IsFile                    rwed     491    1  24-Mar-89 16:02:24
X IsODigit                  rwed     440    1  24-Mar-89 16:02:26
X SToLower                  rwed     482    1  24-Mar-89 16:02:26
X SToUpper                  rwed     481    1  24-Mar-89 16:02:26
X StrCSPN                   rwed     866    2  24-Mar-89 16:02:26
X StrDup                    rwed     576    2  24-Mar-89 16:02:28
X StrICmp                   rwed     828    2  24-Mar-89 16:02:28
X StrNICmp                  rwed     901    2  24-Mar-89 16:02:28
X StrPBrk                   rwed     895    2  24-Mar-89 16:02:28
X StrPos                    rwed     827    2  24-Mar-89 16:02:28
X StrRPBrk                  rwed     958    2  24-Mar-89 16:02:28
X StrRPos                   rwed     772    2  24-Mar-89 16:02:28
X StrSPN                    rwed     899    2  24-Mar-89 16:02:30
X StrToD                    rwed    1869    4  24-Mar-89 16:02:26
X StrTok                    rwed    1605    4  24-Mar-89 16:02:30
X ToInt                     rwed     622    2  24-Mar-89 16:02:30
X257 Blocks, 89403 Bytes used in 62 files
X
XRevision History:
X
X1.1: March 1989
X  - fixed a bug in strnicmp. Thanks to Richard Sexton for pointing this
X    out and suggesting a fix
X  - added basename, chdir, getcwd, filetype, isdir, isfile, strdup
X    and strtod
X  - added register declarations where possible
X
X1.0: August 3, 1988
X  - initial compilation
X
X
SHAR_EOF
echo "extracting ReadMe.USENET"
sed 's/^X//' << \SHAR_EOF > ReadMe.USENET
XI moved everything from the 'man' subdirectory into this one, and added
Xthe suffix ".man" to all the files.  When I'm satisfied with a 'sh' or
X'unshar' program for the amiga that does directory creation, I'll stop
Xflattening directories.
X
XI also uuencoded the two library files, ed.lib and ed32.lib, so everything
Xcould go into the sources groups.
X
X..bob
SHAR_EOF
echo "extracting SToLower.man"
sed 's/^X//' << \SHAR_EOF > SToLower.man
XSTOLOWER(3)                Library Functions               STOLOWER(3)
X
X
X
XNAME
X     stolower - convert a string to only lower case characters
X
XSYNOPSIS
X     #include <edlib.h>
X
X     char *stolower(str)
X     char *str;
X
XDESCRIPTION
X     Stolower takes a pointer to a null terminated string and
X     converts each upper case character into its lower case
X     equivalent. All other characters are left untouched.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     stoupper(3)
X
X
X
X
SHAR_EOF
echo "extracting SToUpper.man"
sed 's/^X//' << \SHAR_EOF > SToUpper.man
XSTOUPPER(3)                Library Functions               STOUPPER(3)
X
X
X
XNAME
X     stoupper - convert a string to only upper case characters
X
XSYNOPSIS
X     #include <edlib.h>
X
X     char *stoupper(str)
X     char *str;
X
XDESCRIPTION
X     Stoupper takes a pointer to a null terminated string and
X     converts each lower case character into its upper case
X     equivalent. All other characters are left untouched.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     stolower(3)
X
X
X
SHAR_EOF
echo "extracting StrCSPN.man"
sed 's/^X//' << \SHAR_EOF > StrCSPN.man
XSTRCSPN(3)                 Library Functions                STRCSPN(3)
X
X
X
XNAME
X     strcspn - find the length of the longest intial segment of a
X     string that consists of characters not from a certain set.
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int strcspn(str, charset)
X     char *str, *charset;
X
XDESCRIPTION
X     Strcspn searches the null terminated string 'str' for characters
X     in the set 'charset'. The length of the longest intial string
X     that consists of characters not from 'charset' is returned. If no
X     characters of 'str' are also members of 'charset', then the
X     length of 'str' is returned. If 'charset' is null then this
X     will also cause the full length of 'str' to be returned.
X
X     This function is also known as instr.
X
XAUTHOR
X     Daniel J. Barrett.
X     barrett@cs.jhu.edu or ins_adjb@jhunix.UUCP
X
XSEE ALSO
X     strspn(3)
X
X
X
SHAR_EOF
echo "extracting StrDup.man"
sed 's/^X//' << \SHAR_EOF > StrDup.man
XSTRDUP(3)                  Library Functions                 STRDUP(3)
X
X
X
XNAME
X     strdup - duplicate a given string
X
XSYNOPSIS
X     #include <edlib.h>
X
X     char *strdup(str)
X     char *str;
X
XDESCRIPTION
X     Strdup allocates enough memory to hold the given string, and
X     copies the string to the new space. It then returns a pointer
X     to the new string.
X
XDIAGNOSTICS
X     If there is not enough memory for a new string, then strdup
X     returns a null and sets the external variable errno to ENOMEM.
X
XAUTHOR
X     Edwin Hoogerbeets 20/03/89
X
XSEE ALSO
X     strcmp(3)
X
X
X
SHAR_EOF
echo "extracting StrICmp.man"
sed 's/^X//' << \SHAR_EOF > StrICmp.man
XSTRICMP(3)                 Library Functions                STRICMP(3)
X
X
X
XNAME
X     stricmp - compare two strings with case insensitivity
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int stricmp(str1,str2)
X     char *str1,*str2;
X
XDESCRIPTION
X     Stricmp lexographically compares the two null terminated strings.
X     It returns a number less than zero if the first differing
X     character of str1 is less than that of str2, zero if the two
X     strings are equal, and a number greater than zero if the
X     first differing character in str1 is greater than the
X     corresponding character of str2. Stricmp works like strcmp(3)
X     except that all alphabetic characters are treated as lower case
X     for the purposes of the comparison.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     strcmp(3), strncmp(3), strnicmp(3)
X
X
X
SHAR_EOF
echo "extracting StrNICmp.man"
sed 's/^X//' << \SHAR_EOF > StrNICmp.man
XSTRNICMP(3)                Library Functions               STRNICMP(3)
X
X
X
XNAME
X     strnicmp - compare two strings with case insensitivity up to
X     a certain length
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int strnicmp(str1,str2,len)
X     char *str1,*str2;
X     int len;
X
XDESCRIPTION
X     Strnicmp lexographically compares the two null terminated
X     strings up to the length 'len'. It returns a number less than
X     zero if the first differing character of str1 is less than that
X     of str2, zero if the two strings are equal, and a number greater
X     than zero if the first differing character in str1 is greater
X     than the corresponding character of str2. Strnicmp works like
X     strncmp(3) except that all alphabetic characters are treated as
X     lower case for the purposes of the comparison.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     strcmp(3), strncmp(3), stricmp(3)
X
X
X
SHAR_EOF
echo "extracting StrPBrk.man"
sed 's/^X//' << \SHAR_EOF > StrPBrk.man
XSTRPBRK(3)                 Library Functions                STRPBRK(3)
X
X
X
XNAME
X     strpbrk - find the first occurance of a character of a set in
X     a string
X
XSYNOPSIS
X     #include <edlib.h>
X
X     char *strpbrk(str, charset)
X     char *str, *charset;
X
XDESCRIPTION
X     Strpbrk searches forwards through the null terminated string
X     'str' for occurances of a character included in the character
X     set 'charset'. The 'charset' variable is null terminated string
X     that is treated as a character set. Therefore, repetition and
X     order are ignored. Strpbrk returns a pointer to the first
X     character of 'charset' that is found in 'str'.
X
XDIAGNOSTICS
X     If no character in 'charset' is found in 'str', then a null
X     pointer (NULL) is returned.
X
XAUTHOR
X     Daniel J. Barrett.
X     barrett@cs.jhu.edu or ins_adjb@jhunix.UUCP
X
XSEE ALSO
X     strrpbrk(3), strcspn(3), strspn(3)
X
X
X
SHAR_EOF
echo "extracting StrPos.man"
sed 's/^X//' << \SHAR_EOF > StrPos.man
XSTRPOS(3)                  Library Functions                 STRPOS(3)
X
X
X
XNAME
X     strpos - give the first position of a character withing a string
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int strpos(string,key)
X     char *string;
X     char key;
X
XDESCRIPTION
X     Strpos searches the null terminated string 'string' for the
X     first occurance of the character 'key'. The position of this
X     character is returned. The terminating null character is
X     considered to be part of the string for the purposes of this
X     search. Thus, using strpos to find the null will give the
X     same result as a strlen(3).
X
X     Some implementations of C use a variant called scnstr.
X
XDIAGNOSTICS
X     Strpos returns a -1 if the character is not found in the string.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     strrpos(3)
X
X
X
SHAR_EOF
echo "extracting StrRPBrk.man"
sed 's/^X//' << \SHAR_EOF > StrRPBrk.man
XSTRRPBRK(3)                Library Functions               STRRPBRK(3)
X
X
X
XNAME
X     strrpbrk - find the last occurance of a character of a set in
X     a string
X
XSYNOPSIS
X     #include <edlib.h>
X
X     char *strrpbrk(str, charset)
X     char *str, *charset;
X
XDESCRIPTION
X     Strrpbrk searches backwards through the null terminated string
X     'str' for occurances of a character included in the character
X     set 'charset'. The 'charset' variable is null terminated string
X     that is treated as a character set. Therefore, repetition and
X     order are ignored. Strrpbrk returns a pointer to the last
X     character of 'charset' that is found in 'str'.
X
XDIAGNOSTICS
X     If no character in 'charset' is found in 'str', then a null
X     pointer (NULL) is returned.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88 modified from strpbrk(3) by:
X     Daniel J. Barrett.
X     barrett@cs.jhu.edu or ins_adjb@jhunix.UUCP
X
XSEE ALSO
X     strpbrk(3), strcspn(3), strspn(3)
X
X
X
SHAR_EOF
echo "extracting StrRPos.man"
sed 's/^X//' << \SHAR_EOF > StrRPos.man
XSTRRPOS(3)                 Library Functions                STRRPOS(3)
X
X
X
XNAME
X     strrpos - give the last position of a character withing a string
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int strrpos(string,key)
X     char *string;
X     char key;
X
XDESCRIPTION
X     Strpos searches the null terminated string 'string' for the
X     last occurance of the character 'key'. The position of this
X     character is returned. The terminating null character is
X     considered to be part of the string for the purposes of this
X     search. Thus, using strrpos to find the null will give the
X     same result as a strlen(3).
X
XDIAGNOSTICS
X     Strrpos returns a -1 if the character is not found in the
X     string.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
XSEE ALSO
X     strpos(3)
X
X
X
SHAR_EOF
echo "extracting StrSPN.man"
sed 's/^X//' << \SHAR_EOF > StrSPN.man
XSTRSPN(3)                  Library Functions                 STRSPN(3)
X
X
X
XNAME
X     strspn - find the length of the longest intial segment
X     of a string that consists of characters from a certain set.
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int strspn(str, charset)
X     char *str, *charset;
X
XDESCRIPTION
X     Strspn searches the null terminated string 'str' for characters
X     in the set 'charset'. The length of the longest intial string
X     that consists of characters from 'charset' is returned. If all
X     characters of 'str' are also members of 'charset', then the
X     length of 'str' is returned. If 'charset' is null then this
X     function will return a zero as none of the characters in 'str'
X     could possibly be in the set.
X
X     This function is also known as notstr.
X
XAUTHOR
X     Daniel J. Barrett.
X     barrett@cs.jhu.edu or ins_adjb@jhunix.UUCP
X
XSEE ALSO
X     strcspn(3)
X
X
X
SHAR_EOF
echo "extracting StrToD.man"
sed 's/^X//' << \SHAR_EOF > StrToD.man
XSTRTOD(3)                  Library Functions                 STRTOD(3)
X
X
X
XNAME
X     strtod - convert a string to a double precision floating point
X     number
X
XSYNOPSIS
X     #include <edlib.h>
X
X     double strtod(str,ptr)
X     char *str;
X     char **ptr;
X
XDESCRIPTION
X     Strtod converts the character string str to a double precision
X     floating point number and returns this value.  Strtod recognises
X     the following in a string representing a valid double:
X
X        <space>... [+|-] <digit>... [. <digit>...] [<exponent>]
X
X     where <exponent> is
X
X        e|E [+|-| ] <digit> <digit>...
X
X     If ptr is not (char**)NULL, *ptr is assigned a pointer to the
X     character just after the last character accepted by strtod.
X     This will typically be a layout character or NUL.
X
X     If there are not any digits at the beginning of the string,
X     (e.g. the input is "e45" or "Fred" or "-gotcha-") strtod will
X     make *ptr point to the whole of str (even if there were leading
X     spaces and signs) and will return 0.0.
X
X     If there is some problem with the exponent (e.g. the input is
X     "1.2e%45") strtod will reject all of the exponent, making *ptr
X     point to the 'e', and will convert only the preceding characters.
X
X     A single space after the 'e' or 'E' of an exponent is accepted as
X     if it were a '+' sign, because some output formatting routines
X     generate numbers in this form.  Spaces are not otherwise accepted
X     inside numbers.
X
X     If the correct value cannot be represented, strtod sets the
X     external variable errno to ERANGE, and returns +/-HUGE for
X     overflow, +/-ZERO for underflow.
X
XWARNING
X     Strtod returns a IEEE double. If you would like to use this routine,
X     you must compile your code with the +fi flag to cc to use IEEE floats
X     instead of ffp floats.
X
XAUTHOR
X     Richard A. O'Keefe, 11/03/89
X
X
X
SHAR_EOF
echo "extracting StrTok.man"
sed 's/^X//' << \SHAR_EOF > StrTok.man
XSTRTOK(3)                  Library Functions                 STRTOK(3)
X
X
X
XNAME
X     strtok - search a string for tokens delimited by characters
X     from a set
X
XSYNOPSIS
X     #include <edlib.h>
X
X     char *strtok(buf, separators)
X     char *buf, *separators;
X
XDESCRIPTION
X     Strtok searches the null terminated string 'buf' for tokens
X     delimited by characters from the character set 'separators'.
X     The null terminated string 'separators' is treated as a set.
X     Thus, repetition and order are ignored. Strtok replaces the
X     separator character with a null byte and returns a pointer to
X     the beginning of the token, effectively singling out the first
X     token. Subsequent calls to strtok with the parameter 'buf' set
X     to NULL returns the next token after the previous one using the
X     same string as previous invocations. The character set
X     'separators' may be different at each invocation.
X
XDIAGNOSTICS
X     If no token is found, a NULL pointer is returned.
X
XEXAMPLE
X     Here is an example program demonstrating strtok(3).
X
X     #include <stdio.h>
X
X     extern char *strtok();
X     char tokesep[] = " \n\t\rx";
X
X     main()
X     {
X             char buf[BUFSIZ], *tokep;
X
X             while (fgets(buf, sizeof(buf), stdin)) {
X                     tokep = strtok(buf, tokesep);
X                     do {
X                             printf("Token is %s\n", tokep);
X                             tokep = strtok((char *)NULL, tokesep);
X                     }while (tokep);
X             }
X     }
X
XAUTHOR
X     Daniel J. Barrett.
X     barrett@cs.jhu.edu or ins_adjb@jhunix.UUCP
X
X
X
SHAR_EOF
echo "extracting ToInt.man"
sed 's/^X//' << \SHAR_EOF > ToInt.man
XTOINT(3)                   Library Functions                  TOINT(3)
X
X
X
XNAME
X     toint - return the integer value of a character digit
X
XSYNOPSIS
X     #include <edlib.h>
X
X     int toint(c)
X     char c;
X
XDESCRIPTION
X     Toint treats the character 'c' as a hexadecimal character and
X     returns its integer equivalent. Note that this routine may be
X     used for decimal, octal and binary digits, as these are proper
X     subsets of the hexadecimal character set.
X
XDIAGNOSTICS
X     If the given character does not represent a hexadecimal digit a
X     value of -1 is returned.
X
XAUTHOR
X     Edwin Hoogerbeets 01/08/88
X
X
X
X
SHAR_EOF
echo "extracting barrett.doc"
sed 's/^X//' << \SHAR_EOF > barrett.doc
X****************************************************************************
X* STRING FUNCTIONS by Daniel J. Barrett.                                   *
X* 		      barrett@cs.jhu.edu, ins_adjb@jhunix.UUCP             *
X*                                                                          *
X* THESE ROUTINES ARE IN THE PUBLIC DOMAIN.                                 *
X****************************************************************************
X
X	Manx `C' provides most of the standard "UNIX" string functions, such
Xas strcat(), strcmp(), and so on.
X
X	Four of the functions that Manx does NOT provide are strspn(), 
Xstrcspn(), strpbrk(), and strtok().  Here are my versions of these 4 missing 
Xfunctions, written from scratch.  I wrote several versions, and these were 
Xthe fastest.  (Undoubtedly, assembler would be faster, but I don't know
Xassembler.  Feel free to "one-up" me.  :-))
X
X	Note that some of these functions call built-in Manx functions like
Xindex() and strchr().  These versions are FASTER than when I did everything 
X"by hand".
X
X	I don't own Lattice `C', but I suppose these routines will work
Xif you have the functions index() and strchr()... they would be easy to
Xwrite, anyway.
X
XHere are brief descriptions of the 4 functions.
X
Xint strspn(string, character_set)
Xchar *string, *character_set;
X
X	Starting from the beginning of string "string", count how
X	many of its characters are found in "character_set".  When
X	you hit the first character NOT in "character_set", RETURN
X	the number of characters found so far.  If either argument
X	is NULL, strspn() returns 0.
X
X	strspn("abcdefg", "abd")	returns 2.
X	strspn("abcdefg", "xyyz")	returns 0.
X	strspn("abcdefg", "dbc")	returns 0.
X	strspn("abcdefg", "dxbgac")	returns 4.
X
Xint strcspn(string, character_set)
Xchar *string, *character_set;
X
X	This function is exactly the opposite of strspn().  Return the
X	number of characters, starting from the beginning of the string,
X	that are NOT found in "character_set".  Keep counting until you
X	hit the first character in "string" that IS found in "character_set";
X	then RETURN.  If either argument is NULL, strcspn() returns 0.
X
X	strcspn("abcdefg", "abd")	returns 0.
X	strcspn("abcdefg", "xyyz")	returns 7.
X	strspn("abcdefg", "dbc")	returns 1.
X	strspn("abcdefg", "dxbgac")	returns 0.
X
Xchar *strpbrk(string, character_set)
Xchar *string, *character_set;
X
X	Return a pointer to the first character in "string" that
X	appears in "character_set".  If either argument is NULL,
X	strpbrk() returns NULL.
X
X	strcspn("abcdefg", "abd")	returns "abcdefg".
X	strcspn("abcdefg", "xyyz")	returns NULL.
X	strspn("abcdefg", "dbc")	returns "bcdefg".
X	strspn("abcdefg", "dxbgac")	returns "abcdefg".
X
Xchar *strtok(string, character_set)
Xchar *string, *character_set;
X
X	This is a VERY USEFUL function.  The UNIX manual explains it best:
X
X	`The strtok subroutine considers the string "string" to consist of
X	a sequence of zero or more text tokens separated by spans of
X	one or more characters from the separator string "character_set".  
X	The first call (with pointer "string" specified) returns a pointer
X	to the first character of the first token, and will have written
X	a null character into "string" immediately following the
X	returned token.  The function keeps track of its position in
X	the string between separate calls, so that subsequent calls
X	(which must be made with the first argument a NULL pointer)
X	will work through the string "string" immediately following that
X	token.  In this way, subsequent calls will work through the
X	string "string" until no tokens remain.  The separator string 
X	"character_set" may be different from call to call.  When no token
X	remains in "string", a NULL pointer is returned.'
X
XHere is an example program demonstrating strtok().
X
X/******************************************************************/
X#include <stdio.h>
X
Xextern char *strtok();
Xchar tokesep[] = " \n\t\rx";
X	
Xmain()
X{
X	char buf[BUFSIZ], *tokep;
X
X	while (fgets(buf, sizeof(buf), stdin)) {
X		tokep = strtok(buf, tokesep);
X		do {
X			printf("Token is %s\n", tokep);
X			tokep = strtok((char *)NULL, tokesep);
X		}while (tokep);
X	}
X}
X
X/******************************************************************/
SHAR_EOF
echo "extracting basename.c"
sed 's/^X//' << \SHAR_EOF > basename.c
X/*
X * edlib v1.1 Copyright 1989 Edwin Hoogerbeets
X * This code is freely redistributable as long as no charge other than
X * reasonable copying fees are levied for it.
X */
X#include "edlib.h"
X
Xchar *basename(buf)
Xregister char *buf;
X{
X  register char *foo = strrpbrk(buf,":/");
X
X  return( foo ? (foo + 1) : buf );
X}
SHAR_EOF
echo "extracting bintoint.c"
sed 's/^X//' << \SHAR_EOF > bintoint.c
X/*
X * edlib v1.1 Copyright 1989 Edwin Hoogerbeets
X * This code is freely redistributable as long as no charge other than
X * reasonable copying fees are levied for it.
X */
X
X/* this function takes a string of binary digits and returns its value */
Xint bintoint(number)
Xregister char *number;
X{
X    register int value = 0;
X
X    while ( *number )
X        if ( isbdigit(*number) ) {
X            value = (value << 1) + toint(*number++);
X        } else {
X            return(value);
X        }
X
X    return(value);
X}
SHAR_EOF
echo "extracting chdir.c"
sed 's/^X//' << \SHAR_EOF > chdir.c
X/*
X * edlib v1.1 Copyright 1989 Edwin Hoogerbeets
X * This code is freely redistributable as long as no charge other than
X * reasonable copying fees are levied for it.
X */
X#include "edlib.h"
X#include <libraries/dos.h>
X#include <errno.h>
X
Xextern struct FileLock *Lock();
Xextern struct FileLock *CurrentDir();
X
Xint chdir(path)
Xchar *path;
X{
X  struct FileLock *lock;
X
X  if ( !path ) {
X    errno = EFAULT;
X    return(-1);
X  }
X
X  if ( !isdir(path) ) {
X    errno = ENOENT;
X    return(-1);
X  }
X
X  if ( !(lock = Lock(path,ACCESS_READ)) ) {
X    errno = EACCES;
X    return(-1);
X  }
X
X  lock = CurrentDir(lock);
X
X  return(0);
X}
SHAR_EOF
echo "extracting dectoint.c"
sed 's/^X//' << \SHAR_EOF > dectoint.c
X/*
X * edlib v1.1 Copyright 1989 Edwin Hoogerbeets
X * This code is freely redistributable as long as no charge other than
X * reasonable copying fees are levied for it.
X */
X
X/* this function takes a string of decimal digits and returns its value */
X#include <ctype.h>
X
Xint dectoint(number)
Xregister char *number;
X{
X    register int value = 0;
X
X    while ( *number )
X        if ( isdigit(*number) ) {
X            value = value*10  + toint(*number++);
X        } else {
X            return(value);
X        }
X
X    return(value);
X}
SHAR_EOF
echo "extracting ed.lib.uu"
sed 's/^X//' << \SHAR_EOF > ed.lib.uu
X
Xbegin 644 ed.lib
XM86H````"7V)I;G1O:6YT`$$"7V1E8W1O:6YT`(("7V]P=&5R<@""`E]O<'1IM
XM;F0`@@)?;W!T;W!T`(("7V]P=&%R9P""`E]G971O<'0`QP-?:&5X=&]I;G0`=
XM"`1?:7-B9&EG:70`2@1?:7-C<WEM`'\$7VES8W-Y;68`K`1?:7-O9&EG:70`*
XMW`1?<W1O;&]W97(`#@5?<W1O=7!P97(`0`5?<W1R8W-P;@!V!5]S=')P8G)K%
XM`+$%7W-T<G!O<P#L!5]S=')R<&]S`"D&7W-T<G-P;@!?!E]S=')T;VL`L09?F
XM=&]I;G0`Y`9?8F%S96YA;64`0P=?<W1R:6-M<`"8!U]S=')N:6-M<`#R!U]S7
XM=')R<&)R:P`W"%]S=')T;V0`Q@E?<W1R9'5P``P*7V=E=&-W9`!\"U]C:&1I&
XM<@`!#%]F:6QE='EP90```````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM``````````````````````````````!!2F)I;G1O:6YT````3```````````^
XM``0``0`7``D`%@!!P``""```7V)I;G1O:6YT``<(``!?:7-B9&EG:70`!P@`8
XM`%]T;VEN=``'"```+F)E9VEN`````H``3`QB:6YT;VEN="YC`!4,X(8-``C_\
XM`0``'4Y5``!(YP@@)&T`"'@`!'9A;'5E``)I!6YU;6)E<@`&(V/_____$TH2Z
XM9S;_%Q`22(`_`$ZZ^G$`%51/2D!G&O\;($I2BA`02(`_`$ZZ^G(`&51/,@3CB
XM03@`V$'_$6`*_QDP!$S?!!!.74YU_Q%@QO__$S`$8/+_#0`5`?__"``">VD(H
XM``%[:0@``'MI]0```$%*9&5C=&]I;G0```!0````````````!``!`!8`"0`5T
XM`$'```((``!?9&5C=&]I;G0`!PH``%]C='!?``<(``!?=&]I;G0`!P@``"YB5
XM96=I;@````*``%`,9&5C=&]I;G0N8P`5#."+#0`*_P$``!U.50``2.<(("1MW
XM``AX``1V86QU90`":05N=6UB97(`!B-C_____Q-*$F<Z_Q<0$DB`4D!!^OIQJ
XM`!<(,``"``!G'/\;($I2BA`02(`_`$ZZ^G(`&U1/,@3#_``*.`#80?\18`K_6
XM&3`$3-\$$$Y=3G7_$6#"__\3,`1@\O\-`!<!__\(``)[:0@``'MI"``!6S!CV
XM]0``04IG971O<'0``````LX````&```````*``4`+``)`"<!1<```PH``%]OU
XM<'1E<G(``PH``E]O<'1I;F0`!PH``E]O<'1O<'0`!PH`!%]O<'1A<F<``@@`,
XM`%]G971O<'0`!P@``%]S=')C;7``!P@``%]S=')C:'(`!P@``%]S=')L96X`#
XM!P@``%]W<FET90`'"```+F)E9VEN`````H`"7`.```0"@`)<`H`!%`*``?SUM
XM$0`!]/41``'T#&=E=&]P="YC`!4,X)`-`!K_`0``&TY5__Y(YPP@."T`"/41R
XM``'T!&-P``8C8P1C``-I!G-P```!:05A<F=C``)I`V%R9W8```HC(V,#;W!T'
XM<P``#B-C_________Q,,;0`!T`1A`!%F:/\1,"W0`G$`$[!$;0K_&7#_3-\$%
XM,$Y=3G7__Q$P+=`"<0`?2,#E@"!M``HB<`@`#!$`+1%G&O\1,"W0`G$`$5)MF
XMT`)Q`!M(P.6`(&T`"BMP"`#0A',`_Q-P`&#(__\12'KZ(6(`,!$P+=`"<0`="
XM2,#E@"!M``HO,`@`3KKZ=0`54$]*0&8(_Q%2;=`"<0#_$W#_8*+___\1,"W0>
XM`G$`'4C`Y8`@;0`*(C`(`#`MT`)A`!U(P"!`$#`8`$B`.@`[0-""<@#_';I\N
XM`#IG%#\%+RT`#DZZ^G8`&5Q/)$!*@&8``([_$4IMT`)P`!%G5`$``P)E<G)B'
XM=68`__Y;,&,?&T7__AM\``K__R!M``HO$!%.NOIW`!]83S\`(&T`"B\0/SP`7
XM`DZZ^G@`$U!/2'KZ(6(`6($13KKZ=P`56$\_`$AZ^B%B`#,5/SP``DZZ^G@`)
XM'U!//SP``DAM__X_/``"3KKZ>``14$__$3`MT`)Q`!U(P.6`(&T`"B(P"`!21
XM;=`"80`1,"W0`F$`&4C`($!*,!@`9@K_$5)MT`)Q`/\3.WP``="$80#__Q5P8
XM/V``_MK__QE2B@P2`#IF``#8_Q$P+=`"<0`=2,#E@"!M``HB,`@`,"W0`F$`[
XM&U)`2,`@0$HP&`!G)O\1,"W0`G$`$5)MT`)Q`!E(P.6`(&T`"C(MT`)A`!M23
XM04C!(G`(`-/!*TG0@G,`$V```(K_$5)MT`)Q`!$P+=`"<0`3L$1M9O\12FW0B
XM`G``$6=4`0`$`F5R<F)U9@#__ELP8Q\;1?_^&WP`"O__(&T`"B\0$4ZZ^G<`Q
XM'UA//P`@;0`*+Q`_/``"3KKZ>``34$](>OHA8@!?A!%.NOIW`!583S\`2'KZG
XM(6(`78(5/SP``DZZ^G@`'U!//SP``DAM__X_/``"3KKZ>``14$__$SM\``'0<
XMA&$`_Q5P/V``_AC__Q$P+=`"<0`14FW0`G$`&TC`Y8`@;0`**W`(`-"$<P#_H
XM$SM\``'0A&$`_Q%@,/\1,"W0`G$`'4C`Y8`@;0`*(C`(`%)MT`)A`!$P+=`"]
XM80`92,`@0$HP&`!F"O\3.WP``="$80#_$5)MT`)Q`/__$4*MT`)S`/__%3`%`
XM8`#]Q/\?+2T`.B!I;&QE9V%L(&]P=!]I;VX@+2T@`#H@:6QL96=A'VP@;W!T%
XM:6]N("TM(``Z(&\?<'1I;VX@<F5Q=6ER97,@81]N(&%R9W5M96YT("TM(``ZG
XM'R!O<'1I;VX@<F5Q=6ER97,?(&%N(&%R9W5M96YT("TM(!$```T`2@'__P@`"
XM"'MI"``'>VD(``1[:0@``R-C"``":0@``6D(``!I"``&>R-C"``%>VGU`$%*V
XM:&5X=&]I;G0```!.````````````!``!`!8`"0`5`$'```((``!?:&5X=&]IU
XM;G0`!PH``%]C='!?``<(``!?=&]I;G0`!P@``"YB96=I;@````*``$X,:&5XW
XM=&]I;G0N8P`5#."4#0`*_P$``!U.50``2.<(("1M``AX``1V86QU90`":05N2
XM=6UB97(`!B-C_____Q-*$F<X_Q<0$DB`4D!!^OIQ`!<(,``#``!G&O\;($I22
XMBA`02(`_`$ZZ^G(`&51/,@3I03@`V$'_$6`*_QDP!$S?!!!.74YU_Q%@Q/__W
XM$S`$8/+_#0`7`?__"``">VD(``![:0@``5LP8_4`````04II<V)D:6=I=```;
XM`"(````````````"``$`$0`)`!``0L```@@``%]I<V)D:6=I=``'"```+F)E-
XM9VEN``````*``"(,:7-B9&EG:70N8P`5#."9#0`,_P$``!E.50``+P08+0`)^
XM!6,``F/__QNX/``Q9P:X/``P9@C_%W`!*!].74YU__\3<`!@]O__#0`4`?__[
XM"```>VD*``L``0`(`!8!7V)P````(V,!7V)E;F0```0C8P%?8G5F9@``""-CL
XM`5]F;&%G<P``#&,!7W5N:70```UC`5]B>71B=68```YC`5]B=69L96X``!!I>
XM`5]T;7!N86UE```2(V,)1DE,10`Z``'U````04II<V-S>6T``````#H`````@
XM```````$``$`%@`)`!4`-<```@@``%]I<V-S>6T`!P@``%]I<V-S>6UF``<*L
XM``!?8W1P7P`'"```+F)E9VEN`````H``.@QI<V-S>6TN8P`5#."<#0`._P$`P
XM`!E.50``+P08+0`)!6,``F/__Q<0!$B`/P!.NOIQ`!U43TI`9A(0!$B`4D!!>
XM^OIR`!<(,``"``!G"O\9$`1(@"@?3EU.=?__$W``8/;_#0`6`?__"``!>VD(^
XM``![:0@``ELP8_4```!!2FES8W-Y;68`````,`````````````,``0`3``D`J
XM$@`MP``""```7VES8W-Y;68`!PH``%]C='!?``<(```N8F5G:6X````"@``PP
XM#&ES8W-Y;68N8P`5#."?#0`-_P$``!E.50``+P08+0`)!6,``F/__Q<0!$B`0
XM4D!!^OIQ`!\2,```PCP``V8&N#P`7V8$&W`!8`)P`"@?3EU.=?\-`!$!__\(Z
XM``![:0@``5LP8_4```!!2FES;V1I9VET````-@````````````,``0`3``D`-
XM$@`PP``""```7VES;V1I9VET``<*``!?8W1P7P`'"```+F)E9VEN```"@``V7
XM#&ES;V1I9VET+F,`%0S@H@T`#?\!```93E4``"\$&"T`"05C``)C__\;N#P`-
XM.6<&N#P`.&8(_Q=P`"@?3EU.=?__%Q`$2(!20$'Z^G$`'3(`$#`0`$B`P'P`'
XM!&#B__\-`!8!__\(``![:0@``5LP8_4```!!2G-T;VQO=V5R````+@``````V
XM``````,``0`4``D`$P`RP``""```7W-T;VQO=V5R``<(``!?=&]L;W=E<@`'/
XM"```+F)E9VEN`````H``+@QS=&]L;W=E<BYC`!4,X*8-``W_`0``'4Y5``!(0
XMYP`P)&T`""9*!'1E;7``!R-C!7-T<@`&(V/_____$6`0_Q<0$TB`/P!.NOIQ!
XM`!E43Q:`4HM*$V;L__\9(`I,WPP`3EU.=?\-`!8!__\(``%[:0@``'LC8_4`0
XM`$%*<W1O=7!P97(````N`````````````P`!`!0`"0`3`#+```((``!?<W1O@
XM=7!P97(`!P@``%]T;W5P<&5R``<(```N8F5G:6X````"@``N#'-T;W5P<&5RI
XM+F,`%0S@J0T`#?\!```=3E4``$CG`#`D;0`()DH$=&5M<``'(V,%<W1R``8C+
XM8_____\18!#_%Q`32(`_`$ZZ^G$`&51/%H!2BTH39NS__QD@"DS?#`!.74YU7
XM_PT`%@'__P@``7MI"```>R-C]0``04IS=')C<W!N`````#8````````````#=
XM``$`$P`)`!(`-L```@@``%]S=')C<W!N``<(``!?<W1R8VAR``<(```N8F5G*
XM:6X``H``-@QS=')C<W!N+F,`%0S@K`T`"_\!```?3E4``$CG"#`D;0`()FT`3
XM#!$H"@1T96UP``(C8P5S='(`!B-C!6-H87)S970`!R-C_____QL@1!`02(`_9
XM`"\+3KKZ<0`57$]*0&8$_Q-2A&#H__\;(`20BDS?#!!.74YU_PT`%0'__P@`%
XM`7MI"```>VGU````04IS=')P8G)K`````$0````````````#``$`$P`)`!(`/
XM.\```@@``%]S=')P8G)K``<(``!?:6YD97@`!P@``"YB96=I;@```H``1`QSY
XM=')P8G)K+F,`%0S@N0T`"?\!```?3E4``$CG"#`D;0`()FT`#`1T96UP``(CV
XM8P5S='(`!B-C!6-H87)S970`!R-C______\1*`K__Q\@1$H09Q@@1!`02(`_L
XM`"\+$4ZZ^G$`%5Q/2H!F!/\34H1@XO__'R!$2A!G!"`$8`)P`$S?#!`33EU.K
XM=?\-`!4!__\(``%[(V,(``![(V/U``!!2G-T<G!O<P``````0```````````3
XM``,``0`3``D`$@`[P``""```7W-T<G!O<P`'"```7W-T<FQE;@`'"```+F)E+
XM9VEN```"@`!`#'-T<G!O<RYC`!4,X+P-``W_`0``'TY5``!(YPP@)&T`"!@M:
XM``T1>@`$8V]U;G1E<@`#:05S=')I;F<`!B-C!6ME>0`"8_______$TH$9A#_T
XM$R\*3KKZ<0`96$],WP0P3EU.=?__%4HR4`!G$/\7$#)0`+`$9@3_$S`%8.;_T
XM$5)%_Q%@ZO\3</]@WO\-`!P!__\(``%[:0@``'MI]0```$%*<W1R<G!O<P``>
XM``!,`````````````P`!`!,`"0`2`#W```((``!?<W1R<G!O<P`'"```7W-T6
XM<FQE;@`'"```+F)E9VEN``*``$P,<W1R<G!O<RYC`!4,X,0-``W_`0``'TY5<
XM``!(YP@P)&T`"!@M``T$=&5M<``'(V,%<W1R:6YG``8C8P5K97D``F/_____P
XM_Q-*!&80_Q,O"DZZ^G$`&5A/3-\,$$Y=3G7__Q,O"DZZ^G$`&UA/2,#0BB9`0
XM4XM@#O\5$!.P!&8&_QL@"Y"*8-I3B[?*9.[__Q-P_V#0_PT`&P'__P@``7MIP
XM"```>VGU``!!2G-T<G-P;@``````-@````````````,``0`3``D`$@`VP``"V
XM"```7W-T<G-P;@`'"```7VEN9&5X``<(```N8F5G:6X````"@``V#'-T<G-P9
XM;BYC`!4,X,D-``O_`0``'TY5``!(YP@P)&T`""9M``P1*`H$=&5M<``"(V,%,
XM<W1R``8C8P5C:&%R<V5T``<C8_____\;($00$$B`/P`O"TZZ^G$`%5Q/2D!GA
XM!/\34H1@Z/__&R`$D(I,WPP03EU.=?\-`!0!__\(``%[:0@``'MI]0````!!N
XM2G-T<G1O:P``````8``````````$``0``@`7``D`%0!2P``""```7W-T<G1O'
XM:P`'"```7W-T<G-P;@`'"```7W-T<G!B<FL`!P@``"YB96=I;@`"@`!@"8``F
XM``QS=')T;VLN8P`5#.#,#0`,_P$``!].50``2.<,,"1M``@F;0`,!F9R;VU,5
XM87-T5&EM90```2-C!&5N9``#(V,$=&]K96X``B-C!6)U9@`&(V,%<V5P87)A>
XM=&]R<P`'(V/_______\9(`IG!"`*8`0@+=`"80`3*`!G//\5+PLO!$ZZ^G$`=
XM%5!/2,#8@/\5($1*$&8*_QEP`$S?##!.74YU_Q4O"R\$3KKZ<@`?4$\J`&<&]
XM(`52@&`"<``K0-""80#___\3($5"$/__$R`$8-;_#0`=`?__"``!>VD(``)[S
XM(V,(``![(V/U````04IT;VEN=````````%0````````````"``$`$``)``\`\
XM,\```@@``%]T;VEN=``'"```+F)E9VEN`````H``5`QT;VEN="YC`!4,X-<-2
XM``W_`0``&4Y5```O!!@M``D%8P`"8___&[@\`#!M%+@\`#EN#O\=$`1(@)!\"
XM`#`H'TY=3G7_&[@\`&%M$+@\`&9N"O\9$`1(@)!\`%=@Y/\;N#P`06T0N#P`^
XM1FX*_QD0!$B`D'P`-V#.__\3</]@RO\-`!@!__\(``![:?4`04IB87-E;F%MS
XM90```#(````````````#``(`%0`)`!,`7\```@@``%]B87-E;F%M90`'"```@
XM7W-T<G)P8G)K``<(```N8F5G:6X```*``"X"@``N#&)A<V5N86UE+F,`%1?==
XM8@T`"/\!```=3E4``$CG`#`D;0`(2'KZ(6$`,!,O"DZZ^G$`$U!/)D`$9F]O\
XM``<C8P5B=68`!B-C_____Q\@"V<&(`M2@&`"(`I,WPP`$TY=3G7_$SHO```-7
XM``X!__\(``%[(V,(``![(V,)5$585`!#"4)/3TP`:0E50T]53E0`20E#3U5.]
XM5`!I"41/54),10!D"49,3T%4`&8)55-(3U)4`$D)4TA/4E0`:0E#4%12`$P):
XM05!44@`C(T,)4U124%12`"-#"4)95$5"2513`$,)54)95$4`0PE"651%`&,).
XM5T]21$))5%,`20E55T]21`!)"5=/4D0`:0E,3TY'0DE44P!,"55,3TY'`$P)B
XM3$].1P!L]0````!!2G-T<FEC;7``````H`````````````,``0`4``D`$P!5'
XMP``""```7W-T<FEC;7``!P@``%]T;VQO=V5R``<(```N8F5G:6X``````H``I
XMH`QS=')I8VUP+F,`%0S@KPT`"?\!```?3E4``$CG"#`D;0`()FT`#!%X``1I<
XM;F1E>``":05S='(Q``8C8P5S='(R``<C8_____\?2C)``&<N2C-``&<H$#)`,
XM`!5(@#\`3KKZ<0`=5$\_`!`S0`!(@#\`3KKZ<0`75$\R'[)`9@3__Q-21&#,%
XM__\9$#)``$B`/P!.NOIQ`!U43S\`$#-``$B`/P!.NOIQ`!]43S(?LD!L!'#_S
XM8"H0,D``%4B`/P!.NOIQ`!U43S\`$#-``$B`/P!.NOIQ`!]43S(?LD!O!'`!`
XM8`)P`$S?%0P03EU.=?__#0`5`?__"``!>VD(``![:?4`````04IS=')N:6-M4
XM<````*P````````````#``$`%``)`!,`6L```@@``%]S=')N:6-M<``'"```2
XM7W1O;&]W97(`!P@``"YB96=I;@````*``*P,<W1R;FEC;7`N8P`5#."T#0`)S
XM_P$``!].50``2.<,,"1M``@F;0`,%3@M`!!Z``1I;F1E>``#:05S='(Q``8CI
XM8P5S='(R``<C8P5L96X``FG______Q]*,E``9S9*,U``9S`P!%-`';I`;"@08
XM,E``2(`_`$ZZ^G$`'51//P`0,U``2(`_`$ZZ^G$`%U1/,A^R0&8$__\34D5@W
XMQ/__&1`R4`!(@#\`3KKZ<0`=5$\_`!`S4`!(@#\`3KKZ<0`?5$\R'[)`;`1P8
XM_V`J$#)0`!5(@#\`3KKZ<0`=5$\_`!`S4`!(@#\`3KKZ<0`?5$\R'[)`;P1P>
XM`6`"<`!,WQ4,,$Y=3G7__PT`%@'__P@``7MI"```>VGU````04IS=')R<&)R%
XM:P```%8````````````$``$`%@`)`!4`1<```@@``%]S=')R<&)R:P`'"```Q
XM7W-T<FQE;@`'"```7VEN9&5X``<(```N8F5G:6X``H``5@QS=')R<&)R:RYCN
XM`!4,X,`-``G_`0``'TY5``!(YP@P)&T`""9M``P$=&5M<``"(V,%<W1R``8C!
XM8P5C:&%R<V5T``<C8_______$R\*3KKZ<0`96$](P-"**`!3A/__'R!*4XBQ-
XMQ&<8($00$$B`/P`3+PM.NOIR`!5<3TJ`9@3_$U.$8.#__Q\@2E.(L<1G!"`$2
XM8`)P`$S?%0P03EU.=?\-`!4!__\(``%[:0@``GLC8P@``'LC8_4`````04ISP
XM=')T;V0``````P0````````````*``(`)P`)`"4!C\```@@``%]S=')T;V0`N
XM!PH``%]C='!?``<*``!?97)R;F\`!P@``%]T;VEN=``'"```+E!F;'0`!P@`J
XM`"Y0;75L``<(``!?<W1R8VUP``<(``!?<W!R:6YT9@`'"```7V%T;V8`!P@`N
XM`"YB96=I;@````*``MH"@`+:#'-T<G1O9"YC`!49;\`-`#3_`0``%TY5_ZI(U
XMYP@P`F)U9F9E<@#_JELP8P)B=69L:6T`_^HC8P)B=69O<F<`_^XC8P1C``)IN
XM!&1P``<C8P1S<``&(V,"<V%V90#_\B-C`F5X<'0`__9I`F5S:6=N`/_X:0)D_
XM;W1S965N`/_Z:0)S8V%L90#__&D"<VEG;@#__FD#<W1R```((V,#<'1R```,&
XM(R-C______________\3)&T`"/\5#!(`(&8$_Q-2BF#V__\5.WP``?_^__\5E
XM#!(`+68&_Q-5;?_^_Q%2BO___Q-";?_Z_Q-";?_\_Q5![?^J)DC__Q<@2U*+>
XM$+P`,/\7($M2BQ"\`"[__Q,K2__N_Q=![?_:*TC_ZO__%2M*__)@9O__%;A\'
XM`"YF#/__%4IM__IF8O___Q-2;?_Z__\78%(P!%)`0?KZ<0`7"#```@``9@+_>
XM$6!*__\5N'P`,&8D__\5M^W_[F<2____%;?M_^ID"O\5($M2BQ"$_Q-2;?_\B
XM____$6`*_____Q5*;?_Z9P3_$U-M__S__Q%@%O___Q6W[?_J9`;_%2!+4HL0K
XMA/___Q5*;?_Z9@3_$U)M__S__QE2BA`22(`X`&:2_Q6U[?_R9B#_%4JM``QGT
XM"/\7(&T`#""M``C_$SM\``K0A'(`_QMP`'(`3-\,$$Y=3G7___\=M^W_[F,,P
XM#"L`,/__9@3_$U.+8.[__Q6W[?_N9@C_%R!+4HL0O``P__\10A/_________6
XM_____Q,K2O_R_Q-";?_V_Q4[?``!__C___\9($I2BA`02(`X`/__';A\`&5G%
XM"+A\`$5F``">____&2!*4HH0$$B`.`#__Q6X?``M9A#_$U5M__C_&2!*4HH0D
XM$$B`.`#_'6`6N'P`*V<&N'P`(&8*_QD@2E**$!!(@#@`____%3`$4D!!^OIQN
XM`!<(,``"``!G5O___Q6X?``P9@S_&R!*4HH0$$B`.`!@[O__$6`@_Q,_!$ZZP
XM^G,`'U1/,BW_]L/\``K003M`__8?($I2BA`02(`X`#`$4D!!^OIQ`!<(,``"/
XM``!FT/__%4IM__AL!/\31&W_]O__%R!*4X@K2/_R_____Q5*K0`,9PC_%R!M#
XM``P@K?_R__\7,"W__-%M__;___\3.WP`"="$<@#__Q<,;0$U__9O'O\7,"W_X
XM_DC`3KKZ=``=)#Q_[___)CS___]53KKZ=0`38`#^U/\7#&T!-?_V9C+_$4AZY
XM^B%A`#`5+RW_[DZZ^G8`%5!/2D!O'O\7,"W__DC`3KKZ=``=)#Q_[___)CS_%
XM__]53KKZ=0`38`#^G/\98$X,;?Z]__9L%O\7,"W__DC`3KKZ=``5=`!V`$ZZ]
XM^G4`$V``_GS_%PQM_KW_]F8H_Q%(>OHA80!2@14O+?_N3KKZ=@`54$]*0&P6@
XM_Q<P+?_^2,!.NOIT`!5T`'8`3KKZ=0`38`#^3/______%3\M__9(>OHA80!5E
XM@A,O"TZZ^G<`$T_O``K_$4)MT`)R`/\52&W_JDZZ^G@`'UA/+P$O`#(M__Y(;
XMP2`!3KKZ=``9)``F`2`?(A].NOIU`!-@`/X,_Q\Q-SDW-CDS,3,T.#8R,S$T8
XM'S<`-#DT,#8U-C0U.#0Q,C09-C4T-`!E)60```T`T@'__P@`!WMI"``&>VD(9
XM``)I"``!6S!C"```>V0(``-[:0E415A4`$,)0D]/3`!I"55#3U5.5`!)"4-/R
XM54Y4`&D)1$]50DQ%`&0)1DQ/050`9@E54TA/4E0`20E32$]25`!I"4-05%(`H
XM3`E!4%12`",C0PE35%)05%(`(T,)0EE414))5%,`0PE50EE410!#"4)95$4`W
XM8PE73U)$0DE44P!)"5573U)$`$D)5T]21`!I"4Q/3D="2513`$P)54Q/3D<`Y
XM3`E,3TY'`&P(``A[9/4`````04IS=')D=7```````$0````````````&``$`-
XM'``)`!L`1L```@@``%]S=')D=7``!P@``%]S=')L96X`!P@``%]M86QL;V,`]
XM!PH``%]E<G)N;P`'"```7W-T<F-A=``'"```+F)E9VEN`````H``1`QS=')DF
XM=7`N8P`5&6Y?#0`+_P$``!].50``2.<`,"1M``@O"DZZ^G$`%5A//P!.NOIR>
XM`!-43R9`!&1U<``'(V,%<W1R``8C8_____\3(`MF$/\3.WP``]"$<P#_&7``K
XM3-\,`$Y=3G7___\3(`MG"O\5+PHO"TZZ^G0`$5!/____$R`+8.;_#0`;`?__E
XM"``$>VD(``%[:0@``'LC8P@``GLC8P@``VGU`$%*9V5T8W=D``````&:````^
XM````````#@`%`#D`"0`T`7#```((``!?9V5T8W=D``<(``!?;6%L;&]C``<*8
XM``!?97)R;F\`!P@``%],;V-K``<(``!?9G)E90`'"```7U5N3&]C:P`'"```5
XM7T%L;&]C365M``<(``!?4&%R96YT1&ER``<(``!?1G)E94UE;0`'"```7T5X:
XM86UI;F4`!P@``%]S=')L96X`!P@``%]S=')C870``@``AE]F;VQL;W<`!P@`8
XM`"YB96=I;@`````"@`"$`H``A`*``98"@`&$`H`!E@QG971C=V0N8P`5&2:'N
XM#0`2_P$``!E.50``2.<(('@`!&UA;&QO8V5D``)I"D9I;&5,;V-K``1L;V-K:
XM``8C.@`!`V)U9@``""-C`W-I>F4```QI________%4JM``AF(O\5/RT`#$ZZ/
XM^G$`%U1/*T``"&80_Q,[?``#T(1R`/\9<`!,WP003EU.=?__$7@!_____Q5(V
XM>/_^2'KZ(6$`,!%.NOIS`!-03R1`__\5(&T`"$(0__\?/RT`#"\M``@O"F$R^
XM3^\`"A-*0&8:__\32D1G"O\5+RT`"$ZZ^G0`$5A/____$R\*3KKZ=0`16$__2
XM_Q-P`&"R____$R\*3KKZ=0`16$___Q4@+0`(8*3_$0``#0`V_P$``A=.50``'
XM2.<(,`1N97=L;V-K``<C.@`!"D9I;&5);F9O0FQO8VL`"D1A=&53=&%M<``+<
XM``,``P`,`61S7T1A>7,```!L`61S7TUI;G5T90``!&P!9'-?5&EC:P``"&P+@
XM``(`"@$$`69I8E]$:7-K2V5Y````;`%F:6)?1&ER16YT<GE4>7!E```$;`%F]
XM:6)?1FEL94YA;64```A;,&,!9FEB7U!R;W1E8W1I;VX``'1L`69I8E]%;G1RC
XM>51Y<&4``'AL`69I8E]3:7IE``!\;`%F:6)?3G5M0FQO8VMS``"`;`%F:6)?O
XM1&%T90``A#H``P%F:6)?0V]M;65N=```D%LP8P%P861D:6YG``#@6S!C!&9I:
XM8@`&(SH``@-L;V-K```((SH``0-B=68```PC8P-S:7IE```0:?__________:
XM%4JM``AF"O\9<`%,WPP03EU.=?___QM(>0`!```_/`$$3KKZ=@`37$\D0/__T
XM$R`*9@3_$W``8-[__Q4O+0`(3KKZ=P`36$\F0/__'S\M`!`O+0`,+PMAMD_O'
XM``H32D!F$/\7/SP!!"\*3KKZ>``17$__$W``8*[___\7+PHO+0`(3KKZ>0`7U
XM4$]*0&<``(P!``,$8P`"8____Q4O+0`,3KKZ>@`;6$\_`"!*4(@O"$ZZ^GH`8
XM'5A/,A_20%1!LFT`$&\2_Q<_/`$$+PI.NOIX`!%<3_\5<`!@`/]H____&2`+]
XM9RXO+0`,3KKZ>@`?6$]30"!M``P8,```N#P`.A=G%+@\`"]G#O\12'KZ(60`<
XM,!4O+0`,3KKZ>P`14$____\;($I0B"\(+RT`#$ZZ^GL`$5!/__\3(`MF#O\1`
XM2'KZ(60`,A4O+0`,3KKZ>P`14$______%S\\`00O"DZZ^G@`$5Q/__\5<`%@#
XM`/\"_Q,O`#H`#0!F`?__"``+>VD(``I[:0@`"7MI"``(>VD(``5[:0@`!'MIE
XM!V9O;&QO=P``#'MI"``#>R,Z``$(``=[(SH``0@`!GLC.@`""``!>R-C"``"2
XM:0E"4U12`&P)0E!44@!L"```>R-C"51%6%0`0PE"3T],`&D)54-/54Y4`$D)W
XM0T]53E0`:0E$3U5"3$4`9`E&3$]!5`!F"5532$]25`!)"5-(3U)4`&D)0U!4H
XM4@!,"4%05%(`(R-#"5-44E!44@`C0PE"651%0DE44P!#"55"651%`$,)0EE4$
XM10!C"5=/4D1"2513`$D)55=/4D0`20E73U)$`&D)3$].1T))5%,`3`E53$].W
XM1P!,"4Q/3D<`;/4`````04IC:&1I<@```````&`````````````&``$`'0`)/
XM`!P`A<```@@``%]C:&1I<@`'"@``7V5R<FYO``<(``!?9FEL971Y<&4`!P@`)
XM`%],;V-K``<(``!?0W5R<F5N=$1I<@`'"```+F)E9VEN``````*``&`,8VADW
XM:7(N8P`5&5.2#0`-_P$``!-.5?_\"D9I;&5,;V-K``)L;V-K`/_\(SH``0-P4
XM871H```((V/_____%4JM``AF#/\3.WP`"]"$<0#_%7#_3EU.=?___Q4O+0`(-
XM3KKZ<@`76$^P?``!9PK_$SM\``'0A'$`_Q-P_V#B____&4AX__XO+0`(3KKZ;
XM<P`74$\K0/_\9@K_$SM\``C0A'$`_Q-P_V#$____%2\M__Q.NOIT`!583RM``
XM__S__Q-P`&"R_PT`)`'__P@`!'LC.@`!"``#>R,Z``$(``%I"4)35%(`;`E"S
XM4%12`&P(``)[:0@``'MI"51%6%0`0PE"3T],`&D)54-/54Y4`$D)0T]53E0`M
XM:0E$3U5"3$4`9`E&3$]!5`!F"5532$]25`!)"5-(3U)4`&D)0U!44@!,"4%07
XM5%(`(R-#"5-44E!44@`C0PE"651%0DE44P!#"55"651%`$,)0EE410!C"5=/C
XM4D1"2513`$D)55=/4D0`20E73U)$`&D)3$].1T))5%,`3`E53$].1P!,"4Q/7
XM3D<`;/4``$%*9FEL971Y<&4```!\````````````"``!`",`"0`B`-K```((:
XM``!?9FEL971Y<&4`!P@``%]!;&QO8TUE;0`'"@``7V5R<FYO``<(``!?3&]C;
XM:P`'"```7T5X86UI;F4`!P@``%]5;DQO8VL`!P@``%]&<F5E365M``<(```NF
XM8F5G:6X````"@`!\#&9I;&5T>7!E+F,`%1ECD0T`$/\!```73E4``$CG"#`$F
XM<F5S=6QT``)I"D9I;&5,;V-K``1L;V-K``<C.@`!"D9I;&5);F9O0FQO8VL`P
XM"D1A=&53=&%M<``+``,``P`,`61S7T1A>7,```!L`61S7TUI;G5T90``!&P!X
XM9'-?5&EC:P``"&P+``(`"@$$`69I8E]$:7-K2V5Y````;`%F:6)?1&ER16YT9
XM<GE4>7!E```$;`%F:6)?1FEL94YA;64```A;,&,!9FEB7U!R;W1E8W1I;VX`]
XM`'1L`69I8E]%;G1R>51Y<&4``'AL`69I8E]3:7IE``!\;`%F:6)?3G5M0FQO[
XM8VMS``"`;`%F:6)?1&%T90``A#H``P%F:6)?0V]M;65N=```D%LP8P%P861DY
XM:6YG``#@6S!C!&9I8@`&(SH``@-P871H```((V/_________&TAY``$``#\\U
XM`01.NOIQ`!=<3R1`2H!F$/\3.WP``]"$<@#_&7#_3-\,$$Y=3G7___\92'C_!
XM_B\M``A.NOIS`!=03R9`2H!F"O\3.WP`"-"$<@#_$W#_8-K___\5+PHO"TZZ,
XM^G0`$5!/__\=2JH`!&\$<`%@`G`".`#__Q,O"TZZ^G4`$5A/_Q<_/`$$+PI.X
XMNOIV`!%<3___$S`$8*K_#0`M`?__"``&>VD(``5[:0@`!'MI"``#>R,Z``$(L
XM``%[(SH``@@``FD)0E-44@!L"4)05%(`;`@``'MI"51%6%0`0PE"3T],`&D)/
XM54-/54Y4`$D)0T]53E0`:0E$3U5"3$4`9`E&3$]!5`!F"5532$]25`!)"5-(*
XM3U)4`&D)0U!44@!,"4%05%(`(R-#"5-44E!44@`C0PE"651%0DE44P!#"55"E
XM651%`$,)0EE410!C"5=/4D1"2513`$D)55=/4D0`20E73U)$`&D)3$].1T))J
X85%,`3`E53$].1P!,"4Q/3D<`;/4`````G
X``
Xend
Xsize 13164
SHAR_EOF
echo "End of archive 1 (of 2)"
# if you want to concatenate archives, remove anything after this line
exit