²õÜû~ JUMP025.BCKâNÐ JUMP025.BCKBBACK/LO *.TXT,.PAS,.OBJ_*,.HLP,.DAT,.CLD,.OPT,.COM JUMP025.BCK/SAV JONATHAN (Æɓ ˆšV6.2 _RUBENS:: € _DSA10: V6.2 ~ x#*[SYSEXE.SOURCE.JUMP]AAAREADME.TXT;5+,¶ŒÈ. / 4P -‚0ÿ123KÿPWO56Á0(ú ˆš7ºx2ú ˆš89GHˆÿJÿ JUMP v2.5 ---------PAll things necessary for salvation (i.e. instructions on how to use JUMP and howPto install JUMP) are contained in the file JUMP.HLP. Please refer to that file,<and the program source and the build procedure if necessary.Jonathan Ridler 17-Sep-1996ÿÿ)*[SYSEXE.SOURCE.JUMP]FREEWARE_README.TXT;8+,”…. / 4M x-‚0ÿ123KÿPWO56ˆÏ£ ˆš7š¬ ˆš89GHˆÿJÿ CJUMP v2.5, TOOLS, Become a different user either exactly or in partHJUMP is a program which allows selected users (Systems Programmers,HOperators and specifically authorised users) to change elements of theirHprocess to those of another user, or to become *exactly* the target userHin a pseudo-terminal. Limitations are placed on Operators: they cannotHtarget users who have more than a certain set of privileges unless they%are specifically authorised to do so.HAll users except Systems Programmers are validated against an accessHlist file to determine any specific access to be granted or denied in5addition to any default access (e.g. for Operators).HFor non-exact jumps, items which are changed to those of the target userare:I Username (Systems Programmers only, using the SETUSER or ALL qualifier)2 UIC, Default Directory, Default Disk, LNM$GROUP.0 Privileges and process rights are NOT changed.To install JUMP:D 1. Re-link JUMP (NO Traceback) as directed in the build procedure.M 2. Define EXECUTIVE mode SYSTEM table logical names as required (see help).3 3. If required, create the JUMP_ACCESS rights ID.F 4. If required, grant the JUMP_ACCESS rights ID to authorised users.K 5. If required, create/edit the user access data file (see example file).I 6. INSTALL JUMP with privileges: CMEXEC, CMKRNL, DETACH, SYSNAM, SYSPRVA 7. Define a foreign command: $ JUMP :== $device:[directory]JUMP 8. Boing!The author of JUMP is Jonathan Ridler,$ Information Technology Services, The University of Melbourne,) Parkville, Victoria, AUSTRALIA, 3052." Email: jonathan@unimelb.edu.auJNote: Some ideas in JUMP have been drawn from Eric Wentz's program BECOME.C The code for pseudo-terminal creation is derived from AnthonyI McCracken's GLOGIN program. Thanks to Jeremy Begg for a minor codeM fix and testing, and Bob Beckerhof for testing and helpful suggestions.GJUMP is written entirely in DEC Pascal and has been built and tested onMOpenVMS VAX v5.5-2 and v6.2 (DEC Pascal v5.4) and OpenVMS Alpha v6.2 and v6.1(DEC Pascal v5.5).ÿÿ**[SYSEXE.SOURCE.JUMP]FREEWARE_RELEASE.TXT;1+,÷. / 4P þ-‚0ÿ123KÿPWO56êÙâùèvš7dÞ1évš89He{(>…šGHˆÿJÿFreeware Developer Release Form-------------------------------KAs the owner/developer of this software, I release it to be included on theMOpenVMS Freeware CD-ROM. I expect no remunerances or payments for the use of2this software from Digital or Digital's customers.Jonathan Ridler.P--------------------------------------------------------------------------------LJonathan Ridler (VMS Systems Manager) Information Technology Services,HTelephone: +61 3 9344 7994 The University of Melbourne,CFax: +61 3 9347 4803 Thomas Cherry Building,MEmail: jonathan@unimelb.edu.au Parkville, Vic., AUSTRALIA, 3052.P--------------------------------------------------------------------------------°h%¦]Ü~ JUMP025.BCK/•B‚[SYSEXE.SOURCE.JUMP]JUMP.PAS;82Pl[@ð*[SYSEXE.SOURCE.JUMP]JUMP.PAS;82+,/•B.l/ 4PldX-‚0ÿ123KÿPWOe56í4„× ˆš7l¥£× ˆš89GHˆÿJÿzI{************************************************************************ * ** J U M P * * *F* JUMP is a program which allows selected users (Operators, Systems *C* Programmers and other specifically authorised users) to either *E* change elements of their process to those of another user, or to *E* actually become a given user in a separate process attached to a ** pseudo-terminal. * * *C* When not becoming exactly the target user, the items which are *0* changed to those of the target user are: * * *@* Username (Systems Programmers only, using the SETUSER or ** ALL qualifier) * * *9* UIC, Default Directory, Default Disk, LNM$GROUP. * * *5* Privileges and process rights are NOT changed. * * *3* The syntax of the JUMP command generally is * * *+* $ JUMP [username] [qualifiers] * * *I* If no username is supplied, JUMP returns the UIC, Default Directory, *B* Default Disk and LNM$GROUP to those of the current username. *I*.......................................................................*=* **** CAUTION: KERNEL-mode code fiddles things !!! **** * * *D* INSTALL with CMEXEC, CMKRNL, DETACH, SYSPRV, SYSNAM privileges. * * *H* NOTE: The definition of privilege sets has been adopted for ease of *H* coding. The source for the information is SYS$LIBRARY:STARLET.PAS. *E* The definition will need reviewing with each release of OpenVMS! *I*.......................................................................*D* Note: Some ideas in this code have been drawn from Eric Wentz's *>* program BECOME. The code for pseudo-terminal creation is *@* derived from Anthony McCracken's GLOGIN program. Thanks to *C* Jeremy Begg for a minor code fix and Bob Beckerhof for testing.*I*.......................................................................*#* Author: Jonathan Ridler, *+* Information Technology Services, *'* The University of Melbourne, * * Parkville, Victoria, ** AUSTRALIA, 3052. * * *,* Internet: jonathan@unimelb.edu.au *I*.......................................................................** History: *,* v1.0 02-Mar-1993 JER Original version. */* 09-Mar-1993 JER Audit security violations. *4* 04-Mar-1994 JER Add change username capability. *;* 14-Jul-1994 JER Allow change of UIC, etc. AND username; *"* Allow username NOT in UAF. *3* 21-Nov-1995 JER Allow Sysprogs to avoid audit. *?* v1.4 11-Jan-1996 JER Increase size of audit message buffer. *:* v2.0 11-Jul-1996 JER Add EXACT (pseudo-terminal) form. *<* v2.1 26-Jul-1996 JER Add general user restricted access. *?* v2.2 07-Aug-1996 JER Only Sysprogs and authorised users can *-* jump to privileged users. Also, modify *** method of restoring terminal chars. *?* v2.3 12-Sep-1996 JER Audit physical terminal device. Also, *-* validate Operators against access file *.* to see if access is specifically denied.*.* Also, allow minor privs to be specified ** by logical name. *?* v2.4 16-Sep-1996 JER Audit pseudo-terminal device name too. *1* v2.5 17-Sep-1996 JER Add JUMP_SELF logical. *I************************************************************************} [INHERIT ('SYS$LIBRARY:STARLET',% 'SYS$LIBRARY:PASCAL$LIB_ROUTINES',& 'SYS$LIBRARY:PASCAL$STR_ROUTINES')]PROGRAM Jump (OUTPUT) ;CONSTLf = CHR (10) ; { Linefeed }BIo_Buflen = 1 * 512 ; { *WORDS* = 1 pair of 512 byte R/W blocks }<Rsts = 1 ; { Index to read status in pseudo-terminal buf };Rcnt = 2 ; { Count of chars read in pseudo-terminal buf }-Rbuf = 3 ; { Actual read data area begins }LWsts = Io_Buflen DIV 2 + 1 ; { Start of write buffer area and write status }AWcnt = Wsts + 1 ; { Count of chars writ in pseudo-terminal buf }3Wbuf = Wsts + 2 ; { Actual read data area begins }EFt_Buflen = Io_Buflen - 4 ; { *BYTES* Size of buffer for FTA device }BPy_Buflen = Io_Buflen ; { *BYTES* Size of buffer for PYA device }>Rightsize = 50 ; { Number of rightslist entries to retrieve }Bad_Access_Data =N '%JUMP-F-BADDATA, Format of Access List data record seems to be invalid.' ;TYPE$UBYTE = [BYTE] 0..255 ;$UWORD = [WORD] 0..65535 ;:$UQUAD = [QUAD,UNSAFE] RECORD L0 , L1 : UNSIGNED ; END ;6Privilege = (Cmkrnl, { 0: May change Mode to Kernel }A Cmexec, { 1: May change Mode to Exec; MUST follow Cmkrnl }= Sysnam, { 2: May insert in system logical name table }E Grpnam, { 3: May insert in group l.n.tab; MUST follow Sysnam }3 Allspool, { 4: May allocate spooled device }3 Detach, { 5: May create detached processes }, Diagnose, { 6: May diagnose devices }( Log_Io, { 7: May do logical I/O }A Group, { 8: May affect other processes in same UIC group }+ Acnt, { 9: May suppress accounting }@ Prmceb, { 10: May create permanent common event clusters }3 Prmmbx, { 11: May create permanent mail box }- Pswapm, { 12: May change process mode }0 Altpri, { 13: May set any priority value }0 Setprv, { 14: May set any privilege bits }2 Tmpmbx, { 15: May create temporary mailbox }< World, { 16: May affect other processes in the world }4 Mount, { 17: May execute mount ACP functions }& Oper, { 18: Operator privilege }- Exquota, { 19: May exceed disk quotas }/ Netmbx, { 20: May create network device }4 Volpro, { 21: May override volume protection }) Phy_Io, { 22: May do physical I/O }: Bugchk, { 23: May make bug check error log entries }: Prmgbl, { 24: May create permanent global sections }< Sysgbl, { 25: May create system-wide global sections }/ Pfnmap, { 26: May map to section by PFN }= Shmem, { 27: May allocate structures in shared memory }: Sysprv, { 28: Eligible for system protection field }5 Bypass, { 29: May bypass UIC-based protection }2 Syslck, { 30: May create system-wide locks }< Share, { 31: May assign channel to non-shared device }3 Upgrade, { 32: May upgrade object integrity }5 Downgrade, { 33: May downgrade object secrecy }> Grpprv, { 34: Group access via system protection field }* Readall, { 35: May read any object }A Import, { 36: May set classification for unlabeled object }B Audit, { 37: May direct audit to system security audit log }6 Security, { 38: May perform security functions }= Pbit39, Pbit40, Pbit41, Pbit42, Pbit43, Pbit44, Pbit45,= Pbit46, Pbit47, Pbit48, Pbit49, Pbit50, Pbit51, Pbit52,= Pbit53, Pbit54, Pbit55, Pbit56, Pbit57, Pbit58, Pbit59,F Pbit60, Pbit61, Pbit62, Pbit63) ; { 39-63: dummy bits: 2 LONGs }CPrivset = PACKED SET OF Privilege ; { Allow easy bit union, etc. }JAccess_Status = (Granted,Denied,Unspecified) ; { Status from access file }<Status_Block_Type = [UNSAFE] PACKED ARRAY [1..4] OF $UWORD ;Item_List_Cell = RECORD CASE INTEGER OF 1: ( { Normal Cell } Buffer_Length : $UWORD ; Item_Code : $UWORD ; Buffer_Addr : UNSIGNED ; Return_Addr : UNSIGNED ) ; 2: ( { Terminator } Terminator : UNSIGNED ) ; END ;IItem_List_Template (Count:INTEGER) = ARRAY [1..Count] OF Item_List_Cell ;.Username_Type = PACKED ARRAY [1..12] OF CHAR ;<Io_Buffer = [ALIGNED(9),STATIC,UNSAFE] { Pagelet aligned }- ARRAY [1..Io_Buflen] OF $UWORD VALUE ZERO ;Terminal_Chars = PACKED RECORD% Tt_Class : [POS(0)] $UBYTE ;% Tt_Type : [POS(8)] $UBYTE ;% Tt_Width : [POS(16)] $UWORD ;& Tt_Devchar : [POS(32)] TT$TYPE ;' Tt_Devchar2 : [POS(64)] TT2$TYPE ; END ;VAR { *** V A R *** }"Log , { Log success messages? }"Alter_Ego , { Change Username? }#Transmute , { Change UIC, etc.? }(Auditing , { Audit successful jumps? }=Real_Mccoy , { Use a pseudo-terminal and *really* do it!? }8Double_Check , { Double check general user's access? }4Narcissus , { Allow users to jump to themselves? };Figment : BOOLEAN := FALSE ; { Allow username NOT in UAF? }KMax_Sys_Group : INTEGER := 0 ; { Maximum UIC group with system privileges }FUser : VARYING [12] OF CHAR := PAD ('',' ',12) ; { Caller's username }ONew_User : [VOLATILE] VARYING [12] OF CHAR := PAD ('',' ',12) ; { Target user }+Sanity_Ctl_User , { For CMKRNL checks }HSanity_Jib_User : [VOLATILE] Username_Type := '' ; { For CMKRNL checks }?Command : VARYING [80] OF CHAR := '' ; { Input command line }Uic , { UIC of caller }%New_Uic , { UIC of target user }ASanity_Uic : [VOLATILE] UIC$TYPE := ZERO ; { For CMKRNL checks }Terminal , { Audit this }Port , { Audit this }$Physical_Device , { Audit this }EDef_Dev : [VOLATILE] VARYING [32] OF CHAR := '' ; { Default device }Access_List , { Filespec }9Audit_Trail : VARYING [255] OF CHAR := '' ; { Filespec }HDef_Dir : [VOLATILE] VARYING [255] OF CHAR := '' ; { Default directory }9Uic_Str : VARYING [15] OF CHAR := ZERO ; { String form }(Eq_Id_Str , { UIC string handling }@Id_Str : VARYING [32] OF CHAR := ZERO ; { UIC string handling }*Minor_Privs , { Not major privs! :) }'Def_Priv , { Target's def privs }HAuth_Priv : [UNSAFE,VOLATILE] Privset := ZERO ; { Target's auth privs }@Flags : [VOLATILE] FLAGS$TYPE := ZERO ; { Target's UAF flags }<Jib_User_Ptr : [VOLATILE] ^[VOLATILE] Username_Type := NIL ;4CTL$T_USERNAME : [EXTERNAL,VOLATILE] Username_Type ; Jib_Ptr ,2Uic_Ptr : [VOLATILE] ^[VOLATILE] UNSIGNED := NIL ;GPseudo_Ft : [VOLATILE] BOOLEAN := FALSE ; { Is pseudo-terminal FTA0:? }(Pchan , { Pseudo-terminal channel }&Rchan , { Real terminal channel }5Mchan : [VOLATILE] $UWORD := 0 ; { Mailbox channel }DPdev : VARYING [12] OF CHAR := '' ; { Pseudo-terminal device name }OPbuf_Range : ARRAY [1..2] OF UNSIGNED := ZERO ; { Quasi descriptor of I/O buf }LMbbuf : ARRAY [1..ACC$K_TERMLEN] OF $UBYTE := ZERO ; { Termination MBX buf }OPiosb : [VOLATILE] Status_Block_Type := ZERO ; { IOSB for pseudo-terminal IOs }GBuffer : [VOLATILE] Io_Buffer := ZERO ; { Pseudo-terminal I/O buffer }@Rchars : Terminal_Chars := ZERO ; { Device chars of real term }&Exit_Rst , { Exit Handler status }"Pid , { Current process PID }/Master_Pid , { Current process master PID }EProc_Cnt : [VOLATILE] UNSIGNED := 0 ; { Current proc subproc count },Proc_Def_Priv , { Caller's def privs }MProc_Auth_Priv : [UNSAFE,VOLATILE] Privset := ZERO ; { Caller's auth privs }JRights : ARRAY [1..Rightsize] OF $UQUAD := ZERO ; { Caller's proc rights }PAS$K_SUCCESS ,-PAS$K_FILNOTFOU : [EXTERNAL,VALUE] UNSIGNED ; PCB$L_JIB , PCB$L_UIC ,JIB$T_USERNAME ,"CTL$GL_PCB : [EXTERNAL] UNSIGNED ;O{ The following formal function declarations are present to allow compatabilityI with OpenVMS v5.5-2 and lower where these declarations do not appear inN environment files. For OpenVMS v6.0 (I think) and onwards, $SETDDIR appearsC in STARLET, and the CLI routines appear in PASCAL$CLI_ROUTINES. }%[ASYNCHRONOUS] FUNCTION SYS$SETDDIR ( New_Dir_Addr :A [CLASS_S] PACKED ARRAY [$L1..$U1:INTEGER] OF CHAR := %IMMED 0 ;2 VAR Length_Addr : [VOLATILE] $UWORD := %IMMED 0 ; %STDESCR Cur_Dir_Addr :7 PACKED ARRAY [$L3..$U3:INTEGER] OF CHAR := %IMMED 0 ) : UNSIGNED ; EXTERNAL ;'[ASYNCHRONOUS] FUNCTION CLI$DCL_PARSE ( Command_String :A [CLASS_S] PACKED ARRAY [$L1..$U1:INTEGER] OF CHAR := %IMMED 0 ;0 %IMMED [ASYNCHRONOUS,UNBOUND] PROCEDURE Table ; %IMMED [ASYNCHRONOUS,UNBOUND]0 FUNCTION Param_Routine : INTEGER := %IMMED 0 ; %IMMED [ASYNCHRONOUS,UNBOUND]1 FUNCTION Prompt_Routine : INTEGER := %IMMED 0 ; Prompt_String :A [CLASS_S] PACKED ARRAY [$L5..$U5:INTEGER] OF CHAR := %IMMED 0 ) : UNSIGNED ; EXTERNAL ;'[ASYNCHRONOUS] FUNCTION CLI$GET_VALUE (B Entity_Desc : [CLASS_S] PACKED ARRAY [$L1..$U1:INTEGER] OF CHAR ;) %DESCR Retdesc : VARYING [$L2] OF CHAR ;0 VAR Retlength : [VOLATILE] $UWORD := %IMMED 0 ) : UNSIGNED ; EXTERNAL ;%[ASYNCHRONOUS] FUNCTION CLI$PRESENT (B Entity_Desc : [CLASS_S] PACKED ARRAY [$L1..$U1:INTEGER] OF CHAR ) : UNSIGNED ; EXTERNAL ;.PROCEDURE Exit (Msg : VARYING [Len] OF CHAR) ;#{ Just a dinky shorthand routine. } BEGIN { Exit } WRITELN (Msg) ; $EXIT ; END ; { of Exit }PROCEDURE Get_Logical_Name (< Lognam : [CLASS_S] PACKED ARRAY [L1..U1:INTEGER] OF CHAR ;= Default : [CLASS_S] PACKED ARRAY [L2..U2:INTEGER] OF CHAR ;% VAR Actual : VARYING [Sz] OF CHAR ;< Table : [CLASS_S] PACKED ARRAY [L3..U3:INTEGER] OF CHAR := 'LNM$FILE_DEV' ; Mode : $UBYTE := PSL$C_USER ) ;K{ Get the translation of the logical name specified. If it does not exist, use the default value. } VAR Rst : UNSIGNED := 0 ;2 Item_List : Item_List_Template (2) := ZERO ;" BEGIN { Get_Logical_Name }4 Item_List[1].Buffer_Length := SIZE (Actual.BODY) ;- Item_List[1].Item_Code := LNM$_STRING ;8 Item_List[1].Buffer_Addr := IADDRESS (Actual.BODY) ;: Item_List[1].Return_Addr := IADDRESS (Actual.LENGTH) ;A Item_List[2].Terminator := 0 ; { Terminate the item list }1 Rst := $TRNLNM (Attr := %REF LNM$M_CASE_BLIND, Tabnam := Table, Lognam := Lognam, Acmode := %REF Mode, Itmlst := Item_List) ; IF Rst = SS$_NOLOGNAM THEN Actual := Default ELSE IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;% END ; { of Get_Logical_Name }PFUNCTION Str_Compress (Source : [CLASS_S] PACKED ARRAY [L..U:INTEGER] OF CHAR ;$ VAR Dest : VARYING [D] OF CHAR ;, Collapse : BOOLEAN := FALSE) : UNSIGNED ;L{ Compress a string by removing leading and trailing white space (blanks andL tabs), and replacing multiple consecutive white space with a single blank./ If collapse is set, remove ALL white space. }% CONST Blanks = [' ',''(9),''(0)] ; Maxsize = 1024 ;F Warn_Inpstrtru = UAND (LIB$_INPSTRTRU,%Xfffffff8) ; { Warning only }! VAR S , J , K : INTEGER := 0 ; Done : BOOLEAN := FALSE ;, Spacer : VARYING [1] OF CHAR := ' ' ;5 Dstr, Sstr : VARYING [Maxsize] OF CHAR := '' ; BEGIN { Str_Compress }. Str_Compress := SS$_NORMAL ; { Presume so } S := LENGTH (Source) ;% IF S = 0 THEN { Nothing passed } Dest := '' ELSE BEGIN IF S > Maxsize THEN BEGIN$ Sstr := SUBSTR (Source,1,Maxsize) ;& Str_Compress := INT(Warn_Inpstrtru) ; END ELSE Sstr := Source ;% IF Collapse THEN Spacer := '' ;D IF FIND_MEMBER (Source,Blanks) = 0 THEN { Nothing to change } Dstr := Sstr ELSE WHILE NOT Done DO BEGIN& J := FIND_NONMEMBER (Sstr,Blanks) ; IF J = 0 THEN Done := TRUE ELSE BEGIN/ Sstr := SUBSTR (Sstr,J,Sstr.LENGTH-J+1) ;& K := FIND_MEMBER (Sstr,Blanks) ; IF K = 0 THEN BEGIN Dstr := Dstr + Sstr ; Done := TRUE ; END ELSE BEGIN/ Dstr := Dstr + SUBSTR (Sstr,1,K-1) + Spacer ;+ Sstr := SUBSTR (Sstr,K,Sstr.LENGTH-K+1) ; END ; END ; END ; { of While } IF Dstr <> '' THEN! IF Dstr[Dstr.LENGTH] = ' ' THEN* Dstr:= SUBSTR (Dstr,1,Dstr.LENGTH-1) ; IF Dstr.LENGTH <= D THEN Dest := Dstr ELSE BEGIN Dest := SUBSTR (Dstr,1,D) ;! Str_Compress := LIB$_OUTSTRTRU ; END ; END ; END ; { of Str_Compress }PROCEDURE Get_Caller_Info ;>{ Get relevant information about the invoker of the program. } VAR Rst : INTEGER := 0 ;# Iosb : Status_Block_Type := ZERO ;. Item_List : Item_List_Template (12) := ZERO ; BEGIN { Get_Caller_Info }# Item_List[1].Buffer_Length := 4 ;2 Item_List[1].Item_Code := SYI$_MAXSYSGROUP ;: Item_List[1].Buffer_Addr := IADDRESS (Max_Sys_Group) ;# Item_List[1].Return_Addr := 0 ;A Item_List[2].Terminator := 0 ; { Terminate the item list }' Rst := $GETSYIW (Itmlst := Item_List, Iosb := Iosb) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst)* ELSE* IF NOT ODD (Iosb[1]) THEN* LIB$SIGNAL (Iosb[1]) ; # Item_List[1].Buffer_Length := 8 ;/ Item_List[1].Item_Code := JPI$_PROCPRIV ;(: Item_List[1].Buffer_Addr := IADDRESS (Proc_Def_Priv) ;# Item_List[1].Return_Addr := 0 ;a# Item_List[2].Buffer_Length := 8 ;o/ Item_List[2].Item_Code := JPI$_AUTHPRIV ;v; Item_List[2].Buffer_Addr := IADDRESS (Proc_Auth_Priv) ;m# Item_List[2].Return_Addr := 0 ; # Item_List[3].Buffer_Length := 4 ;h* Item_List[3].Item_Code := JPI$_UIC ;: Item_List[3].Buffer_Addr := IADDRESS (Uic.UIC$L_UIC) ;# Item_List[3].Return_Addr := 0 ;S- Item_List[4].Buffer_Length := SIZE (User) ; / Item_List[4].Item_Code := JPI$_USERNAME ;L6 Item_List[4].Buffer_Addr := IADDRESS (User.BODY) ;8 Item_List[4].Return_Addr := IADDRESS (User.LENGTH) ;# Item_List[5].Buffer_Length := 4 ;* Item_List[5].Item_Code := JPI$_PID ;0 Item_List[5].Buffer_Addr := IADDRESS (Pid) ;# Item_List[5].Return_Addr := 0 ;u# Item_List[6].Buffer_Length := 4 ;N1 Item_List[6].Item_Code := JPI$_MASTER_PID ;.7 Item_List[6].Buffer_Addr := IADDRESS (Master_Pid) ;.# Item_List[6].Return_Addr := 0 ;m# Item_List[7].Buffer_Length := 4 ; - Item_List[7].Item_Code := JPI$_PRCCNT ;A5 Item_List[7].Buffer_Addr := IADDRESS (Proc_Cnt) ;:# Item_List[7].Return_Addr := 0 ; 2 Item_List[8].Buffer_Length := SIZE (Port.BODY) ;3 Item_List[8].Item_Code := JPI$_TT_ACCPORNAM ;e6 Item_List[8].Buffer_Addr := IADDRESS (Port.BODY) ;8 Item_List[8].Return_Addr := IADDRESS (Port.LENGTH) ;6 Item_List[9].Buffer_Length := SIZE (Terminal.BODY) ;/ Item_List[9].Item_Code := JPI$_TERMINAL ;m: Item_List[9].Buffer_Addr := IADDRESS (Terminal.BODY) ;< Item_List[9].Return_Addr := IADDRESS (Terminal.LENGTH) ;> Item_List[10].Buffer_Length := SIZE (Physical_Device.BODY) ;4 Item_List[10].Item_Code := JPI$_TT_PHYDEVNAM ;B Item_List[10].Buffer_Addr := IADDRESS (Physical_Device.BODY) ;D Item_List[10].Return_Addr := IADDRESS (Physical_Device.LENGTH) ;0 Item_List[11].Buffer_Length := SIZE (Rights) ;6 Item_List[11].Item_Code := JPI$_PROCESS_RIGHTS ;4 Item_List[11].Buffer_Addr := IADDRESS (Rights) ;$ Item_List[11].Return_Addr := 0 ;? Item_List[12].Terminator := 0 ; { Terminate the item list } ' Rst := $GETJPIW (Itmlst := Item_List,i Iosb := Iosb) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst)  ELSE9 IF NOT ODD (Iosb[1]) THENc LIB$SIGNAL (Iosb[1]) ;w- Rst := STR$TRIM (%DESCR User,%DESCR User) ;  IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;R% IF (Physical_Device <> '') AND_THEN% (Physical_Device[1] = '_') THENuN Physical_Device := SUBSTR (Physical_Device,2,Physical_Device.LENGTH-1) ; END ; { of Get_Caller_Info }y*FUNCTION Get_And_Parse_Command : BOOLEAN ;G{ Get and parse the DCL command line. Do some basic username checks. }." VAR Rst , Spot : UNSIGNED := 0 ; Prv : Privilege := Tmpmbx ;$ Str : VARYING [254] OF CHAR := '' ;? [ASYNCHRONOUS] PROCEDURE Jump_Cld ; EXTERNAL ; { CLD module }s" BEGIN { Get_And_Parse_Command }! Get_And_Parse_Command := TRUE ;4E Rst := LIB$GET_FOREIGN (%DESCR Command) ; { Get the command line }- IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;* Command := 'JUMP ' + Command ;> Rst := CLI$DCL_PARSE (Command,Jump_Cld,%IMMED LIB$GET_INPUT,# %IMMED LIB$GET_INPUT,'JUMP> ') ;M IF (Rst = RMS$_EOF) OR (Rst = CLI$_NOCOMD) OR (NOT ODD (Rst)) THEN $EXIT ; Rst := CLI$PRESENT ('EXACT') ;@ Real_Mccoy := (Rst = CLI$_PRESENT) OR (Rst = CLI$_DEFAULTED) ;" Rst := CLI$PRESENT ('SETUSER') ;? Alter_Ego := (Rst = CLI$_PRESENT) OR (Rst = CLI$_DEFAULTED) ;u. Transmute := NOT (Alter_Ego OR Real_Mccoy) ; Rst := CLI$PRESENT ('ALL') ;L Alter_Ego := Alter_Ego OR (Rst = CLI$_PRESENT) OR (Rst = CLI$_DEFAULTED) ;' Rst := CLI$PRESENT ('OVERRIDE_UAF') ;a= Figment := (Rst = CLI$_PRESENT) OR (Rst = CLI$_DEFAULTED) ; Rst := CLI$PRESENT ('LOG') ;9 Log := (Rst = CLI$_PRESENT) OR (Rst = CLI$_DEFAULTED) ; Rst := CLI$PRESENT ('AUDIT') ;> Auditing := (Rst = CLI$_PRESENT) OR (Rst = CLI$_DEFAULTED) ;2 Get_Logical_Name (Lognam := 'JUMP_AUDIT_TRAIL',B Default := 'SYS_MANAGER:JUMP_AUDIT.DAT', { SITE-specific } Actual := Audit_Trail, Table := 'LNM$SYSTEM', Mode := PSL$C_EXEC) ;2 Get_Logical_Name (Lognam := 'JUMP_ACCESS_LIST',B Default := 'SYS_MANAGER:JUMP_ACCESS.DAT', { SITE-specific } Actual := Access_List,  Table := 'LNM$SYSTEM', Mode := PSL$C_EXEC) ;3 Get_Logical_Name (Lognam := 'JUMP_DOUBLE_CHECK',l3 Default := 'TRUE', { SITE-specific }l Actual := Str,a Table := 'LNM$SYSTEM', Mode := PSL$C_EXEC) ; Str_Compress (Str,Str) ;& Rst := STR$UPCASE (%DESCR Str,Str) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;m Double_Check := Str = 'TRUE' ;+ Get_Logical_Name (Lognam := 'JUMP_SELF', 3 Default := 'TRUE', { SITE-specific }r Actual := Str,p Table := 'LNM$SYSTEM', Mode := PSL$C_EXEC) ; Str_Compress (Str,Str) ;& Rst := STR$UPCASE (%DESCR Str,Str) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;  Narcissus := Str = 'TRUE' ;b2 Get_Logical_Name (Lognam := 'JUMP_MINOR_PRIVS',; Default := 'NETMBX TMPMBX', { SITE-specific }o Actual := Str,  Table := 'LNM$SYSTEM', Mode := PSL$C_EXEC) ; Str_Compress (Str,Str) ; REPEAT% READV (Str,Prv,Error:=CONTINUE) ;a IF STATUSV <> 0 THENnP Exit('%JUMP-F-BADPRIVSET, Minor privilege set specification is invalid.') ELSEl BEGIN+ Minor_Privs := Minor_Privs + [Prv] ;a Spot := INDEX (Str,' ') ; IF Spot = 0 THEN Str := '' ELSE / Str := SUBSTR (Str,Spot+1,Str.LENGTH-Spot) ; END ; UNTIL Str = '' ;G Rst := CLI$GET_VALUE ('USERNAME',New_User) ; { Assume will be there }f IF Rst = CLI$_ABSENT THENa8 New_User := User { Default to current username } ELSEs IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst)h ELSEn BEGIN8 Rst := STR$TRIM (%DESCR New_User,%DESCR New_User) ; IF NOT ODD (Rst) THENy LIB$SIGNAL (Rst) ;r END ;D IF FIND_NONMEMBER (New_User,['A'..'Z','0'..'9','_','$']) <> 0 THEN BEGINI WRITELN ('%JUMP-F-BADUSER, Username contains invalid characters.') ;d% Get_And_Parse_Command := FALSE ;c END ;$ END ; { of Get_And_Parse_Command }$FUNCTION Get_Target_Info : BOOLEAN ;J{ Get the required information for the particular new user from the UAF. } VAR Rst : INTEGER := 0 ;- Item_List : Item_List_Template (7) := ZERO ;b BEGIN { Get_Target_Info }# Item_List[1].Buffer_Length := 8 ; / Item_List[1].Item_Code := UAI$_DEF_PRIV ;e5 Item_List[1].Buffer_Addr := IADDRESS (Def_Priv) ;e# Item_List[1].Return_Addr := 0 ;n# Item_List[2].Buffer_Length := 8 ; + Item_List[2].Item_Code := UAI$_PRIV ; 6 Item_List[2].Buffer_Addr := IADDRESS (Auth_Priv) ;# Item_List[2].Return_Addr := 0 ;o# Item_List[3].Buffer_Length := 4 ;D* Item_List[3].Item_Code := UAI$_UIC ;> Item_List[3].Buffer_Addr := IADDRESS (New_Uic.UIC$L_UIC) ;# Item_List[3].Return_Addr := 0 ;t# Item_List[4].Buffer_Length := 4 ;t, Item_List[4].Item_Code := UAI$_FLAGS ;2 Item_List[4].Buffer_Addr := IADDRESS (Flags) ;# Item_List[4].Return_Addr := 0 ; 0 Item_List[5].Buffer_Length := SIZE (Def_Dir) ;- Item_List[5].Item_Code := UAI$_DEFDIR ;9 Item_List[5].Buffer_Addr := IADDRESS (Def_Dir.BODY) ;)# Item_List[5].Return_Addr := 0 ;(0 Item_List[6].Buffer_Length := SIZE (Def_Dev) ;- Item_List[6].Item_Code := UAI$_DEFDEV ; 9 Item_List[6].Buffer_Addr := IADDRESS (Def_Dev.BODY) ;*# Item_List[6].Return_Addr := 0 ;c? Item_List[7].Terminator := 0 ; { Terminate the item list } I Rst := $GETUAI (Usrnam := %STDESCR SUBSTR (New_User,1,New_User.LENGTH),, Itmlst := Item_List) ; Get_Target_Info := ODD (Rst) ; IF NOT ODD (Rst) THEN BEGIN IF Rst <> RMS$_RNF THENr LIB$SIGNAL (Rst) ;e END ELSEL BEGIN. Def_Dir.LENGTH := INT (Def_Dir.BODY[1]) ;. Def_Dev.LENGTH := INT (Def_Dev.BODY[1]) ;= Def_Dir.BODY := SUBSTR (Def_Dir.BODY,2,Def_Dir.LENGTH) ;'= Def_Dev.BODY := SUBSTR (Def_Dev.BODY,2,Def_Dev.LENGTH) ;1 END ; END ; { of Get_Target_Info } (PROCEDURE Format_User (Uic : UIC$TYPE) ;I{ Create a string with the UIC in numeric and rights identifier formats }} VAR Rst : INTEGER := 0 ;H BEGIN { Format_User }G Rst := $FAO ('!%U',Uic_Str.LENGTH,%STDESCR Uic_Str.BODY,%IMMED Uic) ;t IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;;E Rst := $FAO ('!%I',Id_Str.LENGTH,%STDESCR Id_Str.BODY,%IMMED Uic) ;  IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;s IF Uic_Str = Id_Str THENI Eq_Id_Str := '' ELSEu" Eq_Id_Str := ' = ' + Id_Str ; END ; { of Format_User }A%PROCEDURE Audit_Jump (Ok : BOOLEAN) ;<{ Record who, when, where, how, etc. for auditing purposes } VAR Rst : UNSIGNED := 0 ; ( Imprint : VARYING [120] OF CHAR := '' ; Audit : TEXT ; - Stamp : PACKED ARRAY [1..23] OF CHAR := '' ;  BEGIN { Audit_Jump }rL OPEN (Audit,FILE_NAME:=Audit_Trail,HISTORY:=Unknown,SHARING:=READWRITE) ; EXTEND (Audit) ;- Rst := $ASCTIM (Timbuf := %STDESCR Stamp) ;E IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ; , IF Stamp[1] = ' ' THEN Stamp[1] := '0' ;/ Imprint := SUBSTR (Stamp,1,20) + ' ' + User ;T IF Ok THEN BEGIN Format_User (New_Uic) ; IF New_User = User THENt Imprint := Imprint + ' from ' ELSE Imprint := Imprint + ' to ' ;/ Imprint := Imprint + Uic_Str + Eq_Id_Str ;  END ELSEm9 Imprint := Imprint + ' PRIV violation: ' + Command ;a IF Real_Mccoy THEN0 BEGIN& Imprint := Imprint + ' *EXACT*' ;; IF Pdev <> '' THEN Imprint := Imprint + ' ' + Pdev ;Y END ;8 IF Port <> '' THEN Imprint := Imprint + ' ' + Port ;@ IF Terminal <> '' THEN Imprint := Imprint + ' ' + Terminal ;N IF Physical_Device <> '' THEN Imprint := Imprint + ' ' + Physical_Device ; WRITELN (Audit,Imprint) ;B CLOSE (Audit) ;P END ; { of Audit_Jump }2FUNCTION In_List (Hopeful : VARYING [L1] OF CHAR ;0 Targets : VARYING [L2] OF CHAR) : UNSIGNED ;L{ Determine if a given string appears in a list of strings which may containL wildcarded values and "negated" values. Use some CLI return status values for convenience. } VAR Spot : INTEGER := 0 ; Rst : UNSIGNED := 0 ; Negated : BOOLEAN := FALSE ; * Debutante : VARYING [120] OF CHAR := '' ; BEGIN { In-List } In_List := CLI$_ABSENT ; REPEAT! Spot := INDEX (Targets,',') ;E IF Spot = 0 THEN  Debutante := Targets ELSES BEGIN/ Debutante := SUBSTR (Targets,1,Spot-1) ;n@ Targets := SUBSTR (Targets,Spot+1,Targets.LENGTH-Spot) ; END ;; IF Debutante.LENGTH = 0 THEN Exit (Bad_Access_Data) ; IF Debutante[1] = '!' THENM BEGIN= Debutante := SUBSTR (Debutante,2,Debutante.LENGTH-1) ;t Negated := TRUE ; END ELSER Negated := FALSE ; / Rst := STR$MATCH_WILD (Hopeful,Debutante) ;L IF Rst = STR$_MATCH THENE IF Negated THEN: In_List := CLI$_NEGATED ELSE% In_List := CLI$_PRESENT ELSE[9 IF NOT ODD (Rst) AND_THEN (Rst <> STR$_NOMATCH) THENT LIB$SIGNAL (Rst) ;F UNTIL (Spot = 0) END ; { of In-List }PROCEDURE Validate_Access ;1F{ For the type of user running the program, validate the user's access" to the target user's UAF record.D Non-SysProgs can only jump (/NOEXACT) to users who do not have anyN privileges other than those that are "OK". (SITE-specific privilege list) } VAR Rst , I : INTEGER := 0 ;* Chekov , { User has JUMP's rights ID? }1 Sysprog , { SETPRV or group <= MAXSYSGROUP ? }L Operator , { OPER ? }- Priv_Target , { Target is "privileged" ? }OE Id_Check_Ok : BOOLEAN := FALSE ;{ JUMP_ACCESS rights ID check ok ? }[I Access : Access_Status := Unspecified ; { Result of access list checks }] Jump_Id : $UQUAD := ZERO ;t. FUNCTION Check_Access_List : Access_Status ;K { Determine if the caller is specifically authorised to access the targetn( user in the access list data file. } VAR Spot : INTEGER := 0 ;& Rst , Target_Status : UNSIGNED := 0 ; Valid : BOOLEAN := FALSE ;e0 Src , Dst , Buf : VARYING [120] OF CHAR := '' ; Access : TEXT ; BEGIN { Check_Access_List }A4 Check_Access_List := Unspecified ; { Default }G OPEN (Access,FILE_NAME:=Access_List,HISTORY:=Old,SHARING:=READONLY,  Error:=CONTINUE) ;L Rst := STATUS (Access) ; IF Rst = PAS$K_SUCCESS THEN BEGIN RESET (Access) ;., WHILE NOT (EOF (Access) OR Valid) DO BEGIN READLN (Access,Buf) ; 2 Str_Compress (Buf,Buf,TRUE) ; { Squeeeeeeze! }& Rst := STR$UPCASE (%DESCR Buf,Buf) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;)I IF (Buf.LENGTH > 0) AND_THEN (Buf[1] <> '#') THEN { Not a comment }d BEGIN Spot := INDEX (Buf,':') ;0 IF Spot = 0 THEN Exit (Bad_Access_Data) ;$ Src := SUBSTR (Buf,1,Spot-1) ;2 Dst := SUBSTR (Buf,Spot+1,Buf.LENGTH-Spot) ;6 Spot := INDEX (Dst,'#') ; { Trailing comment? } IF Spot > 0 THEN& Dst := SUBSTR (Dst,1,Spot-1) ;@ IF (Src = '') OR (Dst = '') THEN Exit (Bad_Access_Data) ;. Target_Status := In_List (New_User,Dst) ;B IF In_List (User,Src) = CLI$_PRESENT THEN { User in source }E IF Target_Status = CLI$_PRESENT THEN { New user in target...}R5 Check_Access_List := Granted { ... NOT negated }  ELSE= IF Target_Status = CLI$_NEGATED THEN { ... negated! }n! Check_Access_List := Denied ;a END ; END ;a CLOSE (Access) ; END ELSEl# IF Rst <> PAS$K_FILNOTFOU THENe BEGINL WRITELN ('JUMP-F-BADACCFIL, Failed to open access list file; error ', Rst:1) ; $EXIT ; END ;" END ; { of Check_Access_List } BEGIN { Validate_Access }G { Check that the invoker has the required access to run this program. H This is independant of any installed privileges. Identify SysProgs.C If need be, check to see if process has JUMP_ACCESS rights ID }  IF Double_Check THENH BEGIN. Rst := $ASCTOID (Name := 'JUMP_ACCESS', Id := Jump_Id.L0, Attrib := Jump_Id.L1) ;, IF NOT ODD (Rst) THEN= LIB$SIGNAL (Rst) ;; I := 1 ;L àõY¯o~ JUMP025.BCK/•B‚[SYSEXE.SOURCE.JUMP]JUMP.PAS;82PlÆÙ> REPEATS, Chekov := Jump_Id.L0 = Rights[I].L0 ; I := I + 1 ;M& UNTIL Chekov OR (I > Rightsize) ; END ; IF Proc_Cnt > 0 THENL BEGINN WRITELN ('%JUMP-F-NOSUB, Cannot JUMP while process has sub-processes.') ; $EXIT ; END ELSE  IF Pid <> Master_Pid THENS BEGINC WRITELN ('%JUMP-F-NOINSUB, Cannot JUMP from a sub-process.') ;K $EXIT ; END ELSEs BEGIN6 Sysprog := (Uic.UIC$V_GROUP <= Max_Sys_Group) OR (Setprv IN Proc_Auth_Priv) OR (Setprv IN Proc_Def_Priv) ;, Operator := (Oper IN Proc_Auth_Priv) OR (Oper IN Proc_Def_Priv) ; END ;B Id_Check_Ok := (Double_Check AND Chekov) OR (NOT Double_Check) ; Access := Check_Access_List ;s IF NOT Get_Target_Info THEN IF Figment THENE WRITELN ('%JUMP-W-INVUSER, Invalid username - user does not exist.'); ELSE BEGING WRITELN ('%JUMP-F-INVUSER, Invalid username - user does not exist.') ;t $EXIT (RMS$_RNF) ;e END ;5 Priv_Target := ((Auth_Priv - Minor_Privs) <> []) OR ' ((Def_Priv - Minor_Privs) <> []) OR:+ (New_Uic.UIC$V_GROUP <= Max_Sys_Group) ;  IF (NOT (Sysprog ORt+ ((Access = Granted) AND Id_Check_Ok) OR[< (Operator AND NOT Priv_Target AND (Access <> Denied)) OR* ((New_User = User) AND Narcissus))) OR& (Alter_Ego AND NOT Sysprog) THEN BEGIN Audit_Jump (FALSE) ;n $EXIT (SS$_NOPRIV) ;s END ;' IF NOT Auditing AND NOT Sysprog THENs BEGIN$ WRITELN ('%JUMP-F-MUSTAUDIT, ',: 'Only Systems Programmers may disable auditing.') ; $EXIT (SS$_NOPRIV) ;s END ;* IF Alter_Ego AND (New_User = User) THEN BEGINB WRITELN ('%JUMP-I-SAMEUSER, Same username as current (',User, ') - no action taken.') ; $EXIT ; END ;- IF Real_Mccoy AND Flags.UAI$V_DISACNT THEN 7 Exit ('%JUMP-F-DISABLED, Username is disabled.') ;S IF Transmute THEN / IF New_Uic.UIC$L_UIC = Uic.UIC$L_UIC THEN[ BEGIN Format_User (Uic) ;; WRITELN ('%JUMP-I-SAMEUIC, Same UIC as current (',Uic_Str,_ ') - no action taken.') ; $EXIT ; END ELSE= IF (Flags.UAI$V_RESTRICTED OR Flags.UAI$V_CAPTIVE) THEN  IF Sysprog THENID WRITELN ('%JUMP-W-RESTRICT, Username is Restricted or Captive.') ELSE BEGINF WRITELN ('%JUMP-F-RESTRICT, Username is Restricted or Captive.') ; $EXIT (SS$_NOPRIV) ; ENDs ELSE! IF Flags.UAI$V_DISACNT THEN] IF Sysprog THENA7 WRITELN ('%JUMP-W-DISABLED, Username is disabled.')  ELSE BEGIN_9 WRITELN ('%JUMP-F-DISABLED, Username is disabled.') ;_ $EXIT (SS$_NOPRIV) ; END ;: END ; { of Validate_Access }m-[ASYNCHRONOUS,Check(None)] PROCEDURE Getuic ;f-{ In EXEC MODE, peek at the UIC in the PCB. }: BEGINN$ Sanity_Uic.UIC$L_UIC := Uic_Ptr^ ; END ;(-[ASYNCHRONOUS,Check(None)] PROCEDURE Setuic ;0{ In KERNEL MODE, poke a new UIC into the PCB. } BEGINs! Uic_Ptr^ := New_Uic.UIC$L_UIC ;R END ; 7[ASYNCHRONOUS,Check(None)] PROCEDURE Get_Jib_User_Ptr ;L-{ In EXEC MODE, peek at the JIB in the PCB. } BEGINs& Jib_User_Ptr::UNSIGNED := Jib_Ptr^ ; END ;t.[ASYNCHRONOUS,Check(None)] PROCEDURE Getuser ;L{ In EXEC MODE, peek at the Username in the Control Region and in the PCB. } BEGINE% Sanity_Ctl_User := CTL$T_USERNAME ;0$ Sanity_Jib_User := Jib_User_Ptr^ ; END ;;.[ASYNCHRONOUS,Check(None)] PROCEDURE Setuser ;P{ In KERNEL MODE, poke a new Username into the Control Region and into the PCB.} BEGINA# CTL$T_USERNAME := New_User.BODY ;N# Jib_User_Ptr^ := New_User.BODY ;t END ; .PROCEDURE Poteroo (Faking : BOOLEAN := TRUE) ;>{ Change the UIC. Do sanity checks except when reverting from pseudo-terminal. } BEGIN { Poteroo }J { Check that the UIC as returned by GETJPI and as peeked at in EXEC MODE) agree -- do this as a sanity check. }=: Uic_Ptr::UNSIGNED := CTL$GL_PCB + IADDRESS (PCB$L_UIC) ; $CMEXEC (Getuic,%IMMED 0) ;)= IF Faking AND (Sanity_Uic.UIC$L_UIC <> Uic.UIC$L_UIC) THEN BEGINB WRITELN ('%JUMP-F-INSANEUIC, Sanity Check FAILED for UIC!') ;L WRITELN ('%JUMP-F-UICVALUES, GetUAI =',HEX (Uic.UIC$L_UIC),' Kernel =',$ HEX (Sanity_Uic.UIC$L_UIC)) ; $EXIT (SS$_ABORT) ; END ELSE A $CMKRNL (Setuic,%IMMED 0) ; { Change UIC to be target UIC. }O END ; { of Poteroo } .PROCEDURE Wallaby (Faking : BOOLEAN := TRUE) ;B{ Change the username. Do sanity checks except when reverting from pseudo-terminal }5 BEGIN { Wallaby }O { Check that the username as returned by GETJPI and as peeked at in EXEC MODEd) agree -- do this as a sanity check. }=: Jib_Ptr::UNSIGNED := CTL$GL_PCB + IADDRESS (PCB$L_JIB) ;' $CMEXEC (Get_Jib_User_Ptr,%IMMED 0) ; P Jib_User_Ptr::UNSIGNED := Jib_User_Ptr::UNSIGNED + IADDRESS (JIB$T_USERNAME) ; $CMEXEC (Getuser,%IMMED 0) ;3 IF Faking AND ((Sanity_Ctl_User <> User.BODY) OR * (Sanity_Jib_User <> User.BODY)) THEN BEGINH WRITELN ('%JUMP-F-INSANEUSER, Sanity Check FAILED for Username!') ;A WRITELN ('%JUMP-F-USERVALUES, GetJPI = ',User,' Control = ',E3 Sanity_Ctl_User,' JIB = ',Sanity_Jib_User) ;T $EXIT (SS$_ABORT) ; END ELSE=! $CMKRNL (Setuser,%IMMED 0) ; END ; { of Wallaby }LPROCEDURE Kangaroo ;H{ Do all that is required to "jump" to the new user, or to return to the original user. }( VAR Rst , Attributes : UNSIGNED := 0 ;& Aclstr : VARYING [64] OF CHAR := '' ;. Aclent : PACKED A8IRRAY [1..32] OF CHAR := '' ;. Grptbl : PACKED ARRAY [1..16] OF CHAR := '' ;- Item_List : Item_List_Template (3) := ZERO ;R BEGIN { Kangaroo }A { Set new UIC. } Poteroo ; { Set new default directory. }? Rst := SYS$SETDDIR (SUBSTR (Def_Dir.BODY,1,Def_Dir.LENGTH)) ;l IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ; { Set new default disk. }0 Item_List[1].Buffer_Length := Def_Dev.LENGTH ;- Item_List[1].Item_Code := LNM$_STRING ;'9 Item_List[1].Buffer_Addr := IADDRESS (Def_Dev.BODY) ; # Item_List[1].Return_Addr := 0 ; # Item_List[2].Terminator := 0 ;e3 Rst := $CRELNM (Tabnam := %STDESCR 'LNM$PROCESS',R" Lognam := %STDESCR 'SYS$DISK', Acmode := PSL$C_SUPER, Itmlst := Item_List) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;t9 { Point LNM$GROUP logical to group table for new UIC. }s Attributes := LNM$M_TERMINAL ;: Grptbl := 'LNM$GROUP_' + OCT (New_Uic.UIC$V_GROUP,6,6) ;# Item_List[1].Buffer_Length := 4 ;'1 Item_List[1].Item_Code := LNM$_ATTRIBUTES ;=7 Item_List[1].Buffer_Addr := IADDRESS (Attributes) ;P# Item_List[1].Return_Addr := 0 ;)/ Item_List[2].Buffer_Length := SIZE (Grptbl) ;T- Item_List[2].Item_Code := LNM$_STRING ;a3 Item_List[2].Buffer_Addr := IADDRESS (Grptbl) ;n# Item_List[2].Return_Addr := 0 ;a# Item_List[3].Terminator := 0 ;s= Rst := $CRELNM (Tabnam := %STDESCR 'LNM$PROCESS_DIRECTORY',,# Lognam := %STDESCR 'LNM$GROUP',t Acmode := PSL$C_KERNEL,E Itmlst := Item_List) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;EM { If going to a different UIC, allow the current LNM$JOB logical name tableSM to be accessed by the new UIC. If returning to original user, remove theI$ ACL access previously applied. } Item_List[2].Terminator := 0 ;8 IF New_User = User THEN { Return to original user. } BEGIN& Item_List[1].Buffer_Length := 0 ;3 Item_List[1].Item_Code := ACL$C_DELETEACL ;I$ Item_List[1].Buffer_Addr := 0 ;$ Item_List[1].Return_Addr := 0 ; END ELSED BEGINB Aclstr := '(IDENTIFIER=' + New_User + ',ACCESS=READ+WRITE)' ;G Rst := $PARSE_ACL (Aclstr := SUBSTR (Aclstr.BODY,1,Aclstr.LENGTH),S Aclent := %STDESCR Aclent) ;F IF NOT ODD (Rst) THEN' LIB$SIGNAL (Rst) ;'4 Item_List[1].Buffer_Length := INT (Aclent[1]) ;3 Item_List[1].Item_Code := ACL$C_ADDACLENT ;t4 Item_List[1].Buffer_Addr := IADDRESS (Aclent) ;$ Item_List[1].Return_Addr := 0 ; END ;9 Rst := $CHANGE_ACL (Objtyp := ACL$C_LOGICAL_NAME_TABLE,p Objnam := 'LNM$JOB', Itmlst := Item_List) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ; END ; { of Kangaroo }PROCEDURE Display_Jump ;*{ Display data about the requested jump. } BEGIN { Display_Jump }[ IF Transmute THENA BEGIN4 WRITELN ('%JUMP-S-JUMPED, ',User,' jumped to ',- New_User,' (',Uic_Str,Eq_Id_Str,')') ;]? WRITELN ('%JUMP-I-DEFAULT, Default is ',Def_Dev,Def_Dir) ;A END ; IF Alter_Ego THEN]O WRITELN ('%JUMP-S-SETUSER, Changed username from ',User,' to ',New_User) ;e END ; { of Display_Jump }6PROCEDURE Get_Channel (Device : VARYING [L1] OF CHAR ;+ VAR Channel : [VOLATILE] $UWORD) ;m!{ Assign a channel to a device. }m VAR Rst : UNSIGNED := 0 ;F BEGIN { Get_Channel }# Rst := $ASSIGN (Devnam := Device,m Chan := Channel) ;  IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;i END ; { of Get_Channel }e/PROCEDURE Exit_Handler (Condition : UNSIGNED) ;:*{ Clean up on exit from pseudo-terminal. } VAR Rst : UNSIGNED := 0 ;( Iosb : Status_Block_Type := ZERO ; BEGIN { Exit_Handler }:# $SETAST (0) ; { Disable ASTs }_ IF Pseudo_Ft THEN_ BEGINB Rst := PTD$CANCEL (Pchan) ; { Cancel I/O to pseudo-terminal } IF NOT ODD (Rst) THENm LIB$SIGNAL (Rst) ;$; Rst := PTD$DELETE (Pchan) ; { Delete pseudo-terminal }, IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;= END ELSEF= $DASSGN (Pchan) ; { Deassign pseudo-terminal channel }r6 $CANCEL (Rchan) ; { Cancel I/Os on real terminal }D Rst := $QIOW (Chan := Rchan, { Restore original characteristics } Func := IO$_SETMODE, Iosb := Iosb,= P1 := Rchars,D P2 := 12) ;H IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst), ELSEE IF NOT ODD (Iosb[1]) THEN  LIB$SIGNAL (Iosb[1]) ;' $DASSGN (Rchan) ; { Shut up shop. } END ; { of Exit_Handler }$[ASYNCHRONOUS] PROCEDURE Rchan_Ast ;J{ Called when a keystroke occurs on the real keyboard - the keystrokes are: passed to the pseudo-terminal and another read queued. } VAR Rst : UNSIGNED := 0 ; BEGIN { Rchan_Ast}= IF Pseudo_Ft THENE BEGIN' Rst := PTD$WRITE (Chan := Pchan,D" Wrtbuf := Buffer[Wsts], Wrtbuf_Len := 1) ;E IF NOT ODD (Rst) THENE LIB$SIGNAL (Rst) ;:! Rst := $QIO (Chan := Rchan,m Func := IO$_READVBLK, Astadr := Rchan_Ast, P1 := Buffer[Wbuf], P2 := 1) ;r IF NOT ODD (Rst) THEN  LIB$SIGNAL (Rst) ;  END ELSEG BEGIN Rst := $QIO (Chan := Pchan, Func := IO$_WRITEVBLK, P1 := Buffer[Wsts],{ P2 := 1) ; IF NOT ODD (Rst) THEN_ LIB$SIGNAL (Rst) ;n! Rst := $QIO (Chan := Rchan,i Func := IO$_READVBLK, Astadr := Rchan_Ast, P1 := Buffer[Wsts], P2 := 1) ;  IF NOT ODD (Rst) THEN  LIB$SIGNAL (Rst) ;' END ; END ; { of Rchan_Ast }'$[ASYNCHRONOUS] PROCEDURE Pchan_Ast ;M{ Called when characters are received from the pseudo-terminal - the data are 6 passed to the real screen and another read queued. } VAR Rst : UNSIGNED := 0 ; BEGIN { Pchan_Ast } IF Pseudo_Ft THENp BEGIN# Rst := $QIOW (Chan := Rchan,a Func := IO$_WRITEVBLK,  P1 := Buffer[Rbuf], P2 := Buffer[Rcnt]) ; IF NOT ODD (Rst) THENp LIB$SIGNAL (Rst) ;& Rst := PTD$READ (Chan := Pchan, Astadr := Pchan_Ast," Readbuf := Buffer[Rsts],# Readbuf_Len := Ft_Buflen) ;a IF NOT ODD (Rst) THEN  LIB$SIGNAL (Rst) ;y END ELSE BEGIN! Rst := $QIOW (Chan := Rchan, Func := IO$_WRITEVBLK, P1 := Buffer[Rsts], P2 := Piosb[2]) ; IF NOT ODD (Rst) THEN] LIB$SIGNAL (Rst) ;;! Rst := $QIO (Chan := Pchan,e Func := IO$_READVBLK, Iosb := Piosb,d Astadr := Pchan_Ast, P1 := Buffer[Rsts], P2 := Py_Buflen) ;  IF NOT ODD (Rst) THEN: LIB$SIGNAL (Rst) ;t END ; END ; { of Pchan_Ast }: [ASYNCHRONOUS] PROCEDURE Mbast ;F{ Invoked by the detached process termination mailbox AST - WAKE UP! } VAR Rst : UNSIGNED := 0 ; BEGIN { MBast } Rst := $WAKE ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;  END ; { of MBast }RPROCEDURE Transmography ;TL{ Create a pseudo-terminal connected to a detached process and actually *be* the user! }  TYPE8 Desc_Blk = PACKED RECORD { Exit handler descriptor } Fwd_Link : UNSIGNED ;e& Exit_Handler_Addr : UNSIGNED ; Argcnt : $UBYTE ;R5 Fill_Zero : [UNSAFE] ARRAY [1..3] OF $UBYTE ;  Condition ,H0 P2 , P3 , P4 , P5 , P6 , P7 : UNSIGNED ; END VALUE ZERO ; VARE Rst , Mbunit : UNSIGNED := 0 ;% Newchars : Terminal_Chars := ZERO ;S) Exit_Desc : [STATIC] Desc_Blk := ZERO ;T$ Iosb : Status_Block_Type := ZERO ;. Item_List : Item_List_Template (2) := ZERO ;7 FUNCTION Find_Device (Device : VARYING [L1] OF CHAR ;o$ Chan : $UWORD := 0) : BOOLEAN ;7 { Determine if a device exists and return its name. }o VAR Rst : UNSIGNED := 0 ;T# Iosb : Status_Block_Type := ZERO ;v- Item_List : Item_List_Template (2) := ZERO ;p BEGIN { Find_Device }  Find_Device := TRUE ;;4 Item_List[1].Buffer_Length := SIZE (Pdev.BODY) ;/ Item_List[1].Item_Code := DVI$_DEVNAM ;o8 Item_List[1].Buffer_Addr := IADDRESS (Pdev.BODY) ;: Item_List[1].Return_Addr := IADDRESS (Pdev.LENGTH) ;B Item_List[2].Terminator := 0 ; { Terminate the item list }C IF (Chan = 0) AND (Device <> '') THEN { Device name supplied }e, Rst := $GETDVIW (Itmlst := Item_List, Devnam := Device, Iosb := Iosb)) ELSE { Channel number supplied }c, Rst := $GETDVIW (Itmlst := Item_List, Chan := Chan, Iosb := Iosb) ; IF Rst = SS$_NOSUCHDEV THEN Find_Device := FALSEG ELSEH IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst)e ELSE IF NOT ODD (Iosb[1]) THEN LIB$SIGNAL (Iosb[1]) ;N END ; { of Find_Device } BEGIN { Transmography }I { Determine which pseudo-terminal type (if any) exists on the system. }S& Pseudo_Ft := Find_Device ('FTA0:') ; IF NOT Pseudo_Ft THEN' IF NOT Find_Device ('PYA0:') THENB Exit ('%JUMP-F-NOPSEUDO, No pseudo-terminal driver on system.') ; Get_Channel ('TT:',Rchan) ;EI { Get current (real) terminal process-specific device characteristics }. Rst := $QIOW (Chan := Rchan, Func := IO$_SENSEMODE, Iosb := Iosb, P1 := Rchars,( P2 := 12) ;I IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst)c ELSET IF NOT ODD (Iosb[1]) THEN  LIB$SIGNAL (Iosb[1]) ;G) { Set up and declare the exit handler }{: Exit_Desc.Exit_Handler_Addr := IADDRESS (Exit_Handler) ; Exit_Desc.Argcnt := 1 ; . Exit_Desc.Condition := IADDRESS (Exit_Rst) ;( Rst := $DCLEXH (Desblk := Exit_Desc) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;_& { Set new terminal characteristics } Newchars := Rchars ;. Newchars.Tt_Devchar.TT$V_NOECHO := TRUE ;/ Newchars.Tt_Devchar.TT$V_WRAP := FALSE ;L. Newchars.Tt_Devchar2.TT2$V_PASTHRU := TRUE ; Rst := $QIOW (Chan := Rchan, Func := IO$_SETMODE, Iosb := Iosb,a P1 := Newchars,s P2 := 12) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst)  ELSEN IF NOT ODD (Iosb[1]) THENA LIB$SIGNAL (Iosb[1]) ;l& Wallaby ; { Change to new username }! Poteroo ; { Change to new UIC }C { Create the pseudo-terminal }& Pbuf_Range[1] := IADDRESS (Buffer) ;6 Pbuf_Range[2] := Pbuf_Range[1] + Io_Buflen * 2 - 1 ; IF Pseudo_Ft THENy BEGIN' Rst := PTD$CREATE (Chan := Pchan,e Inadr := Pbuf_Range) ;s IF NOT ODD (Rst) THEN  LIB$SIGNAL (Rst) ;  END ELSE BEGIN" Get_Channel ('PYA0:',Pchan) ; END ;8 Find_Device ('',Pchan) ; { Sets Pdev to device name }E { Create a termination mailbox for the soon-to-be detached process,S and get its unit number } ! Rst := $CREMBX (Chan := Mchan, Maxmsg := ACC$K_TERMLEN) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ; # Item_List[1].Buffer_Length := 4 ;a+ Item_List[1].Item_Code := DVI$_UNIT ;;3 Item_List[1].Buffer_Addr := IADDRESS (Mbunit) ;r# Item_List[1].Return_Addr := 0 ;(? Item_List[2].Terminator := 0 ; { Terminate the item list };' Rst := $GETDVIW (Itmlst := Item_List,r Chan := Mchan,  Iosb := Iosb) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst)c ELSE) IF NOT ODD (Iosb[1]) THENI LIB$SIGNAL (Iosb[1]) ;r/ { Queue an asynchronous read to the mailbox }= Rst := $QIO (Chan := Mchan,D Func := IO$_READVBLK,_ Astadr := Mbast, P1 := Mbbuf," P2 := ACC$K_TERMLEN) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;' IF Auditing THEN Audit_Jump (TRUE) ;J WRITELN ('%JUMP-S-TRANSFER, Control transferred to user ',New_User,Lf) ;! { Create the detached process }r6 Rst := $CREPRC (Image := 'SYS$SYSTEM:LOGINOUT.EXE', INPUT := Pdev,_ OUTPUT := Pdev,p Baspri := 4, Mbxunt := Mbunit,e> Stsflg := PRC$M_DETACH + PRC$M_INTER + PRC$M_NOPASSWORD) ; IF NOT ODD (Rst) THEN LIB$SIGNAL (Rst) ;e { Restore username and UIC } New_User := User ; New_Uic := Uic ; 3 Wallaby (FALSE) ; { Change to original username } . Poteroo (FALSE) ; { Change to original UIC }O { Queue the appropriate reads to both the real terminal and pseudo-terminal }e IF Pseudo_Ft THEN. BEGIN! Rst := $QIO (Chan := Rchan, Func := IO$_READVBLK, Astadr := Rchan_Ast, P1 := Buffer[Wbuf], P2 := 1) ;r IF NOT ODD (Rst) THEN  LIB$SIGNAL (Rst) ;e& Rst := PTD$READ (Chan := Pchan, Astadr := Pchan_Ast," Readbuf := Buffer[Rsts],# Readbuf_Len := Ft_Buflen) ;F IF NOT ODD (Rst) THEN_ LIB$SIGNAL (Rst) ;I END ELSEG BEGIN! Rst := $QIO (Chan := Rchan,M Func := IO$_READVBLK, Astadr := Rchan_Ast, P1 := Buffer[Wsts], P2 := 1) ; IF NOT ODD (Rst) THENE LIB$SIGNAL (Rst) ;I! Rst := $QIO (Chan := Pchan,R Func := IO$_READVBLK, Iosb := Piosb,o Astadr := Pchan_Ast, P1 := Buffer[Rsts], P2 := Py_Buflen) ;  IF NOT ODD (Rst) THEN  LIB$SIGNAL (Rst) ;; END ;> { Hibernate until termination mailbox message wakes us up. } $HIBER ;D WRITELN ('%JUMP-S-RETURN, Control returned to user ',User,Lf,Lf) ; END ; { of Transmography }aE{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *aC * * * * * * * * * * M A I N P R O G R A M * * * * * * * * * *G * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * }cBEGIN { Jump }Get_Caller_Info ;AIF Get_And_Parse_Command THEN BEGIN) Validate_Access ; { Stop intruders }h IF Real_Mccoy THEN Transmography { Clone! } ELSE BEGINU- IF Alter_Ego THEN { Change username } Wallaby ;E( IF Transmute THEN { Long jump! } BEGIN_4 Kangaroo ; { Boing! Change miscellany of items } IF Auditing THENP Audit_Jump (TRUE) ELSEO Format_User (New_Uic) ; END ; " IF Log THEN Display_Jump ; END ;l END ;END. { of it all }ÿÿty_Jib_User := Jib_User_Ptr^ ; END ;;.[ASYNCHRONOUS,Check(None)] PROCEDURE Setuser ;P{ In KERNEL MODE, poke a new Username into the Control Region and intoÐ.^F(—~ JUMP025.BCK$[SYSEXE.SOURCE.JUMP]JUMP.OBJ_ALPHA;4øØ»È$*[SYSEXE.SOURCE.JUMP]JUMP.OBJ_ALPHA;4+,ï‡.Ø/ 4øØІ-‚0ÿ123KÿPWOÙ56õwìÆ ˆš7ÉÉ ˆš89GHˆÿJÿ>>øJUMP0117-SEP-1996 10:38DEC Pascal V5.4-41x xiHg$CODE$ ˆ@$DATA$ ˜LIB$INITIALIZE $ABS$©â $LITERAL$ˆð $LINK$ ˆ\ $BSS$ PAS$HANDLER2 PAS$WRITE_STRING PAS$WRITELN2PAS$FIND_MEMBER PAS$FIND_NONMEMBERPAS$READV_INIT PAS$READV_ENUMERATEDPAS$READV_FINI PAS$STATUSV PAS$OPEN2 PAS$EXTEND PAS$CLOSE2PAS$CLOSE_LOCAL PAS$STATUS PAS$RESET2PAS$LOOK_AHEAD PAS$READ_VARYING PAS$READLN2 PAS$WRITE_UNSIGNEDPAS$HEXPAS$OCTPAS$WRITE_CHAROTS$STRCMP_EQLP OTS$MOVEMOTS$MOVEOTS$FILLOTS$STRCMP_EQLSOTS$ZERO OTS$INDEX OTS$BIT_MOVE OTS$BIT_IS_MEMBER OTS$BIT_FILL OTS$BIT_OR PAS$FV_OUTPUTCTL$T_USERNAME PAS$K_SUCCESSPAS$K_FILNOTFOU PCB$L_JIB PCB$L_UICJIB$T_USERNAME CTL$GL_PCB SYS$SETDDIR CLI$DCL_PARSE CLI$GET_VALUE CLI$PRESENTSYS$EXIT SYS$TRNLNM LIB$SIGNAL SYS$GETSYIW SYS$GETJPIWSTR$TRIMLIB$GET_FOREIGN LIB$GET_INPUT STR$UPCASE SYS$GETUAISYS$FAO SYS$ASCTIMSTR$MATCH_WILD SYS$ASCTOID SYS$CMEXEC SYS$CMKRNL SYS$CRELNM SYS$PARSE_ACLSYS$CHANGE_ACL SYS$ASSIGN SYS$SETAST PTD$CANCEL PTD$DELETE SYS$DASSGN SYS$CANCELSYS$QIOW PTD$WRITESYS$QIOPTD$READSYS$WAKE SYS$GETDVIW SYS$DCLEXH PTD$CREATE SYS$CREMBX SYS$CREPRC SYS$HIBERJUMP_CLDø ø–=àØÐÿÞ#~·^·^´ ~´(¾·ÿcþGûG°ÿb#±@Ó°þb#Ï@Ó$àHöb¤Pýb#] @Ó¨ ¨c ûb#à’@ÓàÃÿG\ý 4àG"`ùb#à=°@ÓXý àøb# à…@Ó¸ 4àG"àX÷b#=°$ @ÓàÃè"€öb#–@Ó° c öb#`à*@ÓÿcýG]§4àG]¤ }¤(½§0Þ#€úkÿGÐÿÞ#þG~·ÿG^·^´ ~´(¾·ÿcþG¦ûGhüB§!vJ¶T @<ÑCñGþG ]¢þGX FðC =°ÓD@Zk°ÿB§@Zk!.Ñ!J ðÐûb¤ûB§A"˜ûb§tàGãG@ZkàûB§ãGèûb§4àG@ZkðýB§øýb§4àG4àG@ZkÿcýG]§]¤ }¤(½§0Þ#€úk¡.U ¡J±Fãÿÿà ÿÞ#þG~·ñG€^·òGˆ^´óG~´˜ž´ ¾´¨Þ´°þ´¸µÀ>µÈ^µÐ~µØ¾·ÿcþG£ûG ùB§³¦ðG#vJ¶¿G=£ãG<ÄCñGþGåGäGùG@Zk!¤þG ùB§Ö¦8=´!v H¿G<Ý áG<ÇCñGþGèGçGæG@ZkݶþG÷¦ ùB§Xý¶7vàJ¿G\=¡ ÷G<ÊCñG þGëGêGéG@Zk¢åC$}°À¿&,}°&4}°01B9 YB ½²4àG0}³s"}²B(²åC]²<=£èCD=°& f@L=°èCT=°91 C@½²&CP}³ëC8}²) ICHÝ°ëC\= þG<}°°ýCdý²lý²tý²!1 @`½²)@p}³X}²h=°\]³mëlæãGTàG<ÑCx²ñG|=²þGþGô³)vÀJ&ÿÿ"éGa ê¥ °B_ ä }¡ Ô 5v J&æ³ æ³³Bæ³àCt²ß&ëC°ݲ'4²a@I$]³x€H ô³" }³ ="¿G =§}"0B§$&–?K´àGÁD =´ÿÿc ,]²(]"(}³¿G(ý¦8b§(–ÿJE(´@ZkàG<]¢DþÐ Àô°ã@0æ°é@2æ4é@ -Ç ‰F‹. ùB§ "å ëHT ‹JdëHH I…F‹>E =çG@ZkàÃÿGòùB§ùb§ÿGTàG@ZkýGÿc€]§ˆ]¤}¤˜¤ ½¤¨Ý¤°ý¤¸¥À=¥È]¥Ð}¥Ø½§àÞ#€úkô¿"ª‘ÿÿÃô¿"ªžÿÿÃý¿"ª°é@Îÿöö¿"ªËÿÿÃÿG`÷Þ#ñG~·H^·P^´X~´`ž´h¾´pÞ´xþ´€µˆ>µ^µ˜¾·ÿcþG¦ûGþG úB§!vJ¶áG<ÖCñG£þG2£ ÷GöGøG@Zk=°÷C$=°,=°ÀŸ&&²$1€@8 8B4àG(]³"²¿&˜@÷C °ÿÿµ"=²€¤°ÕB8¦þGÈæ@§ ÿ&´÷"0ý¶4–ŸJ8¶öG8–K@·ÿG4àG@÷5v€H ¢ÿG°uB¹æ;uBÓ uGt/T."á tJ[ tKwtJRTJaGt?WFT>óG ûB"”àÃÿGÿûZ#]¢@ë" ÐBŸ"¤ô"@ý.!tBÓ 4D úB§ß$a}JWýJB"áF@ý>óG@Zk‚Æ àÃ"]¢ ÐBŸ"“ä@ý.!ÔB úB§Ö 4DWýJaÝJB"áF@ý>öG@Zk ãÿ'0·6öÁJý öG„ÀêÀùb¦0B§ÿ"8b§"ÿG0s"ÿG_"@Zk@B§Hb§çGèG]""”àG@Zkô@}¦"8]. úB§3v`JR]J1pBÓ 0F:"q}JQF8]>óGB]"@ZkßàÃBý @¥8vI øG_ëÀùb¦0B§?#8b§"ÿG0s"ÿG_"@ZkPB§Xb§çGéG]""”àG@Zkô4àGÃàÃ(vI( A8AIéKì@=¦ @09 A1v J 9@µ0BŸ"F ö@ý.6A úB§È ÔFWýJv IB]"àGöF@ý>B"èGTB@Zk@=¥9v IùG7 ëÀùb¦0B§? 8b§"ÿG0s"ÿG_"@Zk@B§Hb§çGèG]""”àG@Zk,ô@=¤:]"8}¦¨úB§!v H3v`JaB<ÖCñGöG<ÐCþGñGþGøGöG@Zk¨úB§B]"áG@Zk úB§÷GöGøG@Zk"¹ÐBŸ"  ç8-%ÔBÖ ´D úB§:"eÝJHIöGE8=÷G@Zk4àGeàÃ)v I39@) Aú`êóG 8 A8 @ü é89Cþì@¦0vJ¶BÀö8}¦:]"¨úB§3v`JaB<×CñG÷G<ÐCþGñGþGùG÷G@Zk¨úB§B]"áG@Zk úB§èG÷GùG@Zk0=¤ @¨úB§èG÷G!v HáB<AñGøG<ÐCþGñG þGêGøG@Zk¨úB§2]"áG@Zk úB§ùGøGêG@Zk"¨C69ÀB 9@Ÿ"Ëå8=,7CØ ôF úB§:"wKA=HøG7D8=<ùG@Zk@¦Ÿ"0vJ·B½àö@/94A úB§É 4GXKy=IB]"àGG@?B"éGTB@ZkãG"ÿ¿à8=¦ÀúB§ÿG:"1v J ûB"äG@Zk&ô8¥7vI*vI¸3àB¢÷êC¹ðBŸ ç8"7öáJ(vIB0-"É0I $E õ(9A—é8ý¤8A09`@'vàHŸ"²ð@“@ö8½.3AÈ tF úB§:"sIU½JèG³F8½>:]"@Zk8ݦ$v€H6vÀJ¶ ÄBÀæ8}¦ ¢3v`J°dB€æ7dB4-Ó äFô."á tJW ôJctJI4IáF #Eô>4=óGàÃäGr è8¤4 @ ¢05A vHß$¸@Æ l÷°¤@næ!¤@t,Å $D4,"÷ ´HA 4Hi´HCtH7DiD4<t<åG:]" úB§æG@ZkÿcýGH]§P]¤X}¤`¤h½¤pݤxý¤€¥ˆ=¥]¥˜½§ Þ#€úký¿"ª5þÿÃö¿"ªDþÿÃó¿"ªYþÿÃö¿"ªjþÿÃÿÿ"ªyþÿÃÿÿ"ªžþÿÃó¿"ªµþüó¿"ª²þÿÃó¿"ª·þÿÃÿÿ"ªÆþÿÃö¿"ªôþÿÃó¿"ª 8 AóG8 @ÿ?ùó¿"ª89Cÿüó¿"ª@¦0vJ¶Bÿßæó¿"ªýþÿÃö¿"ª2ÿÿÃó¿"ª@ÿÿÃò¿"ª^ÿÿÃó¿"ªfÿÿÃó¿"ªjÿÿÃö¿"ª}ÿÿÃó¿"ª‹ÿÿÃó¿"ª°¤@’ÿöö¿"ªÿÿÃÿG°ÿÞ#áG~·”áG^· ^´(~´0ž´8¾´@Þ´H¾·ÿcþGûG"púB§þG@Zk ÷B§"]"áG@ZkòG<ÐC°ñG ²þGþGä³4àGä³äGä³ÿG ô³˜`Bô³÷ÿs#ô³ô³ô³ ô³$ô³(ô³0”"üÿô³ô³ô³ô³ðÿë ”"˜ö¢¤8`B@B§ô³ôÿ3 ø øØ–=àØô³M&ô³"õÿ?è˜ ¥ ²ðÿÞ#ä³åC ä³ÿG$²ÿGHb§ÿGþ·äG"ÿGôàG@ZkàGòãGàÃãG¤ð0vH÷B§ÿG÷b§TàG@Zk?$! $°_&Hö¤(%"ä³R" D²¤@°ñC$²Ÿ&ä³øe"”"óC„²ÿ&d²¦" ä³÷"$ä²õC(¤²_'æC#,IJZ#0D³øC4³%?$8ä³%#! ùC<$°?&@$³üÿe#Dä³1"H$²ûCLd³-&Pä³÷E"8b§÷ s"òCTd²ß&XD²àC\°B÷…"@÷å" Ö"`IJôCd„²,'÷Cj÷¥"hä²h÷E# #õCl³úCp¤²tD³.?'0B§0% 9#x$³ðÿÞ#áC|$°ÿG€ä³ÿG„ä³ÿGþ·äG"ÿGôàG@ZkàGòãGàÃãG¤€ð0v€H÷B§ÿG÷b§TàG@ZkÀþB§% $Èþb§æC }° °æC}°°"="ÿGtàG@ZkàG÷B§ò÷b§ÿGTàG@Zkh÷%¦@÷B§ÿGj÷"1v J ÷B"äG@Zk"ôh÷Ť4àG&vÀH° f@(æ£@i÷c #,Á#Hø+D ôh÷å¦7vàJ79àB!àêh÷…¤XàB09C$v€H³@`öäG4öBh÷¥.× –F ÷B§tåJU¥J÷G´Fh÷¥>j÷"k÷E"@ZkýGÿc]§ ]¤(}¤0¤8½¤@ݤH½§PÞ#€úkò¿"ªÕÿÿÃó¿"ªÜÿÿÃó¿"ªßÿÿà þÞ#% &~·P"x^·ÿG€^´ÿGˆ~´ÿGž´”àG˜¾´ Þ´¨þ´°µ¸>µÀ^µÈ~µÐžµØ¾·ÿcþGûGx¤ôáG˜÷¢¤4àGpB§ –H8¥ x´åC °²"xb§@ZkàGøB§òøb§ÿGTàG@Zk%¤´àG(øB§°ÿB"!v HaB< CñGàG<ÐCþGñGþG÷GàG@Zk(øB§E"áG@Zk øB§öGàG÷G@Zk° @†æêG/4@ øB§À ™FXKtH"G?àGöG@Zk%¤ß$€B§$ ÿ"¦!v HèÿB¦P @èÿb¦!v Hˆb§ &@=°L@ ý²"°"ݲ´àG@Zk à?$&z‚! °€"¡@ @ýG Dä°ùB§¸ùb§ýG4àG4àG@Zk0B§ÿ$8b§ç ý°% K@?% °"4àGý!@Zk!ý)!0B§¡@8b§  @?&1"=²0D@ ²  DpÿE±"4àG@Zk¡@  @0B§4àG8b§  DÌüe± jE  FÈüE±_%J!]±I@ =²"4àG@Zk¡ @ ô @ 0`E`E D0B§?&8b§ 1"=²0F@ ²Ìü%°"4àG@Zk«@0B§  @]±J@8b§`Et° =°"4àG@Zk«@0B§  @ý° K@8b§`E ° ]±"4àG@Zk@÷¦¨@ÿ$  @ç ý°?&+V@À" }±1"=²hþ…"EðC²% ?%(°ôC²%ÿ)!ðÿâ"=± ! ±÷C$³ 4àG(]±"="]" }"("ÿb#¥ú_Ó@÷¦?&ý°+T@ }± "@÷b¥1"=²P…"ðC²ôC²ðÿâ"=±÷C ±"$³="(]±]" }"("ÿb#Šú_Ó?%)!ˆk!=±?% ëC@" }±)!=±x"ðC% %=²ôC½²þk!}±ðÿ# ±øC$=³(]±"="]" }"("ÿb#lú_Óx¤z!x}"ìC vHóC vH="@° ²"²]"}±€ýb#ý³Lû_Óx¤x= àýB§áC ²ìC vH}±èýb§" vH="@°}²TàG@ZkàGòøB§øb§ÿGTàG@Zkx=¦”àG@øB§z"@B"1v JäG@Zk' #^@³ ý²x"H@=±=²ôC½²ðÿb#àG}±ûC ±$°"X%°="(]±]" }"("ÿb# ú_Óx=¥x="ìCñC)v I" &A=± °="]²]"}±€ýb#ý³û_Óx=¥x àýB§àC =°ìC)v I}±èýb§")v I=" &A=±]²TàG@ZkàGòøB§øb§ÿGTàG@Zkx=¦”àG@øB§z"@B"1v JäG@Zk&ý°7X@ ý² "²x}" \@=±óC²:B@}±àG ±"$]³="p%°]"(]± }"("ÿb#×ù_Óxý¤ ìC¯C'vàH"'vàH="æ@@÷â¤Ý°]" =±€ýb#°(ýç }±ý³·ú_Óxݤý³(vÀHèGõéÀB§"Èb§ìGtàG@Zk B§"¨b§çG]"tàG@Zk=¡ÿB§"˜ÿb§4àGƒ E@ZkB§ÿG˜b§% ?%A)!@Zkä0}-4èG@÷B¦ øB§t}JK}I2" tE0}=óG@R"@Zk¦C =± "$±Àûb#A_!Vù_ÓNàÃÿGx=¦4àGhýB§z"ØøB"1v J@Zk ý· 8@ãG½ ê°÷'B»æpÿB§xÿb§ "4àG4àG@Zk°B§¸b§("ÿGèGhe"ÿGèG Ý"ÿGèG@Zk°ýB§¸ýb§h"ÿG(}"ÿGèG@Zk õx]¥*–_Ix]µ!àÃ&vÀH&É@ 0 A›Àè íæGŸÀèéG¡ é@éG£ éx=¦09A 9@1v J´0B €öÔÿGx½.4Ö@ øB§Æ –FU½JtÝHz]"´Fx½>àGz"æGTB@Zkx=¦@øB§ÿGz"H÷"¥1v J øB"äG@Zktÿä?'ÐB§9#)!=³8P@ ³% ß$Øb§éC± Æ Ý°"="ÿGtàG$@ZkàGøÿ©¤ðc ðÿé¤F`ô%ö§Hé´©´àÃâÀÿB§éC ±Ý°éC±"Èÿb§="Ý°ÿGtàG@ZkàGòøB§ÿGøb§TàG@Zké¤'vàHçGTàè@÷b¦°ýB§"¸ýb§ÿG s"÷B¥ÿG_"@ZkÐýB§)!Øýb§éGåG]""”àG@Zkä@÷B¦P÷B§êGX÷b§ÔæGèR"tàG@Zk ÷B§¨÷b§êG4àGŸ!@ZkÿGýGÿcx]§0€D€]¤ˆ}¤¤˜½¤ ݤ¨ý¤°¥¸=¥À]¥È}¥Ð¥Ø½§àÞ#€úkö¿"ªwýÿÃÿÿ"ªÿÿÃ÷¿"ªBÿÿÃó¿"ªcÿ?ýó¿"ªæGaÿßøÿÿ"ªéG_ÿ?ùÿÿ"ª@éG]ÿ?ùÿÿ"ªZÿÿÃó¿"ª]ÿÿÃÿÿ"ª©ÿÿÃÀÿÞ#”êG~·ôàG^·<ÐC^´ ~´(ž´0¾´8¾·ÿcþGþG°ñGþG ²ûGö³ö³þGö³4àGöGÿ_ ð³˜@ð³üÿ@"ð³ð³ø ø°–=àØð³ ð³$ð³(ð³0"üÿð³ð³ð³ð³ðÿ_ê "¨ú‚¤8@ð³ð³ùÿ@"ð³p „ ÷ÿ_êXúB¦ $ °äCR"6²$ö³"r¦ °ðC²$ö³ ù$" °ñC#$6²" ö³3v`J ðC$°ö$"(²ñC,ö³‰`ê&"0² &46²Úõ 8ö³""<²àC@°¤óG8àBDö³09 BHö³ vH¡@x ô<×C8ûB§ñGþGàG÷GR"÷G@Zk`üB§7vàJ?$äGàG@ZkáB=°õC0B§ ½²ðÿÞ#8b§ÿGþ·ÿG]"öGÿGÿGôàG@ZkàGûB§0FáG ô?&²‚1"ûb§FãG@ æÿGTàG@Zk<àÃÿGãGö¤ÀPHHè°ý@FæÑ€DöQ®sHRDJSFöQ¾B@âØõ„¦ÔP€J@€ê°„B>æÑ€DØõö®x„JWäJøFØõö¾:àâöd¦ØõD§3v`J:v@K6`ê8@ëX`BúG09`CôÿGX`@±0@ 9@3 ö8ûB§ö"öD"ôÿG@Zk`üB§äG@ZkäG¶B+Àö8ûB§Úõ"ÛõD"ãGäG@Zk`üB§äG@ZkýGÿc0 D]§]¤ }¤(¤0½¤8½§@Þ#€úkó¿"ªtÿÿÃó¿"ª…ÿÿÃô¿"ª·ÿÿ÷ÿÿÃô¿"ª¿ÿÿÿÿÿÃó¿"ªÈÿ_ûó¿"ªÅÿÿÃó¿"ªÊÿÿÃó¿"ªÒÿÿðÿÞ#”àG~·^· ^´(~´0ž´8¾´@¾·ÿcþG0,0.ûG¿$Èÿ‚¤Á0H@B§Q 0JHb§„ 1DàG´¥ ½°#öaHL@?& ²P€@]²1"=²"äG]"ãG@ZkàGò0B§8b§ÿGTàG@Zk@B§rD"O@½°Ÿ& °òC]² ”"Hb§p$"²"]"ãG”àG@ZkàGò0B§8b§ÿGTàG@Zk$¦"pd¦rD"pB§äG1v J3v`J@Zkää¦7–ÿJä¶(àÃp$§tàGXB§hB"9v KyB<£CñGãG<ÐCþGñGþGáGãG@ZkXB§rD"ùG@ZkPB§øGãGáG@Zk°d@æäGÄ.4`@à €FPB§"tdHVÄJãGÔFÄ>øG@ZkýGÿcýG]§ ]¤(}¤0¤8½¤@½§PÞ#€úkö¿"ªåÿÿÃàýÞ#4àG~·´àGð^·´ãGø^´ÔàG~´ž´¾´¾·ÿcþGûG °˜þ"¤="ðþb¤ñCý³à¤øü!  c¦áC=°8B¦ –H=² c ØÿB§4àGà´X"¤ ]¶ (]¶2v`Jàÿb§c"0=´"@ZkHB§Pb§"4àG@ZkèÿB§&¤C<°"8²ðÿb§ÿG8="ÿGÿG”àG@ZkàGòXÿB§`ÿb§ÿGTàG@Zk ¤ðD$D ôñD@ ´P"xÿB§ ]"”âG þ¢¤ïG@ZkxÿB§0B"4àG@ZkxÿB§8"´âGP]"@Zk妴âGà].€ÿB§h"7vàJR]JñB4 @Á €F´âGt=HáGTFà]>8]"@Zk€ÿB§E"÷G@ZkxÿB§â"áGh]"@Zk”€àð"(ÿb#ýþ_Óe¦%¦"˜ÿB§E"3v`J1v JäG@Zk#äà}¦ÔàG€ÿB§`"3v`Jâ]"wB<¸CñGøG@Zk€ÿB§hB"÷GþG@ZkxÿB§ùGøG`]"@Zk°CæïGà,4CØ …FDHtKâ"”Dà<øGùG"àÃà}¦ÔàG€ÿB§`"â]"3v`JvB< CñGàG@Zk€ÿB§¨ÿB"öG@ZkxÿB§þGáGàG`]"@Zk°@ôæïGà,4@À …Fâ"tHDHàG”Dà<áGxÿB§@Zkhþ§â]"à}¦€ÿB§8vK3v`JxB<¤CñGäG<ÐCþGñGþGàGäG@Zk€ÿB§jþC"øG@ZkxÿB§åGäGàG@Zk€þã¦åG€ÿB§äG7vàJ—@<¶@ñGöG<ÐCþGñGþGøGöG@Zk€ÿB§‚þC"÷G@ZkxÿB§ùGöGøG@Zk°ÏBµæïGà,4ÁBÖ Fâ"tÝJ@HöGDà<;àÃà}¦4âG€ÿB§`"â]"3v`JeB<¤CñGäG@Zk˜þB¦€ÿB§åGþGHR"@ZkxÿB§÷GäG`]"@Zk˜#¤÷G€ÿB§äG!v H@<ÀCñGàG<ÐCþGñGþGøGàG@Zk€ÿB§šC"áG@ZkxÿB§ùGàGøG@Zk°@|æïGà½,4@À –Fâ"tHE½HàG´Dà½<ùGxÿB§áG@Zkã¢ýG€ÿB§`"gàâà}¦â]"3v`JdB<¡CñGáG@Zk€ÿB§pB"äGþG@ZkxÿB§øGáG`]"@Zk°/@XæïGàÝ.49@xÿB§Á ™FVÝJt=Hâ"ÔFàÝ>áGøG@Zkˆ#¦˜ÿB§ÿGŠ"1v JøÿB"äG@Zk=ôà}¦4àG€ÿB§`"â]"3v`JwB<¤CñGäG@Zk€ÿB§0B"÷G@ZkxÿB§þGåGäG`]"@Zkˆ#¤€ÿB§åGäG!v H@<ÖCñGöG<ÐCþGñGþGùGöG@Zk€ÿB§ŠC"áG@ZkxÿB§øGöGùG@Zk°ÏBæïGàý.4ÀBxÿB§Ö €FWýJtÝJâ"ôFàý>öGøG@ZkýG#¦ÿG˜ÿB§"øÿB"1v JäG@Zk=ôà}¦4àG€ÿB§`"3v`Jâ]"dB<¡CñGáG@Zk€ÿB§0B"äGþG@ZkxÿB§ùGáG`]"@Zk£¤ùG€ÿB§áG%v H%@<ÖCñGöG<ÐCþGñGþG÷GöG@Zk€ÿB§C"åG@ZkxÿB§øGöG÷G@Zk°ÏBÑæïGà,4ÀBÖ €FxÿB§â"tÝJDHöG”Dà<øG@ZkýG8#¦˜ÿB§ÿG:"1v JøÿB"äG@Zk=ôà}¦4àG€ÿB§`"â]"3v`JaB<¥CñGåG@Zk€ÿB§0B"áG@ZkxÿB§þG÷GåG`]"@Zk8#§€ÿB§÷GåG9v K¹@<ÖCñGöG<ÐCþGñGþGäGöG@Zk€ÿB§:C"ùG@ZkxÿB§øGöGäG@Zk°ÏBæïGà=,4ÀBxÿB§Ö €FA=HtÝJâ"4Dà=<öGøG@ZkýG`#¦ÿG˜ÿB§b"øÿB"1v JäG@Zk=ôà}¦4àG€ÿB§`"3v`Jâ]"eB<¤CñGäG@Zk€ÿB§0B"åGþG@ZkxÿB§ùGäG`]"@Zk`ã¦ùG€ÿB§äG7vàJ—@<ÖCñGöG<ÐCþGñGþGáGöG@Zk€ÿB§bC"÷G@ZkxÿB§øGöGáG@Zk°ÏBIæïGà½,4ÀBÖ €FxÿB§â"tÝJE½HöG´Dà½<øG@ZkýGà=§¨þB§â]"°þb§"1v K`b¤tàG@Zkø øˆ/–=àØøþB§"ÿb§4àG@ZkÈÿB§Ðÿb§"4àG@Zk`ä¸ÿB§Àÿb§ýG4àG@ZkýGÿcð]§ø]¤}¤¤½¤½§ Þ#€úkö¿"ªéýÿÃö¿"ª þÿÃö¿"ªHþÿÃö¿"ªþÿÃö¿"ª¥þÿÃö¿"ªèþÿÃö¿"ª,ÿÿÃö¿"ªpÿÿÃö¿"ª´ÿÿÃÿG þÞ#ñG~·þGø^·ÿG^´~´ž´¾´ Þ´(þ´0µ8>µ@^µH~µPžµX¾·ÿcþG¦ûGß$øúB§1vJ¶¿G ]¢T B<ÑCñGX FþGÓ‘FöG@Zk@þB§öCþG%%@Zk!¤ ݲ– z½ 5v H=´ðÆ T Bx]¦<ÑCñG]£7–_JþGðCúGøúB§}²X FÿG¿G=¤Ó±F@Zk@þB§#v HþG@Zkxý¶T`@„!?%ÿ_¢4àG0B".P/ÔJZ PK"šF8B§@Zk 8@@õ]¢2.’.Ñ2JT ’J4F°oBÇæïGx½.4vBÓ –Fz"t}JU½JóG´Fx½>R"@àÃý¢7,Á7H»àò! *@8@A¾ èÀ î29@A!BÂ@ê 9`Bw/òGW.8`B[ wKÒWJ09@C[Fº°B69 B¹@÷°oB»æïGx=.4{BðúB§Ó ›FQ=Jt}Jz"4Fx=>óGW"@ZkW.w.ÒWJS wJSF° Bªö°#@¬æ4#@·.Á ƒF—.W"û 7HT —Jz7HU·J›F—>öGºF·>"áGTBðúB§% $G @Zkx}¥ðúB§*",v`I€õ(Ý.ôèGúB¦t}JóGVÝJèR"ÔF(Ý>¥C@Zk°Gÿ"=°"þb#_ó_Ó+v`I4àG° @€æ Cy ,y À H8Dô,9€A{€éx}¦X€A09 B3v`J 4àG¶pBwÀöïGxý.4˜AðúB§Ì ˜FWýJtIz"ôFxý>ìG{]"@Zkàà ÿG =£x=¤Ù.ÖÙJf ó!v H@B§6vÀJHb§!v HÉBäCݲ³)@åC =°$=²" ="TàG@ZkàG F€õ?$?&ý! ø1"ÑaEñG àÃÿG%_&ÐúB§‚R"²BÿG8@FPF@âØúb§TàG@Zk6ÿ_õýGÿcø]§æG]¤}¤¤½¤ ݤ(ý¤0¥8=¥@]¥H}¥P¥X½§`Þ#€úkö¿"ª6ÿÿÃÿG×.8@AV ×JÁF! *@Bÿ?øó¿"ª@ÿ?þó¿"ª29@A!B>ÿ_úó¿"ª;ÿÿÃó¿"ª°oBEÿöö¿"ªBÿÿÃó¿"ª°#@Tÿöö¿"ªQÿÿÃò¿"ª}ÿÿÃó¿"ª‚ÿÿÃó¿"ª†ÿÿÃù.W ùJöF–ÿÿÃpÿÞ#áG~·tàG@^·H^´P~´Xž´`¾´hÞ´pþ´xµ€¾·ÿcþGûG"ÐüB§øø‚¤ÿGÿG@Zk€ùB§"]"áG@Zk ¤  „ PB§ÿGXb§ à?& 1"=²H@ ²]""="@ZkàG`ùB§òhùb§ÿGTàG@Zk 4àGáG°9 B²]&B±ö°@æQ?B‘@8 @01¢³]&@£@sDóÿâ„¢tçG øB¦tàGðø¥´ôC€æ°øB§¸øb§èG¨R"@ZkùB§èGùb§4àG@ZkûB§ûb§4àG4àG@ZkDàÃÿG ¡æG$ tàG øB¦°øB§Eðø¥ä¸øb§xR"èG@ZkùB§ùb§èG4àG@ZkûB§4àGûb§4àG@Zk+àÃ0B§("8b§ÿGèGÔáG@ZkàGô0B§8b§0"ÿGèGÔáG@Zkôø$¤Ä¢!W$HV&H¡ 6@DE0B§0"8b§ÿGèGTâG@ZkèGàGô0B§("8b§ÿGèGTâG@ZkàF÷G8 Dó£DG0Gÿb#J@ÓàGPþb#¹ù_Ó&ðd çG øB¦tàG°øB§ `àðøb¤@R"¸øb§ãG@ZkùB§ùb§ãG4àG@ZkàÃÿG øB¦çGðøb¤tàG°øB§¸øb§ãGR"@ZkùB§ùb§ãG4àG@ZkûB§&ûb§²‚"4àG@Zkød¤ èþ$¤#WdH¦ƒVfHàþ$¦  `@ô0D ôD¦2F1DDtôd¢„¢·àC¨øB¦fF`ò ùB§ €âr¦R"äG2¦"3v`JòÿR"1v J@Zkô£ @Àð8 DhD `ð ä÷D àð"ý³úb#çú_ÓûB§ûb§”äG4àG@ZkÐþ¡8ÀD øB¦tâGðø¢¤tàGhD°øB§`à¸øb§åGðR"@Zk øB¦°øB§åG¸øb§ÔåGÀR"tàG@ZkùB§ùb§åG4àG@ZkûB§”äGûb§4àG@Zktôä ¨ø¥äG ùB§tàG+ààðøâ¤h¦!òÿH"(¦3v`J"1v J@Zk!ä øB¦°øB§çG¸øb§”åGR"@Zkðÿh¤òÿH"°øB§çG¸øb§tàG1v`H@Zk øB¦çG°øB§”âG¸øb§tàGxR"@ZkùB§çGùb§4àG@ZkûB§ûb§4àG4àG@Zk÷¤ ôäG øB¦t}J€ùB§% ?$ àðþd  "óGƒ–`HPR" `àý,'! ¡CGýH'!ôDý<@Zk8=°<°8" ýb#fñ_Ópô¤ ø"ød 0ùb#ø¡m àðøâ¤hD!`ôäù_Ó øB¦çG°øB§ÔäG¸øb§tàG(R"@Zkxô¤¤zôD"°øB§çG¸øb§tàG1v H@Zk øB¦çG°øB§”âG¸øb§tàGxR"@ZkùB§çGùb§4àG@Zk4àGFàÃÿGðþ¡ôäG øB¦tàGðø¢¤ˆvI°øB§R"ñðþd ¸øb§åGƒbH`ððþ„ „–€H8€àÀà@ZkùB§ùb§åG4àG@Zk0àÃÿG øB¦ôäGðøâ¤tàG°øB§¸øb§çGPR"@ZkçGàÃÿGÀà øB¦ðø¥”æG°øB§tàG¸øb§ÈR"èG@ZkùB§èGùb§4àG@ZkààøB¦”æGðøb¤tàG°øB§¸øb§ãGR"@ZkãGùB§4àGùb§@Zk”äGûB§ûb§4àG@ZkýGÿc@]§H]¤P}¤X¤`½¤hݤpý¤x¥€½§Þ#€úkÿ¿"ªMþÿÃÿGÀýÞ#4àG~·4àG^·áG^´~´ ž´(¾´0Þ´8¾·ÿcþGûG =°ù"¤£C° ]"ˆ¦TàGý! PúB§áC=°ý³0–J¤tàGˆ¶ˆ=¦hù¦ –H´1–?Jˆ=¶4ãG ý³ðÿÝ#ˆ ¤ˆ ">´°"”ãGXúb§4vH>´"@ZkàÿB§"èÿb§4àG@ZkP"¤àG@B§Hb§"áCDm ô4àG@ZkýG¤€HðÿG0B§"8b§4àGÿG@Zk¤ÿG€6H$%VàðÿB§ˆ"øÿb§="ïGtàG@ZkÐÿB§Øÿb§"4àG@Zkˆ¤ß$Š½ ˆ]"$v€HåC$v€HòC†@ °% Ÿ$$=°,}²x„ (°4àG0ݲ "(="0]"Pÿb#žñ_Óˆ¤ˆ= °ÿB§áC$=°åC vH °¸ÿb§ " vH(="ø ø`?–=àØ@(°,½°TàG@ZkàGòÐùB§Øùb§ÿGTàG@Zkˆݤ4àG%vÀH&vÀH³ÿ¿ì° @Læ C8ÿB§4àG‰ ,‰ Š"hB"À H§CxD¦ÿäˆ=¦1v J@Zk8@€ô8=/ôèGùB¦ðùB§t}JY=K% ?$4G8=?:"óGèR"@ZkG! =°G#$Ý° "ýb#-ð_Ó8€@% ¤@(Àì* è$9€@Å@,€èˆ]¦09@8€@&9À@2v@J89 @µPB' öïGÝ.4·@ðùB§Å —FVÝJt½HŠ]"ÔFÝ>æG "åGTB@Zk=¦8ÿB§4àG "1v J`B"@Zkˆ¦0vJ¡B ôïGˆ=.4’@ðùB§Ä ’FQ=JtHŠ"4Fˆ=>äGŠ]"@Zk8@ì 9@è=§8@09ÀB9v K¡0Cÿ ôïG/4@À „FðùB§ "tHXKàGG? ]"@Zkˆ=¦ÿGúB§Š"púB"1v JäG@Zk ô=¦úB§ÿG "1v JpúB"äG@Zkä8ý.ôèGùB¦t}JðùB§% ?'WýJ:"ôF8ý>óGèR"@ZkG9#§C =³$=° "ýb#ºï_ÓG¿ ù¤ðùB§% ¿$Æ †¤F"$v€HT€@<°CñGþG>.t€H"àGQ JöC4F >äG@Zk$v€HðùB§…@ °$ݲ=¤!v HT @<ÒCñGþG^.t6HáGRVJ!v HTFV>" ]"öG@Zk%@(=°äC,° "(="ÿb#bû_ÓðÿƦàGðùB§6vÀJTÀB<²CñGþG^.tÀJöG6vÀJR@J"TF@>òÿF"@ZkàGðùB§ÅB ݲ÷C$ý²ˆÝ¤&vÀHTÀ@<ÒCñGþG^.tÁHæG&vÀHRAJ"TFA>Š]"@ZkÅ@(½°áGß$öC,ݲ "(="ÿb#0û_ÓýÆ D°þô†DýGÀôýG¤ÿG€H­þà²þÿÃýG¤¿$ø¥ €H…Dƒ4€D¤þà¤ÿG€6Hªþð@úB§"Húb§4àG@ZkàÃX¤4çGùB¦tàG`ù¢¤æC†D ùB§Àä(ùb§åGPR"@ZkÀÿB§Èÿb§åGäG4àGtàG@ZkpùB§åGxùb§4àG@Zk€ûB§ˆûb§4àG4àG@ZkØú¤ýG0úB§4àG8úb§Àä@ZkýGÿcãG]§]¤}¤ ¤(½¤0ݤ8½§@Þ#€úkò¿"ª±þÿÃó¿"ªÖþ¿øó¿"ª$9€@Å@ÔþŸøó¿"ªÑþÿÃó¿"ªÖþÿÃó¿"ªíþÿÃó¿"ªûþÿÃó¿"ªþþÿÃÿG˜ô¤˜  !  °€úk¨ô¤˜  øÿ °€úk¸ô¤°  !  °€úkøÿ¤xô¦Èô;¦ ¤¤ "0´ öH´´1¢q¦Q¦p¶2öAJP¶€úk˜ô;¤úGýGûG! põ]§¦A"èôݦ”áG@Zkpõ]§´¢A"”áG@ZkøG€÷k°ÿÞ#p¤ÿG~· ^·TàG(^´0~´8ž´@¾·ÿcþGûG p xþ‚¤x"¤`B§˜„ P¦áChb§@°@Zk $ ôåG þB¦tàG0þB§ @8þb§€R"`Dpþb¤_àãG@Zk€þB§ˆþb§ãG4àG@Zk þB¦ãG0þB§tãG8þb§tàG`R"@Zk@B§" 4áGHb§äG}"°”àG@Zk  ÿB§< CñGþGáGàG]"4áG@Zk0B§äG@ZkàGGè0þB§8þb§ãGáGtàG@Zk0þB§8þb§ãG4áG€B"tàG@Zk„ "@B§4áGHb§äG°}"”àG@Zk Ÿ ÿB§<¤CñGþGàGäG]"4áG@Zk0B§äG@ZkäG$€è0þB§8þb§ãGàGtàG@Zk€þB§ˆþb§ãG4àG@ZkB§”åG˜b§4àG@ZkààB§ÿG¨b§TàG°¦@ZkýGÿcýG ]§(]¤0}¤8¤@½§PÞ#€úkÿÿ"ª¶ÿÿÃÿÿ"ªÙÿÿÃÐÿÞ#àþ¤ÿG~·^·TàG^´~´ ž´(¾·ÿcþGûG p èü‚¤H"¤ÐþB§°„ Øþb§áC@¦@°@Zk8"¤ ÿGÐþB§TàGáCØþb§@P¦°@ZkS`à˜ü‚¤0B§”áG „ "âÿD"@Zkä0B§"”áGâÿD"@ZkEôüB¦àüb¤´æG üB§tàG¨üb§R"ãG@ZkðüB§ãGøüb§4àG@ZküB¦ üB§ãG¨üb§´ãGàR"tàG@Zkàÿ¤ üB§âÿD"¨üb§ãG1vHtàG@Zk üB§¨üb§ãGtáG`B"tàG@Zk üB§ãG¨üb§”áGäGtàG@Zk üB§¨üb§ãGôàGXB"tàG@Zk üB§D"¨üb§ãG”áGtàG@ZkðüB§øüb§ãG4àG@ZkÿB§”åGÿb§4àG@ZkàÃÿB§ÿGÿb§TàGp¦@ZkÿcýG]§]¤}¤ ¤(½§0Þ#€úkÿGÿÞ#~·È^·Ð^´Ø~´àž´è¾´ðÞ´ø¾·ÿcþGûG€¤þG°þ"¤@"8ý³ðþb# –H€´=´tàG =´(=´0=´=´=´”äG<ÁC@°ñGhý¢¤þGD=°äGä³ä³1 ä³p¥ ñ³þGñ³ñ³á³4àGá³á³@=²¬þ_Óe¦3v`Jj`êóG8@09 @ôÿG²0Bg@ö<ÀCøýB§ñGþGáGàGE"àG@Zk ÿB§äG vHß$@ZkàÿB§áGèÿb§@@°öCDݲ@"ÿGÿGtàG@ZkàGòÐýB§Øýb§ãGÿGTàG@ZkãGØÿ¤&ÿÿ" vH¡ @Aè@ ä vH_&ðýB§@°1Ѥ@$²ä³ Ÿ" ä³@"HB"táG@ZkðýB§'¨CTݲ #P³X"@B"áG@Zk0B§ÿ&8b§«Cd°÷"`ý²TàGh=³? ÿGP="`]"h}"äG´àG@ZkàGÐýB§òØýb§ÿGTàG@Zk ¥¤ðÿB§ 8°H"%W¤Høÿb§ÔàG…V¦H@½°ÔáG@}"ÔàG´àG@ZkðýB§`"ÐÿB"TáG@ZkðýB§H]"ÔàG@ZkðýB§P"âG`]"@ZkâG¥Bó äðýB§"P]"âG@Zk$ýB¦ °ß&ðýB§ä³Ö" IJ§C䳡Cä³@"ä²ÈR"³´âG@ZkðýB§ß&¨C\½°Ö"Xݲ`"¨ÿB"4áG@Zk0B§?#8b§¿$¬Ct=³ ¥ p½° #xý³ÿGX="p]"x}"äG´àG@ZkàGÐýB§òØýb§ÿGTàG@Zký"¤þB§äG ä³ÿ&a¦! òÿA"!¦3v`J"1v J@Zkää²ä³ä³uàÃÿG!§”áGøýB§pB"èG9v KyB<ØCñGøG<ÐCþGñGþGàGøG@ZkøýB§A"ùG@ZkðýB§tâGöGøGàGC@Zk€=/4åB× …FøýB§@"týJY=K÷Gø ø8O–=àØ4G€=?öGøG@ZkýB¦øýB§tâG°R"@ZkðýB§‚"÷G@]"@Zk€¤3vHs`êóG8 @09 @èG¶0CpÀö<a@øýB§ñGþGàGáG‚]"áG@Zk ÿB§!v HäG@ZkàG`B§&@Ý"@=°øCD³&hb§öCL=³ "H²@"H="ÿGÿGÿG´àG@ZkàGòÐýB§Øýb§ãGÿGTàG@ZkãGݤ&ÿÿ"£CðßD  Ð@BÀèAä&vÀHä³?&¤°Ñ@Ä°¿&ÀÿB§´àG@]²µ"H½²K@L²àÿÞ#Èÿb§ÿGþ·þ·@="þ·H]"äGÿGÿG4áG@ZkàGòÐýB§Øýb§ãGÿGTàG@ZkãGýGÿcÈ]§Ð]¤Ø}¤à¤è½¤ðݤø½§Þ#€úkó¿"ª“þÿÃó¿"ª–þÿÃô¿"ª½þÿÃö¿"ª ÿÿÃó¿"ªŠÿÿÃó¿"ªÿÿÃô¿"ª¼ÿÿÃÀÿÞ#âG~·tàG^·^´~´ ž´(¾´0¾·ÿcþG8{¤ûGPB"0‚¤ ðÿB§èÿ¢¤äGYàøÿb§@Zk¤ðÿB§E"øÿb§äG1vHtàG@ZkðÿB§øÿb§äGtáGÀÿB"tàG@Zk%¦E"ðÿB§äGøÿb§tàG1v J@ZkðÿB§äGøÿb§TàGhB"tàG@Zk£¤ðÿB§ C"øÿb§äG1v HtàG@Zk £¤ðÿB§"C"øÿb§äG1v HtàG@ZkÐÿB§Øÿb§äG4åG4àGtàG@Zk@B§äGHb§4àG@ZkàÿB¦ðÿB§äGøÿb§”ãG(R"tàG@ZkH#¦ðÿB§JC"øÿb§äG1v JtàG@Zkp#¦ðÿB§rC"øÿb§äG1v JtàG@Zk@B§Hb§äG4àG@Zkc ôäG0¢¤tàGðÿB§!`àèÿ‚¤åGàÿB¦øÿb§@Zkd¤ðÿB§D"øÿb§åG1v`HtàG@ZkðÿB§øÿb§åG”àG`B"tàG@Zk$¦D"ðÿB§åGøÿb§tàG1v J@Zk@B§åGHb§4àG@ZkýGÿc]§]¤}¤ ¤(½¤0½§@Þ#€úkÿGÐÿÞ#ñG~·þG^·ÿG^´ ¾·ÿcþG¦ûG°üB§1vJT B<ÑCñG¶¿G ½¢þGþGôC ]²X F¿G Ý¢ÓDôGõG@ZkøÿB§@Zk¶.Õ¶JÀò5v J8B§&@b§°B²PÀB ݲ"áGÿGÿGÿG´àG@ZkàGòˆüB§üb§ÿGTàG@ZkÿcýG]§]¤ ½§0Þ#€úkö.W öJõFßÿÿÃÿGÀÿÞ#áG~·4àG^· ^´(~´0¾·ÿcþGûGÐÿÞ#@ùB§"hõb¤@ZkðõB§"]"áG@ZkPB§¸c Xb§ÿG@Zk 4àG@B§Hb§àH¦0vJ@ZkàGÐõB§òØõb§ÿGTàG@ZkH¦pB§4àGxb§0vJ@ZkàG òÐõB§Øõb§ÿGTàG@ZkàÃÿGH¦4àG0B§8b§0vJ@Zk¦4àG`B§hb§Ð’J@Zk# #¦>´”áG`úB§ÿG>´Ñ’ Jþ·täGþ·}" þ·ÿGhúb§ÿG(þ·”áG@ZkàGâ¤ð0vHÐõB§ÿGØõb§TàG@Zk¦0B§4àG8b§Ð’J@ZkÿcýG]§ ]¤(}¤0½§@Þ#€úkÿGÐÿÞ#ÿG~·ÿG^·4àG^´ÿG~´ôàG ž´(¾·ÿcþGèõ{¤ÐÿÞ#ûG¸c 0B§Hc" 8b§àH¦þ·0vJ@ZkàGòPöB§Xöb§ÿGTàG@Zk#¦L# >´4àG>´Ñ’ J àÃÿGH#¦Hƒ ÐúB§4àGž´æG¶1v Jþ·ÿGþ·ÿG þ·ÿGØúb§ÿG(þ·”áG@ZkàGòPöB§Xöb§ÿGTàG@Zk#¦ž´4àGž´Ñ’ JÐúB§þ·ÿGþ·4æG þ·ÿG˜ú‚¦ÿGØúb§”áG(þ·@ZkàGPöB§òXöb§ÿGTàG@ZkÿcýG]§]¤}¤ ¤(½§0Þ#€úkÐÿÞ#ÿG~·ÿG^·ÿG^´”áG~´ ¾·ÿcþGö{¤ÐÿÞ#ûG¸c LC"ûB§ ûb§!à#¦H¦^¶Ñ’ JÐRJ¶ÿGþ·æGþ· þ·(þ·@ZkàG€öB§òˆöb§ÿGTàG@ZkH#¦úB§Hƒ"˜úb§ÿG ûB¦1v JÿGü¿"ÔàG@Zk/àÃÿG#¦H"°#¤æGûB§ÿG¶Ñ’ JÁR H>´þ·ÿGþ·ÿG þ·ÿGûb§”áG(þ·@ZkàG€öB§òˆöb§ÿGTàG@ZkH#¦°c"ûB§Hc ~´ ~´þ·1v Jþ·ÿG þ·4æGûb§ÿG û‚¦”áG(þ·@ZkàG€öB§òˆöb§ÿGTàG@ZkÿcýG]§]¤}¤ ½§0Þ#€úkÿGàÿÞ#ÿG~·ÿG^·TàG^´¾·ÿcþGûG0B§8b§@ZkàGöB§òöb§ÿGTàG@ZkÿcýG]§]¤½§ Þ#€úkPÿÞ#áG~·h^·p^´x~´€ž´ˆ¾´Þ´˜þ´ ¾·ÿcþGûG" ÿB§þGHû¤% ¿$@ZkÐûB§"]"áG@Zký³ ý·TàG(ý·ãG}²<ÕC½²ñGþGÐûB§ d#ä³ä³´àGä³t}Jû³?"û³"û³óG].¥ ¢C¸Æ R]JþGTF]>ØÿB"@Zk0½°0"4°8="8ý³Øþb#O@Ó°ßD& ´àGt}JÐûB§"& ð=."ðÿB"Q=J¢C4F=>óG@Zk0½°0"4ݲ8="8ý³Øþb#7@Óð0=.ÔæGðúB¦t}JÐûB§% ÿ&Q=J2"4F0=>óG°R"@Zk6÷"¦Cý²6? ݲ"pÿb#%é_Ó=,tàGÐûB§t}JA=H% ÿ&4D=<"óG`B"@Zk÷"¢C0ý² 4ݲ&"0"(ÿb#Ðý_ÓÐÿÞ#&¦ @B§´”áG´Ñ’ Jþ·ÿGþ·ôäG þ·}"Hb§ÿG(þ·ÿG”áG@ZkàGòãGàÃãG¤ð0vH°ûB§ÿG¸ûb§TàG@Zk ¤X"¤È@àÿB§4àGñDèÿb§áC&°4@ ´$²"@ZkàGò°ûB§¸ûb§ÿGTàG@Zk¤"&¤37dJÐÿB¦& öH&¦ ½"@B§2DHb§D(´3@ =´ÐÿÞ#Ñ’ J¾¶”áG¾¶ÿGþ·täGþ·}" þ·ÿG(þ·ÿG”áG@ZkàGòãGàÃãG¤ð0vH°ûB§ÿG¸ûb§TàG@Zk4àGý°"`þb#Œú_Óý°"Ðüb#îù_ÓH &¢H& °ÿB§àCáC"H°@01BL²HF" âðÿÞ#¸ÿb§H"^¶ÿGþ·ÿG”áGÿGÿGáG@ZkàGò°ûB§¸ûb§ãGÿGTàG@ZkàÃ=,´àGÐûB§t}J"A=HóG4D=<ðÿB"ô ô_–=@8@Zk¢C ½° $ݲH&" "(ÿb#/ý_Ó=,ÿGÐûB§t}JH¦¤A=HãG4D=<"óGPüB"@Zk% ÿ& ý²¢C$ݲ%v H(½°ÿG "(="Øþb#S@ÓB§ðÿÞ#˜b§L&"þ·þ·ÿG”êGÿGÿGÿGáG@ZkàG°ûB§ò¸ûb§ãGÿGTàG@ZkãGH&¦ $ÿB§ðÿÞ#ÿb§ °¡C¤°ä³Ñ’ Jþ·ÿG ä³ÿGþ·äG"ÿGáG@ZkàGòãGàÃãG½¤ ð0v H°ûB§ÿG¸ûb§TàG@ZkÐÿÞ#P† H&¦ž´”êG0B§ÿGž´Ñ’ Jþ·4æGþ·ÿG þ·ÿG ÿ‚¦”áG8b§(þ·@ZkàGò°ûB§¸ûb§ãGÿGTàG@Zk¨† ãG"€àXüb#ý°ñ_Óøú¢¤ÔåGðúB¦tàG@û‚¤ûB§¥ ûb§äG€R"@Zk%¦ûB§E"ûb§äG1v JtàG@ZkàúB§èúb§äGTáG4àGtàG@ZkPûB§äGXûb§4àG@Zkpÿ¤ðú¦?&= 1" vH=²h"pB§ vH¿&ðC²rÿ†"@ôC°ݲôC °”àG$ݲÀÿÞ#ÿG~· >´&? (>´="þ·]"þ· }"þ·ÿGxb§ÿG0þ·´áG@ZkàGò°ûB§¸ûb§ãGÿGTàG@Zk7ãGøÿ¤`þb#ðÿ%¤ öH%´´ðÿ¦0öJØÿ¶"ý³„ù_Óý³"Ðüb#æø_Ó L& 0B§ÿGøÿ‚¦4æG%àÐÿÞ#&¦ÿG>´ÿGþ´”áGþ·Ñ’ Jþ· þ·8b§(þ·@ZkàGò°ûB§¸ûb§ãGÿGTàG@ZkH&¦ÀÿB§ãGÈÿb§H†"PB¦1v JÿGÿGü¿"ÔàG@ZkàG9ò3àÃÐÿÞ#&¦H 0B§´ÿGþ´Ñ’ Jþ·4æGþ·ÿG þ·ÿGøÿ‚¦”áG8b§(þ·@ZkàGò°ûB§¸ûb§ãGÿGTàG@ZkãGÐÿÞ#H&¦°f"0B§HÆ Þ´ß Þ´þ·1v Jþ·ÿG þ·4æG8b§ÿGP‚¦”áG(þ·@ZkàGòãG°ûB§¸ûb§ÿGTàG@Zk€B§ãGˆb§ÿG@ZkðúB¦ûB§äGûb§4åG8R"tàG@ZkðÿŤûB§òÿE"ûb§äG1vÀHtàG@ZkàúB§èúb§äGTáG4àGtàG@ZkàúB§äGèúb§TáG4àGtàG@ZkPûB§Xûb§äG4àG@ZkÿcýGh]§p]¤x}¤€¤ˆ½¤Ý¤˜ý¤ ½§°Þ#€úk°ÿÞ#~· ^·(^´0~´8ž´@¾·ÿcþG¦ûG1 þG vJHB§áGT@<ÀCñG¶"@ZkøüB§" =£]"áG7v H@ZkXDÿGþG&Ó€DöC ³ÿÿ"÷GTàG=²´ @i€èh€æþGýB§öGàGùG@ZkHB§ãG4àG@Zk<ÖCpü"¦ñGþGݲ "]§(1"ù³Q"ð³ð³ Ÿ&òCð³Y² ”"ñC™²9²þG ù³:v@Kàö ¢T@CýB§ÿG/,xýB"äGØK@ H"G@Zkô ý¢.ÐJ7àò0vJ_&BPàB² ý²ðÿÞ#ÿGþ·þ·ÿG]"àÃðÿÞ#1v Hþ·ÿGþ·ÿG8B§ùG@b§"ÿGáG@ZkàGøö0 ãG ôÿG àÃÿGâ}¤`ð0v`HØüB§ÿGàüb§TàG@ZkÿcýG ]§0€D(]¤0}¤8¤@½§PÞ#€úkô¿"ª–ÿÿÃ7.Q 7J0FÅÿÿÃÍ4 ÿGX OTS$MOVEMÓ4 T@ÓX OTS$MOVEMÍ43XÿG`OTS$ZEROÓ43\@Ó`OTS$ZEROÍ<pÿGˆPAS$WRITE_STRINGÑ<xb# PAS$WRITE_STRINGÓ<„@ÓˆPAS$WRITE_STRINGÍ4ˆÿGœ PAS$WRITELN2Ñ4b#  PAS$WRITELN2Ó4˜@Óœ PAS$WRITELN2Í4!œÿG°SYS$EXITÑ4" b# SYS$EXITÓ4!¬@Ó°SYS$EXITÍ4 8ÿGxOTS$MOVEÓ4 t@ÓxOTS$MOVEÍ4 €ÿG¸OTS$MOVEÓ4 ´@Ó¸OTS$MOVEÍ4 ÄÿGøOTS$MOVEÓ4 ô@ÓøOTS$MOVEÍ4elÿG° SYS$TRNLNMÑ4fœb#à SYS$TRNLNMÓ4e¬@Ó° SYS$TRNLNMÍ4 àÿGOTS$MOVEÓ4 @ÓOTS$MOVEÍ4ÿG0 LIB$SIGNALÑ4 b#à LIB$SIGNALÓ4,@Ó0 LIB$SIGNALÍ4 ôÿG,OTS$MOVEÓ4 (@Ó,OTS$MOVEÍ4 DÿGhOTS$MOVEÓ4 d@ÓhOTS$MOVEÍ4 ŒÿG°OTS$MOVEÓ4 ¬@Ó°OTS$MOVEÍ4MÐÿGô OTS$BIT_MOVEÑ4NØb#` OTS$BIT_MOVEÓ4Mð@Óô OTS$BIT_MOVEÍ4OôÿGPAS$FIND_MEMBERô ôÑ4Pøb#`PAS$FIND_MEMBERÓ4O@ÓPAS$FIND_MEMBERÍ4 $ÿGTOTS$MOVEÓ4 P@ÓTOTS$MOVEÍ4MpÿG” OTS$BIT_MOVEÑ4Nxb#` OTS$BIT_MOVEÓ4M@Ó€)\04~ JUMP025.BCK$[SYSEXE.SOURCE.JUMP]JUMP.OBJ_ALPHA;4øØ&Q>” OTS$BIT_MOVEÍ<Q”ÿG´PAS$FIND_NONMEMBERÑ<R˜b#`PAS$FIND_NONMEMBERÓ<Q°@Ó´PAS$FIND_NONMEMBERÍ4 üÿG, OTS$MOVEÓ4 ( @Ó, OTS$MOVEÍ4M@ ÿGd OTS$BIT_MOVEÑ4NH b#` OTS$BIT_MOVEÓ4M` @Ód OTS$BIT_MOVEÍ4Od ÿG„ PAS$FIND_MEMBERÑ4Ph b#`PAS$FIND_MEMBERÓ4O€ @Ó„ PAS$FIND_MEMBERÍ4 ” ÿGÌ OTS$MOVEMÓ4 È @ÓÌ OTS$MOVEMÍ4 Ì ÿGÜ OTS$MOVEMÓ4 Ø @ÓÜ OTS$MOVEMÍ4 Ü ÿGð OTS$MOVEÓ4 ì @Óð OTS$MOVEÍ4 ÿG0 OTS$MOVEÓ4 , @Ó0 OTS$@$MOVEÍ4 x ÿG¬ OTS$MOVEMÓ4 ¨ @Ó¬ OTS$MOVEMÍ4 ¬ ÿG¼ OTS$MOVEMÓ4 ¸ @Ó¼ OTS$MOVEMÍ4 ¼ ÿGÐ OTS$MOVEÓ4 Ì @ÓÐ OTS$MOVEÍ4 Ø ÿG OTS$MOVEMÓ4  @Ó OTS$MOVEMÍ4  ÿG$ OTS$MOVEMÓ4 @Ó$ OTS$MOVEMÍ4 $ ÿG8 OTS$MOVEÓ4 4 @Ó8 OTS$MOVEÍ4 \ ÿG€ OTS$MOVEÓ4 | @Ó€ OTS$MOVEÍ4 œ ÿGÌ OTS$MOVEÓ4 È @ÓÌ OTS$MOVEÍ4Ø ÿGô OTS$STRCMP_EQLPÓ4ð @Óô OTS$STRCMP_EQLPÍ4 l ÿG OTS$MOVEÓ4 Œ @Ó OTS$MOVEÍ4 d ÿGp OTS$MOVEÓ4 l @Óp OTS$MOVEÍ43,ÿG8OTS$ZEROÓ434@Ó8OTS$ZEROÍ4 8ÿGLOTS$MOVEÓ4 H@ÓLOTS$MOVEÍ4ÌÿG0 SYS$GETSYIWÑ4€b#à SYS$GETSYIWÓ4,@Ó0 SYS$GETSYIWÍ4PÿGd LIB$SIGNALÑ4Xb#à LIB$SIGNALÓ4`@Ód LIB$SIGNALÑ4~4b#à SYS$GETJPIWÍ4} ÿGè SYS$GETJPIWÓ4}ä@Óè SYS$GETJPIWÍ4ÿG LIB$SIGNALÑ4b#à LIB$SIGNALÓ4@Ó LIB$SIGNALÍ4kÿGXSTR$TRIMÑ4l$b#à STR$TRIMÓ4kT@ÓXSTR$TRIMÍ4\ÿGt LIB$SIGNALÑ4db#à LIB$SIGNALÓ4p@Ót LIB$SIGNALÍ4xÿG”OTS$STRCMP_EQLPÓ4@Ó”OTS$STRCMP_EQLPÍ4 üÿG OTS$MOVEÓ4 @Ó OTS$MOVEÍ4oàÿGLIB$GET_FOREIGNÑ4pb#àLIB$GET_FOREIGNÓ4o@ÓLIB$GET_FOREIGNÍ4 ÿG$ LIB$SIGNALô ôÑ4b#à LIB$SIGNALÓ4 @Ó$ LIB$SIGNALÍ4 ,ÿGd OTS$MOVEMÓ4 `@Ód OTS$MOVEMÍ4 dÿGt OTS$MOVEMÓ4 p@Ót OTS$MOVEMÍ4 tÿGˆOTS$MOVEÓ4 „@ÓˆOTS$MOVEÍ4 œÿGÄOTS$MOVEÓ4 À@ÓÄOTS$MOVEÍ4qÌÿG CLI$DCL_PARSEÑ4rìb#à CLI$DCL_PARSEÓ4q@Ó CLI$DCL_PARSEÍ4!DÿG\SYS$EXITÑ4"Hb#àSYS$EXITÓ4!X@Ó\SYS$EXITÍ4m\ÿG CLI$PRESENTÑ4ndb#à CLI$PRESENTÓ4mŒ@Ó CLI$PRESENTÍ4m”ÿGÌ CLI$PRESENTÑ4nœb#à CLI$PRESENTÓ4mÈ@ÓÌ CLI$PRESENTÍ4mÔÿG CLI$PRESENTÑ4nÜb#à CLI$PRESENTÓ4m@Ó CLI$PRESENTÍ4m,ÿGX CLI$PRESENTÑ4n4b#à CLI$PRESENTÓ4mT@ÓX CLI$PRESENTÍ4m\ÿGˆ CLI$PRESENTÑ4nlb#à CLI$PRESENTÓ4m„@Óˆ CLI$PRESENTÍ4mŒÿG¸ CLI$PRESENTÑ4nœb#à CLI$PRESENTÓ4m´@Ó¸ CLI$PRESENTÍ4S€ÿG¼ STR$UPCASEÑ4T˜b#à STR$UPCASEÓ4S¸@Ó¼ STR$UPCASEÍ4ÄÿGØ LIB$SIGNALÑ4Èb#à LIB$SIGNALÓ4Ô@ÓØ LIB$SIGNALÍ4àÿGøOTS$STRCMP_EQLPÓ4ô@ÓøOTS$STRCMP_EQLPÍ4S¨ÿGä STR$UPCASEÑ4TÀb#à STR$UPCASEÓ4Sà@Óä STR$UPCASEÍ4ìÿG LIB$SIGNALÑ4ðb#à LIB$SIGNALÓ4ü@Ó LIB$SIGNALÍ4ÿG OTS$STRCMP_EQLPÓ4@Ó OTS$STRCMP_EQLPÍ4yàÿGøPAS$READV_INITÑ4zèb#àPAS$READV_INITÓ4yô@ÓøPAS$READV_INITÍ<uøÿGPAS$READV_ENUMERATEDÑ<vb#àPAS$READV_ENUMERATEDÓ<u@ÓPAS$READV_ENUMERATEDÍ4iÿG0PAS$READV_FINIÑ4j b#àPAS$READV_FINIÓ4i,@Ó0PAS$READV_FINIÍ4s0ÿGH PAS$STATUSVÑ4t8b#à PAS$STATUSVÓ4sD@ÓH PAS$STATUSVÍ4 XÿG|OTS$MOVEÓ4 x@Ó|OTS$MOVEÍ4I¨ÿG¼ OTS$INDEXÓ4I¸@Ó¼ OTS$INDEXÍ4gÔÿGì OTS$BIT_FILLÑ4hØb#à OTS$BIT_FILLÓ4gè@Óì OTS$BIT_FILLÍ4wìÿG OTS$BIT_ORÑ4xðb#à OTS$BIT_ORÓ4w@Ó OTS$BIT_ORÍ4MÿG< OTS$BIT_MOVEÑ4N b#à OTS$BIT_MOVEÓ4M8@Ó< OTS$BIT_MOVEÍ4 ¤ÿGÔOTS$MOVEÓ4 Ð@ÓÔOTS$MOVEÍ4ØÿGøOTS$STRCMP_EQLPÜ ÜÓ4ô@ÓøOTS$STRCMP_EQLPÍ4{ÿGH CLI$GET_VALUEÑ4|b#à CLI$GET_VALUEÓ4{D@ÓH CLI$GET_VALUEÍ4ktÿG¨STR$TRIMÑ4lb#àSTR$TRIMÓ4k¤@Ó¨STR$TRIMÍ4°ÿGÄ LIB$SIGNALÑ4¸b#à LIB$SIGNALÓ4À@ÓÄ LIB$SIGNALÍ4MØÿGü OTS$BIT_MOVEÑ4Nàb#à OTS$BIT_MOVEÓ4Mø@Óü OTS$BIT_MOVEÍ<QüÿG PAS$FIND_NONMEMBERÑ<Rb#àPAS$FIND_NONMEMBERÓ<Q@Ó PAS$FIND_NONMEMBERÍ<(ÿGDPAS$WRITE_STRINGÑ<0b#àPAS$WRITE_STRINGÓ<@@ÓDPAS$WRITE_STRINGÍ4DÿG\ PAS$WRITELN2Ñ4Hb#à PAS$WRITELN2Ó4X@Ó\ PAS$WRITELN2Í4 Ø ÿGø OTS$MOVEMÓ4 ô @Óø OTS$MOVEMÍ4ø ÿG!OTS$FILLÓ4 !@Ó!OTS$FILLÍ4G!ÿGP! SYS$GETUAIÑ4H(!b#Ð SYS$GETUAIÓ4GL!@ÓP! SYS$GETUAIÍ4T!ÿGˆ! LIB$SIGNALÑ4l!b#Ð LIB$SIGNALÓ4„!@Óˆ! LIB$SIGNALÍ4 ,"ÿG@" OTS$MOVEMÓ4 <"@Ó@" OTS$MOVEMÍ4@"ÿGL"OTS$FILLÓ4H"@ÓL"OTS$FILLÍ4 X"ÿGp" OTS$MOVEMÓ4 l"@Óp" OTS$MOVEMÍ4p"ÿG|"OTS$FILLÓ4x"@Ó|"OTS$FILLÍ, T#ÿG¬#SYS$FAOÑ, \#b#°SYS$FAOÓ, ¨#@Ó¬#SYS$FAOÍ4´#ÿGÈ# LIB$SIGNALÑ4¸#b#° LIB$SIGNALÓ4Ä#@ÓÈ# LIB$SIGRNALÍ, È#ÿG $SYS$FAOÑ, ì#b#°SYS$FAOÓ, $@Ó $SYS$FAOÍ4$ÿG($ LIB$SIGNALÑ4$b#° LIB$SIGNALÓ4$$@Ó($ LIB$SIGNALÍ48$ÿGL$OTS$STRCMP_EQLPÓ4H$@ÓL$OTS$STRCMP_EQLPÍ4 h$ÿG $ OTS$MOVEMÓ4 œ$@Ó $ OTS$MOVEMÍ4  $ÿG°$ OTS$MOVEMÓ4 ¬$@Ó°$ OTS$MOVEMÍ4 °$ÿGÄ$OTS$MOVEÓ4 À$@ÓÄ$OTS$MOVEÍ4 Ü$ÿG%OTS$MOVEÓ4 ü$@Ó%OTS$MOVEÍ4°%ÿGä% PAS$OPEN2Ñ4Ð%b#ˆ PAS$OPEN2Ó4à%@Óä% PAS$OPEN2Í4ä%ÿGø% PAS$EXTENDÑ4è%b#ˆ PAS$EXTENDÓ4ô%@Óø% PAS$EXTENDÍ4ø%ÿG,& SYS$ASCTIMÑ4&b#ˆ SYS$ASCTIMÓ4(&@Ó,& SYS$ASCTIMÍ44&ÿGH& LIB$SIGNALÑ48&b#ˆ LIB$SIGNALÓ4D&@ÓH& LIB$SIGNALÍ4 h&ÿG€&OTS$MOVEÓ4 |&@Ó€&OTS$MOVEÍ4 €&ÿG&OTS$MOVEÓ4 Œ&@Ó&OTS$MOVEÜ ÜÍ4 &ÿG¤&OTS$MOVEÓ4  &@Ó¤&OTS$MOVEÍ4 °&ÿGè& OTS$MOVEMÓ4 ä&@Óè& OTS$MOVEMÍ4 è&ÿGø& OTS$MOVEMÓ4 ô&@Óø& OTS$MOVEMÍ4 ø&ÿG 'OTS$MOVEÓ4 '@Ó 'OTS$MOVEÍ4('ÿG@'OTS$STRCMP_EQLPÓ4<'@Ó@'OTS$STRCMP_EQLPÍ4 L'ÿGp' OTS$MOVEMÓ4 l'@Óp' OTS$MOVEMÍ4 p'ÿG„' OTS$MOVEMÓ4 €'@Ó„' OTS$MOVEMÍ4 „'ÿG˜'OTS$MOVEÓ4 ”'@Ó˜'OTS$MOVEÍ4 Ø'ÿGü' OTS$MOVEMÓ4 ø'@Óü' OTS$MOVEMÍ4 ü'ÿG ( OTS$MOVEMÓ4 (@Ó ( OTS$MOVEMÍ4 (ÿG$(OTS$MOVEÓ4 (@Ó$(OTS$MOVEÍ4 X(ÿG`(OTS$MOVEÓ4 \(@Ó`(OTS$MOVEÍ4 l(ÿG¤( OTS$MOVEMÓ4  (@Ó¤( OTS$MOVEMÍ4 ¤(ÿG´( OTS$MOVEMÓ4 °(@Ó´( OTS$MOVEMÍ4 ´(ÿGÈ(OTS$MOVEÓ4 Ä(@ÓÈ(OTS$MOVEÍ4 Ð(ÿG) OTS$MOVEMÓ4 )@Ó) OTS$MOVEMÍ4 )ÿG) OTS$MOVEMÓ4 )@Ó) OTS$MOVEMÍ4 )ÿG,)OTS$MOVEÓ4 ()@Ó,)OTS$MOVEÍ4 h)ÿGŒ) OTS$MOVEMÓ4 ˆ)@ÓŒ) OTS$MOVEMÍ4 )ÿG¤) OTS$MOVEMÓ4  )@Ó¤) OTS$MOVEMÍ4 ¤)ÿG¸)OTS$MOVEÓ4 ´)@Ó¸)OTS$MOVEÍ4 À)ÿGø) OTS$MOVEMÓ4 ô)@Óø) OTS$MOVEMÍ4 ø)ÿG* OTS$MOVEMÓ4 *@Ó* OTS$MOVEMÍ4 *ÿG*OTS$MOVEÓ4 *@Ó*OTS$MOVEÍ4 P*ÿG\*OTS$MOVEÓ4 X*@Ó\*OTS$MOVEÍ4 d*ÿG* OTS$MOVEMÓ4 Œ*@Ó* OTS$MOVEMÍ4 *ÿG¤* OTS$MOVEMÓ4  *@Ó¤* OTS$MOVEMÍ4 ¤*ÿG¸*OTS$MOVEÓ4 ´*@Ó¸*OTS$MOVEÍ4 Ì*ÿGô*OTS$M[OVEÓ4 ð*@Óô*OTS$MOVEÍ4ø*ÿG+OTS$STRCMP_EQLPÓ4+@Ó+OTS$STRCMP_EQLPÍ4 +ÿGD+ OTS$MOVEMÓ4 @+@ÓD+ OTS$MOVEMÍ4 D+ÿGT+ OTS$MOVEMÓ4 P+@ÓT+ OTS$MOVEMÍ4 T+ÿGl+OTS$MOVEÓ4 h+@Ól+OTS$MOVEÍ4 p+ÿG¬+ OTS$MOVEMÓ4 ¨+@Ó¬+ OTS$MOVEMÍ4 ¬+ÿG¼+ OTS$MOVEMÓ4 ¸+@Ó¼+ OTS$MOVEMÍ4 ¼+ÿGÐ+OTS$MOVEÓ4 Ì+@ÓÐ+OTS$MOVEÍ4 ä+ÿG ,OTS$MOVEÓ4 ,@Ó ,OTS$MOVEÍ4,ÿG0,OTS$STRCMP_EQLPÓ4,,@Ó0,OTS$STRCMP_EQLPÍ4 <,ÿG`, OTS$MOVEMÓ4 \,@Ó`, OTS$MOVEMô ôÍ4 `,ÿGt, OTS$MOVEMÓ4 p,@Ót, OTS$MOVEMÍ4 t,ÿGˆ,OTS$MOVEÓ4 „,@Óˆ,OTS$MOVEÍ4 ,ÿGÈ, OTS$MOVEMÓ4 Ä,@ÓÈ, OTS$MOVEMÍ4 È,ÿGØ, OTS$MOVEMÓ4 Ô,@ÓØ, OTS$MOVEMÍ4 Ø,ÿGì,OTS$MOVEÓ4 è,@Óì,OTS$MOVEÍ4 -ÿG(-OTS$MOVEÓ4 $-@Ó(-OTS$MOVEÍ40-ÿGL-OTS$STRCMP_EQLPÓ4H-@ÓL-OTS$STRCMP_EQLPÍ4 X-ÿG|- OTS$MOVEMÓ4 x-@Ó|- OTS$MOVEMÍ4 |-ÿGŒ- OTS$MOVEMÓ4 ˆ-@ÓŒ- OTS$MOVEMÍ4 Œ-ÿG¤-OTS$MOVEÓ4  -@Ó¤-OTS$MOVEÍ4 ¨-ÿGä- OTS$MOVEMÓ4 à-@Óä- OTS$MOVEMÍ4 ä-ÿGô- OTS$MOVEMÓ4 ð-@Óô- OTS$MOVEMÍ4 ô-ÿG.OTS$MOVEÓ4 .@Ó.OTS$MOVEÍ4 .ÿGD.OTS$MOVEÓ4 @.@ÓD.OTS$MOVEÍ4P.ÿGh.OTS$STRCMP_EQLPÓ4d.@Óh.OTS$STRCMP_EQLPÍ4 t.ÿG˜. OTS$MOVEMÓ4 ”.@Ó˜. OTS$MOVEMÍ4 ˜.ÿG¬. OTS$MOVEMÓ4 ¨.@Ó¬. OTS$MOVEMÍ4 ¬.ÿGÀ.OTS$MOVEÓ4 ¼.@ÓÀ.OTS$MOVEÍ4 È.ÿG/ OTS$MOVEMÓ4 ü.@Ó/ OTS$MOVEMÍ4 /ÿG/ OTS$MOVEMÓ4 /@Ó/ OTS$MOVEMÍ4 /ÿG$/OTS$MOVEÓ4 /@Ó$/OTS$MOVEÍ4 PAS$OPEN2Ñ4>b# PAS$OPEN2Ó4,>@Ó0> PAS$OPEN2Í4Y0>ÿGD> PAS$STATUSÑ4Z8>b# PAS$STATUSÓ4Y@>@ÓD> PAS$STATUSÍ4_L>ÿGl> PAS$RESET2Ñ4`P>b# PAS$RESET2Ó4_h>@Ól> PAS$RESET2Í4]€>ÿG˜>PAS$LOOK_AHEADÑ4^ˆ>b#PAS$LOOK_AHEADÓ4]”>@Ó˜>PAS$LOOK_AHEADÍ<[¨>ÿGÄ>PAS$READ_VARYINGÑ<\°>b#PAS$READ_VARYINGÓ<[À>@ÓÄ>PAS$READ_VARYINGÍ4WÄ>ÿGØ> PAS$READLN2Ñ4XÈ>b# PAS$READLN2Ì ÌÓ4WÔ>@ÓØ> PAS$READLN2Í4S8?ÿGt? STR$UPCASEÑ4TP?b# STR$UPCASEÓ4Sp?@Ót? STR$UPCASEÍ4|?ÿG? LIB$SIGNALÑ4€?b# LIB$SIGNALÓ4Œ?@Ó? LIB$SIGNALÍ4I°?ÿGä? OTS$INDEXÓ4Ià?@Óä? OTS$INDEXÍ4 ø?ÿG @OTS$MOVEÓ v4 @@Ó @OTS$MOVEÍ4 „@ÿG´@OTS$MOVEÓ4 °@@Ó´@OTS$MOVEÍ4I¸@ÿGÐ@ OTS$INDEXÓ4IÌ@@ÓÐ@ OTS$INDEXÍ4 ì@ÿGAOTS$MOVEÓ4 A@ÓAOTS$MOVEÍ4 LAÿGpAOTS$MOVEÓ4 lA@ÓpAOTS$MOVEÍ4xAÿGAOTS$STRCMP_EQLPÓ4ŒA@ÓAOTS$STRCMP_EQLPÍ4˜AÿG´AOTS$STRCMP_EQLPÓ4°A@Ó´AOTS$STRCMP_EQLPÍ4 ÈAÿGìAOTS$MOVEÓ4 èA@ÓìAOTS$MOVEÍ4 BÿG`BOTS$MOVEÓ4 \B@Ó`BOTS$MOVEÍ4 dBÿG¸BOTS$MOVEÓ4 ´B@Ó¸BOTS$MOVEÍ4 àBÿG COTS$MOVEÓ4 C@Ó COTS$MOVEÍ4 $CÿGxCOTS$MOVEÓ4 tC@ÓxCOTS$MOVEÍ4DÿGD PAS$CLOSE2Ñ4Db# PAS$CLOSE2Ó4D@ÓD PAS$CLOSE2Í<4DÿGLDPAS$WRITE_STRINGÑ<¨Wb# SYS$QIOÓ,=¸W@Ó¼WSYS$QIOÍ4ÄWÿGØW LIB$SIGNALÑ4ÈWb# LIB$SIGNALÓ4ÔW@ÓØW LIB$SIGNALÍ,=ìWÿG XSYS$QIOÑ,>Xb# SYS$QIOÓ,=X@Ó XSYS$QIOÍ4$XÿGØYb#` SYS$QIOÓ,=ìY@ÓðYSYS$QIOÍ4ôYÿG Z LIB$SIGNALÑ4üYb#` LIB$SIGNALÓ4Z@Ó Z LIB$SIGNALÍ4ƒ\ZÿGhZSYS$WAKEÑ4„`Zb#Ð SYS$WAKEÓ4ƒdZ@ÓhZSYS$WAKEÍ4lZÿG„Z LIB$SIGNALÑ4tZb#Ð LIB$SIGNALÓ4€Z@Ó„Z LIB$SIGNALÍ43ÜZÿGðZOTS$ZEROÓ43ìZ@ÓðZOTS$ZEROÍ4 ðZÿG[OTS$MOVEÓ4 [@Ó[OTS$MOVEÍ4 ,[ÿGˆ[OTS$MOVEÓ4 „[@Óˆ[OTS$MOVEÍ4 ¸[ÿGè[OTS$MOVEÓ4 ä[@Óè[OTS$MOVEÍ4 \ÿG<\OTS$MOVEÓ4 8\@Ó<\OTS$MOVEÍ4 d\ÿGŒ\OTS$MOVEÓ4 ˆ\@ÓŒ\OTS$MOVEÍ4?¼\ÿG]SYS$QIOWÑ4@è\b#0SYS$QIOWÓ4?ü\@Ó]SYS$QIOWÍ4 ]ÿG4] LIB$SIGNALÑ4(]b#0 LIB$SIGNALÓ40]@Ó4] LIB$SIGNALÍ4;@]ÿGl] SYS$DCLEXHÑ4<L]b#0 SYS$DCLEXHÓ4;h]@Ól] SYS$DCLEXHÍ4t]ÿGˆ] LIB$SIGNALÑ4x]b#0 LIB$SIGNALð ðÓ4„]@Óˆ] LIB$SIGNALÍ4?¬]ÿG^SYS$QIOWÑ4@´]b#0SYS$QIOWÓ4?^@Ó^SYS$QIOWÍ4(^ÿG<^ LIB$SIGNALÑ40^b#0 LIB$SIGNALÓ48^@Ó<^ LIB$SIGNALÍ47l^ÿGÄ^ PTD$CREATEÑ48˜^b#0 PTD$CREATEÓ47À^@ÓÄ^ PTD$CREATEÍ4Ì^ÿGä^ LIB$SIGNALÑ4Ð^b#0 LIB$SIGNALÓ4à^@Óä^ LIB$SIGNALÍ4 ð^ÿG_OTS$MOVEÓ4 _@Ó_OTS$MOVEÍ4 <_ÿGh_OTS$MOVEÓ4 d_@Óh_OTS$MOVEÍ4E”_ÿGÈ_ SYS$CREMBXÑ4Fœ_b#0 SYS$CREMBXÓ4EÄ_@ÓÈ_ SYS$CREMBXÍ4Ì_ÿGè_ LIB$SIGNALÑ4Ô_b#0 LIB$SIGNALÓ4ä_@Óè_ LIB$SIGNALÍ41ô_ÿG@` SYS$GETDVIWÑ42ü_b#0 SYS$GETDVIWÓ41<`@Ó@` SYS$GETDVIWÍ4``ÿGt` LIB$SIGNALÑ4h`b#0 LIB$SIGNALÓ4p`@Ót` LIB$SIGNALÍ,=ˆ`ÿGÄ`SYS$QIOÑ,>¸`b#0SYS$QIOÓ,=À`@ÓÄ`SYS$QIOÍ4Ì`ÿGä` LIB$SIGNALÑ4Ð`b#0 LIB$SIGNALÓ4à`@Óä` LIB$SIGNALÍ<aÿG,aPAS$WRITE_STRINGÑ<ab#0PAS$WRITE_STRINGÓ<(a@Ó,aPAS$WRITE_STRINGÍ<0aÿGLaPAS$WRITE_STRINGÑ<8ab#0PAS$WRITE_STRINGÓ<Ha@ÓLaPAS$WRITE_STRINGÍ4LaÿGhaPAS$WRITE_CHARÑ4Pab#0PAS$WRITE_CHARÓ4da@ÓhaPAS$WRITE_CHARÍ4haÿG|a PAS$WRITELN2Ñ4pab#0 PAS$WRITELN2Ó4xa@Ó|a PAS$WRITELN2Í4AœaÿGb SYS$CREPRCÑ4Bbb#0 SYS$CREPRCÓ4Ab@Ób SYS$CREPRCÍ4$bÿGÈbb#0SYS$QIOÓ,=Ðb@ÓÔbSYS$QIOÍ4ÜbÿGôb LIB$SIGNALÑ4àbb#0 LIB$SIGNALÓ4ðb@Óôb LIB$SIGNALÍ49øbÿG$cPTD$READÑ4:cb#0PTD$READÓ49 c@Ó$cPTD$READÍ,=pcb#0SYS$QIOÓ,=xc@Ó|cSYS$QIOÍ4„cÿGœc LIB$SIGNALÑ4ˆcb#0 LIB$SIGNALÓ4˜c@Óœc LIB$SIGNALÍ,=¬cÿGðcSYS$QIOÑ,>Øcb#0SYS$QIOÓ,=ìc@ÓðcSYS$QIOÍ4ücÿGd LIB$SIGNALÑ4db#0 LIB$SIGNALÓ4 d@Ód LIB$SIGNALÍ4CdÿG$d SYS$HIBERÑ4Ddb#0 SYS$HIBERÓ4C d@Ó$d SYS$HIBERÍ<(dÿGDdPAS$WRITE_STRINGÑ<0db#0PAS$WRITE_STRING Ó<@d@ÓDdPAS$WRITE_STRINGÍ<HdÿGddPAS$WRITE_STRINGÑ<Pdb#0PAS$WRITE_STRINGÓ<`d@ÓddPAS$WRITE_STRINGÍ4ddÿG€dPAS$WRITE_CHARÑ4hdb#0PAS$WRITE_CHARÓ4|d@Ó€dPAS$WRITE_CHARÍ4€dÿGœdPAS$WRITE_CHARÑ4ˆdb#0PAS$WRITE_CHARÓ4˜d@ÓœdPAS$WRITE_CHARÍ4œdÿG°d PAS$WRITELN2Ñ4 db#0 PAS$WRITELN2Ó4¬d@Ó°d PAS$WRITELN2Í43eÿG8eOTS$ZEROÓ434e@Ó8eOTS$ZEROÍ4 8eÿGTeOTS$MOVEÓ4 Pe@ÓTeOTS$MOVEÍ4 eÿG¤e OTS$MOVEMÓ4  e@Ó¤e OTS$MOVEMÍ43¤eÿG´eOTS$ZEROÓ43°e@Ó´eOTS$ZEROÍ4fÿGHfOTS$STRCMP_EQLPÓ4Df@ÓHfOTS$STRCMP_EQLPÍ41¨fÿGÄf SYS$GETDVIWÑ42°fb# SYS$GETDVIWÓ41Àf@ÓÄf SYS$GETDVIWÍ4ðfÿGg LIB$SIGNALÑ4øfb# LIB$SIGNALÓ4g@Óg LIB$SIGNAL° °–= –=  –= 0–= ” ”–=–= AUDIT–= –= ACCESS0–=ÜÔ@ '.7>GNTY`gnu|ƒ‰”œ£ª±¸¿ÆÍÓÚáèîö%,3:AHOV]dkry€‡Ž•œ£ª±¸¿ÆÍ PRIVILEGECMKRNLCMEXECSYSNAMGRPNAMALLSPOOLDETACHDIAGNOSELOG_IOGROUPACNTPRMCEBPRMMBXPSWAPMALTPRISETPRVTMPMBXWORLDMOUNTOPEREXQUOTANETMBXVOLPROPHY_IOBUGCHKPRMGBLSYSGBLPFNMAPSHMEMSYSPRVBYPASSSYSLCKSHAREUPGRADE DOWNGRADEGRPPRVREADALLIMPORTAUDITSECURITYPBIT39PBIT40PBIT41PBIT42PBIT43PBIT44PBIT45PBIT46PBIT47PBIT48PBIT49PBIT50PBIT51PBIT52PBIT53PBIT54PBIT55PBIT56PBIT57PBIT58PBIT59PBIT60PBIT61PBIT62PBIT63& & –=0'%JUMP-S-SETUSER, Changed username from 0–=(%JUMP-I-DEFAULT, Default is P–=  PRIV violation: h–=(%JUMP-F-UICVALUES, GetUAI =ˆ–=8/%JUMP-F-INSANEUIC, Sanity Check FAILED for UIC!¸–= ,ACCESS=READ+WRITE)Ж= LNM$PROCESS_DIRECTORYè–=(%JUMP-F-USERVALUES, GetJPI = –=@5%JUMP-F-INSANEUSER, Sanity Check FAILED for Username!@–=8)%JUMP-S-RETURN, Control returned to user p–= SYS$SYSTEM:LOGINOUT.EXEˆ–=8.%JUMP-S-TRANSFER, Control transferred to user ¸–=@6%JUMP-F-NOPSEUDO, No pseudo-terminal driver on system.ð–=PG%JUMP-F-BADDATA, Format of Access List data record seems to be invalid.8–=hYJUMP-F-BADACCFIL, Failed to open access list file; error ˜–=@4%JUMP-F-RESTRICT, Username is Restricted or Captive.Ж=@4%JUMP-W-RESTRICT, Username is Restricted or Captive.–=0'%JUMP-W-DISABLED, Username is disabled.0–=0&%JUMP-I-SAMEUIC, Same UIC as current (X–=0'%JUMP-F-DISABLED, Username is disabled.€–= ) - no action taken.˜–=8,%JUMP-I-SAMEUSER, Same username as current (È–=8.Only Systems Programmers may disable auditing.ø–= %JUMP-F-MUSTAUDIT, –=èÛ%JUMP-F-INVUSER, Invalid username - user does not exist.%JUMP-W-INVUSER, Invalid username - user does not exist.%JUMP-F-NOINSUB, Cannot JUMP from a sub-process.%JUMP-F-NOSUB, Cannot JUMP while process has sub-processes.ð–=@6%JUMP-F-BADUSER, Username contains invalid characters.(–=paÿþÿÿ‡%JUMP-F-BADPRIVSET, Minor privilege set specification is invalid.–= JUMP_DOUBLE_CHECK¨–=(SYS_MANAGER:JUMP_ACCESS.DATÈ–="SYS_MANAGER:JUMP_AUDIT.DATô ô–= jumped to –ÉPAS$WRITE_CHAR;;É PAS$WRITE_STRING=™0pQ;=@< 7 PAS$HANDLER2p–7 PAS$FV_OUTPUT;É PAS$WRITELN2= %JUMP-S-JUMPED, to ¨–= (°–=™0#;=P< 7 PAS$HANDLER2à–É LIB$SIGNALÉ SYS$FAO8OTS$MOVE8 OTS$MOVEM=!%U–= =  –8OTS$STRCMP_EQLP=!%I0–= to @–É PAS$CLOSE_LOCALÉ PAS$CLOSE2É PAS$OPEN2É SYS$ASCTIM=ˆ–=™0ð8%;= < 7 PAS$HANDLER2¸–= À–= Ð–É PAS$EXTEND= 7PAS$CLOSE_LOCAL= from ø–= *EXACT*=™0 F;=P 7 PAS$HANDLER20–8OTS$FILL@–ÉPAS$HEXà ;`–É SYS$CMEXEC7 CTL$GL_PCB7 PCB$L_UIC= Kernel =–É!SYS$EXITÉ# SYS$CMKRNLÐ ;= LNM$GROUPЖÉ%SYS$CHANGE_ACL= LNM$GROUP_ð–É' SYS$SETDDIRÉ)PAS$OCT=™0È J;=| 7 PAS$HANDLER2@–É+ SYS$CRELNM= SYS$DISKLNM$PROCESSh–=LNM$JOBp–É- SYS$PARSE_ACL= (IDENTIFIER=–=™0€H;=0 7 PAS$HANDLER2À–8OTS$STRCMP_EQLS7JIB$T_USERNAMEÀ ;7 PCB$L_JIB° ;= JIB = ð–= Control = – ;=™0 àd;=P 7 PAS$HANDLER2@–É1 SYS$GETDVIW8OTS$ZERO=™0ðS;=0 7 PAS$HANDLER2–É5 SYS$ASSIGN=™0ð;=0 7 PAS$HANDLER2ЖР;à–É7 PTD$CREATEÉ9PTD$READ= ÿÿÿÿýýÿÿFTA0:–É; SYS$DCLEXH=PYA0:(– ;=™0h Z;=°ü 7 PAS$HANDLER2`–É=SYS$QIOÉ?SYS$QIOW` ; ;=TT: –ÉA SYS$CREPRCÉC SYS$HIBERÉE SYS$CREMBX=™00;=@< 7 PAS$HANDLER2–ÉG SYS$GETUAI=™0ø`0;=`ü 7 PAS$HANDLER2@–=,H–8 OTS$INDEXÉKSTR$MATCH_WILD=™0H¨;= ü 7 PAS$HANDLER2–ÉM OTS$BIT_MOVEÉ OPAS$FIND_MEMBERÉ QPAS$FIND_NONMEMBERÉS STR$UPCASEÉ UPAS$WRITE_UNSIGNEDÉW PAS$READLN2ÉY PAS$STATUSÉ [PAS$READ_VARYING=™0h=;=@| 7 PAS$HANDLER2@–É]PAS$LOOK_AHEADÉ_ PAS$RESET27 PAS$K_SUCCESS7PAS$K_FILNOTFOU=#x–l l =:€–=™0@¸5;=ü 7 PAS$HANDLER2°–É aOTS$BIT_IS_MEMBER= JUMP_ACCESSЖÉc SYS$ASCTOID=™0€à;=àü 7 PAS$HANDLER2–Ée SYS$TRNLNM=80JUMP_MINOR_PRIVSJUMP_AUDIT_TRAILJUMP_ACCESS_LISTÉg OTS$BIT_FILL=USERNAMEp–ÉiPAS$READV_FINI7JUMP_CLD=EXACT–=JUMP  –ÉkSTR$TRIM= OVERRIDE_UAFÀ–=SETUSERÈ–7 LIB$GET_INPUT= LNM$SYSTEMà–=™0xp;=àü 7 PAS$HANDLER2 –Ém CLI$PRESENT=TRUE( –=ALL0 –=LOG8 –=AUDIT@ –=JUMP> P –É oLIB$GET_FOREIGNÉq CLI$DCL_PARSEÉs PAS$STATUSVÉ uPAS$READV_ENUMERATEDÉw OTS$BIT_ORÉyPAS$READV_INITÉ{ CLI$GET_VALUE= NETMBX TMPMBXÐ –= JUMP_SELFà –=™0ð;=P| 7 PAS$HANDLER2 –É} SYS$GETJPIWÉ SYS$GETSYIW=™0;=0 7 PAS$HANDLER2` –=™0`X;=0 7 PAS$HANDLER2 –=™0ÈV;=0 7 PAS$HANDLER2À –É PTD$WRITE=™00Z;=  7 PAS$HANDLER2àTÖ¨~ JUMP025.BCK$[SYSEXE.SOURCE.JUMP]JUMP.OBJ_ALPHA;4øØ"º –ɃSYS$WAKE=™0U;=@ 7 PAS$HANDLER2@ –É… SYS$DASSGNɇ PTD$CANCELɉ SYS$SETASTÉ‹ SYS$CANCELÉ PTD$DELETE= 0ÐE;=7CTL$T_USERNAME=0E;=0xE;=0`E;=0HE;> >˜=.&%¼ JUMPDEC Pascal V5.4-41µ µ= ¾€40 4= JUMP¹4=VNM¹J Üøô Zøø \üôü `üøü büüü eüðôð($ $= ¢$4| |= ¾ð4 4= EXIT¹ð4=¹ .Äì 3$ $= ¢`4: := °4= ¿ð" "= ¾€à4à4=GET_LOGICAL_NAME¹à4=·¯¹ 8œ 8D 8Ø EÜä Eü Eü Eü Eü Iü K Jü Kü Müä O,¹ð OÔ Tø¨üì@ X H ô $ $= ¢P4: := 04= ¿Èª ª= ¾€¨4`4= STR_COMPRESS¹¨4=C;‚¹ \¸ \ô \ø k \ü k j \ üøø k iüüü¨ü uüÜ wäøÀô¤À¤üø¹”¨ü¨ø ’ü ’ø ’ü ’ü ’Œ ’˜ ’ÈP ‚üÜØ ™è¬ì°ä  ü  ´  ü< oôôô5¹ôôôÜôôø ’ø ’ü ’Øôôèô,$ $= ¢¸4: := p 4= ¿H G G= ¾€ð4à 4=GET_CALLER_INFO¹ð4=ÝÕ‚¹ §ü §ü §Ø §üèˆ ­ ü ­ô ­ü ­ü ±ü ³ ²üü ²üØüøôèô ü‚¹ Æ Âü Áøø Çü Êü Êü Ëü Ìüøø Ñü Ñüøø Öü Ùü Ùü Ú…¹ü Ûüøø àüü å ãü ãü äüøü èøø êü êü íü íü îüüü ó òH¹ø óø ôü öüàüøôèÀ üð°¤, ôA$ $= ¢ô4: :=  4= ¿€‚ ‚= "¾€p4à4=#GET_AND_PARSE_COMMAND¹p4= ¹  ü  ü  ü  ü  ü  ü Ð ü ü ü üä üð ¨Àì !€¹ü !ô !üü "ü "ü "øôø &ü %øôàè )üôü ,ü ,øðü /ü /ø¹ð 2ü 2ü$ 2ü 2ü´è 9°ˆ¸¸üìà0 Hü HüäÀ¸üìà4 Sü Süèà Zì Zô„¹œô ]ø¬ aü aˆüð„ð hì¼ jø kü køðüÈüìØ wÌ0 wüüüH ?ôôô¨ $ $= ¢t4: := p4= ¿À À À= ¾€04Ð4=GET_TARGET_INFO¹04=VN…¹ ü ü ü à ü  „ì „"ü ˆôü ‰ü Šüü øø ü ’øü “€¹ü ”ü —ü —ü ˜ü ™ ü œô ü žüøø £ü ¥üŒ ªøüø ®ôìÌÐF¹ü µü µü µü µø µü µÜÐ, § èððø µô $ $= ¢44: := ˆ"4= ¿à» »= ¾€#4°4= FORMAT_USER¹#4=UML¹ »ü »Ð »ü »ü »ü »üÀüì¸üìØð¤( Ë B$ $= ¢#4: := %4= ¿(O O= ¾€8%4ˆ4= AUDIT_JUMP¹8%4=ê‹ Ïü Ï ü Ï ü Ï ü Ïäô Õ Ôüü Õø Ôüü Ôü Ïüü ÖüøìÈüìä¨üôØ`¹Œô ëüø íü„è öäì@ åôôôôôôôô$ $= ¢D%4: := È/4= ¿( J J= ¾€`044= IN_LIST¹`04=èà„¹ û ¨ ûÀ ûô û ø û ü û ô ûà ûô û øüü  Ðü° ü ü Ü Z¹À” ü¨Øè Äüü¤øàü !ø !ôôüH ð, ü Ôäôè$ $= ¢¸04: := À44= ¿X = ¾€¸54€4=VALIDATE_ACCESS¹¸54=•€¹ 'ü 'Qü 'Ð@ø 0üü@èø 2Fü wüØ |üð ~üä €ü €üøü …øØäü…¹ ‹ü ‹ü ‹üÜè  ’üÔìôôü žüÐÈèÄ ¦ü¤ðìø ´ü ´ü¼ìð »ü »¹Üìü Âø Âü ÂüÌü Æü Æ Åü ÆøüŒô ü Î ü Î ø Îøôüà0 ÏüÄÈ ì ¹4 €N$ $= ¢Ä54· ·= ¾€h=44=CHECK_ACCESS_LIST¹h=4=KCƒ¹ 8ü 8 ü 8 ü 8Üð @ü Aü A @ø @ø @ðÌì Hü IôôÈШ¸üìà S€¹ø Sü Søð¬ Wü Wü Wü Wü¼ W¼üü¬œÌ ]üÌ Lü Lì Lüü Lìèü=¹ iø iüÀìL Sô Wü Wð WôN$ $= ¢t=4: := ¸D4= ¿à: := $=4= ¿°t t= ¾€HE4à 4= GETUIC¹HE4= ¹ çì$ $= ¢HE4: := \E4= ¿t t= ¾€`E4Ð 4= SETUIC¹`E4= ¹ ðì$ $= ¢`E4: := tE4= ¿~ ~= ¾€ÇxE4À 4=GET_JIB_USER_PTR¹xE4= ¹ ùì$ $= ¢xE4: := ŒE4= ¿} }= ¾€E4° 4= GETUSER¹E4=¹ ø èè$ $= ¢E4: := ÌE4= ¿@† †= ¾€ÐE4 4= SETUSER¹ÐE4=$¹  ôð øì$ $= ¢ÐE4: := F4= ¿HÚ Ú= ¾€F44= POTEROO¹F4=xpo¹  üü  ø  ä  üø ü ü øüø ü ü üäHèä$ !$ $= ¢ F4: := DH4= ¿hÒ Ò= ¾€€H44= WALLABY¹€H4=phg¹ * üü * ø * ä * üø 4ü 4ü 4øüø 7ü 7ü 7üüÄÈÄèè($ $= ¢ˆH4: := xJ4= ¿ £ £= ¾€ J44=KANGAROO¹ J4=@8„¹ GÐ Güü L ü Møü Nôø ð P ä Pì Pøøüääø aøøü eü€ küð p¹ø„ ü tøü vü uü züü u ü züˆ ƒüð Šü ŒÜüüô̬üäô ›0¹ðü œü œø¨üä, Zèô$ôè $ $= ¢ÜJ4: := ðP4= ¿Ð¼ ¼= ¾€pQ4@4= DISPLAY_JUMP¹pQ4=UML¹ ©ü ©ü ©à ©ü ®ü ®üðŒü µü„,$ $= ¢tQ4: := ÄS4= ¿€ = ¾€ðS4X4= GET_CHANNEL¹ðS4=)! ¹ º˜ ºè´üì Â$ $= ¢8T4: := ØT4= ¿× ×= ¾€U4 4= EXIT_HANDLER¹U4=phg¹ Éü Éü Éàø Îèü Òôü Ôüð ×üðäüäèè°üøèè$$ $= ¢U4: := ¤V4= ¿Àâ â= ¾€ÈV4 4= RCHAN_AST¹ÈV4=~vu¹ ó ü ó ü ó ü ó ü ó ü óð óøü ûü ûüìüì à°üì´ üð$$ $= ¢ÌV4: :=  QûEXACTQùSETUSERQýALLQñOVERRIDE_UAFLOGQûAUDITQöLNM$SYSTEMQæSYS_MANAGER:JUMP_AUDIT.DATQæJUMP_AUDIT_TRAILLNM$SYSTEMQåSYS_MANAGER:JUMP_ACCESS.DATQæJUMP_ACCESS_LISTLNM$SYSTEMQëTRUEJUMP_DOUBLE_CHECKQòTRUELNM$SYSTEMQóTRUEJUMP_SELFQòTRUELNM$SYSTEMQóNETMBX TMPMBXQ„JUMP_MINOR_PRIVS@ '.7>GNTY`gnu|ƒ‰”œ£ª±¸Ø¿ÆÍÓÚáèîöÿ€%,3:AHOV]dkry€‡Ž•œ£ª±¸¿ÆÍ PRIVILEGEC€MKRNLCMEXECSYSNAMGRPNAMALLSPOOLDETACHDIAGNOSELOG_IOGROUPACNTPRMCEBPRMMBXPSWAPMALTPRISETPRVTMPMBXWORLDMOUNTOPER€EXQUOTANETMBXVOLPROPHY_IOBUGCHKPRMGBLSYSGBLPFNMAPSHMEMSYSPRVBYPASSSYSLCKSHAREUPGRADE DOWNGRADEGRPPRVREADALLIMPO†RTAUDITSECURITYPBIT39PBIT40PBIT41PBIT42PBIT43PBIT44PBIT45PBIT46PBIT47PBIT48PBIT49PBIT50PBIT51PBIT52PBIT53ù€PBIT54PBIT55PBIT56PBIT57PBIT58PBIT59PBIT60PBIT61PBIT62PBIT63%JUMP-F-BADPRIVSET, Minor privilege set specification is iùnvalid.Q¢USERNAMEÿþÿÿ‡%JUMP-F-BADUSER, Username contains invalid characters.QË%JUMP-F-INSANEUSER, Sanity Check FAILED for Username!Qã%JUMP-F-USERVALUES, GetJPI = Qõ Control = Qù JIB = Qå%JUMP-S-JUMPED, jumped to Qþ (Q½%JUMP-I-DEFAULT, Default is %JUMP-S-SETUSER, Changed username from Qé to <~~\Ô\,­øÝûø SYS$SETASTÿéðþ<òý~û PTD$CANCELôÐP\è\ÝÝ\û LIB$SIGNALÿ<òý~û PTD$DELETEôÐP\è\ÝÝ\û LIB$SIGNALü<òý~û SYS$DASSGNÿ<ôý~û SYS$CANCELõÝÝÝÝÝ Ÿˆ öÝÝŸ­øÝ#<ôû~Ýû SYS$QIOWôÐP\è\ÝÝ\û LIB$SIGNALòè­øÝ<­ø~û LIB$SIGNALÿ<ôý~û SYS$DASSGNöüÂ^Ô­øž PAS$HANDLERèmм\Ð^PÔRÐ^VÝ\ЭðžÂú­ôŸ­ðŸÀé°­è°­êžïôÿÿ­ìŸ­èûSYS$FAOôÐPRèRÝÝRû LIB$SIGNALõÝ\Ð ­ðžúú­ôŸ­ðŸøé°­è°­êžïÒóÿÿ­ìŸ­èûSYS$FAOôÐPRèRÝÝRûü LIB$SIGNALÿ-ÀÂÿ øúý´Ôý(nÖü<øß\Á\WÑWÿÿÃWV^Ð^V(ïlóÿÿn(\ú÷c±W  žÔëP°W`(€f`üžÎHÿ^Ô­øž PAS$HANDLERÆmž­äPž €Ð€žï.óÿÿ€Ô`¼\Ð^PÔV,zÍHÿ(ï$óÿÿ­ÌÐ^WÝÝŸ¾ÿݼùÝŸ­äû PAS$OPEN2ûŸ­äû PAS$EXTENDèÝÝЭĞ­Ì­ÈŸ­ÄÝû SYS$ASCTIMôÐPVèVÝÝVû LIB$SIGNAL½‘­Ì 0­ÌÐPôP ÀPùÑPôž­ÌPÖP×PÐVÑVÿÿÃVW^Ð^X(`n( c<TãYÁVYZÑZÿÿÃZX^Ð^[(Vhn(YVíc°ZÍHÿ(ZkÍJÿè\1Ÿ,úûÏÈý-ÿ TVî<ÍHÿPÁP\Ñ\ÿÿüÃ\W^Ð^[(PÍJÿn(ïòÿÿc±\x °\ÍHÿ(\kÍJÿ<ÍHÿPÁP[Ñ[ÿÿÃ[W^Ð^\(PÍJÿn(ïäñÿÿc±[x °[ÍHÿ([lÍJÿ<ÍHÿP<Àá\ÁP\[Ñ[ÿÿÃ[W^Ð^Z(PÍJÿn(\Âþc<Ôã\Á[\YÑYÿÿÃYZ^Ð^X([jn(\Ö¿c±Yx °YÍHÿ(YhÍJÿ<ÍHÿPÁPXÑXÿÿÃXW^Ð^Y(PÍJÿn(ï@ñÿÿc<dã\ÁX\ZÑZÿÿÃZY^Ð^[(Xin(\fêc±Zx °ZÍHÿ(ZkÍJÿèL¾1<ÍHÿPÁP[Ñ[ÿÿÃ[W^Ð^Z(PÍJÿn(ïäðÿÿc±[x °[ÍHÿ([jÍJÿ-  Ô n<ÍHÿPÁPZÑZÿ: ÿÃZW^Ð^[(PÍJÿn( c< ã\ÁZ\YÑYÿÿÃY[^Ð^X(Zkn(\ ÷c±Yxüó °YÍHÿ(YhÍJÿ-XZÔ n<ÍHÿPÁPXÑXÿÿÃXW^Ð^Y(PÍJÿn( c<Xã\ÁX\[Ñ[ÿÿÃ[Y^Ð^Z(Xin(\Zêc±[x °[ÍHÿ([jÍJÿ-46Ô n<ÍHÿPÁPZÑZÿÿÃZW^Ð^[(PÍJÿn( c<4ã\ÁZ\YÑYÿÿÃY[^Ð^X(Zkn(\6êc±Yx °YÍHÿ(YhÍJÿ-|~Ô n<ÍHÿPÁPXÑXÿÿÃXW^Ð^W(PÍJÿn( c<|ãYÁXY\Ñ\ÿÿÃ\W^Ð^[(Xgn(Y~Þc±\x °\ÍHÿ(\kÍJÿŸÍJÿÝÍHÿŸ­äûPAS$WRITE_STRINGûŸ­äû PAS$WRITELN2ûŸ­äû PAS$CLOSE2ÿPAS$CLOSE_LOCAL_R3úÐìþPÐ,ø`ÐìýPÐ`0ñüžÎ8ÿ^Ô­øžü PAS$HANDLER¥mÐ^\ÔVÔ­ô,B­€( ïŠîÿÿÍPÿ(ï îÿÿÍpÿЭÔÐ$­ØÃ$\^Ð^­ØÐ\Ð\WЭØPÅ WQ, A ôó\èÐ^W\ž PCB$L_UICýPÁP CTL$GL_PCBìøÝŸÏiÿû SYS$CMEXECùè\1Ñ0(ò1Ÿï>îÿÿÝ/Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2÷ŸïLîÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ(÷Ý Ý Ÿ­èûPAS$HEXúŸ­èÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷Ÿï-îÿÿÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ0÷Ý Ý Ÿ­èûPAS$HEXúŸ­èÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸü PAS$FV_OUTPUTþû PAS$WRITELN2üÝ,ûSYS$EXITöÝŸÏ‚þû SYS$CMKRNLûÝÝ<ÄèPÐ\ô\ ÀP\ùÑ\ÿðžÆè\Ö\×\°P­ì°­îÐ\­ðŸ­ìû SYS$SETDDIRôÐPVèVÝÝVû LIB$SIGNALÿ° ñ½ØЭØP° ЭØPž¢± ЭØPÔ ЭØPÔ  Ý­ØßЭì(ïHíÿÿ­äž­ä­ðŸ­ìÐ ­Ü( ï7íÿÿ­Äž­Ä­àŸ­ÜÝû SYS$CRELNMôÐPVèVÝÝVû LIB$SIGNALõ<­ôÝï.ò­ðŸ­ðÝÝŸ­äûPAS$OCT€Ð\Ñ\ÿÿÃ\W^Ð^X( ïàìÿÿn(­äc±\ ,\h Ípÿ°½ØЭØP° ЭØPž­ô ЭØPÔ ЭØP°  ЭØP° ЭØPžÍpÿ ЭØPÔ ЭØPÔ Ý­ØßÐ÷ ­ä( ïüÓ{ìÿÿ­Äž­Ä­èŸ­äЭì(ïnìÿÿÍ8ÿžÍ8ÿ­ðŸ­ìÝû SYS$CRELNMôÐPVèVÝÝVû LIB$SIGNALøЭØPÔ  -ÿ TVà´½ØЭØP° ЭØPÔ ЭØPÔ 1<ßXÁ X\Ñ\ÿÿÃ\W^Ð^W( ïìÿÿn(XˆcÁ\XÑXÿÿÃXW^Ð^Y(\gn(ïâëÿÿc°X­€(Xi­‚ÝÝÝÐ ­ìžÍPÿ­ðŸ­ì<­€PÐYôY ÀPYùÑY@ðž­‚YÖY×Y°P­ä°­æÐY­èŸ­äû SYS$PARSE_ACLôÐPVèVÝÝVû LIB$SIGNALµ›ÍPÿ½ØЭØP° ЭØPžÍPÿ ЭØPÔ ÝÝÝÝÝÝ­Ø°­ì°­îžïNëÿÿ­ðŸ­ìßÝû SYS$CHANGE_ACLôÐPVèVÝÝVû LIB$SIGNALû<( CTL$T_USERNAMEÿÐäÿPß SYS$SETAST PTD$CANCEL LIB$SIGNAL PTD$DELETE SYS$DASSGN SYS$CANCELSYS$QIOW PAS$HANDLERSYS$FAO PAS$OPEN2 PAS$EXTEND SYS$ASCTIMPAS$WRITE_STRING PAS$WRITELN2 PAS$CLOSE2PAS$CLOSE_LOCAL_R3 PCB$L_UIC CTL$GL_PCB SYS$CMEXEC PAS$FV_OUTPUTPAS$HEXSYS$EXIT SYS$CMKRNL SYS$SETDDIR SYS$CRELNMPAS$OCT SYS$PARSE_ACLSYS$CHANGE_ACLCTL$T_USERNAME PTD$WRITESYS$QIOüþ( ø`<( CTL$T_USERNAMEÿÐäüP( `úÐèýPÐ`äôÐ^PÔ\éðøÝÝÝŸûÝÝ<òý~û PTD$WRITEôÐP\è\ÝÝ\û LIB$SIGNALõÝÝÝÝÝŸöÝŸ¯®ÝÝ1<ôû~Ýû SYS$QIOñÐP\é\1ÝÝ\û LIB$SIGNALóÝÝÝÝÝŸ÷ÝÝÝÝ0<òû~Ýû SYS$QIOôÐP\è\ÝÝ\û LIB$SIGNALõÝÝÝÝÝŸõÝŸÏ5ÿÝÝ1<ôû~Ýû SYS$QIOôÐP\è\ÝÝ\û LIB$SIGNALôÐ^PÔ\éðöÝÝÝÝ<þ~Ÿ÷ÝÝÝÝ0<ôû~Ýû SYS$QIOWôÐP\è\ÝÝ\û LIB$SIGNALùÝüŸüÝŸ¯üþ£<òû~ÝûPTD$READñÐP\é\1ÝÝ\û LIB$SIGNALô1ÝÝÝÝ<úþ~Ÿ÷ÝÝÝÝ0<ôû~Ýû SYS$QIOWôÐP\è\ÝÝ\û LIB$SIGNALñÝÝÝÝÝŸùÝŸÏ$ÿŸøýÝ1<òû~Ýû SYS$QIOôÐP\è\ÝÝ\û LIB$SIGNALðÐ^PÔ\ÝÝûSYS$WAKEôÐP\è\ÝÝ\û LIB$SIGNAL‡üÂ^}¼­ø<­øPÀPÂP^ЭüPÐ^Q°`a( aÐ^­ü°¼\Ð^VÔW,­ðЭèЭìÃV^Ð^­ìÐVÐVXЭìPÅ XQ, A ôóVèV° ½ìЭìX° ¨ЭìXž ù¨ЭìXž ¾¨ЭìXÔ¨ µ\ЭüX-h¨ nÝÝÝŸ­ðÝ­ìЭüP°`­ä°­æž ­èŸ­äÝÝû SYS$GETDVIWøÐPWüëÝÝÝŸ­ðÝ­ìÝ<\~Ýû SYS$GETDVIWåÐPWÑW ”VèWÝÝWû LIB$SIGNALòè­ðÝ<­ð~û LIB$SIGNAL€VPüÂ4^Ð^\ÔVÔ­ü, ­ì,­äЭÜЭàÃ\^Ð^­àÐ\Ð\WЭàPÅ WQ, A ôó\èÐ^WÞ­ÜÃW^°~(nï/çÿÿ®°n­Ì°% ­ÎÐ^­Ðž­Ì­ØÐ^Pïš­Ôú­ÔÏQþïPPPðÿèð“Þ­ÜÃW^°~(nïìæÿÿ®°n­Ì°% ­ÎÐ^­Ðž­Ì­ØÐ^Pš­Ôú­ÔÏþèPÃ6W^°6~(nïÁæÿÿ®°n­Ø°% ­ÚÐ^­Üž­Ø­ÐÐ^Pš­Ìú­ÌÏžôíÜÃW^°~(nïÁæÿÿ®°n­Ì°% ­ÎÐ^­Ðž­Ì­ØÐ^Pš­Ôú­ÔÏÝÝÝÝÝ Ÿˆ öÝÝŸ­äÝ'<ôû~Ýû SYS$QIOWôÐPVèVÝÝVû LIB$SIGNALÿüðè­äÝ<­ä~û LIB$SIGNALúžïuïÿÿ$þ(ÿž,ÿŸ þû SYS$DCLEXHôÐPVèVÝÝVû LIB$SIGNALþ( ˆ Õ­ìð!­ìð)­ìð­ôÝÝÝÝÝ Ÿ­ìÝÝŸ­äÝ#<ôû~Ýû SYS$QIOWôÐPVèVÝÝVû LIB$SIGNALòè­äÝ<­ä~û LIB$SIGNALïŸûÏŸûÏž, úÁÿ, 0 ÿéðþŸ, óÝÝÝÝ ÝÝŸòþû PTD$CREATEôÐPVèVÝÝVû LIB$SIGNALúžòÍ­øÃW^°~(nï6åÿÿ®°n­Ø°% ­ÚÐ^­Üž­Ø­ôÐ^Pš­ðú­ðÏ<ò½­øž­ø­ÜÃW^´~(nn®°n­Ì°% ­ÎÐ^­Ðž­Ì­ØÐ^Pš­Ôú­ÔÏÔûÝÝÝÝÝÝTŸöüÝûý¹Ì €þ¹ Éþó÷ùïýõïýòòòÔýóüóò»þçÆýõÆýõèï¾ý ½äöàýõö”úõèÀÑšöÃäöòüò€âûò^ûËÍ:íóêÞƒõ3ó¹ýõøøôùù¹ýõú²üø÷ùøøöùù·ýõùèýøùõ¨¬ýõúøöùÌýõÿ€¹þôñýüôñôüòøûûùßýõÔúóÕýõÓýõûûùÐýõÜúòÐýõËýõüûòýõü SYS$CREMBXôÐPVèVÝÝVû LIB$SIGNALΰ½àЭàP°  ЭàPž­ü ЭàPÔ ЭàPÔ  ÝÝÝŸ­äÝ­àÝ<öû~Ýû SYS$GETDVIWôÐPVèVÝÝVû LIB$SIGNALòè­äÝ<­ä~û LIB$SIGNALñÝÝÝÝÝTŸ4 õÝŸÏûÝÝ1<öû~Ýû SYS$QIOôÐPVèVÝÝVû LIB$SIGNALÿéKîŸûÏïŸïûãÿÿÝ.Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸÿÝÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGûÝÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_CHARÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2èÝÝ&Ý­üÝÝÝÝÝÝ° ÷­ä°­æž ú­èŸ­ä° ú­Ü°ïý­Þž â­àŸ­Ü°­ô°­öžïŒãÿÿ­øŸ­ôÝû SYS$CREPRCôÐPVèVÝÝVû LIB$SIGNALÿžþP°Tý`(€Vþ`Ð(,ïŸûÏŸûÏéðôÝÝÝÝÝŸõÝŸÏ¿÷ÝÝ1<ôû~Ýû SYS$QIOôÐPVèVÝÝVû LIB$SIGNALùÝüŸùÝŸÏ|ø<òû~ÝûPTD$READñÐPVéV1ÝÝVû LIB$SIGNALñ1ÝÝÝÝÝŸõÝŸÏJ÷ÝÝ1<ôû~Ýû SYS$QIOôÐPVèVÝÝVû LIB$SIGNALñÝÝÝÝÝŸùÝŸÏÿ÷ŸøýÝ1<òû~Ýû SYS$QIOôÐPVèVÝÝVû LIB$SIGNALþû SYS$HIBER÷ŸïMâÿÿÝ)Ÿ PAS$FV_OUTPUTþûüPAS$WRITE_STRINGÿŸVÿÝTÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGûÝÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_CHARûÝÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_CHARÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2õüÂ^Ô­øž PAS$HANDLERµmÐ^PÔ\ЭðšT­ôÁ¬ÿÿÿP^Ð^­ôÐ^PÐVÐVWЭôPÅ WQ, A ôóVè°½ôЭôV° ¦ЭôVžÐâ¦ЭôVÔ¦ЭôV°¦ ЭôV°¦ЭôVžØâ¦ЭôVÔ¦ЭôV°¦ЭôV°¦ЭôVž,â¦ЭôVÔ¦ ЭôV°¦$ЭôV°#¦&ЭôVžàà¦(ЭôVÔ¦,ЭôV°¦0ЭôV°¦2ЭôVžÆâ¦4ЭôVÔ¦8ЭôV°"¦<ЭôV° ¦>ЭôVž¢ç¦@ЭôVÔ¦DЭôVÔ¦HÝÝÝÝ­ôüÿ<þV<ìWÐPôP ÀWPùÑPVôžäVÖV×V°W­ì°­îÐV­ðŸ­ìÝÝû SYS$GETUAIÞÐP\é\V”Vè\Ñ\²‚1ÝÝ\û LIB$SIGNALý›ÆÄÿ›¢ ÿ<ÄèPÐ\ô\ ÀP\ùÑ\ÿðžÆó\À\×\,Pl ÿÆÿ< ìPÐ\ô\ ÀP\ùÑ\ ôž¢õ\À\×\,Pl ¢ïVPüžÎ\ÿ^Ô­øž PAS$HANDLER€m}¼­ð<­ðPÀPÂP^ЭôPÐ^Q°`a( aÐ^­ô}¼­è<­è\À\Â\^Эì\Ð^P°l`(€¬`Ð^­ìÐ^PÔ\ÔV”W,zÍ\ÿÐ^XÐðYЭìP<`R:,R ×PÃPRPÐPRÐR\«Ð­ìR±bx °bÍ\ÿ(b¢Í^ÿЭìP<`RÃ\QÐSôS ÀQSùÑSRôž PÖP×P±Qx °QÍ\ÿ(Q`Í^ÿü€Ð­ìP<`QÁ\R<½ìSÂ\SÐRTôT ÀSTùÑTQôž PÀRP×P±S­è ЭìR°Sb(‚`bµÍ\ÿÃGX^°G~(nïÉÞÿÿ®°n­à°% ­âÐ^­äž­à­ÜÐ^Pš­Øú­ØÏ<Í\ÿ‚PžÍ]ÿR PRR• ‘b!<Í\ÿR<Í\ÿP×PÐSôS ÀPSùÑSRôžÍ^ÿRÀR×R°PÍ\ÿ(PbÍ^ÿW”W°Í\ÿ­à°­âžÍ^ÿ­äŸ­àЭôP°`­Ø°­Úž ­ÜŸ­ØûSTR$MATCH_WILDÊÐPVÑV„$éWÐøYÐýYèVÑV‚$ÝÝVû LIB$SIGNALèÕ\1JþÐYPüžÎ¸÷^Ô­øž PAS$HANDLER‚m}¼­Ø<­Ø­ä<­Ø­ì<­Ø­ôÐÀ­àЭðЭØíܭè­ä^ЭäVЭÜQÐ^SÑVÿÿ(ÿÿacñÿÿVìÿ(VacíÜ^VÀV­èÐ^­Ü}¼­Ð¼ \ÔVÔWÔX”Y°ý€­ÌïˆÝÿÿ­Îð­Ì­Ì,ͼû,͸÷Ð^­ÈЭÄÑ­ôÿÿЭôV±­Ð ЭÔP´`(€n`1ÑVÑ­ôÿÿÐVôV ÀVõ€ÑV­ôïÁ­ÜV×V± °͸÷(fͺ÷Ђ­ÄÑ­ôÿÿ±­ô °­ô͸÷(­ô½Üͺ÷é\´­Àn­Âð­À­ÌÑ­ôÿÿЭÜSÐSQЭôP€šRàRïˆÜÿÿõPòÐSQÃSQP1°Í¸÷ͼû(͸÷ͺ÷;û1<͸÷\žÍº÷SÐSQÐ\PšRáRïHÜÿÿõPòÐSQÃSQWY1<͸÷\<͸÷PÂWPÖPÐWVôV ÀPVùÑV\ôžˆÍº÷\ÀW\×\°P͸÷(Plͺ÷<͸÷\žÍº÷SÐSQÐ\PšRàRïâÛÿÿõPòÐSQÃSQX<ͼû\<͸÷VÁ\V[Ñ[ÿÿÃ[­È^Ð^Z(\;ûn(Vͺ÷c±[ °[ͼû([j;ûY1<ͼûP<͸÷ZÃX[ÐVôV À[VùÑVZôžÍº÷ZÖZ×ZÁP[VÑVÿÿÃV­È^Ð^\(P;ûn([jc<­ÌZÁVZ[Ñ[ÿÿÃ[\^Ð^­ô(Vln(Z­Îc±[€ °[ͼû([½ô;û<͸÷P<͸÷[ÂX[Ö[ÐXZôZ À[ZùÑZPôžÍº÷PÀXP×P°[͸÷([`ͺ÷èY1iþ-ͼû;û n<ͼûP<ͼûWžÍ½ûX PWXX• ‘h <ͼûX<ͼû€W×WÐPôP ÀWPùÑPXôžÍ¾ûXÖX×X°Wͼû(Wh;û±Í¼û­Ð ЭÔP°Í¼û`(€Í¾û`<ͼûP<­ÐXÐWôW ÀXWùÑWPôžÍ¾ûPÖP×P±X­Ð ЭÔW°Xg(‡`gÐê­ÄЭÄPüžÎTþ^Ô­øž PAS$HANDLER´mž­äPž €Ð€žïÚÿÿ€Ô`Ð^PÔ\ÔVÔW”X,zÍLÿ,zÍÐþ,zÍTþÐ^YZÝÝŸºÿݸýôÝŸ¯ÝŸ­äû PAS$OPEN2ûŸ­äû PAS$STATUSüÐPVž PAS$K_SUCCESSòPÑPV1Ÿ­äû PAS$RESET2ë1ÝxŸ­äŸÍTþûPAS$READ_VARYINGûŸ­äû PAS$READLN2ªŸÐx% ­ÜžÍTþ­àŸ­Ü°ÍTþ­Ô°­ÖžÍVþ­ØŸ­ÔûÏû°ÍTþ­Ü°­ÞžÍVþ­àŸ­ÜÐx% ­ÔžÍTþ­ØŸ­Ôû STR$UPCASEôÐPVèVÝÝVû LIB$SIGNAL€µÍTþ1<ÍTþPžÍUþQ PQQ• ‘a#1<ÍTþR::RÍVþ×PÃPRPÐPRÐR\ÃGY^°G~(nïFØÿÿ®°n­Ü°% ­ÞÐ^­àž­Ü­ØÐ^Pš­Ôú­ÔÏ<ÍTþPÃ\RПQôQ ÀRQùÑQPôžÍVþPÖP×P°RÍLÿ(R`ÍNÿ<ÍTþPÁ\R<ÍTþQÂ\QÐRSôS ÀQSùÑSPôžÍVþPÀRP×P°QÍÐþ(Q`ÍÒþ<ÍÐþö€R:#RÍÒþ×PÃPRPÐPRÐR\<ÍÐþRÃ\PÐQôQ ÀPQùÑQRôžÍÒþRÖR×R°PÍÐþ(PbÍÒþ-ÍLÿÍNÿ n-ÍÐþÍÒþ nÃGY^°G~(nïF×ÿÿ®°n­Ü°% ­ÞÐÁ^­àž­Ü­ØÐ^Pš­Ôú­ÔÏ<ÍÐþPÃPY^°P~(nÍÒþ®°n­Ü°% ­ÞÐ^­àž­Ü­ØÐ^P<öRÃRP^°R~(n±®°n­È°% ­ÊÐ^­Ìž­È­ÔÐ^Pš­Ðú­ÐϼöÐPW<ÍLÿPÃPY^°P~(nÍNÿ®°n­Ü°% ­ÞÐ^­àž­Ü­ØÐ^P<TöRÃRP^°R~(nV¯®°n­È°% ­ÊÐ^­Ìž­È­ÔÐ^Pš­Ðú­ÐÏYöÑPýÑWý”ZÑWøZà0­äŸ­äûPAS$LOOK_AHEADðá1­äèX1þüŸ­äû PAS$CLOSE2ûžPAS$K_FILNOTFOUñPÑPVŸï~ÖÿÿÝ9Ÿ PAS$FV_OUTPUTþûôPAS$WRITE_STRINGûÝÝVŸ PAS$FV_OUTPUTþûPAS$WRITE_UNSIGNEDÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝûSYS$EXITüZPPAS$CLOSE_LOCAL_R3ôüÂ^Ô­øž PAS$HANDLERÞmÐ^PÔ\ÔV”W”­ô”Y”Z”[X,­ìÐ^TéM⟭ðŸ­ì° ­ä°­æžï,Öÿÿ­èŸ­äû SYS$ASCTOIDôÐP\è\ÝÝ\û LIB$SIGNALôÐV V2P~@Œ çPÑ­ì`W”WÖVèWÑV2ÚÕ õŸïäÕÿÿÝ;Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝûSYS$EXITü1ÑõŸïåÕÿÿÝ0Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸü PAS$FV_OUTPUTþû PAS$WRITELN2üÝûSYS$EXIT÷”Pï*ýVÑVPø–P”Váö–VˆPV”Páö–P‰PV­ôàýáóY”Y’WW‹WMþW’MêP‰PW[ûÏŒúPXûÏ,òèPéOöŸïlÕÿÿÝ8Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2óŸï~ÕÿÿÝ8Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2øݲ‚ûSYS$EXITý”WžØþPžÈäVž­ì\ˆ€ŒË†€Œ-­ì–W”\žÐþPžÈßVž­ìQˆ€Ë†€-­ì–\ˆW\”Wï.ýPÑPPè–W‰W\Zè­ô•Xè[éYèZüù‘X-ÿ TVýéNþéIïè­ôŸûÏÔÝÝ$ûSYS$EXITÿèKòè­ôŸï¾ÔÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷Ÿï½ÔÿÿÝ.Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝ$ûSYS$EXITÿéIþ-ÿ TVõŸï£ÔÿÿÝ,Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸVÿÝTÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷Ÿï¡ÔÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝûSYS$EXITÿéLýáàêÃ'T^°'~(nïsÔÿÿ®°n­ì°úä% ­îÐ^­ðž­ì­èÐ^Pš­äú­äÏèJû1Ñ,(ýŸ(òûÏÛŸïQÔÿÿÝ&Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸÂÿÝÀÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷ŸïKÔÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝûSYS$EXITø1ààþéâòé­ôŸïÔÿÿÝ4Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2ô1Ÿï*ÔÿÿÝ4Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝ$ûSYS$EXITùáàòé­ôŸï"ÔÿÿÝ'Ÿü PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2õŸï&ÔÿÿÝ'Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝ$ûSYS$EXITõüž®€^Ô­øž PAS$HANDLER€m}¼­Ð<­Ð­Ü<­Ð­ä<­Ð­ìÐÀ­ØЭèЭÐíԭà­Ü^ЭÜVЭÔQÐ^SÑVÿÿ(ÿÿacñÿÿVìÿ(VacíÔ^VÀV­àÐ^­Ô}¼­°<­°­¼<­°­Ä<­°­Ì‚ÐÀ­¸Ð­ÈЭ°Ã­´­À­¼^Э¼VЭ´QÐ^SÑVÿÿ(ÿÿacñÿÿVìÿ(Vací´^VÀV­ÀÐ^­´}¼ ­ð}¼­<­­œ<­­¤<­­¬ÐÀ­˜Ð­¨ÐЭí”­ Â­œ^ЭœVЭ”QÐ^SÑVÿÿ(ÿÿacñ€ÿÿVìÿ(Vací”^VÀV­ Ð^­”¼­ŒÐ^\ÔVЭ„ЭˆÃ\^Ð^­ˆÐ\Ð\WЭˆPÅ WQ, A ôó\è°­ð½ˆÐ­ˆW°§ЭˆWÁ­ô§ЭˆWЭô§ЭˆWÔ§ Ý­ˆŸ­ŒÐ­Ô­Ñ„°­Ü­€°­‚Ÿ­€Ð­”­ì°­œ­è°­êŸ­èЭ¬Ÿ­¬û SYS$TRNLNM¼ÐPVÑV¼Ñ­ÈÑ­Ìÿÿ±­Ì­ð ЭôP°­Ì`(€½´`èVÝÝVû LIB$SIGNALóüžÎÔþ^Ô­øž PAS$HANDLERÔmÐ^PÔ\ÔVW,ÍÔþÐ^X­ôÝÝÝÐP% ­ìždù­ðŸ­ìûLIB$GET_FOREIGNôÐP\è\ÝÝ\û LIB$SIGNALÿ<dßZÁZ[Ñ[ÿÿÃ[X^Ð^Y(ïjÑÿÿn(Zfõc±[P ždâP°[`(€i`°­ì°­îžïBÑÿÿ­ðŸ­ìŸ LIB$GET_INPUT€þÊÔýüøôôùïËã÷úýóüóYûå,Ò¼ùÅÐÈÔýðüóõùõðýõ÷úúú×ýóüóøøõðùÞýðÈÈÞýÿ€¹õüø÷ùùßýóüóÏýõùø´–ýõêõøøùÓýõÛúñÓýõËýõù£ýîÌüøôùøøôùøøôùøøôùöø€ôùøøôùù­öýôóõõËÑBü –ùÿåþåÇÀÄèÍøþË÷ý÷ôôî\ü¸üðþè÷¼õÜïÍìÙþùÊÙþ¿ÿ…¹øƒÄôãÎøêÉø“þ ®ýßóñöúâÒÐýõÜæÈÑÈæþѲ—÷ù÷ãòôÍ÷ 'üOÓùÛýõýäöøÞôóÞóýÿŸ LIB$GET_INPUTÿŸJUMP_CLDÿ°d÷­ä°­æžfù­èŸ­äû CLI$DCL_PARSEäÐP\Ñ\z‚Ñ\°€è\ÝûSYS$EXITé°­ì°­îžïâÐÿÿ­ðŸ­ìû CLI$PRESENTåÐP\”PÑ\ýÑ\!ý–PPLé°­ì°­îžï®Ðÿÿ­ðŸ­ìû CLI$PRESENTåÐP\”PÑ\ýÑ\!ý–PPIÿ’LþP‹IÿPJé°­ì°­îžïgÐÿÿ­ðŸ­ìû CLI$PRESENTïÐP\”PÑ\ý–PˆIïP”YÑ\!ý–Y‰YPIé° ­ì°­îžï#Ðÿÿ­ðŸ­ìû CLI$PRESENTåÐP\”PÑ\ýÑ\!ý–PPOé°­ì°­îžïóÏÿÿ­ðŸ­ìû CLI$PRESENTåÐP\”PÑ\ýÑ\!ý–PPH_üé°­ì°­îžï»Ïÿÿ­ðŸ­ìû CLI$PRESENTåÐP\”PÑ\ýÑ\!ý–PPKÜß° ­ì°­îžïÏÿÿ­ðŸ­ìÐÿ% ­äž¼¨­èŸ­ä°­Ü°­ÞžïeÏÿÿ­àŸ­Ü°­Ô°­ÖžïlÏÿÿ­ØŸ­ÔûÏÖúß° ­ì°­îžï\Ïÿÿ­ðŸ­ìÐÿ% ­äž¸€­èŸ­ä°­Ü°­Þžï@Ïÿÿ­àŸ­Ü°­Ô°­ÖžïGÏÿÿ­ØŸ­ÔûÏyúß° ­ì°­îžï7Ïÿÿ­ðŸ­ìÐþ% ­äžÍÔþ­èŸ­ä°­Ü°­ÞžïÏÿÿ­àŸ­Ü°­Ô°­Öž›ï Ïÿÿ­ØŸ­ÔûÏúŸÐþ% ­ìžÍÔþ­ðŸ­ì°ÍÔþ­ä°­æžÍÖþ­èŸ­äûÏí°ÍÔþ­ì°­îžÍÖþ­ðŸ­ìÐþ% ­äžÍÔþ­èŸ­äû STR$UPCASEôÐP\è\ÝÝ\û LIB$SIGNALê”Y-ÍÔþÍÖþ ïšÎÿÿ–YYMÿßÙPTD$READSYS$WAKE SYS$GETDVIW SYS$DCLEXH PTD$CREATE SYS$CREMBXPAS$WRITE_CHAR SYS$CREPRC SYS$HIBER SYS$GETUAISTR$MATCH_WILD PAS$STATUS PAS$K_SUCCESS PAS$RESET2PAS$READ_VARYING PAS$READLN2 STR$UPCASEPAS$LOOK_AHEADPAS$K_FILNOTFOUPAS$WRITE_UNSIGNED SYS$ASCTOID SYS$TRNLNMLIB$GET_FOREIGN LIB$GET_INPUTJUMP_CLD CLI$DCL_PARSE CLI$PRESENTPAS$READV_ENUMERATEDAü€° ­ì°­îžï}Îÿÿ­ðŸ­ìÐþ% ­äžÍÔþ­èŸ­ä°­Ü°­ÞžïcÎÿÿ­àŸ­Ü° ­Ô°­ÖžïRÎÿÿ­ØŸ­ÔûÏ<ùŸÐþ% ­ìžÍÔþ­ðŸ­ì°ÍÔþ­ä°­æžÍÖþ­èП­äûÏì°ÍÔþ­ì°­îžÍÖþ­ðŸ­ìÐ)¢J ~ JUMP025.BCKüŒ(‚"[SYSEXE.SOURCE.JUMP]JUMP.OBJ_VAX;2?I,'þ% ­äžÍÔþ­èŸ­äû STR$UPCASEôÐP\è\ÝÝ\û LIB$SIGNALê”Y-ÍÔþÍÖþ ïØÍÿÿ–YYN€ß° ­ì°­îžï»Íÿÿ­ðŸ­ìÐþ% ­äžÍÔþ­èŸ­ä° ­Ü°­Þžï¡Íÿÿ­àŸ­Ü°­Ô°­ÖžïœÍÿÿ­ØŸ­ÔûÏZøŸÐþ% ­ìžÍÔþ­ðŸ­ì°ÍÔþ­ä°­æžÍÖþ­Ì蟭äûÏ<ë<ÍÔþPÐPYÃYX^Ð^[(YÍÖþn°Y­ìÐ[­ðŸ¯ŸïNÍÿÿŸ­ìûPAS$READV_ENUMERATEDûPWû PAS$STATUSVÜÕPÃAX^°A~(nïöÏÿÿ®°n­ì°% ­î÷ÓÐ^­ðž­ì­èÐ^Pš­äú­äÏ1|­ì‘W?šWPâP­ìžÈúPž­ì[žÈ€YÉ€‹‰É€‹‰<ÍÔþY: YÍÖþ×PÃPYPÐPYÐYV´ÍÔþ(nÍÖþ<ÍÔþPÁVY<ÍÔþ[ÂV[ÐYZôZ À[ZùÑZPôžÍÖþPÀYP×P°[ÍÔþ([`ÍÖþ-ÍÔþÍÖþ n1íþÝÐ % ý­ìžä­ðŸ­ì°­ä°­æžïTÏÿÿ­èŸ­äû CLI$GET_VALUEóÐP\Ñ\ðžþP°Tý`(€Vô`è\ÝÝ\û LIB$SIGNALóÝÐ % ­ìžò­ðŸ­ìÐ % ­äžù­èŸ­äûSTR$TRIMôÐP\è\ÝÝ\û LIB$SIGNALÿ<þ\ž×SÐSQÐ\PšRáRï¼ÎÿÿõPòÐSQÃSQ\ŸïÉÎÿÿÝ6Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþûSü PAS$WRITELN2î”­ô­ôPüÂ^Ô­øž PAS$HANDLER¯mÐ^\ÔV,­ðÐ ­èš­ìÁpÿÿÿ\^Ð^­ìÐ\Ð\WЭìPÅ WQ, A ôó \è°½ìЭìW°M§ЭìWžPÞ§ЭìWÔ§ЭìWÔ§ ÝÝŸ­ðÝ­ìÝÝÝû SYS$GETSYIWôÐPVèVÝÝVû LIB$SIGNALðè­ðÝ<­ð~û LIB$SIGNALí°½ìЭìP° ЭìPžà ЭìPÔ ЭìP°  ЭìP° ЭìPžà ЭìPÔ ЭìP° ЭìP° ЭìPž(à ЭìPÔ  ЭìP° $ЭìP° &ЭìPžVù (ЭìPžTç ,ЭìP° 0ЭìP° 2ЭìPžà 4ЭìPÔ 8ЭìP° <ЭìP°% >ЭìPžà @ЭìPÔ DЭìP° HЭìP° JЭìPž ø LЭìPÔ üèPЭìP°  TЭìP°- VЭìPžZù XЭìPžXç \ЭìP°  `ЭìP° bЭìPž6ù dЭìPž4ç hЭìP°  lЭìP°, nЭìPž~ù pЭìPž|å tЭìP° xЭìP°. zЭìPž” Ü |ЭìPÔÀ€Ð­ìPÔÀ„ÝÝŸ­ðÝ­ìÝÝÝû SYS$GETJPIWôÐPVèVÝÝVû LIB$SIGNALïè­ðÝ<­ð~û LIB$SIGNALõÝÐ % ­ðžTò­ôŸ­ðÐ % ­èžTù­ìŸ­èûSTR$TRIMôÐPVèVÝÝVû LIB$SIGNALÿ-|~ú n<|þPž}ïV PVV• ‘f_<|þV<|êP×PÐWôW ÀPWùÑWVôž~ùVÀV×Vž|ÞW°Pg(‡fg ûÏ­üûÏõèP1ûÏáíéLôûÏ=Û1èIü1üü\ž PCB$L_JIBýPÁP CTL$GL_PCBèøݟϲ×û SYS$CMEXECÿžJIB$T_USERNAMEýPÀPäøÝŸÏw×û SYS$CMEXECøè\1) Vü) Vò1ŸïõÊÿÿÝ5Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2÷Ÿï ËÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸVÿÝTÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷ŸïýÊÿÿÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸýÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷ŸïßÊÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸýÝ Ÿ PAS$FV_OUTPUTþûøPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝ,ûSYS$EXITóÝŸÏfÖû SYS$CMKRNLÿéJùûÏÛÑéKòŸûÏØÌŸ,úûϱËèHû1èJó1ŸïWÊÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸVÿÝTÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷Ÿï9ÊÿÿÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸÿÝÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷ŸïÊÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸÂÿÝÀÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸÖÿÝÔÿŸ PAS$FV_OUTPUTþûöPAS$WRITE_STRINGûÝÝ)Ÿ PAS$FV_OUTPUTþûPAS$WRITE_CHARÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2÷Ÿï¶ÉÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ¢ÿÝ ÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸÆÿÝÄÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2ÿéIöŸïwÉÿÿÝ'Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸVÿÝTÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷ŸïqÉÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸÿÝÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸó PAS$FV_OUTPUTþû PAS$WRITELN2ËÐP<Â^}¼­ø<­ø\À\Â\^Эü\Ð^P°l`(€¬`Ð^­üЭüPŸ Ý`Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝûSYS$EXIT²<Â^}¼­ø<­øPÀPÂP^ЭüPÐ^Q°`a( aÐ^­üÐ^PÔRÝÝÝݬЭüP°`­ð°­òž ­ôŸ­ðû SYS$ASSIGNôÐPRèRÝÝRû LIB$SIGNALø ¼\ž PCB$L_JIBýPÁP CTL$GL_PCBèøÝŸÏÔû SYS$CMEXECÿžJIB$T_USERNAMEýPÀPäøÝŸÏÆÓû SYS$CMEXECøè\1) Vü) Vò1ŸïDÇÿÿÝ5Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸLü PAS$FV_OUTPUTþû PAS$WRITELN2÷ŸïZÇÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸVÿÝTÿŸ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷ŸïLÇÿÿÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸýÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷Ÿï.ÇÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸýÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝ,ûSYS$EXITôݟ϶Òû SYS$CMKRNLó ^¼\ž PCB$L_UICýPÁP CTL$GL_PCBìøÝŸÏþÍû SYS$CMEXECùè\1Ñ0(ò1ŸïÓ¼ÿÿÝ/Ÿ€ÊéêøøùÚÞó“Àø÷õÉ÷á°÷ñÐöóõ°ññüÛÞòøüÜÞ÷8þ ^Ôûøö÷ù¿÷Ñýõ±ý ÙüÝýõ€¼¶û¹âáãáãíá×áãáãá㣣¥ÒÐýõå¥ÒÐýõå¥ÒÍõÆÔæþô¹Ì÷èýóÎýõÓÞý§ýæÐüöôùùæýñ€üóüöôùøöôùøöôùøöôôøöôùøöôùøöôùøöôôøöôôøöôôööôøøæýðüóÎýõÓÄFýûõûùö4ó,í…{¹7óåÛÞòóùûùôõ®ööÁ¬ù·—.þÛÝ÷„þÖ×ýõ*þ éå ýü æ áü PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2÷Ÿïá¼ÿÿÝŸ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ(÷Ý Ý Ÿ­ôûPAS$HEXúŸ­ôÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRING÷Ÿï¼ÿÿÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ0÷Ý Ý Ÿ­ôûPAS$HEXúŸ­ôÝ Ÿ PAS$FV_OUTPUTþûPAS$WRITE_STRINGÿŸ PAS$FV_OUTPUTþû PAS$WRITELN2üÝ,ûSYS$EXITõÝŸÏÍû SYS$CMKRNLÿPò QÜ Q$Q$Q$Q$QüQüQüQûýQóQ„„„šÿü„„„„úû®QüQ¾ QQTQQQQ$Q$Q QQ„¼O„¬ê PÿAQÿ QÿQ ÿQKÿ Q ÿQÿ Qsÿ QGÿ Q"ÿQÿCQÿQÿQŸÿ QÿQ ÿQÿQ%ÿQ$þQ"ÿ@QÿQÿQÿ>QÿQÿQ%ÿQ*ÿQÿQÿfQÿQ*ÿQÿQþ°QÿQÿQÿcQÿQ'ÿQÿQÿcQÿQ'ÿQþÿQÿcQÿQ'ÿQÿQÿcQÿQ'ÿQÿQòþÀQþ°Q¯ÿ QÿQ8ÿ Q~ÿ Q9ÿQÿQ™ÿ Q)ÿQþÚQÿQ%ÿQ>ÿQ5ÿ Q`ÿ QmÿnQ#ÿ Q;þQ ÿtQ-ÿ Q:ÿ QÿvQ2ÿ Q3þQ þQ2ÿ QBÿ Q%ÿ Q¡ÿBQ ÿ5Q1ÿ Q(ÿQÿ#Qÿ Q ÿQÿ Q©ÿkQ:ÿ0Q.þÇ&Q6þã&Q.ÿQ ÿQÿ Q<ÿ QQÿ Q ÿQÿ QþO&Qþ{'Q!ÿ5Q$ÿHQ ÿ;Q9þT%Q\ÿ QQÿ Q ÿQÿ Q@ÿ QÿQÀÿ Q2þ°#QüþÜ$QÿuQ/ÿ Q4þQ þQ0ÿ QBÿ Q¬ÿQ8ÿQÿQÿQ þ‡Q ÿzQ"ÿQ4ÿQªÿQ ÿQ ÿQÿyQÿQÿQ$ÿQÿQÿ6Q4þQÿ;QÿQ%ÿQBÿQÿ Qÿ#QÿQÿQÿ QnÿQpÿQÿQÿQ þ&Q ÿOQ ÿQÿQ ÿQÿ%Q ÿQ ÿQÿQÿQÿQ ÿQ þ¥Qþ—QÿQ ÿQ ÿQþbQÿQ2ÿQ ÿQ ÿIQÿQÿQþ»QÿQ!ÿQ$ÿQÿQ"ÿQ2ÿOQÿ2QÿQ'üÿQÿQÿ@QÿQÿQ…ÿ Q&þ Q þëQÿ QþUQþ:Q ÿQ ÿ6Q4þ”QÿQ6ÿQ.ÿQ ÿ/QÿQ+ÿ Q ÿ6Q4þ”QËÿQÿQÿQ ÿQÿ QÿQÿJQ ÿûJUMPý ¾AûEXIT ù¿TÍý¾81ïGET_LOGICAL_NAME ù¿<Íý¾H$ó STR_COMPRESS ù¿<ý¾;ðGET_CALLER_INFOP ù¿LW!ý¾t3êGET_AND_PARSE_COMMANDA ù¿¨mý¾ ðGET_TARGET_INFO” ù¿ÿý¾¤ ô FORMAT_USER ù¿ý¾¼ õ AUDIT_JUMP ù¿Ìûý¾"øIN_LISTV ù¿0Cý¾`,ðVALIDATE_ACCESSEý¾X(îCHECK_ACCESS_LISTR ù¿ ù¿Ø$ý ¾œùGETUIC ù¿Tý ¾ˆùSETUIC ù¿ý¾hïGET_JIB_USER_PTR ù¿Sý¾HøGETUSERS ù¿ ý¾(øSETUSER• ù¿ Tý¾|CøPOTEROOR ù¿þ°ý¾HBøWALLABY­ ù¿4^ý¾°÷KANGAROO ù¿xùý¾äAô GET_CHANNEL< ù¿dþý¾Ì ó EXIT_HANDLER ù¿Ø(ý¾|ö RCHAN_AST ù¿ô\ý¾pö PCHAN_ASTù ù¿Rý ¾xúMBASTÿ ù¿$þý¾Èò TRANSMOGRAPHY°ý¾œô FIND_DEVICEÔ ù¿,à ù¿8® ÷¿(½­h><àP _“¹~ JUMP025.BCKH”[‚[SYSEXE.SOURCE.JUMP]JUMP.HLP;13Mù_ð*[SYSEXE.SOURCE.JUMP]JUMP.HLP;13+,H”[./ 4M  -‚0ÿ123KÿPWO56süã© ˆš7¹›ï© ˆš89GHˆÿJÿ1 JUMP JUMP is a program which allows selected users (Systems Programmers, Operators and specifically authorised users) to change elements of their process to those of another user, or to become *exactly* the target user in a pseudo-terminal. Limitations are placed on Operators: they cannot target users who have more than a certain set of privileges unless they are specifically authorised to do so. All users except Systems Programmers are validated against an access list file to determine any specific access to be granted or denied in addition to any default access (e.g. for Operators). For non-exact jumps, items which are changed to those of the target user are: Username (Systems Programmers only, using the SETUSER or ALL qualifier) UIC, Default Directory, Default Disk, LNM$GROUP. Privileges and process rights are NOT changed. By default, all users can JUMP to themselves. The general syntax of the JUMP command is $ JUMP [username] [qualifiers] 2 Parameter JUMP takes a single optional parameter which is a username. This is the username which will be used (after validation) as the target user to which to change. Systems Programmers may set their username to one which is not in the UAF using the OVERRIDE_UAF qualifier. If no username is specified, the username is defaulted to the current username of the process. If a non-exact jump without username is specified, JUMP returns all values of items to those of the current username. Only Systems Programmers and users specifically authorised in the access list file can jump in any manner to a user with privileges in excess of those defined by the logical name JUMP_MINOR_PRIVS. 2 Qualifiers /ALL /[NO]ALL Use of /ALL is restricted to Systems Programmers. It causes all "normal" actions of a non-exact JUMP _and_ the action of the SETUSER qualifier. /AUDIT (Default) /[NO]AUDIT By default, use of JUMP is audited to a site-specific log file. Systems Programmers may use /NOAUDIT to prevent auditing of successful jumps. /EXACT /[NO]EXACT Use this qualifier to create a pseudo-terminal which is logged in exactly as the user. /LOG (Default) /[NO]LOG By default, successful changes are logged to SYS$OUTPUT. Use /NOLOG to change "quietly"! /OVERRIDE_UAF /[NO]OVERRIDE_UAF Systems Programmers may use this qualifier to set their username to one which is not in the UAF when performing non-exact jumps. /SETUSER /[NO]SETUSER Systems Programmers may use this qualifier to change ONLY their username. 2 User_Categories There are three categories of JUMP users: Systems Programmers: Users with SETPRV privilege or in an implicit system UIC group. Operators: Users with OPER privilege. All users who are not either Systems Programmers or Operators. 2 Logical_Names There are a number of logical names which the System Manager may define for JUMP. All must be defined in the SYSTEM logical name table in EXECUTIVE mode. 3 JUMP_ACCESS_LIST The logical name JUMP_ACCESS_LIST is the file specification of the list of specifically authorised users for JUMP and the target usernames to which they are to be granted or denied access. The default value is "SYS_MANAGER:JUMP_ACCESS.DAT". (See the example file for the details of the format of the file). 3 JUMP_AUDIT_TRAIL The logical name JUMP_AUDIT_TRAIL is the file specification of the audit trail file for JUMP. The default value is "SYS_MANAGER:JUMP_AUDIT.DAT". 3 JUMP_DOUBLE_CHECK The logical name JUMP_DOUBLE_CHECK is a string, the only legal value for which is "TRUE" - all other values are treated as not "TRUE". If JUMP_DOUBLE_CHECK is "TRUE", JUMP will ensure that when a user who is not a Systems Programmer or Operator attempts to use JUMP, the user must have the JUMP_ACCESS process rights identifier. The default value is "TRUE". 3 JUMP_MINOR_PRIVS The logical name JUMP_MINOR_PRIVS is a string which is a space-separated list of privileges which is the maximum set of privileges which may be held by a username targeted by an Operator. If any other privileges are held by the username, Operators cannot jump to the user without explicit access being granted through the access list file. The default value is "NETMBX TMPMBX". 3 JUMP_SELF The logical name JUMP_SELF is a string, the only legal value for which is "TRUE" - all other values are treated as not "TRUE". If JUMP_SELF is "TRUE", JUMP will allow a user to jump to the current username even if the user is prevented from jumping (implicitly or explicitly) to all usernames. The default value is "TRUE". 2 Rights_ID To use the double check feature of JUMP to increase the security of checks on authorised users, the Rightslist identifier JUMP_ACCESS must be created and granted to ordinary users who are to be given access to JUMP. The value of the identifier is not relevant. 2 Access_List The JUMP access list file contains a list of specifically authorised users for JUMP and the target usernames to which they are to be granted or denied access. An example file is included in the JUMP distribution - it includes full details of the format of the file. 2 Installation To install JUMP: 1. Re-link JUMP (NO Traceback) as directed in the build procedure. 2. Define EXECUTIVE mode SYSTEM table logical names as required (see help). 3. If required, create the JUMP_ACCESS rights ID. 4. If required, grant the JUMP_ACCESS rights ID to authorised users. 5. If required, create/edit the user access list file (see example file). 6. INSTALL JUMP with privileges: CMEXEC, CMKRNL, DETACH, SYSNAM, SYSPRV 7. Define a foreign command: $ JUMP :== $device:[directory]JUMP 8. Boing! 2 Author The author of JUMP is Jonathan Ridler, Information Technology Services, The University of Melbourne, Parkville, Victoria, AUSTRALIA, 3052. Email: jonathan@unimelb.edu.au Note: Some ideas in JUMP have been drawn from Eric Wentz's program BECOME. The code for pseudo-terminal creation is derived from Anthony McCracken's GLOGIN program. Thanks to Jeremy Begg for a minor code fix and testing, and Bob Beckerhof for testing and helpful suggestions. JUMP is written entirely in DEC Pascal and has been built and tested on OpenVMS VAX v5.5-2 and v6.2 (DEC Pascal v5.4) and OpenVMS Alpha v6.2 and v6.1 (DEC Pascal v5.5). Suggestions, comments, criticisms, bug reports, bug fixes ... all welcome. 2 Version The current version of JUMP is v2.5 (17-Sep-1996). Ða ž—Y>~ JUMP025.BCKó‚&[SYSEXE.SOURCE.JUMP]JUMP_ACCESS.DAT;14P WI&*[SYSEXE.SOURCE.JUMP]JUMP_ACCESS.DAT;14+,ó. / 4P -‚0ÿ123KÿPWO56b´ä¼¨^š7=í©^š89He{(>…šGHˆÿJÿP#-------------------------------------------------------------------------------## JUMP_ACCESS.DAT#L# This files contains lists of users who are authorised to use JUMP to gain# access to specific users.#O# NOTE: The *first* record with positive matches of caller and target is used.## The format of the file is:#I# A hash ('#') starts a comment. Comments may be appended to data lines.,# Blank lines are treated as comments.## Data lines do *not* span records.)# Data lines are free format of the form:<# : [] # where4# the colon is mandatory, a comment is optional,## and a user list has the form:# userspec[,userspec[,...]] # A userspec is of the form:"# [negated] [wildcarded] username:# The negation character is an exclamation mark ('!').#!# Here are some example records:#.# # Give user FRED access to user HARRY ...# fred : harry#@# # Give user RITA access to all users starting with TEAM ....# rita : team* # Research team led by Rita.#9# # Give users ALF and JANE access to user PROJECT ...# alf , jane: project#K# # Give user SALLY and all users starting with TEAM (except user TEAM5)L# # access to users SECRET and all SITE%% data accounts except SITE07 ...9# team*,!team5,sally : secret,site%%_data,!site07_data#P#-------------------------------------------------------------------------------#fred,fran : testu%er, jer axa*, !wgwg , test* : je*,!jerÐs q"`G f‚YSEXE.SOURCE.JUMP]JUMP_FMY!4!vsT;14${sÐXáK)Yù´‹Ý>õå‚®áß‹6/óD}uÀ)ù¬iQ$¬­Zµí*Ñ ›ÙQ ù=!MgE9 ÅSÙÄ?C‘ˆDñ›¥f¿»€­u˶(ªU zâ3¾ËHâ¹3†Æ‹i´ ßØóÚøÏŠöÔ—òõ4êï¹¥Wu¸™šX»Ðe­”«êM £óÿbåüõ-„Hâür2ÎàÑtÕ¥–Øȟ΂ëÍ9Ê>¢åIÀ¥…4òœÐW¾e?Ço·-ÎÛ» ‘71žØè|i™ôzÖ­oõŽ¸†€¥÷ß›ÐlÈûX—pÁšáÁt’4{àneaÕèx¹eúæI7YÞý=)öþÝo®tYäýŸö˜žµ*0F,h'쇘×Ci*',:BLbž.K]¼Ð#¤g0Iv`@5eL—Íòò­l+'BRaåŸe&ž_íd´Ô¥„ ¡º¥úˆ÷HzÛŒÐe(Þ±´ƒ›££ÀŠ¸ºP‘þó”ˆÙáÅ -pl­¢ÃG s+M c“Uߤ_±/=£T·Ržœ¸ÕȽšŸf ?^þöÊ{m¤WÒ€…k®>zá‡é “Ÿaø+tû:ª„ElN7¢ý\3)„25{3¿‹à ¤,v+CòꔵÒBÖ-BB ”eÓÏxUV•c~D3™—Ò…©MœjîÛƒç–ß÷™E¨ÝŸø‹ÑÍÅØs'>ò¬Ù‰ïÆê2èÙââ¤kpbñ¤êØSƒ&¿2‰ê-†­‹–€ÒÈŸ—ô°[?‹]/ABb}F<Ìc1òÁÓGY²µ©bO$î@U&ýHå=;a2t^^~†7lPˆhP8›kEý2ÿ7õ+³f™ÉwåÃJ³žÍòë°j*ŽeV¸FpsÅxT ù^m&m-csZ xº‡}qbðyÈÞ@EU1Ú% ÈOB]hºuŸçGTxsw;üEH%±e(22qzöщšš£r-Z-0‡ƒZï˜â/1Mž%Ò ga€\q`õÁs/^38‡eZõÊ#@ýð÷±Ú³9BåßmRðx„íªà6âF~ÝæÕz°Œ\=KÞ¡¬|*VЭ¶V ÀÌíÿÿÖA±ÅUÆ~»£_*7fD(bªàôÀœÊ©÷fýÕ¬æúô#âë.¯ý±èŸ×ÞßWÁ ê`,É &jÎj-GxšÂSCçÍZˆ’«Tòcé\ñY!téDz7eñu] °ñKAO\Üì@w9Çö>5ä:FHPeÅzA¾‡ù–Ý™ü¯:Î9ÐAš×Ñð×`™µ/‘·˜¡Lµë3Û7è„«óYÔ?ŸóÅ‹ê3(ŒP=Z«S9†Ë²ºÀÌYý‰·pþ&¨šžº-O•cW•ä#Œ0t[>æNï¾Áq¡ƒ’×·+¤éª5;‘”ÿ ù•>öÇÀ>'€;¤K #vˆ9zi1„ WØGÖ°bëöM T ÍÉÜE0-¥RöR¹Å»¡0YOg=Xdê%1JýT‰¤„G5k…½4$¶GÔ%ðÅiI$xáĤ1g¯¡eÙkA:.ìÅ%¿Q„Vs…5‡_²æaILê¿‹íåŸa!h+uyUXïK+pYßåîWãodPQ¦…xó£»>[ :/–Ò”Ã8jÇzù‡5Þ4 ü Kva,Wkk£l……¢…*·7ÑE<¹ ‡‡ø²Èe1UÿÚc²eÝsz}ËUÛò$$_s‘7& 4‚xcÅ‘khÀ5;&¬~ ð)F“3Ó%† E3ócc$Q•4áBë‘JÛ¢žÁë“ž¦lbE+,ýD“L2Í:SÙ zà0lg\Êc<\r†;¿!¶'ÜW[dÅ-ÜçsÍtT Co,7(#‚’ø9=±X>læ>¾i(V5fÔ ì,/¦23pw<ÝÙ_ªqc@ýu7ãcëZÂ)˃ ØØšûm4„YS]œ~8§Ò=dûŸ·ûØ‘ºvrPôCwû[n©NªÜ•¡?ãÖb@º#_ä`îÀ-ƇFtGÕW5/: „(>ñkx)ç_„@#&(MU¹†{J+íPm³çÎ;«scpýQÜS£-ªJL9Ñ#6W2ì H(©½³x„]ÈB·ÝN9çIï5WdÏ@:v‡Þ\¨×,NƒARºãUN‡qTÖï ‚·''ó%Ñ,ê?sI™}³¿KS.AtÌks)i°g:Ú dhbéÖt$r„Fàs"é.ºZU)HÂÊ®Â:jœž†i¯.êÆTõ’_ x$ŒN²®ÃZp†¥N-ZLEÙ1x0ÍÀãÅ÷1=%–Éágk0IºzT`T™nr±µ¹F»TׂX$3>øoìÜàuI‚x‰×öq0+êœI^´w“ªw;‘¡!‰òà4<÷ÊqøâbºÌ³ Pú4ªÅÁo|°¢ðµ•ž¦5&¼ä."¶Ï6ª{ò,m=—»Ø„÷K'Ó·.”LW}á™ëG$APS_@£DÔïù-·)Všü>´ âboÆ´ÿnL’䀴f,a6˜/îr\]>%(ŧۦzwîC×»‘_O¨†:'ö·”5ý,À`¹‰L$GÞ¨‡×È9Óxð8Zº jUÝîÌ@Bv æç$˜Ð“èý…SLqxx˼Q µÈM¯NÛ;Éy7%«G+vCZºé­Ê<å 8eo¡ûNýuS>àp¢+©‚aPȧÿ>ß`¶!â¹\™c+ÂZ³ÍAFS“4 Y-3ó\QfxàT9c=qwìiåeMì™CÍéO<åb’·4³:oÄÙLÿc(ómµ?Å'ÐD~Ù| ZÀP¹¼×fkðþû«,þŠŒNîpHÒ¿*›k<çi²X®IqÜ2s ˜Ô8©­yDºµ(6#NLÛ¼G>59_‰Ìº'PZ~áîöÈ®c½…áÜnî F»:Yî7^R9óÝGA<<ƒ¥ž¯‡ºájÜt])Ó7Ŷ£-ž7<}NëHצt¡¼{äMóÉ¿æDÎZ| D‡óŸ‘˜½ Ê=¯‘5bÁ¬W>9•9)¼ŒNU`¥‚:%˜o_0!3ZxûR ñZuï8°Ú¡7qÆaÄD mß‚1õkkk¥dæ/—õ“A3 Åvdvâ^;¡P,sÓBSaj; u®Ý×s ˆE†,¯|i63Aaáp‚–_sébŸ>JE:zPfÜïcÒ‡Fׄ&RMe@,ÔÞ˜Àz¦Â#í® ¦c!ö¤œúƒ,i‚NTÖùjvFÝ$¥Ã TL RÒ'^Á™+ƒêÄ]ü€a]{ `ç®þ4÷ënV‹ã@÷dÈU÷*|¡ »qqˆZ=u܇:fr]Ūx]Ù‡~¹ . qõ°t.®áÓ%Rò ¸˜2›q.¼Â^°-·§×vÒ=‰ܨâÅšye{° ”\«Ïß|4q<-I’G€¿æè–”lLÙÏ·Öd€ÑûîÃÍ@*àÆé·Æœ7]U„ÝUøÿ•B²^Ü$1ÜËT'I®)«mËK~>ù‘äNlðR:Šª5‰<^àKa瑶8y0j™™ ŒÇÔK·ÏòY=óñIf€ôÍæ% æcÌvGÔ­CиwiÞ+µ³Ê+õ!M«oõ•¶T3 ^“}%jÑTŠÉÈ®lZ&ˆ9Ä/ßï=âåÿK»É„yÜTGÔª†&Ñn 9æ–D=–gõ±}÷zêI·"PðÄÄ´ kIÃDsg«ïÇvµÞæëï5:ɉ¢ãêQòWÿ×ÄÀ5$dD¥B|m:ùB}RÇEËš¨ÈŸ©;­Ÿ´oDü+ß¼0¿UÙ§Z&#”žY³ìÁ°öñû'7Žd-m-4IPµ9‚h“ŒÚÞ8¥“…& oT=äúÆ|$¬‹!?/é[ÆYÂôÿoÊ>§›7M¤D¥+ À4Ÿ}œéÿÒëN({!ì ×¥E~œuÔ&Í…€Iâ`…ÂðÌ‘šmÀZRH*1ç4?mõqÊ?FhVQÍQ}è=[¡µ"eô‹0é«– šò|ärÿêsyÎi7×Þ6qÀB–Ü®cµ¹&\8S‡xû÷¾&kšV¡+É”1˜1JJ{AÒ1*è@™R|’ö*!U_•(ÈŽ*­i½ÑøRí'É%]¶ê[Ý«ª}¾n ´§ÆúGQèž½,w\…MpÒ?Æšp6”Ã_âë„¥œfš_.XTl%^VK¥ èÃ8ñk®‘aÓÜÙ rùR÷Ö³H•+Lpö¬Esª÷RkOkšØçX•¥v:)z^HW! º(˜ ²Š0êOŸ”RÙ&k[´à[ÙmsmÓúi°ù¯TA™ð¯Âææ×ýŽÌ° ß©•’o:¯‡ÀKŲÅ=wÉ–ä[3Þ þ¢§ÉËÃLQIg¢«ÁÐWä@—y½R“§ËôD—‚ W8¶”3[$¤4?ú eÉw?Ò¼0dš¤_·Þ{Ë·o;tǦ?q³Q|žš±9Šò/:õ‚ÓÑt™“ïªÐ(?øÀåè»?ý~»¸­#ð·ÿ6=º#Yî#ɾ÷®¤ÞÛüç%tlûlä¤%_` P{Íd™òjžÍŒ!3bBâr°DXçýÌub[ ß¹+š¢Œdr®ærg¢Û*Ko¤קñ%kžëÏN±qWÆ%ŸþŸ¼Á`Ãy| ·³‡CPÐÎi<¢£mPtO¤ ÛæsFYä:e" 1û¨)%_ùqR›õ¨PZ_#ã]aß´e#ZŒé1,Òm;—(ðøwð¥õF«Oa¢ ØŸSljó}'#Kú`Då¶T…}ìgÆ×fdgjÐE(b³ÔE0h”TqªU?\áŒáâ”bä_ Má¿ë‘ýEL#=ô2ŸQúÂN…™Ÿ$_@Pw";€u!/®”—ê÷·FˆWW²JDwt ÔÕÀHAïHKh~ðlLÓÕUNI]BÖ>Öy^ Ρy•9=«foR¢b®Éq;N­s|(©ÜÁD,kí¥2a€ÃG"¿«)œRK'yñ$¥%zj‹FºÉSÝŠWì QƒÞ¡ÇIMKhB!‚V‘­>¬À0QkÉx¿]³ E:)mSf`O(ƒDë5l¶¯DÁÅŸ[ªb5z4á"+ÃU#"Yß>ÎœI×&Zq{o)ªÁPJw1&^…\§Ã“WP/ï0I‹,Âvq»y]­ WdTÖÒ$ 1EÅùR8A3|‘×2ÕN`-°|„¨Co¢r9l£<ÚÃD…LC>2”j‚4½mëSΪMxÖ&±sµ*{ˆ’$KSJñu" ¬‡¸ F+T~sÍ|UF@Épƒ>ZFÇT˜~O¬Ã'Y<`ð¨Í&º!Vôi"!ò f gšut•nQ´ÚÜ@i®8S=«ŒŒô Á…ØÜ®# õ­m6?ÖKbo‰•Õ6¼EØe/5+•‹%$1JÎzéï*N®€3Dö FàM‹:•Ö\§^jë¿ÂdÕÑ­ÿvK€K/»—h­Bõl J Ø%CÔlÍÈ~?Ì †m¸9‡áL#…celzý"|wt|H-ô¼™S‡)·üU¥»â~“&v°6*!¨0c›vØ Y (}d,VòJÄáY(='÷cnóttUý G€o-a{:ÈT_ -Ê›cvÖ²äK×î G£´—(^ÀÃr‡Žq>UˆŸ½\ÞÛ0šßýÀ"Ì~Aã—ÃÝwâhk©ÿÿÛï.þT<¥ Ž²ºñXv¥•qFæìÊ™žRm¤(¤UÃ2Ú©Ä V”Ƀî, é;Gà÷Ù9‹ Ÿ×YK:˜†˜üï”Wn1îí«£Ü4,õ>'ÆTâ ÚËŠQUÎÏæÿׂoD£nP0ù`ùŽ2Iâùí‰?Ã#0~~|0˜RpÛ‡5Vpß")´_YjŒ$$¤'£Æì7ý` ‘2A$ºÅǧùHŽQ2-¬š¢”; ô~²þ®e×]tÄïHÃý¼ÆXs1{ìE¶¨ˆi³(ÿxqî’”Ãis‘Êþ@ƒ )2S.-6$GÖZÇ4sh¤Àa}¡"Jv÷k6*¶¶=+rPô€1"~s„Ýÿ Áw1cÑvÈÿ×/ÙÃ1ç~C…ÌUJ5žHœ"E°CfË&tÆ X%+çã-€y'!”i/.rÑò. [ì¾wr0—h8x¿!5[¯kI8Ip³\LHõXZ~. @ƒÛ6øb4Áž‡*!Ì4}Z&=fDF-,w@[â¨srcÀš´?-kFÿþ  d‘ zÒïVPTعoaÃ5¯wLæ$k(âDÞµ{è.¶gSÖR"«´ï[øES—á•àU^$©×;Ö71N ˸kfÆL`¬3Q;VØZB|dp`ì=¶!dY5›10†vñt»O£Ä3G) -Ê,èn÷;<PØ~¯#Ó{õ¾€.>ðAë :Â\4Z¤/Z4zR¾iN™YªUÙY|P„ Y¶1-;Tµ?E„ Tê# +T&¿6SŒU´A>Ð+»6 ÿBbVNäa} èçT?IJ 'òÔ Ð?G‡% …ÌR+]Š-^ZuP~œ‰Î!Š}àäwOOLäþsƒ¥:;¾OSr22P:Œ004 AW‚îÇÏWHTŸÍb+úèI±8ùwó)nT6ÏxÖ”Ùê‰&°lü¹²KBT¹ \Ý­*Ì.&I†mÀ^%Ñ^l¯ÿkZ.×rt§vI~Ž¢f’×°³L²˜}þ€ëu‹ÐÑ#ƒŸmLI;Ž*"Öít8#!8 8+ À#6ݧ4E¼$?`ç^ªC ARò×OÏ€[+#îWJø*VH0Å)ÿE·eÐx`g–?Æú²YúRToM=r`9 x¯z´)¹ÖM‡õø~ýx6¡ÝÉa04>M C­§šM֜ϋF¿w@ØÈ\Io}n×ØHÂ>4ê_# eúÌ 9:¿›šÙdô~ˆÛ/tkyR@[g*5†k²ïäJÐßÌwtÝÁë£÷Õ“M·iø¤DO¯Þîd=Hž¢<-nZ « 1 ‡vsdu~Â>´V̯S.Í9î!}Ý9pc®†ñÖÉ1B` c8øuĽ~ûuÄGˆ:^¡£×]LßÙuÕ€iþúËt†Ç ¯ß¬4 øX=Þ‰þ E™œ’Âé½·›3Ù©KŸÌ. ýjðÜ“|ª„+"æSq7–ѽMmuq ”BšŠN—ùPe{«\Í<æ\³™3J^md)­Úû+¥—¿ ©xÛ13ˆpÈÃÕ@ÈCJ“àvð[@ÍáqR#£4h4[!žŽùP6M˜cLnÀû oZ×zS?þsd E°å $-B)7ûý@/+¸aç.K-ƲªÌ>)€û»DÚ /ÁV7ö!áÉ\«L]Ÿ½n5š_ÃIbpkX‡9 ¼–VQ²g²þª*¼Y¯èÒ0†¨;å`M44óÓ|°\U£“[ú¬ß!”€ERYjz—//(à+Pž õÑEªï Ö4„‡¸Wj„ un,ßJù,ð¸oØí£„Æƒ1úâý“ºCQ.ÝoHõ8î?Þtó!ЭÅëŽj|÷,v‰†ýË£VOV%’¬>þTC“‰5ZqºDDÀR;‚ ˜Önøà"¯9 ©(·føO¦ˆ~.r,*dt*ÞO7­'v"ß® ¢â‘Á'%&‡‚áI'q0Ö.~;ZFÓXEÔS/$·ÿ—¡èbïÝ?ã¬cÁ(,Ž&)Ÿ•OJÂ|g’âB„9+µÉ Ÿ.JÝKµ|ÊZ>Bya¨VBOW›y’Ü¡Ù)·ÿ“~Z—)‘[8'ŸÌ-Å4PÁ¶0ù»rMkX\šŒ‹P d2K”ò}‚Êú9ˆK W~`'ñ"¶-¹m{扖ÈEWÂh±h„3R{ÄM7P![ÃCú“­wå»[ó«B[ôž ·]–I$Qm´›˜-öšr?’5eÌ^¾ÝïÎ/¹ô\›'f°ñB‚ùp±c—k³'§íà’IW,FÃj³7ZU=¤Ö¢Zd¢ûƒD+jÖ… 5T (#BüeA)çÕqÅy$NÕQ`~R¤L‡Dâ£äh‘±J÷—Afÿlo¥‹qU÷\(¸ŒºJ,Ô}I~|CãhUxjZÆyV_-\ÜCCB‚vX—»ÚåúOÕû©gH| ­‹¢½;V2ˆ9ÔS=NÓ[r| ä‰Ê˜CdLrNóoB(10âªOѹlz‘d+±ÌCÛ]¼÷À×Kb%Í¡fû¨),ØÖÛn0”ä\-ˆ&!‰á†v'#w}BL™Ap„"êw2W9j>`ÖRêT .‚ëIú\¦$Î^=>]¬Æ{¹hùYvÕYt.$&:AžG™6™ìZ‰ˆãÀlÔ›x,†²ïXÊø%0;÷zL-öõ)ýÙõ?5H'&57ÍöaZ]p},j^{o2}GÁ”SX8]5Ý\YÐG‰^ÿt ÑU=ä:AZ É V˜$)»y^a÷Ñ» x‹’º}Z)å²GÁ,·f3µn¡HyÖÃëXyl?$œoYõÌnÓöÇý%üØ“çÏ ×w)Lu·#8 ŽRIƒh¨‘ïAHÿA[Tvɯ*äC$3yŸc›m5WF£(Lƒãg¨_&¦vä JÙ-5œqBB¤ik"íì(4û@-W‹Tc];ŽzYûP²¸£èzöĈüï^-o‡.ô/„º =D}tHR@w–…¨@ ê´&\Á®Ì®Še,H]ý‰oŽRgÆ0¦‹WVá Tør(>'6ïÀM•!ê‚÷!9ã,š®8c"<SªXbŠù…)hÔØÞ4RT@1‘Ó­WÝö8„å9 »!@>âqhĪ’{pœoqÿ;ãçÀ5|¸…¾©$k†lÏ<<>˜± IwuÀþ&žîréz.¿eWíù*>:™#XîO¬¼“Cò \½˜ c+ŽJB‘fÙîQ{–1–çü`ö›KTš÷|,’_W€ò]½)~Æc)Á)RrYEÀr•~•y³÷ž{ÓFAÊR»'I VaÍGGAH^ó÷AØCª?Ãwñc’IO’QfŠ˜tÜ`tÜüKLI Ú¯&B‹/Ýbw·†s2°QN EY ÄÓXΩ‡ÀŽ#à«„›†}ºê€¿žL\ù€S½&ãógAoݾv|vs­Ú<ªu ¯ÆˆÅöyÔS(×jdv#¨:¼°é®Kªˆ›ëG¶Ç—H‡œì%½¢¶AV‚a„"è-)TLËBP"QC!j-Ûø#PÁϱÏì’™ªÁðéò/eþ}mžn#ˆßeÈv90fNˆ‹`³¼\w\·lÇàZóûN49Ü×õ»IP%ª$(ï¼RBç_`xÊmÙ_L±"j7Ö}ÝyJV‰Ûí{nFf¹N+x[ªcp^Ó;íü¼äÈ籋éÿç”n›5¢üãnbgµiº•=dI»á‹)F‹5\}1„§^çI >ÀÉ2` ‡t‘/ð½%VÅŒnp† FùíÙ9Gú#y'júÔk2–ñ-äК9ìú8=°æ0É–7šExÎÄ+m½òùR$SÛ[$Û0ÉTy/ÿ5ý`DC“ÆÃðSùü#íì @Ò“H-uèôô×»¥€äÃÍZ¢ ʘá"8æÜmá†`µÂÈW(,]û#è{¾œ.“Þ hb ¯{ àØÂ{ù¤ÑuŒtë)|ÞüêÊp»Š±°lANêqêØ+Iû’‘£Œú®#&éCYªF趕xöÒ½7þHU*ý±Û“ÊS6äa~’%‡"ü¶v+yÑÄ ê‘ r)xÁꚫᳺ²Js´–lcßSá2 Ž]ÂBÑ&ÝPÍQvu—Åñì9[RAÇú§eMÍ7^;Ü™[SßSAN®}KO“u7…O kHDÍHSH/~¤éB¹b€RàEÝÕ{N:>#r5 ÐêtY°B`éF†³N¼2Q.Bu”?¾A%ädï=m+¦‹8JÃC„ˆòÞõ*ühTù´ÌÐ)á+$ÜKþ€5ˆïvÜE>ôasÖQjh^èìø½ ò~ ´œÇ‚¶)Èn7mo¯FrIß íGíç2aRR+n åú—¤@+ ê~j]|ÝËqµk¸F«C¡Þ"ømËlk{Ïb‰[LÈ}z.Ü#j;ÍCyCSIúžÚfÀàØ8ð› 5!Î5C­,v¶Fuü³Fdz LÍLZþsõ3-˜8}^\µV1oðO=DíQ ›Þ€„7Á½®x%{–ð+²– fëNk7ˆçÆ· SQÿR嬴‹ð¾xýE4zÞÍ¡÷­èòò=–¤#ãNHÿ÷«¡ü¶æŸÖYFÛd'k˜ë^‘µ ¦Ögߣ6Áø;åfU¡œ¤®Á¸H!Ã7¢$­Ë‘ç @°î$iÔi-RÙ·.ÅúsUzœ0ºÚ-áþYd©ÕlÚM1á¨ZeÏz+¹,>1gvÞ ©ü–—ÄpÎh*éäLP}c ;“byÉ$!3f@&¨ ÂXYÒqF¹L`¸ÃT‚µ#qp*TT<%2Kú Æ2,ÐB"8 ,¤0döw5o´VA§tv@é3$ZªU'/¦>c0K±)I‚¼"]|nksfrSbÚñT8!'gÜwçòQ;Ž?TðÖ~Rñ }=ßÅÇ “&Ai©NýœÞrèh2¿K¡ kœY¬V*NNÔœ4ס˜ÿ\³—RÖcÓX¸…s?ño42»o ëh@“üÏÖI¹ b!lql}´fco^q^2eE\'k‡%Ùj2R‚_AHj >$Ë•†fô>Y,òTFn\AãøùõpK9Žaq¿e4œg2ËDe®Ì~Mt ÉkÒb5GDøƒÝhû?¤)Ôe6ðF " vGiZh¡ŽîU{Ô D%ñÇ´Byy44#YàAe]ßï‰ýxW<ˆê&³¹óãg.*hüù ÙŽ²l;0ž23zŸ]ñAÅ/d>õ¹B¹TX D`KÁ=¡¾kˆåTÉyT1žÃ1â_±bþJb@n+?DIÚ., ©Ð¤‹²¨ÓCwWðTŠSN_mªSÖôALBÏ-—R(k KM·IáÍ Q-#Eøw4õ‘ŠÄBjó?"æ2()ëB—},% UQVq¹v¨×M®d#Wxƒ1o,ùXŒ:˜äsÏ¢b {li6JÝb2=wP~8éYp‚Å\N ú$RéÌNC.N_Gä æ`<}þ'vAÐ[XÔslj†sQ\ÃvÝ \W" 5® `'|>¨Æ½"¦yÙcGWZWý9$žhqvD¨ÃtL`M0­ðÝZ†i3¸2lÕvH.ŠºJb‘µýG¦ïSÆf:S`}UgV DLV\øaA@è ØÓ‘/}{ ÞqrGS'bGç³ACÄá¶Áž(7íp ’"?­&Þ"ôyA·Oml®&aÆŒI2zæ{`š–QkTê˜`×JøI!Ófô1÷IzFo"²ëp¶aOÇmÃ`VUmý=›"3ò)3@Eå)}][½«Iø6Hî¥PI}iO>®¿v[VÞNÎ. 1D@­=N ®—ysm¼¯#Suüz ä²íjYpZ8§=Oj†qt*;f½YÔ¸©qUŠG|<ëk·È¿Æýœ!¤„Œ-zô7duX7d:Kfê0ÿB-¡lO`0çfyéU"‚”Ïøš¢Mò52GÆ6!ª )«Ûw æmøY¨CyÑ‘@“\ /@mß))< / rF¨¾PÛ`g@D›!?50¾~ý&zÝ1ßl¡z±Y‰co?hGb.k6økx²Ê¤î YL2ÿ÷|ù  bu2<1#5Wjª@–°õšR¹_ÞYp:‚£ªM‘qù TþœO(™°¥­~ŒŽ"ÿ&)r]Eõó§+ñÁhÇ_æ|F;¸= e§ ­ó8a(Œx˜ %œð;®Nq¹Cîx6Oã@M{*bíÓšœz¡9 SYRW:LwiÜG\Z%¿W@^K[#É4rùWØ{¡u¾sd@`KpzèËci]ÿb,1¶y ÖL÷:Zêxh5§Á•ù\ï~F &43É>u¨…m3&ûit!0C®u.êÄq{ݸº¬æ4eÛ6ç!|Vür[(Wyºgi>rþù( r¼N4€8ס Ó÷O TŸ¬ÂdL~X]p§(2“@Q¥ÆWü”là=GæoaKÔF«ÜÍ £Uwâ\î6£51;Ñ<†›?4º " º:èV ê$žVQî4d;~U}(Ÿv?GÄ•b„l@šFpNvRëh`¾õv‹Ô\b£Sõ~‰b2yÓrÛì [?ðX8è?ÄK*2w o˜£iÞG7FSBåC"qä=Œ,²u·Û£J8WØ*jfIÒ&§³S^ßž-Ò@é=6:s}©=Üfª«xÈÉjÎJÛAý-~ÑÈee_Sà. pË\oN,‘І&`ó?M³‡õ1àJ+®Ýûz8'uÞ.úÍ83úÔ_qü2H³>â”1Ñ£<Ï\0h!?5 ¡.!fcDÄ=Éñ±YþPŒz4#š_¥8mCb t©h÷ åW'MI•…"Æ2Îi@%âdÉbw~^55\Dúò)z¯>¦ú?šl@`Þ(tþZ Q…M ¥í!tÈÚ`[(°a_§Ç¥d4ká.}*¿¸hê+Š~8IMíuBt:ìÝCI~·¶ÒRá â¡32KBë­/âO,D¤®+?çK6Q•MÀKÃc£n­xnæ9¾.1K;žl˜%ö? Å, )l ümbvÈ-7C¬2’aV;°{ÊRŸˆQOÉu ©W=]$`¬h!\4Æ9¯ ;IdXx4Ÿ \2Å-aQùIôT{mÕjÞ9?@Brtá3‹s«š[þ=,?„ƒÂ(ÆV\P3¨èü þG.EæzR]Ii_HzV_á½ÌC>Åé•òà G‹(uÖPQYifž"'Pù gzúŽu×s)¸ÊòYF¥çp ߤŒÊ%€s,¿í(ºÛ754®˜ú¢¾®§IétN@íWĪ¹þn² ]S»èÄí>´caÓ:Û‚ûŸD ÈD&Y˧ðÚº¶Îx¨ô^™½å³›Òk>‘—“ç!y¼6õˆ¿b~Tºw5‰¶Û2Ü%ÈA+yh#.[a|ï3'´÷HåX]ÄO1 †Y–¼/ȉ6ûÆŸ' ª¢+ÚÑçA^Ï$D öÍ7ÕþI9Š’)7R5çý~IÇeßxyË3D¼)æ-é]ï«PÃr.#"±55‰7nV«k\ v0\*2^ƒÏ`X ~FN¥Áv™BÍC ,™ ¸Jê9¬XE­ŽÉ€$oPs:P_[þc0tÂåh<×AA<2fÒr}~â ]>OëþÞM·ZîDh&zùMO†%ÄJ*"às ÇLióDvd'ô&Iã{ÛæuC$½ìS|+]EY÷ebvº¶÷á9Ë10?Le¶l3¯f'Ñ*/3v\À˜C(œ[}T59d¥‚Ö±hp²µ3£7¸-.pEŠ¢ùÞžKg1Ÿ Öpªû}•ëéFÂNÆ9f¾Ž¼Në<[®)Ĺ%, u÷¥ïÙ×K9DÉÓ¶A™£½GùSÄh3ÎÈN ùrx†¢yb¢%@?ì‹þ0»0¥µëÄ#‘Iù¸ÑRò4jyð9¤ýPnåöÊq#VeŽï]èñô—N`µ[Ô»ƒJdÀ`Ÿdäs]ß@Å·ž˜·8z³h×;o–VÍ„2ipNüÔMòHøn•ÎðÍböd¡îM}-]Åí òÄË2^ÔŸß_0¸)À0FÆï° „+1K¯­ø&<â/Œ)ÇgNT¾ÅhŒÈjŽL^ .;b^2³:.Šßo*ðETÕ¹È~áÀH¡Ù9Õ&8Ãü7é:צC|¾aJÝJo©_GÝþ¬{°\É`×­<­'`Ÿ8úl/€O:0áâtKJv$îÖ€–?;U]:·<‹E>ˆv’]¹âBø ÞrGÞgiQÑ‹˜U¤t>Îì᧯@ÿ±ž5em‹ìM!6 "ªÛT°b‰¨`v`ò†#rÊTrIáýÌÚp<é -ÛÿEùL´ë÷}§sŒ8T‘è•°ò‰,_[@Kh ‘M»¥íùí–5=½Ãï:¬hrvF áQ_É­7‡»šà@ácéÙPpúyÿ̱màפÔ;¦À¨HèCÃp¼ÁÈN2ÆQ“³!(M Fg N‹¬ªÌ*—-Çs^’AF§‡\o»H¬!ŽR<‹¨á^·+2¼½dËÑP‹dl xåyfƒr"|a¨{®íÛµyz*U;ØaCR€…Ô²Dl¶I7-j\ú†«eã-bÕEm^š™4¹0ÚsT4º%ŸÉNªG-ñ á—k@ƒÿ?¬ƒ#Ñg¾5¿*òYŒHo·êqfEs"UÖM¥Öa(z™6þ#꺾ßF©•@£¯Ô=¯Ye^ 6`éo¡VûÁš'«n<£ø‹YD_P$gÙô¶~Ï@Vi­daèS%Ð…&Æï.!¾h½cÖïîqd’æÁñ Ðî8ªÌ…¨-ø-™È¦‘r>ŸåXoÙ! o󈳈‘5äõ"ýpeè·”…—EåY:îE…Tû¿Ózy#oNH§o GTôr§–›6ˆ@§ L~|B¥>Äncýá³À`µæSµ‹ú¨ ÅöÀ^4Ð&ÿõxÚ.aÇκAI›²4·Î=­Õˆ^§ÈÇ"mê>+ VO‘û€mZñ X¤þçéþ*H=«áŸC9›ôìI]f0t¶òQŒA¬¥[I Táp³0PQ_¶Æ.•j˜ÿžœ< ^¼ðUiH[Æ˜Ç Æ¹w㘾=z[YàáY´–(]/•^þ¯“xCXKÕr·y(„b°) VbÛž„Ûžö,fBIÔ$³ †,ïlªõ]Ïk~ÿc´#Zssƒ°tƩɧ9ê@U0oÞÝ΀_‡˜HöÈ .‡Œã.¶ãr@ÔbR¡C·¿f™HZ‰ww—g>Ç]ø¦\÷\s+˜6Ýè;–œqÀht­Rµ—šm»@k5«pÒê× Lç²s€/ÅÌùˆgo‘5ÅD~xõÃìÇ´‘ YðÀÓV‚~ÿÌðQ™ÎNRiˆ¡²ÚÈgôBwmÜNÏ]5$è0y@µ‘ˆ#[çÌ §þüe|îÑq§­3ŸB ‘¨é.â¦$W›$c)(†®éb¹Q çƒf $ðâ£ß­ 1žÁ÷¼A H¸ù…JMâ‚ÈÈH‰ädV„Ñ1s[¬ËoÙ$DHÃcQ't0Öç³sì““ü²G_y›v«yÓ[ÌøÄÿ‘wÛ‰s°ÈÅX§œµ*s1"Ëo§Š‰Š³f&ìêÿ=d©ªG£$I;þéåââ„·2w^¿Á oaDþM—ô9³ ì!dn,ÀƒÜ…6Fÿa{f'Ž›´¼Â]Ø £ûî0&"¨,í5Ê+RõF¿M0 ö^¾;ÇFŒ-`‰¶¸ªç.)†ÚÊ×|E>ºb¢ B°œüijYœöØ”£E»s.Ïo‘ˆâÁ–ƒÈuèHâ‹`ŸGÅÏpC­|qo‚¤Žë¤§#Åuf•æaLìz+m±îgÛçN |PêŸfDCfÃøšWZ}ËŽÇÁò¥šPƒ¹ìgžkßÉÏZ’FFåz7—áãÇø¬ÂŒ®GÑÒ1 ̸ï5õ‹" :‡•æs`mfîËê&<Ž}/Ñêáíi@47šžÂ¼%í çå«Ód¡ub¥ú§ekrK'ÀãFÂnVÒõ¿=swTzá<õÄçð\2q59Ê#'1K#”Z2—üd¬ßô®¦ Bæ£ žJà Ž+Î+´ëÓ²¾òž($·áî·¢^„ä“8µʺPÄ·øÚ OÊÈr=ýçb»«hf5!a¥B >P5\7ÄOÝâqqУU5?GkI°ÐÕJä?â·s·º:;G…&ÂTI¶Þ]M8×éõ”4hðÿšAÃW1É5ؾîããôé4ÍõqäÉõY졶ƒº-¸LriNâi ?!NŸ$V.îgáü³˜”+às‰cbzݯX"(eæ¥T]ÌiØ=1_¯BÊ›¼Æà}/1ƒ3ä9'!-½~†Ú £¾ÕCôÌŠ,°j#w´Ob#• sP£{æi<- ë' Ú°í±Q¦DÑ>ÎCrÿõø$ÍUpI¥ŸðUf*j:s8x*¦í yìéOÀæ#œl"zý)‡?pÒE_@Ô ýý.8i2¨‰,½v˜}au~RQ}¥hjÐ~bœP²YUp#A¹}i{ ZµUyIn6<¡GW]&¹iMX%œ6 ¥ÿX8 øk;V~‹&mÓAîÒ©ÖÆÜ“@ÔXOÝ QSüYURžkèGž¬x|o€66DÑB±–ÉÔAJYzëñb”b2íîDÏ\ž)d×:hËÙ w$}ÃPÓl2ÖCTk$¤÷mÅÂÖzÁ Ac=²Gc2QeéLv@lÀ“oj¯áÜ©ŸUøK3úi2Oñ_ 059$NˆpRL8uXîR¦ÇAK5,~A+~XÃ%x„ {gð‚Sè¤úk~ß]ÄoÀYâ§7ν“ZL°rÉ@(@ ˜æYE]ðgz t}-uç¾ßlh#/àT­ÙÏ܂ï|@ ðÁcÐë-™[«§`™ô·Riån}+p;#Ñ‚*H-«×ˆ˜“dì $nKC‚u!åvßò'7(\âùžjÏ/5$X’š£C¿Ç¨‹rhÞ@ŒnD´1½aÅ£`'œRx§8]£«7;q:È4ø6‡uŽ)ÚÇBDE^Vªõ´SF°ýêâ~ZdEÞ× ÅùÓk¾0W5†¦jòª9{wJ 61Íòw7×'Ä—/C «WL+ϦÐ)µ3+ÞQIWþ- eD¯Š‚½ ×\’R½Uqëèçûr`_Ÿ †gë7Ò¡ù¶‡)gb×òøâô/ªW÷±\X´ù–\lb9u²1.‰ï½(3í+b³!Ý3ˆöJ‘w‡1hß")MaQ^óT«# p æäoóQŠDUãA!¯ã¥1Þ­€ ±Ì²(Ë°,j¹MÌÝ0fdf§!ÞVIçykP|XDRE! $ÿ"÷SP.F~GÝ»(çØšf~•tPFë5÷D¤ «ÖH¥S<ßénh7r3{´I¦ŸqÍìUˆsWK`nZÒ1É3gvt¢ jÆJA6¹fí îc^J¤Ú{Lº¡¼O ¨O F¹’ÂÆhl&XpqŽ[ñ9ìÇÃgäú}!Å}Š5YVø·jguÌm×+#º1"NUML5¾Î{œtŒ–uÎn] ƒ¾Vw(wõ&®ÆG'hDÊ”/„ á2Ú&¦÷I\DƳœÃ?LŸ›80=År7×X½Mµ/x÷w..\Á0½¥þ 4~—&ýE­PKWAÍ6ÅV™†tøfØ×¼ÙÈÞ­†x¹3ö“8;°¼è¿—Ê!hŠP( òrˆÌÔ¶g˜Ö.˜©~³QÑߦèÊÚé…*áJ4|€2ˆ«¬p4ŸNÏ`gmU&Ü nT©áé×æ›ÅÄZë9%MÙ@ ðžðÜ5êW{RVþÄ®~ˆ\‡j¹ú‚q×|R© lj x/v>7OÒGŒMjj΀´g´jƒ}íиáp+Ý0 F^ƒ¢O³í#ô`ùˆ¤¨Pì}øè´¯ý8I ¢<ëd—vuŒ÷Å8{âLµ?³_‘A1¯¶Æ,¸—XñJ/ËVOs+vÌ­QœÃ:¥— ä&¯D°,O¥çÝ4"±Ð´¹§OˆØ•5ù˜N‰Çj쎴Ôoö4:&—óºÀ“꽌¥K‰aAi°å$þ’‚È©†ÚOÑæ)< e™¹¸ê> ?åN—r“èUÁƒØ:~dîP¡G ,ü$„Š;­5Í*}s¯pþE8 …>-–‰:ül\ñL©Vl&¼P‚ –E-ô!SÝä@Š2G7BlT9é»BšÇ~_W^A_ÿø8©/eXúñœÂÁ%>Cçë(I›³©8ß, ES*ïÂæNZz?ßsE¹x«P¡ôÎYíHA•–üüD—»äì "[ï—9Övü Ïj<Ö@V¥h—;öQHNßO›y.ÄO·Áè…5ù®æŠŒžžmÛ…³ôFñ÷s58mêô™&€ѺI„×¹[[ȧ調Ù(ù VÊãíú ]TBf‚ yæ$.û`¨GGf&èÜÖ˜¯6Ù‰ZGø«¬Õh7‘09»1¹Þ Aw‰›ð*ì0Ïk)ø˜Lùýz²²ÞÛ¤¸~µ}«X2Û M|¢šâ4p8¬Š7Òqdøaä¿ gø"$m•¯»åÇ6Ö%ìã¤f´ò|R2Π}Œ<– ÉÍ#×Bï1‘c?µ5ž[ð$GÉÇ£r³ìå$²p¸JøØâÚêiÅÊyR±T|ËƺZö/E©‘Î| ‰ß7Vëž:Emu7‚bDd.tj±,†Xã#â ^PA‘ZÓpÏWê¯Ûl43yÐ-'yŽZ…hÔú–Mb¥“ÿ™âäómºržFrË&ºÆ¶í½NÍÞF?Þ‚~ˆàã“6§ %ZùÒ š48É[oy[Ÿí8üG[»ÆQíjÿþ9‡´8Áp.z2tšví¦c¼¹g‘;m›úÄhä#aÒ.~„[kñiëqT&Á£×ÜÑj)x%´ó!Ó%Ï­Äæ.B¯ÉsÔ2?8y€UxÚ`˜ŽäO¥°ï ÀØÞÀ…WÐvƒ„`YØZchê€U]5Úш ¤‰.?z‰“Ð:ɉgŽk@½{dÃ{2ø)zMbR•6¶R³¼¶x…*¢yÄY6©ÂvZeć:j[¨ð*Â^ìJÞK{‚èºAS™ páí"/×giV3c6ÄçXû­”®( <ð"¡›ø˜ø!tH%¦/—‰ÃLÙÈÍMÃ[»­c™×Âá1@&)|vßÄÖ›}–×}C_,φ¥Jè•u2úVôè-#æN‚¿¥ª”°;cûÅÊz¼Œg‰íù'Œ,»C›ßub®–ìι——íY½;N3Ùºaе Jª¶=¼ ‡sªÌLIH2!K÷`ÅÁ1¡3ŠgG³‡bÀéd§p5Ë>’ÞxÚ6'Ä"UæÏ+Þ2.Bsa´ˆB­,c£$„Ý·áf\SÁÁ3<×Õ“ü+ŸÍ¹üã(E;ke‰®¯™Yh¸„<%¼r§D&Z¾Lh¶¥$+SÝkôü *±lIp¼Îàý`Xë/À„„‚szëÈæEMÏXbÊCˆßíIjwö<÷ë?(‘˜h´éÎqœ¾.Øa¶”·jž`órÛ ò@±€OÈ©•÷F´ÍQK+B¾D²¹ÑÛ¨wÖ\ µ~LrçvÎïcõéüC›“8r—/A2üÏ:DÜ)²Á•ÈT‘UìÜ×F\öOÞDé› B›òéøìö‡ŽÔ©]Öˆ5 jÏú³YOÛëEmûù­TÑT-º‚&DBö@$%·>“ñA!%XIYh s|"Oç~ó]rGÈç„Á;ƒŒ¼¼v!>‚jL榿ԫ/ jñeò ü8-R‹2Òç\nɲ|.8uo¹<ÝI!»ï`_>ø­ÜÙ ` ^hrÛ î9¬ðæØO]ðS˜a“)žalÿЊõK 9¢éý°¹bZ¸Çâ²ãŸœÓH: vp™Ç•lÓ¢b{êF÷ÌpöˆJ*ÞÁ °Þ( :L÷M…ÅoÏÉÞÌ~÷WÖBu"Ø™ZŠyŒ$œÆ›ý­F11µ2ï¢2ÃÜ.\š¯¿ùHFγœÇ4/LtH+·xzöxžn2ZXú\ádˆ=ãÝrdjóp§QëbÿÏ 8IUß8 tr)n=Y!ã,_ˆÓK•Ô´iÔŒa ¹:ÀÇ2Üf•n”}¸€à}Ÿt«>Ö M2IÙ v[¨†cg 3)[¾ú[ £¿‡¿¶¸æÊcñ1u›÷° ‰.7ÿn‘¡ ’ýôÍ7Ö}RnÔ n–ÐÍ«…hØ@G†v…´Ñvº±Ïñ&FÀsé ÒËòµEhÛ¼cú";Ì,²¾ö™]—Ü(‹oüÈÏZ\'÷þ:h@g®òV'gN¶ýe)uÅ2ÿ«Ç‚v%>Ý`†ñbˆkXm3‘ˆ³ÛC öß6YG@ åv1àaI2vÙ 4}' *L~-ä./ÐgƒÅs_”¸Nב¤ßŽ á•;äãáUŽ#þ&Úà;È[õÔ° yú‰ŠØžLõfµê];b ¼ a_$<ÓãnŸú¦|ÐÞxÃ*ô÷'ñ q-¤±4$z?’´íG„n@~O¡PI¤O»ÈtqàÈ4”²äGf¯Gýqr±Ž[ÿFŸ›Å)Ÿp#bw æ0ð4úkO>‘!px@b= ]~¾¸Å%rÝÊèN&”)¤ 6ŠÇcw÷ÔŸÄ7j÷A68w·H]¬&Óÿó ¬,Z2ƒ‡9”ŠÒk½5ãM 'Þ‹>M£8±;×ö;"% ]&V}W3!®ÙMZˆßÎ u/¨°õaïÛäIŠ3kOUé4Â}zs¾qD9&—,’q7y›R$4Ô2)ο2s¢L!\¸>u¦zq%èQ2+¿}?#ïÕ€T0\Re.ý}ÅE Pôðø›ól™´ºÖñZOËi¸‚È·ò$8úG€ÊæwB¾¶YßžÉ4EÁðmZlUY,¸ÇÐØ@'Ù]öø„Ý™ØÍmûÿ®$üv5tGá—œf™Û14*¹¬ß±î€W€§è»¦A¡º¹€”7ô^ ¦ªåTÇ…´PzéAî²½¾‡Õ.Vl/å)Õ–ïá–õ¡õ{1qR–>ëç¼±^Ãjßw50‚3É›SŽÝ*rMLMÔ½Œ±Æt³@zaÎú£ïÐbPÅ3gX9©Çe0E•9çœs&û<àßö”TÄÿ‹}ù€7²„ÚLÖd6*¢àòn/§¹`Rá!]Rb±p´ï# ¡šE®º©’—³8” hpŸì»ÆcW^j\³ø^(Â)žfPY«öa=“mU~sªâ ËìæRȲÊmi'üZ6x¼-­¿=Þ̧ÕÓœ#ÌÀ˜crUÅ=Èÿ;{!pйxR!;Áíг¬Í€4·g7ÄM;ÎJ³ƒüªª_³‡2/X0 _åìgZÄ ;„êÃ3Q¸h…æc“1°jÿ þDsNUE½Ò–:î]Èö]1PmÇ"¹X,ö Q…úYÜy½_~v€Á!ÎãÃñ%ÀÕQÿ ¿´-MqQg[’À›^˜ïkÌ%µÙ& 0c1ÆI¶Ž*ä£x}·D³gÞÓäD-ñ¬¼A NKÆvŸÐN+>ë½9·Ùl_¼DÞ-ƒÿe©÷A1°;uòâŒMã vÉCKÄøËR¥*ää¿Ó–19æO¯†ÑV€¿æ^Û?ÐZ n9íùþb?lšœ=¿%¨TržÇ8ùkð¶5ÿ µÜ—OWXo‚3[º¶çöÛkÈd•$IÁÓ¡ÃáŸo¹·ž=è"4£q?ÄÝf>µëFÚH\§Â³ê‰E¢Jº^ÍØwhÒ«&xC¾4¢=R"ª½òzü°V®â8#Év\÷Š!¶ïg# C œ ôÃlvUQ§~6½8zPiˆÞCö~W+Ú²×>êM ±`×øõq!ó${¦†M4où-{?×#düTÑ’ŒG-ÜÊKdÿTid_ òË­¬S‰å*+LÅ e0â7Þ$NôàìÓÆÓÖüá °Õ";®8åµ6¨@îõ'—i.™î6.@nrÖ*ð”(v˜ÓÓFßé=ÓK»Ÿ8“]îéb¼À²ïé–ÍVúnq!ëÌxvcíø¢%Ä&½I_„Ý:T™Ü(ùÔ8Æ…Ú:Œ†ÓF[}rxÆöü«ê€9~ mnXcTg)a6¡çfëóƾtìy e†ˆ8æBÇ"¹Ó^˜f»/ÖùN~#üó‘·psZh†|0$v¬­}Ðçpê{6L NÜ\^Ì7Úaé&ó²4?w-«Ö“ÞI()$ϤƒhÙ²*æIÊ?;/%vǾ°æqLRÀdñn{Ä°`™¬Î:½SI´¿Pú™U©å[InU¾ß¡•³´ÈìB@s9ZÛ D‰Õˆ.Sî‚»ôXëIÙ¼4%í•Æ9葱9š®oýBÓª¯š†·ÒZ^˜-´VH{ˆ«¾Å›y_Å;ƒ ZÂcõDݦUÊ´¹SöË*G„/¡d¨§úyXû­ýÞŽ®vþ³_\–2+~¡6æßú3¶a5R}Wý«táÇ9[ nŠ¬T? ÷bµ=#7Š{å”qã\zJL÷ÇpROÐÂÍ'–ÜAú™ªGz×cE=md_É’>vŠçžÂÆ…{Aâ%¦à‡&“¦»)Ðiìx2ö_ðˆì£Ûh‹IM…À\©YžØy©™…¡­®†ˆT€M”%\ 5 ΗˆÂ‘f“̬>1_/šÐVEÒÕ#…,ó|›É†±.ApG›ÐÕŽôtèx×ÚŒ\)0ëgƒlº£‡—¾-¯Æ ÇÆŠö¬(aÕÏVd"QŸòv ³Yé6AÖf)ÒELÑÂzUÌcãU?@ÖjÑÓµ±J•2܇k›‡µ H\R™6ßéïÖwÁ„Pœ–‹ôB o¥ÒGŒrT,Y¡àÞœ'ÿö&PV¯ð]|eW³Ýœá a°wÞæMݨ0ñtòj¿™Ò©‹ý[€Ð¥Ísfï¥@º ž\p–*=Í D``Väêm!Õ(«¸EéP~®Ð»‚vB~§ë{ÒóýbaMAå€kÑ]vˆÏ¤ÔÞ“m%Ýä­õ±&‹€²ÕV‘—ÈnžCôw(×½ª\üqæ…ÔګÿiÚ>d03É ð÷Ø6 dÅ1iá?hÓÔBè—BØêüu ’Š5E*};Œø¾jÁÛh@v?jÎiv‚[2ÎùÇÕ#hãQK” +Î; ¥¬ m±T~u½el°Þï5ΓôæÄ÷¥ù=ÇXZgw«@ú‚ùæ5“ЬE‰ÕöÛJRT}ƒº-Sc£JAý`‚Hùt@ ¥TÅ`í“%`õmVn`áæ¥:k&0açESÖcƒZ_^™>Kë ¥ß£Øˆq6óº¬JJ˜®Î€GûÎ?RÄæ'/ 7 Š!Ú8ßòÇ2[Þ³Pùù‚!ßëæÀÇ¥°\ã@w\ÔfžT¡€|îé¶é^¿ ø²oºàý¼¯­*lS`8„·`¤Š6»H½e`¢ÝÎ3#Ü}wXµ I|6mWàS°öFÈL° årÓR{³¢sèé4œø~dÙJyÀœHV„Yê)UÏІ²¡T7‡u TúoYÚw7N¯œ†ôLËæÌg!ÕC°,¬Rw)ù€#£àz»O2°·; OΰÑ2wEè¹»!’P¤éžß cXûèÂðBˆ.5â|8eÞ¶8ZöO–ñ?R'ÝIáW©#Ñ Øî ä]c’‘ñ£ÆsÍrqE¬脆a°WÕ¼¤ùu!E*Äç¢ÚÖm¢Xﶮ¬ Ð÷O¤¶çÙß QAWDÊÙ¿¿ž å¤×!Î8r;ÛúRõd/LBغ´7_ª‰ºQ%aaM„jÂç¦n­ò¡°,ônv& GV›vúHl ¾6”±Ê›õ8ÍnÍ\Ä($¢ 8ç²ÀLfíòÛ·ð@¬ú—“AœèÌÄX7Kpjs1„ô>c+üõw:ØËÚ›·÷rŽ<‚lº¼§Hçláy‘¯èR>2qoâÝåÂ4IU/V¤¼¶y,1Ìó…šsДŒiž-*tÒlYl•¼—´OE`>۴ѤwþÊóæQ¿ýHßî$æŸ(ø0þS:nB@ë˜ ,i L¦‰'Gd(ZZ7&„1æÔôÉÞµý0‚{2CWïÉ% hWUÕçÁôG.;€E.>MbîÆLNN…àó;“¦¸™ œ–ˆ»‰ktZÄn¦Ô­ 3†n+Фj÷ó"-<+¼ Ì$ž™¢± #›ÓŠˆ\ +… G|…€âR‹Óv­ Íd k¦M ŠEãî\´œšº¥!ìû'¼"‡óV:ÖÞºe"™Êኒ`cC’‘ôf‹:Gðg°ÛDþx–¡òSº›Æ^qÏ‘. wÿc·I>aP‚„sŸQ|#·X¨ü_D lt˜i…A=AåÞŸ” ÔeüëjFmW;#‚w^wmQæ‹é[.ëìS6YF¿”t çnB;U×.Õ‹&NS5²š(†Ü0&æR›jEAP;O’‰iïô];è+.¬tò’ÔµŸ4ÇAUYv T‡DH!î JÔS[t(¨ÇD=dm·z<5ö‚Ý Ó Æš Ö~l¯6Ò 1ŸEfTOn[vfm@Eƒ  )èq¡>ÌÆj/<ò‰6¿Y(:ÝÝÌá,RÆx‡á'ufI‡8ѬÁ.2¯titv®Çý÷wžÝJÿ®>hh^gTh~^bª RcjM/qÊ[”l1Oá;‘jÚ„YÄcë·ŽbtfL±;JYɾ,R@îT“ŒØý0]+`Òy¨–9~4ñ¾"=Ę²Ã ÉJØÿà¨ËrïÙ7?ãê« Z'´*»›h×ç‡iÊzèçl Le~>”vÎzÚI±«çëßUœ»˜é•8£ç$õhx#.ÕtN`37rÞ1L`!þ )š§}=®Å­*÷—4G ’µÛ|ã9›D% V‘Ë“÷ŒRŒê³œ¾'¿Á;ìh³Ötÿ¯Ô:`h;®›\<¾û#&í"a~¬ !|V2MRDs‚<Žß€Òœ‹)±Çüg¬¹J‹,ÏÜ™Ûa •aäŽ#JrlO±#»¬PJç0ÇIq`>;À<<5ÀïH¡ÊJ¼rz‰Í•8Bh«¤Óh̤ öS!Va5¦sÚò$…°oYŠä„*Øp÷ßmE©.7Ïä•j-±ŠuÜ tš[|4Á†óm zTåiâuöw¦Bg ˜#sÍñÖ‹do‡g¿À~|ŠGlÔ0ë¦TùЮp8”ëYó¹Ù0P›\`ÃñZ¤vùqÁ{ p׳|ÆlJk„ª¯6º/EtÑéÐó8å¦$ü`ëqÛµZ&>C$w¾!2u N'òNšë?"R&r‡³öpxhf}škºisÛ6¸…صVÄQ*‡õQ^9QTÑ–¨æö†¶Ævt„~ã½rU§wì]4¹_dú[N)Tž5(_­Ë²U $œAxA´[.wšt¬5š:-'#ÓZ‘4[ $Q€¥úæH¥)s;æJioWÅÅò‘£X ÷$4g ðïîJW}.k ¾¦#@P@]|0[dtmpõ.â3fßó(sI9{nNV” ÏjRW.#´ÇOu|"#Uo’é‰6Q¸Ê'$^) ă@•HŸÊz¯uß/`m'héo…¯K3wëßëG¨èœÏúî¸ Ô€¨ 3¡_e”+ÞX¨2»)i‡ƒÑKÓs=S€uC¨Œ6¶ÅÊåTsUdÓD©d( >a±•ÒL…«áz Â@:,]ÄÌ—9s’ wa^ô®Ð=¨åXc ~I01ïã4uëh‹aî£%³Üzæ¾â;ÒÅ:ÌçkiV)Êe¼÷Ç^ÚúÒ–wi&:›°#8e¹«ÇÑ'ogy­°f{²jÓe.˜¿{îTÑ.¶…À-e}ÔJžFWcÍʪc‘ªœ!Éð!˜üŽxAµ4?DÇs¾îk Ûšw^XÈcôþ2Ž_fjßm˜Ä•v<Óu”š_xtK§mR›˜ÏÛ¶ï¯i_—8%Ø3ƒmì)cÈ%A'lt?¬üf¥iyg²éfªüêý’nQ·!mqÅ=”Š_íÔ$/ðufîcfз5a]pEbáZ'gÿÚ À`w)NLËYÙ|Hr^Ù¤Ý  í™±‚j 2c9fê^Ü{a:þ@=Ź8Ëe1¤SË/ŠÕoJÌ$¨k)NB-â«Õ¨PkXòúYÜhõ.V ¾ÓNp(‡À wvÎÉæWáp–†¥kùP’møTñ»œ$.+%Ý¿dzÇlÙIk¡Òó¯<:ïAOê¶Ð ++ƒ%`ƒ‹}$pžFÓß,T.ó°„vaŒN•$"+Q-vd€^ E~#˜ÃÀò ù–e0/ŽPZVBomtI2°­â{mäceþú¬ÐíHhxæMbˆ'@Ù«ªM÷—ì@ Ë%W%FEú£§Ìíô-rdvgWðˈN¥‘׎âjŽï¿aŠ6ØCÄGÞ2Va0H†SŠ¨¶o\ ëk|Ú;ocrµÅõÐÈhN‚‚içNyIÑÛHÐMDx QFjímN§üs¨Y|U±ìŽï0V.w áFó¤›G‘`3>aÐÿ>ažý„aœ4$ŽmûRø 3š”ŠG3¢%a\MA#W0ô_§ígjg‡0`+_·pÒGixVTEŽ½¿ÜßýhLZá&9ñ§qkÀ ¼ªÿøà‡ 8c&Ò©#bÅPÞ˼I8+ŠCy‹Ê@?zAõ”ˆ¼ˆH³ƒ‡h;¡jCq7aü:c:ÅgÒ"ôùïHµ·a¯\bl¶F2óF‘[ $ºL³•øE‘›9¹ô¤D×µÿ3¿Æèq´l}ºÞq.œqî“«þL´bfG H$õç'ÛgH­’O@äÃa’)»bs,»Ó|¦0EV«.Õp« 3HÑ5æ-ÛwYI˜Ôˆ¸:ÂbÓ6¦J ;t36vž_8wšgpØ&†”sòPq6u’„G–¢××"ž4'«ÊÔÙ"ªl1.VyÝ­Ï kÕ˱ówüwµ…*1_&mZ»²½ð›W 1ôjhå/ø—ÉD[ÿ5àh–7:r~¬wRBE›\Ÿ†.iÅjZ3yÔÓFcë, cÊM‹*g8ÕÇÖ¹Á¿Fî†8‡ |¶¯WϨê ê=Ë÷ɉ¨ÂÒÄ¿‰¬}i7ŸÎÏÃÐXz4éøÝ$Žß„¸R OTq+“(éŸÝCÞ=røó¦ð2$Ú4¤u³@øĤXÚ¤ûT÷[ÀÐJCTŠœ¯ªO{±ºp>~¤ÿÖ¥ßô¶¨Éµ~ßdz·ìß^«F%1_ÄC¸`¬;¦ûä—«0CøàÓWyY¯®!ž­ìfMþè±› B²tÕ‰ßmü/Ì)†¶Ick†´Œ«Ñ±‹‹Mé1YÎÝœ±³?pVêõµ‡…ˤS•œIH–VÍ-ÿ¯Ïr—­è€@¾1¤‘­aÒézÏ\•wP#0OªÑ´“1 ifB1uZÆ Zerç¥ c°OïZ úVqžç µã»à%°·y”ק©X¯€Dì10’ši¾. ò3sƒ éæ<`˯ ¹ØhÐ+%ÿEpÏ÷ $3X ȹÀ?å’cÏ"TŽx¸Ÿyäq)QÛe„z5cºÓÌdÎé‹)Áe”æyÄÛˆÄü¡³xÉÓÚ–¨p0Ú¶íãËÝ€‰•—œßÈÈ&õAYêÀ¡ b^7‰Ð<ÄÚøo46&vWjy$q´6¼í„Ø~Û·­m)Gß¿Sj²ö{ Ii¾ÔLÑ{tFû&C2 M`fgfuìÈÈÊo™…û8í1÷Gav<†¥IÉ $zwƒv˜y8š"kfŽek}€t$Å ˜âTØÚNáøé>ˆ* l"™e. $r tÒ±çdü(Ѩ{Kú «ž‡vD¥,"ï_,æÞƒ @€x©¹ôô:t![ß‘da¸xH˜1#ñv‘}\»0]Žda×ë%âÒ#> ªá™à×}¹@nÆ"©šßÙQw9g&|®piþ!apþ‚€J.©q:(áa#ë[i]NE@ãݱaÄ%£DÑ<ð’šZF|UXEý­V¼m<Zì%öæR>ØE -GÅ°×öÌ/9—ÃQ„ù½¸ô†ÚŤCOIJcÒ_op ¡si–Óç/'æŒ&£`H뤬Ô9A'bØG$««[4ÆÎÂÓòf?,|9oQ¢ôf¥"‰“uùÎ"rð‰*§2fؘ4-Ò1e¿ÜYš`ÍV8†Ðßh ÂX3ÄÕêÒl Ù3|óùÒ`©Ý=R¾c³'æñ"ɦsÊÉõÏ_r½¥ý5oŒ|fÉQuö«kvŒÖ€Ým8ºÎfìéf£lƒzꨅâWhØ’()Ùæ#úÎhݵÕg Å#u_ðQ@´Žvv†n›™3!GCƒUïñ7¯qaÉÍËߦ;ÙøЛ r”Ó×#4uîÅH¥OQî·›û_G£Ê®´ke¶¡PhÃj%,e!¿ñB?ÿÖõî"·ñ"k¿C [”œ×ªÍ?0M¿·n„µøH¬f"ÞK²«iåzV®¶ æÜ`/WcŸqU(ˆ÷!¢Žùv|’wbð¶4r4"w™îL–Í êrþý¢5]Âço…Ô±$/½œØ!­ 1Å›Ç%ÏÝô;*š¸ga‹kþ’æ+Õ×È.U¯ÁDâÀRרGaÀÖ»(«gdnß™ðÉ›ØÑ°ò×ËmŒœçV·P9£­îQtí¬%£KQWu#÷Uƒ})ãà&+-hò~æ?Öã Ÿ73S$vSo:g)~šX,•×™GòáÙêôi¿äØ¿¼¶ ’ˆp 6t+7l|l.~jë²Ö Ö ‘W’šŽEšUôº|®'%ÿ>°¥op90=ì¢ÅN]sHœÎÉÚÕ”H^½Ÿì^ä cиüÈ¢û! Œ»ÖW˜£ÃÞãùƒ§æ÷1¨‚Õø&;Šèõ‚9Ô•‹Ì’¤åº ÚζôI÷ÒéþMáÜȼ®üα¤z[Ý–¬û!œ8$÷=ˆ’Äè&Aæ(ݰ篞ýâÛûÓ‰fî¿e5h‘—¼RZø ›¦ÚŸ¼ÄM;ÛßT®GGmÿ§ñ‹€ôØ·›¥”ž¶âΑþÙ•?Jêè†÷Õ„Ìߪ7”RÄñªoeg Íïò`†¨ã—†S”—ý‚҂ßÔÇâbd‡Õ¤¹#ù¬ÄĆ@È¿˜qY]Èþ¾ÏXN¿ÑߤüñPéôª¹îèÖað9õâ‹Ú\ôöf{½ì¦s¢üÕE]bÁþíô»ã´Í­¼CÁôÎè‡åÊbö¦¾å¹ã¸ð„~›?ñ )¼žðxòžùQ ª±’Ĺ̻ç–íŸÙŠD$ÎlœÄ®ü¾ä¦3àÄÛ*o~ ÆH_iys3ÓšœDÁ!|€Ï?ù ~GZ"_ibñ$\ïû}B¶°ípÙCa›êó‚–k>g%¿z2Ó`$ @°Ÿ!"}\[äBVhž\< #Þ` x-#E!çQ Uv 6'WW|…Cy^#{s| y"jÊ,r%!'Õ#f}>C¦p±s $‘8'aïa_R¤"LNI¥Hd5V>o"74(?ö…šGHˆÿJÿMODULE Jump_CLD DEFINE VERB JUMP PARAMETER P1, LABEL=USERNAME, VALUE (TYPE=$QUOTED_STRING), PROMPT="Username" QUALIFIER ALL, NEGATABLE QUALIFIER AUDIT, NEGATABLE, DEFAULT QUALIFIER EXACT, NEGATABLE QUALIFIER LOG, NEGATABLE, DEFAULT QUALIFIER OVERRIDE_UAF, NEGATABLE QUALIFIER SETUSER, NEGATABLE DISALLOW ALL AND SETUSER DISALLOW EXACT AND (ALL OR OVERRIDE_UAF OR SETUSER) DISALLOW OVERRIDE_UAF AND NOT SETUSER Ðy ÍH#e~ JUMP025.BCKo•N‚[SYSEXE.SOURCE.JUMP]JUMP.OPT;5P  «ð*[SYSEXE.SOURCE.JUMP]JUMP.OPT;5+,o•N. / 4P †-‚0ÿ123KÿPWO56©¨°î ˆš7Á¹î ˆš89GHˆÿJÿP!-------------------------------------------------------------------------------!L! JUMP linker options file - used simply to embed some version information.!P!-------------------------------------------------------------------------------! NAME = JUMP!IDENTIFICATION = "V2.5 960917"!P!-------------------------------------------------------------------------------ÿÿày뇌s~ JUMP025.BCKZ•Î‚%[SYSEXE.SOURCE.JUMP]BUILD_JUMP.COM;15P ”%*[SYSEXE.SOURCE.JUMP]BUILD_JUMP.COM;15+,Z•Î. / 4P è-‚0ÿ123KÿPWO56dMUÚˆš7|¥]Úˆš89GHˆÿJÿ $!------------------------------------------------------------------------------ $! Compile and/or link JUMP under VAX or Alpha. $! $! Optional P1 parameter value: $! $! None - if P1 is missing, compile and link with NO TRACEBACK. $! C - if "C" is in P1, compile. $! L - if "L" is in P1, link with NO TRACEBACK. $! T - if "T" is in P1, link with TRACEBACK. $! $! If P1 contains both "L" and "T", "T" is used. $!.............................................................................. $! Author: Jonathan Ridler, $! Information Technology Services, $! The University of Melbourne, $! Parkville, Victoria, AUSTRALIA, 3052. $! $! Internet: jonathan@unimelb.edu.au $! $!.............................................................................. $! JUMP has been successfully built and tested under OpenVMS VAX v5.5-2 and $! v6.2 with Pascal v5.4, and OpenVMS Alpha v6.2 with Pascal v5.5. $! $! With new releases of OpenVMS, it may be necessary to re-link JUMP. $!------------------------------------------------------------------------------ $ $ on ERROR then EXIT $ say := write SYS$OUTPUT $ arch = f$getsyi ("ARCH_NAME") ! "VAX" or "Alpha" $ trace := /notraceback $ $ p1 = f$edit (p1,"UPCASE,UNCOMMENT,COLLAPSE") $ p1len = f$length (p1) $ compile = (p1 .eqs. "") .or. (f$locate (p1,"C") .nes. p1len) $ linking = (p1 .eqs. "") .or. (f$locate (p1,"L") .nes. p1len) .or. - (f$locate (p1,"T") .nes. p1len) $ $ if compile $ then $ say "Compiling JUMP source ..." $ pascal jump /usage=(all,noperformance) /object=jump.obj_'arch' $ endif $ $ if compile .or. (f$search ("JUMP_CLD.OBJ") .eqs. "") $ then $ say "Compiling JUMP CLD ..." $ set command /object jump_cld $ endif $ $ if linking $ then $ if (f$locate (p1,"T") .nes. p1len) then trace := /traceback $ say "Linking JUMP ..." $ if arch .eqs. "VAX" $ then $ link 'trace' jump.obj_vax,jump_cld.obj,jump.opt/option, - SYS$SYSTEM:SYS.STB/select,SYSDEF.STB/select $ else $ link /sysexe 'trace' jump.obj_alpha,jump_cld.obj,jump.opt/option, - SYS$LOADABLE_IMAGES:SYSDEF.STB/select $ endif $ endif $ $ if linking $ then $ say "*** JUMP built successfully ***" $ say "Don't forget to install the image with the correct privileges." $ endif $ $ EXIT 1 ÐqnÍOÈ~ JUMP025.BCK°‹ƒÛ‚[SYSEXE.SOURCE.JUMP]BUIL5SVEX&bty;15B ©®ð*[SYSEXE.SOURCE.JUMP]BUIL5SVEX&`_y83-)i”`„§ºÎ . ./ .$/5"d 6KP†öè-„)‚-‚0ÿ21ÏÏ2122633KýJ¯4þ/VQWNQOO5=75¡©†æ¿m¾¦Ä wAšŽæðص¾,x€š8899H\{(:…ÝFGIŠþJ·ý÷µÿ5ûP!-------------DCDULE Jump_CLD DEFINE VERB JUMP PARAMETER P1, LABEL=USE~cM`$,[L+-%]%2xWOI@NAPMP)mCeUmUPRVK`1odnSnx/KROvrCko tWWRDFPWo^m',*3;'E )Ba>eTLHY/-d~-dXNSa.#T)nflqe5;7ep^ t-:s4?)+y*dvomzo`jobba|axk||gjkq{oha|}kz{}k|$jg}obbayaxk||gjkq{oho`j`a^re”m&1:er: Jonatha¾YRidler, $! Information Technology Services, $! The University of Melbourne, $! Parkville, Victoria, AUSTRALIA, 3052. $! $! Internet: jonathan@unimelb.edu.au $! $!.............................................................................. $! JUMP has been successfully built and tested under OpenVMS VAX v5.5-2 and $! v6.2 with Pascal v5.4, and OpenVMS Alpha v6.2 with Pascal v5.5. $! $! With new releases of OpenVMS, it may be necessary to re-link JUMP. $!------------------------------------------------------------------------------ $ $ on ERROR then EXIT $ say := write SYS$OUTPUT $ arch = f$getsyi ("ARCH_NAME") ! "VAX" or "Alpha" $ trace := /notraceback $ $ p1 = f$edit (p1,"UPCASE,UNCOMMENT,COLLAPSE") $ p1len = f$length (p1) $ compile = (p1 .eqs. "") .or. (f$locate (p1,"C") .nes. p1len) $ linking = (p1 .eqs. "") .or. (f$locate (p1,"L") .nes. p1len) .or. - (f$locate (p1,"T") .nes. p1len) $ $ if compile $ then $ say "Compiling JUMP source ..." $ pascal jump /usage=(all,noperformance) /object=jump.obj_'arch' $ endif $ $ if compile .or. (f$search ("JUMP_CLD.OBJ") .eqs. "") $ then $ say "Compiling JUMP CLD ..." $ set command /object jump_cld $ endif $ $ if linking $ then $ if (f$locate (p1,"T") .nes. p1len) then trace := /traceback $ say "Linking JUMP ..." $ if arch .eqs. "VAX" $ then $ link 'trace' jump.obj_vax,jump_cld.obj,jump.opt/option, - SYS$SYSTEM:SYS.STB/select,SYSDEF.STB/select $ else $ link /sysexe 'trace' jump.obj_alpha,jump_cld.obj,jump.opt/option, - SYS$LOADABLE_IMAGES:SYSDEF.STB/select $ endif $ endif $ $ if linking $ then $ say "*** JUMP built successfully ***" $ say "Don't forget to install the image with the correct privileges." $ endif $ $ EXIT 1 Ðq