[comp.sources.games] v10i075: nethack3p9 - display oriented dungeons & dragons

billr@saab.CNA.TEK.COM (Bill Randle) (07/12/90)

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 10, Issue 75
Archive-name: nethack3p9/Part30
Supersedes: NetHack3: Volume 7, Issue 56-93



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 30 (of 56)."
# Contents:  include/artifact.h mac/MacAlert.c mac/NH.proj.hqx
# Wrapped by billr@saab on Wed Jul 11 17:11:36 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'include/artifact.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'include/artifact.h'\"
else
echo shar: Extracting \"'include/artifact.h'\" \(1594 characters\)
sed "s/^X//" >'include/artifact.h' <<'END_OF_FILE'
X/*	SCCS Id: @(#)artifact.h	3.0	88/07/27
X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X/* NetHack may be freely redistributed.  See license for details. */
X
X#ifdef NAMED_ITEMS
X#ifndef ARTIFACT_H
X#define ARTIFACT_H
X
X#define SPFX_NONE   0x0000	/* no special effects, just a bonus */
X#define SPFX_NOGEN  0x0001	/* item is special, bequeathed by gods */
X#define SPFX_RESTR  0x0002	/* item is restricted - can't be named */
X#define	SPFX_INTEL  0x0004	/* item is self-willed - intelligent */
X#define SPFX_SPEEK  0x0008	/* item can speak */
X#define SPFX_SEEK   0x0010	/* item helps you search for things */
X#define SPFX_WARN   0x0020	/* item warns you of danger */
X#define SPFX_ATTK   0x0040	/* item has a special attack (attk) */
X#define SPFX_DEFN   0x0080	/* item has a special defence (defn) */
X#define SPFX_DRLI   0x0100	/* drains a level from monsters */
X#define SPFX_SEARCH 0x0200	/* helps searching */
X#define SPFX_DMONS  0x1000	/* attack bonus on one monster type */
X#define	SPFX_DCLAS  0x2000	/* attack bonus on monsters w/ symbol mtype */
X#define	SPFX_DFLAG1 0x4000	/* attack bonus on monsters w/ mflags1 flag */
X#define	SPFX_DFLAG2 0x8000	/* attack bonus on monsters w/ mflags2 flag */
X
X#define SPFX_DBONUS 0xF000	/* attack bonus mask */
X
Xstruct artifact {
X	unsigned    otyp;
X	const char  *name;
X	unsigned    spfx;
X	unsigned long mtype;	/* monster type, symbol, or flag */
X	struct attack attk, defn;
X	uchar	    align;	/* alignment of bequeathing gods */
X	char	    class;	/* character class associated with */
X};
X
X#endif /* ARTIFACT_H /* */
X#endif /* NAMED_ITEMS /* */
END_OF_FILE
if test 1594 -ne `wc -c <'include/artifact.h'`; then
    echo shar: \"'include/artifact.h'\" unpacked with wrong size!
fi
# end of 'include/artifact.h'
fi
if test -f 'mac/MacAlert.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mac/MacAlert.c'\"
else
echo shar: Extracting \"'mac/MacAlert.c'\" \(24474 characters\)
sed "s/^X//" >'mac/MacAlert.c' <<'END_OF_FILE'
X/*	SCCS Id: @(#)MacAlert.c		3.0	90/01/06
X/*      Copyright (c) Jon Watte  1989		*/ 
X/* NetHack may be freely redistributed.  See license for details. */
X
X#include "hack.h"	/* */
X
X/* UseMacAlert is like UseMacAlertText, but without the text parameter.
X   This is so you can simply say "UseMacAlert(CAUTION)" or similar, if
X   you use predefined alert numbers.
X*/
X
X
Xextern WindowPtr HackWindow;
X
X
Xint
XUseMacAlert(MAno)
Xint MAno;
X{
X	return UseMacAlertText(MAno, 0L);
X}
X
X
X/* UseMacAlertText fetches a record in a resource of type MAlt, and uses
X   this as a template calling MacAlert. This is so you can have ready-
X   made resources, like ALRT templates, for your MacAlerts, which makes
X   it easier to customize the program, and to translate it. It also
X   makes for clearer code...
X   
X   If the txt argument is NULL, the text from the template is used,
X   otherwise the sypplied text is used.
X*/
Xint
XUseMacAlertText(MAno, txt)
Xint MAno;
Xchar * txt;
X{
X	MAlrtHandle foo;
X	MAlrtPtr bar;
X	int item;
X
X	SetResLoad(1);
X	foo = (MAlrtHandle) GetResource(MAtype, MAno);
X	if(foo) {
X		MoveHHi(foo);
X		HLock(foo);
X		bar = *foo;
X		item = MacAlert(bar->width, bar->height, bar->PICTno,
X			txt != 0L ? txt : bar->text, bar->but1, bar->but2, bar->but3,
X			bar->but4, bar->def, bar->esc);
X	} else {
X		if(!flags.silent) SysBeep(20);
X		item = -1;
X	}
X
X	ReleaseResource(foo);
X	DisposHandle(foo);
X	return item;
X}
X
X
X/* This is the MacAlert function. It creates a new window, frames it
X   (like a modal dialog) and tries to position the various buttons,
X   text and picture in a reasonable way. The arguments are:
X   
X   width : width of the window. If less than a constant, it defaults
X           to that constant.
X   height: see width.
X   PICTno: Resource ID of a PICT to display. If 0, no PICT is displayed.
X   text  : the C string containing the relevant text to be displayed.
X   but1 -: These are the button texts. Empty strings (they point at 0)
X   - but4: makes that button go away. If all are empty, the default OK
X           button text is used.
X   def   : This is which button is default, starting button # 1.
X   esc   : This is the button that corresponds to the ESC key.
X
X   The function returns the button hit, or maybe -1 on error.
X*/
Xint
XMacAlert(width, height, PICTno, text, but1, but2, but3, but4, def, esc)
Xint width, height, PICTno;
Xchar * text,* but1, * but2, * but3, * but4;
Xint def, esc;
X{
X	PicHandle thePICT;
X	char border[8];
X	EventRecord theEvent;
X	GrafPtr savedPort;
X	WindowPtr theWindow, tmpWind;
X	Rect bounds, textBox, brect[4];
X	char hilite[4], * but[4], s1[2], s2[2];
X	int nobutts, x, pool, spacing, heig, bwid[4],
X		item, c, ret;
X	long finalTicks;
X
X	memset(hilite, sizeof(hilite), 0);
X	memset(bwid, sizeof(bwid), 0);
X	SetCursor(&arrow);
X	def--;
X	esc--;
X	GetPort(&savedPort);
X
X	if(PICTno)
X		thePICT = (PicHandle) GetResource('PICT', PICTno);
X	else
X		thePICT = 0;
X	if(thePICT) DetachResource(thePICT);
X	bounds = (MAINGRAFPORT)->portRect;
X
X	but[0] = but1;
X	but[1] = but2;
X	but[2] = but3;
X	but[3] = but4;
X
X	if(width > bounds.right) width = bounds.right;
X	if(width < MIN_WIDTH) width = MIN_WIDTH;
X	if(height > bounds.bottom) height = bounds.bottom;
X	if(height < MIN_HEIGHT) height = MIN_HEIGHT;
X
X	InsetRect(&bounds, (int) ((bounds.right - width) >> 1), (int)
X		((bounds.bottom - height) >> 1));
X	theWindow = NewWindow(0L, &bounds, "", 1, plainDBox, 0L, 0, 0L);
X	ShowWindow(theWindow);
X	SelectWindow(theWindow);
X	SetPort(theWindow);
X	OffsetRect(&bounds, - bounds.left, - bounds.top);
X
X	nobutts = 0;
X	if(but1[0]) nobutts=1;
X	if(but2[0]) nobutts=2;
X	if(but3[0]) nobutts=3;
X	if(but4[0]) nobutts=4;
X
X	if(!nobutts) {
X		but[0] = "OK";
X		nobutts++;
X	}
X
X	spacing = 0;
X	for(x=0 ; x < nobutts; x++) {
X		bwid[x] = TextWidth(but[x], 0, strlen(but[x])) + 2 * BUT_MARGIN;
X		spacing += bwid[x] + BUT_SPACING;
X	}
X
X	pool = bounds.right - 2 * BUT_MARGIN;
X
X	heig = 1;
X	while(spacing / heig > pool - (nobutts - 1) * BUT_SPACING) {
X		heig++;
X	}
X
X	for(x=0; x<nobutts; x++) {
X		bwid[x] = (int) ((float) bwid[x] / spacing * pool);
X	}
X
X	pool = BUT_MARGIN + BUT_SPACING;
X	heig = bounds.bottom - BUT_MARGIN - BUT_SPACING - BUT_HEIGHT * heig;
X	for(x=0; x<nobutts; x++) {
X		SetRect(&(brect[x]), pool, heig, pool + bwid[x], bounds.bottom -
X			BUT_SPACING - BUT_MARGIN);
X		pool += bwid[x] + BUT_SPACING;
X		hilite[x] = 0;
X	}
X
X	InsetRect(&bounds, 2, 2);
X	textBox = bounds;
X	if(thePICT) {
X		textBox.left += (*thePICT)->picFrame.right;
X	}
X	textBox.left += 8;
X	textBox.right -= 8;
X	textBox.top += 8;
X	textBox.bottom = heig - BUT_MARGIN;
X	if(textBox.bottom < textBox.top + 15) {
X		textBox.bottom = bounds.bottom - 8;
X	}
X
X	goto mainLoop;
X
XdrawWindow:
X	SetPort(theWindow);
X	EraseRect(&(theWindow->portRect));
X	PenNormal();
X	PenSize(BORDER_WIDTH, BORDER_WIDTH);
X	GetIndPattern((void *) border, 0, BORDER_PAT);
X	PenPat(border);
X	FrameRect(&bounds);
X
X	PenNormal();
X
X	if(thePICT) {
X		HLock(thePICT);
X		DrawPicture(thePICT, &((*thePICT)->picFrame));
X		HUnlock(thePICT);
X	}
X
X	PenNormal();
X	TextFont(0);
X	TextSize(12);
X	TextBox(text, strlen(text), &textBox, teJustLeft);
X
X	for(x=0; x<nobutts; x++) {
X		EraseRoundRect(&(brect[x]), BUT_CORNER, BUT_CORNER);
X		FrameRoundRect(&(brect[x]), BUT_CORNER, BUT_CORNER);
X		InsetRect(&(brect[x]), BUT_MARGIN, 3);
X		TextBox(but[x], strlen(but[x]), &(brect[x]), teJustCenter);
X		InsetRect(&(brect[x]), - BUT_MARGIN, - 3);
X		if(hilite[x]) {
X			InvertRoundRect(&(brect[x]), BUT_CORNER, BUT_CORNER);
X		}
X		if(x == def) {
X			PenSize(FRAME_WIDTH, FRAME_WIDTH);
X			InsetRect(&(brect[x]), - FRAME_WIDTH - FRAME_OFFSET,
X				- FRAME_WIDTH - FRAME_OFFSET);
X			FrameRoundRect(&(brect[x]), FRAME_CORNER, FRAME_CORNER);
X			InsetRect(&(brect[x]), FRAME_WIDTH + FRAME_OFFSET,
X				FRAME_WIDTH + FRAME_OFFSET);
X			PenNormal();
X		}
X	}
X
XmainLoop:
X	while(1) {
X		if(WaitNextEvent(-1, &theEvent, 10L, 0L)) {
X			switch(theEvent.what) {
X
X			case updateEvt :
X				BeginUpdate((WindowPtr) theEvent.message);
X				EndUpdate((WindowPtr) theEvent.message);
X				goto drawWindow;
X
X			case mouseDown :
X				if (FindWindow(theEvent.where, &tmpWind) < inContent ||
X					tmpWind != theWindow) {
X					if(!flags.silent) SysBeep(20);
X					item = -1;
X				} else {
X					item = TrackThem(brect, hilite, nobutts);
X				}
X				if(item >= 0) {
X					Delay(FLASH_TIME, &finalTicks);
X					InvertRoundRect(&(brect[item]), BUT_CORNER, BUT_CORNER);
X					ret = item + 1;
X					goto getout;
X				}
X				break;
X
X			case keyDown :
X				c = theEvent.message & 0xFF;
X				if((c == 13) || (c == 3)) {
X					if(def >= 0) {
X						InvertRoundRect(&(brect[def]), BUT_CORNER, BUT_CORNER);
X						Delay(FLASH_TIME, &finalTicks);
X						InvertRoundRect(&(brect[def]), BUT_CORNER, BUT_CORNER);
X						ret = def + 1;
X						goto getout;
X					}
X				}
X				if(c == 27) {
X					if(esc >= 0) {
X						InvertRoundRect(&(brect[esc]), BUT_CORNER, BUT_CORNER);
X						Delay(FLASH_TIME, &finalTicks);
X						InvertRoundRect(&(brect[esc]), BUT_CORNER, BUT_CORNER);
X						ret = esc + 1;
X						goto getout;
X					}
X				}
X				for(x=0; x<nobutts; x++) {
X					s1[0] = 1;
X					s1[1] = c;
X					s2[0] = 1;
X					s2[1] = but[x][0];
X					UprString(s1, 1);
X					UprString(s2, 1);
X					if(s1[1] == s2[1]) {
X						InvertRoundRect(&(brect[x]), BUT_CORNER, BUT_CORNER);
X						Delay(FLASH_TIME, &finalTicks);
X						InvertRoundRect(&(brect[x]), BUT_CORNER, BUT_CORNER);
X						ret = x + 1;
X						goto getout;
X					}
X				}
X
X				PenSize(FRAME_WIDTH, FRAME_WIDTH);
X				InsetRect(&(brect[def]), - FRAME_WIDTH - FRAME_OFFSET,
X					- FRAME_WIDTH - FRAME_OFFSET);
X				PenMode(patXor);
X				FrameRoundRect(&(brect[def]), FRAME_CORNER, FRAME_CORNER);
X				InsetRect(&(brect[def]), FRAME_WIDTH + FRAME_OFFSET,
X					FRAME_WIDTH + FRAME_OFFSET);
X				PenNormal();
X
X				def++;
X				def %= nobutts;
X
X				PenSize(FRAME_WIDTH, FRAME_WIDTH);
X				InsetRect(&(brect[def]), - FRAME_WIDTH - FRAME_OFFSET,
X					- FRAME_WIDTH - FRAME_OFFSET);
X				FrameRoundRect(&(brect[def]), FRAME_CORNER, FRAME_CORNER);
X				InsetRect(&(brect[def]), FRAME_WIDTH + FRAME_OFFSET,
X					FRAME_WIDTH + FRAME_OFFSET);
X				PenNormal();
X
X				break;
X
X			default:
X				;
X			}
X		}
X	}
X
Xgetout:
X	DisposeWindow(theWindow);
X	if(thePICT) DisposHandle(thePICT);
X	SetPort(savedPort);
X
X	return ret;
X}
X
X
X/* TrackThem is a help function to MacAlert, it tracks buttons,
X   returns the button number (0 - (no_butts-1)) or -1 if no button
X   was hit. */
Xint
XTrackThem(b_rect, hi_lite, no_butts)
XRect * b_rect;
Xchar * hi_lite;
Xint no_butts;
X{
XPoint p;
Xint x, i;
X
X	while(Button()) {
X		SystemTask();
X		GetMouse(&p);
X		for(x=0; x<no_butts; x++) {
X			if(PtInRect(p, &(b_rect[x]))) {
X				if(!hi_lite[x]) {
X					hi_lite[x] = 1;
X					InvertRoundRect(&(b_rect[x]), BUT_CORNER, BUT_CORNER);
X				}
X			} else {
X				if(hi_lite[x]) {
X					hi_lite[x] = 0;
X					InvertRoundRect(&(b_rect[x]), BUT_CORNER, BUT_CORNER);
X				}
X			}
X		}
X	}
X
X	i = -1;
X	for(x=0; x<no_butts; x++) {
X		if(hi_lite[x]) i=x;
X	}
X
X	return i;
X}
X
X
X/* #defines for the mini-pager */
X
X#define SLACK 400 /* How much extra is taken per chunk ? */
X#define TAB_SIZE 8 /* How large tabs ? */
X
X#define X_POS 8 /* Window init pos */
X#define Y_POS 64
X#define X_SIZE 80 /* Window size */
X#define Y_SIZE 24
X#define X_BORDER 20 /* Extra space besides text */
X#define Y_BORDER 4
X#define TOP_MARGIN 2 /* Offset of text from border */
X#define LEFT_MARGIN 2
X#define MAX_LINE_LEN 128
X
X#include <ControlMgr.h>
X
Xtypedef struct select {
X	long start;
X	long end;
X	long startline;
X	long endline;
X} SELECTION;
X
Xextern WindowPtr HackWindow;
X
Xstatic WindowPtr PagerWindow;
Xstatic width, height;
Xstatic Handle theData;
Xstatic long length, textPos;
Xstatic Rect text_area;
Xstatic Rect windowSize;
Xstatic int inited;
Xstatic ControlHandle theScrollBar;
Xstatic int scrollMax = 0, scrollPt = 0;
Xstatic long ** lineStarts;
Xstatic long noRs;
Xstatic MenuHandle editMenuH;
Xstatic SELECTION theSelect, oldSelect;
X
Xint DoMenu(long selection);
Xvoid DoScroll(long amount);
X
X
X/* The mini-pager */
X
X
Xlong
XLineLength(long from, long lines)
X{
Xlong ndx;
X	if(lines + from > noRs) ndx = noRs;
X	else ndx = lines + from;
X	return (*lineStarts)[ndx] - (*lineStarts)[from];
X}
X
X
Xlong
XWhatOffset(Point p, long * line)
X{
Xint x, y;
Xlong l, ndx;
X
X	x = (p.h - LEFT_MARGIN) / width;
X	if(x < 0) x = 0;
X	y = (p.v - TOP_MARGIN) / height;
X	if(y < 0) {
X		y = 0;
X		DoScroll(-1);
X	} else if(y >= Y_SIZE) {
X		y = Y_SIZE;
X		DoScroll(1);
X	}
X	l = y + scrollPt > noRs-1 ? noRs-1 : y + scrollPt;
X	ndx = x + (*lineStarts)[l];
X	if(l == noRs) ndx = length;
X	else if(ndx > (*lineStarts)[l+1]) ndx = (*lineStarts)[l+1];
X
X	* line = l;
X	return ndx;
X}
X
X
Xvoid
XInvertRange(SELECTION * s, Rect * cr)
X{
Xlong sc = s->start;
Xlong ec = s->end;
Xlong sl = s->startline;
Xlong el = s->endline;
Xint sx, ex;
XRect r;
X
X#define HilitePtr (void *) 0x938
X
X	if(sc > ec) {
X	long t = sc;
X		sc = ec;
X		ec = t;
X		t = sl;
X		sl = el;
X		el = t;
X	}
X
X	sx = sc - (*lineStarts)[sl];
X	ex = ec - (*lineStarts)[el];
X	sl -= scrollPt;
X	el -= scrollPt;
X	r = text_area;
X	ClipRect(cr ? cr : &r);
X	if(el == sl) {
X		SetRect(&r, sx * width, sl * height, ex * width, (el + 1) * height);
X		OffsetRect(&r, LEFT_MARGIN, TOP_MARGIN);
X		BitClr(HilitePtr, pHiliteBit);
X		InvertRect(&r);
X	} else {
X		SetRect(&r, sx * width, sl * height, X_SIZE * width, (sl + 1) * height);
X		OffsetRect(&r, LEFT_MARGIN, TOP_MARGIN);
X		BitClr(HilitePtr, pHiliteBit);
X		InvertRect(&r);
X		SetRect(&r, 0, el * height, ex * width, (el + 1) * height);
X		OffsetRect(&r, LEFT_MARGIN, TOP_MARGIN);
X		BitClr(HilitePtr, pHiliteBit);
X		InvertRect(&r);
X		SetRect(&r, 0, (sl + 1) * height, X_SIZE * width, el * height);
X		OffsetRect(&r, LEFT_MARGIN, TOP_MARGIN);
X		BitClr(HilitePtr, pHiliteBit);
X		InvertRect(&r);
X	}
X	SetRect(&r, 0, 0, 20000, 20000);
X	ClipRect(&r);
X}
X
X
Xvoid
XDoDraw(EventRecord * theEvent, term_info * t)
X{
X	BeginUpdate((WindowPtr) theEvent->message);
X	if(StripAddress(theEvent->message) == StripAddress(HackWindow)) {
X		SetPort(HackWindow);
X		docrt();
X	} else if(StripAddress(theEvent->message) == StripAddress(PagerWindow)) {
X		MoveHHi(theData);
X		HLock(theData);
X		MoveHHi(lineStarts);
X		DrawControls(PagerWindow);
X		TextBox(&((*theData)[(*lineStarts)[textPos]]), LineLength(textPos,
X			Y_SIZE), &text_area, teJustLeft);
X		HUnlock(theData);
X		InvertRange(&theSelect, 0L);
X	}
X	EndUpdate((WindowPtr) theEvent->message);
X}
X
X
Xvoid
XDoScroll(long amount)
X{
Xint ab = amount > 0 ? amount : - amount;
X
X	if(textPos == 0 && amount < 0) return;
X	if(textPos == scrollMax && amount > 0) return;
X
X	textPos += amount;
X	if(textPos < 0) {
X		amount -= textPos;
X		textPos = 0;
X	}
X	if(textPos > scrollMax) {
X		amount -= textPos - scrollMax;
X		textPos = scrollMax;
X	}
X	scrollPt = textPos;
X
X	if(ab > Y_SIZE - 1) {
X		HLock(theData);
X		TextBox(&((*theData)[(*lineStarts)[textPos]]), LineLength(textPos,
X			ab), &text_area, teJustLeft);
X		HUnlock(theData);
X		InvertRange(&theSelect, (Rect *) 0L);
X	} else {
X	Rect r;
X	RgnHandle rgn = NewRgn();
X		r = text_area;
X		ScrollRect(&text_area, 0, - amount * height, rgn);
X		DisposHandle(rgn);
X		if(amount < 0) {
X			r.bottom -= (Y_SIZE - ab) * height;
X			HLock(theData);
X			TextBox(&((*theData)[(*lineStarts)[textPos]]), LineLength
X				(textPos, ab), &r, teJustLeft);
X			HUnlock(theData);
X			InvertRange(&theSelect, &r);
X		} else {
X			r.top += (Y_SIZE - ab) * height;
X			HLock(theData);
X			TextBox(&((*theData)[(*lineStarts)[textPos + Y_SIZE - ab]]),
X				LineLength(textPos + Y_SIZE - ab, ab), &r,
X				teJustLeft);
X			HUnlock(theData);
X			InvertRange(&theSelect, &r);
X		}
X	}
X	SetCtlValue(theScrollBar, scrollPt);
X	DrawControls(PagerWindow);
X}
X
X
Xpascal void
XLineUp(ControlHandle stl, int part)
X{
X	DoScroll(-1);
X}
X
Xpascal void
XLineDown(ControlHandle stl, int part)
X{
X	DoScroll(1);
X}
X
Xpascal void
XPageUp(ControlHandle stl, int part)
X{
X	DoScroll(- Y_SIZE + 1);
X}
X
Xpascal void
XPageDown(ControlHandle stl, int part)
X{
X	DoScroll(Y_SIZE - 1);
X}
X
X
Xint
XDoKey(EventRecord * theEvent, term_info * t)
X{
Xchar c = theEvent->message & 0xFF;
Xchar k = (theEvent->message & 0xFF00) >> 8;
X
X	switch(k) {
X
X	case 0x7A:
X		DoMenu((long)(editMenu << 16) | 1);
X		return 1;
X
X	case 0x78:
X		DoMenu((long)(editMenu << 16) | 3);
X		return 1;
X
X	case 0x63:
X		DoMenu((long)(editMenu << 16) | 4);
X		return 1;
X
X	case 0x76:
X		DoMenu((long)(editMenu << 16) | 5);
X		return 1;
X
X	case 0x7E:
X	case 0x7B:
X		if(theEvent->modifiers & (optionKey | shiftKey | cmdKey))
X			DoScroll(- Y_SIZE + 1);
X		else DoScroll(-1);
X		return 1;
X
X	case 0x7C:
X	case 0x7D:
X		if(theEvent->modifiers & (optionKey | shiftKey | cmdKey))
X			DoScroll(Y_SIZE - 1);
X		else DoScroll(1);
X		return 1;
X
X	case 0x73:
X		DoScroll(-scrollMax);
X		return 1;
X
X	case 0x77:
X		DoScroll(scrollMax);
X		return 1;
X
X	case 0x74:
X		DoScroll(1 - Y_SIZE);
X		return 1;
X		
X	case 0x79:
X		DoScroll(Y_SIZE - 1);
X		return 1;
X		
X	case 0x7F:
X		return 0;
X
X	default:
X		break;
X	}
X
X	switch(c) {
X
X	case 'c':
X	case 'C':
X		if(theEvent->modifiers & cmdKey) {
X			HiliteMenu(editMenu);
X			DoMenu((long)(editMenu << 16) | 4);
X			HiliteMenu(0);
X		}
X		return 1;
X
X	case '.':
X		if(!(theEvent->modifiers & cmdKey)) break;
X	case 'q':
X	case 'Q':
X	case 0x1B:
X		return 0;
X
X	case ' ':
X	case 0x9:
X		if(theEvent->modifiers & (optionKey | shiftKey | cmdKey))
X			DoScroll(- Y_SIZE + 1);
X		else DoScroll(Y_SIZE - 1);
X		break;
X
X	case 0x3:
X	case '\r':
X	case '\n':
X		if(theEvent->modifiers & (optionKey | shiftKey | cmdKey))
X			DoScroll(-1);
X		else DoScroll(1);
X		break;
X
X	case '<':
X		DoScroll(- scrollMax);
X		break;
X
X	case '>':
X		DoScroll(scrollMax);
X		break;
X
X	default:
X		break;
X	}
X
X	return 1;
X}
X
X
Xvoid
XDoClick(EventRecord * theEvent, term_info * t)
X{
XControlHandle control;
XPoint pt = theEvent->where;
Xint part;
X
X	GlobalToLocal(&pt);
X	part = FindControl(pt, PagerWindow, &control);
X	if(part) {
X		switch(part) {
X
X		case inThumb:
X			if(TrackControl(control, pt, 0L) == inThumb) {
X				scrollPt = GetCtlValue(control);
X				DoScroll(scrollPt - textPos);
X			}
X			break;
X
X		case inUpButton:
X			TrackControl(control, pt, LineUp);
X			break;
X
X		case inDownButton:
X			TrackControl(control, pt, LineDown);
X			break;
X
X		case inPageUp:
X			TrackControl(control, pt, PageUp);
X			break;
X
X		case inPageDown:
X			TrackControl(control, pt, PageDown);
X			break;
X
X		default:
X			break;
X		}
X	} else {
X		if(theEvent->modifiers & shiftKey) {
X			theSelect.end = WhatOffset(pt, &(theSelect.endline));
X			oldSelect.start = theSelect.end;
X			oldSelect.startline = theSelect.endline;
X			InvertRange(&oldSelect, (Rect *) 0L);
X			oldSelect = theSelect;
X		} else {
X			InvertRange(&theSelect, (Rect *) 0L);
X			theSelect.start = WhatOffset(pt, &(theSelect.startline));
X			theSelect.end = theSelect.start;
X			theSelect.endline = theSelect.startline;
X			InvertRange(&theSelect, (Rect *) 0L);
X			oldSelect = theSelect;
X		}
X		while(StillDown()) {
X			GetMouse(&pt);
X			theSelect.end = WhatOffset(pt, &(theSelect.endline));
X			oldSelect.start = theSelect.end;
X			oldSelect.startline = theSelect.endline;
X			InvertRange(&oldSelect, (Rect *) 0L);
X			oldSelect = theSelect;
X		}
X		if(theSelect.start > theSelect.end) {
X		long t = theSelect.start;
X			theSelect.start = theSelect.end;
X			theSelect.end = t;
X			t = theSelect.startline;
X			theSelect.startline = theSelect.endline;
X			theSelect.endline = t;
X			oldSelect = theSelect;
X		}
X	}
X}
X
X
Xint
XDoMenu(long selection)
X{
Xint menu = HiWord(selection);
Xint item = LoWord(selection);
X
X	switch(menu) {
X
X	case fileMenu:
X		if(item == 9) return 0;
X		if(item == 4) {
X		Rect foom = PagerWindow->portRect;
X			OffsetRect(&foom, -foom.left, -foom.top);
X			InvalRect(&foom);
X			return 1;
X		}
X		break;
X
X	case editMenu:
X		switch(item) {
X
X		case 1:
X			SysBeep(20);
X			break;
X
X		case 3:
X			SysBeep(20);
X			break;
X
X		case 4:
X			if(theSelect.start == theSelect.end) {
X				SysBeep(20);
X			} else {
X				ZeroScrap();
X				HLock(theData);
X				PutScrap(theSelect.end - theSelect.start, 'TEXT', &((*theData)
X					[theSelect.start]));
X				HUnlock(theData);
X			}
X			break;
X
X		case 5:
X			SysBeep(20);
X			break;
X
X		default:
X			break;
X
X		}
X		break;
X
X	default:
X		break;
X
X	}
X
X	return 1;
X}
X
X
Xint
XDoMDown(EventRecord * theEvent, term_info * t)
X{
XWindowPtr whatWindow;
Xint where;
X
X	where = FindWindow(theEvent->where, &whatWindow);
X	switch(where) {
X
X	case inMenuBar:
X		if(theSelect.start != theSelect.end) {
X			EnableItem(editMenuH, 4);
X		} else {
X			DisableItem(editMenuH, 4);
X		}
X		where = DoMenu(MenuSelect(theEvent->where));
X		HiliteMenu(0);
X		return where;
X
X	case inGrow:
X	case inContent:
X		if(StripAddress(whatWindow) == StripAddress(PagerWindow)) {
X			DoClick(theEvent, t);
X		} else {
X			SysBeep(20);
X		}
X		break;
X
X	case inDrag:
X		if(StripAddress(whatWindow) == StripAddress(PagerWindow)) {
X		RgnHandle theRgn = GetGrayRgn();
X		Point p;
X			DragWindow(PagerWindow, theEvent->where, &((*theRgn)->rgnBBox));
X			windowSize = PagerWindow->portRect;
X			p.h = windowSize.left;
X			p.v = windowSize.top;
X			LocalToGlobal(&p);
X			OffsetRect(&windowSize, p.h, p.v);
X		} else {
X			SysBeep(20);
X		}
X		break;
X
X	case inGoAway:
X		if(TrackGoAway(PagerWindow, theEvent->where)) return 0;
X		break;
X
X	default:
X		break;
X
X	}
X	return 1;
X}
X
X
Xint
XCheckEvent(EventRecord * theEvent, term_info * t)
X{
X	switch(theEvent->what) {
X
X	case autoKey:
X	case keyDown:
X		return DoKey(theEvent, t);
X		break;
X
X	case updateEvt:
X		DoDraw(theEvent, t);
X		break;
X
X	case mouseDown:
X		return DoMDown(theEvent, t);
X		break;
X
X	case activateEvt:
X		if(theEvent->modifiers & 1) {
X			ShowControl(theScrollBar);
X		} else {
X			HideControl(theScrollBar);
X		}
X		break;
X
X	case app4Evt:
X		if(theEvent->message >> 24 == 1) {
X			if(theEvent->message & 1) {
X				HiliteControl(theScrollBar, scrollMax ? 0 : 254);
X			} else {
X				HiliteControl(theScrollBar, 255);
X			}
X		}
X
X	default:
X		break;
X	}
X
X	return 1;
X}
X
X
Xvoid
XMagicDisplay(term_info * t)
X{
XEventRecord theEvent;
X
X	SetCursor(&ARROW_CURSOR);
X	do {
X		WaitNextEvent(everyEvent, &theEvent, 42L, 0L);
X		SetPort(PagerWindow);
X	} while(CheckEvent(&theEvent, t));
X}
X
X
Xint
XCountChars(char * s, long n, int c)
X{
Xint r = 0;
X
X	while(n-- > 0) if(*(s++) == c) r++;
X
X	return r;
X}
X
X
Xint
XTabSize(char * s)
X{
Xint r = 0, q;
X
X	for(q = 0; s[q]; q++)
X		r += (s[q] == '\t') ? 8 - (r & 7) : 1;
X
X	return r;
X}
X
X
Xint
XExpandTabs(char * s, char * d)
X{
Xint r, q, c = 0, t = 0;
X
X	for(q = 0; s[q]; q++)
X		switch(s[q]) {
X
X		case '\t':
X			for(r = 0; r < 8 - (t & 7); r++, c++)
X				*(d++) = 0x20;
X			t += 8 - (t & 7);
X			break;
X
X		case '\n':
X			*(d++) = '\r';
X			c++;
X			t = 0;
X			break;
X
X		default:
X			*(d++) = s[q];
X			c++;
X			t++;
X			break;
X		}
X
X	return c;
X}
X
X
Xint
XMoofFile(FILE * fp, int strip)
X{
Xlong			fpos;
Xlong			delta_slack;
Xlong			slack_left;
Xchar			buf[MAX_LINE_LEN];
X
X	if(!fp) {
X		panic("No file for pager");
X	}
X	fpos = ftell(fp);
X	length = 0;
X	theData = NewHandle(SLACK);
X	slack_left = SLACK;
X
X	do {
X		if(!fgets(buf, MAX_LINE_LEN, fp)) break;
X		if(!strip || isspace(*buf)) {
X			delta_slack = TabSize(buf);
X			slack_left -= delta_slack;
X			if(slack_left < 0) {
X				slack_left += SLACK;
X				SetHandleSize(theData, length + SLACK + delta_slack);
X				if(MemError())
X					panic("Out of memory");
X			}
X			MoveHHi(theData);
X			HLock(theData);
X			length += ExpandTabs(buf+strip, &((*theData)[length]));
X			HUnlock(theData);
X		}
X	} while(!feof(fp) && (isspace(*buf) || !strip));
X
X	fclose(fp);
X	return 0;
X}
X
X
Xvoid
XsetLineStarts(long ** starts, char * data, long length)
X{
Xlong x = length;
Xlong p = 0;
X
X	**starts = 0;
X	while(length--)
X		if(*(data++) == '\r')
X			(*starts)[++p] = x - length;
X}
X
X
Xvoid
XMoreDisabling(MenuHandle theMenu, int i)
X{
Xint x;
X
X	switch(i) {
X
X	default :
X		DisableItem(theMenu, 0);
X		break;
X
X	case fileMenu:
X		for(x = 1; x < 9; x++)
X			DisableItem(theMenu, x);
X		SetItem(theMenu, 9, "\PClose");
X		EnableItem(theMenu, 9);
X		EnableItem(theMenu, 0);
X		EnableItem(theMenu, 4);
X		break;
X
X	case editMenu:
X		for(x = 1; x < 7; x++)
X			DisableItem(theMenu, x);
X		EnableItem(theMenu, 0);
X		editMenuH = theMenu;
X		break;
X
X	}
X}
X
X
Xvoid
XMoreEnabling(MenuHandle theMenu, int i)
X{
Xint x;
X
X	switch(i) {
X
X	default :
X		EnableItem(theMenu, 0);
X		break;
X
X	case fileMenu:
X		for(x = 0; x < 9; x++) if(x != 6 && x != 8)
X			EnableItem(theMenu, x);
X		SetItem(theMenu, 9, "\PQuit");
X		break;
X
X	case editMenu:
X		for(x = 1; x < 7; x++)
X			EnableItem(theMenu, x);
X		DisableItem(theMenu, 0);
X		break;
X
X	}
X}
X
X
Xvoid
XMoreMenus(void)
X{
XMenuHandle theMenu;
Xint i;
X
X	for(i=appleMenu; i <=extendMenu; i++) {
X		if(theMenu = GetMHandle(i)) {
X			MoreDisabling(theMenu, i);
X		}
X	}
X	DrawMenuBar();
X}
X
X
Xvoid
XLessMenus(void)
X{
XMenuHandle theMenu;
Xint i;
X
X	for(i=appleMenu; i <=extendMenu; i++) {
X		if(theMenu = GetMHandle(i)) {
X			MoreEnabling(theMenu, i);
X		}
X	}	
X	DrawMenuBar();
X}
X
X
Xint
Xmac_more(FILE * fp, int strip)
X{
XWindowRecord	MoreWindow;
Xterm_info		* t;
XGrafPtr			savedPort;
X
X	if(MoofFile(fp, strip)) return -1; /* God knows what happened */
X
X	theSelect.start = theSelect.end = theSelect.startline =
X		theSelect.endline = 0;
X	oldSelect = theSelect;
X	MoveHHi(theData);
X	HLock(theData);
X	noRs = CountChars(*theData, length, '\r');
X	lineStarts = (long **) NewHandle((noRs + 1) * sizeof(long));
X	if(!lineStarts || MemError()) panic("Out of memory");
X	setLineStarts(lineStarts, *theData, length);
X	HUnlock(theData);
X	scrollMax = noRs - Y_SIZE;
X	if(scrollMax < 0) scrollMax = 0;
X
X	GetPort(&savedPort);
X	t = (term_info *) GetWRefCon(HackWindow);
X
X	if(t->inColor ? !GetNewCWindow(301, &MoreWindow, 0L) :
X		!GetNewWindow(301, &MoreWindow, 0)) {
X		DisposHandle(theData);
X		panic("No WIND resource for pager");
X	} else if(ResError()) {
X		DisposHandle(theData);
X		panic("No WIND resource for pager");
X	} /* And now set the sizes & things */
X	PagerWindow = (GrafPtr) &MoreWindow;
X
X	width = t->charWidth;
X	height = t->height;
X	if(inited != t->height) {
X		SetRect(&windowSize, X_POS, Y_POS, width * X_SIZE + X_BORDER + X_POS,
X			height * Y_SIZE + Y_BORDER + Y_POS);
X		inited = t->height;
X	}	
X	SizeWindow(PagerWindow, windowSize.right - windowSize.left,
X		windowSize.bottom - windowSize.top, 0);
X	MoveWindow(PagerWindow, windowSize.left, windowSize.top, 0);
X	ShowWindow(PagerWindow);
X	SelectWindow(PagerWindow);
X	SetPort(PagerWindow);
X
X	text_area = windowSize;
X	OffsetRect(&text_area, - text_area.left, - text_area.top);
X	text_area.left = text_area.right - 14;
X	InsetRect(&text_area, - 1, - 1);
X	theScrollBar = NewControl(PagerWindow, &text_area,
X		"\PMore Text", 1, 0, 0, scrollMax, scrollBarProc, 0);
X	HiliteControl(theScrollBar, scrollMax ? 0 : 254);
X
X	SetRect(&text_area, LEFT_MARGIN, TOP_MARGIN, width * X_SIZE + LEFT_MARGIN,
X		height * Y_SIZE + TOP_MARGIN);
X	TextFont(t->fontNum);
X	TextSize(t->fontSize);
X	TextMode(srcCopy);
X	textPos = 0;
X
X	MoreMenus();
X	MagicDisplay(t);
X	LessMenus();
X
X	if(theScrollBar) KillControls((WindowPtr) &MoreWindow);
X	CloseWindow((WindowPtr) &MoreWindow);
X	DisposHandle(theData);
X	SetPort(HackWindow);
X	docrt();
X	SetPort(savedPort);
X	return 0;
X}
END_OF_FILE
if test 24474 -ne `wc -c <'mac/MacAlert.c'`; then
    echo shar: \"'mac/MacAlert.c'\" unpacked with wrong size!
fi
# end of 'mac/MacAlert.c'
fi
if test -f 'mac/NH.proj.hqx' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mac/NH.proj.hqx'\"
else
echo shar: Extracting \"'mac/NH.proj.hqx'\" \(30018 characters\)
sed "s/^X//" >'mac/NH.proj.hqx' <<'END_OF_FILE'
X(This file must be converted with BinHex 4.0)
X
X:$'jPG'KKBfXZF(*[DJ"38Np+5d&)6!#3#'r`fLF!N!3"!*!$D1B!!'IQ!!!(#KJ
X!N!3",J(X!!%!N!MTJ!-a,M-!N!-9!*!$$'jPG'KKBfXZF(*[DQX#!*!$8&*25NY
X"5%`"!*!%`!!!8&*25NY"5%`"!*!%`!!!DTX!N!kLBa['!*!'Er!!#J!2!#S!,k!
X#k'%!N!9&"+`!@J6f"!T*EQPdD@&XDATP!*!&432h!&S%333&4@TPBh3!N!C&"&)
X!@J5F"!*25`#3"4d%*J!Y"35)(84[)(P[G5"hB@jd)(4[)'PZDA4TB@aTHQ8JDA3
Xr!*!'(33T!#d%ma!)!!!"@!!!F!8!!%459P*9`!!p4N3!!2m`!,B!N!83!$e'4!!
X!rc!!YJ#3"4!!28C%!!$r-!#f!*!&%!!p4N3!!2m`!,B!N!83!$e'4!!!rc!!YJ#
X3"4!!28C%!!$r-!#f!*!&%!!p4N3!!2m`!,B!N!83!$e'4!!!rc!!YJ#3"4!!28C
X%!!$r-!#f!*!&'!!p4N3!!2m`!,B!N!-"!*!*&!!p4N3*4d986%P145j$!*!&&!!
Xp4N3!C!#U!2S"eJ#!4%3!N!0S!$e'4!!$!*!&3`!P!&X!H`3%8f&fC3#3"@J!*3#
X!!(X%"d4TFf0KFQ4-!!!,6Q9d5'&MDb!c,M"L0fjMC@`!N!8+!%8!1J%IL"06BAC
XP)'0SB@jRCA-JG'mJAM!r!*!%&!!p4N3!#J!239"36'jS-c"B!!,Z!*!$#!!$rb3
X!l[rm!*!$#JXR!*!,#PJ!!!Zi!!!,Z!#3!`2`!*$r!*$r!*$r!*$a(#)!!%!!!$2
XThJ!cUL!!-mB+!!!"(!#3"6)!N"C!J1j1!$1U)%)!!0)!-kRX!$2&TJ!ca5B!-m5
XU!$2%8J!c`rS!-m1L!$2$*J!c`Y)!-m*5!$2"dJ!c`5i!-m$@!$2!8J!c[rS!-lq
XL!$1r!J!c[SB!-liZ!$1pMJ!c[0i!-laL!$1m-J!cZpS!-lYH!$1kjJ!cZSi!-lR
X+!$1jFJ!cZ4i!-lM'!$1hrJ!cYeS!-lEL!$1fLJ!cYHS!-l@5!$1e1J!c[6B!-l5
XD!$1cmJ!cXbi!-l,@!$1bIJ!cXNS!-l(f!$1a8J!cc&)!-m[@!$2'dJ!cc0)!!)!
X!"L`!!"c1#!!"!3!"!!$rN!LKr,3!!"B!!3!!#Q006dj6!!GYEfjcG#jM!!!"SIh
XaHk(pmAZKrI&l!"J!!3!!#Q4$6dj'!!KMEfjQD@FZD!#3!`+Kp1hJSI6Yi+(dlH!
X!'J!"!!!+C&45383!#R4bB@4cG'4M,QJ!N!-#SI6YQU(dlCUKp1fD!"J!!3!!#Q4
X(6%p#!!KRE'pLB@`ZD!"S!!1KESc$S@k-`k&ZM--!&J!#!!"8a&084%N""h0dC'P
X[,QJ!!!1Km8dASI&0&k(a64F!&J!"!!!+C%026e)!"f0[Eh*N,QJ!!!1Kpi"lSIH
X!Hk(hJ(X!'!!"!!!+C%e"3d-!#@eKBf0[EQBZD!!!"+(a651Km8dMSI&0)`!@!!%
X!!!TN690%6`!(EA0NEh-ZD!!!"+(a65@Km8dPSI&0*3!B!!%!!!TN8eP69!!)FhP
XcG'9Y,QJ!N!-%S*cGjD#FhH@JR0hP!"B!!J!!9-4858e&!3CdD@eP,QJ!D!!%S*c
XG0k#Fh6HJR0dh!"B!!J!!9-4'3dj8!3G'BfjdE#jS!!!%S*cGV+#FhDbJR0fX!"J
X!!J!!9-469%4%!3K6G'4NC@BZD!#3!`5JR0h9S*cGeD#FhG8!'!!#!!"8a&084%`
X"#&0dC'aTBLjS!*!$"+$(p0QJar6CS-Idf3!B!!)!!&6%8e4553%)8h4bD@jR,QJ
X!N!-%S*c03k#Fc81JR-e$!"J!!J!!9)03390$!3K`BA0MB@`ZD!#3!`5JR-BRS*c
X'*k#FaLF!'J!#!!"8Je&958-"#e&eD@0VC(*KGbjS!!!&S*c&r+#FaIbJR-Am!"S
X!!J!!9)003808!!T0B@08HA"PFbjS!*!$"+#FaHDJR-AQS*c&jJ!B!!)!!&5$4Np
X19!%*4QpZG%eRFLjS!!!%S*c&eD#FaG@JR-A9!"S!!J!!9)0&9N91!3T&GQ9ZG%e
XRFLjS!*!$"+#FaRZJR-ClS*c'H`!D!!)!!&5$9dP14!%,9fPZC'ph6@Gb,QJ!!!5
XJR-B%S*c'"+#FaJ3!'!!#!!"8Jde&6P8"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c
X'A`!F!!)!!&5$8e4%4J%-8h4N4QPXC9"VCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)
X!!&5$8d9(63%-8f9RE@9ZG%aNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!&5$9%p
X26!%09'p[E'*[H&9dD@`ZD!!!"+#FaJkJR-B1S*c'$J!B!!)!!&5$6e099!%)6e0
X9G'PX,QJ!D3!%S*c&`k#FaF1JR-A$!"S!!J!!9)0%58&-!3Y%D@&XEfG0Ch)ZD!!
X!"D#FaQDJR-CQS*c'CJ!D!!)!!&5$9%9B9!!+9'9iG%9NDA3ZD!#3!`5JR-ADS*c
X&fU#FaGS!'!!#!!"8JdC*6%8"#8CTE'90Ch)ZD!!!"+#FaHbJR-AXS*c&l!!8!!)
X!!&5$5%C6,J%&5%C6,QJ!!!5JX6d9S,%p&D#a248!&J!#!!"8Jd026%m""d0[E'p
Xb,QJ!!!5JR-BVS*c'+k#FaLX!(!!#!!"8Je*&8dm"$9*PFfpeFQ0P6@Gb,QJ!!!5
XKr,U2SIbkMk(mZSm!'!!"!!!+C%9B9%8!#'9iG'9bELjS!'F!"+(q"k@KrJHPSIi
X(T3!D!!%!!!TN68&$33!+6@&M3@aPFR3ZD!!Z!!'Km8dNSI&0*+(a653!'J!"!!!
X+C&"&8Nd!#R"PFQe[ER0d,QJ!,J!#SI&0)U(a65+Km8dL!"J!!3!!#Q406dj"!!P
XYEfjKG(4V,QJ!!!+Km8dMSI&0)k(a65-!'!!"!!!+C%e26NB!#@e[EQCXB@FZD!!
X!!D(a651Km8dMSI&0)`!B!!%!!!TN68p18`!)E@pZFhPY,QJ!N!-"SI&0'+(a64L
XKm8dB!"B!!3!!#Q4&8dK,!!CPFfKV,QJ!D!!"SI)ZHk(b,RZKmLjl!"B!!3!!#Q4
X@399-!!GfBA9XG#jS!!!"SI&0'+(a64LKm8dB!"B!!3!!#Q4&8&**!!CPF(*T,QJ
X!N!-"SII#QD(h`TQKpm+C!"B!!3!!#Q4$6da2!!GMEfa[FLjS!*!%,'iZB`!!!D(
Xq"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!#k#!!#N!*!$m!S!!3%!!3!
X!rj!)SIh$U`!B!!%!!!TM9%9563!*G'9bE@0KF#jM!!!"SIi(j+(q"q5KrJIN!"B
X!!3!!#Q4)380,!!CSB@0V,QJ!,J!"S*cG'D#Fh4QJR0dC!"B!!J!!9-4$9&P3!3G
XMG(P`C5jS!!!"SI&0,+(a65bKm8dX!"J!!3!!#Q4849*0!!PdCA*YBf&`,QJ!EQ5
X!!!"8!*!$l!S!!3%!!3!!rj!)SIi`UJ!8!!%!!!TQ68&$,J!&E@&M,Q-!!!'KrJI
XNSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!!!J!!!0!#3!qJ!!!%"!!%!!2q
X3#+#Z`J)!'!!#!!"8Y%e"3e3!#%eKBe4bBA"c!!##!!"B!*!$j!S!!3%!!3!!rj!
X)SII(-!!@!!%!!!TM9&*"3`!(G(*KBfXZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!T
XN5%&$5`!'D'&MDbjS!!$&`i!!!&J!N!2J#J!"!3!"!!$rN!LKmQPK!"J!!3!!#Q0
X05e*2!!KYDh*[EfdZB`#3!`'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfX
XZD!"MJJ!!a!#3!p`+!!%"!!%!!2q3#+(hJ6!!&!!"!!!+Bde26Li!"@e[ELjM!!!
X"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!B`!"SI&0)U(a65+Km8d
XL!"J!!3!!#Q404Nj%!!PYCQjNF'pc,QJ!!!'Km8dZSI&0,U(a65i!&J!"!!!+C&G
X648F!"RGcC@FZD!!Z!!'JR0dCS*cG'D#Fh4N!&J!#!!"8a%08@9!""f0dHA"P,QJ
X!6@'#!!#S!*!$f!S!!3%!!3!!rj!)SI&05J!B!!%!!!TM68p163!*E@pZE@pfC5j
XM!!!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!,J!"SI&0)U(a65+
XKm8dL!"J!!3!!#Q404Nj%!!PYCQjNF'pc,QJ!!!'Km8dASI&0&k(a64F!'J!"!!!
X+C%&59%N!#Q&bG'PQB@0d,QJ!,J!"J!!!S!#3!p3+!!%"!!%!!2q3#+(a68%!'!!
X"!!!+Bde26N3!#@e[EQ4KG'%ZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!
X'D'&MDbjS!#i!!D(a64LKm8dBSI&0'!!@!!%!!!TN490)5`!'CA0SDbjS!#i!!D(
Xa64LKm8dBSI&0'!!@!!%!!!TN49"553!'CA"bD5jS!#k#!!"B!*!$c!S!!3%!!3!
X!rj!)SIbSC3!@!!%!!!TM9%p36!!'G'p`E#jM!*!$!D(q"q5KrJINSIi(j!!@!!%
X!!!TN5%&$5`!'D'&MDbjS!*!%JJ!!@!#3!mJ+!!%"!!%!!2q3#+(pmVd!&J!"!!!
X+BdK"3dX!"QKKBfXZB`#3!`'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfX
XZD!#3!`Q#!!#J!*!$a!S!!3%!!3!!rj!)SI1,-`!B!!%!!!TM58j@43!)D@jfC@j
Xd,Q-!3`!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!B`!"SI&0'D(
Xa64QKm8dC!"3!!3!!#Q4-49BZ!!9XCABZD!!!!D(a65kKm8dZSI&0,J!@!!%!!!T
XN9e0&4`!'Gh0PCbjS!'-"!B!!!&J!N!2!#J!"!3!"!!$rN!LKmiTR!"J!!3!!#Q0
X&6NG5!!PPEQGbBACP,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfX
XZD!!ZJ!!!H!#3!l`+!!%"!!%!!2q3#+(mbQF!&!!"!!!+Bd424bi!"@4[CbjM!!!
X"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!,J!"SI&0'+(a64LKm8d
XB!"B!!3!!#Q4&4%p(!!CPC'pR,QJ!,S)!!+3!N!1i#J!"!3!"!!$rN!LKmiS!!"J
X!!3!!#Q0%6dG0!!PNEfGYEhCP,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX
X!"QKKBfXZD!!Z!!'Km8dLSI&0)U(a65)!'!!"!!!+C%e'6N3!#@eQEQ4`Eh-ZD!!
X!!D(a64LKm8dBSI&0'!!@!!%!!!TN48424`!'C@4[CbjS!#i"!B)!!-J!N!1d#J!
X"!3!"!!$rN!LKpi&M!"J!!3!!#Q038NP&!!K`FQPPFh3ZB`#3!`'KrJINSIi(j+(
Xq"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"M!!'Km8dLSI&0)U(a65)!'!!"!!!+C%e
X'6N3!#@eQEQ4`Eh-ZD!!!!D(a64LKm8dBSI&0'!!@!!%!!!TN490)5`!'CA0SDbj
XS!#i!!D(a64LKm8dBSI&0'!!@!!%!!!TN49"553!'CA"bD5jS!#jYEi)!!&J!N!1
X`#J!"!3!"!!$rN!LKm8hJ!"B!!3!!#Q0A49*&!!ChCA*P,Q-!B`!"SIi(j+(q"q5
XKrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!Bk(aJ!!!9!#3!k`+!!%"!!%!!2q3#+(
Xa6E8!&!!"!!!+Be*14#i!"A*ZC#jM!!!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380
X,!!CSB@0V,QJ!Bi!!!&J!N!1S#J!"!3!"!!$rN!LKm8hh!"J!!3!!#Q0%3P**!!P
XNBR*TC'GP,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!!ZJJ!
X!a!#3!k3#!!%"!!%!!2q3#+(m[(d!&!!"!!!+Be"555i!"A"bD5jM!!!"SIi(j+(
Xq"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!,J!"S*cG'D#Fh4QJR0dC!"B!!J!
X!9-4$9&P3!3GMG(P`C5jS!!!"SI&0'+(a64LKm8dB!"B!!3!!#Q4&8&**!!CPF(*
XT,QJ!N!-"SI&0,+(a65bKm8dX!"J!!3!!#Q4849*0!!PdCA*YBf&`,QJ!!&L!!!"
XB!*!$S!J!!3%!!3!!rj!)SI)"V!!B!!%!!!TR8N&14!!)FQ&ZC'pY,Q-!N!-"S@k
X-`k&ZM-1KESc$!"B!!J!!9-469%4*!3GcG'4TEbjS!)!!!(J!N!1F#J!"!3!"!!$
XrN!LKpp')!"3!!3!!#Q065%XZ!!9cD'XZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!T
XN5%&$5`!'D'&MDbjS!'-!!D(a64LKm8dBSI&0'!!@!!%!!!TN490)5`!'CA0SDbj
XS!'1#!!"m!*!$Q!S!!3%!!3!!rj!)SII(@3!@!!%!!!TM9&*"8!!'G(*KF#jM!'-
X!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!'-!!D(a64LKm8dBSI&
X0'!!@!!%!!!TN48424`!'C@4[CbjS!'-!!B!!!&J!N!18#J!"!3!"!!$rN!LKpm9
XX!"J!!3!!#Q009%K5!!PYG'KbEhGe,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K
X"3dX!"QKKBfXZD!!ZJ!!!-!#3!j!!!!!"!3!"!!$rN!LJb!fm!"3!!J!!9,j96NP
XB!!4eEQPi!(H!!!"m!*!$M!S!!3%!!3!!rj!)SIbc)!!B!!%!!!TM68&,43!*E@&
XVC@e[ELjM!!!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!,J!"S*c
XG'D#Fh4QJR0dC!"B!!J!!9-4$9&P3!3GMG(P`C5jS!)!!!&J!N!1)#J!"!3!"!!$
XrN!LKm8iq!"J!!3!!#Q005de"!!KYDfeKHQ8ZB`#3!`'KrJINSIi(j+(q"q3!&J!
X"!!!+C%K"3dX!"QKKBfXZD!"MJJ!!@!#3!p!+!!%"!!%!!2q3#+(hK4F!&J!"!!!
X+Bde,6d)!"feVEf*U,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfX
XZD!!!6R@#!!#J!*!$K!S!!3%!!3!!rj!)SI188J!B!!%!!!TM8&**8`!)F(*TFhP
XY,Q-!N!-"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!B`!"SI&0,U(
Xa65kKm8dZ!"B!!3!!#Q4A8d9(!!ChFf9R,QJ!B`!"SI&0'D(a64QKm8dC!"3!!3!
X!#Q4-49BZ!!9XCABZD!!!&S)!!&J!N!1!#J!"!3!"!!$rN!LKmj56!"B!!3!!#Q0
X548&%!!CbC@&N,Q-!B`!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ
X!Bh*YJ!!!I!#3!h`+!!%"!!%!!2q3#+(hGfJ!'!!"!!!+Bdp#5Ni!#'pLDQjKE5j
XM!*!$!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!'-!!D#Fh4QJR0d
XCS*cG'3!@!!)!!&6%3e4C8!%(Bh4jF'8ZD!#!!!#J!*!$H!S!!3%!!3!!rj!)SIb
Xd-J!B!!%!!!TM8dp96J!)FfpeEQ4c,Q-!N!-"SIi(j+(q"q5KrJIN!"B!!3!!#Q4
X)380,!!CSB@0V,QJ!B`!"SI&0'+(a64LKm8dB!"B!!3!!#Q4&4%p(!!CPC'pR,QJ
X!B`!"SI&0'+(a64LKm8dB!"B!!3!!#Q4&8dK,!!CPFfKV,QJ!Bi!!!&J!N!0d#J!
X"!3!"!!$rN!LKm8h*!"J!!3!!#Q0858e&!!PdD@ePEh9d,Q-!!!'KrJINSIi(j+(
Xq"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!!ZJ!!!@!#3!h!+!!%"!!%!!2q3#+(pkZ!
X!'!!"!!!+BeG*@N%!#(GTHQ&bC#jM!*!$!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&
X$5`!'D'&MDbjS!'1#!!#%!*!$E!S!!3%!!3!!rj!)SI1*)!!D!!%!!!TM39*853!
X+BA*dD@CKBh3ZB`"[!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"
Xd!!'Km8dASI&0&k(a64F!'J!"!!!+C%&59%N!#Q&bG'PQB@0d,QJ!E`%(J!!!@!#
X3!fJ+!!%"!!%!!2q3#+(b6bN!'!!"!!!+Bd&89&)!#'&dG(*TBLjM!'-!!D(q"q5
XKrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!'1#!!#N!*!$C!S!!3%!!3!!rj!
X)SIc+QJ!@!!%!!!TM68K*9!!(E@KTG(8ZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!T
XN5%&$5`!'D'&MDbjS!*!$!D(a64HKm8dASI&0&`!D!!%!!!TN39*853!+BA*dD@C
XKBh3ZD!"[!!'Km8dBSI&0'+(a64J!&J!"!!!+C%9%6dF!"Q9NEfFZD!"d!!'!!!#
X!!*!$B!S!!3%!!3!!rj!)SI)Y%3!B!!%!!!TM8d9"8J!)Ff9KFQ0S,Q-!B`!"SIi
X(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!B`!"SI&0&k(a64HKm8dA!"S
X!!3!!#Q4"8P4*!!TKFR4TCQ&MG#jS!'q#!!#!!*!$A!S!!3%!!3!!rj!)SI)``!!
X@!!%!!!TM98K*9!!(G@KTG'dZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!
X'D'&MDbjS!*!$!D(a64HKm8dASI&0&`!D!!%!!!TN39*853!+BA*dD@CKBh3ZD!"
X[5%'!!!"8!*!$@!S!!3%!!3!!rj!)SIbl*!!8!!%!!!TM48&8,J!&C@&d,Q-!!!'
XKrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"MJ!!!I!#3!e3+!!%"!!%
X!!2q3#+(q*di!'!!"!!!+Bd42Adi!#@4[AfjKE@8ZB`!!!D(q"q5KrJINSIi(j!!
X@!!%!!!TN5%&$5`!'D'&MDbjS!#i!!D#Fh4QJR0dCS*cG'3!@!!)!!&6%3e4C8!%
X(Bh4jF'8ZD!#!!!"B!*!$8!S!!3%!!3!!rj!)SI6c*!!B!!%!!!TM4%pI9`!*C'p
XIGf9KFLjM!!!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!,S!!!&J
X!N!0-#J!"!3!"!!$rN!LKm8hJ!"J!!3!!#Q0A48&3!!KhC@&`EfiZB`#3!`'KrJI
XNSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"MJ!!!@!#3!dJ+!!%"!!%!!2q
X3#+(bFK)!'!!"!!!+Be"*3dX!#("TBfYeF#jM!*!$!D(q"q5KrJINSIi(j!!@!!%
X!!!TN5%&$5`!'D'&MDbjS!'1#!!"m!*!$4!S!!3%!!3!!rj!)SIi&r!!@!!%!!!T
XM9N&96!!(GQ&eE(3ZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbj
XS!*!$!D(b,RZKmLjlSI)ZH`!@!!%!!!TN9N&96!!(GQ&eE(3ZD!!!"S)!!)!!N!0
X!#J!"!3!"!!$rN!LKmM,h!"B!!3!!#Q005%P8!!GYD'PdE5jM!!!"SIi(j+(q"q5
XKrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!N!-"SI&0&k(a64HKm8dA!"S!!3!!#Q4
X"8P4*!!TKFR4TCQ&MG#jS!'pQBB)!!&`!N!-m#J!"!3!"!!$rN!LKr,#!!"S!!3!
X!#Q036daC!!T`EfajFf9XCLjM!'m!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!
X'D'&MDbjS!'CMD%!!!0!!-kRX!*!&-mB#!$2'"J!ck-i!-qKf!$2S(J!cjk)!-qG
X+!$2QlJ!cjT)!-qBq!$2PjJ!cj@S!-q81!$2NhJ!cj)B!-q3Z!$2MeJ!cihi!-q,
XL!$2L3J!ciF)!-q&U!$2K%J!ci,i!-q"Q!$2IkJ!chh)!-plk!$2HIJ!chLB!-pe
Xq!$2G*J!ch-i!-paf!$2EqJ!cfk)!-pXQ!$2DcJ!cfP)!-pR5!$28cJ!ce(B!-p3
XH!$26aJ!ccLi!-kVk!$20+J!ccGB!-mf#JJ!&"!#3!r`)!!%"!!%!!2q3#+(a66F
X!&J!"!!!+Bd&-6%m!"f&XE'pM,Q-!!!'KrI&lSIhaHk(pmAX!'!!"!!!+C%026NB
X!#'0[EQCTCbjS!*!$!U(dlH#Kp1hJSI6Yi!!D!!%!!!TN9&*"4!!+G(*KC(0dC'-
XZD!!Z!!+Kp1fDSI6YQU(dlCS!'!!"!!!+C%G-6d)!#'GXEf*KE#jS!'J!!k&ZM-1
XKESc$S@k-``!@!!)!!&6%8e4%53%(Fh4ND@mZD!!!!k(a64HKm8dASI&0&`!@!!%
X!!!TN3dp28J!(Bfp[FQ3ZD!!!!k(hJ(ZKpi"lSIH!H`!B!!%!!!TN68&$3`!*E@&
XMBfpZCLjS!!!%SI&0)k(a651Km8dM!"B!!3!!#Q408d42!!GYFf4[FbjS!!!%SI&
X0*D(a65@Km8dP!"J!!3!!#Q46@908!!KcHA0dC@dZD!#3!`5JR0hPS*cGjD#FhH8
X!&J!#!!"8a&4*688""R4TE@8ZD!"S!!5JR0dhS*cG0k#Fh6F!&J!#!!"8a%C$6P3
X""dCMER4X,QJ!!!5JR0fXS*cGV+#FhD`!'!!#!!"8a&084%3"#&0dC'4PCLjS!*!
X$"+#FhG@JR0h9S*cGe3!B!!)!!&6%8e4%6!%)8h4NE'PL,QJ!N!-%S-IdfD$(p0Q
XJar6C!"J!!J!!9-469&**!3K6G(*TEQFZD!#3!`5JR-e$S*c03k#Fc8-!'!!#!!"
X8Je""8d-"#("KFf0KE#jS!*!$"+#FaLHJR-BRS*c'*`!D!!)!!&5$899*3`%,8A9
XTBfYNFQ&h,QJ!!!@JR-AmS*c&r+#FaI`!'J!#!!"8Jde"3e3!#NeKBe4jF'9c,QJ
X!N!-%S*c&jU#FaHDJR-AQ!"J!!J!!9)0'6dj8!3P'Efjd6@Gb,QJ!!!5JR-A9S*c
X&eD#FaG8!'J!#!!"8Jd9@48i"#N9fC@jd6@Gb,QJ!N!-%S*c'Hk#FaRZJR-Cl!"S
X!!J!!9)0A58j%!3YAD@jNEhG0Ch)ZD!!!"+#FaJ5JR-B%S*c'"!!B!!)!!&5$689
X193%*6@9ZG8eRFLjS!!!%S*c'Ak#FaPqJR-CI!"`!!J!!9)069%4'!3a6G'4'D@a
XP8'YR,QJ!N!-%S*c'2k#FaMqJR-Br!"`!!J!!9)0648G0!3a6C@GYC@jd6'4b,QJ
X!N!-%S*c'ED#FaQfJR-CY!"`!!J!!9)086dp-!3e8EfpXBQpi9A4TE#jS!!!%S*c
X'$U#FaJkJR-B1!"J!!J!!9)028e98!3K28e9dD@`ZD!"T!!5JR-A$S*c&`k#FaF-
X!'J!#!!"8Jd4*38`"#d4TB@a[CdeRFLjS!!!&S*c'CU#FaQDJR-CQ!"S!!J!!9)0
X849K8!!T8CAKd4@4TG#jS!*!$"+#FaGUJR-ADS*c&fJ!B!!)!!&5$4NP-43%*4QP
XXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!!9)0)4P-Z!39)4P-ZD!!!"+#a24@
XJX6d9S,%p&3!@!!)!!&5$3dp-6`%(3fpXEh)ZD!!!"+#FaLZJR-BVS*c'+`!F!!)
X!!&5$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+(mZSqKr,U2SIbkM`!B!!%!!!TN49K
X843!)CAKdCA*Z,QJ!C`!%SIi(TD(q"k@KrJHP!"S!!3!!#Q40380"!!T0B@0"E'9
XbG#jS!#jd,S!!!(`!N!2i#J!"!3!"!!$rN!LKm8hh!"3!!3!!#Q0$683Z!!9ME@3
XZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!*!$!D(a64QKm8d
XCSI&0'3!D!!%!!!TN4P913`!+CR9ZBepdB@)ZD!!ZJ!!!J!#3!r3+!!%"!!%!!2q
X3#+(q*'m!'!!"!!!+BdG&9%`!#@GPG'aTEQ8ZB`!!!D(q"q5KrJINSIi(j!!@!!%
X!!!TN5%&$5`!'D'&MDbjS!#i!!D(a64QKm8dCSI&0'3!D!!%!!!TN4P913`!+CR9
XZBepdB@)ZD!!!J!!!@!!!!3!+!!%"!!%!!2q3#+(ha4m!'!!"!!!+Bd&-6%d!#@&
XXE'eKD@iZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!#k#!!"
XB!!!FdJS!!3%!!3!!rj!)SI&1!J!@!!%!!!TM4%9$6!!'C'9ME#jM!'B!!D(q"q5
XKrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!'C0Ci!!!&3!!"cD#J!"!3!"!!$
XrN!LKr-V8!"3!!3!!#Q0D39!Z!!9kBA!ZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!T
XN5%&$5`!'D'&MDbjS!'1#!!"B!!!FeJS!!3%!!3!!rj!)SI6cJJ!@!!%!!!TM6%p
X$5`!'E'pMDbjM!'B!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!'D
XJR))!"CJ!!"c+#!!"!3!"!!$rN!LKm8e+!"J!!3!!#Q023NT&!!P[BQTPBh4c,Q-
X!!!'KrI&lSIhaHk(pmAX!'!!"!!!+C%026NB!#'0[EQCTCbjS!*!$!U(dlH#Kp1h
XJSI6Yi!!D!!%!!!TN9&*"4!!+G(*KC(0dC'-ZD!!Z!!+Kp1fDSI6YQU(dlCS!'!!
X"!!!+C%G-6d)!#'GXEf*KE#jS!'J!!k&ZM-1KESc$S@k-``!@!!)!!&6%8e4%53%
X(Fh4ND@mZD!!!!k(a64HKm8dASI&0&`!@!!%!!!TN3dp28J!(Bfp[FQ3ZD!!!!k(
XhJ(ZKpi"lSIH!H`!B!!%!!!TN68&$3`!*E@&MBfpZCLjS!!!%SI&0)k(a651Km8d
XM!"B!!3!!#Q408d42!!GYFf4[FbjS!!!%SI&0*D(a65@Km8dP!"J!!3!!#Q46@90
X8!!KcHA0dC@dZD!#3!`5JR0hPS*cGjD#FhH8!&J!#!!"8a&4*688""R4TE@8ZD!"
XS!!5JR0dhS*cG0k#Fh6F!&J!#!!"8a%C$6P3""dCMER4X,QJ!!!5JR0fXS*cGV+#
XFhD`!'!!#!!"8a&084%3"#&0dC'4PCLjS!*!$"+#FhG@JR0h9S*cGe3!B!!)!!&6
X%8e4%6!%)8h4NE'PL,QJ!N!-%S-IdfD$(p0QJar6C!"J!!J!!9-469&**!3K6G(*
XTEQFZD!#3!`5JR-e$S*c03k#Fc8-!'!!#!!"8Je""8d-"#("KFf0KE#jS!*!$"+#
XFaLHJR-BRS*c'*`!D!!)!!&5$899*3`%,8A9TBfYNFQ&h,QJ!!!@JR-AmS*c&r+#
XFaI`!'J!#!!"8Jde"3e3!#NeKBe4jF'9c,QJ!N!-%S*c&jU#FaHDJR-AQ!"J!!J!
X!9)0'6dj8!3P'Efjd6@Gb,QJ!!!5JR-A9S*c&eD#FaG8!'J!#!!"8Jd9@48i"#N9
XfC@jd6@Gb,QJ!N!-%S*c'Hk#FaRZJR-Cl!"S!!J!!9)0A58j%!3YAD@jNEhG0Ch)
XZD!!!"+#FaJ5JR-B%S*c'"!!B!!)!!&5$689193%*6@9ZG8eRFLjS!!!%S*c'Ak#
XFaPqJR-CI!"`!!J!!9)069%4'!3a6G'4'D@aP8'YR,QJ!N!-%S*c'2k#FaMqJR-B
Xr!"`!!J!!9)0648G0!3a6C@GYC@jd6'4b,QJ!N!-%S*c'ED#FaQfJR-CY!"`!!J!
X!9)086dp-!3e8EfpXBQpi9A4TE#jS!!!%S*c'$U#FaJkJR-B1!"J!!J!!9)028e9
X8!3K28e9dD@`ZD!"T!!5JR-A$S*c&`k#FaF-!'J!#!!"8Jd4*38`"#d4TB@a[Cde
XRFLjS!!!&S*c'CU#FaQDJR-CQ!"S!!J!!9)0849K8!!T8CAKd4@4TG#jS!*!$"+#
XFaGUJR-ADS*c&fJ!B!!)!!&5$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-A
XX!"3!!J!!9)0)4P-Z!39)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!&5$3dp-6`%
X(3fpXEh)ZD!!!"+#FaLZJR-BVS*c'+`!F!!)!!&5$8N966`%08Q9cEh9bBf90Ch)
XZD!!!"+(mZSqKr,U2SIbkM`!B!!%!!!TN49K843!)CAKdCA*Z,QJ!C`!%SIi(TD(
Xq"k@KrJHP!"S!!3!!#Q40380"!!T0B@0"E'9bG#jS!#i!!D(hK,1Kpi5cSIH%X`!
X8!!%!!!TN6d*+,J!&Ef*U,QJ!!!'Km8dMSI&0)k(a65-!'J!"!!!+C%p#5N-!#Qp
XLDQ0XBA0c,QJ!,J!"SI&0*+(a655Km8dN!"B!!3!!#Q438Np3!!C`FQp`,QJ!F`!
X"SII#QD(h`TQKpm+C!"B!!3!!#Q4$6da2!!GMEfa[FLjS!%0"J!!!@!!!(-B+!!%
X"!!%!!2q3#+(a68X!'!!"!!!+Bdp39%N!#@p`G'P[ER-ZB`!!!D(q"q5KrJINSIi
X(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!#k!!!"B!!!F`JS!!3%!!3!!rj!)SI&08J!
XB!!%!!!TM6ep*6J!)EepTEQPd,Q-!N!-"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380
X,!!CSB@0V,QJ!Bi!!!&J!!"bq#J!"!3!"!!$rN!LKm8h8!"J!!3!!#Q09AdP1!!K
XeAfPZDA3ZB`#3!`'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"MJ!!
X&"!!!(,S)!!%"!!%!!2q3#+(f9N3!'!!"!!!+CNe"3dB!#@eKBfCTE'8ZB`!!!D(
XpmAZKrI&lSIhaH`!B!!%!!!TN3dp14J!)BfpZCQPR,QJ!N!-#SI6Yi+(dlH#Kp1h
XJ!"S!!3!!#Q488N&%!!TdFQ&NFh4NBbjS!'m!!U(dlCUKp1fDSI6YQJ!B!!%!!!T
XN4da23J!)Cfa[BQ&X,QJ!D!!$S@k-`k&ZM-1KESc$!"B!!J!!9-469%4*!3GcG'4
XTEbjS!!!$SI&0&k(a64HKm8dA!"B!!3!!#Q4$6dp5!!GMEfpbC#jS!!!$SIH!Hk(
XhJ(ZKpi"l!"J!!3!!#Q40380$!!PYB@0MEfjQ,QJ!!!5Km8dMSI&0)k(a65-!&J!
X"!!!+C%e64%m!"fecC'pc,QJ!!!5Km8dPSI&0*D(a658!'!!"!!!+C&0C8e3!#(0
XjFh4PE5jS!*!$"+#FhH@JR0hPS*cGj3!@!!)!!&6%9%P043%'G'PYC5jS!'J!"+#
XFh6HJR0dhS*cG0`!@!!)!!&6%4N019!%(4Q0ZG'`ZD!!!"+#FhDbJR0fXS*cGV!!
XB!!)!!&6%8e4%4!%)8h4NC'9Q,QJ!N!-%S*cGeD#FhG@JR0h9!"J!!J!!9-469%4
X-!3K6G'4XD@)ZD!#3!`5Jar6CS-IdfD$(p0N!'!!#!!"8a&088NN"#&0dFQPZCbj
XS!*!$"+#Fc81JR-e$S*c03`!B!!)!!&5$8%&63`%)F'&cBf&X,QJ!N!-%S*c'*k#
XFaLHJR-BR!"S!!J!!9)0498P$!3Y4G@PMDf4bBAFZD!!!"D#FaIbJR-AmS*c&r!!
XD!!)!!&5$68&$9!!+6@&M9(P`CA-ZD!#3!`5JR-AQS*c&jU#FaHB!'!!#!!"8JdC
X26P3"#8C[ER40Ch)ZD!!!"+#FaG@JR-A9S*c&e3!D!!)!!&5$49C&6J%+4ACPER4
X0Ch)ZD!#3!`5JR-ClS*c'Hk#FaRX!'J!#!!"8JeG*6N3"#eGTEQ4[GdeRFLjS!!!
X%S*c'"+#FaJ5JR-B%!"J!!J!!9)0048j9!3P0C@je6@Gb,QJ!!!5JR-CIS*c'Ak#
XFaPm!(!!#!!"8Je084%B"$&0dC%CTE'93DfFZD!#3!`5JR-BrS*c'2k#FaMm!(!!
X#!!"8Je0&4dd"$&0PCfePER4-C()ZD!#3!`5JR-CYS*c'ED#FaQd!(!!#!!"8Je4
X26d`"$94[EfaLEhK9G'PX,QJ!!!5JR-B1S*c'$U#FaJi!'!!#!!"8Jdp6993"#%p
X69A4TE#jS!'N!"+#FaF1JR-A$S*c&``!D!!)!!&5$4%P"6!%,4'PKE'pR6@Gb,QJ
X!!!@JR-CQS*c'CU#FaQB!'J!#!!"8Je4&@&3!#P4PH(4&C'Pd,QJ!N!-%S*c&fU#
XFaGUJR-AD!"J!!J!!9)0'58a&!3P'D@aP6@Gb,QJ!!!5JR-AXS*c&l+#FaH`!&!!
X#!!"8JdK'8bi""8K'8bjS!!!%S,%p&D#a24@JX6d9!"B!!J!!9)0$6da2!3G$Efa
X[FLjS!!!%S*c'+k#FaLZJR-BV!"`!!J!!9)054902!3e5CA0[GA*MC8eRFLjS!!!
X%SIbkMk(mZSqKr,U2!"J!!3!!#Q4&@&4&!!KPH(4PFQiZD!"R!!5KrJHPSIi(TD(
Xq"k8!'J!"!!!+C%e"3d%!#NeKBd&XCA*d,QJ!,S!!!)!!!"bf#J!"!3!"!!$rN!L
XKrKj&!"J!!3!!#QC0380*!!PYB@0TEQPd,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!
X+C%K"3dX!"QKKBfXZD!!Z!!'JR-B"S*c'!D#FaJ%!'J!#!!"8Jde&68m"#dePE@p
XbH8eRFLjS!)!!!(`!!"bb#J!"!3!"!!$rN!LKrHZ+!"J!!3!!#QG33de"!!K`Bfe
XKD@iZB`#3!`'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"M!!'JR0d
XCS*cG'D#Fh4N!&J!#!!"8a%08@9!""f0dHA"P,QJ!JJ!!@!!!(+i+!!%"!!%!!2q
X3#+(a6Hd!&J!"!!!+BeG5593!"hGbDA4P,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!
X+C%K"3dX!"QKKBfXZD!!!89@#!!"m!!!FUJS!!3%!!3!!rj!)SI1(T!!@!!%!!!T
XM39"36!!(BA"`E(NZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbj
XS!*!$!D(a64LKm8dBSI&0'!!@!!%!!!TN48424`!'C@4[CbjS!!"&GS!!!&J!!"b
XQ#J!"!3!"!!$rN!LKm8ia!"J!!3!!#Q003d&6!!KYBf&cG(8ZB`#3!`'KrJINSIi
X(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"MJJ!!I!!!(+)+!!%"!!%!!2q3#+(
Xq+4X!&J!"!!!+Be""4d8!"h"KCf9b,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K
X"3dX!"QKKBfXZD!#3!`'JR0dCS*cG'D#Fh4N!&J!#!!"8a%08@9!""f0dHA"P,QJ
X!E#k!!!"B!!!FRJS!!3%!!3!!rj!)SI&0D!!B!!%!!!TM8P906`!)FR9YEh*c,Q-
X!N!-"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!Bi)!!&J!!"bD#J!
X"!3!"!!$rN!LKm8hJ!"B!!3!!#Q0A589-!!GhD@9XC#jM!!!"SIi(j+(q"q5KrJI
XN!"B!!3!!#Q4)380,!!CSB@0V,QJ!N!-#JJ!!@!!!(*B+!!%"!!%!!2q3#+(a6H`
X!&J!"!!!+BeG28Ni!"RG[FQiZB`#3!`'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX
X!"QKKBfXZD!!!Bf@#!!#S!!!FNJS!!3%!!3!!rj!)SIh$C`!B!!%!!!TM9N958`!
X*GQ9bFfP[ELjM!!!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!,J!
X"SIh`CU(pm'DKrI"Q!"B!!3!!#Q4%394&!!CNBA4P,QJ!,J!"SI&0)k(a651Km8d
XM!"`!!3!!#Q43394$!!a`BA4MD'aPGQ9X,QJ!!'0VJJ!!@!!!()i+!!%"!!%!!2q
X3#+(a6IF!&J!"!!!+Bd4&68m!"f4PE@pZ,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!
X+C%K"3dX!"QKKBfXZD!!!F'1#!!"m!!!FLJS!!3%!!3!!rj!)SI&0i!!@!!%!!!T
XM9dp563!'GfpbE5jM!*!$!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbj
XS!*!$!D(a65kKm8dZSI&0,J!@!!%!!!TN9e0&4`!'Gh0PCbjS!!"hFS!!!(J!!"b
X'#J!"!3!"!!$rN!LKrF4V!"3!!3!!#Q0&6N3Z!!9PEQ3ZB`!!!D(q"q5KrJINSIi
X(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!*!$!D(a64LKm8dBSI&0'!!@!!%!!!TN490
X)5`!'CA0SDbjS!!#!!!"i!!!FJJS!!3%!!3!!rj!)SI&0Y3!8!!%!!!TM8NP3,J!
X&FQP`,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!#3!`'JR0d
XCS*cG'D#Fh4N!&J!#!!"8a%08@9!""f0dHA"P,QJ!J!!!I!!!((i+!!%"!!%!!2q
X3#+(crfi!'!!"!!!+Be428&3!#(4[F(4PELjM!*!$!D(q"q5KrJINSIi(j!!@!!%
X!!!TN5%&$5`!'D'&MDbjS!'-!!D#Fh4QJR0dCS*cG'3!@!!)!!&6%3e4C8!%(Bh4
XjF'8ZD!##!!"B!!!FHJS!!3%!!3!!rj!)SI&0b!!@!!%!!!TM8e4&33!(Fh4PB@`
XZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!*!%J!!!9!!!((B
X+!!%"!!%!!2q3#+(a6EB!&!!"!!!+Be0*9#i!"A0TG#jM!!!"SIi(j+(q"q5KrJI
XN!"B!!3!!#Q4)380,!!CSB@0V,QJ!,S)!!&J!!"ab#J!"!3!"!!$rN!LKph@0!"B
X!!3!!#Q038N&C!!C`FQ&j,Q-!N!-"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!C
XSB@0V,QJ!N!-"J!!!@!!!('i+!!%"!!%!!2q3#+(haJ%!'!!"!!!+Be"29%N!#("
X[G'P[ELjM!*!$!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!'1#!!#
X!!!!FDJS!!3%!!3!!rj!)SIGfE3!B!!%!!!TM8e"I6!!)Fh"IE'9f,Q-!N!-"SIi
X(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!B`!"SI&0*+(a655Km8dN!"J
X!!3!!#Q468&p-!!KcF&pXCABZD!!!6IH#!!#J!!!FCJS!!3%!!3!!rj!)SIbY-3!
XB!!%!!!TM8N969!!*FQ9cG'pbC5jM!!!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380
X,!!CSB@0V,QJ!,J!"SI&0'D(a64QKm8dC!"3!!3!!#Q4-49BZ!!9XCABZD!!!!D(
Xa65kKm8dZSI&0,J!@!!%!!!TN9e0&4`!'Gh0PCbjS!#j0,S!!!*`!!"aL#J!"!3!
X"!!$rN!LKmQQm!"B!!3!!#Q0639C&!!CcBACP,Q-!,J!"SIi(j+(q"q5KrJIN!"B
X!!3!!#Q4)380,!!CSB@0V,QJ!,J!"SI&0'D(a64QKm8dC!"3!!3!!#Q4-49BZ!!9
XXCABZD!!!!D(a65kKm8dZSI&0,J!@!!%!!!TN9e0&4`!'Gh0PCbjS!#k#!!"B!!!
XFAJS!!3%!!3!!rj!)SI&153!@!!%!!!TM68Y-43!(E@YXCABZB`!!!D(q"q5KrJI
XNSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!*!$&S)!!&J!!"aD#J!"!3!"!!$rN!L
XKphB$!"B!!3!!#Q068%9-!!GcF'9XE#jM!!!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4
X)380,!!CSB@0V,QJ!N!-@JJ!!@!!!(&B+!!%"!!%!!2q3#+(a6NN!&J!"!!!+Bde
X98dN!"feeFfPM,Q-!!!'KrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!#
X3!`'#!!"B!!!F8JS!!3%!!3!!rj!)SIc*q`!@!!%!!!TM3Np143!(BQpZCA-ZB`!
X!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!*!$!B!!!$!!!"a1!!!
X"!3!"!!$rN!LKhZ,P!"3!!J!!9,j"6P0*!!4"6P0*!!##!!"F!!!F5JS!!3%!!3!
X!rj!)SIiEC`!D!!%!!!TQ68&$33!+6@&M3@aPFR3ZB`"[!!'KrJINSIi(j+(q"q3
X!&J!"!!!+C%K"3dX!"QKKBfXZD!"d!!'!!!"m!!!F4JS!!3%!!3!!rj!)SIGC!J!
XB!!%!!!TM4%p,53!)C'pVD@0V,Q-!B`!"SIi(j+(q"q5KrJIN!"B!!3!!#Q4)380
X,!!CSB@0V,QJ!B`!"SI&0'+(a64LKm8dB!"B!!3!!#Q4&8dK,!!CPFfKV,QJ!Bi!
X!!&J!!"a##J!"!3!"!!$rN!LKm8i0!"J!!3!!#Q0%6e4)!!PNEh4SFQph,Q-!!!'
XKrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!!ZJ!!!9!!!($i+!!%"!!%
X!!2q3#+(mZXd!&!!"!!!+Bd42,N-!"'4[,Q-!E`!"SIi(j+(q"q5KrJIN!"B!!3!
X!#Q4)380,!!CSB@0V,QJ!!))!!&`!!"`k#J!"!3!"!!$rN!LKmQP!!"S!!3!!#Q0
X&@&45!!TPH(4bB@aPGLjM!'m!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&
XMDbjS!(B"!B)!!&`!!"`f#J!"!3!"!!$rN!LKphAS!"S!!3!!#Q0'6e91!!TQEh9
XZG'&TELjM!'m!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!'i!!B)
X!!&J!!"`b#J!"!3!"!!$rN!LKm8iB!"B!!3!!#Q0&@&"&!!GPH("PFLjM!!!"SIi
X(j+(q"q5KrJIN!"B!!3!!#Q4)380,!!CSB@0V,QJ!!!TMJ!!!I!!!(#i+!!%"!!%
X!!2q3#+(mZM8!'!!"!!!+Be0)5di!#(0SDfjKE5jM!'-!!D(q"q5KrJINSIi(j!!
X@!!%!!!TN5%&$5`!'D'&MDbjS!'-!!D(a64LKm8dBSI&0'!!@!!%!!!TN490)5`!
X'CA0SDbjS!'1#!!"B!!!F+JS!!3%!!3!!rj!)SI*TK`!@!!%!!!TR8%089!!(F'0
XdG(NZB`!!!D(q"q5KrJINSIi(j!!@!!%!!!TN5%&$5`!'D'&MDbjS!!!+C)!!!&J
X!!"`Q#J!"!3!"!!$rN!LKmjfF!"J!!3!!#QG33e91!!K`Bh9ZDAJZB`"R!!'KrJI
XNSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"MJ!!!+!!!(#)!N!8p!*!$IJ!
X"!$d!N!-D!*!$!3!)"'eKD@iJN!-!N!2`!"3!!J!!9,j"6P0*!!4"6P0*!!##!!"
XF!!!F5JS!!3%!!3!!rj!)SIiEC`!D!!%!!!TQ68&$33!+6@&M3@aPFR3ZB`"[!!'
XKrJINSIi(j+(q"q3!&J!"!!!+C%K"3dX!"QKKBfXZD!"d!!'!!!"m!!!F4JS!!3%
X!!3!!rj!)SIGC!J!B!!%!!!TM4%p,53!)C'pVD@0V,Q-!B`!"SIi(j+(q"q5KrJI
XN!"B!!3!!#Q4)380,!!CSB@0V,QJ!B`!"SI&0'+(a64LKm8dB!"B!!3!!#Q4&8dK
X,!!CPFfKV,QJ!B`#3!```,J!)1d$k`#mY!!!B3!!!!3#3"'!!N"-%!*!J!3)!N!A
Xm!*!$B!#3%`3!N"i"%`%#!!%!N!2i!*!$B!#3%`3!N#!"!J!#!*!$p!#3!f!!N"-
X%!*!J!3)!!`#3!r!!N!0J!*!6"!#3(`-"!J!&!*!$l!#3!f!!N"-%!*!J!3)!"J#
X3!qJ!N!0J!*!6"!#3(NC%!3)!B!#3!q3!N!0J!*!6"!#3(a!#!`!B!*!$i!#3!f!
X!N"-%!*!H!C)#!`!9!*!$h!#3!f!!N"-%!*!H!3%#!`!%!*!$f!#3!f!!N"-%!*!
XIVJ)$!!d!N!28!*!$B!#3%`3!N"qZ!J-!$!#3!p!!N!0J!*!6"!#3(ki#!`!)!*!
X$c!#3!f!!N"-%!*!H!C!$!J!*!*!$b!#3!f!!N"-%!*!H!3%$"!!,!*!$a!#3!f!
X!N"-%!*!H!3%$"!!+!*!$`!#3!f!!N"-%!*!H!3%$"!!(!*!$[!#3!f!!N"-%!*!
XH!3%%"3!8!*!$Z!#3!f!!N"-%!*!H!3%%"3!3!*!$Y!#3!f!!N"-%!*!H!3%%"3!
X1!*!$X!#3!f!!N"-%!*!Ha0`#!`!2!*!$V!#3!f!!N"-%!*!Id3%#!"X!N!1S!*!
X$B!#3%`3!N"i&"`3&!"B!N!1N!*!$B!#3%`3!N"i"$`3&!"%!N!1J!*!$B!#3%`3
X!N"m&!3)!%J#3!j`!N!0J!*!6"!#3(bd&"J!A!*!$Q!#3!f!!N"-%!*!H%IX&"J!
X6!*!$P!#3!f!!N"-%!*!HEf)$"!!C!*!'$d!!!!C5!!!'9!!!#Q)!!"U`!*!$"!#
X3(QCI"JF!AJ#3!j!!!*!$B!#3%`3!N"jdD3B(!"S!N!1-!*!$B!#3%`3!N"i1!JF
X)!&B!N!1)!*!$B!#3%`3!N"i"E!F)!"d!N!1%!*!$B!#3%`3!N"m3"`J!(J#3!i!
X!N!0J!*!6"!#3(`%(#!!I!*!$I!#3!f!!N"-%!*!I!4mJ!#!!N!0i!*!$B!#3%`3
X!N"lrr`J*!#%!N!0d!*!$B!#3%`3!N"i*4JJ*!#B!N!0`!*!$B!#3%`3!N"l&)!J
X*!#F!N!0X!*!$B!#3%`3!N"i",!J*!#N!N!0S!*!$B!#3%`3!N"i"h!J*!#-!N!0
XN!*!$B!#3%`3!N"i#qJN+!#3!N!0J!*!$B!#3%`3!N"i*SJJ*!#8!N!0F!*!$B!#
X3%`3!N"mJ(Km!+!#3!eJ!N!0J!*!6"!#3(aXG(J!X!*!$9!#3!f!!N"-%!*!I!3S
X,!#m!N!03!*!$B!#3%`3!N"i*,"ND!#i!N!0-!*!$B!#3%`3!N"i##`S,!%!!N!0
X)!*!$B!#3%`3!N"i#,`S,!$%!N!0%!*!$B!#3%`3!N"i#@3`0!$)!N!0!!*!$B!#
X3%`3!N"i$"3X-!$3!N!-m!*!$B!#3%`3!N"i#rJX-!$!!!"cD!*!$B!#3%`3!N"m
XB("d!03!!(0B!N!0J!*!6"!#3(p`-$3!l!!!FdJ#3!f!!N"-%!*!H!p80$J!m!!!
XFcJ#3!f!!N"-%!*!IrJd1!$B!!"c+!*!$B!#3%`3!N"i5+`d1!$F!!"c'!*!$B!#
X3%`3!N"mJ$3i!1!!!(-)!N!0J!*!6"!#3(bi0$J!j!!!F[J#3!f!!N"-%!*!HC8X
X0$J!p!!!FZJ#3!f!!N"-%!*!HC%d0$J"I!!!FYJ#3!f!!N"-%!*!H"h30$J!k!!!
XFXJ#3!f!!N"-%!*!HG'm0$J"&!!!FVJ#3!f!!N"-%!*!HCAN2%!!r!!!FUJ#3!f!
X!N"-%!*!HCR31$`"G!!!FTJ#3!f!!N"-%!*!H#'i,$!"C!!!FSJ#3!f!!N"-%!*!
XHC'J3%3"-!!!FRJ#3!f!!N"-%!*!HG'J3%3"$!!!FQJ#3!f!!N"-%!*!HCA)2%!"
X%!!!FPJ#3!f!!N"-%!*!HF`F2%!!q!!!FNJ#3!f!!N"-%!*!H$J)0$J""!!!FMJ#
X3!f!!N"-%!*!Hr`B4%J"#!!!FLJ#3!f!!N"-%!*!HEh!4%J"'!!!FKJ#3!f!!N"-
X%!*!I!4)6!&S!!"b#!*!$B!#3%`3!N#!5%`",!!!FIJ#3!f!!N"-%!*!Iea)6!%F
X!!"ak!*!$B!#3%`3!N"i$9K%5!%J!!"af!*!$B!#3%`3!N"i*$!m3!%N!!"ab!*!
X$B!#3%`3!N"i"%"39!%S!!"aZ!*!$B!#3%`3!N"i4p"-8!&`!!"aU!*!$B!#3%`3
X!N"i4pK8@!%i!!"aQ!*!$B!#3%`3!N"i4r4BA!%d!!"aL!*!$B!#3%`3!N"i"c"B
XA!%m!!"aH!*!$B!#3%`3!N"i5"KBA!&)!!"aD!*!$B!#3%`3!N"i%8KFB!&!!!"a
X@!*!$B!#3%`3!N"i#!4FB!&%!!"a5!*!$B!#3%`3!N"i"c"JC!&3!!"a1!*!$B!#
X3%`3!N"i"!!B(!&-!!"a+!*!$B!#3%`3!N"i"jKJC!&8!!"a'!*!$B!#3%`3!N"j
X@6"XF!&F!!"a#!*!$B!#3%`3!N"jdE!m3!#d!!"`q!*!$B!#3%`3!N"rQ%4)!@`!
X!($S!N!0J!*!6"!#3(J&3'KX!@!!!($B!N!0J!*!6"!#3)"-8!$-!!"`b!*!$B!#
X3%`3!N"i"i3i2!#X!!"`Z!*!$B!#3%`3!N"i"NJ8'!#S!!"`U!*!$B!#3%`3!N"k
XTm!d1!#)!!"`Q!*!$B!#3%`3!N"mR!3)!(!#3!f!!N!0`!*!(8!#3!b!!($mm!!'
XTm!3+2c`!!DR`""ir2!!"UI!%-Mmm!!'Tm!412c`!!DR`")3r2!!"UI!%T$mm!!'
XTm!6'2c`!!DR`"1Br2!!"UI!((Mmm!!'Tm!#3!`3!N!F%!*!("!#3"`3!N!F%!*!
X("!#3"`3!N!F%!*!("!#3"`3!N!F%!*!("!#3"`3!N!F%!*!("!#3"`3!N!F%!*!
X("!#3"`3!N!F%!*!("!#3"`3!N!F%!*!("!#3"`3!N!F%!*!("!#3"`3!N!F%!*!
X("!#3"`3!N2m!N)X(3J#3!`S!N"SF)N*i#NUGcNkk!&41ZJ"Q,$a*6N4B6VS&ENI
XkrmSQM%IkrmJQK%kk!'C1ZJ+S6VS'*Nkk!0a1ZJ#S3QG)H2rr5'm!"%KA2c`!!5)
Xkrl*1ZJ1#6V83!#"Y!'a1N!#Tp&(i#Pjq!%kk![TR#%U3!'F%#0!!"Nje)$J+H'B
X-,$aD6dj&6VS&"#!-4rVrCLD!6R9CMbmm4%&838*RUD!J9b"3)RJ*##!0N!#*4rV
Xr6LD!S#kTSb`m8e458dkk"-j(q[mf*S`X2%4548a1ZJ5q)%`J"'F-6VS"YJ5!!*!
X$$'Ed6[S&DNj@rpT"q!N3)Np`)+!ZF!(3%9S4dX""qJ!5F!@J,P@25'm!!UQA6Pj
X1G5jbFh*M!%Ik"HiQZ!Tm,cJ+J'B#@)p1G8MRrrJq,`!m8IJ+AQ!+@Bm[#+QP)"q
XJ3%kk!L4R4%IkrVJQL#!3CqBL3%U4CLi!%!$!,$a$8N9-6VS%,'FN2Lm!2#"-)!4
XR$%kk!(J%J!#3!`aQp%kk"0"1ZJ'F60mIrdjeF!qTb8kk"Aa1ZJ@%6VS%p%je)(J
X+l+!P)&!L5#)BB!T"k!!)G!'%'0$#8FRrp*!!L0#*CJ*1G5)!S#iJH!VX)!'J*#*
X36qrr`#"23UJ!%M&T!!3!&U!93UG)D3!-)%qTmM)B6VS"RL4BeF%d'#)BEM*R&P*
X"C`C53@FD6R8b+2rd6VS"Z0056R8b+2rd6VS"L0056R8b+2rd6VS"MY1Urrj1G8k
Xk!8ib+3!-5QN!#QBF9%*U$("MUFP53QEide*1G8kk!965U3!1de*1G8kk!@c5U3!
X18N*Q"0056R9$p4!#[P&Qe!aK2caQcP*#CJB+DJ!Arrib)9K")RVpI0+4NNV68Nj
Xe-KK1ZJ%14I83!0AB0"KR-L)BEL4R$P*"CK3b+2rd6VS"&Q!B-LMrp%kk!1KJ$M)
XSrr41ZJ$`B!C1ZJ%3dSh6NNje)KK1ZJ%%de*1G5"kr4!J1[d35UJ!!'FS-LJ!+'F
XL*#J!'&P#3qd!%02S!!69@6,m2ca#'4,S!$dbr+R`88&Ql%(S!%!%J!#3!d"QaNj
Xe)(Vmc#!kr-abrh3!5UJ!!'FB[LJ!2@B50LJ!+'F-e%1bU!!%C33L+!!%3HJ!3!5
X!!*!$3'E@)(VmUL"3"%%!%$$"jNS``Nje@Bm[2%024%8r"kQJ)&p3q!TH)!K1G5K
Xkr(BLG"J!Nq`!102-6R8SH[aH`[`!3#)d'"JSH[aQdT41G5Kkr%V#r!"!)M3B#*+
Xkr%j1G5Kkr$M#r!"!)M3B%0+kr$K1G5Kkr#E#r!"!)M3B"!D"!*!$%%je6VVrSM)
XT!!a+D3!+CJC1Z[qiB!41Z[r@dUN!$Nje)&mb'$3BX&KAbIrk5N*RrNl`)2`JAc)
XB0"L`Q&I*rrT+3QIq6[!JqL"I-KJd',"#EJU3!%&Y"Y"!3I!!!M!3Crj1m!!!)#m
X!"#p"!!3L,`!),em!"%MR2!!N!#B"5%,%`bJ!+J&)4FM&e%4)3T!$`-(3JNcI!$`
XL(dje)#m!"#p"!!3L,`!),em!"%MR-3"1ZJ#F60m!M#)I6R8J,`!%,d%!"#)[!!J
X[A`!%51Fa!%kk!(`J!8cI!)`L(dje)#m!"#p"!!3L,`!),em!"%MR-3"1ZJ!X60m
X!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!!`J!8cI!)`L(dje5S"U(%U"DJa
X%J%5"6VS!)%5"6R9%J%kk!"C%J%5"6R9+J@S+4)&1ZJ!'4)"1G5im!!$rrl+!B`B
XL!(!!6R@`Kf)-J-&)3$)!3N")3%jeXSGL'Li!3N")3)$"5%")4ci!5%H1`6!(5%F
Xb"dje*!!Q!H+)iSQbKf,iJ-(!Kc)$`X!Z!dK(cX")4p+(C3L5JQ)%4)&1G90!B14
Xq!&(i#PjCMbm'2`HTS#!IC`!!VLC!@Bm[#kQP*KmJ#bJ$8NI[4e*(1JGJ&PQ2,`B
Xr"kQJ)"pR!!#)8NF'K!!!Irj9Mbm!UDB`(`J!!!9Qh&$i#Pl24CT(CK`J!k"!,`Z
XTSL!6C`!!@Lm,UC)S8b",S#P`!8je)!5K(L!)C`!!3LK),`ZTSL!6C`!!0L",)!0
XJ'&Q2,`Br"kQJ)"pR!!!L8NFJ3#!m!!"rrLm))&!L60R!S#kTSe(0rpUCa#C-F!&
X1G5",5N9Q"+!M6R@J(dje-MbTm%2kqXC1ZJ"S-MbTmN2kqbK1ZJ"F-MbTmd2kqaa
X1ZJ"3-MbTp%2kq`K1qJ"%,`JJE`!),fJ!!J!))(J#TR!-d*!!X,J#UQBN6VS!C$)
XmUI"1ZJ"%-MbTmNkk!$`b2+Rc6VS!0$)mUI41ZJ!X)&p1G6!"S8BN5(!-5RJ#MQS
X%T4jJ!U%H-!'J4c$m6VNJb6$m6[NJbNje-!'K4L*S!!LJ(c!")%QJ4dje!*!%6R8
XJ1[riC`3J3%+3!%je)(J#TR!-d*!!X,J#UQF!qRC1G3!!!3#3!fMQ!!"RjJ!!"`S
X!,KPX"!`!N!-F"`)!$NK"8dJ!N!0k@Np143#3!iC,58j%!*!$NPG-6d-!N!1H58j
X%@!#3!kT$6d4&!#!!YN4"9%%!!!*#8e458`!!!Nj%8N9-!!!#@P0C69-!!!*Q3dj
X'4`!!!R*659T&!!!#IN0548`!(J++4%*94`!H!rjB8eP0!"i&FJ!"!*!%!B3!-*K
X)!!$rr`!!"AJ!-*JN!!$rr`#3"6#B3!!!rrm!!!&F!$#B4!!!rrm!!%9m!$#B+!!
X!rrm!!&h!!$#B)!!#rrm!!&iN!*!&!rrr!!"H,!#3"36rr`!!AM3!N!8&rrm!!&i
Xm!*!&"[rr!!"H4!#3"3Irr`!!AN`!N!8)rrm!!&j8!*!&#Irr!!"HA!#3"3Vrr`!
X!AQ3!N!8,rrm!!&jX!*!&$2rr!!"HG!#3"3hrr`!!AR`!N!81rrm!!&k%!*!&$rr
Xr!!"HM!#3"4$rr`!!AT3!N!84rrm!!&kF!*!&%[rr!!"HT!#3"42rr`!!AU`!N!8
X8rrm!!&kd!*!&&Irr!!"H[!#3"4Err`!!AX3!N!8Arrm!!&l-!*!&'2rr!!"He!#
X3"4Rrr`!!AY`!N!8Drrm!!&lN!*!&'rrr!!"Hl!#3"4crr`!!A[3!N!8Grrm!!&l
Xm!*!&([rr!!"I"!#3"4rrr`!!A``!N!8Jrrm!!&m8!*!&!Irr&!"JS!!`Q!`!!2r
Xr!!"I(!!`Q"`!!2rr!!"I)!!`Q"3!!2rr!!"I*!!`Q"J!!2rr!!"I+!!`Q"!!![r
Xr!!!"D!!`Q#crr`!'!!!"GJ!`Q$!!![rr!!"I,!#3"32rr`!!Ac!!N!8%rrm!!&m
Xd!*!&"Irr!!"I1!#3"3Err`!!Ac`!N!8(rrm!!&p!!*!&#2rr!!"I4!#3"3Rrr`!
X!AdJ!N!8+rrm!!&p-!*!&#rrr!!"I8!#3"3crr`!!Ae3!N!80rrm!!&pB!*!&$[r
Xr!!"IA!#3"3rrr`!!Af!!N!83rrm!!&pN!*!&%Irr!!"ID!#3"4,rr`!!Af`!N!8
X6rrm!!&p`!*!&&2rr!!"IG!#3"4Arr`!!AhJ!N!8@rrm!!&pm!*!&&rrr!!"IJ!#
X3"4Mrr`!!Ai3!N!8Crrm!!&q)!*!&'[rr!!"IM!#3"4[rr`!!Aj!!!*!&(2rr!!"
XIP!#3"4hrr`!!AjJ!N!8Hrrm!!&qF!*!&(rrr!!"IS!#3"5$rr`!!Ak3!N!8#rrm
X!!&qS!*!&!rrr!!"IV!#3"36rr`!!Al!!N!8&rrm!!&qd!*!&"[rr!!"IZ!#3"3I
Xrr`!!Al`!N!8)rrm!!&r!!*!&#Irr!!"Ia!#3"3Vrr`!!AmJ!N!8,rrm!!&r-!*!
X&$2rr!!"Id!#3"3hrr`!!Ap3!N!81rrm!!&rB!*!&$rrr!!"Ih!#3"4$rr`!!Aq!
X!N!84rrm!!&rN!*!&%[rr!!"Ik!#3"42rr`!!Aq`!N!88rrm!!&r`!*!&&Irr!!"
XIp!#3"4Err`!!ArJ!N!8Arrm!!&rm!*!&'2rr!!"J!*!''Irr!!"J"!#3"4Vrr`!
X!B!J!N!8Errm!!'!-!*!&(2rr!!"J%!#3"4hrr`!!B"3!N!8Hrrm!!'!B!*!&(rr
Xr!!"J(!#3"5$rr`!!B#!!N!8#rrm!!'!N!*!&!rrr!!"J+!#3"36rr`!!B#`!N!8
X&rrm!!'!`!*!&"[rr!!"J0!#3"3Irr`!!B$J!N!8)rrm!!'!m!*!&#Irr!!"J3!#
X3"3Vrr`!!B%3!N!8,rrm!!'")!*!&$2rr!!"J6!#3"3hrr`!!B&!!N!81rrm!!'"
X8!*!&$rrr!!"J@!#3"4$rr`!!B&`!N!84rrm!!'"J!*!&%[rr!!"JC!#3"42rr`!
X!B'J!N!88rrm!!'"X!*!&&Irr!!"JF!#3"4Err`!!B(3!N!8Arrm!!'"i!*!&'2r
Xr!!"JI!#3"4Rrr`!!B)!!N!8Drrm!!'#%!*!&'rrr!!"JL!#3"4crr`!!B)`!N!8
XGrrm!!'#3!!#3"4lrr`!!B*3!N!8Irrm!!'#B!*!&)2rr!!"JR!#3"!9YDf&SE!%
Xb9+d:
END_OF_FILE
if test 30018 -ne `wc -c <'mac/NH.proj.hqx'`; then
    echo shar: \"'mac/NH.proj.hqx'\" unpacked with wrong size!
fi
# end of 'mac/NH.proj.hqx'
fi
echo shar: End of archive 30 \(of 56\).
cp /dev/null ark30isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 56 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0