Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) (07/07/90)
Submitted-by: sas.UUCP!walker%sas@rti.rti.org (Doug Walker)
Posting-number: Volume 90, Issue 200
Archive-name: comm/dnet/netkeys-2.0/part02
#!/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 2 (of 2)."
# Contents: netkeys.c netkeys.uu
# Wrapped by tadguy@xanth on Sat Jul 7 11:13:12 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'netkeys.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'netkeys.c'\"
else
echo shar: Extracting \"'netkeys.c'\" \(15146 characters\)
sed "s/^X//" >'netkeys.c' <<'END_OF_FILE'
X/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
X/* |_o_o|\\ Copyright (c) 1990 The Software Distillery. All Rights Reserved.*/
X/* |. o.| || This program may not be distributed without the permission of */
X/* | . | || the authors. */
X/* | o | || */
X/* | . |// Written by Doug Walker */
X/* ====== BBS:(919)-471-6436 VOICE:(919)-467-4764 */
X/* BIX: djwalker USENET: ...!mcnc!rti!sas!walker */
X/* 405 B3 Gooseneck Dr, Cary, NC 27513, USA */
X/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
X/*
X * Based on POPCLI III, written by John Toebes
X * Uses Matt Dillon's DNET
X */
X
X#include "netkeys.h"
X#include <intuition/intuitionbase.h>
X#include <proto/intuition.h>
X
X#ifdef DEBUG
X#undef DEBUG
X#endif
X
X#define DEBUG 0
X
X#if DEBUG
X#define BUG(x) if(_Backstdout) MSG(_Backstdout, x);
X#else
X#define BUG(x) ;
X#endif
X
X/* Declarations for CBACK */
Xextern BPTR _Backstdout; /* standard output when run in background */
Xlong _BackGroundIO = 1; /* Flag to tell it we want to do I/O */
Xlong _stack = 4000; /* Amount of stack space our task needs */
Xchar *_procname = "NetKeys II"; /* The name of the task to create */
Xlong _priority = 20; /* The priority to run us at */
X
Xint InitDevice(GLOBAL_DATA *, int);
Xint TermDevice(GLOBAL_DATA *);
X
Xstruct InputEvent * __regargs myhandler(struct InputEvent *ev, GLOBAL_DATA *gptr)
X{
X struct InputEvent *ep, *laste;
X struct NETKEYMSG *nkm;
X int msgtype;
X
X if(gptr->state < EM_DOIT) return(ev); /* In the process of quitting */
X
X /* run down the list of events to see if they pressed the magic button */
X for (ep = ev, laste = NULL; ep != NULL; ep = ep->ie_NextEvent)
X {
X msgtype = NKM_NONE;
X if(gptr->state == EM_RELURK)
X {
X gptr->state = EM_LURK;
X msgtype = NKM_ACK;
X }
X else if(ep->ie_Class == IECLASS_RAWKEY || ep->ie_Class == IECLASS_RAWMOUSE)
X {
X if(
X (
X ep->ie_Class == IECLASS_RAWKEY &&
X ep->ie_Code == gptr->dokey &&
X (ep->ie_Qualifier & IEQUALIFIER_LCOMMAND)
X )
X ||
X (
X gptr->state == EM_LURK &&
X ep->ie_Class == IECLASS_RAWMOUSE &&
X (ep->ie_Qualifier & IEQUALIFIER_RELATIVEMOUSE) &&
X (ep->ie_Code == IECODE_NOBUTTON) &&
X ((gptr->ibase->MouseX == 0 && ep->ie_X < 0 &&
X (gptr->exit & IECODE_NKLEFT)) ||
X (gptr->ibase->MouseX == gptr->swidth && ep->ie_X > 0 &&
X (gptr->exit & IECODE_NKRIGHT))
X )
X )
X )
X {
X /* Remove the event from the chain */
X if (laste == NULL)
X ev = ep->ie_NextEvent;
X else
X laste->ie_NextEvent = ep->ie_NextEvent;
X
X /* Telling us to toggle... */
X if(gptr->state == EM_DOIT)
X {
X gptr->state = EM_LURK;
X msgtype = NKM_WEBEDONE;
X }
X else
X {
X gptr->state = EM_DOIT;
X msgtype = NKM_HEREWEGO;
X }
X }
X else if(gptr->state != EM_LURK)
X {
X /* Remove the event from the chain */
X if (laste == NULL)
X ev = ep->ie_NextEvent;
X else
X laste->ie_NextEvent = ep->ie_NextEvent;
X
X msgtype = NKM_IEVENT;
X }
X }
X else
X laste = ep;
X
X if(msgtype != NKM_NONE)
X {
X if(!(nkm=(struct NETKEYMSG *)GetMsg(gptr->rtnp)))
X {
X if(gptr->nmsgs <= MAXMSGS)
X nkm=AllocMem(NKMSZ, MEMF_CLEAR|MEMF_PUBLIC);
X }
X if(nkm)
X {
X nkm->msgtype = msgtype;
X if(msgtype == NKM_IEVENT || msgtype == NKM_HEREWEGO) nkm->ie = *ep;
X PutMsg((struct MsgPort *)gptr->nkmp, (struct Message *)nkm);
X }
X }
X }
X
X /* pass on the pointer to the event */
X return(ev);
X}
X
X#if DEBUG > 1
XBPTR _Backstdout = NULL;
Xchar *cmd;
X#define DCLMAIN int main(int argc, char *argv[])
X#else
X#define DCLMAIN int _main(char *cmd)
X#endif
X
XDCLMAIN
X{
X struct MsgPort *inputDevPort = NULL;
X struct MsgPort *oldport;
X struct IOStdReq *inputRequestBlock = NULL;
X struct Interrupt handlerStuff;
X GLOBAL_DATA global;
X struct NETKEYMSG *msg, *oldmsg, *tmpmsg;
X int quit = 0;
X UWORD smooth = 2;
X struct Screen wbdat;
X struct IntuitionBase *IntuitionBase;
X struct GfxBase *GfxBase = NULL;
X UWORD *NoSprData = NULL;
X ULONG IBaseLock;
X
X#if DEBUG > 1
X /* Not really linked with cback */
X cmd = argv[1];
X _Backstdout = Output();
X#endif
X
X MSG(_Backstdout, BANNER);
X
X memset(&global, 0, sizeof(global));
X global.buddy = FindTask(0L);
X global.dokey = DEFDOKEY;
X global.state = EM_LURK;
X
X if(!(global.rtnp = CreatePort(0,0)))
X {
X MSG(_Backstdout, "Can't CreatePort\n");
X goto abort;
X }
X
X oldport = FindPort(NKMPNAME);
X
X if(cmd)
X {
X long tmpl = DEFDOKEY;
X while(*cmd)
X {
X while(*cmd != ' ' && *cmd != '\0') cmd++;
X while(*cmd == ' ') cmd++;
X
X switch(cmd[0])
X {
X case '\0':
X case '\n':
X break;
X
X case '0':
X if(cmd[1] == 'x')
X {
X stch_l(cmd+2, &tmpl);
X global.dokey = tmpl;
X }
X break;
X
X case 'F': case 'f':
X smooth = 0;
X break;
X
X case 'L': case 'l':
X global.exit = IECODE_NKLEFT;
X break;
X
X case 'Q': case 'q':
X quit = 1;
X break;
X
X case 'R': case 'r':
X global.exit = IECODE_NKRIGHT;
X break;
X
X case 'S': case 's':
X smooth = 1;
X break;
X
X case 'W': case 'w':
X global.exit = IECODE_NKLEFT|IECODE_NKRIGHT;
X break;
X
X default:
X MSG(_Backstdout,
X "USAGE: NetKeys [0xkey] [F|S] [L|R|W] [Q]\n");
X MSG(_Backstdout, " [0xkey] - RAW key code for hotkey\n");
X MSG(_Backstdout, " [F|S] - FAST or SMOOTH mode\n");
X MSG(_Backstdout,
X " [L|R|W] - Mouse cursor exits LEFT, RIGHT or WRAPs\n");
X MSG(_Backstdout, " [Quit] - Terminate NetKeys\n");
X goto abort;
X }
X }
X }
X
X if(!(oldmsg = AllocMem(NKMSZ, MEMF_CLEAR|MEMF_PUBLIC)))
X {
X MSG(_Backstdout, "No memory\n");
X goto abort;
X }
X if(quit)
X {
X if(!oldport)
X {
X MSG(_Backstdout, "Netkeys not installed\n");
X goto abort;
X }
X else
X {
X oldmsg->msgtype = NKM_QUIT;
X oldmsg->m.mn_Node.ln_Type = NT_MESSAGE;
X oldmsg->m.mn_ReplyPort = global.rtnp;
X
X PutMsg(oldport, (struct Message *)oldmsg);
X while(!GetMsg(global.rtnp))
X WaitPort(global.rtnp);
X GetMsg(global.rtnp);
X
X MSG(_Backstdout, "NetKeys removed\n");
X goto abort;
X }
X }
X
X if(oldport)
X {
X /* Modify the parms for the existing guy */
X oldmsg->msgtype = NKM_CONTROL;
X oldmsg->m.mn_Node.ln_Type = NT_MESSAGE;
X oldmsg->m.mn_ReplyPort = global.rtnp;
X oldmsg->ie.ie_Class = global.dokey;
X oldmsg->ie.ie_SubClass = global.exit;
X oldmsg->ie.ie_Code = smooth;
X PutMsg(oldport, (struct Message *)oldmsg);
X
X while(!GetMsg(global.rtnp))
X WaitPort(global.rtnp);
X GetMsg(global.rtnp);
X
X MSG(_Backstdout, "Parameters modified on existing NetKeys command\n");
X goto abort;
X }
X FreeMem(oldmsg, NKMSZ);
X oldmsg = NULL;
X
X MSG(_Backstdout, INSTR);
X
X if(global.exit == 0) global.exit = IECODE_NKLEFT|IECODE_NKRIGHT;
X
X if(smooth == 2) smooth = 0;
X
X if (
X ((global.nkmp = CreatePort(NKMPNAME, 0)) == NULL) ||
X ((inputDevPort = CreatePort(0,0)) == NULL) ||
X InitDevice(&global, NKM_HANDLER) ||
X ((inputRequestBlock =
X CreateIOReq(inputDevPort, sizeof(struct IOStdReq))) == NULL) ||
X
X !(global.ibase = (struct IntuitionBase *)
X OpenLibrary("intuition.library", 0)) ||
X
X !(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 0)) ||
X
X !(NoSprData = AllocMem(12, MEMF_PUBLIC|MEMF_CHIP|MEMF_CLEAR)) ||
X
X OpenDevice("input.device",0,(struct IORequest *)inputRequestBlock,0))
X {
X MSG(_Backstdout, "Can't initialize - check DNET connection\n");
X goto abort;
X }
X
X MSG(_Backstdout, "NetKeys installed\n");
X
X#if DEBUG < 1
X if(_Backstdout) Close(_Backstdout);
X _Backstdout = 0;
X#endif
X
X IntuitionBase = global.ibase;
X NoSprData[0] = 0xFE00;
X NoSprData[1] = 0xFF00;
X
X /* If we have an appropriate version of intuition, ask for info */
X /* about the workbench screen */
X if(IntuitionBase->LibNode.lib_Version < 33
X || !(GetScreenData((char *)&wbdat, sizeof(struct Screen),
X WBENCHSCREEN, NULL)))
X {
X /* Either we're running on an old version of the system, or the */
X /* GetScreenData call failed for some reason. In either case, */
X /* simply assume a 640x200 screen and be done with it. */
X global.swidth = 639;
X }
X else
X {
X /* Use the wb width, and STDSCREENHEIGHT. */
X global.swidth = wbdat.Width-1;
X }
X
X handlerStuff.is_Data = (APTR)&global;
X handlerStuff.is_Code = (VOID (*)()) myhandler;
X handlerStuff.is_Node.ln_Pri = 52;
X
X inputRequestBlock->io_Command = IND_ADDHANDLER;
X inputRequestBlock->io_Data = (APTR)&handlerStuff;
X
X DoIO((struct IORequest *)inputRequestBlock);
X
X while(global.state >= EM_DOIT &&
X !(SIGBREAKF_CTRL_C & Wait((1<<global.nkmp->mp_SigBit) | SIGBREAKF_CTRL_C)))
X {
X while(msg=(struct NETKEYMSG *)GetMsg(global.nkmp))
X {
X if(msg->msgtype == NKM_QUIT) /* Msg from another invocation */
X {
X ReplyMsg((struct Message *)msg);
X goto abort;
X }
X else if(msg->msgtype == NKM_CONTROL) /* Msg from another invocation */
X {
X global.dokey = msg->ie.ie_Class;
X if(msg->ie.ie_SubClass)
X global.exit = msg->ie.ie_SubClass;
X if(msg->ie.ie_Code != 2)
X smooth = msg->ie.ie_Code;
X ReplyMsg((struct Message *)msg);
X continue;
X }
X else if(msg->msgtype == NKM_HEREWEGO) /* From handler - start sending */
X {
X if(msg->ie.ie_Class == IECLASS_RAWMOUSE)
X msg->ie.ie_Code = global.exit;
X else
X msg->ie.ie_Code = global.exit|IECODE_NKHOTKEY;
X
X msg->ie.ie_Class = IECLASS_NKCONTROL;
X
X msg->ie.ie_Y = IntuitionBase->MouseY;
X msg->ie.ie_X = IntuitionBase->MouseX;
X
X mshow(GfxBase, NoSprData, 0); /* Blank mouse */
X }
X else if(msg->msgtype == NKM_WEBEDONE) /* From handler - quit sending*/
X {
X mshow(GfxBase, NoSprData, 1); /* Unblank mouse */
X msg->ie.ie_Class = IECLASS_NKCONTROL;
X msg->ie.ie_Code = IECODE_NKHOTQUIT|global.exit;
X msg->ie.ie_Y = IntuitionBase->MouseY;
X msg->ie.ie_X = IntuitionBase->MouseX;
X }
X
X tmpmsg = NULL;
X if( !smooth &&
X msg->ie.ie_Class == IECLASS_RAWMOUSE &&
X msg->ie.ie_Code == IECODE_NOBUTTON)
X {
X while((tmpmsg = (struct NETKEYMSG *)GetMsg(global.nkmp)) &&
X tmpmsg->msgtype == NKM_IEVENT &&
X tmpmsg->ie.ie_Class == IECLASS_RAWMOUSE &&
X tmpmsg->ie.ie_Code == IECODE_NOBUTTON &&
X (tmpmsg->ie.ie_Qualifier & IEQUALIFIER_RELATIVEMOUSE))
X {
X tmpmsg->ie.ie_X += msg->ie.ie_X;
X tmpmsg->ie.ie_Y += msg->ie.ie_Y;
X PutMsg(global.rtnp, (struct Message *)msg);
X msg = tmpmsg;
X tmpmsg = NULL;
X }
X }
Xputit:
X if(DWrite(global.chan, (char *)&msg->ie, IESZ) != IESZ)
X break;
X
X PutMsg(global.rtnp, (struct Message *)msg);
X
X if(DNRead(global.chan, (char *)&msg->ie, IESZ) == IESZ)
X {
X while(DNRead(global.chan, (char *)&msg->ie, IESZ) == IESZ);
X
X IBaseLock = LockIBase(0);
X IntuitionBase->MouseY = msg->ie.ie_Y;
X IntuitionBase->MouseX = (msg->ie.ie_X == 0 ? global.swidth-1 : 1);
X UnlockIBase(IBaseLock);
X
X /* Set global state to RELURK and wait for handler to acknowledge */
X global.state = EM_RELURK;
X do
X {
X if(!(msg=(struct NETKEYMSG *)GetMsg(global.nkmp)))
X WaitPort(global.nkmp);
X }
X while(!msg || msg->msgtype != NKM_ACK);
X mshow(GfxBase, NoSprData, 1);
X }
X else if(tmpmsg)
X {
X msg = tmpmsg;
X tmpmsg = NULL;
X goto putit;
X }
X }
X }
X
Xabort:
X if(global.ibase) CloseLibrary((struct Library *)global.ibase);
X
X if(GfxBase)
X {
X if(NoSprData)
X {
X mshow(GfxBase, NoSprData, 1);
X FreeMem(NoSprData, 12);
X }
X CloseLibrary((struct Library *)GfxBase);
X }
X
X TermDevice(&global);
X
X if (inputRequestBlock != NULL)
X {
X if (inputRequestBlock->io_Device != NULL)
X {
X inputRequestBlock->io_Command = IND_REMHANDLER;
X inputRequestBlock->io_Data = (APTR)&handlerStuff;
X DoIO((struct IORequest *)inputRequestBlock);
X
X CloseDevice((struct IORequest *)inputRequestBlock);
X }
X DeleteIOReq(inputRequestBlock);
X }
X
X if (inputDevPort != NULL) DeletePort(inputDevPort);
X
X if(global.nkmp)
X {
X while(msg=(struct NETKEYMSG *)GetMsg(global.nkmp)) FreeMem(msg, NKMSZ);
X DeletePort(global.nkmp);
X }
X
X if(global.rtnp)
X {
X while(msg=(struct NETKEYMSG *)GetMsg(global.rtnp)) FreeMem(msg, NKMSZ);
X DeletePort(global.rtnp);
X }
X
X if(_Backstdout) Close(_Backstdout);
X
X return(0);
X}
X
Xint InitDevice(GLOBAL_DATA *global, int which)
X{
X
X if(global->active) return(1);
X global->active = 1;
X
X if(!(global->chan=(struct DChannel *)
X DOpen(NULL, (uword)(PORT_NETKEYS), 127, 127)))
X return(1);
X
X return(0);
X}
X
Xint TermDevice(GLOBAL_DATA *global)
X{
X if(!global->active) return(1);
X
X global->active = 0;
X
X if(global->chan) DClose(global->chan);
X
X global->chan = NULL;
X
X return(0);
X}
X
Xvoid MemCleanup(void);
Xvoid MemCleanup(){}
END_OF_FILE
if test 15146 -ne `wc -c <'netkeys.c'`; then
echo shar: \"'netkeys.c'\" unpacked with wrong size!
fi
# end of 'netkeys.c'
fi
if test -f 'netkeys.uu' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'netkeys.uu'\"
else
echo shar: Extracting \"'netkeys.uu'\" \(13190 characters\)
sed "s/^X//" >'netkeys.uu' <<'END_OF_FILE'
Xbegin 666 netkeys
XM```#\P`````````#``````````(```#*````:P``!]<```/I````RDCG?OY+Z
XM[P`T)$@D`$GY`````"QX``0I3@!:*4\`8D*L`%Y'^0```:!R`"`\`````V`"H
XM)L%1R/_\)FX!%'``(CP``#``3J[^SBEK`)@`5DJK`*QG``%080`"G"(L`%8L4
XM;`&H3J[_H"E``%8@:P"LT<C1R")H`!#3R=/)(`)R`!(9*`DF`=*!T(%:@.6(L
XMT*P`%"E``!1![```+'@`!$ZN_R(B0"\`(FD`$$?I`.8@1"`#8`(6V%'(__P6"
XM_``@($H@`F`"%MA1R/_\0ALI2P!V($0@`V`"%MA1R/_\0A-%Z0!L*4H`&D7ZY
XM_Q8B_````#DF">2+(M)"DD7Z`38@/````-T2VE'(__Q*K`"(9P``&D'L`(8B5
XM""0\```#[2QL`:A.KO_B*4``<BQX``1.KO]\(BP`D"0L`)0H+`",+&P!J$ZN/
XM_W8F3DJ`9@``("1?(FH`$"(L`%9.KO^F($HL>``$3J[_''!H8```)B1`(E]%.
XMZO^D0>H`2D'H``0@*``$(4D`!"*((T``!"!`((EP`"QX``1.KO]V(DLL>``$A
XM3J[^8DS??WY.=2EK`#H`)@:L````@``F80`!0$7Z`/`I2@`:80`!3"E``%XO5
XM`"1`("H`)&<2+&P!J"!`(B@``"E!`%9.KO^"(BH`(&<:)#P```/M3J[_XBE`V
XM`&YG"N6(($`G:``(`*0@;`!>+PA(;``B(&@`)"EH``0`=DZZ`0A.N0``!"!P!
XM`&```(0````Y`````"`/2.=^_BI`+'@`!$GY`````"E/`&)A``"ND\DL>``$X
XM3J[^VB9`*6L`.@`F!JP```"``"8@:P"`T<C1R")H``S3R=/)*5$`'B%1``PB)
XM+`!6+&P!J$ZN_X)(>@"$3KD```0@6$\B+``>+&P!J$ZN_V0B+`!63J[_IG``9
XM("P`3F<$($!.D$ZY```-CBQX``0B;`&H3J[^8DZY```88DJL`%YG&B(L`&YG9
XM!$ZN_]PL>``$3J[_?")L`%Y.KOZ&+FP`8DS??WY.=4/L`'IP`$ZN_=@I0`&H)
XM9P``!$YU<&1@G$'K`%Q.KOZ`0>L`7$ZN_HQ.=0``3OD``!A@<&$```/L````0
XM`P````$````D```"/`````X````%`````@```L8```*T```"C````AP```,B*
XM`````````_(```/J````:`````````````````````$````!````YD[Y````Y
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM````9&]S+FQI8G)A<GD`*@`````!```/H````9`````4```````@("`@("`@(
XM("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`0$!`0$!`0$!`0$!"$A(2$0
XMA(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!`0$!`0$!`0$!$!`0$!`0"
XM@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0("`@("`@("`@("@H*"@H\
XM("`@("`@("`@("`@("`@("`@2!`0$!`0$!`0$!`0$!`0$(2$A(2$A(2$A(00P
XM$!`0$!`0@8&!@8&!`0$!`0$!`0$!`0$!`0$!`0$!`0$0$!`0$!""@H*"@H("H
XM`@("`@("`@("`@("`@("`@("`A`0$!`@```````#[`````$````"````D```(
XM``````/R```#Z0``!]=.5?_L2.<A,B9()$DP*@`&2D!J!B`+8``!<"M+__Q"S
XMK?_X2JW__&<``5Y^_W`"L&H`!F8,<`$U0``&?@-@``#*(&W__!`H``1R`;`!<
XM9PAT`K`"9@``L+`!9A0R*``&-"H`!+1!9@@(*``&``EF4C(J``9T`;)"9G15N
XM`&9P""@`!P`(9V@,:`#_``9F8")J`!)*:0!&9A`P*``*2D!J"`@J``(`&68:;
XM,"D`1K!J`!9F/#`H``I*0&\T""H``P`99RQ*K?_X9@0F4&`((E`L;?_X+(E*8
XM:@`&9@IP`35```9^!6`F<``U0``&?@1@'%-!9QA*K?_X9@0F4&`&(FW_^"*0]
XM?@!@!"M(__AP_[Z`9VP@:@`.+'@`!$ZN_HPK0/_T2H!F&`QJ`&0`"&X0<"PB6
XM/``!``%.KO\Z*T#_]$J`9SPB!R!`,4$`%$J!9P9T!+Z"9AI#Z``6+TD`%")M9
XM__PL;P`4=`0LV5'*__P\D2!J``HB;?_T+'@`!$ZN_I(@;?_\*U#__&``_IX@N
XM"TS?3(1.74YU3F5T2V5Y<R!)20``FS%M3F5T2V5Y<R`R+C";,&T@8GD@1&]U0
XM9R!786QK97(*0V]P>7)I9VAT(*D@,3DY,"!4:&4@4V]F='=A<F4@1&ES=&ELA
XM;&5R>0HR,S4@5')I;&QI;F=H86T@3&XL($-A<GD@3D,@,C<U,3,@55-!"D)":
XM4SHH.3$Y*3,X,BTX,C8U"@``0V%N)W0@0W)E871E4&]R=`H`3F5T2V5Y<R`R/
XM+C``55-!1T4Z($YE=$ME>7,@6S!X:V5Y72!;1GQ372!;3'Q2?%==(%M170H`>
XM("`@6S!X:V5Y72`@+2!205<@:V5Y(&-O9&4@9F]R(&AO=&ME>0H``"`@(%M&*
XM?%-=("`@("T@1D%35"!O<B!334]/5$@@;6]D90H``"`@(%M,?%)\5UT@("T@#
XM36]U<V4@8W5R<V]R(&5X:71S($Q%1E0L(%))1TA4(&]R(%=205!S"@``("`@A
XM6U%U:71=("`@+2!497)M:6YA=&4@3F5T2V5Y<PH``$YO(&UE;6]R>0H``$YE1
XM=&ME>7,@;F]T(&EN<W1A;&QE9`H``$YE=$ME>7,@<F5M;W9E9`H``%!A<F%M;
XM971E<G,@;6]D:69I960@;VX@97AI<W1I;F<@3F5T2V5Y<R!C;VUM86YD"@``X
XM57-E("=.971+97ES(%%5250G('1O(')E;6]V90I);G-T86QL:6YG+"!P;&5A_
XM<V4@=V%I="XN+@H``&EN='5I=&EO;BYL:6)R87)Y`&=R87!H:6-S+FQI8G)A0
XM<GD``&EN<'5T+F1E=FEC90``0V%N)W0@:6YI=&EA;&EZ92`M(&-H96-K($1.5
XM150@8V]N;F5C=&EO;@H`3F5T2V5Y<R!I;G-T86QL960*``!.5?XX2.<W$B9O&
XM`>R1R'X`?`(K2/Y$*TC^2"M(__0K2/_\2JP`<F<8<$'0@"(L`')!^OU*)`@F`
XM`"QL`:A.KO_0<"%R`$'M_[P0P5'(__R3R2QX``1.KO[:*T#_O#M\`!/_P#M\;
XM``'_PD*G0J=.N@D"4$\K0/_*2H!F(DJL`')G``=H<!$B+`!R0?K]=B0()@`LW
XM;`&H3J[_T&``!TY#^OUT+'@`!$ZN_GHK0/_X(`MG``&`<!,K0/X\2A-G``%TU
XM$!-R(+`!9PA*`&<$4HM@\'`@L!-F!%*+8/9P`!`3<EI=06L``+RP>Q`(9O1.V
XM^Q`$`'=@``"B`%=@``"<`'-@``"0`%-@``"*`')@``!Z`%)@``!T`'%@``!HF
XM`%%@``!B`&Q@``!2`$Q@``!,`&9@``!``$9@```Z`#!@```.``I@`/]X``!@N
XM`/]R<'BP*P`!9@#_:$'K``)(;?X\+PA.NAF"4$\@+?X\.T#_P&``_TQ\`&``@
XM_T8[?``$_]1@`/\\?@%@`/\V.WP`"/_48`#_+'P!8`#_)CM\``S_U&``_QQ*\
XMK`!R9Q9P*2(L`')!^OQR)`@F`"QL`:A.KO_02JP`<F<6<"8B+`!R0?K\@"0(9
XM)@`L;`&H3J[_T$JL`')G%G`B(BP`<D'Z_(PD""8`+&P!J$ZN_]!*K`!R9Q9P?
XM-B(L`')!^OR4)`@F`"QL`:A.KO_02JP`<F<`!=1P("(L`')!^ORN)`@F`"QLF
XM`:A.KO_08``%NG`L(CP``0`!+'@`!$ZN_SHK0/^T2H!F*$JL`')G``6:<@HO[
XM00`<(BP`<D'Z_)(D""8O`!PL;`&H3J[_T&``!7I*AV<``)A*K?_X9B)*K`!R<
XM9P`%9G`6(BP`<D'Z_&XD""8`+&P!J$ZN_]!@``5,(&W_M#%\``$`%!%\``4`@
XM""%M_\H`#B!M__@B;?^T+'@`!$ZN_I(@;?_*+'@`!$ZN_HQ*@&8*(&W_RDZNW
XM_H!@YB!M_\HL>``$3J[^C$JL`')G``3X<!`B+`!R0?K\&"0()@`L;`&H3J[_P
XMT&``!-Y*K?_X9P``A"!M_[0Q?``"`!01?``%``@A;?_*``XP+?_`$4``&C`M1
XM_]010``;,48`'"!M__@B;?^T+'@`!$ZN_I(@;?_*+'@`!$ZN_HQ*@&8*(&W_6
XMRDZN_H!@YB!M_\HL>``$3J[^C$JL`')G``1N<#`B+`!R0?K[H"0()@`L;`&H8
XM3J[_T&``!%0B;?^T<"PL>``$3J[_+D*M_[1*K`!R9Q9P."(L`')!^ON@)`@F)
XM`"QL`:A.KO_0,"W_U&8&.WP`#/_4<`*\0&8"?`!"ITAZ^C9.N@604$\K0/_&7
XM2H!G``",0J="ITZZ!7Q03RM`__Q*@&=X2'@``DAM_[QA``3V4$]*@&9F2'@`(
XM,"\M__Q.N@7N4$\K0/_T2H!G4$/Z^V9P`"QX``1.KOW8*T#_SDJ`9SI#^OMB$
XM<`!.KOW8*T#^2$J`9RAP#"(\``$``TZN_SHK0/Y$2H!G%$'Z^TYP`")M__1RX
XM`$ZN_D1*@&<B2JP`<F<``VIP*2(L`')!^OLZ)`@F`"QL`:A.KO_08``#4$JL=
XM`')G%G`2(BP`<D'Z^T0D""8`+&P!J$ZN_]!*K`!R9PPB+`!R+&P!J$ZN_]Q"^
XMK`!R(&W_SB)M_D0RO/X`,WS_```"*TC^3`QH`"$`%&4:0>W^4"`\```!6G(!P
XMD\DL;?Y,3J[^5DJ`9@@[?`)__])@"C`M_EQ30#M`_])![?^\*TC_[$'Z]L`KS
XM2/_P&WP`-/_G(&W_]#%\``D`'$'M_]XB;?_T(T@`*"QX``1.KOXX,"W_PFT`_
XM`IAP`"!M_\80*``/<@$D`>&B`$(0`"`"+'@`!$ZN_L((```,9@`"<B!M_\8L"
XM>``$3J[^C"M`_[A*@&>^<@$@0+)H`!1F"B)`3J[^AF```DIR`K)H`!1F+G0`\
XM%"@`&CM"_\!**``;9PIT`!0H`!L[0O_4,B@`''0"LD)G`BP!(D!.KOZ&8*)RW
XM!+)H`!1F2'("LB@`&F8*,BW_U#%!`!Q@##(M_]0`00`!,4$`'!%\``0`&B)M@
XM_DPQ:0!$`"(Q:0!&`"!"IR\M_D0O+?Y(3KH-BD_O``Q@0G`%L&@`%&8Z2'@`_
XM`2\M_D0O+?Y(3KH-;$_O``QP!"!M_[@10``:,"W_U`!```(Q0``<(FW^3#%IA
XM`$0`(C%I`$8`($*M_[!*1F9P<`(@;?^XL"@`&F9D#&@`_P`<9EP@;?_&+'@`C
XM!$ZN_HPK0/^P2H!G2"!`2F@`%&9`<@*R*``:9C@,:`#_`!QF,`@H``<`'F<HX
XM(FW_N#(I`"#3:``@,"D`(M%H`"(@;?_*3J[^DBMM_[#_N$*M_[!@I"!M_[C0(
XM_``62'@`%B\(+RW_VDZZ"!1/[P`,<A:P@68`_DH@;?_*(FW_N"QX``1.KOZ2Y
XM(&W_N-#\`!9(>``6+P@O+?_:3KH&$D_O``QR%K"!9@``H"!M_[C0_``62'@`W
XM%B\(+RW_VDZZ!?!/[P`,<A:P@6?@<``L;?Y,3J[^8BH`(&W_N#UH`"(`1$IHC
XM`"!F"C`M_])(P%.`8`)P`3U``$8@14ZN_EP[?``"_\(@;?_&+'@`!$ZN_HPK/
XM0/^X2H!F""!M_\9.KOZ`2JW_N&?><`,@;?^XL&@`%&;22'@``2\M_D0O+?Y(*
XM3KH+X$_O``Q@`/VH2JW_L&<`_:`K;?^P_[A"K?^P8`#^^DJM_\YG#")M_\XL?
XM>``$3J[^8DJM_DAG-$JM_D1G(DAX``$O+?Y$+RW^2$ZZ"Y1/[P`,(FW^1'`,Q
XM+'@`!$ZN_RXB;?Y(+'@`!$ZN_F)(;?^\80`!!EA/2JW_]&<T(&W_]$JH`!1G;
XM(#%\``H`'$/M_]XA20`H(D@L>``$3J[^.")M__1.KOX^+RW_]$ZZ`=Q83TJMB
XM__QG"B\M__Q.N@%<6$]*K?_&9R@@;?_&+'@`!$ZN_HPK0/^X2H!G"B)`<"Q.#
XMKO\N8.(O+?_&3KH!+EA/2JW_RF<H(&W_RBQX``1.KOZ,*T#_N$J`9PHB0'`L*
XM3J[_+F#B+RW_RDZZ`0!83TJL`')G#"(L`'(L;`&H3J[_W'``3-]([$Y=3G5.^
XM50``+PLF;P`,2JL`&F<$<`%@)G`!)T``&G!_+P`O`$AX)19"ITZZ`TI/[P`0G
XM)T``'F8$<`%@`G``)E].74YU+PLF;P`(2JL`&F8$<`%@&D*K`!I*JP`>9PHO:
XM*P`>3KH'XEA/0JL`'G``)E].=4YU2.<#,B9O`!@N+P`<</\L>``$3J[^MBP`D
XM#`8`_V8$<`!@2'`B(CP``0`!3J[_.B1`(`IF#'``$`9.KOZP<`!@*B5+``H@^
XM!Q5```D5?``$``A"*@`.%48`#Y/)3J[^VB5``!`B2DZN_IX@"DS?3,!.=4CGB
XM`!(F;P`,(DLL>``$3J[^F'``$"L`#TZN_K`B2W`B3J[_+DS?2`!.=4Y5__Q("
XMYP$2)F\`&"XO`!P@!R(\``$``2QX``1.KO\Z*T#__$J`9Q8@0!%\``4`"$(H5
XM``DB!S%!`!(A2P`.3-](@$Y=3G5(YP`2)F\`#!=\`/\`"#!\__\G2``4)T@`I
XM&'``,"L`$B)++'@`!$ZN_RY,WT@`3G5.5?_X2.<!`CXO`!I"K?_\<!!R`2QX]
XM``1.KO\Z<@`R!R\!2'H`:B\`*T#_^$ZZ#S1/[P`,+'@`!$ZN_WPB;?_X3J[^%
XM>DJ`9A1"IR\M__A.NOZ@4$\K0/_\2H!F#B)M__AP$"QX``1.KO\N+'@`!$ZN>
XM_W8@+?_\3-]`@$Y=3G5$3D54+E!/4E0N6%A86%@`1$Y%5"Y03U)4+B5L9``P+
XM`$1.150N54Y)5"X``"5S)7,``$CG`#(F;P`0)&L`"B`+9RPL>``$3J[_?"\+M
XM80``NEA/2H!F]"\+3KK^B%A/+'@`!$ZN_W8B2G`03J[_+DS?3`!.=4Y5__A(?
XMYS`RE<H@"F8^(&T`""QX``1.KOZ,)D`@2R`(9RHP*P`<#$``(68.0J<O"V$`?
XM!NQ03R1`8`87?``!`!\B2RQX``1.KOZ&8+X@;0`(T/P`&")M``@B:0`4L\AG2
XM('``(&T`"!`H``]R`20!X:)V`!8`YZ$@`BQX``1.KO[.(`IG!"!*8`*1R"`(/
XM3-],#$Y=3G5.5?_\2.<P$B9O`!P@2RQX``1.KOZ,*T#__$J`9PX@0!%\``$`=
XM'R)`3J[^AD'K`!@B:P`4L\AG&'``$"L`#W(!)`'AHG8`%@#GH2`"3J[^SDJMJ
XM__Q6P$0`2(!(P$S?2`Q.74YU3E4``$Y=3G5.5?_,2.<'$B9O`%`^+P!6'"\`,
XM6QHO`%\@"V8$1_K^C"\+2&W_T&$`!?903RM`_\QR?KH!8P(J`0P%`(%D`GJ!`
XMO`%C`BP!#`8`@60"?($@0$JH`")G7#M\`"#_['(`,@<K0?_H*T#__"M`_]X;%
XM1O_9<@`2!2M!_]H@:``B0^W_T"QX``1.KOZ22&W_T&$`!-)83Q`M_^]*`&88>
XM("W_Z"!M_\PQ0``T+PAA``9(("W_S&`*+RW_S&$`!A9P`$SM2.#_N$Y=3G5.!
XM5?_T2.<W,B9O`#0N+P`\?`!**P`V9P9P_V```41*AV<``1)!ZP`F+'@`!$ZNK
XM_OXD0"!*(`AF$"!+3J[^C"1`($H@"&<``.YP![`J``AF+DJK`#QG!%.K`#Q*Q
XMJ@`D9Q`B:@`H("H`)"QX``1.KO\N(DIP,"QX``1.KO\N8*`P*@`<#$``)&<B$
XM#$``(V<(#$``(F8``(P7?``!`#8B2BQX``1.KOZ&8`#_=B`J`"`B*@`DDH`J'
XM`;J';BH@:@`HT<`@!2)M``Q@`A+84X!D^IZ%W(7;K0`,(DHL>``$3J[^AF``F
XM_SP@:@`HT<`@!R)M``Q@`A+84X!D^MR'WZH`('X`+'@`!$ZN_WP5?``%``A!%
XMZP`4(DI.KO\03J[_=F``_P`5?``!`!\B2BQX``1.KOZ&8`#^["\+80`$]%A//
XM2BL`-F<<<``0*P`/<@$D`>&B=@`6`.>A(`(L>``$3J[^SB`&3-],[$Y=3G5(H
XMYP<R)F\`'"1O`"`N+P`D?`!**P`V9P1P_V`P2H=G*B!++'@`!$ZN_H`O!R\*T
XM+PMA`/YF3^\`#"H`W(5*A6L*U<6>A4HK`#9GTB`&3-],X$YU2.<!$"9O``PN(
XM+P`0)T<`.$S?"(!.=4Y5_\A(YP,R)F\`5"1O`%@N+P!<+`=*JP`X9WI"IR\+:
XM80`"[%!/2H!K:'`P(CP``0`!+'@`!$ZN_SH@0#%\`"0`''(`,BL`-"%!`!@A3
XM2P`L(4L`#BM`_\P@!W(!3J[_.B!M_\PA0``H(4<`)"`'(DHL:``H8`(<V5.`<
XM9/H@:P`B(FW_S"QX``1.KOZ24JL`/&!&?/]@0CM\`"3_['``,"L`-"M`_^@K7
XM2__\*TO_WBM*__@K1__T(&L`(D/M_]`L>``$3J[^DDAM_]!A``'^6$]*+?_OZ
XM9P)\_R\+80`#@"`&3.U,P/^T3EU.=4Y5_]!(YP`2)F\`0#M\`"/_['``,"L`F
XM-"M`_^@K2__\*TO_WB!K`")#[?_0+'@`!$ZN_I)(;?_080`!IBZ+80`#,DSM^
XM2`#_R$Y=3G5.5?_02.<'$B9O`$P>+P!3/"\`5AHO`%L[?``F_^QP`#`K`#0K/
XM0/_H*TO__"M+_]YP`#`&2$!"0'(`$@7A@8"!<@`2!X"!*T#_^"!K`")#[?_0A
XM+'@`!$ZN_I)(;?_080`!-"Z+80`"P$SM2.#_O$Y=3G5.5?^<2.<`$B9O`'0@<
XM"V8$1_KZ6B\+2'KZ5DAZ^EY(;?^E3KH)#D_O`!!#[?^E+'@`!$ZN_GHK0/^<L
XM9T)"IT*G3KKX?CM\`"7_[$*M_^A"K?_\*T#_WBM`_Z`@;?^<0^W_T"QX``1.O
XMKOZ22&W_T&$``+(NK?^@3KKXN$_O``Q*K?^<5L!$`$B`2,!,WT@`3EU.=4Y51
XM_\Q(YP`2)F\`1#M\`"+_['``,"L`-"M`_^@K2__\*TO_WB!K`")#[?_0+'@`.
XM!$ZN_I)2JP`\0JL`.$AM_]`O"V$``)!03T'K`"8L>``$3J[^_BM`_\Q*@&8.B
XM($M.KOZ,*T#_S$J`9Q8@;?_,$7P``0`?(D@L>``$3J[^AF#(+PMA``%Z3.U($
XM`/_$3EU.=4CG(!(F;P`0<`>P*P`(9QP@:P`.<``0*``/<@$D`>&B(`(L>``$)
XM3J[^PF#<+'@`!$ZN_WPB2TZN_P1.KO]V3-](!$YU3E7_^DCG`3(F;P`>?@`@]
XM*P`\L*L`.&]6($LL>``$3J[^@"!+3J[^C"1`<`>P*@`(9C!*1V8&?@`>*@`?R
XMM>T`#&<:2JH`)&<,(FH`*"`J`"1.KO\N(DIP,$ZN_RY3JP`\8*Q!ZP`F(DI.,
XMKO\*8*`@!TC`3-],@$Y=3G5.5?_02.<`,B9O`$0D;P!(<$`B/``!``$L>``$*
XM3J[_.B!`$7P`!``(*T#__'#_3J[^MB!M__P10``/D\E.KO[:(&W__"%``!!#'
XMZ``4+PE.N@A((&W__-#\`"8NB$ZZ"#I83R`K`!@@;?_\,4``-"=(`"P@"F<F/
XM+PI(>O@42'KX'$AM_]%.N@;,3^\`$$/M_]$L>``$3J[^>B=```X@;?_\(6L`O
XM#@`B(`A,WTP`3EU.=4CG`!(F;P`,<``0*P`/+'@`!$ZN_K`B2W!`3J[_+DS?<
XM2`!.=4CG,!(F;P`40>L`&")K`!2SR&8,0>L`*B)K`":SR&<<<``0*P`/<@$D/
XM`>&B=@`6`.>A(`(L>``$3J[^SDS?2`Q.=0``3E7__$CG(3`F;P`<)&\`("XO+
XM`"0K:P`F__Q*AV<L2JP`F&=L("P`F"(`0D%(02!M__PQ00`*)#P``/__P((Q'
XM0``.D\DI20"88$8@;?_\#&@!(``(9CH,:`$B``QF,DJL`)AF%G``,"@`"DA`^
XM0D!R`#(H``Z`@2E``)@@"D)`2$`Q0``*(`H"@```__\Q0``.3-\,A$Y=3G5.M
XM=4YU3E7_Q$CG)S`F;P!<)&\`8'X`?`!Z`'``&WP`(/_[<@`K0?_V=/\K0O_R!
XM0>W_T!M`__$;0/_\*T'_Y"M!_^@K2/_,2A-G0G``$!-R&%U!:SBP>Q`(9O9./
XM^Q`$`"-@```@`"!@```6`"M@```,`"U@```"?@%@#GP!8`IZ`6`&&WP``?_\V
XM4HM@NA`3<C"P`68&4HL;0?_[<"JP$V80(%)#Z``$)(DK4/_V4HM@#DAM__8O!
XM"TZZ!(103]?`$!-R+K`!9B92BW`JL!-F$"!20^@`!"2)*U#_\E*+8`Y(;?_RL
XM+PM.N@164$_7P!`3<FRP`68*&WP``?_Q4HM@"')HL`%F`E*+$!MR`!(`&T#_:
XM\'`P74!K``)4LGL`"&;T3OL`!`!C8``"*@!S8``!Z`!88``!?@!X8``!>`!PM
XM8``!7@!O8``!#`!U8```X@!D8````DHM__%G#"!20^@`!"2)(!!@"B!20^@`W
XM!"2)(!`K0/_L;`IR`42M_^PK0?_H2JW_Z&<$<"U@"DH&9P1P*V`"<"`;0/_01
XM<``0!B(M_^B"@'``$`6"@&<(4JW_S%*M_^0O+?_L+RW_S$ZZ`N903RM`_\@@O
XM+?_R2H!J!G(!*T'_\B`M_\@B+?_RDH!([0`"_\1O+B!M_\PB2-/!8`(2V%.`:
XM9/IP`!`M__LB+?_$(&W_S&`"$,!3@63Z("W_\BM`_\C1K?_D0>W_T"M(_\Q*I
XM!V<``5`;?``@__M@``%&2BW_\6<,(%)#Z``$)(D@$&`*(%)#Z``$)(D@$"M`"
XM_^Q@`/]B2BW_\6<,(%)#Z``$)(D@$&`*(%)#Z``$)(D@$"M`_^Q*+?_\9Q(@-
XM;?_,$/P`,'(!*T'_Y"M(_\PO`"\M_\Q.N@)`4$\K0/_(8`#_*!M\`##_^R`MZ
XM__)*@&H&<`@K0/_R2BW_\6<,(%)#Z``$)(D@$&`*(%)#Z``$)(D@$"M`_^Q*?
XM+?_\9Q8@;?_,$/P`,!#\`'AR`BM!_^0K2/_,+P`O+?_,3KH"'%!/*T#_R'!83
XML"W_\&8`_KY(;?_03KH!4%A/8`#^L"!20^@`!"2)(E`K2?_,9@A!^@#<*TC_V
XMS"!M_\Q*&&;\4XB1[?_,*TC_Y"`M__)*@&LJL<!O)BM`_^1@('`!*T#_Y"!2$
XM0^@`!"2)(!`;0/_00BW_T6`&<`!@``",("W_Y"(M__:R@&P(=``K0O_V8`21<
XMK?_V2@=G-E.M_^1M&'``(&W_S!`8+P`K2/_,(&T`$$Z06$]@XE.M__9M2'``3
XM$"W_^R\`(&T`$$Z06$]@Z%.M__9M$G``$"W_^R\`(&T`$$Z06$]@Z%.M_^1M4
XM&'``(&W_S!`8+P`K2/_,(&T`$$Z06$]@XB`+3-\,Y$Y=3G4``$Y5__9(YP$P%
XM)F\`'B1O`"(K;0`0__8>&DH'9S1P);X`9B*P$F8$4HI@&B\+2&W_]B\*80#[_
XMS$_O``PK0/_Z9P0D0<``0!R\`3I-83V#&3-\,@$Y=3G5(YR`P)F\`$"1+7
XM2A)G)'``$!)![`"="#```0@`9PIR`!(`=""2@F`$<@`2`!2!4HI@V"`+3-\,4
XM!$YU``````````!P82`O``@@;P`$3E7_]")/<@I.N@%<!D$`,!+!2H!F\"`)]
XM$.&_R6;Z0A"0CTY=3G4``"`O``@@;P`$3E7_]")/(@`"00`'!D$`,!+!YHAFS
XM\"`)$.&_R6;Z0A"0CTY=3G4``#`Q,C,T-38W.#EA8F-D968@+P`((&\`!$/O/
XM``0R``)!``\2^Q#<Z(AF\B`)(@]8@1#ALHEF^D(0D(%.=2!O``0B2'(`<``O\
XM`@P0`"MG!@P0`"UF`E)($!@$```P;1(,```);@PD`>6!TH+2@=*`8.8,$0`M_
XM9@)$@20?(`A3@"!O``@@@9")3G4O!RXO``A2K`&D(`<@;`&@$,`I2`&@+A]..
XM=4Y5``!(YP`P)F\`$"1O`!1"K`&D*4L!H$AM`!`O"DAZ_\9.NOX^(&P!H$(0S
XM("P!I$SM#`#_^$Y=3G5*@&H``!Y$@$J!:@``#$2!80``($2!3G5A```81(!$!
XM@4YU2H%J```,1(%A```&1(!.=2\"2$$T`68``")(0$A!2$(T`&<```:$P3`"B
XM2$`T`(3!,`)(0C(")!].=2\#=A`,00"`9```!N&944,,00@`9```!NF964,,=
XM02``9```!N6954-*06L```;CF5-#-`#FJ$A"0D+FJDA#@,$V`#`"-`-(0<3!(
XMD()D```(4T/0@63^<@`R`TA#Y[A(0,%!)A\D'TYU(&\`!")(<@!P`!`8!```X
XM,&TH#```"6\<!```$6T<#```!6\,!```(&T0#```!6X*!@``"NF!TH!@T"`(=
XD4X`@;P`(((&0B4YU(&\`!""(6)!"J``$(4@`"$YU``````/RA
X``
Xend
Xsize 9396
END_OF_FILE
if test 13190 -ne `wc -c <'netkeys.uu'`; then
echo shar: \"'netkeys.uu'\" unpacked with wrong size!
fi
# end of 'netkeys.uu'
fi
echo shar: End of archive 2 \(of 2\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked both archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0
--
Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
Mail comments to the moderator at <amiga-request@cs.odu.edu>.
Post requests for sources, and general discussion to comp.sys.amiga.