IMD 1.16: 30/08/2008 23:34:15 84-94122-00 b030 f12200 cartos sysgen product disk   }fA __M@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIICARTOSMA282100513384840830907142717 830907142717?F12200 VOL84-94122-00 CARTOS SYSGEN PRODUCT DISKETTE (B030)   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII_M@qGyy GGG`HX@ b G`^Y e GQ @@p@987 85P@ G:پN 8)0. * C'xC# b# }B* @0DAJL w+™ЀЀΖQA1"   i  ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G7H@pܾrCHC C GTq` Lg gEXC P+s=胾P+c fQN p $Rxnj  ޔniZ ތ⊞ } }HGž Ÿ@ALS)"$ C k20j.h( +$`%ꂜ\1 !M' y %'+os慾)sY ed|{ @8 o O m J K i gN )V% t%sLn`"E F. F„ D>) =`;nrgy w"G,{Kq1 A&}E*`(t@% ;c  765y342(.OS:: SYSG @ @G6BDāCGDĀ# BC @E OB TITL SYSTEM GENERATION TABLE - SGT.ASM - 84-94160-20 (B030) ******************************* S G T ****************************** * * * SYSTEM GENERATION TABLE  * * * ******************************************************************** * * INCLUDE SYSCOMMON.MAC CARTOS SYSTEM COMMON SYSTEM EQUATES * INCLUDE CKW.MAC SYSTEM CHECKWORD EQUATES * INCLUDE USERCOMMON.MAC COMMON USER MACROS AND EQUATES * INCLUDE ERB.MAC ENVIRONMENT RESOURCE BLOCK EQUATES * INCLUDE SGT.MAC SYSTEM GENERATION TABLE EQUATES * OLDOPS OPTIONS +4 INCLUDE X1/SYSCOMMON.MAC CARTOS SYSTEM COMMON SYSTEM EQUATES INCLUDE X1/CKW.MAC SYSTEM CHECKWORD EQUATES INCLUDE X1/USERCOMMON.MAC COMMON USER MACROS AND EQUATES INCLUDE X1/ERB.MAC ENVIRONMENT RESOURCE BLOCK EQUATES INCLUDE X1/SGT.MAC SYSTEM GENERATION TABLE EQUATES OPTIONS OLDOPS TITL . DMA: REL SHARABLE DMA: * MACHINE M4:95 ASSEMBLE FOR A 4/95 INSTRUCTION SET * NAM SGT: DECLARE THE TABLE A GLOBAL TABLE NAM ELT: DECLARE THE START OF THE ENVIRONMENT LOAD TABLE NAM SWP:FILE DECLARE THE LOCATION OF THE SWAPPING FILE  NAME NAM SP:SDSK DECLARE THE LOCATION OF THE SPOOLER DISK NAM SP:SPTH DECLARE THE LOCATION OF THE SPOOLER PATH NAME * * WORD CKW:SGT SGT CHECKWORD SGT: EQU $ WORD 13 NUMBER OF LOGICAL MAPS WORD :C0 SMALL BUFFER POOL SIZE WORD 0 RESERVED WORD :B0 MEDIUM BUFFER POOL SIZE WORD 0 RESERVED WORD 0 RESERVED WORD 0 RESERVED WORD 64 DOOR STACK BUFFER POOL SIZE WORD 0 RESERVED SP:SDSK EQU $ SPOOLER DISK PHYSICAL UNIT SAME AS SYSTEM DISK BYTE 'DF10' SYSTEM DISK PHYSICAL UNIT NAME BYTE 'TV14' SYSTEM TERMINAL PHYSICAL UNIT NAME WORD ELT: ADDRESS OF ENVIRONMENT LOAD TABLE WORD 120 WATCH-DOG TIMER GRANULARITY IN TICKS WORD SWP:FILE ADDRESS OF SWAPPING FILE NAME WORD 120 RTC FREQUENCY IN TICKS PER SECOND WORD 20 NUMBER OF TICKS PER TIME SLICE (1/6 SECOND) WORD SP:SPLUN SPOOLER LOGICAL UNIT CONNECTED BY COLD START RES 5,0  LEAVE SOME UNUSED SPACE IN THE TABLE FOR PATCHES * * SPOOLER DIRECTORY DECLARATION * * SPOOLER PATH NAME CANNOT EXCEED 50 CHARACTERS * SP:SPTH BYTE '/SYS/SPOOL/',0 RES 3,0 * * MARK END OF DMA: REL AREA * NAM END:DMA TABLE: REL END:DMA EQU $ TITL ENVIRONMENT LOAD TABLE (ELT:) * * PUT ALL OF THE ENVIRONMENT LOAD STUFF IN THE COLD START REL AREA. * COLD: REL * * DEFINE THE ENVIRONMENT LOAD TABLE. THIS TABLE CONTAINS THE NAMES * OF ALL OF THE FILES CONTAINING ENVIRONMENTS WHICH SHOULD BE LOADED * AT SYSTEM INITIALIZATION TIME. ALL OF THE FILE NAMES MUST BE EXACTLY * SEVEN WORDS LONG IN THE SAME FORMAT AS THEY WOULD APPEAR IN A DISK * DIRECTORY (11 BYTES FOR THE NAME WITH TRAILING SPACES IF NECESSARY * FOLLOWED BY 3 BYTES OF FILE EXTENSION). EACH FILE NAME IS FOLLOWED * BY THE ADDRESS OF THE ENVIRONMENT RESOURCE BLOCK FOR THAT *  ENVIRONMENT. * ELT: EQU $ BYTE 'FM:B030 SYS' NAME OF THE FILE MANAGER LOAD MODULE WORD FM:ERB ADDRESS OF THE ERB FOR THE FILE MANAGER BYTE 'TV:B030 SYS' NAME OF TV/LP HANDLER LOAD MODULE WORD TV:ERB ADDRESS OF THE ERB FOR THE TV/LP HANDLER BYTE 'MDE:B030 SYS' DEVELOPMENT SYSTEM WORD MDE:ERB ADDRESS OF THE ERB FOR THE USER ENVIRONMENT WORD 0 END OF TABLE MARKER TITL ENVIRONMENT RESOURCE BLOCKS FOR THE INITIAL ENVIRONMENTS * * DEFINE THE ERB FOR THE FILE MANAGER LOAD * FLAG1: SET ERF:MELK++ERF:MALK FLAG: SET ERF:RT++ERF:SSER++ERF:NFP++ERF:NUP++FLAG1: EPD: FLAG: EMP: FM:ERB ERB: ,,,-1 * *  DEFINE THE ERB FOR THE TV/LP HANDLER LOAD * FLAG1: SET ERF:MELK++ERF:MALK++ERF:AUID FLAG: SET ERF:RT++ERF:SSER++ERF:NFP++ERF:NUP++FLAG1: EPD: FLAG: EMP: TV:ERB ERB: ,,,-1 * * DEFINE THE ERB FOR THE MDE LOAD * FLAG1: SET ERF:SST++ERF:MELK++ERF:MALK++ERF:AUID++ERF:PRIO FLAG: SET ERF:RT++ERF:SSER++ERF:NFP++ERF:NUP++FLAG1: EPD: FLAG: EMP: MDE:ERB ERB: ,,,-1 TITL SYSTEM SWAPPING FILE NAME DEFINITION * * DEFINE THE NAME OF THE SYSTEM SWAPPING FILE. * SWP:FILE EQU $ BYTE 'SWAP:: SYS' TITL "LOAD" DIRECTIVES FOR SYSTEM MODULES * * (INSERT '*' BEFORE 'LOAD' TO SUPPRESS LOADING) * LOAD P:FM FILE MANAGER IPB *LOAD P:SP SPOOLER IPB LOAD S:DOOR MAKE SURE THE DOOR LOAD CST:INIT AND COLD START ARE LOADED * * NAME AND REVISION LEVEL OF THIS ROUTINE * OBJNOTE 'SGT (B030)' END D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D  JEND:DMA SP:SPTH SP:SDSK JSWP:FILEELT: SGT: O0SEGMENTBLANK DMA: OTABLE: COLD: o"PKCST:INITS:DOOR P:FM im MACRO (F500) @ig @gDF10TV14dxdIxSPg/SYS/SPOOL/igigFM:B030 SYSTV:B030 SYS)MDE:B030 SYS9?"()?.289?>BHgSWAP:: SYSm SGT (B030)RO DK:TABLES(L=) MACRO MT:TABLES(L=) ASSIGN LO=CARTOS.MAP LINK CARTOS.BIN=SGT(AB=300)+ TV:TABLES(UL)+ DK:TABLES(UL)+ MT:TABLES(UL)+ SF/LBR/CARTOS:SYS.LBR IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII CARTOSGEN.JCL - 84-94160-70 (B030) ASSIGN UF=SF/SYSGEN/ ASSIGN X1=SF/MAC/ ASSIGN LO=LP MACRO SGT(L=) MACRO TV:TABLES(L=) MACRO DK:TABLES(L=) MACRO MT:TABLES(L=) ASSIGN LO=CARTOS.MAP LINK CARTOS.BIN=SGT(AB=300)+ TV:TABLES(UL)+ DK:TABLES(UL)+ MT:TABLES(UL)+ SF/LBR/CARTOS:SYS.LBR R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R configuration * are removed by making them a comment line. This file is * set to the configuration for the floppy based CARTO TITL DISK I/O TABLES - DK:TABLES.ASM - 84-94230-20 (B030) ************************************************** * * DK:TABLES.ASM - 84-94230-20 * * DISK I/O TABLES * * * The I/O control tables and system control blocks for disks * are built using macros. This file contains the macro calls * to build tables for all standard disks. * The macro calls not used for a particular configuration * are removed by making them a comment line. This file is * set to the configuration for the floppy based CARTOS system. * As part of the system generation process, this file should * be modified to reflect the disk configuration * of the hardware. * * Definition of macros: * * STDFPY - Defines a single sided, single density 8" floppy * disk controller and builds the required disk * driver tables. * * Calling sequence: STDFPY cntlr,da *  cntlr = controller number * da = device address * * QUADFPY - Defines a double sided, double density 8" floppy * disk controller and builds the required disk * driver tables. * * Calling sequence: QUADFPY cntlr,da * cntlr = controller number * da = device address * * MCDC - Defines a medium capacity disk controller and builds * the required disk driver tables. * * Calling sequence: MCDC cntlr,da,mdrt,minz * cntlr = controller number * da = device address * mdrt = address of marginal data recovery table * minz = address of mount initilization routine * * HCDC - Defines a high capacity disk controller and builds * the required disk driver tables. * * Calling sequence: HCDC cntlr,da,mdrt,minz * cn tlr = controller number * da = device address * mdrt = address of marginal data recovery table *  minz = address of mount initilization routine * * WINCH - Defines a winchester disk controller and builds *  the required disk driver tables. * * Calling sequence: WINCH cntlr,da,mdrt,minz * cntlr = controller number * da = device address * mdrt = address of marginal data recovery table * minz = address of mount initilization routine * * TCU - Defines a TCU 5-1/4 in Winchester controller interface * and builds the required disk driver tables. * * Calling sequence: TCU cntlr,da,mdrt,minz * cntlr = controller number *  da = device address * mdrt = address of marginal data recovery table * minz = address of mount initilization routine * * TIMEOUT - Defines the time allowed before a timeout * I/O error is generated. * *  Calling sequence: TIMEOUT time * time = time in seconds * * RETRY - Defines the number of retries before a hardware * error is returned. * * Calling sequence: RETRY count * count = number of retires * * DSIZE - Defines the disk size parameters. * * Calling sequence: DSIZE bps,spt,tpc,cpd,spau *  bps = bytes per sector * spt = sectors per track * tpc = tracks per cylinder (heads) * cpd = cylinders per disk * spau = sectors per allocation unit * * TCUINIT - Defines parameters for TCU drive initialization. * * Calling sequence: TCUINIT p1,p2,p3,p4 * p1 = step pulse * p2 = step period *  p3 = reduce write current cylinder * p4 = overlap seek * Note: Clarification of these parameters may be found in * the DTC documentation. * * DK - Defines a disk unit and builds all required disk * handler tables. * * Calling sequence: DK cntrl,lunit,punit,pun,type,headoff * cntrl = controller number *  lunit = logical disk unit number * punit = physical unit number (if different than lunit) * pun = physical unit name * type = disk type: * F = single density 8" floppy *  Q = quad density 8" floppy * M = Pertec * H = CDC storage module *  P = CDC Phoenix without SPO * PS = CDC Phoenix with SPO * WS = Shugart winchester *  WQ = Quantum winchester * T = TCU Winchester * headoff = head offset * * The macros RETRY, TIMEOUT, DSIZE, and TCUINIT generate * SET symbols which are used by the DK macro. * Therefore, the parameters defined by these macros * are valid until another call to the macro is made to * change them. * * The physical unit names are encoded with a type number * and a channel number. This allows a device's physical * connection to the machine to be identified by the PUN. * If desired, the PUNs can be changed to any * 2 letters followed by 2 numbers. * TITL * The internal I/O c ontrol and system tables are * encoded using the following standards. * The IPB names are of the form: * * P:DFc floppy disk driver * P:DKc hard disk driver * P:DFtcn floppy disk handler * P:DKtcn hard disk handler * * c = controller number * t = disk type (F, Q, M, P, H, or W) * n = disk unit number (logical) * * The ICB, QCB, ACB, DMA CIOB area names are of the form: * * C:Dxc driver ICBs * Q:Dxc driver QCBs * A:Dxc driver ACBs * D:Dxc driver DMA region for CIOB * * x = F for floppy disks, K for hard disks * c = controller number * ************************************************** * OLDOPS OPTIONS +4 INCLUDE X1/USERCOMMON.MAC INCLUDE X1/CKW.MAC INCLUDE X1/ACB.MAC INCLUDE X1/SYSCOMMON.MAC INCLUDE X1/IOPRIO.MAC INCLUDE X1/SSB.MAC INCLUDE X1/QCB.MAC INCLUDE X1/IPB.MAC INCLUDE X1/DK:IPB.MAC INCLUDE X1/ICB.MAC INCLUDE X1/DK:ICB.MAC INCLUDE X1/X:COMMON.MAC INCLUDE X1/DK:TABLES.MAC OPTIONS OLDOPS SAVE END TITL DISK I/O TABLES - DK:TABLES.ASM - 84-94230-20 (B030) EXTR DK:MDRM,DK:MDRH,DK:MDRW EXTR DK:MOTCU * TIMEOUT 8 RETRY 7 * * STDFPY 0,:11 SINGLE DENSITY FLOPPY CONTROLLER QUADFPY 1,:11  QUAD FLOPPY CONTROLLER * DSIZE 128,26,1,77,4 SINGLE DENSITY DRIVES * * DF 0,0,,DF00,F UNIT 0 * DF 0,1,,DF01,F UNIT 1 * DF 0,2,,DF02,F UNIT 2 * DF 0,3,,DF03,F UNIT 3 * DSIZE 256,26,1,154,4 QUAD DENSITY DRIVES * DF 1,0,,DF10,Q UNIT 0 DF 1,1,,DF11,Q UNIT 1 * DF 1,2,,DF12,Q  UNIT 2 * DF 1,3,,DF13,Q UNIT 3 * TIMEOUT 4 RETRY 5 * MCDC 0,:14,DK:MDRM MEDIUM CAPACITY DISK CONTROLLER * DSIZE 512,12,2,406,1 10MB PERTEC DRIVES * DK 0,0,0,DK00,M,0 UNIT 0, FIXED DISK DK 0,1,0,DK01,M,2 UNIT 0, REMOVABLE DISK * DK 0,2,1,DK02,M,0 UNIT 1, FIXED DISK * DK 0,3,1,DK03,M,2 UNIT 1, REMOVABLE DISK * HCDC 1,:15,DK:MDRH HIGH CAPACITY DISK CONTROLLER * DSIZE 512,32,1,823,1 16 MB PHOENIX DISKS * DK 1,0,0,DK10,PS,0 UNIT 0 WITH SPO, FIXED 16MB DISK DK 1,1,0,DK11,PS,:10 UNIT 0 WITH SPO, 16MB REMOVABLE DISK DK 1,3,0,DK13,P,:10 UNIT 0 NO SPO, FIXED 16MB DISK DK 1,4,0,DK14,P,0 UNIT 0 NO SPO, 16MB REMOVABLE DISK * DSIZE 512,32,5,823,8 80MB PHOENIX DISKS * DK 1,2,0,DK12,PS,0 UNIT 0 WITH SPO, 80MB FIXED DISK DK 1,5,0,DK15,P,:10 UNIT 0 NO SPO, 80MB FIXED DISK * DSIZE 512,32,5,823,8 80MB CDC STORAGE MODULE DRIVES * DK 1,0,,DK20,H  UNIT 0 DK 1,1,,DK21,H UNIT 1 * DK 1,2,,DK22,H UNIT 2 * DK 1,3,,DK23,H UNIT 3 * DSIZE 512,32,19,823,16 300MB CDC STORAGE MODULE DRIVES * * DK 1,4,0,DK24,H UNIT 0 * DK 1,5,1,DK25,H  UNIT 1 * DK 1,6,2,DK26,H UNIT 2 * DK 1,7,3,DK27,H UNIT 3 * TIMEOUT 10 * WINCH 2,:14,DK:MDRW  WINCHESTER DISK CONTROLLER * DSIZE 512,16,2,256,1 5MB * DK 2,0,0,DK30,WS SHUGART DRIVE, UNIT 0 * DSIZE 512,16,4,256,1 10MB * DK 2,1,0,DK31,WS SHUGART DRIVE, UNIT 0 * DSIZE 512,16,2,512,1 10MB * DK 2,2,0,DK3 2,WQ QUANTUM DRIVE, UNIT 0 * DSIZE 512,16,8,512,4 40MB * DK 2,3,0,DK33,WQ QUANTUM DRIVE, UNIT 0 * TCU 3,:14,,DK:MOTCU 5-1/4 IN WINCHESTER (SASI) * TCUINIT 1,1,0,0 10 OR 30 MB WINCHESTER DSIZE 512,18,4,305,1 10MB 5-1/4 IN WINCHESTER ON TCU * * DK 3,0,,DK40,T UNIT 0 * DK 3,1,,DK41,T UNIT 1 * DK 3,2,,DK42,T UNIT 2 * DK 3,3,,DK43,T UNIT 3 * DSIZE 512,18,8,375,1 30MB 5-1/4 IN WINCHESTER ON TCU * DK 3,4,0,DK44,T UNIT 0 DK 3,5,1,DK45,T UNIT 1 DK 3,6,2,DK46,T UNIT 2 DK 3,7,3,DK47,T UNIT 3 END TITL DISK I/O TABLES - DK:TABLES.ASM - 84-94230-20 (B030) TITL MARGINAL DATA RECOVERY TABLES  NAM DK:MDRM DK:MDRM EQU $ MEDIUM CAPACITY DISK CONTROLLER WORD :100 HEAD OFFSET, FORWARD WORD :200 HEAD OFFSET, BACKWARD WORD :300 REDUCE AMPLIFIER GAIN WORD 0 END OF LIST INDICATOR NAM DK:MDRH NAM DK:MDRW DK:MDRH EQU $ HIGH CAPACITY DISK CONTROLLER DK:MDRW EQU $ WINCHESTER DISK CONTROLLER WORD :100 HEAD OFFSET, FORWARD WORD :200 HEAD OFFSET, BACKWARD WORD :400 DATA STROBE OFFSET, EARLY WORD :800 DATA STROBE OFFSET, LATE WORD :500 HEAD OFFSET FORWARD; DATA STROBE OFFSET EARLY WORD :600 HEAD OFFSET BACKWARD; DATA STROBE OFFSET EARLY WORD :900 HEAD OFFSET FORWARD; DATA STROBE OFFSET LATE WORD :A00 HEAD OFFSET BACKWARD; DATA STROBE OFFSET LATE WORD 0 END OF LIST INDICATOR OBJNOTE 'DK:TABLES - B030' END D D D D D D D D D D D D D D D k!\5&\5&@₟t2@5:d@g*Ak Pg( QkTptktqpqdig) ig';kDO0SEGMENTBLANK oim MACRO (F500) @JP:DKT37 P:DKT36 P:DKT35 JP:DKT34 A:DK3 D:DK3 JQ:DK3 C:DK3 P:DK3 JP:DKW23 P:DKW22 P:DKW21 JP:DKW20 A:DK2 D:DK2 JQ:DK2 C:DK2 P:DK2 JP:DKH11 P:DKH10 P:DKP15 JP:DKP12 P:DKP14 P:DKP13 JP:DKP11 P:DKP10 A:DK1 JD:DK1 Q:DK1 C:DK1 JP:DK1 P:DKM01 P:DKM00 JA:DK0 D:DK0 Q:DK0 JC:DK0 P:DK0 P:DFQ11 JP:DFQ10 A:DF1 D:DF1 JQ:DF1 C:DF1 P:DF1 O0SEGMENTBLANK TABLE: ODMA: o  ,<KDK:DRIVRTCB:DK2 TCB:DK1 KSECB: I:EOB DF:DRIVRKDK:MOTCUDK:MDRW DK:MDRH KDK:MDRM NACB: INTQ: QCB: NICB: IPB: im MACRO (F500) @ig,kDF1  p@g+!k \5%\5%@₟t1?49d?g*@k Og( PkSptktpppdig) ig'<kDF10D1p g&<kDF11D1!p &?O,1FOPg%QkDK0 [_p(dmgnjt lg$!nkp\5u\5u@₟tnd g#k g! kp(tktpQn $di g" i$g <%kDK00D1/3p&8Qa>QCX abg<ckDK01D1mqp&v|Q gkDK1 p8tg!k\5\5@₟tdgk g kp8tktptdig itg<ukDK10D1p6 7g<kDK11D1p6 7g<kDK13D1p6- $ 7-.g</kDK14D19=p6B[kHMb 7klg<mkDK12D1w{p6 7g<kDK15D1p6 7g<kDK20D1p6% 7%&g<'kDK21D115p6:Sc@EZ 7cdgekDK2 ospHx{~tg!k\5\5@₟td$gk g  kpHtktpe8di$g i8g <9kDK30D1CGpFLeuReWluvg <wkDK31D1pFeg <kDK32D1pFeg <kDK33D1pF/ e&/0g1kDK3 ;?pXDMGNpJLtg!NkP\5U\5U@₟tNaodid0ogpk g kpXtktp1Ndi0g ig<kDK44D1pV1A1#8wAB vNg<OkDK45D1Y]pVb{h1mw vg<kDK46D1pV1w vg<kDK47D1pV  1  w   v JDK:MDRW DK:MDRH DK:MDRM O0SEGMENTBLANK o im MACRO (F500) @ggg  mDK:TABLES - B030 TITL TV AND LP I/O TABLES - TV:TABLES - 84-94232-20 (B021) ************************************************** * * TV:TABLES.ASM - 84-94232-20 * * TV AND LINE PRINTER I/O TABLES * * * The I/O control tables and buffers for CRTs and line printers * are built using macros. This file contains the macro calls * to build tables for a number of CRTs and line printers. * The macro calls not used for a particular configuration * may be removed by making them a comment line. This file is * set to the configuration for the floppy based CARTOS system. * As part of the system generation process, this file should * be modified to reflect the CRT and printer configuration * of the target hardware. * * Definition of macros: * * dev - Used to define a device. Currently defined devices are: * MUX - Asynchronous multiplexer. * DIO - Distributed I/O board. *  EIO - Extended I/O board (Micro Analytic Products). * * Calling sequence: dev da,ia * da = base device address * ia = base interrupt address * * BUFFER - Defines the output and input buffer sizes. * * Calling sequence: BUFFER output[,input] * output = output buffer size in bytes * input = input buffer size in bytes * * The input buffer is only used for CRTs on async * mux channels. It is not used for CRTs on DIO or * printers. * * FORMSIZE - Defines the CRT screen size or the printer * form size. * * Calling sequence: FORMSIZE lpp,cpl * lpp = lines per page * cpl = characters per line * * TIMEOUT - Defines the time allowed before a timeout * I/O error is generated. * * Calling sequence: TIMEOUT time * time = time in seconds * * BAUD - Defines the programmable baud rate. * * Calling sequence: BAUD baud * baud = channel baud rate * (300, 600, 1200, 2400, 4800, 9600, or 192) * * 192 implies a baud rate of 19200. * The BAUD macro only applies to async mux channels. * * * TRUNCATE - Truncates output at the end of the defined screen or line. * BANNER - Outputs a banner at the start of each spooled output file. *  AUTOECHO - Sets the auto echo mode for the channel. * TYPAHEAD - Allows input to a buffer before a read is posted. * INTELOCK - Interlocks reads and writes such that writes will * not be allowed while a read is in progress. * TIMEOERR - A timeout error is returned if a timeout occurs during * a read or write operation. * These macros allow setting or resetting of the desired option. * The operand ON will set the option, OFF will reset the option. * The initial setting is OFF for all options. * * Calling sequence: MACRO ON or * MACRO OFF * * * TV  - Defines a CRT and builds all required tables and * buffers. * * Calling sequence: TV channel,pun,cont,ta ble * channel = mux or DIO channel number * pun = physical unit name * cont = controller number * table = character table address * * LP - Defines a printer and builds all required tables and *  buffers. * * Calling sequence: LP channel,pun,cont,table * channel = mux or DIO channel number *  pun = physical unit name * cont = controller number * table = character table address * * * The macros MUX, EIO, DIO, BUFFER, TIMEOUT, and FORMSIZE generate * SET symbols which are used by the TV and LP macros. * Therefore, the parameters defined by these macros * are valid until another call to the macro is made to * change them. * * The physical unit names are encoded with a type number * and a channel number. This allows a device's physical * connection to the machine to be identified by the PUN. * If desired, the PUNs can be changed to any * 2 letters followed by 2 numbers. * TITL *  The internal I/O table names (for IPBs and ICBs) are * encoded using the following standards. * The IPB names are of the form: * * P:TVtcn (for CRTs) or * P:LPtcn (for printers) * * t = controller type (M for mux, D for DIO) * c = controller number (all DIO and mux controllers * must have a unique number. e.g. the first async * mux is controller 0, the first DIO is controller * 1, the second async mux is controller 2, the *  second DIO is controller 3, etc.) * * n = channel number * * The ICB names are of the form: * * C:TVtcnR (receive for CRTs) * C:TVtcnS (send for CRTs) * C:LPtcnS (send for printers) * *  t, c, and n are the same as the corresponding * IPB for the device. * ************************************************** * OLDOPS OPTIONS +4 INCLUDE X1/SYSCOMMON.MAC INCLUDE X1/USERCOMMON.MAC INCLUDE X1/CKW.MAC INCLUDE X1/IOPRIO.MAC INCLUDE X1/SSB.MAC INCLUDE X1/X:COMMON.MAC INCLUDE X1/IPB.MAC INCLUDE X1/ICB.MAC INCLUDE X1/TV:IPB.MAC INCLUDE X1/TV:ICB.MAC  INCLUDE X1/TV:TABLES.MAC INCLUDE X1/TV:DEV.MAC INCLUDE X1/MX:DEV.MAC INCLUDE X1/DI:DEV.MAC INCLUDE X1/EI:DEV.MAC OPTIONS OLDOPS SAVE END TITL TV AND LP I/O TABLES - TV:TABLES - 84-94232-20 (B021) TITL ASYNC MUX CRTS * DMA: REL SHARABLE DMA: ALL TABLES AND BUFFERS MUST BE IN DMA: REL SYSP SET 0 * * MUX CRTS * MUX :70,:180 BUFFER 80,80 FORMSIZE 24,80 TIMEOUT 10 BAUD 9600 TRUNCATE ON AUTOECHO ON TYPAHEAD ON INTELOCK ON * * CRT III (VIEWPOINT) * TV 0,TV00,0,TV:III TV 1,TV01,0,TV:III TV 2,TV02,0,TV:III TV 3,TV03,0,TV:III * TV 4,TV04,0,TV:III * TV 5,TV05,0,TV:III * TV 6,TV06,0,TV:III * TV 7,TV07,0,TV:III * * CRT I OR II * * TV 0,TV20,0,TV:I * TV 1,TV21,0,TV:I * TV 2,TV22,0,TV:I * TV 3,TV23,0,TV:I * TV 4,TV24,0,TV:I * TV 5,TV25,0,TV:I * TV 6,TV26,0,TV:I * TV 7,TV27,0,TV:I * TITL ASYNC MUX LINE PRINTERS * * MUX LINE PRINTERS * BUFFER 512 FORMSIZE 42,108  BAUD 9600 * * LP 0,LP00,0,LP:DP * LP 1,LP01,0,LP:DP * LP 2,LP02,0,LP:DP * LP 3,LP03,0,LP:DP * LP 4,LP04,0,LP:DP * LP 5,LP05,0,LP:DP * LP 6,LP06,0,LP:DP * LP 7,LP07,0,LP:DP TITL DISTRIBUTED I/O CRTS * * DIO CRTS * DIO :F0,:C0 BUFFER 132 FORMSIZE 24,80   TIMEOUT 10 * * CRT III (VIEWPOINT) * * TV 0,TV10,1,TV:III * TV 1,TV11,1,TV:III * TV 2,TV12,1,TV:III * TV 3,TV13,1,TV:III TV 4,TV14,1,TV:III * TV 5,TV15,1,TV:III * TV 6,TV16,1,TV:III * TV 7,TV17,1,TV:III * * CRT I OR II * * TV 0,TV30,1,TV:I * TV 1,TV31,1,TV:I * TV 2,TV32,1,TV:I * TV 3,TV33,1,TV:I * TV 4,TV34,1,TV:I * TV 5,TV35,1,TV:I * TV 6,TV36,1,TV:I * TV 7,TV37,1,TV:I * TITL DISTRIBUTED I/O LINE PRINTERS * * DIO LINE PRINTERS * BUFFER 512 FORMSIZE 42,108 BANNER ON * * LP 0,LP10,1,LP:DP * LP 1,LP11,1,LP:DP * LP 2,LP12,1,LP:DP * LP 3,LP13,1,LP:DP * LP 4,LP14,1,LP:DP * LP 5,LP15,1,LP:DP * LP 6,LP16,1,LP:DP LP 7,LP17,1,LP:DP * END TITL TV AND LP I/O TABLES - TV:TABLES - 84-94232-20 (B021) TITL TV AND LP CHARACTER TABLES * DMA: REL SHARABLE DMA: * ************************************************** * * TV:III - CHARACTER TABLE * FOR CAI CRT III OR ADDS VIEWPOINT * ************************************************** * NAM TV:III * TV:III EQU $ WORD TV:TOF ADDRESS OF TOP OF FORM SEQUENCE WORD TV:EOL ADDRESS OF END OF LINE SEQUENCE WORD TV:CAN ADDRESS OF CANCEL LINE SEQUENCE WORD TVA:POS ADDRESS OF POSITION SEQUENCE WORD TVA:LOCK ADDRESS OF LOCK SEQUENCE  WORD TVA:ULCK ADDRESS OF UNLOCK SEQUENCE WORD 0 THIS CRT DOES NOT HAVE A READ CURSOR FUNCTION  WORD TVA:NEXT ADDRESS OF LINE FEED CHARACTER SEQUENCE WORD TVA:PREV ADDRESS OF PREVIOUS LINE CHARACTER SEQUENCE WORD TVA:FWSP ADDRESS OF FORWARD SPACE CHARACTER SEQUENCE WORD TVA:BKSP ADDRESS OF BACKSPACE CHARACTER SEQUENCE WORD :001F ABSOLUTE POSITION OFFSET * THIS VALUE ADDED TO BOTH ROW AND COLUMN * NUMBERS FOR ABSOLUTE POSITION SEQUENCE. WORD TVA:LINF LENGTH, LINE FEED CHARACTER POSITION SEQUENCE WORD :08 BACKSPACE CHARACTER INPUT FOR EDIT WORD :09 TAB CHARACTER INPUT FOR EDIT WORD :18 CANCEL CHARACTER INPUT FOR EDIT TVA:POS EQU $ BYTE 2,:1B  LENGTH, ABSOLUTE POSITION SEQUENCE BYTE :59,0 (ROW AND COLUMN FILLED IN BY TV HANDLER) * TVA:LOCK EQU $  BYTE 2,:1B LENGTH, FIRST CHARACTER OF LOCK SEQUENCE BYTE :05,0 * TVA:ULCK EQU $ BYTE 2,:1B  LENGTH, UNLOCK CRT CHARACTERS BYTE :06,0 * TVA:NEXT EQU $ BYTE 1,:0A LENGTH, NEXT LINE CHARACTER FOR POSITIONING * TVA:PREV EQU $ BYTE 1,:1A ENGTH, PREVIOUS LINE CHARACTER * TVA:FWSP EQU $ BYTE 1,:06 LENGTH, FORWARD SPACE CHARACTER * TVA:BKSP EQU $ BYTE 1,:15 LENGTH, BACKSPACE CHARACTER * TVA:LINF EQU $ BYTE 1,:0A LENGTH, LINE FEED CHARACTER FOR OUTPUT ************************************************** * * TV:I - CHARACTER TABLE * FOR CAI CRT I AND CRT II * ************************************************** * NAM TV:I * TV:I EQU $ WORD TV:TOF ADDRESS OF TOP OF FORM SEQUENCE WORD TV:EOL ADDRESS OF END OF LINE SEQUENCE WORD TV:CAN ADDRESS OF CANCEL LINE SEQUENCE WORD TVC:POS ADDRESS OF POSITION SEQUENCE   WORD TVC:LOCK ADDRESS OF LOCK CRT SEQUENCE WORD TVC:ULCK ADDRESS OF UNLOCK CRT SEQUENCE WORD TVC:SRCR ADDRESS OF SEND READ CURSOR SEQUENCE WORD TVC:NEXT ADDRESS OF LINE FEED CHARACTER SEQUENCE  WORD TVC:PREV ADDRESS OF PREVIOUS LINE CHARACTER SEQUENCE WORD TVC:FWSP ADDRESS OF FORWARD SPACE CHARACTER SEQUENCE WORD TVC:BKSP ADDRESS OF BACKSPACE CHARACTER SEQUENCE WORD :0000 ABSOLUTE POSITION OFFSET * THIS VALUE ADDED TO BOTH ROW AND COLUMN * NUMBERS FOR ABSOLUTE POSITION SEQUENCE. WORD TVC:LINF LENGTH, LINE FEED CHARACTER POSITION SEQUENCE WORD :08  BACKSPACE CHARACTER INPUT FOR EDIT WORD :09 TAB CHARACTER INPUT FOR EDIT WORD :18  CANCEL CHARACTER INPUT FOR EDIT TVC:POS EQU $ BYTE 1,:02 LENGTH, POSITION CRT CHARACTER * TVC:LOCK EQU $  BYTE 1,:19 LENGTH, LOCK CRT CHARACTER * TVC:ULCK EQU $ BYTE 1,:06 LENGTH, UNLOCK CRT CHARACTER * TVC:SRCR EQU $ BYTE 1,:0E LENGTH, SEND READ CURSOR CHARACTER * TVC:NEXT EQU $ BYTE 1,:17  LENGTH, NEXT LINE CHARACTER FOR POSITIONING * TVC:PREV EQU $ BYTE 1,:16 LENGTH, PREVIOUS LINE CHARACTER * TVC:FWSP EQU $ BYTE 1,:09 LENGTH, FORWARD SPACE CHARACTER * TVC:BKSP EQU $ BYTE 1,:15 LENGTH, BACKSPACE CHARACTER * TVC:LINF EQU $ BYTE 1,:0A LENGTH, LINE FEED CHARACTER FOR OUTPUT ************************************************** * * LP:DP - CHARACTER TABLE * FOR DATA PRODUCTS LINE PRINTERS * ************************************************** * NAM LP:DP * LP:DP EQU $ WORD LP:TOF ADDRESS OF TOP OF FORM SEQUENCE WORD LP:EOL ADDRESS OF END OF LINE SEQUENCE WORD 0 ADDRESS OF CANCEL LINE SEQUENCE WORD 0  ADDRESS OF POSITION SEQUENCE WORD 0 ADDRESS OF LOCK CRT SEQUENCE WORD 0  ADDRESS OF UNLOCK CRT SEQUENCE WORD 0 ADDRESS OF SEND READ CURSOR SEQUENCE WORD 0  ADDRESS OF LINE FEED CHARACTER SEQUENCE WORD 0 ADDRESS OF PREVIOUS LINE CHARACTER SEQUENCE WORD 0 ADDRESS OF FORWARD SPACE CHARACTER SEQUENCE WORD 0 ADDRESS OF BACKSPACE CHARACTER SEQUENCE WORD 0 POSITION CHARACTER OFFSET (OFFSET * TO BE ADDED TO USER'S POSTION CHARACTERS * FOR EXAMPLE, IF USER WANTS CURSOR * POSITIONED AT <1,1> THEN ZERO WILL BE * ADDED TO THE USER'S ROW, COLUMN TO OBTAIN *  <1,1> ON CRT I & II. * WORD LP:LINF LENGTH, LINE FEED CHARACTER POSITION SEQUENCE * ************************************************** * * COMMON CHARACTER SEQUENCES * ************************************************** * * TV TOP OF FORM * TV:TOF EQU $ BYTE CRTOP:SZ,:0C LENGTH OF TOP OF FORM SEQUENCE RES :A,:1818 PAD CHARACTERS * * L  P TOP OF FORM * LP:TOF EQU $ BYTE PRTOP:SZ,:0C LENGTH OF TOP OF FORM SEQUENCE * * TV AND LP END OF LINE * TV:EOL EQU $ LP:EOL EQU $ WORD :010D CARRIAGE RETURN AND LENGTH * * TV CANCEL LINE * TV:CAN EQU $ WORD :030D  LENGTH AND CARRIAGE RETURN WORD :0A3E LINE FEED, RIGHT ARROW * * LP LINE FEED SEQUENCE * LP:LINF EQU $ BYTE 1,:0A LENGTH, LINE FEED CHARACTER FOR OUTPUT * * REVISION LEVEL FOR LINK MAP * OBJNOTE 'TV:TABLES (B021) SYSTEM 1' END E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E%L Pt$#>7$g&%k'\5,\5,@₟t%O0SEGMENTBLANK oim MACRO (F500) @JC:LPD17SP:LPD17 C:TVD14SJC:TVD14RP:TVD14 C:TVM03SJC:TVM03RP:TVM03 C:TVM02SJC:TVM02RP:TVM02 C:TVM01SJC:TVM01RP:TVM01 C:TVM00SJC:TVM00RP:TVM00 O0SEGMENTBLANK DMA: o KLP:DP I:EOB TV:III MP:SP NICB: IPB: im MACRO (F500) @ig=kTV00TV" r>?g P+-1t>3#>7>g'?kA\5F\5F@₟t?RfUpP^cHg'gki\5n\5n@₟tgz}pd @2(g =kTV01TV"r&'O Pt&#>7&g ''k)\5.\5.@₟t':N=rPFKHg 'OkQ\5V\5V@₟tObvervdns @2(g =kTV02TV"r7 Pt#>7g 'k\5\5@t"6%tP.3Hg'7k9\5>\5>@₟t7J^Mt^dV[ @2(g=kTV03TV"r Pt#>7g'k\5\5@t  vxPHg'k!\5&\5&@₟t2F5vFd>C @2(g2kTV14TV#r Ptg'k\5\5@₟t#g'k\5\5@₟t## Lg2pkLP17TV)z~r*lutg'k\5\5@₟tJLP:DP TV:I TV:III O0SEGMENTBLANK DMA: o Qim MACRO (F500)  @igAMN  Y  g AMN+,-./0123    gLM P     > mTV:TABLES (B021) SYSTEM m1Lg2kLP17TV) r01*l(*.utg21k3\58\58@₟t1DcGcPUcJ TITL MAG TAPE I/O TABLES - MT:TABLES - 84-94234-20 (B030) ************************************************** * * MT:TABLES.ASM - 84-94234-20 * * MAG TAPE I/O TABLES * * The I/O control tables are built using macros. This file * contains the macro calls necessary to build tables for a * number of mag tape transports on the DMA I/O distributor. * The macro calls not used for a particular configuration * are removed by making them a comment line. This file is * set to the configuration for the floppy based CARTOS system. * As part of the system generation process, this file should * be modified to reflect the mag tape configuration * of the hardware. * * Definition of macros: * * TIMEOUT - Defines the time allowed before a timeout *  I/O error is generated. * * Calling sequence: * * TIMEOUT time * * time = time in seconds * * DIO - Defines the device address of the DMA I/O * distributor (shifted left 4 bits) and the base * interrupt location (the actual interrupt location * adds 8*channel). * * Calling sequence: * *  DIO d,i * * d = device address (shifted) * i = base interrupt location * * MT - Defines a mag tape and builds all required tables. * * Calling sequence: * * MT cont,channel,unit,pun * *  cont = DIO controller number * channel = DIO channel number * unit = logical unit number *  pun = physical unit name * * The macros DIO and TIMEOUT generate SET symbols * which are used by the MT macro. Therefore, the parameters * defined by these macros are valid until another call to the * macro is made to change them. * TITL * The internal I/O table names (for IPBs and ICBs) are * encoded using the following standards. * * The IPB names are of the form: * * P:MTDdcun * * d = DIO controller number (in order to have each * mag tape IPB name unique, a digit is assigned for * each different DMA I/O distributor being used; * the first DMA I/O distributor is 1, the second is * 2, etc.). * c = DIO channel number. * u = unit number of the transport. * n = physical unit name of the device which is * the name used to mount the device. * * The ICB names are of the form: * * C:MTDdc * * d and c are the same as the corresponding * IPB for the device. * ************************************************** OLDOPS OPTIONS +4 INCLUDE X1/SYSCOMMON.MAC INCLUDE X1/USERCOMMON.MAC INCLUDE X1/CKW.MAC INCLUDE X1/IOPRIO.MAC INCLUDE X1/SCB.MAC INCLUDE X1/SSB.MAC INCLUDE X1/X:COMMON.MAC INCLUDE   X1/IPB.MAC INCLUDE X1/ICB.MAC INCLUDE X1/MT:IPB.MAC INCLUDE X1/MT:ICB.MAC INCLUDE X1/MT:TABLES.MAC OPTIONS OLDOPS TITL GET INCLUDE FILES * *INCLUDE X1/SYSCOMMON.MAC *INCLUDE X1/USERCOMMON.MAC *INCLUDE X1/CKW.MAC *INCLUDE X1/IOPRIO.MAC *INCLUDE X1/SCB.MAC *INCLUDE X1/SSB.MAC *INCLUDE X1/X:COMMON.MAC *INCLUDE X1/IPB.MAC *INCLUDE X1/ICB.MAC *INCLUDE X1/MT:IPB.MAC *INCLUDE X1/MT:ICB.MAC *INCLUDE X1/MT:TABLES.MAC * SAVE END TITL MAG TAPE I/O TABLES - MT:TABLES - 84-94234-20 (B030) TITL MAG TAPE CONFIGURATIONS * TABLE: REL SHARABLE TABLE: ALL TABLES MUST BE IN TABLE: REL * * Set up timeout value for 10 seconds. * TIMEOUT 10 * * Set up DMA I/O distributor device address for :F and * base interrupt location for :C0. * DIO :F0,:C0 * * Set up 4 mag tape transports on channel 1 of DIO 1. * *MT 1,1,0,MT10 *MT 1,1,1,MT11 *MT 1,1,2,MT12 *MT 1,1,3,MT13 * * Set up 4 mag tape transports on channel 5 of DIO 1. * MT 1,5,0,MT00 *MT 1,5,1,MT01 *MT 1,5,2,MT02 *MT 1,5,3,MT03 * OBJNOTE 'MT:TABLES - (B030)' END D D URATIONS * TABLE: REL SHARABLE TABLE: ALL TABLES MUST BE IN TABLE: REL * * Set up timeout value for 10 seconds. * TIMEOUT 10 * * Set up DMA I/O distributor device address for :F and * base interrupt location for :C0. * DIO :F0,:C0 * * Set up 4 mag tapeO0SEGMENTBLANK oim MACRO (F500) @JSCB:MT50C:MTD15 P:MTD150O0SEGMENTBLANK TABLE: o PKTCB:MT I:EOB NICB: SCB: IPB: im MACRO (F500) @igkMT00M1 p@ -! g !k',g#-k/\54\54@t-@PCFeELmMT:TABLES - (B030) TITL QIC TAPE I/O TABLES - QT:TABLES - 84-94XXX-XX (B007) ************************************************** * * QT:TABLES.ASM - 84-94XXX-XX * * QIC TAPE I/O TABLES * * The I/O control tables are built using macros. This file * contains the macro calls necessary to build tables for a * number of QIC tape transports on the DMA I/O distributor. * Note that only one QIC tape drive is supported per * controller, so logical unit 0 is assumed for all drives. * The macro calls not used for a particular configuration * are removed by making them a comment line. This file is * set to the configuration for the floppy based CARTOS system. * As part of the system generation process, this file should * be modified to reflect the QIC tape configuration *  of the hardware. * * Definition of macros: * * TIMEOUT - Defines the time allowed before a timeout * I/O error is generated. * * Calling sequence: * * TIMEOUT time * * time = time in seconds * * DIO - Defines the device address of the DMA I/O * distributor (shifted left 4 bits) and the base * interrupt location (the actual interrupt location * adds 8*channel). * * Calling sequence: * * DIO d,i * * d = device address (shifted) * i = base interrupt location * * QT - Defines a QIC tape and builds all required tables. * * Calling sequence: * * QT cont,channel,pun * * cont = DIO cont roller number * channel = DIO channel number * pun = physical unit name * * The macros DIO and TIMEOUT generate SET symbols * which are used by the QT macro. Therefore, the parameters * defined by these macros are valid until another call to the * macro is made to change them. * TITL * The internal I/O table names (for IPBs and ICBs) are * encoded using the following standards. * * The IPB names are of the form: * * P:QTDdc * * d = DIO controller number (in order to have each * QIC tape IPB name unique, a digit is assigned for * each different DMA I/O distributor being used; * the first DMA I/O distributor is 1, the second is * 2, etc.). *  c = DIO channel number. * * The ICB names are of the form: * * C:QTDdc * * d and c are the same as the corresponding * IPB for the device. * ************************************************** OLDOPS OPTIONS +4 INCLUDE X1/SYSCOMMON.MAC INCLUDE X1/USERCOMMON.MAC INCLUDE X1/CKW.MAC INCLUDE X1/IOPRIO.MAC INCLUDE X1/SCB.MAC INCLUDE X1/SSB.MAC INCLUDE X1/X:COMMON.MAC INCLUDE X1/IPB.MAC INCLUDE X1/ICB.MAC INCLUDE X1/QT:IPB.MAC INCLUDE X1/QT:ICB.MAC INCLUDE X1/QT:TABLES.MAC OPTIONS OLDOPS TITL GET INCLUDE FILES * *INCLUDE X1/SYSCOMMON.MAC *INCLUDE X1/USERCOMMON.MAC *INCLUDE X1/CKW.MAC *INCLUDE X1/IOPRIO.MAC *INCLUDE X1/SCB.MAC *INCLUDE X1/SSB.MAC *INCLUDE X1/X:COMMON.MAC *INCLUDE X1/IPB.MAC *INCLUDE X1/ICB.MAC *INCLUDE X1/QT:IPB.MAC *INCLUDE X1/QT:ICB.MAC *INCLUDE X1/QT:TABLES.MAC * SAVE END TITL QIC TAPE I/O TABLES - QT:TABLES - 84-94XXX-XX (B007) TITL QIC TAPE CONFIGURATIONS * DMA: REL SHARABLE DMA: ALL TABLES MUST BE IN DMA: REL * * Set up timeout value for 4 seconds. * TIMEOUT 4 * * Set up DMA I/O distributor device address for :F and * base interrupt location for :C0. * DIO :F0,:C0 * * Set up a QIC streamer tape on channel 6 of DIO 1. * QT 1,6,QT06 * * Set up a QIC streamer tape on channel 1 of DIO 2. * *QT 2,1,QT11 END D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D XX-XX (B007) TITL QIC TAPE CONFIGURATIONS * DMA: REL SHARABLE DMA: ALL TABLES MUST BE IN DMA: REL * * Set up timeout value for 4 seconds. * TIMEOUT 4 * * Set up DMA I/O distributor device address for :F and * base interrupt location for :C0. * DIO :F0,:C0 * * Set up a QIC streamer tape on channel 6 of DIO 1. * QT 1,6,QT06 * * Set up a QIC streamer tape on channel 1 of DIO 2. O0SEGMENTBLANK oim MACRO (F500) @JC:QTD16 P:QTD16 O0SEGMENTBLANK DMA: o 7KTCB:QT I:EOB NICB: IPB: im MACRO (F500) @igkQT06Q1 sgk\5"\5"@₟t.714@@i   `v TITL MDE CONFIGURATION FILE - MDECONFIG.ASM - 84-94320-20 (B000) * INCLUDE X1/MDE:TABS.MAC TABLES: REL SHARABLE TABLES: * NAM SYS:DEV,SYS:TVS,SYS:DIR,BCH:DEV,INT:LP * * The system device (on which to mount SD) * SYS:DEV BYTE 'DF10' Floppy disk unit  zero * * The name of the system directory (in GFN format) * SYS:DIR BYTE 'SD/SYS/',0 System directory name * * The device names of the interactive terminals (in order of terminal * number). There must be one terminal entry for each active TV. (There *  are NUM:TVS active TVs). An 'X' as a last character will force * MCE to mount the terminal exclusive use when the system is bootstrap * loaded. An 'S' will force a shareable mount. The terminal on channel * four of the DIO is mounted shareable by default by the CARTOS * coldstart activity. * SYS:TVS EQU $ BYTE 'TV34S' DIO terminal zero *BYTE 'TV00X' MUX terminal zero *BYTE 'TV01X' MUX terminal one *BYTE 'TV02X' MUX terminal two *BYTE 'TV03X' MUX terminal three *BYTE 'TV04X' MUX terminal four *BYTE 'TV05X' MUX terminal five *BYTE 'TV06X' MUX terminal six *BYTE 'TV07X' MUX terminal seven WORD 0 END OF SYS:TVS TABLE * * The device to be used to MOUNT for the interactive LP unit. * INT:LP EQU $ Its the same one as .... * * The device to be used for the output of batch log information * BCH:DEV BYTE 'LP17' The batch log output device * * The location of the BATCH directory is currently fixed as * SD/BATCH/ * The location of the account file is currently fixed as SD/ACCTFILE.TXT TITL * * Global controlling equates * NUM:JOBS EQU 2 The maximum number of active jobs NUM:TVS EQU 1 The number of active terminals * * NUM:TVS must always be less than or equal to NUM:JOBS. * The maximum number of concurrent batch streams is NUM:JOBS-NUM:TVS. * The maximum number of interactive jobs will be NUM:TVS. * For example, if NUM:JOBS and NUM:TVS were 9 and 7 respectively * terminals zero to six to be active for interactive jobs and two * jobs slots would be available for batch jobs. * * The operator may vary the current system job maxima via the USERS * command, but the maxima may never exceed the above values. * NUM:MAPS EQU 4 The number of maps which MDE may allocate * * The standard development configuration will have the number * of maps equal to the number of jobs. This implies that each * job may concurently be executing a single-Environment utility. * However, if multiple Environment application programs are to * be run under MDE, the number of maps to be allocated by MDE *  will probably be greater than the number of jobs. * OLDOPS OPTIONS +4 GEN:TABS Generate all the necessary tables OPTIONS OLDOPS END MDE:EDB t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t tof maps equal to the number of jobs. This implies that each * job may concurently be executing a single-Environment utility. * However, if multiple Environment application programs are to * be run under MDE, the number of maps to be allocated by MDE * JJCE:TABLSPL:QMB MDE:EDB JMCE:VEC MCE:TAB INT:LP JBCH:DEV SYS:DIR SYS:TVS JSYS:DEV O0SEGMENTBLANK TABLES: o KMDE:ERR SPL:ST START NQDB: SMD: SDB: NMDB: R:TDBL im MACRO (F500) @ig DF10gSD/SYS/gTV34S ggLP17m*** MDE:TABS.MAC - REV Bm020 *** g g TV ?:j@@i   `v VCM V` i@UCUL:@@  )  @UCULgiglllll `   k$#%t),kSP1 g 4TVSP; T TkXWYt]SP(d(gtttttttttttttttt (llll `   k$#%t) TITL MDE COMMAND CONFIGURATION - COMMAND.ASM - 84-94320-21 (A300) * ********************************************************************** * * INSTRUCTIONS FOR USER MODIFICATION * ===================================== *  * This file is constructed so that there is one reference to the * tables contained inside, namely that of C:TABLES. This is the * label of a small table which contains the addresses of the various * permissable command tables. The command table selected for a given * user is defined by the user's entry in the account file. The table * to be used for a user is selected at logon time. *  * The user has the option of altering the order of the entries in * the file and/or the permissable abbreviation level of each command * The user may also add new entries which are synonymous with * existing entries or add a complete new command table for a class * of user with a different (increased or decreased) privilege level. *  * The order of occurrence of the entries in this file may be * significant if the standard abbreviation level is altered. For * instance, if DOWN may be abbreviated to two characters (DO) then * DOWN must be placed after DO otherwise DO may never be specified. * * This file is provided in its initial state with all abbreviations * such that the entries may be re-ordered at will.  * * Note that it is not possible to add new command code to the MDE * without first obtaining the source code of the MDE and permission * from Computer Automation. Systems modified in this way will not be * supported. *  * TITL * The COMMAND macro generates the command table entries. * There are 5 forms of the ca lling sequence of the macro: * * 1) COMMAND abre,viation,routine * 2) COMMAND abreviation,routine * 3) COMMAND abrev"iation,routine * 4) COMMAND abrev"iation * 5) COMMAND abreviation * * In each case the full command name is * 'abreviation'. The second case has no further * abreviation. In cases 1 and 3, comma and squote * serve to seperate the smallest acceptable * abreviation from the rest of the name. * case 4 is equivalent to: * command abrev,iation,abreviation * while case 5 is equivalent to: * command abreviation,abreviation * ********************************************************************** * COMMAND MACRO * * do error checking IFT #(?)<1 NOTE E,'Not enough paramters were supplied *E*E*E*E*E*E*E*E*E*' ENDC IFT #(?)>3 NOTE E,'Too many paramters were supplied *E*E*E*E*E*E*E*E*E*E*E*' ENDC * * case of 3 parameters: just generate the stuff IFT #(?)=3 BYTE #(1,?)+#(2,?),#(1,?),'##(1)##(2)' !L SYMATT #(3) IFT !L&:80 EXTR #(3) ENDC WORD #(3) ENDC * * case of two parameters: does the 1st param have a quote? IFT #(?)=2 !L SET #(1,'"') IFF !L=0 has a quote => convert to case 3 form L::M1 SET !L-1 L::P1 SET !L+1 LL:: SET #(1,?) COMMAND #(1,1,L::M1),#(1,L::P1,LL::),#(2) ENDC IFT !L=0 doesn't have a " => no abreviation BYTE #(1,?),#(1,?),'##(1)' !L SYMATT #(2) IFT !L&:80 EXTR #(2) ENDC WORD #(2) ENDC ENDC * * case of one parameter: two subcases (as in 2 case form) IFT #(?)=1 !L SET #(1,'"') IFT !L=0 COMMAND #(1),#(1) ENDC  IFF !L=0 L::M1 SET !L-1 L::P1 SET !L+1 LL:: SET #(1,?) COMMAND #(1,1,L::M1),#(1,L::P1,LL::),#(1,1,L::M1)#(1,L::P1,LL::) ENDC ENDC ENDM * SAVEOPS OPTIONS +4 INCLUDE X1/MDE.MAC OPTIONS SAVEOPS * TITL Command tables NAM C:TABLES * COMTAB: REL SHARABLE COMTAB: ROMMABLE COMTAB: * * Command Table(s) * * Index table for command tables: * C:TABLES WORD OPRTAB Level 0 is the operator table WORD COMTAB Level 1 is the standard user level WORD COMTAB Level 2 is the standard user level WORD COMTAB  Level 3 is the standard user level WORD COMTAB Level 4 is the standard user level WORD COMTAB Level 5 is the standard user level WORD COMTAB Level 6 is the standard user level WORD COMTAB Level 7 is the standard user level WORD COMTAB Level 8 is the standard user level WORD NLTAB Level 9 is for users not logged on * * Non logged on table * NLTAB EQU $ COMMAND L"OGON  COMMAND S"TATUS COMMAND T"IME,UDATE COMMAND W"HY WORD 0 End-of-Table marker * * Operator table * OPRTAB EQU $ COMMAND DOW"N COMMAND DAT"E,ODATE COMMAND T"IME,OTIME COMMAND K"ILL COMMAND O"PERATOR COMMAND US"ERS,OUSERS COMMAND SP"OOLER COMMAND UP * * Drops through into the user commands ... * * User table * COMTAB EQU $ COMMAND AB"ORTLEVEL,ABORTLEV COMMAND AS"SIGN COMMAND CA"NCEL COMMAND CL"OSE COMMAND CON"TINUE COMMAND CR"EATE COMMAND COP"Y COMMAND DAS"SIGN COMMAND DAT"E,UDATE COMMAND DE"LETE COMMAND DI"SMOUNT COMMAND DO COMMAND EX"ECUTE COMMAND J"OB COMMAND L"OGOFF COMMAND ME"SSAGE COMMAND MO"UNT COMMAND PA"USE COMMAND REE"NTER COMMAND REM"OVE COMMAND REN"AME COMMAND SE"ND COMMAND SU"BMIT COMMAND ST"ATUS COMMAND T"IME,UDATE COMMAND US"ERS,UUSERS COMMAND VE"RIFY COMMAND VI"EW COMMAND W"HY WORD 0 End-of-Table marker TITL Month table * NAM  MONTH:TB NAM OPT:TAB NAM SPL:TAB * * Month Table * MONTH:TB EQU $ COMMAND JA"NUARY,1 COMMAND F"EBRUARY,2 COMMAND MAR"CH,3 COMMAND AP"RIL,4 COMMAND MAY,5 COMMAND JUN"E,6 COMMAND JUL"Y,7 COMMAND AU"GUST,8 COMMAND S"EPTEMBER,9 COMMAND O"CTOBER,10 COMMAND N"OVEMBER,11 COMMAND D"ECEMBER,12 WORD 0 End-of-Table marker TITL Option word table * * Option table * OPT:TAB EQU $ COMMAND BA"TCH,OPT:BTCH COMMAND BR"IEF,OPT:BRF COMMAND BS"TREAM,OPT:BSTM COMMAND C"FM,OPT:CFM COMMAND E"XTENDED,OPT:EXTE COMMAND FA"LPHA,OPT:FA COMMAND FL"ISTING,OPT:FL COMMAND FORMS"IZE,OPT:FSIZ COMMAND FORMT"YPE,OPT:FTYP COMMAND FR"ECORD,OPT:FREC COMMAND I"NITIAL,OPT:INXT COMMAND NA"MEONLY,OPT:NAMO COMMAND NOFI"LE,OPT:NOFI COMMAND NOFO"RMAT,OPT:NOFO COMMAND NOS"HARE,OPT:NSHR COMMAND O"VERWRITE,OPT:OVER COMMAND P"ERMANENT,OPT:PERM COMMAND SC"ANTREE,OPT:SCAN COMMAND SE"CONDARY,OPT:SEXT COMMAND ST"ANDARD,OPT:STAN COMMAND TE"MPORARY,OPT:TEMP COMMAND TR"EE,OPT:TREE COMMAND UNB"LOCKED,OPT:UNBL COMMAND UF,OPT:UF COMMAND UNF"ORMATTED,OPT:UF COMMAND VO"LUME,OPT:VOL COMMAND VR"ECORD,OPT:VREC WORD 0 End-of-Table marker TITL Spooler command table * * Spooler reply table * SPL:TAB EQU $ COMMAND R"ETRY,1 COMMAND C"ONTINUE,2 COMMAND P"RINTAGAIN,3 COMMAND A"BORT,4 WORD 0 End of table marker END D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D AND TE"MPORARY,OPT:TEMP COMMAND TR"EE,OPT:TREE COMMAND UNB"LOCKED,OPT:UNBL COMMAND UF,OPT:UF COMMAND UNF"ORMATTED,OPT:UF COJSPL:TAB OPT:TAB MONTH:TBJC:TABLESO0SEGMENTBLANK COMTAB: o KVIEW VERIFY UUSERS KSUBMIT SEND RENAME KREMOVE REENTER PAUSE KMOUNT MESSAGE LOGOFF KJOB EXECUTE DO KDISMOUNTDELETE DASSIGN KCOPY CREATE CONTINUEKCLOSE CANCEL ASSIGN KABORTLEVUP SPOOLER KOUSERS OPERATORKILL KOTIME ODATE DOWN KWHY UDATE STATUS KLOGON im MACRO (F500) @ig AAAAAAAA LOGON t$STATUSt#TIMEt"WHY t!DOWNt DATEtTIMEtKILLtOPERATORtUSERS tSPOOLER tUPt ABORTLEVELtASSIGNtCANCELtCLOSE tCONTINUEtCREATEtCOPYtDASSIGN tDATEt"DELETEtDISMOUNTtDOtEXECUTE t JOB t LOGOFFt MESSAGE t MOUNT t PAUSE tREENTER tREMOVEtRENAMEtSENDtSUBMITtSTATUSt#TIMEt"USERS tVERIFYtVIEWtWHY t!g JANUARY FEBRUARY MARCH APRIL MA Y JUNEJULYAU GUST SEPTEMBER OC TOBER NOVEMBER DECEMBER g BATCH BRIEF BS TREAM CFM EXTEND EDFALPHAFLISTING FORMSIZEFORMTYPE FRECORD INITIAL  NAMEONLYNOFILE NOFORMATNOSHARE  OVERWRITE PERMANEN T SCANTREE SECOND ARY STANDARD TEMP ORARY TREE UNBLOC KED UF UNFORMATTE D VOLUMEVRECORD g RETRY CONTINUE  PRINTAGAINABORT EXTEND EDFALPHAFLISTING FORMSIZEFORMTYPE FRECORD INITIAL  NAMEONLYNOFILE NOFORM ATNOSHARE  OVERWRITE PERMANEN T SCANTREE SECOND ARY STANDARD TEMP ORARY TREE UNBLOC KED UF UNFORMATTE D VOLUMEVRECORD g RETRY CONTINUE  PRINTAGAINABORT  MDEGEN.JCL - 84-94320-70 (B030) ASSIGN UF=SF/SYSGEN/ ASSIGN LO=LP ASSIGN X1=SF/MAC/ MACRO COMMAND MACRO MDECONFIG ASSIGN LO=MDE:B030.MAP LINK MDE:B030.SYS=MDECONFIG(AB=100)+COMMAND(UL)+SF/LBR/MDE:SYS.LBR R R R R R R R R R R R R R R R R R R R R R R R R ze 80C7 0000 operation invalid for non-CARTOS disk 80C8 0000 no EMP available for C:IO call 8100 0000 CFM: no ID compare 8101 0000 CFM: sync error 8102 0000 CFM: fault 8103 0000 CFM: ID CRC error 8104 0000 CFM: format error 8105 0000 CFM: seek error 8106 08000 0000 illegal I/O block checkword 8001 0000 logical unit not found 8002 0000 not ready 8003 0000 timeout 8004 0000 power failed 8005 0000 illegal operation code 8006 0000 illegal operation modifier 8007 0000 logical unit already exists 8008 0000 device not present or file not found 8009 0000 controller not present 800A 0000 not open 800B 0000 not closed 800C 0000 not mounted 800D 0000 device is down 800E 0000 protection error (write or file) 800F 0000 invalid volume name address in DIB 8010 0000 physical unit not found 8011 0000 not shareable 8012 0000 already in use 8013 0000 undefined hardware error 8014 0000 no more small blocks 8015 0000 no more medium blocks 8016 0000 not connected 8017 0000 illegal DIB checkword 8018 0000 illegal IOB address 8019 0000 I/O halted 801A 0000 illegal DIB address 801B 0000 directory unit not found 801C 0000 LUB enqueue error after disconnect for connect 801D 0000 implied disconnect failed during connect 801E 0000 LUB enqueue or dequeue failed 801F 0000 LUN connected to mounted LUN, dismount not allowed 8020 0000 findmark or dequeue error during mount 8021 0000 ECB is being destroyed, I/O not allowed 8022 0000 QID for dismount not found in any IPB 8023 0000 user memory error during dynamic LUN copy 8024 0000 disconnect of new LUB failed after reconnect error 8025 0000 handler IPB not found 8026 0000 non-manager mount request with manager already mounted 8027 0000 manager mount request with non-manager already mounted 8028 0000 already mounted with different volume name 8029 0000 no volume name address in DIB 802A 0000 volume not labeled 8081 0000 F-entry to deallocate is not is use 8082 0000 internal function code error 8083 0000 ioid is unknown to file manager 8084 0000 directory has been extended incorrectly 8085 0000 address error in block deallocation 8086 0000 au to deallocate is not in use 8087 0000 fab open, fdb open count = 0 8090 0000 F-entry type is invalid 8091 0000 F-entry not mapped by fno 2 8092 0000 F-entry link word is incorrect 8093 0000 F-entry number not found in parent directory 80A0 0000 the CFI is beyond the file extent 80A1 0000 all available F-entries have been allocated 80A2 0000 all au's on the volume have been allocated 80A3 0000 directory function requested for non-directory file 80A4 0000 delete file request for non-empty directory 80A5 0000 dismount request with file connect to volume 80A6 0000 file name already exists 80A7 0000 file name not found in directory 80A8 0000 disk id invalid;  not supported by CARTOS 80A9 0000 file name character string invalid 80AA 0000 byte count in title block is invalid 80AB 0000 parent fno for file is unknown 80AC 0000 file manager environment memory pool exhausted 80AD 0000 illegal sector number 80AE 0000 file name extension .DIR used incorrectly 80AF 0000 cannot dismount; LUN assigned to root 80B1 0000 file access requested is not permitted 80B2 0000 volume protect code precludes write 80B3 0000 operation not permitted for directory 80B4 0000 exclusive use conflict 80B5 0000 operation not allowed on open file 80B6 0000 operation not allowed unless file is open 80B7 0000 access conflict with open parameters 80B8 0000 file type does not support access type 80B9 0000 CFI is invalid, not given  80BA 0000 IOB operand is invalid for requested function 80BB 0000 mount request for disk already mounted 80BC 0000 function modifier invalid for operation code 80BD 0000 operation code invalid 80BE 0000 flag(s) in FIB are invalid 80BF 0000 FIB checkword invalid 80C0 0000 invalid mode bits 80C1 0000 invalid method for open 80C2 0000 file format error 80C3 0000 no allocation specified when creating file 80C4 0000 open access conflict with file already open 80C5 0000 illegal password 80C6 0000 block size invalid for record size 80C7 0000 operation invalid for non-CARTOS labeled disk 80C8 0000 no EMP available for C:IO call 8100 0000 no id compare 8101 0000 sync error 8102 0000 fault 8103 0000 id crc error 8104 0000 format error 8105 0000 seek error 8106 0000 data crc error 8107 0000 data rate error 8108 0000 disk driver undefined error bits returned 8140 0000 invalid queue id given when begun 8141 0000 invalid function modifier specified 8142 0000 disk not mounted error (function aborted) 8143 0000 CFM: disk mounted for EU:, cannot be mounted SHR: 8144 0000 CFM: disk mounted SHR:, cannot be mounted EU: 8145 0000 file manager running, cannot mount without file manager 8146 0000 file manager not running, cannot mount with file manger  8147 0000 disk access protection violation 8148 0000 invalid function code specified 8149 0000 specified CFI value too large for disk 814A 0000 specified byte count too large for one transfer 814B 0000 invalid format rsetest (disk is not mounted 814C 0000 invalid disk parameters in DIB, IPB or VCB. 8180 0000 CFM: no id compare 8181 0000 CFM: sync error 8182 0000 CFM: fault 8183 0000 CFM: id crc error 8184 0000 CFM: format error 8185 0000 CFM: seek error 8186 0000 CFM: data crc error 8187 0000 CFM: data rate error 8188 0000 CFM: disk driver undefined error bits returned 8189 0000 CFM: controller is not ready 818A 0000 CFM: deleted data (floppy only) 818B 0000 CFM: controller error during initialization 81C0 0000 invalid queue id given when begun 81C1 0000 invalid function modifier specified 81C2 0000 disk not mounted error (function aborted) 81C3 0000 disk mounted for EU:, cannot be mounted SHR: 81C4 0000 disk mounted SHR:, cannot be mounted EU: 81C5 0000 file manager running, cannot mount without file manger 81C6 0000 file manager not running, cannot mount with file manger 81C7 0000 disk access protection violation 81C8 0000 invalid function code specified 81CB 0000 invalid format request (disk is not mounted 81CC 0000 invalid disk  parameters in DIB, IPB or VCB. 81CD 0000 the DIB supplied for a "mount" does not have 81CE 0000 invalid volume name 81CF 0000 insufficient EMP space available 8281 0000 rate error - data lost or written twice 8282 0000 not receiving - formatter busy or transport not rea 8283 0000 byte count specified too large (max=:7FFE) 8284 0000 byte count specified too small (min=2) 8285 0000 read or write operation completed without 8286 0000 read or write abort 8287 0000 read error 8288 0000 marginal block detected 8289 0000 byte count specified is too large (max=:8000) 828A 0000 invalid byte count, must be multiple of 512 bytes  8301 0000 break detected 8302 0000 framing error 8303 0000 no data set ready 8304 0000 no carrier detect 8305 0000 data overrun 8306 0000 data parity error 8307 0000 no EID for enabling break exception 8308 0000 negative byte count in IOB 8309 0000 no data ready on eio board 830A 0000 invalid tv function operand 8381 0000 unknown ioid from the door 8382 0000 illegal function modifier 8383 0000 illegal funtion code 8384 0000 illegal DIB checkword 8385 0000 memory pool exhausted 8386 0000 dismount not allowed unless connect count zero 8387 0000 illegal lp function operand 8388 0000 printer busy 8389 0000 printer not selected 838A 0000 paper low 838B 0000 printer disconnected 8501 0000 physical line inoperative 8502 0000 protocol link inoperative 8503 0000 procotol link reset 8504 0000 retry threshold exceeded 8505 0000 invalid frame 8506 0000 conflicting control request 8507 0000 too many protocol links active 8508 0000 request aborted 8509 0000 protocol link name not found in config file 850A 0000 environment still connected to protocol link 850B 0000 cib not found for physical line 850C 0000 protocol link already connected 850D 0000 protocol link already open 850E 0000 can't dismount a connected LUN 850F 0000 no memory left in environment memory pool 8810 0000 illegal semaphore checkword 8811 0000 cant get semaphore block 8813 0000 duplicate semaphore id 8815 0000 unknown block id 8819 0000 ECB of activity on semaphore is destroyed 881A 0000 ACB not on semaphore list 881B 0000 illegal initial conditions 881C 0000 deleted semaphore 881D 0000 uninstalled mem trap at SDB location 881E 0000 semaphore signal overflow 881F 0000 semaphore wait (underflow) overflow 8820 0000 illegal MCB checkword 8821 0000 no more small buffers available 8823 0000 duplicate mailbox id 8824 0000 unknown environment id 8825 0000 unknown mailbox id 8826 0000 uninstalled memory 8827 0000 illegal mail checkword 882C 0000 mailbox destroyed while waiting 8830 0000 illegal descriptor block (QDB) checkword 8831 0000 queues - no more small blocks 8832 0000 medium block (QMB,QIB) not available 8833 0000 duplicate id (QIB,QCB) 8834 0000 unknown return envt id (queues) 8835 0000 unknown queue (QCB) id 8836 0000 uninstalled mem trap (cant get db) 8837 0000 queue access priviledged 8838 0000 ACB's waiting with usage count zero 8839 0000 get/put queue has been deleted 883A 0000 return queue has been deleted 883B 0000 message block illegal checkword (QMB) 883C 0000 unknown return queue id  883D 0000 acknowledge errored due to deleted queue 883E 0000 duplicate message id 883F 0000 unknown message ( QMD/QIB) id 88 51 0000 attempt to set priority less than or equal 8852 0000 attempt to set priority greater than the ECB 8860 0000 illegal TCB checkword 8861 0000 no small blocks available 8862 0000 no medium blocks available 8863 0000 TCB duplicate id 8865 0000 unknown TCB id 8866 0000 uninstalled memory 886A 0000 insufficient stack space defined in TDB 886B 0000 conflicting parameters received 886C 0000 illegal priority descriptor for bgin 886D 0000 template expansion error 886E 0000 environment is being killed 886F 0000 task is being destroyed 8870 0000 unknown clock parameter list id 8871 0000 no more small buffers available 8873 0000 duplicate id requested 8875 0000 unknown clock id 8876 0000 uninstalled memory trap occured 887A 0000 unknown clock's sema4 id. 887B 0000 unauthorized attempt to change system time 887C 0000 number out of range 887D 0000 attempted to delete a permanent clock 887E 0000 request more than 31 bits 887F 0000 sema4 not provided 8880 0000 illegal EMP header checkword 8888 0000 user memory address invalid 8889 0000 EMP header chain is invalid 888A 0000 illegal EMPi parameter block value 888B 0000 attempt to return buffer not in EMP 888C 0000 attempt to return a free EMP block 888D 0000 EMP is not initialized 8895 0000 unknown ACB id 8896 0000 uninstalled mem trap 889C 0000 illegal xib 889D 0000 stack too small 889E 0000 illegal XVT pointer 889F 0000 illegal EDB pointer 88A0 0000 illegal MVB checkword 88A2 0000 can't get a medium block 88A6 0000 uninstalled memory error 88AC 0000 EID is not subordinate to caller 88AD 0000 illegal logical map 88AE 0000 negative byte count 88AF 0000 illegal ECB 88B0 0000 illegal SDB checkword 88B1 0000 cant get RCB 88B3 0000 duplicate RCB id 88B4 0000 unknown envt id 88B5 0000 unknown shared mem region id 88B6 0000 uninstalled mem trap (block read in) 88B9 0000 can't share 88BA 0000 request overflow 88BB 0000 illegal map request 88BC 0000 illegal share request 88BD 0000 wrap around 88BE 0000 parameter not on page boundry 88BF 0000 can't share unowned memory 88C1 0000 illegal return before entry 88C2 0000 can't allocate short stack 88C3 0000 address mode parameter range error (m4d16) 88C4 0000 illegal R: service request 88C5 0000 illegal S: service request 88C6 0000 uninstalled memory trap 9000 0000 small block unavailable 9001 0000 medium block unavailable 9002 0000 memory unavailable to load 9003 0000 EMP allocation error 9004 0000 calling elp address invalid 9005 0000 calling elp checkword invalid 9006 0000 calling ERB address invalid 9007 0000 calling ERB checkword invalid 9008 0000 S:LOAD I/O error 9009 0000 S:LOAD type code error 900A 0000 S:LOAD invalid memory reference 900B 0000 S:LOAD uninstalled memory 900D 0000 loading environment has been destroyed 900E 0000 eload low-high range insufficient to load 900F 0000 bad LDB checkword in S:LOAD 9020 0000 small block unavailable 9021 0000 loaded EDB address invalid 9022 0000 loaded EDB checkword invalid 9023 0000 loaded ERB address invalid 9024 0000 loaded ERB checkword invalid 9025 0000 requested privilege not available 9026 0000 maximum priority too hgih 9027 0000 small block request too high 9028 0000 medium block request too high 9029 0000 initial TDB checkword invalid 902B 0000 log ical map count request too high 902C 0000 door stack count request too high 902D 0000 EMP allocation error 902E 0000 EMP space unavailable for loaded environment 902F 0000 EMP initialization error 9030 0000 empa in loaded ERB is invalid 9031 0000 invalid environment id 9032 0000 initializing activity could not be begun 9033 0000 initial task activity priority too high 9034 0000 initial task could not be begun 9035 0000 ECB dequeue block error 9036 0000 initial TDB address invalid 9037 0000 peer address on some chain (off EDB) invalid 9038 0000 EMP size error 9039 0000 real-time execution not allowed 903A 0000 parent has insufficient logical maps 9040 0000 environment id invalid 9041 0000 I/O error during destroy 9042 0000 dequeue error on destroyed ECB 9043 0000 destroy2 activity not begun 9044 0000 activities not destroyed for environment 9045 0000 asa activity in environment 9046 0000 ACB not on specified list 9047 0000 ACB on improper list 9048 0000 ACB list head is invalid 9049 0000 small block unavailable 9060 0000 environment id invalid 9080 0000 environment id invalid 90A0 0000 ERB address invalid 90A1 0000 ERB checkword invalid 90A2 0000 EID not subordinate to caller 90A3 0000 no ACB at position specified 90B0 0000 no privilege to modify user id 9800 0000 invalid source map. 9801 0000 invalid destination map. 9802 0000 invalid source page. 9803 0000 invalid destination page. 9804 0000 shared page count overflow. 9805 0000 invalid logical map. 9806 0000 invalid logical page. 9807 0000 attempt to unshare a locked page not shared by someone else 9808 0000 invalid logical map. the logical map is not in use 9809 0000 invalid logical page. the logical page is not in use 980A 0000 page lock count overflow. 980B 0000 invalid logical map. 980C 0000 invalid logical page. 980D 0000 page lock count underflow. 980E 0000 invalid source map. 980F 0000 invalid destination map. 9810 0000 invalid source page. 9811 0000 invalid destination page. 9812 0000 invalid logical map. 9813 0000 invalid logical page. 9881 0000 small buffer pool limit error 9883 0000 medium buffer pool limit error 9885 0000 buffer pool extension error 98C1 0000 bad logical map number 98C2 0000 page already in memory (swapped in) 98C3 0000 swap file not correctly defined or too small 98C5 0000 bad system pointer table encountered 98C6 0000 bad logical map number given 98C7 0000 bad logical page number given 98C9 0000 bad system pointer table encountered 98CB 0000 bad system pointer table encountered 98CC 0000 bad physical page number given 98CD 0000 free page list format error 98D3 0000 error from S:GETDMA (q contains returned code) 98D4 0000 error from S: queue service (Q contains returned code) 98D5 0000 words processed not equal to 1024 (one page) 98D6 0000 error from system disk driver 98D7 0000 bad logical map number 98D8 0000 no physical maps avaialble 98DA 0000 invalid ECB address passed in 98DB 0000 LMT full. logical map cannot be 98DC 0000 no more memory avaialble. cannot 98DE 0000 invalid logical map number. 98E0 0000 invalid physical map number 98E1 0000 physical map locked in MMU 98E2 0000 no pages available for swapping out 98E3 0000 conflict in mit and PPT tables 98E4 0000 invalid logical map specified. 98E5  0000 error while attemping to "wait" on 98E6 0000 invalid page specified. one or more 98E7 0000 error while attempting to "wait" on 98E8 0000 error while attempting to "signal" 98EB 0000 invalid buffer address. the address given 98ED 0000 invalid physical map number given. 98EE 0000 invalid logical page number given. 98EF 0000 uninstalled memory trap 98F0 0000 translation table parity error 98F1 0000 unknown reason for memory exception trap 98F2 0000 PPT error when preparing to map faulting page B000 0000 unimplemented instruction trap B001 0000 stack exception trap B002 0000 arithmetic exception trap B003 0000 privileged instruction trap B004 0000 uninstalled memory execption C000 0000 break from terminal C800 0000 ckw error (ISM, SLA or GLA) C802 0000 can't get medium block (ISM, SLA or GLA) C806 0000 uninstalled mem trap (ISM, SLA or GLA) C80F 0000 byte count overflow (ISM, SLA or GLA) C811 0000 can't get small block (GFN) C812 0000 can't get medium block (GFN) C816 0000 uninstalled mem trap (GFN) C820 0000 illegal OVL param list ckw (OVL) C826 0000 uninstalled mem trap (OVL) C82B 0000 illegal overlay number C82C 0000 illegal overlay length C82F 0000 end of file in OVLy C830 0000 illegal load block checkword encountered C836 0000 uninstalled mem (I:LOAD) C83A 0000 small block unavailable (I:LOAD) C83B 0000 insufficient EMP space available (I:LOAD) C83C 0000 unexpected eof while loading (I:LOAD) C83D 0000 bad type code (I:LOAD) C83E 0000 address error (I:LOAD) C83F 0000 buffer allocation error (I:LOAD) C846 0000 uninstalled memory (I:DEVUP/I:DEVDN) C84D 0000 privilege violation C84E 0000 PUN is mounted (for I:DEVDN) C84F 0000 can't use generic LUN F801 0000 buffer already on chain error F802 0000 buffer chain looping error F803 0000 buffer count error F804 0000 buffer extent address error F805 0000 invalid buffer address in extension page error F806 0000 bad ECB chain pointer while looking for parent F807 0000 memory exception occurred during initialization F810 0000 illegal semaphore checkword F811 0000 illegal mailbox checkword F812 0000 illegal queue control checkword F813 0000 illegal queue message checkword F814 0000 illegal intq ACB checkword F815 0000 illegal rdyl ACB checkword F816 0000 illegal environment checkword F817 0000 illegal task checkword F818 0000 illegal clock checkword F819 0000 illegal ACB checkword (dsp:disp) F81A 0000 illegal ECB checkword in cold-start F81B 0000 illegal ACB checkword in cold-start F830 0000 fell off the root on a PUNT F831 0000 findmark & dqblock calls unbalanced F832 0000 the idle activity has a peer ACB! F834 0000 table/code overlay in cold start F835 0000 unlock called without previous lock F836 0000 too many locks (someone forgot to unlock) F837 0000 insufficient stack space to call fm:debug F838 0000 attempt to PUNT to system environment F839 0000 swapping not installed, no more free pages F83A 0000 unlock failed when share count at maximum F83B 0000 time slice tick underflow F83C 0000 dispatch entered when not on system stack F840 0000 mailbox coding error F841 0000 system coding error - queues F842 0000 resuming ended activity F843 0000 I/O post processor exited F844 0000 GFN coding error (bob's not telling what kind) F846 0000 jump to abs  zero error F847 0000 special STRAP out of range F848 0000 mount semaphore error in dev up/down F849 0000 error in break threading (punt to root) F84A 0000 error in unthreading (no such IPB) F851 0000 decode processor system exception F852 0000 write processor system exception F853 0000 read processor system exception F854 0000 read buffer processor system exception F855 0000 common routine system exception F856 0000 printer routine system exception F870 0000 error in cold start activity (Q=error status) F871 0000 error while expanding type codes F872 0000 address error while expanding type codes F873 0000 insufficient EMP space to load CARTOS F880 0000 power fail trap F881 0000 system stack exception trap F882 0000 hardware exception trap while on system stack F883 0000 hardware exception trap of a system activity F884 0000 STRAP while on system stack 0001 0000 end of file 0002 0000 end of medium or end of extents 0003 0000 begining of file 0004 0000 begining of medium 0005 0000 top of form 0006 0000 bottom of form 0181 0000 retries required on a disk operation E: CST:LOAD (B013) NOTE: DK:SYSTBLS (B008) NOTE: DK:DRIVR (B010) NOTE: DK:MOTCU (B010) NOTE: DF:DRIVR (B1PAGE 1 MULTI-TASKING LINKER (G9,G4,G3,--,G3) 1983 Sep 06 11:48:29.00 FILE USAGE SUMMARY DK20/CARTOS.BIN=DK20/SGT.OBJ(ABSOLUTE=300)+ NOTE: SGT (B030) DK20/TV:TABLES.OBJ(UNCONDITIONAL)+ NOTE: TV:TABLES (B021) SYSTEM 1  DK20/DK:TABLES.OBJ(UNCONDITIONAL)+ NOTE: DK:TABLES - B030 DK20/MT:TABLES.OBJ(UNCONDITIONAL)+ NOTE: MT:TABLES - (B030) DK20/CARTOS:SYS.LBR NOTE: CST:INIT (A307) NOTE: CST:LOAD (B020) NOTE: DK:SYSTBLS (B008) NOTE: DK:DRIVR (B011) NOTE: DK:MOTCU (B023) NOTE: DF:DRIVR (B006) NOTE: MT:DRIVR (B012) NOTE: DSP:DOOR (B012)  NOTE: DSP:DISP (B008) NOTE: DSP:ROOT - CARTOS REV. B030 NOTE: DSP:DSERVS (B012) NOTE: TSK:PRIO (B012) NOTE: S:LOAD (A312) NOTE: SEM:ASM (A237) NOTE: LMM:BUF (A307) NOTE: LMM:DSB (A310) NOTE: PMM:TRAP (A309)  NOTE: PMM:A (B020) NOTE: UTIL:MOVE (A303) NOTE: UTIL:ASM (A002) NOTE: DSP:OOPS (B012) 1PAGE 2 MULTI-TASKING LINKER (G9,G4,G3,G4,G3,G6,--,E7,G1,--,G0,E3) 1983 Sep 06 11:53:52.75 ALL SYMBOLS THE TRANSFER ADDRESS IS 9354(COLD:) ABSOLUTE SYMBOLS 0000-SRF:ER 0019-ANCHOR:: MEMORY ABSOLUTE 0300-R:LOW 9E0B-R:HIGH SEGMENT DMA: (0300 - 0979) ABSOLUTE - RAM, SHAREABLE 0301-SGT: 040B-P:TVM01 05DB-P:TVM03 0792-P:LPD17 093E-D:DF1 030A-SP:SDSK 0449-C:TVM01R 0619-C:TVM03R 07C5-C:LPD17S 094A-D:DK0 0319-SP:SPTH 0471-C:TVM01S 0641-C:TVM03S 08ED-TV:III 0956-D:DK1 0323-P:TVM00 04F3-P:TVM02 06C3-P:TVD14 0908-TV:I 0962-D:DK2 0361-C:TVM00R 0531-C:TVM02R 06F6-C:TVD14R 0921-LP:DP 096E-D:DK3 0389-C:TVM00S 0559-C:TVM02S 071E-C:TVD14S SEGMENT TABLE: (097A - 15C6) ABSOLUTE - RAM, SHAREABLE 097A-END:DMA 0C38-C:DK1 0F2E-A:DK2 12A7-P:MTD150 13D8-P:FM  097B-P:DF1 0C5A-Q:DK1 0FB3-P:DKW20 12C7-SCB:MT50 13EF-IO:QCB 0998-C:DF1 0C6A-A:DK1 0FF1-P:DKW21  12D3-C:MTD15 13FF-IO:SCB 09BA-Q:DF1 0CEF-P:DKP10 102F-P:DKW22 12F7-TCB:DK1 140B-IO:ACB 09CA-A:DF1 0D2D-P:DKP11 106D-P:DKW23 130A-TCB:DK2 1498-ACB:WDT 0A4F-P:DFQ10 0D6B-P:DKP13 10AB-P:DK3 131D-FPT: 14EB-SCB:WDT 0A8D-P:DFQ11 0DA9-P:DKP14 10C8-C:DK3 132A-TCB:MT 14F7-CCB:WDT 0ACB-P:DK0 0DE7-P:DKP12 10EA-Q:DK3 133D-ACB:IDLE 1502-CCT: 0AE8-C:DK0 0E25-P:DKP15 10FA-A:DK3 135E-SPT: 150E-ACB:RTC 0B0A-Q:DK0 0E63-P:DKH10 117F-P:DKT34 1378-SECB: 158A-ENV::TCB 0B1A-A:DK0 0EA1-P:DKH11 11C9-P:DKT35 1399-SEAB: 159D-ENV::DST 0B9F-P:DKM00 0EDF-P:DK2 1213-P:DKT36 13BA-RCB:DMA 15B0-DMM:ES4 0BDD-P:DKM01 0EFC-C:DK2 125D-P:DKT37 13C4-MCT: 15BC-DMM:CS4 0C1B-P:DK1 0F1E-Q:DK2 1PAGE 3 MULTI-TASKING LINKER (G9,G4,G3,G4,G3,G6,--,E7,G1,--,G0,E3) 1983 Sep 06 11:53:55.25 ALL SYMBOLS SEGMENT SYSTEM: (15C7 - 3268) ABSOLUTE - RAM, SHAREABLE 15C7-OUT:STR 1CAC-UNTHRD:S 1D97-CFREQ:R 1E85-ISM:I 2340-S:SSIG 15EE-DK:DRIVR 1CB4-MOVE:S 1D9E-CTODA:R 1E8F-DEVUP:I 2342-A:ISIG 16F7-DK:MOTCU 1CBC-MOVE:R 1DA4-CATOD:R 1E93-DEVDN:I 2360-A:SDSS 1728-DF:DRIVR 1CC0-UID:S 1DAC-GTOD:R 1E97-GLA:I 2360-S:SDSS 1865-MT:DRIVR 1CC6-CRSEM:R 1DB1-STOD:R 1E9E-SLA:I 236C-S:RMVSEM 19BC-GETSTAT: 1CCA-DSSEM:R 1DB8-GSTOD:R 1EA5-UID:R 2380-A:GSBE 19CB-S:DOOR 1CCE-SSIG:S 1DBD-SSTOD:R 1EAA-XNXA:S 2382-S:GSBE 19E9-A:ILTRAP 1CD1-SWAIT:S 1DC4-GELT:R 1EB7-R:TEMPL 238A-A:GSB  19F0-A:RSERVS 1CD4-SIG:R 1DC9-GEXT:R 1F6D-R:TSIZE 238D-S:GSB 1A0B-R:TABLE 1CD8-WAIT:R 1DCE-GERI:R  1F84-A:GPRI 23CD-A:GMBE 1A57-A:SSERVS 1CDC-WAITR:R 1DD5-GPRI:R 1F8A-R:GPRI 23CF-S:GMBE 1A85-S:TABLE  1CF5-CRMBX:R 1DDA-SPRI:R 1F8A-S:GPRI 23D7-A:GMB 1A94-S:END 1CF9-DSMBX:R 1DDE-PAUS:R 1F8F-R:SPRI 23DA-S:GMB 1A98-S:AEND 1CFD-SEND:R 1DE2-BGIN:R 1FA9-A:SPRI 241A-GET:HEAD 1AA2-S:DSPRDB 1D03-SENDR:R 1DF1-BGIN2:S 1FA9-S:SPRI 242E-GET:BLK 1ACC-A:EDOOR 1D0E-RECV:R 1DF4-END:R 1FC7-A:CPA 244F-GET:SSB 1AE8-A:GSSU1 1D14-RECVR:R 1DFC-CRTASK:R 1FC7-S:CPA 24A8-A:RSBE 1AEB-A:HEXSU 1D25-CRQ:R 1E00-DSTASK:R 1FD7-I:EOB 24AA-S:RSBE 1AFA-A:GSSU2 1D29-DSQ:R 1E07-LDENV:R 1FED-S:THREAD 24B0-A:RSB 1B11-A:ADRDCD 1D2D-QPUT:R 1E16-DSENV:R 200B-A:UNTHRD 24B3-S:RSB 1B64-A:USERVS 1D31-QPUTR:R 1E1A-SUENV:R 2011-S:UNTHRD 24C9-A:RMBE 1B68-A:DISP 1D3A-QGET:R 1E1E-REENV:R 2042-IO:WDT 24CB-S:RMBE 1C32-A:MINTQ 1D3E-QGETR:R 1E26-ABUF:R 2066-S:LOAD 24D1-A:RMB 1C52-A:IDLE 1D47-QACK:R 1E2C-ABUFW:R 224E-S:GDATT 24D4-S:RMB 1C5F-A:DSPTCH 1D52-CRSMR:R 1E32-PBUF:R 2266-R:SIG 24EA-PUT:TAIL 1C5F-S:DSPTCH 1D56-DSSMR:R 1E38-RBUF:R 2274-S:SIG  24FC-A:AAARGH 1C73-A:LKRN 1D5A-MAPIN:R 1E40-UEX:R 22BA-R:WAITR 24FC-S:AAARGH 1C73-S:LKRN 1D5E-UNMAP:R  1E44-WEX:R 22BE-R:WAIT 253C-S:ARGCTX 1C7C-SPEC:INI 1D66-ITIC:R 1E4B-REX:R 22D6-S:WAITR 256D-PRT:HEX   1C81-YSTRAP:A 1D6A-MTIC:R 1E4E-PUNT:R 22D9-S:WAIT 25A8-A:VCKW 1C85-READMZ:S 1D72-CTIC:R 1E55-IO:I 22DE-A:SWAITR 25A8-S:VCKW 1C8A-GETDMA:S 1D7E-AWAL:R 1E5F-IOR:I 22DE-S:SWAITR 25B0-S:MRKDEL 1C99-RETDMA:S 1D82-IWAL:R 1E6A-LOAD:I 22E8-A:SWAIT 25B5-S:GDSBE 1C9D-FECBS:S 1D86-CWAL:R 1E73-OVL:I 22E8-S:SWAIT 261B-A:RDSB 1CA6-THREAD:S 1D91-CDOW:R 1E7E-GFN:I 2340-A:SSIG 2640-A:MAPDSB 1PAGE 4 MULTI-TASKING LINKER (G9,G4,G3,G4,G3,G6,--,E7,G1,--,G0,E3) 1983 Sep 06 11:53:56.75 ALL SYMBOLS SEGMENT SYSTEM: (15C7 - 3268) ABSOLUTE - RAM, SHAREABLE (15C7 - 3268) 264B-HND:MXCP 2A69-S:MOVE 2DB5-B:EXIT 2EA3-A:GXP 31B5-S:NQPRIO 2774-ACB:MXP 2CB6-S:A12 2DB7-INT:ON 2F1F-R:WEX 31CC-A:NQTAIL 27EC-SWP:FLAG 2CBE-S:A122 2DBB-INT:OFF 2F8D-R:REX 31CC-S:NQTAIL 27EE-QCB:SWP 2CC6-S:A22 2DC0-S:DECREL 3022-R:PUNT 31CD-A:NQTECB 27FE-QIB:SWP 2CD0-S:A13 2DD2-R:BLKMOV 3062-A:PUNT 31CE-S:NQTECB 281E-A:CLAS 2CDF-S:S12 2DD8-S:ININTQ 30B3-A:STXIB 3204-A:NQHEAD 281E-S:CLAS 2CEA-S:S22 2DDB-A:ININTQ 3100-R:UEX 3204-S:NQHEAD 2846-A:DLAS 2CF3-S:S33 2E00-A:IINTQ 3107-A:FOROOT 320D-A:DQHEAD 2849-S:DLAS 2D06-S:M122 2E0B-S:COPY2U 311D-A:PWRF 320D-S:DQHEAD 2898-A:ILM 2D19-S:MULMUL 2E10-S:COPY2S 312A-PWRF:TBL 3217-A:DQBLCK 2898-S:ILM 2D32-S:MULDIV 2E18-S:MUV2U 3133-A:PUP 3217-S:DQBLCK  2920-A:UPM 2D6B-S:D122 2E27-S:MUV2S 3187-A:FNDMRK 3219-S:DQBLAB 2956-S:RXLATE 2D89-S:C12 2E37-S:TSACCT 3187-S:FNDMRK 3242-A:ADQBLK 2965-S:WXLATE 2D94-S:C22 2E4F-A:TRAPS 319D-A:FNDDEL 3242-S:ADQBLK 2989-FM:DEBUG 2DA1-S:MULNEG 2E80-A:HXP 319D-S:FNDDEL 3258-S:GBY 2A63-R:MOVE 2DAE-S:C11 2E91-A:HWBRK 31B5-A:NQPRIO 3260-S:PBY 1PAGE 5 MULTI-TASKING LINKER (G9,G4,G3,G4,G3,G6,--,E7,G1,--,G0,E3) 1983 Sep 06 11:53:58.00 ALL SYMBOLS SEGMENT CODE:ROM (3269 - 8C6F) ABSOLUTE - ROM, SHAREABLE 3269-DK:HNDLR 4E59-S:ISM 6346-R:QGET 6D2D-R:REENV 855E-S:ULCKPG 369B-DK:POST 4FC3-S:ICH 634D-R:QGETR 6D4C-S:REENV 85A5-S:MAPPAG 38A9-DK:BBLCK 4FE7-I:GFN 63E9-S:QGET 6D75-S:INENV 863E-S:UNMAPP 3903-DK:TERM 5741-I:DEVUP 6400-S:QGETR 7231-S:INENV2 868C-S:PUTPP 3916-CHK:VCB 5797-I:DEVDN 6477-R:QACK 7354-S:ENVRBL 86C4-S:TRACE 393F-MT:HNDLR 5802-I:LOAD 64E7-S:QACK 7392-R:DSENV 8817-D:READH 3C36-R:CRTASK 5845-R:ITIC 651A-R:DSQ 73A8-S:DSENV 886B-D:WRF 3D77-R:BGIN 588C-R:MTIC 6535-S:DSQ 7669-S:DSENV2 891D-D:WRD 3DA2-S:BGIN 58E5-R:AWAL 654F-S:DSQ2 781C-R:CRSMR 897C-D:WRN 3EC1-S:BGIN2 5993-R:IWAL 6676-R:SEND 78E7-R:MAPIN 8983-D:WRS 3FC6-R:END 5A05-R:MAWAL 669E-R:SENDR 79F7-R:UNMAP 89A3-D:NEWL 4000-S:RMVACB 5AA1-R:CTIC 66CA-R:RECV 7A4F-R:DSSMR 89A9-D:READN 402E-R:PAUS 5AA8-R:CWAL 66F8-R:RECVR 7A6A-R:ABUF 89EE-D:WRHEX 4072-R:DSTASK 5B08-R:CFREQ 6724-R:CRMBX 7A78-S:ABUF  8A14-D:FINDO 40D1-I:IO 5B10-S:CONTT 67BE-R:DSMBX 7A91-R:ABUFW 8A64-D:WRCH 40DC-S:IO 5C59-S:DCCS   67D6-S:DSMBX 7CB1-R:PBUF 8A88-D:RDCH 421A-IO:PREPR 5CAD-S:RTCEOB 687A-S:SEND 7CBF-R:RBUF 8A93-D:UNRDCH  45D3-IO:LUBCR 5DB7-R:CATOD 68A1-S:RECV 7CC9-S:RBUFA 8AA2-D:SELO 4612-IO:LUNSR 5E92-R:CTODA 68C5-S:SENDR 7E15-S:EMPI 8AA5-D:CPSTR 4649-IO:CONPO 5F61-R:CDOW 68EB-S:RECVR 7EFD-S:EMPMAX 8AEE-D:STRLN 46CC-IO:PUNSR 5F8A-R:GTOD 6996-R:CRSEM 7F3D-S:RESDMA 8AF5-S:CPY2SA 4744-IO:MNTQB 5F96-R:GSTOD 6A2A-R:DSSEM 7F9F-S:GETDMA 8B04-S:CPY2UA 47EA-IO:PUTPO 5FB9-R:GELT 6A42-S:DSSEM 80D6-S:RETDMA 8B13-S:MUV2SA 4814-IO:RELUB 5FEB-R:GEXT 6A97-S:DSSEM2 8129-S:MAPLP 8B22-S:MUV2UA 482B-IO:DIOID 5FFF-R:STOD 6AB4-S:DSCBE2 81C1-S:GETPP 8B75-S:SWLM 4849-IO:LUNCP 6069-R:SSTOD 6AD6-S:UID 81E5-S:FSPP 8B98-S:FECB 487C-IO:POST 6182-R:CRQ 6B00-R:UID 82A1-S:SWAP 8BC1-S:FECBS 4BA8-I:OVL 61B8-S:CRQ 6B16-R:LDENV 8366-S:SHRPG 8BD2-S:UNRDY 4CB8-I:GLA 621F-R:QPUT 6CED-R:SUENV 841F-S:UNSHRP 8BE5-S:UNRDYC 4D70-I:SLA 6226-R:QPUTR 6D14-S:SUENV 84EC-S:LOCKPG 8C10-R:GERI  4E32-I:ISM 62C5-S:QPUT SEGMENT DATA:RAM (8C70 - 8CDC) ABSOLUTE - RAM, SHAREABLE SEGMENT DATA:ROM (8CDD - 902D) ABSOLUTE - ROM, SHAREABLE SEGMENT GLOBVEC: (902E - 91BE) ABSOLUTE - RAM, GLOBAL COMMON 1PAGE 6 MULTI-TASKING LINKER (G9,G4,G3,G4,G3,G6,--,E7,G1,--,G0,E3) 1983 Sep 06 11:54:00.50 ALL SYMBOLS SEGMENT DEBUG: (91BF - 92F6) ABSOLUTE - RAM, SHAREABLE 91BF-D:STVW 9203-D:SUNR 92A0-D:CTVR 92C7-D:CTVW 92C9-D:CLPW 91F6-D:STVR 9287-D:SLPW 92AE-D:CUNR SEGMENT BLANK (92F7 - 9303) ABSOLUTE - RAM 92F7-DK:MDRM 92FB-DK:MDRH 92FB-DK:MDRW SEGMENT COLD: (9304 - 9E0B) ABSOLUTE - RAM 9304-ELT: 934D-SWP:FILE 9354-CST:INIT 95D0-CST:LOAD 9BEC-A:COLD C H A I N S CCB: 14F7(TABLE:) ECB: 1378(TABLE:) SUB: 0000(0SEGMENT) EMAB: 0000(0SEGMENT) MCB: 0000(0SEGMENT) RCB: 13BA(TABLE:) LUT: 0000(0SEGMENT) TCB: 159D(TABLE:) SCB: 15BC(TABLE:) QCB: 27EE(SYSTEM:) INTQ: 2774(SYSTEM:) 9BEC(COLD:) ACB: 277A(SYSTEM:) IPB: 13D8(TABLE:) ICB: 12D3(TABLE:) NO WARNINGS 0000(0SEGMENT) RCB: 178F(TABLE:) LUT: 0000(0SEGMENT) TCB: 1972(TABLE:) SCB: 1991(TABLE:) QCB: 2C78(SYSTEM:) INTQ: 2BFE(SYSTEM:) A24E(COLD:) ACB: 2C04(SYSTEM:) IPB: 17AD(TABLE:) ICB: 0D2E(DMA:) NO WARNINGS I1PAGE 1 MULTI-TASKING LINKER (G9,G4,G3,--,G3) 1983 Sep 07 11:04:40.75 FILE USAGE SUMMARY DK20/MDE:B030.SYS=DK20/MDECONFIG.OBJ(ABSOLUTE=100)+ NOTE: *** MDE:TABS.MAC - REV B020 *** DK20/COMMAND.OBJ(UNCONDITIONAL)+ DK20/MDE:SYS.LBR NOTE: *** MDE:SYS.LBR - REV B030 *** 1PAGE 2 MULTI-TASKING LINKER (G9,G4,G3,G4,G3,G6,--,E7,G1,--,G0,E3) 1983 Sep 07 11:07:44.25 ALL SYMBOLS THE TRANSFER ADDRESS IS 0600(TABLES:) ABSOLUTE SYMBOLS 0012-START: 0040-START 0051-MDE:ERR 005B-ABORT 007F-JCE:ENT MEMORY ABSOLUTE 0100-R:LOW 65BD-R:HIGH SEGMENT TABLES: (0100 - 06AF) ABSOLUTE - RAM, SHAREABLE 0100-SYS:DEV 0106-SYS:TVS 010A-INT:LP 0119-MCE:VEC 0600-MDE:EDB 010 2-SYS:DIR 010A-BCH:DEV 010C-MCE:TAB 05FE-JCE:TABL 0634-SPL:QMB SEGMENT COMTAB: (06B0 - 0878) ABSOLUTE - ROM, SHAREABLE 06B0-C:TABLES 0782-MONTH:TB 07C3-OPT:TAB 0861-SPL:TAB SEGMENT BCST: (0879 - 0C55) ABSOLUTE - ROM, SHAREABLE 0879-G:Z 0BC6-GETBYTE 0BD6-WEX 0BE9-SIGN:ON 0C34-SPL:STR 0B8E-PREX 0BCE-PUTBYTE 0BE0-REX  0BFD-SPL:ST SEGMENT JCE:ST: (0C56 - 0CAC) ABSOLUTE - ROM, SHAREABLE 0C56-JCESTART 0C68-JCFIB 0C78-DMFIB  0C88-ERFIB 1PAGE 3 MULTI-TASKING LINKER (G9,G4,G3,G4,G3,G6,--,E7,G1,--,G0,E3) 1983 Sep 07 11:07:45.50 ALL SYMBOLS SEGMENT CODE:ROM (0CAD - 5805) ABSOLUTE - ROM, SHAREABLE 0CAD-STARTUP 239E-DO 392E-SEND 47E0-RENAME 5334-I:IO:CAL 10D5-P:COMMND 2458-WRITERR 3A45-RD:LINE 4A1D-CNV:FNAM 5353-PLUN2LUN 1124-SCAN:TBL 24A1-WR:ER:ST 3AC1-TERM:LUN 4A5D-PRFNAM 5372-CONN2LUN 1174-JCE:INIT 24B1-CONTINUE 3ACD-VERFILE 4AAA-SUBMIT 5422-CONN  126D-UUSERS 24E3-PAUSE 3C49-VERIFY 4E3C-IP:PARMS 5430-CONNECT 1280-OPERATOR 2531-JOB 3C4F-SET:DEFS  4EC7-GET:PARM 5458-RST:LUNS 12E9-UDATE 2556-MEANING 3C8D-WRITELUN 4EFF-SUBSTUTE 54AD-CLOS:DIS 130A-DATE  2601-DOWN 3CBC-READLUN 4FB6-EE:RCI 54B7-CLU:DIS 1337-TIME 262A-UP 3CEC-ASSIGN 5009-EE:MSG 54C1-CREACONN 1395-PRNT:DAT 2664-GETPDEV 3F08-SPEC:LUN 507C-EE:MSGL 54FB-CREA 13B2-STATUS 26EB-FN2VECS 3F2D-DASSIGN 50AE-EE:SEND 5529-DELE 167B-REMOVE 272E-SELECTED 4004-ABORTLEV 5123-EE:CMD 5556-RENAM:FL 17B3-LOGON 274D-VIEW 4042-EXECUTE 5155-MOUNTDEV 55A4-READ:BLK 1CF8-LOGOFF 2E6D-CONN:OPN 41F4-DEF:EXTN 519B-LUN2LUN 55D7-WRIT:BLK 1E1C-ODATE 2EB2-RD:D:ENT 4228-CLOSE 51AD-SAMELUN 55EE-MV:BYTES 1ED5-OUSERS 2F46-OPT:PRMS 4250-CANCEL 51C4-GATD 5611-FILETYPE 1F4B-OTIME 2F4B-READ:OPT 4364-VALID:LN 51D2-SATD 5643-WRCH  201C-KILL 3042-COPYFILE 436B-CLOS:ALL 51E0-GFN 5692-WRITES 207B-R:D:PARM 3165-MD:GF:WO 43AF-REENTER 5222-GLA 56B0-WRITED 2088-R:H:PARM 31C8-GET:OPTN 43F6-WHY 5259-DISCONN 571C-WRITEN 20E0-RD:PARAM 31E3-GET:MODE 4417-MOUNT 526D-SVDO:GFN 5726-NEWLINE 20EF-MESSAGE 3210-OPEN:INP 459C-DISMOUNT 52A3-OPEN:LUN 572C-WRITEOCT 2107-SPOOLER 3230-OPEN:OUP 45E5-RS:OLUNS 52D1-CLOS:FIL 5741-WRITEHEX 214A-I:AM 3273-COP:VER 4606-FREE:DUN 52DE-CLU:FIL 5758-TAB 2159-RPRT:ERR 385E-COPY 4617-CREATE 52EB-LUN2GFN 576B-WRITEF 2173-RCI 3864-DV:CLASS 468A-DELETE 5324-I::IO SEGMENT DATA:RAM (5806 - 58A5) ABSOLUTE - RAM, SHAREABLE SEGMENT DATA:ROM (58A6 - 63BF) ABSOLUTE - ROM, SHAREABLE SEGMENT GLOBVEC: (63C0 - 63C0) ABSOLUTE - RAM, GLOBAL COMMON SEGMENT SYSTEM: (63C1 - 6519) ABSOLUTE - RAM, SHAREABLE 63C1-S:A12 63D3-S:S12 63F1-S:MULDIV 6435-S:SHR22 644A-S:PASS  63C9-S:A22 63DE-S:M122 642A-S:C12 6445-B:PASS 650D-S:MULNEG 1PAGE 4 MULTI-TASKING LINKER (G9,G4,G3,G4,G3,G6,--,E7,G1,--,G0,E3) 1983 Sep 07 11:07:47.25 ALL SYMBOLS SEGMENT B:XXXXXX (651A - 65BD) ABSOLUTE - RAM, SHAREABL E 651A-B:DSENV 654A-B:SPRI 656B-B:CATOD 6590-B:DEVDN 65A9-B:SLA 6520-B:SUENV 6550-B:SIG 6574-B:GSTOD  6595-B:UEX 65AE-B:ISM 6526-B:REENV 6556-B:WAIT 657C-B:SSTOD 659A-B:UID 65B4-B:GFN 652C-B:LDENV  655C-B:IWAL 6584-B:IO 65A4-B:GLA 65B9-B:UMOVE 653B-B:BGIN 6562-B:CTODA 658B-B:DEVUP C H A I N S R:TDBL 0654(TABLES:) MDB: 0000(0SEGMENT) SDB: 062C(TABLES:) SMD: 0000(0SEGMENT) QDB: 0000(0SEGMENT) MISSING: SRF:ER NO WARNINGS S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S ATOR/ OPERATOR USER DIRECTORY RENAME OPERATOR.DIR<003>=OPERATOR.DIR ---> INSTALL LIBRARIES I DISKETTE (F12000) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12000.VOL ASSIGN UF=SF/LBR/ COPY *.*(O)=F1/*.* VERIFY *.*=F1/*.* DISMOUNT F1 ---> INSTALL LIBRARIES II DISKETTE (F12001) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12001.VOL COPY  84-94122-70 JCL TO INSTALL RELEASED SYSTEM (B030) ---> NOTE THAT THIS JCL WILL OVERWRITE SYSTEM FILES ---> BE SURE THAT YOU ARE LOGGED ON AS "SYSMGR" ---> BE SURE THAT "D1" IS MOUNTED AND TYPE "CONTINUE" PAUSE CREATE D1/SYS/  SYSTEM DIRECTORY (SD) RENAME D1/SYS.DIR<033>=D1/SYS.DIR ASSIGN SF(P)=D1/SYS/ ASSIGN SF PERMANENTLY TO THE SYSTEM DISK ASSIGN UF(P)=SF CREATE SPOOL/ LINE PRINTER SPOOLER DIRECTORY CREATE BATCH/ BATCH DIRECTORY CREATE LBR/  LIBRARY DIRECTORY CREATE MAC/ MACRO DIRECTORY CREATE SYSGEN/ SYSGEN DIRECTORY CREATE OPERATOR/ OPERATOR USER DIRECTORY RENAME OPERATOR.DIR<003>=OPERATOR.DIR ---> INSTALL LIBRARIES I DISKETTE (F12000) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12000.VOL ASSIGN UF=SF/LBR/ COPY *.*(O)=F1/*.* VERIFY *.*=F1/*.* DISMOUNT F1 ---> INSTALL LIBRARIES II DISKETTE (F12001) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12001.VOL COPY *.*(O)=F1/*.* VERIFY *.*=F1/*.* DISMOUNT F1 ---> INSTALL MACROS I DISKETTE (F12100) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12100.VOL ASSIGN UF=SF/MAC/ COPY *.*(O)=F1/*.* VERIFY *.*=F1/*.* DISMOUNT F1 ---> INSTALL MACROS II DISKETTE (F12101) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12101.VOL COPY *.*(O)=F1/*.* VERIFY *.*=F1/*.* DISMOUNT F1 ---> INSTALL MACROS III DISKETTE (F12102) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12102.VOL COPY *.*(O)=F1/*.* VERIFY *.*=F1/*.* DISMOUNT F1 ---> INSTALL SYSGEN DISKETTE (F12200) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12200.VOL ASSIGN UF=SF/SYSGEN/ COPY *.*(O)=F1/*.* VERIFY *.*=F1/*.* DISMOUNT F1 ---> INSTALL SYSTEM DISKETTE (F12300) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12300.VOL COPY /*.*(O)=F1/*.* VERIFY /*.*=F1/*.* COPY SF/ACCTFILE.TXT<03F>=F1/SYS/ACCTFILE.TXT VERIFY SF=F1/SYS/ACCTFILE.TXT DISMOUNT F1 ---> INSTALL UTILITIES I DISKETTE (F12400) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12400.VOL COPY SF/*.*(O)=F1/*.* VERIFY SF/*.*=F1/*.* DISMOUNT F1  ---> INSTALL UTILITIES II DISKETTE (F12401) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12401.VOL COPY SF/*.*(O)= F1/*.* VERIFY SF/*.*=F1/*.* DISMOUNT F1 ---> INSTALL UTILITIES III DISKETTE (F12402) IN UNIT 1 AND TYPE "CONTINUE" PAUSE MOUNT F1=DF11,F12402.VOL COPY SF/*.*(O)=F1/*.* VERIFY SF/*.*=F1/*.* DISMOUNT F1 ** CREATE ERROR MEANING FILE ** ASSIGN UF(P)=SF/SYSGEN/ MAKERROR COPY /(O)=ERROR:CODES.UNB A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII  IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII! IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII?e821005133848821005133848830907143240e@821005133848821005133848821014151424" e821005133848821005133848821005133848e821005133848821005133848821005133848821005133848821005133848821005133848e 830907142919830907142922830907143054 e  830907142923830907142924830907143057 e830907142926830907142928830907143059  e# &830907142929830907142935830907143105  e$ 830907142937830907142940830907143109  e.5830907142941830907142948830907143117  eI 830907142949830907142952830907143121  eO830907142954830907142956830907143125 eW830907142958830907142959830907143127 eX830907143000830907143003830907143130 $ e`h830907143004830907143005830907143132 ea 830907143007830907143009830907143135 eg830907143011830907143013830907143138 ej&830907143015830907143019830907143144 ex 830907143020830907143022830907143147 e|830907143023830907143024830907143149 e}(% OQ830907143026830907143036830907143202 e+830907143038830907143043830907143210 e 830907143044830907143047830907143214 e ;830907143049830907143051830907143218 e8308101718167583081017181675& ' ( ) * + . SGT ASMSGT OBJCARTOSGEN JCL DK:TABLES ASM DK:TABLES OBJ TV:TABLES ASM TV:TABLES OBJ MT:TABLES ASMMT:TABLES OBJQT:TABLES ASMQT:TABLES OBJMDECONFIG ASMMDECONFIG OBJCOMMAND ASMCOMMAND OBJMDEGEN JCLERRLIST TXTCARTOS MAPMDE:B030 MAPINSTALL JCLMDECONFIG EDTIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII, IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII- IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII. IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII/ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII0 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII1 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII2 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII3 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII4 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII5 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII6 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII7 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII8 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII9 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII: IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII; IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII< IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII> IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII? IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII@ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIA IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIB IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIC IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIID IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIE IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIF IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIG IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIH IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIK IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIICARTOSMA282100513384840830907142717 830907142717?F12200 VOL84-94122-00 CARTOS SYSGEN PRODUCT DISKETTE (B030)