home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume30 / tin / part04 < prev    next >
Encoding:
Text File  |  1992-05-19  |  54.6 KB  |  1,578 lines

  1. Newsgroups: comp.sources.misc
  2. From: iain%anl433.uucp@germany.eu.net (Iain J. Lea)
  3. Subject:  v30i004:  tin - threaded full screen newsreader, Part04/14
  4. Message-ID: <1992May20.172322.28702@sparky.imd.sterling.com>
  5. X-Md4-Signature: 8f14dced18ca22d0bf4e8ef69e60b962
  6. Date: Wed, 20 May 1992 17:23:22 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: iain%anl433.uucp@germany.eu.net (Iain J. Lea)
  10. Posting-number: Volume 30, Issue 4
  11. Archive-name: tin/part04
  12. Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
  13. Supersedes: tin: Volume 29, Issue 19-30
  14.  
  15. #! /bin/sh
  16. # This is a shell archive.  Remove anything before this line, then feed it
  17. # into a shell via "sh file" or similar.  To overwrite existing files,
  18. # type "sh file -c".
  19. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  20. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  21. # Contents:  page.c tin.nrf.UU.b
  22. # Wrapped by kent@sparky on Tue May 19 13:38:02 1992
  23. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  24. echo If this archive is complete, you will see the following message:
  25. echo '          "shar: End of archive 4 (of 14)."'
  26. if test -f 'page.c' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'page.c'\"
  28. else
  29.   echo shar: Extracting \"'page.c'\" \(22466 characters\)
  30.   sed "s/^X//" >'page.c' <<'END_OF_FILE'
  31. X/*
  32. X *  Project   : tin - a threaded Netnews reader
  33. X *  Module    : page.c
  34. X *  Author    : I.Lea & R.Skrenta
  35. X *  Created   : 01-04-91
  36. X *  Updated   : 02-05-92
  37. X *  Notes     :
  38. X *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  39. X *              You may  freely  copy or  redistribute  this software,
  40. X *              so  long as there is no profit made from its use, sale
  41. X *              trade or  reproduction.  You may not change this copy-
  42. X *              right notice, and it must be included in any copy made
  43. X */
  44. X
  45. X#include    "tin.h"
  46. X
  47. Xextern int cur_groupnum;
  48. X
  49. Xchar note_h_path[LEN];            /* Path:    */
  50. Xchar note_h_date[LEN];            /* Date:    */
  51. Xchar note_h_subj[LEN];            /* Subject:    */
  52. Xchar note_h_org[LEN];            /* Organization: */
  53. Xchar note_h_newsgroups[LEN];        /* Newsgroups:    */
  54. Xchar note_h_messageid[LEN];        /* Message-ID:    */
  55. Xchar note_h_distrib[LEN];        /* Distribution: */
  56. Xchar note_h_followup[LEN];        /* Followup-To: */
  57. X
  58. Xchar *glob_page_group;
  59. X
  60. XFILE *note_fp;                    /* the body of the current article */
  61. X
  62. Xint glob_respnum;
  63. Xint last_resp;                    /* current & previous article for - command */
  64. Xint note_end;                    /* we're done showing this article */
  65. Xint note_line;
  66. Xint note_page;                    /* what page we're on */
  67. Xint rotate;                        /* 0=normal, 13=rot13 decode */
  68. Xint this_resp;
  69. X
  70. Xlong note_mark[MAX_PAGES];        /* ftells on beginnings of pages */
  71. Xlong note_size;                    /* stat size in bytes of article */
  72. X
  73. X
  74. Xint show_page (respnum, threadnum, group, group_path)
  75. X    int respnum;
  76. X    int *threadnum;        /* to allow movement in thread mode */
  77. X    char *group;
  78. X    char *group_path;
  79. X{
  80. X#ifndef INDEX_DAEMON
  81. X
  82. X    char ch;
  83. X    int i, n = 0;
  84. X    int copy_text;
  85. X    int kill_state = NO_KILLING;
  86. X    int old_sort_art_type = sort_art_type;
  87. X    int old_top;
  88. X    int posted;
  89. X    int ret_code;
  90. X    long old_artnum;
  91. X    long art;
  92. X
  93. Xrestart:
  94. X
  95. X    glob_respnum = respnum;
  96. X    glob_page_group = group;
  97. X
  98. X    set_signals_page ();
  99. X    
  100. X    if (respnum != this_resp) {       /* remember current & previous */
  101. X        last_resp = this_resp;       /* articles for - command */
  102. X        this_resp = respnum;
  103. X    }
  104. X
  105. X    rotate = 0;            /* normal mode, not rot13 */
  106. X    art = arts[respnum].artnum;
  107. X    arts[respnum].unread = ART_READ;    /* mark article as read */
  108. X
  109. X    if ((note_page = art_open (art, group_path)) == ART_UNAVAILABLE) {
  110. X        sprintf (msg, txt_art_unavailable, art);
  111. X        error_message (msg, "");
  112. X        return (which_thread (respnum));
  113. X    } else {
  114. X        show_note_page (respnum, group);
  115. X    }
  116. X
  117. X    while (TRUE) {
  118. X        ch = (char) ReadCh();
  119. X
  120. X        if (ch >= '0' && ch <= '9') {
  121. X            n = prompt_response (ch, respnum);
  122. X            if (n != -1) {
  123. X                respnum = n;
  124. X                goto restart;
  125. X            }
  126. X            continue;
  127. X        }
  128. X        switch (ch) {
  129. X            case ESC:
  130. X                switch (get_arrow_key ()) {
  131. X                    case KEYMAP_PAGE_UP:
  132. X                        goto page_up;
  133. X
  134. X                    case KEYMAP_PAGE_DOWN:
  135. X                        goto page_down;
  136. X
  137. X                    case KEYMAP_HOME:
  138. X                        goto begin_of_article;
  139. X
  140. X                    case KEYMAP_END:
  141. X                        goto end_of_article;
  142. X                }
  143. X                break;
  144. X
  145. X#ifndef NO_SHELL_ESCAPE
  146. X            case '!':
  147. X                shell_escape ();
  148. X                redraw_page (respnum, group);
  149. X                break;
  150. X#endif
  151. X
  152. X            case '$':    /* goto end of article */
  153. X            case 'G':    /* 'less' compatible */
  154. Xend_of_article:            
  155. X                if (show_last_page ()) {
  156. X                    show_note_page (respnum, group);
  157. X                }
  158. X                break;
  159. X
  160. X            case '-':    /* show last viewed article */
  161. X                if (last_resp < 0) {
  162. X                    info_message (txt_no_last_message);
  163. X                    break;
  164. X                }
  165. X                art_close ();
  166. X                respnum = last_resp;
  167. X                goto restart;
  168. X
  169. X            case '|':    /* pipe article/thread/tagged arts to command */
  170. X                feed_articles (FEED_PIPE, PAGE_LEVEL, "Pipe", respnum, group_path);
  171. X                break;
  172. X
  173. X            case '/':    /* search forwards in article */
  174. X                if (search_article (TRUE)) {
  175. X                    show_note_page (respnum, group);
  176. X                }
  177. X                break;
  178. X
  179. X            case '<':    /* goto first article in current thread */
  180. X                if (arts[respnum].inthread) {
  181. X                    n = which_thread (respnum);
  182. X                    if (n >= 0 && base[n] != respnum) {
  183. X                        assert (n < top_base);
  184. X                        respnum = base[n];
  185. X                        art_close ();
  186. X                        goto restart;
  187. X                    }
  188. X                }
  189. X                break;
  190. X
  191. X            case '>':    /* goto last article in current thread */
  192. X                for (i = respnum; i >= 0; i = arts[i].thread) {
  193. X                    n = i;
  194. X                }
  195. X                if (n != respnum) {
  196. X                    respnum = n;
  197. X                    art_close ();
  198. X                    goto restart;
  199. X                }
  200. X                break;
  201. X
  202. X            case ' ':             /* next page or response */
  203. X            case ctrl('D'):        /* vi style */
  204. X            case ctrl('V'):        /* emacs style */
  205. Xpage_down:
  206. X                if (note_page == ART_UNAVAILABLE) {
  207. X                    n = next_response (respnum);
  208. X                    if (n == -1) {
  209. X                        return (which_thread (respnum));
  210. X                    }
  211. X                    respnum = n;
  212. X                    goto restart;
  213. X                } else if (note_end) {
  214. X                    art_close ();
  215. X                    n = next_response (respnum);
  216. X                    if (n == -1) {
  217. X                        return (which_thread (respnum));
  218. X                    }
  219. X                    respnum = n;
  220. X                    goto restart;
  221. X                } else
  222. X                    show_note_page (respnum, group);
  223. X                break;
  224. X
  225. X            case '\r':
  226. X            case '\n':    /* go to start of next thread */
  227. X                art_close ();
  228. X                n = next_thread (respnum);
  229. X                if (n == -1)
  230. X                    return (which_thread (respnum));
  231. X                respnum = n;
  232. X                goto restart;
  233. X
  234. X            case '\t':     /* goto next unread article */
  235. X#ifndef TAB_GOTO_NEXT_UNREAD
  236. X                if (note_page == ART_UNAVAILABLE) {
  237. X                    n = next_unread (next_response (respnum));
  238. X                    if (n == -1) {
  239. X                        return (which_thread (respnum));
  240. X                    }
  241. X                    respnum = n;
  242. X                    goto restart;
  243. X                } else if (note_end) {
  244. X                    art_close ();
  245. X                    n = next_unread (next_response (respnum));
  246. X                    if (n == -1) {
  247. X                        return (which_thread (respnum));
  248. X                    }
  249. X                    respnum = n;
  250. X                    goto restart;
  251. X                } else {
  252. X                    show_note_page (respnum, group);
  253. X                }    
  254. X#else
  255. X                if (note_page != ART_UNAVAILABLE) {
  256. X                    art_close();
  257. X                }
  258. X                n = next_unread (next_response (respnum));
  259. X                if (n == -1) {
  260. X                    return (which_thread (respnum));
  261. X                }
  262. X                respnum = n;
  263. X                goto restart;
  264. X#endif
  265. X                break;
  266. X
  267. X            case ctrl('H'):    /* show article headers */
  268. X                if (note_page == ART_UNAVAILABLE) {
  269. X                    n = next_response (respnum);
  270. X                    if (n == -1)
  271. X                        return (which_thread (respnum));
  272. X                    respnum = n;
  273. X                    goto restart;
  274. X                } else {
  275. X                    note_page = 0;
  276. X                    note_end = FALSE;
  277. X                    fseek(note_fp, 0L, 0);
  278. X                    show_note_page(respnum, group);
  279. X                }
  280. X                break;
  281. X
  282. X            case ctrl('K'):        /* kill article */
  283. X                if (kill_art_menu (group, respnum)) {
  284. X                    i = which_thread (respnum);
  285. X                    if (kill_any_articles (group)) {
  286. X                        make_threads (FALSE);
  287. X                        find_base (show_only_unread);
  288. X                        if (i >= top_base)
  289. X                            i = top_base - 1;
  290. X                        respnum = base[i];    
  291. X                    }
  292. X                }
  293. X                redraw_page (respnum, group);
  294. X                break;
  295. X
  296. X            case ctrl('L'):        /* redraw current page of article */
  297. X                redraw_page (respnum, group);
  298. X                break;
  299. X
  300. X            case ctrl('R'):        /* redraw beginning of article */
  301. X            case 'g':            /* 'less' compatible */
  302. Xbegin_of_article:            
  303. X                if (note_page == ART_UNAVAILABLE) {
  304. X                    ClearScreen ();
  305. X                    printf (txt_art_unavailable, arts[respnum].artnum);
  306. X                    fflush (stdout);
  307. X                } else {
  308. X                    note_page = 0;
  309. X                    note_end = FALSE;
  310. X                    fseek (note_fp, note_mark[0], 0);
  311. X                    show_note_page (respnum, group);
  312. X                }
  313. X                break;
  314. X
  315. X            case ctrl('X'):
  316. X            case '%':
  317. X            case 'd':    /* toggle rot-13 mode */
  318. X                if (rotate)
  319. X                    rotate = 0;
  320. X                else
  321. X                    rotate = 13;
  322. X                redraw_page (respnum, group);
  323. X                info_message (txt_toggled_rot13);
  324. X                break;
  325. X
  326. X            case 'a':    /* author search forward */
  327. X            case 'A':    /* author search backward */
  328. X                i = (ch == 'a');
  329. X                n = search_author (show_only_unread, respnum, i);
  330. X                if (n < 0)
  331. X                    break;
  332. X                respnum = n;
  333. X                goto restart;
  334. X                /* NOTREACHED */
  335. X
  336. X            case ctrl('U'):
  337. X            case 'b':        /* back a page */
  338. Xpage_up:
  339. X                if (note_page == ART_UNAVAILABLE) {
  340. X                    art_close ();
  341. X                    n = prev_response (respnum);
  342. X                    if (n == -1)
  343. X                        return (which_response (respnum));
  344. X                    respnum = n;
  345. X                    goto restart;
  346. X
  347. X                } else {
  348. X                    if (note_page <= 1) {
  349. X                        info_message (txt_begin_of_art);
  350. X                    } else {
  351. X                        note_page -= 2;
  352. X                        note_end = FALSE;
  353. X                        fseek (note_fp, note_mark[note_page], 0);
  354. X                        show_note_page (respnum, group);
  355. X                    }
  356. X                }
  357. X                break;
  358. X
  359. X            case 'B':    /* bug/gripe/comment mailed to author */
  360. X                mail_bug_report ();
  361. X                redraw_page (respnum, group);
  362. X                break;
  363. X                
  364. X            case 'c':    /* catchup--mark all articles as read */
  365. X                if (!confirm_action || prompt_yn (LINES, txt_mark_all_read, 'y')) {
  366. X                    for (n = 0; n < top; n++) {
  367. X                        arts[n].unread = ART_READ;
  368. X                    }
  369. X                    fix_new_highest (cur_groupnum);
  370. X                    if (cur_groupnum + 1 < group_top) {
  371. X                        cur_groupnum++;
  372. X                    }
  373. X                    art_close ();
  374. X                    return -1;
  375. X                }
  376. X                break;
  377. X
  378. X            case 'C':    /* cancel an article */
  379. X                if (cancel_article (group, respnum)) {
  380. X                    redraw_page (respnum, group);
  381. X                }
  382. X                break;
  383. X    
  384. X            case 'f':    /* post a followup to this article */
  385. X            case 'F':
  386. X                if (! can_post) {
  387. X                    info_message (txt_cannot_post);
  388. X                    break;
  389. X                }
  390. X                copy_text = (ch == 'f' ? FALSE : TRUE);
  391. X                ret_code = post_response (group, respnum, copy_text);
  392. X                redraw_page (respnum, group);
  393. X                break;
  394. X
  395. X            case 'h':    /* help */
  396. X                show_info_page (HELP_INFO, help_page, txt_art_pager_com);
  397. X                redraw_page (respnum, group);
  398. X                break;
  399. X
  400. X            case 'q':    /* return to index page */
  401. Xreturn_to_index:
  402. X                art_close ();
  403. X                if (kill_state == NO_KILLING &&
  404. X                    sort_art_type != old_sort_art_type) {
  405. X                    make_threads (TRUE);
  406. X                    find_base (show_only_unread);
  407. X                }
  408. X                i = which_thread (respnum);
  409. X                *threadnum = which_response (respnum);
  410. X                if (kill_state == KILLING) {
  411. X                    old_top = top;
  412. X                    old_artnum = arts[respnum].artnum;
  413. X                    kill_any_articles (group);
  414. X                    make_threads (FALSE);
  415. X                    find_base (show_only_unread);
  416. X                    i = find_new_pos (old_top, old_artnum, i);
  417. X                }
  418. X                return (i);
  419. X
  420. X            case 'I':    /* toggle inverse video */
  421. X                toggle_inverse_video ();
  422. X                redraw_page (respnum, group);
  423. X                break;
  424. X
  425. X            case 'k':
  426. X                if (note_page == ART_UNAVAILABLE) {
  427. X                    n = next_unread (next_response(respnum));
  428. X                    if (n == -1)
  429. X                        return (which_thread (respnum));
  430. X                } else {
  431. X                    art_close ();
  432. X                    n = next_unread (next_response (respnum));
  433. X                    if (n == -1)
  434. X                        return (which_thread (respnum));
  435. X                }
  436. X                respnum = n;
  437. X                goto restart;
  438. X                /* NOTREACHED */
  439. X
  440. X            case 'K':    /* mark rest of thread as read */
  441. X                for (n = respnum; n >= 0; n = arts[n].thread)
  442. X                    arts[n].unread = ART_READ;
  443. X                n = next_unread (next_response (respnum));
  444. X                if (n == -1)
  445. X                    goto return_to_index;
  446. X                art_close ();
  447. X                respnum = n;
  448. X                goto restart;
  449. X                /* NOTREACHED */
  450. X
  451. X            case 'm':    /* mail article/thread/tagged articles to somebody */
  452. X                feed_articles (FEED_MAIL, PAGE_LEVEL, "Mail", respnum, group_path);
  453. X                break;
  454. X
  455. X            case 'M':    /* options menu */
  456. X                if (change_rcfile (group, FALSE) == KILLING) {
  457. X                    kill_state = KILLING;
  458. X                } 
  459. X                redraw_page (respnum, group);
  460. X                break;
  461. X
  462. X            case 'n':    /* skip to next article */
  463. X                art_close ();
  464. X                n = next_response (respnum);
  465. X                if (n == -1)
  466. X                    return (which_thread(respnum));
  467. X                respnum = n;
  468. X                goto restart;
  469. X                /* NOTREACHED */
  470. X                
  471. X            case 'N':    /* next unread article */
  472. X                n = next_unread (next_response (respnum));
  473. X                if (n == -1)
  474. X                    info_message (txt_no_next_unread_art);
  475. X                else {
  476. X                    art_close ();
  477. X                    respnum = n;
  478. X                    goto restart;
  479. X                }
  480. X                break;
  481. X
  482. X            case 'o':    /* output art/thread/tagged arts to printer */
  483. X                feed_articles (FEED_PRINT, PAGE_LEVEL, "Print", respnum, group_path);
  484. X                break;
  485. X
  486. X            case 'p':    /* previous article */
  487. X                art_close ();
  488. X                n = prev_response (respnum);
  489. X                if (n == -1)
  490. X                    return (which_response (respnum));
  491. X                respnum = n;
  492. X                goto restart;
  493. X
  494. X            case 'P':    /* previous unread article */
  495. X                n = prev_unread (prev_response (respnum));
  496. X                if (n == -1)
  497. X                    info_message (txt_no_prev_unread_art);
  498. X                else {
  499. X                    art_close ();
  500. X                    respnum = n;
  501. X                    goto restart;
  502. X                }
  503. X                break;
  504. X
  505. X            case 'Q':    /* quit */
  506. X                return -2;
  507. X                break;
  508. X    
  509. X            case 'r':    /* reply to author through mail */
  510. X            case 'R':
  511. X                copy_text = (ch == 'r' ? FALSE : TRUE);
  512. X                mail_to_author (group, respnum, copy_text);
  513. X                redraw_page (respnum, group);
  514. X                break;
  515. X
  516. X            case 's':    /* save article/thread/tagged articles */
  517. X                feed_articles (FEED_SAVE, PAGE_LEVEL, "Save", respnum, group_path);
  518. X                break;
  519. X
  520. X            case 't':    /* return to group selection page */
  521. X                art_close ();
  522. X                if (kill_state == KILLING) {
  523. X                    kill_any_articles (group);
  524. X                    make_threads (FALSE);
  525. X                    find_base (show_only_unread);
  526. X                }
  527. X                update_newsrc (group, my_group[cur_groupnum], FALSE);
  528. X                fix_new_highest (cur_groupnum);
  529. X                return -1;
  530. X
  531. X            case 'T':    /* tag/untag article for saving */
  532. X                if (arts[respnum].tagged) {
  533. X                    arts[respnum].tagged = 0;
  534. X                    info_message (txt_untagged_art);
  535. X                } else {
  536. X                    arts[respnum].tagged = ++num_of_tagged_arts;
  537. X                    info_message (txt_tagged_art);
  538. X                }
  539. X                break;
  540. X
  541. X            case 'v':
  542. X                info_message (cvers);
  543. X                break;
  544. X
  545. X            case 'w':    /* post a basenote */
  546. X                if (! can_post) {
  547. X                    info_message (txt_cannot_post);
  548. X                    break;
  549. X                }
  550. X                if (post_base (group, &posted)) {
  551. X                    redraw_page (respnum, group);
  552. X                }
  553. X                break;
  554. X
  555. X            case 'W':    /* display messages posted by user */
  556. X                if (user_posted_messages ()) {
  557. X                    redraw_page (respnum, group);
  558. X                }
  559. X                break;
  560. X
  561. X            case 'x':    /* crosspost current article */
  562. X                feed_articles (FEED_XPOST, PAGE_LEVEL, "Crosspost", respnum, group_path);
  563. X                break;
  564. X
  565. X            case 'z':    /* mark article as unread (to return) */
  566. X                arts[respnum].unread = ART_WILL_RETURN;
  567. X                info_message (txt_art_marked_as_unread);
  568. X                break;
  569. X
  570. X            default:
  571. X                info_message(txt_bad_command);
  572. X        }
  573. X    }
  574. X
  575. X#endif /* INDEX_DAEMON */
  576. X}
  577. X
  578. X
  579. Xvoid redraw_page (respnum, group)
  580. X    int respnum;
  581. X    char *group;
  582. X{
  583. X    if (note_page == ART_UNAVAILABLE) {
  584. X        ClearScreen ();
  585. X        printf (txt_art_unavailable, arts[respnum].artnum);
  586. X        fflush (stdout);
  587. X    } else if (note_page > 0) {
  588. X        note_page--;
  589. X        fseek (note_fp, note_mark[note_page], 0);
  590. X        show_note_page (respnum, group);
  591. X    }
  592. X}
  593. X
  594. X
  595. Xvoid show_note_page (respnum, group)
  596. X    int respnum;
  597. X    char *group;
  598. X{
  599. X#ifndef INDEX_DAEMON
  600. X
  601. X    char buf[LEN];
  602. X    char buf2[LEN+50];
  603. X    char *p, *q;
  604. X    int i, j;
  605. X    int ctrl_L;        /* form feed character detected */
  606. X    long tmp_pos;
  607. X
  608. X    ClearScreen ();
  609. X
  610. X    note_line = 1;
  611. X
  612. X    if (note_size == 0L) {
  613. X        tmp_pos = ftell (note_fp);
  614. X        fseek (note_fp, 0L, 2);            /* goto end of article */
  615. X        note_size = ftell (note_fp);
  616. X        fseek (note_fp, tmp_pos, 0);    /* goto old position */
  617. X    }
  618. X    
  619. X    if (note_page == 0)
  620. X        show_first_header (respnum, group);
  621. X    else
  622. X        show_cont_header (respnum);
  623. X
  624. X    ctrl_L = FALSE;
  625. X    while (note_line < LINES) {
  626. X        if (fgets (buf, sizeof (buf), note_fp) == NULL) {
  627. X            note_end = TRUE;
  628. X            break;
  629. X        }
  630. X
  631. X        buf[LEN-1] = '\0';
  632. X        if (rotate)
  633. X            for (p = buf, q = buf2; *p && *p != '\n' && q < &buf2[LEN]; p++) {
  634. X                if (*p == '\b' && q > buf2) {
  635. X                    q--;
  636. X                } else if (*p == 12) {        /* ^L */
  637. X                    *q++ = '^';
  638. X                    *q++ = 'L';
  639. X                    ctrl_L = TRUE;
  640. X                } else if (*p == '\t') {
  641. X                    i = q - buf2;
  642. X                    j = (i|7) + 1;
  643. X
  644. X                    while (i++ < j)
  645. X                        *q++ = ' ';
  646. X                } else if (((*p) & 0xFF) < ' ') {
  647. X                    *q++ = '^';
  648. X                    *q++ = ((*p) & 0xFF) + '@';
  649. X                } else if (*p >= 'A' && *p <= 'Z')
  650. X                    *q++ = 'A' + (*p - 'A' + rotate) % 26;
  651. X                else if (*p >= 'a' && *p <= 'z')
  652. X                    *q++ = 'a' + (*p - 'a' + rotate) % 26;
  653. X                else
  654. X                    *q++ = *p;
  655. X            }
  656. X        else
  657. X            for (p = buf, q = buf2; *p && *p != '\n' && q < &buf2[LEN]; p++) {
  658. X                if (*p == '\b' && q > buf2) {
  659. X                    q--;
  660. X                } else if (*p == 12) {        /* ^L */
  661. X                    *q++ = '^';
  662. X                    *q++ = 'L';
  663. X                    ctrl_L = TRUE;
  664. X                } else if (*p == '\t') {
  665. X                    i = q - buf2;
  666. X                    j = (i|7) + 1;
  667. X
  668. X                    while (i++ < j)
  669. X                        *q++ = ' ';
  670. X                } else if (((*p) & 0xFF) < ' ') {
  671. X                    *q++ = '^';
  672. X                    *q++ = ((*p) & 0xFF) + '@';
  673. X                } else
  674. X                    *q++ = *p;
  675. X            }
  676. X
  677. X        *q = '\0';
  678. X
  679. X        printf("%s\r\n", buf2);
  680. X
  681. X        note_line += ((int) strlen (buf2) / COLS) + 1;
  682. X
  683. X        if (ctrl_L) {
  684. X            break;
  685. X        }
  686. X    }
  687. X
  688. X    note_mark[++note_page] = ftell (note_fp);
  689. X
  690. X    if (note_mark[note_page] == note_size) {
  691. X        note_end = TRUE;
  692. X    }
  693. X
  694. X    if (note_end) {
  695. X        MoveCursor (LINES, MORE_POS-(5+BLANK_PAGE_COLS));
  696. X        StartInverse ();    
  697. X        if (arts[respnum].thread != -1) {
  698. X            fputs (txt_next_resp, stdout);
  699. X            fflush (stdout);
  700. X        } else {
  701. X            fputs (txt_last_resp, stdout);
  702. X            fflush (stdout);
  703. X        }
  704. X        EndInverse ();
  705. X    } else {
  706. X        if (note_size > 0) {
  707. X            draw_percent_mark ((int) note_mark[note_page], (int) note_size);
  708. X        } else {
  709. X            MoveCursor (LINES, MORE_POS-BLANK_PAGE_COLS);
  710. X            StartInverse ();    
  711. X            fputs (txt_more, stdout);
  712. X            fflush (stdout);
  713. X            EndInverse ();
  714. X        }
  715. X    }
  716. X    MoveCursor (LINES, 0);
  717. X
  718. X#endif /* INDEX_DAEMON */
  719. X}
  720. X
  721. X
  722. Xvoid show_first_header (respnum, group)
  723. X    int respnum;
  724. X    char *group;
  725. X{
  726. X    int whichresp;
  727. X    int x_resp;
  728. X    char buf[LEN];
  729. X    char tmp[LEN];
  730. X    int pos, i;
  731. X    int n;
  732. X
  733. X    whichresp = which_response (respnum);
  734. X    x_resp = num_of_responses (which_thread (respnum));
  735. X
  736. X    ClearScreen ();
  737. X
  738. X    strcpy (buf, note_h_date);
  739. X    pos = (COLS - (int) strlen (group)) / 2;
  740. X    for (i = strlen(buf); i < pos; i++)
  741. X        buf[i] = ' ';
  742. X    buf[i] = '\0';
  743. X
  744. X    strcat (buf, group);
  745. X
  746. X    for (i = strlen(buf); i < RIGHT_POS ; i++)
  747. X        buf[i] = ' ';
  748. X    buf[i] = '\0';
  749. X
  750. X    printf (txt_thread_x_of_n, buf, which_thread (respnum) + 1, top_base);
  751. X
  752. X    sprintf (buf, txt_art, arts[respnum].artnum);
  753. X    n = strlen (buf);
  754. X    fputs (buf, stdout);
  755. X
  756. X    strcpy (buf, note_h_subj);
  757. X    buf[RIGHT_POS - 5 - n] = '\0';
  758. X
  759. X    pos = ((COLS - (int) strlen (buf)) / 2) - 2;
  760. X
  761. X    if (pos > n) {
  762. X        MoveCursor (1, pos);
  763. X    } else {
  764. X        MoveCursor (1, n);
  765. X    }
  766. X
  767. X    StartInverse ();
  768. X    fputs (buf, stdout);
  769. X    EndInverse ();
  770. X
  771. X    MoveCursor (1, RIGHT_POS);
  772. X    if (whichresp)
  773. X        printf (txt_resp_x_of_n, whichresp, x_resp);
  774. X    else {
  775. X        if (x_resp == 0)
  776. X            fputs (txt_no_resp, stdout);
  777. X        else if (x_resp == 1)
  778. X            fputs (txt_1_resp, stdout);
  779. X        else
  780. X            printf (txt_x_resp, x_resp);
  781. X    }
  782. X
  783. X    if (*note_h_org) {
  784. X        if (strcmp (arts[respnum].from, arts[respnum].name) == 0) {
  785. X            strcpy (tmp, note_h_org);
  786. X        } else {
  787. X            sprintf (tmp, txt_s_at_s, arts[respnum].name, note_h_org);
  788. X        }
  789. X    } else {
  790. X        strcpy (tmp, arts[respnum].name);
  791. X    }
  792. X
  793. X    tmp[LEN-1] = '\0';
  794. X
  795. X    sprintf (buf, "%s  ", arts[respnum].from);
  796. X
  797. X    pos = COLS - 1 - (int) strlen(tmp);
  798. X    if ((int) strlen (buf) + (int) strlen (tmp) >= COLS - 1) {
  799. X        strncat (buf, tmp, COLS - 1 - (int) strlen(buf));
  800. X        buf[COLS-1] = '\0';
  801. X    } else {
  802. X        for (i = strlen(buf); i < pos; i++)
  803. X            buf[i] = ' ';
  804. X        buf[i] = '\0';
  805. X        strcat (buf, tmp);
  806. X    }
  807. X    printf ("%s\r\n\r\n", buf);
  808. X
  809. X    note_line += 4;
  810. X}
  811. X
  812. X
  813. Xvoid show_cont_header (respnum)
  814. X    int respnum;
  815. X{
  816. X    int whichresp;
  817. X    int whichbase;
  818. X    char buf[LEN];
  819. X
  820. X    whichresp = which_response (respnum);
  821. X    whichbase = which_thread (respnum);
  822. X
  823. X    assert (whichbase < top_base);
  824. X
  825. X    if (whichresp)
  826. X        sprintf(buf, txt_thread_resp_page,
  827. X            whichbase + 1,
  828. X            top_base,
  829. X            whichresp,
  830. X            note_page + 1,
  831. X            note_h_subj);
  832. X    else
  833. X        sprintf(buf, txt_thread_page,
  834. X            whichbase + 1,
  835. X            top_base,
  836. X            note_page + 1,
  837. X            note_h_subj);
  838. X
  839. X    buf[COLS-1] = '\0';
  840. X    printf("%s\r\n\r\n", buf);
  841. X
  842. X    note_line += 2;
  843. X}
  844. X
  845. X
  846. Xint art_open (art, group_path)
  847. X    long art;
  848. X    char *group_path;
  849. X{
  850. X    char buf[1025];
  851. X    char *p;
  852. X
  853. X    note_page = 0;
  854. X
  855. X    art_close ();    /* just in case */
  856. X
  857. X    if ((note_fp = open_art_fp (group_path, art)) == NULL) {
  858. X        return (ART_UNAVAILABLE);
  859. X    }
  860. X
  861. X    note_h_path[0] = '\0';
  862. X    note_h_subj[0] = '\0';
  863. X    note_h_org[0] = '\0';
  864. X    note_h_date[0] = '\0';
  865. X    note_h_newsgroups[0] = '\0';
  866. X    note_h_messageid[0] = '\0';
  867. X    note_h_distrib[0] = '\0';
  868. X    note_h_followup[0] = '\0';
  869. X
  870. X    while (fgets(buf, sizeof buf, note_fp) != NULL) {
  871. X        buf[1024] = '\0';
  872. X
  873. X        for (p=buf ; *p && *p != '\n' ; p++) {
  874. X            if (((*p) & 0xFF) < ' ')
  875. X                *p = ' ';
  876. X        }
  877. X        *p = '\0';
  878. X        
  879. X        if (*buf == '\0')
  880. X            break;
  881. X
  882. X          if (match_header (buf, "Path", note_h_path, LEN))
  883. X              continue;
  884. X          if (match_header (buf, "Subject", note_h_subj, LEN))
  885. X              continue;
  886. X          if (match_header (buf, "Organization", note_h_org, LEN))
  887. X              continue;
  888. X          if (match_header (buf, "Date", note_h_date, LEN))
  889. X              continue;
  890. X          if (match_header (buf, "Newsgroups", note_h_newsgroups, LEN))
  891. X              continue;
  892. X          if (match_header (buf, "Message-ID", note_h_messageid, LEN))
  893. X              continue;
  894. X          if (match_header (buf, "Message-Id", note_h_messageid, LEN))
  895. X              continue;
  896. X          if (match_header (buf, "Distribution", note_h_distrib, LEN))
  897. X              continue;
  898. X          if (match_header (buf, "Followup-To", note_h_followup, LEN))
  899. X              continue;
  900. X    }
  901. X
  902. X    note_mark[0] = ftell (note_fp);
  903. X    note_end = FALSE;
  904. X
  905. X    return (0);
  906. X}
  907. X
  908. X
  909. Xvoid art_close ()
  910. X{
  911. X    if (note_fp && note_page != ART_UNAVAILABLE) {
  912. X        fclose (note_fp);
  913. X        note_fp = (FILE *) 0;
  914. X    }
  915. X}
  916. X
  917. X
  918. Xint prompt_response (ch, respnum)
  919. X    int ch;
  920. X    int respnum;
  921. X{
  922. X    int num;
  923. X
  924. X    clear_message ();
  925. X
  926. X    if ((num = prompt_num (ch, txt_read_resp)) == -1) {
  927. X        clear_message ();
  928. X        return -1;
  929. X    }
  930. X
  931. X    return choose_response (which_thread (respnum), num);
  932. X}
  933. X
  934. X
  935. Xvoid yank_to_addr (orig, addr)
  936. X    char *orig;
  937. X    char *addr;
  938. X{
  939. X    char *p;
  940. X
  941. X    for (p = orig; *p; p++)
  942. X        if (((*p) & 0xFF) < ' ')
  943. X            *p = ' ';
  944. X
  945. X    while (*addr)
  946. X        addr++;
  947. X
  948. X    while (*orig) {
  949. X        while (*orig && (*orig == ' ' || *orig == '"' || *orig == ','))
  950. X            orig++;
  951. X        *addr++ = ' ';
  952. X        while (*orig && (*orig != ' ' && *orig != ',' && *orig != '"'))
  953. X            *addr++ = *orig++;
  954. X        while (*orig && (*orig == ' ' || *orig == '"' || *orig == ','))
  955. X            orig++;
  956. X        if (*orig == '(') {
  957. X            while (*orig && *orig != ')')
  958. X                orig++;
  959. X            if (*orig == ')')
  960. X                orig++;
  961. X        }
  962. X    }
  963. X    *addr = '\0';
  964. X}
  965. X
  966. X
  967. Xint show_last_page ()
  968. X{
  969. X    char buf[LEN];
  970. X    char buf2[LEN+50];
  971. X    char *p, *q;
  972. X    int ctrl_L;        /* form feed character detected */
  973. X    int i, j;
  974. X    long tmp_pos;
  975. X    
  976. X    if (note_end) {
  977. X        return FALSE;
  978. X    }
  979. X
  980. X    if (note_size == 0L) {
  981. X        tmp_pos = ftell (note_fp);
  982. X        fseek (note_fp, 0L, 2);            /* goto end of article */
  983. X        note_size = ftell (note_fp);
  984. X        fseek (note_fp, tmp_pos, 0);    /* goto old position */
  985. X    }
  986. X
  987. X    while (! note_end) {
  988. X        note_line = 1;
  989. X        ctrl_L = FALSE;
  990. X
  991. X        if (note_page == 0) {
  992. X            note_line += 4;
  993. X        } else {
  994. X            note_line += 2;
  995. X        }
  996. X        while (note_line < LINES) {
  997. X            if (fgets (buf, sizeof buf, note_fp) == NULL) {
  998. X                note_end = TRUE;
  999. X                break;
  1000. X            }
  1001. X            buf[LEN-1] = '\0';
  1002. X            for (p = buf, q = buf2;    *p && *p != '\n' && q<&buf2[LEN]; p++) {
  1003. X                if (*p == '\b' && q > buf2) {
  1004. X                    q--;
  1005. X                } else if (*p == 12) {        /* ^L */
  1006. X                    *q++ = '^';
  1007. X                    *q++ = 'L';
  1008. X                    ctrl_L = TRUE;
  1009. X                } else if (*p == '\t') {
  1010. X                    i = q - buf2;
  1011. X                    j = (i|7) + 1;
  1012. X
  1013. X                    while (i++ < j) {
  1014. X                        *q++ = ' ';
  1015. X                    }
  1016. X                } else if (((*p) & 0xFF) < ' ') {
  1017. X                    *q++ = '^';
  1018. X                    *q++ = ((*p) & 0xFF) + '@';
  1019. X                } else {
  1020. X                    *q++ = *p;
  1021. X                }
  1022. X            }
  1023. X            *q = '\0';
  1024. X            note_line += ((int) strlen (buf2) / COLS) + 1;
  1025. X
  1026. X            if (ctrl_L) {
  1027. X                break;
  1028. X            }
  1029. X        }
  1030. X        if (note_mark[note_page] == note_size) {
  1031. X            note_end = TRUE;
  1032. X            note_page--;
  1033. X            break;
  1034. X        } else if (! note_end) {
  1035. X            note_mark[++note_page] = ftell(note_fp);
  1036. X        }
  1037. X    }
  1038. X    fseek (note_fp, note_mark[note_page], 0);
  1039. X    return TRUE;
  1040. X}
  1041. X
  1042. X
  1043. Xint match_header (buf, pat, body, len)
  1044. X    char *buf;
  1045. X    char *pat;
  1046. X    char *body;
  1047. X    int    len;
  1048. X{
  1049. X    int    plen = strlen (pat);
  1050. X
  1051. X    if(strncmp (buf, pat, plen) == 0 && buf[plen] == ':' && buf[plen + 1] == ' ') {
  1052. X        plen += 2;
  1053. X        while (buf[plen] == ' ')
  1054. X            plen++;
  1055. X        strncpy (body, &buf[plen], len);
  1056. X        body[len - 1] = '\0';
  1057. X        return TRUE;
  1058. X    }
  1059. X    return FALSE;
  1060. X}
  1061. END_OF_FILE
  1062.   if test 22466 -ne `wc -c <'page.c'`; then
  1063.     echo shar: \"'page.c'\" unpacked with wrong size!
  1064.   fi
  1065.   # end of 'page.c'
  1066. fi
  1067. if test -f 'tin.nrf.UU.b' -a "${1}" != "-c" ; then 
  1068.   echo shar: Will not clobber existing file \"'tin.nrf.UU.b'\"
  1069. else
  1070.   echo shar: Extracting \"'tin.nrf.UU.b'\" \(29300 characters\)
  1071.   sed "s/^X//" >'tin.nrf.UU.b' <<'END_OF_FILE'
  1072. XM(&-U<G)E;G0@=&AR96%D+@H*3PA/4 A05 A420A)3PA/3@A.4PA3($T(344(
  1073. XM14X(3E4(50H@(" @(%1H:7,@;65N=2!I<R!A8V-E<W-E9"!B>2!P<F5S<VEN
  1074. XM9R G32<@870@86QL(&QE=F5L<RX@270@86QL;W=S('1H90H@(" @('5S97(@
  1075. XM=&\@8W5S=&]M:7IE('1H92!B96AA=FEO=7(@;V8@=&EN+B!4:&4@;W!T:6]N
  1076. XM<R!A<F4@<V%V960@=&\*(" @("!T:&4@9FEL92 D7PA(7PA/7PA-7PA%+RY?
  1077. XM"'1?"&E?"&XO7PAT7PAI7PAN7PAR7PAC+B!5<V4@/%-004-%/B!T;R!T;V=G
  1078. XM;&4@=&AE(')E<75I<F5D"B @(" @;W!T:6]N(&%N9" \0U(^('1O('-E="X*
  1079. XM"B @(" @00A!=0AU= AT;PAO(',(<V$(878(=F4(90H*"@H*,3(@(" @(" @
  1080. XM(" @(" @(" @(" @(" @(" @(" @4F5L96%S92 T+C%2(" @(" @(" @(" @
  1081. XM(" @(" @(" @("!.15=3+4]3"@H*"@H*5$E.*#$I(" @(" @(" @(" @(" @
  1082. XM(" @(" @(" @(" @3$]#04P@(" @(" @(" @(" @(" @(" @(" @(" @(" @
  1083. XM5$E.*#$I"@H*"B @(" @(" @($%U=&]M871I8V%L;'D@<V%V92!A<G1I8VQE
  1084. XM<R]T:')E861S(&)Y($%R8VAI=F4M;F%M93H@;&EN92!I;@H@(" @(" @("!A
  1085. XM<G1I8VQE(&AE861E<B!A;F0@<&]S="!P<F]C97-S('1H96T@:68@<')O8V5S
  1086. XM<R!T>7!E(&ES(&YO="!S970*(" @(" @(" @=&\@3F]N92X*"B @(" @10A%
  1087. XM9 AD:0AI= AT;PAO<@AR(&\(;V8(9F8(9G,(<V4(970(= H@(" @(" @("!3
  1088. XM970@3TX@:68@=&AE(&5D:71O<B!U<V5D(&9O<B!P;W-T:6YG+"!F;VQL;W<M
  1089. XM=7!S(&%N9"!B=6<*(" @(" @(" @<F5P;W)T<R!H87,@=&AE(&-A<&%B:6QI
  1090. XM='D@;V8@<W1A<G1I;F<@86YD('!O<VET:6]N:6YG('1H90H@(" @(" @("!C
  1091. XM=7)S;W(@870@82!S<&5C:69I960@;&EN92!W:71H:6X@82!F:6QE+@H*(" @
  1092. XM("!-"$UA"&%R"')K"&L@<PAS80AA=@AV90AE9 AD('((<F4(96$(860(9 H@
  1093. XM(" @(" @("!!;&QO=W,@<V%V960@87)T:6-L97,O=&AR96%D<R!T;R!B92!A
  1094. XM=71O;6%T:6-A;&QY(&UA<FME9"!A<PH@(" @(" @("!R96%D+@H*(" @("!#
  1095. XM"$-O"&]N"&YF"&9I"&ER"')M"&T@0PA#;PAO;0AM;0AM80AA;@AN9 AD"B @
  1096. XM(" @(" @($%L;&]W<R!C97)T86EN(&-O;6UA;F1S("AI92X@)V,G(&-A=&-H
  1097. XM=7 I('1H870@<F5Q=6ER92!U<V5R"B @(" @(" @(&-O;F9I<FUA=&EO;B!T
  1098. XM;R!B92!E>&5C=71E9"!I;6UE9&EA=&5L>2!I9B!S970@3T9&+@H*(" @("!$
  1099. XM"$1R"')A"&%W"'<@80AA<@AR<@AR;PAO=PAW"B @(" @(" @($%L;&]W<R!G
  1100. XM<F]U<',O87)T:6-L97,@=&\@8F4@<V5L96-T960@8GD@86X@87)R;W<@)RT^
  1101. XM)R!I9B!S970*(" @(" @(" @3TX@;W(@8GD@86X@:&EG:&QI9VAT960@8F%R
  1102. XM(&EF('-E="!/1D8N"@H@(" @(% (4'((<FD(:6X(;G0(="!H"&AE"&5A"&%D
  1103. XM"&1E"&5R"'(*(" @(" @(" @5&AI<R!A;&QO=W,@=&AE(&-O;7!L971E(&UA
  1104. XM:6P@:&5A9&5R(&]R(&]N;'D@=&AE(%-I=6)J96-T.B!A;F0*(" @(" @(" @
  1105. XM1G)O;3H@9FEE;&1S('1O(&)E(&]U='!U="!W:&5N('!R:6YT:6YG(&%R=&EC
  1106. XM;&5S+@H*(" @("!'"$=O"&]T"'1O"&\@,0@Q<PAS= AT('4(=6X(;G((<F4(
  1107. XM96$(860(9 H@(" @(" @("!4:&ES(&%L;&]W<R!T:&4@8W5R<V]R('1O(&)E
  1108. XM('!L86-E9"!A="!T:&4@9FER<W0@+R!L87-T('5N<F5A9 H@(" @(" @("!A
  1109. XM<G1I8VQE('5P;VX@96YT97)I;F<@82!N97=S9W)O=7 @=VET:"!U;G)E860@
  1110. XM;F5W<RX*"B @(" @4PA38PAC<@AR;PAO; AL; AL(&8(9G4(=6P(;&P(;"!P
  1111. XM"'!A"&%G"&=E"&4*(" @(" @(" @268@<V5T($].('-C<F]L;&EN9R!O9B!G
  1112. XM<F]U<',O87)T:6-L97,@=VEL;"!B92!A(&9U;&P@<&%G92!A="!A"B @(" @
  1113. XM(" @('1I;64L(&]T:&5R=VES92!H86QF(&$@<&%G92!A="!A('1I;64N"@H@
  1114. XM(" @($,(0V$(870(=&,(8V@(:'4(=7 (<"!O"&]N"&X@<0AQ=0AU:0AI= AT
  1115. XM"B @(" @(" @($EF('-E="!/3B!T:&4@=7-E<B!I<R!A<VME9"!W:&5N('%U
  1116. XM:71T:6YG(&EF(&%L;"!G<F]U<',@<F5A9 H@(" @(" @("!D=7)I;F<@=&AE
  1117. XM(&-U<G)E;G0@<V5S<VEO;B!S:&]U;&0@8F4@;6%R:V5D(')E860N"@H@(" @
  1118. XM(%0(5&@(:'((<F4(96$(860(9"!A"&%R"')T"'1I"&EC"&-L"&QE"&5S"',*
  1119. XM(" @(" @(" @268@<V5T($].(&%R=&EC;&5S('=I;&P@8F4@=&AR96%D960@
  1120. XM:6X@86QL(&=R;W5P<R H9&5F875L="DL"B @(" @(" @(&]T:&5R=VES92!A
  1121. XM<G1I8VQE<R!W:6QL(&)E('-H;W=N('5N=&AR96%D960N($EF('-E="!/3B!B
  1122. XM=70*(" @(" @(" @8V5R=&%I;B!U<V5R('-P96-I9FEE9"!G<F]U<',@87)E
  1123. XM(&EN("1?"$A?"$]?"$U?"$4O+E\(=%\(:5\(;B]?"'5?"&Y?"'1?"&A?"')?
  1124. XM"&5?"&%?"&0L('1H90H@(" @(" @("!S<&5C:69I960@9W)O=7!S('=I;&P@
  1125. XM8F4@=6YT:')E861E9"!A;F0@=&AE(')E<W0@=VEL;"!B90H@(" @(" @("!T
  1126. XM:')E861E9"X*"B @(" @4PA3: AH;PAO=PAW(&\(;VX(;FP(;'D(>2!U"'5N
  1127. XM"&YR"')E"&5A"&%D"&0*(" @(" @(" @268@<V5T($].('-H;W<@;VYL>2!N
  1128. XM97<O=6YR96%D(&%R=&EC;&5S+"!O=&AE<G=I<V4@<VAO=R!A;&P*(" @(" @
  1129. XM(" @87)T:6-L97,N"@H@(" @(%,(4V@(:&\(;W<(=R!!"$%U"'5T"'1H"&AO
  1130. XM"&]R"'(*(" @(" @(" @268@<V5T("=.;VYE)R!O;FQY('1H92!3=6)J96-T
  1131. XM.B!L:6YE('=I;&P@8F4@9&ES<&QA>65D+B!)9B!S970*(" @(" @(" @)T%D
  1132. XM9'(G(%-U8FIE8W0Z(&QI;F4@)B!T:&4@861D<F5S<R!P87)T(&]F('1H92!&
  1133. XM<F]M.B!L:6YE(&%R90H@(" @(" @("!D:7-P;&%Y960N($EF('-E=" G3F%M
  1134. XM92<@4W5B:F5C=#H@;&EN92 F('1H92!A=71H;W)S(&9U;&P@;F%M90H*"@H*
  1135. XM3D574RU/4R @(" @(" @(" @(" @(" @(" @(" @4F5L96%S92 T+C%2(" @
  1136. XM(" @(" @(" @(" @(" @(" @(" @(" @(#$S"@H*"@H*5$E.*#$I(" @(" @
  1137. XM(" @(" @(" @(" @(" @(" @(" @3$]#04P@(" @(" @(" @(" @(" @(" @
  1138. XM(" @(" @(" @5$E.*#$I"@H*"B @(" @(" @('!A<G0@;V8@=&AE($9R;VTZ
  1139. XM(&QI;F4@87)E(&1I<W!L87EE9"X@268@<V5T("=";W1H)R!3=6)J96-T.@H@
  1140. XM(" @(" @("!L:6YE("8@86QL(&]F('1H92!&<F]M.B!L:6YE(&%R92!D:7-P
  1141. XM;&%Y960N"@H@(" @(% (4'((<F\(;V,(8V4(97,(<W,(<R!T"'1Y"'EP"'!E
  1142. XM"&4*(" @(" @(" @5&AI<R!S<&5C:69I97,@=&AE(&1E9F%U;'0@='EP92!O
  1143. XM9B!P;W-T('!R;V-E<W-I;F<@=&\@<&5R9F]R;0H@(" @(" @("!O;B!S879E
  1144. XM9"!A<G1I8VQE<RX@5&AE(&9O;&QO=VEN9R!T>7!E<R!O9B!P<F]C97-S:6YG
  1145. XM(&%R90H@(" @(" @("!A;&QO=V5D.@H@(" @(" @(" @(" @+6YO;F4N"B @
  1146. XM(" @(" @(" @(" M=6YP86-K:6YG(&]F(&UU;'1I+7!A<G0@<VAE;&P@87)C
  1147. XM:&EV97,N"B @(" @(" @(" @(" M=6YP86-K:6YG(&]F(&UU;'1I+7!A<G0@
  1148. XM=75E;F-O9&5D(&9I;&5S+@H@(" @(" @(" @(" @+75N<&%C:VEN9R!O9B!M
  1149. XM=6QT:2UP87)T('5U96YC;V1E9"!F:6QE<R!T:&%T('!R;V1U8V4@80H@(" @
  1150. XM(" @(" @(" @("HN>F]O(&%R8VAI=F4@=VAO<V4@8V]N=&5N=',@:7,@;&ES
  1151. XM=&5D+@H@(" @(" @(" @(" @+75N<&%C:VEN9R!O9B!M=6QT:2UP87)T('5U
  1152. XM96YC;V1E9"!F:6QE<R!T:&%T('!R;V1U8V4@80H@(" @(" @(" @(" @("HN
  1153. XM>F]O(&%R8VAI=F4@=VAO<V4@8V]N=&5N=',@:7,@97AT<F%C=&5D+@H*(" @
  1154. XM("!3"%-O"&]R"')T"'0@80AA<@AR= AT:0AI8PAC; AL90AE<PAS(&((8GD(
  1155. XM>0H@(" @(" @("!4:&ES('-P96-I9FEE<R!H;W<@87)T:6-L97,@<VAO=6QD
  1156. XM(&)E('-O<G1E9"X@5&AE(&9O;&QO=VEN9PH@(" @(" @("!S;W)T('1Y<&5S
  1157. XM(&%R92!A;&QO=V5D.@H@(" @(" @(" @(" @+61O;B=T('-O<G0@87)T:6-L
  1158. XM97,@*&1E9F%U;'0I+@H@(" @(" @(" @(" @+7-O<G0@87)T:6-L97,@8GD@
  1159. XM4W5B:F5C=#H@9FEE;&0@*&%S8V5N9&EN9R F(&1E<V-E;F1I;F<I+@H@(" @
  1160. XM(" @(" @(" @+7-O<G0@87)T:6-L97,@8GD@1G)O;3H@9FEE;&0@*&%S8V5N
  1161. XM9&EN9R F(&1E<V-E;F1I;F<I+@H@(" @(" @(" @(" @+7-O<G0@87)T:6-L
  1162. XM97,@8GD@1&%T93H@9FEE;&0@*&%S8V5N9&EN9R F(&1E<V-E;F1I;F<I+@H*
  1163. XM(" @("!3"%-A"&%V"'9E"&4@9 AD:0AI<@AR90AE8PAC= AT;PAO<@AR>0AY
  1164. XM"B @(" @(" @(%1H92!D:7)E8W1O<GD@=VAE<F4@87)T:6-L97,O=&AR96%D
  1165. XM<R!A<F4@=&\@8F4@<V%V960N($1E9F%U;'0*(" @(" @(" @:7,@)%\(2%\(
  1166. XM3U\(35\(12]?"$Y?"&5?"'=?"',N"@H@(" @($T(36$(86D(:6P(;"!D"&1I
  1167. XM"&ER"')E"&5C"&-T"'1O"&]R"')Y"'D*(" @(" @(" @5&AE(&1I<F5C=&]R
  1168. XM>2!W:&5R92!A<G1I8VQE<R]T:')E861S(&%R92!T;R!B92!S879E9"!I;B!M
  1169. XM86EL8F]X"B @(" @(" @(&9O<FUA="X@(%1H:7,@9F5A='5R92!I<R!M86EN
  1170. XM;'D@9F]R('5S92!W:71H('1H92!%;&T@;6%I; H@(" @(" @("!P<F]G<F%M
  1171. XM+B!)="!A;&QO=W,@=&AE('5S97(@=&\@<V%V92!A<G1I8VQE<R]T:')E861S
  1172. XM+V=R;W5P<PH@(" @(" @("!S:6UP;'D@8GD@9VEV:6YG("<])R!A<R!T:&4@
  1173. XM9FEL96YA;64@=&\@<V%V92!T;RX*"B @(" @4 A0<@AR:0AI;@AN= AT90AE
  1174. XM<@AR"B @(" @(" @(%1H92!P<FEN=&5R('!R;V=R86T@=VET:"!O<'1I;VYS
  1175. XM('1H870@:7,@=&\@8F4@=7-E9"!T;R!P<FEN= H@(" @(" @("!A<G1I8VQE
  1176. XM<RX@1&5F875L="!I<R!L<'(@9F]R($)31"!M86-H:6YE<R!A;F0@;' @9F]R
  1177. XM(%-Y<U8*(" @(" @(" @;6%C:&EN97,N"@I+"$M)"$E,"$Q,"$P@00A!4@A2
  1178. XM5 A420A)0PA#3 A,10A%($T(344(14X(3E4(50H@(" @(%1H:7,@;65N=2!I
  1179. XM<R!A8V-E<W-E9"!B>2!P<F5S<VEN9R G7DLG(&%T('1H92!G<F]U<"!A;F0@
  1180. XM<&%G90H@(" @(&QE=F5L<RX@270@86QL;W=S('1H92!U<V5R('1O(&MI;&P@
  1181. XM86X@87)T:6-L92!T:&%T(&UA=&-H97,@=&AE"B @(" @8W5R<F5N="!3=6)J
  1182. XM96-T.B!L:6YE+"!&<F]M.B!L:6YE(&]R(&$@<W1R:6YG(&5N=&5R960@8GD@
  1183. XM=&AE('5S97(N"B @(" @5&AE('5S97(@96YT97)E9"!S=')I;F<@8V%N(&)E
  1184. XM(&%P<&QI960@=&\@=&AE(%-U8FIE8W0Z(&]R($9R;VTZ"B @(" @;&EN97,@
  1185. XM;V8@86X@87)T:6-L92X@5&AE(&MI;&P@9&5S8W)I<'1I;VX@8V%N(&)E(&QI
  1186. XM;6ET960@=&\@=&AE"B @(" @8W5R<F5N="!N97=S9W)O=7 @;W(@:70@8V%N
  1187. XM(&%P<&QY('1O(&%L;"!N97=S9W)O=7!S+B @3VYC92!E;G1E<F5D"B @(" @
  1188. XM=&AE('5S97(@8V%N(&%B;W)T('1H92!C;VUM86YD(&%N9"!N;W0@<V%V92!T
  1189. XM:&4@:VEL;"!D97-C<FEP=&EO;BP*(" @("!E9&ET('1H92!K:6QL(&9I;&4@
  1190. XM;W(@<V%V92!T:&4@:VEL;"!D97-C<FEP=&EO;BX*"B @(" @3VX@<W1A<G1I
  1191. XM;F<@=&EN('1H92!U<V5R<R!K:6QL9FEL92 D7PA(7PA/7PA-7PA%+RY?"'1?
  1192. XM"&E?"&XO7PAK7PAI7PAL7PAL(&ES(')E860@86YD(&]N"B @(" @96YT97)I
  1193. XM;F<@82!N97=S9W)O=7 @86YY(&MI;&P@9&5S8W)I<'1I;VYS(&%R92!A<'!L
  1194. XM:65D+B!!<G1I8VQE<PH@(" @('1H870@;6%T8V@@82!K:6QL(&1E<V-R:7!T
  1195. XM:6]N(&%R92!M87)K960@:VEL;&5D(&%N9"!A<F4@;F]T"B @(" @9&ES<&QA
  1196. XM>65D+@H*"@H*,30@(" @(" @(" @(" @(" @(" @(" @(" @(" @4F5L96%S
  1197. XM92 T+C%2(" @(" @(" @(" @(" @(" @(" @("!.15=3+4]3"@H*"@H*5$E.
  1198. XM*#$I(" @(" @(" @(" @(" @(" @(" @(" @(" @3$]#04P@(" @(" @(" @
  1199. XM(" @(" @(" @(" @(" @(" @5$E.*#$I"@H*"E (4$\(3U,(4U0(5$D(24X(
  1200. XM3D<(1R!!"$%2"%)4"%1)"$E#"$-,"$Q%"$53"%,*(" @("!4:6X@86QL;W=S
  1201. XM('!O<W1I;F<@;V8@87)T:6-L97,L(&9O;&QO=RUU<"!T;R!A;')E861Y('!O
  1202. XM<W1E9 H@(" @(&%R=&EC;&5S(&%N9"!R97!L>6EN9R!D:7)E8W0@=&AR;W5G
  1203. XM:"!M86EL('1O('1H92!A=71H;W(@;V8@86X*(" @("!A<G1I8VQE+@H*(" @
  1204. XM("!5<V4@=&AE("=W)R!C;VUM86YD('1O('!O<W0@86X@87)T:6-L92!T;R!A
  1205. XM(&YE=W-G<F]U<"X@069T97(*(" @("!E;G1E<FEN9R!T:&4@<&]S="!S=6)J
  1206. XM96-T('1H92!D969A=6QT(&5D:71O<B H:64N('9I*2!O<B!T:&4@961I=&]R
  1207. XM"B @(" @<W!E8VEF:65D(&)Y('1H92 D5DE354%,(&5N=FER;VYM96YT('9A
  1208. XM<FEA8FQE('=I;&P@8F4@<W1A<G1E9"!A;F0*(" @("!T:&4@87)T:6-L92!C
  1209. XM86X@8F4@96YT97)E9"X@5&\@8W)O<W-P;W-T(&%R=&EC;&5S('-I;7!L>2!A
  1210. XM9&0@80H@(" @(&-O;6UA(&%N9"!T:&4@;F%M92!O9B!T:&4@;F5W<V=R;W5P
  1211. XM*',I('1O('1H92!E;F0@;V8@=&AE"B @(" @3F5W<V=R;W5P<SH@;&EN92!A
  1212. XM="!T:&4@8F5G:6YN:6YG(&]F('1H92!A<G1I8VQE+B!!9G1E<B!S879I;F<@
  1213. XM86YD"B @(" @97AI=&EN9R!T:&4@961I=&]R('EO=2!A<F4@87-K960@:68@
  1214. XM>6]U('=I<V@@=&\@82EB;W)T('!O<W1I;F<@=&AE"B @(" @87)T:6-L92P@
  1215. XM92ED:70@=&AE(&%R=&EC;&4@86=A:6X@;W(@<"EO<W0@=&AE(&%R=&EC;&4@
  1216. XM=&\@=&AE"B @(" @<W!E8VEF:65D(&YE=W-G<F]U<"AS*2X*"B @(" @57-E
  1217. XM('1H92 G5R<@8V]M;6%N9"!T;R!D:7-P;&%Y(&$@:&ES=&]R>2!O9B!T:&4@
  1218. XM87)T:6-L97,@>6]U(&AA=F4*(" @("!P;W-T960N("!4:&4@9&%T92!T:&4@
  1219. XM87)T:6-L92!W87,@<&]S=&5D+"!W:&EC:"!N97=S9W)O=7!S('1H90H@(" @
  1220. XM(&%R=&EC;&4@=V%S('!O<W1E9"!T;R!A;F0@=&AE(&%R=&EC;&5S('-U8FIE
  1221. XM8W0@;&EN92!A<F4@9&ES<&QA>65D+@H*(" @("!5<V4@=&AE("=F)R O("=&
  1222. XM)R!C;VUM86YD('1O('!O<W0@82!F;VQL;W<M=7 @87)T:6-L92!T;R!A;B!A
  1223. XM;')E861Y"B @(" @<&]S=&5D(&%R=&EC;&4N(%1H92 G1B<@8V]M;6%N9"!W
  1224. XM:6QL(&-O<'D@=&AE('1E>'0@;V8@=&AE(&]R:6=I;F%L"B @(" @87)T:6-L
  1225. XM92!I;G1O('1H92!E9&ET;W(N(%1H92!E9&ET:6YG('!R;V-E9'5R92!I<R!T
  1226. XM:&4@<V%M92!A<R!W:&5N"B @(" @<&]S=&EN9R!A;B!A<G1I8VQE('=I=&@@
  1227. XM=&AE("=W)R!C;VUM86YD+@H*(" @("!5<V4@=&AE("=R)R O("=2)R!C;VUM
  1228. XM86YD('1O(')E<&QY(&1I<F5C="!T:')O=6=H(&UA:6P@=&\@=&AE"B @(" @
  1229. XM875T:&]R(&]F(&%N(&%L<F5A9'D@<&]S=&5D(&%R=&EC;&4N(%1H92 G4B<@
  1230. XM8V]M;6%N9"!W:6QL(&-O<'D@=&AE"B @(" @=&5X="!O9B!T:&4@;W)I9VEN
  1231. XM86P@87)T:6-L92!I;G1O('1H92!E9&ET;W(N(%1H92!E9&ET:6YG('!R;V-E
  1232. XM9'5R90H@(" @(&ES('1H92!S86UE(&%S('=H96X@<&]S=&EN9R!A;B!A<G1I
  1233. XM8VQE('=I=&@@=&AE("=W)R!C;VUM86YD+B!!9G1E<@H@(" @('-A=FEN9R!A
  1234. XM;F0@97AI=&EN9R!T:&4@961I=&]R('EO=2!A<F4@87-K960@:68@>6]U('=I
  1235. XM<V@@=&\@82EB;W)T"B @(" @<V5N9&EN9R!T:&4@87)T:6-L92P@92ED:70@
  1236. XM=&AE(&%R=&EC;&4@86=A:6X@;W(@<REE;F0@=&AE(&%R=&EC;&4*(" @("!T
  1237. XM;R!T:&4@875T:&]R+@H*30A-00A!20A)3 A,20A)3@A.1PA'(% (4$D(25 (
  1238. XM4$D(24X(3D<(1R!0"%!2"%))"$E."$Y4"%1)"$E."$Y'"$<@4@A210A%4 A0
  1239. XM3PA/4PA35 A420A)3@A.1PA'($$(04X(3D0(1"!3"%-!"$%6"%9)"$E."$Y'
  1240. XM"$<@00A!4@A25 A420A)0PA#3 A,10A%4PA3"B @(" @5&AE(&-O;6UA;F0@
  1241. XM:6YT97)F86-E('1O(&UA:6P@*"=M)RDL('!I<&4@*"=\)RDL('!R:6YT("@G
  1242. XM;R<I+ H@(" @(&-R;W-S<&]S=" H)W@G*2!A;F0@<V%V92 H)W,G*2!A<G1I
  1243. XM8VQE<R!I<R!T:&4@<V%M92!F;W(@96%S92!O9@H@(" @('5S92X*"B @(" @
  1244. XM5&AE(&EN:71I86P@8V]M;6%N9"!W:6QL(&%S:R!Y;W4@=&\@<V5L96-T('=H
  1245. XM:6-H(&$I<G1I8VQE+"!T*6AR96%D+ H@(" @(&@I;W0@*&%U=&\@<V5L96-T
  1246. XM960I('(I96=E>"!P871T97)N+"!T*6%G9V5D(&%R=&EC;&5S('EO=2!W:7-H
  1247. XM('1O"B @(" @;6%I;"P@<&EP92!E=&,N"@H@(" @(%1A9V=E9"!A<G1I8VQE
  1248. XM<R!M=7-T(&AA=F4@86QR96%D>2!B965N('1A9V=E9"!W:71H('1H92 G5"<@
  1249. XM8V]M;6%N9"X*(" @("!!;&P@=&%G9V5D(&%R=&EC;&5S(&-A;B!B92!U;G1A
  1250. XM9V=E9"!B>2!T:&4@)U4G('5N=&%G(&-O;6UA;F0N"@H@(" @($EF(')E9V5X
  1251. XM('!A='1E<FX@;6%T8VAI;F<@:7,@<V5L96-T960@>6]U(&%R92!A<VME9"!T
  1252. XM;R!E;G1E<B!A"B @(" @<F5G=6QA<B!E>'!R97-S:6]N("AI92X@=&\@;6%T
  1253. XM8V@@86QL(&%R=&EC;&5S('-U8FIE8W0@;&EN97,*(" @("!C;VYT86EN:6YG
  1254. XM("=N970@3F5W<R<@>6]U(&UU<W0@96YT97(@)RIN970@3F5W<RHG*2X@06YY
  1255. XM(&%R=&EC;&5S"B @(" @=&AA="!M871C:"!T:&4@96YT97)E9"!E>'!R97-S
  1256. XM:6]N('=I;&P@8F4@;6%I;&5D+"!P:7!E9"!E=&,N"@H@(" @(%1O('-A=F4@
  1257. XM87)T:6-L97,@=&\@82!M86EL8F]X('=I=&@@=&AE(&YA;64@;V8@=&AE(&-U
  1258. XM<G)E;G0*(" @("!N97=S9W)O=7 @*&EE+B!!;'0N<V]U<F-E<RD@96YT97(@
  1259. XM)STG(&]R("<]/&UA:6QB;W@@;F%M93XG('=H96X*(" @("!A<VME9"!F;W(@
  1260. XM=&AE('-A=F4@9FEL96YA;64N"@H*"@I.15=3+4]3(" @(" @(" @(" @(" @
  1261. XM(" @(" @("!296QE87-E(#0N,5(@(" @(" @(" @(" @(" @(" @(" @(" @
  1262. XM(" @,34*"@H*"@I424XH,2D@(" @(" @(" @(" @(" @(" @(" @(" @("!,
  1263. XM3T-!3" @(" @(" @(" @(" @(" @(" @(" @(" @("!424XH,2D*"@H*(" @
  1264. XM("!4;R!S879E(&%R=&EC;&5S(&EN(#QN97=S9W)O=7 @;F%M93XO/&9I;&5N
  1265. XM86UE/B!F;W)M870@96YT97(*(" @(" G*SQF:6QE;F%M93XG+@H*(" @("!7
  1266. XM:&5N('-A=FEN9R!A<G1I8VQE<R!Y;W4@8V%N('-P96-I9GD@=VAE=&AE<B!T
  1267. XM:&4@<V%V960@9FEL97,@<VAO=6QD"B @(" @8F4@<&]S="!P<F]C97-S960@
  1268. XM*&EE+B!U;G-H87(@<VAE;&P@87)C:&EV92P@=75D96-O9&4@;75L=&EP;&4*
  1269. XM(" @("!P87)T<R!E=&,I+B @02!D969A=6QT('!R;V-E<W,@='EP92!C86X@
  1270. XM8F4@<V5T(&)Y('1H92 G4')O8V5S<PH@(" @('1Y<&4Z)R!I;B!T:&4@)TTG
  1271. XM(&]P=&EO;G,@;65N=2X*"D$(054(550(5$\(3TT(34$(050(5$D(24,(0R!-
  1272. XM"$U!"$%)"$E,"$Q)"$E."$Y'"$<@00A!3@A.1 A$(%,(4T$(058(5DD(24X(
  1273. XM3D<(1R!."$Y%"$57"%<@3@A.10A%5PA74PA3"B @(" @5&EN(&%L;&]W<R!N
  1274. XM97<O=6YR96%D(&YE=W,@87)T:6-L97,@=&\@8F4@;6%I;&5D("@M32!O<'1I
  1275. XM;VXI+W-A=F5D"B @(" @*"U3(&]P=&EO;BD@:6X@8F%T8V@@;6]D92!F;W(@
  1276. XM;&%T97(@<F5A9&EN9RX@57-E9G5L('=H96X@9V]I;F<@;VX*(" @("!H;VQI
  1277. XM9&%Y(&%N9"!Y;W4@9&]N)W0@=V%N="!T;R!R971U<FX@86YD(&9I;F0@=&AA
  1278. XM="!E>'!I<F4@:&%S"B @(" @<F5M;W9E9"!A('=H;VQE(&QO860@;V8@=6YR
  1279. XM96%D(&%R=&EC;&5S+B!"97-T('1O(')U;B!F<F]M(&-R;VYT86(*(" @("!E
  1280. XM=F5R>61A>2!W:&EL92!A=V%Y+"!A9G1E<B!W:&EC:"!Y;W4@=VEL;"!B92!M
  1281. XM86EL960@82!R97!O<G0@;V8*(" @("!W:&EC:"!A<G1I8VQE<R!W97)E(&UA
  1282. XM:6QE9"]S879E9"!F<F]M('=H:6-H(&YE=W-G<F]U<',@86YD('1H90H@(" @
  1283. XM('1O=&%L(&YU;6)E<B!O9B!A<G1I8VQE<R!M86EL960O<V%V960N("!!<G1I
  1284. XM8VQE<R!A<F4@<V%V960@:6X@80H@(" @('!R:79A=&4@;F5W<R!S=')U8W1U
  1285. XM<F4@=6YD97(@>6]U<B \<V%V961I<CX@9&ER96-T;W)Y("AD969A=6QT(&ES
  1286. XM"B @(" @)%\(2%\(3U\(35\(12]?"$Y?"&5?"'=?"',I+B!"92!C87)E9G5L
  1287. XM(&]F('5S:6YG('1H:7,@;W!T:6]N(&EF('EO=2!R96%D(&$@;&]T(&]F"B @
  1288. XM(" @9W)O=7!S(&)E8V%U<V4@>6]U(&-O=6QD(&]V97)F;&]W('EO=7(@9FEL
  1289. XM97-Y<W1E;2X@268@>6]U(&]N;'D@=V%N= H@(" @('1O('-A=F4@82!F97<@
  1290. XM9W)O=7!S(&ET('=O=6QD(&)E(&)E<W0@=&\@8F%C:W5P('EO=7(@9G5L; H@
  1291. XM(" @("1?"$A?"$]?"$U?"$4O+E\(;E\(95\(=U\(<U\(<E\(8R!A;F0@8W)E
  1292. XM871E(&$@;F5W(&]N92!T:&%T(&]N;'D@8V]N=&%I;G,@=&AE"B @(" @;F5W
  1293. XM<V=R;W5P<R!Y;W4@=V%N="!T;R!M86EL+W-A=F4N("!3879E9"!N97=S(&-A
  1294. XM;B!B92!R96%D(&QA=&5R(&)Y"B @(" @<W1A<G1I;F<@=&EN('=I=&@@=&AE
  1295. XM("U2(&]P=&EO;BX*"B @(" @=&EN("U-(&EA:6X@+68@;F5W<W)C+FUA:6P@
  1296. XM*&UA:6P@86YY('5N<F5A9"!A<G1I8VQE<R!I;B!N97=G<F]U<',*(" @("!S
  1297. XM<&5C:69I960@:6X@9FEL92!N97=S<F,N;6%I;"D*"B @(" @=&EN("U3("UF
  1298. XM(&YE=W-R8RYS879E("AS879E(&%N>2!U;G)E860@87)T:6-L97,@:6X@;F5W
  1299. XM9W)O=7!S"B @(" @<W!E8VEF:65D(&EN(&9I;&4@;F5W<W)C+G-A=F4I"@H@
  1300. XM(" @('1I;B M4B H<F5A9"!A;GD@=6YR96%D(&%R=&EC;&5S('-A=F5D(&)Y
  1301. XM('1I;B M4R!O<'1I;VXI"@I3"%-)"$E'"$=."$Y!"$%4"%15"%52"%)%"$53
  1302. XM"%,*(" @("!4:6X@=VEL;"!R96-O9VYI>F4@82!S:6=N871U<F4@:6X@96ET
  1303. XM:&5R("1?"$A?"$]?"$U?"$4O+E\(<U\(:5\(9U\(;E\(85\(=%\(=5\(<E\(
  1304. XM92!O<@H@(" @("1?"$A?"$]?"$U?"$4O+E\(4U\(:5\(9RX@268@)%\(2%\(
  1305. XM3U\(35\(12\N7PAS7PAI7PAG7PAN7PAA7PAT7PAU7PAR7PAE(&5X:7-T<RP@
  1306. XM=&AE;B!T:&4@<VEG;F%T=7)E('=I;&P@8F4*(" @("!P=6QL960@:6YT;R!T
  1307. XM:&4@961I=&]R(&9O<B!4:6X@;6%I;"!C;VUM86YD<RX@($$@<VEG;F%T=7)E
  1308. XM(&EN"B @(" @)%\(2%\(3U\(35\(12\N7PAS7PAI7PAG7PAN7PAA7PAT7PAU
  1309. XM7PAR7PAE('=I;&P@;F]T(&)E('!U;&QE9"!I;G1O('1H92!E9&ET;W(@9F]R
  1310. XM('!O<W1I;F<*(" @("!C;VUM86YD<R!S:6YC92!T:&4@:6YE=W,@<')O9W)A
  1311. XM;2!W:6QL(&%P<&5N9"!T:&4@<VEG;F%T=7)E(&ET<V5L9BX*"B @(" @02!S
  1312. XM:6=N871U<F4@:6X@)%\(2%\(3U\(35\(12\N7PA37PAI7PAG('=I;&P@8F4@
  1313. XM<'5L;&5D(&EN=&\@=&AE(&5D:71O<B!F;W(@8F]T: H@(" @('!O<W1I;F<@
  1314. XM86YD(&UA:6QI;F<@8V]M;6%N9',N"@H@(" @(%1H92!F;VQL;W=I;F<@:7,@
  1315. XM86X@97AA;7!L92!O9B!A("1?"$A?"$]?"$U?"$4O+E\(4U\(:5\(9R!F:6QE
  1316. XM.@H@(" @(" @(" @3D%-12 @($EA:6X@3&5A"B @(" @(" @("!%34%)3" @
  1317. XM:6%I;B5A;FPT,S,N=75C<$!'97)M86YY+D55+FYE= H@(" @(" @(" @4TY!
  1318. XM24P@($)R=65C:V5N(%-T<F%S<V4@,3(L(#@U,# @3G5E<FYB97)G(#DP+"!'
  1319. XM97)M86YY"B @(" @(" @("!02$].12 @*S0Y+3DQ,2TS,S$Y-C,@*&AO;64I
  1320. XM(" K-#DM.3$Q+3,P.#DM-# W("AW;W)K*0H*10A%3@A.5@A620A)4@A23PA/
  1321. XM30A-10A%3@A.5 A4(%8(5D$(05((4DD(24$(04((0DP(3$4(15,(4PH@(" @
  1322. XM(%0(5$D(24X(3D0(1$D(25((4@H@(" @(" @(" @1&5F:6YE('1H:7,@=F%R
  1323. XM:6%B;&4@:68@>6]U(&1O(&YO="!W86YT('1I;B=S("YT:6X@9&ER96-T;W)Y
  1324. XM"B @(" @(" @("!I;B D2$]-12\N=&EN+B @*&EE+B!I9B!Y;W4@=V%N="!A
  1325. XM;&P@=&EN)W,@<')I=F%T92!F:6QE<R!I;@H*"@H*,38@(" @(" @(" @(" @
  1326. XM(" @(" @(" @(" @(" @4F5L96%S92 T+C%2(" @(" @(" @(" @(" @(" @
  1327. XM(" @("!.15=3+4]3"@H*"@H*5$E.*#$I(" @(" @(" @(" @(" @(" @(" @
  1328. XM(" @(" @3$]#04P@(" @(" @(" @(" @(" @(" @(" @(" @(" @5$E.*#$I
  1329. XM"@H*"B @(" @(" @(" O=&UP+RYT:6X@>6]U('=O=6QD('-E="!424Y$25(@
  1330. XM=&\@8V]N=&%I;B O=&UP+@H*(" @("!."$Y."$Y4"%10"%!3"%-%"$52"%)6
  1331. XM"%9%"$52"%(*(" @(" @(" @(%1H92!D969A=6QT($Y.5% @<V5R=F5R('1O
  1332. XM(')E;6]T96QY(')E860@;F5W<R!F<F]M+B!4:&ES"B @(" @(" @("!V87)I
  1333. XM86)L92!O;FQY(&YE961S('1O(&)E('-E="!I9B!T:&4@+7(@8V]M;6%N9"!L
  1334. XM:6YE(&]P=&EO;B!I<PH@(" @(" @(" @<W!E8VEF:65D(&%N9"!T:&4@9FEL
  1335. XM92 O7PAE7PAT7PAC+U\(;E\(;E\(=%\(<%\(<U\(95\(<E\(=E\(95\(<B!D
  1336. XM;V5S(&YO="!E>&ES="X*"B @(" @1 A$20A)4PA35 A44@A220A)0@A"50A5
  1337. XM5 A420A)3PA/3@A."B @(" @(" @("!3970@=&AE(&%R=&EC;&4@:&5A9&5R
  1338. XM(&9I96QD($1I<W1R:6)U=&EO;CH@=&\@=&AE(&-O;G1E;G1S(&]F"B @(" @
  1339. XM(" @("!T:&4@=F%R:6%B;&4@:6YS=&5A9"!O9B!T:&4@<WES=&5M(&1E9F%U
  1340. XM;'0N"@H@(" @($\(3U((4D<(1T$(04X(3DD(25H(6D$(050(5$D(24\(3TX(
  1341. XM3@H@(" @(" @(" @4V5T('1H92!A<G1I8VQE(&AE861E<B!F:65L9"!/<F=A
  1342. XM;FEZ871I;VXZ('1O('1H92!C;VYT96YT<R!O9@H@(" @(" @(" @=&AE('9A
  1343. XM<FEA8FQE(&EN<W1E860@;V8@=&AE('-Y<W1E;2!D969A=6QT+B!4:&ES('9A
  1344. XM<FEA8FQE(&AA<PH@(" @(" @(" @<')E8V5D96YC92!O=F5R('1H92!F:6QE
  1345. XM("1?"$A?"$]?"$U?"$4O+E\(=%\(:5\(;B]?"&]?"')?"&=?"&%?"&Y?"&E?
  1346. XM"'I?"&%?"'1?"&E?"&]?"&X@=&AA="!M87D@86QS;PH@(" @(" @(" @8V]N
  1347. XM=&%I;B!A;B!O<F=A;FEZ871I;VX@<W1R:6YG+B!)9B!R96%D:6YG(&YE=W,@
  1348. XM;VX@86X@07!O;&QO"B @(" @(" @("!$;VUA:6Y/4R!M86-H:6YE('1H92!E
  1349. XM;G9I<F]N;65N="!V87)I86)L92!.15=33U)'(&AA<R!T;R!B90H@(" @(" @
  1350. XM(" @=7-E9"!I;G-T96%D(&]F($]21T%.25I!5$E/3BX*"B @(" @4@A210A%
  1351. XM4 A03 A,60A95 A43PA/"B @(" @(" @("!3970@=&AE(&%R=&EC;&4@:&5A
  1352. XM9&5R(&9I96QD(%)E<&QY+51O.B!T;R!T:&4@<F5T=7)N(&%D9')E<W,*(" @
  1353. XM(" @(" @('-P96-I9FEE9"!B>2!T:&4@=F%R:6%B;&4N("!4:&ES(&ES('5S
  1354. XM969U;"!I9B!T:&4@;6%C:&EN92!I<PH@(" @(" @(" @;F]T(')E9VES=&5R
  1355. XM960@:6X@=&AE(%550U @;6%I;"!M87!S(&]R(&EF('EO=2!W:7-H('1O(')E
  1356. XM8VEE=F4*(" @(" @(" @(')E<&QI97,@870@82!D:69F97)E;G0@;6%C:&EN
  1357. XM92X@(%1H:7,@=F%R:6%B;&4@:&%S('!R96-E9&5N8V4*(" @(" @(" @(&]V
  1358. XM97(@=&AE(&9I;&4@)%\(2%\(3U\(35\(12\N7PAT7PAI7PAN+U\(<E\(95\(
  1359. XM<%\(;%\(>5\(=%\(;R!T:&%T(&UA>2!A;'-O(&-O;G1A:6X@80H@(" @(" @
  1360. XM(" @<F5T=7)N(&%D9')E<W,N"@H@(" @($$(040(1$0(1%]!"$%$"$1$"$12
  1361. XM"%)%"$53"%-3"%,*(" @(" @(" @(%1H:7,@8V%N(&-O;G1A:6X@86X@861D
  1362. XM<F5S<R!T;R!A<'!E;F0@=&\@=&AE(')E='5R;B!A9&1R97-S"B @(" @(" @
  1363. XM("!W:&5N(')E<&QY:6YG(&1I<F5C=&QY('1H<F]U9V@@;6%I;"!T;R!S;VUE
  1364. XM8F]D>2!W:&]S92!M86EL"B @(" @(" @("!A9&1R97-S(&ES(&YO="!D:7)E
  1365. XM8W1L>2!R96-O9VYI>F5D(&)Y('1H92!L;V-A;"!H;W-T+B!&;W(*(" @(" @
  1366. XM(" @(&5X86UP;&4@<V%Y('1H92!R971U<FX@861D<F5S<R!I<R!?"'5?"'-?
  1367. XM"&5?"') 7PAB7PAI7PAG7PAV7PAA7PAX+"!B=70@7PAB7PAI7PAG7PAV7PAA
  1368. XM7PAX(&ES"B @(" @(" @("!N;W0@<F5C;V=N:7IE9"!B>2!Y;W5R(&AO<W0L
  1369. XM('-O('1H97)F;W)E('1H92!M86EL('=I;&P@;F]T"B @(" @(" @("!R96%C
  1370. XM:"!?"'5?"'-?"&5?"'(N($)U="!T:&4@:&]S="!?"&Q?"&E?"'1?"'1?"&5?
  1371. XM"'9?"&%?"'@@:7,@:VYO=VX@=&\@<F5C;V=N:7IE('EO=7(*(" @(" @(" @
  1372. XM(&AO<W0@86YD(%\(8E\(:5\(9U\(=E\(85\(>"P@<V\@:68@041$7T%$1%)%
  1373. XM4U,@:7,@<V5T("AI92X@)W-E=&5N=@H@(" @(" @(" @041$7T%$1%)%4U,@
  1374. XM0&QI='1E=F%X)R!F;W(@8W-H(&]R("=S970@041$7T%$1%)%4U,@0&QI='1E
  1375. XM=F%X)PH@(" @(" @(" @86YD("=E>'!O<G0@041$7T%$1%)%4U,G(&9O<B!S
  1376. XM:"D@=&AE(&%D9')E<W,*(" @(" @(" @(%\(=5\(<U\(95\(<D!?"&)?"&E?
  1377. XM"&=?"'9?"&%?"'A 7PAL7PAI7PAT7PAT7PAL7PAE7PAV7PAA7PAX('=I;&P@
  1378. XM8F4@=7-E9"!A;F0@=&AE(&UA:6P@=VEL;"!R96%C: H@(" @(" @(" @7PAU
  1379. XM7PAS7PAE7PAR0%\(8E\(:5\(9U\(=E\(85\(>"X@(%1H:7,@=F%R:6%B;&4@
  1380. XM:&%S('!R96-E9&5N8V4@;W9E<B!T:&4@9FEL90H@(" @(" @(" @)%\(2%\(
  1381. XM3U\(35\(12\N7PAT7PAI7PAN+U\(85\(9%\(9%]?"&%?"&1?"&1?"')?"&5?
  1382. XM"'-?"',@=&AA="!M87D@86QS;R!C;VYT86EN(&%N(&%D9')E<W,N"@H@(" @
  1383. XM($((0E4(54<(1U]!"$%$"$1$"$12"%)%"$53"%-3"%,*(" @(" @(" @($EF
  1384. XM('1H92 G0B<@8V]M;6%N9"!B=6<@<F5P;W)T(&UA:6P@861D<F5S<R!I<R!N
  1385. XM;W0@8V]R<F5C="!T:&ES"B @(" @(" @("!V87)I86)L92!S:&]U;&0@8F4@
  1386. XM<V5T('1O('1H92!C;W)R96-T(&UA:6P@861D<F5S<RX@5&AI<PH@(" @(" @
  1387. XM(" @=F%R:6%B;&4@:&%S('!R96-E9&5N8V4@;W9E<B!T:&4@9FEL92 D7PA(
  1388. XM7PA/7PA-7PA%+RY?"'1?"&E?"&XO7PAB7PAU7PAG7U\(85\(9%\(9%\(<E\(
  1389. XM95\(<U\(<PH@(" @(" @(" @=&AA="!M87D@86QS;R!C;VYT86EN(&$@;6%I
  1390. XM;"!A9&1R97-S+@H*(" @("!-"$U!"$%)"$E,"$Q%"$52"%(*(" @(" @(" @
  1391. XM(%1H:7,@=F%R:6%B;&4@:&%S('!R96-E9&5N8V4@;W9E<B!T:&4@9&5F875L
  1392. XM="!M86EL97(@=&AA="!I<PH@(" @(" @(" @=7-E9"!I;B!A;&P@;6%I;&EN
  1393. XM9R!O<&5R871I;VYS('=I=&AI;B!T:6X@*&EE+B!R97!L>6EN9R G<E(G+ H@
  1394. XM(" @(" @(" @86YD(&)U9R!R97!O<G1S("=")RDN"@H*"@H*3D574RU/4R @
  1395. XM(" @(" @(" @(" @(" @(" @(" @4F5L96%S92 T+C%2(" @(" @(" @(" @
  1396. XM(" @(" @(" @(" @(" @(#$W"@H*"@H*5$E.*#$I(" @(" @(" @(" @(" @
  1397. XM(" @(" @(" @(" @3$]#04P@(" @(" @(" @(" @(" @(" @(" @(" @(" @
  1398. XM5$E.*#$I"@H*"B @(" @5@A620A)4PA350A500A!3 A,"B @(" @(" @("!4
  1399. XM:&ES('9A<FEA8FQE(&AA<R!P<F5C961E;F-E(&]V97(@=&AE(&1E9F%U;'0@
  1400. XM961I=&]R("AI92X@=FDI"B @(" @(" @("!T:&%T(&ES('5S960@:6X@86QL
  1401. XM(&5D:71I;F<@;W!E<F%T:6]N<R!W:71H:6X@=&EN("AI92X@<&]S=&EN9PH@
  1402. XM(" @(" @(" @)W<G+"!R97!L>6EN9R G<E(G+"!F;VQL;W<M=7!S("=F1B<@
  1403. XM86YD(&)U9R!R97!O<G1S("=")RDN"@I4"%1)"$E0"%!3"%,@00A!3@A.1 A$
  1404. XM(%0(5%((4DD(24,(0TL(2U,(4PH@(" @(%1H92!F;VQL;W=I;F<@;F5W<V=R
  1405. XM;W5P<R!P<F]V:61E('5S969U;"!I;F9O<FUA=&EO;B!C;VYC97)N:6YG(&YE
  1406. XM=W,*(" @("!S;V9T=V%R93H*(" @(" @(" @+6YE=W,N<V]F='=A<F4N<F5A
  1407. XM9&5R<R H:6YF;RX@86)O=70@;F5W<R!U<V5R(&%G96YT<PH@(" @(" @(" @
  1408. XM=&EN+')N+&YN+'9N(&5T8RXI"B @(" @(" @("UN97=S+G-O9G1W87)E+FYN
  1409. XM=' @*&EN9F\N(&%B;W5T($Y.5% I"B @(" @(" @("UN97=S+G-O9G1W87)E
  1410. XM+F(@*&EN9F\N(&%B;W5T(&YE=W,@=')A;G-P;W)T(&%G96YT<R!";F5W<R F
  1411. XM"B @(" @(" @("!#;F5W<RD*(" @(" @(" @+6YE=W,N86YS=V5R<R H1G)E
  1412. XM<75E;G1L>2!!<VME9"!1=65S=&EO;G,@*$9!42D@86)O=70@;6%N>0H@(" @
  1413. XM(" @(" @9&EF9F5R96YT('1H96UE<RD*"B @(" @36%N>2!P<F]M<'1S("AI
  1414. XM92X@)TUA<FL@979E<GET:&EN9R!A<R!R96%D/R H>2]N*3H@>2<I('=I=&AI
  1415. XM;B!T:6X*(" @("!O9F9E<B!A(&1E9F%U;'0@8VAO:6-E('1H870@=&AE(&-U
  1416. XM<G-O<B!I<R!P;W-I=&EO;F5D(&]N+B!">0H@(" @('!R97-S:6YG(#Q#4CX@
  1417. XM=&AE(&1E9F%U;'0@=F%L=64@:7,@=&%K96XN"@H@(" @(%=H96X@=&EN(&ES
  1418. XM(')U;B!I;B!A;B!X=&5R;2!W:6YD;W<@:70@=VEL;"!R97-I>F4@:71S96QF
  1419. XM(&5A8V@@=&EM90H@(" @('1H92!X=&5R;2!I<R!R97-I>F5D+@H*(" @("!4
  1420. XM:6X@=VEL;"!R97)E860@=&AE(&%C=&EV92!F:6QE(&%T('-E="!I;G1E<G9A
  1421. XM;',@=&\@<VAO=R!A;GD@;F5W"B @(" @;F5W<RX*"D8(1DD(24P(3$4(15,(
  1422. XM4PH@(" @("1?"$A?"$]?"$U?"$4O+E\(;E\(95\(=U\(<U\(<E\(8R @(" @
  1423. XM(" @(" @("!S=6)S8W)I8F5D('1O(&YE=V=R;W5P<RX*(" @(" D7PA(7PA/
  1424. XM7PA-7PA%+RY?"'1?"&E?"&XO7PAT7PAI7PAN7PAR7PAC(" @(" @(" @(&]P
  1425. XM=&EO;G,N"B @(" @)%\(2%\(3U\(35\(12\N7PAT7PAI7PAN+RY?"&E?"&Y?
  1426. XM"&1?"&5?"'@@(" @(" @("!N97=S9W)O=7 @:6YD97@@9FEL97,@9&ER96-T
  1427. XM;W)Y+@H@(" @("1?"$A?"$]?"$U?"$4O+E\(=%\(:5\(;B]?"&%?"&1?"&1?
  1428. XM7PAA7PAD7PAD7PAR7PAE7PAS7PAS(" @(&%D9')E<W,@=&\@861D('1O('=H
  1429. XM96X@<F5P;'EI;F<@=&AR;W5G:"!M86EL+@H@(" @("1?"$A?"$]?"$U?"$4O
  1430. XM+E\(=%\(:5\(;B]?"&%?"&-?"'1?"&E?"'9?"&4@(" @(" @("!U<V5D(&)Y
  1431. XM("UN(&]P=&EO;B!F;W(@;F]T:69Y:6YG('5S97(@;V8@;F5W(&=R;W5P<RX*
  1432. XM(" @(" D7PA(7PA/7PA-7PA%+RY?"'1?"&E?"&XO7PAB7PAU7PAG7U\(85\(
  1433. XM9%\(9%\(<E\(95\(<U\(<R @("!A9&1R97-S('1O('-E;F0@8G5G(')E<&]R
  1434. XM=',@=&\N"B @(" @)%\(2%\(3U\(35\(12\N7PAT7PAI7PAN+U\(:U\(:5\(
  1435. XM;%\(;" @(" @(" @(" @:VEL;"!F:6QE+@H@(" @("1?"$A?"$]?"$U?"$4O
  1436. XM+E\(=%\(:5\(;B]?"&]?"')?"&=?"&%?"&Y?"&E?"'I?"&%?"'1?"&E?"&]?
  1437. XM"&X@("!S=')I;F<@=&\@<F5P;&%C92!D969A=6QT(&]R9V%N:7IA=&EO;BX*
  1438. XM(" @(" D7PA(7PA/7PA-7PA%+RY?"'1?"&E?"&XO7PAP7PAO7PAS7PAT7PAE
  1439. XM7PAD(" @(" @(" @:&ES=&]R>2!O9B!A<G1I8VQE<R!P;W-T960@8GD@=7-E
  1440. XM<BX*(" @(" D7PA(7PA/7PA-7PA%+RY?"'1?"&E?"&XO7PAR7PAE7PAP7PAL
  1441. XM7PAY7PAT7PAO(" @(" @("!H;W-T(&%D9')E<W,@=&\@=7-E(&EN(%)E<&QY
  1442. XM+51O.B!M86EL(&AE861E<BX*(" @(" D7PA(7PA/7PA-7PA%+RY?"'1?"&E?
  1443. XM"&XO7PAU7PAN7PAT7PAH7PAR7PAE7PAA7PAD(" @(" @(&-O;G1A:6YS(&=R
  1444. XM;W5P<R!T:&%T(&%R92!N;W0@=&\@8F4@=&AR96%D960N"B @(" @)%\(2%\(
  1445. XM3U\(35\(12\N7PAS7PAI7PAG7PAN7PAA7PAT7PAU7PAR7PAE(" @(" @(" @
  1446. XM('-I9VYA='5R92X*(" @(" D7PA(7PA/7PA-7PA%+RY?"%-?"&E?"&<@(" @
  1447. XM(" @(" @(" @(" @<VEG;F%T=7)E+@H*0@A"50A51PA'4PA3"B @(" @5&AE
  1448. XM<F4@87)E(&)U9W,@<V]M97=H97)E(&%M;VYG('1H92!C<F5E<&EN9R!F96%T
  1449. XM=7)I<VTN($%N>2!B=6=S"B @(" @9F]U;F0@<VAO=6QD(&)E(')E<&]R=&5D
  1450. XM(&)Y('1H92 G0B<@*&)U9R!R97!O<G0I(&-O;6UA;F0N"@H@(" @(%=I;&P@
  1451. XM;F]T('5U9&5C;V1E('-O;64@;V8@=&AE(&EM86=E<R!I;B!A;'0N8FEN87)I
  1452. XM97,N<&EC='5R97,*(" @("!B96-A=7-E(&UO<F4@=&AA;B!O;F4@:6UA9V4@
  1453. XM:7,@:6X@=&AE(&UU;'1I+7!A<G0@9FEL92!T;R!U=61E8V]D92X*(" @("!/
  1454. XM;FQY('1H92!F:7)S="!I;6%G92!W:6QL(&)E('5U9&5C;V1E9"X*"B @(" @
  1455. XM1&]E<R!N;W0@>65T(&AA;F1L92!8<F5F.B!H96%D97)S(&9O<B!C<F]S<RUP
  1456. XM;W-T960@87)T:6-L97,N"@H*"@H*"C$X(" @(" @(" @(" @(" @(" @(" @
  1457. XM(" @(" @(%)E;&5A<V4@-"XQ4B @(" @(" @(" @(" @(" @(" @(" @3D57
  1458. XM4RU/4PH*"@H*"E1)3B@Q*2 @(" @(" @(" @(" @(" @(" @(" @(" @($Q/
  1459. XM0T%,(" @(" @(" @(" @(" @(" @(" @(" @(" @(%1)3B@Q*0H*"@I("$A)
  1460. XM"$E3"%-4"%1/"$]2"%)9"%D*(" @("!"87-E9"!O;B!T:&4@=&%S<R!N97=S
  1461. XM<F5A9&5R('1H870@=V%S(&1E=F5L;W!E9"!B>2!2:6-H(%-K<F5N=&$@86YD
  1462. XM"B @(" @<&]S=&5D('1O(&%L="YS;W5R8V5S(&EN($UA<F-H(#$Y.3$N(%1A
  1463. XM<W,@=V%S(&ET<V5L9B!H96%V:6QY"B @(" @:6YF;&5U96YC960@8GD@3D]4
  1464. XM15,@=VAI8V@@=V%S(&1E=F5L;W!E9"!A="!T:&4@56YI=F5R<VET>2!O9@H@
  1465. XM(" @($EL;&EN;VES(&)Y(%)A>2!%<W-I8VL@86YD(%)O8B!+;VQS=&%D(&EN
  1466. XM(#$Y.#(N"@H@(" @(%1I;B!V,2XP," H9G5L;"!D:7-T<FEB=71I;VXI('=A
  1467. XM<R!P;W-T960@:6X@."!P87)T<R!T;R!A;'0N<V]U<F-E<PH@(" @(&]N(#(S
  1468. XM($%U9R Q.3DQ+@H@(" @(%1I;B!V,2XP(%!,,2 H9G5L;"!D:7-T<FEB=71I
  1469. XM;VXI('=A<R!P;W-T960@:6X@."!P87)T<R!T;PH@(" @(&%L="YS;W5R8V5S
  1470. XM(&]N(# S(%-E<" Q.3DQ+@H@(" @(%1I;B!V,2XP(%!,,B H9G5L;"!D:7-T
  1471. XM<FEB=71I;VXI('=A<R!P;W-T960@:6X@.2!P87)T<R!T;PH@(" @(&%L="YS
  1472. XM;W5R8V5S(&]N(#(T(%-E<" Q.3DQ+@H@(" @(%1I;B!V,2XP(%!,,R H<&%T
  1473. XM8V@I('=A<R!P;W-T960@:6X@-"!P87)T<R!T;R!A;'0N<V]U<F-E<R!O;B S
  1474. XM,"!397 *(" @(" Q.3DQ+@H@(" @(%1I;B!V,2XP(%!,-" H<&%T8V@I('=A
  1475. XM<R!P;W-T960@:6X@,B!P87)T<R!T;R!A;'0N<V]U<F-E<R!O;B P,B!/8W0*
  1476. XM(" @(" Q.3DQ+@H@(" @(%1I;B!V,2XP(%!,-2 H<&%T8V@I('=A<R!P;W-T
  1477. XM960@:6X@-"!P87)T<R!T;R!A;'0N<V]U<F-E<R!O;B Q-R!/8W0*(" @(" Q
  1478. XM.3DQ+@H@(" @(%1I;B!V,2XP(%!,-B H<&%T8V@I('=A<R!P;W-T960@:6X@
  1479. XM-2!P87)T<R!T;R!A;'0N<V]U<F-E<R!O;B R-R!.;W8*(" @(" Q.3DQ+@H@
  1480. XM(" @(%1I;B!V,2XP(%!,-R H<&%T8V@I('=A<R!P;W-T960@:6X@,B!P87)T
  1481. XM<R!T;R!A;'0N<V]U<F-E<R!O;B R-R!.;W8*(" @(" Q.3DQ+@H@(" @(%1I
  1482. XM;B!V,2XQ(%!,," H9G5L;"!D:7-T<FEB=71I;VXI('=A<R!P;W-T960@:6X@
  1483. XM,3$@<&%R=',@=&\*(" @("!A;'0N<V]U<F-E<R!O;B Q,R!&96(@,3DY,BX*
  1484. XM(" @("!4:6X@=C$N,2!03#$@*&9U;&P@9&ES=')I8G5T:6]N*2!W87,@<&]S
  1485. XM=&5D(&EN(#$R('!A<G1S('1O"B @(" @86QT+G-O=7)C97,@;VX@,C0@36%R
  1486. XM(#$Y.3(N"B @(" @5&EN('8Q+C$@4$PR("AP871C:"D@=V%S('!O<W1E9"!I
  1487. XM;B T('!A<G1S('1O(&%L="YS;W5R8V5S(&]N(#,P($UA<@H@(" @(#$Y.3(N
  1488. XM"B @(" @5&EN('8Q+C$@4$PS("AF=6QL(&1I<W1R:6)U=&EO;BD@=V%S('!O
  1489. XM<W1E9"!I;B _/R!P87)T<R!T;PH@(" @(&%L="YS;W5R8V5S(&]N(#$S($UA
  1490. XM>2 Q.3DR+@H*0PA#4@A210A%1 A$20A)5 A44PA3"B @(" @4FEC:"!3:W)E
  1491. XM;G1A"B @(" @(" @("!A=71H;W(@;V8@=&%S<R!V,RXR('=H:6-H('1H:7,@
  1492. XM;F5W<W)E861E<B!U<V5D(&%S(&ET<R!B87-E+@H*(" @("!$879E(%1A>6QO
  1493. XM<@H@(" @(" @(" @875T:&]R(&]F(&-U<G-E<RYC(&9R;VT@=&AE(&5L;2!M
  1494. XM86EL<F5A9&5R+@H*(" @("!2:6-H(%-A;'H*(" @(" @(" @(&%U=&AO<B!O
  1495. XM9B!W:6QD;6%T+F,@<&%T=&5R;B!M871C:&EN9R!R;W5T:6YE+@H*(" @("!#
  1496. XM:')I<R!4:&5W86QT"B @(" @(" @("!A=71H;W(@;V8@9V5T;&EN92YC(&5M
  1497. XM86-S('-T>6QE(&5D:71I;F<@<F]U=&EN92X*"B @(" @1&EE=&5R($)E8VME
  1498. XM<@H@(" @(" @(" @9F]R(&=E;F5R;W5S;'D@<&]S=&EN9R!C97)T86EN('9E
  1499. XM<G-I;VYS(&%N9"!P871C:&5S(&9O<B!M90H@(" @(" @(" @=VAE;B!M>2!N
  1500. XM970@8V]N;F5C=&EO;B!W87,@<F5M;W9E9"!B>2!A(&=R;W5P(&]F('9E<GD@
  1501. XM<VAO<G0*(" @(" @(" @('-I9VAT960@<&5O<&QE+@H*(" @("!)('=I<V@@
  1502. XM=&\@=&AA;FL@=&AE(&9O;&QO=VEN9R!P96]P;&4@9F]R('-U<'!L>6EN9R!P
  1503. XM871C:',Z"@H@(" @($%N=&]N($%Y;'=A<F0L($1I971E<B!"96-K97(L($1A
  1504. XM;B!"97)R>2P@36%R8R!";W5C:&5R+"!,96EL80H*"@H*3D574RU/4R @(" @
  1505. XM(" @(" @(" @(" @(" @(" @4F5L96%S92 T+C%2(" @(" @(" @(" @(" @
  1506. XM(" @(" @(" @(" @(#$Y"@H*"@H*5$E.*#$I(" @(" @(" @(" @(" @(" @
  1507. XM(" @(" @(" @3$]#04P@(" @(" @(" @(" @(" @(" @(" @(" @(" @5$E.
  1508. XM*#$I"@H*"B @(" @0G5R<F5L;"U$879I<RP@4F]B97)T($-L865S;VXL(%-T
  1509. XM979E;B!#;V=S=V5L;"P@3F5D($1A;FEE;&5Y+"!"<F5N= H@(" @($5R;6QI
  1510. XM8VLL($-A<FP@2&%G92P@4&%U;"!(86QS96UA+"!%9"!(86YW87DL(%1O<G-T
  1511. XM96X@2&]M97EE<BP*(" @("!.96QS;VX@2V%D:6YG+"!&<FET>B!+;&5E;6%N
  1512. XM+"!+87)L+4MO96YI9R!+;V5N:6=S<V]N+"!+<FES($MU9V5L+ H@(" @($AA
  1513. XM:V%N($QE;FYE<W1A;"P@0VQI9F9O<F0@3'5K92P@36EC:&%E;"!&875R;W0L
  1514. XM($1A=FED($UA8TME;GII92P*(" @("!":6QL(%!O:71R87,L($II;2!2;V)I
  1515. XM;G-O;BP@4W1E<&AE;B!2;W-E;6%N+"!.:6-K;VQA>2!3875K:"P@4FEC: H@
  1516. XM(" @(%-A;'HL($IO:&X@4V%U=&5R+"!"87)T(%-E87)S+"!+87)L+4]L878@
  1517. XM4V5R<F%N9&5R+"!$;W5G(%-E=V5L;"P*(" @("!#;&EF9B!3=&%N9F]R9"P@
  1518. XM4W1E=F4@4W1A<F-K+"!-:6-H865L(%1R875B+"!!9')I(%9E<FAO968L($-A
  1519. XM<GD*(" @("!7:&ET;F5Y+"!,;&]Y9"!7<FEG:'0*"B @(" @22!W:7-H('1O
  1520. XM('1H86YK('1H92!F;VQL;W=I;F<@<&5O<&QE(&9O<B!B=6<@<F5P;W)T<R]C
  1521. XM;VUM96YT<SH*"B @(" @2VQA=7,@07)Z:6<L(%-C;W1T($)A8F(L(%)E:6YE
  1522. XM<B!"86QL:6YG+"!0<F5S=&]N($)A;FYI<W1E<BP@0FEL;"!D90H@(" @($)E
  1523. XM86)I96XL(%9O;&ME<B!"97EE<BP@171I96YN92!":61O+"!2;V=E<B!":6YN
  1524. XM<RP@1V5O<F<@0FEE:&QE<BP*(" @("!*96%N+4UA<F,@0F]N;F%U9&5T+"!)
  1525. XM86X@0G)O=VXL($%N9')E87,@0G)O<VEG+"!4;VT@0WIA<FYI:RP@1&%V:60*
  1526. XM(" @("!$;VYO=F%N+"!0971E<B!$<F5S<VQE<BP@1V5R:&%R9"!%<FUE<BP@
  1527. XM2'5G:"!&861E<BP@2F]A8VAI;2!&96QD+ H@(" @(%!A=6P@1F]X+"!"97)N
  1528. XM:&%R9"!';65L8V@L(%9I970@2&]A;F<L($%N9'D@2F%C:W-O;BP@2F]E($IO
  1529. XM:&YS;VXL"B @(" @0WER:6QL($IU;F<L($MU;RU#:&5I;B!+86DL($AA;G,M
  1530. XM2G5E<F=E;B!+;F]P<"P@0F5R;FAA<F0@2W)O96YU;F<L"B @(" @375R<F%Y
  1531. XM($QA:6YG+"!097(@3&EN9'%V:7-T+"!";V(@3'5K87,L($MA>G5S:&D@36%R
  1532. XM=6MA=V$L(%!H:6QL:7 *(" @("!-;VQL;WDL(%1O;FD@365T>BP@1W)E9R!-
  1533. XM:6QL97(L($ML875S($YE=6)E<F=E<BP@3W1T;R!.:65S<V5R+ H@(" @(%)E
  1534. XM:6YE<B!/96QH868L(%=O;&8@4&%U;"P@2F]H;B!086QK;W9I8RP@06YD<F5W
  1535. XM(%!H:6QL:7!S+"!3=&5F86X*(" @("!2871H;6%N;BP@2F]N87,@4G=G;7ER
  1536. XM+"!4960@4FEC:&%R9',L($1A96UO;B!38VAA969E<BP@2VQA;65R"B @(" @
  1537. XM4V-H=71T92P@1G)E9'D@4V-H=V%T>BP@0F5R;F0@4V-H=V5R:6XL($-H<FES
  1538. XM(%-M:71H+"!$86YI96P@4VUI=&@L"B @(" @4W1E=F4@4W!E87)M86XL($AI
  1539. XM<F]N;V)U(%1A:V%H87-H:2P@4W9E;B!797)N97(L($<N(%=O;V1B=7)Y+"!/
  1540. XM<F5S= H@(" @(%IB;W)O<VMI"@I!"$%5"%54"%1("$A/"$]2"%(*(" @("!)
  1541. XM86EN($QE80H@(" @(" @(" @*&EA:6XE86YL-#,S+G5U8W! 1V5R;6%N>2Y%
  1542. XM52YN970I"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@HR," @(" @(" @
  1543. XM(" @(" @(" @(" @(" @(" @("!296QE87-E(#0N,5(@(" @(" @(" @(" @
  1544. X4(" @(" @(" @($Y%5U,M3U,*"@I2
  1545. Xend
  1546. END_OF_FILE
  1547.   if test 29300 -ne `wc -c <'tin.nrf.UU.b'`; then
  1548.     echo shar: \"'tin.nrf.UU.b'\" unpacked with wrong size!
  1549.   elif test -f tin.nrf.UU.a; then
  1550.     echo shar: \"'Uudecoding tin.nrf'\"
  1551.     cat tin.nrf.UU.a tin.nrf.UU.b | uudecode
  1552.     if test 48215 -ne `wc -c <'tin.nrf'`; then
  1553.         echo shar: \"'tin.nrf'\" uudecoded with wrong size!
  1554.     else
  1555.         rm -f tin.nrf.UU.a tin.nrf.UU.b 
  1556.     fi
  1557.   fi
  1558.   # end of 'tin.nrf.UU.b'
  1559. fi
  1560. echo shar: End of archive 4 \(of 14\).
  1561. cp /dev/null ark4isdone
  1562. MISSING=""
  1563. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
  1564.     if test ! -f ark${I}isdone ; then
  1565.     MISSING="${MISSING} ${I}"
  1566.     fi
  1567. done
  1568. if test "${MISSING}" = "" ; then
  1569.     echo You have unpacked all 14 archives.
  1570.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1571. else
  1572.     echo You still must unpack the following archives:
  1573.     echo "        " ${MISSING}
  1574. fi
  1575. exit 0
  1576. exit 0 # Just in case...
  1577.