# *******************************************************************************
# *
# *   Copyright (C) 1998-2001, International Business Machines
# *   Corporation and others.  All Rights Reserved.
# *
# *******************************************************************************
#
# File created on Mon Nov 13 08:50:45 2000
#
# File created by dtcocm version 3.00
# from source files 44B014E7.RPMAP100 and 14E744B0.TPMAP100
#
# Patched for jitterbug 792
#
# Table Version : 1.01
#
<code_set_name>               "IBM-5351"
<char_name_mask>              "AXXXX"
<mb_cur_max>                  1
<mb_cur_min>                  1
<uconv_class>                 "SBCS"
<subchar>                     \x1A
#
CHARMAP
#
#
#ISO 10646      IBM-5351
#_________      _________
<U0000> \x00 |0
<U0001> \x01 |0
<U0002> \x02 |0
<U0003> \x03 |0
<U0004> \x04 |0
<U0005> \x05 |0
<U0006> \x06 |0
<U0007> \x07 |0
<U0008> \x08 |0
<U0009> \x09 |0
<U000A> \x0A |0
<U000B> \x0B |0
<U000C> \x0C |0
<U000D> \x0D |0
<U000E> \x0E |0
<U000F> \x0F |0
<U0010> \x10 |0
<U0011> \x11 |0
<U0012> \x12 |0
<U0013> \x13 |0
<U0014> \x14 |0
<U0015> \x15 |0
<U0016> \x16 |0
<U0017> \x17 |0
<U0018> \x18 |0
<U0019> \x19 |0
<U001A> \x1A |0
<U001B> \x1B |0
<U001C> \x1C |0
<U001D> \x1D |0
<U001E> \x1E |0
<U001F> \x1F |0
<U0020> \x20 |0
<U0021> \x21 |0
<U0022> \x22 |0
<U0023> \x23 |0
<U0024> \x24 |0
<U0025> \x25 |0
<U0026> \x26 |0
<U0027> \x27 |0
<U0028> \x28 |0
<U0029> \x29 |0
<U002A> \x2A |0
<U002B> \x2B |0
<U002C> \x2C |0
<U002D> \x2D |0
<U002E> \x2E |0
<U002F> \x2F |0
<U0030> \x30 |0
<U0031> \x31 |0
<U0032> \x32 |0
<U0033> \x33 |0
<U0034> \x34 |0
<U0035> \x35 |0
<U0036> \x36 |0
<U0037> \x37 |0
<U0038> \x38 |0
<U0039> \x39 |0
<U003A> \x3A |0
<U003B> \x3B |0
<U003C> \x3C |0
<U003D> \x3D |0
<U003E> \x3E |0
<U003F> \x3F |0
<U0040> \x40 |0
<U0041> \x41 |0
<U0042> \x42 |0
<U0043> \x43 |0
<U0044> \x44 |0
<U0045> \x45 |0
<U0046> \x46 |0
<U0047> \x47 |0
<U0048> \x48 |0
<U0049> \x49 |0
<U004A> \x4A |0
<U004B> \x4B |0
<U004C> \x4C |0
<U004D> \x4D |0
<U004E> \x4E |0
<U004F> \x4F |0
<U0050> \x50 |0
<U0051> \x51 |0
<U0052> \x52 |0
<U0053> \x53 |0
<U0054> \x54 |0
<U0055> \x55 |0
<U0056> \x56 |0
<U0057> \x57 |0
<U0058> \x58 |0
<U0059> \x59 |0
<U005A> \x5A |0
<U005B> \x5B |0
<U005C> \x5C |0
<U005D> \x5D |0
<U005E> \x5E |0
<U005F> \x5F |0
<U0060> \x60 |0
<U0061> \x61 |0
<U0062> \x62 |0
<U0063> \x63 |0
<U0064> \x64 |0
<U0065> \x65 |0
<U0066> \x66 |0
<U0067> \x67 |0
<U0068> \x68 |0
<U0069> \x69 |0
<U006A> \x6A |0
<U006B> \x6B |0
<U006C> \x6C |0
<U006D> \x6D |0
<U006E> \x6E |0
<U006F> \x6F |0
<U0070> \x70 |0
<U0071> \x71 |0
<U0072> \x72 |0
<U0073> \x73 |0
<U0074> \x74 |0
<U0075> \x75 |0
<U0076> \x76 |0
<U0077> \x77 |0
<U0078> \x78 |0
<U0079> \x79 |0
<U007A> \x7A |0
<U007B> \x7B |0
<U007C> \x7C |0
<U007D> \x7D |0
<U007E> \x7E |0
<U007F> \x7F |0
<U0081> \x81 |0
<U008A> \x8A |0
<U008C> \x8C |0
<U008D> \x8D |0
<U008E> \x8E |0
<U008F> \x8F |0
<U0090> \x90 |0
<U009A> \x9A |0
<U009C> \x9C |0
<U009D> \x9D |0
<U009E> \x9E |0
<U009F> \x9F |0
<U00A0> \xA0 |0
<U00A1> \xA1 |0
<U00A2> \xA2 |0
<U00A3> \xA3 |0
<U00A5> \xA5 |0
<U00A6> \xA6 |0
<U00A7> \xA7 |0
<U00A8> \xA8 |0
<U00A9> \xA9 |0
<U00AB> \xAB |0
<U00AC> \xAC |0
<U00AD> \xAD |0
<U00AE> \xAE |0
<U00AF> \xAF |0
<U00B0> \xB0 |0
<U00B1> \xB1 |0
<U00B2> \xB2 |0
<U00B3> \xB3 |0
<U00B4> \xB4 |0
<U00B5> \xB5 |0
<U00B6> \xB6 |0
<U00B7> \xB7 |0
<U00B8> \xB8 |0
<U00B9> \xB9 |0
<U00BB> \xBB |0
<U00BC> \xBC |0
<U00BD> \xBD |0
<U00BE> \xBE |0
<U00BF> \xBF |0
<U00D7> \xAA |0
<U00F7> \xBA |0
<U0192> \x83 |0
<U02C6> \x88 |0
<U02DC> \x98 |0
<U05B0> \xC0 |0
<U05B1> \xC1 |0
<U05B2> \xC2 |0
<U05B3> \xC3 |0
<U05B4> \xC4 |0
<U05B5> \xC5 |0
<U05B6> \xC6 |0
<U05B7> \xC7 |0
<U05B8> \xC8 |0
<U05B9> \xC9 |0
<U05BB> \xCB |0
<U05BC> \xCC |0
<U05BD> \xCD |0
<U05BE> \xCE |0
<U05BF> \xCF |0
<U05C0> \xD0 |0
<U05C1> \xD1 |0
<U05C2> \xD2 |0
<U05C3> \xD3 |0
<U05D0> \xE0 |0
<U05D1> \xE1 |0
<U05D2> \xE2 |0
<U05D3> \xE3 |0
<U05D4> \xE4 |0
<U05D5> \xE5 |0
<U05D6> \xE6 |0
<U05D7> \xE7 |0
<U05D8> \xE8 |0
<U05D9> \xE9 |0
<U05DA> \xEA |0
<U05DB> \xEB |0
<U05DC> \xEC |0
<U05DD> \xED |0
<U05DE> \xEE |0
<U05DF> \xEF |0
<U05E0> \xF0 |0
<U05E1> \xF1 |0
<U05E2> \xF2 |0
<U05E3> \xF3 |0
<U05E4> \xF4 |0
<U05E5> \xF5 |0
<U05E6> \xF6 |0
<U05E7> \xF7 |0
<U05E8> \xF8 |0
<U05E9> \xF9 |0
<U05EA> \xFA |0
<U05F0> \xD4 |0
<U05F1> \xD5 |0
<U05F2> \xD6 |0
<U05F3> \xD7 |0
<U05F4> \xD8 |0
<U200E> \xFD |0
<U200F> \xFE |0
<U2013> \x96 |0
<U2014> \x97 |0
<U2018> \x91 |0
<U2019> \x92 |0
<U201A> \x82 |0
<U201C> \x93 |0
<U201D> \x94 |0
<U201E> \x84 |0
<U2020> \x86 |0
<U2021> \x87 |0
<U2022> \x95 |0
<U2026> \x85 |0
<U2030> \x89 |0
<U2039> \x8B |0
<U203A> \x9B |0
<U20AA> \xA4 |0
<U20AC> \x80 |0
<U2122> \x99 |0
<UFF01> \x21 |1
<UFF02> \x22 |1
<UFF03> \x23 |1
<UFF04> \x24 |1
<UFF05> \x25 |1
<UFF06> \x26 |1
<UFF07> \x27 |1
<UFF08> \x28 |1
<UFF09> \x29 |1
<UFF0A> \x2A |1
<UFF0B> \x2B |1
<UFF0C> \x2C |1
<UFF0D> \x2D |1
<UFF0E> \x2E |1
<UFF0F> \x2F |1
<UFF10> \x30 |1
<UFF11> \x31 |1
<UFF12> \x32 |1
<UFF13> \x33 |1
<UFF14> \x34 |1
<UFF15> \x35 |1
<UFF16> \x36 |1
<UFF17> \x37 |1
<UFF18> \x38 |1
<UFF19> \x39 |1
<UFF1A> \x3A |1
<UFF1B> \x3B |1
<UFF1C> \x3C |1
<UFF1D> \x3D |1
<UFF1E> \x3E |1
<UFF1F> \x3F |1
<UFF20> \x40 |1
<UFF21> \x41 |1
<UFF22> \x42 |1
<UFF23> \x43 |1
<UFF24> \x44 |1
<UFF25> \x45 |1
<UFF26> \x46 |1
<UFF27> \x47 |1
<UFF28> \x48 |1
<UFF29> \x49 |1
<UFF2A> \x4A |1
<UFF2B> \x4B |1
<UFF2C> \x4C |1
<UFF2D> \x4D |1
<UFF2E> \x4E |1
<UFF2F> \x4F |1
<UFF30> \x50 |1
<UFF31> \x51 |1
<UFF32> \x52 |1
<UFF33> \x53 |1
<UFF34> \x54 |1
<UFF35> \x55 |1
<UFF36> \x56 |1
<UFF37> \x57 |1
<UFF38> \x58 |1
<UFF39> \x59 |1
<UFF3A> \x5A |1
<UFF3B> \x5B |1
<UFF3C> \x5C |1
<UFF3D> \x5D |1
<UFF3E> \x5E |1
<UFF3F> \x5F |1
<UFF40> \x60 |1
<UFF41> \x61 |1
<UFF42> \x62 |1
<UFF43> \x63 |1
<UFF44> \x64 |1
<UFF45> \x65 |1
<UFF46> \x66 |1
<UFF47> \x67 |1
<UFF48> \x68 |1
<UFF49> \x69 |1
<UFF4A> \x6A |1
<UFF4B> \x6B |1
<UFF4C> \x6C |1
<UFF4D> \x6D |1
<UFF4E> \x6E |1
<UFF4F> \x6F |1
<UFF50> \x70 |1
<UFF51> \x71 |1
<UFF52> \x72 |1
<UFF53> \x73 |1
<UFF54> \x74 |1
<UFF55> \x75 |1
<UFF56> \x76 |1
<UFF57> \x77 |1
<UFF58> \x78 |1
<UFF59> \x79 |1
<UFF5A> \x7A |1
<UFF5B> \x7B |1
<UFF5C> \x7C |1
<UFF5D> \x7D |1
<UFF5E> \x7E |1
END CHARMAP
