home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume44 / unzip / part13 < prev    next >
Internet Message Format  |  1994-09-19  |  72KB

  1. From: zip-bugs@wkuvx1.wku.edu (Info-ZIP group)
  2. Newsgroups: comp.sources.misc
  3. Subject: v44i078:  unzip - Info-ZIP portable UnZip, version 5.12, Part13/20
  4. Date: 18 Sep 1994 23:16:06 -0500
  5. Organization: Sterling Software
  6. Sender: kent@sparky.sterling.com
  7. Approved: kent@sparky.sterling.com
  8. Message-ID: <35j3a6$qps@sparky.sterling.com>
  9. X-Md4-Signature: 86063dfa1a7b4e10764aaad844e434ac
  10.  
  11. Submitted-by: zip-bugs@wkuvx1.wku.edu (Info-ZIP group)
  12. Posting-number: Volume 44, Issue 78
  13. Archive-name: unzip/part13
  14. Environment: UNIX, VMS, OS/2, MS-DOS, MACINTOSH, WIN-NT, LINUX, MINIX, COHERENT, AMIGA?, ATARI TOS, SGI, DEC, Cray, Convex, Amdahl, Sun
  15. Supersedes: unzip50: Volume 31, Issue 104-117
  16.  
  17. #! /bin/sh
  18. # This is a shell archive.  Remove anything before this line, then feed it
  19. # into a shell via "sh file" or similar.  To overwrite existing files,
  20. # type "sh file -c".
  21. # Contents:  unzip-5.12/funzip.c unzip-5.12/mac/thinkc.hqx
  22. #   unzip-5.12/unix/Makefile unzip-5.12/vms/makesfx.com
  23. # Wrapped by kent@sparky on Sat Sep 17 23:33:43 1994
  24. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin:$PATH ; export PATH
  25. echo If this archive is complete, you will see the following message:
  26. echo '          "shar: End of archive 13 (of 20)."'
  27. if test -f 'unzip-5.12/funzip.c' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'unzip-5.12/funzip.c'\"
  29. else
  30.   echo shar: Extracting \"'unzip-5.12/funzip.c'\" \(14247 characters\)
  31.   sed "s/^X//" >'unzip-5.12/funzip.c' <<'END_OF_FILE'
  32. X/* funzip.c -- put in the public domain by Mark Adler */
  33. X
  34. X#define VERSION "3.83 of 28 August 1994"
  35. X
  36. X
  37. X/* You can do whatever you like with this source file, though I would
  38. X   prefer that if you modify it and redistribute it that you include
  39. X   comments to that effect with your name and the date.  Thank you.
  40. X
  41. X   History:
  42. X   vers     date          who           what
  43. X   ----   ---------  --------------  ------------------------------------
  44. X   1.0    13 Aug 92  M. Adler        really simple unzip filter.
  45. X   1.1    13 Aug 92  M. Adler        cleaned up somewhat, give help if
  46. X                                     stdin not redirected, warn if more
  47. X                                     zip file entries after the first.
  48. X   1.2    15 Aug 92  M. Adler        added check of lengths for stored
  49. X                                     entries, added more help.
  50. X   1.3    16 Aug 92  M. Adler        removed redundant #define's, added
  51. X                                     decryption.
  52. X   1.4    27 Aug 92  G. Roelofs      added exit(0).
  53. X   1.5     1 Sep 92  K. U. Rommel    changed read/write modes for OS/2.
  54. X   1.6     6 Sep 92  G. Roelofs      modified to use dummy crypt.c and
  55. X                                     crypt.h instead of -DCRYPT.
  56. X   1.7    23 Sep 92  G. Roelofs      changed to use DOS_OS2; included
  57. X                                     crypt.c under MS-DOS.
  58. X   1.8     9 Oct 92  M. Adler        improved inflation error msgs.
  59. X   1.9    17 Oct 92  G. Roelofs      changed ULONG/UWORD/byte to ulg/ush/uch;
  60. X                                     renamed inflate_entry() to inflate();
  61. X                                     adapted to use new, in-place zdecode.
  62. X   2.0    22 Oct 92  M. Adler        allow filename argument, prompt for
  63. X                                     passwords and don't echo, still allow
  64. X                                     command-line password entry, but as an
  65. X                                     option.
  66. X   2.1    23 Oct 92  J-l. Gailly     fixed crypt/store bug,
  67. X                     G. Roelofs      removed crypt.c under MS-DOS, fixed
  68. X                                     decryption check to compare single byte.
  69. X   2.2    28 Oct 92  G. Roelofs      removed declaration of key.
  70. X   2.3    14 Dec 92  M. Adler        replaced fseek (fails on stdin for SCO
  71. X                                     Unix V.3.2.4).  added quietflg for
  72. X                                     inflate.c.
  73. X   3.0    11 May 93  M. Adler        added gzip support
  74. X   3.1     9 Jul 93  K. U. Rommel    fixed OS/2 pipe bug (PIPE_ERROR)
  75. X   3.2     4 Sep 93  G. Roelofs      moved crc_32_tab[] to tables.h; used FOPx
  76. X                                     from unzip.h; nuked OUTB macro and outbuf;
  77. X                                     replaced flush(); inlined FlushOutput();
  78. X                                     renamed decrypt to encrypted
  79. X   3.3    29 Sep 93  G. Roelofs      replaced ReadByte() with NEXTBYTE macro;
  80. X                                     revised (restored?) flush(); added FUNZIP
  81. X   3.4    21 Oct 93  G. Roelofs      renamed quietflg to qflag; changed outcnt,
  82. X                     H. Gessau       second updcrc() arg and flush() arg to ulg;
  83. X                                     added inflate_free(); added "g =" to null
  84. X                                     getc(in) to avoid compiler warnings
  85. X   3.5    31 Oct 93  H. Gessau       changed DOS_OS2 to DOS_NT_OS2
  86. X   3.6     6 Dec 93  H. Gessau       added "near" to mask_bits[]
  87. X   3.7     9 Dec 93  G. Roelofs      added extent typecasts to fwrite() checks
  88. X   3.8    28 Jan 94  GRR/JlG         initialized g variable in main() for gcc
  89. X   3.81   22 Feb 94  M. Hanning-Lee  corrected usage message
  90. X   3.82   27 Feb 94  G. Roelofs      added some typecasts to avoid warnings
  91. X   3.83   22 Jul 94  G. Roelofs      changed fprintf to FPRINTF for DLLs
  92. X    -      2 Aug 94  -               public release with UnZip 5.11
  93. X    -     28 Aug 94  -               public release with UnZip 5.12
  94. X */
  95. X
  96. X
  97. X/*
  98. X
  99. X   All funzip does is take a zip file from stdin and decompress the
  100. X   first entry to stdout.  The entry has to be either deflated or
  101. X   stored.  If the entry is encrypted, then the decryption password
  102. X   must be supplied on the command line as the first argument.
  103. X
  104. X   funzip needs to be linked with inflate.o and crypt.o compiled from
  105. X   the unzip source.  If decryption is desired, the full version of
  106. X   crypt.c (and crypt.h) from zcrypt21.zip or later must be used.
  107. X
  108. X */
  109. X
  110. X#define FUNZIP
  111. X#include "unzip.h"
  112. X#include "crypt.h"
  113. X
  114. X#ifdef EBCDIC
  115. X#  undef EBCDIC                 /* don't need ebcdic[] */
  116. X#endif
  117. X#include "tables.h"             /* crc_32_tab[] */
  118. X
  119. X/* PKZIP header definitions */
  120. X#define ZIPMAG 0x4b50           /* two-byte zip lead-in */
  121. X#define LOCREM 0x0403           /* remaining two bytes in zip signature */
  122. X#define LOCSIG 0x04034b50L      /* full signature */
  123. X#define LOCFLG 4                /* offset of bit flag */
  124. X#define  CRPFLG 1               /*  bit for encrypted entry */
  125. X#define  EXTFLG 8               /*  bit for extended local header */
  126. X#define LOCHOW 6                /* offset of compression method */
  127. X#define LOCTIM 8                /* file mod time (for decryption) */
  128. X#define LOCCRC 12               /* offset of crc */
  129. X#define LOCSIZ 16               /* offset of compressed size */
  130. X#define LOCLEN 20               /* offset of uncompressed length */
  131. X#define LOCFIL 24               /* offset of file name field length */
  132. X#define LOCEXT 26               /* offset of extra field length */
  133. X#define LOCHDR 28               /* size of local header, including LOCREM */
  134. X#define EXTHDR 16               /* size of extended local header, inc sig */
  135. X
  136. X/* GZIP header definitions */
  137. X#define GZPMAG 0x8b1f           /* two-byte gzip lead-in */
  138. X#define GZPHOW 0                /* offset of method number */
  139. X#define GZPFLG 1                /* offset of gzip flags */
  140. X#define  GZPMUL 2               /* bit for multiple-part gzip file */
  141. X#define  GZPISX 4               /* bit for extra field present */
  142. X#define  GZPISF 8               /* bit for filename present */
  143. X#define  GZPISC 16              /* bit for comment present */
  144. X#define  GZPISE 32              /* bit for encryption */
  145. X#define GZPTIM 2                /* offset of Unix file modification time */
  146. X#define GZPEXF 6                /* offset of extra flags */
  147. X#define GZPCOS 7                /* offset of operating system compressed on */
  148. X#define GZPHDR 8                /* length of minimal gzip header */
  149. X
  150. X/* Macros for getting two-byte and four-byte header values */
  151. X#define SH(p) ((ush)(uch)((p)[0]) | ((ush)(uch)((p)[1]) << 8))
  152. X#define LG(p) ((ulg)(SH(p)) | ((ulg)(SH((p)+2)) << 16))
  153. X
  154. X/* Function prototypes */
  155. Xulg updcrc OF((uch *, ulg));
  156. Xint inflate OF((void));
  157. Xvoid err OF((int, char *));
  158. Xvoid main OF((int, char **));
  159. X
  160. X/* Globals */
  161. XFILE *in, *out;                 /* input and output files */
  162. Xunion work area;                /* inflate sliding window */
  163. Xuch *outptr;                    /* points to next byte in output buffer */
  164. Xulg outcnt;                     /* bytes in output buffer */
  165. Xulg outsiz;                     /* total bytes written to out */
  166. Xint encrypted;                  /* flag to turn on decryption */
  167. Xint qflag = 1;                  /* turn off messages in inflate.c */
  168. X
  169. X/* Masks for inflate.c */
  170. Xush near mask_bits[] = {
  171. X    0x0000,
  172. X    0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
  173. X    0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
  174. X};
  175. X
  176. X
  177. Xulg updcrc(s, n)
  178. Xuch *s;                 /* pointer to bytes to pump through */
  179. Xulg n;                  /* number of bytes in s[] */
  180. X/* Run a set of bytes through the crc shift register.  If s is a NULL
  181. X   pointer, then initialize the crc shift register contents instead.
  182. X   Return the current crc in either case. */
  183. X{
  184. X  register ulg c;       /* temporary variable */
  185. X
  186. X  static ulg crc = 0xffffffffL; /* shift register contents */
  187. X
  188. X  if (s == (uch *)NULL)
  189. X    c = 0xffffffffL;
  190. X  else
  191. X  {
  192. X    c = crc;
  193. X    while (n--)
  194. X      c = crc_32_tab[((int)c ^ (*s++)) & 0xff] ^ (c >> 8);
  195. X  }
  196. X  crc = c;
  197. X  return c ^ 0xffffffffL;       /* (instead of ~c for 64-bit machines) */
  198. X}
  199. X
  200. X
  201. Xvoid err(n, m)
  202. Xint n;
  203. Xchar *m;
  204. X/* Exit on error with a message and a code */
  205. X{
  206. X  FPRINTF(stderr, "funzip error: %s\n", m);
  207. X  exit(n);
  208. X}
  209. X
  210. X
  211. Xint flush(w)    /* used by inflate.c (FLUSH macro) */
  212. Xulg w;          /* number of bytes to flush */
  213. X{
  214. X  updcrc(slide, w);
  215. X  if (fwrite((char *)slide,1,(extent)w,out) != (extent)w && !PIPE_ERROR)
  216. X    err(9, "out of space on stdout");
  217. X  outsiz += w;
  218. X  return 0;
  219. X}
  220. X
  221. X
  222. Xvoid main(argc, argv)
  223. Xint argc;
  224. Xchar **argv;
  225. X/* Given a zip file on stdin, decompress the first entry to stdout. */
  226. X{
  227. X  ush n;
  228. X  uch h[LOCHDR];                /* first local header (GZPHDR < LOCHDR) */
  229. X  int g = 0;                    /* true if gzip format */
  230. X#ifdef CRYPT
  231. X  char *s = " [-password]";
  232. X  char *p;                      /* password */
  233. X#else /* !CRYPT */
  234. X  char *s = "";
  235. X#endif /* ?CRYPT */
  236. X
  237. X  /* skip executable name */
  238. X  argc--;
  239. X  argv++;
  240. X
  241. X#ifdef CRYPT
  242. X  /* get the command line password, if any */
  243. X  p = (char *)NULL;
  244. X  if (argc && **argv == '-')
  245. X  {
  246. X    argc--;
  247. X    p = 1 + *argv++;
  248. X  }
  249. X#endif /* CRYPT */
  250. X
  251. X  /* if no file argument and stdin not redirected, give the user help */
  252. X  if (argc == 0 && isatty(0))
  253. X  {
  254. X    FPRINTF(stderr, "fUnZip (filter UnZip), version %s\n", VERSION);
  255. X    FPRINTF(stderr, "usage: ... | funzip%s | ...\n", s);
  256. X    FPRINTF(stderr, "       ... | funzip%s > outfile\n", s);
  257. X    FPRINTF(stderr, "       funzip%s infile.zip > outfile\n", s);
  258. X    FPRINTF(stderr, "       funzip%s infile.gz > outfile\n", s);
  259. X    FPRINTF(stderr, "Extracts to stdout the gzip file or first zip entry of\
  260. X stdin or the given file.\n");
  261. X    exit(3);
  262. X  }
  263. X
  264. X  /* prepare to be a binary filter */
  265. X  if (argc)
  266. X  {
  267. X    if ((in = fopen(*argv, FOPR)) == (FILE *)NULL)
  268. X      err(2, "cannot find input file");
  269. X  }
  270. X  else
  271. X  {
  272. X#ifdef DOS_NT_OS2
  273. X    setmode(0, O_BINARY);  /* some buggy C libraries require BOTH setmode() */
  274. X#endif                     /*  call AND the fdopen() in binary mode :-( */
  275. X    if ((in = fdopen(0, FOPR)) == (FILE *)NULL)
  276. X      err(2, "cannot find stdin");
  277. X  }
  278. X#ifdef DOS_NT_OS2
  279. X  setmode(1, O_BINARY);
  280. X#endif
  281. X  if ((out = fdopen(1, FOPW)) == (FILE *)NULL)
  282. X    err(2, "cannot write to stdout");
  283. X
  284. X  /* read local header, check validity, and skip name and extra fields */
  285. X  n = getc(in);  n |= getc(in) << 8;
  286. X  if (n == ZIPMAG)
  287. X  {
  288. X    if (fread((char *)h, 1, LOCHDR, in) != LOCHDR || SH(h) != LOCREM)
  289. X      err(3, "invalid zip file");
  290. X    if (SH(h + LOCHOW) != STORED && SH(h + LOCHOW) != DEFLATED)
  291. X      err(3, "first entry not deflated or stored--can't funzip");
  292. X    for (n = SH(h + LOCFIL); n--; ) g = getc(in);
  293. X    for (n = SH(h + LOCEXT); n--; ) g = getc(in);
  294. X    g = 0;
  295. X    encrypted = h[LOCFLG] & CRPFLG;
  296. X  }
  297. X  else if (n == GZPMAG)
  298. X  {
  299. X    if (fread((char *)h, 1, GZPHDR, in) != GZPHDR)
  300. X      err(3, "invalid gzip file");
  301. X    if (h[GZPHOW] != DEFLATED)
  302. X      err(3, "gzip file not deflated");
  303. X    if (h[GZPFLG] & GZPMUL)
  304. X      err(3, "cannot handle multi-part gzip files");
  305. X    if (h[GZPFLG] & GZPISX)
  306. X    {
  307. X      n = getc(in);  n |= getc(in) << 8;
  308. X      while (n--) g = getc(in);
  309. X    }
  310. X    if (h[GZPFLG] & GZPISF)
  311. X      while ((g = getc(in)) != 0 && g != EOF) ;
  312. X    if (h[GZPFLG] & GZPISC)
  313. X      while ((g = getc(in)) != 0 && g != EOF) ;
  314. X    g = 1;
  315. X    encrypted = h[GZPFLG] & GZPISE;
  316. X  }
  317. X  else
  318. X    err(3, "input not a zip or gzip file");
  319. X
  320. X  /* if entry encrypted, decrypt and validate encryption header */
  321. X  if (encrypted)
  322. X#ifdef CRYPT
  323. X    {
  324. X      ush i, e;
  325. X
  326. X      if (p == (char *)NULL)
  327. X        if ((p = (char *)malloc(PWLEN+1)) == (char *)NULL)
  328. X          err(1, "out of memory");
  329. X        else if ((p = getp("Enter password: ", p, PWLEN+1)) == (char *)NULL)
  330. X          err(1, "no tty to prompt for password");
  331. X      init_keys(p);
  332. X      for (i = 0; i < RAND_HEAD_LEN; i++)
  333. X        e = NEXTBYTE;
  334. X      if (e != (ush)(h[LOCFLG] & EXTFLG ? h[LOCTIM + 1] : h[LOCCRC + 3]))
  335. X        err(3, "incorrect password for first entry");
  336. X    }
  337. X#else /* !CRYPT */
  338. X    err(3, "cannot decrypt entry (need to recompile with full crypt.c)");
  339. X#endif /* ?CRYPT */
  340. X
  341. X  /* prepare output buffer and crc */
  342. X  outptr = slide;
  343. X  outcnt = 0L;
  344. X  outsiz = 0L;
  345. X  updcrc(NULL, 0L);
  346. X
  347. X  /* decompress */
  348. X  if (g || h[LOCHOW])
  349. X  {                             /* deflated entry */
  350. X    int r;
  351. X    if ((r = inflate()) != 0)
  352. X      if (r == 3)
  353. X        err(1, "out of memory");
  354. X      else
  355. X        err(4, "invalid compressed data--format violated");
  356. X    inflate_free();
  357. X  }
  358. X  else
  359. X  {                             /* stored entry */
  360. X    register ulg n;
  361. X
  362. X    n = LG(h + LOCLEN);
  363. X    if (n != LG(h + LOCSIZ) - (encrypted ? RAND_HEAD_LEN : 0)) {
  364. X      FPRINTF(stderr, "len %ld, siz %ld\n", n, LG(h + LOCSIZ));
  365. X      err(4, "invalid compressed data--length mismatch");
  366. X    }
  367. X    while (n--) {
  368. X      ush c = getc(in);
  369. X#ifdef CRYPT
  370. X      if (encrypted)
  371. X        zdecode(c);
  372. X#endif
  373. X      *outptr++ = (uch)c;
  374. X      if (++outcnt == WSIZE)    /* do FlushOutput() */
  375. X      {
  376. X        updcrc(slide, outcnt);
  377. X        if (fwrite((char *)slide, 1,(extent)outcnt,out) != (extent)outcnt
  378. X            && !PIPE_ERROR)
  379. X          err(9, "out of space on stdout");
  380. X        outsiz += outcnt;
  381. X        outptr = slide;
  382. X        outcnt = 0L;
  383. X      }
  384. X    }
  385. X  }
  386. X  if (outcnt)   /* flush one last time; no need to reset outptr/outcnt */
  387. X  {
  388. X    updcrc(slide, outcnt);
  389. X    if (fwrite((char *)slide, 1,(extent)outcnt,out) != (extent)outcnt
  390. X        && !PIPE_ERROR)
  391. X      err(9, "out of space on stdout");
  392. X    outsiz += outcnt;
  393. X  }
  394. X  fflush(out);
  395. X
  396. X  /* if extended header, get it */
  397. X  if (g)
  398. X  {
  399. X    if (fread((char *)h + LOCCRC, 1, 8, in) != 8)
  400. X      err(3, "gzip file ended prematurely");
  401. X  }
  402. X  else
  403. X    if ((h[LOCFLG] & EXTFLG) &&
  404. X        fread((char *)h + LOCCRC - 4, 1, EXTHDR, in) != EXTHDR)
  405. X      err(3, "zip file ended prematurely");
  406. X
  407. X  /* validate decompression */
  408. X  if (LG(h + LOCCRC) != updcrc(slide, 0L))
  409. X    err(4, "invalid compressed data--crc error");
  410. X  if (LG(h + (g ? LOCSIZ : LOCLEN)) != outsiz)
  411. X    err(4, "invalid compressed data--length error");
  412. X
  413. X  /* check if there are more entries */
  414. X  if (!g && fread((char *)h, 1, 4, in) == 4 && LG(h) == LOCSIG)
  415. X    FPRINTF(stderr,
  416. X      "funzip warning: zip file has more than one entry--rest ignored\n");
  417. X
  418. X  exit(0);
  419. X}
  420. END_OF_FILE
  421.   if test 14247 -ne `wc -c <'unzip-5.12/funzip.c'`; then
  422.     echo shar: \"'unzip-5.12/funzip.c'\" unpacked with wrong size!
  423.   fi
  424.   # end of 'unzip-5.12/funzip.c'
  425. fi
  426. if test -f 'unzip-5.12/mac/thinkc.hqx' -a "${1}" != "-c" ; then 
  427.   echo shar: Will not clobber existing file \"'unzip-5.12/mac/thinkc.hqx'\"
  428. else
  429.   echo shar: Extracting \"'unzip-5.12/mac/thinkc.hqx'\" \(24586 characters\)
  430.   sed "s/^X//" >'unzip-5.12/mac/thinkc.hqx' <<'END_OF_FILE'
  431. X(This file must be converted with BinHex 4.0)
  432. X
  433. X:$(9ZHQP`,R4SD@jVB`"38Np+5d&)6!#3#%r--XF!N!3"!*!$6I)!!%cb!!!"fJ#
  434. X3!`)14'9cDh4[F#"'EfaNCA*%!3#3"dakT9J-G@jkDA!ZG'KTEQYMFJ)!N!038Np
  435. X+5d&)6!%!!*`"!*!$8&*25NY"5%`"!!#F!3#3%kThLmN!N!C2c&4"8NC839)J!3$
  436. XrN!3!N!49C!#3"&!!N!03!*!,TGA!%+A9`#`!N"-#!!#C"J!8!*!k!r!!N2m!N2m
  437. X!N2m!N2)9!*!$#!!%rbN"*J#3"4J!N!JM!"3XarP!!)!FM@J!()Ui!*!$#J#3!`J
  438. X!N!-)!*!&&L0TEQ0XG@4P)$a0B@0)C@&NCA*c2J#3!`&B!!#`"3!!4&*@8J'B!#5
  439. X+c!!!rc!!YJ#3#%MN!*!$9!!NLX`!!!%!N!-"!*!$$#S!N!0-!#5-!!03i!!!(!"
  440. X'!!&)390)!*!$%PT26N8!N!-H!!%!!!)!!$)!+NM`!!$rr`)!"#B!+NMN"@eVB@K
  441. XX!*!$%!!NLX`!!2m`!,B!N!98!#5+c!!!!3#3!`%!N!--+J#3!d`!*)`!!e$J!!!
  442. XF!%B!!8K"8dJ!N!-5@Np143#3!ai!!3!!!J!!-J!U52!!!2rr!J!%*J!U513&E@Y
  443. XKD'`!N!-3!#5+c!!!rc!!YJ#3"93!*)V-!!!"!*!$!3#3!``U!*!$6!!NM!!$81!
  444. X!!"`!4J99ERTTF#!e,M%a-d&&!*!$(J!"!!!#!!!b!#T)m!!!rrm#!!3Q!#T)j!9
  445. XYDf&SE!#3!a!!*)V-!!$r-!#f!!""8&"-99TTF!!!!J#3!`9!!*!$!J#3!f!!N"-
  446. X%!*!+CB3!N"%35%%#"!!5!*!$!`#3!f!!N"-%!*!+9a3!N"(f4&)"!J!+!*!$"!#
  447. X3!f!!N"-%!*!+9+!!N"!"9N4#!`-!#3#3!`8!N!0J!*!6"!#3#Jr#!*!3$@!!+J)
  448. X%!!%!N!-'!*!$B!#3%`3!N!S)-J#3%%Lm!!!#"!!1!*!$"`#3!f!!N"-%!*!Frrm
  449. X!!!)%!!X!N!-)!*!$B!#3%`3!N!S+M!#3%4`r2!)%!!`!N!-*!*!$B!#3%`3!N!T
  450. X1pJ#3%!Db2c`#"!!0!*!'!5!!!#%U!*!$9!#3"J0)!!"Ea!!!5Y!!!#TB!*!9*)V
  451. X-!3)!%3#3!`S!N!0J!*!6"!#3#P*B!*!3!Hd"r3%#!!B!N!-,!*!$B!#3%`3!N!T
  452. X1SJ#3%'`!r`!"!J!$!*!$$!#3!f!!N"-%!*!+6rS!N"0)!3)!"!#3!`d!N!0J!*!
  453. X6"!#3#Nr'!*!3@YB!!3%#!!8!N!-1!*!$B!#3%`3!N!TE#!#3%&C5!CJ"!J!2!*!
  454. X$$`#3!f!!N"-%!*!+8ii!N"3"!J!3!*!$%!#3!f!!N"-%!*!J!J3!"`#3!a%!N!0
  455. XJ!*!6"!#3#Y)-!*!3mdJ"!!)%!*!&%J#3!f!!N"-%!*!+9'i!N"!%F!HB!J3!%`#
  456. X3!a-!N!0J!*!6"!#3#P'@!*!3)&"bE`%#!!)!N!-8!*!$B!#3%`3!N#!$!`!)!*!
  457. X'%JJ!!'9B!!!&d!#3"M%!N!0ZFJ!!+&!!N"`$!`!8!*!$"J!4!!!JE`#3!aB!d`!
  458. X$!A`"cJ$6!3i"I!(mP#!!N!Bi!!!Tm+J!+I5S!#Rdb!!Tpe3!+IS%!#RmfJ!TrIJ
  459. X!+Im5!#Rr5!!U!0)!+J0F!#S&k!!U#(3!+JX#!#S0N!!!+K"N!#S6&J!U%d`!+KC
  460. X)!#SBd!!U'k!!+K[5!#SEp!!U++J!N,N'`8!!N!d'`6!!N'N'`-3!"X$!!*!$#!!
  461. X"!%%!J3$"!C!$33'"!F%#!3*"!S%#`3-"!d%$J32""!%%335""-%&!39""B%&`3B
  462. X""N%'J3E""`%(33H""m%)!3K"#)%)`3N"#8%*J3R"#J%+33U"#X%,!3Y"#i%,`3`
  463. X"$%%-J3c"$3%033f"$F%1!3j"$S%1`3m"$d%2J3r"!!%!J3'3!i%#!3+"!`%$J33
  464. X"")%&!3@""J%'J3F""i%)!3L"#3%*J3S"#S%,!3Z"$!%-J3d"$B%1!3k"$`%2J4!
  465. X"%)%4!4'"%J%5J4-"%i%8!45"&3%9J4B"&S%A!4H"'!%BJ4N"'B%D!4U"'`%EJ4`
  466. X"()%G!4f"(J%HJ4m"(i%!!##3!h0VDA"`D@jR1L!P,6)bFb!JEQ9PC#!PFb"MEfe
  467. X`BA3Z)(BPG5iPG5!SBf&Z)'4[)(BPG5iPG5N+!##3!h0VDA"`D@jR1L!P,6)bFb!
  468. XJBfpYF(*PFh0TEfiJE@9dD'pN)#9N#J!!*A-k)#"LB@3JCQPXC@jKE@8JE'9ZCh4
  469. XS)#JPFbN+!!!PFcSJ)'*KC#"PH(4bB5"QD@9XC#"XC@jRG'JJ+#9c+3S!CQPXC5!
  470. XM*@3k)#"LB@3JHQP`CQPXC5"[CQCcCA3J+#9c+6SJ)#9XC!S!*6KcD@jR1L!P,6)
  471. XbFb!J*A-PF`!PFb!J*A-k)#!PE'3JBRPdCA-JFQ9aG@PbC@3JG'mJG@jMEfe`FQ9
  472. XcFb"dEb!PE(8JBRPdCA-l#L#3"#9c)*!'Fh9`F'pcC@3JG'mJFQ9aG@PbC5!PE(8
  473. XJBRPdCA-PFb9c*A-+!!!+*A-k)#"LB@3JCQPX3!!!EfeYC@jd)'aPEQGdD!S!!'a
  474. X[Bf&X)'KPB@4PFJS!&#c(q8!!&#c(q8!!!!%!!2q3#+Te@qi!'!!"!!"8FPT*8%N
  475. X!#ATTF'PZCQmZB`!!!D5A`JQNPm)*T*I##3!D!!)!!&-H68&$5!%+6@&M5'9KC'9
  476. XbF`#3!`'UG9bNUR9FT+TeA+3!&J!"!!"8FP91@NN!"h9ZHQP`,QJ!!!+N-adpT$-
  477. XG2D3c(6d!&J!#!!"5f9084%N""h0dC'P[,QJ!!!1N,ErlT#frqk3Y[rX!'!!#!!"
  478. X5f90*@N8!#(0THQ9IG#jS!(-!!U3VMFUN+ih+T#Z0bJ!@!!)!!&,C3e4C8!%(Bh4
  479. XjF'8ZD!!!!U3VM+#N+ibJT#Z-S!!@!!)!!&,C49*56J%(CA*bEQmZD!!!!U3Y`,1
  480. XN,F#cT#h!X`!B!!)!!&,C8e4553%)Fh4bD@jR,QJ!F`!#T#apRk3XICqN,(fI!"J
  481. X!!J!!8YP-58e*!3KXD@eTG(-ZD!"c!!+N,F"!T#h!3+3Y`%!!'!!#!!"5f9084%3
  482. X"#(0dC'4PCLjS!(-!!k3Y`#+N,F!LT#h!)J!B!!)!!&,C9d0)33!*Gf0SBA*IG#j
  483. XS!!!#T#j4$D3Z83fN,P%0!"J!!J!!8YP69%4-!3KcG'4XD@)ZD!#3!`+N,E[0T#f
  484. XlcD3YZmd!'!!#!!"5f90*4di"#(0TCfjKE#jS!*!$!U3arj!!T$(rN!#N-Iq3!!!
  485. X@!!)!!&,C4N019!%(CQ0ZG'`ZD!!!!UNe"e5T03G8U68(9!!B!!%!!&4b68&$8`!
  486. X*E@&MFh4KG#jS!!!$T#h!LD3Y`)QN,F#*!"B!!J!!8YP858e&!3CdD@eP,QJ!,J!
  487. X#U68(8UNe"e+T03G5!"J!!3!!9(*0380%!!KYB@0NDA)ZD!!!#J!8,-Ij3!!8,-I
  488. Xj3!!!!3!!rj!)URC5B!!B!!%!!&4b49K88J!*CAKdFQ&MG#jM!!!"T*I##D5A`JQ
  489. XNPm)*!"S!!J!!8aj0380)!3T0B@0)C@&NCA*c!*!$!DTeA+5UG9bNUR9FT!!@!!%
  490. X!!&4b98jD53!(G@jkDA!ZD!!!!U3c(6fN-adpT$-G23!@!!)!!&,C8e4%53%(Fh4
  491. XND@mZD!!!!k3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!)FfPkC9pd,QJ!F`!#T#Z
  492. X0bU3VMFUN+ih+!"B!!J!!8YP$9&P3!3GMG(P`C5jS!!!#T#Z-S+3VM+#N+ibJ!"B
  493. X!!J!!8YP&8P*1!3GPFR*ZEbjS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!!8YP69&**!3K
  494. XcG(*TEQFZD!"c!!+N,(fIT#apRk3XICm!'!!#!!"5f8a*68N"#'aTE@PdFbjS!(-
  495. X!!U3Y`%#N,F"!T#h!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!$T#h!)U3Y`#+
  496. XN,F!L!"J!!J!!8YPA3dK"!!PhBfKKFPpd,QJ!!!+N,P%0T#j4$D3Z83d!'!!#!!"
  497. X5f9084%`"#(0dC'aTBLjS!*!$!U3YZmfN,E[0T#flc3!B!!)!!&,C8dP(6J%)FfP
  498. XREQ&X,QJ!N!-#T$(rN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj8!3GQBfjdE#jS!!!
  499. X#U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ!!!1N,F#*T#h!LD3
  500. XY`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!+T03G5U68(8UNe"e)!'!!"!!"8FNe
  501. X"3d3!#'eKBf4TFLjS!*!$!DTP-PUUC6*DUQ8b@J!@!!%!!&4b3e*C8!!(Bh*jF(3
  502. XZD!!+!"3XarP!!"3XarP!!!!"!!$rN!LUG9[#!"J!!3!!9(*'58a&!!PQD@aPAfP
  503. X[,Q-!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UR9
  504. XFT+TeA+5UG9bN!"B!!3!!9(*96PT*!!GeERTTF#jS!!!#T$-G2D3c(6fN-adp!"B
  505. X!!J!!8YP69%4*!3GcG'4TEbjS!!!$T#frqk3Y[rZN,Erl!"J!!J!!8YP659T&!!K
  506. XcDATPAh3ZD!"c!!+N+ih+T#Z0bU3VMFS!&J!#!!"5f808@9!""f0dHA"P,QJ!!!+
  507. XN+ibJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-
  508. X!'!!#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P
  509. X053%)E'PYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@B
  510. XZD!"c!!1N,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83f
  511. XN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J
  512. X!!J!!8YP658G1!3KcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C
  513. X$6P3""fCMER4X,QJ!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3
  514. XZD!!!!k3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G
  515. X5U68(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ!N!-"UQ8b@UTP-PUUC6*D!"B!!3!
  516. X!9(*$8PP3!!GMFRP`G#jS!!!"UH+c2URLXckTiV-q!"J!!3!!9(*838*-!!KdB@*
  517. XXCA-ZD!!!#J!8,-Ij3!!8,-Ij3!!!!3!!rj!)U68(8J!D!!%!!&4b68&$8`!,E@&
  518. XMFf0bC@9Z,Q-!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-
  519. X!N!-"T"Bj`+3@1F#N&MR!!"S!!J!!8ap498P$!3Y4G@PMDd4bBAFZD!!!!D3c(6f
  520. XN-adpT$-G23!@!!)!!&,C8e4%53%(Fh4ND@mZD!!!!U3Y[rZN,ErlT#frq`!B!!)
  521. X!!&,C8dPD43!)FfPkC9pd,QJ!,J!"T#fm%k3Y["1N,E`6!"J!!J!!8YP69%4"!3K
  522. XcG'4KFQFZD!!Z!!'N,F#cT#h!Xk3Y`,-!'!!#!!"5f9088NN"#(0dFQPZCbjS!#i
  523. X+!"3XarP!!"3XarP!!!!"!!$rN!LT03G5!"J!!3!!9(*03806!!PYB@0cG'&d,Q-
  524. X!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"T&"Z@k4
  525. X3EPZN8'jE!"J!!J!!8h*3390$!3K`BA0MB@`ZD!"c!!'N,F#cT#h!Xk3Y`,-!'!!
  526. X#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!
  527. X)FfPkC9pd,QJ!F`!"U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ
  528. X!!!+N,F#*T#h!LD3Y`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!!8,-Ij3!!8,-I
  529. Xj3!!!!3!!rj!)T*ceA`!B!!)!!&0k68&$9!!)6@&M9(*KF(-!!!S!&#c(q8!!&#c
  530. X(q8!!!!%!!2q3#+Ne"e)!'!!"!!"8FNe"3d3!#'eKBf4TFLjM!()!!D5A`JQNPm)
  531. X*T*I##3!D!!)!!&-H68&$5!%+6@&M5'9KC'9bF`#3!`'N&MR!T"Bj`+3@1F!!'!!
  532. X#!!"6(d958Nm"#%9bFQpbFbjS!(-!!D3c,TUN-bkDT$-ZQJ!@!!)!!&-I4NP-43%
  533. X(4QPXCA-ZD!!!!D3VM+#N+ibJT#Z-S!!@!!)!!&,C49*56J%(CA*bEQmZD!!!!D3
  534. XZ83fN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!F`!#T#frqk3Y[rZN,Er
  535. Xl!"J!!J!!8YP659T&!!KcDATPAh3ZD!"c!!+N,F!LT#h!)U3Y`#)!'!!#!!"5f9G
  536. X$5%%!#AGMD'&bAh3ZD!!!!D3Y`,1N,F#cT#h!X`!B!!)!!&,C8e4553%)Fh4bD@j
  537. XR,QJ!N!-"U68(8UNe"e+T03G5!"J!!3!!9(*0380%!!KYB@0NDA)ZD!!!#J!8,-I
  538. Xj3!!8,-Ij3!!!!3!!rj!)UQlrNJ!@!!%!!&4b68&83`!(E@&dBfJZB`!!!D5A`JQ
  539. XNPm)*T*I##3!D!!)!!&-H68&$5!%+6@&M5'9KC'9bF`#3!`'UG9bNUR9FT+TeA+3
  540. X!&J!"!!"8FP91@NN!"h9ZHQP`,QJ!!!+N-adpT$-G2D3c(6d!&J!#!!"5f9084%N
  541. X""h0dC'P[,QJ!!!1N,ErlT#frqk3Y[rX!'!!#!!"5f90*@N8!#(0THQ9IG#jS!(-
  542. X!!U3VMFUN+ih+T#Z0bJ!@!!)!!&,C3e4C8!%(Bh4jF'8ZD!!!!U3VM+#N+ibJT#Z
  543. X-S!!@!!)!!&,C49*56J%(CA*bEQmZD!!!!U3Y`,1N,F#cT#h!X`!B!!)!!&,C8e4
  544. X553%)Fh4bD@jR,QJ!F`!#T#apRk3XICqN,(fI!"J!!J!!8YP-58e*!3KXD@eTG(-
  545. XZD!"c!!+N,F"!T#h!3+3Y`%!!'!!#!!"5f9084%3"#(0dC'4PCLjS!(-!!k3Y`#+
  546. XN,F!LT#h!)J!B!!)!!&,C9d0)33!*Gf0SBA*IG#jS!!!#T#j4$D3Z83fN,P%0!"J
  547. X!!J!!8YP69%4-!3KcG'4XD@)ZD!#3!`+N,E[0T#flcD3YZmd!'!!#!!"5f90*4di
  548. X"#(0TCfjKE#jS!*!$!U3arj!!T$(rN!#N-Iq3!!!@!!)!!&,C4N019!%(CQ0ZG'`
  549. XZD!!!!UNe"e5T03G8U68(9!!B!!%!!&4b68&$8`!*E@&MFh4KG#jS!!!$T#h!LD3
  550. XY`)QN,F#*!"B!!J!!8YP858e&!3CdD@eP,QJ!,J!#U68(8UNe"e+T03G5!"J!!3!
  551. X!9(*0380%!!KYB@0NDA)ZD!!!#J!8,-Ij3!!8,-Ij3!!!!3!!rj!)UP'S)J!B!!%
  552. X!!&4b49K36!!*CAK`E'pNC5jM!!!"T*I##D5A`JQNPm)*!"S!!J!!8aj0380)!3T
  553. X0B@0)C@&NCA*c!*!$!DTeA+5UG9bNUR9FT!!@!!%!!&4b98jD53!(G@jkDA!ZD!!
  554. X!!U3c(6fN-adpT$-G23!@!!)!!&,C8e4%53%(Fh4ND@mZD!!!!k3Y[rZN,ErlT#f
  555. Xrq`!B!!)!!&,C8dPD43!)FfPkC9pd,QJ!F`!#T#Z0bU3VMFUN+ih+!"B!!J!!8YP
  556. X$9&P3!3GMG(P`C5jS!!!#T#Z-S+3VM+#N+ibJ!"B!!J!!8YP&8P*1!3GPFR*ZEbj
  557. XS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!!8YP69&**!3KcG(*TEQFZD!"c!!+N,(fIT#a
  558. XpRk3XICm!'!!#!!"5f8a*68N"#'aTE@PdFbjS!(-!!U3Y`%#N,F"!T#h!3!!B!!)
  559. X!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!$T#h!)U3Y`#+N,F!L!"J!!J!!8YPA3dK"!!P
  560. XhBfKKFPpd,QJ!!!+N,P%0T#j4$D3Z83d!'!!#!!"5f9084%`"#(0dC'aTBLjS!*!
  561. X$!U3YZmfN,E[0T#flc3!B!!)!!&,C8dP(6J%)FfPREQ&X,QJ!N!-#T$(rN!#N-Iq
  562. X3!+3arj!!!"B!!J!!8YP'3dj8!3GQBfjdE#jS!!!#U68(9+Ne"e5T03G8!"J!!3!
  563. X!9(*03806!!PYB@0cG'&d,QJ!!!1N,F#*T#h!LD3Y`)N!&J!#!!"5f94*688""R4
  564. XTE@8ZD!!Z!!+T03G5U68(8UNe"e)!'!!"!!"8FNe"3d3!#'eKBf4TFLjS!!!+!"3
  565. XXarP!!"3XarP!!!!"!!$rN!LTfrqS!"J!!3!!9(*&6PC"!!PPERCKFQGc,Q-!!!'
  566. XNPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UR9FT+TeA+5
  567. XUG9bN!"B!!3!!9(*96PT*!!GeERTTF#jS!!!#T$-G2D3c(6fN-adp!"B!!J!!8YP
  568. X69%4*!3GcG'4TEbjS!!!$T#frqk3Y[rZN,Erl!"J!!J!!8YP659T&!!KcDATPAh3
  569. XZD!"c!!+N+ih+T#Z0bU3VMFS!&J!#!!"5f808@9!""f0dHA"P,QJ!!!+N+ibJT#Z
  570. X-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-!'!!#!!"
  571. X5f9088NN"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P053%)E'P
  572. XYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@BZD!"c!!1
  573. XN,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83fN,P%0T#j
  574. X4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J!!J!!8YP
  575. X658G1!3KcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C$6P3""fC
  576. XMER4X,QJ!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3ZD!!!!k3
  577. XY`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G5U68(8J!
  578. XB!!%!!&4b68&$4!!)E@&MC'Pb,QJ!!!S!&#c(q8!!&#c(q8!!!!%!!2q3#+ME6B3
  579. X!'J!"!!"8FP918N8!#R9ZFQ9NG@0P,Q-!N!-"T*I##D5A`JQNPm)*!"S!!J!!8aj
  580. X0380)!3T0B@0)C@&NCA*c!*!$!DTeA+5UG9bNUR9FT!!@!!%!!&4b98jD53!(G@j
  581. XkDA!ZD!!!!U3c(6fN-adpT$-G23!@!!)!!&,C8e4%53%(Fh4ND@mZD!!!!k3Y[rZ
  582. XN,ErlT#frq`!B!!)!!&,C8dPD43!)FfPkC9pd,QJ!F`!#T#Z0bU3VMFUN+ih+!"B
  583. X!!J!!8YP$9&P3!3GMG(P`C5jS!!!#T#Z-S+3VM+#N+ibJ!"B!!J!!8YP&8P*1!3G
  584. XPFR*ZEbjS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!!8YP69&**!3KcG(*TEQFZD!"c!!+
  585. XN,(fIT#apRk3XICm!'!!#!!"5f8a*68N"#'aTE@PdFbjS!(-!!U3Y`%#N,F"!T#h
  586. X!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!$T#h!)U3Y`#+N,F!L!"J!!J!!8YP
  587. XA3dK"!!PhBfKKFPpd,QJ!!!+N,P%0T#j4$D3Z83d!'!!#!!"5f9084%`"#(0dC'a
  588. XTBLjS!*!$!U3YZmfN,E[0T#flc3!B!!)!!&,C8dP(6J%)FfPREQ&X,QJ!N!-#T$(
  589. XrN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj8!3GQBfjdE#jS!!!#U68(9+Ne"e5T03G
  590. X8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ!!!1N,F#*T#h!LD3Y`)N!&J!#!!"5f94
  591. X*688""R4TE@8ZD!!Z!!+T03G5U68(8UNe"e)!'!!"!!"8FNe"3d3!#'eKBf4TFLj
  592. XS!!!+!"3XarP!!"3XarP!!!!"!!$rN!LUG9[3!"S!!3!!9(*96P0)!!TeER0SFQP
  593. XZDbjM!*!$!D5A`JQNPm)*T*I##3!D!!)!!&-H68&$5!%+6@&M5'9KC'9bF`#3!`'
  594. XUG9bNUR9FT+TeA+3!&J!"!!"8FP91@NN!"h9ZHQP`,QJ!!!+N-adpT$-G2D3c(6d
  595. X!&J!#!!"5f9084%N""h0dC'P[,QJ!!!1N,ErlT#frqk3Y[rX!'!!#!!"5f90*@N8
  596. X!#(0THQ9IG#jS!(-!!U3VMFUN+ih+T#Z0bJ!@!!)!!&,C3e4C8!%(Bh4jF'8ZD!!
  597. X!!U3VM+#N+ibJT#Z-S!!@!!)!!&,C49*56J%(CA*bEQmZD!!!!U3Y`,1N,F#cT#h
  598. X!X`!B!!)!!&,C8e4553%)Fh4bD@jR,QJ!F`!#T#apRk3XICqN,(fI!"J!!J!!8YP
  599. X-58e*!3KXD@eTG(-ZD!"c!!+N,F"!T#h!3+3Y`%!!'!!#!!"5f9084%3"#(0dC'4
  600. XPCLjS!(-!!k3Y`#+N,F!LT#h!)J!B!!)!!&,C9d0)33!*Gf0SBA*IG#jS!!!#T#j
  601. X4$D3Z83fN,P%0!"J!!J!!8YP69%4-!3KcG'4XD@)ZD!#3!`+N,E[0T#flcD3YZmd
  602. X!'!!#!!"5f90*4di"#(0TCfjKE#jS!*!$!U3arj!!T$(rN!#N-Iq3!!!@!!)!!&,
  603. XC4N019!%(CQ0ZG'`ZD!!!!UNe"e5T03G8U68(9!!B!!%!!&4b68&$8`!*E@&MFh4
  604. XKG#jS!!!$T#h!LD3Y`)QN,F#*!"B!!J!!8YP858e&!3CdD@eP,QJ!,J!#U68(8UN
  605. Xe"e+T03G5!"J!!3!!9(*0380%!!KYB@0NDA)ZD!!!#J!8,-Ij3!!8,-Ij3!!!!3!
  606. X!rj!)URC%R!!@!!%!!&4b98jD53!(G@jkDA!ZB`!!!D5A`JQNPm)*T*I##3!D!!)
  607. X!!&-H68&$5!%+6@&M5'9KC'9bF`#3!`'UG9bNUR9FT+TeA+3!&J!"!!"8FP91@NN
  608. X!"h9ZHQP`,QJ!!!+N-adpT$-G2D3c(6d!&J!#!!"5f9084%N""h0dC'P[,QJ!!!1
  609. XN,ErlT#frqk3Y[rX!'!!#!!"5f90*@N8!#(0THQ9IG#jS!(-!!U3VMFUN+ih+T#Z
  610. X0bJ!@!!)!!&,C3e4C8!%(Bh4jF'8ZD!!!!U3VM+#N+ibJT#Z-S!!@!!)!!&,C49*
  611. X56J%(CA*bEQmZD!!!!U3Y`,1N,F#cT#h!X`!B!!)!!&,C8e4553%)Fh4bD@jR,QJ
  612. X!F`!#T#apRk3XICqN,(fI!"J!!J!!8YP-58e*!3KXD@eTG(-ZD!"c!!+N,F"!T#h
  613. X!3+3Y`%!!'!!#!!"5f9084%3"#(0dC'4PCLjS!(-!!k3Y`#+N,F!LT#h!)J!B!!)
  614. X!!&,C9d0)33!*Gf0SBA*IG#jS!!!#T#j4$D3Z83fN,P%0!"J!!J!!8YP69%4-!3K
  615. XcG'4XD@)ZD!#3!`+N,E[0T#flcD3YZmd!'!!#!!"5f90*4di"#(0TCfjKE#jS!*!
  616. X$!U3arj!!T$(rN!#N-Iq3!!!@!!)!!&,C4N019!%(CQ0ZG'`ZD!!!!UNe"e5T03G
  617. X8U68(9!!B!!%!!&4b68&$8`!*E@&MFh4KG#jS!!!$T#h!LD3Y`)QN,F#*!"B!!J!
  618. X!8YP858e&!3CdD@eP,QJ!,J!#U68(8UNe"e+T03G5!"J!!3!!9(*0380%!!KYB@0
  619. XNDA)ZD!#3!`'UC6*DUQ8b@UTP-PS!&J!"!!"8FN05@9!!"f0bHA"d,QJ!!!'UGMZ
  620. X@URBlPUTf1jB!'!!"!!"8FPC&8P-!#ACPFR0TEfiZD!!+!"3XarP!!"3XarP!!!!
  621. X"!!$rN!LU9A9Q!"J!!3!!9(**6NC-!!PTEQCXBA4P,Q-!!!'NPm)*T*I##D5A`JN
  622. X!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UP&M"UT4B`DU8@-'!"J!!3!!9(*
  623. X*6NC-!!PTEQCXBA4P,QJ!!!+UG9bNUR9FT+TeA+3!&J!"!!"8FP91@NN!"h9ZHQP
  624. X`,QJ!!!1N-adpT$-G2D3c(6d!&J!#!!"5f9084%N""h0dC'P[,QJ!!!5N,ErlT#f
  625. Xrqk3Y[rX!'!!#!!"5f90*@N8!#(0THQ9IG#jS!*!$!k3VMFUN+ih+T#Z0bJ!@!!)
  626. X!!&,C3e4C8!%(Bh4jF'8ZD!!!!k3VM+#N+ibJT#Z-S!!@!!)!!&,C49*56J%(CA*
  627. XbEQmZD!!!!k3Y`,1N,F#cT#h!X`!B!!)!!&,C8e4553%)Fh4bD@jR,QJ!N!-$T#a
  628. XpRk3XICqN,(fI!"J!!J!!8YP-58e*!3KXD@eTG(-ZD!#3!`1N,F"!T#h!3+3Y`%!
  629. X!'!!#!!"5f9084%3"#(0dC'4PCLjS!*!$"+3Y`#+N,F!LT#h!)J!B!!)!!&,C9d0
  630. X)33!*Gf0SBA*IG#jS!!!$T#j4$D3Z83fN,P%0!"J!!J!!8YP69%4-!3KcG'4XD@)
  631. XZD!#3!`1N,E[0T#flcD3YZmd!'!!#!!"5f90*4di"#(0TCfjKE#jS!*!$!k3arj!
  632. X!T$(rN!#N-Iq3!!!@!!)!!&,C4N019!%(CQ0ZG'`ZD!!!!kNe"e5T03G8U68(9!!
  633. XB!!%!!&4b68&$8`!*E@&MFh4KG#jS!!!%T#h!LD3Y`)QN,F#*!"B!!J!!8YP858e
  634. X&!3CdD@eP,QJ!,J!$U68(8UNe"e+T03G5!"J!!3!!9(*0380%!!KYB@0NDA)ZD!#
  635. X3""3XarP!!"3XarP!!!!"!!$rN!LNR29b!"J!!J!!8hT03808!!P0B@08FQ&`Fc)
  636. X!#J!8,-Ij3!!8,-Ij3!!!!3!!rj!)UNYjqJ!D!!%!!&4b68&$93!+E@&MG@jkDA!
  637. XZB`#3!`'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UR9
  638. XFT+TeA+5UG9bN!"B!!3!!9(*96PT*!!GeERTTF#jS!!!#T$-G2D3c(6fN-adp!"B
  639. X!!J!!8YP69%4*!3GcG'4TEbjS!!!$T#frqk3Y[rZN,Erl!"J!!J!!8YP659T&!!K
  640. XcDATPAh3ZD!"c!!+N+ih+T#Z0bU3VMFS!&J!#!!"5f808@9!""f0dHA"P,QJ!!!+
  641. XN+ibJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-
  642. X!'!!#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P
  643. X053%)E'PYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@B
  644. XZD!"c!!1N,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83f
  645. XN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J
  646. X!!J!!8YP658G1!3KcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C
  647. X$6P3""fCMER4X,QJ!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3
  648. XZD!!!!k3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G
  649. X5U68(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ!N!-"T"Bj`+3@1F#N&MR!!"B!!J!
  650. X!8ap88N&3!3G8FQ&`FbjS!!!"T"Bj`+3@1F#N&MR!!"J!!J!!8ap@38a9!3K@B@a
  651. XeCA-ZD!#3!`+NU-65T+M%dU5Sa0)!&J!#!!"6FP0"6N8""P0"6N8ZD!"S#J!8,-I
  652. Xj3!!8,-Ij3!!!!3!!rj!)URBr8J!8!!%!!&4b68&$,J!&E@&M,Q-!!!'NPm)*T*I
  653. X##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UR9FT+TeA+5UG9bN!"B
  654. X!!3!!9(*96PT*!!GeERTTF#jS!!!#T$-G2D3c(6fN-adp!"B!!J!!8YP69%4*!3G
  655. XcG'4TEbjS!!!$T#frqk3Y[rZN,Erl!"J!!J!!8YP659T&!!KcDATPAh3ZD!"c!!+
  656. XN+ih+T#Z0bU3VMFS!&J!#!!"5f808@9!""f0dHA"P,QJ!!!+N+ibJT#Z-S+3VM+!
  657. X!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-!'!!#!!"5f9088NN
  658. X"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P053%)E'PYDA4c,QJ
  659. X!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@BZD!"c!!1N,F!LT#h
  660. X!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83fN,P%0T#j4$3!B!!)
  661. X!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J!!J!!8YP658G1!3K
  662. XcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C$6P3""fCMER4X,QJ
  663. X!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3ZD!!!!k3Y`)QN,F#
  664. X*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G5U68(8J!B!!%!!&4
  665. Xb68&$4!!)E@&MC'Pb,QJ!!!S!&#c(q8!!&#c(q8!!!!%!!2q3#+Te@l3!&J!"!!"
  666. X8FN05@9!!"f0bHA"d,Q-!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdK
  667. XPB@4PFR-!N!-"UH+dG+RLY(5TiV4d!"3!!3!!9(*D59!Z!!9kDA!ZD!!!!UTeA+5
  668. XUG9bNUR9FT!!@!!%!!&4b98jD53!(G@jkDA!ZD!!!!k3c(6fN-adpT$-G23!@!!)
  669. X!!&,C8e4%53%(Fh4ND@mZD!!!"+3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!)FfP
  670. XkC9pd,QJ!F`!$T#Z0bU3VMFUN+ih+!"B!!J!!8YP$9&P3!3GMG(P`C5jS!!!$T#Z
  671. X-S+3VM+#N+ibJ!"B!!J!!8YP&8P*1!3GPFR*ZEbjS!!!$T#h!Xk3Y`,1N,F#c!"J
  672. X!!J!!8YP69&**!3KcG(*TEQFZD!"c!!1N,(fIT#apRk3XICm!'!!#!!"5f8a*68N
  673. X"#'aTE@PdFbjS!(-!!k3Y`%#N,F"!T#h!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ
  674. X!F`!%T#h!)U3Y`#+N,F!L!"J!!J!!8YPA3dK"!!PhBfKKFPpd,QJ!!!1N,P%0T#j
  675. X4$D3Z83d!'!!#!!"5f9084%`"#(0dC'aTBLjS!*!$!k3YZmfN,E[0T#flc3!B!!)
  676. X!!&,C8dP(6J%)FfPREQ&X,QJ!N!-$T$(rN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj
  677. X8!3GQBfjdE#jS!!!$U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ
  678. X!!!5N,F#*T#h!LD3Y`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!1T03G5U68(8UN
  679. Xe"e)!'!!"!!"8FNe"3d3!#'eKBf4TFLjS!*!$!DTP-PUUC6*DUQ8b@J!@!!%!!&4
  680. Xb3e*C8!!(Bh*jF(3ZD!!`!"3XarP!!"3XarP!!!!"!!$rN!LU8D&f!"3!!J!!8Y9
  681. X"6P0*!!4"6P0*!(S!N!5N+ih+T#Z0bJ!@!!)!N!8"!*!$#!4YB@PZ)*!$!!+N+ib
  682. XJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-!'!!
  683. X#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P053%
  684. X)E'PYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@BZD!"
  685. Xc!!1N,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83fN,P%
  686. X0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J!!J!
  687. X!8YP658G1!3KcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C$6P3
  688. X""fCMER4X,QJ!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3ZD!!
  689. X!!k3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G5U68
  690. X(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ!!!S!&#c(q8!!&#c(q8!!!!%!!2q3#+T
  691. Xf4*`!&J!"!!"8FP91@NN!"h9ZHQP`,Q-!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne
  692. X"3dJ"#NeKBdKPB@4PFR-!N!-"UR9FT+TeA+5UG9bN!"B!!3!!9(*96PT*!!GeERT
  693. XTF#jS!!!#T$-G2D3c(6fN-adp!"B!!J!!8YP69%4*!3GcG'4TEbjS!!!$T#frqk3
  694. XY[rZN,Erl!"J!!J!!8YP659T&!!KcDATPAh3ZD!"c!!+N+ih+T#Z0bU3VMFS!&J!
  695. X#!!"5f808@9!""f0dHA"P,QJ!!!+N+ibJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9
  696. XbFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-!'!!#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3
  697. XXICqN,(fIT#apR`!B!!)!!&,C6%P053%)E'PYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"
  698. X!!"J!!J!!8YP69%4%!3KcG'4NC@BZD!"c!!1N,F!LT#h!)U3Y`#)!'!!#!!"5f9G
  699. X$5%%!#AGMD'&bAh3ZD!!!!U3Z83fN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'P
  700. XL,QJ!N!-#T#flcD3YZmfN,E[0!"J!!J!!8YP658G1!3KcD@GZB@`ZD!#3!`+N-Iq
  701. X3!+3arj!!T$(rN!!!&J!#!!"5f8C$6P3""fCMER4X,QJ!!!+T03G8U68(9+Ne"e3
  702. X!'!!"!!"8FNe"3e-!#@eKBh0dBA3ZD!!!!k3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P
  703. X043%'G'PYC5jS!#i!!UNe"e+T03G5U68(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ
  704. X!N!-"UQ8b@UTP-PUUC6*D!"B!!3!!9(*$8PP3!!GMFRP`G#jS!!!"URBlPUTf1jD
  705. XUGMZ@!"J!!3!!9(*@49*6!!PfCA*cD@pZ,QJ!#J!8,-Ij3!!8,-Ij3!!!!3!!rj!
  706. X)UP9eCJ!B!!%!!&4b58j'6!!*D@jQE'&dC5jM!!!"T*I##D5A`JQNPm)*!"S!!J!
  707. X!8aj0380)!3T0B@0)C@&NCA*c!*!$!DT4B`DU8@-'UP&M"J!B!!%!!&4b58j'6!!
  708. X*D@jQE'&dC5jS!!!#UR9FT+TeA+5UG9bN!"B!!3!!9(*96PT*!!GeERTTF#jS!!!
  709. X$T$-G2D3c(6fN-adp!"B!!J!!8YP69%4*!3GcG'4TEbjS!!!%T#frqk3Y[rZN,Er
  710. Xl!"J!!J!!8YP659T&!!KcDATPAh3ZD!#3!`1N+ih+T#Z0bU3VMFS!&J!#!!"5f80
  711. X8@9!""f0dHA"P,QJ!!!1N+ibJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ
  712. X!!!1N,F#cT#h!Xk3Y`,-!'!!#!!"5f9088NN"#(0dFQPZCbjS!*!$!k3XICqN,(f
  713. XIT#apR`!B!!)!!&,C6%P053%)E'PYDA4c,QJ!N!-$T#h!3+3Y`%#N,F"!!"J!!J!
  714. X!8YP69%4%!3KcG'4NC@BZD!#3!`5N,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AG
  715. XMD'&bAh3ZD!!!!k3Z83fN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-
  716. X$T#flcD3YZmfN,E[0!"J!!J!!8YP658G1!3KcD@GZB@`ZD!#3!`1N-Iq3!+3arj!
  717. X!T$(rN!!!&J!#!!"5f8C$6P3""fCMER4X,QJ!!!1T03G8U68(9+Ne"e3!'!!"!!"
  718. X8FNe"3e-!#@eKBh0dBA3ZD!!!"+3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'P
  719. XYC5jS!#i!!kNe"e+T03G5U68(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ!N!38,-I
  720. Xj3!!8,-Ij3!!!!3!!rj!)T*ceFJ!B!!)!!&0k68&$9!!*6@&M9(*KF(-b!!S!&#c
  721. X(q8!!&#c(q8!!!!%!!2q3#+T,HIS!'J!"!!"8FNe"3e8!#QeKBh9ZHQP`,Q-!N!-
  722. X"T*I##D5A`JQNPm)*!"S!!J!!8aj0380)!3T0B@0)C@&NCA*c!*!$!DTeA+5UG9b
  723. XNUR9FT!!@!!%!!&4b98jD53!(G@jkDA!ZD!!!!U3c(6fN-adpT$-G23!@!!)!!&,
  724. XC8e4%53%(Fh4ND@mZD!!!!k3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!)FfPkC9p
  725. Xd,QJ!F`!#T#Z0bU3VMFUN+ih+!"B!!J!!8YP$9&P3!3GMG(P`C5jS!!!#T#Z-S+3
  726. XVM+#N+ibJ!"B!!J!!8YP&8P*1!3GPFR*ZEbjS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!
  727. X!8YP69&**!3KcG(*TEQFZD!"c!!+N,(fIT#apRk3XICm!'!!#!!"5f8a*68N"#'a
  728. XTE@PdFbjS!(-!!U3Y`%#N,F"!T#h!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!
  729. X$T#h!)U3Y`#+N,F!L!"J!!J!!8YPA3dK"!!PhBfKKFPpd,QJ!!!+N,P%0T#j4$D3
  730. XZ83d!'!!#!!"5f9084%`"#(0dC'aTBLjS!*!$!U3YZmfN,E[0T#flc3!B!!)!!&,
  731. XC8dP(6J%)FfPREQ&X,QJ!N!-#T$(rN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj8!3G
  732. XQBfjdE#jS!!!#U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ!!!1
  733. XN,F#*T#h!LD3Y`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!+T03G5U68(8UNe"e)
  734. X!'!!"!!"8FNe"3d3!#'eKBf4TFLjS!*!$!D3@1F#N&MR!T"Bj`!!@!!)!!&-I9&*
  735. X"8!%(9(*KF(-ZD!!!!D3@1F#N&MR!T"Bj`!!B!!)!!&-I9N&-93%)9Q&XG@9c,QJ
  736. X!N!-#T+M%dU5Sa0+NU-65!"B!!J!!8h*638j&!3C638j&,QJ!D+TeA+5UG9bNUR9
  737. XFT!!@!!%!!&4b98jD53!(G@jkDA!ZD!!!!U3c(6fN-adpT$-G23!@!!)!!&,C8e4
  738. X%53%(Fh4ND@mZD!!!!k3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!)FfPkC9pd,QJ
  739. X!F`!#T#Z0bU3VMFUN+ih+!"B!!J!!8YP$9&P3!3GMG(P`C5jS!!!#T#Z-S+3VM+#
  740. XN+ibJ!"B!!J!!8YP&8P*1!3GPFR*ZEbjS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!!8YP
  741. X69&**!3KcG(*TEQFZD!"c!!+N,(fIT#apRk3XICm!'!!#!!"5f8a*68N"#'aTE@P
  742. XdFbjS!(-!!U3Y`%#N,F"!T#h!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!$T#h
  743. X!)U3Y`#+N,F!L!"J!!J!!8YPA3dK"!!PhBfKKFPpd,QJ!!!+N,P%0T#j4$D3Z83d
  744. X!'!!#!!"5f9084%`"#(0dC'aTBLjS!*!$!U3YZmfN,E[0T#flc3!B!!)!!&,C8dP
  745. X(6J%)FfPREQ&X,QJ!N!-#T$(rN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj8!3GQBfj
  746. XdE#jS!!!#U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ!!!1N,F#
  747. X*T#h!LD3Y`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!+T03G5U68(8UNe"e)!'!!
  748. X"!!"8FNe"3d3!#'eKBf4TFLjS!!"`D@jR#J"PFR*[FL"E*A0G1L!JBQ&N)'9iG(*
  749. XK)'CTC@aN)%053b!P-$KXH#!SFfK[G@aN!*!$B!#3!h!!N!G3!*!$)!!F2c`!!DR
  750. X`"GBr2!!"UI!&kMmm!!'Tm!Aq2c`!!DR`"KSr2!!"UI!'8$mm!!'Tm!C`2c`!!DR
  751. X`"T)r2!!"UI!'XMmm!!'Tm!NX2c`!!DR`!*!$"!#3"`3!N!F%!*!'#6i!N!-+!*!
  752. XE&8*i#NUGcNkk!&41ZJ"N,$a*6N4B6VS(1NIkrmSQM%IkrmJQK%kk!'a1ZJ1L6VS
  753. X(mNkk!0j1ZJ#U3QG)H2rr5'm!"%KA5(J!!5)krl*1ZJ916V8B!#"Y!'a1N!#Tp&(
  754. Xi#Pj`!%kk"-CR"NU3!'F#S%P1G5!i#RKQ$L`m@Np148kk"Y)J$'!'*N!J+`!J4rV
  755. XrB#D!6R8X2%4"9%&1ZJDf)%`LH!N))!5J,Nkk"fT(q[p)*S3X2&088P01ZJDB4rV
  756. Xr0#D-,$a%8N9-6VS'L#"-)!4R$%kk!Ui%J!#3!`aQp%lk"c419[rD3IJ*%#*2F##
  757. XJ,R!"d"&D%G,!3IS!%R!&S#j9MdK[!!+TPdjH6R8ZFR0bB`"(qJIf*VJ+I#"i#RL
  758. Xar!#3"'F)4rS(jLDS!"B[1!U!CJ*BMdje@)p)jrri2Lm!1&(i#PjJ#PQ2,`LTT5!
  759. XIS%!`"dkk!pCRE%IkrTiQL#!3Cq3L3%U4CLkJ+D"*,$a$8N9-6VS&hQG-2Lm!1#"
  760. X-)!4R$%kk!0S%J!#3!`aQp%kk"S*1ZJ*m)(VqB+"T#!!!"fB%S'5J+8kk!ZBLE`!
  761. XdABN[53!f60mIre525MJ",@F#UIp1GA!2UFPBMb"[!!3-8%ljCJi`)%kk!e*Rk+!
  762. XU6VS#J#kI6R91ZJFU6VS!$Nkk"TK1G8kk"aa1G5!k"a"Q!!!b)(J#TR!-d*!!X,J
  763. X#UQBL)(J+l+!P)&!L5#)BB!T"k!!)G!'%'0$#8FRrp*!!L0#*CJ*1G5)!S#iJH!V
  764. XX)!'J*#*36qrr`#"23UJ!%M&T!!3!&U!93UG)D3!-)%qTmM)B6VS#lL4BeF%d'#)
  765. XBEMjR)P*"Ca*53@FQ9N&R!!#Z8N&R!!#B6R8b+2rd6VS#r0056R8b+2rd6VS#c00
  766. X56R8b+2rd6VS#dY1Urrj1G8kk!T)b+3!-5QN!#QBJ9%*U%&*#CRK`BkR*8N*Qq00
  767. X56R91ZJ+8dUN!$Y056R91ZJ+XdUN!$Ja#rraRBQeS8N*Q"0056R9$p4J#[P&Qc!a
  768. XK2caQaP*#CJB+DJ!Arrib)9K")RVmk0+4NNV68Nje-LMrp%kk!QM5MG1Urrj1G6)
  769. XSrr41ZJ)ddSh6U[rq6R91ZJ)SdUN!$Y+0dkVrrNjedSh6U[rq6R9$p4J#[P&Qm!a
  770. XK2caQkJTU!!2rr$)KA%%LH[b-dT(5U[rqNNSe3Irq0,a1F8je-KK1ZJ(J4I8B!0A
  771. XB0"KR-L)BEL4R$P*"CK3b+2rd6VS"k'!B-LMrp%kk!ETJ$M)Srr41ZJ(#B!C1ZJ(
  772. XLdSh6NNje)KK1ZJ(@de*1G5"kr"BJ1[`@5UJ!!'FS-LJ!+'FL*#J!'&P#3qd!%02
  773. XS!!69@6,m2ca#'4,S!$dbr+R`88&Ql%(S!%!%J!#3!d"QaNje)(VldL!kqp*brh3
  774. X!5UJ!!'FD[LJ!2@B80LJ!+%M$C`c8Jl+S!!4P"#)S!!4"k!"!")!!N!0!CY3JH[Z
  775. XZ)&"`%*+!jSN``HD+!%+!!$$#6R8J8()!-KJ`'!*!IrrRL82e'#!d%@!5)LN!"*+
  776. X)-X%br$mm-X)br+R`8FMrl'!f)"#J95"!FJ!b'$!B!N"rrqH*3r8B)!aT6[N!!QF
  777. XB0#N!"'!1-K&)F"!!-X)br%lj)Yp4b2r`)$S!#L"!CJ*K"Nl3!*!%-$bJ[D0')JJ
  778. X`2+LITdDbL'F'3IS!,'!J$$J!"!%[C3C"qJ!LB")-1!!#!5pP"N(k!"KJ"%(k!"j
  779. X$q[r#)SK1GD#p6RAdq%je6RS!!JM!!!01H`!#6R9CMbmm3dp%46m!UD!JAe$i#Pi
  780. XJ#%je+(VkUL*-Np6PJGR"dp41G5KkqT,#r!"!)M3B'#KkqTV5P%je+(VkIX,m!%!
  781. XL0"J)NVVkJNje+(VkE-,m!%!L0"J3dVVkE%je+(Vk@X,m!%!L0"J%"S%!N!-36R9
  782. X1Z[qL-LN!$%TT!!TQ"NkkrlKJ"%kkrpE5U3!16R8JAc)B0"L`@&I*rrT+3QIq6[!
  783. XJr#"I-KJd',#B9mRrqNT#Crj1m#$k)&mb'$3BX%*Z#T!!3@d'd%""m!!#-""RrNl
  784. X`!!!J,`!%,d%!"#)[!!J[A`!%51Fm!#3!*J&)3X6$+!!U!8K&b-A84%K#N!2!`G#
  785. X#60m!2#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!*a-h`#-)Kp1G5![!!3[33!
  786. X%)Lm!##pI!!4)jc%!6VS!I#!"60m!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%k
  787. Xk!#a-h`#-)Kp1G5![!!3[33!%)Lm!##pI!!4)jc%!6VS!$#!"60m!M#)I6R9+J'S
  788. XF5S&U$%5!4)&1ZJ!J4)&1G85!6VS!&N5!4)&1G8U"DJT%J8kk!!C%J%je,M`!!2r
  789. XrXS"M"L)!F!"1GE#(BJb!`8K!-J"#3%K!6R@bKf)D,J"#3%K!J-&)3%K(2J")4il
  790. X"-!G)4c)(6R8N!#B"iSMLLE+(B[L!`F#(-J2#`#i$5%I1`%K(dSGP#*+#BJ4%J8j
  791. Xe8d"Jj(i!8IJ+APQ2,`Br"kQJ)"pR!!#Z*N"CMbm,UD8Q(b!,+!054qp(8NFk"f!
  792. X@@Bm["Mm(UD!J(fF!!)K54`D%!!"rrP@2,`#TTM!I#!!!"@EF82J+AXp&QNGQ(#!
  793. X$S%![#kQL)"0R!!"D,`ZTNLK6)%ZJ+A!"6R8J"+%H)!KR!!"#+%J[#kQL)"0R!!!
  794. Xf)%XJ!f!B@Bm["Mm(UD!J(fF!!#*54b"!)$`!!(rq,`JJ8#*-fF#J,UQM8FhrfTR
  795. X%*Na`!8je)%Y+4@B%S#01GD!I6R8b2+R`3rVj%%kk!,!b2+Rb3rVj[%kk!+3b2+R
  796. Xa3rVjLNkk!*Jb2+Rc3rVjT#"i#RLar!#3"'F3)#J!&QF+)#J!('F86[S!G%kk!(!
  797. Xb2+Rd3rVjG%lk!'41ZJ"J-MbTp%2kqA*1qJ"8,`JJE`!),fJ!!J!))$S!GQB!!$`
  798. XJH!+QF!c3N!#`Z!+UCLa1ZJ"Q-MbTm%kk!%)b2+Ra6VS!1M)mUI*1ZJ!b-MbTmdk
  799. Xk!#Sb2+Rd6VS!)L"I6R8`!D&'*%K`$+%H-!'J4c$m6VNJb6$m6[NJbNje-!'K4L*
  800. XS!!LJ(c!")%QJ4dje!*!)6R8J1[rdC`3J3%+3!%je!*!U!3#3!dhb!!"-mJ!!!GS
  801. X!'cC!"eS!N!-F!G)!%%K"8dJ!N!1+@Np143#3!jC,58j%!*!$SPG-6d-!N!1Z58j
  802. X%@!#3!lT$6d4&!!3!aN4"9%%!!!%#8e458`!!!3j%8N9-!!!"'P0C69-!!!%Q3dj
  803. X'4`!!!6*659T&!!!"2N4#8e3!!!&+4%*A8`!!!9C$8N9-!!)"BN4#98F!!J''9%9
  804. XB9!!!!DS!!3#3"b$b2!!!rrm!!!X)!#$br!!!rrm!!!4%!#$c8!!!rrm!!!2d!#$
  805. Xc!*!$rrm!!!@J!#$b3!!!rrm!!%--!#$bB!!#rrm!!%0`!#$bG!!%rrm!!%0i!#$
  806. XbS!!$rrm!!%1!!#$bR!!"rrm8!%1)!#$c%!!!rrm!!%c+!#$bC!!!rrm!!%c1!#$
  807. Xb-!!!rrm!!%c5!#$bQ!!!rrm!!%c@!#$bE!!'rrm!!!3!!#$b82rr!!B!!!3F!#$
  808. XbH!#!rrm!!!VN!#$c'!#!rrm!!!VZ!#$c-!!#rrm!!%cD!#$bU!!%rrm!!%cH!#$
  809. XbV!!$rrm!!%cL!#$bM!!#rrm!!%cQ!#$bP!!%rrm!!%cU!#$c3!!$rrm!!%cZ!#$
  810. XbA!!!rrm!!!3U!#$bT!9YDf&SE!%f"pi:
  811. END_OF_FILE
  812.   if test 24586 -ne `wc -c <'unzip-5.12/mac/thinkc.hqx'`; then
  813.     echo shar: \"'unzip-5.12/mac/thinkc.hqx'\" unpacked with wrong size!
  814.   fi
  815.   # end of 'unzip-5.12/mac/thinkc.hqx'
  816. fi
  817. if test -f 'unzip-5.12/unix/Makefile' -a "${1}" != "-c" ; then 
  818.   echo shar: Will not clobber existing file \"'unzip-5.12/unix/Makefile'\"
  819. else
  820.   echo shar: Extracting \"'unzip-5.12/unix/Makefile'\" \(27036 characters\)
  821.   sed "s/^X//" >'unzip-5.12/unix/Makefile' <<'END_OF_FILE'
  822. X#==============================================================================
  823. X# Makefile for UnZip, UnZipSFX and fUnZip:  Unix and MS-DOS ("real" makes only)
  824. X# Version:  5.12                                                 25 August 1994
  825. X#==============================================================================
  826. X
  827. X
  828. X# INSTRUCTIONS (such as they are):
  829. X#
  830. X# "make vax"    -- makes UnZip on a generic Unix VAX in the current directory
  831. X# "make list"    -- lists all supported systems (targets)
  832. X# "make help"    -- provides pointers on what targets to try if problems occur
  833. X# "make wombat" -- chokes and dies if you haven't added the specifics for your
  834. X#            Wombat 68000 (or whatever) to the systems list
  835. X#
  836. X# CF are flags for the C compiler.  LF are flags for the loader.  LF2 are more
  837. X# flags for the loader, if they need to be at the end of the line instead of at
  838. X# the beginning (for example, some libraries).  FL and FL2 are the corre-
  839. X# sponding flags for fUnZip.  LOCAL_UNZIP is an environment variable that can
  840. X# be used to add default C flags to your compile without editing the Makefile
  841. X# (e.g., -DDEBUG_STRUC, or -FPi87 on PCs using Microsoft C).
  842. X#
  843. X# Some versions of make do not define the macro "$(MAKE)"; this is rare, but
  844. X# if things don't work, try using "make" instead of "$(MAKE)" in your system's
  845. X# makerule.  Or try adding the following line to your .login file:
  846. X#    setenv MAKE "make"
  847. X# (That never works--makes which are too stupid to define MAKE are also too
  848. X# stupid to look in the environment--but try it anyway for kicks. :-) )
  849. X#
  850. X# Memcpy and memset are provided for those systems that don't have them; they
  851. X# are in file_io.c and will be used if -DZMEM is included in CF.  These days
  852. X# almost all systems have them.
  853. X#
  854. X# Be sure to test your new UnZip (and UnZipSFX and fUnZip); successful compila-
  855. X# tion does not always imply a working program.
  856. X
  857. X
  858. X#####################
  859. X# MACRO DEFINITIONS #
  860. X#####################
  861. X
  862. X# Defaults most systems use (use LOCAL_UNZIP in environment to add flags, 
  863. X# such as -DDOSWILD).
  864. X
  865. X# UnZip flags
  866. XCC = cc#    try using "gcc" target rather than changing this (if you do,
  867. XLD = $(CC)#    you MUST change LD, too--else "unresolved symbol:  ___main")
  868. XLOC = $(LOCAL_UNZIP)
  869. XCF = -O -I. $(LOC)
  870. XLF = -o unzip
  871. XLF2 = -s
  872. X
  873. X# UnZipSFX flags
  874. XSL = -o unzipsfx
  875. XSL2 = $(LF2)
  876. X
  877. X# fUnZip flags
  878. XFL = -o funzip
  879. XFL2 = $(LF2)
  880. X
  881. X# general-purpose stuff
  882. XCP = cp
  883. XLN = ln
  884. XRM = rm -f
  885. XCHMOD = chmod
  886. XSTRIP = strip
  887. XE =
  888. XO = .o
  889. XM = unix
  890. XSHELL = /bin/sh
  891. X
  892. X# object files
  893. XOBJS1 = unzip$O crypt$O envargs$O explode$O extract$O file_io$O
  894. XOBJS2 = inflate$O match$O unreduce$O unshrink$O zipinfo$O
  895. XOBJS = $(OBJS1) $(OBJS2) $M$O
  896. XLOBJS = $(OBJS)
  897. XOBJX = unzipsfx$O crypt$O extract_$O file_io$O inflate$O match$O $M_$O
  898. XLOBJX = $(OBJX)
  899. XOBJF = funzip$O crypt_$O inflate_$O
  900. X#OBJS_OS2 = $(OBJS1:.o=.obj) $(OBJS2:.o=.obj) os2.obj
  901. X#OBJF_OS2 = $(OBJF:.o=.obj)
  902. X
  903. X# installation
  904. XINSTALL = cp#    probably can change this to 'install' if you have it
  905. X# on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate
  906. Xmanext = 1
  907. Xprefix = /usr/local
  908. XBINDIR = $(prefix)/bin#         where to install executables
  909. XMANDIR = $(prefix)/man/man$(manext)#    where to install man pages
  910. XINSTALLEDBIN = $(BINDIR)/funzip$E $(BINDIR)/zipinfo$E $(BINDIR)/unzipsfx$E \
  911. X    $(BINDIR)/unzip$E
  912. XINSTALLEDMAN = $(MANDIR)/unzip.$(manext) $(MANDIR)/funzip.$(manext) \
  913. X    $(MANDIR)/unzipsfx.$(manext) $(MANDIR)/zipinfo.$(manext)
  914. X#
  915. XUNZIPS = unzip$E funzip$E unzipsfx$E
  916. X# this is a little ugly...well, no, it's a lot ugly:
  917. XMANS = unix/unzip.1 unix/unzipsfx.1 unix/zipinfo.1 unix/funzip.1
  918. XDOCS = unzip.doc unzipsfx.doc zipinfo.doc funzip.doc
  919. X
  920. X# list of supported systems/targets in this version
  921. XSYSTEMS1 = 386i 3Bx 7300 7300_gcc aix aix_rt amdahl amdahl_eft apollo
  922. XSYSTEMS2 = aviion bcc_dos bsd bsd386 bull coherent convex cray cray_scc
  923. XSYSTEMS3 = cray_v3 cyber_sgi dec dnix encore eta gcc gcc_dos generic
  924. XSYSTEMS4 = generic2 generic3 gould hk68 hp hpux linux minix mips msc_dos
  925. XSYSTEMS5 = next next10 next2x next3x nextfat osf1 pixel ptx pyramid
  926. XSYSTEMS6 = regulus rs6000 sco sco_dos sco_sl sco_x286 sequent sgi solaris
  927. XSYSTEMS7 = stellar sun sysv sysv_gcc sysv6300 tahoe ultrix vax v7 wombat
  928. XSYSTEMS8 = xenix xos
  929. X
  930. X####################
  931. X# DEFAULT HANDLING #
  932. X####################
  933. X
  934. X# By default, print help on which makefile targets to try.  (The SYSTEM
  935. X# variable is no longer supported; use "make <target>" instead.)
  936. X
  937. Xhelp:
  938. X    @echo ""
  939. X    @echo\
  940. X "  If you're not sure about the characteristics of your system, try typing"
  941. X    @echo\
  942. X '  "make generic".  If the compiler barfs and says something unpleasant about'
  943. X    @echo\
  944. X '  "timezone redefined," try typing "make clean" followed by "make generic2".'
  945. X    @echo\
  946. X '  If, on the other hand, it complains about an undefined symbol _ftime, try'
  947. X    @echo\
  948. X '  typing "make clean" followed by "make generic3".  One of these actions'
  949. X    @echo\
  950. X '  should produce a working copy of unzip on most Unix systems.  If you know'
  951. X    @echo\
  952. X '  a bit more about the machine on which you work, you might try "make list"'
  953. X    @echo\
  954. X '  for a list of the specific systems supported herein.  (Many of them do'
  955. X    @echo\
  956. X "  exactly the same thing, so don't agonize too much over which to pick if"
  957. X    @echo\
  958. X '  two or more sound equally likely.)  Also check out the INSTALL file for'
  959. X    @echo\
  960. X '  notes on compiling various targets.  As a last resort, feel free to read'
  961. X    @echo\
  962. X '  the numerous comments within the Makefile itself.  Note that to compile'
  963. X    @echo\
  964. X '  the decryption version of UnZip, you must obtain the full versions of'
  965. X    @echo\
  966. X '  crypt.c and crypt.h (see the "Where" file for ftp and mail-server sites).'
  967. X    @echo\
  968. X '  Have a mostly pretty good day.'
  969. X    @echo ""
  970. X
  971. Xlist:
  972. X    @echo ""
  973. X    @echo\
  974. X 'Type "make <system>", where <system> is one of the following:'
  975. X    @echo ""
  976. X    @echo  "    $(SYSTEMS1)"
  977. X    @echo  "    $(SYSTEMS2)"
  978. X    @echo  "    $(SYSTEMS3)"
  979. X    @echo  "    $(SYSTEMS4)"
  980. X    @echo  "    $(SYSTEMS5)"
  981. X    @echo  "    $(SYSTEMS6)"
  982. X    @echo  "    $(SYSTEMS7)"
  983. X    @echo  "    $(SYSTEMS8)"
  984. X#    @echo ""
  985. X#    @echo\
  986. X# 'Targets for related utilities (ZipInfo and fUnZip) include:'
  987. X#    @echo ""
  988. X#    @echo  "    $(SYS_UTIL1)"
  989. X#    @echo  "    $(SYS_UTIL2)"
  990. X    @echo ""
  991. X    @echo\
  992. X 'For further (very useful) information, please read the comments in Makefile.'
  993. X    @echo ""
  994. X
  995. Xgeneric_msg:
  996. X    @echo ""
  997. X    @echo\
  998. X '  Attempting "make generic" now.  If this fails for some reason, type'
  999. X    @echo\
  1000. X '  "make help" and/or "make list" for suggestions.'
  1001. X    @echo ""
  1002. X
  1003. X
  1004. X###############################################
  1005. X# BASIC COMPILE INSTRUCTIONS AND DEPENDENCIES #
  1006. X###############################################
  1007. X
  1008. X# this is for GNU make; comment out and notify zip-bugs if it causes errors
  1009. X.SUFFIXES:    .c $O
  1010. X
  1011. X.c$O:
  1012. X    $(CC) -c $(CF) $*.c
  1013. X
  1014. X# this doesn't work...directories are always a pain with implicit rules
  1015. X#.1.doc:        unix/$<
  1016. X#    nroff -Tman -man $< | col -b | uniq | \
  1017. X#     sed 's/Sun Release ..../Info-ZIP        /' > $@
  1018. X
  1019. X
  1020. X# these rules are specific to Suns and are really intended only for the
  1021. X# authors' use in creating non-Unix documentation files (which are pro-
  1022. X# vided with both source and binary distributions).  We should probably
  1023. X# add a ".1.man" rule for more generic systems...
  1024. X
  1025. Xunzip.doc:    unix/unzip.1
  1026. X    nroff -Tman -man unix/unzip.1 | col -b | uniq | \
  1027. X     sed 's/Sun Release ..../Info-ZIP        /' > $@
  1028. X
  1029. Xunzipsfx.doc:    unix/unzipsfx.1
  1030. X    nroff -Tman -man unix/unzipsfx.1 | col -b | uniq | \
  1031. X     sed 's/Sun Release ..../Info-ZIP        /' > $@
  1032. X
  1033. Xzipinfo.doc:    unix/zipinfo.1
  1034. X    nroff -Tman -man unix/zipinfo.1 | col -b | uniq | \
  1035. X     sed 's/Sun Release ..../Info-ZIP        /' > $@
  1036. X
  1037. Xfunzip.doc:    unix/funzip.1
  1038. X    nroff -Tman -man unix/funzip.1 | col -b | uniq | \
  1039. X     sed 's/Sun Release ..../Info-ZIP        /' > $@
  1040. X
  1041. X
  1042. Xall:        generic_msg generic
  1043. Xunzips:        $(UNZIPS)
  1044. Xdocs:        $(DOCS)
  1045. Xunzipsman:    unzips docs
  1046. Xunzipsdocs:    unzips docs
  1047. X
  1048. X# this really only works for Unix targets, unless specify E and O on cmd line
  1049. Xclean:
  1050. X    rm -f $(OBJS) $(OBJF) $(OBJX) $(UNZIPS)
  1051. X
  1052. Xinstall:    $(UNZIPS) $(MANS)
  1053. X    $(INSTALL) $(UNZIPS) $(BINDIR)
  1054. X    $(RM) $(BINDIR)/zipinfo$E
  1055. X    $(LN) $(BINDIR)/unzip$E $(BINDIR)/zipinfo$E
  1056. X    $(INSTALL) unix/unzip.1 $(MANDIR)/unzip.$(manext)
  1057. X    $(INSTALL) unix/unzipsfx.1 $(MANDIR)/unzipsfx.$(manext)
  1058. X    $(INSTALL) unix/zipinfo.1 $(MANDIR)/zipinfo.$(manext)
  1059. X    $(INSTALL) unix/funzip.1 $(MANDIR)/funzip.$(manext)
  1060. X    $(CHMOD) 755  $(INSTALLEDBIN)
  1061. X    $(CHMOD) 644  $(INSTALLEDMAN)
  1062. X
  1063. X# alternatively, could use zip method:  -cd $(BINDIR); rm -f $(UNZIPS)  [etc.]
  1064. Xuninstall:
  1065. X    rm -f $(INSTALLEDBIN) $(INSTALLEDMAN)
  1066. X
  1067. X
  1068. X# EDIT HERE FOR PARALLEL MAKES on Sequent (and others?)--screws up MS-DOS
  1069. X# make utilities if default:  change "unzip$E:" to "unzip$E:&"
  1070. X
  1071. Xunzip$E:    $(OBJS)            # add `&' for parallel makes
  1072. X    $(LD) $(LF) $(LOBJS) $(LF2)
  1073. X
  1074. Xunzipsfx$E:    $(OBJX)            # add `&' for parallel makes
  1075. X    $(LD) $(SL) $(LOBJX) $(SL2)
  1076. X
  1077. Xfunzip$E:    $(OBJF)            # add `&' for parallel makes
  1078. X    $(LD) $(FL) $(OBJF) $(FL2)
  1079. X
  1080. Xzipinfo$E:    unzip$E
  1081. X    @echo\
  1082. X '  This is a Unix-specific target.  ZipInfo is not enabled in some MS-DOS'
  1083. X    @echo\
  1084. X '  versions of UnZip; if it is in yours, copy unzip.exe to zipinfo.exe'
  1085. X    @echo\
  1086. X '  or else invoke as "unzip -Z" (in a batch file, for example).'
  1087. X    $(LN) unzip$E zipinfo$E
  1088. X
  1089. X
  1090. Xcrypt$O:    crypt.c unzip.h zip.h crypt.h
  1091. Xenvargs$O:    envargs.c unzip.h
  1092. Xexplode$O:    explode.c unzip.h
  1093. Xextract$O:    extract.c unzip.h crypt.h
  1094. Xfile_io$O:    file_io.c unzip.h crypt.h tables.h
  1095. Xfunzip$O:    funzip.c unzip.h crypt.h tables.h
  1096. Xinflate$O:    inflate.c inflate.h unzip.h
  1097. Xmatch$O:    match.c unzip.h
  1098. Xunreduce$O:    unreduce.c unzip.h
  1099. Xunshrink$O:    unshrink.c unzip.h
  1100. Xunzip$O:    unzip.c unzip.h crypt.h version.h
  1101. Xzipinfo$O:    zipinfo.c unzip.h
  1102. X
  1103. Xcrypt_$O:    crypt.c unzip.h zip.h crypt.h        # funzip only
  1104. X    $(CP) crypt.c crypt_.c
  1105. X    $(CC) -c $(CF) -DFUNZIP crypt_.c
  1106. X    $(RM) crypt_.c
  1107. X
  1108. Xextract_$O:    extract.c unzip.h crypt.h        # unzipsfx only
  1109. X    $(CP) extract.c extract_.c
  1110. X    $(CC) -c $(CF) -DSFX extract_.c
  1111. X    $(RM) extract_.c
  1112. X
  1113. Xinflate_$O:    inflate.c inflate.h unzip.h crypt.h    # funzip only
  1114. X    $(CP) inflate.c inflate_.c
  1115. X    $(CC) -c $(CF) -DFUNZIP inflate_.c
  1116. X    $(RM) inflate_.c
  1117. X
  1118. Xmsdos$O:    msdos/msdos.c unzip.h            # MS-DOS only
  1119. X    $(CC) -c $(CF) msdos/msdos.c
  1120. X
  1121. Xmsdos_$O:    msdos/msdos.c unzip.h            # MS-DOS unzipsfx only
  1122. X    $(CP) msdos\msdos.c msdos_.c > nul
  1123. X    $(CC) -c $(CF) -DSFX msdos_.c
  1124. X    $(RM) msdos_.c
  1125. X
  1126. X#os2$O:        os2/os2.c unzip.h            # OS/2 only
  1127. X#    $(CC) -c $(CF) os2/os2.c
  1128. X
  1129. Xunix$O:        unix/unix.c unzip.h            # Unix only
  1130. X    $(CC) -c $(CF) unix/unix.c
  1131. X
  1132. Xunix_$O:    unix/unix.c unzip.h            # Unix unzipsfx only
  1133. X    $(CP) unix/unix.c unix_.c
  1134. X    $(CC) -c $(CF) -DSFX unix_.c
  1135. X    $(RM) unix_.c
  1136. X
  1137. Xunzipsfx$O:    unzip.c unzip.h crypt.h version.h    # unzipsfx only
  1138. X    $(CP) unzip.c unzipsfx.c
  1139. X    $(CC) -c $(CF) -DSFX unzipsfx.c
  1140. X    $(RM) unzipsfx.c
  1141. X
  1142. X
  1143. Xunix_make:
  1144. X#    @echo\
  1145. X# '(Ignore any errors from `make'"' due to the following command; it's harmless.)"
  1146. X    -@2>&1 $(LN) unix/Makefile . > /dev/null || echo > /dev/null
  1147. X
  1148. X
  1149. X################################
  1150. X# INDIVIDUAL MACHINE MAKERULES #
  1151. X################################
  1152. X
  1153. X#####   TABS ARE REQUIRED FOR MANY VERSIONS OF "MAKE"!   #####
  1154. X
  1155. X
  1156. X#----------------------------------------------------------------------------
  1157. X#  Generic targets (can't assume make utility groks "$(MAKE)")
  1158. X#----------------------------------------------------------------------------
  1159. X
  1160. Xgeneric:    unzips       # first try if unknown
  1161. X
  1162. Xgeneric2:    unix_make  # second try if unknown:  hope make is called "make"
  1163. X    make unzips CF="$(CF) -DBSD"
  1164. X
  1165. Xgeneric3:    unix_make  # third try if unknown:  hope make is called "make"
  1166. X    make unzips CF="$(CF) -DSYSV"
  1167. X
  1168. X#----------------------------------------------------------------------------
  1169. X#  "Normal" group (both big- and little-endian, structure-padding or not):
  1170. X#----------------------------------------------------------------------------
  1171. X
  1172. X386i:        unzips    # sun386i, SunOS 4.0.2
  1173. X3Bx:        unzips    # AT&T 3B2/1000-80; should work on any WE32XXX machine
  1174. X#aix_rt:        unzips    # IBM RT 6150 under AIX 2.2.1
  1175. Xapollo:        unzips    # Apollo Domain/OS machines
  1176. Xbull:        unzips    # Bull DPX/2, BOS 2.00.45 (doesn't require -Xk switch)
  1177. Xconvex:        unzips    # Convex C-120 and C-210 (-O is enough; -ext is default)
  1178. Xcray:        unzips    # Cray-2 and Y-MP, using default (possibly old) compiler
  1179. Xdec:        unzips    # DEC 5820 (MIPS RISC), test version of Ultrix v4.0
  1180. Xencore:        unzips    # Multimax
  1181. Xeta:        unzips    # ETA-10P*, hybrid SysV with BSD 4.3 enhancements
  1182. Xgould:        unzips    # Gould PN9000 running UTX/32 2.1Bu01
  1183. Xhp:        unzips    # HP 9000 series (68020), 4.3BSD or HP-UX A.B3.10 Ver D
  1184. Xhpux:        unzips    # (to match zip's makefile entry)
  1185. Xmips:        unzips    # MIPS M120-5(?), SysV.3 [error in sys/param.h file?]
  1186. Xnext10:        unzips    # NeXT (generic; use next2x or next3x for better opt.)
  1187. Xosf1:        unzips    # DECstation, including Alpha-based; DEC OSF/1 v1.x
  1188. Xpyr_:        unzips    # [failsafe target for pyramid target below]
  1189. Xpyr_ucb:    unzips    # Pyramids running BSD universe by default (see below)
  1190. Xsco:        unzips    # Xenix/386 (tested on 2.3.1); SCO Unix 3.2.0.
  1191. Xstellar:    unzips    # gs-2000
  1192. Xsun:        unzips    # old target; no good with solaris...use "sunos" now
  1193. Xsunos:        unzips    # Sun 3, 4; SunOS 4.x (SOME SYSTEMS ARE SYSTEM V!)
  1194. Xtahoe:        unzips    # tahoe (CCI Power6/32), 4.3BSD
  1195. Xultrix:        unzips    # VAXen, DEC 58x0 (MIPS guts), DECstation 2100; v4.x
  1196. Xvax:        unzips    # general-purpose VAX target (not counting VMS)
  1197. Xxenix:        unzips    # Xenix/386 (tested on 2.3.1); SCO Unix 3.2.0.
  1198. X
  1199. X#----------------------------------------------------------------------------
  1200. X#  BSD group (for timezone structs [struct timeb]):
  1201. X#----------------------------------------------------------------------------
  1202. X
  1203. Xbsd:        _bsd    # generic BSD (BSD 4.2 & Ultrix handled in unzip.h)
  1204. Xbsd386:        _bsd    # BSDI BSD/386 version 1.0
  1205. X
  1206. X_bsd:        unix_make
  1207. X    $(MAKE) unzips CF="$(CF) -DBSD"
  1208. X
  1209. X#----------------------------------------------------------------------------
  1210. X#  SysV group (for extern long timezone and ioctl.h instead of sgtty.h):
  1211. X#----------------------------------------------------------------------------
  1212. X
  1213. Xaix_rt:        _sysv    # IBM RT 6150 under AIX 2.2.1
  1214. Xamdahl:        _sysv    # Amdahl (IBM) mainframe, UTS (SysV) 1.2.4 and 2.0.1
  1215. Xaviion:        _sysv    # Data General AViiONs, DG/UX 4.3x
  1216. Xpyr_att:    _sysv    # Pyramids running AT&T (SysV) universe by default
  1217. Xsgi:        _sysv    # Silicon Graphics Iris 4D, Irix 3.3.2, 4.0.x (5.x?)
  1218. Xsolaris:    _sysv    # Sun SPARC & x86, Solaris 2.x
  1219. Xsysv:        _sysv    # generic System V Unix (Xenix handled in unzip.h)
  1220. Xxos:        _sysv    # Olivetti LSX-3005..3045, X/OS 2.3 and 2.4
  1221. X
  1222. X_sysv:        unix_make
  1223. X    $(MAKE) unzips CF="$(CF) -DSYSV"
  1224. X
  1225. X#----------------------------------------------------------------------------
  1226. X#  Version 7 group (old/obsolescent):
  1227. X#----------------------------------------------------------------------------
  1228. X
  1229. Xpixel:        _v7    # Pixel 80, 100 (68000-based, V7/mostly BSD4.1 compat.)
  1230. Xv7:        _v7    # generic Unix Version 7 box (prob. only Pixel...)
  1231. X
  1232. X_v7:
  1233. X    make unzips CF="$(CF) -DV7 -DNO_PARAM_H -DSHORT_NAMES -DBSD -DZMEM"
  1234. X
  1235. X#----------------------------------------------------------------------------
  1236. X#  "Unique" group (require non-standard options):
  1237. X#----------------------------------------------------------------------------
  1238. X
  1239. X# AT&T 7300 (M68000/SysV.3) (add -DSYSV? -DNO_LIMITS?)
  1240. X7300:        unix_make
  1241. X    $(MAKE) unzips CF="$(CF) -DNO_DIR -DNO_MKDIR -DNO_STRNICMP"
  1242. X
  1243. X7300_gcc:    unix_make
  1244. X    $(MAKE) unzips CC=gcc LD=gcc LF2="" \
  1245. X     CF="-O2 -I. -DNO_DIR -DNO_MKDIR -DNO_STDLIB_H -DNO_STRNICMP $(LOC)"
  1246. X    $(STRIP) $(UNZIPS)
  1247. X
  1248. X# IBM AIX 3.x on an RS/6000:  see rs6000 target below
  1249. Xaix:        rs6000
  1250. X
  1251. X# Amdahl UTS 2.1.4 with "extended file types" filesystem (aarrrggghhhh...)
  1252. Xamdahl_eft:    unix_make
  1253. X    $(MAKE) unzips CF="$(CF) -eft -DSYSV"
  1254. X
  1255. X# MS-DOS:  Borland C++ 3.0 (can change UnZip memory model to small for more
  1256. X# speed but no ZipInfo support [-ml -> -ms in _bcc_dos], but may run out of
  1257. X# memory when inflating--should not be true anymore in 5.11)
  1258. Xbcc_dos:    _bcc_dos fu_bcc sfx_bcc
  1259. X
  1260. X_bcc_dos:    bcc_rsp        #  v-- change to -ml for large model
  1261. X    $(MAKE) unzip.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\
  1262. X     O=.obj M=msdos LOBJS="" LF="@bcc_rsp" LF2=""
  1263. X    del bcc_rsp
  1264. X
  1265. Xbcc_rsp:
  1266. X    echo $(OBJS1:.o=.obj) > bcc_rsp
  1267. X    echo msdos.obj $(OBJS2:.o=.obj) >> bcc_rsp
  1268. X
  1269. Xfu_bcc:
  1270. X    $(MAKE) funzip.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\
  1271. X     O=.obj FL="" FL2="" CP=copy RM=del
  1272. X
  1273. Xsfx_bcc:
  1274. X    $(MAKE) unzipsfx.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\
  1275. X     O=.obj SL="" SL2="" CP=copy RM=del
  1276. X
  1277. X# Coherent 3.x/4.x, Mark Williams C.  ``For Coherent's CC, it needs either
  1278. X# -T0 or -T150000 (or bigger) added to the CFLAGS, otherwise the compiler
  1279. X# runs out of memory and dies in zipinfo.c.'' [Fred "Fredex" Smith, 940719]
  1280. Xcoherent:    unix_make
  1281. X    $(MAKE) unzips CF="$(CF) -T0"
  1282. X
  1283. X# Cray-2 and Y-MP, running Unicos 5.1 to 6.1 (SysV + BSD enhancements)
  1284. X# and Standard (ANSI) C compiler 1.5, 2.0 or 3.0.
  1285. Xcray_scc:    unix_make
  1286. X    $(MAKE) unzips CC=scc LD=scc
  1287. X
  1288. X# Ditto, for Cray Standard C 3.0 or later.
  1289. Xcray_v3:    unix_make
  1290. X    $(MAKE) unzips CC="scc" LD="scc" CF="$(CF) -h scalar3 -h vector3"
  1291. X
  1292. X# The unzip41 build on a Cyber 910/SGI running Irix v3.3.3 was successful
  1293. X# with the following change to Makefile:
  1294. Xcyber_sgi:    unix_make
  1295. X    $(MAKE) unzips CF="$(CF) -I/usr/include/bsd"\
  1296. X     LF="-lbsd $(LF)" SL="-lbsd $(SL)"
  1297. X
  1298. X# 680x0, DIAB dnix 5.2/5.3 (a Swedish System V clone)
  1299. X#
  1300. X# Options for the dnix cc:
  1301. X#  -X7 = cc is strict ANSI C
  1302. X#  -X9 = warnings if a function is used without a declaration
  1303. X#
  1304. Xdnix:        unix_make
  1305. X    $(MAKE) unzips CF="$(CF) -X7 -X9 -DDNIX"
  1306. X
  1307. X# Generic BSDish Unix gcc.  ``The -O2 only works with the latest version of
  1308. X# gcc; you may have to use -O only for earlier versions.  I have no idea why
  1309. X# -s causes this bug in gcc.''  [Bug:  "nm: unzip: no name list", "collect:
  1310. X# /usr/bin/nm returned 1 exit status".]  If you don't have strip, don't
  1311. X# worry about it (it just makes the executable smaller and can be replaced
  1312. X# with "echo" instead).
  1313. X#
  1314. Xgcc:        unix_make
  1315. X    $(MAKE) unzips CC=gcc LD=gcc CF="-O2 -I. $(LOC)" LF2=""
  1316. X    $(STRIP) $(UNZIPS)
  1317. X
  1318. X# MS-DOS with D.J. Delorie's djgpp 1.12.  Note that earlier versions of go32
  1319. X# (< 1.11) don't support DOS function 0x38 (necessary for "unzip -v foobar").
  1320. X# Note also that this set of targets has work-arounds for three bugs in the
  1321. X# older version (3.69) of GNU make formerly distributed with djgpp:  (1) it
  1322. X# sets the MAKE variable incorrectly for spawning with COMMAND.COM (forward
  1323. X# slashes instead of backslashes--fixed in 3.71 by not spawning COMMAND.COM),
  1324. X# so the usual $(MAKE) has been replaced by "make"; (2) it doesn't handle
  1325. X# makefile continuation lines correctly, most likely because of the MS-DOS
  1326. X# CR-LF line-endings (seems to be fixed in 3.71?), so long lines are used;
  1327. X# and (3) it doesn't handle quotes as in CF="-O2 -Wall etc." correctly, so
  1328. X# these macros have been changed to "CF=-O2 -Wall etc." where necessary.  The
  1329. X# newer GNU make (version 3.71) does not handle quotes correctly and has no
  1330. X# known work-around, so don't bother to use it.  Likewise, the emx version
  1331. X# of GNU make 3.71 which is maintained by Kai Uwe Rommel has other fatal bugs
  1332. X# involving the shell (necessary for recursive targets like this one).
  1333. X# GRR 940430, 940723, 940814
  1334. X#
  1335. Xgcc_dos: _gcc_dos fu_gcc sfx_gcc
  1336. X
  1337. X# this target may be used with djgpp 1.12m1 or later; replace "_gcc_dos" above
  1338. X# with "_gcc_dos_new":
  1339. X
  1340. X_gcc_dos_new: gcc_rsp
  1341. X    make unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)" LOBJS="" "LF=-o unzip @gcc_rsp" LF2=""
  1342. X    $(STRIP) unzip
  1343. X    coff2exe unzip
  1344. X#    use this instead if you want to create a stand-alone executable (bigger)
  1345. X#    coff2exe -s go32.exe unzip
  1346. X    stubedit unzip.exe globbing=no
  1347. X#    del gcc_rsp
  1348. X#    del unzip
  1349. X    coff2exe -g zipinfo
  1350. X    stubedit zipinfo.exe runfile=unzip.exe globbing=no
  1351. X
  1352. X_gcc_dos: gcc_rsp
  1353. X    make unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)" LOBJS="" "LF=-o unzip @gcc_rsp" LF2=""
  1354. X#    $(MAKE) unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)"\
  1355. X#     LOBJS="" LF="-o unzip @gcc_rsp" LF2=""
  1356. X    $(STRIP) unzip
  1357. X    coff2exe unzip
  1358. X#    use this instead if you want to create a stand-alone executable (bigger)
  1359. X#    coff2exe -s go32.exe unzip
  1360. X    stubedit unzip.exe globbing=no
  1361. X#    del gcc_rsp
  1362. X#    del unzip
  1363. X#
  1364. X#    @echo Ignore the following bogus error message:
  1365. X#    -@copy < nul > zipinfo
  1366. X    -@find " " < nul > zipinfo
  1367. X    coff2exe zipinfo
  1368. X    stubedit zipinfo.exe runfile=unzip.exe globbing=no
  1369. X    del zipinfo
  1370. X
  1371. Xgcc_rsp:
  1372. X    echo $(OBJS1) > gcc_rsp
  1373. X    echo $(OBJS2) msdos.o >> gcc_rsp
  1374. X
  1375. Xfu_gcc:
  1376. X    make funzip CC=gcc LD=gcc "CF=-Wall -O2 -I. $(LOC)" FL2="" CP=copy RM=del
  1377. X#    $(MAKE) funzip CC=gcc LD=gcc "CF=-Wall -O2 -I. $(LOC)" FL2=""\
  1378. X#     CP=copy RM=del
  1379. X    coff2exe funzip
  1380. X#    use this instead if you want to create a stand-alone executable (bigger)
  1381. X#    coff2exe -s go32.exe funzip
  1382. X#    del funzip
  1383. X
  1384. Xsfx_gcc:
  1385. X    make unzipsfx CC=gcc LD=gcc M=msdos "CF=-Wall -O2 -I. $(LOC)" SL2="" CP=copy RM=del
  1386. X#    $(MAKE) unzipsfx CC=gcc LD=gcc M=msdos "CF=-Wall -O2 -I. $(LOC)"\
  1387. X#     SL2="" CP=copy RM=del
  1388. X    $(STRIP) unzipsfx
  1389. X    coff2exe unzipsfx
  1390. X#    use this instead if you want to create a stand-alone executable (bigger)
  1391. X#    coff2exe -s go32.exe unzipsfx
  1392. X    stubedit unzipsfx.exe globbing=no
  1393. X#    del unzipsfx
  1394. X
  1395. X# Heurikon HK68 (68010), UniPlus+ System V 5.0, Green Hills C-68000
  1396. Xhk68:        unix_make
  1397. X    $(MAKE) unzips CC="gcc" LD="gcc"\
  1398. X     LF="-n $(LF)" SL="-n $(SL)" FL="-n $(FL)"\
  1399. X     CF="-ga -X138 -I. $(LOC) -Dlocaltime=localti -Dtimezone=timezon"
  1400. X
  1401. X# Rules needed to build the unzip program for an SGI Iris Indigo running
  1402. X# Irix Version 4.0.1
  1403. X#indigo:
  1404. X#    $(MAKE) unzips CF="-cckr $(CF) -DSYSV $(LOC)"
  1405. X
  1406. X# Linux pre-0.96 + gcc 2.1; also 0.99.13 + gcc 2.4.5.  Linux is Posix
  1407. X# (almost SysV but not quite).  [apparently don't need -DSHORT_NAMES]
  1408. Xlinux:        unix_make
  1409. X    $(MAKE) unzips CC=gcc LD=gcc
  1410. X#    $(MAKE) unzips CF="$(CF) -DLINUX" CC=gcc LD=gcc  (linux pre-defined?)
  1411. X
  1412. X# Minix 1.5 PC for the 386.  Invoke as is to use default cc, or as "make
  1413. X# minix CC=gcc" to use gcc.  Try "make linux" if you have a working termios.h.
  1414. Xminix:        unix_make
  1415. X    $(MAKE) unzips CF="$(CF) -DMINIX -DSHORT_NAMES" CC=$(CC) LD=$(CC)
  1416. X
  1417. X# MS-DOS:  Microsoft C 6.0 and NMAKE.  "nmake msc_dos" works fine, aside
  1418. X# from an irrelevant message (possibly) about the creation of a temporary
  1419. X# file.  Environment variable LOCAL_UNZIP (or CL) should be set via "SET
  1420. X# LOCAL_UNZIP=-FPi87" if you use the 80x87 library; also add -G2 or -G3 if
  1421. X# using a 286/386/486.  Note that setting too many things via LOCAL_UNZIP
  1422. X# may make the command line too long for the default COMMAND.COM shell, so
  1423. X# use CL instead in that case.  With VC++ Pro, -O2 instead of -Oait seems to
  1424. X# work OK and makes the executables slightly faster.  Use at your own risk.
  1425. X#
  1426. Xmsc_dos:    _msc_dos fu_msc sfx_msc
  1427. X
  1428. X# can change UnZip memory model (-AS) to large (-AL) if necessary, but should
  1429. X# no longer be necessary in UnZip 5.11 and later
  1430. X_msc_dos:    msc_rsp
  1431. X    $(MAKE) unzip.exe CF="-AS -W3 -Oait -Gs -nologo -I. $(LOC)" CC=cl\
  1432. X     LD=link E=.exe O=.obj M=msdos LOBJS="" LF="@msc_rsp" LF2=""
  1433. X    del msc_rsp
  1434. X
  1435. Xmsc_rsp:
  1436. X    echo $(OBJS1:.o=.obj) + > msc_rsp
  1437. X    echo msdos.obj $(OBJS2:.o=.obj)/noi/e/st:0x0c00; >> msc_rsp
  1438. X
  1439. Xfu_msc:
  1440. X    set CL=-AS -Oait -Gs -nologo -I.
  1441. X    $(MAKE) funzip.exe CF="$(LOC)" CC=cl LD=link E=.exe O=.obj\
  1442. X     FL="/noi/nol/e" FL2=",funzip;" RM=del CP=copy
  1443. X
  1444. Xsfx_msc:
  1445. X    set CL=-AS -Oait -Gs -nologo -I.
  1446. X    $(MAKE) unzipsfx.exe CF="$(LOC)" CC=cl LD=link E=.exe O=.obj M=msdos\
  1447. X     SL="/noi/nol/e" SL2=",unzipsfx;" RM=del CP=copy
  1448. X
  1449. X# $(NOD):  intended to be used as   SET NOD=-link /nod:slibcep   to allow the
  1450. X#          use of default library names (slibce.lib) instead of protected-mode
  1451. X#          names (slibcep.lib), but it fails:  MSC adds its own /nod qualifier,
  1452. X#          and there seems to be no way to override this.  Typical...
  1453. X#
  1454. X#    THIS TARGET RETAINED AS AN EXAMPLE ONLY.  USE MAKEFILE.OS2.
  1455. X#
  1456. X#msc_os2:        # 16-bit OS/2 (1.x) with MSC 6.00 (use makefile.os2)
  1457. X#    $(MAKE) -nologo unzips CC=cl LD=cl E=.exe O=.obj\
  1458. X#     OBJS="$(OBJS_OS2)" OBJZ="$(OBJZ_OS2)"\
  1459. X#     CF="-nologo -AC -Ocegit -G2s -DOS2 -DMSC $(LOC)"\
  1460. X#     LF="-nologo -AC $(LOC) -Lp -F 2000"\
  1461. X#     LF2="unzip.def -o unzip.exe $(NOD)" CP=copy RM=del\
  1462. X#     ZL="-nologo -AC $(LOC) -Lp -Fb" ZL2="zipinfo.def -o zipinfo.exe"
  1463. X
  1464. X# NeXT info.
  1465. Xnext:
  1466. X    @echo
  1467. X    @echo\
  1468. X '  Please pick a specific NeXT target:  "make next10" will create a generic'
  1469. X    @echo\
  1470. X '  NeXT executable; "make next2x" will create a smaller executable (for'
  1471. X    @echo\
  1472. X '  NeXTstep 2.0 and higher); "make next3x" will create a small executable'
  1473. X    @echo\
  1474. X '  with significantly better optimization (NeXTstep 3.0 and higher only);'
  1475. X    @echo\
  1476. X '  "make nextfat" will create a fat, multi-architecture (NeXT plus Intel)'
  1477. X    @echo\
  1478. X '  executable (NeXTstep 3.1 and higher only).'
  1479. X    @echo
  1480. X
  1481. X# 68030 BSD 4.3+Mach.  NeXT 2.x: make the executable smaller.
  1482. Xnext2x:        unix_make
  1483. X    $(MAKE) unzips LF2="-object -s"
  1484. X
  1485. X# NeXT 3.x: as above, plus better optimization.
  1486. Xnext3x:        unix_make
  1487. X    $(MAKE) unzips CF="-O2 -I. $(LOC)" LF2="-object -s"
  1488. X
  1489. X# NeXT 3.1+: make the executable fat (multi-architecture binary [MAB],
  1490. X# for "black" [NeXT] and "white" [x86] hardware, so far).
  1491. Xnextfat:    unix_make
  1492. X    $(MAKE) unzips CF="-O2 -I. $(LOC) -arch i386 -arch m68k" \
  1493. X     LF2="-arch i386 -arch m68k -object -s"
  1494. X
  1495. X# Sequent Symmetry running Dynix/ptx (sort of SysV.3):  needs to link
  1496. X# with libseq to get symlink().
  1497. Xptx:        unix_make
  1498. X    $(MAKE) unzips CF="$(CF) -DSYSV -DTERMIO -DPTX" LF2="$(LF2) -lseq"
  1499. X
  1500. X# Pyramid 90X (probably all) under >= OSx4.1, either universe.  (This is an
  1501. X# experimental target!  If it fails, use either pyr_ucb or pyr_att instead.)
  1502. X# The make in the BSD half is too stupid to understand $(MAKE), sigh...
  1503. Xpyramid:    unix_make
  1504. X    -make pyr_`universe`
  1505. X
  1506. X# REGULUS:  68040-based, "real-time" SysV.3 mutant; uses gcc, with "REGULUS"
  1507. X# predefined.
  1508. Xregulus:    unix_make
  1509. X    $(MAKE) unzips CF="$(CF) -traditional -DSYSV -DNO_MKDIR"
  1510. X
  1511. X# IBM RS/6000 under AIX 3.2
  1512. Xrs6000:        unix_make
  1513. X    $(MAKE) unzips CF="$(CF) -DBSD -D_BSD -DUNIX" LF2="-lbsd"
  1514. X
  1515. X# SCO cross compile from Unix to DOS. Tested with Xenix/386 and OpenDeskTop.
  1516. X# Should work with Xenix/286 as well. (davidsen)  Note that you *must* remove
  1517. X# the Unix objects and executable before doing this!  (Piet Plomp:  gcc won't
  1518. X# recognize the -M0 flag which forces 8086 code.)  (GRR:  may need to reduce
  1519. X# stack to 0c00h if using 286/small-model code...?)
  1520. Xsco_dos:    unix_make
  1521. X    $(MAKE) unzips CF="-O -I. $(LOC) -dos -M0" M=msdos\
  1522. X     LF="-dos -F 2000" LF2="-o unzip.exe"\
  1523. X     FL="-dos" FL2="-o funzip.exe" SL="-dos" SL2="-o unzipsfx.exe"
  1524. X
  1525. X# SCO UNIX with shared libraries and no international support.  If you are
  1526. X# not using a USA-style keyboard and display, you may want to remove -nointl
  1527. X# to get support.  It adds quite a bit to the size of the executable.
  1528. Xsco_sl:        unix_make
  1529. X    $(MAKE) unzips LF="$(LF) -nointl" LF2="$(LF2) -lc_s"\
  1530. X     SL="$(SL) -nointl" FL="$(FL) -nointl"
  1531. X
  1532. X# SCO Xenix/286 2.3.3 with 2.2.1 development system
  1533. Xsco_x286:    unix_make
  1534. X    $(MAKE) unzips CF="$(CF) -Mel2 -LARGE -DTERMIO" LF="$(LF) -Mel2 -LARGE"
  1535. X
  1536. X# Sequent Symmetry with Dynix.  (386, but needs -DZMEM)
  1537. X# This should also work on Balance but I can't test it just yet.
  1538. Xsequent:    unix_make
  1539. X    $(MAKE) unzips CF="$(CF) -DBSD -DZMEM"
  1540. X
  1541. X# Generic System V + GNU C
  1542. Xsysv_gcc:    unix_make
  1543. X    $(MAKE) unzips CC=gcc LD=gcc CF="-O2 -I. -DSYSV $(LOC)" LF2=""
  1544. X    $(STRIP) $(UNZIPS)
  1545. X
  1546. X# AT&T 6300+, System V.2 Unix:  run-time out-of-memory error if don't use -Ml;
  1547. X# also compile-time error if work arrays dimensioned at HSIZE+2 (>32K)
  1548. Xsysv6300:    unix_make
  1549. X    $(MAKE) unzips CF="$(CF) -Ml -DSYSV" LF="$(LF) -Ml"\
  1550. X     SL="$(SL) -Ml" FL="$(FL) -Ml"
  1551. X
  1552. X# Wombat 68000 (or whatever).
  1553. X# I didn't do this.  I swear.  No, really.
  1554. Xwombat:        unix_make
  1555. X    @echo
  1556. X    @echo  '    Ha ha!  Just kidding.'
  1557. X    @echo
  1558. END_OF_FILE
  1559.   if test 27036 -ne `wc -c <'unzip-5.12/unix/Makefile'`; then
  1560.     echo shar: \"'unzip-5.12/unix/Makefile'\" unpacked with wrong size!
  1561.   fi
  1562.   # end of 'unzip-5.12/unix/Makefile'
  1563. fi
  1564. if test -f 'unzip-5.12/vms/makesfx.com' -a "${1}" != "-c" ; then 
  1565.   echo shar: Will not clobber existing file \"'unzip-5.12/vms/makesfx.com'\"
  1566. else
  1567.   echo shar: Extracting \"'unzip-5.12/vms/makesfx.com'\" \(1126 characters\)
  1568.   sed "s/^X//" >'unzip-5.12/vms/makesfx.com' <<'END_OF_FILE'
  1569. X$!
  1570. X$!  MAKESFX.COM:  command-procedure to create self-extracting ZIP archives
  1571. X$!                usage:  @MAKESFX foo    (foo.zip -> foo.exe)
  1572. X$!
  1573. X$!  Martin P.J. Zinser 940804
  1574. X$!
  1575. X$!
  1576. X$!  For this to work a symbol unzipsfx has to be defined which contains the 
  1577. X$!  location of the unzip stub (e.g., unzipsfx:== device:[dir]unzipsfx.exe)
  1578. X$!
  1579. X$!  The zipfile given in p1 will be concatenated with unzipsfx and given a
  1580. X$!  filename extension of .exe.  The default file extension for p1 is .zip
  1581. X$!
  1582. X$!  Use at your own risk, there is no guarantee here.  If it doesn't work,
  1583. X$!  blame me (m.zinser@gsi.de), not the people from Info-ZIP.
  1584. X$!
  1585. X$!
  1586. X$ inf = "''p1'"
  1587. X$ usfx = f$parse("''unzipsfx'") - ";"
  1588. X$ file = f$parse("''inf'",,,"DEVICE") + f$parse("''inf'",,,"DIRECTORY") + -
  1589. X  f$parse("''inf'",,,"NAME") 
  1590. X$ finf = "''file'" +f$parse("''inf'",".ZIP",,"TYPE") + -
  1591. X  f$parse("''inf'",,,"VERSION")
  1592. X$!
  1593. X$! [GRR 940810:  what is the point of 'name'?  example?  commented out...]
  1594. X$! $ name = f$extract(12,2,f$time()) + f$extract(15,2,f$time()) + -
  1595. X$!   f$extract(18,2,f$time()) + f$extract(21,1,f$time())
  1596. X$!
  1597. X$ copy 'usfx','finf' 'file'.exe
  1598. X$ exit
  1599. END_OF_FILE
  1600.   if test 1126 -ne `wc -c <'unzip-5.12/vms/makesfx.com'`; then
  1601.     echo shar: \"'unzip-5.12/vms/makesfx.com'\" unpacked with wrong size!
  1602.   fi
  1603.   # end of 'unzip-5.12/vms/makesfx.com'
  1604. fi
  1605. echo shar: End of archive 13 \(of 20\).
  1606. cp /dev/null ark13isdone
  1607. MISSING=""
  1608. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; do
  1609.     if test ! -f ark${I}isdone ; then
  1610.     MISSING="${MISSING} ${I}"
  1611.     fi
  1612. done
  1613. if test "${MISSING}" = "" ; then
  1614.     echo You have unpacked all 20 archives.
  1615.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1616. else
  1617.     echo You still must unpack the following archives:
  1618.     echo "        " ${MISSING}
  1619. fi
  1620. exit 0
  1621. exit 0 # Just in case...
  1622.