var cpsV = [
[ '500' , '1148' ,
  '20A0E2E4E0E1E3E5E7F15B2E3C282B2126E9EAEBE8EDEEEFECDF5D242A293B5E' +
  '2D2FC2C4C0C1C3C5C7D1A62C255F3E3FF8C9CACBC8CDCECFCC603A2340273D22' +
  'D8616263646566676869ABBBF0FDFEB1B06A6B6C6D6E6F707172AABAE6B8C6A4' +
  'B57E737475767778797AA1BFD0DDDEAEA2A3A5B7A9A7B6BCBDBEAC7CAFA8B4D7' +
  '7B414243444546474849ADF4F6F2F3F57D4A4B4C4D4E4F505152B9FBFCF9FAFF' +
  '5CF7535455565758595AB2D4D6D2D3D530313233343536373839B3DBDCD9DA00'   ] ,
[  '037' , '1140' , '4AA2 4F7C 5A21 5FAC B05E BA5B BB5D ' ] ,
[  '273' , '1141' , '437B 4AC4 597E 5ADC 635B 6AF6 7CA7 A1DF B540 C0E4 CCA6 D0FC DC7D E0D6 EC5C FC5D ' ] ,
[  '277' , '1142' , '477D 4A23 5AA4 5BC5 6724 6AF8 70A6 7BC6 7CD8 8040 9C7B 9E5B 9F5D A1FC C0E6 D0E5 DC7E ' ] ,
[  '278' , '1143' , '437B 477D 4AA7 5160 5AA4 5BC5 6323 6724 6AF6 715C 79E9 7BC4 7CD6 9F5D A1FC B55B C0E4 CCA6 D0E5 DC7E E0C9 EC40 ' ] ,
[  '280' , '1144' , '447B 485C 4AB0 515D 547D 587E 5AE9 6AF2 79F9 7BA3 7CA7 905B A1EC B123 B540 C0E0 CDA6 D0E8 DD60 E0E7 ' ] ,
[  '284' , '1145' , '49A6 4F7C 5FAC 6923 6AF1 7BD1 A1A8 BA5E BB21 BD7E ' ] ,
[  '285' , '1146' , '4A24 4F7C 5A21 5BA3 5FAC A1AF B15B BA5E BB5D BC7E ' ] ,
[  '297' , '1147' , '4440 485C 4AB0 517B 547D 5AA7 6AF9 79B5 7BA3 7CE0 905B A060 A1A8 B123 B55D BD7E C0E9 D0E8 DDA6 E0E7 ' ] ,
[  '871' , '1149' , '4ADE 5AC6 5FD6 79F0 7CD0 8C60 8E7B 9C7D 9E5D A1F6 AC40 AE5B BE5C C0FE CC7E D0E6 E0B4 EC5E ' ] ,
[ '1047' ,'&nbsp;', '4AA2 4F7C 5A21 AD5B B0AC BADD BBA8 BD5D ' ]
]

var cntl = [
// 0 .. 7
'NUL:Null' ,
'SOH:Start of Heading' ,
'STX:Start of Text' ,
'ETX:End of Text' ,
'PF:Punch Off|SEL:Select' ,
'HT:Horizontal Tab' ,
'LC:Lower Case|RNL:Required New Line' ,
'DEL:Delete' ,
// 8 .. F
'|GE:Graphic Escape' ,
'|SPS:Superscript' ,
'SMM:Start of Manual Message|RPT:Repeat' ,
'VT:Vertical Tab' ,
'FF:Form Feed' , 
'CR:Carriage Return' , 
'SO:Shift Out' , 
'SI:Shift In' ,

// 10 .. 17
'DLE:Data Link Escape' , 
'DC1:Device Control 1' , 
'DC2:Device Control 2' , 
'TM:Tape Mark|DC3:Device Control 3' ,
'RES:Restore|ENP:Enable Presentation' , 
'NL:New Line' , 
'BS:BackSpace' , 
'IL:Idle|POC:Program-Operator Communication' , 
// 18 .. 1F
'CAN:Cancel' , 
'EM:End of Medium' ,
'CC:Cursor Control|UBS:Unit BackSpace' , 
'CU1:Customer User 1' , 
'IFS:Interchange File Separator' ,
'IGS:Interchange Group Separator' , 
'IRS:Interchange Record Separator' , 
'IUS:Interchange Unit Separator|ITB:Intermediate Transmission Block' ,

// 20 .. 27
'DS:Digit Select' , 
'SOS:Start of Significance' , 
'FS:Field Separator' , 
'|Word Underscore' , 
'BYP:Bypass|INP:Inhibit Presentation' ,
'LF:Line Feed' , 
'ETB:End of Transmission Block' , 
'ESC:Escape' , 
// 28 .. 2F
'|SA:Set Attribute' , 
'|SFE:Start Field Extended' , 
'SM:Set Mode|SW:Switch Mode' ,
'CU2:Customer User 2|CSP:Control Sequence Prefix' , 
'|MFA:Modify Field Attribute' , 
'ENQ:Enquire' , 
'ACK:Acknowledge' , 
'BEL:Bell' , 

// 30 .. 37
'' , 
'' , 
'SYN:Synchronous Idle' ,
'|IRS Index Return' , 
'PN:Punch On|PP:Presentation Position' , 
'RS:Reader Stop|TRN:Transparent' , 
'UC:Upper Case|NBS:Numeric BackSpace' , 
'EOT:End of Transmission' , 
// 38 .. 3F
'|SBS:Subscript' , 
'|IT:Indent tab' , 
'|RFF:Required Form Feed' ,
'CU3:Customer User 3' , 
'DC4:Device Control 4' , 
'NAK:Negative Acknowledge' , 
'|SUB:Substitute' , 
'SUB:Substitute|SP:Space'
// 40 ? |RSP:Required Space
]
for ( var i = 0 ; i < cntl.length ; i++ ) cntl [i] = cntl [i] . replace ( /\|.*/ , '' ) . split ( ':' )
// "strict" mode:                                           . replace ( /.*\|.*/ , '' )

var l1_html = [
'nbsp','iexcl','cent','pound','curren','yen','brvbar','sect','uml','copy','ordf','laquo','not','shy',
'reg','macr','deg','plusmn','sup2','sup3','acute','micro','para','middot','cedil','sup1','ordm','raquo',
'frac14','frac12','frac34','iquest','Agrave','Aacute','Acirc','Atilde','Auml','Aring','AElig','Ccedil',
'Egrave','Eacute','Ecirc','Euml','Igrave','Iacute','Icirc','Iuml','ETH','Ntilde','Ograve','Oacute','Ocirc',
'Otilde','Ouml','times','Oslash','Ugrave','Uacute','Ucirc','Uuml','Yacute','THORN','szlig','agrave','aacute',
'acirc','atilde','auml','aring','aelig','ccedil','egrave','eacute','ecirc','euml','igrave','iacute','icirc',
'iuml','eth','ntilde','ograve','oacute','ocirc','otilde','ouml','divide','oslash','ugrave','uacute','ucirc',
'uuml','yacute','thorn','yuml' ]

var hDigit = '0123456789ABCDEF'
function hdL ( z ) { return hDigit.charAt ( z >> 4 ) }
function hdR ( z ) { return hDigit.charAt ( z & 15 ) }
function hdg ( z ) { return '' + hdL (z) + hdR (z) }
function dz1 ( h ) { return hDigit.indexOf ( h ) }
function dz2 ( h ) { return ( ( dz1 ( h.charAt (0) ) << 4 ) + dz1 ( h.charAt (1) ) ) }
function dz3 ( d ) { return d < 100 ? ( 'o' + d ) : ( '' + d ) }
function bn4 ( h ) {
  var t = 16
  var r = ' ( ' + hDigit.charAt ( h ) + ' <sub>hex</sub> = '
  for ( var i = 0 ; i < 4 ; i++ ) r += ( ( h & ( t >>= 1 ) ) == 0 ? '0' : '1' )
  return r + ' <sub>bin</sub> )'
}

var zz = [ new Array ( 256 ) , new Array ( 256 ) ]
for ( var i = 0 ; i < 256 ; i++ ) { zz [0] [i] = hdg ( i ); zz [1] [i] = dz3 ( i ); }
var bb = new Array ( 16 )
for ( var i = 0 ; i < 16 ; i++ ) bb [i] = bn4 ( i )

function ht0 ( n ) {
  if ( n <=  32 ) return '&nbsp;'
  if ( n <= 127 ) return ( ( n == 34 || n == 38 || n == 60 || n == 62 ) ? ( '&#' + n + ';' ) : String.fromCharCode ( n ) )
  if ( n <= 160 ) return '&nbsp;'
  if ( n == 173 ) return '&shy;'
  return String.fromCharCode ( n )
}
function ht1 ( n ) {
  if ( n <=  31 ) return ''
  if ( n <= 127 ) {
    if ( n == 32 ) return 'ascii-7-Space'
    if ( n == 34 ) return 'ascii-7, HTML = &amp;quot;'
    if ( n == 38 ) return 'ascii-7, HTML = &amp;amp;'
    if ( n == 60 ) return 'ascii-7, HTML = &amp;lt;'
    if ( n == 62 ) return 'ascii-7, HTML = &amp;gt;'
    return 'ascii7'
  }
  if ( n <= 159 ) return ''
  return 'HTML = &amp;' + l1_html [ n - 160 ] + ';'
}
function id4 ( s ) { return s.replace ( /^(...)$/ , '&nbsp;$1' ) }
