home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume16 / nethck31 / part77 < prev    next >
Encoding:
Internet Message Format  |  1993-02-05  |  58.3 KB

  1. Path: uunet!news.tek.com!master!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v16i085:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Part77/108
  5. Message-ID: <4448@master.CNA.TEK.COM>
  6. Date: 5 Feb 93 19:20:08 GMT
  7. Sender: news@master.CNA.TEK.COM
  8. Lines: 1730
  9. Approved: billr@saab.CNA.TEK.COM
  10. Xref: uunet comp.sources.games:1636
  11.  
  12. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  13. Posting-number: Volume 16, Issue 85
  14. Archive-name: nethack31/Part77
  15. Supersedes: nethack3p9: Volume 10, Issue 46-102
  16. Environment: Amiga, Atari, Mac, MS-DOS, OS2, Unix, VMS, X11
  17.  
  18.  
  19.  
  20. #! /bin/sh
  21. # This is a shell archive.  Remove anything before this line, then unpack
  22. # it by saving it into a file and typing "sh file".  To overwrite existing
  23. # files, type "sh file -c".  You can also feed this as standard input via
  24. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  25. # will see the following message at the end:
  26. #        "End of archive 77 (of 108)."
  27. # Contents:  src/sp_lev.c1 sys/amiga/wbwin.uu
  28. # Wrapped by billr@saab on Wed Jan 27 16:09:17 1993
  29. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  30. if test -f 'src/sp_lev.c1' -a "${1}" != "-c" ; then 
  31.   echo shar: Will not clobber existing file \"'src/sp_lev.c1'\"
  32. else
  33. echo shar: Extracting \"'src/sp_lev.c1'\" \(26410 characters\)
  34. sed "s/^X//" >'src/sp_lev.c1' <<'END_OF_FILE'
  35. X/*    SCCS Id: @(#)sp_lev.c    3.1    92/11/14    */
  36. X/*    Copyright (c) 1989 by Jean-Christophe Collet */
  37. X/* NetHack may be freely redistributed.  See license for details. */
  38. X
  39. X/*
  40. X * This file contains the various functions that are related to the special
  41. X * levels.
  42. X * It contains also the special level loader.
  43. X *
  44. X */
  45. X
  46. X#include "hack.h"
  47. X/*#define DEBUG     /* uncomment to enable code debugging */
  48. X
  49. X#ifdef DEBUG
  50. X# ifdef WIZARD
  51. X#define debugpline    if (wizard) pline
  52. X# else
  53. X#define debugpline    pline
  54. X# endif
  55. X#endif
  56. X
  57. X#include "sp_lev.h"
  58. X#include "rect.h"
  59. X
  60. Xextern void FDECL(mkmap, (lev_init *));
  61. X
  62. Xstatic void FDECL(get_room_loc, (schar *, schar *, struct mkroom *));
  63. Xstatic void FDECL(get_free_room_loc, (schar *, schar *, struct mkroom *));
  64. Xstatic void FDECL(create_trap, (trap *, struct mkroom *));
  65. Xstatic void FDECL(create_monster, (monster *, struct mkroom *));
  66. Xstatic void FDECL(create_object, (object *, struct mkroom *));
  67. Xstatic void FDECL(create_stairs, (stair *, struct mkroom *));
  68. Xstatic void FDECL(create_altar, (altar *, struct mkroom *));
  69. Xstatic void FDECL(create_gold, (gold *, struct mkroom *));
  70. Xstatic void FDECL(create_feature, (int,int,struct mkroom *,int));
  71. Xstatic boolean FDECL(search_door, (struct mkroom *, xchar *, xchar *,
  72. X                    XCHAR_P, int));
  73. Xstatic void NDECL(fix_stair_rooms);
  74. Xstatic void FDECL(create_corridor, (corridor *));
  75. X
  76. Xstatic boolean FDECL(create_subroom, (struct mkroom *, XCHAR_P, XCHAR_P,
  77. X                    XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P));
  78. X
  79. X#if defined(MICRO) && !defined(AMIGA)
  80. X# define RDMODE "rb"
  81. X#else
  82. X# define RDMODE "r"
  83. X#endif
  84. X
  85. X#define LEFT    1
  86. X#define H_LEFT    2
  87. X#define CENTER    3
  88. X#define H_RIGHT    4
  89. X#define RIGHT    5
  90. X
  91. X#define TOP    1
  92. X#define BOTTOM    5
  93. X
  94. X#define sq(x) ((x)*(x))
  95. X
  96. X#define XLIM    4
  97. X#define YLIM    3
  98. X
  99. X#define Fread    (void)fread
  100. X#define New(type)        (type *) alloc(sizeof(type))
  101. X#define NewTab(type, size)    (type **) alloc(sizeof(type *) * size)
  102. X#define Free(ptr)        if(ptr) free((genericptr_t) (ptr))
  103. X
  104. Xstatic walk NEARDATA walklist[50];
  105. Xextern int min_rx, max_rx, min_ry, max_ry; /* from mkmap.c */
  106. X
  107. Xstatic char Map[COLNO][ROWNO];
  108. Xstatic char robjects[10], rloc_x[10], rloc_y[10], rmonst[10];
  109. Xstatic aligntyp    ralign[3] = { AM_CHAOTIC, AM_NEUTRAL, AM_LAWFUL };
  110. Xstatic xchar NEARDATA xstart, NEARDATA ystart;
  111. Xstatic char NEARDATA xsize, NEARDATA ysize;
  112. X
  113. Xstatic void FDECL(make_walls_nondiggable, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
  114. Xstatic int NDECL(rnddoor);
  115. Xstatic int NDECL(rndtrap);
  116. Xstatic void FDECL(get_location, (schar *,schar *,int));
  117. Xstatic void FDECL(sp_lev_shuffle, (char *,char *,int));
  118. Xstatic void FDECL(light_region, (region *));
  119. Xstatic void FDECL(load_common_data, (FILE *,int));
  120. Xstatic boolean FDECL(load_rooms, (FILE *));
  121. Xstatic void FDECL(maze1xy, (coord *));
  122. Xstatic boolean FDECL(load_maze, (FILE *));
  123. Xstatic void FDECL(create_door, (room_door *, struct mkroom *));
  124. Xstatic void FDECL(free_rooms,(room **, int));
  125. Xstatic void FDECL(build_room, (room *, room*));
  126. X
  127. Xchar *lev_message = 0;
  128. Xlev_region *lregions = 0;
  129. Xint num_lregions = 0;
  130. Xlev_init init_lev;
  131. X
  132. X/*
  133. X * Make walls of the area (x1, y1, x2, y2) non diggable
  134. X */
  135. X
  136. Xstatic void
  137. Xmake_walls_nondiggable(x1,y1,x2,y2)
  138. Xxchar x1, y1, x2, y2;
  139. X{
  140. X    register xchar x, y;
  141. X
  142. X    for(y = y1; y <= y2; y++)
  143. X        for(x = x1; x <= x2; x++)
  144. X        if(IS_STWALL(levl[x][y].typ))
  145. X            levl[x][y].diggable |= W_NONDIGGABLE;
  146. X}
  147. X
  148. X/*
  149. X * Choose randomly the state (nodoor, open, closed or locked) for a door
  150. X */
  151. X
  152. Xstatic int
  153. Xrnddoor()
  154. X{
  155. X    int i;
  156. X    
  157. X    i = 1 << rn2(5);
  158. X    i >>= 1;
  159. X    return i;
  160. X}
  161. X
  162. X/* 
  163. X * Select a random trap
  164. X */
  165. X
  166. Xstatic int
  167. Xrndtrap()
  168. X{
  169. X    int    rtrap, no_tdoor = !Can_dig_down(&u.uz);
  170. X    do {
  171. X        rtrap = rnd(TRAPNUM-1);
  172. X    } while (rtrap == MAGIC_PORTAL || (no_tdoor && rtrap == TRAPDOOR));
  173. X    return(rtrap);
  174. X}
  175. X
  176. X/* 
  177. X * Coordinates in special level files are handled specially:
  178. X *
  179. X *    if x or y is -11, we generate a random coordinate.
  180. X *    if x or y is between -1 and -10, we read one from the corresponding
  181. X *    register (x0, x1, ... x9).
  182. X *    if x or y is nonnegative, we convert it from relative to the local map
  183. X *    to global coordinates.
  184. X *    The "humidity" flag is used to insure that engravings aren't
  185. X *    created underwater, or eels on dry land.
  186. X */
  187. X#define DRY    0x1
  188. X#define WET    0x2
  189. X
  190. Xstatic boolean FDECL(is_ok_location, (SCHAR_P, SCHAR_P, int));
  191. X
  192. Xstatic void
  193. Xget_location(x, y, humidity)
  194. Xschar *x, *y;
  195. Xint humidity;
  196. X{
  197. X    int cpt = 0;
  198. X
  199. X    if (*x >= 0) {            /* normal locations */
  200. X        *x += xstart;
  201. X        *y += ystart;
  202. X    } else if (*x > -11) {        /* special locations */
  203. X        *y = ystart + rloc_y[ - *y - 1];
  204. X        *x = xstart + rloc_x[ - *x - 1];
  205. X    } else {            /* random location */
  206. X        do {
  207. X        *x = xstart + rn2((int)xsize);
  208. X        *y = ystart + rn2((int)ysize);
  209. X        if (is_ok_location(*x,*y,humidity)) break;
  210. X        } while (++cpt < 100);
  211. X        if (cpt >= 100) {
  212. X        register int xx, yy;
  213. X        /* last try */
  214. X        for (xx = 0; xx < xsize; xx++)
  215. X            for (yy = 0; yy < ysize; yy++) {
  216. X            *x = xstart + xx;
  217. X            *y = ystart + yy;
  218. X            if (is_ok_location(*x,*y,humidity)) goto found_it;
  219. X            }
  220. X        panic("get_location:  can't find a place!");
  221. X        }
  222. X    }
  223. Xfound_it:;
  224. X
  225. X    if (*x <= 0 || *x >= COLNO || *y < 0 || *y >= ROWNO) {
  226. X        impossible("get_location:  (%d,%d) out of bounds", *x, *y);
  227. X        *x = x_maze_max; *y = y_maze_max;
  228. X    }
  229. X}
  230. X
  231. Xstatic boolean
  232. Xis_ok_location(x, y, humidity)
  233. Xregister schar x, y;
  234. Xregister int humidity;
  235. X{
  236. X    register int typ;
  237. X    register boolean okplace = FALSE;
  238. X
  239. X    if (humidity & DRY) {
  240. X        typ = levl[x][y].typ;
  241. X        okplace = (typ == ROOM || typ == AIR ||
  242. X            typ == CLOUD || typ == CORR);
  243. X    }
  244. X    if (humidity & WET) {
  245. X        if (is_pool(x,y) || is_lava(x,y))
  246. X        okplace = TRUE;
  247. X    }
  248. X    return okplace;
  249. X}
  250. X
  251. X/*
  252. X * Shuffle the registers for locations, objects or monsters
  253. X */
  254. X
  255. Xstatic void
  256. Xsp_lev_shuffle(list1, list2, n)
  257. Xchar list1[], list2[];
  258. Xint n;
  259. X{
  260. X    register int i, j;
  261. X    register char k;
  262. X
  263. X    for (i = n - 1; i > 0; i--) {
  264. X        if ((j = rn2(i + 1)) == i) continue;
  265. X        k = list1[j];
  266. X        list1[j] = list1[i];
  267. X        list1[i] = k;
  268. X        if (list2) {
  269. X            k = list2[j];
  270. X            list2[j] = list2[i];
  271. X            list2[i] = k;
  272. X        }
  273. X    }
  274. X}
  275. X
  276. X/* 
  277. X * Get a relative position inside a room.
  278. X * negative values for x or y means RANDOM!
  279. X */
  280. X
  281. Xstatic void
  282. Xget_room_loc(x,y, croom)
  283. Xschar        *x, *y;
  284. Xstruct mkroom    *croom;
  285. X{
  286. X    coord c;
  287. X
  288. X    if (*x <0 && *y <0) {
  289. X        if (somexy(croom, &c)) {
  290. X            *x = c.x;
  291. X            *y = c.y;
  292. X        } else
  293. X            panic("get_room_loc : can't find a place!");
  294. X    } else {
  295. X        if (*x < 0)
  296. X            *x = rn2(croom->hx - croom->lx + 1);
  297. X        if (*y < 0)
  298. X            *y = rn2(croom->hy - croom->ly + 1);
  299. X        *x += croom->lx;
  300. X        *y += croom->ly;
  301. X    }
  302. X}
  303. X
  304. X/* 
  305. X * Get a relative position inside a room.
  306. X * negative values for x or y means RANDOM!
  307. X */
  308. X
  309. Xstatic void
  310. Xget_free_room_loc(x,y, croom)
  311. Xschar        *x, *y;
  312. Xstruct mkroom    *croom;
  313. X{
  314. X    schar try_x, try_y;
  315. X    register int trycnt = 0;
  316. X
  317. X    do {
  318. X        try_x = *x,  try_y = *y;
  319. X        get_room_loc(&try_x, &try_y, croom);
  320. X    } while (levl[try_x][try_y].typ != ROOM && ++trycnt <= 100);
  321. X
  322. X    if (trycnt > 100)
  323. X        panic("get_free_room_loc:  can't find a place!");
  324. X    *x = try_x,  *y = try_y;
  325. X}
  326. X
  327. Xboolean
  328. Xcheck_room(lowx, ddx, lowy, ddy, vault)
  329. Xxchar *lowx, *ddx, *lowy, *ddy;
  330. Xboolean vault;
  331. X{
  332. X    register int x,y,hix = *lowx + *ddx, hiy = *lowy + *ddy;
  333. X    register struct rm *lev;
  334. X    int xlim, ylim, ymax;
  335. X
  336. X    xlim = XLIM + (vault ? 1 : 0);
  337. X    ylim = YLIM + (vault ? 1 : 0);
  338. X    
  339. X    if (*lowx < 3)        *lowx = 3;
  340. X    if (*lowy < 2)        *lowy = 2;
  341. X    if (hix > COLNO-3)    hix = COLNO-3;
  342. X    if (hiy > ROWNO-3)    hiy = ROWNO-3;
  343. Xchk:
  344. X    if (hix <= *lowx || hiy <= *lowy)    return FALSE;
  345. X
  346. X    /* check area around room (and make room smaller if necessary) */
  347. X    for (x = *lowx - xlim; x<= hix + xlim; x++) {
  348. X        if(x <= 0 || x >= COLNO) continue;
  349. X        y = *lowy - ylim;    ymax = hiy + ylim;
  350. X        if(y < 0) y = 0;
  351. X        if(ymax >= ROWNO) ymax = (ROWNO-1);
  352. X        lev = &levl[x][y];
  353. X        for (; y <= ymax; y++) {
  354. X            if (lev++->typ) {
  355. X#ifdef DEBUG
  356. X                if(!vault)
  357. X                    debugpline("strange area [%d,%d] in check_room.",x,y);
  358. X#endif
  359. X                if (!rn2(3))    return FALSE;
  360. X                if (x < *lowx)
  361. X                    *lowx = x + xlim + 1;
  362. X                else
  363. X                    hix = x - xlim - 1;
  364. X                if (y < *lowy)
  365. X                    *lowy = y + ylim + 1;
  366. X                else
  367. X                    hiy = y - ylim - 1;
  368. X                goto chk;
  369. X            }
  370. X        }
  371. X    }
  372. X    *ddx = hix - *lowx;
  373. X    *ddy = hiy - *lowy;
  374. X    return TRUE;
  375. X}
  376. X
  377. X/* 
  378. X * Create a new room.
  379. X * This is still very incomplete...
  380. X */
  381. X
  382. Xboolean
  383. Xcreate_room(x,y,w,h,xal,yal,rtype,rlit)
  384. Xxchar    x,y;
  385. Xxchar    w,h;
  386. Xxchar    xal,yal;
  387. Xxchar    rtype, rlit;
  388. X{
  389. X    xchar    xabs, yabs;
  390. X    int    wtmp, htmp, xaltmp, yaltmp, xtmp, ytmp;
  391. X    NhRect    *r1 = 0, r2;
  392. X    int    trycnt = 0;
  393. X    boolean    vault = FALSE;
  394. X    int    xlim = XLIM, ylim = YLIM;
  395. X
  396. X    if (rtype == -1)    /* Is the type random ? */
  397. X        rtype = OROOM;
  398. X
  399. X    if (rtype == VAULT) {
  400. X        vault = TRUE;
  401. X        xlim++;
  402. X        ylim++;
  403. X    }
  404. X
  405. X    /* on low levels the room is lit (usually) */
  406. X    /* some other rooms may require lighting */
  407. X
  408. X    /* is light state random ? */
  409. X    if (rlit == -1)
  410. X        rlit = (rnd(1+abs(depth(&u.uz))) < 11 && rn2(77)) ? TRUE : FALSE;
  411. X
  412. X    /*
  413. X     * Here we will try to create a room. If some parameters are
  414. X     * random we are willing to make several try before we give
  415. X     * it up.
  416. X     */
  417. X    do {
  418. X        xchar xborder, yborder;
  419. X        wtmp = w; htmp = h;
  420. X        xtmp = x; ytmp = y;
  421. X        xaltmp = xal; yaltmp = yal;
  422. X
  423. X        /* First case : a totaly random room */
  424. X
  425. X        if((xtmp < 0 && ytmp <0 && wtmp < 0 && xaltmp < 0 &&
  426. X           yaltmp < 0) || vault) {
  427. X            xchar hx, hy, lx, ly, dx, dy;
  428. X            r1 = rnd_rect(); /* Get a random rectangle */
  429. X
  430. X            if (!r1) { /* No more free rectangles ! */
  431. X#ifdef DEBUG
  432. X                debugpline("No more rects...");
  433. X#endif
  434. X                return FALSE;
  435. X            }
  436. X            hx = r1->hx;
  437. X            hy = r1->hy;
  438. X            lx = r1->lx;
  439. X            ly = r1->ly;
  440. X            if (vault)
  441. X                dx = dy = 1;
  442. X            else {
  443. X                dx = 2 + rn2((hx-lx > 28) ? 12 : 8);
  444. X                dy = 2 + rn2(4);
  445. X                if(dx*dy > 50)
  446. X                    dy = 50/dx;
  447. X            }
  448. X            xborder = (lx > 0 && hx < COLNO -1) ? 2*xlim : xlim+1;
  449. X            yborder = (ly > 0 && hy < ROWNO -1) ? 2*ylim : ylim+1;
  450. X            if(hx-lx < dx + 3 + xborder ||
  451. X               hy-ly < dy + 3 + yborder) {
  452. X                r1 = 0;
  453. X                continue;
  454. X            }
  455. X            xabs = lx + (lx > 0 ? xlim : 3)
  456. X                + rn2(hx - (lx>0?lx : 3) - dx - xborder + 1);
  457. X            yabs = ly + (ly > 0 ? ylim : 2) 
  458. X                + rn2(hy - (ly>0?ly : 2) - dy - yborder + 1);
  459. X            if (ly == 0 && hy >= (ROWNO-1) &&
  460. X                (!nroom || !rn2(nroom)) && (yabs+dy > ROWNO/2)) {
  461. X                yabs = rn1(3, 2);
  462. X                if(nroom < 4 && dy>1) dy--;
  463. X                }
  464. X            if (!check_room(&xabs, &dx, &yabs, &dy, vault)) {
  465. X                r1 = 0;
  466. X                continue;
  467. X            }
  468. X            wtmp = dx+1;
  469. X            htmp = dy+1;
  470. X            r2.lx = xabs-1; r2.ly = yabs-1;
  471. X            r2.hx = xabs + wtmp;
  472. X            r2.hy = yabs + htmp;
  473. X        } else {    /* Only some parameters are random */
  474. X            int rndpos = 0;
  475. X            if (xtmp < 0 && ytmp < 0) { /* Position is RANDOM */
  476. X                xtmp = rnd(5);
  477. X                ytmp = rnd(5);
  478. X                rndpos = 1;
  479. X            }
  480. X            if (wtmp < 0 || htmp < 0) { /* Size is RANDOM */
  481. X                wtmp = rn1(15, 3);
  482. X                htmp = rn1(8, 2);
  483. X            }
  484. X            if (xaltmp == -1) /* Horizontal alignment is RANDOM */
  485. X                xaltmp = rnd(3);
  486. X            if (yaltmp == -1) /* Vertical alignment is RANDOM */
  487. X                yaltmp = rnd(3);
  488. X
  489. X            /* Try to generate real (absolute) coordinates here! */
  490. X            
  491. X            xabs = (((xtmp-1) * COLNO) / 5) + 1;
  492. X            yabs = (((ytmp-1) * ROWNO) / 5) + 1;
  493. X            switch (xaltmp) {
  494. X                  case LEFT:
  495. X                break;
  496. X                  case RIGHT:
  497. X                xabs += (COLNO / 5) - wtmp;
  498. X                break;
  499. X                  case CENTER:
  500. X                xabs += ((COLNO / 5) - wtmp) / 2;
  501. X                break;
  502. X            }
  503. X            switch (yaltmp) {
  504. X                  case TOP:
  505. X                break;
  506. X                  case BOTTOM:
  507. X                yabs += (ROWNO / 5) - htmp;
  508. X                break;
  509. X                  case CENTER:
  510. X                yabs += ((ROWNO / 5) - htmp) / 2;
  511. X                break;
  512. X            }
  513. X            
  514. X            if (xabs + wtmp - 1 > COLNO - 2) 
  515. X                xabs = COLNO - wtmp - 3;
  516. X            
  517. X            if (xabs < 2)
  518. X                xabs = 2;
  519. X            
  520. X            if (yabs + htmp - 1> ROWNO - 2)
  521. X                yabs = ROWNO - htmp - 3;
  522. X
  523. X            if (yabs < 2)
  524. X                yabs = 2;
  525. X            /* Try to find a rectangle that fit our room ! */
  526. X
  527. X            r2.lx = xabs-1; r2.ly = yabs-1;
  528. X            r2.hx = xabs + wtmp + rndpos;
  529. X            r2.hy = yabs + htmp + rndpos;
  530. X            r1 = get_rect(&r2);
  531. X        }
  532. X    } while (++trycnt <= 100 && !r1);
  533. X    if (!r1) {    /* creation of room failed ? */
  534. X        return FALSE;
  535. X    }
  536. X    split_rects(r1, &r2);
  537. X
  538. X    if (!vault) {
  539. X        smeq[nroom] = nroom;
  540. X        add_room(xabs, yabs, xabs+wtmp-1, yabs+htmp-1,
  541. X             rlit, rtype, FALSE);
  542. X    } else {
  543. X        rooms[nroom].lx = xabs;
  544. X        rooms[nroom].ly = yabs;
  545. X    }
  546. X    return TRUE;
  547. X}
  548. X
  549. X/* 
  550. X * Create a subroom in room proom at pos x,y with width w & height h.
  551. X * x & y are relative to the parent room.
  552. X */
  553. X
  554. Xstatic boolean
  555. Xcreate_subroom(proom, x, y, w,  h, rtype, rlit)
  556. Xstruct mkroom *proom;
  557. Xxchar x,y;
  558. Xxchar w,h;
  559. Xxchar rtype, rlit;
  560. X{
  561. X    xchar width, height;
  562. X
  563. X    width = proom->hx - proom->lx + 1;
  564. X    height = proom->hy - proom->ly + 1;
  565. X
  566. X    /* There is a minimum size for the parent room */
  567. X    if (width < 4 || height < 4)
  568. X        return FALSE;
  569. X
  570. X    /* Check for random position, size, etc... */
  571. X
  572. X    if (w == -1)
  573. X        w = rnd(width - 3);
  574. X    if (h == -1)
  575. X        h = rnd(height - 3);
  576. X    if (x == -1)
  577. X        x = rnd(width - w - 1) - 1;
  578. X    if (y == -1)
  579. X        y = rnd(height - h - 1) - 1;
  580. X    if (x == 1)
  581. X        x = 0;
  582. X    if (y == 1)
  583. X        y = 0;
  584. X    if ((x + w + 1) == width)
  585. X        x++;
  586. X    if ((y + h + 1) == height)
  587. X        y++;
  588. X    if (rtype == -1)
  589. X        rtype = OROOM;
  590. X    if (rlit == -1)
  591. X        rlit = (rnd(1+abs(depth(&u.uz))) < 11 && rn2(77)) ? TRUE : FALSE;
  592. X    add_subroom(proom, proom->lx + x, proom->ly + y, 
  593. X            proom->lx + x + w - 1, proom->ly + y + h - 1,
  594. X            rlit, rtype, FALSE);
  595. X    return TRUE;
  596. X}
  597. X
  598. X/* 
  599. X * Create a new door in a room.
  600. X * It's placed on a wall (north, south, east or west).
  601. X */
  602. X
  603. Xstatic void
  604. Xcreate_door(dd, broom)
  605. Xroom_door *dd;
  606. Xstruct mkroom *broom;
  607. X{
  608. X    int    x, y;
  609. X    int    trycnt = 0;
  610. X
  611. X    if (dd->secret == -1)
  612. X        dd->secret = rn2(2);
  613. X
  614. X    if (dd->mask == -1) {
  615. X        /* is it a locked door, closed, or a doorway? */
  616. X        if (!dd->secret) {
  617. X            if(!rn2(3)) {
  618. X                if(!rn2(5))
  619. X                    dd->mask = D_ISOPEN;
  620. X                else if(!rn2(6))
  621. X                    dd->mask = D_LOCKED;
  622. X                else
  623. X                    dd->mask = D_CLOSED;
  624. X                if (dd->mask != D_ISOPEN && !rn2(25))
  625. X                    dd->mask |= D_TRAPPED;
  626. X            } else 
  627. X                dd->mask = D_NODOOR;
  628. X        } else {
  629. X            if(!rn2(5))    dd->mask = D_LOCKED;
  630. X            else        dd->mask = D_CLOSED;
  631. X
  632. X            if(!rn2(20)) dd->mask |= D_TRAPPED;
  633. X        }
  634. X    }
  635. X
  636. X    do {
  637. X        register int dwall, dpos;
  638. X
  639. X        dwall = dd->wall;
  640. X        if (dwall == -1)    /* The wall is RANDOM */
  641. X            dwall = 1 << rn2(4);
  642. X
  643. X        dpos = dd->pos;
  644. X        if (dpos == -1)    /* The position is RANDOM */
  645. X            dpos = rn2((dwall == W_WEST || dwall == W_EAST) ?
  646. X                (broom->hy - broom->ly) : (broom->hx - broom->lx));
  647. X        
  648. X        /* Convert wall and pos into an absolute coordinate! */
  649. X        
  650. X        switch (dwall) {
  651. X              case W_NORTH:
  652. X            y = broom->ly - 1;
  653. X            x = broom->lx + dpos;
  654. X            break;
  655. X              case W_SOUTH:
  656. X            y = broom->hy + 1;
  657. X            x = broom->lx + dpos;
  658. X            break;
  659. X              case W_WEST:
  660. X            x = broom->lx - 1;
  661. X            y = broom->ly + dpos;
  662. X            break;
  663. X              case W_EAST:
  664. X            x = broom->hx + 1;
  665. X            y = broom->ly + dpos;
  666. X            break;
  667. X              default:
  668. X            x = y = 0;
  669. X            panic("create_door: No wall for door!");
  670. X            break;
  671. X        }
  672. X        if (okdoor(x,y))
  673. X            break;
  674. X    } while (++trycnt <= 100);
  675. X    if (trycnt > 100) {
  676. X        impossible("create_door: Can't find a proper place!");
  677. X        return;
  678. X    }
  679. X    add_door(x,y,broom);
  680. X    levl[x][y].typ = (dd->secret ? SDOOR : DOOR);
  681. X    levl[x][y].doormask = dd->mask;
  682. X}
  683. X
  684. X/*
  685. X * Create a secret door in croom on any one of the specified walls.
  686. X */
  687. Xvoid
  688. Xcreate_secret_door(croom, walls)
  689. X    struct mkroom *croom;
  690. X    xchar walls; /* any of W_NORTH | W_SOUTH | W_EAST | W_WEST (or W_ANY) */
  691. X{
  692. X    xchar sx, sy; /* location of the secret door */
  693. X    int count;
  694. X
  695. X    for(count = 0; count < 100; count++) {
  696. X    sx = rn1(croom->hx - croom->lx + 1, croom->lx);
  697. X    sy = rn1(croom->hy - croom->ly + 1, croom->ly);
  698. X
  699. X    switch(rn2(4)) {
  700. X    case 0:  /* top */
  701. X        if(!(walls & W_NORTH)) continue;
  702. X        sy = croom->ly-1; break;
  703. X    case 1: /* bottom */
  704. X        if(!(walls & W_SOUTH)) continue;
  705. X        sy = croom->hy+1; break;
  706. X    case 2: /* left */
  707. X        if(!(walls & W_EAST)) continue;
  708. X        sx = croom->lx-1; break;
  709. X    case 3: /* right */
  710. X        if(!(walls & W_WEST)) continue;
  711. X        sx = croom->hx+1; break;
  712. X    }
  713. X
  714. X    if(okdoor(sx,sy)) {
  715. X        levl[sx][sy].typ = SDOOR;
  716. X        levl[sx][sy].doormask = D_CLOSED;
  717. X        add_door(sx,sy,croom);
  718. X        return;
  719. X    }
  720. X    }
  721. X
  722. X    impossible("couldn't create secret door on any walls 0x%x", walls);
  723. X}
  724. X
  725. X/* 
  726. X * Create a trap in a room.
  727. X */
  728. X
  729. Xstatic void
  730. Xcreate_trap(t,croom)
  731. Xtrap    *t;
  732. Xstruct mkroom    *croom;
  733. X{
  734. X    schar        x,y;
  735. X    coord tm;
  736. X
  737. X    x = t->x;
  738. X    y = t->y;
  739. X    if (croom)
  740. X        get_free_room_loc(&x, &y, croom);
  741. X    else
  742. X        get_location(&x, &y, DRY);
  743. X
  744. X    tm.x = x;
  745. X    tm.y = y;
  746. X
  747. X    mktrap(t->type, 1, (struct mkroom*) 0, &tm);
  748. X}
  749. X
  750. X/* 
  751. X * Create a monster in a room.
  752. X */
  753. X
  754. Xstatic void
  755. Xcreate_monster(m,croom)
  756. Xmonster    *m;
  757. Xstruct mkroom    *croom;
  758. X{
  759. X    struct monst    *mtmp;
  760. X    schar        x,y;
  761. X    char        class;
  762. X    aligntyp    amask;
  763. X    struct permonst *pm;
  764. X
  765. X    if (m->class >= 0) {
  766. X        class = (char) def_char_to_monclass((char)m->class);
  767. X        if (class == MAXMCLASSES) goto bad_class;
  768. X    } else if (m->class > -11) {
  769. X        class = (char) def_char_to_monclass(rmonst[- m->class - 1]);
  770. X        if (class == MAXMCLASSES) {
  771. Xbad_class:
  772. X        panic("create_monster: unknown monster class '%c'", m->class);
  773. X        }
  774. X    } else
  775. X        class = 0;
  776. X
  777. X    amask = (m->align <= -11) ? induced_align(80) :
  778. X        (m->align < 0 ? ralign[-m->align-1] : m->align);
  779. X
  780. X    if (!class)
  781. X        pm = (struct permonst *) 0;
  782. X    else if (m->id != -1) {
  783. X#ifdef MULDGN
  784. X        if(pl_character[0] == 'E' && m->id == PM_EARENDIL)
  785. X        m->id += flags.female;
  786. X#endif
  787. X        pm = &mons[m->id];
  788. X    } else {
  789. X        pm = mkclass(class,G_NOGEN);
  790. X        /* if we can't get class for a specific monster type,
  791. X           it means, that it's extinct, genocided, or unique,
  792. X           and shouldn't be created. */
  793. X        if (!pm) return;
  794. X    }
  795. X
  796. X    x = m->x;
  797. X    y = m->y;
  798. X    if (croom)
  799. X        get_room_loc(&x, &y, croom);
  800. X    else {
  801. X        if (!pm || !is_swimmer(pm))
  802. X        get_location(&x, &y, DRY);
  803. X        else if (pm->mlet == S_EEL)
  804. X        get_location(&x, &y, WET);
  805. X        else
  806. X        get_location(&x, &y, DRY|WET);
  807. X    }
  808. X
  809. X
  810. X    if(m->align != -12)
  811. X        mtmp = mk_roamer(pm, Amask2align(amask), x, y, m->peaceful);
  812. X    else if(PM_ARCHEOLOGIST <= m->id && m->id <= PM_WIZARD)
  813. X             mtmp = mk_mplayer(pm, x, y, FALSE);
  814. X    else mtmp = makemon(pm, x, y);
  815. X
  816. X    if (mtmp) {
  817. X        /* handle specific attributes for some special monsters */
  818. X        if (m->name) mtmp = christen_monst(mtmp, m->name);
  819. X
  820. X        /*
  821. X         * This is currently hardwired for mimics only.  It should
  822. X         * eventually be expanded.
  823. X         */
  824. X        if (m->appear_as && mtmp->data->mlet == S_MIMIC) {
  825. X        int i;
  826. X
  827. X        switch (m->appear) {
  828. X            case M_AP_NOTHING:
  829. X            impossible(
  830. X        "create_monster: mon has an appearance, \"%s\", but no type",
  831. X                m->appear_as);
  832. X            break;
  833. X
  834. X            case M_AP_FURNITURE:
  835. X            for (i = 0; i < MAXPCHARS; i++)
  836. X                if (!strcmp(defsyms[i].explanation, m->appear_as))
  837. X                break;
  838. X            if (i == MAXPCHARS) {
  839. X                impossible(
  840. X                "create_monster: can't find feature \"%s\"",
  841. X                    m->appear_as);
  842. X            } else {
  843. X                mtmp->m_ap_type = M_AP_FURNITURE;
  844. X                mtmp->mappearance = i;
  845. X            }
  846. X            break;
  847. X
  848. X            case M_AP_OBJECT:
  849. X            for (i = 0; i < NROFOBJECTS; i++)
  850. X                if (!strcmp(OBJ_NAME(objects[i]), m->appear_as))
  851. X                break;
  852. X            if (i == NROFOBJECTS) {
  853. X                impossible(
  854. X                "create_monster: can't find object \"%s\"",
  855. X                    m->appear_as);
  856. X            } else {
  857. X                mtmp->m_ap_type = M_AP_OBJECT;
  858. X                mtmp->mappearance = i;
  859. X            }
  860. X            break;
  861. X
  862. X            case M_AP_MONSTER:
  863. X            /* note: mimics don't appear as monsters! */
  864. X            /*      (but chameleons can :-)      */
  865. X            default:
  866. X            impossible(
  867. X        "create_monster: unimplemented mon appear type [%d,\"%s\"]",
  868. X                m->appear, m->appear_as);
  869. X            break;
  870. X        }
  871. X        if (does_block(x, y, &levl[x][y]))
  872. X            block_point(x, y);
  873. X        }
  874. X
  875. X        if (m->peaceful >= 0) {
  876. X        mtmp->mpeaceful = m->peaceful;
  877. X        /* changed mpeaceful again; have to reset malign */
  878. X        set_malign(mtmp);
  879. X        }
  880. X        if (m->asleep >= 0) mtmp->msleep = m->asleep;
  881. X    }
  882. X}
  883. X
  884. X/* 
  885. X * Create an object in a room.
  886. X */
  887. X
  888. Xstatic void
  889. Xcreate_object(o,croom)
  890. Xobject    *o;
  891. Xstruct mkroom    *croom;
  892. X{
  893. X    struct obj    *otmp;
  894. X    schar    x,y;
  895. X    char    c;
  896. X
  897. X    x = o->x; y = o->y;
  898. X    if (croom)
  899. X        get_room_loc(&x, &y, croom);
  900. X    else
  901. X        get_location(&x, &y, DRY);
  902. X
  903. X    if (o->class >= 0)
  904. X        c = o->class;
  905. X    else if (o->class > -11)
  906. X        c = robjects[ -(o->class+1)];
  907. X    else
  908. X        c = 0;
  909. X
  910. X    if (!c)
  911. X        otmp = mkobj_at(RANDOM_CLASS, x, y, TRUE);
  912. X    else if (o->id != -1)
  913. X        otmp = mksobj_at(o->id, x, y, TRUE);
  914. X    else {
  915. X        /*
  916. X         * The special levels are compiled with the default "text" object
  917. X         * class characters.  We must convert them to the internal format.
  918. X         */
  919. X        char oclass = (char) def_char_to_objclass(c);
  920. X
  921. X        if (oclass == MAXOCLASSES)
  922. X        panic("create_object:  unexpected object class '%c'",c);
  923. X        otmp = mkobj_at(oclass, x, y, TRUE);
  924. X    }
  925. X
  926. X    if (o->spe != -127)    /* That means NOT RANDOM! */
  927. X        otmp->spe = o->spe;
  928. X
  929. X    switch (o->curse_state) {
  930. X          case 1:    bless(otmp); break; /* BLESSED */
  931. X          case 2:    unbless(otmp); uncurse(otmp); break; /* uncursed */
  932. X          case 3:    curse(otmp); break; /* CURSED */
  933. X          default:    break;    /* Otherwise it's random and we're happy
  934. X                 * with what mkobj gave us! */
  935. X    }
  936. X
  937. X    /*     corpsenm is "empty" if -1, random if -2, otherwise specific */
  938. X    if (o->corpsenm == -2) otmp->corpsenm = rndmonnum();
  939. X    else if (o->corpsenm != -1) otmp->corpsenm = o->corpsenm;
  940. X
  941. X    if (o->name) {        /* Give a name to that object */
  942. X        /* Note: oname() is safe since otmp is first in chains */
  943. X        otmp = oname(otmp, o->name, 0);
  944. X        fobj = otmp;
  945. X        level.objects[x][y] = otmp;
  946. X    }
  947. X    stackobj(otmp);
  948. X}
  949. X
  950. X/* 
  951. X * Create stairs in a room.
  952. X * 
  953. X */
  954. X
  955. Xstatic void
  956. Xcreate_stairs(s,croom)
  957. Xstair    *s;
  958. Xstruct mkroom    *croom;
  959. X{
  960. X    schar        x,y;
  961. X
  962. X    x = s->x; y = s->y;
  963. X    get_free_room_loc(&x, &y, croom);
  964. X    mkstairs(x,y,(char)s->up, croom);
  965. X}
  966. X
  967. X/* 
  968. X * Create an altar in a room.
  969. X */
  970. X
  971. Xstatic void
  972. Xcreate_altar(a, croom)
  973. X    altar        *a;
  974. X    struct mkroom    *croom;
  975. X{
  976. X    schar        sproom,x,y;
  977. X    aligntyp    amask;
  978. X    boolean        croom_is_temple = TRUE;
  979. X
  980. X    x = a->x; y = a->y;
  981. X
  982. X    if (croom) {
  983. X        get_free_room_loc(&x, &y, croom);
  984. X        if (croom->rtype != TEMPLE)
  985. X        croom_is_temple = FALSE;
  986. X    } else {
  987. X        get_location(&x, &y, DRY);
  988. X        if (sproom = (schar) *in_rooms(x, y, TEMPLE))
  989. X        croom = &rooms[sproom - ROOMOFFSET];
  990. X        else
  991. X        croom_is_temple = FALSE;
  992. X    }
  993. X
  994. X    a->x = x;
  995. X    a->y = y;
  996. X
  997. X    /* Is the alignment random ?
  998. X     * If so, it's an 80% chance that the altar will be co-aligned.
  999. X     *
  1000. X     * The alignment is encoded as amask values instead of alignment
  1001. X     * values to avoid conflicting with the rest of the encoding,
  1002. X     * shared by many other parts of the special level code.
  1003. X     */
  1004. X
  1005. X    amask = (a->align == -11) ? induced_align(80) :
  1006. X        (a->align < 0 ? ralign[-a->align-1] : a->align);
  1007. X
  1008. X    levl[x][y].typ = ALTAR;
  1009. X    levl[x][y].altarmask = amask;
  1010. X
  1011. X    if (a->shrine == -11) a->shrine = rn2(1);  /* handle random case */
  1012. X
  1013. X    if (!croom_is_temple || !a->shrine) return;
  1014. X
  1015. X    if (a->shrine) {    /* Is it a shrine  or sanctum? */
  1016. X        priestini(&u.uz, croom, x, y, (a->shrine > 1));
  1017. X        levl[x][y].altarmask |= AM_SHRINE;
  1018. X        level.flags.has_temple = TRUE;
  1019. X    }
  1020. X}
  1021. X
  1022. X/* 
  1023. X * Create a gold pile in a room.
  1024. X */
  1025. X
  1026. Xstatic void
  1027. Xcreate_gold(g,croom)
  1028. Xgold *g;
  1029. Xstruct mkroom    *croom;
  1030. X{
  1031. X    schar        x,y;
  1032. X
  1033. X    x = g->x; y= g->y;
  1034. X    if (croom)
  1035. X        get_room_loc(&x, &y, croom);
  1036. X    else
  1037. X        get_location(&x, &y, DRY);
  1038. X
  1039. X    if (g->amount == -1)
  1040. X        g->amount = rnd(200);
  1041. X    mkgold((long) g->amount, x, y);
  1042. X}
  1043. X
  1044. X/* 
  1045. X * Create a feature (e.g a fountain) in a room.
  1046. X */
  1047. X
  1048. Xstatic void
  1049. Xcreate_feature(fx, fy, croom, typ)
  1050. Xint        fx, fy;
  1051. Xstruct mkroom    *croom;
  1052. Xint        typ;
  1053. X{
  1054. X    schar        x,y;
  1055. X    int        trycnt = 0;
  1056. X
  1057. X    x = fx;  y = fy;
  1058. X    if (croom) {
  1059. X        if (x < 0 && y < 0)
  1060. X        do {
  1061. X            x = -1;  y = -1;
  1062. X            get_room_loc(&x, &y, croom);
  1063. X        } while (++trycnt <= 200 && occupied(x,y));
  1064. X        else
  1065. X        get_room_loc(&x, &y, croom);
  1066. X        if(trycnt > 200)
  1067. X        return;
  1068. X    } else {
  1069. X        get_location(&x, &y, DRY);
  1070. X    }
  1071. X    levl[x][y].typ = typ;
  1072. X}
  1073. X
  1074. X/* 
  1075. X * Search for a door in a room on a specified wall.
  1076. X */
  1077. X
  1078. Xstatic boolean
  1079. Xsearch_door(croom,x,y,wall,cnt)
  1080. Xstruct mkroom *croom;
  1081. Xxchar *x, *y;
  1082. Xxchar wall;
  1083. Xint cnt;
  1084. X{
  1085. X    int dx, dy;
  1086. X    int xx,yy;
  1087. X
  1088. X    switch(wall) {
  1089. X          case W_NORTH:
  1090. X        dy = 0; dx = 1;
  1091. X        xx = croom->lx;
  1092. X        yy = croom->hy + 1;
  1093. X        break;
  1094. X          case W_SOUTH:
  1095. X        dy = 0; dx = 1;
  1096. X        xx = croom->lx;
  1097. X        yy = croom->ly - 1;
  1098. X        break;
  1099. X          case W_EAST:
  1100. X        dy = 1; dx = 0;
  1101. X        xx = croom->hx + 1;
  1102. X        yy = croom->ly;
  1103. X        break;
  1104. X          case W_WEST:
  1105. X        dy = 1; dx = 0;
  1106. X        xx = croom->lx - 1;
  1107. X        yy = croom->ly;
  1108. X        break;
  1109. X          default:
  1110. X        dx = dy = xx = yy = 0;
  1111. X        panic("search_door: Bad wall!");
  1112. X        break;
  1113. X    }
  1114. X    while (xx <= croom->hx+1 && yy <= croom->hy+1) {
  1115. X        if (IS_DOOR(levl[xx][yy].typ) || levl[xx][yy].typ == SDOOR) {
  1116. X            *x = xx;
  1117. X            *y = yy;
  1118. X            if (cnt-- <= 0) 
  1119. X                return TRUE;
  1120. X        }
  1121. X        xx += dx;
  1122. X        yy += dy;
  1123. X    }
  1124. X    return FALSE;
  1125. X}
  1126. X
  1127. X/* 
  1128. X * Dig a corridor between two points.
  1129. X */
  1130. X
  1131. Xboolean
  1132. Xdig_corridor(org,dest,nxcor,ftyp,btyp)
  1133. Xcoord org, dest;
  1134. Xboolean nxcor;
  1135. Xschar ftyp, btyp;
  1136. X{
  1137. X    register int dx=0, dy=0, dix, diy, cct;
  1138. X    register struct rm *crm;
  1139. X    register int tx, ty, xx, yy;
  1140. X
  1141. X    xx = org.x;  yy = org.y;
  1142. X    tx = dest.x; ty = dest.y;
  1143. X    if (xx <= 0 || yy <= 0 || tx <= 0 || ty <= 0 ||
  1144. X        xx > COLNO-1 || tx > COLNO-1 ||
  1145. X        yy > ROWNO-1 || ty > ROWNO-1) {
  1146. X#ifdef DEBUG
  1147. X        debugpline("dig_corridor: bad coords : (%d,%d) (%d,%d).",
  1148. X               xx,yy,tx,ty);
  1149. X#endif
  1150. X        return FALSE;
  1151. X    }
  1152. X    if (tx > xx)        dx = 1;
  1153. X    else if (ty > yy)    dy = 1;
  1154. X    else if (tx < xx)    dx = -1;
  1155. X    else            dy = -1;
  1156. X    
  1157. X    xx -= dx;
  1158. X    yy -= dy;
  1159. X    cct = 0;
  1160. X    while(xx != tx || yy != ty) {
  1161. X        /* loop: dig corridor at [xx,yy] and find new [xx,yy] */
  1162. X        if(cct++ > 500 || (nxcor && !rn2(35)))
  1163. X        return FALSE;
  1164. X
  1165. X        xx += dx;
  1166. X        yy += dy;
  1167. X
  1168. X        if(xx >= COLNO-1 || xx <= 0 || yy <= 0 || yy >= ROWNO-1)
  1169. X        return FALSE;        /* impossible */
  1170. X
  1171. X        crm = &levl[xx][yy];
  1172. X        if(crm->typ == btyp) {
  1173. X        if(ftyp != CORR || rn2(100)) {
  1174. X            crm->typ = ftyp;
  1175. X            if(nxcor && !rn2(50))
  1176. X                (void) mksobj_at(BOULDER, xx, yy, TRUE);
  1177. X        } else {
  1178. X            crm->typ = SCORR;
  1179. X        }
  1180. X        } else
  1181. X        if(crm->typ != ftyp && crm->typ != SCORR) {
  1182. X        /* strange ... */
  1183. X        return FALSE;
  1184. X        }
  1185. X
  1186. X        /* find next corridor position */
  1187. X        dix = abs(xx-tx);
  1188. X        diy = abs(yy-ty);
  1189. X
  1190. X        /* do we have to change direction ? */
  1191. X        if(dy && dix > diy) {
  1192. X        register int ddx = (xx > tx) ? -1 : 1;
  1193. X
  1194. X        crm = &levl[xx+ddx][yy];
  1195. X        if(crm->typ == btyp || crm->typ == ftyp || crm->typ == SCORR) {
  1196. X            dx = ddx;
  1197. X            dy = 0;
  1198. X            continue;
  1199. X        }
  1200. X        } else if(dx && diy > dix) {
  1201. X        register int ddy = (yy > ty) ? -1 : 1;
  1202. X
  1203. X        crm = &levl[xx][yy+ddy];
  1204. X        if(crm->typ == btyp || crm->typ == ftyp || crm->typ == SCORR) {
  1205. X            dy = ddy;
  1206. X            dx = 0;
  1207. X            continue;
  1208. X        }
  1209. X        }
  1210. X
  1211. X        /* continue straight on? */
  1212. X        crm = &levl[xx+dx][yy+dy];
  1213. X        if(crm->typ == btyp || crm->typ == ftyp || crm->typ == SCORR)
  1214. X        continue;
  1215. X
  1216. X        /* no, what must we do now?? */
  1217. X        if(dx) {
  1218. X        dx = 0;
  1219. X        dy = (ty < yy) ? -1 : 1;
  1220. X        } else {
  1221. X        dy = 0;
  1222. X        dx = (tx < xx) ? -1 : 1;
  1223. X        }
  1224. X        crm = &levl[xx+dx][yy+dy];
  1225. X        if(crm->typ == btyp || crm->typ == ftyp || crm->typ == SCORR)
  1226. X        continue;
  1227. X        dy = -dy;
  1228. X        dx = -dx;
  1229. X    }
  1230. X    return TRUE;
  1231. X}
  1232. X
  1233. END_OF_FILE
  1234. if test 26410 -ne `wc -c <'src/sp_lev.c1'`; then
  1235.     echo shar: \"'src/sp_lev.c1'\" unpacked with wrong size!
  1236. fi
  1237. # end of 'src/sp_lev.c1'
  1238. fi
  1239. if test -f 'sys/amiga/wbwin.uu' -a "${1}" != "-c" ; then 
  1240.   echo shar: Will not clobber existing file \"'sys/amiga/wbwin.uu'\"
  1241. else
  1242. echo shar: Extracting \"'sys/amiga/wbwin.uu'\" \(28885 characters\)
  1243. sed "s/^X//" >'sys/amiga/wbwin.uu' <<'END_OF_FILE'
  1244. Xbegin 777 wbwin.pw
  1245. XM4&]W97)7:6YD;W=S('8R+C5C(*DQ.3@W+"`Q.3@X(&)Y($E.3U9!5%)/3DE#
  1246. XM4RP@24Y#+B`@("`@("`@("`@("`@("`@("`@("`@```"K`````E``8#_````
  1247. XM`0`````!``````AW8G=I;BYC```X_&@``````H``R``"``*````/```````X
  1248. XMUP````````````````(````73F5T2&%C:R!7;W)K0F5N8V@@5C,N,0`````!
  1249. XM``````$`````#)"0D```(/#P\`!@L`````P``A`_``"'>@"J`%#_____`#D&
  1250. XMF`````````````````````````````(`)51(```````!```"`"(`(@(U`)0`
  1251. XM!0`%_____P```!Y396QE8W0@4V%V960@1V%M92!O<B!.97<@1V%M90``.04X
  1252. XM``7_^?_F``8`*("#``,`.0(@`````````````````#D$F``$`#D$N/____\#
  1253. XM```%`#D$?````````````AP```(<``<````'```````````"$P`"````````
  1254. XM``````````````$#__________\````*`"@`BP`EC&@`)9FP`";0@``I)T``
  1255. XM*,^(`"C1N`````=38W)O;&P``````0`````!``````I'04130U)/3$P`````
  1256. XM`0`````!````````!0`,_^8`"@`C``,``0`TP>```````#D%D```````````
  1257. XM``4`.06P_____P$```4`.05T```````````"'````AP`"P````L``````#3!
  1258. XMX/__``L"```"`"C4:``````````(``````(V```#``$```8``0``````*-<@
  1259. XM``````````,@(``````(`",``0`HWZ``*.?``"CK6``H\E``*/E(`"DU>```
  1260. XM``A-97-S86=E``````$``````0`````#+3$``````0`````!```TE*@!$```
  1261. XM````!P```#D&N``Y,;`````(4')O:F5C=```-,A``#39,!!(`#D&V``````0
  1262. XM```Y![```````0(#`0```````````,@`"```````````````!4AE;'``````
  1263. XM`0``-P[@`#=04!!!`#D*4``````0```Y"G@``````0(#`0`````````(`,@`
  1264. XM"```````````````!D%B;W5T``````$``#BZV``XO.@04P`Y"I@`````$```
  1265. XM.0K```````$"`P$`````````(`"X``@```````````````M4;W`@4V-O<F5S
  1266. XM``````$``#B_6``XR/`0```Y"N``````$```.0L(``````$"`P$`````````
  1267. XM&`"X``@```````````````A296-O=F5R``````$``#D+Z``XU8@0```Y"R@`
  1268. XM````$```.0P(``````$"`P$`````````&`"X``@``````````````!)%9&ET
  1269. XM($1E9F%U;'0@1V%M90`````!```Y#\@`.-=@$```.0[0`````!```#D/Z```
  1270. XM```!`@,!`````````!@`^``(```````````````3161I="!#;VYF:6=U<F%T
  1271. XM:6]N``````$``#CJ>``XZY`040`Y$`@`````$`````````````$"`P$`````
  1272. XM````(`#(``@```````````````51=6ET``````$``#D+4`$0`$8````'````
  1273. XM.3'0``````````5'86UE```Y#,``.1`P$$D`.3'P`````!```#DR&``````!
  1274. XM`@,!````````````"``(```````````````%26YF;P`````!```Y,F``.3)X
  1275. XM$$,`.3(X`````!```#DRB``````!`@,!``````````@`F``(````````````
  1276. XM```/0VAA;F=E($-O;6UE;G0``````0``.3+0`#DS$!!/`#DRJ``````0```Y
  1277. XM,R```````0(#`0`````````0`)@`"```````````````#%-E="!/<'1I;VYS
  1278. XM``````$``#DS:``Y,X`0```Y,T``````$```.3.0``````$"`P$`````````
  1279. XM&`"8``@```````````````U#;W!Y($]P=&EO;G,``````0``.3/8`#DSZ!!$
  1280. XM`#DSL``````0```Y,_@``````0(#`0`````````@`)@`"```````````````
  1281. XM"$1I<V-A<F0``````0``.31``#DT4!!2`#DT&``````0`````````````0(#
  1282. XM`0`````````H`)@`"```````````````!U)E;F%M90`````!```"$`X`(`)`
  1283. XM``4`!?____\``````#F0.````````````````````````P`Y2Q````````=1
  1284. XM=65S=%\```,`K@`\`2H`/``%``7_____````&DYE=$AA8VL@5V]R:T)E;F-H
  1285. XM(%)E<75E<W0``#F..``,`"L`5P`+`````P`!`#F-;```````.8V8````````
  1286. XM```````YC;C_____`@``!0`YC7P```````````!8````6``,````#```````
  1287. XM`````P`!```@``(``````#EK@``````````$665S``````H````!`#EN>``Y
  1288. XMC>``.8WP`#F.```YCA@`.8XH````!%EE<P`````!``````$`````#$=!1%%5
  1289. XM15-46453``````$``````0``.8]0`,<`*P!7``L````#``$`.8YD```````Y
  1290. XMCI`````````````$`#F.P/____\"```%`#F.=````````````%@```!8``P`
  1291. XM```,```````````#``$``",``@``````.8ZP``````````-.;P`````*````
  1292. XM`0`YCN@`.8[X`#F/"``YCQ@`.8\P`#F/0`````-.;P`````!``````$`````
  1293. XM"T=!1%%515-43D\``````0`````!````````#``0`1(`%0`#``,``0`YCWP`
  1294. XM``````````````````````4`.8^H_____P,```4`.8^,```````````!$P``
  1295. XM`1,`%@```!8```````````````@``P```#F/T``YC^@`.8_X`#F0"``YD!@`
  1296. XM.9`H````"4)O<F1E<G,R``````$``````0`````#+3$``````0`````!``$`
  1297. XM`0``.P`5```````YD%@`````````%U-U<F4@>6]U('=A;G0@=&\@455)5#\`
  1298. XM``(0#@`EAD``!0`%_____P``````/*@8```````````````````````C`#DU
  1299. XMD```````"4]P=&EO;G-?```!`#0`.@(:`(<`!0`%_____P````U%9&ET($]P
  1300. XM=&EO;G,``#F5:``)``T`,@`*```!`P`!`#F4;```````.928````````````
  1301. XM```YE+C_____`P``!0`YE'P````````````S````,P`+````"P``````````
  1302. XM`0`!```%``(``````#DT8``````````&0V]L;W(`````"@```0$`.9!X`#F4
  1303. XMX``YE/``.94``#F52``YE5@````!``````$``````0`````*1T%$3T-/3$]2
  1304. XM``````$``````0``.9:0`$$`#0`^``H```$#``$`.964```````YE<``````
  1305. XM`````````#F5\/____\#```%`#F5I````````````#\````_``L````+````
  1306. XM```````!``$```,``@``````.97@``````````A#;VYF:7)M``````H```$!
  1307. XM`#F6&``YEB@`.98X`#F62``YEG``.9:``````0`````!``````$`````#$=!
  1308. XM1$]#3TY&25)-``````$``````0``.9>P`(4`#0!$``H```$#``$`.9:\````
  1309. XM```YEN@``````````````#F7(/____\#```%`#F6S````````````$4```!%
  1310. XM``L````+```````````!``$```(``@``````.9<(``````````E$:7-C;&]S
  1311. XM90`````*```!`0`YET@`.9=8`#F7:``YEW@`.9>0`#F7H`````$``````0``
  1312. XM```!``````U'041/1$E30TQ/4T4``````0`````!```YF,@`PP`;`#4`"@``
  1313. XM`0,``0`YE]P``````#F8"```````````````.9@X_____P,```4`.9?L````
  1314. XM````````-@```#8`"P````L```````````$``0```@`"```````YF"@`````
  1315. XM````!T9I>&EN=@`````*```!`0`YF&``.9AP`#F8@``YF)``.9BH`#F8N```
  1316. XM``$``````0`````!``````M'041/1DE824Y6``````$``````0``.9G@`(P`
  1317. XM&P`Q``H```$#``$`.9CT```````YF2```````````````#F94/____\#```%
  1318. XM`#F9!````````````#(````R``L````+```````````!``$```0``@``````
  1319. XM.9E```````````9&;'5S:``````*```!`0`YF7@`.9F(`#F9F``YF:@`.9G`
  1320. XM`#F9T`````$``````0`````!``````I'041/1DQ54T@``````0`````!```\
  1321. XMAF@`8``;`"4`"@```0,``0`YF@P``````#F:.```````````````.9IH____
  1322. XM_P,```4`.9H<````````````)@```"8`"P````L```````````$``0```P`"
  1323. XM```````YFE@`````````!4AE;'``````"@```0$`.9J0`#F:H``YFK``.9K`
  1324. XM`#R&2``\AE@````!``````$``````0`````)1T%$3TA%3%```````0`````!
  1325. XM```\AX``4``I`#T`"@```0,``0`\AI0``````#R&P```````````````/(;P
  1326. XM_____P,```4`/(:D````````````/@```#X`"P````L```````````$``0``
  1327. XM`@`"```````\AN``````````"$EG;FEN='(`````"@```0$`/(<8`#R'*``\
  1328. XMAS@`/(=(`#R'8``\AW`````!``````$``````0`````,1T%$3TE'3DE.5%(`
  1329. XM`````0`````!```\B)@`-0`;`"4`"@```0,``0`\AZP``````#R'V```````
  1330. XM````````/(@(_____P,```4`/(>\````````````)@```"8`"P````L`````
  1331. XM``````$``0```P`"```````\A_@`````````!4YE=W,`````"@```0$`/(@P
  1332. XM`#R(0``\B%``/(A@`#R(>``\B(@````!``````$``````0`````)1T%$3TY%
  1333. XM5U,``````0`````!```\B;@`E``I`%4`"@"``0,``0`\B,0``````#R(\```
  1334. XM````````````/(DH_____P,```4`/(C4````````````5@```%8`"P````L`
  1335. XM``````````$``0```P`"```````\B1``````````"TYU;6)E<B!0860`````
  1336. XM"@```0$`/(E0`#R)8``\B7``/(F``#R)F``\B:@````!``````$``````0``
  1337. XM```.1T%$3TY534)%4E!!1``````!``````$``#R*T`%=`!L`)``*```!`P`!
  1338. XM`#R)Y```````/(H0```````````````\BD#_____`P``!0`\B?0`````````
  1339. XM```E````)0`+````"P```````````0`!```#``(``````#R*,``````````%
  1340. XM3G5L;``````*```!`0`\BF@`/(IX`#R*B``\BI@`/(JP`#R*P`````$`````
  1341. XM`0`````!``````E'041/3E5,3``````!``````$``#R+Z``)`"D`00`*`(`!
  1342. XM`P`!`#R*_```````/(LH```````````````\BUC_____`P``!0`\BPP`````
  1343. XM``````!"````0@`+````"P```````````0`!```%``(``````#R+2```````
  1344. XM```(4&EC:R!5<``````*```!`0`\BX``/(N0`#R+H``\B[``/(O(`#R+V```
  1345. XM``$``````0`````!``````M'041/4$E#2U50``````$``````0``/(T(`,X`
  1346. XM#0!O``H```$#``$`/(P4```````\C$```````````````#R,>/____\#```%
  1347. XM`#R,)````````````'````!P``L````+```````````!``$```,``@``````
  1348. XM/(Q@``````````Y297-T($]N(%-P86-E``````H```$!`#R,H``\C+``/(S`
  1349. XM`#R,T``\C.@`/(SX`````0`````!``````$`````$$=!1$]215-43TY34$%#
  1350. XM10`````!``````$``#R.(`%#``T`-@`*```!`P`!`#R--```````/(U@````
  1351. XM```````````\C9#_____`P``!0`\C40````````````W````-P`+````"P``
  1352. XM`````````0`!```$``(``````#R-@``````````'4VEL96YT``````H```$!
  1353. XM`#R-N``\C<@`/(W8`#R-Z``\C@``/(X0`````0`````!``````$`````"T=!
  1354. XM1$]324Q%3E0``````0`````!```\CT``[P`I`$4`"@"``0,``0`\CDP`````
  1355. XM`#R.>```````````````/(ZP_____P,```4`/(Y<````````````1@```$8`
  1356. XM"P````L```````````$``0```@`"```````\CI@`````````"5-A9F4@4&5T
  1357. XM``````H```$!`#R.V``\CN@`/([X`#R/"``\CR``/(\P`````0`````!````
  1358. XM``$`````#$=!1$]3049%4$54``````$``````0``/)!@`3H`*0!.``H```$#
  1359. XM``$`/(]L```````\CY@``````````````#R/T/____\#```%`#R/?```````
  1360. XM`````$\```!/``L````+```````````!``$```,``@``````/(^X````````
  1361. XM``I3;W)T(%!A8VL`````"@```0$`/(_X`#R0"``\D!@`/)`H`#R00``\D%``
  1362. XM```!``````$``````0`````-1T%$3U-/4E1004-+``````$``````0``/)%X
  1363. XM`>(`*0`O``H`@`$#``$`/)",```````\D+@``````````````#R0Z/____\#
  1364. XM```%`#R0G````````````#`````P``L````+```````````!``$```,``@``
  1365. XM````/)#8``````````93;W5N9``````*```!`0`\D1``/)$@`#R1,``\D4``
  1366. XM/)%8`#R1:`````$``````0`````!``````I'041/4T]53D0``````0`````!
  1367. XM```\DI@!C@`I`$T`"@```0,``0`\D:0``````#R1T```````````````/)((
  1368. XM_____P,```4`/)&T````````````3@```$X`"P````L```````````$``0``
  1369. XM`P`"```````\D?``````````"E-T86YD($]U=``````*```!`0`\DC``/))`
  1370. XM`#R24``\DF``/))X`#R2B`````$``````0`````!``````U'041/4U1!3D1/
  1371. XM550``````0`````!```\D[``"0`;`"8`"@```0,``0`\DL0``````#R2\```
  1372. XM````````````/),@_____P,```4`/)+4````````````)P```"<`"P````L`
  1373. XM``````````$``0```@`"```````\DQ``````````!51I;64`````"@```0$`
  1374. XM/)-(`#R36``\DV@`/)-X`#R3D``\DZ`````!``````$``````0`````)1T%$
  1375. XM3U1)344``````0`````!```\E-`!?P`-`%4`"@```0,``0`\D]P``````#R4
  1376. XM"```````````````/)1`_____P,```4`/)/L````````````5@```%8`"P``
  1377. XM``L```````````$``0```@`"```````\E"@`````````"U1O;6(@4W1O;F4`
  1378. XM````"@```0$`/)1H`#R4>``\E(@`/)28`#R4L``\E,`````!``````$`````
  1379. XM`0`````.1T%$3U1/34)35$].10`````!``````$``#R5Z`&'`!L`/``*```!
  1380. XM`P`!`#R4_```````/)4H```````````````\E5C_____`P``!0`\E0P`````
  1381. XM```````]````/0`+````"P```````````0`!```"``(``````#R52```````
  1382. XM```(5F5R8F]S90`````*```!`0`\E8``/)60`#R5H``\E;``/)7(`#R5V```
  1383. XM``$``````0`````!``````Q'041/5D520D]310`````!``````$``#R76`#3
  1384. XM`$4`U@`)```"`P`$`#R6%``````````````````\EI`````\EL#_____`P``
  1385. XM!0`\EB0```````````#7````UP`*````"@``````````````1@`@("`@("`@
  1386. XM("`@("`@(````&1E=G,Z<'<R+6-O;F9I9W5R871I;VX`4V5L96-T('1H92!G
  1387. XM861G970@=&\@;6]V92X`5`````$*```"`0`\EN@`/)<``#R7$``\ER``/)<X
  1388. XM`#R72`````I086-K3W)D97(``````0`````!``````Y'041/4$%#2T]21$52
  1389. XM``````$``````0``/)C``-,`4@#6``D```(#``0`/)>$````````````````
  1390. XM`#R8`````#R8,/____\#```%`#R7E````````````-<```#7``H````*````
  1391. XM``````````!&```@("`@("`@("`@("`@````9&5V<SIP=S(M8V]N9FEG=7)A
  1392. XM=&EO;@!396QE8W0@=&AE(&=A9&=E="!T;R!M;W9E+@!4`````0H```(!`#R8
  1393. XM6``\F&@`/)AX`#R8B``\F*``/)BP````"$-A=$YA;64``````0`````!````
  1394. XM``Q'041/0T%43D%-10`````!``````$``#R:*`#3`%\`U@`)```"`P`$`#R8
  1395. XM[``````````````````\F6@````\F9C_____`P``!0`\F/P```````````#7
  1396. XM````UP`*````"@``````````````1@`@("`@("`@("`@("`@(````&1E=G,Z
  1397. XM<'<R+6-O;F9I9W5R871I;VX`4V5L96-T('1H92!G861G970@=&\@;6]V92X`
  1398. XM5`````$*```"`0`\F<``/)G0`#R9X``\F?``/)H(`#R:&`````A$;V=.86UE
  1399. XM``````$``````0`````,1T%$3T1/1TY!344``````0`````!```\FY``TP!L
  1400. XM`-8`"0```@,`!``\FE0`````````````````/)K0````/)L`_____P,```4`
  1401. XM/)ID````````````UP```-<`"@````H``````````````$8`("`@("`@("`@
  1402. XM("`@("````!D979S.G!W,BUC;VYF:6=U<F%T:6]N`%-E;&5C="!T:&4@9V%D
  1403. XM9V5T('1O(&UO=F4N`%0````!"@```@$`/)LH`#R;.``\FT@`/)M8`#R;<``\
  1404. XMFX`````&1G)U:70``````0`````!``````I'041/1E)5250``````0`````!
  1405. XM```\G*@!VP`-`#8`"@```0,``0`\F[P``````#R;Z```````````````/)P8
  1406. XM_____P,```4`/)O,````````````-P```#<`"P````L```````````$``0``
  1407. XM`P`"```````\G`@`````````!T9E;6%L90`````*```!`0`\G$``/)Q0`#R<
  1408. XM8``\G'``/)R(`#R<F`````$``````0`````!``````M'041/1D5-04Q%````
  1409. XM``$``````0``/)X0`-,`>0#6``D```(#``0`/)S4`````````````````#R=
  1410. XM4````#R=@/____\#```%`#R<Y````````````-<```#7``H````*````````
  1411. XM``````!&`"`@("`@("`@("`@("`@````9&5V<SIP=S(M8V]N9FEG=7)A=&EO
  1412. XM;@!396QE8W0@=&AE(&=A9&=E="!T;R!M;W9E+@!4`````0H```(!`#R=J``\
  1413. XMG;@`/)W(`#R=V``\G?``/)X`````"$]B:F5C=',``````0`````!``````Q'
  1414. XM041/3T)*14-44P`````!``````$``#R?,`'*`!L`1P`*```!`P`!`#R>/```
  1415. XM````/)YH```````````````\GJ#_____`P``!0`\GDP```````````!(````
  1416. XM2``+````"P```````````0`!```#``(``````#R>B``````````)07-K(%-A
  1417. XM=F4`````"@```0$`/)[(`#R>V``\GN@`/)[X`#R?$``\GR`````!``````$`
  1418. XM`````0`````,1T%$3T%32U-!5D4``````0`````!```\H$@!V@!X`#<`"@``
  1419. XM``,``0`\GUP``````#R?B```````````````/)^X_____P$```4`/)]L````
  1420. XM````````.````#@`"P````L```````````$``0```P`"```````\GZ@`````
  1421. XM````!T-!3D-%3``````*`````0`\G^``/)_P`#R@```\H!``/*`H`#R@.```
  1422. XM``$``````0`````!``````M'041/0T%.0T5,``````$``````0``/*%@``H`
  1423. XM>``W``H````#``$`/*!T```````\H*```````````````#R@T/____\!```%
  1424. XM`#R@A````````````#@````X``L````+```````````!``$```L``@``````
  1425. XM/*#```````````5/2T%9``````H````!`#R@^``\H0@`/*$8`#RA*``\H4``
  1426. XM/*%0`````0`````!``````$`````"4=!1$]/2T%9``````$``````0``/**`
  1427. XM``D`-P!R``H`@`$#``$`/*&,```````\H;@``````````````#RA\/____\#
  1428. XM```%`#RAG````````````',```!S``L````+```````````!``$```4``@``
  1429. XM````/*'8``````````Y(:6=H;&EG:'0@4&5T``````H```$!`#RB&``\HB@`
  1430. XM/*(X`#RB2``\HF``/*)P`````0`````!``````$`````#D=!1$](24Q)5$50
  1431. XM150``````0`````!```\HY@`\``W`#L`"@```0,``0`\HJP``````#RBV```
  1432. XM````````````/*,(_____P,```4`/**\````````````/````#P`"P````L`
  1433. XM``````````$``0``!0`"```````\HO@`````````!TQE9V%C>0`````*`(`!
  1434. XM`0`\HS``/*-``#RC4``\HV``/*-X`#RCB`````$``````0`````!``````M'
  1435. XM041/3$5'04-9``````$``````0``/*2X`((`-P!H``H```$#``$`/*/$````
  1436. XM```\H_```````````````#RD*/____\#```%`#RCU````````````&D```!I
  1437. XM``L````+```````````!``$```4``@``````/*00``````````U,:70@0V]R
  1438. XM<FED;W(`````"@```0$`/*10`#RD8``\I'``/*2``#RDF``\I*@````!````
  1439. XM``$``````0`````01T%$3TQ)5$-/4E))1$]2``````$``````0``/*78`3(`
  1440. XM-P!_``H```$#``$`/*3D```````\I1```````````````#RE2/____\#```%
  1441. XM`#RD]````````````(````"```L````+```````````!``$```4``@``````
  1442. XM/*4P`````````!!3:&]W($5X<&5R:65N8V4`````"@```0$`/*5P`#RE@``\
  1443. XMI9``/*6@`#REN``\I<@````!``````$``````0`````,1T%$3U-(3U=%6%``
  1444. XM`````0`````!```\IO@!MP`W`%H`"@```0,``0`\I@0``````#RF,```````
  1445. XM````````/*9H_____P,```4`/*84````````````6P```%L`"P````L`````
  1446. XM``````$``0``!0`"```````\IE``````````"U-H;W<@4V-O<F4`````"@``
  1447. XM`0$`/*:0`#RFH``\IK``/*;``#RFV``\IN@````!``````$``````0`````.
  1448. XM1T%$3U-(3U=30T]210`````!``````$```````#]`!L`6@`*```!`P`!`#RG
  1449. XM)```````/*=0```````````````\IXC_____`P``!0`\IS0```````````!;
  1450. XM````6P`+````"P```````````0`!```%``(``````#RG<``````````+0VAE
  1451. XM8VMP;VEN=``````*`(`!`0`\I[``/*?``#RGT``\I^``/*?X`#RH"`````$`
  1452. XM`````0`````!``````U'041/0TA+4$])3E0``````0`````!``,``0``=@!&
  1453. XM```````\J#@`/*A0````#%!A8VL@3W)D97(Z``,``0``A@!3```````\J'``
  1454. XM/*B(````"D-A="!.86UE.@`#``$``(8`8```````/*BH`#RHP`````I$;V<@
  1455. XM3F%M93H``P`!``">`&T``````#RHX``\J/`````'1G)U:70Z``,``0``C@!Z
  1456. XM```````\J1``````````"4]B:F5C=',Z```"$`X`)`)```4`!?____\`````
  1457. XM`#R\0```````````````````````"``\K<````````9#;VYF7P```0!^`#P!
  1458. XMD@!R``4`!?____\````8161I="!'86UE($-O;F9I9W5R871I;VX``#RQ"`!1
  1459. XM`!P!-P`)`````P`$`#ROC``````````````````\KL@````\L(C_____`P``
  1460. XM!0`\KYP```````````$X```!.``*````"@``````````````R``@("`@("`@
  1461. XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@`````````````/__`P$"
  1462. XM````````+*S4`"VL6```````*U3,``````<X`"IO<````$(`*G`(`,D`#P!H
  1463. XM``@`4@``````*F_B`````````````/__`P$"````````+*S4`"VZ"```````
  1464. XM*U3,``````CH`"ION````$(`*G!0`,D`%P!H``@`4@``````*G`J````````
  1465. XM`````/__`P$"```````!"@````$`/*[X`#RPL``\L,``/+#0`#RPZ``\L/@`
  1466. XM```+4W1R2&%C:V1I<@`````!``````$`````#D=!1%-44DA!0TM$25(`````
  1467. XM`0`````!```\LO``40`J`3<`"0````,`!``\L30`````````````````/+(P
  1468. XM````/+)@_____P,```4`/+%$```````````!.````3@`"@````H`````````
  1469. XM`````,@`("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(```
  1470. XM``````````#__P,!`@```````"RLU``MK%@``````"M4S``````'.``J;W``
  1471. XM``!"`"IP"`#)``\`:``(`%(``````"IOX@````````````#__P,!`@``````
  1472. XM`"RLU``MN@@``````"M4S``````(Z``J;[@```!"`"IP4`#)`!<`:``(`%(`
  1473. XM`````"IP*@````````````#__P,!`@```````0H````!`#RRB``\LI@`/+*H
  1474. XM`#RRN``\LM``/++@````"%-T<E!E;G,``````0`````!``````M'04135%)0
  1475. XM14Y3``````$``````0``/+38`%$`#@$V``D````#``0`/+,<````````````
  1476. XM`````#RT&````#RT2/____\#```%`#RS+````````````3<```$W``H````*
  1477. XM``````````````#(`"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
  1478. XM("`@("``````````````__\#`0(````````LK-0`+:Q8```````K5,P`````
  1479. XM!S@`*F]P````0@`J<`@`R0`/`&@`"`!2```````J;^(`````````````__\#
  1480. XM`0(````````LK-0`+;H(```````K5,P`````".@`*F^X````0@`J<%``R0`7
  1481. XM`&@`"`!2```````J<"H`````````````__\#`0(```````$*`````0`\M'``
  1482. XM/+2``#RTD``\M*``/+2X`#RTR`````A3=')0871H``````$``````0`````+
  1483. XM1T%$4U124$%42``````!``````$``#RVR`!1`#@!-P`)`````P`$`#RU!```
  1484. XM```````````````\M@`````\MC#_____`P``!0`\M10```````````$X```!
  1485. XM.``*````"@``````````````R``@("`@("`@("`@("`@("`@("`@("`@("`@
  1486. XM("`@("`@("`@("`@`````````````/__`P$"````````+*S4`"VL6```````
  1487. XM*U3,``````<X`"IO<````$(`*G`(`,D`#P!H``@`4@``````*F_B````````
  1488. XM`````/__`P$"````````+*S4`"VZ"```````*U3,``````CH`"ION````$(`
  1489. XM*G!0`,D`%P!H``@`4@``````*G`J`````````````/__`P$"```````!"@``
  1490. XM``$`/+98`#RV<``\MH``/+:0`#RVJ``\MK@````*4W1R3&5V96QS``````$`
  1491. XM`````0`````-1T%$4U123$5614Q3``````$``````0``/+BP`%$`1@$W``D`
  1492. XM```#``0`/+;T`````````````````#RW\````#RX(/____\#```%`#RW!```
  1493. XM`````````3@```$X``H````*``````````````#(`"`@("`@("`@("`@("`@
  1494. XM("`@("`@("`@("`@("`@("`@("`@("``````````````__\#`0(````````L
  1495. XMK-0`+:Q8```````K5,P`````!S@`*F]P````0@`J<`@`R0`/`&@`"`!2````
  1496. XM```J;^(`````````````__\#`0(````````LK-0`+;H(```````K5,P`````
  1497. XM".@`*F^X````0@`J<%``R0`7`&@`"`!2```````J<"H`````````````__\#
  1498. XM`0(```````$*`````0`\N$@`/+A8`#RX:``\N'@`/+B0`#RXH`````A3=')3
  1499. XM879E``````$``````0`````+1T%$4U124T%610`````!``````$``#RZ$`"7
  1500. XM`&0`\0`)```"`P`$`#RXW``````````````````\N4@````\N7C_____`0``
  1501. XM!0`\N.P```````````#R````\@`*````"@``````````````,DYE=&AA8VLZ
  1502. XM3F5T2&%C:RYC;F8`("`@("`@("`@(``````&=@`Y'_@`.,)N```````````!
  1503. XM"@```@$`/+F@`#RYN``\N<@`/+G8`#RY\``\N@`````+0V]N9FEG3F%M90``
  1504. XM```!``````$`````#$=!1$-/3D9.04U%``````$``````0``/+LH``D`50`S
  1505. XM``H````#``$`/+H\```````\NF@``````````````#RZF/____\"```%`#RZ
  1506. XM3````````````#0````T``L````+```````````!``$```H``@``````/+J(
  1507. XM``````````5,;V%D``````H````!`#RZP``\NM``/+K@`#RZ\``\NP@`/+L8
  1508. XM`````0`````!``````$`````#$=!1$-/3D9,3T%$``````$``````0``````
  1509. XM`$D`50`S``H````#``$`/+M4```````\NX```````````````#R[L/____\"
  1510. XM```%`#R[9````````````#0````T``L````+```````````!``$```H``@``
  1511. XM````/+N@``````````53879E``````H!```!`#R[V``\N^@`/+OX`#R\"``\
  1512. XMO"``/+PP`````0`````!``````$`````#$=!1$-/3D93059%``````$`````
  1513. XM`0`#``$``"4`$```````/+Q@`#R\<`````90871H.@`#``$``!``'@``````
  1514. XM/+R0`#R\J`````E(86-K9&ER.@`#``$``"4`+```````/+S(`#R\V`````90
  1515. XM96YS.@`#``$``!<`.@``````/+SX`#R]"`````A,979E;',Z``,``0``"0!(
  1516. XM```````\O2@`/+U`````"E-A=F4@1&ER.@`!``$```H`90``````/+U@````
  1517. XM`````!)#;VYF:6<@1FEL92!.86UE.@```A`.`"0"0``%``7_____````````
  1518. XM``````````````````````````(`/*Y8```````%4W1R7P```0`W`#P"#@`?
  1519. XM``4`!?____\````14W1R:6YG(%)E<75E<W1E<@``/,58`$T`#P&V``H```(#
  1520. XM``0`/,*D`````````````````#S$,````#S`B/____\#```%`#S"M```````
  1521. XM`````;<```&W``L````+``````````````!D`"`@("`@("`@("`@("`@("`@
  1522. XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
  1523. XM("`@("`@("`@(#@`````>*H`*>)`````0@`IXM@`U``/`!@``````0H```(!
  1524. XM`#R]@``\PT``/,-0`#S$8``\Q'``/,2`````!U-T<FEN9P`````!``````$`
  1525. XM`````RTQ``````$``````0````````D`#P`X``H````#``$`/,6$```````\
  1526. XMQ)```````````````#S%L/____\#```%`#S%E````````````#D````Y``L`
  1527. XM```+```````````#``$```0``@``````/,2P``````````=#86YC96P`````
  1528. XM"@````$`/,3``#S%V``\Q>@`/,7X`#S&$``\QB`````!``````$``````0``
  1529. XM```-1T%$4U120T%.0T5,``````$``````0```A`.`"0"0``%``7_____````
  1530. XM```\UI@```````````````````````D`.99@```````&26YF;U\```$`*``\
  1531. XM`BL`7``%``7_____````$4=A;64@26YF;W)M871I;VX``#S#F`!3`"X!S@`*
  1532. XM``,``P`!`#RN)``````````````````````````\O_#_____`P``!0`\KC0`
  1533. XM``````````'/```!SP`+````"P``````````````"``#````/*DH`#RL0``\
  1534. XMK:@`/*]0`#S`&``\P@@````(0V]M;65N=``````!``````$``````RTQ````
  1535. XM``$``````0``/,B8`)0`#P#$``L``P`#``$`/,/$`````````````````#'E
  1536. XML````#S"&/____\#```%`#S#U````````````,4```#%``P````,````````
  1537. XM```````(``,````\PD``/,/P`#S$T``\Q.``/,3P`#S%``````=0;&%Y97(`
  1538. XM`````0`````!``````,M,0`````!``````$``#S+>`"4`!X`Q``+``,``P`!
  1539. XM`#S(Q``````````````````````````\QFC_____`P``!0`\R-0`````````
  1540. XM``#%````Q0`,````#```````````````"``#````/,4H`#S%.``\R2@`/,DX
  1541. XM`#S)2``\R5@````&0VQA<W,``````0`````!``````,M,0`````!``````$`
  1542. XM`#S1,`!S`$P!K0`)`````P`$`#S+I``````````````````\R6@````\R]#_
  1543. XM____`P``!0`\R[0```````````&N```!K@`*````"@``````````````R``@
  1544. XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
  1545. XM("`@("`@("`@("`@("`@("``(P`0`3P`40``````````````````````+EZ@
  1546. XM````0@`N=$@````8`-@`"`!6```````N="(`````0P``````__\#`0(`````
  1547. XM```O%OP`+R?Z```````O@O0````ABC@`+G/X````0@`N=@@````@`-@`"`!2
  1548. XM```````N=&H````````````````!"@````$`/,F8`#S+^``\S`@`/,P8`#S,
  1549. XM,``\S$`````*5&]O;%1Y<&5S``````$``````0`````-1T%$5$]/3%194$53
  1550. XM``````$``````0``/-'``&$`2@`-``8````#``$`/-%<````````````````
  1551. XM`````````#S/*/____\#```%`#S1;`````````````X````.``<````'````
  1552. XM```````````*`````0`\S%``/,]0`#S/8``\T8@`/-&@`#S1L`````=4;V]L
  1553. XM57```````0`````!``````I'04143T],55```````0`````!```\TP``80!1
  1554. XM``T`!@````,``0`\T>P`````````````````````````/-(8_____P,```4`
  1555. XM/-'\````````````#@````X`!P````<```````````````H````!`#S2D``\
  1556. XMTJ@`/-*X`#S2R``\TN``/-+P````"51O;VQ$;W=N``````$``````0`````,
  1557. XM1T%$5$]/3$1/5TX``````0`````!```\U&@!80`/`,``&@````,``0`\TRP`
  1558. XM`````#S36```````````````/-/H_____P(```4`/-,\````````````P0``
  1559. XM`,$`&P```!L```````````$``0``$``)```````\TW@`````````%45D:70@
  1560. XM1V%M92!$969I;FET:6]N`````!(````!`#S3F``\U!``/-0@`#S4,``\U$@`
  1561. XM/-18````"$5D:71$968``````0`````!``````E'041%1$1%1@`````!````
  1562. XM``$``#S5@`!S`#T`40`*`````P`!`#S4E```````/-3````````````````\
  1563. XMU/#_____`P``!0`\U*0```````````!2````4@`+````"P```````````P`!
  1564. XM```=``$``````#S4X``````````$061D``````H````!`#S5&``\U2@`/-4X
  1565. XM`#S52``\U6``/-5P`````0`````!``````$`````"T=!1$%$1%1/3TP`````
  1566. XM`0`````!````````T``]`%$`"@````,``0`\U:P``````#S5V```````````
  1567. XM````/-8(_____P,```4`/-6\````````````4@```%(`"P````L`````````
  1568. XM``,``0``$@`!```````\U?@`````````!T1E;&5T90`````*`````0`\UC``
  1569. XM/-9``#S64``\UF``/-9X`#S6B`````$``````0`````!``````M'041$14Q4
  1570. XM3T],``````$``````0`#``$```T`,0``````/-:X`#S6T`````E#;VUM96YT
  1571. XM.@`#``$``"T`$P``````/-;P`#S7"`````U0;&%Y97(@3F%M93H``P`!```-
  1572. XM`"(``````#S7*``\UT@````10VAA<F%C=&5R($-L87-S.@`#``$```T`3```
  1573. XM````/-=H``````````M4;V]L5'EP97,Z```"$`X`(`)```4`!?____\`````
  1574. XM`#S="````````````````````````0`\O[````````=(96QP,5\```$`A@`\
  1575. XM`8$`,P`%``7_____````&$AE;'`@9F]R($=A;64@4V5L96-T:6]N````````
  1576. XM#``B`"\`#`````,``0`\VGP``````#S<>`````````````4`/-R8_____P$`
  1577. XM``4`/-J,````````````,````#``#0````T```````````$``0``!P`"````
  1578. XM```\P:``````````!4]K87D`````$@````$`/,5(`#S7@``\W,``/-S0`#S<
  1579. XMZ``\W/@````!``````$``````0`````,1T%$2$5,4$]+05D``````0`````!
  1580. XM``,``0``"0`-```````\W2@`/.$(````+D-L:6-K(&]N($YE=T=A;64@1V%D
  1581. XM9V5T(&]R(&$@4V%V960@1V%M92!T=VEC90`#``$```H`%@``````/.$H````
  1582. XM`````"]T;R!S=&%R="!A(&YE=R!G86UE(&]R('1O(')E<W5M92!A('-A=F5D
  1583. XM(&=A;64N```"$`X`(`)```4`!?____\``````#S0<```````````````````
  1584. XM`````0`\OY@```````=(96QP,E\```$`B``\`70`.@`%``7_____````&TAE
  1585. XM;'`@9F]R($=A;64@36%N:7!U;&%T:6]N````````$0`J`"\`"@````,``0`\
  1586. XMV<0``````#S,P`````````````0`/,^`_____P$```4`/-G4````````````
  1587. XM,````#``"P````L```````````$``0``!P`"```````\PX``````````!4]K
  1588. XM87D`````$@````$`/,M``#S,8``\S@@`/,^H`#S.*``\S\`````!``````$`
  1589. XM`````0`````,1T%$2$5,4$]+05D``````0`````!``,``0``#P`-```````\
  1590. XMTD``/-#0````*U5S92!-96YU(&)U='1O;B!T;R!S96QE8W0@;W!E<F%T:6]N
  1591. XM(&]N('1H90`#``$```\`%@``````/-L0`#S3N````"QS96QE8W1E9"!G86UE
  1592. XM+"!O<B!D;W5B;&4@8VQI8VL@;VX@82!G86UE('1O``,``0``#P`?```````\
  1593. XMW8@`````````%W)E<W5M92!T:&4@<V%V960@9V%M92X```(0#@`@`D``!0`%
  1594. XM_____P``````/.TH```````````````````````!`#S1(```````!T%B;W5T
  1595. XM7P```0!9`#P!OP!3``4`!?____\````<06)O=70@=&AE($YE=$AA8VL@5V]R
  1596. XM:T)E;F-H````````HP!$`&T`"@````,``0`\[MP``````#SJR```````````
  1597. XM``4`/.P(_____P$```4`/.[L````````````;@```&X`"P````L`````````
  1598. XM``$``0``*``"```````\XK@`````````!4]K87D`````$@````$`/.JH`#SL
  1599. XM8``\['``/.RP`#SLR``\[-@````!``````$``````0`````,1T%$2$5,4$]+
  1600. XM05D``````0`````!``,``0``"``-```````\[C@`/.V0````)E1H92!.971(
  1601. XM86-K(%=O<FM"96YC:"!W87,@9&5S:6=N960@8GD``@`!``$V``T``````#SL
  1602. XMZ``\[>@````+2V5N($QO<F)E<@`#``$``8P`#0``````/.U(`#SN:`````1A
  1603. XM;F0``@`!```(`!8``````#SO(``\[S@````/1W)E9V<@5V]N9&5R;'D``P`!
  1604. XM``!X`!8``````#SM<``\[U@````"+@`#``$``(<`%@``````/.]X`#SOJ```
  1605. XM`"=4:&4@<')O9W)A;6UI;F<@=V%S('-T87)T960@8GD@2V5N(&%N9``#``$`
  1606. XM``@`'P``````/._(`#SOZ````!5F:6YI<VAE9"!B>2!'<F5G9RXN+@`"``$`
  1607. XM`!0`+P``````//`(`#SP6````#-(86-K5T(@:7,@8V]P>7)I9VAT($=R96=G
  1608. XM(%=O;F1E<FQY(&%N9"!+96X@3&]R8F5R+``"``$```H`.```````//)X````
  1609. XM`````#8Q.3DR('-E92!.971(86-K(&QI8V5N<V4@9F]R(&1E=&%I;',@86YD
  1610. XM(&QI;6ET871I;VYS(0```A`.`&`"8``%``7_____````````````````````
  1611. XM``````````````,`/-#P```````'2&5L<#-?```!`$P`"P'N`+T`!0`%____
  1612. XM_P```"!(96QP(&9O<B!.971H86-K(%=O<FM"96YC:"!6,RXQ```_1*@`#`"M
  1613. XM`"\`"@````,``0`_1'P``````#SC4`````````````,`/.3`_____P(```4`
  1614. XM/T2,````````````,````#``"P````L```````````$``0``"``"```````\
  1615. XMT1``````````!4925T0`````$@````,`/-)X`#S3J``\W!@`/.<(`#S=>``\
  1616. XMWD`````!``````$``````0`````,1T%$2$5,4$925T0``````0`````!```_
  1617. XM10`!L@"M`"\`"@````,``0`_1-0``````#SH2`````````````0`/.DP____
  1618. XM_P(```4`/T3D````````````,````#``"P````L```````````$``0``"``"
  1619. XM```````\WM@`````````!4)+5T0`````$@````,`/-]@`#S@6``\XS``//(H
  1620. XM`#SC<``\Y.@````!``````$``````0`````,1T%$2$5,4$)+5T0``````0``
  1621. XM```!````````P@"P`"$`"``#``,``0`\\D``````````````````````__\`
  1622. XM/TM0_____P,```4`/T4\````````````(@```"(`"0````D``````#SR0/]`
  1623. XM__D!```"`#SG(``````````(``````'I```````)``,``0`\\,``//)8`#SR
  1624. XM:``_15@`/TMX`#]+B`````$``````0`````!``````,M,0`````!``````$`
  1625. XM``(0#@`D@T``!0`%_____P`_6V@`/W@@```````````````````````'`#RM
  1626. XM"```````!D1E9G-?```!`*0`/`%``$8`!0`%_____P```!U%9&ET($1E9F%U
  1627. XM;'0@1V%M92!$969I;FET:6]N```_7W``A``.`+,`"0````,`!``\VX0`````
  1628. XM````````````/,R(````/,_0_____P,```4`/-N4````````````M````+0`
  1629. XM"@````H``````````````#)#=71.2&%C:P`@("`@("`H`"W\,``MTB@`B``L
  1630. XM`)(`2@```````````````````````````1(````!`#RM&``\KS@`/,-@`#S0
  1631. XM4``\PW``/,Y(````"U!L87EE<DYA;64``````0`````!``````Q'041#2$%2
  1632. XM3D%-10`````!``````$``#]?R`"$`"@`LP`*``,``P`!`#]?G```````/-O8
  1633. XM````````````!``\W@#_____`P``!0`_7ZP```````````"T````M``+````
  1634. XM"P```````````0`!```!``(``````#S;^``````````-07)C:&5O;&]G:7-T
  1635. XM``````@``P```#S>*``\WG@`/-Z(`#S>P``\WN@`/-\@````"U!L87EE<E1Y
  1636. XM<&4``````0`````!``````,M,0`````!``````$``#]@(``,`#<`,0`*````
  1637. XM`P`!`#]?]```````/-\P````````````!0`_5(C_____`0``!0`_8`0`````
  1638. XM```````R````,@`+````"P```````````0`!```(``(``````#S?4```````
  1639. XM```%3&]A9``````*`````0`\\1``//%@`#SR&``_1\@`//,P`#SSV`````$`
  1640. XM`````0`````!``````M'041$149,3T%$``````$``````0``/V&(`0P`-P`K
  1641. XM``H````#``$`/V!,```````_5D`````````````&`#]76/____\!```%`#]@
  1642. XM7````````````"P````L``L````+```````````!``$```4``@``````//00
  1643. XM``````````53879E``````H````!`#STH``\]-``//4``#]8,``\]H@`/T=(
  1644. XM`````0`````!``````$`````"T=!1$1%1E-!5D4``````0`````!```_8>``
  1645. XM;P`W`&P`"@````,``0`_8;0``````#]8R`````````````<`/UF(_____P$`
  1646. XM``4`/V'$````````````;0```&T`"P````L```````````$``0``!@`"````
  1647. XM```_61``````````#45D:70@3W!T:6]N<P`````*`````0`_1V@`/T>(`#]'
  1648. XMJ``_6=@`/TO0`#]00`````$``````0`````!``````U'041%1$]05$E/3E,`
  1649. XM`````0`````!````````A``;`+,`"0````,`!``_8@P`````````````````
  1650. XM/UPP````/UIX_____P,```4`/V(<````````````M````+0`"@````H`````
  1651. XM`````````#)#=71.2&%C:P`@("`@("`H`"W\,``MTB@`B``L`)(`2@``````
  1652. XM`````````````````````1(````!`#]:R``_62@`/UGP`#];&``_6N``/ULP
  1653. XM````#$1E9F%U;'1.86UE``````$``````0`````+1T%$3U541DE,10`````!
  1654. XM``````$``#]<8`$0`$8````'````/UVX``````````I#:&%R86-T97(``#];
  1655. XM^``_8'@\/P`_8P``````$```/V,H```?_@$"`P$`$P````````";``@`````
  1656. XM``````````=286YD;VT``````0``/V(X`#]C<#1!`#]C2``````0```_8X``
  1657. XM`!_]`0(#`0`3```````(`',`"```````````````#4%R8VAE;VQO9VES=```
  1658. XM```!```_8\@`/V/@-$(`/V.@`````!```#]C\```'_L!`@,!`!,``````!``
  1659. XMFP`(```````````````*0F%R8F%R:6%N``````$``#]ND``_;J@T0P`_;F@`
  1660. XM````$```/VZX```?]P$"`P$`$P``````&`";``@```````````````E#879E
  1661. XM($UA;@`````!```_;P``/V\0-$4`/V[8`````!```#]O(```'^\!`@,!`!,`
  1662. XM`````"``FP`(```````````````$16QF``````$``#]O:``_<A`T2``_;T``
  1663. XM````$```/W(@```?WP$"`P$`$P``````*`";``@```````````````=(96%L
  1664. XM97(``````0``/W)H`#]R>#1+`#]R0``````0```_<H@``!^_`0(#`0`3````
  1665. XM```P`)L`"```````````````!TMN:6=H=``````!```_<M``/W+@-%``/W*H
  1666. XM`````!```#]R\```'W\!`@,!`!,``````#@`FP`(```````````````'4')I
  1667. XM97-T``````$``#]S$``_=4`T4@`_=1@`````$```/W50```>_P$"`P$`$P``
  1668. XM````0`";``@```````````````92;V=U90`````!```_=9@`/W6H-%,`/W5P
  1669. XM`````!```#]UN```'?\!`@,!`!,``````$@`FP`(```````````````(4V%M
  1670. XM=7)A:0`````!```_=@``/W80-%0`/W78`````!```#]VB```&_\!`@,!`!,`
  1671. XM`````%``FP`(```````````````(5&]U<FES=``````!```_=P@`/W8@-%8`
  1672. XM/W;@`````!```#]W(```%_\!`@,!`!,``````%@`FP`(```````````````)
  1673. XM5F%L:WER:64``````0``/W=H`#]X$#17`#]W0``````0``````````__`0(#
  1674. XM`0`3``````!@`)L`"```````````````!U=I>F%R9``````!``$``0``#P`/
  1675. XM```````_>$``/WA8````#U!L87EE<B=S($YA;64Z``$``0``+P`J```````_
  1676. XM>'@`/WB0````"T-H87)A8W1E<CH``0`!```?`!P``````#]XL``````````-
  1677. XM3W5T4'5T($9I;&4Z```"$`X`)`)@``4`!?____\``````#]0&```````````
  1678. XM````````````!``\PE````````52<W1?```"`+$`/`$G`#D`!0`%_____P``
  1679. XM`!-296-O=F5R(%!A<F%M971E<G,``#^`T`!E``\`N@`)```"`P`$`#]^3```
  1680. XM```````````````_4&`````_19#_____`P``!0`_?EP```````````"[````
  1681. XMNP`*````"@`````````````!+```````!``;``!H*``./\_XA`!$``````*`
  1682. XM`,C__P``)0```A!'````````````.0?4````````````*``>_____P`!``D`
  1683. XM```!``(``P`(``0`!0`'``D`!@,``0`!F@`!```````Y""`````````````'
  1684. XM````.)FF``$`.)HF``(`.)GF``,`.)DF``0`.)IF``4`.)JF``8`.)EF````
  1685. XM```!```````!```````!```````!```````!`````````````0``````````
  1686. XM``$```````$```````$```````$```````$``````````````````0``````
  1687. XM`0```````0!I``0!MP"^``$```````(00``XF#H`````````````````````
  1688. XM``4``````0H```(!`#SA8``\Y*``/.3X`#]%X``\YK``/.CP````"%)E<W1$
  1689. XM:7(``````0`````!``````M'041215-41$E2``````$``````0``/X2P`&4`
  1690. XM'`"Z``D```(#``0`/X#\`````````````````#^!*````#]'X/____\#```%
  1691. XM`#^!#````````````+L```"[``H````*``````````````$L```````$`!L`
  1692. XM`&@H``X_S_B$`$0``````H``R/__```E```"$$<````````````Y!]0`````
  1693. XM```````H`![_____``$`"0````$``@`#``@`!``%``<`"0`&`P`!``&:``$`
  1694. XM`````#D((`````````````<````XF:8``0`XFB8``@`XF>8``P`XF28`!``X
  1695. XMFF8`!0`XFJ8`!@`XF68```````$```````$```````$```````$```````$`
  1696. XM```````````!`````````````0```````0```````0```````0```````0``
  1697. XM```````````````!```````!```````!`&D`!`&W`+X``0```````A!``#B8
  1698. XM.@``````````````````````!0`````!"@```@$`/.D0`#SQ^``\^/``/T@P
  1699. XM`#SYX``\^[@````(4F5S=$]L9``````!``````$`````"T=!1%)%4U1/3$0`
  1700. XM`````0`````!```_A0@`"@`J`#D`"@````,``0`_A-P``````#]*&```````
  1701. XM``````4`/TQX_____P,```4`/X3L````````````.@```#H`"P````L`````
  1702. XM``````$`````#``!```````_1S@`````````!4]K87D`````"@````$`/TP0
  1703. XM`#](2``_23``/TS(`#])4``_3#@````)4F5S=$]K87D``````0`````!````
  1704. XM``Q'041215-43TM!60`````!``````$```````#F`"H`.0`*`````P`!`#^%
  1705. XM-```````/TT8````````````!@`_36C_____`P``!0`_A40````````````Z
  1706. XM````.@`+````"P```````````0`````%``$``````#],X``````````'0V%N
  1707. XM8V5L``````H````!`#]/>``_3<@`/TWH`#]/R``_3R``/T]`````"U)E<W1#
  1708. XM86YC96P``````0`````!``````M'041215-40T%.``````$``````0`!````
  1709. XM``X`#P``````/U(0`#]22`````M$:7)E8W1O<GDZ``$`````$@`=```````_
  1710. X44G@`````````"D]L9"!&:6QE.@!$
  1711. X`
  1712. Xend
  1713. END_OF_FILE
  1714. if test 28885 -ne `wc -c <'sys/amiga/wbwin.uu'`; then
  1715.     echo shar: \"'sys/amiga/wbwin.uu'\" unpacked with wrong size!
  1716. fi
  1717. # end of 'sys/amiga/wbwin.uu'
  1718. fi
  1719. echo shar: End of archive 77 \(of 108\).
  1720. cp /dev/null ark77isdone
  1721. MISSING=""
  1722. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \
  1723. 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
  1724. 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \
  1725. 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 \
  1726. 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 \
  1727. 101 102 103 104 105 106 107 108 ; do
  1728.     if test ! -f ark${I}isdone ; then
  1729.     MISSING="${MISSING} ${I}"
  1730.     fi
  1731. done
  1732. if test "${MISSING}" = "" ; then
  1733.     echo You have unpacked all 108 archives.
  1734.     echo "Now execute 'rebuild.sh'"
  1735.     rm -f ark10[0-8]isdone ark[1-9]isdone ark[1-9][0-9]isdone
  1736. else
  1737.     echo You still need to unpack the following archives:
  1738.     echo "        " ${MISSING}
  1739. fi
  1740. ##  End of shell archive.
  1741. exit 0
  1742.